web-interface.assets.1255d548-4349.fdf67b80fb715647c1b2.js.map Maven / Gradle / Ivy
{"version":3,"file":"1255d548-4349.fdf67b80fb715647c1b2.js","mappings":"4NAGIA,EAA0B,IAA4B,GAAqC,EAE/FA,EAAwB,KAAK,CAACC,EAAO,GAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,EAAE,MAAQ,CAAC,EAAE,SAAW,yEAAyE,eAAiB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAsvB,EAAE,WAAa,EAAE,CAAC,CAAC,EAEr9BD,EAAwB,OAAS,CAChC,QAAW,uBACX,QAAW,sBACZ,EACA,QAAeA,C,4FC/BXA,EAA0B,IAA4B,GAAqC,EAE/FA,EAAwB,KAAK,CAACC,EAAO,GAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoDtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,EAAE,MAAQ,CAAC,EAAE,SAAW,6RAA6R,eAAiB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAA0sC,EAAE,WAAa,EAAE,CAAC,CAAC,EAEznDD,EAAwB,OAAS,CAChC,iBAAoB,uBACpB,YAAe,uBACf,SAAY,uBACZ,eAAkB,uBAClB,QAAW,uBACX,SAAY,uBACZ,WAAc,uBACd,WAAc,sBACf,EACA,QAAeA,C,0IC1Cf,MAAME,KAAY,WAAO,eAAa;AAAA;AAAA,EAIhCC,KAAe,WAAO,QAAM,EAAE,CAAC,CAAE,MAAAC,CAAM,OAAM;AAAA,iBAClCA,EAAM,MAAM,OAAO,UAAU;AAAA,eAC/BA,EAAM,MAAM,KAAK,UAAU;AAAA;AAAA;AAAA,aAG7BA,EAAM,OAAO,QAAQ,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAU/BA,EAAM,OAAO,QAAQ,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,WAK5C,MAAqBA,CAAK,CAAC;AAAA;AAAA;AAAA;AAAA,eAIpBA,EAAM,OAAO,OAAO,WAAW;AAAA;AAAA,WAEtC,MAAsBA,CAAK,CAAC;AAAA;AAAA;AAAA;AAAA,aAI1B,MAAsBA,CAAK,CAAC;AAAA;AAAA;AAAA;AAAA,CAIrC,EAEDD,EAAa,YAAc,SAyC3B,QAtBuB,CAAC,CAAE,MAAAE,CAAM,IAC9B,gBAACH,EAAA,KACEG,EAAM,IAAI,CAAC,CAAE,KAAAC,EAAM,MAAAC,EAAO,YAAAC,EAAa,eAAAC,CAAe,IAChDH,EAKH,gBAAC,KAAW,CAAC,YAAaE,GAAA,KAAAA,EAAe,CAAC,EAAG,IAAKF,CAAA,EAChD,gBAAC,IAAa,CAAC,GAAIA,EAAM,eAAgB,CAACG,CAAA,EACxC,gBAACN,EAAA,CAAa,QAAQ,QACpB,gBAAC,KAAqB,KACnBI,CACH,CACF,CACF,CACF,EAZO,IAcV,CACH,C,0EC3EF,QANqC,CAAyDG,EAAcC,IAAyC,SAA0BC,EAAY,CACzL,MAAMC,KAAS,MAA4BF,GAAA,YAAAA,EAAK,SAAS,EAEzD,OAAO,gBAACD,EAAA,CAAW,GAAGE,EAAO,yBAA0BC,CAAA,CAAQ,CACjE,C,0GCNA,MAAMC,EAAY,CAChB,CAAE,MAAO,gBAAiB,KAAM,KAAO,OAAO,aAAa,SAAU,eAAgB,EAAK,EAC1F,CAAE,MAAO,SAAU,KAAM,KAAO,OAAO,aAAa,OAAO,QAAS,EACpE,CAAE,MAAO,gBAAiB,KAAM,KAAO,OAAO,aAAa,cAAc,QAAS,CACpF,EAQA,EAN0B,IACxB,gBAAC,MAAG,KACF,gBAAC,IAAc,CAAC,MAAOA,CAAA,CAAW,CACpC,C,qUCOF,MAAMC,EAAyB,CAAC,CAAE,OAAAC,EAAQ,aAAAC,EAAc,gBAAAC,EAAiB,gBAAAC,EAAiB,kBAAAC,CAAkB,IAAmC,CAC7I,MAAMC,EAAUC,EAAA,EAAU,QAAQ,EAE5BC,EAAgB,CACpB,yBAA0B,6CAC1B,WAAY,8BACd,EAEMC,EAAsB,CAC1B,CAAE,MAAO,2BAA4B,MAAO,0BAA2B,EACvE,CAAE,MAAO,sBAAuB,MAAO,YAAa,CACtD,EAEA,IAAIC,EAAgB,CAClB,CAAE,MAAO,eAAgB,MAAO,aAAc,EAC9C,CAAE,MAAO,gBAAiB,MAAO,cAAe,EAChD,CAAE,MAAO,mBAAoB,MAAO,iBAAkB,CACxD,EAEIJ,EACFI,EAAgBD,EAEhBC,EAAgBA,EAAc,OAAOD,CAAmB,EAG1D,MAAME,EAAS,CAACC,EAAeC,EAAcC,EAAkBC,IAAiB,CAC9E,MAAMC,EAAYC,EAAA,EAAY,MAAMhB,CAAM,EAE1Ce,EAAUD,CAAI,EAAID,EAAUF,EAAQ,EACpCI,EAAU,GAAGD,CAAI,OAAO,EAAIF,EAC5BX,EAAac,CAAS,CACxB,EAEME,EAAsB,CAACN,EAAeC,EAAcC,IAAqB,CAC7EH,EAAOC,EAAOC,EAAMC,EAAS,gBAAgB,CAC/C,EAEMK,EAAkBC,GAAe,CACrC,MAAMJ,EAAYC,EAAA,EAAY,MAAMhB,CAAM,EAEtCK,IACFU,EAAU,KAAOR,EAAcY,CAAE,GAGnCJ,EAAU,cAAgBI,EAC1BlB,EAAac,CAAS,CACxB,EAEA,OACE,gBAAC,gBACE,CAACV,GACF,gBAAC,SAAM,KAAK,OACL,GAAG,OACH,KAAK,OACL,MAAM,YACN,UAAS,GACT,SAAQ,GACR,SAAUH,EACV,KAAME,EAAkB,OAAQ,gCAAgC,EAChE,QAASD,EAAgB,MAAM,EAC/B,MAAOH,EAAO,KACd,eAAe,WACf,iBAAiB,WAAW,EAEnC,gBAAC,SAAM,GAAG,uBACH,MAAM,gBACN,SAAQ,GACR,UAAS,GACT,KAAK,uCACL,eAAe,WACf,iBAAiB,YACtB,gBAAC,MAAO,YAAY,mCACZ,UAAW,GACX,QAASS,EACT,UAAU,QACV,SAAUS,EACV,MAAOlB,EAAO,cAAe,CACvC,EACA,gBAAC,MAAc,MAAM,eACN,KAAK,oGACL,OAAQiB,EACR,MAAOjB,EAAO,eACd,KAAMA,EAAO,qBAAuB,UACpC,eAAgBA,EAAO,eAAiB,EACxC,eAAe,WACf,iBAAiB,WAAW,CAC7C,CAEJ,EAEAD,EAAuB,UAAY,CACjC,OAAQ,WAAiB,WACzB,aAAc,SAAe,WAC7B,gBAAiB,SAAe,WAChC,gBAAiB,SAAe,WAChC,kBAAmB,SAAe,UACpC,EAEA,QAAeA,E,gKCnHf,MAAMqB,UAA8B,WAAgB,CAKlD,QAAS,CACP,KAAM,CAAE,OAAApB,CAAO,EAAI,KAAK,MAAM,YACxBS,EAAgB,CACpB,YAAa,eACb,aAAc,gBACd,gBAAiB,mBACjB,yBAA0B,2BAC1B,WAAY,qBACd,EAEA,OACE,gBAAC,UACC,gBAAC,UAAG,oBAAkB,EACtB,gBAAC,UAAIT,EAAO,IAAK,EACjB,gBAAC,UAAG,eAAa,EACjB,gBAAC,UAAIS,EAAcT,EAAO,aAAa,CAAE,EACzC,gBAAC,UAAG,gBAAc,EAClB,gBAAC,UAAG,gBAAC,KAAQ,CAAC,MAAOA,EAAO,eAAgB,KAAMA,EAAO,oBAAqB,CAAE,CAClF,CAEJ,CACF,CAzBE,EADIoB,EACG,YAAY,CACjB,YAAa,WAAiB,UAChC,CAAC,EAyBH,QAAeA,EC5Bf,MAAMC,UAAoC,WAAgB,CACxD,QAAS,CACP,MAAMC,EAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAebC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAehBC,EAAY;AAAA;AAAA;AAAA,GAKlB,OACE,gBAAC,WACC,gBAAC,SAAE,qEAAmE,EAEtE,gBAAC,QAAK,CAAC,MAAO,CAAE,aAAc,EAAG,EAAG,QAAQ,OAAO,MAAM,eACvD,gBAAC,SAAE,8DAA4D,EAC/D,gBAAC,SAAE,8EAA4E,CACjF,EAEA,gBAAC,SAAG,EAEJ,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,qBAAmB,EAEpD,gBAAC,WAAKA,CAAU,EAEhB,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,yBAAuB,EAExD,gBAAC,WAAKD,CAAc,EAEpB,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,sBAAoB,EAErD,gBAAC,SAAE,mHAAiH,EAEpH,gBAAC,WAAKD,CAAW,EAEjB,gBAAC,SAAE,oEAAiE,gBAAC,KAAE,KAAK,wCAAwC,OAAO,SAAS,IAAI,uBAAsB,yBAAuB,CAAI,CAC3L,CAEJ,CACF,CAEA,SAAeD,ECnEf,IAAY,SAAS,IAAI,IAAe,CAAC,EAAG,CAC1C,oBAAqB,CACnB,CACE,KAAM,gBACN,YAAa,6CACb,cAAe,EACf,iBAAkB,EAClB,uBAAwB,EAC1B,CACF,CACF,CAAC,CAAC,ECgFF,SAnF+B,CAAC,CAAE,OAAArB,EAAQ,gBAAAE,EAAiB,gBAAAC,EAAiB,kBAAAC,CAAkB,IAC5F,gBAAC,gBACC,gBAAC,SAAM,KAAK,OACL,GAAG,OACH,KAAK,OACL,MAAM,YACN,UAAS,GACT,SAAQ,GACR,SAAUF,EACV,KAAME,EAAkB,OAAQ,2BAA2B,EAC3D,QAASD,EAAgB,MAAM,EAC/B,MAAOH,EAAO,KACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,SACL,GAAG,iBACH,KAAK,iBACL,MAAM,iBACN,SAAQ,GACR,SAAUE,EACV,KAAK,qEACL,MAAOF,EAAO,eACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,YACH,KAAK,YACL,MAAM,YACN,SAAQ,GACR,SAAUE,EACV,KAAK,+CACL,MAAOF,EAAO,UACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,YACH,KAAK,YACL,MAAM,kBACN,SAAQ,GACR,SAAUE,EACV,KAAK,4CACL,MAAOF,EAAO,UACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,aACH,KAAK,aACL,MAAM,aACN,SAAQ,GACR,SAAUE,EACV,KAAK,0DACL,MAAOF,EAAO,WACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,eACH,KAAK,eACL,MAAM,eACN,SAAQ,GACR,SAAUE,EACV,KAAK,8DACL,MAAOF,EAAO,aACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,WACL,GAAG,0BACH,KAAK,0BACL,MAAM,iCACN,QAASA,EAAO,wBAChB,SAAUE,EACV,KAAK,uDACL,iBAAiB,2BAA2B,EACnD,gBAAC,SAAM,KAAK,WACL,GAAG,cACH,KAAK,cACL,MAAM,cACN,QAASF,EAAO,YAChB,SAAUE,EACV,KAAK,gGACL,iBAAiB,2BAA2B,CACrD,EC5DF,GAzB8B,CAAC,CAAE,YAAAuB,CAAY,IAAa,CACxD,KAAM,CAAE,OAAAzB,CAAO,EAAIyB,EAEnB,OACE,gBAAC,UACC,gBAAC,UAAG,WAAS,EACb,gBAAC,UAAIzB,EAAO,IAAK,EACjB,gBAAC,UAAG,WAAS,EACb,gBAAC,UAAG,gBAAC,YAAMA,EAAO,SAAU,CAAO,EACnC,gBAAC,UAAG,iBAAe,EACnB,gBAAC,UAAG,gBAAC,YAAMA,EAAO,SAAU,CAAO,EACnC,gBAAC,UAAG,YAAU,EACd,gBAAC,UAAIA,EAAO,UAAW,EACvB,gBAAC,UAAG,cAAY,EAChB,gBAAC,UAAIA,EAAO,YAAa,EACzB,gBAAC,UAAG,gBAAc,EAClB,gBAAC,UAAIA,EAAO,eAAe,UAAQ,EACnC,gBAAC,UAAG,yBAAuB,EAC3B,gBAAC,UAAIA,EAAO,wBAA0B,MAAQ,IAAK,EACnD,gBAAC,UAAG,aAAW,EACf,gBAAC,UAAIA,EAAO,YAAc,MAAQ,IAAK,CACzC,CAEJ,ECsDA,GAhFoC,IAAM,CACxC,MAAM0B,EAAW;AAAA;AAAA;AAAA,sBAKXC,EAAW;AAAA;AAAA;AAAA,0CAKXC,EAAW;AAAA;AAAA;AAAA,2CAKjB,OACE,gBAAC,WACC,gBAAC,SAAE,gEAA8D,EACjE,gBAAC,SAAE,uFAAqF,EAExF,gBAAC,QAAK,CAAC,MAAO,CAAE,aAAc,EAAG,EAAG,QAAQ,OAAO,MAAM,yBACvD,gBAAC,MAAG,UAAU,cACZ,gBAAC,UAAG,yEAAuE,EAC3E,gBAAC,UAAG,iBAAc,gBAAC,cAAO,OAAK,EAAS,WAAS,EACjD,gBAAC,UAAG,2BAAwB,gBAAC,cAAO,OAAK,EAAS,sBAAoB,CACxE,CACF,EAEA,gBAAC,SAAG,EAEJ,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,WAAS,EAE1C,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAC9C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,cAC/B,gBAAC,YAAK,GAAC,EAAO,gBAAC,SAAG,EAAE,oBACd,gBAAC,YAAK,GAAC,EAAO,gBAAC,SAAG,EAAE,eACzB,gBAAC,YAAK,QAAM,EAAO,gBAAC,SAAG,EAAE,iBACvB,gBAAC,YAAK,UAAQ,CAC9B,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,UAAQ,EACzC,gBAAC,WAAKF,CAAS,EAEf,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,WAAS,EAE1C,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAC9C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,cAC/B,gBAAC,YAAK,GAAC,EAAO,gBAAC,SAAG,EAAE,oBACd,gBAAC,YAAK,GAAC,EAAO,gBAAC,SAAG,EAAE,eACzB,gBAAC,YAAK,QAAM,EAAO,gBAAC,SAAG,EAAE,iBACvB,gBAAC,YAAK,UAAQ,CAC9B,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,UAAQ,EACzC,gBAAC,WAAKC,CAAS,EAEf,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,cAAY,EAC7C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,qFACwC,gBAAC,SAAG,EAAE,0DACjC,gBAAC,SAAG,CAC7D,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAC9C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,cAC/B,gBAAC,YAAK,GAAC,EAAO,gBAAC,SAAG,EAAE,oBACd,gBAAC,YAAK,GAAC,EAAO,gBAAC,SAAG,EAAE,eACzB,gBAAC,YAAK,MAAI,EAAO,gBAAC,SAAG,EAAE,iBACrB,gBAAC,YAAK,QAAM,EAAO,gBAAC,SAAG,EAAE,gBAC1B,gBAAC,YAAK,MAAI,CACzB,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,UAAQ,EACzC,gBAAC,WAAKC,CAAS,EAEf,gBAAC,SAAE,8GAA4G,CACjH,CAEJ,E,qKC5EA,MAAMC,WAA2B,WAAgB,CAAjD,kCAYE,8BAAuBV,GAAO,CAC5B,KAAM,CAAE,OAAAnB,EAAQ,aAAAC,CAAa,EAAI,KAAK,MAChCc,EAAYC,EAAA,EAAY,MAAMhB,CAAM,EAE1Ce,EAAU,YAAcI,EACxBlB,EAAac,CAAS,CACxB,CAAC,EAED,iCAAyB,CAACJ,EAAOC,EAAMC,IAAY,CACjD,KAAK,wBAAwBF,EAAOC,EAAMC,EAAS,oBAAoB,CACzE,CAAC,EAED,kCAA0B,CAACF,EAAOC,EAAMC,EAASiB,IAAgB,CAC/D,KAAM,CAAE,OAAA9B,EAAQ,aAAAC,CAAa,EAAI,KAAK,MAChCc,EAAYC,EAAA,EAAY,MAAMhB,CAAM,EAGtCa,GAAWF,GACbI,EAAUe,CAAW,EAAIjB,GAAWF,EAAQA,EAAQ,KACpDI,EAAU,GAAGe,CAAW,UAAU,EAAIjB,IAEtCE,EAAUe,CAAW,EAAI,KACzBf,EAAU,GAAGe,CAAW,UAAU,EAAI,IAGxCf,EAAU,GAAGe,CAAW,OAAO,EAAIjB,EAAUD,EAAO,KACpDX,EAAac,CAAS,CACxB,CAAC,CAAD,CAEA,QAAS,CACP,KAAM,CACJ,OAAAf,EACA,gBAAAE,EACA,kBAAAE,EACA,gBAAAD,CACF,EAAI,KAAK,MACH4B,EAAc,CAClB,CAAE,MAAO,uCAAwC,MAAO,GAAI,EAC5D,CAAE,MAAO,0CAA2C,MAAO,MAAO,EAClE,CAAE,MAAO,2DAA4D,MAAO,QAAS,EACrF,CAAE,MAAO,uBAAwB,MAAO,KAAM,EAC9C,CAAE,MAAO,oBAAqB,MAAO,KAAM,CAC7C,EAEA,OACE,gBAAC,gBACC,gBAAC,SAAM,MAAM,kBACN,GAAG,cACH,SAAQ,GACR,UAAS,GACT,KAAK,4CACL,eAAe,WACf,iBAAiB,YACtB,gBAAC,MAAO,YAAY,gCACZ,UAAW,GACX,QAASA,EACT,UAAU,QACV,SAAU,KAAK,oBACf,MAAO/B,EAAO,YAAa,CACrC,EACA,gBAAC,SAAM,KAAK,OACL,GAAG,aACH,KAAK,aACL,MAAM,wBACN,SAAUE,EACV,KAAME,EACJ,aACA,8DACF,EACA,QAASD,EAAgB,YAAY,EACrC,MAAOH,EAAO,WACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,SACL,GAAG,kBACH,KAAK,kBACL,MAAM,sBACN,SAAQ,GACR,SAAUE,EACV,KAAME,EACJ,kBACA,sCACF,EACA,QAASD,EAAgB,iBAAiB,EAC1C,MAAOH,EAAO,gBACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,MAAc,MAAM,qBACN,KAAK,yEACL,OAAQ,KAAK,uBACb,MAAOA,EAAO,mBACd,KAAMA,EAAO,yBAA2B,UACxC,MAAO,CAAC,eAAgB,UAAW,UAAW,QAAS,MAAM,EAC7D,QAASA,EAAO,2BAChB,eAAe,WACf,iBAAiB,WAAW,CAC7C,CAEJ,CACF,CA9GE,GADI6B,GACG,YAAY,CACjB,OAAQ,UAAgB,CACtB,gBAAiB,WAAiB,WAClC,WAAY,UACd,CAAC,EAAE,WACH,aAAc,SAAe,WAC7B,gBAAiB,SAAe,WAChC,kBAAmB,SAAe,WAClC,gBAAiB,SAAe,UAClC,CAAC,EAuGH,SAAeA,GCnHTG,GAAoB,CAAC,CAAE,YAAAP,CAAY,IAAM,CAC7C,KAAM,CAAE,OAAAzB,CAAO,EAAIyB,EAGbQ,EAAa,CACjB,EAAG,uCACH,KAAM,0CACN,OAAQ,yDACR,IAAK,uBACL,IAAK,mBACP,EAEA,OACE,gBAAC,UACC,gBAAC,UAAG,iBAAe,EACnB,gBAAC,UAAIA,EAAWjC,EAAO,WAAW,CAAE,EAEpC,gBAAC,UAAG,uBAAqB,EACzB,gBAAC,UAAIA,EAAO,YAAc,KAAM,EAEhC,gBAAC,UAAG,qBAAmB,EACvB,gBAAC,UAAIA,EAAO,gBAAgB,KAAG,EAE/B,gBAAC,UAAG,oBAAkB,EACtB,gBAAC,UACGA,EAAO,2BAAqC,gBAAC,KAAQ,CAAC,MAAOA,EAAO,mBAAoB,KAAMA,EAAO,wBAAyB,EAA1F,KACxC,CACF,CAEJ,EAEAgC,GAAkB,UAAY,CAC5B,YAAa,UAAgB,CAC3B,OAAQ,UAAgB,CACtB,YAAa,WAAiB,WAC9B,gBAAiB,WAAiB,UACpC,CAAC,CACH,CAAC,EAAE,UACL,EAEA,SAAeA,G,oBC1Cf,MAAME,GAAY,UAAO,IAAI,CAAC,CAAE,MAAA9C,CAAM,OAAM;AAAA,eAC7BA,EAAM,MAAM,KAAK,KAAK;AAAA,CACpC,EA0JD,GAxJgC,IAAM,CACpC,MAAM+C,EAAoB,CAAE,aAAc,EAAG,EAEvCC,EAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiBZC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAafC,EAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAmBnBC,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUdC,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiBpB,OAEE,gBAAC,WAEC,gBAAC,MAAG,MAAOL,CAAA,EAAmB,eAAa,EAE3C,gBAAC,MAAG,MAAOA,CAAA,EAAmB,iBAAe,EAE7C,gBAAC,KAAE,MAAOA,CAAA,EACR,gBAAC,cAAO,sCAAoC,EAAS,oBAAiB,gBAAC,YAAK,cAAY,EAAO,8EAEzF,gBAAC,YAAK,aAAW,EAAO,qHACsB,gBAAC,YAAK,iBAAe,EAAO,IAClF,EACA,gBAACD,GAAA,KAAWE,CAAU,EAEtB,gBAAC,KAAE,MAAOD,CAAA,EACR,gBAAC,cAAO,yCAAuC,EAAS,oBAAiB,gBAAC,YAAK,cAAY,EAAO,8EAE5F,gBAAC,YAAK,aAAW,EAAO,qHACsB,gBAAC,YAAK,iBAAe,EAAO,IAClF,EACA,gBAACD,GAAA,KAAWG,CAAa,EAEzB,gBAAC,KAAE,MAAOF,CAAA,EACR,gBAAC,cAAO,wDAAsD,EAAS,oBACrE,gBAAC,YAAK,cAAY,EAAO,sHAErB,gBAAC,YAAK,aAAW,EAAO,8HACsB,gBAAC,YAAK,iBAAe,EAAO,IAClF,EACA,gBAACD,GAAA,KAAWI,CAAiB,EAE7B,gBAAC,KAAE,MAAOH,CAAA,EACR,gBAAC,cAAO,sBAAoB,EAAS,eAAY,gBAAC,YAAK,cAAY,EAAO,gEAClD,gBAAC,YAAK,QAAM,EAAO,6DACvC,gBAAC,YAAK,aAAW,EAAO,6HAEvB,gBAAC,YAAK,UAAQ,EAAO,OAAI,gBAAC,YAAK,0BAAwB,EAAO,IACrE,EACA,gBAACD,GAAA,KAAWK,CAAY,EAExB,gBAAC,KAAE,MAAOJ,CAAA,EACR,gBAAC,cAAO,mBAAiB,EAAS,eAAY,gBAAC,YAAK,aAAW,EAAO,uGAElB,gBAAC,YAAK,iBAAe,EAAO,IAClF,EACA,gBAACD,GAAA,KAAWM,CAAY,EAExB,gBAAC,MAAG,MAAOL,CAAA,EAAmB,yBAAuB,EAErD,gBAAC,KAAE,MAAOA,CAAA,EAAmB,oFACsD,gBAAC,YAAK,iCAA+B,EAAO,+HAG/H,EAEA,gBAAC,MAAG,MAAOA,CAAA,EAAmB,qBAAmB,EAEjD,gBAAC,KAAE,MAAOA,CAAA,EAAmB,0CAE7B,EAEA,gBAAC,MAAG,MAAOA,CAAA,EAAmB,oBAAkB,EAEhD,gBAAC,KAAE,MAAOA,CAAA,EAAmB,2FAE7B,CAEF,CAEJ,ECvJMM,GAAyB,CAAC,CAAE,gBAAAvC,EAAiB,gBAAAC,EAAiB,kBAAAC,EAAmB,OAAAJ,CAAO,IAC5F,gBAAC,gBACC,gBAAC,MAAkB,MAAM,WACN,SAAUE,EACV,kBAAmBE,EAAkB,MAAO,0BAA0B,EACtE,gBAAiBD,EAAgB,KAAK,EACtC,IAAKH,EAAO,IACZ,eAAe,WACf,iBAAiB,WAAW,EAC/C,gBAAC,SAAM,KAAK,SACL,GAAG,mBACH,KAAK,mBACL,MAAM,mBACN,SAAQ,GACR,SAAUE,EACV,KAAK,qEACL,MAAOF,EAAO,iBACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,YACH,KAAK,YACL,MAAM,YACN,SAAQ,GACR,SAAUE,EACV,KAAK,0DACL,MAAOF,EAAO,UACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,iBACH,KAAK,iBACL,MAAM,iBACN,SAAQ,GACR,SAAUE,EACV,KAAK,6CACL,MAAOF,EAAO,eACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,YACH,KAAK,YACL,MAAM,kBACN,SAAQ,GACR,SAAUE,EACV,KAAK,4CACL,MAAOF,EAAO,UACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,aACH,KAAK,aACL,MAAM,oBACN,SAAQ,GACR,SAAUE,EACV,KAAK,+CACL,MAAOF,EAAO,WACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,aACH,KAAK,aACL,MAAM,aACN,SAAQ,GACR,SAAUE,EACV,KAAK,4DACL,MAAOF,EAAO,WACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,eACH,KAAK,eACL,MAAM,eACN,SAAQ,GACR,SAAUE,EACV,KAAK,gEACL,MAAOF,EAAO,aACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,WACL,GAAG,0BACH,KAAK,0BACL,MAAM,iCACN,QAASA,EAAO,wBAChB,SAAUE,EACV,KAAK,uDACL,iBAAiB,2BAA2B,EACnD,gBAAC,SAAM,KAAK,WACL,GAAG,sBACH,KAAK,sBACL,MAAM,sBACN,QAASF,EAAO,oBAChB,SAAUE,EACV,KAAK,2EACL,iBAAiB,2BAA2B,CACrD,EAGFuC,GAAuB,UAAY,CACjC,OAAQ,WAAiB,WAEzB,gBAAiB,SAAe,WAChC,gBAAiB,SAAe,WAChC,kBAAmB,SAAe,UACpC,EAEA,SAAeA,GCnFf,GA3B8B,CAAC,CAAE,YAAAhB,CAAY,IAAM,CACjD,KAAM,CAAE,OAAAzB,CAAO,EAAIyB,EAEnB,OACE,gBAAC,UACC,gBAAC,UAAG,UAAQ,EACZ,gBAAC,UAAIzB,EAAO,GAAI,EAChB,gBAAC,UAAG,WAAS,EACb,gBAAC,UAAG,gBAAC,YAAMA,EAAO,SAAU,CAAO,EACnC,gBAAC,UAAG,gBAAc,EAClB,gBAAC,UAAG,gBAAC,YAAMA,EAAO,cAAe,CAAO,EACxC,gBAAC,UAAG,iBAAe,EACnB,gBAAC,UAAG,gBAAC,YAAMA,EAAO,SAAU,CAAO,EACnC,gBAAC,UAAG,4BAA0B,EAC9B,gBAAC,UAAG,gBAAC,YAAMA,EAAO,UAAW,CAAO,EACpC,gBAAC,UAAG,YAAU,EACd,gBAAC,UAAIA,EAAO,UAAW,EACvB,gBAAC,UAAG,cAAY,EAChB,gBAAC,UAAIA,EAAO,YAAa,EACzB,gBAAC,UAAG,gBAAc,EAClB,gBAAC,UAAIA,EAAO,eAAe,UAAQ,EACnC,gBAAC,UAAG,yBAAuB,EAC3B,gBAAC,UAAIA,EAAO,wBAA0B,MAAQ,IAAK,CACrD,CAEJ,ECyBA,GAhDoC,IAAM,CACxC,MAAM0B,EAAW;AAAA;AAAA,sBAIXC,EAAW;AAAA;AAAA,gCAIjB,OACE,gBAAC,WACC,gBAAC,SAAE,qGAAmG,EACtG,gBAAC,SAAE,uFAAqF,EAExF,gBAAC,QAAK,CAAC,MAAO,CAAE,aAAc,EAAG,EAAG,QAAQ,OAAO,MAAM,yBACvD,gBAAC,MAAG,UAAU,cACZ,gBAAC,UAAG,iBAAc,gBAAC,cAAO,OAAK,EAAS,WAAS,EACjD,gBAAC,UAAG,gDAA6C,gBAAC,cAAO,OAAK,EAAS,sBAAoB,CAC7F,CACF,EAEA,gBAAC,SAAG,EAEJ,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,WAAS,EAE1C,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAC9C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,cAC/B,gBAAC,YAAK,GAAC,EAAO,gBAAC,SAAG,EAAE,oBACd,gBAAC,YAAK,GAAC,EAAO,gBAAC,SAAG,CACrC,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,UAAQ,EACzC,gBAAC,WAAKD,CAAS,EAEf,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,WAAS,EAE1C,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAC9C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,cAC/B,gBAAC,YAAK,GAAC,EAAO,gBAAC,SAAG,EAAE,oBACd,gBAAC,YAAK,GAAC,EAAO,gBAAC,SAAG,CACrC,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,UAAQ,EACzC,gBAAC,WAAKC,CAAS,CACjB,CAEJ,ECxBA,MAAMe,WAAoC,WAAuB,CAAjE,kCASE,wBAAsBC,GAAqB,CACzC,KAAM,CAAE,OAAA3C,EAAQ,aAAAC,CAAa,EAAI,KAAK,MAChC2C,EAAe5B,EAAA,EAAY,MAAMhB,CAAM,EAE7C4C,EAAa,QAAUD,EACvB1C,EAAa2C,CAAY,CAC3B,EAEA,QAAS,CACP,KAAM,CAAE,OAAA5C,EAAQ,gBAAAE,EAAiB,kBAAAE,EAAmB,gBAAAD,CAAgB,EAAI,KAAK,MAE7E,OACE,gBAAC,gBACC,gBAAC,MAAkB,MAAM,aACN,SAAUD,EACV,kBAAmBE,EAAkB,MAAO,kEAAkE,EAC9G,gBAAiBD,EAAgB,KAAK,EACtC,IAAKH,EAAO,IACZ,eAAe,WACf,iBAAiB,WACjB,QAAQ,QAAQ,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,wBACH,KAAK,wBACL,MAAM,wBACN,SAAQ,GACR,SAAUE,EACV,KAAME,EAAkB,wBAAyB,gEAAgE,EACjH,QAASD,EAAgB,uBAAuB,EAChD,MAAOH,EAAO,sBACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,uBACH,KAAK,uBACL,MAAM,uBACN,SAAUE,EACV,KAAME,EAAkB,uBAAwB,yGAAyG,EACzJ,QAASD,EAAgB,sBAAsB,EAC/C,MAAOH,EAAO,qBACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,KAAK,OACL,GAAG,aACH,KAAK,aACL,MAAM,kBACN,SAAQ,GACR,SAAUE,EACV,KAAK,qDACL,MAAOF,EAAO,WACd,eAAe,WACf,iBAAiB,WAAW,EACnC,gBAAC,SAAM,GAAG,eACH,MAAM,eACN,KAAK,gGACL,eAAe,WACf,iBAAiB,YACtB,gBAAC,KAAa,CAAC,MAAOA,EAAO,SAAW,CAAC,EAAG,SAAQ,GAAC,SAAU,KAAK,mBAAoB,CAC1F,CAEF,CAEJ,CACF,CAxEM0C,GACG,UAAY,CACjB,OAAQ,WAAiB,WACzB,aAAc,SAAe,WAC7B,gBAAiB,SAAe,WAChC,gBAAiB,SAAe,WAChC,kBAAmB,SAAe,UACpC,EAmEF,SAAeA,GC/FTG,GAA6B,CAAC,CAAE,YAAApB,CAAY,IAAM,CACtD,KAAM,CAAE,OAAAzB,CAAO,EAAIyB,EAEnB,OACE,gBAAC,UACC,gBAAC,UAAG,YAAU,EACd,gBAAC,UAAIzB,EAAO,GAAI,EAChB,gBAAC,UAAG,uBAAqB,EACzB,gBAAC,UAAG,gBAAC,YAAMA,EAAO,qBAAsB,CAAO,EAC/C,gBAAC,UAAG,sBAAoB,EACxB,gBAAC,UAAG,gBAAC,YAAMA,EAAO,oBAAqB,CAAO,EAC9C,gBAAC,UAAG,iBAAe,EACnB,gBAAC,UAAIA,EAAO,UAAW,EACvB,gBAAC,UAAG,cAAY,EAChB,gBAAC,UAAG,gBAAC,KAAa,CAAC,MAAOA,EAAO,SAAW,CAAC,EAAG,CAAE,CACpD,CAEJ,EAEA6C,GAA2B,UAAY,CACrC,YAAa,WAAiB,UAChC,EAEA,SAAeA,GC8Jf,GArLyC,IAAM,CAC7C,MAAMC,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWdC,EAAgB,wBAChBC,EAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASZC,EAAiB;AAAA;AAAA;AAAA,GAIjBC,EAAa;AAAA;AAAA,GAGbC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAiBrB,OACE,gBAAC,WACC,gBAAC,SAAE,0CACsC,gBAAC,UAAG,UAAQ,EAAK,2FAE1D,EAEA,gBAAC,QAAK,CAAC,MAAO,CAAE,aAAc,EAAG,EAAG,QAAQ,QAAO,+CACL,gBAAC,UAAG,cAAY,EAAK,UAAO,gBAAC,UAAG,aAAW,EAAK,4LAG9F,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAE9C,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,YAAU,EAC3C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,8DACiB,gBAAC,UAAG,YAAU,EAAK,mBAC9E,gBAAC,YAAM,QAAS,EAAO,4GACkF,gBAAC,SAAG,EAAE,aACrG,gBAAC,YAAM,2CAA4C,EAAO,GACtE,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,uBAAqB,EACtD,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,sDACS,gBAAC,UAAG,cAAY,EAAK,oCAC9D,gBAAC,YAAK,kBAAgB,EAAO,GACzC,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,sBAAoB,EACrD,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,sDACS,gBAAC,UAAG,aAAW,EAAK,oCAC7D,gBAAC,YAAK,YAAU,EAAO,yCACG,gBAAC,UAAG,UAAQ,EAAK,2EAEvD,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,iBAAe,EAChD,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,eAC9B,gBAAC,UAAG,YAAU,EAAK,4NAGjC,EAEA,gBAAC,SAAG,EAEJ,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,SAAO,EACxC,gBAAC,SAAE,0FACsF,gBAAC,SAAG,EAAE,yBACvE,gBAAC,cAAQ,sCAAuC,EAAS,YAAS,gBAAC,YAAM,QAAS,EAAO,oBAC9F,gBAAC,cAAO,MAAI,EAAS,6BACxC,EACA,gBAAC,SAAE,sCAEH,EACA,gBAAC,WAAKL,CAAY,EAElB,gBAAC,MAAG,KACF,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAC9C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,0BACnB,gBAAC,YAAK,kBAAgB,EAAO,gBAAC,SAAG,EAAE,yBACpC,gBAAC,UAAG,OAAK,EAAK,gBAAC,SAAG,CAC1C,CACF,EACA,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,QAAM,EACvC,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,iBAC5B,gBAAC,YAAK,UAAQ,EAAO,gBAAC,SAAG,EAAE,cAE3C,EACA,gBAAC,WAAKC,CAAc,CACtB,CACF,EACA,gBAAC,MAAG,KACF,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAC9C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,0BACnB,gBAAC,YAAK,kBAAgB,EAAO,gBAAC,SAAG,EAAE,yBACpC,gBAAC,YAAK,QAAM,EAAO,gBAAC,SAAG,CAC/C,CACF,EACA,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,QAAM,EACvC,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,iBAC5B,gBAAC,YAAK,UAAQ,EAAO,gBAAC,SAAG,EAAE,cAE3C,EACA,gBAAC,WAAKC,CAAU,CAClB,CACF,EACA,gBAAC,MAAG,KACF,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAC9C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,0BACnB,gBAAC,YAAK,sBAAoB,EAAO,gBAAC,SAAG,EAAE,yBACxC,gBAAC,YAAK,iBAAe,EAAO,gBAAC,SAAG,CACxD,CACF,EACA,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,QAAM,EACvC,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,iBAC5B,gBAAC,YAAK,kBAAgB,EAAO,gBAAC,SAAG,EAAE,cAEnD,EACA,gBAAC,WAAKE,CAAW,CACnB,CACF,EACA,gBAAC,MAAG,KACF,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAC9C,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,0BACnB,gBAAC,YAAK,kBAAgB,EAAO,gBAAC,SAAG,EAAE,yBACpC,gBAAC,YAAK,gBAAc,EAAO,gBAAC,SAAG,CACvD,CACF,EACA,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,QAAM,EACvC,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,iBAC5B,gBAAC,YAAK,UAAQ,EAAO,gBAAC,SAAG,EAAE,cAE3C,EACA,gBAAC,WAAKD,CAAe,CACvB,CACF,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,eAAa,EAC9C,gBAAC,SAAE,kGAEH,EACA,gBAAC,WAAKE,CAAa,CACrB,CAEJ,ECxKA,IAAY,SAAS,IAAI,IAAe,CAAC,EAAG,CAC1C,oBAAqB,CACnB,CACE,KAAM,UACN,YAAa,WACb,cAAe,GACf,iBAAkB,GAClB,uBAAwB,EAC1B,EACA,CACE,KAAM,YACN,YAAa,aACb,cAAe,GACf,iBAAkB,GAClB,uBAAwB,EAC1B,EACA,CACE,KAAM,UACN,YAAa,qBACb,cAAe,GACf,iBAAkB,GAClB,uBAAwB,EAC1B,EACA,CACE,KAAM,eACN,YAAa,gBACb,cAAe,GACf,iBAAkB,GAClB,uBAAwB,EAC1B,CACF,CACF,CAAC,CAAC,EC7CF,MAAMC,GAAoB,IAAM,KAEhC,GAAe,aAAiBA,EAAiB,ECAjD,GAFyB,IAAO,gBAAC,SAAE,kCAAgC,E,oBCQnE,MAAMC,GAAwB,CAAC,CAAE,OAAArD,CAAO,EAAUsD,IAAa,CA1B/D,MA2BE,KAAM,CAAE,OAAAC,EAAQ,UAAAC,EAAW,OAAAC,CAAO,KAAwE,oBAAiB,EACrH,CAACC,EAAaC,CAAc,EAAI,WAAuC,CAAE,GAAG3D,CAAO,CAAC,EAE1F,YAAgB,IAAM2D,EAAe,CAAE,GAAG3D,CAAO,CAAC,EAAG,CAACA,CAAM,CAAC,EAE7D,MAAM4D,EAAiB,IAAM,CAC3B,MAAMC,EAAoB,CAAC,EAE3B,OAAKN,EAAO,OAAO,WAAUM,EAAa,SAAW,YACjDN,EAAO,OAAO,SAAW,IAAGM,EAAa,SAAW,kCAEjDA,CACT,EAEA,sBAA0BP,EAAK,KAAO,CACpC,SAAU,IAAOM,EAAe,CAClC,EAAE,EAEF,MAAME,EAAgBhD,GAAiB,CAACH,EAAeC,EAAcC,IAAqB,CACxF,MAAMkD,EAAY,CAAE,GAAGL,CAAY,EAC7BM,EAAe,CAAE,GAAGT,EAAO,MAAO,EAExCQ,EAAUjD,CAAI,EAAID,EAAUF,EAAQ,EACpCoD,EAAU,GAAGjD,CAAI,OAAO,EAAIF,EAC5BoD,EAAalD,CAAI,EAAID,EAAUF,EAAQ,EACvCqD,EAAa,GAAGlD,CAAI,OAAO,EAAIF,EAE/B+C,EAAeI,CAAS,EACxBP,EAAU,CAAE,GAAGD,EAAQ,OAAQS,CAAa,CAAC,CAC/C,EAEA,OACE,gBAAC,YAAS,IAAAV,CAAA,EACR,gBAAC,MAAgB,KAAK,OACL,KAAK,kBACL,MAAM,oBACN,SAAQ,GACR,MAAM,EAAAG,EAAO,SAAP,QAAe,SAAW,KAAO,gEACvC,eAAe,WACf,iBAAiB,WAAW,EAC7C,gBAAC,MAAc,MAAM,sBACN,KAAK,yGACL,OAAQK,EAAa,qBAAqB,EAC1C,KAAK,6BACL,SAAS,kCACT,MAAOJ,EAAY,oBACnB,KAAMA,EAAY,0BAA4B,UAC9C,eAAgB1D,EAAO,oBAAsB,EAC7C,eAAe,WACf,iBAAiB,WAAW,EAC3C,gBAAC,MAAc,MAAM,qBACN,KAAK,0GACL,OAAQ8D,EAAa,oBAAoB,EACzC,KAAK,4BACL,SAAS,iCACT,MAAOJ,EAAY,mBACnB,KAAMA,EAAY,yBAA2B,UAC7C,eAAgB1D,EAAO,mBAAqB,EAC5C,eAAe,WACf,iBAAiB,WAAW,CAC7C,CAEJ,EAEA,GAAe,aAAiBqD,EAAqB,ECzExCY,GAAmB,UAAO;AAAA;AAAA;AAAA,EAK1BC,GAAa,UAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpBC,GAAQ,UAAO;AAAA;AAAA;AAAA,EAKfC,GAAQ,UAAO;AAAA;AAAA;AAAA;AAAA,ECoB5B,GAvB6B,CAAC,CAAE,MAAAC,CAAM,IACpC,gBAACJ,GAAgB,KACf,gBAACC,GAAU,KACT,gBAACC,GAAK,KAAC,kBAAgB,EACvB,gBAACC,GAAK,CAAC,MAAO,CAAE,aAAc,gBAAiB,GAAIC,EAAM,OAAO,QAAS,CAC3E,EACA,gBAACH,GAAU,KACT,gBAACC,GAAK,KAAC,sBAAoB,EAC3B,gBAACC,GAAK,CAAC,MAAO,CAAE,aAAc,gBAAiB,GAC7C,gBAAC,MAAS,MAAOC,EAAM,OAAO,oBACpB,KAAMA,EAAM,OAAO,yBAA0B,CACzD,CACF,EACA,gBAACH,GAAU,KACT,gBAACC,GAAK,KAAC,qBAAmB,EAC1B,gBAACC,GAAK,KACJ,gBAAC,MAAS,MAAOC,EAAM,OAAO,mBACpB,KAAMA,EAAM,OAAO,wBAAyB,CACxD,CACF,CACF,ECEF,GAjCmC,IACjC,gBAAC,WACC,gBAAC,SAAE,wEAAsE,EACzE,gBAAC,SAAE,2HAAyH,EAE5H,gBAAC,QAAK,CAAC,MAAO,CAAE,aAAc,EAAG,EAAG,QAAQ,OAAO,MAAM,0BACvD,gBAAC,SAAE,2EAAyE,EAC5E,gBAAC,SAAE,0GAAwG,CAC7G,EAEA,gBAAC,SAAG,EAEJ,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,YAAU,EAC3C,gBAAC,SAAE,kFAAgF,EAEnF,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,uBAAqB,EAEtD,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,qBAAmB,EACpD,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,4FAC+C,gBAAC,SAAG,EAAE,kFAEjG,EAEA,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,oBAAkB,EACnD,gBAAC,KAAE,MAAO,CAAE,aAAc,GAAI,QAAS,CAAE,GAAG,gGACmD,gBAAC,SAAG,EAAE,wKAGrG,CAEF,EC3BF,IAAY,SAAS,IAAI,IAAe,CAAC,EAAG,CAC1C,kBAAmB,CACjB,CACE,KAAM,OACN,YAAa,sBACb,cAAe,GACf,iBAAkB,GAClB,uBAAwB,IAC1B,EACA,CACE,KAAM,cACN,YAAa,8BACb,cAAe,GACf,iBAAkB,GAClB,uBAAwB,EAC1B,CACF,CACF,CAAC,CAAC,E,sHCCF,MAAMC,MAAU,WAAO,eAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAO9BC,GAAgB,CAAC,CAAE,MAAAC,EAAO,MAAAH,EAAO,YAAA5C,EAAa,OAAAgC,CAAO,IAAa,CACtE,MAAMgB,KAAUC,GAAA,GAAW,EACrBC,KAAgBC,GAAA,GAAiB,EAEjC,CAAE,wBAAAC,EAAyB,iBAAAC,CAAiB,KAAIC,EAAA,GAAoBP,CAAK,EAEzEQ,EAAe,cAAkB,IAAM,CAC3CL,EAAc,IAAqB,IAAI,QAAS,CAC9C,aAAc,MACd,YAAa,KACf,CAAC,EAGoB,OAAO,QAC1B,iDAAiDH,EAAM,KAAK,IAC9D,GAGE,IAAoB,OAAOA,EAAM,EAAE,EAAE,KAAK,IAAM,CAC9C,IAAoB,WAAW,CACjC,CAAC,CAEL,EAAG,CAACA,EAAM,GAAIA,EAAM,MAAOG,CAAa,CAAC,EAEnCM,EAAa,cAAkB,IAAM,CACzCR,EAAQ,KAAKS,EAAA,GAAO,OAAO,aAAa,KAAKV,EAAM,IAAI,CAAC,CAC1D,EAAG,CAACC,EAASD,EAAM,IAAI,CAAC,EAExB,OACE,gBAAC,aACC,gBAAC,UACC,gBAAC,UACEf,EAAO,OACN,gBAAC,GAAY,CAAC,UAAU,QAAQ,UAAWA,EAAO,MAAO,MAAM,sBAAuB,GAExF,gBAAC,IAAI,CAAC,GAAIyB,EAAA,GAAO,OAAO,aAAa,KAAKV,EAAM,IAAI,GAAIA,EAAM,KAAM,CACtE,EACA,gBAAC,UAAIA,EAAM,WAAY,EACvB,gBAAC,UAAIA,EAAM,IAAK,EAChB,gBAAC,UACEf,EAAO,OACN,gBAAC,GAAY,CAAC,UAAU,SAAS,UAAWA,EAAO,MAAO,MAAM,eAAgB,GAElF,gBAAC,IAAI,CAAC,GAAIyB,EAAA,GAAO,OAAO,aAAa,OAAO,KAAKb,EAAM,IAAI,GAAIA,EAAM,KAAM,CAC7E,EACA,gBAAC,UACEZ,EAAO,aACN,gBAAC,GAAY,CAAC,UAAU,SAAS,UAAWA,EAAO,YAAa,MAAM,sBAAuB,GAE/F,gBAAC,IAAI,CAAC,GAAIyB,EAAA,GAAO,OAAO,aAAa,cAAc,KAAKzD,EAAY,IAAI,GAAIA,EAAY,KAAM,CAChG,EACA,gBAAC,UACEoD,EAA0B,gBAAC,KAAO,IAAC,EAAKC,EAAiB,YACxD,gBAACR,GAAA,KACC,gBAAC,UAAO,OAAO,SACP,QAASW,EACT,KAAK,SACL,KAAK,QAAO,MAEpB,EACA,gBAAC,UAAO,OAAO,SACP,QAAQ,SACR,QAASD,EACT,KAAK,SACL,KAAK,UAAS,QAEtB,CACF,CAEJ,CACF,CACF,CAEJ,EAEAT,GAAc,aAAe,CAC3B,OAAQ,CACN,MAAO,KACP,MAAO,KACP,YAAa,IACf,CACF,EAEA,SAAeA,G,8MCzHXY,EAAU,CAAC,EAEfA,EAAQ,kBAAoB,KAC5BA,EAAQ,cAAgB,KAElBA,EAAQ,OAAS,UAAc,KAAM,MAAM,EAEjDA,EAAQ,OAAS,KACjBA,EAAQ,mBAAqB,KAE7B,IAAIzE,GAAS,KAAI,KAASyE,CAAO,EAK1B,QAAe,MAAW,KAAQ,OAAS,KAAQ,OAAS,OCW7DC,GAAkB,UAAO;AAAA;AAAA,EAIzBC,GAAmB,IACvB,gBAAC,WAAQ,GAAG,oBACH,UAAW,EAAO,YAClB,MAAM,sBACb,gBAAC,SAAE,gBAAC,cAAO,yBAAuB,CAAS,EAC3C,gBAAC,QAAK,CAAC,UAAS,IACd,gBAAC,aACC,gBAAC,UACC,gBAAC,UAAG,OAAK,EACT,gBAAC,UAAG,aAAW,CACjB,CACF,EACA,gBAAC,aACC,gBAAC,UACC,gBAAC,UAAG,IAAE,EACN,gBAAC,UAAG,iBAAe,CACrB,EACA,gBAAC,UACC,gBAAC,UAAG,OAAK,EACT,gBAAC,UAAG,+BAA6B,CACnC,EACA,gBAAC,UACC,gBAAC,UAAG,MAAI,EACR,gBAAC,UAAG,wCAAsC,CAC5C,EACA,gBAAC,UACC,gBAAC,UAAG,aAAW,EACf,gBAAC,UAAG,iCAA+B,CACrC,CACF,CACF,EACA,gBAAC,SAAE,gBAAC,cAAO,UAAQ,CAAS,EAC5B,gBAAC,SAAE,8CAC0C,gBAAC,SAAG,EAC/C,gBAAC,WAAI,YAAU,EAAM,gBAAC,SAAG,EACzB,gBAAC,WAAI,UAAQ,CACf,EACA,gBAAC,SAAE,sDACkD,gBAAC,YAAK,OAAK,EAAO,UAAO,gBAAC,SAAG,EAChF,gBAAC,WAAI,OAAK,EAAM,IAAC,gBAAC,SAAG,EAAE,iBAAc,gBAAC,SAAG,EACzC,gBAAC,WAAI,aAAW,CAClB,CACF,EAGIC,GACJ,gBAAC,KAAc,CAAC,QAAQ,QAAQ,UAAS,GAAC,UAAU,QAAQ,QAASD,GAAiB,GACpF,gBAAC,SAAM,CAAC,QAAQ,OAAO,UAAW,EAAO,kBAAkB,gBAAC,KAAI,CAAC,KAAK,kBAAkB,WAAU,GAAC,CAAE,CACvG,EAUIE,GAAU,CAAC,CAAE,MAAAf,EAAO,OAAAgB,EAAQ,aAAAC,EAAc,YAAAC,CAAY,IAAiB,CAC3E,MAAMC,EAAa,CAACxE,EAAYyE,IAAmD,CACjF,MAAMC,EAAQ,CAAE,MAAO,MAAO,EAE9B,OAAKD,GAEEA,EAAIzE,CAAE,GAAK0E,CACpB,EAEMC,EAAqB,IAAM,CAC/B,GAAIJ,EAAY,cAAgBD,EAAc,CAC5C,MAAMM,EAAUN,EAAajB,EAAM,eAAe,EAElD,OAAKuB,EAEEL,EAAY,aAAaK,EAAQ,IAAI,EAFvB,IAGvB,CAEA,OAAO,IACT,EAEM1B,EAAQsB,EAAWnB,EAAM,SAAUgB,CAAM,EACzC/D,EAAckE,EAAWnB,EAAM,gBAAiBiB,CAAY,EAC5DhC,EAAS,CACb,MAAOiC,EAAY,OAAOlB,EAAM,IAAI,EACpC,MAAO,KACP,YAAasB,EAAmB,CAClC,EAEA,OACE,gBAAC,IAAc,MAAAtB,EACA,MAAAH,EACA,YAAA5C,EACA,OAAAgC,CAAA,CAAgB,CAEnC,EAEMuC,GAAY,CAAC,CAAE,MAAAC,CAAM,IACzB,gBAAC,aACC,gBAAC,UACC,gBAAC,MAAG,QAAS,GACVA,EACG,gBAAC,KAAc,KAAC,+BAAkCA,EAAM,GAAM,EAC9D,gBAAC,KAAe,KAAC,oCAAkC,CACzD,CACF,CACF,EAGIC,GAAU,CAAC,CACf,OAAAC,EACA,OAAAX,EACA,aAAAC,EACA,MAAAQ,EACA,YAAAP,CACF,IAMOS,EAAO,OAAS,EAEnB,gCACGA,EAAO,IAAK3B,GACX,gBAACe,GAAA,CAAQ,IAAK,cAAcf,EAAM,EAAE,GAC3B,MAAAA,EACA,OAAAgB,EACA,aAAAC,EACA,YAAAC,CAAA,CAA0B,CACpC,CACH,EAEA,gBAACM,GAAA,CAAU,MAAAC,CAAA,CAAc,EAYvBG,GAAuB,CAAC,CAC5B,OAAAD,EACA,OAAAX,EACA,aAAAC,EACA,WAAAY,EACA,YAAAX,EACA,yBAAAY,CACF,IAAa,CACX,KAAM,CAACC,EAASC,CAAU,EAAI,WAAe,EAAK,EAC5C,CAACC,EAAiBC,CAAkB,EAAI,WAAe,CAC3D,YAAaJ,EAAyB,MAAQ,EAC9C,gBAAiBA,EAAyB,UAAY,GACtD,aAAcD,EAAW,MAAQ,UAAUA,EAAW,KAAK,EAAI,GAC/D,UAAWC,EAAyB,UACpC,cAAeA,EAAyB,aAC1C,CAAC,EAED,YAAgB,IAAM,CACpB,KAAM,CAAE,YAAAK,EAAa,gBAAAC,EAAiB,aAAAC,CAAa,EAAIJ,EAEvD,IAAoB,gBAAgBE,EAAaC,EAAiBC,CAAY,EAC3E,KAAK,IAAML,EAAW,EAAK,CAAC,CACjC,EAAG,CAACC,CAAe,CAAC,EAEpB,MAAMK,EAAe,cAAkB,CAACC,EAAiBC,IAAuB,CAC9EN,EAAmB,CAAE,GAAGD,EAAiB,YAAaM,EAAS,gBAAiBC,CAAW,CAAC,CAC9F,EAAG,CAACP,CAAe,CAAC,EAEdQ,EAAW,cAAmBhB,GAAkB,CACpDQ,EAAgB,UAAU,EAC1BA,EAAgB,cAAc,CAAE,KAAM,EAAG,SAAUA,EAAgB,eAAgB,CAAC,EACpFC,EAAmB,CAAE,GAAGD,EAAiB,YAAa,EAAG,aAAcR,CAAM,CAAC,CAChF,EAAG,CAACQ,CAAe,CAAC,EAEdS,EAAU,cAAkB,IAAM,CACtCT,EAAgB,UAAU,EAC1BA,EAAgB,cAAc,CAAE,KAAM,EAAG,SAAUA,EAAgB,eAAgB,CAAC,EACpFC,EAAmB,CAAE,GAAGD,EAAiB,YAAa,EAAG,aAAc,EAAG,CAAC,CAC7E,EAAG,CAACA,CAAe,CAAC,EAEpB,OACE,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,IACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,4BACN,gBAAC,aAAOJ,EAAW,MAAM,QAAM,CAC1D,EACA,gBAAC,MAAc,WAAYI,EAAgB,YAC5B,SAAUA,EAAgB,gBAC1B,SAAUK,EACV,WAAYT,EAAW,OACpC,gBAAC,KAAU,CAAC,SAAAY,EAAoB,QAAAC,EAAkB,mBAAA5B,EAAA,CAAwC,EAC1F,gBAACF,GAAA,KACC,gBAAC,QAAK,CAAC,UAAS,GAAC,MAAK,GAAC,UAAW,EAAO,eACvC,gBAAC,aACC,gBAAC,UACC,gBAAC,MAAG,UAAW,EAAO,UAAU,OAAK,EACrC,gBAAC,MAAG,UAAW,EAAO,gBAAgB,aAAW,EACjD,gBAAC,MAAG,UAAW,EAAO,SAAS,MAAI,EACnC,gBAAC,MAAG,UAAW,EAAO,UAAU,OAAK,EACrC,gBAAC,MAAG,UAAW,EAAO,YAAY,cAAY,EAC9C,gBAAC,MAAG,UAAW,EAAO,YAAY,SAAO,CAC3C,CACF,EACCmB,EAAU,gBAAC,KAAO,CAAC,KAAK,uBAAwB,GAC/C,gBAACL,GAAA,CAAQ,OAAAC,EACA,OAAAX,EACA,aAAAC,EACA,MAAOgB,EAAgB,aACvB,YAAAf,CAAA,CAA0B,CAEvC,CACF,CACF,CACF,CACF,CAEJ,EAEA,MAAeyB,GAAA,GAA6Bf,EAAoB,E,qBCrOhE,MAAMgB,GAAa,CAAE,MAAO,GAAI,MAAO,EAAM,EA8I7C,GA5IwB,CAAC,CAAE,MAAA5C,EAAO,MAAAH,EAAO,YAAA5C,CAAY,IAAa,CAChE,MAAM4F,KAAW,gBAAY,EACvB,CAAE,wBAAAxC,EAAyB,iBAAAC,CAAiB,KAAIC,EAAA,GAAoBP,CAAK,EACzE,CAAC8C,EAAUC,CAAW,EAAI,WAA0BH,EAAU,EAC9D,CAACI,EAAWC,CAAY,EAAI,WAA0BL,EAAU,EAChE,CAACM,EAAcC,CAAe,EAAI,WAAoB,IAAI,EAE1D1C,EAAc2C,GAAsB,IAAM,CAC9CP,EAASnC,EAAA,GAAO,OAAO,aAAa,KAAK0C,CAAS,CAAC,CACrD,EAEMC,EAAuBC,GAAoC,CAC/D,MAAMC,EAAWD,EAAM,OAAO,OAAS,WAAa,CAAE,GAAGR,CAAS,EAAI,CAAE,GAAGE,CAAU,EAOrF,OALAO,EAAS,MAAQD,EAAM,OAAO,OACbA,EAAM,OAAO,MAAM,QAAQ,MAAO,EAAE,EAAE,OAAS,EAEhEC,EAAS,MAAQD,EAAM,OAAO,MAEtBA,EAAM,OAAO,KAAM,CACzB,IAAK,WACHP,EAAYQ,CAAQ,EACpB,MACF,IAAK,YACHN,EAAaM,CAAQ,EACrBJ,EAAgB,IAAI,EACpB,MACF,QACE,KACJ,CACF,EAEMK,EAAkBF,GAAgC,CACtDA,EAAM,eAAe,EAEjBR,EAAS,OACX,IAAoB,SAAS9C,EAAO8C,EAAS,KAAK,EAAE,KAAK,IAAM,CAC7DC,EAAYH,EAAU,CACxB,CAAC,CAEL,EAEMa,EAAiBH,GAAgC,CACrDA,EAAM,eAAe,EACrB,IAAoB,SAAStD,CAAK,CACpC,EAEM0D,EAAmBJ,GAAgC,CACvDA,EAAM,eAAe,EAEjBN,EAAU,OACZ,IAAoB,OAAOhD,EAAM,KAAMgD,EAAU,KAAK,EAAE,KAAMW,GAAc,CAC1ER,EAAgB,KAAK,UAAUQ,EAAM,KAAM,CAAC,CAAC,EAC7CV,EAAaL,EAAU,CACzB,CAAC,CAEL,EAEA,OACE,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,UAAI5C,EAAM,KAAM,EACjB,gBAAC,SAAGA,EAAM,WAAY,EACtB,gBAAC,UACC,gBAAC,UAAG,cAAY,EAChB,gBAAC,UACC,gBAAC,IAAI,CAAC,GAAIU,EAAA,GAAO,OAAO,aAAa,cAAc,KAAKzD,EAAY,IAAI,GACrEA,EAAY,KACf,CACF,EACA,gBAAC,UAAG,OAAK,EACT,gBAAC,UACC,gBAAC,IAAI,CAAC,GAAIyD,EAAA,GAAO,OAAO,aAAa,OAAO,KAAKb,EAAM,IAAI,GAAIA,EAAM,KAAM,CAC7E,CACF,EACE,CAACQ,IAA2BC,GAAA,YAAAA,EAAkB,aAC9C,gBAAC,UAAO,QAAQ,UACR,QAASG,EAAWT,EAAM,IAAI,EAC9B,KAAK,SACL,KAAK,QAAO,MAEpB,GAEAA,EAAM,sBAAwBA,EAAM,sBACpC,gBAAC,UACC,gBAAC,UAAG,sBAAoB,EACxB,gBAAC,UAAG,gBAAC,YAAMA,EAAM,oBAAqB,EAAQ,IAAI,IAAEA,EAAM,0BAA0B,YAAY,EAAE,GAAC,EACnG,gBAAC,UAAG,qBAAmB,EACvB,gBAAC,UAAG,gBAAC,YAAMA,EAAM,mBAAoB,EAAQ,IAAI,IAAEA,EAAM,yBAAyB,YAAY,EAAE,GAAC,CACnG,EAEF,gBAAC,SAAG,EACJ,gBAAC,UAAG,aAAW,EACf,gBAAC,SAAE,kGAAgG,EACnG,gBAAC,QAAK,SAAUwD,CAAA,EACd,gBAAC,gBACC,gBAAC,SAAM,KAAK,OACL,GAAG,YACH,KAAK,WACL,YAAY,oCACZ,MAAM,MACN,SAAUH,EACV,KAAK,0BACL,SAAQ,GACR,MAAOP,EAAS,MAAO,EAC9B,gBAAC,gBAAa,KACZ,gBAAC,SAAM,CAAC,KAAK,SAAS,QAAQ,UAAU,SAAU,CAACA,EAAS,OAAO,WAAS,EAC5E,gBAAC,SAAM,CAAC,KAAK,SAAS,QAAQ,OAAO,QAASW,CAAA,EAAe,WAAS,CACxE,CACF,CACF,CACF,EACA,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,UAAG,aAAW,EACf,gBAAC,SAAE,4GAA0G,EAC7G,gBAAC,QAAK,SAAUC,CAAA,EACd,gBAAC,gBACC,gBAAC,SAAM,KAAK,OACL,GAAG,MACH,KAAK,YACL,YAAY,sCACZ,MAAM,MACN,SAAQ,GACR,SAAUL,EACV,KAAK,8BACL,MAAOL,EAAU,MAAO,EAC/B,gBAAC,SAAM,CAAC,KAAK,SAAS,KAAK,eAAe,QAAQ,UAAU,SAAU,CAACA,EAAU,OAAO,SAAO,CACjG,CACF,EACCE,GACC,gBAAC,OAAI,MAAO,CAAE,UAAW,MAAO,GAC9B,gBAAC,UAAG,eAAa,EACjB,gBAAC,WAAKA,CAAa,CACrB,CAEJ,CACF,CAEJ,E,gCCxIA,MAAMU,GAAqC,CACzC,GAAI,OACJ,MAAO,GACP,YAAa,GACb,KAAM,GACN,SAAU,OACV,gBAAiB,OACjB,oBAAqB,GACrB,qBAAsB,GACtB,0BAA2B,OAC3B,mBAAoB,GACpB,oBAAqB,GACrB,yBAA0B,OAC1B,aAAc,IAChB,EAQMC,GAAkB,CAAC,CAAE,MAAAC,EAAO,OAAAC,EAAQ,MAAA/D,CAAM,IAAa,CAC3D,KAAM,CAAE,wBAAAK,EAAyB,iBAAAC,CAAiB,KAAIC,EAAA,GAAoBP,CAAK,EACzEC,KAAUC,GAAA,GAAW,EACrBC,KAAgBC,GAAA,GAAiB,EAEjC4D,EAAYjF,GAA4B,CAC5C,MAAME,EAAS,CAAC,EAWhB,MAVkD,CAChD,QACA,OACA,WACA,kBACA,WACA,uBACA,qBACF,EAEe,QAASgF,GAAkB,CACxC,GAAI,CAAClF,EAAOkF,CAAa,EAAG,CAE1B,GADIA,IAAkB,wBAA0B,CAAClF,EAAO,qBACpDkF,IAAkB,uBAAyB,CAAClF,EAAO,mBAAoB,OAC3EE,EAAOgF,CAAa,EAAI,UAC1B,CACF,CAAC,EAEMhF,CACT,EAEMiF,EAAgBnF,GAA4B,CAChDoB,EAAc,IAAqB,IAAI4D,EAAS,UAAY,SAAS,EAAG,CACtE,aAAc,MACd,YAAa,KACf,CAAC,EAED,IAAII,EAEJ,MAAMC,EAA4B,KAAMrF,EAAQ,CAAC,sBAAuB,oBAAoB,CAAC,EAE7F,OAAIgF,EACFI,EAAU,IAAoB,OAAOC,CAAY,EAEjDD,EAAU,IAAoB,OAAOC,CAAY,EAG5CD,EAAQ,KAAK,IAAM,CACxBL,EAAM,CACR,CAAC,CACH,EAEMO,EAAiC,CACrC,GAAGT,GACH,GAAG5D,EACH,oBAAqBA,EAAM,uBAAyB,GACpD,mBAAoBA,EAAM,sBAAwB,EACpD,EAEMsE,EAAW,IAAMrE,EAAQ,KAAKS,EAAA,GAAO,OAAO,aAAa,QAAQ,EACjE6D,EAAY,CAACR,GAAU,CAAC1D,IAA2BC,GAAA,YAAAA,EAAkB,YAE3E,OACE,gBAAC,UAAO,cAAA+D,EACA,SAAAL,EACA,mBAAkB,GAClB,SAAU,MAAOjF,EAAQyF,IAAkB,CACzC,MAAMvF,EAAS,MAAMuF,EAAc,aAAa,EAEhD,OAAI,OAAO,KAAKvF,CAAM,EAAE,SAAW,EAC1BiF,EAAanF,CAAM,EAGrB,QAAQ,QAAQ,CACzB,GACL,CAAC,CAAE,OAAAA,EAAQ,OAAAE,EAAQ,QAAAwF,EAAS,cAAAC,EAAe,gBAAAC,EAAiB,UAAA3F,EAAW,aAAA4F,CAAa,IACnF,gBAAC,OAAI,CAAC,UAAU,wBACd,gBAAC,gBACC,gBAAC,MAAgB,KAAK,OACL,KAAK,QACL,MAAM,QACN,KAAOH,EAAQ,OAASxF,EAAO,MAAS,OAAY,uCACpD,eAAe,WACf,iBAAiB,WAAW,EAE7C,gBAAC,MAAgB,KAAK,OACL,KAAK,cACL,MAAM,cACN,KAAK,mCACL,eAAe,WACf,iBAAiB,WAAW,EAE7C,gBAAC,MAAgB,KAAK,OACL,KAAK,OACL,MAAM,OACN,KAAOwF,EAAQ,MAAQxF,EAAO,KAAQ,OAAY,6EAClD,eAAe,WACf,iBAAiB,WAAW,EAE7C,gBAAC,SAAM,GAAG,sBACH,KAAK,sBACL,KAAK,WACL,MAAM,8BACN,KAAK,4EACL,iBAAiB,2BACjB,QAASF,EAAO,oBAChB,SAAU,IAAM,CACd2F,EAAc,sBAAuB,CAAC3F,EAAO,mBAAmB,EAE5DA,EAAO,sBACT2F,EAAc,uBAAwB,EAAE,EACxCA,EAAc,4BAA6B,MAAM,EAErD,EAAG,EACT3F,EAAO,qBACN,gBAAC,MAAe,MAAM,uBACN,KAAO0F,EAAQ,sBAAwBxF,EAAO,sBAAyB,2GACvE,gBAAkBwF,EAAQ,sBAAwBxF,EAAO,qBAAwB,QAAU,OAC3F,OAAQ,IAAM0F,EAAgB,uBAAwB,EAAI,EAC1D,OAAQ,CAACxI,GAAO0I,KAAc,CAC5B7F,EAAU,CACR,GAAGD,EACH,qBAAsB5C,GACtB,0BAA2B0I,EAC7B,CAAC,CACH,EACA,MAAO9F,EAAO,qBACd,UAAWA,EAAO,2BAA6B,OAC/C,aAAc,CAAC,SAAU,SAAU,UAAW,MAAM,EACpD,eAAe,WACf,iBAAiB,WAAW,EAG9C,gBAAC,SAAM,GAAG,qBACH,KAAK,qBACL,KAAK,WACL,MAAM,6BACN,KAAK,2EACL,iBAAiB,2BACjB,QAASA,EAAO,mBAChB,SAAU,IAAM,CACd2F,EAAc,qBAAsB,CAAC3F,EAAO,kBAAkB,EAE1DA,EAAO,qBACT2F,EAAc,sBAAuB,EAAE,EACvCA,EAAc,2BAA4B,MAAM,EAEpD,EAAG,EACT3F,EAAO,oBACN,gBAAC,MAAe,MAAM,sBACN,KAAO0F,EAAQ,qBAAuBxF,EAAO,qBAAwB,0GACrE,gBAAkBwF,EAAQ,qBAAuBxF,EAAO,oBAAuB,QAAU,OACzF,OAAQ,IAAM0F,EAAgB,sBAAuB,EAAI,EACzD,OAAQ,CAACxI,GAAO0I,KAAc,CAC5B7F,EAAU,CACR,GAAGD,EACH,oBAAqB5C,GACrB,yBAA0B0I,EAC5B,CAAC,CACH,EACA,MAAO9F,EAAO,oBACd,UAAWA,EAAO,0BAA4B,OAC9C,aAAc,CAAC,SAAU,MAAM,EAC/B,eAAe,WACf,iBAAiB,WAAW,CAEhD,EAEA,gBAAC,GAAqB,KACpB,gBAAC,GAAiB,IAAC,CACrB,EAEA,gBAAC,GAAe,KACd,gBAAC,GAAW,IAAC,CACf,EAEA,gBAAC,gBACC,gBAAC,MAAG,KACF,gBAAC,MAAG,CAAC,SAAU,EAAG,GAAI,GACnBgF,GACC,gBAAC,MAAW,iBAAiB,sBACjB,kBAAkB,2BAClB,aAAAa,EACA,cAAa,GACb,SAAAN,CAAA,CAAoB,EAEjCC,GACC,gBAAC,MAAW,iBAAiB,sBACjB,kBAAkB,2BAClB,aAAAK,EACA,cAAa,GACb,SAAAN,CAAA,CAAoB,CAEpC,CACF,CACF,CACF,CAEJ,CAEJ,EAEAT,GAAgB,UAAY,CAC1B,MAAO,SAAe,WACtB,OAAQ,SACR,MAAO,UACT,EAEAA,GAAgB,aAAe,CAC7B,OAAQ,GACR,MAAOD,EACT,EAEA,SAAeC,G,qKCvPf,MAAMiB,WAA0B,WAAgB,CAAhD,kCAYE,gBAAQ,CACN,MAAO,MACT,CAAC,CAAD,CAEA,QAAS,CACP,OACE,gBAAC,WACC,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,IAAgB,MAAO,KAAK,MAAM,MAClB,OAAM,GACN,SAAU,KAAK,MAAM,SACrB,iBAAkB,KAAK,MAAM,iBAAkB,CAClE,CACF,CACF,CAEJ,CACF,CA7BE,GADIA,GACG,YAAY,CACjB,MAAO,SAAe,WACtB,SAAU,SACV,iBAAkB,UACpB,CAAC,EAED,GAPIA,GAOG,eAAe,CACpB,SAAU,KACV,iBAAkB,CAAC,CACrB,CAAC,EAsBH,SAAeA,G,uECjBf,MAAM,MAAU,WAAOC,GAAA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EA+GpC,GAxGwB,CAAC,CAAE,MAAAlF,CAAM,IAAa,CAC5C,MAAMI,KAAUC,GAAA,GAAW,EACrB,CAAE,wBAAAG,EAAyB,iBAAAC,CAAiB,KAAIC,EAAA,GAAoBV,CAAK,EACzEM,KAAgBC,GAAA,GAAiB,EAEjC4E,EAAW,CACf,SAAU,8BAA8BnF,EAAM,EAAE,YAChD,KAAM,8BAA8BA,EAAM,EAAE,QAC5C,OAAQ,8BAA8BA,EAAM,EAAE,SAChD,EAEMoF,EAAa,CACjB,MAAO,8BAA8BpF,EAAM,EAAE,UAC/C,EAEMqF,EAAyBC,GAAiB,CAC9C,MAAMC,EAAQ,OAAO,KAAKD,CAAO,EAAE,OAAO,CAACE,EAAaC,IACtDD,GAAO,OAAO,MAAMF,EAAQG,CAAM,EAAE,MAAM,OAAO,KAAK,EAAI,EAAIH,EAAQG,CAAM,EAAE,MAAM,OAAO,OAC1F,CAAC,EAEJ,OAAIF,EAAQ,EAAU,MAEfG,GAAA,EAAY,aAAaH,CAAK,CACvC,EAEMI,EAAuBL,GAAiB,CAC5C,MAAMM,EAAY,OAAO,KAAKN,CAAO,EAAE,OAAO,CAACE,EAAaC,IAC1DD,GAAO,OAAO,MAAMF,EAAQG,CAAM,EAAE,KAAK,OAAO,KAAK,KAAK,EAAI,EAAIH,EAAQG,CAAM,EAAE,KAAK,OAAO,KAAK,OAClG,CAAC,EAEEI,EAAc,OAAO,KAAKP,CAAO,EAAE,OAAO,CAACE,EAAaC,IAC5DD,GAAO,OAAO,MAAMF,EAAQG,CAAM,EAAE,OAAO,OAAO,KAAK,KAAK,EAAI,EAAIH,EAAQG,CAAM,EAAE,OAAO,OAAO,KAAK,OACtG,CAAC,EAEEF,EAAQK,EAAYC,EAC1B,GAAIN,EAAQ,EAAG,MAAO,MACtB,MAAMO,EAAWF,EAAY,IAASL,EAEtC,MAAO,GAAGG,GAAA,EAAY,aAAaI,CAAO,CAAC,GAC7C,EAEMlF,EAAa,cAAkB,IAAM,CACzCR,EAAQ,KAAKS,EAAA,GAAO,OAAO,aAAa,OAAO,KAAKb,EAAM,IAAI,CAAC,CACjE,EAAG,CAACI,EAASJ,EAAM,IAAI,CAAC,EAElBW,EAAe,cAAkB,IAAM,CAEtB,OAAO,QAAQ,0CAA0CX,EAAM,KAAK,IAAI,GAG3F,IAAyB,OAAOA,EAAM,EAAE,EAAE,KAAK,IAAM,CACnDM,EAAc,IAAqB,IAAI,cAAe,CACpD,aAAc,MACd,YAAa,WACf,CAAC,EAED,IAAyB,WAAW,CACtC,CAAC,CAEL,EAAG,CAACN,EAAM,MAAOA,EAAM,GAAIM,CAAa,CAAC,EAEzC,OACE,gBAAC,aACC,gBAAC,UACC,gBAAC,UACC,gBAAC,IAAI,CAAC,GAAIO,EAAA,GAAO,OAAO,aAAa,OAAO,KAAKb,EAAM,IAAI,GAAIA,EAAM,KAAM,CAC7E,EACA,gBAAC,UAAIA,EAAM,WAAY,EACvB,gBAAC,UAAIA,EAAM,IAAK,EAChB,gBAAC,UACC,gBAAC,MAAa,CAAC,IAAKoF,EAAY,aAAcC,CAAA,CAAuB,CACvE,EACA,gBAAC,UACC,gBAAC,MAAa,CAAC,IAAKF,EAAU,aAAcQ,CAAA,CAAqB,CACnE,EACA,gBAAC,UACC,gBAAC,MAAe,CAAC,KAAM,8BAA8B3F,EAAM,EAAE,aAC3D,gBAAC,MAAW,CAAC,OAAO,WAAY,EAClC,CACF,EACA,gBAAC,UACEQ,EAA0B,gBAAC,KAAO,IAAC,EAAKC,EAAiB,YACxD,gBAAC,GAAO,KACN,gBAAC,UAAO,OAAO,SACP,QAASG,EACT,KAAK,SACL,KAAK,QAAO,MAEpB,EACA,gBAAC,UAAO,OAAO,SACP,QAAQ,SACR,QAASD,EACT,KAAK,SACL,KAAK,UAAS,QAEtB,CACF,CAEJ,CACF,CACF,CAEJ,EC7GM,GAAkB,UAAO;AAAA;AAAA,EAIzB,GAAmB,IACvB,gBAAC,WAAQ,GAAG,oBACH,UAAW,EAAO,YAClB,MAAM,sBACb,gBAAC,SAAE,gBAAC,cAAO,yBAAuB,CAAS,EAC3C,gBAAC,QAAK,CAAC,UAAS,IACd,gBAAC,aACC,gBAAC,UACC,gBAAC,UAAG,OAAK,EACT,gBAAC,UAAG,aAAW,CACjB,CACF,EACA,gBAAC,aACC,gBAAC,UACC,gBAAC,UAAG,IAAE,EACN,gBAAC,UAAG,UAAQ,CACd,EACA,gBAAC,UACC,gBAAC,UAAG,OAAK,EACT,gBAAC,UAAG,wBAAsB,CAC5B,EACA,gBAAC,UACC,gBAAC,UAAG,MAAI,EACR,gBAAC,UAAG,iCAA+B,CACrC,EACA,gBAAC,UACC,gBAAC,UAAG,aAAW,EACf,gBAAC,UAAG,0BAAwB,CAC9B,CACF,CACF,EACA,gBAAC,SAAE,gBAAC,cAAO,UAAQ,CAAS,EAC5B,gBAAC,SAAE,uCACmC,gBAAC,SAAG,EACxC,gBAAC,WAAI,YAAU,EAAM,gBAAC,SAAG,EACzB,gBAAC,WAAI,UAAQ,CACf,EACA,gBAAC,SAAE,sDACkD,gBAAC,YAAK,OAAK,EAAO,UAAO,gBAAC,SAAG,EAChF,gBAAC,WAAI,OAAK,EAAM,IAAC,gBAAC,SAAG,EAAE,iBAAc,gBAAC,SAAG,EACzC,gBAAC,WAAI,aAAW,CAClB,CACF,EAGI,GAAY,CAAC,CAAE,MAAAiB,CAAM,IACzB,gBAAC,aACC,gBAAC,UACC,gBAAC,MAAG,QAAS,GACVA,EACG,gBAAC,KAAc,KAAC,+BAAkCA,EAAM,GAAM,EAC9D,gBAAC,KAAe,KAAC,6BAA2B,CAClD,CACF,CACF,EAGI,GAAU,CAAC,CAAE,OAAAT,EAAQ,MAAAS,CAAM,IAAsDT,EAAO,OAAS,EAEnG,gCACGA,EAAO,IAAKnB,GACX,gBAAC,GAAe,CAAC,IAAK,cAAcA,EAAM,EAAE,GAAI,MAAAA,CAAA,CAAc,CAC/D,CACH,EAEA,gBAAC,GAAS,CAAC,MAAA4B,CAAA,CAAc,EASvB,GACJ,gBAAC,KAAc,CAAC,QAAQ,QAAQ,UAAS,GAAC,UAAU,QAAQ,QAAS,GAAiB,GACpF,gBAAC,UAAO,QAAQ,OACR,UAAW,EAAO,kBACxB,gBAAC,KAAI,CAAC,KAAK,kBAAkB,WAAU,GAAC,CAC1C,CACF,EAGImE,GAAiB,CAAC,CAAE,OAAA5E,EAAQ,WAAAa,EAAY,yBAAAC,CAAyB,IAAa,CAClF,KAAM,CAACC,EAASC,CAAU,EAAI,WAAe,EAAK,EAC5C,CAACC,EAAiBC,CAAkB,EAAI,WAAe,CAC3D,YAAaJ,EAAyB,MAAQ,EAC9C,gBAAiBA,EAAyB,UAAY,GACtD,aAAcD,EAAW,MAAQ,UAAUA,EAAW,KAAK,EAAI,GAC/D,UAAWC,EAAyB,UACpC,cAAeA,EAAyB,aAC1C,CAAC,EAED,YAAgB,IAAM,CACpB,KAAM,CAAE,YAAAK,EAAa,gBAAAC,EAAiB,aAAAC,CAAa,EAAIJ,EAEvD,IAAyB,gBAAgBE,EAAaC,EAAiBC,CAAY,EAChF,KAAK,IAAML,EAAW,EAAK,CAAC,CACjC,EAAG,CAACC,CAAe,CAAC,EAEpB,MAAMK,EAAe,cAAkB,CAACC,EAAiBC,IAAuB,CAC9EN,EAAmB,CAAE,GAAGD,EAAiB,YAAaM,EAAS,gBAAiBC,CAAW,CAAC,CAC9F,EAAG,CAACP,CAAe,CAAC,EAEdQ,EAAW,cAAmBhB,GAAkB,CACpDQ,EAAgB,UAAU,EAC1BA,EAAgB,cAAc,CAAE,KAAM,EAAG,SAAUA,EAAgB,eAAgB,CAAC,EACpFC,EAAmB,CAAE,GAAGD,EAAiB,YAAa,EAAG,aAAcR,CAAM,CAAC,CAChF,EAAG,CAACQ,CAAe,CAAC,EAEdS,EAAU,cAAkB,IAAM,CACtCT,EAAgB,UAAU,EAC1BA,EAAgB,cAAc,CAAE,KAAM,EAAG,SAAUA,EAAgB,eAAgB,CAAC,EACpFC,EAAmB,CAAE,GAAGD,EAAiB,YAAa,EAAG,aAAc,EAAG,CAAC,CAC7E,EAAG,CAACA,CAAe,CAAC,EAEpB,OACE,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,IACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,4BACN,gBAAC,aAAOJ,EAAW,MAAM,QAAM,CAC1D,EACA,gBAAC,MAAc,WAAYI,EAAgB,YAC5B,SAAUA,EAAgB,gBAC1B,SAAUK,EACV,WAAYT,EAAW,OACpC,gBAAC,KAAU,CAAC,SAAAY,EAAoB,QAAAC,EAAkB,mBAAkB,GAAsB,EAC1F,gBAAC,GAAe,KACd,gBAAC,QAAK,CAAC,UAAS,GAAC,MAAK,GAAC,UAAW,EAAO,eACvC,gBAAC,aACC,gBAAC,UACC,gBAAC,MAAG,UAAW,EAAO,UAAU,OAAK,EACrC,gBAAC,MAAG,UAAW,EAAO,gBAAgB,aAAW,EACjD,gBAAC,MAAG,UAAW,EAAO,SAAS,MAAI,EACnC,gBAAC,UAAG,SAAO,EACX,gBAAC,UAAG,UAAQ,EACZ,gBAAC,UAAG,YAAU,EACd,gBAAC,MAAG,UAAW,EAAO,YAAY,SAAO,CAC3C,CACF,EACCX,EAAU,gBAAC,KAAO,CAAC,KAAK,uBAAwB,GAC/C,gBAAC,GAAO,CAAC,OAAAf,EAAgB,MAAOiB,EAAgB,aAAc,CAElE,CACF,CACF,CACF,CACF,CAEJ,EAEA,MAAeU,GAAA,GAA6BiD,EAAc,E,qBCrH1D,SAtCc,CAAC,CAAE,MAAA/F,CAAM,IAAa,CAClC,MAAMgD,KAAW,gBAAY,EACvB,CAAE,wBAAAxC,EAAyB,iBAAAC,CAAiB,KAAIC,EAAA,GAAoBV,CAAK,EACzEgG,KAASC,GAAA,GAAkB,mBAAmB,EAAE,KAAM,GAAoB,CAxClF,MAwCqF,SAAE,SAAS,EAAAjG,EAAM,SAAN,cAAc,MAAI,EAEhH,GAAI,CAACgG,EACH,OAAO,gBAAC,SAAE,sBAAoBhG,EAAM,OAAO,KAAK,0BAAwB,EAG1E,MAAMY,EAAcsF,GAAsB,IAAM,CAC9ClD,EAASnC,EAAA,GAAO,OAAO,aAAa,OAAO,KAAKqF,CAAS,CAAC,CAC5D,EAEA,OACE,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,IACP,gBAAC,UAAIlG,EAAM,MAAM,IAAC,gBAAC,aAAM,IAAEgG,EAAO,YAAY,GAAC,CAAQ,EACvD,gBAACpG,GAAgB,KACf,gBAACC,GAAU,KACT,gBAACC,GAAK,KAAC,cAAY,EACnB,gBAACC,GAAK,KAAEC,EAAM,aAAe,gBAAC,UAAG,iBAAe,CAAM,CACxD,CACF,EACA,gBAAC,UAAG,eAAa,EACjB,gBAAC,WAAK,gBAAoBgG,EAAO,iBAAkB,CAAE,MAAAhG,CAAa,CAAC,CAAE,EACnE,CAACQ,IAA2BC,GAAA,YAAAA,EAAkB,aAC9C,gBAAC,UAAO,QAAQ,UACR,QAASG,EAAWZ,EAAM,IAAI,EAC9B,KAAK,SACL,KAAK,QAAO,MAEpB,CAEJ,CACF,CAEJ,E,gCCpCA,MAAM,GAAQ,CAAC,CAAE,MAAA9E,EAAO,SAAAiL,EAAU,OAAAjC,CAAO,IAAkB,CACzD,MAAMkC,EAAUlC,EAAS,KAAO,KAEhC,OACE,gBAACkC,EAAA,CAAQ,MAAO,CAAE,aAAc,MAAO,GACpClL,EAAM,IAAC,gBAAC,aAAM,IAAEiL,EAAS,GAAC,CAC7B,CAEJ,EAEME,GAA+B,CACnC,GAAI,OACJ,MAAO,GACP,YAAa,GACb,KAAM,GACN,OAAQ,CAAC,CACX,EAYMC,GAAY,CAAC,CAAE,KAAAC,EAAM,MAAAtC,EAAO,MAAA/I,EAAO,OAAAgJ,EAAQ,MAAAlE,EAAO,SAAAmE,EAAU,iBAAAqC,CAAiB,IAAa,CAC9F,MAAMC,EAAY,SAAa,IAAI,EAC7B,CAACC,EAAcC,CAAe,EAAI,WAAwBzC,CAAM,EAChE,CAAE,wBAAA1D,EAAyB,iBAAAC,CAAiB,KAAIC,EAAA,GAAoBV,CAAK,EACzEM,KAAgBC,GAAA,GAAiB,EAEjCyF,EAAS,UAAc,IAAM,IAAY,QAAQ,mBAAmB,EAAE,KAAMY,GAAMA,EAAE,OAASL,CAAI,EAAG,CAACA,CAAI,CAAC,EAE1GM,EAAa,UAAc,IAAOb,EAAO,aAAeO,EAAO,CAACP,EAAQO,CAAI,CAAC,EAC7EO,EAAe,UAAc,IAAOd,EAAO,uBAAyB,CAACA,CAAM,CAAC,EAC5Ee,EAAiB,UAAc,IAC/Bf,EACK,gBACLA,EAAO,cAAe,CAAE,OAAQhG,EAAM,OAAQ,IAAKyG,CAAU,CAC/D,EAGK,KACN,CAACT,EAAQhG,EAAM,MAAM,CAAC,EAEnBgH,EAAgBC,GAAmBA,EAAO,KAAK,EAAE,QAAQ,OAAQ,GAAG,EAAE,kBAAkB,EAExFC,EAAoB,CAAChI,EAA0BC,IAAoBsE,GAAoC,CAC3G,GAAI,CAACiD,EAAc,OACnB,MAAMS,EAAWH,EAAavD,EAAM,OAAO,KAAK,EAEhDtE,EAAU,CACR,GAAGD,EACH,MAAOuE,EAAM,OAAO,MACpB,KAAM0D,CACR,CAAC,CACH,EAEMC,GAAoBlI,GAA6B,CAlGzD,MAmGI,MAAME,EAAc,CAAC,EAUrB,GARKF,EAAO,QAAOE,EAAO,MAAQ,YAE7BF,EAAO,KAGViF,EAASjF,CAAM,EAFfE,EAAO,KAAO,WAKZF,EAAO,OAAO,OAAS,OAAQ,CACjC,MAAMmI,IAAa,EAAAZ,EAAU,UAAV,cAAmB,SAAS,IAAK,CAAC,EAChD,KAAQY,CAAU,IAAGjI,EAAO,OAASiI,EAC5C,CAEA,OAAOjI,CACT,EAEMiF,GAAgBnF,IACJgF,EACZ,IAAyB,OAAOhF,CAAM,EACtC,IAAyB,OAAOA,CAAM,GAE3B,KAAK,IAAM,CA1H9B,MA2HMoB,EAAc,IAAqB,IAAI4D,EAAS,gBAAkB,eAAe,EAAG,CAClF,aAAc,MACd,YAAa,YACb,cAAe,CACb,MAAM,EAAAhF,GAAA,YAAAA,EAAQ,SAAR,cAAgB,IACxB,CACF,CAAC,EAED+E,EAAM,CACR,CAAC,EAGG7D,MAAUC,GAAA,GAAW,EACrBoE,GAAW,IAAMrE,GAAQ,KAAKS,EAAA,GAAO,OAAO,aAAa,OAAO,QAAQ,EACxE6D,GAAY,CAACR,GAAU,CAAC1D,IAA2BC,GAAA,YAAAA,EAAkB,YAE3E,OACE,gCACE,gBAAC,GAAK,CAAC,MAAAvF,EAAc,SAAU2L,EAAY,OAAA3C,CAAA,CAAgB,EAC3D,gBAAC,MAAG,KACF,gBAAC,MAAG,CAAC,GAAI,EAAG,MAAO,CAAE,UAAW,EAAG,GACjC,gBAAC,UAAO,cAAe,CAAE,GAAGmC,GAAY,GAAGrG,CAAM,EACzC,SAAUoH,GACV,eAAc,GACd,iBAAkB,GAClB,gBAAiB,CAAClD,EAClB,SAAUG,GACV,mBAAkB,IACvB,CAAC,CAAE,OAAAjF,EAAQ,OAAAF,EAAQ,UAAAC,EAAW,aAAA4F,CAAa,IAC1C,gBAAC,OAAI,CAAC,UAAU,wBACd,gBAAC,gBACC,gBAAC,MAAgB,KAAK,OACL,KAAK,QACL,MAAM,UACN,SAAQ,GACR,KAAM3F,EAAO,MAAQ,KAAO,gCAC5B,SAAU8H,EAAkBhI,EAAQC,CAAS,EAC7C,UAAS,GACT,eAAe,WACf,iBAAiB,WAAW,EAC7C,gBAAC,MAAgB,KAAK,OACL,KAAK,cACL,MAAM,cACN,KAAK,qBACL,eAAe,WACf,iBAAiB,WAAW,EAC7C,gBAAC,MAAgB,KAAK,OACL,KAAK,OACL,MAAM,SACN,SAAQ,GACR,MAAOqH,EAAiB,KAAOA,EAAiB,KAAK,CAAC,EAAI,KAC1D,SAAU,IAAMG,EAAgB,EAAK,EACrC,KACEvH,EAAO,MAAQoH,EAAiB,KAC7B,KACA,sEAEL,eAAe,WACf,iBAAiB,WAAW,CAE/C,EACCO,EACD,gBAAC,gBACC,gBAAC,MAAG,KACF,gBAAC,MAAG,CAAC,SAAU,EAAG,GAAI,IACnB7C,GACC,gBAAC,MAAW,iBAAiB,eACjB,kBAAkB,oBAClB,aAAAa,EACA,cAAa,GACb,SAAAN,EAAA,CAAoB,EAEjCC,IACC,gBAAC,MAAW,iBAAiB,eACjB,kBAAkB,oBAClB,cAAa,GACb,aAAAK,EACA,SAAAN,EAAA,CAAoB,CAEpC,CACF,CACF,CACF,CAEJ,CACF,EACA,gBAAC,MAAG,CAAC,GAAI,EAAG,MAAO,CAAE,UAAW,EAAG,GAAIqC,EAAe,gBAACA,EAAA,IAAa,EAAK,IAAK,CAChF,CACF,CAEJ,EAEAR,GAAU,aAAe,CACvB,OAAQ,GACR,MAAOD,GACP,SAAU,KACV,iBAAkB,CAAC,CACrB,EAEA,SAAeC,G,qBCnMf,MAAM,GAA+B,CACnC,GAAI,KACJ,MAAO,GACP,KAAM,GACN,YAAa,GACb,OAAQ,CAAE,KAAM,MAAO,CACzB,EAkFA,GAtEoB,CAAC,CAAE,MAAArC,EAAO,MAAAqD,EAAO,SAAAnD,EAAU,iBAAAqC,CAAiB,IAAa,CAC3E,KAAM,CAACD,EAAMgB,CAAO,EAAI,WAAuB,IAAI,EAC7CC,KAAevB,GAAA,GAAkB,mBAAmB,EAEpDwB,EAAU,UAAc,IAC5BD,EAAa,OAAO,CAAChC,EAAUQ,KAC7BR,EAAIQ,EAAO,IAAI,EAAIA,EAEZR,GACN,CAAC,CAAC,EACJ,CAACgC,CAAY,CAAC,EAEXE,EAAa,UAAc,IAC/B,OAAO,OAAOJ,CAAK,EAChB,IAAKK,IAAuB,CAAE,MAAOA,EAAO,KAAM,MAAOF,EAAQE,EAAO,IAAI,EAAE,WAAY,EAAE,EAC5F,KAAK,CAACC,EAAyBC,OAA4B,MAAYD,EAAE,MAAM,YAAY,EAAGC,EAAE,MAAM,YAAY,CAAC,CAAC,EACtH,CAACP,EAAOG,CAAO,CAAC,EAEbzH,EAAQ,UAAc,IAAM,CA/DpC,MAgEI,OAAIuG,EACK,CACL,GAAG,GACH,OAAQ,CAAE,IAAG,EAAAe,EAAMf,CAAI,IAAV,cAAa,cAAe,CAC3C,EAGK,IACT,EAAG,CAACA,EAAMe,CAAK,CAAC,EAEVQ,EAAgBC,GAAyB,CAC7CR,EAAQQ,CAAY,CACtB,EAEA,OACE,gCACE,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,EAAG,UAAU,wBACpB,gBAAC,SAAM,GAAG,oBACH,MAAM,aACN,SAAQ,GACR,UAAS,GACT,KAAK,kCACL,eAAe,WACf,iBAAiB,YACtB,gBAAC,MAAO,YAAY,oBACZ,UAAW,GACX,QAASL,EACT,UAAU,QACV,SAAUI,EACV,MAAOvB,CAAA,CAAM,CACvB,CACF,CACF,EACCvG,GACC,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,IACP,gBAAC,IAAU,MAAAA,EACA,KAAAuG,EACA,MAAM,kBACN,OAAM,GACN,MAAAtC,EACA,iBAAAuC,EACA,SAAArC,CAAA,CAAoB,CACjC,CACF,CAEJ,CAEJ,ECpFM6D,GAAc,CAAC,CAAE,OAAA7G,CAAO,IAAa,CACzC,KAAM,CAAC,CAAE,CAAE,MAAA7E,EAAO,QAAAsI,EAAS,MAAAqD,CAAM,EAAG,CAAE,WAAAC,EAAY,SAAAC,CAAS,CAAC,KAAI,YAAS,UAAU,EAC7EC,EAAejH,EAAO,IAAKnB,IAAW,CAAE,MAAOA,EAAM,GAAI,MAAO,GAAGA,EAAM,KAAK,KAAKA,EAAM,IAAI,GAAI,EAAE,EAAE,KAAK,CAAC4H,EAAG,OAAM,MAAYA,EAAE,MAAM,YAAY,EAAG,EAAE,MAAM,YAAY,CAAC,CAAC,EAE7KS,EAAezD,EAAUqD,EAAQ,GAEvC,OACE,gBAAC,gBACC,gBAAC,SAAM,GAAG,eACH,MAAM,QACN,SAAQ,GACR,UAAS,GACT,QAASI,EAAe,QAAU,OAClC,KAAMA,GAAgB,2BACtB,eAAe,WACf,iBAAiB,YACtB,gBAAC,MAAO,YAAY,iBACZ,UAAW,GACX,QAASD,EACT,UAAU,QACV,OAAQ,IAAMF,EAAW,EAAI,EAC7B,SAAUC,EACV,MAAA7L,CAAA,CAAc,CACxB,CACF,CAEJ,EAEA0L,GAAY,UAAY,CACtB,OAAQ,SACV,EAEAA,GAAY,aAAe,CACzB,OAAQ,CAAC,CACX,EAEA,SAAeA,G,4DCFf,SAtCwB,KAAiB,CAEvC,YAAa,kBAGb,UAAW,CACT,SAAU,cAAoB,CAC5B,YAAkB,QAAc,EAChC,QACF,CAAC,CACH,EAEA,OAAQ,CAAC,aAAeM,EAAA,CAAsB,CAAC,EAE/C,iBAAkB,CAChB,MAAO,CACL,SAAU,IACZ,CACF,EAEA,mBAAoB,CAElB,IAAyB,gBAAgB,EAAG,IAAO,IAAI,CACzD,EAEA,QAAS,CACP,GAAI,CAAC,KAAK,MAAM,OACd,OAAO,gBAAC,KAAO,IAAC,EAGlB,MAAMC,EAAoB,WAAe,IAAI,KAAK,MAAM,SACrDC,GAAU,eAAmBA,EAC5B,CAAE,OAAQ,KAAK,MAAM,OAAQ,WAAY,KAAK,MAAM,UAAW,CAAC,CAAC,EAErE,OAAO,gBAAC,WAAKD,CAAkB,CACjC,CACF,CAAC,E,oBC7BD,MAAM,MAAU,WAAO,eAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EA2EpC,GA/D8B,CAAC,CAAE,QAAA7G,EAAS,MAAAuG,EAAQ,IAAK,IAAa,CAClE,MAAM7H,KAAUC,GAAA,GAAW,EACrB,CAAE,wBAAAG,EAAyB,iBAAAC,CAAiB,KAAIC,EAAA,GAAoBgB,CAAO,EAC3EpB,KAAgBC,GAAA,GAAiB,EAEjC,CAAE,KAAMkI,EAAa,MAAOC,EAAc,YAAaC,EAAoB,GAAIC,CAAU,EAAIlH,EAE7FmH,EAAU,cAAkB,IAAM,CACtCzI,EAAQ,KAAKS,EAAA,GAAO,OAAO,aAAa,cAAc,KAAK4H,CAAW,CAAC,CACzE,EAAG,CAACrI,EAASqI,CAAW,CAAC,EAEnBK,EAAY,cAAkB,IAAM,CACxCxI,EAAc,IAAqB,IAAI,qBAAsB,CAC3D,aAAc,MACd,YAAa,kBACf,CAAC,EAGG,OAAO,QAAQ,iDAAiDoI,CAAY,IAAI,GAClF,IAA+B,OAAOhH,EAAQ,EAAE,EAAE,KAAK,IAAM,CAC3D,IAA+B,WAAW,CAC5C,CAAC,CAEL,EAAG,CAACgH,EAAchH,EAAQ,GAAIpB,CAAa,CAAC,EAE5C,OACE,gBAAC,aACC,gBAAC,UACC,gBAAC,UACE2H,GAAS,gBAAC,GAAY,CAAC,UAAWA,EAAO,MAAM,uBAAuB,UAAU,OAAQ,GACzF,gBAAC,IAAI,CAAC,GAAIpH,EAAA,GAAO,OAAO,aAAa,cAAc,KAAK4H,CAAW,GAAIC,CAAa,CACtF,EACA,gBAAC,UAAIC,CAAmB,EACxB,gBAAC,UAAIF,CAAY,EACjB,gBAAC,UACC,gBAAC,MAAe,CAAC,KAAM,gCAAgCG,CAAS,aAC9D,gBAAC,MAAW,CAAC,OAAO,WAAY,EAClC,CACF,EACA,gBAAC,UACEpI,EAA0B,gBAAC,KAAO,IAAC,EAAKC,EAAiB,YACxD,gBAAC,GAAO,KACN,gBAAC,UAAO,OAAO,SACP,QAASoI,EACT,KAAK,SACL,KAAK,QAAO,MAEpB,EACA,gBAAC,UAAO,OAAO,SACP,QAAQ,SACR,QAASC,EACT,KAAK,SACL,KAAK,UAAS,QAEtB,CACF,CAEJ,CACF,CACF,CAEJ,ECpEM,GAAkB,UAAO;AAAA;AAAA,EAIzB,GAAmB,IACvB,gBAAC,WAAQ,GAAG,oBACH,UAAW,EAAO,YAClB,MAAM,sBACb,gBAAC,SAAE,gBAAC,cAAO,yBAAuB,CAAS,EAC3C,gBAAC,QAAK,CAAC,UAAS,IACd,gBAAC,aACC,gBAAC,UACC,gBAAC,UAAG,OAAK,EACT,gBAAC,UAAG,aAAW,CACjB,CACF,EACA,gBAAC,aACC,gBAAC,UACC,gBAAC,UAAG,IAAE,EACN,gBAAC,UAAG,iBAAe,CACrB,EACA,gBAAC,UACC,gBAAC,UAAG,OAAK,EACT,gBAAC,UAAG,+BAA6B,CACnC,EACA,gBAAC,UACC,gBAAC,UAAG,MAAI,EACR,gBAAC,UAAG,wCAAsC,CAC5C,EACA,gBAAC,UACC,gBAAC,UAAG,aAAW,EACf,gBAAC,UAAG,iCAA+B,CACrC,CACF,CACF,EACA,gBAAC,SAAE,gBAAC,cAAO,SAAO,CAAS,EAC3B,gBAAC,SAAE,8CAC0C,gBAAC,SAAG,EAC/C,gBAAC,WAAI,YAAU,EAAM,gBAAC,SAAG,EACzB,gBAAC,WAAI,UAAQ,CACf,EACA,gBAAC,SAAE,sDACkD,gBAAC,YAAK,OAAK,EAAO,UAAO,gBAAC,SAAG,EAChF,gBAAC,WAAI,OAAK,EAAM,IAAC,gBAAC,SAAG,EAAE,iBAAc,gBAAC,SAAG,EACzC,gBAAC,WAAI,aAAW,CAClB,CACF,EAGI,GACJ,gBAAC,KAAc,CAAC,QAAQ,QAAQ,UAAS,GAAC,UAAU,QAAQ,QAAS,GAAiB,GACpF,gBAAC,UAAO,QAAQ,OACR,UAAW,EAAO,kBACxB,gBAAC,KAAI,CAAC,KAAK,kBAAkB,WAAU,GAAC,CAC1C,CACF,EAGI,GAAY,CAAC,CAAE,MAAAlH,CAAM,IACzB,gBAAC,aACC,gBAAC,UACC,gBAAC,MAAG,QAAS,GACVA,EACG,gBAAC,KAAc,KAAC,sCAAyCA,EAAM,GAAM,EACrE,gBAAC,KAAe,KAAC,oCAAkC,CACzD,CACF,CACF,EAGI,GAAU,CAAC,CACf,aAAAR,EACA,MAAAQ,EACA,OAAAxC,CACF,IAIOgC,EAAa,OAAS,EAEzB,gCACGA,EAAa,IAAKhE,GACjB,gBAAC,IAAsB,IAAKA,EAAY,GACjB,QAASA,EACT,MAAOgC,EAAOhC,EAAY,IAAI,EAAG,CACzD,CACH,EAEA,gBAAC,GAAS,CAAC,MAAAwE,CAAA,CAAc,EAUvBmH,GAAuB,CAAC,CAAE,aAAA3H,EAAc,WAAAY,EAAY,YAAAX,EAAa,yBAAAY,CAAyB,IAAa,CAC3G,KAAM,CAACC,EAASC,CAAU,EAAI,WAAe,EAAK,EAC5C,CAACC,EAAiBC,CAAkB,EAAI,WAAe,CAC3D,YAAaJ,EAAyB,MAAQ,EAC9C,gBAAiBA,EAAyB,UAAY,GACtD,aAAcD,EAAW,MAAQ,UAAUA,EAAW,KAAK,EAAI,GAC/D,UAAWC,EAAyB,UACpC,cAAeA,EAAyB,aAC1C,CAAC,EAED,YAAgB,IAAM,CACpB,KAAM,CAAE,YAAAK,EAAa,gBAAAC,EAAiB,aAAAC,CAAa,EAAIJ,EAEvD,IAA+B,gBAAgBE,EAAaC,EAAiBC,CAAY,EACtF,KAAK,IAAML,EAAW,EAAK,CAAC,CACjC,EAAG,CAACC,CAAe,CAAC,EAEpB,MAAMK,EAAe,cAAkB,CAACC,EAAiBC,IAAuB,CAC9EN,EAAmB,CAAE,GAAGD,EAAiB,YAAaM,EAAS,gBAAiBC,CAAW,CAAC,CAC9F,EAAG,CAACP,CAAe,CAAC,EAEdQ,EAAW,cAAmBhB,GAAkB,CACpDQ,EAAgB,UAAU,EAC1BA,EAAgB,cAAc,CAAE,KAAM,EAAG,SAAUA,EAAgB,eAAgB,CAAC,EACpFC,EAAmB,CAAE,GAAGD,EAAiB,YAAa,EAAG,aAAcR,CAAM,CAAC,CAChF,EAAG,CAACQ,CAAe,CAAC,EAEdS,EAAU,cAAkB,IAAM,CACtCT,EAAgB,UAAU,EAC1BA,EAAgB,cAAc,CAAE,KAAM,EAAG,SAAUA,EAAgB,eAAgB,CAAC,EACpFC,EAAmB,CAAE,GAAGD,EAAiB,YAAa,EAAG,aAAc,EAAG,CAAC,CAC7E,EAAG,CAACA,CAAe,CAAC,EAEpB,OACE,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,IACP,gBAAC,MAAG,MAAO,CAAE,aAAc,EAAG,GAAG,mCACC,gBAAC,aAAOJ,EAAW,MAAM,QAAM,CACjE,EACA,gBAAC,MAAc,WAAYI,EAAgB,YAC5B,SAAUA,EAAgB,gBAC1B,SAAUK,EACV,WAAYT,EAAW,OACpC,gBAAC,KAAU,CAAC,SAAAY,EAAoB,QAAAC,EAAkB,mBAAkB,GAAsB,EAC1F,gBAAC,GAAe,KACd,gBAAC,QAAK,CAAC,UAAS,GAAC,MAAK,GAAC,UAAW,EAAO,eACvC,gBAAC,aACC,gBAAC,UACC,gBAAC,MAAG,UAAW,EAAO,UAAU,OAAK,EACrC,gBAAC,MAAG,UAAW,EAAO,gBAAgB,aAAW,EACjD,gBAAC,MAAG,UAAW,EAAO,SAAS,MAAI,EACnC,gBAAC,UAAG,YAAU,EACd,gBAAC,MAAG,UAAW,EAAO,YAAY,SAAO,CAC3C,CACF,EACCX,EAAU,gBAAC,KAAO,CAAC,KAAK,uBAAwB,GAC/C,gBAAC,IAAQ,aAAAd,EACA,MAAOgB,EAAgB,aACvB,OAAQf,EAAY,aAAc,CAE/C,CACF,CACF,CACF,CACF,CAEJ,EAEA,MAAeyB,GAAA,GAA6BiG,EAAoB,E,qBCnKhE,SAtB2C,UAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EC6FlD,GA7EoB,CAAC,CAAE,YAAA3L,CAAY,IAAa,CAC9C,KAAM,CAAC+F,EAAWC,CAAY,EAAI,WAAe,EAAE,EAC7C,CAACC,EAAcC,CAAe,EAAI,WAAe,IAAI,EACrD,CAAE,wBAAA9C,EAAyB,iBAAAC,CAAiB,KAAIC,EAAA,GAAoBtD,CAAW,EAE/E4L,EAAavF,GAAgC,CACjDL,KAAa,OAAkBK,EAAM,MAAM,CAAC,CAC9C,EAEMwF,EAAcxF,GAAgC,CAClDA,EAAM,eAAe,EAErB,IAA+B,OAAOrG,EAAY,KAAM+F,CAAS,EAAE,KAAM3H,GAAiC,CACxG8H,EAAgB9H,CAAM,CACxB,CAAC,CACH,EAEMwK,KAASC,GAAA,GAAkB,qBAAqB,EAAE,KAAMW,GAA0B,CAnD1F,MAmD6F,OAAAA,EAAE,SAAS,EAAAxJ,EAAY,SAAZ,cAAoB,MAAI,EAE9H,GAAI,CAAC4I,EACH,OAAO,gBAAC,SAAE,6BAA2B5I,EAAY,OAAO,KAAK,0BAAwB,EAGvF,KAAM,CAAE,MAAOsL,EAAc,YAAaC,EAAoB,KAAMF,CAAY,EAAIrL,EAC9E8L,EAAUlD,EAAO,iBAEvB,OACE,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,UACE0C,EACA,IACD,gBAAC,aAAM,IAAE1C,EAAO,YAAY,GAAC,CAC/B,EACA,gBAAC,GAAkC,KACjC,gBAAC,UACC,gBAAC,UAAG,aAAW,EACf,gBAAC,UAAI2C,GAAsB,gBAAC,UAAG,iBAAe,CAAM,CACtD,CACF,EACA,gBAAC,UAAG,eAAa,EACjB,gBAAC,GAAkC,KAChC,gBAAoBO,EAAS,CAAE,YAAA9L,CAAyB,CAAC,CAC5D,EACE,CAACoD,IAA2BC,GAAA,YAAAA,EAAkB,aAC9C,gBAAC,IAAa,CAAC,GAAII,EAAA,GAAO,OAAO,aAAa,cAAc,KAAK4H,CAAW,GAC1E,gBAAC,SAAM,CAAC,QAAQ,UAAU,KAAK,SAAS,KAAK,QAAO,MAAI,CAC1D,CAEJ,EACA,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,UAAG,aAAW,EACf,gBAAC,SAAE,yFAAuF,EAC1F,gBAAC,QAAK,SAAUQ,CAAA,EACd,gBAAC,gBACC,gBAAC,SAAM,KAAK,OACL,GAAG,MACH,KAAK,MACL,MAAM,MACN,SAAQ,GACR,SAAUD,EACV,KAAK,8BACL,MAAO7F,CAAA,CAAW,EACzB,gBAAC,SAAM,CAAC,KAAK,SAAS,QAAQ,WAAU,SAAO,CACjD,CACF,EACCE,GACC,gBAAC,WACC,gBAAC,UAAG,eAAa,EACjB,gBAAC,WAAK,KAAK,UAAUA,EAAc,KAAM,CAAC,CAAE,CAC9C,CAEJ,CACF,CAEJ,E,kOC9EA,MAAM8F,WAAwB,WAAgB,CAkC5C,YAAY5N,EAAO,CACjB,MAAMA,CAAK,EAlCb,+BAEA,iBAoEA,qBAAe6B,GAAgB,CAC7B,KAAK,SAAS,KAAK,cAAcA,CAAW,CAAC,CAC/C,CAAC,EAED,uBAAiBA,GAAgB,CAC/B,MAAMsE,EAAU/E,EAAA,EAAY,MAAMS,CAAW,EACvC,CAAE,OAAA8G,CAAO,EAAI,KAAK,MAExB,MAAO,CAGL,oBAAqBA,EACrB,eAAgB,GAChB,YAAa,CACX,GAAIxC,EAAQ,GACZ,MAAOA,EAAQ,MACf,YAAaA,EAAQ,YACrB,KAAMA,EAAQ,KACd,yBAA0BA,EAAQ,yBAClC,iBAAkBA,EAAQ,iBAC1B,sBAAuBA,EAAQ,sBAC/B,OAAQA,EAAQ,MAClB,CACF,CACF,CAAC,EAED,qBAAc,IAAM,CACd,KAAK,uBAAyB,SAChC,aAAa,KAAK,oBAAoB,EACtC,KAAK,qBAAuB,OAEhC,CAAC,EAED,4BAAsB0H,GAAe,CACnC,KAAK,SAAS,CAAE,eAAgBA,CAAW,CAAC,CAC9C,CAAC,EAED,mBAAa1H,GAAY,CACvB,KAAM,CAAE,SAAAyC,CAAS,EAAI,KAAK,MAG1B,KAAK,YAAY,EAEbA,IACF,KAAK,qBAAuB,WAAW,IAAMA,EAASzC,CAAO,EAAG,GAAG,EAEvE,CAAC,EAED,mBAAa+B,GAAU,CACrB,KAAM,CAAE,YAAa4F,CAAiB,EAAI,KAAK,MACzCjM,EAAcT,EAAA,EAAY,MAAM0M,CAAgB,EAEtDjM,EAAYqG,EAAM,OAAO,IAAI,KAAI,OAAkBA,EAAM,MAAM,EAC/D,GAAI,CAAE,oBAAA6F,CAAoB,EAAI,KAAK,MAE/BA,GAAuB7F,EAAM,OAAO,OAAS,UAE/CrG,EAAY,KAAO,KAAK,eAAeA,EAAY,KAAK,GAGtDqG,EAAM,OAAO,OAAS,SAExB6F,EAAsB,IAGxB,KAAK,UAAUlM,CAAW,EAC1B,KAAK,SAAS,CAAE,YAAAA,EAA0B,oBAAAkM,CAAyC,CAAC,CACtF,CAAC,EAED,yBAAmB7F,GAAU,CAC3B,KAAM,CAAE,YAAa4F,CAAiB,EAAI,KAAK,MACzCjM,EAAcT,EAAA,EAAY,MAAM0M,CAAgB,EAEtDjM,EAAY,OAAOqG,EAAM,OAAO,IAAI,KAAI,OAAkBA,EAAM,MAAM,EACtE,KAAK,UAAUrG,CAAW,EAC1B,KAAK,SAAS,CAAE,YAAAA,CAAyB,CAAC,CAC5C,CAAC,EAED,uBAAiBV,GAAc,CAC7B,KAAM,CAAE,YAAa2M,CAAiB,EAAI,KAAK,MACzCjM,EAAcT,EAAA,EAAY,MAAM0M,CAAgB,EAEtDjM,EAAY,OAASV,EACrB,KAAK,UAAUU,CAAW,EAC1B,KAAK,SAAS,CAAE,YAAAA,CAAyB,CAAC,CAC5C,CAAC,EAED,8BAAuB,CAACd,EAAOC,EAAMC,IAAY,CAC/C,KAAK,sBAAsBF,EAAOC,EAAMC,EAAS,kBAAkB,CACrE,CAAC,EAED,+BAAwB,CAACF,EAAOC,EAAMC,EAASiB,IAAgB,CAC7D,KAAM,CAAE,YAAa4L,CAAiB,EAAI,KAAK,MACzCjM,EAAcT,EAAA,EAAY,MAAM0M,CAAgB,EAElD7M,GAAWF,GACbc,EAAYK,CAAW,EAAIjB,GAAWF,EAAQA,EAAQ,KACtDc,EAAY,GAAGK,CAAW,UAAU,EAAIjB,IAExCY,EAAYK,CAAW,EAAI,KAC3BL,EAAY,GAAGK,CAAW,UAAU,EAAI,IAG1CL,EAAY,GAAGK,CAAW,OAAO,EAAIjB,EAAUD,EAAO,KACtD,KAAK,UAAUa,CAAW,EAC1B,KAAK,SAAS,CAAE,YAAAA,CAAyB,CAAC,CAC5C,CAAC,EAED,eAASqG,GAAU,CAlNrB,MAmNQA,GACFA,EAAM,eAAe,EAGvB,KAAM,CAAE,YAAArG,CAAY,EAAI,KAAK,MACvB,CAAE,OAAA8G,EAAQ,MAAAD,EAAO,cAAA3D,CAAc,EAAI,KAAK,MAE9CA,EAAc,IAAqB,IAAI4D,EAAS,uBAAyB,sBAAsB,EAAG,CAChG,aAAc,MACd,YAAa,mBACb,cAAe,CACb,MAAM,EAAA9G,GAAA,YAAAA,EAAa,SAAb,cAAqB,IAC7B,CACF,CAAC,EAED,IAAIkH,EAEAJ,EACFI,EAAU,IAA+B,OAAOlH,CAAW,EAE3DkH,EAAU,IAA+B,OAAOlH,CAAW,EAG7DkH,EAAQ,KAAK,IAAM,CACjBL,EAAM,CACR,CAAC,CACH,CAAC,EAGD,wBAAkB/I,GACTA,EAAM,KAAK,EAAE,QAAQ,OAAQ,GAAG,EAAE,kBAAkB,CAC5D,EAED,0BAAoBqO,GAAc,CAChC,KAAM,CAAE,iBAAA/C,CAAiB,EAAI,KAAK,MAElC,OAAIA,EAAiB+C,CAAS,EACrB,QAGF,IACT,CAAC,EAED,4BAAqB,CAACA,EAAWC,IAAgB,CAC/C,KAAM,CAAE,iBAAAhD,CAAiB,EAAI,KAAK,MAElC,OAAIA,EAAiB+C,CAAS,EAE1B,gBAAC,WACC,gBAAC,YAAMC,CAAY,EAAO,OAE1B,gBAAC,YAAK,gBAAC,SAAGhD,EAAiB+C,CAAS,EAAE,CAAC,CAAE,CAAI,CAC/C,EAIG,gBAAC,YAAMC,CAAY,CAC5B,CAAC,EAGD,sBAAe,CAACtO,EAAOiL,EAAUjC,IAAW,CAC1C,MAAMkC,EAAUlC,EAAS,KAAO,KAEhC,OAAO,gBAACkC,EAAA,KAASlL,EAAM,IAAC,gBAAC,aAAM,IAAEiL,EAAS,GAAC,CAAQ,CACrD,CAAC,EA/MC,KAAK,MAAQ,KAAK,cAAc5K,EAAM,WAAW,CACnD,CAEA,mBAAoB,CAClB,KAAK,OAAO,gBAAgB,EAAE,MAAM,EACpC,KAAM,CAAE,OAAA2I,EAAQ,YAAA9G,CAAY,EAAI,KAAK,MAEhC8G,GAEH,KAAK,UAAU9G,CAAW,CAE9B,CAEA,mBAAmBqM,EAAW,CAC5B,KAAM,CAAE,KAAMC,CAAY,EAAI,KAAK,MAE/BD,EAAU,OAASC,GACrB,KAAK,OAAO,gBAAgB,EAAE,MAAM,EAGtC,KAAM,CAAE,YAAAtM,CAAY,EAAI,KAAK,MAEzB,KAAQA,EAAaqM,EAAU,WAAW,GAK9C,KAAK,YAAYrM,CAAW,CAC9B,CAEA,sBAAuB,CACrB,KAAK,YAAY,CACnB,CAiLA,QAAS,CACP,KAAM,CAAE,YAAAA,EAAa,eAAAuM,CAAe,EAAI,KAAK,MACvC,CAAE,OAAAzF,EAAQ,KAAAqC,EAAM,MAAArL,EAAO,QAAAkF,CAAQ,EAAI,KAAK,MAGxC4F,EAFiB,IAAY,QAAQ,qBAAqB,EAElC,OAAQY,GAAMA,EAAE,OAASL,CAAI,EACrD9B,EAAW,IAAMrE,EAAQ,KAAKS,EAAA,GAAO,OAAO,aAAa,cAAc,QAAQ,EACrF,IAAIkG,EAAiB,KACjB6C,EAAyB,KACzBC,EAAoBzM,EAAY,OAAO,KAE3C,GAAI4I,GAAUA,EAAO,OAAS,EAAG,CAC/B,MAAMY,EAAIZ,EAAO,CAAC,EAElB6D,EAAoBjD,EAAE,YAEtBG,EAAiB,gBAAoBH,EAAE,cAAe,CACpD,OAAQxJ,EAAY,OACpB,gBAAiB,KAAK,gBACtB,aAAc,KAAK,cACnB,kBAAmB,KAAK,mBACxB,gBAAiB,KAAK,iBACtB,yBAA0B,KAAK,kBACjC,CAAC,EAEGwJ,EAAE,yBACJgD,EAAyB,gBAAoBhD,EAAE,uBAAwB,CACrE,cAAexJ,EAAY,EAC7B,CAAC,EAEL,CAEA,IAAI0M,EAAsB,KACtBC,EAAe,EAGnB,OAAIH,IACFG,EAAe,EAEfD,EACE,gBAAC,MAAG,CAAC,GAAIC,CAAA,EACNH,CACH,GAKF,gCACE,gBAAC,SACE,KAAK,aAAa1O,EAAO2O,EAAmB3F,CAAM,CACrD,EACA,gBAAC,MAAG,KACF,gBAAC,MAAG,CAAC,GAAI6F,CAAA,EACP,gBAAC,QAAK,UAAU,uBAAuB,SAAU,KAAK,OACpD,gBAAC,gBACC,gBAAC,SAAM,KAAK,OACL,GAAG,QACH,KAAK,QACL,MAAM,QACN,UAAS,GACT,SAAQ,GACR,SAAU,KAAK,UACf,KAAK,uCACL,MAAO3M,EAAY,MACnB,eAAe,WACf,IAAM6B,GAAQ,CAAE,KAAK,OAASA,CAAK,EACnC,iBAAiB,WAAW,EAEnC,gBAAC,SAAM,KAAK,OACL,GAAG,cACH,KAAK,cACL,MAAM,cACN,SAAU,KAAK,UACf,KAAK,4BACL,MAAO7B,EAAY,YACnB,eAAe,WACf,iBAAiB,WAAW,EAEnC,gBAAC,SAAM,KAAK,OACL,GAAG,OACH,KAAK,OACL,MAAM,OACN,SAAQ,GACR,SAAU,KAAK,UACf,KAAM,KAAK,mBAAmB,OAC5B,4EAA4E,EAC9E,MAAOA,EAAY,KACnB,eAAe,WACf,iBAAiB,WACjB,QAAS,KAAK,iBAAiB,MAAM,EAAG,EAE/C,gBAAC,MAAc,MAAM,mBACN,KAAK,gGACL,OAAQ,KAAK,qBACb,MAAOA,EAAY,iBACnB,KAAMA,EAAY,uBAAyB,UAC3C,MAAO,CAAC,eAAgB,UAAW,UAAW,QAAS,MAAM,EAC7D,QAASA,EAAY,yBACrB,eAAe,WACf,iBAAiB,WAAW,CAC7C,EACC2J,EACD,gBAAC,gBACC,gBAAC,MAAG,KACF,gBAAC,MAAG,CAAC,SAAU,EAAG,GAAI,GACpB,gBAAC,MAAW,iBAAkB7C,EAAS,iBAAmB,iBAC9C,eAAgByF,EAChB,SAAAlF,CAAA,CAAoB,CAClC,CACF,CACF,CACF,CACF,EACCqF,CACH,CACF,CAEJ,CACF,CAvWE,EALIX,GAKG,YAAY,CACjB,KAAM,WAAiB,WACvB,MAAO,WAAiB,WACxB,MAAO,SAAe,WACtB,OAAQ,SACR,YAAa,WACb,SAAU,SACV,iBAAkB,WAClB,cAAe,SACf,QAAS,WAAiB,UAC5B,CAAC,EAED,EAjBIA,GAiBG,eAAe,CACpB,OAAQ,GACR,YAAa,CACX,GAAI,OACJ,MAAO,GACP,YAAa,GACb,KAAM,GACN,yBAA0B,GAC1B,iBAAkB,KAClB,sBAAuB,KACvB,OAAQ,CAAC,CACX,EACA,SAAU,KACV,iBAAkB,CAAC,EACnB,cAAe,IAAM,CAAC,CACxB,CAAC,EA8UH,YAAea,GAAA,MAAcC,GAAA,GAAYd,EAAe,CAAC,E,qKCnXzD,MAAMe,WAA0B,WAAgB,CAa9C,YAAY3O,EAAO,CACjB,MAAMA,CAAK,EAQb,wBAAiB4O,GAAgB,CAC/B,KAAM,CAAE,MAAA7C,CAAM,EAAI,KAAK,MAEvB,KAAK,SAAS,CACZ,KAAM6C,EACN,YAAa,CACX,GAAI,KACJ,MAAO,GACP,KAAM,GACN,YAAa,GACb,OAAQxN,EAAA,EAAY,MAAM2K,EAAM6C,CAAW,EAAE,cAAc,CAC7D,CACF,CAAC,CACH,CAAC,EAnBC,KAAK,MAAQ,CACX,YAAa,OACb,KAAM,MACR,CACF,CAiBA,QAAS,CACP,KAAM,CACJ,MAAA7C,EACA,SAAAnD,EACA,iBAAAqC,EACA,MAAAvC,CACF,EAAI,KAAK,MACH,CAAE,KAAAsC,EAAM,YAAAnJ,CAAY,EAAI,KAAK,MAC7BgN,EAAiB,CAAC,EAExB,IAAY,QAAQ,qBAAqB,EAAE,QAASxD,GAAM,CACxDwD,EAAexD,EAAE,IAAI,EAAIA,CAC3B,CAAC,EAED,MAAMyD,EAAiB,OAAO,KAAK/C,CAAK,EAAE,IAAKgD,GAAQ,CACrD,MAAMC,EAAWjD,EAAMgD,CAAG,EAE1B,OAAIF,EAAeG,EAAS,IAAI,IAAM,QAEpC,QAAQ,MAAM,0CAA0CA,EAAS,IAAI,0CAA0C,EAExG,CAAE,MAAOA,EAAS,KAAM,SAAU,GAAM,MAAO,GAAGA,EAAS,IAAI,8BAA+B,GAGhG,CAAE,MAAOA,EAAS,KAAM,MAAOH,EAAeG,EAAS,IAAI,EAAE,WAAY,CAClF,CAAC,EAAE,KAAK,CAAC3C,EAAGC,OAAM,MAAYD,EAAE,MAAM,YAAY,EAAGC,EAAE,MAAM,YAAY,CAAC,CAAC,EAE3E,OACE,gBAAC,WACC,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,GACP,gBAAC,QAAK,UAAU,uBAAuB,SAAU,IAAM,CAAC,GACtD,gBAAC,SAAM,GAAG,2BACH,MAAM,oBACN,SAAQ,GACR,UAAS,GACT,KAAK,yCACL,eAAe,WACf,iBAAiB,YACtB,gBAAC,MAAO,YAAY,2BACZ,UAAW,GACX,QAASwC,EACT,UAAU,QACV,SAAU,KAAK,cACf,MAAO,KAAM,CACvB,CACF,CACF,CACF,EACCjN,GACD,gBAAC,MAAG,CAAC,UAAU,WACb,gBAAC,MAAG,CAAC,GAAI,IACP,gBAAC,IAAgB,YAAAA,EACA,KAAAmJ,EACA,OAAM,GACN,MAAM,oBACN,SAAApC,EACA,iBAAAqC,EACA,MAAAvC,CAAA,CAAc,CACjC,CACF,CAEF,CAEJ,CACF,CArGE,GADIiG,GACG,YAAY,CACjB,MAAO,SAAe,WACtB,MAAO,WAAiB,WACxB,SAAU,SACV,iBAAkB,UACpB,CAAC,EAED,GARIA,GAQG,eAAe,CACpB,SAAU,KACV,iBAAkB,CAAC,CACrB,CAAC,EA6FH,SAAeA,GCrGTM,GAAoB,CAAC,CACzB,aAAApJ,CACF,IAAa,CACX,KAAM,CAAC,CAAE,CAAE,MAAA9E,EAAO,QAAAsI,EAAS,MAAAqD,CAAM,EAAG,CAAE,WAAAC,EAAY,SAAAC,CAAS,CAAC,KAAI,YAAS,iBAAiB,EACpFkC,EAAiBjJ,EAAa,IAAKM,IAAiC,CAAE,MAAOA,EAAQ,GAAI,MAAO,GAAGA,EAAQ,KAAK,KAAKA,EAAQ,IAAI,GAAI,EAAE,EAAE,KAAK,CAACkG,EAAG,OAAM,MAAYA,EAAE,MAAM,YAAY,EAAG,EAAE,MAAM,YAAY,CAAC,CAAC,EAEjNS,EAAezD,EAAUqD,EAAQ,GAEvC,OACE,gBAAC,gBACC,gBAAC,SAAM,GAAG,sBACH,MAAM,eACN,SAAQ,GACR,UAAS,GACT,QAASI,EAAe,QAAU,OAClC,KAAMA,GAAgB,kCACtB,eAAe,WACf,iBAAiB,YACtB,gBAAC,MAAO,YAAY,wBACZ,UAAW,GACX,QAASgC,EACT,UAAU,QACV,OAAQ,IAAMnC,EAAW,EAAI,EAC7B,SAAUC,EACV,MAAA7L,CAAA,CAAc,CACxB,CACF,CAEJ,EAEAkO,GAAkB,UAAY,CAC5B,aAAc,SAChB,EAEAA,GAAkB,aAAe,CAC/B,aAAc,CAAC,CACjB,EAEA,SAAeA,GCPf,GApC8B,KAAiB,CAC7C,YAAa,wBAEb,UAAW,CACT,SAAU,cAAoB,CAC5B,YAAkB,QAAc,EAChC,QACF,CAAC,CACH,EAEA,OAAQ,CAAC,aAAeC,EAAA,CAA4B,CAAC,EAErD,iBAAkB,CAChB,MAAO,CACL,SAAU,IACZ,CACF,EAEA,mBAAoB,CAElB,IAA+B,gBAAgB,EAAG,IAAO,IAAI,CAC/D,EAEA,QAAS,CACP,GAAI,CAAC,KAAK,MAAM,aACd,OAAO,gBAAC,KAAO,IAAC,EAGlB,MAAMlC,EAAoB,WAAe,IAAI,KAAK,MAAM,SACrDC,GAAU,eAAmBA,EAC5B,CAAE,aAAc,KAAK,MAAM,aAAc,WAAY,KAAK,MAAM,UAAW,CAAC,CAAC,EAEjF,OAAO,gBAAC,WAAKD,CAAkB,CACjC,CACF,CAAC,E,qBC/CG,GAAU,CAAC,EAEf,GAAQ,kBAAoB,KAC5B,GAAQ,cAAgB,KAElB,GAAQ,OAAS,UAAc,KAAM,MAAM,EAEjD,GAAQ,OAAS,KACjB,GAAQ,mBAAqB,KAE7B,IAAI,GAAS,KAAI,KAAS,EAAO,EAK1B,SAAe,MAAW,KAAQ,OAAS,KAAQ,OAAS,OCqBnE,GAlBqB,CAAC,CAAE,UAAAmC,EAAW,MAAAxP,EAAQ,QAAS,UAAAyP,EAAY,QAAS,IAAa,CACpF,MAAMC,EACJ,gBAAC,WAAQ,GAAG,gBACH,MAAA1P,EACA,UAAW,GAAO,SACxBwP,CACH,EAGF,OACE,gBAAC,KAAc,CAAC,QAAS,CAAC,QAAS,OAAO,EAAG,UAAAC,EAAsB,QAAAC,CAAA,EACjE,gBAAC,QAAK,UAAW,GAAO,SACtB,gBAAC,KAAI,CAAC,KAAK,uBAAuB,UAAU,aAAc,EAC5D,CACF,CAEJ,C,0HCTA,SAASC,GAAwB,CAC/B,SAAO,MAAM,SAAO,MAAW,IAAU,sBAAsB,SAAS,EAAE,GAAG,CAAC,CAChF,CAuBA,QArBkCC,GAAuC,CAxCzE,MAyCE,KAAM,CAAE,KAAAC,EAAM,UAAAC,EAAW,MAAA/C,CAAM,KAAI,YACjC,CAAC,mBAAmB,EACpB4C,EACA,CACE,QAAS,IAAM,IAAiB,MAAM5C,EAAM,OAAO,EACnD,MAAO,EACP,UAAW,MACX,UAAW,KACb,CACF,EAEMgD,IAAQ,EAAAH,GAAA,YAAAA,EAAQ,SAAR,cAAgB,YAAY,IAAK,UACzC3P,EAA2B6P,EAAY,CAAE,WAAY,EAAM,EAAID,EAAK,cAAcE,CAAK,EAE7F,MAAO,CACL,wBAAyBD,EACzB,iBAAkB7P,CACpB,CACF,C,0EC3BA,QANkDE,GAAiGE,GAAU,CAC3J,MAAM6E,KAAU,KAAW,EAE3B,OAAO,gBAAC/E,EAAA,CAAW,GAAGE,EAAgB,QAAA6E,CAAA,CAAkB,CAC1D,C,0ECEA,QANiD/E,GAAgGE,GAAU,CACzJ,MAAM2P,KAAS,aAAU,EAEzB,OAAO,gBAAC7P,EAAA,CAAW,GAAGE,EAAgB,OAAA2P,CAAA,CAAgB,CACxD,C,2ICPO,MAAMC,KAA2B,MACtC,yBACA,IAAM,kBAAqB,CACzB,gBAAiB,CAAE,YAAa,EAAK,EACrC,WAAY,CAAE,YAAa,EAAK,EAChC,IAAK,CAAE,YAAa,EAAK,EACzB,OAAQ,CAAE,YAAa,EAAK,EAC5B,OAAQ,CAAE,YAAa,EAAK,EAC5B,OAAQ,CAAE,YAAa,EAAK,EAC5B,SAAU,CAAE,YAAa,EAAK,EAC9B,SAAU,CAAE,YAAa,EAAK,CAChC,CAAC,CACH,EAEa7C,KAAyB,MACpC,yBACA,IAAM,gBAAmB,CACvB,YAAa,CAAC6C,CAAwB,EACtC,MAAO,KACP,OAAQ,KACR,MAAO,KACP,WAAY,CACV,KAAM,EACN,SAAU,GACV,MAAO,EACP,MAAO,EACP,MAAO,IACT,EACA,iBAAkB,CAAC,EAEnB,iBAAkB,CAChB,OAAO,KAAK,SAAS,CACvB,EAEA,UAAW,CACT,MAAO,CACL,MAAO,KAAK,MACZ,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,WAAY,KAAK,WACjB,iBAAkB,KAAK,gBACzB,CACF,EAEA,kBAAmB,CACjB,KAAK,QAAQ,KAAK,SAAS,CAAC,CAC9B,EAEA,YAAa,CACX,MAAM7G,EAAU,KAAK,gBAAgB,KAAK,WAAW,KAAM,KAAK,WAAW,SAAU,KAAK,WAAW,KAAK,EAE1G,OAAA6G,EAAyB,WAAW,QAAQ7G,CAAO,EAE5CA,CACT,EAEA,gBAAgB8G,EAAMC,EAASzJ,EAAO,CACpC,IAAI0J,EAEA1J,EACF0J,EAAM,KAAK,KAAK,eAAeF,CAAI,aAAaC,CAAO,UAAU,mBAAmBzJ,CAAK,CAAC,EAAE,EAE5F0J,EAAM,KAAK,KAAK,eAAeF,CAAI,aAAaC,CAAO,EAAE,EAG3D,MAAM/G,KAAU,MAAM,MAAOgH,CAAG,EAEhC,OAAAhH,EAAQ,KAAMiH,GAAa,CACzB,KAAK,WAAa,CAChB,MAAOA,EAAS,MAChB,MAAOA,EAAS,MAChB,KAAMA,EAAS,KACf,SAAUA,EAAS,SACnB,MAAOA,EAAS,KAClB,EAEA,KAAK,OAASA,EAAS,OACvB,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,sCAAuC,sCAAsC,CAAC,EAEpGJ,EAAyB,gBAAgB,QAAQ7G,CAAO,EAEjDA,CACT,EAEA,IAAIkH,EAAU,CACZ,MAAMF,EAAM,KAAK,KAAK,UAAUE,CAAQ,EAAE,EACpClH,KAAU,MAAM,MAAOgH,CAAG,EAEhC,OAAAhH,EAAQ,KAAMiH,GAAa,CACzB,KAAK,MAAQA,EACb,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,+BAA+BC,CAAQ,UAAW,uCAAuC,CAAC,EAEhHL,EAAyB,IAAI,QAAQ7G,CAAO,EAErCA,CACT,EAEA,OAAOtE,EAAO,CACZ,MAAMsL,EAAM,KAAK,KAAK,QAAQ,EACxBhH,KAAU,MAAM,OAAQgH,EAAKtL,CAAK,EAExC,OAAAsE,EAAQ,KAAMiH,GAAa,CACzB,KAAK,MAAQA,EACb,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,qCAAsC,wCAAwCvL,EAAM,IAAI,GAAG,CAAC,EAElHmL,EAAyB,OAAO,QAAQ7G,CAAO,EAExCA,CACT,EAEA,OAAOtE,EAAO,CACZ,MAAMsL,EAAM,KAAK,KAAK,UAAUtL,EAAM,EAAE,EAAE,EACpCsE,KAAU,MAAM,MAAOgH,EAAKtL,CAAK,EAEvC,OAAAsE,EAAQ,KAAMiH,GAAa,CACzB,KAAK,MAAQA,EACb,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,qCAAsC,wCAAwCvL,EAAM,IAAI,GAAG,CAAC,EAElHmL,EAAyB,OAAO,QAAQ7G,CAAO,EAExCA,CACT,EAEA,UAAW,CACT,MAAMgH,EAAM,KAAK,KAAK,cAAc,EAC9BhH,KAAU,MAAM,MAAOgH,CAAG,EAEhC,OAAAhH,EAAQ,KAAMiH,GAAa,CACzB,KAAK,MAAQA,EACb,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,kCAAmC,wDAAwD,CAAC,EAElHJ,EAAyB,SAAS,QAAQ7G,CAAO,EAE1CA,CACT,EAEA,OAAOkH,EAAU,CACf,MAAMF,EAAM,KAAK,KAAK,UAAUE,CAAQ,EAAE,EACpClH,KAAU,MAAM,SAAUgH,CAAG,EAEnC,OAAAhH,EAAQ,MAAM,KAAK,cAAc,qCAAsC,wCAAwCkH,CAAQ,GAAG,CAAC,EAE3HL,EAAyB,OAAO,QAAQ7G,CAAO,EAExCA,CACT,EAEA,SAAStE,EAAO,CACd,MAAMsL,EAAM,KAAK,KAAK,iBAAiB,EACjChH,KAAU,MAAM,OAAQgH,EAAKtL,CAAK,EAExC,OAAAsE,EAAQ,KAAMiH,GAAa,CACzB,KAAK,iBAAmBA,EAAS,OACjC,KAAK,iBAAiB,CACxB,EAAG,KAAK,cACN,uCACA,0CAA0CvL,EAAM,IAAI,GACtD,CAAC,EAEDmL,EAAyB,SAAS,QAAQ7G,CAAO,EAE1CA,CACT,EAEA,cAAcmH,EAASvQ,EAAOwQ,EAAI,CAChC,OAAQzD,GAAU,CAChB,IAAII,EAEJ,GAAI,CACFA,EAAeJ,EAAM,WAAW,KAAK,OACvC,MAAY,CACVI,EAAeJ,EAAM,OACvB,CAEA,IAAiB,MAAM,GAAGwD,CAAO,KAAKpD,CAAY,GAAInN,CAAK,EAEvDwQ,GACFA,EAAGzD,CAAK,CAEZ,CACF,EAEA,KAAKhN,EAAM,CACT,OAAO,KAAoB,kBAAkBA,CAAI,EAAE,CACrD,CACF,CAAC,CACH,C,2IC/LO,MAAM0Q,KAAiC,MAC5C,+BACA,IAAM,kBAAqB,CACzB,gBAAiB,CAAE,YAAa,EAAK,EACrC,WAAY,CAAE,YAAa,EAAK,EAChC,IAAK,CAAE,YAAa,EAAK,EACzB,OAAQ,CAAE,YAAa,EAAK,EAC5B,OAAQ,CAAE,YAAa,EAAK,EAC5B,OAAQ,CAAE,YAAa,EAAK,EAC5B,SAAU,CAAE,YAAa,EAAK,EAC9B,OAAQ,CAAE,YAAa,EAAK,EAC5B,SAAU,CAAE,YAAa,EAAK,CAChC,CAAC,CACH,EAEalB,KAA+B,MAC1C,+BACA,IAAM,gBAAmB,CACvB,YAAa,CAACkB,CAA8B,EAC5C,YAAa,KACb,aAAc,OACd,MAAO,KACP,WAAY,CACV,KAAM,EACN,SAAU,GACV,MAAO,EACP,MAAO,EACP,MAAO,IACT,EACA,aAAc,KACd,iBAAkB,CAAC,EAEnB,iBAAkB,CAChB,OAAO,KAAK,SAAS,CACvB,EAEA,UAAW,CACT,MAAO,CACL,YAAa,KAAK,YAClB,aAAc,KAAK,aACnB,aAAc,KAAK,aACnB,MAAO,KAAK,MACZ,WAAY,KAAK,WACjB,iBAAkB,KAAK,gBACzB,CACF,EAEA,kBAAmB,CACjB,KAAK,QAAQ,KAAK,SAAS,CAAC,CAC9B,EAEA,YAAa,CACX,MAAMrH,EAAU,KAAK,gBAAgB,KAAK,WAAW,KAAM,KAAK,WAAW,SAAU,KAAK,WAAW,KAAK,EAE1G,OAAAqH,EAA+B,WAAW,QAAQrH,CAAO,EAElDA,CACT,EAEA,gBAAgB8G,EAAMC,EAASzJ,EAAO,CACpC,IAAI0J,EAEA1J,EACF0J,EAAM,KAAK,KAAK,iBAAiBF,CAAI,aAAaC,CAAO,UAAU,mBAAmBzJ,CAAK,CAAC,EAAE,EAE9F0J,EAAM,KAAK,KAAK,iBAAiBF,CAAI,aAAaC,CAAO,EAAE,EAG7D,MAAM/G,KAAU,MAAM,MAAOgH,CAAG,EAEhC,OAAAhH,EAAQ,KAAMiH,GAAa,CACzB,KAAK,WAAa,CAChB,MAAOA,EAAS,MAChB,MAAOA,EAAS,MAChB,KAAMA,EAAS,KACf,SAAUA,EAAS,SACnB,MAAOA,EAAS,KAClB,EAEA,KAAK,aAAeA,EAAS,cAC7B,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,6CAA8C,4CAA4C,CAAC,EAEjHI,EAA+B,gBAAgB,QAAQrH,CAAO,EAEvDA,CACT,EAEA,IAAIkH,EAAU,CACZ,MAAMF,EAAM,KAAK,KAAK,YAAYE,CAAQ,EAAE,EACtClH,KAAU,MAAM,MAAOgH,CAAG,EAEhC,OAAAhH,EAAQ,KAAMiH,GAAa,CACzB,KAAK,YAAcA,EACnB,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,sCAAsCC,CAAQ,UAAW,8CAA8C,CAAC,EAE9HG,EAA+B,IAAI,QAAQrH,CAAO,EAE3CA,CACT,EAEA,OAAOlH,EAAa,CAClB,MAAMkO,EAAM,KAAK,KAAK,UAAU,EAC1BhH,KAAU,MAAM,OAAQgH,EAAKlO,CAAW,EAE9C,OAAAkH,EAAQ,KAAMiH,GAAa,CACzB,KAAK,YAAcA,EACnB,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,4CAA6C,+CAA+CnO,EAAY,IAAI,GAAG,CAAC,EAEtIuO,EAA+B,OAAO,QAAQrH,CAAO,EAE9CA,CACT,EAEA,OAAOlH,EAAa,CAClB,MAAMkO,EAAM,KAAK,KAAK,YAAYlO,EAAY,EAAE,EAAE,EAC5CkH,KAAU,MAAM,MAAOgH,EAAKlO,CAAW,EAE7C,OAAAkH,EAAQ,KAAMiH,GAAa,CACzB,KAAK,YAAcA,EACnB,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,4CAA6C,+CAA+CnO,EAAY,IAAI,GAAG,CAAC,EAEtIuO,EAA+B,OAAO,QAAQrH,CAAO,EAE9CA,CACT,EAEA,UAAW,CACT,MAAMgH,EAAM,KAAK,KAAK,gBAAgB,EAChChH,KAAU,MAAM,MAAOgH,CAAG,EAEhC,OAAAhH,EAAQ,KAAMiH,GAAa,CACzB,KAAK,MAAQA,EACb,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,kCAAmC,+DAA+D,CAAC,EAEzHI,EAA+B,SAAS,QAAQrH,CAAO,EAEhDA,CACT,EAEA,OAAOkH,EAAU,CACf,MAAMF,EAAM,KAAK,KAAK,YAAYE,CAAQ,EAAE,EACtClH,KAAU,MAAM,SAAUgH,CAAG,EAEnC,OAAAhH,EAAQ,MAAM,KAAK,cAAc,4CAA6C,+CAA+CkH,CAAQ,GAAG,CAAC,EAEzIG,EAA+B,OAAO,QAAQrH,CAAO,EAE9CA,CACT,EAEA,OAAOmE,EAAa6B,EAAK,CACvB,MAAMhG,KAAU,MAAM,MAAO,KAAK,KAAK,YAAYmE,CAAW,cAAc,mBAAmB6B,CAAG,CAAC,EAAE,CAAC,EAEtG,OAAAhG,EAAQ,KAAMiH,GAAa,CACzB,KAAK,aAAeA,EACpB,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,gBAAiB,mCAAmCjB,CAAG,mCAAmC7B,CAAW,GAAG,CAAC,EAE/HkD,EAA+B,OAAO,QAAQrH,CAAO,EAE9CA,CACT,EAEA,SAAS5C,EAAS,CAChB,MAAM4J,EAAM,KAAK,KAAK,mBAAmB,EACnChH,KAAU,MAAM,OAAQgH,EAAK5J,CAAO,EAE1C,OAAA4C,EAAQ,KAAMiH,GAAa,CACzB,KAAK,iBAAmBA,EAAS,OACjC,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,8CAA+C,iDAAiD7J,EAAQ,IAAI,GAAG,CAAC,EAEtIiK,EAA+B,SAAS,QAAQrH,CAAO,EAEhDA,CACT,EAEA,cAAcmH,EAASvQ,EAAOwQ,EAAI,CAChC,OAAQzD,GAAU,CAChB,IAAII,EAEJ,GAAI,CACFA,EAAeJ,EAAM,WAAW,KAAK,OACvC,MAAY,CACVI,EAAeJ,EAAM,OACvB,CAEA,IAAiB,MAAM,GAAGwD,CAAO,KAAKpD,CAAY,GAAInN,CAAK,EAEvDwQ,GACFA,EAAGzD,CAAK,CAEZ,CACF,EAEA,KAAKhN,EAAM,CACT,OAAO,KAAoB,kBAAkBA,CAAI,EAAE,CACrD,CACF,CAAC,CACH,C,2JC1IO,MAAM2Q,KAAsB,MACjC,oBACA,IAAM,kBAA6C,CACjD,gBAAiB,CAAE,YAAa,EAAK,EACrC,WAAY,CAAE,YAAa,EAAK,EAChC,IAAK,CAAE,YAAa,EAAK,EACzB,OAAQ,CAAE,YAAa,EAAK,EAC5B,OAAQ,CAAE,YAAa,EAAK,EAC5B,OAAQ,CAAE,YAAa,EAAK,EAC5B,UAAW,CAAE,YAAa,EAAK,EAC/B,OAAQ,CAAE,YAAa,EAAK,EAC5B,SAAU,CAAE,YAAa,EAAK,EAC9B,SAAU,CAAE,YAAa,EAAK,EAC9B,SAAU,CAAE,YAAa,EAAK,CAChC,CAAC,CACH,EAEaC,KAAoB,MAC/B,oBACA,IAAM,gBAA2C,CAC/C,YAAa,CAACD,CAAmB,EACjC,WAAY,CACV,KAAM,EACN,SAAU,GACV,MAAO,EACP,MAAO,EACP,MAAO,IACT,EACA,YAAa,CACX,OAAQ,CAAC,EACT,OAAQ,CAAC,EACT,aAAc,CAAC,CACjB,EACA,MAAO,KACP,MAAO,KACP,YAAa,KACb,OAAQ,KACR,OAAQ,KACR,aAAc,KACd,aAAc,KACd,iBAAkB,CAAC,EAEnB,iBAAkB,CAChB,OAAO,KAAK,SAAS,CACvB,EAEA,UAAW,CACT,MAAO,CACL,YAAa,KAAK,YAClB,MAAO,KAAK,MACZ,MAAO,KAAK,MACZ,YAAa,KAAK,YAClB,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,aAAc,KAAK,aACnB,aAAc,KAAK,aACnB,iBAAkB,KAAK,iBACvB,WAAY,KAAK,UACnB,CACF,EAEA,kBAAmB,CACjB,KAAK,QAAQ,KAAK,SAAS,CAAC,CAC9B,EAEA,YAAa,CACX,MAAMtH,EAAU,KAAK,gBAAgB,KAAK,WAAW,KAAM,KAAK,WAAW,SAAU,KAAK,WAAW,KAAK,EAE1G,OAAAsH,EAAoB,WAAW,QAAQtH,CAAO,EAEvCA,CACT,EAEA,gBAAgB8G,EAAcC,EAAiBzJ,EAAgB,KAAMkK,EAAmB,GAAM,CAC5F,MAAMR,EAAM,KAAK,QAAK,KAAc,SAAUF,EAAMC,EAASzJ,EAAO,CAAE,QAAAkK,CAAQ,CAAC,CAAC,EAC1ExH,KAAU,MAAM,MAAOgH,CAAG,EAEhC,OAAAhH,EAAQ,KAAMiH,GAAa,CACzB,KAAK,WAAa,CAChB,MAAOA,EAAS,MAChB,MAAOA,EAAS,MAChB,KAAMA,EAAS,KACf,SAAUA,EAAS,SACnB,MAAOA,EAAS,KAClB,EAEA,KAAK,OAASA,EAAS,cACvB,KAAK,OAASA,EAAS,OACvB,KAAK,aAAeA,EAAS,cAC7B,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,gCAAiC,sCAAsC,CAAC,EAE9FK,EAAoB,gBAAgB,QAAQtH,CAAO,EAE5CA,CACT,EAEA,IAAIkH,EAAkB,CACpB,MAAMF,EAAM,KAAK,KAAK,UAAUE,CAAQ,eAAe,EACjDlH,KAAU,MAAM,MAAOgH,CAAG,EAEhC,OAAAhH,EAAQ,KAAMiH,GAAa,CAEzB,MAAMQ,EAAcR,EAAS,cAAc,CAAC,EAE5C,KAAK,MAAQQ,EACb,KAAK,MAAQR,EAAS,OAAOQ,EAAY,QAAQ,EACjD,KAAK,YAAcR,EAAS,cAAcQ,EAAY,eAAe,EACrE,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,yBAAyBP,CAAQ,UACrD,iCAAiC,CAAC,EAEpCI,EAAoB,IAAI,QAAQtH,CAAO,EAEhCA,CACT,EAEA,OAAOnE,EAAoB,CACzB,MAAMmL,EAAM,KAAK,KAAK,QAAQ,EACxBhH,KAAU,MAAM,OAAQgH,EAAKnL,CAAK,EAExC,OAAAmE,EAAQ,MAAM,KAAK,cAAc,+BAAgC,kCAAkCnE,EAAM,IAAI,GAAG,CAAC,EAEjHyL,EAAoB,OAAO,QAAQtH,CAAO,EAEnCA,CACT,EAEA,OAAOnE,EAAoB,CACzB,MAAMmL,EAAM,KAAK,KAAK,UAAUnL,EAAM,EAAE,EAAE,EACpCmE,KAAU,MAAM,MAAOgH,EAAKnL,CAAK,EAEvC,OAAAmE,EAAQ,MAAM,KAAK,cAAc,+BAAgC,kCAAkCnE,EAAM,IAAI,GAAG,CAAC,EAEjHyL,EAAoB,OAAO,QAAQtH,CAAO,EAEnCA,CACT,EAEA,OAAOkH,EAAkB,CACvB,MAAMF,EAAM,KAAK,KAAK,UAAUE,CAAQ,EAAE,EACpClH,KAAU,MAAM,SAAUgH,CAAG,EAEnC,OAAAhH,EAAQ,MAAM,KAAK,cAAc,+BAAgC,kCAAkCkH,CAAQ,GAAG,CAAC,EAE/GI,EAAoB,OAAO,QAAQtH,CAAO,EAEnCA,CACT,EAEA,UAAU0H,EAAuCC,EAAuCC,EAA6C,CACnI,MAAMC,EAIJ,CAAC,EAECH,IACFG,EAAQ,OAASH,GAGfC,IACFE,EAAQ,OAASF,GAGfC,IACFC,EAAQ,cAAgBD,GAG1B,MAAM5H,KAAU,MAAM,OAAQ,KAAK,KAAK,aAAa,EAAG6H,CAAO,EAE/D,OAAA7H,EAAQ,KAAMiH,GAAa,CACzB,KAAK,YAAc,CACjB,OAAQA,EAAS,QAAU,CAAC,EAC5B,OAAQA,EAAS,QAAU,CAAC,EAC5B,aAAcA,EAAS,eAAiB,CAAC,CAC3C,EAEA,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,4CAA6C,wBAAwB,CAAC,EAE5FK,EAAoB,UAAU,QAAQtH,CAAO,EAEtCA,CACT,EAEA,OAAOf,EAAmB+G,EAAa,CACrC,MAAMhG,KAAU,MAAM,MAAO,KAAK,KAAK,UAAUf,CAAS,cAAc,mBAAmB+G,CAAG,CAAC,EAAE,CAAC,EAElG,OAAAhG,EAAQ,KAAMiH,GAAa,CACzB,KAAK,aAAeA,EACpB,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,gBAAiB,mCAAmCjB,CAAG,sBAAsB/G,CAAS,GAAG,CAAC,EAEhHqI,EAAoB,OAAO,QAAQtH,CAAO,EAEnCA,CACT,EAEA,SAASnE,EAAoBmK,EAAa,CACxC,MAAMhG,KAAU,MAAM,OAAQ,KAAK,gBAAgB,UAAUnE,EAAM,EAAE,cAAc,mBAAmBmK,CAAG,CAAC,EAAE,CAAC,EAE7G,OAAAhG,EAAQ,KAAK,IAAM,CACjB,IAAiB,QAAQ,sBAAsBgG,CAAG,uBAAuBnK,EAAM,IAAI,IAAK,UAAU,CACpG,EAAG,KAAK,cAAc,kCAAkCmK,CAAG,sBAAsBnK,EAAM,IAAI,IAAK,SAAS,CAAC,EAE1GyL,EAAoB,SAAS,QAAQtH,CAAO,EAErCA,CACT,EAEA,SAASnE,EAAoB,CAC3B,MAAMmE,KAAU,MAAM,OAAQ,KAAK,gBAAgB,UAAUnE,EAAM,EAAE,QAAQ,CAAC,EAE9E,OAAAmE,EAAQ,KAAK,IAAM,CACjB,IAAiB,QAAQ,mCAAmCnE,EAAM,IAAI,IAAK,UAAU,CACvF,EAAG,KAAK,cAAc,2CAA2CA,EAAM,IAAI,IAAK,SAAS,CAAC,EAE1FyL,EAAoB,SAAS,QAAQtH,CAAO,EAErCA,CACT,EAEA,SAASnE,EAAoB,CAC3B,MAAMmL,EAAM,KAAK,KAAK,iBAAiB,EACjChH,KAAU,MAAM,OAAQgH,EAAKnL,CAAK,EAExC,OAAAmE,EAAQ,KAAMiH,GAAkB,CAC9B,KAAK,iBAAmBA,EAAS,OACjC,KAAK,iBAAiB,CACxB,EAAG,KAAK,cAAc,iCAAkC,oCAAoCpL,EAAM,IAAI,GAAG,CAAC,EAE1GyL,EAAoB,SAAS,QAAQtH,CAAO,EAErCA,CACT,EAEA,cAAcmH,EAAiBvQ,EAAewQ,EAAwC,CACpF,OAAQzD,GAAU,CAChB,GAAI,CAGF,GAAIA,EAAM,WAAW,KAAK,CAAC,EAAE,iBAC3B,MAEJ,MAAY,CAEZ,CAEA,IAAII,EAEJ,GAAI,CACFA,EAAeJ,EAAM,WAAW,KAAK,OACvC,MAAY,CACVI,EAAeJ,EAAM,OACvB,CAEA,IAAiB,MAAM,GAAGwD,CAAO,KAAKpD,CAAY,GAAInN,CAAK,EAEvDwQ,GACFA,EAAGzD,CAAK,CAEZ,CACF,EAEA,KAAKhN,EAAc,CACjB,SAAO,MAAW,kBAAkBA,CAAI,EAAE,CAC5C,EAEA,gBAAgBA,EAAc,CAC5B,SAAO,MAAW,0BAA0BA,CAAI,EAAE,CACpD,CACF,CAAC,CACH,C","sources":["webpack://graylog-web-interface/./src/components/lookup-tables/ErrorPopover.css","webpack://graylog-web-interface/./src/components/lookup-tables/Overview.css","webpack://graylog-web-interface/./src/components/common/PageNavigation.tsx","webpack://graylog-web-interface/./src/components/common/withPaginationQueryParameter.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/LUTPageNavigation.tsx","webpack://graylog-web-interface/./src/components/maps/adapter/MaxmindAdapterFieldSet.tsx","webpack://graylog-web-interface/./src/components/maps/adapter/MaxmindAdapterSummary.jsx","webpack://graylog-web-interface/./src/components/maps/adapter/MaxmindAdapterDocumentation.jsx","webpack://graylog-web-interface/./src/components/maps/adapter/index.js","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/CSVFileAdapterFieldSet.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/CSVFileAdapterSummary.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/CSVFileAdapterDocumentation.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DnsAdapterFieldSet.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DnsAdapterSummary.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DnsAdapterDocumentation.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DSVHTTPAdapterFieldSet.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DSVHTTPAdapterSummary.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DSVHTTPAdapterDocumentation.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/HTTPJSONPathAdapterFieldSet.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/HTTPJSONPathAdapterSummary.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/HTTPJSONPathAdapterDocumentation.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/index.js","webpack://graylog-web-interface/./src/components/lookup-tables/caches/NullCacheFieldSet.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/caches/NullCacheSummary.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/caches/CaffeineCacheFieldSet.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/caches/SummaryComponents.styled.ts","webpack://graylog-web-interface/./src/components/lookup-tables/caches/CaffeineCacheSummary.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/caches/CaffeineCacheDocumentation.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/caches/index.js","webpack://graylog-web-interface/./src/components/lookup-tables/LUTTableEntry.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/Overview.css?fdd4","webpack://graylog-web-interface/./src/components/lookup-tables/LookupTablesOverview.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/LookupTableView.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/LookupTableForm.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/LookupTableCreate.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/CacheTableEntry.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/CachesOverview.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/Cache.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/CacheForm.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/CacheCreate.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/CachePicker.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/CachesContainer.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdapterTableEntry.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdaptersOverview.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/ConfigSummaryDefinitionListWrapper.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdapter.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdapterForm.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdapterCreate.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdapterPicker.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdaptersContainer.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/ErrorPopover.css?9489","webpack://graylog-web-interface/./src/components/lookup-tables/ErrorPopover.tsx","webpack://graylog-web-interface/./src/hooks/useScopePermissions.ts","webpack://graylog-web-interface/./src/routing/withHistory.tsx","webpack://graylog-web-interface/./src/routing/withParams.tsx","webpack://graylog-web-interface/./src/stores/lookup-tables/LookupTableCachesStore.js","webpack://graylog-web-interface/./src/stores/lookup-tables/LookupTableDataAdaptersStore.js","webpack://graylog-web-interface/./src/stores/lookup-tables/LookupTablesStore.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n._WOp2bWqXDYrxvBkNQVa {\n max-width: 400px;\n}\n\n.ZB8sCgEwW7KZwhU6vhHF {\n margin-right: 5px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/lookup-tables/ErrorPopover.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;;;;;;;;;;EAeE;AACF;IACI,gBAAgB;AACpB;;AAEA;IACI,iBAAiB;AACrB\",\"sourcesContent\":[\"/*\\n * Copyright (C) 2020 Graylog, Inc.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the Server Side Public License, version 1,\\n * as published by MongoDB, Inc.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * Server Side Public License for more details.\\n *\\n * You should have received a copy of the Server Side Public License\\n * along with this program. If not, see\\n * .\\n */\\n:local(.overlay) {\\n max-width: 400px;\\n}\\n\\n:local(.trigger) {\\n margin-right: 5px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"overlay\": `_WOp2bWqXDYrxvBkNQVa`,\n\t\"trigger\": `ZB8sCgEwW7KZwhU6vhHF`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n.eooimJB8iUwv4GuS5OgP {\n cursor: help;\n padding: 0 0 0 2px;\n margin-left: 5px;\n}\n\n.EM8rNPeHI3I13MdYidzw {\n max-width: 500px;\n min-width: 350px;\n}\n\n/* styles for table columns */\n.oNIxQlLcjvvFY27jyODI {\n width: 15%;\n}\n.jXZIhUCAUZtfWZKKiLy0 {\n max-width: 50%;\n width: 35%\n}\n.Ii_DwC6G4wRm7thBYSKE {\n width: 15%;\n}\n.q54g6XMj1D9X2J48jgrw {\n width: 15%;\n}\n.wFLgXxYT9cnZwrNRg6DJ {\n width: 15%;\n}\n.mk2GxDtbjbYu9RWQh_nL {\n min-width: 100px;\n}\n\noverviewTable {\n width: 100%;\n table-layout: fixed;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/lookup-tables/Overview.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;;;;;;;;;;EAeE;AACF;IACI,YAAY;IACZ,kBAAkB;IAClB,gBAAgB;AACpB;;AAEA;IACI,gBAAgB;IAChB,gBAAgB;AACpB;;AAEA,6BAA6B;AAC7B;IACI,UAAU;AACd;AACA;IACI,cAAc;IACd;AACJ;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;AACA;IACI,gBAAgB;AACpB;;AAEA;IACI,WAAW;IACX,mBAAmB;AACvB\",\"sourcesContent\":[\"/*\\n * Copyright (C) 2020 Graylog, Inc.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the Server Side Public License, version 1,\\n * as published by MongoDB, Inc.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * Server Side Public License for more details.\\n *\\n * You should have received a copy of the Server Side Public License\\n * along with this program. If not, see\\n * .\\n */\\n:local(.searchHelpButton) {\\n cursor: help;\\n padding: 0 0 0 2px;\\n margin-left: 5px;\\n}\\n\\n:local(.popoverWide) {\\n max-width: 500px;\\n min-width: 350px;\\n}\\n\\n/* styles for table columns */\\n:local(.rowTitle) {\\n width: 15%;\\n}\\n:local(.rowDescription) {\\n max-width: 50%;\\n width: 35%\\n}\\n:local(.rowName) {\\n width: 15%;\\n}\\n:local(.rowCache) {\\n width: 15%;\\n}\\n:local(.rowAdapter) {\\n width: 15%;\\n}\\n:local(.rowActions) {\\n min-width: 100px;\\n}\\n\\n:local(overviewTable) {\\n width: 100%;\\n table-layout: fixed;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"searchHelpButton\": `eooimJB8iUwv4GuS5OgP`,\n\t\"popoverWide\": `EM8rNPeHI3I13MdYidzw`,\n\t\"rowTitle\": `oNIxQlLcjvvFY27jyODI`,\n\t\"rowDescription\": `jXZIhUCAUZtfWZKKiLy0`,\n\t\"rowName\": `Ii_DwC6G4wRm7thBYSKE`,\n\t\"rowCache\": `q54g6XMj1D9X2J48jgrw`,\n\t\"rowAdapter\": `wFLgXxYT9cnZwrNRg6DJ`,\n\t\"rowActions\": `mk2GxDtbjbYu9RWQh_nL`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Button, ButtonToolbar } from 'components/bootstrap';\nimport { LinkContainer } from 'components/common/router';\nimport { IfPermitted } from 'components/common';\nimport NavItemStateIndicator, {\n hoverIndicatorStyles,\n activeIndicatorStyles,\n} from 'components/common/NavItemStateIndicator';\n\nconst Container = styled(ButtonToolbar)`\n margin-bottom: 10px;\n`;\n\nconst StyledButton = styled(Button)(({ theme }) => css`\n font-family: ${theme.fonts.family.navigation};\n font-size: ${theme.fonts.size.navigation};\n\n &&&& {\n color: ${theme.colors.variant.darker.default};\n \n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > div {\n &:hover,\n &:focus {\n color: ${theme.colors.variant.darker.default};\n }\n }\n\n &:hover {\n ${hoverIndicatorStyles(theme)}\n }\n\n &.active {\n color: ${theme.colors.global.textDefault};\n\n ${activeIndicatorStyles(theme)}\n\n &:hover,\n &:focus {\n ${activeIndicatorStyles(theme)}\n }\n }\n }\n`);\n\nStyledButton.displayName = 'Button';\n\ntype Props = {\n /**\n * List of nav items. Define permissions, if the item should only be displayed for users with specific permissions.\n * By default, an item is active if the current URL starts with the item URL.\n * If you only want to display an item as active only when its path matches exactly, set `exactPathMatch` to true.\n */\n items: Array<{\n title: string,\n path: string,\n permissions?: string | Array\n exactPathMatch?: boolean,\n }>\n}\n\n/**\n * Simple tab navigation to allow navigating to subareas of a page.\n */\nconst PageNavigation = ({ items }: Props) => (\n \n {items.map(({ path, title, permissions, exactPathMatch }) => {\n if (!path) {\n return null;\n }\n\n return (\n \n \n \n \n {title}\n \n \n \n \n );\n })}\n \n);\n\nexport default PageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport usePaginationQueryParameter from 'hooks/usePaginationQueryParameter';\n\nexport type PaginationQueryParameterObject = {\n pageSizes?: number[];\n};\n\nconst withPaginationQueryParameter = >>(Component: C, obj?: PaginationQueryParameterObject) => function WrappedComponent(props: any) {\n const result = usePaginationQueryParameter(obj?.pageSizes);\n\n return ;\n};\n\nexport default withPaginationQueryParameter;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport PageNavigation from 'components/common/PageNavigation';\nimport Routes from 'routing/Routes';\nimport { Row } from 'components/bootstrap';\n\nconst NAV_ITEMS = [\n { title: 'Lookup Tables', path: Routes.SYSTEM.LOOKUPTABLES.OVERVIEW, exactPathMatch: true },\n { title: 'Caches', path: Routes.SYSTEM.LOOKUPTABLES.CACHES.OVERVIEW },\n { title: 'Data Adapters', path: Routes.SYSTEM.LOOKUPTABLES.DATA_ADAPTERS.OVERVIEW },\n];\n\nconst LUTPageNavigation = () => (\n \n \n
\n);\n\nexport default LUTPageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport AppConfig from 'util/AppConfig';\nimport ObjectUtils from 'util/ObjectUtils';\nimport { Input } from 'components/bootstrap';\nimport { Select, TimeUnitInput } from 'components/common';\n\nexport type Config = {\n path: string,\n database_type: string,\n check_interval: number,\n check_interval_unit: string,\n};\ntype MaxmindAdapterFieldSetProps = {\n config: Config;\n updateConfig: (newConfig: object) => void,\n handleFormEvent: (e: { target: { name: string; value?: string } }) => void;\n validationState: (key: string) => string | undefined,\n validationMessage: (key: string, message: string) => string | undefined,\n};\n\nconst MaxmindAdapterFieldSet = ({ config, updateConfig, handleFormEvent, validationState, validationMessage }: MaxmindAdapterFieldSetProps) => {\n const isCloud = AppConfig.isCloud();\n\n const pathsForCloud = {\n IPINFO_STANDARD_LOCATION: '/etc/graylog/server/standard_location.mmdb',\n IPINFO_ASN: '/etc/graylog/server/asn.mmdb',\n };\n\n const ipInfoDatabaseTypes = [\n { label: 'IPinfo location database', value: 'IPINFO_STANDARD_LOCATION' },\n { label: 'IPinfo ASN database', value: 'IPINFO_ASN' },\n ];\n\n let databaseTypes = [\n { label: 'ASN database', value: 'MAXMIND_ASN' },\n { label: 'City database', value: 'MAXMIND_CITY' },\n { label: 'Country database', value: 'MAXMIND_COUNTRY' },\n ];\n\n if (isCloud) {\n databaseTypes = ipInfoDatabaseTypes;\n } else {\n databaseTypes = databaseTypes.concat(ipInfoDatabaseTypes);\n }\n\n const update = (value: number, unit: string, enabled: boolean, name: string) => {\n const newConfig = ObjectUtils.clone(config);\n\n newConfig[name] = enabled ? value : 0;\n newConfig[`${name}_unit`] = unit;\n updateConfig(newConfig);\n };\n\n const updateCheckInterval = (value: number, unit: string, enabled: boolean) => {\n update(value, unit, enabled, 'check_interval');\n };\n\n const onDbTypeSelect = (id: string) => {\n const newConfig = ObjectUtils.clone(config);\n\n if (isCloud) {\n newConfig.path = pathsForCloud[id];\n }\n\n newConfig.database_type = id;\n updateConfig(newConfig);\n };\n\n return (\n \n );\n};\n\nMaxmindAdapterFieldSet.propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n handleFormEvent: PropTypes.func.isRequired,\n validationState: PropTypes.func.isRequired,\n validationMessage: PropTypes.func.isRequired,\n};\n\nexport default MaxmindAdapterFieldSet;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { TimeUnit } from 'components/common';\n\nclass MaxmindAdapterSummary extends React.Component {\n static propTypes = {\n dataAdapter: PropTypes.object.isRequired,\n };\n\n render() {\n const { config } = this.props.dataAdapter;\n const databaseTypes = {\n MAXMIND_ASN: 'ASN database',\n MAXMIND_CITY: 'City database',\n MAXMIND_COUNTRY: 'Country database',\n IPINFO_STANDARD_LOCATION: 'IPinfo location database',\n IPINFO_ASN: 'IPinfo ASN database',\n };\n\n return (\n \n - Database file path
\n - {config.path}
\n - Database type
\n - {databaseTypes[config.database_type]}
\n - Check interval
\n \n
\n );\n }\n}\n\nexport default MaxmindAdapterSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n/* eslint-disable react/no-unescaped-entities */\nimport React from 'react';\n\nimport { Alert } from 'components/bootstrap';\n\nclass MaxmindAdapterDocumentation extends React.Component {\n render() {\n const cityFields = `{\n \"city\": { \"geoname_id\": 5375480, \"names\": { \"en\": \"Mountain View\" } },\n \"location\": {\n \"accuracy_radius\": 1000,\n \"average_income\": null,\n \"latitude\": 37.386,\n \"longitude\": -122.0838,\n \"metro_code\": 807,\n \"population_density\": null,\n \"time_zone\": \"America/Los_Angeles\"\n },\n \"postal\": { \"code\": \"94035\" },\n \"subdivisions\": [ { \"geoname_id\": 5332921, \"iso_code\": \"CA\", \"names\": { \"en\": \"California\" } } ],\n}`;\n\n const countryFields = `{\n \"continent\": { \"code\": \"NA\", \"geoname_id\": 6255149, \"names\": { \"en\": \"North America\" } },\n \"country\": { \"geoname_id\": 6252001, \"iso_code\": \"US\", \"names\": { \"en\": \"United States\" } },\n \"registered_country\": { \"geoname_id\": 6252001, \"iso_code\": \"US\", \"names\": { } },\n \"represented_country\": { \"geoname_id\": null, \"iso_code\": \"US\", \"names\": { } },\n \"traits\": {\n \"ip_address\": \"8.8.8.8\",\n \"is_anonymous_proxy\": false,\n \"is_legitimate_proxy\": false,\n \"is_satellite_provider\": false,\n \"isp\": null,\n \"organization\": null,\n }\n}`;\n\n const asnFields = `{\n \"as_number\": 15169,\n \"as_organization\": \"Google LLC\"\n}`;\n\n return (\n \n The GeoIP data adapter supports reading MaxMind's GeoIP2 databases.
\n\n \n Currently the ASN, city and country databases are supported.
\n For support of additional database types, please visit our support channels.
\n \n\n
\n\n ASN database fields
\n\n {asnFields}
\n\n Country database fields
\n\n {countryFields}
\n\n City database fields
\n\n In addition to the fields provided by the country database, the city database also includes the following fields:
\n\n {cityFields}
\n\n For a complete documentation of the fields, please see MaxMind's developer documentation
\n \n );\n }\n}\n\nexport default MaxmindAdapterDocumentation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport MaxmindAdapterFieldSet from 'components/maps/adapter/MaxmindAdapterFieldSet';\nimport MaxmindAdapterSummary from 'components/maps/adapter/MaxmindAdapterSummary';\nimport MaxmindAdapterDocumentation from 'components/maps/adapter/MaxmindAdapterDocumentation';\n\nPluginStore.register(new PluginManifest({}, {\n lookupTableAdapters: [\n {\n type: 'maxmind_geoip',\n displayName: 'Geo IP - MaxMind\\u2122 or IPinfo Databases',\n formComponent: MaxmindAdapterFieldSet,\n summaryComponent: MaxmindAdapterSummary,\n documentationComponent: MaxmindAdapterDocumentation,\n },\n ],\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport type { SyntheticEvent } from 'react';\nimport React from 'react';\n\nimport { Input } from 'components/bootstrap';\nimport type { LookupTableDataAdapterConfig } from 'logic/lookup-tables/types';\n\ntype Props = {\n config: LookupTableDataAdapterConfig,\n handleFormEvent: (event: SyntheticEvent) => void,\n validationState: (state: string) => string,\n validationMessage: (field: string, message: string) => string,\n};\n\nconst CSVFileAdapterFieldSet = ({ config, handleFormEvent, validationState, validationMessage }: Props) => (\n \n);\n\nexport default CSVFileAdapterFieldSet;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nimport type { LookupTableAdapter } from 'logic/lookup-tables/types';\n\ntype Props = {\n dataAdapter: LookupTableAdapter,\n};\n\nconst CSVFileAdapterSummary = ({ dataAdapter }: Props) => {\n const { config } = dataAdapter;\n\n return (\n \n - File path
\n - {config.path}
\n - Separator
\n {config.separator}
\n - Quote character
\n {config.quotechar}
\n - Key column
\n - {config.key_column}
\n - Value column
\n - {config.value_column}
\n - Check interval
\n - {config.check_interval} seconds
\n - Case-insensitive lookup
\n - {config.case_insensitive_lookup ? 'yes' : 'no'}
\n - CIDR lookup
\n - {config.cidr_lookup ? 'yes' : 'no'}
\n
\n );\n};\n\nexport default CSVFileAdapterSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n/* eslint-disable react/no-unescaped-entities */\nimport React from 'react';\n\nimport { Alert } from 'components/bootstrap';\n\nconst CSVFileAdapterDocumentation = () => {\n const csvFile1 = `\"ipaddr\",\"hostname\"\n\"127.0.0.1\",\"localhost\"\n\"10.0.0.1\",\"server1\"\n\"10.0.0.2\",\"server2\"`;\n\n const csvFile2 = `'ipaddr';'lladdr';'hostname'\n'127.0.0.1';'e4:b2:11:d1:38:14';'localhost'\n'10.0.0.1';'e4:b2:12:d1:48:28';'server1'\n'10.0.0.2';'e4:b2:11:d1:58:34';'server2'`;\n\n const csvFile3 = `\"cidr\",\"subnet\"\n\"192.168.100.0/24\",\"Finance Department subnet\"\n\"192.168.101.0/24\",\"IT Department subnet\"\n\"192.168.102.0/24\",\"HR Department subnet\"`;\n\n return (\n \n The CSV data adapter can read key value pairs from a CSV file.
\n Please make sure your CSV file is formatted according to your configuration settings.
\n\n \n \n - The first line in the CSV file needs to be a list of field/column names
\n - The file uses utf-8 encoding
\n - The file is readable by every Graylog server node
\n
\n \n\n
\n\n Example 1
\n\n Configuration
\n \n Separator: ,
\n Quote character: \"
\n Key column: ipaddr
\n Value column: hostname
\n
\n\n CSV File
\n {csvFile1}
\n\n Example 2
\n\n Configuration
\n \n Separator: ;
\n Quote character: '
\n Key column: ipaddr
\n Value column: hostname
\n
\n\n CSV File
\n {csvFile2}
\n\n CIDR Lookups
\n \n If this data adapter will be used to lookup IP address keys against CIDR addresses
\n then it should be marked as a CIDR lookup. For example:
\n
\n\n Configuration
\n \n Separator: ,
\n Quote character: \"
\n Key column: cidr
\n Value column: subnet
\n CIDR lookup: true
\n
\n\n CSV File
\n {csvFile3}
\n\n Given this CSV file and configuration looking up the key 192.168.101.64 would return 'IT Department subnet'.
\n \n );\n};\n\nexport default CSVFileAdapterDocumentation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport ObjectUtils from 'util/ObjectUtils';\nimport { Input } from 'components/bootstrap';\nimport { Select, TimeUnitInput } from 'components/common';\n\nclass DnsAdapterFieldSet extends React.Component {\n static propTypes = {\n config: PropTypes.shape({\n request_timeout: PropTypes.number.isRequired,\n server_ips: PropTypes.string,\n }).isRequired,\n updateConfig: PropTypes.func.isRequired,\n handleFormEvent: PropTypes.func.isRequired,\n validationMessage: PropTypes.func.isRequired,\n validationState: PropTypes.func.isRequired,\n };\n\n _onLookupTypeSelect = (id) => {\n const { config, updateConfig } = this.props;\n const newConfig = ObjectUtils.clone(config);\n\n newConfig.lookup_type = id;\n updateConfig(newConfig);\n };\n\n updateCacheTTLOverride = (value, unit, enabled) => {\n this._updateCacheTTLOverride(value, unit, enabled, 'cache_ttl_override');\n };\n\n _updateCacheTTLOverride = (value, unit, enabled, fieldPrefix) => {\n const { config, updateConfig } = this.props;\n const newConfig = ObjectUtils.clone(config);\n\n // If Cache TTL Override box is checked, then save the value. If not, then do not save it.\n if (enabled && value) {\n newConfig[fieldPrefix] = enabled && value ? value : null;\n newConfig[`${fieldPrefix}_enabled`] = enabled;\n } else {\n newConfig[fieldPrefix] = null;\n newConfig[`${fieldPrefix}_enabled`] = false;\n }\n\n newConfig[`${fieldPrefix}_unit`] = enabled ? unit : null;\n updateConfig(newConfig);\n };\n\n render() {\n const {\n config,\n handleFormEvent,\n validationMessage,\n validationState,\n } = this.props;\n const lookupTypes = [\n { label: 'Resolve hostname to IPv4 address (A)', value: 'A' },\n { label: 'Resolve hostname to IPv6 address (AAAA)', value: 'AAAA' },\n { label: 'Resolve hostname to IPv4 and IPv6 addresses (A and AAAA)', value: 'A_AAAA' },\n { label: 'Reverse lookup (PTR)', value: 'PTR' },\n { label: 'Text lookup (TXT)', value: 'TXT' },\n ];\n\n return (\n \n );\n }\n}\n\nexport default DnsAdapterFieldSet;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { TimeUnit } from 'components/common';\n\nconst DnsAdapterSummary = ({ dataAdapter }) => {\n const { config } = dataAdapter;\n\n // Allows enum > display label translation.\n const lookupType = {\n A: 'Resolve hostname to IPv4 address (A)',\n AAAA: 'Resolve hostname to IPv6 address (AAAA)',\n A_AAAA: 'Resolve hostname to IPv4 and IPv6 address (A and AAAA)',\n PTR: 'Reverse lookup (PTR)',\n TXT: 'Text lookup (TXT)',\n };\n\n return (\n \n - DNS Lookup Type
\n - {lookupType[config.lookup_type]}
\n\n - DNS Server IP Address
\n - {config.server_ips || 'n/a'}
\n\n - DNS Request Timeout
\n - {config.request_timeout} ms
\n\n - Cache TTL Override
\n - \n {!config.cache_ttl_override_enabled ? 'n/a' :
}\n \n
\n );\n};\n\nDnsAdapterSummary.propTypes = {\n dataAdapter: PropTypes.shape({\n config: PropTypes.shape({\n lookup_type: PropTypes.string.isRequired,\n request_timeout: PropTypes.number.isRequired,\n }),\n }).isRequired,\n};\n\nexport default DnsAdapterSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport styled, { css } from 'styled-components';\n\nconst StyledPre = styled.pre(({ theme }) => css`\n font-size: ${theme.fonts.size.small};\n`);\n\nconst DnsAdapterDocumentation = () => {\n const styleMarginBottom = { marginBottom: 10 };\n\n const aResponse = `{\n \"single_value\": \"34.239.63.98\",\n \"multi_value\": {\n \"results\": [\n {\n \"ip_address\": \"34.239.63.98\",\n \"dns_ttl\": 60\n },\n {\n \"ip_address\": \"34.238.48.57\",\n \"dns_ttl\": 60\n }\n ]\n },\n \"ttl\": 60000\n}`;\n\n const aaaaResponse = `{\n \"single_value\": \"2307:f8b0:3000:800:0:0:0:200e\",\n \"multi_value\": {\n \"results\": [\n {\n \"ip_address\": \"2307:f8b0:3000:800:0:0:0:200e\",\n \"dns_ttl\": 77\n }\n ]\n },\n \"ttl\": 77000\n}`;\n\n const aAndAaaaResponse = `{\n \"single_value\": \"144.222.6.132\",\n \"multi_value\": {\n \"results\": [\n {\n \"ip_address\": \"144.222.6.132\",\n \"dns_ttl\": 32,\n \"ip_version\": \"IPv4\"\n },\n {\n \"ip_address\": \"1207:f8b1:6003:b01:0:0:0:8a\",\n \"dns_ttl\": 299,\n \"ip_version\": \"IPv6\"\n }\n ]\n },\n \"ttl\": 32000\n}`;\n\n const ptrResponse = `{\n \"single_value\": \"c-45-216-65-41.hd1.fl.someisp.co.uk\",\n \"multi_value\": {\n \"domain\": \"someisp.co.uk\",\n \"full_domain\": \"c-45-216-65-41.hd1.fl.someisp.co.uk\",\n \"dns_ttl\": \"300\",\n },\n \"ttl\": 300000\n}`;\n\n const txtResponse = `{\n \"single_value\": null,\n \"multi_value\": {\n \"results\": [\n {\n \"value\": \"Some text value that lives in a TXT DNS\",\n \"dns_ttl\": 300\n },\n {\n \"value\": \"v=spf1 include:some-email-domain.org ~all.\",\n \"dns_ttl\": 200\n }\n ]\n },\n \"ttl\": 200000\n}`;\n\n return (\n\n \n\n Configuration
\n\n DNS Lookup Type
\n\n \n Resolve hostname to IPv4 address (A): Returns both a single_value
containing one\n of the IPv4 addresses that the hostname resolves to,\n and a multi_value
containing all IPv4 addresses that the hostname resolves to.\n Input for this type must be a pure domain name (eg. api.graylog.com
).\n
\n {aResponse} \n\n \n Resolve hostname to IPv6 address (AAAA): Returns both a single_value
containing\n one of the IPv6 addresses that the hostname resolves to,\n and a multi_value
containing all IPv6 addresses that the hostname resolves to.\n Input for this type must be a pure domain name (eg. api.graylog.com
).\n
\n {aaaaResponse} \n\n \n Resolve hostname to IPv4 and IPv6 address (A and AAAA): Returns both\n a single_value
containing\n one of the IPv4 or IPv6 addresses that the hostname resolves to (will return IPv4 if available),\n and a multi_value
containing all IPv4 and IPv6 addresses that the hostname resolves to.\n Input for this type must be a pure domain name (eg. api.graylog.com
).\n
\n {aAndAaaaResponse} \n\n \n Reverse lookup (PTR): Returns a single_value
containing the PTR value if defined\n for the IP address. The domain
field displays the domain name (with no subdomains).\n The full_domain
field displays the full un-trimmed host name/PTR value.\n The input for this type must be a pure IPv4 or IPv6 address\n (eg. 10.0.0.1
or 2622:f3b0:4000:812::200c
).\n
\n {ptrResponse} \n\n \n Text lookup (TXT): Returns a multi_value
with all TXT records defined for the\n hostname.\n Input for this type must be a pure domain name (eg. api.graylog.com
).\n
\n {txtResponse} \n\n DNS Server IP Addresses
\n\n \n A comma-separated list of DNS server IP addresses and optional ports to use (eg. 192.168.1.1:5353, 192.168.1.244
).\n Leave this blank to use the DNS server defined for your local system. All requests use port 53 unless\n otherwise specified.\n
\n\n DNS Request Timeout
\n\n \n The DNS request timeout in milliseconds.\n
\n\n Cache TTL Override
\n\n \n If enabled, the TTL for this adapter's cache will be overridden with the specified value.\n
\n\n \n );\n};\n\nexport default DnsAdapterDocumentation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Input } from 'components/bootstrap';\nimport { URLWhiteListInput } from 'components/common';\n\nconst DSVHTTPAdapterFieldSet = ({ handleFormEvent, validationState, validationMessage, config }) => (\n \n);\n\nDSVHTTPAdapterFieldSet.propTypes = {\n config: PropTypes.object.isRequired,\n\n handleFormEvent: PropTypes.func.isRequired,\n validationState: PropTypes.func.isRequired,\n validationMessage: PropTypes.func.isRequired,\n};\n\nexport default DSVHTTPAdapterFieldSet;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nconst DSVHTTPAdapterSummary = ({ dataAdapter }) => {\n const { config } = dataAdapter;\n\n return (\n \n - File URL
\n - {config.url}
\n - Separator
\n {config.separator}
\n - Line Separator
\n {config.line_separator}
\n - Quote character
\n {config.quotechar}
\n - Ignore lines starting with
\n {config.ignorechar}
\n - Key column
\n - {config.key_column}
\n - Value column
\n - {config.value_column}
\n - Check interval
\n - {config.check_interval} seconds
\n - Case-insensitive lookup
\n - {config.case_insensitive_lookup ? 'yes' : 'no'}
\n
\n );\n};\n\nexport default DSVHTTPAdapterSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nimport { Alert } from 'components/bootstrap';\n\nconst DSVHTTPAdapterDocumentation = () => {\n const csvFile1 = `\"127.0.0.1\",\"localhost\"\n\"10.0.0.1\",\"server1\"\n\"10.0.0.2\",\"server2\"`;\n\n const csvFile2 = `'127.0.0.1';'e4:b2:11:d1:38:14'\n'10.0.0.1';'e4:b2:12:d1:48:28'\n'10.0.0.2';'e4:b2:11:d1:58:34'`;\n\n return (\n \n The DSV data adapter can read key value pairs (or check for the presence of a key) from a DSV file.
\n Please make sure your DSV file is formatted according to your configuration settings.
\n\n \n \n - The file uses utf-8 encoding
\n - The file is accessible using the same URL by every Graylog server node
\n
\n \n\n
\n\n Example 1
\n\n Configuration
\n \n Separator: ,
\n Quote character: \"
\n
\n\n DSV File
\n {csvFile1}
\n\n Example 2
\n\n Configuration
\n \n Separator: ;
\n Quote character: '
\n
\n\n DSV File
\n {csvFile2}
\n \n );\n};\n\nexport default DSVHTTPAdapterDocumentation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport type { SyntheticEvent } from 'react';\nimport React from 'react';\n\nimport { Input } from 'components/bootstrap';\nimport { URLWhiteListInput, KeyValueTable } from 'components/common';\nimport ObjectUtils from 'util/ObjectUtils';\n\ntype Headers = { [key: string]: string };\n\ntype Config = {\n headers: Headers,\n url: string,\n single_value_jsonpath: string,\n multi_value_jsonpath: string,\n user_agent: string,\n};\n\ntype Props = {\n config: Config,\n updateConfig: (config: Config) => void,\n handleFormEvent: (event: SyntheticEvent) => void,\n validationState: (state: string) => string,\n validationMessage: (field: string, message: string) => string,\n};\n\nclass HTTPJSONPathAdapterFieldSet extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n handleFormEvent: PropTypes.func.isRequired,\n validationState: PropTypes.func.isRequired,\n validationMessage: PropTypes.func.isRequired,\n };\n\n onHTTPHeaderUpdate = (headers: Headers) => {\n const { config, updateConfig } = this.props;\n const configChange = ObjectUtils.clone(config);\n\n configChange.headers = headers;\n updateConfig(configChange);\n };\n\n render() {\n const { config, handleFormEvent, validationMessage, validationState } = this.props;\n\n return (\n \n );\n }\n}\n\nexport default HTTPJSONPathAdapterFieldSet;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { KeyValueTable } from 'components/common';\n\nconst HTTPJSONPathAdapterSummary = ({ dataAdapter }) => {\n const { config } = dataAdapter;\n\n return (\n \n - Lookup URL
\n - {config.url}
\n - Single value JSONPath
\n {config.single_value_jsonpath}
\n - Multi value JSONPath
\n {config.multi_value_jsonpath}
\n - HTTP User-Agent
\n - {config.user_agent}
\n - HTTP Headers
\n \n
\n );\n};\n\nHTTPJSONPathAdapterSummary.propTypes = {\n dataAdapter: PropTypes.object.isRequired,\n};\n\nexport default HTTPJSONPathAdapterSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n/* eslint-disable no-template-curly-in-string */\nimport React from 'react';\n\nimport { Alert, Col, Row } from 'components/bootstrap';\n\nconst HTTPJSONPathAdapterDocumentation = () => {\n const exampleJSON = `{\n \"user\": {\n \"login\": \"jane\",\n \"full_name\": \"Jane Doe\",\n \"roles\": [\"admin\", \"developer\"],\n \"contact\": {\n \"email\": \"[email protected]\",\n \"cellphone\": \"+49123456789\"\n }\n }\n}`;\n const noMultiResult = '{\"value\": \"Jane Doe\"}';\n const mapResult = `{\n \"login\": \"jane\",\n \"full_name\": \"Jane Doe\",\n \"roles\": [\"admin\", \"developer\"],\n \"contact\": {\n \"email\": \"[email protected]\",\n \"cellphone\": \"+49123456789\"\n }\n}`;\n const smallMapResult = `{\n \"email\": \"[email protected]\",\n \"cellphone\": \"+49123456789\"\n}`;\n const listResult = `{\n \"value\": [\"admin\", \"developer\"]\n}`;\n const pipelineRule = `rule \"lookup user\"\nwhen has_field(\"user_login\")\nthen\n // Get the user login from the message\n let userLogin = to_string($message.user_login);\n // Lookup the single value, in our case the full name, in the user-api lookup table\n let userName = lookup_value(\"user-api\", userLogin);\n // Set the field \"user_name\" in the message\n set_field(\"user_name\", userName)\n\n // Lookup the multi value in the user-api lookup table\n let userData = lookup(\"user-api\", userLogin);\n // Set the email and cellphone as fields in the message\n set_field(\"user_email\", userData[\"email\"]);\n set_field(\"user_cellphone\", userData[\"cellphone\"]);\nend`;\n\n return (\n \n \n The HTTPJSONPath data adapter executes HTTP GET requests to lookup a key and parses the result based on\n configured JSONPath expressions.\n
\n\n \n Every lookup table result has two values. A single value and a multi value. The single\n value will be used when the lookup result is expected to be a string, number or boolean. The multi value\n will be used when the lookup result is expected to be a map or list.\n \n\n Configuration
\n\n Lookup URL
\n \n The URL that will be used for the HTTP request. To use the lookup key in the URL, the\n {'${key}'}
\n value can be used. This variable will be replaced by the actual key that is passed to a lookup function.
\n (example: {'https://example.com/api/lookup?key=${key}'}
)\n
\n\n Single value JSONPath
\n \n This JSONPath expression will be used to parse the single value of the lookup result.\n (example: $.user.full_name
)\n
\n\n Multi value JSONPath
\n \n This JSONPath expression will be used to parse the multi value of the lookup result.\n (example: $.users[*]
)\n The multi value JSONPath setting is optional. Without it, the single value is also present in the\n multi value result.\n
\n\n HTTP User-Agent
\n \n This is the User-Agent header that will be used for the HTTP requests. You should include some\n contact details so owners of the services you query know whom to contact if issues arise.\n (like excessive API requests from your Graylog cluster)\n
\n\n
\n\n Example
\n \n This shows an example configuration and the values that will be returned from a lookup.
\n The configured URL is {'https://example.com/api/users/${key}'} and the {'${key}'}
\n gets replaced by jane during the lookup request.\n
\n \n This is the resulting JSON document:\n
\n {exampleJSON}
\n\n \n \n Configuration
\n \n Single value JSONPath: $.user.full_name
\n Multi value JSONPath: empty
\n
\n \n \n Result
\n \n Single value: Jane Doe
\n Multi value:\n
\n {noMultiResult}
\n \n
\n \n \n Configuration
\n \n Single value JSONPath: $.user.full_name
\n Multi value JSONPath: $.user
\n
\n \n \n Result
\n \n Single value: Jane Doe
\n Multi value:\n
\n {mapResult}
\n \n
\n \n \n Configuration
\n \n Single value JSONPath: $.user.contact.email
\n Multi value JSONPath: $.user.roles[*]
\n
\n \n \n Result
\n \n Single value: [email protected]
\n Multi value:\n
\n {listResult}
\n \n
\n \n \n Configuration
\n \n Single value JSONPath: $.user.full_name
\n Multi value JSONPath: $.user.contact
\n
\n \n \n Result
\n \n Single value: Jane Doe
\n Multi value:\n
\n {smallMapResult}
\n \n
\n\n Pipeline Rule
\n \n This is an example pipeline rule that uses the example data from our last configuration example.\n
\n {pipelineRule}
\n \n );\n};\n\nexport default HTTPJSONPathAdapterDocumentation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport 'components/maps/adapter';\nimport CSVFileAdapterFieldSet from './CSVFileAdapterFieldSet';\nimport CSVFileAdapterSummary from './CSVFileAdapterSummary';\nimport CSVFileAdapterDocumentation from './CSVFileAdapterDocumentation';\nimport DnsAdapterFieldSet from './DnsAdapterFieldSet';\nimport DnsAdapterSummary from './DnsAdapterSummary';\nimport DnsAdapterDocumentation from './DnsAdapterDocumentation';\nimport DSVHTTPAdapterFieldSet from './DSVHTTPAdapterFieldSet';\nimport DSVHTTPAdapterSummary from './DSVHTTPAdapterSummary';\nimport DSVHTTPAdapterDocumentation from './DSVHTTPAdapterDocumentation';\nimport HTTPJSONPathAdapterFieldSet from './HTTPJSONPathAdapterFieldSet';\nimport HTTPJSONPathAdapterSummary from './HTTPJSONPathAdapterSummary';\nimport HTTPJSONPathAdapterDocumentation from './HTTPJSONPathAdapterDocumentation';\n\nPluginStore.register(new PluginManifest({}, {\n lookupTableAdapters: [\n {\n type: 'csvfile',\n displayName: 'CSV File',\n formComponent: CSVFileAdapterFieldSet,\n summaryComponent: CSVFileAdapterSummary,\n documentationComponent: CSVFileAdapterDocumentation,\n },\n {\n type: 'dnslookup',\n displayName: 'DNS Lookup',\n formComponent: DnsAdapterFieldSet,\n summaryComponent: DnsAdapterSummary,\n documentationComponent: DnsAdapterDocumentation,\n },\n {\n type: 'dsvhttp',\n displayName: 'DSV File from HTTP',\n formComponent: DSVHTTPAdapterFieldSet,\n summaryComponent: DSVHTTPAdapterSummary,\n documentationComponent: DSVHTTPAdapterDocumentation,\n },\n {\n type: 'httpjsonpath',\n displayName: 'HTTP JSONPath',\n formComponent: HTTPJSONPathAdapterFieldSet,\n summaryComponent: HTTPJSONPathAdapterSummary,\n documentationComponent: HTTPJSONPathAdapterDocumentation,\n },\n ],\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nconst NullCacheFieldSet = () => null;\n\nexport default React.forwardRef(NullCacheFieldSet);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nconst NullCacheSummary = () => (This cache has no configuration.
);\n\nexport default NullCacheSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { FormikFormGroup, TimeUnitInput } from 'components/common';\nimport type { LookupTableCache, LookupTableCacheConfig } from 'logic/lookup-tables/types';\n\ntype Props = {\n config: LookupTableCacheConfig,\n};\n\nconst CaffeineCacheFieldSet = ({ config }: Props, ref: any) => {\n const { values, setValues, errors }: { values: Partial, setValues: any, errors: any } = useFormikContext();\n const [stateConfig, setStateConfig] = React.useState({ ...config });\n\n React.useEffect(() => setStateConfig({ ...config }), [config]);\n\n const validateConfig = () => {\n const configErrors: any = {};\n\n if (!values.config.max_size) configErrors.max_size = 'Required';\n if (values.config.max_size < 0) configErrors.max_size = 'Must be 0 or a positive number';\n\n return configErrors;\n };\n\n React.useImperativeHandle(ref, () => ({\n validate: () => (validateConfig()),\n }));\n\n const handleUpdate = (name: string) => (value: number, unit: string, enabled: boolean) => {\n const auxConfig = { ...stateConfig };\n const auxValConfig = { ...values.config };\n\n auxConfig[name] = enabled ? value : 0;\n auxConfig[`${name}_unit`] = unit;\n auxValConfig[name] = enabled ? value : 0;\n auxValConfig[`${name}_unit`] = unit;\n\n setStateConfig(auxConfig);\n setValues({ ...values, config: auxValConfig });\n };\n\n return (\n \n );\n};\n\nexport default React.forwardRef(CaffeineCacheFieldSet);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport styled from 'styled-components';\n\nexport const SummaryContainer = styled.div`\n display: inline-block;\n margin: 16px 0;\n`;\n\nexport const SummaryRow = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n`;\n\nexport const Title = styled.span`\n font-weight: bold;\n min-width: 180px;\n`;\n\nexport const Value = styled.span`\n padding: 6px 10px;\n width: 100%;\n min-width: 130px;\n`;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport { TimeUnit } from 'components/common';\nimport type { LookupTableCache } from 'logic/lookup-tables/types';\n\nimport {\n SummaryContainer,\n SummaryRow,\n Title,\n Value,\n} from './SummaryComponents.styled';\n\ntype Props = {\n cache: LookupTableCache,\n};\n\nconst CaffeineCacheSummary = ({ cache }: Props) => (\n \n \n Maximum entries: \n {cache.config.max_size} \n \n \n Expire after access: \n \n \n \n \n \n Expire after write: \n \n \n \n \n \n);\n\nexport default CaffeineCacheSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport React from 'react';\n\nimport { Alert } from 'components/bootstrap';\n\nconst CaffeineCacheDocumentation = () => (\n \n The in-memory cache maintains recently used values from data adapters.
\n Please make sure your Graylog servers have enough heap to accomodate the cached entries and monitor the cache efficiency.
\n\n \n The cache is local to each Graylog server, they do not share the entries.
\n For example, if you have two servers, they will maintain a completely independent cache from each other.
\n \n\n
\n\n Cache size
\n Every cache has a maximum number of entries, unbounded caches are not supported.
\n\n Time-based expiration
\n\n Expire after access
\n \n The cache will remove entries after a fixed time since they have been used the last time.
\n This results in the cache behaving as a space limited least recently used cache.\n
\n\n Expire after write
\n \n The cache will remove entries after a fixed time since they have been entered into the cache.
\n This results in entries that are never older than the given time, which can be important for\n regularly changing data, such as configuration state of external systems.\n
\n\n \n);\n\nexport default CaffeineCacheDocumentation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport NullCacheFieldSet from './NullCacheFieldSet';\nimport NullCacheSummary from './NullCacheSummary';\nimport CaffeineCacheFieldSet from './CaffeineCacheFieldSet';\nimport CaffeineCacheSummary from './CaffeineCacheSummary';\nimport CaffeineCacheDocumentation from './CaffeineCacheDocumentation';\n\nPluginStore.register(new PluginManifest({}, {\n lookupTableCaches: [\n {\n type: 'none',\n displayName: 'Do not cache values',\n formComponent: NullCacheFieldSet,\n summaryComponent: NullCacheSummary,\n documentationComponent: null,\n },\n {\n type: 'guava_cache', // old name kept for backwards compatibility\n displayName: 'Node-local, in-memory cache',\n formComponent: CaffeineCacheFieldSet,\n summaryComponent: CaffeineCacheSummary,\n documentationComponent: CaffeineCacheDocumentation,\n },\n ],\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled from 'styled-components';\n\nimport { Link } from 'components/common/router';\nimport { Spinner } from 'components/common';\nimport Routes from 'routing/Routes';\nimport { Button, ButtonToolbar } from 'components/bootstrap';\nimport { ErrorPopover } from 'components/lookup-tables';\nimport { LookupTablesActions } from 'stores/lookup-tables/LookupTablesStore';\nimport useScopePermissions from 'hooks/useScopePermissions';\nimport type { LookupTable, LookupTableCache, LookupTableAdapter } from 'logic/lookup-tables/types';\nimport useHistory from 'routing/useHistory';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\ntype Props = {\n table: LookupTable,\n cache: LookupTableCache,\n dataAdapter: LookupTableAdapter,\n errors?: {\n table: string,\n cache: string,\n dataAdapter: string,\n },\n};\n\nconst Actions = styled(ButtonToolbar)`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n`;\n\nconst LUTTableEntry = ({ table, cache, dataAdapter, errors }: Props) => {\n const history = useHistory();\n const sendTelemetry = useSendTelemetry();\n\n const { loadingScopePermissions, scopePermissions } = useScopePermissions(table);\n\n const handleDelete = React.useCallback(() => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.LUT.DELETED, {\n app_pathname: 'lut',\n app_section: 'lut',\n });\n\n // eslint-disable-next-line no-alert\n const shouldDelete = window.confirm(\n `Are you sure you want to delete lookup table \"${table.title}\"?`,\n );\n\n if (shouldDelete) {\n LookupTablesActions.delete(table.id).then(() => {\n LookupTablesActions.reloadPage();\n });\n }\n }, [table.id, table.title, sendTelemetry]);\n\n const handleEdit = React.useCallback(() => {\n history.push(Routes.SYSTEM.LOOKUPTABLES.edit(table.name));\n }, [history, table.name]);\n\n return (\n \n \n \n {errors.table && (\n \n )}\n {table.title}\n \n {table.description} \n {table.name} \n \n {errors.cache && (\n \n )}\n {cache.title}\n \n \n {errors.dataAdapter && (\n \n )}\n {dataAdapter.title}\n \n \n {loadingScopePermissions ? : scopePermissions.is_mutable && (\n \n \n \n \n )}\n \n \n \n );\n};\n\nLUTTableEntry.defaultProps = {\n errors: {\n table: null,\n cache: null,\n dataAdapter: null,\n },\n};\n\nexport default LUTTableEntry;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./Overview.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./Overview.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled from 'styled-components';\n\nimport {\n OverlayTrigger,\n PaginatedList,\n SearchForm,\n Icon,\n Spinner,\n NoSearchResult,\n NoEntitiesExist,\n} from 'components/common';\nimport { Row, Col, Table, Popover, Button } from 'components/bootstrap';\nimport LUTTableEntry from 'components/lookup-tables/LUTTableEntry';\nimport withPaginationQueryParameter from 'components/common/withPaginationQueryParameter';\nimport { LookupTablesActions } from 'stores/lookup-tables/LookupTablesStore';\nimport type { LookupTable, LookupTableAdapter, LookupTableCache, PaginationType } from 'logic/lookup-tables/types';\nimport type { PaginationQueryParameterResult } from 'hooks/usePaginationQueryParameter';\n\nimport Styles from './Overview.css';\n\nconst ScrollContainer = styled.div`\n overflow-x: auto;\n`;\n\nconst buildHelpPopover = () => (\n \n Available search fields
\n \n \n \n Field \n Description \n \n \n \n \n id \n Lookup Table ID \n \n \n title \n The title of the lookup table \n \n \n name \n The reference name of the lookup table \n \n \n description \n The description of lookup table \n \n \n
\n Examples
\n \n Find lookup tables by parts of their names:
\n name:geoip
\n name:geo\n
\n \n Searching without a field name matches against the title
field:
\n geoip
is the same as
\n title:geoip\n
\n \n);\n\nconst queryHelpComponent = (\n \n \n \n);\n\ntype ItemProps = {\n table: LookupTable,\n caches: LookupTableCache[],\n dataAdapters: LookupTableAdapter[],\n errorStates: { [key: string]: { [key: string]: string } },\n};\n\nconst LUTItem = ({ table, caches, dataAdapters, errorStates }: ItemProps) => {\n const lookupName = (id: string, map: LookupTableCache[] | LookupTableAdapter[]) => {\n const empty = { title: 'none' };\n\n if (!map) return empty;\n\n return map[id] || empty;\n };\n\n const lookupAdapterError = () => {\n if (errorStates.dataAdapters && dataAdapters) {\n const adapter = dataAdapters[table.data_adapter_id];\n\n if (!adapter) return null;\n\n return errorStates.dataAdapters[adapter.name];\n }\n\n return null;\n };\n\n const cache = lookupName(table.cache_id, caches);\n const dataAdapter = lookupName(table.data_adapter_id, dataAdapters);\n const errors = {\n table: errorStates.tables[table.name],\n cache: null,\n dataAdapter: lookupAdapterError(),\n };\n\n return (\n \n );\n};\n\nconst NoResults = ({ query }: { query: string }) => (\n \n \n \n {query\n ? No tables found with title "{query}" \n : There are no data adapters to list }\n \n \n \n);\n\nconst DataRow = ({\n tables,\n caches,\n dataAdapters,\n query,\n errorStates,\n}: {\n tables: LookupTable[],\n caches: LookupTableCache[],\n dataAdapters: LookupTableAdapter[],\n query: string,\n errorStates: { [key: string]: { [key: string]: string } },\n}) => (tables.length > 0\n ? (\n <>\n {tables.map((table: LookupTable) => (\n \n ))}\n >\n ) : (\n \n ));\n\ntype Props = {\n tables: LookupTable[],\n caches: LookupTableCache[],\n dataAdapters: LookupTableAdapter[],\n pagination: PaginationType,\n errorStates: { [key: string]: { [key: string]: string } },\n paginationQueryParameter: PaginationQueryParameterResult,\n};\n\nconst LookupTablesOverview = ({\n tables,\n caches,\n dataAdapters,\n pagination,\n errorStates,\n paginationQueryParameter,\n}: Props) => {\n const [loading, setLoading] = React.useState(false);\n const [localPagination, setLocalPagination] = React.useState({\n currentPage: paginationQueryParameter.page || 1,\n currentPageSize: paginationQueryParameter.pageSize || 10,\n currentQuery: pagination.query ? decodeURI(pagination.query) : '',\n resetPage: paginationQueryParameter.resetPage,\n setPagination: paginationQueryParameter.setPagination,\n });\n\n React.useEffect(() => {\n const { currentPage, currentPageSize, currentQuery } = localPagination;\n\n LookupTablesActions.searchPaginated(currentPage, currentPageSize, currentQuery)\n .then(() => setLoading(false));\n }, [localPagination]);\n\n const onPageChange = React.useCallback((newPage: number, newPerPage: number) => {\n setLocalPagination({ ...localPagination, currentPage: newPage, currentPageSize: newPerPage });\n }, [localPagination]);\n\n const onSearch = React.useCallback((query: string) => {\n localPagination.resetPage();\n localPagination.setPagination({ page: 1, pageSize: localPagination.currentPageSize });\n setLocalPagination({ ...localPagination, currentPage: 1, currentQuery: query });\n }, [localPagination]);\n\n const onReset = React.useCallback(() => {\n localPagination.resetPage();\n localPagination.setPagination({ page: 1, pageSize: localPagination.currentPageSize });\n setLocalPagination({ ...localPagination, currentPage: 1, currentQuery: '' });\n }, [localPagination]);\n\n return (\n \n \n \n Configured lookup tables {pagination.total} total\n
\n \n \n \n \n \n \n Title \n Description \n Name \n Cache \n Data Adapter \n Actions \n \n \n {loading ? : (\n \n )}\n
\n \n \n \n
\n );\n};\n\nexport default withPaginationQueryParameter(LookupTablesOverview);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport Routes from 'routing/Routes';\nimport { ButtonToolbar, Row, Col, Button, Input } from 'components/bootstrap';\nimport { Link } from 'components/common/router';\nimport { LookupTablesActions } from 'stores/lookup-tables/LookupTablesStore';\nimport useScopePermissions from 'hooks/useScopePermissions';\nimport type { LookupTable, LookupTableCache, LookupTableAdapter } from 'logic/lookup-tables/types';\n\ntype Props = {\n table: LookupTable,\n cache: LookupTableCache,\n dataAdapter: LookupTableAdapter,\n};\n\ntype InputType = { value: string, valid: boolean };\nconst INIT_INPUT = { value: '', valid: false };\n\nconst LookupTableView = ({ table, cache, dataAdapter }: Props) => {\n const navigate = useNavigate();\n const { loadingScopePermissions, scopePermissions } = useScopePermissions(table);\n const [purgeKey, setPurgeKey] = React.useState(INIT_INPUT);\n const [lookupKey, setLookupKey] = React.useState(INIT_INPUT);\n const [lookupResult, setLookupResult] = React.useState(null);\n\n const handleEdit = (tableName: string) => () => {\n navigate(Routes.SYSTEM.LOOKUPTABLES.edit(tableName));\n };\n\n const handleInputOnChange = (event: React.BaseSyntheticEvent) => {\n const newValue = event.target.name === 'purgekey' ? { ...purgeKey } : { ...lookupKey };\n\n newValue.valid = event.target.value\n && event.target.value.replace(/\\s/g, '').length > 0;\n\n newValue.value = event.target.value;\n\n switch (event.target.name) {\n case 'purgekey':\n setPurgeKey(newValue);\n break;\n case 'lookupkey':\n setLookupKey(newValue);\n setLookupResult(null);\n break;\n default:\n break;\n }\n };\n\n const handlePurgeKey = (event: React.SyntheticEvent) => {\n event.preventDefault();\n\n if (purgeKey.valid) {\n LookupTablesActions.purgeKey(table, purgeKey.value).then(() => {\n setPurgeKey(INIT_INPUT);\n });\n }\n };\n\n const hadlePurgeAll = (event: React.SyntheticEvent) => {\n event.preventDefault();\n LookupTablesActions.purgeAll(table);\n };\n\n const handleLookupKey = (event: React.SyntheticEvent) => {\n event.preventDefault();\n\n if (lookupKey.valid) {\n LookupTablesActions.lookup(table.name, lookupKey.value).then((resp: any) => {\n setLookupResult(JSON.stringify(resp, null, 2));\n setLookupKey(INIT_INPUT);\n });\n }\n };\n\n return (\n \n \n {table.title}
\n {table.description}
\n \n - Data adapter
\n - \n \n {dataAdapter.title}\n \n
\n - Cache
\n - \n {cache.title}\n
\n
\n {(!loadingScopePermissions && scopePermissions?.is_mutable) && (\n \n )}\n {(table.default_single_value || table.default_multi_value) && (\n \n - Default single value
\n {table.default_single_value}
{' '}({table.default_single_value_type.toLowerCase()}) \n - Default multi value
\n {table.default_multi_value}
{' '}({table.default_multi_value_type.toLowerCase()}) \n
\n )}\n
\n Purge Cache
\n You can purge the complete cache for this lookup table or only the cache entry for a single key.
\n \n \n \n Test lookup
\n You can manually query the lookup table using this form. The data will be cached as configured by Graylog.
\n \n {lookupResult && (\n \n Lookup result
\n {lookupResult}
\n \n )}\n \n
\n );\n};\n\nexport default LookupTableView;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport { Formik, Form } from 'formik';\nimport PropTypes from 'prop-types';\nimport _omit from 'lodash/omit';\nimport type { LookupTable } from 'src/logic/lookup-tables/types';\n\nimport { LookupTablesActions } from 'stores/lookup-tables/LookupTablesStore';\nimport { Col, Row, Input } from 'components/bootstrap';\nimport { FormikFormGroup, JSONValueInput, FormSubmit } from 'components/common';\nimport { CachesContainer, CachePicker, DataAdaptersContainer, DataAdapterPicker } from 'components/lookup-tables';\nimport useScopePermissions from 'hooks/useScopePermissions';\nimport Routes from 'routing/Routes';\nimport useHistory from 'routing/useHistory';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\ntype LookupTableType = LookupTable & {\n enable_single_value: boolean,\n enable_multi_value: boolean,\n}\n\nconst INIT_TABLE_VALUES: LookupTableType = {\n id: undefined,\n title: '',\n description: '',\n name: '',\n cache_id: undefined,\n data_adapter_id: undefined,\n enable_single_value: false,\n default_single_value: '',\n default_single_value_type: 'NULL',\n enable_multi_value: false,\n default_multi_value: '',\n default_multi_value_type: 'NULL',\n content_pack: null,\n};\n\ntype Props = {\n saved: () => void,\n create: boolean,\n table: LookupTableType,\n};\n\nconst LookupTableForm = ({ saved, create, table }: Props) => {\n const { loadingScopePermissions, scopePermissions } = useScopePermissions(table);\n const history = useHistory();\n const sendTelemetry = useSendTelemetry();\n\n const validate = (values: LookupTableType) => {\n const errors = {};\n const requiredFields: (keyof LookupTableType)[] = [\n 'title',\n 'name',\n 'cache_id',\n 'data_adapter_id',\n 'cache_id',\n 'default_single_value',\n 'default_multi_value',\n ];\n\n requiredFields.forEach((requiredField) => {\n if (!values[requiredField]) {\n if (requiredField === 'default_single_value' && !values.enable_single_value) return;\n if (requiredField === 'default_multi_value' && !values.enable_multi_value) return;\n errors[requiredField] = 'Required';\n }\n });\n\n return errors;\n };\n\n const handleSubmit = (values: LookupTableType) => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.LUT[create ? 'CREATED' : 'UPDATED'], {\n app_pathname: 'lut',\n app_section: 'lut',\n });\n\n let promise: Promise;\n\n const valuesToSave: LookupTable = _omit(values, ['enable_single_value', 'enable_multi_value']);\n\n if (create) {\n promise = LookupTablesActions.create(valuesToSave);\n } else {\n promise = LookupTablesActions.update(valuesToSave);\n }\n\n return promise.then(() => {\n saved();\n });\n };\n\n const initialValues: LookupTableType = {\n ...INIT_TABLE_VALUES,\n ...table,\n enable_single_value: table.default_single_value !== '',\n enable_multi_value: table.default_multi_value !== '',\n };\n\n const onCancel = () => history.push(Routes.SYSTEM.LOOKUPTABLES.OVERVIEW);\n const updatable = !create && !loadingScopePermissions && scopePermissions?.is_mutable;\n\n return (\n {\n const errors = await formikHelpers.validateForm();\n\n if (Object.keys(errors).length === 0) {\n return handleSubmit(values);\n }\n\n return Promise.resolve();\n }}>\n {({ values, errors, touched, setFieldValue, setFieldTouched, setValues, isSubmitting }) => (\n \n )}\n \n );\n};\n\nLookupTableForm.propTypes = {\n saved: PropTypes.func.isRequired,\n create: PropTypes.bool,\n table: PropTypes.object,\n};\n\nLookupTableForm.defaultProps = {\n create: true,\n table: INIT_TABLE_VALUES,\n};\n\nexport default LookupTableForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Row, Col } from 'components/bootstrap';\nimport { LookupTableForm } from 'components/lookup-tables';\n\nclass LookupTableCreate extends React.Component {\n static propTypes = {\n saved: PropTypes.func.isRequired,\n validate: PropTypes.func,\n validationErrors: PropTypes.object,\n };\n\n static defaultProps = {\n validate: null,\n validationErrors: {},\n };\n\n state = {\n table: undefined,\n };\n\n render() {\n return (\n \n \n \n \n \n
\n \n );\n }\n}\n\nexport default LookupTableCreate;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled from 'styled-components';\n\nimport useHistory from 'routing/useHistory';\nimport { Link } from 'components/common/router';\nimport { Spinner } from 'components/common';\nimport { Button } from 'components/bootstrap';\nimport Routes from 'routing/Routes';\nimport { MetricsMapper, MetricContainer, CounterRate } from 'components/metrics';\nimport NumberUtils from 'util/NumberUtils';\nimport { LookupTableCachesActions } from 'stores/lookup-tables/LookupTableCachesStore';\nimport type { LookupTableCache } from 'logic/lookup-tables/types';\nimport useScopePermissions from 'hooks/useScopePermissions';\nimport ButtonToolbar from 'components/bootstrap/ButtonToolbar';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\ntype Props = {\n cache: LookupTableCache,\n};\n\nconst Actions = styled(ButtonToolbar)`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n`;\n\nconst CacheTableEntry = ({ cache }: Props) => {\n const history = useHistory();\n const { loadingScopePermissions, scopePermissions } = useScopePermissions(cache);\n const sendTelemetry = useSendTelemetry();\n\n const countMap = {\n requests: `org.graylog2.lookup.caches.${cache.id}.requests`,\n hits: `org.graylog2.lookup.caches.${cache.id}.hits`,\n misses: `org.graylog2.lookup.caches.${cache.id}.misses`,\n };\n\n const entriesMap = {\n count: `org.graylog2.lookup.caches.${cache.id}.entries`,\n };\n\n const computeEntriesMetrics = (metrics: any) => {\n const total = Object.keys(metrics).reduce((acc: number, nodeId: string) => (\n acc + (Number.isNaN(metrics[nodeId].count.metric.value) ? 0 : metrics[nodeId].count.metric.value)\n ), 0);\n\n if (total < 0) return 'N/A';\n\n return NumberUtils.formatNumber(total);\n };\n\n const computeCountMetrics = (metrics: any) => {\n const totalHits = Object.keys(metrics).reduce((acc: number, nodeId: string) => (\n acc + (Number.isNaN(metrics[nodeId].hits.metric.rate.total) ? 0 : metrics[nodeId].hits.metric.rate.total)\n ), 0);\n\n const totalMisses = Object.keys(metrics).reduce((acc: number, nodeId: string) => (\n acc + (Number.isNaN(metrics[nodeId].misses.metric.rate.total) ? 0 : metrics[nodeId].misses.metric.rate.total)\n ), 0);\n\n const total = totalHits + totalMisses;\n if (total < 1) return 'N/A';\n const hitRate = (totalHits * 100.0) / total;\n\n return `${NumberUtils.formatNumber(hitRate)}%`;\n };\n\n const handleEdit = React.useCallback(() => {\n history.push(Routes.SYSTEM.LOOKUPTABLES.CACHES.edit(cache.name));\n }, [history, cache.name]);\n\n const handleDelete = React.useCallback(() => {\n // eslint-disable-next-line no-alert\n const shouldDelete = window.confirm(`Are you sure you want to delete cache \"${cache.title}\"?`);\n\n if (shouldDelete) {\n LookupTableCachesActions.delete(cache.id).then(() => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.LUT.CACHE_DELETED, {\n app_pathname: 'lut',\n app_section: 'lut_cache',\n });\n\n LookupTableCachesActions.reloadPage();\n });\n }\n }, [cache.title, cache.id, sendTelemetry]);\n\n return (\n \n \n \n {cache.title}\n \n {cache.description} \n {cache.name} \n \n \n \n \n \n \n \n \n \n \n \n \n {loadingScopePermissions ? : scopePermissions.is_mutable && (\n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default CacheTableEntry;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport {\n OverlayTrigger,\n PaginatedList,\n SearchForm,\n Spinner,\n Icon,\n NoSearchResult,\n NoEntitiesExist,\n} from 'components/common';\nimport { Row, Col, Table, Popover, Button } from 'components/bootstrap';\nimport CacheTableEntry from 'components/lookup-tables/CacheTableEntry';\nimport withPaginationQueryParameter from 'components/common/withPaginationQueryParameter';\nimport { LookupTableCachesActions } from 'stores/lookup-tables/LookupTableCachesStore';\nimport type { LookupTableCache, PaginationType } from 'logic/lookup-tables/types';\nimport type { PaginationQueryParameterResult } from 'hooks/usePaginationQueryParameter';\n\nimport Styles from './Overview.css';\n\nconst ScrollContainer = styled.div`\n overflow-x: auto;\n`;\n\nconst buildHelpPopover = () => (\n \n Available search fields
\n \n \n \n Field \n Description \n \n \n \n \n id \n Cache ID \n \n \n title \n The title of the cache \n \n \n name \n The reference name of the cache \n \n \n description \n The description of cache \n \n \n
\n Examples
\n \n Find caches by parts of their names:
\n name:guava
\n name:gua\n
\n \n Searching without a field name matches against the title
field:
\n guava
is the same as
\n title:guava\n
\n \n);\n\nconst NoResults = ({ query }: { query: string }) => (\n \n \n \n {query\n ? No caches found with title "{query}" \n : There are no caches to list }\n \n \n \n);\n\nconst DataRow = ({ caches, query }: { caches: LookupTableCache[], query: string }) => (caches.length > 0\n ? (\n <>\n {caches.map((cache: LookupTableCache) => (\n \n ))}\n >\n ) : (\n \n ));\n\ntype Props = {\n caches: LookupTableCache[],\n pagination: PaginationType,\n paginationQueryParameter: PaginationQueryParameterResult,\n};\n\nconst queryHelpComponent = (\n \n \n \n);\n\nconst CachesOverview = ({ caches, pagination, paginationQueryParameter }: Props) => {\n const [loading, setLoading] = React.useState(false);\n const [localPagination, setLocalPagination] = React.useState({\n currentPage: paginationQueryParameter.page || 1,\n currentPageSize: paginationQueryParameter.pageSize || 10,\n currentQuery: pagination.query ? decodeURI(pagination.query) : '',\n resetPage: paginationQueryParameter.resetPage,\n setPagination: paginationQueryParameter.setPagination,\n });\n\n React.useEffect(() => {\n const { currentPage, currentPageSize, currentQuery } = localPagination;\n\n LookupTableCachesActions.searchPaginated(currentPage, currentPageSize, currentQuery)\n .then(() => setLoading(false));\n }, [localPagination]);\n\n const onPageChange = React.useCallback((newPage: number, newPerPage: number) => {\n setLocalPagination({ ...localPagination, currentPage: newPage, currentPageSize: newPerPage });\n }, [localPagination]);\n\n const onSearch = React.useCallback((query: string) => {\n localPagination.resetPage();\n localPagination.setPagination({ page: 1, pageSize: localPagination.currentPageSize });\n setLocalPagination({ ...localPagination, currentPage: 1, currentQuery: query });\n }, [localPagination]);\n\n const onReset = React.useCallback(() => {\n localPagination.resetPage();\n localPagination.setPagination({ page: 1, pageSize: localPagination.currentPageSize });\n setLocalPagination({ ...localPagination, currentPage: 1, currentQuery: '' });\n }, [localPagination]);\n\n return (\n \n \n \n Configured lookup Caches {pagination.total} total\n
\n \n \n \n \n \n \n Title \n Description \n Name \n Entries \n Hit rate \n Throughput \n Actions \n \n \n {loading ? : (\n \n )}\n
\n \n \n \n
\n );\n};\n\nexport default withPaginationQueryParameter(CachesOverview);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport usePluginEntities from 'hooks/usePluginEntities';\nimport Routes from 'routing/Routes';\nimport { Row, Col, Button } from 'components/bootstrap';\nimport useScopePermissions from 'hooks/useScopePermissions';\nimport type { LookupTableCache } from 'logic/lookup-tables/types';\n\nimport type { CachePluginType } from './types';\nimport {\n SummaryContainer,\n SummaryRow,\n Title,\n Value,\n} from './caches/SummaryComponents.styled';\n\ntype Props = {\n cache: LookupTableCache,\n};\n\nconst Cache = ({ cache }: Props) => {\n const navigate = useNavigate();\n const { loadingScopePermissions, scopePermissions } = useScopePermissions(cache);\n const plugin = usePluginEntities('lookupTableCaches').find((p: CachePluginType) => p.type === cache.config?.type);\n\n if (!plugin) {\n return Unknown cache type {cache.config.type}. Is the plugin missing?
;\n }\n\n const handleEdit = (cacheName: string) => () => {\n navigate(Routes.SYSTEM.LOOKUPTABLES.CACHES.edit(cacheName));\n };\n\n return (\n \n \n {cache.title} ({plugin.displayName})
\n \n \n Description: \n {cache.description || No description.} \n \n \n Configuration
\n {React.createElement(plugin.summaryComponent, { cache: cache })}\n {(!loadingScopePermissions && scopePermissions?.is_mutable) && (\n \n )}\n \n
\n );\n};\n\nexport default Cache;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport { Formik, Form } from 'formik';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport type { LookupTableCache, validationErrorsType } from 'src/logic/lookup-tables/types';\n\nimport { Col, Row } from 'components/bootstrap';\nimport { FormikFormGroup, FormSubmit } from 'components/common';\nimport { LookupTableCachesActions } from 'stores/lookup-tables/LookupTableCachesStore';\nimport useScopePermissions from 'hooks/useScopePermissions';\nimport Routes from 'routing/Routes';\nimport useHistory from 'routing/useHistory';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\ntype TitleProps = {\n title: string,\n typeName: string,\n create: boolean,\n};\n\nconst Title = ({ title, typeName, create }: TitleProps) => {\n const TagName = create ? 'h3' : 'h2';\n\n return (\n \n {title} ({typeName})\n \n );\n};\n\nconst INIT_CACHE: LookupTableCache = {\n id: undefined,\n title: '',\n description: '',\n name: '',\n config: {},\n};\n\ntype Props = {\n type: string,\n saved: () => void,\n title: string,\n create?: boolean,\n cache?: LookupTableCache,\n validate?: (arg: LookupTableCache) => void,\n validationErrors?: validationErrorsType,\n};\n\nconst CacheForm = ({ type, saved, title, create, cache, validate, validationErrors }: Props) => {\n const configRef = React.useRef(null);\n const [generateName, setGenerateName] = React.useState(create);\n const { loadingScopePermissions, scopePermissions } = useScopePermissions(cache);\n const sendTelemetry = useSendTelemetry();\n\n const plugin = React.useMemo(() => PluginStore.exports('lookupTableCaches').find((p) => p.type === type), [type]);\n\n const pluginName = React.useMemo(() => (plugin.displayName || type), [plugin, type]);\n const DocComponent = React.useMemo(() => (plugin.documentationComponent), [plugin]);\n const configFieldSet = React.useMemo(() => {\n if (plugin) {\n return React.createElement(\n plugin.formComponent, { config: cache.config, ref: configRef },\n );\n }\n\n return null;\n }, [plugin, cache.config]);\n\n const sanitizeName = (inName: string) => inName.trim().replace(/\\W+/g, '-').toLocaleLowerCase();\n\n const handleTitleChange = (values: LookupTableCache, setValues: any) => (event: React.BaseSyntheticEvent) => {\n if (!generateName) return;\n const safeName = sanitizeName(event.target.value);\n\n setValues({\n ...values,\n title: event.target.value,\n name: safeName,\n });\n };\n\n const handleValidation = (values: LookupTableCache) => {\n const errors: any = {};\n\n if (!values.title) errors.title = 'Required';\n\n if (!values.name) {\n errors.name = 'Required';\n } else {\n validate(values);\n }\n\n if (values.config.type !== 'none') {\n const confErrors = configRef.current?.validate() || {};\n if (!isEmpty(confErrors)) errors.config = confErrors;\n }\n\n return errors;\n };\n\n const handleSubmit = (values: LookupTableCache) => {\n const promise = create\n ? LookupTableCachesActions.create(values)\n : LookupTableCachesActions.update(values);\n\n return promise.then(() => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.LUT[create ? 'CACHE_CREATED' : 'CACHE_UPDATED'], {\n app_pathname: 'lut',\n app_section: 'lut_cache',\n event_details: {\n type: values?.config?.type,\n },\n });\n\n saved();\n });\n };\n\n const history = useHistory();\n const onCancel = () => history.push(Routes.SYSTEM.LOOKUPTABLES.CACHES.OVERVIEW);\n const updatable = !create && !loadingScopePermissions && scopePermissions?.is_mutable;\n\n return (\n <>\n \n \n \n \n {({ errors, values, setValues, isSubmitting }) => (\n \n )}\n \n \n {DocComponent ? : null}\n
\n >\n );\n};\n\nCacheForm.defaultProps = {\n create: true,\n cache: INIT_CACHE,\n validate: null,\n validationErrors: {},\n};\n\nexport default CacheForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport type { LookupTableCache, validationErrorsType } from 'src/logic/lookup-tables/types';\n\nimport usePluginEntities from 'hooks/usePluginEntities';\nimport { Row, Col, Input } from 'components/bootstrap';\nimport { Select } from 'components/common';\nimport { defaultCompare as naturalSort } from 'logic/DefaultCompare';\n\nimport CacheForm from './CacheForm';\nimport type { CachePluginType } from './types';\n\nconst INIT_CACHE: LookupTableCache = {\n id: null,\n title: '',\n name: '',\n description: '',\n config: { type: 'none' },\n};\n\ntype TypesType = { type?: string, lable?: string };\ntype cacheTypeOptionsType = { value: string, label: string }\n\ntype Props = {\n saved: () => void,\n types: TypesType[],\n validate: () => void,\n validationErrors: validationErrorsType,\n};\n\nconst CacheCreate = ({ saved, types, validate, validationErrors }: Props) => {\n const [type, setType] = React.useState(null);\n const cachePlugins = usePluginEntities('lookupTableCaches');\n\n const plugins = React.useMemo(() => (\n cachePlugins.reduce((acc: any, plugin: CachePluginType) => {\n acc[plugin.type] = plugin;\n\n return acc;\n }, {})\n ), [cachePlugins]);\n\n const cacheTypes = React.useMemo(() => (\n Object.values(types)\n .map((inType: TypesType) => ({ value: inType.type, label: plugins[inType.type].displayName }))\n .sort((a: cacheTypeOptionsType, b: cacheTypeOptionsType) => naturalSort(a.label.toLowerCase(), b.label.toLowerCase()))\n ), [types, plugins]);\n\n const cache = React.useMemo(() => {\n if (type) {\n return {\n ...INIT_CACHE,\n config: { ...types[type]?.default_config },\n };\n }\n\n return null;\n }, [type, types]);\n\n const handleSelect = (selectedType: string) => {\n setType(selectedType);\n };\n\n return (\n <>\n \n \n \n \n \n \n
\n {cache && (\n \n \n \n \n
\n )}\n >\n );\n};\n\nexport default CacheCreate;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { useField } from 'formik';\nimport type { LookupTableCache } from 'src/logic/lookup-tables/types';\n\nimport { defaultCompare as naturalSort } from 'logic/DefaultCompare';\nimport { Input } from 'components/bootstrap';\nimport { Select } from 'components/common';\n\ntype Props = {\n caches: LookupTableCache[],\n}\n\nconst CachePicker = ({ caches }: Props) => {\n const [, { value, touched, error }, { setTouched, setValue }] = useField('cache_id');\n const sortedCaches = caches.map((cache) => ({ value: cache.id, label: `${cache.title} (${cache.name})` })).sort((a, b) => naturalSort(a.label.toLowerCase(), b.label.toLowerCase()));\n\n const errorMessage = touched ? error : '';\n\n return (\n \n );\n};\n\nCachePicker.propTypes = {\n caches: PropTypes.array,\n};\n\nCachePicker.defaultProps = {\n caches: [],\n};\n\nexport default CachePicker;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n// eslint-disable-next-line\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { Spinner } from 'components/common';\nimport { LookupTableCachesActions, LookupTableCachesStore } from 'stores/lookup-tables/LookupTableCachesStore';\n\nconst CachesContainer = createReactClass({\n // eslint-disable-next-line\n displayName: 'CachesContainer',\n\n // eslint-disable-next-line\n propTypes: {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n },\n\n mixins: [Reflux.connect(LookupTableCachesStore)],\n\n getDefaultProps() {\n return {\n children: null,\n };\n },\n\n componentDidMount() {\n // TODO the 10k items is bad. we need a searchable/scrollable long list select box\n LookupTableCachesActions.searchPaginated(1, 10000, null);\n },\n\n render() {\n if (!this.state.caches) {\n return ;\n }\n\n const childrenWithProps = React.Children.map(this.props.children,\n (child) => React.cloneElement(child,\n { caches: this.state.caches, pagination: this.state.pagination }));\n\n return {childrenWithProps};\n },\n});\n\nexport default CachesContainer;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled from 'styled-components';\n\nimport { Link } from 'components/common/router';\nimport { Spinner } from 'components/common';\nimport Routes from 'routing/Routes';\nimport { Button, ButtonToolbar } from 'components/bootstrap';\nimport { ErrorPopover } from 'components/lookup-tables';\nimport { MetricContainer, CounterRate } from 'components/metrics';\nimport { LookupTableDataAdaptersActions } from 'stores/lookup-tables/LookupTableDataAdaptersStore';\nimport type { LookupTableAdapter } from 'logic/lookup-tables/types';\nimport useScopePermissions from 'hooks/useScopePermissions';\nimport useHistory from 'routing/useHistory';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nconst Actions = styled(ButtonToolbar)`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n`;\n\ntype Props = {\n adapter: LookupTableAdapter,\n error: string,\n};\n\nconst DataAdapterTableEntry = ({ adapter, error = null }: Props) => {\n const history = useHistory();\n const { loadingScopePermissions, scopePermissions } = useScopePermissions(adapter);\n const sendTelemetry = useSendTelemetry();\n\n const { name: adapterName, title: adapterTitle, description: adapterDescription, id: adapterId } = adapter;\n\n const _onEdit = React.useCallback(() => {\n history.push(Routes.SYSTEM.LOOKUPTABLES.DATA_ADAPTERS.edit(adapterName));\n }, [history, adapterName]);\n\n const _onDelete = React.useCallback(() => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.LUT.DATA_ADAPTER_DELETED, {\n app_pathname: 'lut',\n app_section: 'lut_data_adapter',\n });\n\n // eslint-disable-next-line no-alert\n if (window.confirm(`Are you sure you want to delete data adapter \"${adapterTitle}\"?`)) {\n LookupTableDataAdaptersActions.delete(adapter.id).then(() => {\n LookupTableDataAdaptersActions.reloadPage();\n });\n }\n }, [adapterTitle, adapter.id, sendTelemetry]);\n\n return (\n \n \n \n {error && }\n {adapterTitle}\n \n {adapterDescription} \n {adapterName} \n \n \n \n \n \n \n {loadingScopePermissions ? : scopePermissions.is_mutable && (\n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default DataAdapterTableEntry;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport { Row, Col, Table, Popover, Button } from 'components/bootstrap';\nimport {\n OverlayTrigger,\n PaginatedList,\n SearchForm,\n Spinner,\n Icon,\n NoSearchResult,\n NoEntitiesExist,\n} from 'components/common';\nimport DataAdapterTableEntry from 'components/lookup-tables/DataAdapterTableEntry';\nimport withPaginationQueryParameter from 'components/common/withPaginationQueryParameter';\nimport { LookupTableDataAdaptersActions } from 'stores/lookup-tables/LookupTableDataAdaptersStore';\nimport type { LookupTableAdapter, PaginationType } from 'logic/lookup-tables/types';\nimport type { PaginationQueryParameterResult } from 'hooks/usePaginationQueryParameter';\n\nimport Styles from './Overview.css';\n\nconst ScrollContainer = styled.div`\n overflow-x: auto;\n`;\n\nconst buildHelpPopover = () => (\n \n Available search fields
\n \n \n \n Field \n Description \n \n \n \n \n id \n Data Adapter ID \n \n \n title \n The title of the data adapter \n \n \n name \n The reference name of the data adapter \n \n \n description \n The description of data adapter \n \n \n
\n Example
\n \n Find data adapters by parts of their names:
\n name:geoip
\n name:geo\n
\n \n Searching without a field name matches against the title
field:
\n geoip
is the same as
\n title:geoip\n
\n \n);\n\nconst queryHelpComponent = (\n \n \n \n);\n\nconst NoResults = ({ query }: { query: string }) => (\n \n \n \n {query\n ? No data adapters found with title "{query}" \n : There are no data adapters to list }\n \n \n \n);\n\nconst DataRow = ({\n dataAdapters,\n query,\n errors,\n}: {\n dataAdapters: LookupTableAdapter[],\n query: string,\n errors: { [key: string]: string },\n}) => (dataAdapters.length > 0\n ? (\n <>\n {dataAdapters.map((dataAdapter: LookupTableAdapter) => (\n \n ))}\n >\n ) : (\n \n ));\n\ntype Props = {\n dataAdapters: LookupTableAdapter[],\n pagination: PaginationType,\n errorStates: { [key: string]: { [key: string]: string } },\n paginationQueryParameter: PaginationQueryParameterResult,\n};\n\nconst DataAdaptersOverview = ({ dataAdapters, pagination, errorStates, paginationQueryParameter }: Props) => {\n const [loading, setLoading] = React.useState(false);\n const [localPagination, setLocalPagination] = React.useState({\n currentPage: paginationQueryParameter.page || 1,\n currentPageSize: paginationQueryParameter.pageSize || 10,\n currentQuery: pagination.query ? decodeURI(pagination.query) : '',\n resetPage: paginationQueryParameter.resetPage,\n setPagination: paginationQueryParameter.setPagination,\n });\n\n React.useEffect(() => {\n const { currentPage, currentPageSize, currentQuery } = localPagination;\n\n LookupTableDataAdaptersActions.searchPaginated(currentPage, currentPageSize, currentQuery)\n .then(() => setLoading(false));\n }, [localPagination]);\n\n const onPageChange = React.useCallback((newPage: number, newPerPage: number) => {\n setLocalPagination({ ...localPagination, currentPage: newPage, currentPageSize: newPerPage });\n }, [localPagination]);\n\n const onSearch = React.useCallback((query: string) => {\n localPagination.resetPage();\n localPagination.setPagination({ page: 1, pageSize: localPagination.currentPageSize });\n setLocalPagination({ ...localPagination, currentPage: 1, currentQuery: query });\n }, [localPagination]);\n\n const onReset = React.useCallback(() => {\n localPagination.resetPage();\n localPagination.setPagination({ page: 1, pageSize: localPagination.currentPageSize });\n setLocalPagination({ ...localPagination, currentPage: 1, currentQuery: '' });\n }, [localPagination]);\n\n return (\n \n \n \n Configured lookup Data Adapters {pagination.total} total\n
\n \n \n \n \n \n \n Title \n Description \n Name \n Throughput \n Actions \n \n \n {loading ? : (\n \n )}\n
\n \n \n \n
\n );\n};\n\nexport default withPaginationQueryParameter(DataAdaptersOverview);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport styled from 'styled-components';\n\nconst ConfigSummaryDefinitionListWrapper = styled.div`\n dl {\n margin-top: 10px;\n\n dt {\n float: left;\n clear: left;\n }\n\n dd {\n margin-left: 185px;\n word-wrap: break-word;\n\n &:not(:last-child) {\n border-bottom: 1px solid #ececec;\n margin-bottom: 5px;\n padding-bottom: 5px;\n }\n }\n }\n`;\n\nexport default ConfigSummaryDefinitionListWrapper;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport usePluginEntities from 'hooks/usePluginEntities';\nimport { LinkContainer } from 'components/common/router';\nimport { Row, Col, Button, Input } from 'components/bootstrap';\nimport { getValueFromInput } from 'util/FormsUtils';\nimport Routes from 'routing/Routes';\nimport { LookupTableDataAdaptersActions } from 'stores/lookup-tables/LookupTableDataAdaptersStore';\nimport type { LookupTableAdapter } from 'logic/lookup-tables/types';\nimport useScopePermissions from 'hooks/useScopePermissions';\n\nimport type { DataAdapterPluginType } from './types';\nimport ConfigSummaryDefinitionListWrapper from './ConfigSummaryDefinitionListWrapper';\n\ntype Props = {\n dataAdapter: LookupTableAdapter,\n};\n\nconst DataAdapter = ({ dataAdapter }: Props) => {\n const [lookupKey, setLookupKey] = React.useState('');\n const [lookupResult, setLookupResult] = React.useState(null);\n const { loadingScopePermissions, scopePermissions } = useScopePermissions(dataAdapter);\n\n const _onChange = (event: React.SyntheticEvent) => {\n setLookupKey(getValueFromInput(event.target));\n };\n\n const _lookupKey = (event: React.SyntheticEvent) => {\n event.preventDefault();\n\n LookupTableDataAdaptersActions.lookup(dataAdapter.name, lookupKey).then((result: LookupTableAdapter[]) => {\n setLookupResult(result);\n });\n };\n\n const plugin = usePluginEntities('lookupTableAdapters').find((p: DataAdapterPluginType) => p.type === dataAdapter.config?.type);\n\n if (!plugin) {\n return Unknown data adapter type {dataAdapter.config.type}. Is the plugin missing?
;\n }\n\n const { title: adapterTitle, description: adapterDescription, name: adapterName } = dataAdapter;\n const summary = plugin.summaryComponent;\n\n return (\n \n \n \n {adapterTitle}\n {' '}\n ({plugin.displayName})\n
\n \n \n - Description
\n - {adapterDescription || No description.}
\n
\n \n Configuration
\n \n {React.createElement(summary, { dataAdapter: dataAdapter })}\n \n {(!loadingScopePermissions && scopePermissions?.is_mutable) && (\n \n \n \n )}\n \n \n Test lookup
\n You can manually trigger the data adapter using this form. The data will be not cached.
\n \n {lookupResult && (\n \n Lookup result
\n {JSON.stringify(lookupResult, null, 2)}
\n \n )}\n \n
\n );\n};\n\nexport default DataAdapter;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport isEqual from 'lodash/isEqual';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { TimeUnitInput, FormSubmit } from 'components/common';\nimport { Col, Row, Input } from 'components/bootstrap';\nimport ObjectUtils from 'util/ObjectUtils';\nimport { getValueFromInput } from 'util/FormsUtils';\nimport { LookupTableDataAdaptersActions } from 'stores/lookup-tables/LookupTableDataAdaptersStore';\nimport Routes from 'routing/Routes';\nimport withHistory from 'routing/withHistory';\nimport withTelemetry from 'logic/telemetry/withTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nclass DataAdapterForm extends React.Component {\n validationCheckTimer = undefined;\n\n _input = undefined;\n\n static propTypes = {\n type: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n saved: PropTypes.func.isRequired,\n create: PropTypes.bool,\n dataAdapter: PropTypes.object,\n validate: PropTypes.func,\n validationErrors: PropTypes.object,\n sendTelemetry: PropTypes.func,\n history: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n create: true,\n dataAdapter: {\n id: undefined,\n title: '',\n description: '',\n name: '',\n custom_error_ttl_enabled: false,\n custom_error_ttl: null,\n custom_error_ttl_unit: null,\n config: {},\n },\n validate: null,\n validationErrors: {},\n sendTelemetry: () => {},\n };\n\n constructor(props) {\n super(props);\n\n this.state = this._initialState(props.dataAdapter);\n }\n\n componentDidMount() {\n this._input.getInputDOMNode().focus();\n const { create, dataAdapter } = this.props;\n\n if (!create) {\n // Validate when mounted to immediately show errors for invalid objects\n this._validate(dataAdapter);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { type: currentType } = this.props;\n\n if (prevProps.type !== currentType) {\n this._input.getInputDOMNode().focus();\n }\n\n const { dataAdapter } = this.props;\n\n if (isEqual(dataAdapter, prevProps.dataAdapter)) {\n // props haven't changed, don't update our state from them\n return;\n }\n\n this.updateState(dataAdapter);\n }\n\n componentWillUnmount() {\n this._clearTimer();\n }\n\n updateState = (dataAdapter) => {\n this.setState(this._initialState(dataAdapter));\n };\n\n _initialState = (dataAdapter) => {\n const adapter = ObjectUtils.clone(dataAdapter);\n const { create } = this.props;\n\n return {\n // when creating always initially auto-generate the adapter name,\n // this will be false if the user changed the adapter name manually\n generateAdapterName: create,\n isFormDisabled: false,\n dataAdapter: {\n id: adapter.id,\n title: adapter.title,\n description: adapter.description,\n name: adapter.name,\n custom_error_ttl_enabled: adapter.custom_error_ttl_enabled,\n custom_error_ttl: adapter.custom_error_ttl,\n custom_error_ttl_unit: adapter.custom_error_ttl_unit,\n config: adapter.config,\n },\n };\n };\n\n _clearTimer = () => {\n if (this.validationCheckTimer !== undefined) {\n clearTimeout(this.validationCheckTimer);\n this.validationCheckTimer = undefined;\n }\n };\n\n _setIsFormDisabled = (isDisabled) => {\n this.setState({ isFormDisabled: isDisabled });\n };\n\n _validate = (adapter) => {\n const { validate } = this.props;\n\n // first cancel outstanding validation timer, we have new data\n this._clearTimer();\n\n if (validate) {\n this.validationCheckTimer = setTimeout(() => validate(adapter), 500);\n }\n };\n\n _onChange = (event) => {\n const { dataAdapter: dataAdapterState } = this.state;\n const dataAdapter = ObjectUtils.clone(dataAdapterState);\n\n dataAdapter[event.target.name] = getValueFromInput(event.target);\n let { generateAdapterName } = this.state;\n\n if (generateAdapterName && event.target.name === 'title') {\n // generate the name\n dataAdapter.name = this._sanitizeTitle(dataAdapter.title);\n }\n\n if (event.target.name === 'name') {\n // the adapter name has been changed manually, no longer automatically change it\n generateAdapterName = false;\n }\n\n this._validate(dataAdapter);\n this.setState({ dataAdapter: dataAdapter, generateAdapterName: generateAdapterName });\n };\n\n _onConfigChange = (event) => {\n const { dataAdapter: dataAdapterState } = this.state;\n const dataAdapter = ObjectUtils.clone(dataAdapterState);\n\n dataAdapter.config[event.target.name] = getValueFromInput(event.target);\n this._validate(dataAdapter);\n this.setState({ dataAdapter: dataAdapter });\n };\n\n _updateConfig = (newConfig) => {\n const { dataAdapter: dataAdapterState } = this.state;\n const dataAdapter = ObjectUtils.clone(dataAdapterState);\n\n dataAdapter.config = newConfig;\n this._validate(dataAdapter);\n this.setState({ dataAdapter: dataAdapter });\n };\n\n updateCustomErrorTTL = (value, unit, enabled) => {\n this._updateCustomErrorTTL(value, unit, enabled, 'custom_error_ttl');\n };\n\n _updateCustomErrorTTL = (value, unit, enabled, fieldPrefix) => {\n const { dataAdapter: dataAdapterState } = this.state;\n const dataAdapter = ObjectUtils.clone(dataAdapterState);\n\n if (enabled && value) {\n dataAdapter[fieldPrefix] = enabled && value ? value : null;\n dataAdapter[`${fieldPrefix}_enabled`] = enabled;\n } else {\n dataAdapter[fieldPrefix] = null;\n dataAdapter[`${fieldPrefix}_enabled`] = false;\n }\n\n dataAdapter[`${fieldPrefix}_unit`] = enabled ? unit : null;\n this._validate(dataAdapter);\n this.setState({ dataAdapter: dataAdapter });\n };\n\n _save = (event) => {\n if (event) {\n event.preventDefault();\n }\n\n const { dataAdapter } = this.state;\n const { create, saved, sendTelemetry } = this.props;\n\n sendTelemetry(TELEMETRY_EVENT_TYPE.LUT[create ? 'DATA_ADAPTER_CREATED' : 'DATA_ADAPTER_UPDATED'], {\n app_pathname: 'lut',\n app_section: 'lut_data_adapter',\n event_details: {\n type: dataAdapter?.config?.type,\n },\n });\n\n let promise;\n\n if (create) {\n promise = LookupTableDataAdaptersActions.create(dataAdapter);\n } else {\n promise = LookupTableDataAdaptersActions.update(dataAdapter);\n }\n\n promise.then(() => {\n saved();\n });\n };\n\n // eslint-disable-next-line\n _sanitizeTitle = (title) => {\n return title.trim().replace(/\\W+/g, '-').toLocaleLowerCase();\n };\n\n _validationState = (fieldName) => {\n const { validationErrors } = this.props;\n\n if (validationErrors[fieldName]) {\n return 'error';\n }\n\n return null;\n };\n\n _validationMessage = (fieldName, defaultText) => {\n const { validationErrors } = this.props;\n\n if (validationErrors[fieldName]) {\n return (\n \n {defaultText}\n \n {validationErrors[fieldName][0]}\n \n );\n }\n\n return {defaultText};\n };\n\n // eslint-disable-next-line\n _renderTitle = (title, typeName, create) => {\n const TagName = create ? 'h3' : 'h2';\n\n return {title} ({typeName}) ;\n };\n\n render() {\n const { dataAdapter, isFormDisabled } = this.state;\n const { create, type, title, history } = this.props;\n const adapterPlugins = PluginStore.exports('lookupTableAdapters');\n\n const plugin = adapterPlugins.filter((p) => p.type === type);\n const onCancel = () => history.push(Routes.SYSTEM.LOOKUPTABLES.DATA_ADAPTERS.OVERVIEW);\n let configFieldSet = null;\n let documentationComponent = null;\n let pluginDisplayName = dataAdapter.config.type;\n\n if (plugin && plugin.length > 0) {\n const p = plugin[0];\n\n pluginDisplayName = p.displayName;\n\n configFieldSet = React.createElement(p.formComponent, {\n config: dataAdapter.config,\n handleFormEvent: this._onConfigChange,\n updateConfig: this._updateConfig,\n validationMessage: this._validationMessage,\n validationState: this._validationState,\n setDisableFormSubmission: this._setIsFormDisabled,\n });\n\n if (p.documentationComponent) {\n documentationComponent = React.createElement(p.documentationComponent, {\n dataAdapterId: dataAdapter.id,\n });\n }\n }\n\n let documentationColumn = null;\n let formRowWidth = 8; // If there is no documentation component, we don't use the complete page\n\n // width\n if (documentationComponent) {\n formRowWidth = 6;\n\n documentationColumn = (\n \n {documentationComponent}\n \n );\n }\n\n return (\n <>\n \n {this._renderTitle(title, pluginDisplayName, create)}\n
\n \n \n \n \n {documentationColumn}\n
\n >\n );\n }\n}\n\nexport default withTelemetry(withHistory(DataAdapterForm));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { defaultCompare as naturalSort } from 'logic/DefaultCompare';\nimport { Select } from 'components/common';\nimport { Row, Col, Input } from 'components/bootstrap';\nimport { DataAdapterForm } from 'components/lookup-tables';\nimport ObjectUtils from 'util/ObjectUtils';\n\nclass DataAdapterCreate extends React.Component {\n static propTypes = {\n saved: PropTypes.func.isRequired,\n types: PropTypes.object.isRequired,\n validate: PropTypes.func,\n validationErrors: PropTypes.object,\n };\n\n static defaultProps = {\n validate: null,\n validationErrors: {},\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n dataAdapter: undefined,\n type: undefined,\n };\n }\n\n _onTypeSelect = (adapterType) => {\n const { types } = this.props;\n\n this.setState({\n type: adapterType,\n dataAdapter: {\n id: null,\n title: '',\n name: '',\n description: '',\n config: ObjectUtils.clone(types[adapterType].default_config),\n },\n });\n };\n\n render() {\n const {\n types,\n validate,\n validationErrors,\n saved,\n } = this.props;\n const { type, dataAdapter } = this.state;\n const adapterPlugins = {};\n\n PluginStore.exports('lookupTableAdapters').forEach((p) => {\n adapterPlugins[p.type] = p;\n });\n\n const sortedAdapters = Object.keys(types).map((key) => {\n const typeItem = types[key];\n\n if (adapterPlugins[typeItem.type] === undefined) {\n // eslint-disable-next-line no-console\n console.error(`Plugin component for data adapter type ${typeItem.type} is missing - invalid or missing plugin?`);\n\n return { value: typeItem.type, disabled: true, label: `${typeItem.type} - missing or invalid plugin` };\n }\n\n return { value: typeItem.type, label: adapterPlugins[typeItem.type].displayName };\n }).sort((a, b) => naturalSort(a.label.toLowerCase(), b.label.toLowerCase()));\n\n return (\n \n \n \n \n \n
\n {dataAdapter && (\n \n \n \n \n
\n )}\n \n );\n }\n}\n\nexport default DataAdapterCreate;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport { useField } from 'formik';\nimport PropTypes from 'prop-types';\nimport type { LookupTableAdapter } from 'src/logic/lookup-tables/types';\n\nimport { defaultCompare as naturalSort } from 'logic/DefaultCompare';\nimport { Input } from 'components/bootstrap';\nimport { Select } from 'components/common';\n\ntype Props = {\n dataAdapters: LookupTableAdapter[],\n}\n\nconst DataAdapterPicker = ({\n dataAdapters,\n}: Props) => {\n const [, { value, touched, error }, { setTouched, setValue }] = useField('data_adapter_id');\n const sortedAdapters = dataAdapters.map((adapter: LookupTableAdapter) => ({ value: adapter.id, label: `${adapter.title} (${adapter.name})` })).sort((a, b) => naturalSort(a.label.toLowerCase(), b.label.toLowerCase()));\n\n const errorMessage = touched ? error : '';\n\n return (\n \n );\n};\n\nDataAdapterPicker.propTypes = {\n dataAdapters: PropTypes.array,\n};\n\nDataAdapterPicker.defaultProps = {\n dataAdapters: [],\n};\n\nexport default DataAdapterPicker;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { Spinner } from 'components/common';\nimport { LookupTableDataAdaptersActions, LookupTableDataAdaptersStore } from 'stores/lookup-tables/LookupTableDataAdaptersStore';\n\nconst DataAdaptersContainer = createReactClass({\n displayName: 'DataAdaptersContainer',\n\n propTypes: {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n },\n\n mixins: [Reflux.connect(LookupTableDataAdaptersStore)],\n\n getDefaultProps() {\n return {\n children: null,\n };\n },\n\n componentDidMount() {\n // TODO the 10k items is bad. we need a searchable/scrollable long list select box\n LookupTableDataAdaptersActions.searchPaginated(1, 10000, null);\n },\n\n render() {\n if (!this.state.dataAdapters) {\n return ;\n }\n\n const childrenWithProps = React.Children.map(this.props.children,\n (child) => React.cloneElement(child,\n { dataAdapters: this.state.dataAdapters, pagination: this.state.pagination }));\n\n return {childrenWithProps};\n },\n});\n\nexport default DataAdaptersContainer;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./ErrorPopover.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./ErrorPopover.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport { OverlayTrigger, Icon } from 'components/common';\nimport { Popover } from 'components/bootstrap';\n\nimport Styles from './ErrorPopover.css';\n\ntype Props = {\n errorText: string,\n title: string,\n placement: 'bottom' | 'top' | 'right' | 'left',\n};\n\nconst ErrorPopover = ({ errorText, title = 'Error', placement = 'bottom' }: Props) => {\n const overlay = (\n \n {errorText}\n \n );\n\n return (\n \n \n \n \n \n );\n};\n\nexport default ErrorPopover;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { useQuery } from '@tanstack/react-query';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport { qualifyUrl } from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport UserNotification from 'util/UserNotification';\nimport type { GenericEntityType } from 'logic/lookup-tables/types';\n\ntype ScopeParams = {\n is_mutable: boolean,\n}\n\ntype ScopeName = 'DEFAULT' | 'ILLUMINATE';\n\ntype EntityScopeRecord = Record;\n\ntype EntityScopeType = {\n entity_scopes: EntityScopeRecord,\n};\n\nfunction fetchScopePermissions() {\n return fetch('GET', qualifyUrl(ApiRoutes.EntityScopeController.getScope().url));\n}\n\nconst useGetPermissionsByScope = (entity: Partial) => {\n const { data, isLoading, error } = useQuery(\n ['scope-permissions'],\n fetchScopePermissions,\n {\n onError: () => UserNotification.error(error.message),\n retry: 1,\n cacheTime: 1000 * 60 * 60 * 3, // cache for 3 hours\n staleTime: 1000 * 60 * 60 * 3, // data is valid for 3 hours\n },\n );\n\n const scope = entity?._scope?.toUpperCase() || 'DEFAULT';\n const permissions: ScopeParams = isLoading ? { is_mutable: false } : data.entity_scopes[scope];\n\n return {\n loadingScopePermissions: isLoading,\n scopePermissions: permissions,\n };\n};\n\nexport default useGetPermissionsByScope;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport type { Subtract } from 'utility-types';\n\nimport type { HistoryFunction } from './useHistory';\nimport useHistory from './useHistory';\n\ntype HistoryContext = {\n history: HistoryFunction;\n};\n\nconst withParams = (Component: React.ComponentType): React.ComponentType> => (props) => {\n const history = useHistory();\n\n return ;\n};\n\nexport default withParams;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport type { Subtract } from 'utility-types';\n\ntype ParamsContext = {\n params: {\n [key: string]: string | null | undefined;\n };\n};\n\nconst withParams = (Component: React.ComponentType): React.ComponentType> => (props) => {\n const params = useParams();\n\n return ;\n};\n\nexport default withParams;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const LookupTableCachesActions = singletonActions(\n 'core.LookupTableCaches',\n () => Reflux.createActions({\n searchPaginated: { asyncResult: true },\n reloadPage: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n update: { asyncResult: true },\n getTypes: { asyncResult: true },\n validate: { asyncResult: true },\n }),\n);\n\nexport const LookupTableCachesStore = singletonStore(\n 'core.LookupTableCaches',\n () => Reflux.createStore({\n listenables: [LookupTableCachesActions],\n cache: null,\n caches: null,\n types: null,\n pagination: {\n page: 1,\n per_page: 10,\n total: 0,\n count: 0,\n query: null,\n },\n validationErrors: {},\n\n getInitialState() {\n return this.getState();\n },\n\n getState() {\n return {\n cache: this.cache,\n caches: this.caches,\n types: this.types,\n pagination: this.pagination,\n validationErrors: this.validationErrors,\n };\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n reloadPage() {\n const promise = this.searchPaginated(this.pagination.page, this.pagination.per_page, this.pagination.query);\n\n LookupTableCachesActions.reloadPage.promise(promise);\n\n return promise;\n },\n\n searchPaginated(page, perPage, query) {\n let url;\n\n if (query) {\n url = this._url(`caches?page=${page}&per_page=${perPage}&query=${encodeURIComponent(query)}`);\n } else {\n url = this._url(`caches?page=${page}&per_page=${perPage}`);\n }\n\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.pagination = {\n count: response.count,\n total: response.total,\n page: response.page,\n per_page: response.per_page,\n query: response.query,\n };\n\n this.caches = response.caches;\n this.propagateChanges();\n }, this._errorHandler('Fetching lookup table caches failed', 'Could not retrieve the lookup caches'));\n\n LookupTableCachesActions.searchPaginated.promise(promise);\n\n return promise;\n },\n\n get(idOrName) {\n const url = this._url(`caches/${idOrName}`);\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.cache = response;\n this.propagateChanges();\n }, this._errorHandler(`Fetching lookup table cache ${idOrName} failed`, 'Could not retrieve lookup table cache'));\n\n LookupTableCachesActions.get.promise(promise);\n\n return promise;\n },\n\n create(cache) {\n const url = this._url('caches');\n const promise = fetch('POST', url, cache);\n\n promise.then((response) => {\n this.cache = response;\n this.propagateChanges();\n }, this._errorHandler('Creating lookup table cache failed', `Could not create lookup table cache \"${cache.name}\"`));\n\n LookupTableCachesActions.create.promise(promise);\n\n return promise;\n },\n\n update(cache) {\n const url = this._url(`caches/${cache.id}`);\n const promise = fetch('PUT', url, cache);\n\n promise.then((response) => {\n this.cache = response;\n this.propagateChanges();\n }, this._errorHandler('Updating lookup table cache failed', `Could not update lookup table cache \"${cache.name}\"`));\n\n LookupTableCachesActions.update.promise(promise);\n\n return promise;\n },\n\n getTypes() {\n const url = this._url('types/caches');\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.types = response;\n this.propagateChanges();\n }, this._errorHandler('Fetching available types failed', 'Could not fetch the available lookup table cache types'));\n\n LookupTableCachesActions.getTypes.promise(promise);\n\n return promise;\n },\n\n delete(idOrName) {\n const url = this._url(`caches/${idOrName}`);\n const promise = fetch('DELETE', url);\n\n promise.catch(this._errorHandler('Deleting lookup table cache failed', `Could not delete lookup table cache \"${idOrName}\"`));\n\n LookupTableCachesActions.delete.promise(promise);\n\n return promise;\n },\n\n validate(cache) {\n const url = this._url('caches/validate');\n const promise = fetch('POST', url, cache);\n\n promise.then((response) => {\n this.validationErrors = response.errors;\n this.propagateChanges();\n }, this._errorHandler(\n 'Lookup table cache validation failed',\n `Could not validate lookup table cache \"${cache.name}\"`,\n ));\n\n LookupTableCachesActions.validate.promise(promise);\n\n return promise;\n },\n\n _errorHandler(message, title, cb) {\n return (error) => {\n let errorMessage;\n\n try {\n errorMessage = error.additional.body.message;\n } catch (e) {\n errorMessage = error.message;\n }\n\n UserNotification.error(`${message}: ${errorMessage}`, title);\n\n if (cb) {\n cb(error);\n }\n };\n },\n\n _url(path) {\n return URLUtils.qualifyUrl(`/system/lookup/${path}`);\n },\n }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const LookupTableDataAdaptersActions = singletonActions(\n 'core.LookupTableDataAdapters',\n () => Reflux.createActions({\n searchPaginated: { asyncResult: true },\n reloadPage: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n update: { asyncResult: true },\n getTypes: { asyncResult: true },\n lookup: { asyncResult: true },\n validate: { asyncResult: true },\n }),\n);\n\nexport const LookupTableDataAdaptersStore = singletonStore(\n 'core.LookupTableDataAdapters',\n () => Reflux.createStore({\n listenables: [LookupTableDataAdaptersActions],\n dataAdapter: null,\n dataAdapters: undefined,\n types: null,\n pagination: {\n page: 1,\n per_page: 10,\n total: 0,\n count: 0,\n query: null,\n },\n lookupResult: null,\n validationErrors: {},\n\n getInitialState() {\n return this.getState();\n },\n\n getState() {\n return {\n dataAdapter: this.dataAdapter,\n dataAdapters: this.dataAdapters,\n lookupResult: this.lookupResult,\n types: this.types,\n pagination: this.pagination,\n validationErrors: this.validationErrors,\n };\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n reloadPage() {\n const promise = this.searchPaginated(this.pagination.page, this.pagination.per_page, this.pagination.query);\n\n LookupTableDataAdaptersActions.reloadPage.promise(promise);\n\n return promise;\n },\n\n searchPaginated(page, perPage, query) {\n let url;\n\n if (query) {\n url = this._url(`adapters?page=${page}&per_page=${perPage}&query=${encodeURIComponent(query)}`);\n } else {\n url = this._url(`adapters?page=${page}&per_page=${perPage}`);\n }\n\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.pagination = {\n count: response.count,\n total: response.total,\n page: response.page,\n per_page: response.per_page,\n query: response.query,\n };\n\n this.dataAdapters = response.data_adapters;\n this.propagateChanges();\n }, this._errorHandler('Fetching lookup table data adapters failed', 'Could not retrieve the lookup dataAdapters'));\n\n LookupTableDataAdaptersActions.searchPaginated.promise(promise);\n\n return promise;\n },\n\n get(idOrName) {\n const url = this._url(`adapters/${idOrName}`);\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.dataAdapter = response;\n this.propagateChanges();\n }, this._errorHandler(`Fetching lookup table data adapter ${idOrName} failed`, 'Could not retrieve lookup table data adapter'));\n\n LookupTableDataAdaptersActions.get.promise(promise);\n\n return promise;\n },\n\n create(dataAdapter) {\n const url = this._url('adapters');\n const promise = fetch('POST', url, dataAdapter);\n\n promise.then((response) => {\n this.dataAdapter = response;\n this.propagateChanges();\n }, this._errorHandler('Creating lookup table data adapter failed', `Could not create lookup table data adapter \"${dataAdapter.name}\"`));\n\n LookupTableDataAdaptersActions.create.promise(promise);\n\n return promise;\n },\n\n update(dataAdapter) {\n const url = this._url(`adapters/${dataAdapter.id}`);\n const promise = fetch('PUT', url, dataAdapter);\n\n promise.then((response) => {\n this.dataAdapter = response;\n this.propagateChanges();\n }, this._errorHandler('Updating lookup table data adapter failed', `Could not update lookup table data adapter \"${dataAdapter.name}\"`));\n\n LookupTableDataAdaptersActions.update.promise(promise);\n\n return promise;\n },\n\n getTypes() {\n const url = this._url('types/adapters');\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.types = response;\n this.propagateChanges();\n }, this._errorHandler('Fetching available types failed', 'Could not fetch the available lookup table data adapter types'));\n\n LookupTableDataAdaptersActions.getTypes.promise(promise);\n\n return promise;\n },\n\n delete(idOrName) {\n const url = this._url(`adapters/${idOrName}`);\n const promise = fetch('DELETE', url);\n\n promise.catch(this._errorHandler('Deleting lookup table data adapter failed', `Could not delete lookup table data adapter \"${idOrName}\"`));\n\n LookupTableDataAdaptersActions.delete.promise(promise);\n\n return promise;\n },\n\n lookup(adapterName, key) {\n const promise = fetch('GET', this._url(`adapters/${adapterName}/query?key=${encodeURIComponent(key)}`));\n\n promise.then((response) => {\n this.lookupResult = response;\n this.propagateChanges();\n }, this._errorHandler('Lookup failed', `Could not lookup value for key \"${key}\" in lookup table data adapter \"${adapterName}\"`));\n\n LookupTableDataAdaptersActions.lookup.promise(promise);\n\n return promise;\n },\n\n validate(adapter) {\n const url = this._url('adapters/validate');\n const promise = fetch('POST', url, adapter);\n\n promise.then((response) => {\n this.validationErrors = response.errors;\n this.propagateChanges();\n }, this._errorHandler('Lookup table data adapter validation failed', `Could not validate lookup table data adapter \"${adapter.name}\"`));\n\n LookupTableDataAdaptersActions.validate.promise(promise);\n\n return promise;\n },\n\n _errorHandler(message, title, cb) {\n return (error) => {\n let errorMessage;\n\n try {\n errorMessage = error.additional.body.message;\n } catch (e) {\n errorMessage = error.message;\n }\n\n UserNotification.error(`${message}: ${errorMessage}`, title);\n\n if (cb) {\n cb(error);\n }\n };\n },\n\n _url(path) {\n return URLUtils.qualifyUrl(`/system/lookup/${path}`);\n },\n }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport PaginationURL from 'util/PaginationURL';\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\nimport type { LookupTable, LookupTableCache, LookupTableAdapter } from 'logic/lookup-tables/types';\nimport type { PaginatedResponseType } from 'stores/PaginationTypes';\n\ntype LookupResult = {\n multi_value: string | number | object | boolean | null,\n single_value: string | number | object | boolean | null,\n string_list_value: Array | null,\n ttl: number,\n has_error: boolean,\n}\n\ntype ValidationErrors = {\n error_context: {\n [fieldName: string]: Array | undefined,\n },\n failed: boolean,\n errors: {\n [fieldName: string]: Array | undefined,\n },\n}\n\ntype ErrorState = {\n tables: {\n [tableId: string]: string | undefined,\n },\n caches: {\n [cacheId: string]: string | undefined,\n },\n dataAdapters: {\n [adapterId: string]: string | undefined,\n }\n}\n\ntype LookupTablesStoreState = {\n pagination: PaginatedResponseType,\n errorState: ErrorState,\n table: LookupTable | null,\n cache: LookupTableCache | null,\n dataAdapter: LookupTableAdapter | null,\n tables: {\n [tableId: string]: LookupTable | undefined,\n },\n caches: {\n [cacheId: string]: LookupTableCache | undefined,\n },\n dataAdapters: {\n [adapterId: string]: LookupTableAdapter | undefined,\n },\n lookupResult: LookupResult | null,\n validationErrors: ValidationErrors,\n}\n\ntype LookupTableActionsType = {\n searchPaginated: (page: number, perPage: number, query?: string, resolve?: boolean) => Promise,\n reloadPage: () => Promise,\n get: (idOrName: string) => Promise,\n create: (table: LookupTable) => Promise,\n delete: (idOrName: string) => Promise,\n update: (table: LookupTable) => Promise,\n getErrors: (tableNames: Array | undefined, cacheNames: Array | undefined, dataAdapterNames: Array | undefined) => Promise,\n lookup: (tableName: string, key: string) => Promise,\n purgeKey: (table: LookupTable, key: string) => Promise,\n purgeAll: (table: LookupTable) => Promise,\n validate: (table: LookupTable) => Promise,\n}\n\nexport const LookupTablesActions = singletonActions(\n 'core.LookupTables',\n () => Reflux.createActions({\n searchPaginated: { asyncResult: true },\n reloadPage: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n update: { asyncResult: true },\n getErrors: { asyncResult: true },\n lookup: { asyncResult: true },\n purgeKey: { asyncResult: true },\n purgeAll: { asyncResult: true },\n validate: { asyncResult: true },\n }),\n);\n\nexport const LookupTablesStore = singletonStore(\n 'core.LookupTables',\n () => Reflux.createStore({\n listenables: [LookupTablesActions],\n pagination: {\n page: 1,\n per_page: 10,\n total: 0,\n count: 0,\n query: null,\n },\n errorStates: {\n tables: {},\n caches: {},\n dataAdapters: {},\n },\n table: null,\n cache: null,\n dataAdapter: null,\n tables: null,\n caches: null,\n dataAdapters: null,\n lookupResult: null,\n validationErrors: {},\n\n getInitialState() {\n return this.getState();\n },\n\n getState() {\n return {\n errorStates: this.errorStates,\n table: this.table,\n cache: this.cache,\n dataAdapter: this.dataAdapter,\n tables: this.tables,\n caches: this.caches,\n dataAdapters: this.dataAdapters,\n lookupResult: this.lookupResult,\n validationErrors: this.validationErrors,\n pagination: this.pagination,\n };\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n reloadPage() {\n const promise = this.searchPaginated(this.pagination.page, this.pagination.per_page, this.pagination.query);\n\n LookupTablesActions.reloadPage.promise(promise);\n\n return promise;\n },\n\n searchPaginated(page: number, perPage: number, query: string = null, resolve: boolean = true) {\n const url = this._url(PaginationURL('tables', page, perPage, query, { resolve }));\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.pagination = {\n count: response.count,\n total: response.total,\n page: response.page,\n per_page: response.per_page,\n query: response.query,\n };\n\n this.tables = response.lookup_tables;\n this.caches = response.caches;\n this.dataAdapters = response.data_adapters;\n this.propagateChanges();\n }, this._errorHandler('Fetching lookup tables failed', 'Could not retrieve the lookup tables'));\n\n LookupTablesActions.searchPaginated.promise(promise);\n\n return promise;\n },\n\n get(idOrName: string) {\n const url = this._url(`tables/${idOrName}?resolve=true`);\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n // do not propagate pagination! it will destroy the subsequent overview page's state.\n const lookupTable = response.lookup_tables[0];\n\n this.table = lookupTable;\n this.cache = response.caches[lookupTable.cache_id];\n this.dataAdapter = response.data_adapters[lookupTable.data_adapter_id];\n this.propagateChanges();\n }, this._errorHandler(`Fetching lookup table ${idOrName} failed`,\n 'Could not retrieve lookup table'));\n\n LookupTablesActions.get.promise(promise);\n\n return promise;\n },\n\n create(table: LookupTable) {\n const url = this._url('tables');\n const promise = fetch('POST', url, table);\n\n promise.catch(this._errorHandler('Creating lookup table failed', `Could not create lookup table \"${table.name}\"`));\n\n LookupTablesActions.create.promise(promise);\n\n return promise;\n },\n\n update(table: LookupTable) {\n const url = this._url(`tables/${table.id}`);\n const promise = fetch('PUT', url, table);\n\n promise.catch(this._errorHandler('Updating lookup table failed', `Could not update lookup table \"${table.name}\"`));\n\n LookupTablesActions.update.promise(promise);\n\n return promise;\n },\n\n delete(idOrName: string) {\n const url = this._url(`tables/${idOrName}`);\n const promise = fetch('DELETE', url);\n\n promise.catch(this._errorHandler('Deleting lookup table failed', `Could not delete lookup table \"${idOrName}\"`));\n\n LookupTablesActions.delete.promise(promise);\n\n return promise;\n },\n\n getErrors(tableNames: Array | undefined, cacheNames: Array | undefined, dataAdapterNames: Array | undefined) {\n const request: {\n tables?: Array;\n caches?: Array;\n data_adapters?: Array;\n } = {};\n\n if (tableNames) {\n request.tables = tableNames;\n }\n\n if (cacheNames) {\n request.caches = cacheNames;\n }\n\n if (dataAdapterNames) {\n request.data_adapters = dataAdapterNames;\n }\n\n const promise = fetch('POST', this._url('errorstates'), request);\n\n promise.then((response) => {\n this.errorStates = {\n tables: response.tables || {},\n caches: response.caches || {},\n dataAdapters: response.data_adapters || {},\n };\n\n this.propagateChanges();\n }, this._errorHandler('Fetching lookup table error state failed.', 'Could not error states'));\n\n LookupTablesActions.getErrors.promise(promise);\n\n return promise;\n },\n\n lookup(tableName: string, key: string) {\n const promise = fetch('GET', this._url(`tables/${tableName}/query?key=${encodeURIComponent(key)}`));\n\n promise.then((response) => {\n this.lookupResult = response;\n this.propagateChanges();\n }, this._errorHandler('Lookup failed', `Could not lookup value for key \"${key}\" in lookup table \"${tableName}\"`));\n\n LookupTablesActions.lookup.promise(promise);\n\n return promise;\n },\n\n purgeKey(table: LookupTable, key: string) {\n const promise = fetch('POST', this._urlClusterWise(`tables/${table.id}/purge?key=${encodeURIComponent(key)}`));\n\n promise.then(() => {\n UserNotification.success(`Purging cache key \"${key}\" for lookup table \"${table.name}\"`, 'Success!');\n }, this._errorHandler(`Could not purge cache for key \"${key}\" in lookup table \"${table.name}\"`, 'Failed!'));\n\n LookupTablesActions.purgeKey.promise(promise);\n\n return promise;\n },\n\n purgeAll(table: LookupTable) {\n const promise = fetch('POST', this._urlClusterWise(`tables/${table.id}/purge`));\n\n promise.then(() => {\n UserNotification.success(`Purging cache for lookup table \"${table.name}\"`, 'Success!');\n }, this._errorHandler(`Could not purge cache for lookup table \"${table.name}\"`, 'Failed!'));\n\n LookupTablesActions.purgeAll.promise(promise);\n\n return promise;\n },\n\n validate(table: LookupTable) {\n const url = this._url('tables/validate');\n const promise = fetch('POST', url, table);\n\n promise.then((response: any) => {\n this.validationErrors = response.errors;\n this.propagateChanges();\n }, this._errorHandler('Lookup table validation failed', `Could not validate lookup table \"${table.name}\"`));\n\n LookupTablesActions.validate.promise(promise);\n\n return promise;\n },\n\n _errorHandler(message: string, title: string, cb: (error: Error) => void | undefined) {\n return (error) => {\n try {\n // Do not show the user notification if the error is a hibernate error message. We cannot display those\n // properly yet...\n if (error.additional.body[0].message_template) {\n return;\n }\n } catch (e) {\n // ignored\n }\n\n let errorMessage;\n\n try {\n errorMessage = error.additional.body.message;\n } catch (e) {\n errorMessage = error.message;\n }\n\n UserNotification.error(`${message}: ${errorMessage}`, title);\n\n if (cb) {\n cb(error);\n }\n };\n },\n\n _url(path: string) {\n return qualifyUrl(`/system/lookup/${path}`);\n },\n\n _urlClusterWise(path: string) {\n return qualifyUrl(`/cluster/system/lookup/${path}`);\n },\n }),\n);\n"],"names":["___CSS_LOADER_EXPORT___","module","Container","StyledButton","theme","items","path","title","permissions","exactPathMatch","Component","obj","props","result","NAV_ITEMS","MaxmindAdapterFieldSet","config","updateConfig","handleFormEvent","validationState","validationMessage","isCloud","AppConfig","pathsForCloud","ipInfoDatabaseTypes","databaseTypes","update","value","unit","enabled","name","newConfig","ObjectUtils","updateCheckInterval","onDbTypeSelect","id","MaxmindAdapterSummary","MaxmindAdapterDocumentation","cityFields","countryFields","asnFields","dataAdapter","csvFile1","csvFile2","csvFile3","DnsAdapterFieldSet","fieldPrefix","lookupTypes","DnsAdapterSummary","lookupType","StyledPre","styleMarginBottom","aResponse","aaaaResponse","aAndAaaaResponse","ptrResponse","txtResponse","DSVHTTPAdapterFieldSet","HTTPJSONPathAdapterFieldSet","headers","configChange","HTTPJSONPathAdapterSummary","exampleJSON","noMultiResult","mapResult","smallMapResult","listResult","pipelineRule","NullCacheFieldSet","CaffeineCacheFieldSet","ref","values","setValues","errors","stateConfig","setStateConfig","validateConfig","configErrors","handleUpdate","auxConfig","auxValConfig","SummaryContainer","SummaryRow","Title","Value","cache","Actions","LUTTableEntry","table","history","useHistory","sendTelemetry","useSendTelemetry","loadingScopePermissions","scopePermissions","useScopePermissions","handleDelete","handleEdit","Routes","options","ScrollContainer","buildHelpPopover","queryHelpComponent","LUTItem","caches","dataAdapters","errorStates","lookupName","map","empty","lookupAdapterError","adapter","NoResults","query","DataRow","tables","LookupTablesOverview","pagination","paginationQueryParameter","loading","setLoading","localPagination","setLocalPagination","currentPage","currentPageSize","currentQuery","onPageChange","newPage","newPerPage","onSearch","onReset","withPaginationQueryParameter","INIT_INPUT","navigate","purgeKey","setPurgeKey","lookupKey","setLookupKey","lookupResult","setLookupResult","tableName","handleInputOnChange","event","newValue","handlePurgeKey","hadlePurgeAll","handleLookupKey","resp","INIT_TABLE_VALUES","LookupTableForm","saved","create","validate","requiredField","handleSubmit","promise","valuesToSave","initialValues","onCancel","updatable","formikHelpers","touched","setFieldValue","setFieldTouched","isSubmitting","valueType","LookupTableCreate","ButtonToolbar","countMap","entriesMap","computeEntriesMetrics","metrics","total","acc","nodeId","NumberUtils","computeCountMetrics","totalHits","totalMisses","hitRate","CachesOverview","plugin","usePluginEntities","cacheName","typeName","TagName","INIT_CACHE","CacheForm","type","validationErrors","configRef","generateName","setGenerateName","p","pluginName","DocComponent","configFieldSet","sanitizeName","inName","handleTitleChange","safeName","handleValidation","confErrors","types","setType","cachePlugins","plugins","cacheTypes","inType","a","b","handleSelect","selectedType","CachePicker","error","setTouched","setValue","sortedCaches","errorMessage","LookupTableCachesStore","childrenWithProps","child","adapterName","adapterTitle","adapterDescription","adapterId","_onEdit","_onDelete","DataAdaptersOverview","_onChange","_lookupKey","summary","DataAdapterForm","isDisabled","dataAdapterState","generateAdapterName","fieldName","defaultText","prevProps","currentType","isFormDisabled","documentationComponent","pluginDisplayName","documentationColumn","formRowWidth","withTelemetry","withHistory","DataAdapterCreate","adapterType","adapterPlugins","sortedAdapters","key","typeItem","DataAdapterPicker","LookupTableDataAdaptersStore","errorText","placement","overlay","fetchScopePermissions","entity","data","isLoading","scope","params","LookupTableCachesActions","page","perPage","url","response","idOrName","message","cb","LookupTableDataAdaptersActions","LookupTablesActions","LookupTablesStore","resolve","lookupTable","tableNames","cacheNames","dataAdapterNames","request"],"sourceRoot":""}