{"version":3,"file":"08e9f21810cc267ebb7b.js","mappings":"63BAGA,MAAMA,EAAgB,iBACtB,IAAIC,EAASD,EAGbC,EAAS,mDAEF,MAAMC,GAAoBC,EAAAA,EAAAA,GAAa,GAAGF,wBACpCG,GAA2BD,EAAAA,EAAAA,GAAa,GAAGF,kBAE3CI,GAA2BF,EAAAA,EAAAA,GAAa,GAAGF,iBAC3CK,GAA6BH,EAAAA,EAAAA,GAAa,GAAGF,mBAC7CM,GAA2BJ,EAAAA,EAAAA,GAAa,GAAGF,iBAE3CO,GAA2BL,EAAAA,EAAAA,GAAa,GAAGF,iBAC3CQ,GAA6BN,EAAAA,EAAAA,GAAa,GAAGF,mBAC7CS,GAA2BP,EAAAA,EAAAA,GAAa,GAAGF,iBAE3CU,GAA2BR,EAAAA,EAAAA,GAAa,GAAGF,iBAC3CW,GAA6BT,EAAAA,EAAAA,GAAa,GAAGF,mBAC7CY,GAA2BV,EAAAA,EAAAA,GAAa,GAAGF,iBAE3Ca,GAA4BX,EAAAA,EAAAA,GAAa,GAAGF,iBAC5Cc,GAA8BZ,EAAAA,EAAAA,GAAa,GAAGF,mBAC9Ce,GAA4Bb,EAAAA,EAAAA,GAAa,GAAGF,iBAE5CgB,GAAkCd,EAAAA,EAAAA,GAAa,GAAGF,yBAClDiB,GAAoCf,EAAAA,EAAAA,GAAa,GAAGF,2BACpDkB,GAAkChB,EAAAA,EAAAA,GAAa,GAAGF,yBAElDmB,GAAgCjB,EAAAA,EAAAA,GAAa,GAAGF,uBAChDoB,GAAkClB,EAAAA,EAAAA,GAAa,GAAGF,yBAClDqB,GAAgCnB,EAAAA,EAAAA,GAAa,GAAGF,uBAEhDsB,GAAmCpB,EAAAA,EAAAA,GAAa,GAAGF,yBACnDuB,GAAqCrB,EAAAA,EAAAA,GAAa,GAAGF,2BACrDwB,GAAmCtB,EAAAA,EAAAA,GAAa,GAAGF,yBAGhEA,EAAS,iDACF,MAAMyB,GAAoCvB,EAAAA,EAAAA,GAAa,GAAGF,2BACpD0B,GAAsBxB,EAAAA,EAAAA,GAAa,GAAGF,2BACtC2B,GAA4BzB,EAAAA,EAAAA,GAAa,GAAGF,kCAC5C4B,GAAkC1B,EAAAA,EAAAA,GAAa,GAAGF,yCAClD6B,GAAiC3B,EAAAA,EAAAA,GAAa,GAAGF,uBACjD8B,GAAiC5B,EAAAA,EAAAA,GAAa,GAAGF,uBACjD+B,GAAiC7B,EAAAA,EAAAA,GAAa,GAAGF,uBACjDgC,GAAkC9B,EAAAA,EAAAA,GAAa,GAAGF,wBAG/DA,EAAS,oDACF,MAAMiC,GAAwB/B,EAAAA,EAAAA,GAAa,GAAGF,Y,oRCnDrD,MAAMD,EAAgB,MACtB,IAAIC,EAASD,EAEbC,EAAS,eACF,MAAMkC,GAAYhC,EAAAA,EAAAA,GAAa,GAAGF,eAEzCA,EAAS,eACF,MAAMmC,GAAkBjC,EAAAA,EAAAA,GAAa,GAAGF,mBAClCoC,GAAkBlC,EAAAA,EAAAA,GAAa,GAAGF,mBAClCqC,GAAoBnC,EAAAA,EAAAA,GAAa,GAAGF,qBACpCsC,GAAuBpC,EAAAA,EAAAA,GAAa,GAAGF,yBACvCuC,GAAuBrC,EAAAA,EAAAA,GAAa,GAAGF,yBACvCwC,GAAgBtC,EAAAA,EAAAA,GAAa,GAAGF,iBAE7CA,EAAS,SACF,MAAMyC,GAA2BvC,EAAAA,EAAAA,GAAa,GAAGF,gCAC3C0C,GAA2BxC,EAAAA,EAAAA,GAAa,GAAGF,+B,4kBChBxD,MAAMD,EAAgB,iBACtB,IAAIC,EAASD,EAEbC,EAAS,sBACF,MAAM2C,GAAsBzC,EAAAA,EAAAA,GAAa,GAAGF,0BACtC4C,GAAoB1C,EAAAA,EAAAA,GAAa,GAAGF,wBACpC6C,GAA0B3C,EAAAA,EAAAA,GAAa,GAAGF,8BAC1C8C,GAA4B5C,EAAAA,EAAAA,GAAa,GAAGF,kCAC5C+C,GAA4B7C,EAAAA,EAAAA,GAAa,GAAGF,kCAC5CgD,GAA8B9C,EAAAA,EAAAA,GAAa,GAAGF,oCAE3DA,EAAS,oBACF,MAAMiD,GAAmB/C,EAAAA,EAAAA,GAAa,GAAGF,uBACnCkD,GAAmBhD,EAAAA,EAAAA,GAAa,GAAGF,uBACnCmD,GAAsBjD,EAAAA,EAAAA,GAAa,GAAGF,0BACtCoD,GAAsBlD,EAAAA,EAAAA,GAAa,GAAGF,0BACtCqD,GAA4BnD,EAAAA,EAAAA,GAAa,GAAGF,kCAC5CsD,GAAiCpD,EAAAA,EAAAA,GAAa,GAAGF,wCACjDuD,GAAiCrD,EAAAA,EAAAA,GAAa,GAAGF,wCAE9DA,EAAS,uBACF,MAAMwD,GAAsBtD,EAAAA,EAAAA,GAAa,GAAGF,2BACtCyD,GAAsBvD,EAAAA,EAAAA,GAAa,GAAGF,2BACtC0D,GAAwBxD,EAAAA,EAAAA,GAAa,GAAGF,6BACxC2D,GAAiBzD,EAAAA,EAAAA,GAAa,GAAGF,qBACjC4D,GAAc1D,EAAAA,EAAAA,GAAa,GAAGF,kBAC9B6D,GAAY3D,EAAAA,EAAAA,GAAa,GAAGF,cAEzCA,EAAS,yBACF,MAAM8D,GAAyB5D,EAAAA,EAAAA,GAAa,GAAGF,6BACzC+D,GAAyB7D,EAAAA,EAAAA,GAAa,GAAGF,8BACzCgE,GAAsB9D,EAAAA,EAAAA,GAAa,GAAGF,0B,8qDC/BnD,MAAMD,EAAgB,YACtB,IAAIC,EAASD,EAEN,MAAMkE,GAAkB/D,EAAAA,EAAAA,GAAa,GAAGF,sBAG/CA,EAAS,oBAEF,MAAMkE,GAAoBhE,EAAAA,EAAAA,GAAa,GAAGF,wBACpCmE,GAAsBjE,EAAAA,EAAAA,GAAa,GAAGF,0BACtCoE,GAAoBlE,EAAAA,EAAAA,GAAa,GAAGF,wBAEpCqE,GAAqBnE,EAAAA,EAAAA,GAAa,GAAGF,yBACrCsE,GAAuBpE,EAAAA,EAAAA,GAAa,GAAGF,2BACvCuE,GAAqBrE,EAAAA,EAAAA,GAAa,GAAGF,yBAErCwE,GAAatE,EAAAA,EAAAA,GAAa,GAAGF,gBAC7ByE,GAAiBvE,EAAAA,EAAAA,GAAa,GAAGF,oBAG9CA,EAAS,mBAEF,MAAM0E,GAAgBxE,EAAAA,EAAAA,GAAa,GAAGF,oBAEhC2E,GAAsBzE,EAAAA,EAAAA,GAAa,GAAGF,0BACtC4E,GAAwB1E,EAAAA,EAAAA,GAAa,GAAGF,4BACxC6E,GAAsB3E,EAAAA,EAAAA,GAAa,GAAGF,0BAEtC8E,GAAyB5E,EAAAA,EAAAA,GAAa,GAAGF,6BACzC+E,GAA2B7E,EAAAA,EAAAA,GAAa,GAAGF,+BAC3CgF,GAAyB9E,EAAAA,EAAAA,GAAa,GAAGF,6BAEzCiF,GAAqB/E,EAAAA,EAAAA,GAAa,GAAGF,yBACrCkF,GAAuBhF,EAAAA,EAAAA,GAAa,GAAGF,2BACvCmF,GAAqBjF,EAAAA,EAAAA,GAAa,GAAGF,yBAErCoF,GAAsBlF,EAAAA,EAAAA,GAAa,GAAGF,0BACtCqF,GAAwBnF,EAAAA,EAAAA,GAAa,GAAGF,4BACxCsF,GAAsBpF,EAAAA,EAAAA,GAAa,GAAGF,0BAGnDA,EAAS,oBAEF,MAAMuF,GAAiBrF,EAAAA,EAAAA,GAAa,GAAGF,qBACjCwF,GAAqBtF,EAAAA,EAAAA,GAAa,GAAGF,yBACrCyF,GAAwBvF,EAAAA,EAAAA,GAAa,GAAGF,4BAGrDA,EAAS,qBAEF,MAAM0F,GAAqBxF,EAAAA,EAAAA,GAAa,GAAGF,yBAGlDA,EAAS,eAEF,MAAM2F,GAAmBzF,EAAAA,EAAAA,GAAa,GAAGF,uBACnC4F,GAAmB1F,EAAAA,EAAAA,GAAa,GAAGF,uBACnC6F,GAAsB3F,EAAAA,EAAAA,GAAa,GAAGF,2BACtC8F,GAAuB5F,EAAAA,EAAAA,GAAa,GAAGF,4BACvC+F,GAAqB7F,EAAAA,EAAAA,GAAa,GAAGF,0BACrCgG,GAAqB9F,EAAAA,EAAAA,GAAa,GAAGF,0BAErCiG,GAA8B/F,EAAAA,EAAAA,GAAa,GAAGF,mCAC9CkG,GAA8BhG,EAAAA,EAAAA,GAAa,GAAGF,mCAE9CmG,GAAiBjG,EAAAA,EAAAA,GAAa,GAAGF,oBACjCoG,GAA0BlG,EAAAA,EAAAA,GAAa,GAAGF,8BAE1CqG,GAAmCnG,EAAAA,EAAAA,GAAa,GAAGF,yCACnDsG,GAAmCpG,EAAAA,EAAAA,GAAa,GAAGF,yCAGnDuG,IADiCrG,EAAAA,EAAAA,GAAa,GAAGF,wCACTE,EAAAA,EAAAA,GAAa,GAAGF,gDAGrEA,EAAS,iBAEF,MAAMwG,GAAYtG,EAAAA,EAAAA,GAAa,GAAGF,eAGzCA,EAAS,mBAEF,MAAMyG,GAAcvG,EAAAA,EAAAA,GAAa,GAAGF,iBAC9B0G,GAAgBxG,EAAAA,EAAAA,GAAa,GAAGF,mBAChC2G,GAAczG,EAAAA,EAAAA,GAAa,GAAGF,iBAE9B4G,GAAmC1G,EAAAA,EAAAA,GAAa,GAAGF,wCAEnD6G,GAAc3G,EAAAA,EAAAA,GAAa,GAAGF,iBAC9B8G,GAAiC5G,EAAAA,EAAAA,GAAa,GAAGF,uCAEjD+G,GAAsB7G,EAAAA,EAAAA,GAAa,GAAGF,0BACtCgH,GAAwB9G,EAAAA,EAAAA,GAAa,GAAGF,4BACxCiH,IAAsB/G,EAAAA,EAAAA,GAAa,GAAGF,0BAGnDA,EAAS,+BAEF,MAAMkH,IAA2BhH,EAAAA,EAAAA,GAAa,GAAGF,iCAC3CmH,IAA0BjH,EAAAA,EAAAA,GAAa,GAAGF,gCAC1CoH,IAAuBlH,EAAAA,EAAAA,GAAa,GAAGF,4BAGpDA,EAAS,4BAEF,MAAMqH,IAAwBnH,EAAAA,EAAAA,GAAa,GAAGF,6BACxCsH,IAA0BpH,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CuH,IAAwBrH,EAAAA,EAAAA,GAAa,GAAGF,6BAExCwH,IAAkCtH,EAAAA,EAAAA,GAAa,GAAGF,wCAClDyH,IAAoCvH,EAAAA,EAAAA,GAAa,GAAGF,0CACpD0H,IAAkCxH,EAAAA,EAAAA,GAAa,GAAGF,wCAElD2H,IAA8BzH,EAAAA,EAAAA,GAAa,GAAGF,oCAC9C4H,IAAgC1H,EAAAA,EAAAA,GAAa,GAAGF,sCAChD6H,IAA8B3H,EAAAA,EAAAA,GAAa,GAAGF,oCAE9C8H,IAA+B5H,EAAAA,EAAAA,GAAa,GAAGF,qCAC/C+H,IAAiC7H,EAAAA,EAAAA,GAAa,GAAGF,uCACjDgI,IAA+B9H,EAAAA,EAAAA,GAAa,GAAGF,qCAE/CiI,IAAqB/H,EAAAA,EAAAA,GAAa,GAAGF,0BAGlDA,EAAS,+BAEF,MAAMkI,IAA+BhI,EAAAA,EAAAA,GAAa,GAAGF,sCAE/CmI,IAAyBjI,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCoI,IAA2BlI,EAAAA,EAAAA,GAAa,GAAGF,gC,6MClIxD,MAEaqI,GAAoBnI,EAAAA,EAAAA,GAAa,iCACjCoI,GAAsBpI,EAAAA,EAAAA,GAAa,mCACnCqI,GAAoBrI,EAAAA,EAAAA,GAAa,iCAEjCsI,GAAoBtI,EAAAA,EAAAA,GAAa,iCACjCuI,GAAsBvI,EAAAA,EAAAA,GAAa,mCACnCwI,GAAoBxI,EAAAA,EAAAA,GAAa,gC,6rCCR9C,MAEayI,GAAsBzI,EAAAA,EAAAA,GAAa,6BACnC0I,GAAwB1I,EAAAA,EAAAA,GAAa,+BACrC2I,GAAW3I,EAAAA,EAAAA,GAAa,iBAExB4I,GAAa5I,EAAAA,EAAAA,GAAa,mBAC1B6I,GAAqB7I,EAAAA,EAAAA,GAAa,4BAClC8I,GAAmB9I,EAAAA,EAAAA,GAAa,2BAChC+I,GAAgB/I,EAAAA,EAAAA,GAAa,uBAC7BgJ,GAAahJ,EAAAA,EAAAA,GAAa,oBAC1BiJ,GAAcjJ,EAAAA,EAAAA,GAAa,qBAC3BkJ,GAAgBlJ,EAAAA,EAAAA,GAAa,sBAC7BmJ,GAAkBnJ,EAAAA,EAAAA,GAAa,yBAC/BoJ,GAAiBpJ,EAAAA,EAAAA,GAAa,wBAC9BqJ,GAAsBrJ,EAAAA,EAAAA,GAAa,8BACnCsJ,GAAwBtJ,EAAAA,EAAAA,GAAa,8BACrCuJ,GAAyBvJ,EAAAA,EAAAA,GAAa,iCACtCwJ,GAA4BxJ,EAAAA,EAAAA,GAAa,oCACzCyJ,GAAyBzJ,EAAAA,EAAAA,GAAa,iCACtC0J,GAAW1J,EAAAA,EAAAA,GAAa,iBACxB2J,GAAkB3J,EAAAA,EAAAA,GAAa,wBAC/B4J,GAAmB5J,EAAAA,EAAAA,GAAa,yBAChC6J,GAAO7J,EAAAA,EAAAA,GAAa,YAEpB8J,GAAsB9J,EAAAA,EAAAA,GAAa,6BACnC+J,GAAoB/J,EAAAA,EAAAA,GAAa,2BACjCgK,GAAoBhK,EAAAA,EAAAA,GAAa,2BACjCiK,GAAsBjK,EAAAA,EAAAA,GAAa,6BACnCkK,GAAqBlK,EAAAA,EAAAA,GAAa,4BAClCmK,GAAqBnK,EAAAA,EAAAA,GAAa,4BAClCoK,GAAuBpK,EAAAA,EAAAA,GAAa,8BACpCqK,GAAkBrK,EAAAA,EAAAA,GAAa,yBAC/BsK,GAAkBtK,EAAAA,EAAAA,GAAa,yBAG/BuK,IAFoBvK,EAAAA,EAAAA,GAAa,4BAEfA,EAAAA,EAAAA,GAAa,0BAC/BwK,GAAgBxK,EAAAA,EAAAA,GAAa,uBAC7ByK,GAAczK,EAAAA,EAAAA,GAAa,oBAE3B0K,GAAmB1K,EAAAA,EAAAA,GAAa,0BAChC2K,GAAiB3K,EAAAA,EAAAA,GAAa,wBAE9B4K,GAAuB5K,EAAAA,EAAAA,GAAa,+BAEpC6K,GAAgB7K,EAAAA,EAAAA,GAAa,sBAC7B8K,GAAmB9K,EAAAA,EAAAA,GAAa,0BAEhC+K,GAAY/K,EAAAA,EAAAA,GAAa,iBAEzBgL,GAA2BhL,EAAAA,EAAAA,GAAa,mCACxCiL,GAA2BjL,EAAAA,EAAAA,GAAa,mCACxCkL,GAA6BlL,EAAAA,EAAAA,GAAa,qCAC1CmL,GAAqBnL,EAAAA,EAAAA,GAAa,4BAElCoL,GAAyBpL,EAAAA,EAAAA,GAAa,iCACtCqL,GAA6BrL,EAAAA,EAAAA,GAAa,sCAE1CsL,GAAuBtL,EAAAA,EAAAA,GAAa,+BACpCuL,GAA2BvL,EAAAA,EAAAA,GAAa,oCAExCwL,GAAaxL,EAAAA,EAAAA,GAAa,kB,opBC7DvC,MAEayL,GAAmCzL,EAAAA,EAAAA,GAAa,4CAChD0L,GAAqC1L,EAAAA,EAAAA,GAAa,8CAClD2L,GAAmC3L,EAAAA,EAAAA,GAAa,4CAEhD4L,GAA6B5L,EAAAA,EAAAA,GAAa,sCAC1C6L,GAA+B7L,EAAAA,EAAAA,GAAa,wCAC5C8L,GAA6B9L,EAAAA,EAAAA,GAAa,sCAE1C+L,GAAoC/L,EAAAA,EAAAA,GAAa,6CACjDgM,GAAsChM,EAAAA,EAAAA,GAAa,+CACnDiM,GAAoCjM,EAAAA,EAAAA,GAAa,6CAEjDkM,GAA8BlM,EAAAA,EAAAA,GAAa,uCAC3CmM,GAAgCnM,EAAAA,EAAAA,GAAa,yCAC7CoM,GAA8BpM,EAAAA,EAAAA,GAAa,uCAE3CqM,GAAsBrM,EAAAA,EAAAA,GAAa,8BACnCsM,GAAwBtM,EAAAA,EAAAA,GAAa,gCACrCuM,GAAsBvM,EAAAA,EAAAA,GAAa,8BAEnCwM,GAA4BxM,EAAAA,EAAAA,GAAa,oCAIzCyM,IAH8BzM,EAAAA,EAAAA,GAAa,uCACfA,EAAAA,EAAAA,GAAa,qCAEnBA,EAAAA,EAAAA,GAAa,gCACnC0M,GAAwB1M,EAAAA,EAAAA,GAAa,iCACrC2M,GAAsB3M,EAAAA,EAAAA,GAAa,+BAEnC4M,GAAqB5M,EAAAA,EAAAA,GAAa,6BAClC6M,GAAuB7M,EAAAA,EAAAA,GAAa,+BACpC8M,GAAqB9M,EAAAA,EAAAA,GAAa,6BAElC+M,GAA4B/M,EAAAA,EAAAA,GAAa,qCACzCgN,GAA8BhN,EAAAA,EAAAA,GAAa,uCAC3CiN,GAA4BjN,EAAAA,EAAAA,GAAa,oC,usCCnCtD,MAAMF,EAAS,eAEFoN,GAAgBlN,EAAAA,EAAAA,GAAa,GAAGF,oBAChCqN,GAAWnN,EAAAA,EAAAA,GAAa,GAAGF,cAE3BsN,IADgBpN,EAAAA,EAAAA,GAAa,GAAGF,qBACjBE,EAAAA,EAAAA,GAAa,GAAGF,oBAC/BuN,GAAqBrN,EAAAA,EAAAA,GAAa,GAAGF,0BACrCwN,GAAkBtN,EAAAA,EAAAA,GAAa,GAAGF,sBAClCyN,GAAoBvN,EAAAA,EAAAA,GAAa,GAAGF,wBACpC0N,GAAcxN,EAAAA,EAAAA,GAAa,GAAGF,iBAC9B2N,GAAYzN,EAAAA,EAAAA,GAAa,GAAGF,eAC5B4N,GAAa1N,EAAAA,EAAAA,GAAa,GAAGF,gBAC7B6N,GAAoB3N,EAAAA,EAAAA,GAAa,GAAGF,wBACpC8N,GAAsB5N,EAAAA,EAAAA,GAAa,GAAGF,0BACtC+N,GAAoB7N,EAAAA,EAAAA,GAAa,GAAGF,wBACpCgO,GAAgB9N,EAAAA,EAAAA,GAAa,GAAGF,mBAChCiO,GAAgB/N,EAAAA,EAAAA,GAAa,GAAGF,oBAChCkO,GAAchO,EAAAA,EAAAA,GAAa,GAAGF,iBAC9BmO,GAAoBjO,EAAAA,EAAAA,GAAa,GAAGF,yBACpCoO,GAAgBlO,EAAAA,EAAAA,GAAa,GAAGF,mBAEhCqO,GAAkBnO,EAAAA,EAAAA,GAAa,GAAGF,sBAClCsO,GAAkBpO,EAAAA,EAAAA,GAAa,GAAGF,sBAClCuO,GAAmBrO,EAAAA,EAAAA,GAAa,GAAGF,uBACnCwO,GAAsBtO,EAAAA,EAAAA,GAAa,GAAGF,2BACtCyO,GAA2BvO,EAAAA,EAAAA,GAAa,GAAGF,iCAC3C0O,GAAuBxO,EAAAA,EAAAA,GAAa,GAAGF,4BACvC2O,GAA0BzO,EAAAA,EAAAA,GAAa,GAAGF,+BAC1C4O,GAAmB1O,EAAAA,EAAAA,GAAa,GAAGF,uBAEnC6O,GAAmBC,EAAAA,EAAAA,GAAoB,GAAG9O,uBAA4B,GACtE+O,GAAqBD,EAAAA,EAAAA,GAAoB,GAAG9O,yBAA8B,GAC1EgP,GAAmBF,EAAAA,EAAAA,GAAoB,GAAG9O,uBAA4B,GAEtEiP,GAAwBH,EAAAA,EAAAA,GAAoB,GAAG9O,4BAAiC,GAChFkP,GAA0BJ,EAAAA,EAAAA,GAAoB,GAAG9O,8BAAmC,GACpFmP,GAAwBL,EAAAA,EAAAA,GAAoB,GAAG9O,4BAAiC,GAEhFoP,GAA6BN,EAAAA,EAAAA,GAAoB,GAAG9O,kCAAuC,GAC3FqP,GAA+BP,EAAAA,EAAAA,GAAoB,GAAG9O,oCAAyC,GAC/FsP,GAA6BR,EAAAA,EAAAA,GAAoB,GAAG9O,kCAAuC,GAE3F6D,GAAY3D,EAAAA,EAAAA,GAAa,GAAGF,cAE5BuP,GAAsBrP,EAAAA,EAAAA,GAAa,GAAGF,2BAEtCwP,GAA2BtP,EAAAA,EAAAA,GAAa,GAAGF,+BAC3CyP,GAA2BvP,EAAAA,EAAAA,GAAa,GAAGF,+BAC3C0P,GAA6BxP,EAAAA,EAAAA,GAAa,GAAGF,iCAG7C2P,IAD0BzP,EAAAA,EAAAA,GAAa,GAAGF,6BACdE,EAAAA,EAAAA,GAAa,GAAGF,mCAC5C4P,GAA4B1P,EAAAA,EAAAA,GAAa,GAAGF,kCAC5C6P,GAAuB3P,EAAAA,EAAAA,GAAa,GAAGF,4BACvC8P,GAAyB5P,EAAAA,EAAAA,GAAa,GAAGF,8BACzC+P,GAAuB7P,EAAAA,EAAAA,GAAa,GAAGF,4BACvCgQ,GAA0B9P,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CiQ,GAA4B/P,EAAAA,EAAAA,GAAa,GAAGF,iCAC5CkQ,GAA0BhQ,EAAAA,EAAAA,GAAa,GAAGF,+BAE1CmQ,GAAsBjQ,EAAAA,EAAAA,GAAa,GAAGF,yB,6lCC7DnD,MAEaoQ,GAAqBlQ,EAAAA,EAAAA,GAAa,+BAClCmQ,GAAqBnQ,EAAAA,EAAAA,GAAa,+BAClCoQ,GAAuBpQ,EAAAA,EAAAA,GAAa,iCACpCqQ,GAAuBrQ,EAAAA,EAAAA,GAAa,kCACpCsQ,GAActQ,EAAAA,EAAAA,GAAa,uBAC3BuQ,GAAYvQ,EAAAA,EAAAA,GAAa,qBACzBwQ,GAAexQ,EAAAA,EAAAA,GAAa,wBAC5BsE,GAAatE,EAAAA,EAAAA,GAAa,sBAC1ByQ,GAA2BzQ,EAAAA,EAAAA,GAAa,sCAExC0Q,IADY1Q,EAAAA,EAAAA,GAAa,sBACdA,EAAAA,EAAAA,GAAa,qBACxB2Q,GAAyB3Q,EAAAA,EAAAA,GAAa,qCAEtC4Q,GAA2B5Q,EAAAA,EAAAA,GAAa,sCACxC6Q,GAA2B7Q,EAAAA,EAAAA,GAAa,sCACxC8Q,GAA6B9Q,EAAAA,EAAAA,GAAa,wCAE1C+Q,GAA+B/Q,EAAAA,EAAAA,GAAa,2CAC5CgR,GAA+BhR,EAAAA,EAAAA,GAAa,2CAC5CiR,GAAiCjR,EAAAA,EAAAA,GAAa,6CAE9CkR,GAA+BlR,EAAAA,EAAAA,GAAa,kDAC5CmR,GAA+BnR,EAAAA,EAAAA,GAAa,kDAC5CoR,GAAiCpR,EAAAA,EAAAA,GAAa,oDAE9CqR,GAAgCrR,EAAAA,EAAAA,GAAa,mDAC7CsR,GAAgCtR,EAAAA,EAAAA,GAAa,mDAC7CuR,GAAkCvR,EAAAA,EAAAA,GAAa,qDAE/CwR,GAAuCxR,EAAAA,EAAAA,GAAa,qDAEpDyR,GAAiBzR,EAAAA,EAAAA,GAAa,kCAC9B0R,GAAoB1R,EAAAA,EAAAA,GAAa,qCAEjC2R,GAAuB3R,EAAAA,EAAAA,GAAa,mCACpC4R,GAA2B5R,EAAAA,EAAAA,GAAa,uCACxC6R,GAAoC7R,EAAAA,EAAAA,GAAa,iDACjD8R,GAA2B9R,EAAAA,EAAAA,GAAa,wCACxC+R,GAAiB/R,EAAAA,EAAAA,GAAa,2BAC9BgS,GAAqBhS,EAAAA,EAAAA,GAAa,gCAClCiS,GAA4BjS,EAAAA,EAAAA,GAAa,uCACzCkS,GAA6BlS,EAAAA,EAAAA,GAAa,wCAC1CmS,GAA6BnS,EAAAA,EAAAA,GAAa,wCAC1CoS,GAA8BpS,EAAAA,EAAAA,GAAa,yCAC3CqS,GAA8BrS,EAAAA,EAAAA,GAAa,yCAC3CsS,GAA+BtS,EAAAA,EAAAA,GAAa,0CAC5CuS,GAA8BvS,EAAAA,EAAAA,GAAa,0CAC3CwS,GAA+BxS,EAAAA,EAAAA,GAAa,2CAI5CyS,IAHczS,EAAAA,EAAAA,GAAa,yBACNA,EAAAA,EAAAA,GAAa,iCAEbA,EAAAA,EAAAA,GAAa,gCAElC0S,GAAwB1S,EAAAA,EAAAA,GAAa,mCACrC2S,GAA0B3S,EAAAA,EAAAA,GAAa,qCACvC4S,GAAwB5S,EAAAA,EAAAA,GAAa,kC,i5FCzDlD,MAAMH,EAAgB,MACtB,IAAIC,EAASD,EAGbC,EAAS,WACF,MAAM+S,GAAW7S,EAAAA,EAAAA,GAAa,GAAGF,cAE3BgT,GAAqB9S,EAAAA,EAAAA,GAAa,GAAGF,yBACrCiT,GAAuB/S,EAAAA,EAAAA,GAAa,GAAGF,2BACvCkT,GAAqBhT,EAAAA,EAAAA,GAAa,GAAGF,yBAErCmT,GAA8BjT,EAAAA,EAAAA,GAAa,GAAGF,mCAC9CoT,GAAgClT,EAAAA,EAAAA,GAAa,GAAGF,oCAChDqT,GAA8BnT,EAAAA,EAAAA,GAAa,GAAGF,mCAE9CsT,GAAiBpT,EAAAA,EAAAA,GAAa,GAAGF,qBACjCuT,GAAmBrT,EAAAA,EAAAA,GAAa,GAAGF,uBACnCwT,GAAiBtT,EAAAA,EAAAA,GAAa,GAAGF,qBAEjCyT,GAAoBvT,EAAAA,EAAAA,GAAa,GAAGF,wBACpC0T,GAAsBxT,EAAAA,EAAAA,GAAa,GAAGF,0BACtC2T,GAAoBzT,EAAAA,EAAAA,GAAa,GAAGF,wBAEpC4T,GAAsB1T,EAAAA,EAAAA,GAAa,GAAGF,0BACtC6T,GAAwB3T,EAAAA,EAAAA,GAAa,GAAGF,4BACxC8T,GAAsB5T,EAAAA,EAAAA,GAAa,GAAGF,0BAEtC+T,GAAiB7T,EAAAA,EAAAA,GAAa,GAAGF,qBACjCgU,GAAmB9T,EAAAA,EAAAA,GAAa,GAAGF,uBACnCiU,GAAiB/T,EAAAA,EAAAA,GAAa,GAAGF,qBAEjCkU,GAAiBhU,EAAAA,EAAAA,GAAa,GAAGF,qBACjCmU,GAAmBjU,EAAAA,EAAAA,GAAa,GAAGF,uBACnCoU,GAAiBlU,EAAAA,EAAAA,GAAa,GAAGF,qBAEjCqU,GAAiBnU,EAAAA,EAAAA,GAAa,GAAGF,qBACjCsU,GAAmBpU,EAAAA,EAAAA,GAAa,GAAGF,uBACnCuU,GAAiBrU,EAAAA,EAAAA,GAAa,GAAGF,qBAEjCwU,GAA8BtU,EAAAA,EAAAA,GAAa,GAAGF,mCAC9CyU,GAAgCvU,EAAAA,EAAAA,GAAa,GAAGF,qCAChD0U,GAA8BxU,EAAAA,EAAAA,GAAa,GAAGF,mCAE9C2U,GAAqCzU,EAAAA,EAAAA,GAAa,GAAGF,4CACrD4U,GAAuC1U,EAAAA,EAAAA,GAAa,GAAGF,8CACvD6U,GAAqC3U,EAAAA,EAAAA,GAAa,GAAGF,4CAErD8U,GAA6B5U,EAAAA,EAAAA,GAAa,GAAGF,mCAC7C+U,GAA+B7U,EAAAA,EAAAA,GAAa,GAAGF,qCAC/CgV,GAA6B9U,EAAAA,EAAAA,GAAa,GAAGF,mCAE7CiV,GAA8B/U,EAAAA,EAAAA,GAAa,GAAGF,mCAC9CkV,GAAgChV,EAAAA,EAAAA,GAAa,GAAGF,qCAChDmV,GAA8BjV,EAAAA,EAAAA,GAAa,GAAGF,mCAE9CoV,GAA8BlV,EAAAA,EAAAA,GAAa,GAAGF,mCAC9CqV,GAAgCnV,EAAAA,EAAAA,GAAa,GAAGF,qCAChDsV,GAA8BpV,EAAAA,EAAAA,GAAa,GAAGF,mCAE9CuV,GAAsBrV,EAAAA,EAAAA,GAAa,GAAGF,0BACtCwV,GAAwBtV,EAAAA,EAAAA,GAAa,GAAGF,4BACxCyV,GAAsBvV,EAAAA,EAAAA,GAAa,GAAGF,0BAEtC0V,GAAmBxV,EAAAA,EAAAA,GAAa,GAAGF,uBACnC2V,GAAiBzV,EAAAA,EAAAA,GAAa,GAAGF,aACjC4V,GAAsB1V,EAAAA,EAAAA,GAAa,GAAGF,0BAEtC6V,GAAwB3V,EAAAA,EAAAA,GAAa,GAAGF,6BACxC8V,GAA2B5V,EAAAA,EAAAA,GAAa,GAAGF,wBAC3C+V,IAAyB7V,EAAAA,EAAAA,GAAa,GAAGF,qBACzCgW,IAA0B9V,EAAAA,EAAAA,GAAa,GAAGF,uBAC1CiW,IAAY/V,EAAAA,EAAAA,GAAa,GAAGF,eAC5BkW,IAAiChW,EAAAA,EAAAA,GAAa,GAAGF,uCACjDmW,IAAgBjW,EAAAA,EAAAA,GAAa,GAAGF,mBAChCoW,IAAoBlW,EAAAA,EAAAA,GAAa,GAAGF,wBACpCqW,IAAgBnW,EAAAA,EAAAA,GAAa,GAAGF,oBAChCsW,IAAyBpW,EAAAA,EAAAA,GAAa,GAAGF,6BACzCuW,IAAqBrW,EAAAA,EAAAA,GAAa,GAAGF,yBACrCwW,IAAgCtW,EAAAA,EAAAA,GAAa,GAAGF,sCAEhDyW,IAA6BvW,EAAAA,EAAAA,GAAa,GAAGF,kCAC7C0W,IAA+BxW,EAAAA,EAAAA,GAAa,GAAGF,oCAC/C2W,IAA6BzW,EAAAA,EAAAA,GAAa,GAAGF,kCAE7C4W,IAA8B1W,EAAAA,EAAAA,GAAa,GAAGF,mCAC9C6W,IAAgC3W,EAAAA,EAAAA,GAAa,GAAGF,qCAChD8W,IAA8B5W,EAAAA,EAAAA,GAAa,GAAGF,mCAE9C+W,IAAgC7W,EAAAA,EAAAA,GAAa,GAAGF,qCAChDgX,IAAkC9W,EAAAA,EAAAA,GAAa,GAAGF,uCAClDiX,IAAgC/W,EAAAA,EAAAA,GAAa,GAAGF,qCAEhDkX,IAA8BhX,EAAAA,EAAAA,GAAa,GAAGF,mCAC9CmX,IAAgCjX,EAAAA,EAAAA,GAAa,GAAGF,qCAChDoX,IAA8BlX,EAAAA,EAAAA,GAAa,GAAGF,mCAG3DA,EAAS,SAEF,MAAMqX,IAAwBnX,EAAAA,EAAAA,GAAa,GAAGF,6BACxCsX,IAAyBpX,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCuX,IAAwBrX,EAAAA,EAAAA,GAAa,GAAGF,6BACxCwX,IAAyBtX,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCyX,IAA2BvX,EAAAA,EAAAA,GAAa,GAAGF,gCAC3C0X,IAA4BxX,EAAAA,EAAAA,GAAa,GAAGF,iCAE5C2X,IAA0BzX,EAAAA,EAAAA,GAAa,GAAGF,+BAC1C4X,IAA2B1X,EAAAA,EAAAA,GAAa,GAAGF,gCAE3C6X,IAAiB3X,EAAAA,EAAAA,GAAa,GAAGF,qBACjC8X,IAAkB5X,EAAAA,EAAAA,GAAa,GAAGF,sBAElC+X,IAAsB7X,EAAAA,EAAAA,GAAa,GAAGF,2BACtCgY,IAAuB9X,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCiY,IAAsB/X,EAAAA,EAAAA,GAAa,GAAGF,2BACtCkY,IAAuBhY,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCmY,IAAmCjY,EAAAA,EAAAA,GAAa,GAAGF,yCACnDoY,IAAoClY,EAAAA,EAAAA,GAAa,GAAGF,0CAEpDqY,IAAiCnY,EAAAA,EAAAA,GAAa,GAAGF,uCACjDsY,IAAkCpY,EAAAA,EAAAA,GAAa,GAAGF,wCAElDuY,IAAiCrY,EAAAA,EAAAA,GAAa,GAAGF,uCACjDwY,IAAkCtY,EAAAA,EAAAA,GAAa,GAAGF,wCAElDyY,IAASvY,EAAAA,EAAAA,GAAa,GAAGF,YACzB0Y,IAAaxY,EAAAA,EAAAA,GAAa,GAAGF,iBAC7B2Y,IAAazY,EAAAA,EAAAA,GAAa,GAAGF,iBAE7B4Y,IAAuB1Y,EAAAA,EAAAA,GAAa,GAAGF,4BAEvC6Y,IAAuB3Y,EAAAA,EAAAA,GAAa,GAAGF,4BACvC8Y,IAAwB5Y,EAAAA,EAAAA,GAAa,GAAGF,6BAExC+Y,IAAiB7Y,EAAAA,EAAAA,GAAa,GAAGF,kBACjCgZ,IAAiB9Y,EAAAA,EAAAA,GAAa,GAAGF,kBACjCiZ,IAAiB/Y,EAAAA,EAAAA,GAAa,GAAGF,kBACjCkZ,IAAsBhZ,EAAAA,EAAAA,GAAa,GAAGF,0BAEtCmZ,IAA0BjZ,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CoZ,IAA2BlZ,EAAAA,EAAAA,GAAa,GAAGF,gCAE3CqZ,IAAyBnZ,EAAAA,EAAAA,GAAa,GAAGF,8BACzCsZ,IAA0BpZ,EAAAA,EAAAA,GAAa,GAAGF,+BAE1CuZ,IAAgCrZ,EAAAA,EAAAA,GAAa,GAAGF,sCAChDwZ,IAA2BtZ,EAAAA,EAAAA,GAAa,GAAGF,kCAE3CyZ,IAAkCvZ,EAAAA,EAAAA,GAAa,GAAGF,wCAClD0Z,IAAmCxZ,EAAAA,EAAAA,GAAa,GAAGF,yCAGhEA,EAAS,aACF,MAAM2Z,IAAiBzZ,EAAAA,EAAAA,GAAa,GAAGF,qBACjC4Z,IAAe1Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B6Z,IAAe3Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B8Z,IAAmC5Z,EAAAA,EAAAA,GAAa,GAAGF,yCACnD+Z,IAAsC7Z,EAAAA,EAAAA,GAAa,GAAGF,4CACtDga,IAAyC9Z,EAAAA,EAAAA,GAAa,GAAGF,gDACzDia,IAAe/Z,EAAAA,EAAAA,GAAa,GAAGF,iBAC/Bka,IAAkBha,EAAAA,EAAAA,GAAa,GAAGF,sBAClCma,IAA2Bja,EAAAA,EAAAA,GAAa,GAAGF,gCAC3Coa,IAAiCla,EAAAA,EAAAA,GAAa,GAAGF,qC,w3KCrK9D,MAAMD,EAAgB,MACtB,IAAIC,EAASD,EAGN,MAAMsa,GAAcna,EAAAA,EAAAA,GAAa,GAAGF,iBAC9Bsa,GAAqBpa,EAAAA,EAAAA,GAAa,GAAGF,0BACrCua,GAAgBra,EAAAA,EAAAA,GAAa,GAAGF,6BAChCwa,GAAwBta,EAAAA,EAAAA,GAAa,GAAGF,6BACxCya,GAAyBva,EAAAA,EAAAA,GAAa,GAAGF,8BACzC0a,GAAmBxa,EAAAA,EAAAA,GAAa,GAAGF,2BACnC2a,GAAoBza,EAAAA,EAAAA,GAAa,GAAGF,wBACpC4a,GAAiB1a,EAAAA,EAAAA,GAAa,GAAGF,oBACjC6a,GAAgB3a,EAAAA,EAAAA,GAAa,GAAGF,mBAEhC8a,GAAkB5a,EAAAA,EAAAA,GAAa,GAAGF,sBAClC+a,GAAoB7a,EAAAA,EAAAA,GAAa,GAAGF,wBACpCgb,GAAkB9a,EAAAA,EAAAA,GAAa,GAAGF,sBAElCib,GAAmB/a,EAAAA,EAAAA,GAAa,GAAGF,uBACnCkb,GAAqBhb,EAAAA,EAAAA,GAAa,GAAGF,yBACrCmb,GAAmBjb,EAAAA,EAAAA,GAAa,GAAGF,uBAEnCob,GAAqBlb,EAAAA,EAAAA,GAAa,GAAGF,yBACrCqb,GAAuBnb,EAAAA,EAAAA,GAAa,GAAGF,2BACvCsb,GAAqBpb,EAAAA,EAAAA,GAAa,GAAGF,yBAErCub,GAASrb,EAAAA,EAAAA,GAAa,GAAGF,WAEzBwb,GAAuBtb,EAAAA,EAAAA,GAAa,GAAGF,2BACvCyb,GAAyBvb,EAAAA,EAAAA,GAAa,GAAGF,6BACzC0b,GAAuBxb,EAAAA,EAAAA,GAAa,GAAGF,2BAEvC2b,GAAsBzb,EAAAA,EAAAA,GAAa,GAAGF,0BACtC4b,GAAwB1b,EAAAA,EAAAA,GAAa,GAAGF,4BACxC6b,GAAsB3b,EAAAA,EAAAA,GAAa,GAAGF,0BAEtC8b,GAAoC5b,EAAAA,EAAAA,GAAa,GAAGF,0CACpD+b,GAAsC7b,EAAAA,EAAAA,GAAa,GAAGF,4CACtDgc,GAAoC9b,EAAAA,EAAAA,GAAa,GAAGF,0CAEpDic,GAAmC/b,EAAAA,EAAAA,GAAa,GAAGF,yCACnDkc,GAAqChc,EAAAA,EAAAA,GAAa,GAAGF,2CACrDmc,GAAmCjc,EAAAA,EAAAA,GAAa,GAAGF,yCAEnDoc,GAA4Clc,EAAAA,EAAAA,GAAa,GAAGF,mDAC5Dqc,GAA8Cnc,EAAAA,EAAAA,GAAa,GAAGF,qDAC9Dsc,GAA4Cpc,EAAAA,EAAAA,GAAa,GAAGF,mDAE5Duc,GAAmCrc,EAAAA,EAAAA,GAAa,GAAGF,yCACnDwc,GAAqCtc,EAAAA,EAAAA,GAAa,GAAGF,2CACrDyc,GAAmCvc,EAAAA,EAAAA,GAAa,GAAGF,yCAEnD0c,GAAuBxc,EAAAA,EAAAA,GAAa,GAAGF,2BACvC2c,GAAyBzc,EAAAA,EAAAA,GAAa,GAAGF,6BACzC4c,GAAuB1c,EAAAA,EAAAA,GAAa,GAAGF,2BAEvC6c,GAAc3c,EAAAA,EAAAA,GAAa,GAAGF,iBAE9B8c,GAAmB5c,EAAAA,EAAAA,GAAa,GAAGF,uBACnC+c,GAAqB7c,EAAAA,EAAAA,GAAa,GAAGF,yBACrCgd,GAAmB9c,EAAAA,EAAAA,GAAa,GAAGF,uBAEnCid,GAA2B/c,EAAAA,EAAAA,GAAa,GAAGF,gCAC3Ckd,GAA6Bhd,EAAAA,EAAAA,GAAa,GAAGF,kCAC7Cmd,GAA2Bjd,EAAAA,EAAAA,GAAa,GAAGF,gCAE3Cod,GAAuCld,EAAAA,EAAAA,GAAa,GAAGF,0CACvDqd,IAAyCnd,EAAAA,EAAAA,GAAa,GAAGF,4CACzDsd,IAAuCpd,EAAAA,EAAAA,GAAa,GAAGF,0CAEvDud,IAA8Brd,EAAAA,EAAAA,GAAa,GAAGF,mCAC9Cwd,IAAgCtd,EAAAA,EAAAA,GAAa,GAAGF,qCAChDyd,IAA8Bvd,EAAAA,EAAAA,GAAa,GAAGF,mCAE9C0d,IAA+Bxd,EAAAA,EAAAA,GAAa,GAAGF,sCAC/C2d,IAAiCzd,EAAAA,EAAAA,GAAa,GAAGF,wCACjD4d,IAA+B1d,EAAAA,EAAAA,GAAa,GAAGF,sCAE/C6d,IAA+B3d,EAAAA,EAAAA,GAAa,GAAGF,qCAC/C8d,IAAiC5d,EAAAA,EAAAA,GAAa,GAAGF,uCACjD+d,IAA+B7d,EAAAA,EAAAA,GAAa,GAAGF,qCAE/Cge,IAAuB9d,EAAAA,EAAAA,GAAa,GAAGF,4BACvCie,IAAyB/d,EAAAA,EAAAA,GAAa,GAAGF,8BACzCke,IAAuBhe,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCme,IAA2Bje,EAAAA,EAAAA,GAAa,GAAGF,iCAC3Coe,IAA6Ble,EAAAA,EAAAA,GAAa,GAAGF,mCAC7Cqe,IAA2Bne,EAAAA,EAAAA,GAAa,GAAGF,iCAE3Cse,IAAuBpe,EAAAA,EAAAA,GAAa,GAAGF,4BACvCue,IAAyBre,EAAAA,EAAAA,GAAa,GAAGF,8BACzCwe,IAAuBte,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCye,IAAmBve,EAAAA,EAAAA,GAAa,GAAGF,uBAEnC0e,IAA6Bxe,EAAAA,EAAAA,GAAa,GAAGF,kCAC7C2e,IAA+Bze,EAAAA,EAAAA,GAAa,GAAGF,oCAC/C4e,IAA6B1e,EAAAA,EAAAA,GAAa,GAAGF,kCAC7C6e,IAA4B3e,EAAAA,EAAAA,GAAa,GAAGF,iCAE5C8e,IAAuB5e,EAAAA,EAAAA,GAAa,GAAGF,4BACvC+e,IAAyB7e,EAAAA,EAAAA,GAAa,GAAGF,8BACzCgf,IAAuB9e,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCif,IAAkC/e,EAAAA,EAAAA,GAAa,GAAGF,yCAClDkf,IAAiChf,EAAAA,EAAAA,GAAa,GAAGF,wCAEjDmf,IAA4Bjf,EAAAA,EAAAA,GAAa,GAAGF,kCAC5Cof,IAAsClf,EAAAA,EAAAA,GAAa,GAAGF,6CACtDqf,IAAsCnf,EAAAA,EAAAA,GAAa,GAAGF,6CACtDsf,IAAoCpf,EAAAA,EAAAA,GAAa,GAAGF,2CACpDuf,IAAoCrf,EAAAA,EAAAA,GAAa,GAAGF,2CAEpDwf,IAA2Btf,EAAAA,EAAAA,GAAa,GAAGF,gCAC3Cyf,IAA6Bvf,EAAAA,EAAAA,GAAa,GAAGF,kCAC7C0f,IAA2Bxf,EAAAA,EAAAA,GAAa,GAAGF,gCAE3C2f,IAA4Bzf,EAAAA,EAAAA,GAAa,GAAGF,iCAC5C4f,IAA8B1f,EAAAA,EAAAA,GAAa,GAAGF,mCAC9C6f,IAA4B3f,EAAAA,EAAAA,GAAa,GAAGF,iCAE5C8f,IAA0B5f,EAAAA,EAAAA,GAAa,GAAGF,+BAC1C+f,IAA4B7f,EAAAA,EAAAA,GAAa,GAAGF,iCAC5CggB,IAA0B9f,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CigB,IAAkB/f,EAAAA,EAAAA,GAAa,GAAGF,qBAElCkgB,IAA6BhgB,EAAAA,EAAAA,GAAa,GAAGF,kCAC7CmgB,IAA+BjgB,EAAAA,EAAAA,GAAa,GAAGF,oCAC/CogB,IAA6BlgB,EAAAA,EAAAA,GAAa,GAAGF,kCAE7CqgB,IAAiCngB,EAAAA,EAAAA,GAAa,GAAGF,uCAEjDsgB,IAAsBpgB,EAAAA,EAAAA,GAAa,GAAGF,2BACtCugB,IAAwBrgB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCwgB,IAAsBtgB,EAAAA,EAAAA,GAAa,GAAGF,2BAGnDA,EAAS,SACF,MAAMygB,IAAwBvgB,EAAAA,EAAAA,GAAa,GAAGF,6BACxC0gB,IAAyBxgB,EAAAA,EAAAA,GAAa,GAAGF,8BAEzC2gB,IAA2BzgB,EAAAA,EAAAA,GAAa,GAAGF,iCAC3C4gB,IAA4B1gB,EAAAA,EAAAA,GAAa,GAAGF,kCAE5C6gB,IAAuB3gB,EAAAA,EAAAA,GAAa,GAAGF,4BACvC8gB,IAAwB5gB,EAAAA,EAAAA,GAAa,GAAGF,6BAExC+gB,IAAwB7gB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCghB,IAAyB9gB,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCihB,IAAmB/gB,EAAAA,EAAAA,GAAa,GAAGF,uBACnCkhB,IAAoBhhB,EAAAA,EAAAA,GAAa,GAAGF,wBAEpCmhB,IAAqBjhB,EAAAA,EAAAA,GAAa,GAAGF,yBACrCohB,IAAsBlhB,EAAAA,EAAAA,GAAa,GAAGF,0BAEtCqhB,IAAwBnhB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCshB,IAAyBphB,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCuhB,IAAiBrhB,EAAAA,EAAAA,GAAa,GAAGF,qBACjCwhB,IAAkBthB,EAAAA,EAAAA,GAAa,GAAGF,sBAElCyhB,IAAyBvhB,EAAAA,EAAAA,GAAa,GAAGF,8BACzC0hB,IAA0BxhB,EAAAA,EAAAA,GAAa,GAAGF,+BAE1C2hB,IAAuBzhB,EAAAA,EAAAA,GAAa,GAAGF,4BACvC4hB,IAAoB1hB,EAAAA,EAAAA,GAAa,GAAGF,wBACpC6hB,IAA4B3hB,EAAAA,EAAAA,GAAa,GAAGF,kCAC5C8hB,IAA6B5hB,EAAAA,EAAAA,GAAa,GAAGF,mCAE7C+hB,IAA+B7hB,EAAAA,EAAAA,GAAa,GAAGF,qCAC/CgiB,IAAgC9hB,EAAAA,EAAAA,GAAa,GAAGF,sCAEhDiiB,IAA0B/hB,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CkiB,IAAyBhiB,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCmiB,IAAyBjiB,EAAAA,EAAAA,GAAa,GAAGF,8BACzCoiB,IAA2BliB,EAAAA,EAAAA,GAAa,GAAGF,gCAC3CqiB,IAAyBniB,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCsiB,IAAwBpiB,EAAAA,EAAAA,GAAa,GAAGF,6BAExCuiB,IAAoBriB,EAAAA,EAAAA,GAAa,GAAGF,wBACpCwiB,IAAsBtiB,EAAAA,EAAAA,GAAa,GAAGF,0BACtCyiB,IAAoBviB,EAAAA,EAAAA,GAAa,GAAGF,wBAEpC0iB,IAAqBxiB,EAAAA,EAAAA,GAAa,GAAGF,yBACrC2iB,IAAuBziB,EAAAA,EAAAA,GAAa,GAAGF,2BACvC4iB,IAAqB1iB,EAAAA,EAAAA,GAAa,GAAGF,yBAErC6iB,IAAsB3iB,EAAAA,EAAAA,GAAa,GAAGF,0BACtC8iB,IAAwB5iB,EAAAA,EAAAA,GAAa,GAAGF,4BACxC+iB,IAAsB7iB,EAAAA,EAAAA,GAAa,GAAGF,0BAEtCgjB,IAAe9iB,EAAAA,EAAAA,GAAa,GAAGF,kBAC/BijB,IAAe/iB,EAAAA,EAAAA,GAAa,GAAGF,kBAC/BkjB,IAAqBhjB,EAAAA,EAAAA,GAAa,GAAGF,yBACrCmjB,IAA8BjjB,EAAAA,EAAAA,GAAa,GAAGF,mCAE9C4Y,IAAuB1Y,EAAAA,EAAAA,GAAa,GAAGF,4BACvC+Y,IAAiB7Y,EAAAA,EAAAA,GAAa,GAAGF,kBAEjCgZ,IAAiB9Y,EAAAA,EAAAA,GAAa,GAAGF,kBACjCojB,IAAiBljB,EAAAA,EAAAA,GAAa,GAAGF,kBACjCiZ,IAAiB/Y,EAAAA,EAAAA,GAAa,GAAGF,kBACjCkZ,IAAsBhZ,EAAAA,EAAAA,GAAa,GAAGF,0BAEtCqjB,IAA4BnjB,EAAAA,EAAAA,GAAa,GAAGF,iCAC5CsjB,IAAgCpjB,EAAAA,EAAAA,GAAa,GAAGF,qCAEhDujB,IAAqBrjB,EAAAA,EAAAA,GAAa,GAAGF,0BACrCwjB,IAAqBtjB,EAAAA,EAAAA,GAAa,GAAGF,0BACrCyjB,IAAoBvjB,EAAAA,EAAAA,GAAa,GAAGF,yBAEpC0jB,IAA4BxjB,EAAAA,EAAAA,GAAa,GAAGF,kCAE5C2jB,IAAqBzjB,EAAAA,EAAAA,GAAa,GAAGF,0BACrC4jB,IAAsB1jB,EAAAA,EAAAA,GAAa,GAAGF,2BAEtC6jB,IAA6B3jB,EAAAA,EAAAA,GAAa,GAAGF,mCAC7C8jB,IAA+B5jB,EAAAA,EAAAA,GAAa,GAAGF,qCAC/C+jB,IAA6B7jB,EAAAA,EAAAA,GAAa,GAAGF,mCAE7CgkB,IAAyB9jB,EAAAA,EAAAA,GAAa,GAAGF,8BACzCikB,IAA0B/jB,EAAAA,EAAAA,GAAa,GAAGF,+BAE1CkkB,IAAiBhkB,EAAAA,EAAAA,GAAa,GAAGF,qBAEjCmkB,IAAuBjkB,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCokB,IAA2BlkB,EAAAA,EAAAA,GAAa,GAAGF,iCAE3CqkB,IAAiCnkB,EAAAA,EAAAA,GAAa,GAAGF,uCAEjDskB,IAA2BpkB,EAAAA,EAAAA,GAAa,GAAGF,gCAC3CukB,IAA4BrkB,EAAAA,EAAAA,GAAa,GAAGF,iCAC5CwkB,IAA0BtkB,EAAAA,EAAAA,GAAa,GAAGF,+BAE1CykB,IAA6BvkB,EAAAA,EAAAA,GAAa,GAAGF,kCAE7C0kB,IAA8BxkB,EAAAA,EAAAA,GAAa,GAAGF,mCAC9C2kB,IAA+BzkB,EAAAA,EAAAA,GAAa,GAAGF,oCAE/C4kB,IAAoC1kB,EAAAA,EAAAA,GAAa,GAAGF,0CACpD6kB,IAAqC3kB,EAAAA,EAAAA,GAAa,GAAGF,2CAErD8kB,IAA0B5kB,EAAAA,EAAAA,GAAa,GAAGF,+BAE1C+kB,IAA4B7kB,EAAAA,EAAAA,GAAa,GAAGF,iCAC5CglB,IAA6B9kB,EAAAA,EAAAA,GAAa,GAAGF,kCAE7CilB,IAA4B/kB,EAAAA,EAAAA,GAAa,GAAGF,iCAC5CklB,IAA6BhlB,EAAAA,EAAAA,GAAa,GAAGF,kCAE7CmlB,IAAkCjlB,EAAAA,EAAAA,GAAa,GAAGF,yCAClDolB,IAAiCllB,EAAAA,EAAAA,GAAa,GAAGF,wCAEjDqlB,IAAuBnlB,EAAAA,EAAAA,GAAa,GAAGF,4BACvCslB,IAAwBplB,EAAAA,EAAAA,GAAa,GAAGF,6BAExCulB,IAAwBrlB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCwlB,IAAsBtlB,EAAAA,EAAAA,GAAa,GAAGF,2BAEtCylB,IAAsCvlB,EAAAA,EAAAA,GAAa,GAAGF,6CACtD0lB,IAAuCxlB,EAAAA,EAAAA,GAAa,GAAGF,8CAGpEA,EAAS,aACF,MAAM2Z,IAAiBzZ,EAAAA,EAAAA,GAAa,GAAGF,qBACjC4Z,IAAe1Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B2lB,IAAezlB,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B6Z,IAAe3Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/Bia,IAAe/Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B4lB,IAAU1lB,EAAAA,EAAAA,GAAa,GAAGF,aAC1B6lB,IAAW3lB,EAAAA,EAAAA,GAAa,GAAGF,cAC3B8lB,IAAY5lB,EAAAA,EAAAA,GAAa,GAAGF,gBAC5B+lB,IAA0B7lB,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CgmB,IAAoB9lB,EAAAA,EAAAA,GAAa,GAAGF,wBACpCimB,IAAqB/lB,EAAAA,EAAAA,GAAa,GAAGF,yBACrCkmB,IAA0BhmB,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CmmB,IAA2BjmB,EAAAA,EAAAA,GAAa,GAAGF,gCAGxDA,EAAS,eAEF,MAAMomB,IAAkBlmB,EAAAA,EAAAA,GAAa,GAAGF,sBAClCqmB,IAAgCnmB,EAAAA,EAAAA,GAAa,GAAGF,sCAChDsmB,IAAyBpmB,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCumB,IAA2BrmB,EAAAA,EAAAA,GAAa,GAAGF,gCAC3CwmB,IAA6BtmB,EAAAA,EAAAA,GAAa,GAAGF,kCAC7CymB,IAA2BvmB,EAAAA,EAAAA,GAAa,GAAGF,gCAE3C0mB,IAAqBxmB,EAAAA,EAAAA,GAAa,GAAGF,yBACrC2mB,IAAsBzmB,EAAAA,EAAAA,GAAa,GAAGF,0BAEtC4mB,IAAe1mB,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B6mB,IAAgB3mB,EAAAA,EAAAA,GAAa,GAAGF,mBAEhC8mB,IAAyB5mB,EAAAA,EAAAA,GAAa,GAAGF,6B,+jDC3StD,IAAIA,EAAS,eAGN,MAAM+mB,GAAgB7mB,EAAAA,EAAAA,GAAa,GAAGF,oBAChCgnB,GAA6B9mB,EAAAA,EAAAA,GAAa,GAAGF,qCAE7CinB,GAAqBnY,EAAAA,EAAAA,GAAoB,GAAG9O,0BAA+B,GAC3EknB,GAAuBpY,EAAAA,EAAAA,GAAoB,GAAG9O,4BAAiC,GAC/EmnB,GAAqBrY,EAAAA,EAAAA,GAAoB,GAAG9O,0BAA+B,GAE3EonB,GAAuBlnB,EAAAA,EAAAA,GAAa,GAAGF,4BACvCqnB,GAAyBnnB,EAAAA,EAAAA,GAAa,GAAGF,8BACzCsnB,GAAuBpnB,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCunB,GAAsBrnB,EAAAA,EAAAA,GAAa,GAAGF,2BACtCwnB,GAAwBtnB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCynB,GAAsBvnB,EAAAA,EAAAA,GAAa,GAAGF,2BAEtC0nB,GAA6B5Y,EAAAA,EAAAA,GAAoB,GAAG9O,oCAAyC,GAC7F2nB,GAA+B7Y,EAAAA,EAAAA,GAAoB,GAAG9O,sCAA2C,GACjG4nB,GAA6B9Y,EAAAA,EAAAA,GAAoB,GAAG9O,oCAAyC,GAE7F6nB,GAA+B/Y,EAAAA,EAAAA,GAAoB,GAAG9O,sCAA2C,GACjG8nB,GAAiChZ,EAAAA,EAAAA,GAAoB,GAAG9O,wCAA6C,GACrG+nB,GAA+BjZ,EAAAA,EAAAA,GAAoB,GAAG9O,sCAA2C,GAEjGgoB,GAA8BlZ,EAAAA,EAAAA,GAAoB,GAAG9O,qCAA0C,GAC/FioB,GAAgCnZ,EAAAA,EAAAA,GAAoB,GAAG9O,uCAA4C,GACnGkoB,GAA8BpZ,EAAAA,EAAAA,GAAoB,GAAG9O,qCAA0C,GAE/FmoB,GAAgCrZ,EAAAA,EAAAA,GAAoB,GAAG9O,uCAA4C,GACnGooB,GAAkCtZ,EAAAA,EAAAA,GAAoB,GAAG9O,yCAA8C,GACvGqoB,GAAgCvZ,EAAAA,EAAAA,GAAoB,GAAG9O,uCAA4C,GAEnGsoB,GAA6BxZ,EAAAA,EAAAA,GAAoB,GAAG9O,oCAAyC,GAC7FuoB,GAA+BzZ,EAAAA,EAAAA,GAAoB,GAAG9O,sCAA2C,GACjGwoB,GAA6B1Z,EAAAA,EAAAA,GAAoB,GAAG9O,oCAAyC,GAE7FyoB,GAAyCvoB,EAAAA,EAAAA,GAAa,GAAGF,gDACzD0oB,GAA2CxoB,EAAAA,EAAAA,GAAa,GAAGF,kDAC3D2oB,GAAyCzoB,EAAAA,EAAAA,GAAa,GAAGF,gDAGtEA,EAAS,kBACF,MAAM4oB,GAA0C1oB,EAAAA,EAAAA,GAAa,GAAGF,iDAC1D6oB,GAAuB3oB,EAAAA,EAAAA,GAAa,GAAGF,4BACvC8oB,GAAsB5oB,EAAAA,EAAAA,GAAa,GAAGF,2BACtC+oB,GAAsB7oB,EAAAA,EAAAA,GAAa,GAAGF,2BACtCgpB,GAA2B9oB,EAAAA,EAAAA,GAAa,GAAGF,iCAC3CipB,GAA2B/oB,EAAAA,EAAAA,GAAa,GAAGF,iCAC3CkpB,GAAmChpB,EAAAA,EAAAA,GAAa,GAAGF,2CACnDmpB,GAAmCjpB,EAAAA,EAAAA,GAAa,GAAGF,2CACnDopB,GAAoClpB,EAAAA,EAAAA,GAAa,GAAGF,4CACpDqpB,GAAoCnpB,EAAAA,EAAAA,GAAa,GAAGF,4CAIpD0V,IAHmBxV,EAAAA,EAAAA,GAAa,GAAGF,wBACdE,EAAAA,EAAAA,GAAa,GAAGF,0BAClBE,EAAAA,EAAAA,GAAa,GAAGF,wBAChBE,EAAAA,EAAAA,GAAa,GAAGF,wBACnCspB,GAA4BppB,EAAAA,EAAAA,GAAa,GAAGF,kCAC5CupB,GAAiCrpB,EAAAA,EAAAA,GAAa,GAAGF,wCACjDwpB,GAA8BtpB,EAAAA,EAAAA,GAAa,GAAGF,qCAC9CyY,GAASvY,EAAAA,EAAAA,GAAa,GAAGF,YACzBypB,GAA4BvpB,EAAAA,EAAAA,GAAa,GAAGF,kCAC5C0pB,GAA4BxpB,EAAAA,EAAAA,GAAa,GAAGF,kCAC5C2pB,GAAwBzpB,EAAAA,EAAAA,GAAa,GAAGF,8BACxC4pB,GAAsB1pB,EAAAA,EAAAA,GAAa,GAAGF,2BAGnDA,EAAS,sBACF,MAAM6pB,IAAqB3pB,EAAAA,EAAAA,GAAa,GAAGF,0BACrC8pB,IAAuB5pB,EAAAA,EAAAA,GAAa,GAAGF,4BAEvC+pB,IAAkB7pB,EAAAA,EAAAA,GAAa,GAAGF,sBAClCgqB,IAAkB9pB,EAAAA,EAAAA,GAAa,GAAGF,sBAElCiqB,IAAwB/pB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCkqB,IAAwBhqB,EAAAA,EAAAA,GAAa,GAAGF,6BAExCmqB,IAAmBjqB,EAAAA,EAAAA,GAAa,GAAGF,uBAEnCoqB,IAAiBlqB,EAAAA,EAAAA,GAAa,GAAGF,qBACjCqqB,IAAmBnqB,EAAAA,EAAAA,GAAa,GAAGF,uBACnCsqB,IAAiBpqB,EAAAA,EAAAA,GAAa,GAAGF,qBAEjCuqB,IAAmBrqB,EAAAA,EAAAA,GAAa,GAAGF,uBACnCwqB,IAAqBtqB,EAAAA,EAAAA,GAAa,GAAGF,yBACrCyqB,IAAmBvqB,EAAAA,EAAAA,GAAa,GAAGF,uBAEnC0qB,IAAoCxqB,EAAAA,EAAAA,GAAa,GAAGF,0CAEpD2qB,IAAsBzqB,EAAAA,EAAAA,GAAa,GAAGF,0B,yhDC5FnD,MAAMD,EAAgB,WACtB,IAAIC,EAASD,EAEN,MAAM6qB,GAAqB1qB,EAAAA,EAAAA,GAAa,GAAGF,yBACrC6qB,GAAqB3qB,EAAAA,EAAAA,GAAa,GAAGF,yBACrC8qB,GAAuB5qB,EAAAA,EAAAA,GAAa,GAAGF,2BAEvC+qB,GAAqB7qB,EAAAA,EAAAA,GAAa,GAAGF,yBACrCgrB,GAAqB9qB,EAAAA,EAAAA,GAAa,GAAGF,yBACrCirB,GAAuB/qB,EAAAA,EAAAA,GAAa,GAAGF,2BAEvCkrB,GAA8BhrB,EAAAA,EAAAA,GAAa,GAAGF,oCAC9CmrB,GAA8BjrB,EAAAA,EAAAA,GAAa,GAAGF,oCAC9CorB,GAAgClrB,EAAAA,EAAAA,GAAa,GAAGF,sCAEhDqrB,GAA6BnrB,EAAAA,EAAAA,GAAa,GAAGF,mCAC7CsrB,GAA6BprB,EAAAA,EAAAA,GAAa,GAAGF,mCAC7CurB,GAA+BrrB,EAAAA,EAAAA,GAAa,GAAGF,qCAE/CwrB,GAAuBtrB,EAAAA,EAAAA,GAAa,GAAGF,4BACvCyrB,GAAyBvrB,EAAAA,EAAAA,GAAa,GAAGF,8BACzC0rB,GAAuBxrB,EAAAA,EAAAA,GAAa,GAAGF,4BAEvC2rB,GAA0BzrB,EAAAA,EAAAA,GAAa,GAAGF,+BAC1C4rB,GAA4B1rB,EAAAA,EAAAA,GAAa,GAAGF,iCAC5C6rB,GAA0B3rB,EAAAA,EAAAA,GAAa,GAAGF,+BAE1C8rB,GAA8B5rB,EAAAA,EAAAA,GAAa,GAAGF,mCAC9C+rB,GAAgC7rB,EAAAA,EAAAA,GAAa,GAAGF,qCAChDgsB,GAA8B9rB,EAAAA,EAAAA,GAAa,GAAGF,mCAE9CisB,GAA4B/rB,EAAAA,EAAAA,GAAa,GAAGF,iCAC5CksB,GAA8BhsB,EAAAA,EAAAA,GAAa,GAAGF,mCAC9CmsB,GAA4BjsB,EAAAA,EAAAA,GAAa,GAAGF,iCAE5C4Z,GAAe1Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B2lB,GAAezlB,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B6Z,GAAe3Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/Bia,GAAe/Z,EAAAA,EAAAA,GAAa,GAAGF,kBAE/BosB,GAAwBlsB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCqsB,GAAiBnsB,EAAAA,EAAAA,GAAa,GAAGF,oBACjCssB,GAAwBpsB,EAAAA,EAAAA,GAAa,GAAGF,4BAErDA,EAAS,cACF,MAAMusB,GAAoBrsB,EAAAA,EAAAA,GAAa,GAAGF,sBACpCwsB,GAAsBtsB,EAAAA,EAAAA,GAAa,GAAGF,wBACtC+Y,GAAiB7Y,EAAAA,EAAAA,GAAa,GAAGF,kBACjCysB,GAAmBvsB,EAAAA,EAAAA,GAAa,GAAGF,mBACnC0sB,GAA0BxsB,EAAAA,EAAAA,GAAa,GAAGF,0BAC1C2sB,GAAoBzsB,EAAAA,EAAAA,GAAa,GAAGF,wBACpC4sB,GAAuB1sB,EAAAA,EAAAA,GAAa,GAAGF,2BACvC6sB,GAAiB3sB,EAAAA,EAAAA,GAAa,GAAGF,kBACjC8sB,GAAiB5sB,EAAAA,EAAAA,GAAa,GAAGF,kBACjC+sB,GAAqB7sB,EAAAA,EAAAA,GAAa,GAAGF,yBACrCgtB,GAAoB9sB,EAAAA,EAAAA,GAAa,GAAGF,wBACpCgZ,GAAiB9Y,EAAAA,EAAAA,GAAa,GAAGF,kBACjCojB,GAAiBljB,EAAAA,EAAAA,GAAa,GAAGF,kBACjCiZ,GAAiB/Y,EAAAA,EAAAA,GAAa,GAAGF,kBAEjCitB,GAAuB/sB,EAAAA,EAAAA,GAAa,GAAGF,4BACvCktB,GAAwBhtB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCmtB,GAAwBjtB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCotB,IAAyBltB,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCqtB,IAA2BntB,EAAAA,EAAAA,GAAa,GAAGF,iCAC3CstB,IAA0BptB,EAAAA,EAAAA,GAAa,GAAGF,gCAE1CutB,IAA4BrtB,EAAAA,EAAAA,GAAa,GAAGF,kCAC5CwtB,IAA2BttB,EAAAA,EAAAA,GAAa,GAAGF,iCAC3CytB,IAA+BvtB,EAAAA,EAAAA,GAAa,GAAGF,sCAE5DA,EAAS,eAEF,MAAM0tB,IAAiBxtB,EAAAA,EAAAA,GAAa,GAAGF,mBACjC2tB,IAAwBztB,EAAAA,EAAAA,GAAa,GAAGF,0BACxC4tB,IAAuB1tB,EAAAA,EAAAA,GAAa,GAAGF,4BACvC6tB,IAAuB3tB,EAAAA,EAAAA,GAAa,GAAGF,4BACvC8tB,IAAyB5tB,EAAAA,EAAAA,GAAa,GAAGF,8BACzC+tB,IAA8B7tB,EAAAA,EAAAA,GAAa,GAAGF,oCAC9CguB,IAA8B9tB,EAAAA,EAAAA,GAAa,GAAGF,oCAC9CiuB,IAAgC/tB,EAAAA,EAAAA,GAAa,GAAGF,qC,y2FChF7D,MAAMA,EAAS,aAEFgO,GAAgB9N,EAAAA,EAAAA,GAAa,GAAGF,mBAChCkuB,GAAgBhuB,EAAAA,EAAAA,GAAa,GAAGF,mBAChCmuB,GAAuBjuB,EAAAA,EAAAA,GAAa,GAAGF,2BACvCouB,GAAiBluB,EAAAA,EAAAA,GAAa,GAAGF,oBAEjCquB,GAAmBnuB,EAAAA,EAAAA,GAAa,GAAGF,uBACnCsuB,GAA0CpuB,EAAAA,EAAAA,GAAa,GAAGF,iDAC1DuuB,GAAqCruB,EAAAA,EAAAA,GAAa,GAAGF,4CACrDwuB,GAAwBtuB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCyuB,GAAoCvuB,EAAAA,EAAAA,GAAa,GAAGF,0CAEpD0uB,GAAiBxuB,EAAAA,EAAAA,GAAa,GAAGF,oBAEjC2uB,GAAqBzuB,EAAAA,EAAAA,GAAa,GAAGF,yBACrC4uB,GAAuB1uB,EAAAA,EAAAA,GAAa,GAAGF,2BACvC6uB,GAAqB3uB,EAAAA,EAAAA,GAAa,GAAGF,yBAErC8uB,GAAoC5uB,EAAAA,EAAAA,GAAa,GAAGF,0CACpD+uB,GAAsC7uB,EAAAA,EAAAA,GAAa,GAAGF,4CACtDgvB,GAAoC9uB,EAAAA,EAAAA,GAAa,GAAGF,0CAEpDivB,GAAuB/uB,EAAAA,EAAAA,GAAa,GAAGF,2BACvCkvB,GAAyBhvB,EAAAA,EAAAA,GAAa,GAAGF,6BACzCmvB,GAAuBjvB,EAAAA,EAAAA,GAAa,GAAGF,2BAEvCqO,GAAkBnO,EAAAA,EAAAA,GAAa,GAAGF,sBAClCsO,GAAkBpO,EAAAA,EAAAA,GAAa,GAAGF,sBAClCovB,GAAwBlvB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCqvB,GAAwBnvB,EAAAA,EAAAA,GAAa,GAAGF,6BAExCsvB,GAAiBpvB,EAAAA,EAAAA,GAAa,GAAGF,+BACjCuvB,GAAiBrvB,EAAAA,EAAAA,GAAa,GAAGF,+BAEjCwvB,GAAmBtvB,EAAAA,EAAAA,GAAa,GAAGF,iCACnCyvB,GAAmBvvB,EAAAA,EAAAA,GAAa,GAAGF,iCAEnC0vB,GAAsBxvB,EAAAA,EAAAA,GAAa,GAAGF,0BACtC2vB,GAAsBzvB,EAAAA,EAAAA,GAAa,GAAGF,0BAEtCuO,GAAmBrO,EAAAA,EAAAA,GAAa,GAAGF,uBACnCwO,GAAsBtO,EAAAA,EAAAA,GAAa,GAAGF,2BACtCyO,GAA2BvO,EAAAA,EAAAA,GAAa,GAAGF,iCAC3CqN,GAAWnN,EAAAA,EAAAA,GAAa,GAAGF,cAC3B4D,GAAc1D,EAAAA,EAAAA,GAAa,GAAGF,kBAC9BsN,GAAepN,EAAAA,EAAAA,GAAa,GAAGF,mBAC/BwN,GAAkBtN,EAAAA,EAAAA,GAAa,GAAGF,sBAClC4O,GAAmB1O,EAAAA,EAAAA,GAAa,GAAGF,uBACnC0N,GAAcxN,EAAAA,EAAAA,GAAa,GAAGF,iBAC9B4N,GAAa1N,EAAAA,EAAAA,GAAa,GAAGF,gBAE7BkO,IADgBhO,EAAAA,EAAAA,GAAa,GAAGF,qBAClBE,EAAAA,EAAAA,GAAa,GAAGF,kBAE9B4vB,IADoB1vB,EAAAA,EAAAA,GAAa,GAAGF,0BACpBE,EAAAA,EAAAA,GAAa,GAAGF,oBAChC6vB,GAAuB3vB,EAAAA,EAAAA,GAAa,GAAGF,4BAEvC8vB,GAAoB5vB,EAAAA,EAAAA,GAAa,GAAGF,wBACpC+vB,GAAgC7vB,EAAAA,EAAAA,GAAa,GAAGF,qCAChDgwB,GAAgC9vB,EAAAA,EAAAA,GAAa,GAAGF,sCAChDiwB,GAA0B/vB,EAAAA,EAAAA,GAAa,GAAGF,gCAC1CkwB,GAA8BhwB,EAAAA,EAAAA,GAAa,GAAGF,mCAC9CmwB,GAAwBjwB,EAAAA,EAAAA,GAAa,GAAGF,6BACxCowB,IAAkBlwB,EAAAA,EAAAA,GAAa,GAAGF,sBAClCqwB,IAAanwB,EAAAA,EAAAA,GAAa,GAAGF,gBAC7BswB,IAAiBpwB,EAAAA,EAAAA,GAAa,GAAGF,qBACjCuwB,IAAiBrwB,EAAAA,EAAAA,GAAa,GAAGF,qBACjCwwB,IAAqBtwB,EAAAA,EAAAA,GAAa,GAAGF,yBACrCywB,IAAmBvwB,EAAAA,EAAAA,GAAa,GAAGF,uBACnC0wB,IAAmBxwB,EAAAA,EAAAA,GAAa,GAAGF,uBACnC2wB,IAAqCzwB,EAAAA,EAAAA,GAAa,GAAGF,4CACrD4wB,IAAgC1wB,EAAAA,EAAAA,GAAa,GAAGF,qCAChD6wB,IAAiC3wB,EAAAA,EAAAA,GAAa,GAAGF,uCAEjD8wB,IAAiB5wB,EAAAA,EAAAA,GAAa,GAAGF,oBACjC+wB,IAAgB7wB,EAAAA,EAAAA,GAAa,GAAGF,mBAEhCgxB,IAAyB9wB,EAAAA,EAAAA,GAAa,GAAGF,+BAEzCixB,IAA4B/wB,EAAAA,EAAAA,GAAa,GAAGF,mCAC5CkxB,IAA8BhxB,EAAAA,EAAAA,GAAa,GAAGF,qCAC9CmxB,IAA4BjxB,EAAAA,EAAAA,GAAa,GAAGF,mCAE5CoxB,IAAiClxB,EAAAA,EAAAA,GAAa,GAAGF,wCACjDqxB,IAAiCnxB,EAAAA,EAAAA,GAAa,GAAGF,wCACjDsxB,IAAmCpxB,EAAAA,EAAAA,GAAa,GAAGF,0CAEnDuxB,IAAiCrxB,EAAAA,EAAAA,GAAa,GAAGF,wCACjDwxB,IAAmCtxB,EAAAA,EAAAA,GAAa,GAAGF,0CACnDyxB,IAAiCvxB,EAAAA,EAAAA,GAAa,GAAGF,wCAEjD0xB,IAAuCxxB,EAAAA,EAAAA,GAAa,GAAGF,+CACvD2xB,IAAyCzxB,EAAAA,EAAAA,GAAa,GAAGF,iDACzD4xB,IAAuC1xB,EAAAA,EAAAA,GAAa,GAAGF,+CAEvD6xB,IAAqC3xB,EAAAA,EAAAA,GAAa,GAAGF,6CACrD8xB,IAAuC5xB,EAAAA,EAAAA,GAAa,GAAGF,+CACvD+xB,IAAqC7xB,EAAAA,EAAAA,GAAa,GAAGF,6CAErDgyB,IAA0C9xB,EAAAA,EAAAA,GAAa,GAAGF,kDAC1DiyB,IAA0C/xB,EAAAA,EAAAA,GAAa,GAAGF,kDAC1DkyB,IAA4ChyB,EAAAA,EAAAA,GAAa,GAAGF,oDAE5DmyB,IAA6CjyB,EAAAA,EAAAA,GAAa,GAAGF,sDAC7DoyB,IAA+ClyB,EAAAA,EAAAA,GAAa,GAAGF,wDAC/DqyB,IAA6CnyB,EAAAA,EAAAA,GAAa,GAAGF,sDAE7DsyB,IAAqBpyB,EAAAA,EAAAA,GAAa,GAAGF,yBACrCuyB,IAAsBryB,EAAAA,EAAAA,GAAa,GAAGF,0BAEtC6O,IAAmBC,EAAAA,EAAAA,GAAoB,GAAG9O,uBAA4B,GAItEiP,KAHqBH,EAAAA,EAAAA,GAAoB,GAAG9O,yBAA8B,IACvD8O,EAAAA,EAAAA,GAAoB,GAAG9O,uBAA4B,IAE9C8O,EAAAA,EAAAA,GAAoB,GAAG9O,4BAAiC,IAIhFwyB,KAH0B1jB,EAAAA,EAAAA,GAAoB,GAAG9O,8BAAmC,IAC5D8O,EAAAA,EAAAA,GAAoB,GAAG9O,4BAAiC,IAE7CE,EAAAA,EAAAA,GAAa,GAAGF,0CACnDyyB,IAAqCvyB,EAAAA,EAAAA,GAAa,GAAGF,2CACrD0yB,IAAmCxyB,EAAAA,EAAAA,GAAa,GAAGF,yCAEnD2yB,IAAqBzyB,EAAAA,EAAAA,GAAa,GAAGF,yBACrC4yB,IAAqB1yB,EAAAA,EAAAA,GAAa,GAAGF,yBACrC6yB,IAAuB3yB,EAAAA,EAAAA,GAAa,GAAGF,2BAEvC8yB,IAAmB5yB,EAAAA,EAAAA,GAAa,GAAGF,uBACnC+yB,IAAmB7yB,EAAAA,EAAAA,GAAa,GAAGF,uBACnCgzB,IAAqB9yB,EAAAA,EAAAA,GAAa,GAAGF,yBAErCuP,IAAsBrP,EAAAA,EAAAA,GAAa,GAAGF,2BAEtCizB,IAAoB/yB,EAAAA,EAAAA,GAAa,GAAGF,wBACpCkzB,IAAmBhzB,EAAAA,EAAAA,GAAa,GAAGF,uBACnCmzB,IAAkBjzB,EAAAA,EAAAA,GAAa,GAAGF,sBAElCozB,IAAsBlzB,EAAAA,EAAAA,GAAa,GAAGF,2BAEtCqzB,IAA6BnzB,EAAAA,EAAAA,GAAa,GAAGF,kCAC7CszB,IAA4BpzB,EAAAA,EAAAA,GAAa,GAAGF,iCAE5CuzB,IAAiBrzB,EAAAA,EAAAA,GAAa,GAAGF,qBACjCwzB,IAAmBtzB,EAAAA,EAAAA,GAAa,GAAGF,uBAEnCyzB,IAA+BvzB,EAAAA,EAAAA,GAAa,GAAGF,qCAC/C0zB,IAAsCxzB,EAAAA,EAAAA,GAAa,GAAGF,4CAEtD2zB,IAA+BzzB,EAAAA,EAAAA,GAAa,GAAGF,oCAC/C4zB,IAA4B1zB,EAAAA,EAAAA,GAAa,GAAGF,iCAC5C6zB,IAA8B3zB,EAAAA,EAAAA,GAAa,GAAGF,mCAC9C8zB,IAA8B5zB,EAAAA,EAAAA,GAAa,GAAGF,mCAE9C+zB,IAA8B7zB,EAAAA,EAAAA,GAAa,GAAGF,mCAE9Cg0B,IAAgC9zB,EAAAA,EAAAA,GAAa,GAAGF,sCAEhDi0B,IAA4C/zB,EAAAA,EAAAA,GAAa,GAAGF,oDAE5DgQ,IAA0B9P,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CiQ,IAA4B/P,EAAAA,EAAAA,GAAa,GAAGF,iCAC5CkQ,IAA0BhQ,EAAAA,EAAAA,GAAa,GAAGF,8B,isBCjKvD,MAAMD,EAAgB,0BACtB,IAAIC,EAAS,0BAGbA,EAAS,GAAGD,SACL,MAAMm0B,GAAsBh0B,EAAAA,EAAAA,GAAa,GAAGF,2BACtCm0B,GAAoBj0B,EAAAA,EAAAA,GAAa,GAAGF,wBACpCo0B,GAAsBl0B,EAAAA,EAAAA,GAAa,GAAGF,0BACtCq0B,GAAoBn0B,EAAAA,EAAAA,GAAa,GAAGF,wBACpCs0B,GAAsBp0B,EAAAA,EAAAA,GAAa,GAAGF,0BACtCu0B,GAAwBr0B,EAAAA,EAAAA,GAAa,GAAGF,4BACxCw0B,GAAsBt0B,EAAAA,EAAAA,GAAa,GAAGF,0BACtCy0B,GAAsBv0B,EAAAA,EAAAA,GAAa,GAAGF,0BACtC00B,GAAwBx0B,EAAAA,EAAAA,GAAa,GAAGF,4BACxC20B,GAAsBz0B,EAAAA,EAAAA,GAAa,GAAGF,0BACtC40B,GAAuB10B,EAAAA,EAAAA,GAAa,GAAGF,2BACvC60B,GAAuB30B,EAAAA,EAAAA,GAAa,GAAGF,2BACvC80B,GAA0B50B,EAAAA,EAAAA,GAAa,GAAGF,+BAC1C+0B,GAAqB70B,EAAAA,EAAAA,GAAa,GAAGF,yBAGrCg1B,IAFuB90B,EAAAA,EAAAA,GAAa,GAAGF,4BAClBE,EAAAA,EAAAA,GAAa,GAAGF,0BACPE,EAAAA,EAAAA,GAAa,GAAGF,+BAC9Ci1B,GAAgC/0B,EAAAA,EAAAA,GAAa,GAAGF,gCAChDk1B,GAA8Bh1B,EAAAA,EAAAA,GAAa,GAAGF,8BAG3DA,EAAS,GAAGD,OACL,MAAMo1B,GAAmBj1B,EAAAA,EAAAA,GAAa,GAAGF,uBACnCo1B,GAAoBl1B,EAAAA,EAAAA,GAAa,GAAGF,wBACpCq1B,GAAiBn1B,EAAAA,EAAAA,GAAa,GAAGF,qBACjCs1B,GAAkBp1B,EAAAA,EAAAA,GAAa,GAAGF,sBAClCu1B,GAAmBr1B,EAAAA,EAAAA,GAAa,GAAGF,uBACnCw1B,GAAoBt1B,EAAAA,EAAAA,GAAa,GAAGF,wBACpCy1B,GAAwBv1B,EAAAA,EAAAA,GAAa,GAAGF,0BACxC01B,GAAcx1B,EAAAA,EAAAA,GAAa,GAAGF,kBAG3CA,EAAS,GAAGD,WACL,MAAM41B,GAAwBz1B,EAAAA,EAAAA,GAAa,GAAGF,4BACxC41B,GAAuB11B,EAAAA,EAAAA,GAAa,GAAGF,0B,qICvCpD,MAAMA,EAAS,eAEF61B,GAAkB31B,EAAAA,EAAAA,GAAa,GAAGF,qBAClC81B,GAAuB51B,EAAAA,EAAAA,GAAa,GAAGF,4BACvC+1B,GAAsB71B,EAAAA,EAAAA,GAAa,GAAGF,yB,iuDCJnD,MAAMA,EAAS,eAEFg2B,GAA8B91B,EAAAA,EAAAA,GAAa,GAAGF,mCAE9Ci2B,GAAc/1B,EAAAA,EAAAA,GAAa,GAAGF,iBAE9Bk2B,GAAgBh2B,EAAAA,EAAAA,GAAa,GAAGF,mBAChCm2B,GAAcj2B,EAAAA,EAAAA,GAAa,GAAGF,iBAC9Bo2B,GAA8Bl2B,EAAAA,EAAAA,GAAa,GAAGF,mCAC9Cq2B,GAA+Bn2B,EAAAA,EAAAA,GAAa,GAAGF,qCAE/Cs2B,GAAmBp2B,EAAAA,EAAAA,GAAa,GAAGF,uBACnCu2B,GAAqBr2B,EAAAA,EAAAA,GAAa,GAAGF,2BACrCw2B,GAAmBt2B,EAAAA,EAAAA,GAAa,GAAGF,uBAEnCy2B,GAA2Bv2B,EAAAA,EAAAA,GAAa,GAAGF,gCAC3C02B,GAAyBx2B,EAAAA,EAAAA,GAAa,GAAGF,8BACzC22B,GAAyBz2B,EAAAA,EAAAA,GAAa,GAAGF,8BAEzC42B,GAA0B12B,EAAAA,EAAAA,GAAa,GAAGF,+BAC1C62B,GAAwB32B,EAAAA,EAAAA,GAAa,GAAGF,6BACxC82B,GAAwB52B,EAAAA,EAAAA,GAAa,GAAGF,6BAExC+2B,GAA0B72B,EAAAA,EAAAA,GAAa,GAAGF,+BAC1Cg3B,GAAwB92B,EAAAA,EAAAA,GAAa,GAAGF,6BACxCi3B,GAAwB/2B,EAAAA,EAAAA,GAAa,GAAGF,6BAExCk3B,GAA2Bh3B,EAAAA,EAAAA,GAAa,GAAGF,gCAC3Cm3B,GAAyBj3B,EAAAA,EAAAA,GAAa,GAAGF,8BACzCo3B,GAAyBl3B,EAAAA,EAAAA,GAAa,GAAGF,8BAGzCq3B,IAD8Bn3B,EAAAA,EAAAA,GAAa,GAAGF,qCAClBE,EAAAA,EAAAA,GAAa,GAAGF,mCAC5Cs3B,GAA4Bp3B,EAAAA,EAAAA,GAAa,GAAGF,kCAE5Cu3B,GAA2Br3B,EAAAA,EAAAA,GAAa,GAAGF,iCAC3Cw3B,GAA6Bt3B,EAAAA,EAAAA,GAAa,GAAGF,mCAG7Cy3B,IADqCv3B,EAAAA,EAAAA,GAAa,GAAGF,8CAClBE,EAAAA,EAAAA,GAAa,GAAGF,4CACnD03B,GAAmCx3B,EAAAA,EAAAA,GAAa,GAAGF,2CAEnD23B,GAAkCz3B,EAAAA,EAAAA,GAAa,GAAGF,wCAClD43B,GAAoC13B,EAAAA,EAAAA,GAAa,GAAGF,0CAEpD63B,GAAqB33B,EAAAA,EAAAA,GAAa,GAAGF,0BAErC83B,GAA6B53B,EAAAA,EAAAA,GAAa,GAAGF,kCAC7C+3B,GAAmB73B,EAAAA,EAAAA,GAAa,GAAGF,uBACnCg4B,GAAqB93B,EAAAA,EAAAA,GAAa,GAAGF,0BACrCi4B,GAAkB/3B,EAAAA,EAAAA,GAAa,GAAGF,sBAClCk4B,GAAoBh4B,EAAAA,EAAAA,GAAa,GAAGF,wBACpCm4B,GAAWj4B,EAAAA,EAAAA,GAAa,GAAGF,cAC3Bo4B,GAAkBl4B,EAAAA,EAAAA,GAAa,GAAGF,sBAClCq4B,GAAgBn4B,EAAAA,EAAAA,GAAa,GAAGF,oBAChCs4B,GAAmBp4B,EAAAA,EAAAA,GAAa,GAAGF,uBACnCu4B,GAAqBr4B,EAAAA,EAAAA,GAAa,GAAGF,0BACrCw4B,GAAuBt4B,EAAAA,EAAAA,GAAa,GAAGF,2BACvCy4B,GAAoCv4B,EAAAA,EAAAA,GAAa,GAAGF,2CACpD04B,GAAmCx4B,EAAAA,EAAAA,GAAa,GAAGF,0CACnD24B,GAA6Bz4B,EAAAA,EAAAA,GAAa,GAAGF,kCAC7C44B,GAAgC14B,EAAAA,EAAAA,GAAa,GAAGF,sCAChD64B,GAA6C34B,EAAAA,EAAAA,GAAa,GAAGF,0DAC7D84B,GAA2C54B,EAAAA,EAAAA,GAAa,GAAGF,wDAC3D+4B,GAA2B74B,EAAAA,EAAAA,GAAa,GAAGF,+BAC3Cg5B,GAAmC94B,EAAAA,EAAAA,GAAa,GAAGF,yCACnDi5B,IAAqB/4B,EAAAA,EAAAA,GAAa,GAAGF,0BACrCk5B,IAAoBh5B,EAAAA,EAAAA,GAAa,GAAGF,wBAEpCm5B,IAA6Bj5B,EAAAA,EAAAA,GAAa,GAAGF,kCAE7Co5B,KADsBl5B,EAAAA,EAAAA,GAAa,GAAGF,2BAChBE,EAAAA,EAAAA,GAAa,GAAGF,2BACtCq5B,IAAuBn5B,EAAAA,EAAAA,GAAa,GAAGF,2BACvCs5B,IAAqBp5B,EAAAA,EAAAA,GAAa,GAAGF,yBAErCu5B,IAAqBr5B,EAAAA,EAAAA,GAAa,GAAGF,yBACrCw5B,IAAmBt5B,EAAAA,EAAAA,GAAa,GAAGF,uBACnCy5B,IAAqBv5B,EAAAA,EAAAA,GAAa,GAAGF,yBACrC05B,IAAmBx5B,EAAAA,EAAAA,GAAa,GAAGF,uBAEnC25B,IAAqBz5B,EAAAA,EAAAA,GAAa,GAAGF,0BAErC45B,IAAgB15B,EAAAA,EAAAA,GAAa,GAAGF,oBAEhC65B,IAAwB35B,EAAAA,EAAAA,GAAa,GAAGF,6BACxC85B,IAA0B55B,EAAAA,EAAAA,GAAa,GAAGF,+BAC1C+5B,IAAwB75B,EAAAA,EAAAA,GAAa,GAAGF,6BAExCg6B,IAAsB95B,EAAAA,EAAAA,GAAa,GAAGF,0BACtCi6B,IAAwB/5B,EAAAA,EAAAA,GAAa,GAAGF,4BACxCk6B,IAAsBh6B,EAAAA,EAAAA,GAAa,GAAGF,0BAEtCm6B,IAAsBj6B,EAAAA,EAAAA,GAAa,GAAGF,0BACtCo6B,IAAwBl6B,EAAAA,EAAAA,GAAa,GAAGF,4BACxCq6B,IAAsBn6B,EAAAA,EAAAA,GAAa,GAAGF,yB,qjBC9FnD,MAAMA,EAAS,eAEFs6B,GAAep6B,EAAAA,EAAAA,GAAa,GAAGF,mBAC/Bu6B,GAAiBr6B,EAAAA,EAAAA,GAAa,GAAGF,qBACjCw6B,GAAat6B,EAAAA,EAAAA,GAAa,GAAGF,gBAC7By6B,GAAiBv6B,EAAAA,EAAAA,GAAa,GAAGF,oBACjC06B,GAAoBx6B,EAAAA,EAAAA,GAAa,GAAGF,wBACpC26B,GAAaz6B,EAAAA,EAAAA,GAAa,GAAGF,gBAC7B46B,GAAqB16B,EAAAA,EAAAA,GAAa,GAAGF,yBACrC66B,GAAiB36B,EAAAA,EAAAA,GAAa,GAAGF,qBACjC4Z,GAAe1Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/Bia,GAAe/Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B86B,GAAY56B,EAAAA,EAAAA,GAAa,GAAGF,eAC5B+6B,GAAa76B,EAAAA,EAAAA,GAAa,GAAGF,gBAC7B4Y,GAAuB1Y,EAAAA,EAAAA,GAAa,GAAGF,4BACvC+sB,GAAqB7sB,EAAAA,EAAAA,GAAa,GAAGF,yBACrC2lB,GAAezlB,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B6Z,GAAe3Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B4C,GAAoB1C,EAAAA,EAAAA,GAAa,GAAGF,wBACpCg7B,GAAsB96B,EAAAA,EAAAA,GAAa,GAAGF,0BACtCi7B,GAA2B/6B,EAAAA,EAAAA,GAAa,GAAGF,gCAC3C6C,GAA0B3C,EAAAA,EAAAA,GAAa,GAAGF,8BAC1Ck7B,GAAuCh7B,EAAAA,EAAAA,GAAa,GAAGF,6C,qjBCrBpE,IAAIA,EAAS,iBAGN,MAAMm7B,GAAkBj7B,EAAAA,EAAAA,GAAa,GAAGF,sBAElCo7B,GAAuBl7B,EAAAA,EAAAA,GAAa,GAAGF,4BACvCq7B,GAAyBn7B,EAAAA,EAAAA,GAAa,GAAGF,8BACzCs7B,GAAuBp7B,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCu7B,GAAyBr7B,EAAAA,EAAAA,GAAa,GAAGF,8BACzCw7B,GAA2Bt7B,EAAAA,EAAAA,GAAa,GAAGF,gCAC3Cy7B,GAAyBv7B,EAAAA,EAAAA,GAAa,GAAGF,8BAEzC07B,GAAgCx7B,EAAAA,EAAAA,GAAa,GAAGF,uCAChD27B,GAAkCz7B,EAAAA,EAAAA,GAAa,GAAGF,yCAClD47B,GAAgC17B,EAAAA,EAAAA,GAAa,GAAGF,uCAEhD67B,GAAqC37B,EAAAA,EAAAA,GAAa,GAAGF,4CACrD87B,GAAuC57B,EAAAA,EAAAA,GAAa,GAAGF,8CACvD+7B,GAAqC77B,EAAAA,EAAAA,GAAa,GAAGF,4CAGlEA,EAAS,oBACF,MAAMg8B,GAAwB97B,EAAAA,EAAAA,GAAa,GAAGF,6BACxCi8B,GAAwB/7B,EAAAA,EAAAA,GAAa,GAAGF,6BACxCk8B,GAAqCh8B,EAAAA,EAAAA,GAAa,GAAGF,6CACrDm8B,GAAqCj8B,EAAAA,EAAAA,GAAa,GAAGF,6CACrDo8B,GAA8Bl8B,EAAAA,EAAAA,GAAa,GAAGF,oCAC9Cq8B,GAA8Bn8B,EAAAA,EAAAA,GAAa,GAAGF,oCAC9Cs8B,GAAyBp8B,EAAAA,EAAAA,GAAa,GAAGF,8BACzC0V,GAAmBxV,EAAAA,EAAAA,GAAa,GAAGF,sB,qvBC/BhD,IAAIA,EAAS,eAEN,MAAMu8B,GAA0Br8B,EAAAA,EAAAA,GAAa,GAAGF,8BAC1Cw8B,GAA0Bt8B,EAAAA,EAAAA,GAAa,GAAGF,8BAC1Cy8B,GAA4Bv8B,EAAAA,EAAAA,GAAa,GAAGF,gCAC5C08B,GAA8Bx8B,EAAAA,EAAAA,GAAa,GAAGF,mCAC9C28B,GAA8Bz8B,EAAAA,EAAAA,GAAa,GAAGF,mCAC9C48B,GAAgC18B,EAAAA,EAAAA,GAAa,GAAGF,qCAChD68B,GAAsB38B,EAAAA,EAAAA,GAAa,GAAGF,0BACtC88B,GAA+B58B,EAAAA,EAAAA,GAAa,GAAGF,oCAE/C8lB,GAAY5lB,EAAAA,EAAAA,GAAa,GAAGF,gBAE5B+8B,GAAmB78B,EAAAA,EAAAA,GAAa,GAAGF,sBACnCg9B,GAA2B98B,EAAAA,EAAAA,GAAa,GAAGF,+BAE3Ci9B,GAAoC/8B,EAAAA,EAAAA,GAAa,GAAGF,2CACpDk9B,GAAqCh9B,EAAAA,EAAAA,GAAa,GAAGF,4CACrDm9B,GAA+Bj9B,EAAAA,EAAAA,GAAa,GAAGF,qCAC/Co9B,GAAiCl9B,EAAAA,EAAAA,GAAa,GAAGF,uCACjDq9B,GAA+Bn9B,EAAAA,EAAAA,GAAa,GAAGF,qCAC/Cs9B,GAAoBp9B,EAAAA,EAAAA,GAAa,GAAGF,wBACpCu9B,GAAsCr9B,EAAAA,EAAAA,GAAa,GAAGF,6CACtDuG,GAAwCrG,EAAAA,EAAAA,GAAa,GAAGF,+CACxDw9B,GAAsBt9B,EAAAA,EAAAA,GAAa,GAAGF,0BACtCy9B,GAAwBv9B,EAAAA,EAAAA,GAAa,GAAGF,4BACxC09B,GAAsBx9B,EAAAA,EAAAA,GAAa,GAAGF,0BAEnDA,EAAS,GAAGA,YAEL,MAAM29B,GAAwBz9B,EAAAA,EAAAA,GAAa,GAAGF,4BACxC49B,GAAwB19B,EAAAA,EAAAA,GAAa,GAAGF,4BAExC69B,GAA8B39B,EAAAA,EAAAA,GAAa,GAAGF,mCAC9C89B,GAA8B59B,EAAAA,EAAAA,GAAa,GAAGF,mCAC9C+9B,GAAgC79B,EAAAA,EAAAA,GAAa,GAAGF,qCAEhDg+B,GAAgB99B,EAAAA,EAAAA,GAAa,GAAGF,mBAChCi+B,GAAsB/9B,EAAAA,EAAAA,GAAa,GAAGF,yB,6VCtCnD,MAAMA,EAAS,iBAEFk+B,GAAkBh+B,EAAAA,EAAAA,GAAa,GAAGF,sBAClCm+B,GAA4Bj+B,EAAAA,EAAAA,GAAa,GAAGF,iCAE5Co+B,GAAuBl+B,EAAAA,EAAAA,GAAa,GAAGF,4BACvCq+B,GAAyBn+B,EAAAA,EAAAA,GAAa,GAAGF,8BACzCs+B,GAAuBp+B,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCu+B,GAAyBr+B,EAAAA,EAAAA,GAAa,GAAGF,8BACzCw+B,GAA2Bt+B,EAAAA,EAAAA,GAAa,GAAGF,gCAC3Cy+B,GAAyBv+B,EAAAA,EAAAA,GAAa,GAAGF,8BAEzC0+B,GAAwBx+B,EAAAA,EAAAA,GAAa,GAAGF,6BACxC2+B,GAAwBz+B,EAAAA,EAAAA,GAAa,GAAGF,6BAExC4+B,GAA8B1+B,EAAAA,EAAAA,GAAa,GAAGF,oCAC9C6+B,GAA8B3+B,EAAAA,EAAAA,GAAa,GAAGF,mC,u3DCjB3D,MAAMD,EAAgB,iBACtB,IAAIC,EAASD,GAEkBG,EAAAA,EAAAA,GAAa,GAAGF,sBAAxC,MACM8+B,GAAkB5+B,EAAAA,EAAAA,GAAa,GAAGF,sBAIlC++B,IAFuB7+B,EAAAA,EAAAA,GAAa,GAAGF,8BAEnBE,EAAAA,EAAAA,GAAa,GAAGF,yBACpCg/B,GAAkB9+B,EAAAA,EAAAA,GAAa,GAAGF,sBAElCi/B,GAAiB/+B,EAAAA,EAAAA,GAAa,GAAGF,oBACjCk/B,GAAeh/B,EAAAA,EAAAA,GAAa,GAAGF,kBAE/Bm/B,GAA+Bj/B,EAAAA,EAAAA,GAAa,GAAGF,sCAC/Co/B,GAA+Bl/B,EAAAA,EAAAA,GAAa,GAAGF,sCAC/Cq/B,GAAiCn/B,EAAAA,EAAAA,GAAa,GAAGF,wCAEjDs/B,GAAoBp/B,EAAAA,EAAAA,GAAa,GAAGF,wBAEpCu/B,GAAoBr/B,EAAAA,EAAAA,GAAa,GAAGF,yBACpCw/B,GAAsBt/B,EAAAA,EAAAA,GAAa,GAAGF,2BACtCy/B,GAAoBv/B,EAAAA,EAAAA,GAAa,GAAGF,yBAEpC0/B,GAA6Bx/B,EAAAA,EAAAA,GAAa,GAAGF,oCAC7C2/B,GAA+Bz/B,EAAAA,EAAAA,GAAa,GAAGF,sCAC/C4/B,GAA6B1/B,EAAAA,EAAAA,GAAa,GAAGF,oCAE7C6/B,GAA6B3/B,EAAAA,EAAAA,GAAa,GAAGF,oCAC7C8/B,GAA+B5/B,EAAAA,EAAAA,GAAa,GAAGF,sCAC/C+/B,GAA6B7/B,EAAAA,EAAAA,GAAa,GAAGF,oCAE7CggC,GAAiC9/B,EAAAA,EAAAA,GAAa,GAAGF,wCACjDigC,GAAmC//B,EAAAA,EAAAA,GAAa,GAAGF,0CACnDkgC,GAAiChgC,EAAAA,EAAAA,GAAa,GAAGF,wCAEjDmgC,GAAuBjgC,EAAAA,EAAAA,GAAa,GAAGF,4BACvCogC,GAAuBlgC,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCqgC,GAAkBngC,EAAAA,EAAAA,GAAa,GAAGF,sBAClCsgC,GAAcpgC,EAAAA,EAAAA,GAAa,GAAGF,iBAC9BugC,GAAkBrgC,EAAAA,EAAAA,GAAa,GAAGF,sBAClCwgC,GAActgC,EAAAA,EAAAA,GAAa,GAAGF,iBAE9BygC,GAAcvgC,EAAAA,EAAAA,GAAa,GAAGF,kBAC9B0gC,GAAcxgC,EAAAA,EAAAA,GAAa,GAAGF,kBAC9B2gC,GAAgBzgC,EAAAA,EAAAA,GAAa,GAAGF,oBAChC4gC,GAAW1gC,EAAAA,EAAAA,GAAa,GAAGF,cAC3B8oB,GAAsB5oB,EAAAA,EAAAA,GAAa,GAAGF,2BACtC+oB,GAAsB7oB,EAAAA,EAAAA,GAAa,GAAGF,2BACtCypB,GAA4BvpB,EAAAA,EAAAA,GAAa,GAAGF,kCAC5C0pB,GAA4BxpB,EAAAA,EAAAA,GAAa,GAAGF,kCAC5C6gC,GAA6B3gC,EAAAA,EAAAA,GAAa,GAAGF,oCAE7C8gC,GAAmB5gC,EAAAA,EAAAA,GAAa,GAAGF,uBACnC+gC,GAAc7gC,EAAAA,EAAAA,GAAa,GAAGF,iBAC9BghC,GAAmB9gC,EAAAA,EAAAA,GAAa,GAAGF,uBACnCihC,GAAc/gC,EAAAA,EAAAA,GAAa,GAAGF,iBAQ9BkhC,IANkBhhC,EAAAA,EAAAA,GAAa,GAAGF,sBACjBE,EAAAA,EAAAA,GAAa,GAAGF,sBAEtBE,EAAAA,EAAAA,GAAa,GAAGF,eACjBE,EAAAA,EAAAA,GAAa,GAAGF,cAEZE,EAAAA,EAAAA,GAAa,GAAGF,kBAC9BmhC,GAAyBjhC,EAAAA,EAAAA,GAAa,GAAGF,8BACzCohC,GAA8BlhC,EAAAA,EAAAA,GAAa,GAAGF,mCAE9CqhC,GAAuBnhC,EAAAA,EAAAA,GAAa,GAAGF,4BACvCshC,GAA4BphC,EAAAA,EAAAA,GAAa,GAAGF,yBAC5CuhC,GAAyBrhC,EAAAA,EAAAA,GAAa,GAAGF,8BACzCwhC,GAAwBthC,EAAAA,EAAAA,GAAa,GAAGF,4BAExCyY,GAASvY,EAAAA,EAAAA,GAAa,GAAGF,YACzByhC,IAAiBvhC,EAAAA,EAAAA,GAAa,GAAGF,qBAEjC0hC,IAAuBxhC,EAAAA,EAAAA,GAAa,GAAGF,4BACvC2hC,IAA2BzhC,EAAAA,EAAAA,GAAa,GAAGF,iCAE3C4hC,IAA0B1hC,EAAAA,EAAAA,GAAa,GAAGF,8BAC1C6hC,IAA4B3hC,EAAAA,EAAAA,GAAa,GAAGF,gCAC5C8hC,IAA0B5hC,EAAAA,EAAAA,GAAa,GAAGF,8BAE1C+hC,IAAkC7hC,EAAAA,EAAAA,GAAa,GAAGF,wCAClDgiC,IAAoC9hC,EAAAA,EAAAA,GAAa,GAAGF,0CACpDiiC,IAAkC/hC,EAAAA,EAAAA,GAAa,GAAGF,wCAElDkiC,IAAiChiC,EAAAA,EAAAA,GAAa,GAAGF,uCACjDmiC,IAAmCjiC,EAAAA,EAAAA,GAAa,GAAGF,yCACnDoiC,IAAiCliC,EAAAA,EAAAA,GAAa,GAAGF,uCAEjDqiC,IAAiCniC,EAAAA,EAAAA,GAAa,GAAGF,uCACjDsiC,IAAgCpiC,EAAAA,EAAAA,GAAa,GAAGF,sCAEhDuiC,IAAcriC,EAAAA,EAAAA,GAAa,GAAGF,iBAE9BwiC,IAAetiC,EAAAA,EAAAA,GAAa,GAAGF,kBAC/ByiC,IAAiBviC,EAAAA,EAAAA,GAAa,GAAGF,oBACjC0iC,IAAexiC,EAAAA,EAAAA,GAAa,GAAGF,kBAE/B2iC,IAAiBziC,EAAAA,EAAAA,GAAa,GAAGF,qBAEjC4iC,KADmB1iC,EAAAA,EAAAA,GAAa,GAAGF,wBAClBE,EAAAA,EAAAA,GAAa,GAAGF,sBAEjC6iC,IAAkB3iC,EAAAA,EAAAA,GAAa,GAAGF,sBAClC8iC,IAAkB5iC,EAAAA,EAAAA,GAAa,GAAGF,sBAClC+iC,IAAa7iC,EAAAA,EAAAA,GAAa,GAAGF,gBAC7BgjC,IAAa9iC,EAAAA,EAAAA,GAAa,GAAGF,gBAE1CA,EAAS,0BACF,MAAMijC,IAAa/iC,EAAAA,EAAAA,GAAa,GAAGF,gBAC7BkjC,IAAqBhjC,EAAAA,EAAAA,GAAa,GAAGF,yBACrCmjC,IAAsBjjC,EAAAA,EAAAA,GAAa,GAAGF,0BACtCojC,IAAkBljC,EAAAA,EAAAA,GAAa,GAAGF,qB,6JClH/C,MAAMA,EAAS,cAEFqjC,GAAWnjC,EAAAA,EAAAA,GAAa,GAAGF,aAC3BsjC,GAAcpjC,EAAAA,EAAAA,GAAa,GAAGF,kBAC9BujC,GAAOrjC,EAAAA,EAAAA,GAAa,GAAGF,SAEvBwjC,IAD8BtjC,EAAAA,EAAAA,GAAa,GAAGF,oCACtBE,EAAAA,EAAAA,GAAa,GAAGF,2B,0zECNrD,MAAMD,EAAgB,QACtB,IAAIC,EAASD,EAEN,MAAM+lB,GAAY5lB,EAAAA,EAAAA,GAAa,GAAGF,gBAC5ByjC,GAAmBvjC,EAAAA,EAAAA,GAAa,GAAGF,uBACnC0jC,GAAqBxjC,EAAAA,EAAAA,GAAa,GAAGF,yBACrC2jC,GAAiBzjC,EAAAA,EAAAA,GAAa,GAAGF,oBAEjC4jC,GAAuB1jC,EAAAA,EAAAA,GAAa,GAAGF,4BACvC6jC,GAAuB3jC,EAAAA,EAAAA,GAAa,GAAGF,4BACvC8jC,GAAyB5jC,EAAAA,EAAAA,GAAa,GAAGF,8BAEzC+jC,GAAmB7jC,EAAAA,EAAAA,GAAa,GAAGF,uBACnCgkC,GAAmB9jC,EAAAA,EAAAA,GAAa,GAAGF,uBACnCikC,GAAqB/jC,EAAAA,EAAAA,GAAa,GAAGF,yBACrCkkC,GAAmBhkC,EAAAA,EAAAA,GAAa,GAAGF,uBAEnCmkC,GAAyBjkC,EAAAA,EAAAA,GAAa,GAAGF,8BACzCokC,GAAyBlkC,EAAAA,EAAAA,GAAa,GAAGF,8BAGzCqkC,IAF2BnkC,EAAAA,EAAAA,GAAa,GAAGF,iCAE7BE,EAAAA,EAAAA,GAAa,GAAGF,mBAC9B4sB,GAAuB1sB,EAAAA,EAAAA,GAAa,GAAGF,2BACvCskC,GAAiBpkC,EAAAA,EAAAA,GAAa,GAAGF,qBACjCukC,GAAmBrkC,EAAAA,EAAAA,GAAa,GAAGF,uBAEnCwkC,GAAyBtkC,EAAAA,EAAAA,GAAa,GAAGF,8BACzCykC,GAA2BvkC,EAAAA,EAAAA,GAAa,GAAGF,gCAC3C0kC,GAAsBxkC,EAAAA,EAAAA,GAAa,GAAGF,2BACtC2kC,GAAYzkC,EAAAA,EAAAA,GAAa,GAAGF,eAEzCA,EAAS,WACF,MAAMkZ,GAAsBhZ,EAAAA,EAAAA,GAAa,GAAGF,0BACtC4kC,GAAoB1kC,EAAAA,EAAAA,GAAa,GAAGF,0BACpC6kC,GAAkB3kC,EAAAA,EAAAA,GAAa,GAAGF,uBAClC8kC,GAAkC5kC,EAAAA,EAAAA,GAAa,GAAGF,2CAClD+kC,GAAmB7kC,EAAAA,EAAAA,GAAa,GAAGF,uBACnCglC,GAAqB9kC,EAAAA,EAAAA,GAAa,GAAGF,yBACrCilC,GAA0B/kC,EAAAA,EAAAA,GAAa,GAAGF,gCAC1CklC,GAAyChlC,EAAAA,EAAAA,GAAa,GAAGF,kDACzDmlC,GAA+BjlC,EAAAA,EAAAA,GAAa,GAAGF,sCAC/ColC,GAA8BllC,EAAAA,EAAAA,GAAa,GAAGF,qCAC9CqlC,GAAqBnlC,EAAAA,EAAAA,GAAa,GAAGF,wBACrCsC,GAAuBpC,EAAAA,EAAAA,GAAa,GAAGF,4BAEpDA,EAAS,aACF,MAAMslC,GAAUplC,EAAAA,EAAAA,GAAa,GAAGF,aAC1BulC,GAAarlC,EAAAA,EAAAA,GAAa,GAAGF,gBAC7BwlC,GAAsBtlC,EAAAA,EAAAA,GAAa,GAAGF,yBACtCylC,GAAwBvlC,EAAAA,EAAAA,GAAa,GAAGF,4BACxC0lC,GAA0BxlC,EAAAA,EAAAA,GAAa,GAAGF,8BAC1C2lC,GAAwBzlC,EAAAA,EAAAA,GAAa,GAAGF,4BACxC4lC,GAAyB1lC,EAAAA,EAAAA,GAAa,GAAGF,8BACzC6lC,GAAwB3lC,EAAAA,EAAAA,GAAa,GAAGF,8BACxC8lC,GAAqB5lC,EAAAA,EAAAA,GAAa,GAAGF,yBAElDA,EAAS,aACF,MAAM+lC,GAAW7lC,EAAAA,EAAAA,GAAa,GAAGF,cAE3BgmC,GAAkB9lC,EAAAA,EAAAA,GAAa,GAAGF,sBAClCimC,GAAkB/lC,EAAAA,EAAAA,GAAa,GAAGF,sBAClCkmC,GAAoBhmC,EAAAA,EAAAA,GAAa,GAAGF,wBAEpCmmC,GAAkBjmC,EAAAA,EAAAA,GAAa,GAAGF,sBAClComC,GAAkBlmC,EAAAA,EAAAA,GAAa,GAAGF,sBAClCqmC,IAAoBnmC,EAAAA,EAAAA,GAAa,GAAGF,wBAEpCsmC,IAAkBpmC,EAAAA,EAAAA,GAAa,GAAGF,sBAClCumC,IAAkBrmC,EAAAA,EAAAA,GAAa,GAAGF,sBAClCwmC,IAAoBtmC,EAAAA,EAAAA,GAAa,GAAGF,wBAEpCymC,IAAevmC,EAAAA,EAAAA,GAAa,GAAGF,mBAC/B0mC,IAAexmC,EAAAA,EAAAA,GAAa,GAAGF,mBAC/B2mC,IAAiBzmC,EAAAA,EAAAA,GAAa,GAAGF,qBAEjC4mC,IAAkB1mC,EAAAA,EAAAA,GAAa,GAAGF,sBAClC6mC,IAAkB3mC,EAAAA,EAAAA,GAAa,GAAGF,sBAClC8mC,IAAoB5mC,EAAAA,EAAAA,GAAa,GAAGF,wBACpC+mC,IAAqB7mC,EAAAA,EAAAA,GAAa,GAAGF,yBAErCgnC,IAA0B9mC,EAAAA,EAAAA,GAAa,GAAGF,gCAC1CinC,IAA4B/mC,EAAAA,EAAAA,GAAa,GAAGF,kCAC5CknC,IAA0BhnC,EAAAA,EAAAA,GAAa,GAAGF,gCAE1CmnC,IAAuBjnC,EAAAA,EAAAA,GAAa,GAAGF,4BACvConC,IAAuBlnC,EAAAA,EAAAA,GAAa,GAAGF,4BACvCqnC,IAAyBnnC,EAAAA,EAAAA,GAAa,GAAGF,8BACzCsnC,IAA0BpnC,EAAAA,EAAAA,GAAa,GAAGF,+BAE1CunC,IAAqBrnC,EAAAA,EAAAA,GAAa,GAAGF,yBACrCwnC,IAA4BtnC,EAAAA,EAAAA,GAAa,GAAGF,kCAC5CynC,IAAqBvnC,EAAAA,EAAAA,GAAa,GAAGF,0BACrC0nC,IAAqBxnC,EAAAA,EAAAA,GAAa,GAAGF,0BACrC2nC,IAA+BznC,EAAAA,EAAAA,GAAa,GAAGF,4BAC/C4nC,IAA+B1nC,EAAAA,EAAAA,GAAa,GAAGF,4BAE/C6nC,IAA0B3nC,EAAAA,EAAAA,GAAa,GAAGF,8BAC1C8nC,IAA0B5nC,EAAAA,EAAAA,GAAa,GAAGF,8BAC1C+nC,IAA4B7nC,EAAAA,EAAAA,GAAa,GAAGF,gCAC5CgoC,IAAyB9nC,EAAAA,EAAAA,GAAa,GAAGF,6BAEzCioC,IAAmB/nC,EAAAA,EAAAA,GAAa,GAAGF,uBACnCkoC,IAAwBhoC,EAAAA,EAAAA,GAAa,GAAGF,4BACxCmoC,IAA0BjoC,EAAAA,EAAAA,GAAa,GAAGF,8BAC1CooC,IAAwBloC,EAAAA,EAAAA,GAAa,GAAGF,4BAExCqoC,IAAgBnoC,EAAAA,EAAAA,GAAa,GAAGF,mBAE7CA,EAAS,iBACF,MAAMsoC,IAAsBpoC,EAAAA,EAAAA,GAAa,GAAGF,0BACtCuoC,IAAwBroC,EAAAA,EAAAA,GAAa,GAAGF,4BACxCwoC,IAAsBtoC,EAAAA,EAAAA,GAAa,GAAGF,0BAEtCyoC,IAAyBvoC,EAAAA,EAAAA,GAAa,GAAGF,8BACzC0oC,IAAyBxoC,EAAAA,EAAAA,GAAa,GAAGF,8BAEtDA,EAAS,iBACF,MAAMijC,IAAa/iC,EAAAA,EAAAA,GAAa,GAAGF,gBAC7BkjC,IAAqBhjC,EAAAA,EAAAA,GAAa,GAAGF,yBAElDA,EAAS,wBACF,MAAM2oC,IAA2BzoC,EAAAA,EAAAA,GAAa,GAAGF,gCAC3C4oC,IAA6B1oC,EAAAA,EAAAA,GAAa,GAAGF,kCAC7C6oC,IAA2B3oC,EAAAA,EAAAA,GAAa,GAAGF,gCAExDA,EAAS,eACF,MAAM8oC,IAAoB5oC,EAAAA,EAAAA,GAAa,GAAGF,wBACpC+oC,IAAe7oC,EAAAA,EAAAA,GAAa,GAAGF,kBAC/BgpC,IAAmB9oC,EAAAA,EAAAA,GAAa,GAAGF,sB,4VChIhD,IAAIA,EAAS,gBACb,MAAMD,EAAgBC,EAEtBA,EAAS,GAAGD,QACL,MAAMkpC,GAAa/oC,EAAAA,EAAAA,GAAa,GAAGF,gBAC7BkpC,GAAchpC,EAAAA,EAAAA,GAAa,GAAGF,iBAE3CA,EAAS,GAAGD,UACL,MAAMopC,GAAmBjpC,EAAAA,EAAAA,GAAa,GAAGF,sBACnCopC,GAAsBlpC,EAAAA,EAAAA,GAAa,GAAGF,yBACtCqpC,GAAkBnpC,EAAAA,EAAAA,GAAa,GAAGF,uBAClCspC,GAAoBppC,EAAAA,EAAAA,GAAa,GAAGF,yBACpCupC,GAAkBrpC,EAAAA,EAAAA,GAAa,GAAGF,uBAClCwpC,GAA0BtpC,EAAAA,EAAAA,GAAa,GAAGF,8BAC1CypC,GAA4BvpC,EAAAA,EAAAA,GAAa,GAAGF,gCAC5C0pC,GAA0BxpC,EAAAA,EAAAA,GAAa,GAAGF,8BAEvDA,EAAS,GAAGD,YACL,MAAM4pC,GAAuBzpC,EAAAA,EAAAA,GAAa,GAAGF,2BACvC4pC,GAAc1pC,EAAAA,EAAAA,GAAa,GAAGF,iB,qaCnB3C,IAAIA,EAAS,mBACb,MAAMD,EAAgBC,EAET6pC,GAA6B3pC,EAAAA,EAAAA,GAAa,GAAGF,kCAC7C8pC,GAA6B5pC,EAAAA,EAAAA,GAAa,GAAGF,kCAC7C+pC,GAA+B7pC,EAAAA,EAAAA,GAAa,GAAGF,oCAG/CgqC,IADuC9pC,EAAAA,EAAAA,GAAa,GAAGF,8CAChBE,EAAAA,EAAAA,GAAa,GAAGF,8CAGvDiqC,IAFyC/pC,EAAAA,EAAAA,GAAa,GAAGF,gDAEzBE,EAAAA,EAAAA,GAAa,GAAGF,uCAChDkqC,GAAgChqC,EAAAA,EAAAA,GAAa,GAAGF,sCAChDmqC,GAAkCjqC,EAAAA,EAAAA,GAAa,GAAGF,wCAElDoqC,GAAqBlqC,EAAAA,EAAAA,GAAa,GAAGF,yBACrCqqC,GAA6BnqC,EAAAA,EAAAA,GAAa,GAAGF,kCAM7CsqC,IAJmCpqC,EAAAA,EAAAA,GAAa,GAAGF,2CACdE,EAAAA,EAAAA,GAAa,GAAGF,6CAClBE,EAAAA,EAAAA,GAAa,GAAGF,2CAEjBE,EAAAA,EAAAA,GAAa,GAAGF,wCAE/DA,EAAS,GAAGD,QACL,MAAM+lB,GAAY5lB,EAAAA,EAAAA,GAAa,GAAGF,gBAC5BuqC,GAAqBrqC,EAAAA,EAAAA,GAAa,GAAGF,yBACrCwqC,GAAgBtqC,EAAAA,EAAAA,GAAa,GAAGF,mBAE7CA,EAAS,GAAGD,UACL,MAAMuN,GAAepN,EAAAA,EAAAA,GAAa,GAAGF,mBAC/BwN,GAAkBtN,EAAAA,EAAAA,GAAa,GAAGF,qB,2GC/B/C,MAAMA,EAAS,qBAEFyqC,GAAkBvqC,EAAAA,EAAAA,GAAa,GAAGF,uBAClC0qC,GAAiBxqC,EAAAA,EAAAA,GAAa,GAAGF,qB,qdCH9C,IAAIA,EAAS,gBAEN,MAAM2qC,GAA2BzqC,EAAAA,EAAAA,GAAa,GAAGF,+BAC3C4qC,GAA2B1qC,EAAAA,EAAAA,GAAa,GAAGF,+BAC3C6qC,GAA6B3qC,EAAAA,EAAAA,GAAa,GAAGF,iCAC7C8qC,GAA+B5qC,EAAAA,EAAAA,GAAa,GAAGF,oCAC/C+qC,GAA+B7qC,EAAAA,EAAAA,GAAa,GAAGF,oCAC/CgrC,GAAiC9qC,EAAAA,EAAAA,GAAa,GAAGF,sCACjDirC,GAAuB/qC,EAAAA,EAAAA,GAAa,GAAGF,2BACvCkrC,GAAgChrC,EAAAA,EAAAA,GAAa,GAAGF,qCAChDmrC,GAAsBjrC,EAAAA,EAAAA,GAAa,GAAGF,0BACtCorC,GAAsBlrC,EAAAA,EAAAA,GAAa,GAAGF,0BACtCqrC,GAA0BnrC,EAAAA,EAAAA,GAAa,GAAGF,8BAEvDA,EAAS,GAAGA,SAEL,MAAMsrC,GAAyBprC,EAAAA,EAAAA,GAAa,GAAGF,6BACzCurC,GAAyBrrC,EAAAA,EAAAA,GAAa,GAAGF,6BACzCwrC,GAA2BtrC,EAAAA,EAAAA,GAAa,GAAGF,+BAE3C8lB,GAAY5lB,EAAAA,EAAAA,GAAa,GAAGF,gBAE5ByrC,GAAoBvrC,EAAAA,EAAAA,GAAa,GAAGF,uBACpC0rC,GAA4BxrC,EAAAA,EAAAA,GAAa,GAAGF,+B,wfCtBzD,MAAMA,EAAS,gBAEF2rC,GAAuBzrC,EAAAA,EAAAA,GAAa,GAAGF,4BACvC4rC,GAAyB1rC,EAAAA,EAAAA,GAAa,GAAGF,8BACzC6rC,GAAuB3rC,EAAAA,EAAAA,GAAa,GAAGF,4BAEvC8rC,GAAwBh9B,EAAAA,EAAAA,GAAoB,GAAG9O,6BAAkC,GACjF+rC,GAA0Bj9B,EAAAA,EAAAA,GAAoB,GAAG9O,+BAAoC,GACrFgsC,GAAwBl9B,EAAAA,EAAAA,GAAoB,GAAG9O,6BAAkC,GAEjFisC,GAAwB/rC,EAAAA,EAAAA,GAAa,GAAGF,6BACxCksC,GAA0BhsC,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CmsC,GAAwBjsC,EAAAA,EAAAA,GAAa,GAAGF,6BAExCosC,GAAyBlsC,EAAAA,EAAAA,GAAa,GAAGF,8BACzCqsC,GAA2BnsC,EAAAA,EAAAA,GAAa,GAAGF,gCAC3CssC,GAAyBpsC,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCusC,GAAwBrsC,EAAAA,EAAAA,GAAa,GAAGF,6BACxCwsC,GAA0BtsC,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CysC,GAAwBvsC,EAAAA,EAAAA,GAAa,GAAGF,6BAExC0sC,GAAqBxsC,EAAAA,EAAAA,GAAa,GAAGF,yBAErC2sC,GAAazsC,EAAAA,EAAAA,GAAa,GAAGF,gBAC7B4sC,GAAa1sC,EAAAA,EAAAA,GAAa,GAAGF,e,qgBC1B1C,MAAMA,EAAS,mBAEF6sC,GAA0B3sC,EAAAA,EAAAA,GAAa,GAAGF,+BAC1C8sC,GAA4B5sC,EAAAA,EAAAA,GAAa,GAAGF,iCAC5C+sC,GAA0B7sC,EAAAA,EAAAA,GAAa,GAAGF,+BAE1CgtC,GAAoB9sC,EAAAA,EAAAA,GAAa,GAAGF,yBACpCitC,GAAsB/sC,EAAAA,EAAAA,GAAa,GAAGF,2BACtCktC,GAAoBhtC,EAAAA,EAAAA,GAAa,GAAGF,yBAEpCmtC,GAA2BjtC,EAAAA,EAAAA,GAAa,GAAGF,gCAC3CotC,GAA6BltC,EAAAA,EAAAA,GAAa,GAAGF,kCAC7CqtC,GAA2BntC,EAAAA,EAAAA,GAAa,GAAGF,gCAE3CstC,GAA+BptC,EAAAA,EAAAA,GAAa,GAAGF,qCAC/CutC,GAAiCrtC,EAAAA,EAAAA,GAAa,GAAGF,uCACjDwtC,GAA+BttC,EAAAA,EAAAA,GAAa,GAAGF,qCAE/CytC,GAA4BvtC,EAAAA,EAAAA,GAAa,GAAGF,iCAC5C0tC,GAA8BxtC,EAAAA,EAAAA,GAAa,GAAGF,mCAC9C2tC,GAA4BztC,EAAAA,EAAAA,GAAa,GAAGF,iCAE5C4tC,GAA2B1tC,EAAAA,EAAAA,GAAa,GAAGF,gCAC3C6tC,GAA2B3tC,EAAAA,EAAAA,GAAa,GAAGF,gCAC3C8tC,GAAkB5tC,EAAAA,EAAAA,GAAa,GAAGF,sBAClC+tC,GAAyB7tC,EAAAA,EAAAA,GAAa,GAAGF,6B,oqCCzBtD,MAAMD,EAAgB,kBACtB,IAAIC,EAASD,EAEN,MAAMiuC,GAAmB9tC,EAAAA,EAAAA,GAAa,GAAGF,uBACnCiuC,GAA4B/tC,EAAAA,EAAAA,GAAa,GAAGF,iCAE5CkuC,GAAuBhuC,EAAAA,EAAAA,GAAa,GAAGF,4BACvCmuC,GAAyBjuC,EAAAA,EAAAA,GAAa,GAAGF,8BACzCouC,GAAuBluC,EAAAA,EAAAA,GAAa,GAAGF,4BAEvCquC,GAA0BnuC,EAAAA,EAAAA,GAAa,GAAGF,8BAC1CsuC,GAAwBpuC,EAAAA,EAAAA,GAAa,GAAGF,4BACxCuuC,GAA+BruC,EAAAA,EAAAA,GAAa,GAAGF,oCAC/CwuC,GAA+BtuC,EAAAA,EAAAA,GAAa,GAAGF,oCAE/CyuC,GAAyBvuC,EAAAA,EAAAA,GAAa,GAAGF,8BACzC0uC,GAA2BxuC,EAAAA,EAAAA,GAAa,GAAGF,gCAC3C2uC,GAAyBzuC,EAAAA,EAAAA,GAAa,GAAGF,8BAEzC4uC,GAA0B1uC,EAAAA,EAAAA,GAAa,GAAGF,+BAC1C6uC,GAA4B3uC,EAAAA,EAAAA,GAAa,GAAGF,iCAC5C8uC,GAA0B5uC,EAAAA,EAAAA,GAAa,GAAGF,+BAE1C+uC,GAA0B7uC,EAAAA,EAAAA,GAAa,GAAGF,+BAC1CgvC,GAA4B9uC,EAAAA,EAAAA,GAAa,GAAGF,iCAC5CivC,GAA0B/uC,EAAAA,EAAAA,GAAa,GAAGF,+BAE1CkvC,GAAmChvC,EAAAA,EAAAA,GAAa,GAAGF,yCACnDmvC,GAAqCjvC,EAAAA,EAAAA,GAAa,GAAGF,2CACrDovC,GAAmClvC,EAAAA,EAAAA,GAAa,GAAGF,yCAEnDqvC,GAAkCnvC,EAAAA,EAAAA,GAAa,GAAGF,wCAClDsvC,GAAoCpvC,EAAAA,EAAAA,GAAa,GAAGF,0CACpDuvC,GAAkCrvC,EAAAA,EAAAA,GAAa,GAAGF,wCAElDwvC,GAA4BtvC,EAAAA,EAAAA,GAAa,GAAGF,kCAC5CyvC,GAA4BvvC,EAAAA,EAAAA,GAAa,GAAGF,kCAE5C0vC,GAA8BxvC,EAAAA,EAAAA,GAAa,GAAGF,oCAC9C2vC,GAA8BzvC,EAAAA,EAAAA,GAAa,GAAGF,oCAE9C4vC,GAA8B1vC,EAAAA,EAAAA,GAAa,GAAGF,oCAC9C6vC,GAA8B3vC,EAAAA,EAAAA,GAAa,GAAGF,oCAE9C8vC,GAAkC5vC,EAAAA,EAAAA,GAAa,GAAGF,sCAClD+vC,GAAkC7vC,EAAAA,EAAAA,GAAa,GAAGF,sCAElD8wB,GAAiB5wB,EAAAA,EAAAA,GAAa,GAAGF,oBAEjCgwC,GAAoB9vC,EAAAA,EAAAA,GAAa,GAAGF,wBACpCiwC,GAAyB/vC,EAAAA,EAAAA,GAAa,GAAGF,8BAEzCsyB,GAAqBpyB,EAAAA,EAAAA,GAAa,GAAGF,yBACrCkwC,GAAyBhwC,EAAAA,EAAAA,GAAa,GAAGF,8BAEzC0V,GAAmBxV,EAAAA,EAAAA,GAAa,GAAGF,uBAEnCmwC,GAAcjwC,EAAAA,EAAAA,GAAa,GAAGF,kBAC9BowC,GAASlwC,EAAAA,EAAAA,GAAa,GAAGF,YAEtCA,EAAS,wBAEF,MAAMqwC,GAA2BnwC,EAAAA,EAAAA,GAAa,GAAGF,iCAC3CswC,GAA6BpwC,EAAAA,EAAAA,GAAa,GAAGF,mCAC7CuwC,GAA2BrwC,EAAAA,EAAAA,GAAa,GAAGF,iCAE3CwwC,GAA6BtwC,EAAAA,EAAAA,GAAa,GAAGF,mCAC7CywC,GAA+BvwC,EAAAA,EAAAA,GAAa,GAAGF,qCAC/C0wC,GAA6BxwC,EAAAA,EAAAA,GAAa,GAAGF,mCAE7C2wC,GAAwBzwC,EAAAA,EAAAA,GAAa,GAAGF,4B,s0CCrErD,MAAMD,EAAgB,sBACtB,IAAIC,EAASD,EAEN,MAAM6wC,GAAgC1wC,EAAAA,EAAAA,GAAa,GAAGF,wCAChD6wC,GAAgC3wC,EAAAA,EAAAA,GAAa,GAAGF,wCAChD8wC,GAAkC5wC,EAAAA,EAAAA,GAAa,GAAGF,0CAElD+wC,GAAwB7wC,EAAAA,EAAAA,GAAa,GAAGF,8BACxCgxC,GAAuB9wC,EAAAA,EAAAA,GAAa,GAAGF,4BACvCixC,GAAqB/wC,EAAAA,EAAAA,GAAa,GAAGF,0BACrCkxC,GAAiBpiC,EAAAA,EAAAA,GAAoB,GAAG9O,qBAA0B,GAClEmxC,GAAiBriC,EAAAA,EAAAA,GAAoB,GAAG9O,qBAA0B,GAClEoxC,GAAmBtiC,EAAAA,EAAAA,GAAoB,GAAG9O,uBAA4B,GACtEqxC,GAAyBnxC,EAAAA,EAAAA,GAAa,GAAGF,+BACzCsxC,GAAyBpxC,EAAAA,EAAAA,GAAa,GAAGF,+BACzCuxC,GAAgCrxC,EAAAA,EAAAA,GAAa,GAAGF,uCAChDwxC,GAA6BtxC,EAAAA,EAAAA,GAAa,GAAGF,mCAC7CyxC,GAAoBvxC,EAAAA,EAAAA,GAAa,GAAGF,wBACpCyY,GAASvY,EAAAA,EAAAA,GAAa,GAAGF,YACzB0xC,GAAkBxxC,EAAAA,EAAAA,GAAa,GAAGF,sBAElC2xC,IADkBzxC,EAAAA,EAAAA,GAAa,GAAGF,sBACjBE,EAAAA,EAAAA,GAAa,GAAGF,sBACjC4xC,GAAiB1xC,EAAAA,EAAAA,GAAa,GAAGF,qBACjC6xC,GAAiB3xC,EAAAA,EAAAA,GAAa,GAAGF,sBACjC8xC,GAAa5xC,EAAAA,EAAAA,GAAa,GAAGF,gBAC7BygC,GAAcvgC,EAAAA,EAAAA,GAAa,GAAGF,kBAC9B0gC,GAAcxgC,EAAAA,EAAAA,GAAa,GAAGF,kBAC9B2gC,GAAgBzgC,EAAAA,EAAAA,GAAa,GAAGF,oBAChC4gC,GAAW1gC,EAAAA,EAAAA,GAAa,GAAGF,cAC3B8oB,GAAsB5oB,EAAAA,EAAAA,GAAa,GAAGF,2BACtC+oB,GAAsB7oB,EAAAA,EAAAA,GAAa,GAAGF,2BACtCypB,GAA4BvpB,EAAAA,EAAAA,GAAa,GAAGF,kCAC5C0pB,GAA4BxpB,EAAAA,EAAAA,GAAa,GAAGF,kCAC5C+xC,GAAiB7xC,EAAAA,EAAAA,GAAa,GAAGF,oBACjCgyC,GAAwB9xC,EAAAA,EAAAA,GAAa,GAAGF,6BACxCiyC,GAAW/xC,EAAAA,EAAAA,GAAa,GAAGF,cAC3BkyC,GAAUhyC,EAAAA,EAAAA,GAAa,GAAGF,aAC1BmyC,GAA4BjyC,EAAAA,EAAAA,GAAa,GAAGF,gCAC5CoyC,GAA6BlyC,EAAAA,EAAAA,GAAa,GAAGF,oCAE7CqyC,GAAmCnyC,EAAAA,EAAAA,GAAa,GAAGF,0CACnDsyC,GAAmCpyC,EAAAA,EAAAA,GAAa,GAAGF,0CACnDuyC,GAAqCryC,EAAAA,EAAAA,GAAa,GAAGF,4CAElEA,EAAS,GAAGD,aACL,MAAMkjC,GAAa/iC,EAAAA,EAAAA,GAAa,GAAGF,gBAC7BkjC,GAAqBhjC,EAAAA,EAAAA,GAAa,GAAGF,yBACrCmjC,GAAsBjjC,EAAAA,EAAAA,GAAa,GAAGF,0BACtCojC,GAAkBljC,EAAAA,EAAAA,GAAa,GAAGF,sBAE/CA,EAAS,GAAGD,YACL,MAAMshC,GAAuBnhC,EAAAA,EAAAA,GAAa,GAAGF,4BACvCshC,GAA4BphC,EAAAA,EAAAA,GAAa,GAAGF,kCAC5CwhC,GAAwBthC,EAAAA,EAAAA,GAAa,GAAGF,4BAErDA,EAAS,GAAGD,YACL,MAAMyyC,GAAoBtyC,EAAAA,EAAAA,GAAa,GAAGF,wBACpCyyC,GAAoBvyC,EAAAA,EAAAA,GAAa,GAAGF,wBACpC0yC,GAAiCxyC,EAAAA,EAAAA,GAAa,GAAGF,uCACjD2yC,IAAiCzyC,EAAAA,EAAAA,GAAa,GAAGF,uCACjD4yC,IAAmC1yC,EAAAA,EAAAA,GAAa,GAAGF,yCACnD6yC,IAAoB3yC,EAAAA,EAAAA,GAAa,GAAGF,yBACpC8yC,IAAiB5yC,EAAAA,EAAAA,GAAa,GAAGF,oBACjC+yC,IAA4B7yC,EAAAA,EAAAA,GAAa,GAAGF,mCAC5CgzC,IAA6B9yC,EAAAA,EAAAA,GAAa,GAAGF,mC,qRCjE1D,MAAMA,EAAS,iBAEFizC,GAAyB/yC,EAAAA,EAAAA,GAAa,GAAGF,6BACzCkzC,GAAyBhzC,EAAAA,EAAAA,GAAa,GAAGF,6BACzCmzC,GAA2BjzC,EAAAA,EAAAA,GAAa,GAAGF,+BAC3CozC,GAAkBlzC,EAAAA,EAAAA,GAAa,GAAGF,sBAClCqzC,GAAoBnzC,EAAAA,EAAAA,GAAa,GAAGF,wBACpCszC,GAAmBpzC,EAAAA,EAAAA,GAAa,GAAGF,sBACnCuzC,GAAYrzC,EAAAA,EAAAA,GAAa,GAAGF,eAC5BwzC,GAAyBtzC,EAAAA,EAAAA,GAAa,GAAGF,6BACzCyzC,GAAuBvzC,EAAAA,EAAAA,GAAa,GAAGF,0B,qICVpD,MAEa0zC,GAAoBxzC,EAAAA,EAAAA,GAAa,8BACjCyzC,GAAsBzzC,EAAAA,EAAAA,GAAa,gCACnC0zC,GAAoB1zC,EAAAA,EAAAA,GAAa,6B,g2DCJ9C,MAAMH,EAAgB,UACtB,IAAIC,EAASD,EAEN,MAAM8zC,GAAU3zC,EAAAA,EAAAA,GAAa,GAAGF,aAC1B8zC,GAAY5zC,EAAAA,EAAAA,GAAa,GAAGF,eAGzCA,EAAS,eAEF,MAAM+zC,GAA2B7zC,EAAAA,EAAAA,GAAa,GAAGF,gCAGxDA,EAAS,aACF,MAAMg0C,GAA6B9zC,EAAAA,EAAAA,GAAa,GAAGF,kCAE7C4Y,GAAuB1Y,EAAAA,EAAAA,GAAa,GAAGF,4BACvCi0C,GAAgB/zC,EAAAA,EAAAA,GAAa,GAAGF,oBAChC4sB,GAAuB1sB,EAAAA,EAAAA,GAAa,GAAGF,2BACvCskC,GAAiBpkC,EAAAA,EAAAA,GAAa,GAAGF,qBAEjCgZ,GAAiB9Y,EAAAA,EAAAA,GAAa,GAAGF,kBACjCojB,GAAiBljB,EAAAA,EAAAA,GAAa,GAAGF,kBACjCiZ,GAAiB/Y,EAAAA,EAAAA,GAAa,GAAGF,kBACjCkZ,GAAsBhZ,EAAAA,EAAAA,GAAa,GAAGF,0BACtC+Y,GAAiB7Y,EAAAA,EAAAA,GAAa,GAAGF,kBAEjCk0C,GAAyBh0C,EAAAA,EAAAA,GAAa,GAAGF,8BACzCm0C,GAA0Bj0C,EAAAA,EAAAA,GAAa,GAAGF,+BAE1Co0C,GAAoBl0C,EAAAA,EAAAA,GAAa,GAAGF,wBACpCq0C,GAAqBn0C,EAAAA,EAAAA,GAAa,GAAGF,yBAErCs0C,GAAkBp0C,EAAAA,EAAAA,GAAa,GAAGF,sBAClCu0C,GAAmBr0C,EAAAA,EAAAA,GAAa,GAAGF,uBAEnCw0C,GAA0Bt0C,EAAAA,EAAAA,GAAa,GAAGF,+BAGvDA,EAAS,iBACF,MAAMy0C,GAA2Bv0C,EAAAA,EAAAA,GAAa,GAAGF,gCAC3C00C,GAAqBx0C,EAAAA,EAAAA,GAAa,GAAGF,yBACrC20C,GAAqBz0C,EAAAA,EAAAA,GAAa,GAAGF,yBACrC4Z,GAAe1Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B2lB,GAAezlB,EAAAA,EAAAA,GAAa,GAAGF,kBAC/B6Z,GAAe3Z,EAAAA,EAAAA,GAAa,GAAGF,kBAC/BusB,GAAoBrsB,EAAAA,EAAAA,GAAa,GAAGF,yBACpCwsB,GAAsBtsB,EAAAA,EAAAA,GAAa,GAAGF,2BACtC26B,GAAaz6B,EAAAA,EAAAA,GAAa,GAAGF,gBAC7B40C,GAAW10C,EAAAA,EAAAA,GAAa,GAAGF,cAC3B60C,GAAgB30C,EAAAA,EAAAA,GAAa,GAAGF,oBAChC80C,GAAiB50C,EAAAA,EAAAA,GAAa,GAAGF,qBACjC+0C,GAAgB70C,EAAAA,EAAAA,GAAa,GAAGF,oBAChCg1C,GAAmB90C,EAAAA,EAAAA,GAAa,GAAGF,uBACnCi1C,GAA4B/0C,EAAAA,EAAAA,GAAa,GAAGF,iCAGzDA,EAAS,iBACF,MAAMk1C,GAA2Bh1C,EAAAA,EAAAA,GAAa,GAAGF,gCAC3Cm1C,GAA6Bj1C,EAAAA,EAAAA,GAAa,GAAGF,kCAC7Co1C,GAA2Bl1C,EAAAA,EAAAA,GAAa,GAAGF,gCAE3Cq1C,GAA6Bn1C,EAAAA,EAAAA,GAAa,GAAGF,kCAC7Cs1C,GAAoCp1C,EAAAA,EAAAA,GAAa,GAAGF,0CACpDu1C,GAAkCr1C,EAAAA,EAAAA,GAAa,GAAGF,wCAElDw1C,GAAwCt1C,EAAAA,EAAAA,GAAa,GAAGF,+CACxDy1C,GAA0Cv1C,EAAAA,EAAAA,GAAa,GAAGF,iDAC1D01C,GAAwCx1C,EAAAA,EAAAA,GAAa,GAAGF,+CAExD21C,GAA2Bz1C,EAAAA,EAAAA,GAAa,GAAGF,+BAC3C41C,GAAkC11C,EAAAA,EAAAA,GAAa,GAAGF,uCAClD61C,GAAgC31C,EAAAA,EAAAA,GAAa,GAAGF,qCAEhD81C,GAAmC51C,EAAAA,EAAAA,GAAa,GAAGF,mCAInD+1C,KAHqC71C,EAAAA,EAAAA,GAAa,GAAGF,4CAClBE,EAAAA,EAAAA,GAAa,GAAGF,0CAEdE,EAAAA,EAAAA,GAAa,GAAGF,6CAIrDg2C,KAHuC91C,EAAAA,EAAAA,GAAa,GAAGF,+CAClBE,EAAAA,EAAAA,GAAa,GAAGF,6CAETE,EAAAA,EAAAA,GAAa,GAAGF,qDAK5Di2C,KAJ8C/1C,EAAAA,EAAAA,GAAa,GAAGF,uDAClBE,EAAAA,EAAAA,GAAa,GAAGF,qDAGlCE,EAAAA,EAAAA,GAAa,GAAGF,gCAC1Ck2C,IAA4Bh2C,EAAAA,EAAAA,GAAa,GAAGF,iCAC5Cm2C,IAA0Bj2C,EAAAA,EAAAA,GAAa,GAAGF,+BAE1Co2C,IAA4Bl2C,EAAAA,EAAAA,GAAa,GAAGF,iCAC5Cq2C,IAA8Bn2C,EAAAA,EAAAA,GAAa,GAAGF,mCAC9Cs2C,IAA4Bp2C,EAAAA,EAAAA,GAAa,GAAGF,iCAGzDA,EAAS,yBAEF,MAAMu2C,IAA6Br2C,EAAAA,EAAAA,GAAa,GAAGF,mCAC7Cw2C,IAA+Bt2C,EAAAA,EAAAA,GAAa,GAAGF,qCAC/Cy2C,IAA6Bv2C,EAAAA,EAAAA,GAAa,GAAGF,mCAE7C02C,IAA+Bx2C,EAAAA,EAAAA,GAAa,GAAGF,qCAC/C22C,IAAiCz2C,EAAAA,EAAAA,GAAa,GAAGF,uCACjD42C,IAA+B12C,EAAAA,EAAAA,GAAa,GAAGF,qCAE/C62C,IAAiC32C,EAAAA,EAAAA,GAAa,GAAGF,uCACjD82C,IAAmC52C,EAAAA,EAAAA,GAAa,GAAGF,yCACnD+2C,IAAiC72C,EAAAA,EAAAA,GAAa,GAAGF,uCAMjDg3C,KAJqC92C,EAAAA,EAAAA,GAAa,GAAGF,6CACdE,EAAAA,EAAAA,GAAa,GAAGF,+CAClBE,EAAAA,EAAAA,GAAa,GAAGF,6CAEpBE,EAAAA,EAAAA,GAAa,GAAGF,wCACjDi3C,IAAmC/2C,EAAAA,EAAAA,GAAa,GAAGF,yCACnDk3C,IAAiCh3C,EAAAA,EAAAA,GAAa,GAAGF,uCAEjDm3C,IAAgCj3C,EAAAA,EAAAA,GAAa,GAAGF,qCAChDo3C,IAA2Bl3C,EAAAA,EAAAA,GAAa,GAAGF,gCAC3Cq3C,IAA2Bn3C,EAAAA,EAAAA,GAAa,GAAGF,gCAC3Cs3C,IAA8Bp3C,EAAAA,EAAAA,GAAa,GAAGF,oCAG3DA,EAAS,iBACF,MAAMu3C,IAA4Br3C,EAAAA,EAAAA,GAAa,GAAGF,iCAC5Cw3C,IAA8Bt3C,EAAAA,EAAAA,GAAa,GAAGF,mCAC9Cy3C,IAA4Bv3C,EAAAA,EAAAA,GAAa,GAAGF,gC,4bC9HzD,MAEausB,GAAoBrsB,EAAAA,EAAAA,GAAa,wBACjC4sB,GAAiB5sB,EAAAA,EAAAA,GAAa,oBAC9BssB,GAAsBtsB,EAAAA,EAAAA,GAAa,0BACnC6Y,GAAiB7Y,EAAAA,EAAAA,GAAa,oBAC9B8Y,GAAiB9Y,EAAAA,EAAAA,GAAa,oBAC9BkjB,GAAiBljB,EAAAA,EAAAA,GAAa,oBAC9Bw3C,GAAex3C,EAAAA,EAAAA,GAAa,kBAC5By3C,GAAmBz3C,EAAAA,EAAAA,GAAa,sBAChC2sB,GAAiB3sB,EAAAA,EAAAA,GAAa,oBAC9B03C,GAAe13C,EAAAA,EAAAA,GAAa,kBAC5B+Y,GAAiB/Y,EAAAA,EAAAA,GAAa,oBAC9B23C,GAAsB33C,EAAAA,EAAAA,GAAa,0BACnC43C,GAAsB53C,EAAAA,EAAAA,GAAa,0BACnC63C,GAAyC73C,EAAAA,EAAAA,GAAa,gDACtD83C,GAAc93C,EAAAA,EAAAA,GAAa,kBAC3B+3C,GAAqB/3C,EAAAA,EAAAA,GAAa,wB,4VChB/C,IAAIF,EAAS,YAGbA,EAAS,iBACF,MAAMk4C,GAA4Bh4C,EAAAA,EAAAA,GAAa,GAAGF,iCAC5Cm4C,GAA8Bj4C,EAAAA,EAAAA,GAAa,GAAGF,mCAC9Co4C,GAA4Bl4C,EAAAA,EAAAA,GAAa,GAAGF,iCAC5Cq4C,GAAyBn4C,EAAAA,EAAAA,GAAa,GAAGF,+BACzCs4C,GAA2Bp4C,EAAAA,EAAAA,GAAa,GAAGF,iCAC3Cu4C,GAAyBr4C,EAAAA,EAAAA,GAAa,GAAGF,+BACzCw4C,GAAiCt4C,EAAAA,EAAAA,GAAa,GAAGF,uCACjDy4C,GAAoBv4C,EAAAA,EAAAA,GAAa,GAAGF,wBACpC04C,GAAsBx4C,EAAAA,EAAAA,GAAa,GAAGF,2BACtC24C,GAAsBz4C,EAAAA,EAAAA,GAAa,GAAGF,0BAGnDA,EAAS,eACF,MAAM44C,GAA0B14C,EAAAA,EAAAA,GAAa,GAAGF,8BAGvDA,EAAS,mBACF,MAAM64C,GAAgB34C,EAAAA,EAAAA,GAAa,GAAGF,kB,6hBCtB7C,MAEa84C,GAAU54C,EAAAA,EAAAA,GAAa,iBAGvB64C,IAFY74C,EAAAA,EAAAA,GAAa,oBAEAA,EAAAA,EAAAA,GAAa,mCACtC84C,GAAyB94C,EAAAA,EAAAA,GAAa,kCACtC+4C,GAA2B/4C,EAAAA,EAAAA,GAAa,4BAExCg5C,GAA6Bh5C,EAAAA,EAAAA,GAAa,sCAC1Ci5C,GAA6Bj5C,EAAAA,EAAAA,GAAa,sCAC1Ck5C,GAA+Bl5C,EAAAA,EAAAA,GAAa,wCAE5Cm5C,GAA4Bn5C,EAAAA,EAAAA,GAAa,qCACzCo5C,GAA4Bp5C,EAAAA,EAAAA,GAAa,qCACzCq5C,GAA8Br5C,EAAAA,EAAAA,GAAa,uCAE3Cs5C,GAA2Bt5C,EAAAA,EAAAA,GAAa,oCACxCu5C,GAA2Bv5C,EAAAA,EAAAA,GAAa,oCACxCw5C,GAA6Bx5C,EAAAA,EAAAA,GAAa,sCAE1Cy5C,GAAoBz5C,EAAAA,EAAAA,GAAa,4BACjC05C,GAAoB15C,EAAAA,EAAAA,GAAa,4BAEjC25C,GAAQ35C,EAAAA,EAAAA,GAAa,cAErB45C,GAAkB55C,EAAAA,EAAAA,GAAa,0BAE/B65C,GAAc75C,EAAAA,EAAAA,GAAa,sBAC3B85C,GAAqB95C,EAAAA,EAAAA,GAAa,8BAClC+5C,GAAW/5C,EAAAA,EAAAA,GAAa,iB,81HC1BrC,MAAMg6C,EAAYA,KAAMC,EAAAA,EAAAA,KAAeC,EAAAA,EAAAA,YAE1BC,EAAeC,GAAQC,EAAAA,GAClC,GAAGL,qBACHI,GAGWE,EAAcC,GAAYF,EAAAA,GACrC,GAAGL,uBAA+BO,KAGvB/pC,EAAeA,CAAC4pC,EAAMI,IAAgBH,EAAAA,GACjD,GAAGL,qBAA6BQ,IAChCJ,GAGWK,EAAmBL,GAAQC,EAAAA,GACtC,GAAGL,yBACHI,GAGWM,EAAyBA,IAAML,EAAAA,GAC1C,GAAGL,yBAGQW,EAA0BA,CAACC,EAAIR,IAASC,EAAAA,GACnD,GAAGL,yBAAiCY,IACpCR,GAQWS,EAAuBT,GAAQC,EAAAA,GAC1C,GAAGL,8CACHI,GAGWU,EAAsBV,GAAQC,EAAAA,GACzC,GAAGL,uCACHI,GAGWW,EAAmCA,CAACH,EAAIR,IAASC,EAAAA,GAC5D,GAAGL,wCAAgDY,mBACnDR,GAGWY,EAAkCA,CAACJ,EAAIR,IAASC,EAAAA,GAC3D,GAAGL,wCAAgDY,kBACnDR,GAGWa,EAAmCA,CAACL,EAAIR,IAASC,EAAAA,GAC5D,GAAGL,wCAAgDY,mBACnDR,GAGWc,EAAsBN,GAAMP,EAAAA,GACvC,GAAGL,wCAAgDY,KAGxCO,EAA6Bf,GAAQC,EAAAA,GAChD,GAAGL,sDACHI,GAGWgB,EAA2BhB,GAAQC,EAAAA,GAC9C,GAAGL,8CACHI,GAGWiB,EAAcjB,GAAQC,EAAAA,GACjC,GAAGL,aACHI,GAGWkB,EAASlB,GAAQC,EAAAA,GAC5B,GAAGL,aACHI,GAGWmB,EAAQnB,GAAQC,EAAAA,GAC3B,GAAGL,YACHI,GAGW/+B,EAAS++B,GAAQC,EAAAA,GAC5B,GAAGL,aACHI,GAGWoB,EAAcpB,GAAQC,EAAAA,GACjC,GAAGL,oBACHI,GAGWqB,EAAWrB,GAAQC,EAAAA,GAC9B,GAAGL,sBACHI,GAGWsB,EAAetB,GAAQC,EAAAA,GAClC,GAAGL,sBACHI,GAGWuB,EAAoBvB,GAAQC,EAAAA,GACvC,GAAGL,yBACHI,GAGWwB,EAAqBxB,GAAQC,EAAAA,GACxC,GAAGL,0BACHI,GAGWyB,EAAuBzB,GAAQC,EAAAA,GAC1C,GAAGL,6BACHI,GAGW0B,EAAwB1B,GAAQC,EAAAA,GAC3C,GAAGL,0BACHI,GAGW2B,EAA0B3B,GAAQC,EAAAA,GAC7C,GAAGL,mCACHI,GAGW4B,EAAiBC,GAAiB5B,EAAAA,GAC7C,GAAGL,qBAA6BiC,KAGrBC,EAAqB9B,GAAQC,EAAAA,GACxC,GAAGL,4BACHI,GAGW+B,EAA4B/B,GAAQC,EAAAA,GAC/C,GAAGL,gCACHI,GAGWgC,EAAexB,GAAMP,EAAAA,GAChC,GAAGL,+BAAuCY,KAG/ByB,EAAqBjC,GAAQC,EAAAA,GACxC,GAAGL,2BACHI,GAGWkC,EAA6BA,CAAC1B,EAAIR,IAASC,EAAAA,GACtD,GAAGL,qBAA6BY,qBAChCR,GAGWmC,EAA0B3B,GAAMP,EAAAA,GAC3C,GAAGL,qBAA6BY,eAGrB4B,EAAyB5B,GAAMP,EAAAA,GAC1C,GAAGL,qBAA6BY,cAOrB6B,EAAU7B,GAAMP,EAAAA,GAC3B,GAAGL,YAAoBY,KAGZ8B,EAAoBtC,GAAQC,EAAAA,GACvC,GAAGL,uBACHI,GAGWuC,EAAoBvC,GAAQC,EAAAA,GACvC,GAAGL,mBACHI,GAGWwC,EAAiBA,CAAChC,EAAIiC,IAASxC,EAAAA,GAC1C,GAAGL,uBAA+BY,WAAYiC,KAGnC5kB,EAAWmiB,GAAQC,EAAAA,GAC9B,GAAGL,gBACHI,GAGW0C,EAAiB1C,GAAQC,EAAAA,GACpC,GAAGL,iBACHI,GAGW2C,EAAiBnC,GAAMP,EAAAA,GAClC,GAAGL,kBAA0BY,YAGlBoC,EAAmBA,IAAM3C,EAAAA,GACpC,GAAGL,sBAGQiD,EAAoB7C,GAAQC,EAAAA,GACvC,GAAGL,oBACHI,GAGW8C,EAAaA,CAAC9C,EAAM+C,IAAW9C,EAAAA,GAC1C,GAAGL,aAAqBmD,IACxB/C,GAGWgD,EAAiBhD,GAAQC,EAAAA,GACpC,GAAGL,4BACHI,GAGWiD,EAAgBjD,GAAQC,EAAAA,GACnC,GAAGL,2BACHI,GAGWkD,EAAelD,GAAQC,EAAAA,GAClC,GAAGL,qBACHI,GAGWmD,GAAkBnD,GAAQC,EAAAA,GACrC,GAAGL,kBACHI,GAGWoD,GAAkBA,CAAC5C,EAAIR,IAASC,EAAAA,GAC3C,GAAGL,mBAA2BY,IAC9BR,GAGWqD,GAAkBA,CAAC7C,EAAIR,IAASC,EAAAA,GAC3C,GAAGL,mBAA2BY,IAC9BR,GAGWsD,GAAiBtD,GAAQC,EAAAA,GACpC,GAAGL,uBACHI,GAGWuD,GAAwBA,CAAC/C,EAAIR,IAASC,EAAAA,GACjD,GAAGL,mBAA2BY,SAC9BR,GAGWwD,GAAwBxD,GAAQC,EAAAA,GAC3C,GAAGL,wBACHI,GAGWyD,GAAuBzD,GAAQC,EAAAA,GAC1C,GAAGL,wBACHI,GAGW0D,GAAuBA,CAAClD,EAAIR,IAASC,EAAAA,GAChD,GAAGL,yBAAiCY,IACpCR,GAGW2D,GAAuBnD,GAAMP,EAAAA,GACxC,GAAGL,yBAAiCY,KAGzBoD,GAAyBA,CAACC,EAASC,IAAgB7D,EAAAA,GAC9D,GAAGL,yBAAiCiE,iBAAuBC,KAGhDC,GAA2BA,CAACF,EAASC,IAAgB7D,EAAAA,GAChE,GAAGL,yBAAiCiE,iBAAuBC,KAGhDE,GAAaC,IACxB,MAAMC,EAAW,IAAIC,SASrB,OARAF,EAAKG,SAAQC,IAA8B,IAA7B,IAAEC,EAAG,MAAEC,EAAK,SAAEC,GAAUH,EAChCG,EACFN,EAASO,OAAOH,EAAKC,EAAOC,GAE5BN,EAASO,OAAOH,EAAKC,EACvB,IAGKtE,EAAAA,GACL,GAAGL,kBACHsE,EACD,EAGUQ,GAAe1E,GAAQC,EAAAA,GAClC,GAAGL,aACHI,GAGW2E,GAAc3E,GAAQC,EAAAA,GACjC,GAAGL,mBACHI,EACA,QAGW4E,GAAmB5E,GAAQC,EAAAA,GACtC,GAAGL,wBACHI,EACA,QAGW6E,GAAwB7E,GAAQC,EAAAA,GAC3C,GAAGL,8BACHI,EACA,QAGW8E,GAAkB9E,GAAQC,EAAAA,GACrC,GAAGL,yBACHI,GAGW+E,GAAqB/E,GAAQC,EAAAA,GACxC,GAAGL,4BACHI,GAGW/U,GAAaA,CAACuV,EAAIR,IAASC,EAAAA,GACtC,GAAGL,YAAoBY,IACvBR,GAGWgF,GAAgBhF,GAAQC,EAAAA,GACnC,GAAGL,qBACHI,GAGWiF,GAAsBA,CAACzE,EAAIR,IAASC,EAAAA,GAC/C,GAAGL,sBAA8BY,IACjCR,GAGWkF,GAAalF,GAAQC,EAAAA,GAChC,GAAGL,WACHI,GAGWmF,GAAaC,GAAWnF,EAAAA,GACnC,GAAGL,uBAA+BwF,KAGvBC,GAAsBD,GAAWnF,EAAAA,GAC5C,GAAGL,iCAAyCwF,KAGjCE,GAAkB9E,GAAMP,EAAAA,GACnC,GAAGL,mBAA2BY,KAGnB+E,GAA0BA,CAAC/E,EAAIR,IAASC,EAAAA,GACnD,GAAGL,mBAA2BY,oBAC9BR,GAEWwF,GAAoBA,CAAChF,EAAIR,IAASC,EAAAA,GAC7C,GAAGL,qBAA6BY,IAChCR,GAGWyF,GAAoBjF,GAAMP,EAAAA,GACrC,GAAGL,qBAA6BY,KAGrBkF,GAAoB1F,GAAQC,EAAAA,GACvC,GAAGL,oBACHI,GAGW2F,GAAoB3F,GAAQC,EAAAA,GACvC,GAAGL,qBACHI,GAGW4F,GAAoBA,CAACpF,EAAIR,IAASC,EAAAA,GAC7C,GAAGL,sBAA8BY,IACjCR,GAGW6F,GAAoBrF,GAAMP,EAAAA,GACrC,GAAGL,sBAA8BY,KAGtBsF,GAAqBA,CAACtF,EAAIR,IAASC,EAAAA,GAC9C,GAAGL,sBAA8BY,YACjCR,GAOW+F,GAA2BA,CAACvF,EAAIR,IAASC,EAAAA,GACpD,GAAGL,sBAA8BY,cACjCR,GAGWgG,GAAqCA,CAACxF,EAAIR,IAASC,EAAAA,GAC9D,GAAGL,sBAA8BY,0BACjCR,GAGWiG,GAA6B,SAACzF,GAAE,IAAE0F,EAAKC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAIG,EAAIH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAC,OAAKlG,EAAAA,GACtE,GAAGL,sBAA8BY,sBAAuB0F,UAAcI,IACvE,EAEYC,GAAwBvG,GAAQC,EAAAA,GAC3C,GAAGL,2BACHI,GAGWwG,GAAwBA,CAAChG,EAAIR,IAASC,EAAAA,GACjD,GAAGL,4BAAoCY,IACvCR,GAGWyG,GAAwBjG,GAAMP,EAAAA,GACzC,GAAGL,4BAAoCY,KAG5BkG,GAAuBlG,GAAMP,EAAAA,GACxC,GAAGL,kBAA0BY,YAGlBmG,GAAkBA,CAACnG,EAAIR,IAASC,EAAAA,GAC3C,GAAGL,kBAA0BY,IAC7BR,GAGW4G,GAAkB5G,GAAQC,EAAAA,GACrC,GAAGL,iBACHI,GAGW6G,GAAkBA,CAACrG,EAAIsG,KAClC,IAAIC,EAAe,GAAGnH,kBAA0BY,IAMhD,OAJIsG,IACFC,EAAe,GAAGA,oBAA+BD,KAG5C7G,EAAAA,GAAY8G,EAAa,EAGrBC,GAAsBC,GAAWhH,EAAAA,GAC5C,GAAGL,6CAAqDqH,KAG7CC,GAA0B1G,GAAMP,EAAAA,GAC3C,GAAGL,wBAAgCY,KAGxB2G,GAAuB3G,GAAMP,EAAAA,GACxC,GAAGL,wBAAgCY,KAGxB4G,GAAuBpH,GAAQC,EAAAA,GAC1C,GAAGL,uBACHI,GAGWqH,GAA6BrH,GAAQC,EAAAA,GAChD,GAAGL,sCACHI,GAGWsH,GAActH,GAAQC,EAAAA,GACjC,GAAGL,qBACHI,GAGWuH,GAA8BvH,GAAQC,EAAAA,GACjD,GAAGL,qCACHI,GAGWwH,GAAwBxH,GAAQC,EAAAA,GAC3C,GAAGL,4CACHI,GAGWyH,GAA+BzH,GAAQC,EAAAA,GAClD,GAAGL,sCACHI,GAGW0H,GAAyB1H,GAAQC,EAAAA,GAC5C,GAAGL,6CACHI,GAGW2H,GAAuB3H,GAAQC,EAAAA,GAC1C,GAAGL,8BACHI,GAGW4H,GAAiB5H,GAAQC,EAAAA,GACpC,GAAGL,qCACHI,GAGW6H,GAAiB7H,GAAQC,EAAAA,GACpC,GAAGL,8CACHI,GAGW8H,GAAgB9H,GAAQC,EAAAA,GACnC,GAAGL,6CACHI,GAGW+H,GAAuB/H,GAAQC,EAAAA,GAC1C,GAAGL,uCACHI,GAGWgI,GAAiBhI,GAAQC,EAAAA,GACpC,GAAGL,kBACHI,GAGWiI,GAA2BA,CAACzH,EAAI0H,IAAejI,EAAAA,GAC1D,GAAGL,qBAA6BY,gBAAiB0H,KAGtCC,GAAgCA,CAAC3H,EAAI0H,IAAejI,EAAAA,GAC/D,GAAGL,qBAA6BY,gBAAiB0H,KAGtCE,GAAoBpI,GAAQC,EAAAA,GACvC,GAAGL,oBACHI,GAGWqI,GAAoBA,CAAC7H,EAAIR,IAASC,EAAAA,GAC7C,GAAGL,qBAA6BY,IAChCR,GAGWsI,GAAoB9H,GAAMP,EAAAA,GACrC,GAAGL,qBAA6BY,KAgBrB+H,GAAyBA,CAACC,EAAKC,EAAUC,IAAWzI,EAAAA,GAC/D,GAAGL,kCAA0C4I,cAAgBC,YAAmBC,KAGrEC,GAA6BA,IAAM1I,EAAAA,GAC9C,GAAGL,6BAGQgJ,GAAuB5I,GAAQC,EAAAA,GAC1C,GAAGL,sBACHI,GAGW6I,GAA2B7I,GAAQC,EAAAA,GAC9C,GAAGL,4BACHI,GAGW8I,GAA2BA,CAACtI,EAAIR,IAASC,EAAAA,GACpD,GAAGL,6BAAqCY,IACxCR,GAGW+I,GAA2BvI,GAAMP,EAAAA,GAC5C,GAAGL,6BAAqCY,KAG7BwI,GAA0BhJ,GAAQC,EAAAA,GAC7C,GAAGL,4BACHI,GAGWiJ,GAA0BA,CAACzI,EAAIR,IAASC,EAAAA,GACnD,GAAGL,6BAAqCY,IACxCR,GAGWkJ,GAA0B1I,GAAMP,EAAAA,GAC3C,GAAGL,6BAAqCY,KAG7B2I,GAAyBA,IAAMlJ,EAAAA,GAC1C,GAAGL,uBAGQwJ,GAAyBA,CAAC5I,EAAIR,IAASC,EAAAA,GAClD,GAAGL,uBAA+BY,eAClCR,GAGWqJ,GAAuBA,CAAC7I,EAAIR,IAASC,EAAAA,GAChD,GAAGL,uBAA+BY,aAClCR,GAGWsJ,GAAkBtJ,GAAQC,EAAAA,GACrC,GAAGL,kCACHI,GAGWuJ,GAAYvJ,GAAQC,EAAAA,GAC/B,GAAGL,gBACHI,GAGWwJ,GAAyBC,IACpC,MAAMC,EAAc,IAAIC,gBAAgB,CACtCC,eAAgBH,IAGlB,MAAO,GAAG7J,4BAAoC8J,EAAYG,YAAY,EAG3DC,GAAM9J,GAAQC,EAAAA,GACzB,GAAGL,UACHI,GAGW+J,GAAS/J,GAAQC,EAAAA,GAC5B,GAAGL,cACHI,GAGWgK,GAAkBA,CAACxJ,EAAIL,EAAU8J,IAAWhK,EAAAA,GACvD,GAAGL,oBAA4BY,mBAAoB0J,mBAAmB/J,aAAoB8J,KAG/EE,GAAmBnK,GAAQC,EAAAA,GACtC,GAAGL,mBACHI,GAGWoK,GAAmB5J,GAAMP,EAAAA,GACpC,GAAGL,oBAA4BY,KAGpB6J,GAAmBA,CAAC7J,EAAIR,IAASC,EAAAA,GAC5C,GAAGL,oBAA4BY,IAC/BR,GAGWsK,GAAetK,GAAQC,EAAAA,GAClC,GAAGL,gBAAyBI,GAGjBuK,GAAe/J,GAAMP,EAAAA,GAChC,GAAGL,gBAAwBY,KAGhBgK,GAAqBC,IAChC,MAAMvG,EAAW,IAAIC,SAGrB,OAFAD,EAASO,OAAO,OAAQgG,GAEjBxK,EAAAA,GACL,GAAGL,cACHsE,EACD,EAGUwG,GAAyB1K,GAAQC,EAAAA,GAC5C,GAAGL,iCAA0CI,GAGlC2K,GAAqBA,CAACrE,EAAMJ,EAAO/nC,EAAQysC,IAAc3K,EAAAA,GACpE,GAAGL,0BAAkC0G,WAAcJ,aAAiB/nC,gBAAqBysC,KAG9EC,GAAeA,IAAM5K,EAAAA,GAAS,GAAGL,qBAEjCkL,GAAuB9K,GAAQC,EAAAA,GAC1C,GAAGL,6BAAsCI,GAG9B+K,GAA4B/K,GAAQC,EAAAA,GAC/C,GAAGL,6BAAsCI,GAG9BgL,GAAwBhL,GAAQC,EAAAA,GAC3C,GAAGL,+BAAwCI,GAGhCiL,GAAyBjL,GAAQC,EAAAA,GAC5C,GAAGL,0BAAmCI,GAG3BkL,GAAoBlL,GAAQC,EAAAA,GACvC,GAAGL,sBAA+BI,GAGvBmL,GAA6BnL,GAAQC,EAAAA,GAChD,GAAGL,oCAA6CI,GAGrCoL,GAA2BpL,GAAQC,EAAAA,GAC9C,GAAGL,iCAA0CI,GAGlCqL,GAA6BrL,GAAQC,EAAAA,GAChD,GAAGL,0CACHI,EACA,QAGWsL,GAA4BtL,GAAQC,EAAAA,GAC/C,GAAGL,mCACHI,GAGWuL,GAAyB/K,GAAMP,EAAAA,GAC1C,GAAGL,6BAAqCY,KAG7BgL,GAA0BxL,GAAQC,EAAAA,GAC7C,GAAGL,4BACHI,GAGWyL,GAA0BA,CAACjL,EAAIR,IAASC,EAAAA,GACnD,GAAGL,6BAAqCY,IACxCR,GAGW0L,GAA0BlL,GAAMP,EAAAA,GAC3C,GAAGL,6BAAqCY,KAG7BmL,GAA4BnL,GAAMP,EAAAA,GAC7C,GAAGL,6BAAqCY,cAG7BoL,GAAc5L,GAAQC,EAAAA,GACjC,GAAGL,aACHI,GAGW6L,GAA2B7L,GAAQC,EAAAA,GAC9C,GAAGL,mCACHI,GAGW8L,GAA2BtL,GAAMP,EAAAA,GAC5C,GAAGL,oCAA4CY,KAGpCpvC,GAAa4uC,GAAQC,EAAAA,GAChC,GAAGL,kBACHI,E,wBChxBF,MAAM+L,EAAQC,EAAQ,OAChBC,EAAYD,EAAQ,OAEpBE,EAAmB,GACnBC,EAAqB,GAa3B,SAASC,EAAKC,GACZ,MAAMC,EAAUD,IAEVE,EAAQ,CACZC,SAAS,EACTC,OAAQ,KACRC,MAAO,MAeT,OAZAH,EAAMD,QAAUA,EACbK,MAAMF,IACLF,EAAMC,SAAU,EAChBD,EAAME,OAASA,EACRA,KAERG,OAAOC,IAGN,MAFAN,EAAMC,SAAU,EAChBD,EAAMG,MAAQG,EACRA,CAAG,IAGNN,CACT,CAEA,SAASO,EAAQC,GACf,MAAMR,EAAQ,CACZC,SAAS,EACTC,OAAQ,CAAC,EACTC,MAAO,MAGHM,EAAW,GAEjB,IACEC,OAAOC,KAAKH,GAAK3I,SAASE,IACxB,MAAM6I,EAASf,EAAKW,EAAIzI,IAEnB6I,EAAOX,QAIVD,EAAMC,SAAU,GAHhBD,EAAME,OAAOnI,GAAO6I,EAAOV,OAC3BF,EAAMG,MAAQS,EAAOT,OAKvBM,EAASI,KAAKD,EAAOb,SAErBa,EAAOb,QACJK,MAAMU,IACLd,EAAME,OAAOnI,GAAO+I,CAAG,IAExBT,OAAOC,IACNN,EAAMG,MAAQG,CAAG,GACjB,GAIR,CAFE,MAAOA,GACPN,EAAMG,MAAQG,CAChB,CAYA,OAVAN,EAAMD,QAAUgB,QAAQC,IAAIP,GACzBL,MAAMU,IACLd,EAAMC,SAAU,EACTa,KAERT,OAAOC,IAEN,MADAN,EAAMC,SAAU,EACVK,CAAG,IAGNN,CACT,CAMA,SAASiB,EAAOf,EAAQgB,GACtB,OAAO1B,EAAM2B,eALEX,EAKoBN,IAJrBM,EAAIY,WAAaZ,EAAIa,QAAUb,EAIDU,GAL9C,IAAiBV,CAMjB,CAEA,SAASc,EAAwBC,EAAQC,GACvC,IAAKA,EAAQvB,QACX,MAAM,IAAIwB,MAAM,iDAGlB,MAAMC,EAAOhB,OAAOiB,OAClB,CACE7B,OAAQ,KACRG,QAAS,KACT2B,MAAO,IACPC,QAAS,KACTZ,SACAa,QAAS,KACTC,QAAS,MAEXP,GAGF,IAAIV,EAAM,KAEV,SAASkB,IAIP,OAHKlB,IACHA,EAAMS,EAAOG,EAAK5B,SAEbgB,EAAIf,OACb,CAYA,OAVAJ,EAAiBkB,KAAKmB,GAEM,mBAAjBN,EAAKI,SACdlC,EAAmBiB,MAAK,KACtB,IAAIoB,EAAeP,EAAKI,WApHNI,OAAMC,QACN,IAAbA,QACuC,IAAlCC,EAAAA,EAAoBD,KAmH5B,OAAOH,GACT,IAIG,cAAgCxC,EAAM6C,UAC3CC,YAAYpB,GACVqB,MAAMrB,GACNc,IAEAQ,KAAKxC,MAAQ,CACXG,MAAOW,EAAIX,MACXsC,WAAW,EACXC,UAAU,EACVzC,QAASa,EAAIb,QACbC,OAAQY,EAAIZ,OAEhB,CAEAyC,oBAAsB,CACpBC,SAAUlD,EAAUmD,MAAM,CACxBC,OAAQpD,EAAUqD,KAAKC,cAI3BL,iBACE,OAAOX,GACT,CAEAiB,4BACET,KAAKU,UAAW,EAChBV,KAAKW,aACP,CAEAA,cAOE,GANIX,KAAKY,QAAQR,UAAYS,MAAMC,QAAQ5B,EAAKK,UAC9CL,EAAKK,QAAQlK,SAAS0L,IACpBf,KAAKY,QAAQR,SAASE,OAAOS,EAAW,KAIvCzC,EAAIb,QACP,OAGwB,iBAAfyB,EAAKE,QACK,IAAfF,EAAKE,MACPY,KAAKgB,SAAS,CAAEf,WAAW,IAE3BD,KAAKiB,OAASC,YAAW,KACvBlB,KAAKgB,SAAS,CAAEf,WAAW,GAAO,GACjCf,EAAKE,QAIgB,iBAAjBF,EAAKG,UACdW,KAAKmB,SAAWD,YAAW,KACzBlB,KAAKgB,SAAS,CAAEd,UAAU,GAAO,GAChChB,EAAKG,UAGV,MAAM+B,EAASA,KACRpB,KAAKU,WAIVV,KAAKgB,SAAS,CACZrD,MAAOW,EAAIX,MACXD,OAAQY,EAAIZ,OACZD,QAASa,EAAIb,UAGfuC,KAAKqB,iBAAgB,EAGvB/C,EAAIf,QACDK,MAAK,KACJwD,GAAQ,IAETvD,OAAOC,IACNsD,GAAQ,GAEd,CAEAE,8BACEtB,KAAKU,UAAW,EAChBV,KAAKqB,gBACP,CAEAA,iBACEE,aAAavB,KAAKiB,QAClBM,aAAavB,KAAKmB,SACpB,CAEAK,MAAQA,KACNxB,KAAKgB,SAAS,CAAErD,MAAO,KAAMF,SAAS,EAAMyC,UAAU,IACtD5B,EAAMS,EAAOG,EAAK5B,QAClB0C,KAAKW,aAAa,EAGpBlC,SACE,OAAIuB,KAAKxC,MAAMC,SAAWuC,KAAKxC,MAAMG,MAC5BX,EAAM2B,cAAcO,EAAKzB,QAAS,CACvCgE,UAAWzB,KAAKxC,MAAMC,QACtBwC,UAAWD,KAAKxC,MAAMyC,UACtBC,SAAUF,KAAKxC,MAAM0C,SACrBvC,MAAOqC,KAAKxC,MAAMG,MAClB6D,MAAOxB,KAAKwB,QAIZxB,KAAKxC,MAAME,OACNwB,EAAKT,OAAOuB,KAAKxC,MAAME,OAAQsC,KAAKtB,OAEtC,IACT,EAEJ,CAEA,SAASgD,EAASxC,GAChB,OAAOJ,EAAwBzB,EAAM6B,EACvC,CAUAwC,EAASC,IART,SAAqBzC,GACnB,GAA2B,mBAAhBA,EAAKT,OACd,MAAM,IAAIQ,MAAM,2DAGlB,OAAOH,EAAwBf,EAASmB,EAC1C,EAIA,MAAM0C,UAAgB5E,EAAM6C,UAC1BM,iBAAmB,CACjBG,OAAQpD,EAAUqD,KAAKC,YAGzBL,yBAA2B,CACzBC,SAAUlD,EAAUmD,MAAM,CACxBC,OAAQpD,EAAUqD,KAAKC,aACtBA,YAGLqB,kBACE,MAAO,CACLzB,SAAU,CACRE,OAAQN,KAAKtB,MAAM4B,QAGzB,CAEA7B,SACE,OAAOzB,EAAM8E,SAASC,KAAK/B,KAAKtB,MAAMsD,SACxC,EAKF,SAASC,EAAkBC,GACzB,MAAMjE,EAAW,GAEjB,KAAOiE,EAAa7K,QAAQ,CAC1B,MAAMmI,EAAO0C,EAAaC,MAC1BlE,EAASI,KAAKmB,IAChB,CAEA,OAAOjB,QAAQC,IAAIP,GAAUL,MAAK,KAChC,GAAIsE,EAAa7K,OACf,OAAO4K,EAAkBC,EAC3B,GAEJ,CAfAR,EAASE,QAAUA,EAiBnBF,EAASU,WAAa,IAAM,IAAI7D,SAAQ,CAAC8D,EAASC,KAChDL,EAAkB9E,GAAkBS,KAAKyE,EAASC,EAAO,IAG3DZ,EAASa,aAAe,IAAM,IAAIhE,SAAQ,CAAC8D,EAASC,KAElDL,EAAkB7E,GAAoBQ,KAAKyE,EAASA,EAAQ,IAG9DG,EAAOC,QAAUf,C,qHCtTjB,MAAMgB,EAAY,CAChB,UACA,iBACA,gBACA,aACA,gBACA,cACA,iBACA,iBACA,gB,0CCaF,MAAMC,GAAOC,EAAAA,EAAAA,IAAe,IAAM,0LAC5BC,GAAYD,EAAAA,EAAAA,IAAe,IAAM,oEAEvC7R,EAAAA,EAAAA,UAAexvC,EAAAA,EAAAA,OAEfuhD,OAAOC,SAAW,IAAMhS,EAAAA,EAAAA,UAAetkB,EAAAA,EAAAA,IAAqB,CAC1Du2B,MAAOF,OAAOG,WACdC,OAAQJ,OAAOK,eAGjBC,EAAAA,EAAOC,OAAS,EAChBD,EAAAA,EAAOE,OAAS,EAEhBR,OAAOS,YAAcC,IACnB,IACEJ,EAAAA,EAAOC,OAASG,EAAEC,QAClBL,EAAAA,EAAOE,OAASE,EAAEE,OACN,CAAZ,MAAOF,GAAK,GAIZtF,OAAOyF,UAAUC,eAAeC,KAAKf,OAAQ,SAE/CA,OAAOgB,IAAIC,kBAAoB,WAC7BC,QAAQC,IAAI,kBACZnB,OAAOgB,IAAII,UAAYpB,OAAOqB,SAC9BrB,OAAOgB,IAAIM,gBDpCQC,MAKrB,MAAMC,EAAKxB,OAAOqB,SAGlB,OAFgBzB,EAAU6B,MAAKC,GAAUF,EAAGG,WAAWD,IAEzC,EC4BiBH,CAAQvB,OAAOgB,IAAII,WAChDpB,OAAOgB,IAAIM,iBDlBbtB,OAAOgB,IAAIY,SAASC,yBAA0B,EAC9C7B,OAAOgB,IAAIc,SAAU,EACrB9B,OAAOgB,IAAIe,wBAAyB,EACpCb,QAAQC,IAAI,uBAVZnB,OAAOgB,IAAIY,SAASC,yBAA0B,EAC9C7B,OAAOgB,IAAIc,SAAU,EACrB9B,OAAOgB,IAAIe,wBAAyB,EACpCb,QAAQC,IAAI,sBCuBZ,GAGF,MAAMa,EAAiB,CACrB,0BACA,2BACA,sBACA,uBACA,gCACA,iCACA,qCACA,uCAGFhC,OAAOiC,iBAAiB,WAAWC,IACjC,IAA4C,IAAxCF,EAAeG,QAAQD,EAAIE,SACP,gBAAlBF,EAAI9P,KAAKxB,KAAwB,CACnC,MAAMyR,EAAUC,SAASzG,cAAc,SACvCwG,EAAQE,aAAa,OAAQ,YAEzBF,EAAQG,WACVH,EAAQG,WAAWC,QAAUP,EAAI9P,KAAKA,KAEtCiQ,EAAQK,YAAYJ,SAASK,eAAeT,EAAI9P,KAAKA,OAGvDkQ,SAASM,KAAKF,YAAYL,GAE1BnB,QAAQ2B,KAAK,qBAAqBX,EAAI9P,KAAKxB,aAAasR,EAAIE,SAC9D,CACF,IAGF,MAAMU,EAAYR,SAASS,eAAe,QACpCC,GAAOC,EAAAA,EAAAA,GAAWH,ICpF4D,IAA3C9C,OAAOkD,SAASC,KAAKhB,QAAQ,SDuFpEa,EAAKrH,OAAOzB,EAAAA,cAAC6F,EAAS,CAAC9R,MAAOA,EAAAA,KAE9B+U,EAAKrH,OAAOzB,EAAAA,cAAC2F,EAAI,CAAC5R,MAAOA,EAAAA,I,sJEtE3B,MAAMmV,EAA2B,CAC/BC,EAAAA,GAAAA,cACAA,EAAAA,GAAAA,wBACAA,EAAAA,GAAAA,0BAGWC,GAAsBC,EAAAA,EAAAA,KAAInI,OAAOoI,OAAOH,EAAAA,KAClDI,SAASL,GACTM,SACAC,OAEUC,EAAyB,CACpCP,EAAAA,GAAAA,SACAA,EAAAA,GAAAA,UACAA,EAAAA,GAAAA,mBACAA,EAAAA,GAAAA,iBACAA,EAAAA,GAAAA,iBACAA,EAAAA,GAAAA,sBACAA,EAAAA,GAAAA,cACAA,EAAAA,GAAAA,iBACAA,EAAAA,GAAAA,gBACAA,EAAAA,GAAAA,UACAA,EAAAA,GAAAA,YACAA,EAAAA,GAAAA,gBACAA,EAAAA,GAAAA,aACAA,EAAAA,GAAAA,mBACAA,EAAAA,GAAAA,sBACAA,EAAAA,GAAAA,iBACAA,EAAAA,GAAAA,YACAA,EAAAA,GAAAA,gBACAA,EAAAA,GAAAA,uBACAA,EAAAA,GAAAA,wBACAA,EAAAA,GAAAA,yBACAA,EAAAA,GAAAA,WACAA,EAAAA,GAAAA,WAGIQ,GAAgBC,EAAAA,EAAAA,QAAO,CAC3BC,UAAWC,EAAAA,GAAAA,QACX/F,WAAYgG,EAAAA,GAAAA,KACZC,aAAcC,EAAAA,GAAAA,QACdC,gBAAiB,KACjBC,oBAAoB,EACpBC,uBAAuB,EACvBC,eAAgB,aAChBC,aAAc,CACZC,EAAAA,GAAAA,KACAA,EAAAA,GAAAA,YACAA,EAAAA,GAAAA,aACAA,EAAAA,GAAAA,OACAA,EAAAA,GAAAA,WACAA,EAAAA,GAAAA,gBAEFC,kBAAmBC,EAAAA,GAAAA,QACnBC,iBAAkB,CAChBC,EAAAA,GAAAA,aACAA,EAAAA,GAAAA,SAEFC,oBAAqBxB,EACrByB,yBAA0B3J,OAAOoI,OAAOwB,EAAAA,IACxCC,gBAAiB,GACjBC,cAAeC,EAAAA,GACfC,SAAU,CACRC,YAAa,CACX,aACA,OACA,cACA,iBAEFC,uBAAuB,GAEzBC,gBAAiB,CACfC,kBAAmBnC,EAAAA,GAAAA,SACnBoC,2BAA2B,EAC3BC,KAAM,CACJC,KAAM,UACND,KAAM,MAERE,OAAQ,CACNC,OAAQ,cACRC,MAAO,eAGXC,WAAY,CACVC,aAAa,EACbC,WAAW,EACXC,eAAe,EACfC,mBAAmB,EACnBC,cAAc,EACdC,aAAa,EACbC,kBAAkB,EAClBC,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,kBAAkB,EAClBC,oBAAoB,EACpBC,uBAAuB,GAEzBC,iBAAkB,CAClB,EACAC,kBAAmB,CACnB,EACAC,aAAc,CACZC,YAAa,CAACC,EAAAA,GAAAA,wBACdC,aAAc,CAACD,EAAAA,GAAAA,yBACfE,kBAAmB,CAACF,EAAAA,GAAAA,gCACpBG,cAAe,CAACH,EAAAA,GAAAA,yBAChBI,qBAAsB,CAACJ,EAAAA,GAAAA,yCACvBK,mBAAoB,CAACL,EAAAA,GAAAA,+BACrBM,OAAQ,CAACN,EAAAA,GAAAA,mBACTO,QAAS,CAACP,EAAAA,GAAAA,qBACVQ,SAAU,CAACR,EAAAA,GAAAA,yBACX5B,YAAa,CACX4B,EAAAA,GAAAA,kBACAA,EAAAA,GAAAA,sBAGJS,OAAQ,CACNC,qBAAqB,GAEvBC,iBAAiB,EACjBC,yBAA0B,iCAGtBC,EAAcC,GAAalE,EAAcmE,UAAUC,EAAAA,IAAoBnE,EAAAA,EAAAA,QAAOiE,IAE9EG,EAAwBJ,EAAY,CACxC7J,WAAYgG,EAAAA,GAAAA,SACZM,eAAgB,WAChBH,gBAAiBS,EAAAA,GAAAA,QACjBL,aAAc,CACZC,EAAAA,GAAAA,iBACAA,EAAAA,GAAAA,KACAA,EAAAA,GAAAA,YACAA,EAAAA,GAAAA,aACAA,EAAAA,GAAAA,eACAA,EAAAA,GAAAA,YAEFsB,WAAY,CACVS,eAAe,EACfJ,cAAc,EACdQ,uBAAuB,GAEzBG,aAAc,CACZC,YAAa,CAACC,EAAAA,GAAAA,iCACdC,aAAc,CAACD,EAAAA,GAAAA,kCACfE,kBAAmB,CAACF,EAAAA,GAAAA,yCACpBG,cAAe,CAACH,EAAAA,GAAAA,6BAChBI,qBAAsB,CAACJ,EAAAA,GAAAA,6CACvBK,mBAAoB,CAACL,EAAAA,GAAAA,mCACrB5B,YAAa,CACX4B,EAAAA,GAAAA,kBACAA,EAAAA,GAAAA,sBAGJ7B,SAAU,CACRC,YAAa,CACX,aACA,OACA,cACA,kBAGJwC,yBAA0B,qCAGtBM,EAA4BJ,GAAaG,EAAsBF,UAAUC,EAAAA,IAAoBnE,EAAAA,EAAAA,QAAOiE,IAEpGK,EAA0BN,EAAY,CAC1C7J,WAAYgG,EAAAA,GAAAA,UACZF,UAAWC,EAAAA,GAAAA,eACXE,aAAcC,EAAAA,GAAAA,QACdC,gBAAiBS,EAAAA,GAAAA,QACjBR,oBAAoB,EACpBC,uBAAuB,EACvBC,eAAgB,cAChBC,aAAc,CACZC,EAAAA,GAAAA,eACAA,EAAAA,GAAAA,YACAA,EAAAA,GAAAA,aACAA,EAAAA,GAAAA,WACAA,EAAAA,GAAAA,eACAA,EAAAA,GAAAA,eAEFC,kBAAmBC,EAAAA,GAAAA,eACnBC,iBAAkB,CAChBC,EAAAA,GAAAA,SAEFC,oBAAqBlB,EACrBmB,yBAA0B,CACxBC,EAAAA,GAAAA,KACAA,EAAAA,GAAAA,cAEFC,gBAAiB,CACf5B,EAAAA,GAAAA,gBACAA,EAAAA,GAAAA,aACAA,EAAAA,GAAAA,aACAA,EAAAA,GAAAA,eACAA,EAAAA,GAAAA,oBACAA,EAAAA,GAAAA,YACAA,EAAAA,GAAAA,wBACAA,EAAAA,GAAAA,0BAEF6B,cAAe,CACb,sBACA,uBAEFE,SAAU,CACRC,YAAa,CACX,aACA,sBACA,uBAEFC,uBAAuB,GAEzBC,gBAAiB,CACfC,kBAAmBnC,EAAAA,GAAAA,SACnBoC,2BAA2B,EAC3BC,KAAM,CACJC,KAAM,UACND,KAAM,MAERE,OAAQ,CACNC,OAAQ,cACRC,MAAO,eAGXC,WAAY,CACVG,eAAe,EACfC,mBAAmB,EACnBE,aAAa,EACbJ,WAAW,EACXG,cAAc,EACdE,kBAAkB,EAClBC,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,kBAAkB,EAClBC,oBAAoB,GAEtBE,iBAAkB,CAClB,EACAC,kBAAmB,CACnB,EACAC,aAAc,CACZC,YAAa,CAACC,EAAAA,GAAAA,kCACdC,aAAc,CAACD,EAAAA,GAAAA,mCACfE,kBAAmB,CAACF,EAAAA,GAAAA,0CACpBG,cAAe,CAACH,EAAAA,GAAAA,8BAChBI,qBAAsB,CAACJ,EAAAA,GAAAA,8CACvBK,mBAAoB,CAACL,EAAAA,GAAAA,oCACrBM,OAAQ,CAACN,EAAAA,GAAAA,sBACTO,QAAS,CAAC,mDACVC,SAAU,CAACR,EAAAA,GAAAA,mCACX5B,YAAa,CACX4B,EAAAA,GAAAA,uBAGJS,OAAQ,CACNC,qBAAqB,GAEvBC,iBAAiB,EACjBC,yBAA0B,sCAKtBQ,EAAwB,CAC5BnE,aAAcC,EAAAA,GAAAA,kBACdoB,gBAAiB,CACfC,kBAAmBnC,EAAAA,GAAAA,mBACnBoC,2BAA2B,EAC3BC,KAAM,CACJC,KAAM,OACND,KAAM4C,EAAAA,EAAAA,MAAmB,CAAC,QAAS,WAErC1C,OAAQ,CACNC,OAAQ,OACRC,MAAO,wBAGXC,WAAY,CACVC,aAAa,IAIXuC,EAA6B,CACjCrE,aAAcC,EAAAA,GAAAA,WACdoB,gBAAiB,CACfC,kBAAmBnC,EAAAA,GAAAA,YACnBoC,2BAA2B,EAC3BC,KAAM,CACJC,KAAM,OACND,KAAM4C,EAAAA,EAAAA,MAAmB,CAAC,QAAS,gBAErC1C,OAAQ,CACNC,OAAQ,OACRC,MAAO,kBAGXC,WAAY,CACVC,aAAa,IAIXwC,EAAiC,CACrCtE,aAAcC,EAAAA,GAAAA,eACdoB,gBAAiB,CACfC,kBAAmBnC,EAAAA,GAAAA,gBACnBoC,2BAA2B,EAC3BC,KAAM,CACJC,KAAM,YACND,KAAM,MAERE,OAAQ,CACNC,OAAQ,cACRC,MAAO,mBAGXC,WAAY,CACVC,aAAa,IAIJyC,GAAgB3E,EAAAA,EAAAA,QAAO,CAClC4E,OAAQZ,EAAY,CAAC,GACrBa,aAAcb,EAAYO,GAC1BO,kBAAmBd,EAAYS,GAC/BM,SAAUX,EACVY,eAAgBX,EAA0BE,GAC1CU,oBAAqBZ,EAA0BI,GAE/CS,kBAAmBlB,EAAY,CAC7B7J,WAAYgG,EAAAA,GAAAA,mBACZC,aAAcC,EAAAA,GAAAA,cACdC,gBAAiBS,EAAAA,GAAAA,QACjBN,eAAgB,qBAChBO,oBAAqBxB,EAAoB2F,OAAO,CAAC5F,EAAAA,GAAAA,gBACjDmB,aAAc,CACZC,EAAAA,GAAAA,WACAA,EAAAA,GAAAA,SACAA,EAAAA,GAAAA,MACAA,EAAAA,GAAAA,WACAA,EAAAA,GAAAA,gBAEFW,SAAU,CACRC,YAAa,CACX,aACA,OACA,eAEFC,uBAAuB,GAEzBC,gBAAiB,CACfC,kBAAmBnC,EAAAA,GAAAA,gBACnBqC,KAAM,CACJC,KAAM,UACND,KAAM,MAERE,OAAQ,CACNC,OAAQ,OACRC,MAAO,qBAGXC,WAAY,CACVM,aAAa,EACbJ,WAAW,EACXG,cAAc,EACdM,kBAAkB,EAClBC,oBAAoB,GAEtBI,aAAc,CACZK,cAAe,CAACH,EAAAA,GAAAA,uCAChBI,qBAAsB,CAACJ,EAAAA,GAAAA,uDACvBK,mBAAoB,CAACL,EAAAA,GAAAA,8CAEvBY,yBAA0B,+BAG5BqB,WAAYd,EACZe,2BAnHkCpB,EAmHqBS,EAnHRJ,EAAwBJ,UAAUC,EAAAA,IAAoBnE,EAAAA,EAAAA,QAAOiE,OAA1EA,MAsH7B,MAAMqB,GAAetF,EAAAA,EAAAA,QAAO,CACjCC,UAAWC,EAAAA,GAAAA,QACX/F,WAAY,GACZuG,aAAc,GACdE,kBAAmB,GACnBE,iBAAkB,GAClBK,gBAAiB,GACjB8B,aAAc,CACZC,YAAa,GACbE,aAAc,GACdC,kBAAmB,GACnBC,cAAe,GACfC,qBAAsB,GACtBC,mBAAoB,GACpBC,OAAQ,GACRC,QAAS,GACTC,SAAU,GACVpC,YAAa,IAEfqC,OAAQ,CAAC,EACTtC,SAAU,CACRC,YAAa,IAEfE,gBAAiB,CAAC,EAClBQ,WAAY,CAAC,EACbc,iBAAkB,CAAC,EACnBC,kBAAmB,CAAC,IAGtB,MAAeuC,EAAAA,EAAAA,GAAc,CAC3B,CAACC,EAAAA,IAAkC,CAAC5O,EAAKlI,KAAwB,IAApB+W,QAASC,GAAMhX,EAC1D,MAAMiX,EAAShB,EAAciB,IAAIF,GAEjC,OAAIC,GAIG/O,CAAK,EAEd,CAACiP,EAAAA,IAAwB,IAAMP,GAC9BA,E,87BC3bI,MAAMQ,EAAgBlP,GAASA,EAAMmP,SAASH,IAAI,MAC5CI,EAAmCpP,GAASkP,EAAclP,GAAOgP,IAAI,yBACrEK,EAAwBrP,GAASkP,EAAclP,GAAOgP,IAAI,cAC1DM,EAA4BtP,GAASkP,EAAclP,GAAOgP,IAAI,kBAC9DO,EAAkCvP,GAASkP,EAAclP,GAAOgP,IAAI,wBACpEQ,EAAqCxP,GAASkP,EAAclP,GAAOgP,IAAI,mCACvES,EAAiCzP,GAASkP,EAAclP,GAAOgP,IAAI,+BACnEU,EAAkC1P,GAASkP,EAAclP,GAAOgP,IAAI,gCACpEW,EAA0C3P,GAASkP,EAAclP,GAAOgP,IAAI,gCAC5EY,EAAqB5P,GAASkP,EAAclP,GAAOgP,IAAI,mBACvDa,EAAgB7P,GAASkP,EAAclP,GAAOgP,IAAI,cAClDc,EAAkC9P,GAASkP,EAAclP,GAAOgP,IAAI,wBACpEe,EAAmC/P,GAASkP,EAAclP,GAAOgP,IAAI,yBACrEgB,EAAiChQ,GAASkP,EAAclP,GAAOgP,IAAI,+BACnEiB,EAA+CjQ,GAASkP,EAAclP,GAAOgP,IAAI,oCACjFkB,EAAyBlQ,GAASkP,EAAclP,GAAOgP,IAAI,uBAC3DmB,EAAkBnQ,GAASkP,EAAclP,GAAOgP,IAAI,gBACpDoB,EAAqBpQ,GAASkP,EAAclP,GAAOgP,IAAI,mBACvDqB,EAAwCrQ,GAASkP,EAAclP,GAAOgP,IAAI,sCAC1EsB,EAAoCtQ,GAASkP,EAAclP,GAAOgP,IAAI,kCACtEuB,EAAqCvQ,GAASkP,EAAclP,GAAOgP,IAAI,mCACvEwB,EAAwBxQ,GAASkP,EAAclP,GAAOgP,IAAI,sBAC1DyB,EAA4BzQ,GAASkP,EAAclP,GAAOgP,IAAI,0BAC9D0B,EAAyC1Q,GAASkP,EAAclP,GAAOgP,IAAI,+BAG3E2B,EAAqB3Q,GAASA,EAAMmP,SAASH,IAAI,WACjD4B,EAAqB5Q,GAAS2Q,EAAmB3Q,GAAOgP,IAAI,WAG5D6B,EAAwB7Q,GAASA,EAAMmP,SAASH,IAAI,UAGpD8B,EAAyB9Q,GAASA,EAAMmP,SAASH,IAAI,WAGrD+B,EAA0B/Q,GAASA,EAAMmP,SAASH,IAAI,YAGtDgC,EAAkBhR,GAASA,EAAMmP,SAASH,IAAI,QAC9CiC,EAAyBjR,GAASgR,EAAgBhR,GAAOgP,IAAI,eAC7DkC,EAAqBlR,GAASgR,EAAgBhR,GAAOgP,IAAI,WACzDmC,EAAsBnR,GAASgR,EAAgBhR,GAAOgP,IAAI,YAG1DoC,EAAqBpR,GAASA,EAAMmP,SAASH,IAAI,WACjDqC,EAA0BrR,GAASoR,EAAmBpR,GAAOgP,IAAI,gBACjEsC,EAA+CtR,GAASoR,EAAmBpR,GAAOgP,IAAI,sCAGtFuC,EAA2BvR,GAASA,EAAMmP,SAASH,IAAI,iBAGvDwC,EAA8BxR,GAASA,EAAMmP,SAASH,IAAI,oBAC1DyC,EAA6BzR,GAASA,EAAMmP,SAASuC,MAAM,CAAC,mBAAoB,WAGhFC,EAA8B3R,GAASA,EAAMmP,SAASH,IAAI,mB,4gDCrDhE,MAAM4C,EAAY5R,GAASA,EAAM+O,OAC3B8C,EAAY7R,GAAS4R,EAAU5R,GAAOgP,IAAI,UAC1C8C,EAAY9R,GAAS4R,EAAU5R,GAAOgP,IAAI,UAC1C+C,EAAuB/R,GAAS4R,EAAU5R,GAAOgP,IAAI,0BAErDgD,EAAchS,GAAS4R,EAAU5R,GAAOgP,IAAI,YAC5CiD,EAAsBjS,GACjC4R,EAAU5R,GAAOgP,IAAI,gBAAiBkD,EAAAA,EAAAA,IAA0BlS,IAAU,oCAE/DmS,EAAmBnS,GAAS4R,EAAU5R,GAAOgP,IAAI,iBACjDoD,EAAiBpS,GAAS4R,EAAU5R,GAAOgP,IAAI,eAC/CqD,EAAqBrS,GAAS4R,EAAU5R,GAAOgP,IAAI,mBACnDsD,EAA4BtS,GAAS4R,EAAU5R,GAAOgP,IAAI,0BAC1DuD,EAA4BvS,GAAS4R,EAAU5R,GAAOgP,IAAI,0BAC1DwD,EAA0BxS,GAAS4R,EAAU5R,GAAOgP,IAAI,wBACxDyD,EAA2BzS,GAAS4R,EAAU5R,GAAOgP,IAAI,mBACzD0D,EAAkB1S,GAAS4R,EAAU5R,GAAOgP,IAAI,gBAChD2D,EAA4B3S,GAAS4R,EAAU5R,GAAOgP,IAAI,0BAC1D4D,EAA6B5S,GAAS4R,EAAU5R,GAAOgP,IAAI,2BAE3D6D,EAA8B7S,GAAS4R,EAAU5R,GAAOgP,IAAI,4BAC5D8D,EAA6B9S,GAAS4R,EAAU5R,GAAOgP,IAAI,2BAC3D+D,EAAa/S,GAAS4R,EAAU5R,GAAOgP,IAAI,WAC3CgE,EAA8BhT,GAAS4R,EAAU5R,GAAOgP,IAAI,4BAC5DiE,EAAyBjT,GAAS4R,EAAU5R,GAAOgP,IAAI,uBACvDkE,EAAqBlT,GAAS4R,EAAU5R,GAAOgP,IAAI,mBACnDmE,EAA0BnT,GAAS4R,EAAU5R,GAAOgP,IAAI,wBACxDoE,EAAuCpT,GAAS4R,EAAU5R,GAAO0R,MAAM,CAAC,iBAAkB,qBAC1F2B,EAAuBrT,GAAS4R,EAAU5R,GAAO0R,MAAM,CAAC,iBAAkB,cAC1E4B,EAAsBtT,GAAS4R,EAAU5R,GAAO0R,MAAM,CAAC,iBAAkB,aACzE6B,EAA6BvT,GAAS4R,EAAU5R,GAAO0R,MAAM,CAAC,iBAAkB,aAChF8B,EAAwBxT,GAAS4R,EAAU5R,GAAO0R,MAAM,CAAC,aAAc,mBACvE+B,EAA2BzT,GAAS4R,EAAU5R,GAAO0R,MAAM,CAAC,aAAc,sBAC1EgC,EAA2B1T,GAAS4R,EAAU5R,GAAO0R,MAAM,CAAC,aAAc,sBAC1EiC,EAAqC3T,GAAS4R,EAAU5R,GAAO0R,MAAM,CAAC,kBAAmB,yBACzFkC,EAAiC5T,GAAS4R,EAAU5R,GAAO0R,MAAM,CAAC,kBAAmB,qBACrFmC,EAA6B7T,GAAS4R,EAAU5R,GAAOgP,IAAI,2BAC3D8E,EAA+B9T,GAAS4R,EAAU5R,GAAOgP,IAAI,6BAC7D+E,EAAsB/T,GAAS4R,EAAU5R,GAAOgP,IAAI,oBACpDgF,EAAiBhU,GAAS4R,EAAU5R,GAAOgP,IAAI,eAC/CiF,EAA0BjU,GAAS4R,EAAU5R,GAAOgP,IAAI,kBACxDkF,EAAqBlU,GAAS4R,EAAU5R,GAAOgP,IAAI,mBACnDmF,EAA8BnU,GAAS4R,EAAU5R,GAAOgP,IAAI,4BAC5DoF,EAA0BpU,GAAS4R,EAAU5R,GAAOgP,IAAI,wBACxDqF,EAAuBrU,GAAS4R,EAAU5R,GAAOgP,IAAI,qBACrDsF,EAAyBtU,GAAS4R,EAAU5R,GAAOgP,IAAI,uBAEvDuF,EAA0BvU,GAAS4R,EAAU5R,GAAOgP,IAAI,wBAExDwF,EAA6BxU,GADJA,IAAS4R,EAAU5R,GAAOgP,IAAI,uBACjByF,CAAuBzU,GAAO0U,KAAIC,GAAKA,EAAE3F,IAAI,QACnF4F,EAAoB5U,GAAS4R,EAAU5R,GAAOgP,IAAI,kBAClD6F,EAAkB7U,GAAS4R,EAAU5R,GAAOgP,IAAI,iBAAmB,CAAC,EACpE8F,EAA6B9U,GAAS6U,EAAgB7U,GAAOgP,IAAI,UACjE+F,GAA0B/U,GAA+C,cAAtC8U,EAA2B9U,GAC9DgV,GAAkChV,GAAS6U,EAAgB7U,GAAOgP,IAAI,eACtEiG,GAA+BjV,GAAoD,cAA3CgV,GAAgChV,GACxEkV,GAA+BlV,GAAS4R,EAAU5R,GAAOgP,IAAI,uBAC7DmG,GAAwCA,KAAM,EAE9CC,GAAgBpV,GAAS4R,EAAU5R,GAAOgP,IAAI,cAC9CqG,GAAiBrV,GAAS4R,EAAU5R,GAAOgP,IAAI,qBAC/CsG,GAA+BtV,GAAS4R,EAAU5R,GAAOgP,IAAI,8BAC7DuG,GAAevV,GAASqV,GAAerV,GAAOgP,IAAI,WAClDwG,GAAoBxV,GAASqV,GAAerV,GAAOgP,IAAI,gBACvDyG,GAAoCzV,GAASqV,GAAerV,GAAOgP,IAAI,mBAEvE0G,GAA4B1V,IACvC,MAAMuD,GAAaoS,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,IAAwB5V,IAErD,OAAO4R,EAAU5R,GAAO0R,MAAM,CAAC,aAAc,GAAGnO,kBAA2B,EAEhEsS,GAA0B7V,IACrC,MAAM8V,EAAgBJ,GAA0B1V,GAEhD,OAAO+V,EAAAA,EAAAA,IAAmB/V,EAAO8V,EAAc,EAGpCE,GAA0BhW,GAASoV,GAAcpV,GAAOgP,IAAI,c,k8CC7ElE,MAAMiH,EAAYjW,GAASA,EAAMkW,kBAAkBlH,IAAI,QACjDmH,EAAgBnW,GAASiW,EAAUjW,GAAOgP,IAAI,mBAC9CoH,EAAgBpW,GAASiW,EAAUjW,GAAOgP,IAAI,YAC9CqH,EAAwBrW,GAASiW,EAAUjW,GAAOgP,IAAI,oBACtDsH,EAAyBtW,GAASiW,EAAUjW,GAAOgP,IAAI,qBACvDuH,EAAgBvW,GAASiW,EAAUjW,GAAOgP,IAAI,YAC9CwH,EAAuBxW,GAASoW,EAAcpW,GAAOyW,MAAKC,GAAKA,EAAE1H,IAAI,QAAUiH,EAAUjW,GAAOgP,IAAI,sBAAsB,MAAM2H,EAAAA,EAAAA,QAChIC,EAAqB5W,GAASiW,EAAUjW,GAAOgP,IAAI,iBACnD6H,EAAkB7W,GAASiW,EAAUjW,GAAOgP,IAAI,0BAChD8H,EAAoB9W,GAASiW,EAAUjW,GAAOgP,IAAI,gBAClD+H,EAAqB/W,GAASiW,EAAUjW,GAAOgP,IAAI,iBACnDgI,EAA+BhX,GAASiW,EAAUjW,GAAOgP,IAAI,2BAG7DiI,EAAYjX,GAASiW,EAAUjW,GAAOgP,IAAI,QAC1CkI,EAAelX,IAAUiX,EAAUjX,GAAOmX,UAG1CC,EAAUpX,GAASA,EAAMkW,kBAAkBlH,IAAI,MAC/CqI,EAAcrX,GAASoX,EAAQpX,GAAOgP,IAAI,UAC1CsI,EAAiBtX,GAASoX,EAAQpX,GAAOgP,IAAI,aAE7CuI,EAAmBvX,GAASoX,EAAQpX,GAAOgP,IAAI,cAC/CwI,EAAsBxX,GAASoX,EAAQpX,GAAOgP,IAAI,iBAElDyI,EAAkBzX,GAASoX,EAAQpX,GAAOgP,IAAI,cAC9C0I,EAAqB1X,GAASoX,EAAQpX,GAAOgP,IAAI,iBAEjD2I,EAAkC3X,GAASoX,EAAQpX,GAAOgP,IAAI,8BAC9D4I,EAA6B5X,GAASoX,EAAQpX,GAAOgP,IAAI,yBAEzD6I,EAA6B7X,GAASoX,EAAQpX,GAAOgP,IAAI,yBACzD8I,EAAyB9X,GAASoX,EAAQpX,GAAOgP,IAAI,qBACrD+I,EAA+B/X,GAASoX,EAAQpX,GAAOgP,IAAI,2BAC3DgJ,EAAsBhY,GAASoX,EAAQpX,GAAOgP,IAAI,kBAClDiJ,EAA2BjY,GAASoX,EAAQpX,GAAOgP,IAAI,uBACvDkJ,EAA2BlY,GAASoX,EAAQpX,GAAOgP,IAAI,uBACvDmJ,EAAwCnY,GAASoX,EAAQpX,GAAOgP,IAAI,oCACpEoJ,EAAsCpY,GAASoX,EAAQpX,GAAOgP,IAAI,kCAClEqJ,EAAsCrY,GAASoX,EAAQpX,GAAOgP,IAAI,kCAClEsJ,EAAgCtY,GAASoX,EAAQpX,GAAOgP,IAAI,4BAC5DuJ,EAA4BvY,GAASoX,EAAQpX,GAAOgP,IAAI,wBACxDwJ,EAA+BxY,GAASoX,EAAQpX,GAAOgP,IAAI,2BAC3DyJ,EAA0BzY,GAAS6X,EAA2B7X,IAAUoY,EAAoCpY,IAAU8X,EAAuB9X,IAAUmY,EAAsCnY,GAC7L0Y,EAA8B1Y,GAASoX,EAAQpX,GAAOgP,IAAI,0BAC1D2J,EAAuC3Y,GAASoX,EAAQpX,GAAOgP,IAAI,mCACnE4J,EAA6B5Y,GAASoX,EAAQpX,GAAOgP,IAAI,yBAGzD6J,EAAuB7Y,GAASoX,EAAQpX,GAAOgP,IAAI,mBACnD8J,EAAyB9Y,GAASoX,EAAQpX,GAAOgP,IAAI,qBAGrD+J,EAAsB/Y,GAASoX,EAAQpX,GAAOgP,IAAI,kBAClDgK,EAAqBhZ,GAASoX,EAAQpX,GAAOgP,IAAI,iBACjDiK,EAA6BjZ,GAASoX,EAAQpX,GAAOgP,IAAI,yBACzDkK,EAAsClZ,GAASoX,EAAQpX,GAAOgP,IAAI,kCAClEmK,EAAqCnZ,GAASoX,EAAQpX,GAAOgP,IAAI,iCAEjEoK,EAAsBpZ,GAASoX,EAAQpX,GAAOgP,IAAI,kBAElDqK,EAAqBrZ,GAASoX,EAAQpX,GAAOgP,IAAI,iBAEjDsK,EAAwBtZ,GAASoX,EAAQpX,GAAOgP,IAAI,0BAGpDuK,GAAevZ,GAASA,EAAMkW,kBAAkBlH,IAAI,UACpDwK,IAAqBC,EAAAA,EAAAA,GAChCF,IACAG,GAAWA,EAAQ1S,QAAOhP,GAAS2hB,EAAAA,KAAAA,OAAqB3hB,OAE7C4hB,GAA4B5Z,GAASuZ,GAAavZ,GAAOgP,IAAI,wBAC7D6K,GAAqC7Z,GAASuZ,GAAavZ,GAAOgP,IAAI,iCACtE8K,GAA6C9Z,GAASuZ,GAAavZ,GAAOgP,IAAI,yCAC9E+K,GAAmB/Z,GAASuZ,GAAavZ,GAAOgP,IAAI,eACpDgL,GAAoBha,GAASuZ,GAAavZ,GAAOgP,IAAI,gBACrDiL,GAAwBja,GAASuZ,GAAavZ,GAAOgP,IAAI,oBACzDkL,GAA4Bla,GAASuZ,GAAavZ,GAAOgP,IAAI,wBAC7DmL,GAA6Bna,GAASuZ,GAAavZ,GAAOgP,IAAI,yBAC9DoL,GAAgBpa,GAASuZ,GAAavZ,GAAOgP,IAAI,YACjDqL,GAAiBra,GAASuZ,GAAavZ,GAAOgP,IAAI,Y,y2FC9ExD,MAAMsL,EAAeta,GAASA,EAAMua,YAAYvL,IAAI,QAC9CwL,EAAoBxa,GAASsa,EAAata,GAAOgP,IAAI,gBACrDyL,EAA4Bza,GAASwa,EAAkBxa,GACjEgP,IAAI,SACJ0L,QAAO,CAACC,EAAKC,IAAaD,EAAIpM,OAAOqM,EAAS5L,IAAI,eAAe/F,SAAS,IAChE4R,EAAmB7a,GAASsa,EAAata,GAAOgP,IAAI,eACpD8L,EAAoB9a,GAASsa,EAAata,GAAOgP,IAAI,gBACrD+L,EAA0B/a,GAASsa,EAAata,GAAOgP,IAAI,mBAC3DgM,EAAoChb,GAASsa,EAAata,GAAOgP,IAAI,mBAAmBA,IAAI,cAC5FiM,EAA2Bjb,GAASsa,EAAata,GAAOgP,IAAI,oBAC5DkM,EAAkClb,GAASsa,EAAata,GAAOgP,IAAI,2BACnEmM,EAAiCnb,GAASsa,EAAata,GAAOgP,IAAI,0BAClEoM,EAAiCpb,GAASsa,EAAata,GAAOgP,IAAI,0BAClEqM,EAA0Crb,GAASsa,EAAata,GAAOgP,IAAI,mCAC3EsM,EAAqBtb,GAASsa,EAAata,GAAOgP,IAAI,iBACtDuM,EAAwBvb,GAASsa,EAAata,GAAOgP,IAAI,oBACzDwM,EAA0Bxb,GAASsa,EAAata,GAAOgP,IAAI,mBAG3DyM,EAA6Bzb,GAASsa,EAAata,GAAOgP,IAAI,sBAC9D0M,EAAkC1b,GAASsa,EAAata,GAAOgP,IAAI,2BACnE2M,EAAyB3b,GAASsa,EAAata,GAAOgP,IAAI,kBAC1D4M,EAA2B5b,GAASsa,EAAata,GAAOgP,IAAI,oBAC5D6M,EAAsC7b,GAASsa,EAAata,GAAOgP,IAAI,+BACvE8M,EAAsC9b,GAASsa,EAAata,GAAOgP,IAAI,+BAGvE+M,EAAa/b,GAASA,EAAMua,YAAYvL,IAAI,MAE5CgN,EAAyBhc,GAAS+b,EAAW/b,GAAOgP,IAAI,kBACxDiN,EAA+Bjc,GAAS+b,EAAW/b,GAAOgP,IAAI,wBAC9DkN,EAAqClc,GAAS+b,EAAW/b,GAAOgP,IAAI,8BACpEmN,EAAgCnc,GAAS+b,EAAW/b,GAAOgP,IAAI,yBAC/DoN,EAAmCpc,GAAS+b,EAAW/b,GAAOgP,IAAI,4BAClEqN,EAAgCrc,GAAS+b,EAAW/b,GAAOgP,IAAI,yBAC/DsN,EAA2Btc,GAAS+b,EAAW/b,GAAOgP,IAAI,oBAC1DuN,EAAuCvc,GAAS+b,EAAW/b,GAAOgP,IAAI,gCACtEwN,EAAqBxc,GAAS+b,EAAW/b,GAAOgP,IAAI,cACpDyN,EAAgCzc,GAAS+b,EAAW/b,GAAOgP,IAAI,yBAC/D0N,EAAiC1c,GAAS+b,EAAW/b,GAAOgP,IAAI,0BAChE2N,EAAwB3c,GAAS+b,EAAW/b,GAAOgP,IAAI,iBACvD4N,EAAmC5c,GAAS+b,EAAW/b,GAAOgP,IAAI,sBAClE6N,EAAwC7c,GAAS+b,EAAW/b,GAAOgP,IAAI,iCACvE8N,EAAyC9c,GAAS+b,EAAW/b,GAAOgP,IAAI,kCACxE+N,EAAiD/c,GAAS+b,EAAW/b,GAAOgP,IAAI,0CAChFgO,EAA2Bhd,GAAS+b,EAAW/b,GAAOgP,IAAI,oBAE1DiO,EAAiCjd,GAAS+b,EAAW/b,GAAOgP,IAAI,0BAChEkO,EAA4Bld,GAAS+b,EAAW/b,GAAOgP,IAAI,qBAC3DmO,EAAyBnd,GAAS+b,EAAW/b,GAAOgP,IAAI,kBACxDoO,EAAgCpd,GAAS+b,EAAW/b,GAAOgP,IAAI,yBAC/DqO,EAAiCrd,GAAS+b,EAAW/b,GAAOgP,IAAI,0BAChEsO,EAAkCtd,GAAS+b,EAAW/b,GAAOgP,IAAI,oBACjEuO,EAAiCvd,GAAS+b,EAAW/b,GAAOgP,IAAI,0BAChEwO,EAAmCxd,GAAS+b,EAAW/b,GAAOgP,IAAI,qBAClEyO,GAAyBzd,GAAS+b,EAAW/b,GAAOgP,IAAI,kBACxD0O,GAA6B1d,GAAS+b,EAAW/b,GAAOgP,IAAI,sBAC5D2O,GAAgC3d,GAAS+b,EAAW/b,GAAOgP,IAAI,yBAC/D4O,GAAyB5d,GAAS+b,EAAW/b,GAAOgP,IAAI,kBACxD6O,GAA6B7d,GAAS+b,EAAW/b,GAAOgP,IAAI,sBAC5D8O,GAAiC9d,GAAS+b,EAAW/b,GAAOgP,IAAI,0BAChE+O,GAA4B/d,GAAS+b,EAAW/b,GAAOgP,IAAI,qBAC3DgP,GAAuBhe,GAAS+b,EAAW/b,GAAOgP,IAAI,gBACtDiP,GAAiCje,GAAS+b,EAAW/b,GAAOgP,IAAI,0BAChEkP,GAAiCle,GAAS+b,EAAW/b,GAAOgP,IAAI,0BAChEmP,GAA4Bne,GAAS+b,EAAW/b,GAAOgP,IAAI,0BAC3DoP,GAAgCpe,GAAS+b,EAAW/b,GAAOgP,IAAI,8BAC/DqP,GAA6Bre,GAAS+b,EAAW/b,GAAOgP,IAAI,sBAC5DsP,GAAqCte,GAAS+b,EAAW/b,GAAOgP,IAAI,8BACpEuP,GAAuCve,GAAS+b,EAAW/b,GAAOgP,IAAI,gCACtEwP,GAAiCxe,GAAS+b,EAAW/b,GAAOgP,IAAI,0BAChEyP,GAAyBze,GAAS+b,EAAW/b,GAAOgP,IAAI,kBACxD0P,GAA6B1e,GAAS+b,EAAW/b,GAAOgP,IAAI,sBAC5D2P,GAAmC3e,GAAS+b,EAAW/b,GAAOgP,IAAI,4BAClE4P,GAA+B5e,GAAS+b,EAAW/b,GAAOgP,IAAI,wBAC9D6P,GAAmC7e,GAAS+b,EAAW/b,GAAOgP,IAAI,4BAClE8P,GAA+B9e,GAAS+b,EAAW/b,GAAOgP,IAAI,wBAC9D+P,GAAsC/e,GAAS+b,EAAW/b,GAAOgP,IAAI,+BACrEgQ,GAAuChf,GAAS+b,EAAW/b,GAAOgP,IAAI,gCACtEiQ,GAAsCjf,GAAS+b,EAAW/b,GAAOgP,IAAI,qCACrEkQ,GAAqClf,GAAS+b,EAAW/b,GAAOgP,IAAI,8BACpEmQ,GAA+Bnf,GAAS+b,EAAW/b,GAAOgP,IAAI,wBAC9DoQ,GAAgCpf,GAAS+b,EAAW/b,GAAOgP,IAAI,yBAC/DqQ,GAA+Brf,GAAS+b,EAAW/b,GAAOgP,IAAI,wBAC9DsQ,GAAoCtf,GAAS+b,EAAW/b,GAAOgP,IAAI,6BACnEuQ,GAAoCvf,GAAS+b,EAAW/b,GAAOgP,IAAI,6BACnEwQ,GAAyBxf,GAAS+b,EAAW/b,GAAOgP,IAAI,kBACxDyQ,GAAqCzf,GAAS+b,EAAW/b,GAAOgP,IAAI,8BACpE0Q,GAA+B1f,GAAS+b,EAAW/b,GAAOgP,IAAI,wBAC9D2Q,GAA+B3f,GAAS+b,EAAW/b,GAAOgP,IAAI,wBAC9D4Q,GAA6B5f,GAAS+b,EAAW/b,GAAOgP,IAAI,sBAC5D6Q,GAA8C7f,GAAS+b,EAAW/b,GAAOgP,IAAI,uCAG7E8Q,GAAkB9f,GAASA,EAAMua,YAAYvL,IAAI,UACjD+Q,IAAwBtG,EAAAA,EAAAA,GACnCqG,IACApG,GAAWA,EAAQ1S,QAAO,CAAChP,EAAOD,IAAQioB,EAAAA,KAAAA,OAAYhoB,IAAkB,mBAARD,MAErDkoB,GAA+BjgB,GAAS8f,GAAgB9f,GAAOgP,IAAI,wBACnEkR,GAAgClgB,GAAS8f,GAAgB9f,GAAOgP,IAAI,yBACpEmR,GAAuBngB,GAAS8f,GAAgB9f,GAAOgP,IAAI,gBAC3DoR,GAAwBpgB,GAAS8f,GAAgB9f,GAAOgP,IAAI,iBAC5DqR,GAAyBrgB,GAAS8f,GAAgB9f,GAAOgP,IAAI,kBAC7DsR,GAA4BtgB,GAAS8f,GAAgB9f,GAAOgP,IAAI,qBAChEuR,GAAsBvgB,GAAS8f,GAAgB9f,GAAOgP,IAAI,eAC1DwR,GAAuBxgB,GAAS8f,GAAgB9f,GAAOgP,IAAI,gBAC3DyR,GAAwBzgB,GAAS8f,GAAgB9f,GAAOgP,IAAI,iBAC5D0R,GAA2B1gB,GAAS8f,GAAgB9f,GAAOgP,IAAI,oBAC/D2R,GAAyB3gB,GAAS8f,GAAgB9f,GAAOgP,IAAI,kBAC7D4R,GAA0B5gB,GAAS8f,GAAgB9f,GAAOgP,IAAI,mBAC9D6R,GAA0B7gB,GAAS8f,GAAgB9f,GAAOgP,IAAI,mBAC9D8R,GAAyB9gB,GAAS8f,GAAgB9f,GAAOgP,IAAI,kBAC7D+R,GAA+B/gB,GAAS8f,GAAgB9f,GAAOgP,IAAI,wBAGnEgS,GAAmBhhB,GAASA,EAAMua,YAAYvL,IAAI,YAGlDiS,GAAuBjhB,GAASghB,GAAiBhhB,GAAOgP,IAAI,QAC5DkS,GAA2BlhB,GAASihB,GAAqBjhB,GAAOgP,IAAI,YACpEmS,GAA4BnhB,GAASihB,GAAqBjhB,GAAOgP,IAAI,aACrEoS,GAAoCphB,GAASmhB,GAA0BnhB,GACjFgP,IAAI,SACJ0L,QAAO,CAACC,EAAKC,IAAaD,EAAIpM,OAAOqM,EAAS5L,IAAI,eAAe/F,SAAS,IAChEoY,GAAuBrhB,GAASihB,GAAqBjhB,GAAOgP,IAAI,QAChEsS,GAAqCthB,GAASihB,GAAqBjhB,GAAOgP,IAAI,sBAC9EuS,GAA8BvhB,GAASihB,GAAqBjhB,GAAOgP,IAAI,eACvEwS,GAAkCxhB,GAASihB,GAAqBjhB,GAAOgP,IAAI,mBAC3EyS,GAAmCzhB,GAASihB,GAAqBjhB,GAAOgP,IAAI,oBAG5E0S,GAAqB1hB,GAASghB,GAAiBhhB,GAAOgP,IAAI,MAC1D2S,GAA6B3hB,GAAS0hB,GAAmB1hB,GAAOgP,IAAI,cACpE4S,GAAqC5hB,GAAS0hB,GAAmB1hB,GAAOgP,IAAI,sBAC5E6S,GAAoC7hB,GAAS0hB,GAAmB1hB,GAAOgP,IAAI,qBAI3E8S,IAAyBrI,EAAAA,EAAAA,GACpCyH,GACAC,IACA,CAACY,EAAUC,KAAc5Y,EAAAA,EAAAA,QAAO,CAC9B6Y,MAAOF,EAAS/S,IAAI,SAAWgT,EAAUhT,IAAI,SAC7CkT,MAAOH,EAAS/S,IAAI,SAAST,OAC3ByT,EAAUhT,IAAI,cAKPmT,IAAiC1I,EAAAA,EAAAA,GAC5CyH,GACAC,GACAI,GACAD,IACA,CAACc,EAAaC,EAAcC,EAAaC,KACvC,IAAIR,GAAW/B,EAAAA,EAAAA,QACXgC,GAAYhC,EAAAA,EAAAA,QAEhB,OAAKsC,GAILP,EAAWK,EAAYpT,IAAI,SACxBhI,QAAOwb,IACN,MAAMC,EAAmBD,EAAMxT,IAAI,gBAC7B0T,EAAiBF,EAAMxT,IAAI,cAEjC,IAAI2T,EAQJ,OALEA,GADGF,GAAoBC,EAChBE,IAAOF,GAAgBG,SAEvBD,IAAOH,GAAkBI,SAG3BD,IAAON,GAAaQ,OAAOF,IAAOD,GAAO,MAAM,IAGtDJ,IACFR,EAAWA,EAAS/a,QAAOwb,GAASA,EAAM9Q,MAAM,CAAC,cAAe,SAAW6Q,KAG7EP,EAAYK,EAAarT,IAAI,SAC1BhI,QAAOwb,IACN,MAAMO,EAAYP,EAAMxT,IAAI,aACtBgU,EAAUR,EAAMxT,IAAI,WAE1B,OAAO4T,IAAON,GAAaW,UAAUL,IAAOG,GAAYH,IAAOI,GAAU,MAAO,KAAK,KAGlF5Z,EAAAA,EAAAA,QAAO,CACZ2Y,WACAC,gBAjCO5Y,EAAAA,EAAAA,QAAO,CAAE2Y,WAAUC,aAkC1B,IAIOkB,IAA+CzJ,EAAAA,EAAAA,GAC1D4B,EACAS,GACA,CAACqH,EAAmBC,IACbA,EAIED,EAAkBnc,QAAOqc,GAASA,EAAMrU,IAAI,QAAQsU,cAAcC,SAASH,EAAME,iBAH/EH,IAOAK,IAA+C/J,EAAAA,EAAAA,GAC1DuB,EACAK,GACA,CAACoI,EAAeN,IAAsBA,EAAkBzO,KAAI2O,IAC1D,MAAMK,EAAaD,EAAczc,QAAO2c,GAAKA,EAAE3U,IAAI,qBAAqBjI,MAAK6c,GAAMA,EAAG5U,IAAI,QAAUqU,EAAMrU,IAAI,UAE9G,OAAQ5F,EAAAA,EAAAA,QAAO,CACbnV,GAAIovB,EAAMrU,IAAI,MACdF,KAAMuU,EAAMrU,IAAI,QAChB0U,aACAG,SAAUR,EAAMrU,IAAI,YACpB8U,kBAAmBT,EAAMrU,IAAI,YAAY+U,KAAOL,EAAWK,MAC3D,IAGD/c,QAAOqc,IAAUA,EAAMrU,IAAI,uBAC3BhI,QAAOqc,IAAUA,EAAMrU,IAAI,cAAcmI,YAEzCvlD,QAAOyxD,KAAWA,EAAMrU,IAAI,cAAc+U,KAAOV,EAAMrU,IAAI,cAAc+U,MAAQV,EAAMrU,IAAI,YAAY+U,SAG/FC,IAA4CvK,EAAAA,EAAAA,GACvDuB,EACAoE,IACA,CAACsE,EAAYN,IACNA,EAIEM,EAAW1c,QAAOid,IACvB,MAAMC,EAAUD,EAAUjV,IAAI,WAS9B,OAPqB5F,EAAAA,EAAAA,QAAO,CACzB8a,EAAQlV,IAAI,eAAiB,GAC7BkV,EAAQlV,IAAI,wBAA0B,GACvCiV,EAAUjV,IAAI,UACbT,OAAO0V,EAAUjV,IAAI,qBAAqB0F,KAAIkP,GAAMA,EAAG5U,IAAI,WAC3D0F,KAAI1c,GAASA,EAAMsrB,gBAAera,OAEjBlC,MAAK/O,GAASA,EAAMurB,SAASH,EAAME,gBAAe,IAb/DI,IAkBAS,IAA4B1K,EAAAA,EAAAA,GACvCe,EACAS,GACA,CAAC+G,EAAWrqB,IACVqqB,EAAUhT,IAAI,YAAY9M,OAAM8D,GAAKA,EAAEgJ,IAAI,UAAYrX,EAASqX,IAAI,SAAWhJ,EAAEgJ,IAAI,QAAUrX,EAASqX,IAAI,S,8ICzQzG,MAAMoV,EAAiBpkB,GAASA,EAAMqkB,YAChCC,EAAWtkB,GAASokB,EAAepkB,GAAOgP,IAAI,SAC9CuV,EAAWvkB,GAASokB,EAAepkB,GAAOgP,IAAI,SAC9CwV,EAAYxkB,GAASokB,EAAepkB,GAAOgP,IAAI,S,w91BCHrD,MAAMyV,EAAUzkB,GAASA,EAAM0kB,KACzBC,EAAY3kB,GAASykB,EAAQzkB,GAAOgP,IAAI,MACxC4V,EAAS5kB,GAASykB,EAAQzkB,GAAOgP,IAAI,OACrC6V,EAAmB7kB,GAASykB,EAAQzkB,GAAOgP,IAAI,aAC/C8V,EAAkB9kB,GAASykB,EAAQzkB,GAAOgP,IAAI,YAC9C+V,EAAiB/kB,GAASykB,EAAQzkB,GAAOgP,IAAI,eAC7CgW,EAAkBhlB,GAASykB,EAAQzkB,GAAOgP,IAAI,gBAC9CiW,EAA2BjlB,GAASykB,EAAQzkB,GAAOgP,IAAI,yBACvDkW,EAAiBllB,GAASykB,EAAQzkB,GAAOgP,IAAI,WAC7CmW,EAAoBnlB,GAASykB,EAAQzkB,GAAOgP,IAAI,kBAChDoW,EAAgBplB,GAASykB,EAAQzkB,GAAOgP,IAAI,iBAC5CqW,EAAYrlB,GAASykB,EAAQzkB,GAAOgP,IAAI,UACxCsW,EAAqBtlB,GAASykB,EAAQzkB,GAAOgP,IAAI,mBACjDuW,EAAkBvlB,GAASykB,EAAQzkB,GAAOgP,IAAI,gBAC9CwW,EAA0BxlB,GAASykB,EAAQzkB,GAAOgP,IAAI,wBACtDyW,EAAkBzlB,GAAsC,QAA7BykB,EAAQzkB,GAAOgP,IAAI,MAC9C0W,EAAgBA,CAAC1lB,EAAO2lB,IAAQX,EAAgBhlB,GAAOgP,IAAI2W,GAC3DC,EAAgB5lB,GAASykB,EAAQzkB,GAAOgP,IAAI,cAG5C6W,EAAc7lB,IACzB,MAAM8lB,EAAkBR,EAAmBtlB,GACrC+lB,EAAWtB,EAAQzkB,GAAOgP,IAAI,YAEpC,OAAO8W,IAAiC,OAAbC,EALK/lB,IAASykB,EAAQzkB,GAAOgP,IAAI,mBAKbgX,CAAmBhmB,GAAS+lB,EAAS,E,eCnB/E,MAAME,EAAiBjmB,GACxBA,EAAMkmB,QAAUlmB,EAAMkmB,OAAO1d,UAAYxI,EAAMkmB,OAAO1d,SAAS2d,SAC1DnmB,EAAMkmB,OAAO1d,SAAS2d,SAASC,QAAQ,MAAO,IAGhD,GAGIC,EAAiBrmB,GAAqD,OAA5CimB,EAAejmB,GAAOsmB,MAAM,YACtDC,EAA0BvmB,GAA2D,OAAlDimB,EAAejmB,GAAOsmB,MAAM,kBAC/DE,EAAsBxmB,GAA+D,OAAtDimB,EAAejmB,GAAOsmB,MAAM,sBAE3DG,EAAczmB,GAAsD,OAA7CimB,EAAejmB,GAAOsmB,MAAM,aACnDI,EAAsB1mB,GAA2D,OAAlDimB,EAAejmB,GAAOsmB,MAAM,kBAC3DK,EAAc3mB,GAAyD,OAAhDimB,EAAejmB,GAAOsmB,MAAM,gBACnDM,EAAe5mB,GAAmF,OAA1EimB,EAAejmB,GAAOsmB,MAAM,0CAIpDO,EAAgB7mB,GAASimB,EAAejmB,GAAO8mB,MAAM,KAAK,GAE1DC,EAAoC/mB,GACc,OADLimB,EAAejmB,GACtEsmB,MAAM,kDACIU,EAAyBhnB,GAAmE,OAA1DimB,EAAejmB,GAAOsmB,MAAM,0BAE9DW,EAAcjnB,GAA6D,OAApDimB,EAAejmB,GAAOsmB,MAAM,oBACnDY,EAAmBlnB,GAC1BA,EAAMkmB,QAAUlmB,EAAMkmB,OAAO1d,SACxBxI,EAAMkmB,OAAO1d,SAAS9zC,OAGxB,GAEIyyD,EAAwBnnB,GAC/BA,EAAMkmB,QAAUlmB,EAAMkmB,OAAO1d,UAAYxI,EAAMkmB,OAAO1d,SAAS9zC,QAC1D0yD,EAAAA,EAAAA,IAAMpnB,EAAMkmB,OAAO1d,SAAS9zC,QAG9B,CAAC,EAGG2yD,EAAmBrnB,GAASmnB,EAAsBnnB,GAAOsnB,SAEzDC,EAAmBvnB,IAC9B,MAAMsnB,EAAWD,EAAiBrnB,GAElC,GAAIsnB,EACF,OAAOA,EAGT,MAAME,GAAe9U,EAAAA,EAAAA,IAAgB1S,GAErC,GAAIwnB,EACF,OAAOA,EAGT,MAAMnb,EAAe2Y,EAAgBhlB,GAErC,OAAOynB,EAAAA,EAAAA,IAAmBpb,EAAa,EC/D5Bqb,EAAS1nB,GAASA,EAAM2nB,IACxBC,EAAc5nB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,YACzC6Y,EAAgB7nB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,cAC3C8Y,EAAkB9nB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,gBAE7C+Y,EAAiB/nB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,qBAC5CgZ,EAAmBhoB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,iBAC9CiZ,EAAgBjoB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,cAC3CkZ,EAAcloB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,YACzCmZ,EAAgBnoB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,WAC3CoZ,EAAcpoB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,YACzCqZ,EAAgBroB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,cAC3CsZ,EAAiBtoB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,eAC5CuZ,EAAiBvoB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,eAC5CwZ,GAAoBxoB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,WAC/CyZ,GAAoBzoB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,kBAC/C0Z,GAAsB1oB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,iBACjD2Z,GAAyB3oB,GAAS0nB,EAAO1nB,GAAOgP,IAAI,sB,4BCjB1D,MAAM4Z,GAAY5oB,GAASA,EAAM6oB,OAC3BC,GAAgB9oB,IAC3B,MAAM6oB,EAASD,GAAU5oB,GAEzB,OAAI6oB,EAAO7Z,IAAI,SACN,KAGL6Z,EAAO7Z,IAAI,MACN,KAGL6Z,EAAO7Z,IAAI,MACN,KAGF,IAAI,ECbA+Z,GAAcA,CAAC/oB,EAAO/L,IADR+L,IAASA,EAAMgpB,KAAKha,IAAI,QACTia,CAAYjpB,GAAO0R,MAAM,CAAC,OAAQzd,EAAGqJ,aAMlE4rB,GAAeA,CAAClpB,EAAO/D,IAAQA,EAAIyY,KAAIzgB,GAAM80B,GAAY/oB,EAAO/L,KAAK+S,QAAOmiB,GAAKA,ICTjFC,GAAgBppB,GAASA,EAAMgpB,KAAKha,IAAI,UAGxCqa,GAAmBrpB,GAASopB,GAAcppB,GAAOgP,IAAI,MACrDsa,GAAwBtpB,GAASqpB,GAAiBrpB,GAAO0R,MAAM,CAAC,kBAAmB,QACnF6X,GAA6BvpB,GAASqpB,GAAiBrpB,GAAO0R,MAAM,CAAC,kBAAmB,aACxF8X,GAAyBxpB,GAASqpB,GAAiBrpB,GAAO0R,MAAM,CAAC,kBAAmB,SACpF+X,GAA6BzpB,GAASqpB,GAAiBrpB,GAAO0R,MAAM,CAAC,kBAAmB,aACxFgY,GAAgC1pB,GAASqpB,GAAiBrpB,GAAO0R,MAAM,CAAC,kBAAmB,gBAC3FiY,GAAiB3pB,GAASqpB,GAAiBrpB,GAAOgP,IAAI,eACtD4a,GAAyB5pB,GAASqpB,GAAiBrpB,GAAOgP,IAAI,iBAC9D6a,GAAoB7pB,GAASqpB,GAAiBrpB,GAAOgP,IAAI,YACzD8a,GAA0B9pB,GAASqpB,GAAiBrpB,GAAOgP,IAAI,kBAC/D+a,GAA4B/pB,GAASqpB,GAAiBrpB,GAAOgP,IAAI,oBAEjEgb,GAAoBhqB,GAASopB,GAAcppB,GAAOgP,IAAI,YACtDib,GAA2BjqB,GAASgqB,GAAkBhqB,GAAOgP,IAAI,WACjEkb,GAA6BlqB,GAASgqB,GAAkBhqB,GAAOgP,IAAI,qBACnEmb,GAAuBnqB,GAASgqB,GAAkBhqB,GAAOgP,IAAI,eAG7Dob,GAAoBpqB,GAASopB,GAAcppB,GAAOgP,IAAI,YACtDqb,GAA6BrqB,GAASoqB,GAAkBpqB,GAAOgP,IAAI,aACnEsb,GAA2BtqB,GAASoqB,GAAkBpqB,GAAOgP,IAAI,WAEjEub,GAAkCvqB,GAASoqB,GAAkBpqB,GAAOgP,IAAI,kBACxEwb,GAAoCxqB,GAASuqB,GAAgCvqB,GAAOgP,IAAI,MACxFyb,GAA0CzqB,GAASuqB,GAAgCvqB,GAAOgP,IAAI,YAC9F0b,GAAiC1qB,GAASuqB,GAAgCvqB,GAAOgP,IAAI,yBACrF2b,GAAgC3qB,GAAS0qB,GAA+B1qB,GAAOgP,IAAI,sBACnF4b,GAAuC5qB,GAAS0qB,GAA+B1qB,GAAOgP,IAAI,6BAE1F6b,GAAqC7qB,GAASoqB,GAAkBpqB,GAAOgP,IAAI,qBAC3E8b,GAAuC9qB,GAAS6qB,GAAmC7qB,GAAOgP,IAAI,MAE9F+b,GAAgC/qB,GAAS6qB,GAAmC7qB,GAAOgP,IAAI,wBAEvFgc,GAA+ChrB,GAASoqB,GAAkBpqB,GAAOgP,IAAI,+BACrFic,GAAmCjrB,GAASoqB,GAAkBpqB,GAAOgP,IAAI,mBACzEkc,GAAoClrB,GAASoqB,GAAkBpqB,GAAOgP,IAAI,oBAE1Emc,GAAoCnrB,GAASoqB,GAAkBpqB,GAAOgP,IAAI,oBAM1Eoc,GAAiBprB,GAASopB,GAAcppB,GAAOgP,IAAI,eACnDqc,GAAqBrrB,GAASorB,GAAeprB,GAAOgP,IAAI,QAGxDsc,GAAwBtrB,GADLA,IAASorB,GAAeprB,GAAOgP,IAAI,MACrBuc,CAAiBvrB,GAAOgP,IAAI,W,gEC5CnE,MAAMwc,IAAoB/R,EAAAA,GAAAA,GAC/BgS,GAAAA,IACAzrB,GAASA,EAAM0rB,WAAWha,MAAM,CAAC,OAAQ,eACzC1R,GAASA,EAAM0rB,WAAWha,MAAM,CAAC,OAAQ,aACzC,CAACrI,EAAWsiB,EAAaC,KACvB,MAAMC,EAAWF,EAAY3kB,QAC3BhB,GAAKA,EAAEgJ,IAAI,cAAgB3F,IAEvByiB,EAAYD,EAASnX,KAAI1O,GAAKA,EAAEgJ,IAAI,QACpCpO,EAASgrB,EAAW5kB,QAAO2c,GAAKmI,EAAU9c,IAAI,GAAG2U,OAASA,IAEhE,OAAOxf,EAAAA,GAAAA,KAAI,CAAEvD,SAAQirB,YAAW,IAIvBE,IAAgBtS,EAAAA,GAAAA,IAC3BzZ,GAASwrB,GAAkBxrB,GAAOgP,IAAI,UAAUhG,WAChDhJ,GAASwrB,GAAkBxrB,GAAOgP,IAAI,aACtCgd,GAAAA,GAGWC,GAAqCjsB,GAASA,EAAM0rB,WAAWha,MAAM,CAAC,KAAM,YAE5Ewa,GAAsClsB,GAASA,EAAM0rB,WAAW1c,IAAI,0BACpEmd,GAAkDnsB,GAC7D+oB,GAAY/oB,EAAOksB,GAAoClsB,GAAOgP,IAAI,mBAEvDod,GAAsCpsB,GAASksB,GAAoClsB,GAAOgP,IAAI,QAG9Fqd,GAAmBA,CAACrsB,EAAO/L,IAAOu3B,GAAkBxrB,GAAO0R,MAAM,CAAC,WAAYzd,EAAGqJ,aAEjFgvB,GAAkBtsB,GAASA,EAAM0rB,WAAW1c,IAAI,MAChDud,GAAuBvsB,GAASssB,GAAgBtsB,GAAOgP,IAAI,qBAC3Dwd,GAAyBxsB,GAASssB,GAAgBtsB,GAAOgP,IAAI,uBAC7Dyd,GAA0BzsB,GAASssB,GAAgBtsB,GAAOgP,IAAI,wBAC9D0d,GAA4B1sB,GAASssB,GAAgBtsB,GAAOgP,IAAI,iBAChE2d,GAAsB3sB,GAASssB,GAAgBtsB,GAAOgP,IAAI,UAC1D4d,GAA+B5sB,GAASssB,GAAgBtsB,GAAOgP,IAAI,6BACnE6d,GAA8B7sB,GAASssB,GAAgBtsB,GAAOgP,IAAI,4BAClE8d,GAA8B9sB,GAASssB,GAAgBtsB,GAAOgP,IAAI,mBAClE+d,GAAiC/sB,GAASssB,GAAgBtsB,GAAOgP,IAAI,+BACrEge,GAAwBhtB,GAASssB,GAAgBtsB,GAAOgP,IAAI,YAC5Die,GAAmBjtB,GAASssB,GAAgBtsB,GAAOgP,IAAI,iBAEvDke,GAA0BltB,GAASA,EAAM0rB,WAAWha,MAAM,CAAC,SAAU,SAErEyb,GAAyBntB,GAASktB,GAAwBltB,GAAOgP,IAAI,QAAQ0F,KAAIyU,GAAKA,EAAEna,IAAI,QAK5Foe,GAAyBptB,GAASssB,GAAgBtsB,GAAOgP,IAAI,uBAG7Dqe,GAAyBrtB,GAASA,EAAM0rB,WAAWha,MAAM,CAAC,SAAU,SAepE4b,IAAmB7T,EAAAA,GAAAA,GAC9BsS,IACAL,GAAcA,EAAW1kB,QAAO0P,GAAKA,EAAE1H,IAAI,kBAQhCue,KALgC9T,EAAAA,GAAAA,GAC3CsS,IACAL,GAAcA,EAAW1kB,QAAO0P,GAAKA,EAAE1H,IAAI,eAAiB0H,EAAE1H,IAAI,eAAiB0H,EAAE1H,IAAI,oBAG3DyK,EAAAA,GAAAA,GAC9BsS,IACAL,GAAcA,EAAW1kB,QAAO0P,GAAKA,EAAE1H,IAAI,mBAGhCwe,IAAoB/T,EAAAA,GAAAA,GAC/BsS,IACAL,GAAcA,EAAW1kB,QAAO0P,GAAKA,EAAE1H,IAAI,mBAGhCye,IAAuBhU,EAAAA,GAAAA,GAClC6T,IACA5B,GACMA,EAAWvU,UACN,MAGF/N,EAAAA,GAAAA,QAAO,CACZnV,GAAI,MACJ6a,KAAM,MACN4e,MAAM,EACNC,0BAA2BjC,EAAWhX,KAAIkZ,IAAaxkB,EAAAA,GAAAA,QAAO,CAC5DwkB,oBAMKC,IAAuBpU,EAAAA,GAAAA,GAClC8T,IACA7B,GACMA,EAAWvU,UACN,MAGF/N,EAAAA,GAAAA,QAAO,CACZnV,GAAI,MACJ6a,KAAM,MACN4e,MAAM,EACNC,0BAA2BjC,EAAWhX,KAAIkZ,IAAaxkB,EAAAA,GAAAA,QAAO,CAC5DwkB,oBAMKE,IAAwBrU,EAAAA,GAAAA,GACnC+T,IACA9B,GACMA,EAAWvU,UACN,MAGF/N,EAAAA,GAAAA,QAAO,CACZnV,GAAI,OACJ6a,KAAM,OACN4e,MAAM,EACNC,0BAA2BjC,EAAWhX,KAAIkZ,IAAaxkB,EAAAA,GAAAA,QAAO,CAC5DwkB,oBAMKG,IAAqBtU,EAAAA,GAAAA,IAtFXzZ,GACrBqtB,GAAuBrtB,GAAO0U,KAC5BsZ,GAASA,EAAMpqB,OACb,6BACAqqB,GAAOA,EACJvZ,KAAIgC,GAAKA,EAAEwX,IAAI,YAAa7B,GAAiBrsB,EAAO0W,EAAE1H,IAAI,mBAC1DhI,QAAO0P,GAAKA,EAAE1H,IAAI,eAClBp9C,QAAO8kD,GAAKA,EAAEhF,MAAM,CAAC,YAAa,SAAS4R,qBAiFlDmK,GACAI,GACAC,IACA,CAACK,EAAQC,EAAUC,EAAUC,IAAcH,EACxCv8D,QAAO28D,GAAKA,EAAEvf,IAAI,QAAQsU,gBAC1BziB,KAAKutB,EAAUC,EAAUC,GACzBtnB,QAAOunB,GAAKA,MAGJC,GAAuBxuB,GAASA,EAAM0rB,WAAWha,MAAM,CAAC,SAAU,OAClE+c,GAAmCzuB,GAASwuB,GAAqBxuB,GAAOgP,IAAI,mBAC5E0f,GAAqC1uB,GAASwuB,GAAqBxuB,GAAOgP,IAAI,yBAC9E2f,GAA4B3uB,GAASwuB,GAAqBxuB,GAAOgP,IAAI,iBACrE4f,GAA0B5uB,GAASwuB,GAAqBxuB,GAAOgP,IAAI,UACnE6f,GAA4B7uB,GAASwuB,GAAqBxuB,GAAOgP,IAAI,YACrE8f,GAA6B9uB,GAASwuB,GAAqBxuB,GAAOgP,IAAI,YAEtE+f,GAAuC/uB,GAASA,EAAM0rB,WAAW1c,IAAI,2BACrEggB,GAAoDhvB,GA5GrCivB,EAACjvB,EAAO/L,IAAO+L,EAAM0rB,WAAWha,MAAM,CAAC,SAAU,SAAS+E,MAAK8X,GAAKA,EAAEvf,IAAI,QAAU/a,IA6G9Gg7B,CAAajvB,EAAO+uB,GAAqC/uB,GAAOgP,IAAI,oBAEzDkgB,GAAsDlvB,GACjE+uB,GAAqC/uB,GAAOgP,IAAI,mBAErCmgB,GAAuCnvB,GAAS+uB,GAAqC/uB,GAAOgP,IAAI,QAEhGogB,IAAwB3V,EAAAA,GAAAA,GACnCqT,GACAf,GACAgC,GACAT,GACAC,GACAC,IACA,CAACv5B,EAAIy3B,EAAYyC,EAAQkB,EAAeC,EAAeC,KACrD,MAAMvB,EAAQG,EAAO1X,MAAK8X,GAAKA,EAAEvf,IAAI,QAAU/a,IAE/C,IAAK+5B,EACH,OAAOtC,EAGT,GAAwB,QAApBsC,EAAMhf,IAAI,MACZ,OAAOqgB,EAGT,GAAwB,QAApBrB,EAAMhf,IAAI,MACZ,OAAOsgB,EAGT,GAAwB,SAApBtB,EAAMhf,IAAI,MACZ,OAAOugB,EAGT,MAAMtzB,EAAM+xB,EAAMhf,IAAI,6BAA6B0F,KAAIgC,GAAKA,EAAE1H,IAAI,iBAAgBwgB,QAElF,OAAO9D,EAAW1kB,QAAO0P,GAAKza,EAAIwzB,IAAI/Y,EAAE1H,IAAI,QAAO,IAI1C0gB,IAA4BjW,EAAAA,GAAAA,GACvCqT,GACAiB,IACA,CAAC95B,EAAIk6B,IAAWA,EAAO1X,MAAK8X,GAAKA,EAAEvf,IAAI,QAAU/a,MAAOmV,EAAAA,GAAAA,QAAO,CAAC,KC7MrDumB,GAAkB3vB,GAASA,EAAMgpB,KAAKha,IAAI,gBAC1C4gB,GAAsB5vB,GAAS2vB,GAAgB3vB,GAAOgP,IAAI,QAC1D6gB,GAA6B7vB,GAAS4vB,GAAoB5vB,GAAOgP,IAAI,QAAQ0F,KAAIyU,GAAKA,EAAE2G,UACxFC,GAA6B/vB,GAAS4vB,GAAoB5vB,GAAOgP,IAAI,QAAQghB,UAC7EC,GAA2BjwB,GAAS4vB,GAAoB5vB,GAAOgP,IAAI,SAAS+U,KAE5EmM,GAA0BlwB,GAAS4vB,GAAoB5vB,GAAOgP,IAAI,SAClEmhB,IAAuB1W,EAAAA,GAAAA,IAClCzZ,GAAS4vB,GAAoB5vB,GAAOgP,IAAI,SAAS0F,KAC/C0b,GAAQA,EAAKxsB,OAAO,QAAQolB,GAAQE,GAAalpB,EAAOgpB,GAAMhiB,QAAOmiB,GAAKA,QAC1EniB,QAAOopB,GAAQA,EAAKphB,IAAI,UAAYohB,EAAKphB,IAAI,QAAQmI,cACvDkZ,GAASA,IAEEC,GAA8BA,CAACtwB,EAAOuwB,IACjDJ,GAAqBnwB,GAAOyW,MAAK8X,GAAKA,EAAEvf,IAAI,QAAUuhB,IAAQvhB,IAAI,QAEvDwhB,IAAsB/W,EAAAA,GAAAA,IACjCzZ,GAASkpB,GAAalpB,EAAO6vB,GAA2B7vB,MACxDgpB,GAAQA,EAAKhiB,QAAOmiB,GAAKA,MAEdsH,IAAyBhX,EAAAA,GAAAA,IACpCzZ,GAASkpB,GAAalpB,EAAO+vB,GAA2B/vB,MACxDgpB,GAAQA,EAAKhiB,QAAOmiB,GAAKA,MAGduH,GAAyB1wB,GAAS4vB,GAAoB5vB,GAAOgP,IAAI,QACjE2hB,GAA2B3wB,GAAS+vB,GAA2B/vB,GAAO+jB,KACtE6M,GAAkC5wB,GAAS4vB,GAAoB5vB,GAAOgP,IAAI,QAAQ+U,KAClF8M,GAAmBA,CAAC7wB,EAAO/L,IAAO47B,GAA2B7vB,GAAOujB,SAAStvB,GAC7E68B,GAAwCA,CAAC9wB,EAAO/L,IAC3D27B,GAAoB5vB,GAAOgP,IAAI,QAAQyH,MAAKxa,GAAOA,EAAI6zB,UAAY77B,MAAO+rB,EAAAA,GAAAA,MAAK,IAGpE+Q,GAAwCA,CAAC/wB,EAAOowB,IAASR,GAAoB5vB,GACvFgP,IAAI,QACJhI,QAAO/K,GAAOm0B,EAAKphB,IAAI,QAAQ0F,KAAIyU,GAAKA,EAAEna,IAAI,QAAOuU,SAAStnB,EAAI6zB,WAClEE,SAAQ,GAEEgB,GAA4ChxB,GACvDmwB,GAAqBnwB,GAClB0U,KAAI0b,IAAQjsB,EAAAA,GAAAA,KAAI,CACfosB,OAAQH,EAAKphB,IAAI,MACjBnW,QAASk4B,GAAsC/wB,EAAOowB,OAI/Ca,GAAoBjxB,GAAS2vB,GAAgB3vB,GAAOgP,IAAI,MACxDkiB,GAA2BlxB,GACtCqsB,GAAiBrsB,EAAO,GAAGixB,GAAkBjxB,GAAOgP,IAAI,oBAAqB7K,EAAAA,GAAAA,KAAI,CAAC,GAEvEgtB,GAAoCnxB,IAC/C,MAAM4tB,EAAYsD,GAAyBlxB,GAE3C,OAAOoxB,QAAQxD,EAAU5e,IAAI,eAAiB4e,EAAU5e,IAAI,eAAiB4e,EAAU5e,IAAI,eAAe,EAG/FqiB,GAA+BrxB,GAC1CmxB,GAAkCnxB,IACK,IAApCiwB,GAAyBjwB,IACzB,CAACuJ,GAAAA,GAAAA,WAA2B9B,SAAQmO,EAAAA,GAAAA,IAAwB5V,KAAW,EAG/DsxB,GAA0BtxB,GAAUqxB,GAA6BrxB,GAAS,EAAIixB,GAAkBjxB,GAAOgP,IAAI,YAC3GuiB,GAAqCvxB,GAASixB,GAAkBjxB,GAAOgP,IAAI,uBAC3EwiB,GAA2CxxB,GAASixB,GAAkBjxB,GAAOgP,IAAI,6BACjFyiB,GAAgCzxB,GAASixB,GAAkBjxB,GAAOgP,IAAI,kBACtE0iB,GAAgC1xB,GAASixB,GAAkBjxB,GAAOgP,IAAI,gBACtE2iB,GAAyB3xB,GAASixB,GAAkBjxB,GAAOgP,IAAI,WAE/D4iB,GAA8B5xB,GAAS2vB,GAAgB3vB,GAAOgP,IAAI,kBAAmBnG,EAAAA,GAAAA,KAAI,IACzFgpB,GAAiC7xB,GAAS4xB,GAA4B5xB,GAAO0U,KAAIyU,IAC5F,MAAM2I,EAAI3I,EAAErC,MAAM,KAElB,OAAOiL,SAASD,EAAEA,EAAEj4B,OAAS,GAAI,GAAG,IAEzBm4B,IAAqCvY,EAAAA,GAAAA,IAChDzZ,GAASkpB,GAAalpB,EAAO6xB,GAA+B7xB,MAC5DgpB,GAAQA,EAAKhiB,QAAOmiB,GAAKA,MAGd8I,GAA6BA,CAACjyB,EAAOkyB,EAAQ3B,SACzCz2B,IAAXy2B,EACKqB,GAA4B5xB,GAAOujB,SAAS,GAAG2O,KAGjDN,GAA4B5xB,GAAOujB,SAAS,GAAGgN,KAAU2B,KAErDC,GAAwCA,CAACnyB,EAAO/L,IAlF1Bm+B,EAACpyB,EAAO/L,IAAO27B,GAAoB5vB,GAAOgP,IAAI,SAASyH,MAAK2Z,GAAQA,EAAKphB,IAAI,QAAU/a,IAmFxHm+B,CAAoBpyB,EAAO/L,GAAI+a,IAAI,QAAQ9M,OAAMinB,GAAKyI,GAA4B5xB,GAAOujB,SAAS,GAAGtvB,KAAMk1B,OAEhGkJ,GAAgBryB,IAAU4vB,GAAoB5vB,GAAOgP,IAAI,SAAS0F,KAAIgC,GAAKA,EAAE1H,IAAI,cAAauU,UAAS,GAGvG+O,GAAwCtyB,GADfA,IAAS2vB,GAAgB3vB,GAAOgP,IAAI,WACZujB,CAAuBvyB,GAAOgP,IAAI,gBAEnFwjB,GAAmCxyB,GAASixB,GAAkBjxB,GAAOgP,IAAI,qBACzEyjB,GAA6BzyB,GAASixB,GAAkBjxB,GAAOgP,IAAI,2BACnE0jB,GAAyB1yB,GAAS2vB,GAAgB3vB,GAAOgP,IAAI,WAC7D2jB,GAAgC3yB,GAAS0yB,GAAuB1yB,GAAOgP,IAAI,WAC3E4jB,GAA6B5yB,GAAS0yB,GAAuB1yB,GAAOgP,IAAI,QACxE6jB,GAAgC7yB,GAAS0yB,GAAuB1yB,GAAOgP,IAAI,WAC3E8jB,GAA+B9yB,GAAS0yB,GAAuB1yB,GAAOgP,IAAI,qBAC1E+jB,GAAgC/yB,GAAS0yB,GAAuB1yB,GAAOgP,IAAI,sBAC3EgkB,GAAgChzB,GAAS0yB,GAAuB1yB,GAAOgP,IAAI,sBAC3EikB,GAAiCjzB,GAAS0yB,GAAuB1yB,GAAOgP,IAAI,uBCzG5EkkB,GAAiClzB,GADHA,IAFbA,IAASA,EAAMmzB,aAAankB,IAAI,UAEVokB,CAAsBpzB,GAAOgP,IAAI,kBAAmBnG,EAAAA,GAAAA,KAAI,IACrDwqB,CAA4BrzB,GAAO0U,KAAIyU,IAC5F,MAAM2I,EAAI3I,EAAErC,MAAM,KAElB,OAAOiL,SAASD,EAAEA,EAAEj4B,OAAS,GAAI,GAAG,IAEzBy5B,IAAqC7Z,EAAAA,GAAAA,IAChDzZ,GAASkpB,GAAalpB,EAAOkzB,GAA+BlzB,MAC5DgpB,GAAQA,EAAKhiB,QAAOmiB,GAAKA,MCbdoK,GAAYvzB,GAASA,EAAMgpB,KAAKha,IAAI,MACpCwkB,GAAuBxzB,GAASuzB,GAAUvzB,GAAOgP,IAAI,qBACrDykB,GAAoBzzB,GAASuzB,GAAUvzB,GAAOgP,IAAI,kBAElD0kB,GAAkC1zB,GAASuzB,GAAUvzB,GAAOgP,IAAI,uBAChE2kB,GAAgC3zB,GAASuzB,GAAUvzB,GAAOgP,IAAI,gBAC9D4kB,GAA0B5zB,GAASuzB,GAAUvzB,GAAOgP,IAAI,wBACxD6kB,GAA0B7zB,GAASuzB,GAAUvzB,GAAOgP,IAAI,wBACxD8kB,GAAc9zB,GAASuzB,GAAUvzB,GAAOgP,IAAI,YAC5C+kB,GAAgB,SAAC/zB,GAAK,QAAAg0B,EAAAp6B,UAAAC,OAAKo6B,EAAK,IAAA5wB,MAAA2wB,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAALD,EAAKC,EAAA,GAAAt6B,UAAAs6B,GAAA,OAAKD,EAAMltB,MAAK+H,GAAQglB,GAAY9zB,KAAW8O,GAAK,EAGpFqlB,GAA4Bn0B,GAASuzB,GAAUvzB,GAAOgP,IAAI,0BAC1DolB,GAAoBp0B,GAASuzB,GAAUvzB,GAAOgP,IAAI,kBAClDqlB,GAAyCr0B,GAASuzB,GAAUvzB,GAAOgP,IAAI,uCACvEslB,GAAiCt0B,GAASuzB,GAAUvzB,GAAOgP,IAAI,+BAE/DulB,GAAkBv0B,GAASuzB,GAAUvzB,GAAOgP,IAAI,gBAGhDwlB,GAAkCx0B,GAASuzB,GAAUvzB,GAAOgP,IAAI,gCAChEylB,GAAgCz0B,GAAS+oB,GAAY/oB,EAAOw0B,GAAgCx0B,IAC5F00B,GAAgC10B,GAASoxB,QAAQqD,GAA8Bz0B,IAC/E20B,GAAwB30B,GAASuzB,GAAUvzB,GAAOgP,IAAI,sBACtD4lB,GAA+B50B,GAASuzB,GAAUvzB,GAAOgP,IAAI,6BAC7D6lB,GAA8B70B,GAASuzB,GAAUvzB,GAAOgP,IAAI,4BAC5D8lB,GAAsC90B,GAASuzB,GAAUvzB,GAAOgP,IAAI,oCC3BpE+lB,GAAsB/0B,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,WAAY,SAC7DsjB,GAAkBh1B,GAAS+0B,GAAoB/0B,GAAOgP,IAAI,gBAC1DimB,GAA0Bj1B,GAAS+0B,GAAoB/0B,GAAOgP,IAAI,gBAClEkmB,GAA2Bl1B,GAAS+0B,GAAoB/0B,GAAOgP,IAAI,iBACnEmmB,GAA+Bn1B,GAAS+0B,GAAoB/0B,GAAOgP,IAAI,qBAGvEomB,GAAoBp1B,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,WAAY,OAC3D2jB,GAA2Br1B,GAASo1B,GAAkBp1B,GAAOgP,IAAI,iBACjEsmB,GAAgCt1B,GAASo1B,GAAkBp1B,GAAOgP,IAAI,sBACtEumB,GAAwBv1B,GAASo1B,GAAkBp1B,GAAOgP,IAAI,UAC9DwmB,GAAoBx1B,IAAUo1B,GAAkBp1B,GAAOgP,IAAI,iBAAiBmI,UAE5Ese,GAAsBz1B,GAASo1B,GAAkBp1B,GAAOgP,IAAI,gBAC5D0mB,GAAqB11B,GAASo1B,GAAkBp1B,GAAOgP,IAAI,eAC3D2mB,GAAiC31B,GAASo1B,GAAkBp1B,GAAOgP,IAAI,uBACvE4mB,GAA4B51B,GAASo1B,GAAkBp1B,GAAOgP,IAAI,kBAClE6mB,GAAoB71B,GAASo1B,GAAkBp1B,GAAOgP,IAAI,kBChB1D8mB,GAA0B91B,GADAA,IAASA,EAAMgpB,KAAKtX,MAAM,CAAC,eAAgB,SAClCqkB,CAAwB/1B,GAAOgP,IAAI,gBAGtEgnB,GAAwBh2B,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,eAAgB,OACnEukB,GAAwBj2B,GAASg2B,GAAsBh2B,GAAOgP,IAAI,UAClEknB,GAAyBl2B,GAASg2B,GAAsBh2B,GAAOgP,IAAI,eACnEmnB,GAAwBn2B,GAASg2B,GAAsBh2B,GAAOgP,IAAI,mBCPlEonB,GAAsBp2B,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,eAAgB,SAEjE2kB,GAAsCr2B,GAASo2B,GAAoBp2B,GAAO0R,MAAM,CAAC,WAAY,EAAG,aAIhG4kB,GAAsCt2B,GADdA,IAASA,EAAMgpB,KAAKtX,MAAM,CAAC,eAAgB,OACpB6kB,CAAsBv2B,GAAOgP,IAAI,oBCgBvFwnB,GAAYA,CAACC,EAAOC,EAAKC,IAAOA,GAAKF,GAAWE,GAAKD,EAE9CE,GAAiB52B,IAC5B,MAAM62B,EAAaC,GAAc92B,GAC3B+2B,EAAiBC,GAAuBh3B,GACxCi3B,EAAe1D,GAAUvzB,GAAOgP,IAAI,gBAEpCkoB,EAA6B,IAApBL,EAAW9S,KAC1B,IAAI4S,EAAI,EAEJQ,EAAiBJ,EAAeriB,KAAI,CAACzgB,EAAImjC,KAC3ChuB,EAAAA,GAAAA,QAAO,CACLnV,KACAmjC,QACAF,SACAG,UAAWR,EAAWnlB,MAAM,CAACzd,EAAI,cACjC6a,KAAM+nB,EAAWnlB,MAAM,CAACzd,EAAI,SAC5BqjC,YAAaT,EAAWnlB,MAAM,CAACzd,EAAI,kBAAmB,EACtDguB,MAAO4U,EAAWnlB,MAAM,CAACzd,EAAI,QAAS,UACtCsjC,MAAOV,EAAWnlB,MAAM,CAACzd,EAAI,QAAS,UACtCujC,MAAOX,EAAWnlB,MAAM,CAACzd,EAAI,QAAS,UACtCwjC,MAAOZ,EAAWnlB,MAAM,CAACzd,EAAI,UAC7ByjC,aAAcb,EAAWnlB,MAAM,CAACzd,EAAI,QAAS,iBAC7C0jC,SAAUd,EAAWnlB,MAAM,CAACzd,EAAI,aAEjC+S,QAAOunB,GAAKA,EAAEvf,IAAI,cAGrB,MAAM4oB,EA9C+B53B,KACrC,MAAM6oB,EAASD,GAAU5oB,GAEzB,OAAI6oB,EAAO7Z,IAAI,SACN,EAGL6Z,EAAO7Z,IAAI,SACN,EAGL6Z,EAAO7Z,IAAI,SACN,EAGF,CAAC,EA+BsB6oB,CAA+B73B,GACvDy2B,EAAQqB,KAAKC,IAAId,EAAcE,EAAepT,KAAO6T,GACrDlB,EAAOD,EAAQmB,EAAyB,EAC9C,IAAKjB,EAAI,EAAGA,EAAIQ,EAAepT,KAAM4S,GAAK,EACxCQ,EAAiBA,EAAea,MAAM,CAACrB,EAAG,WAAYH,GAAUC,EAAOC,EAAKC,IAG9E,OAAOQ,CAAc,E,0GChDhB,MAAMc,GAAiBj4B,GAASA,EAAMgpB,KAAKha,IAAI,UAEzCkpB,GAAsBl4B,GAASi4B,GAAej4B,GAAOgP,IAAI,YACzDmpB,GAAuBn4B,GAASi4B,GAAej4B,GAAOgP,IAAI,aAC1DopB,GAA6Bp4B,GAASi4B,GAAej4B,GAAOgP,IAAI,mBAChEqpB,GAAwBr4B,GAASi4B,GAAej4B,GAAOgP,IAAI,cAC3DspB,GAA+Bt4B,GAASi4B,GAAej4B,GAAOgP,IAAI,qBAClEupB,GAA0Bv4B,GAASi4B,GAAej4B,GAAOgP,IAAI,gBAC7DwpB,GAA0Bx4B,GAASi4B,GAAej4B,GAAOgP,IAAI,gBAC7DypB,GAAuBz4B,GAASi4B,GAAej4B,GAAOgP,IAAI,aAC1D0pB,GAA8B14B,GAASi4B,GAAej4B,GAAOgP,IAAI,oBACjE2pB,GAA8B34B,GAASi4B,GAAej4B,GAAOgP,IAAI,oBACjE4pB,GAAwB54B,GAASi4B,GAAej4B,GAAOgP,IAAI,cAC3D6pB,GAAmC74B,GAASi4B,GAAej4B,GAAOgP,IAAI,yBACtE8pB,GAA4B94B,GAASi4B,GAAej4B,GAAOgP,IAAI,kBAC/D+pB,GAA4B/4B,GAASi4B,GAAej4B,GAAOgP,IAAI,kBAC/DgqB,GAAyBh5B,GAASi4B,GAAej4B,GAAOgP,IAAI,eAC5DiqB,GAAyBj5B,GAASi4B,GAAej4B,GAAO0R,MAAM,CAAC,aAAc,iBAC7EwnB,GAAwBl5B,GAASi4B,GAAej4B,GAAOgP,IAAI,cAC3DmqB,GAAuBn5B,GAASi4B,GAAej4B,GAAOgP,IAAI,aAE1DoqB,GAAyBp5B,GAASi4B,GAAej4B,GAAOgP,IAAI,YAG5DqqB,GAA4Br5B,GAASi4B,GAAej4B,GAAOgP,IAAI,eAC/DsqB,IAAwC7f,EAAAA,GAAAA,GACnD2f,IACAjrB,GAAYA,EAASa,IAAI,iBAAiB0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,UAErD+J,IAAiD9f,EAAAA,GAAAA,GAC5D2f,IAR0Cp5B,GAASi4B,GAAej4B,GAAOgP,IAAI,oBAU7E,CAACb,EAAUqrB,KAAoBA,EAAeriB,UAAYhJ,EAASa,IAAI,iBAAmBwqB,GAAgB9kB,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,UAErHiK,IAA0ChgB,EAAAA,GAAAA,GACrD2f,IACAjrB,GAAYA,EAASa,IAAI,mBAAmB0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,UAEvDkK,IAAwCjgB,EAAAA,GAAAA,GACnD2f,IACAjrB,GAAYA,EAASa,IAAI,iBAAiB0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,UAErDmK,IAAuClgB,EAAAA,GAAAA,GAClD2f,IACAjrB,GAAYA,EAASa,IAAI,gBAAgB0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,UAEpDoK,IAAgDngB,EAAAA,GAAAA,GAC3D2f,IAxBiDp5B,GAASi4B,GAAej4B,GAAOgP,IAAI,2BA0BpF,CAACb,EAAUqrB,KAAoBA,EAAeriB,UAAYhJ,EAASa,IAAI,gBAAkBwqB,GAAgB9kB,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,UAEpHqK,GAAqC75B,GAASo5B,GAAuBp5B,GAAOgP,IAAI,gBAChF8qB,GAA4C95B,GAASo5B,GAAuBp5B,GAAOgP,IAAI,uBACvF+qB,GAA4C/5B,GAASo5B,GAAuBp5B,GAAOgP,IAAI,uBAEvFgrB,IAAgDvgB,EAAAA,GAAAA,GAC3DsgB,IAF2D/5B,GAASi4B,GAAej4B,GAAOgP,IAAI,6BAI9F,CAACirB,EAAYC,KAAoBA,EAAe/iB,UAAY8iB,EAAaC,GAAgBxlB,KAAIylB,GAAKA,EAAEnrB,IAAI,aAG7ForB,GAAwBp6B,GAASi4B,GAAej4B,GAAOgP,IAAI,cAC3DqrB,GAAsBr6B,GAASi4B,GAAej4B,GAAOgP,IAAI,YACzDsrB,GAA4Bt6B,GAASi4B,GAAej4B,GAAOgP,IAAI,kBAE/DurB,IAA4B9gB,EAAAA,GAAAA,IACvCzZ,GAASi4B,GAAej4B,GAAOgP,IAAI,cACnCwrB,GAAYA,EAASC,OAAO,oBAGjBC,IAAqBjhB,EAAAA,GAAAA,IAChCzZ,GAASi4B,GAAej4B,GAAOgP,IAAI,oBACnChX,IACE,MAAM2iC,EAAa3iC,EAAM0Z,MAAM,CAAC,UAAW,QACrCkpB,EAAa5iC,EAAM0Z,MAAM,CAAC,UAAW,QACrCmpB,EAAiB7iC,EAAM0Z,MAAM,CAAC,cAAe,QAC7CopB,EAAiB9iC,EAAM0Z,MAAM,CAAC,cAAe,QAEnD,OAAIipB,GAAcC,GAAcC,GAAkBC,EACzC9iC,EAGF,IAAI,IAIF+iC,GAAoB/6B,GAASi4B,GAAej4B,GAAO0R,MAAM,CAAC,WAAY,mBAEtEspB,GAAsBh7B,GAASi4B,GAAej4B,GAAOgP,IAAI,YACzDisB,GAAoBj7B,GAASi4B,GAAej4B,GAAOgP,IAAI,UACvDksB,GAAuBl7B,GAASi4B,GAAej4B,GAAOgP,IAAI,aAC1DmsB,GAAsBn7B,GAASi4B,GAAej4B,GAAOgP,IAAI,YACzDosB,GAA0Bp7B,GAASi4B,GAAej4B,GAAOgP,IAAI,gBAC7DqsB,GAA0Br7B,GAASi4B,GAAej4B,GAAOgP,IAAI,wBAC7DssB,GAAsBt7B,GAASi4B,GAAej4B,GAAOgP,IAAI,oBAEzDusB,IAAmB9hB,EAAAA,GAAAA,GAC9Bwe,IACAve,IACE,MAAM8hB,EAAoB9hB,EACvB1K,IAAI,cACJhI,QAAOhP,GAASgoB,GAAAA,KAAAA,OAAYhoB,KAC5B0iB,QAAO,CAACC,EAAK3iB,EAAOD,IAAQ4iB,EAAIuT,KAAIvY,EAAAA,GAAAA,GAAU,cAAc5d,KAAQC,KAAQoR,EAAAA,GAAAA,QAAO,CAAC,IAEvF,OAAOsQ,EAAQ+hB,MAAMD,GAAmBx0B,QAAOhP,GAASgoB,GAAAA,KAAAA,OAAYhoB,KAAWA,EAAMmf,WAAU,IAI7FxjC,GAAaA,CAAC+jB,EAAMgiB,EAASgiB,EAAWC,KAC5C,MAAMC,EAAkBC,GACtBA,EAAE7sB,IAAI,cAAiC,IAAjB6sB,EAAE7sB,IAAI,OAAgB6sB,EAAE7sB,IAAI,cAE9C2c,EAAcjS,EAAQ1K,IAAI0sB,GAAahiB,EAAQ1K,IAAI0sB,IAAatyB,EAAAA,GAAAA,QAAO,IACvEyiB,EAAWF,EAAY3kB,QAAO60B,IAAOD,EAAgBC,KAAK5yB,OAC1D6yB,EAAmBnQ,EAAY3kB,QAAO60B,GAAKD,EAAgBC,KAAI5yB,OAErE,IAAIrI,EAASlJ,EAUb,OARIm0B,EAAShyB,SACX+G,EAAS,IAAKA,EAAQ,CAAC+6B,GAAY9P,EAASnX,KAAIqnB,GAAMA,EAAG9nC,OAGvD6nC,EAAiBjiC,SACnB+G,EAAS,IAAKA,EAAQ,CAAC,WAAW+6B,KAAcG,EAAiBpnB,KAAIqnB,GAAOA,EAAGC,WAAaD,EAAGC,WAAa,CAACD,EAAG9nC,MAAMgoC,SAGjHr7B,CAAM,EAGTs7B,GAAaA,CAACxkC,EAAMgiB,EAASgiB,EAAWC,KAC5C,MAAMQ,EAAUziB,EAAQ1K,IAAI0sB,GAAW10B,QAAO60B,IAAMA,EAAE7sB,IAAI,cAAa/F,OACjEmzB,EAAkB1iB,EAAQ1K,IAAI0sB,GAAW10B,QAAO60B,GAAKA,EAAE7sB,IAAI,cAAa/F,OAE9E,IAAIrI,EAASlJ,EAUb,OARIykC,EAAQtiC,SACV+G,EAAS,IAAKA,EAAQ,CAAC+6B,GAAYQ,EAAQznB,KAAIqnB,GAAMA,EAAG/jC,UAGtDokC,EAAgBviC,SAClB+G,EAAS,IAAKA,EAAQ,CAAC,WAAW+6B,KAAcS,EAAgB1nB,KAAIqnB,GAAMA,EAAG/jC,UAGxE4I,CAAM,EAGFy7B,GAAyBA,CAACr8B,EAAO9D,EAAUC,KACtD,IAAIud,EAAUue,GAAej4B,GAC7B,MAAMs8B,EAAWnB,GAAoBn7B,QAEpBlG,IAAboC,QAAqCpC,IAAXqC,IAC5Bud,EAAUA,EAAQ+hB,MAAM,CACtBv/B,WACAC,YAIJ,IAAI6sB,EAAO,CAAC,EAEZA,EAAOkT,GAAWlT,EAAMtP,EAAS,cAAe,WAEhDhZ,OAAOC,KAAK47B,GAAAA,GAAAA,MAAwBv1B,QAAOjP,IAAoD,IAA7C,CAAC,WAAY,cAAc0P,QAAQ1P,KAAaF,SAAQE,IACxGixB,EAAOr1C,GAAWq1C,EAAMtP,EAAS3hB,EAAKwkC,GAAAA,GAAAA,KAAuBxkC,GAAK,IAGpE,MAAMuU,EAAcoN,EAAQ1K,IAAI,eAAehI,QAAO2vB,IAAMA,EAAE3nB,IAAI,cAE7D1C,EAAY6K,YACf6R,EAAKwT,YAAcxT,EAAKwT,aAAe,GACvCxT,EAAKwT,YAAcxT,EAAKwT,YAAYjuB,OAAOjC,EAAYmwB,SAAQC,GAAcA,EAAW1tB,IAAI,iBAAgB/F,SAG9G,MAAM0zB,EAAsBjjB,EAAQ1K,IAAI,eAAehI,QAAO2vB,GAAKA,EAAE3nB,IAAI,cAEpE2tB,EAAoBxlB,YACvB6R,EAAK4T,oBAAsB5T,EAAK4T,qBAAuB,GACvD5T,EAAK4T,oBAAsB5T,EAAK4T,oBAAoBruB,OAClDouB,EAAoBF,SAAQC,GAAcA,EAAW1tB,IAAI,iBAAgB/F,SAI7E,MAAM4zB,EAAiBC,GAAkB98B,GAAOiJ,OAE5C4zB,EAAehjC,SACjBmvB,EAAK+T,YAAcF,GAGjBnjB,EAAQ1K,IAAI,cAEZga,EAAK,GAAGsT,eADO,gBAAbA,EAC8B1Z,KAAOlJ,EAAQ1K,IAAI,aAChDguB,QAAQ,OACRC,SAE6Bra,KAAOlJ,EAAQ1K,IAAI,aAChDiuB,UAIHvjB,EAAQ1K,IAAI,YAEZga,EAAK,GAAGsT,aADO,gBAAbA,EAC4B1Z,KAAOlJ,EAAQ1K,IAAI,WAC9CkuB,MAAM,OACND,SAE2Bra,KAAOlJ,EAAQ1K,IAAI,WAC9CiuB,UAIPjU,EAAKmU,YAAaC,EAAAA,GAAAA,IAAapU,EAAK,GAAGsT,eAAuBtT,EAAK,GAAGsT,cAEtEtT,EAAKwR,SAAW9gB,EAAQ1K,IAAI,YACzB0L,QAAO,CAACC,EAAK3iB,EAAOD,IAAQ4iB,EAAIuT,IAAImP,KAAWtlC,GAAMC,KAAQoR,EAAAA,GAAAA,QAAO,CAAC,IACrEH,OAEH,MAAMq0B,EAAiB5jB,EAAQ1K,IAAI,kBAE/BsuB,IACFtU,EAAKuU,iBAAmB,CACtBC,SAAU,CACRC,IAAKH,EAAe5rB,MAAM,CAAC,UAAW,QACtCgsB,IAAKJ,EAAe5rB,MAAM,CAAC,UAAW,SAExCisB,aAAc,CACZF,IAAKH,EAAe5rB,MAAM,CAAC,cAAe,QAC1CgsB,IAAKJ,EAAe5rB,MAAM,CAAC,cAAe,WAKhD,MAAMksB,EAAkBlkB,EAAQ1K,IAAI,YAEhC4uB,IACF5U,EAAK7a,SAAW,CAAC,EAEjBzN,OAAOC,KAAK47B,GAAAA,GAAAA,KAAAA,UAAiC1kC,SAAQE,IACnDixB,EAAK7a,SAAWx6B,GAAWq1C,EAAK7a,SAAUyvB,EAAiB7lC,EAAKwkC,GAAAA,GAAAA,KAAAA,SAAgCxkC,GAAK,IAGvGixB,EAAK7a,SAAS0vB,cAAgBD,EAAgB5uB,IAAI,gBAClDga,EAAK7a,SAAS2vB,uBAAyBF,EAAgB5uB,IAAI,wBAG7D,MAAMwsB,EAAoB9hB,EAAQ1K,IAAI,cAUtC,OARIwsB,IACFxS,EAAK+U,WAAa,CAAC,EAEnBr9B,OAAOC,KAAK47B,GAAAA,GAAAA,KAAAA,YAAmC1kC,SAAQE,IACrDixB,EAAK+U,WAAapqD,GAAWq1C,EAAK+U,WAAYvC,EAAmBzjC,EAAKwkC,GAAAA,GAAAA,KAAAA,WAAkCxkC,GAAK,KAI1GixB,CAAI,EAGAgV,GAAgCh+B,IAC3C,MAAM0Z,EAAUue,GAAej4B,GAE/B,IAAIi+B,EAAc,CAAC,EAQnB,OANAA,EAAc/B,GAAW+B,EAAavkB,EAAS,qBAAsB,WAErEhZ,OAAOC,KAAK47B,GAAAA,GAAAA,aAA+B1kC,SAAQE,IACjDkmC,EAActqD,GAAWsqD,EAAavkB,EAAS3hB,EAAKwkC,GAAAA,GAAAA,YAA8BxkC,GAAK,IAGlFkmC,CAAW,EAGPC,GAA4Bl+B,IACvC,MAAM0Z,EAAUue,GAAej4B,GAE/B,IAAIm+B,EAAU,CAAC,EAMf,OAJAz9B,OAAOC,KAAK47B,GAAAA,GAAAA,SAA2B1kC,SAAQE,IAC7ComC,EAAUxqD,GAAWwqD,EAASzkB,EAAS3hB,EAAKwkC,GAAAA,GAAAA,QAA0BxkC,GAAK,IAGtEomC,CAAO,EAGHC,GAA2Bp+B,GAClCA,EAAMgpB,KAAKtX,MAAM,CAAC,SAAU,kBAAkByF,UACzC,KAGF,CACLglB,QAASn8B,EAAMgpB,KAAKha,IAAI,UAAUA,IAAI,iBAAiB/F,OAAOyL,KAAIqnB,GAAMA,EAAG/jC,SAIlEqmC,GAAiCr+B,IAC5C,MAAM0Z,EAAUue,GAAej4B,GAC/B,IAAIY,EAAS,CAAC,EAMd,OAJAF,OAAOC,KAAK47B,GAAAA,GAAAA,cAAgC1kC,SAAQE,IAClD6I,EAASjtB,GAAWitB,EAAQ8Y,EAAS3hB,EAAKwkC,GAAAA,GAAAA,aAA+BxkC,GAAK,IAGzE6I,CAAM,EAGF09B,IAAiB7kB,EAAAA,GAAAA,GAC5B8hB,GACAhB,GACAG,IACA,CAAC6D,EAAeC,EAAsBC,KACpC,MAAMC,EAAcH,EAAcI,WAAW31B,SAASuF,OAAOiwB,EAAqBG,WAAW33B,QAAO43B,GAAKA,KAAI5O,SAAQ,GAAMjM,KAE3H,OAAI0a,EACKC,EAAc,EAGhBA,CAAW,IAITG,GAAa7+B,GAASs+B,GAAet+B,GAAS,ECxU9C8+B,GAAmB9+B,GAASA,EAAM++B,cAElCC,GAAwBh/B,GAAS8+B,GAAiB9+B,GAAO0R,MAAM,CAAC,WAAY,uBCD5EutB,GAAqBj/B,GAASA,EAAMsM,YAAY0C,IAAI,QACpDkwB,GAAiBl/B,GAASi/B,GAAmBj/B,GAAOgP,IAAI,eACxDmwB,GAAsBn/B,GAASi/B,GAAmBj/B,GAAOgP,IAAI,SAG7DowB,GAAmBp/B,GAASA,EAAMsM,YAAY0C,IAAI,MAClDqwB,GAAqBr/B,GAASo/B,GAAiBp/B,GAAOgP,IAAI,QAC1DswB,GAAuBt/B,GAASo/B,GAAiBp/B,GAAOgP,IAAI,UAC5DuwB,GAAwBv/B,GAASo/B,GAAiBp/B,GAAOgP,IAAI,WAC7DwwB,GAA2Bx/B,GAASo/B,GAAiBp/B,GAAOgP,IAAI,eAChEywB,GAAyBz/B,GACpCo/B,GAAiBp/B,GACdgP,IAAI,eAAe0F,KAClBzgB,GAAMirC,GAAel/B,GAAOyW,MAAKipB,GAAKA,EAAE1wB,IAAI,QAAU/a,MAEvD+S,QAAO04B,GAAKA,IACZ12B,SAIQ22B,GAAkC3/B,GAASA,EAAMsM,YAAYoF,MAAM,CAAC,gBAAiB,SACrFkuB,GAA6C5/B,GAAS2/B,GAAgC3/B,GAAOgP,IAAI,cACjG6wB,GAA8C7/B,GAAS2/B,GAAgC3/B,GAAOgP,IAAI,eAClG8wB,GAAkD9/B,GAAS2/B,GAAgC3/B,GACrGgP,IAAI,sCACM+wB,GAA0C//B,GAAS2/B,GAAgC3/B,GAAOgP,IAAI,2BAG9FgxB,GAAgChgC,GAASA,EAAMsM,YAAYoF,MAAM,CAAC,gBAAiB,OACnFuuB,GAAuCjgC,GAASggC,GAA8BhgC,GAAOgP,IAAI,QACzFkxB,GAA0ClgC,GAASggC,GAA8BhgC,GAAOgP,IAAI,WAC5FmxB,GAAiDngC,GAASggC,GAA8BhgC,GAClGgP,IAAI,oCACMoxB,GAAkCpgC,GAASggC,GAA8BhgC,GAAOgP,IAAI,mBAGpFqxB,GAA4BrgC,GAASA,EAAMsM,YAAYoF,MAAM,CAAC,UAAW,SACzE4uB,GAAkCtgC,GAASqgC,GAA0BrgC,GAAOgP,IAAI,cAChFuxB,GAAgCvgC,GAASqgC,GAA0BrgC,GAAOgP,IAAI,YAC9EwxB,GAAkCxgC,GAASqgC,GAA0BrgC,GAAOgP,IAAI,cAChFyxB,GAAyCzgC,GAASqgC,GAA0BrgC,GAAOgP,IAAI,qBACvF0xB,GAAgC1gC,GAASqgC,GAA0BrgC,GAAOgP,IAAI,YAC9E2xB,GAAkC3gC,GAASqgC,GAA0BrgC,GAAOgP,IAAI,cAChF4xB,GAAmC5gC,QAC8BlG,IAA5EymC,GAA8BvgC,GAAO2+B,WAAWloB,MAAKC,IAAMA,EAAES,YAIlD0pB,GAA0B7gC,GAASA,EAAMsM,YAAYoF,MAAM,CAAC,UAAW,OACvEovB,GAA2B9gC,GAAS6gC,GAAwB7gC,GAAOgP,IAAI,QACvE+xB,GAA+B/gC,GAAS6gC,GAAwB7gC,GAAOgP,IAAI,WAC3EgyB,GAAyChhC,GAAS6gC,GAAwB7gC,GAAOgP,IAAI,qBCnDrFiyB,GAAsBjhC,GAASA,EAAMwM,aAAawC,IAAI,QACtDkyB,GAAkBlhC,GAASihC,GAAoBjhC,GAAOgP,IAAI,gBAC1DmyB,GAAuBnhC,GAASihC,GAAoBjhC,GAAOgP,IAAI,SAC/DoyB,GAAoBphC,GAASihC,GAAoBjhC,GAAOgP,IAAI,kBAG5DqyB,GAAoBrhC,GAASA,EAAMwM,aAAawC,IAAI,MACpDsyB,GAAsBthC,GAASqhC,GAAkBrhC,GAAOgP,IAAI,QAC5DuyB,GAAwBvhC,GAASqhC,GAAkBrhC,GAAOgP,IAAI,UAC9DwyB,GAAyBxhC,GAASqhC,GAAkBrhC,GAAOgP,IAAI,WAC/DyyB,GAA4BzhC,GAASqhC,GAAkBrhC,GAAOgP,IAAI,eAClE0yB,GAA0B1hC,GAASqhC,GAAkBrhC,GAAOgP,IAAI,gBAChE2yB,GAA0B3hC,GACrCqhC,GAAkBrhC,GACfgP,IAAI,eAAe0F,KAClBzgB,GAAMitC,GAAgBlhC,GAAOyW,MAAKipB,GAAKA,EAAE1wB,IAAI,QAAU/a,MAExD+S,QAAO04B,GAAKA,IACZ12B,S,gBCbE,MAAM44B,GAAkB5hC,GAASA,EAAMmzB,aAGjC0O,GAAsB7hC,GAAS4hC,GAAgB5hC,GAAOgP,IAAI,QAC1D8yB,IAAoBroB,EAAAA,GAAAA,GAC/BooB,IACAnqC,GAAQA,EAAKgd,KAAIqtB,GAAKA,EAAE/yB,IAAI,UAEjBgzB,GAAqBA,CAAChiC,EAAO/L,IAAO4tC,GAAoB7hC,GAAOyW,MAAKwrB,GAAKA,EAAEjzB,IAAI,QAAU+iB,SAAS99B,EAAI,MAItGiuC,GAA2BliC,GAAS4hC,GAAgB5hC,GAAO0R,MAAM,CAAC,SAAU,SAC5EywB,GAAkBA,CAACniC,EAAOkyB,IACrCgQ,GAAyBliC,GAAOgP,IAAI,mBAAmByH,MAAK0jB,GAAKA,EAAEnrB,IAAI,YAAckjB,IAE1EkQ,GAA4BpiC,GAASkiC,GAAyBliC,GAAOgP,IAAI,eAEzEqzB,IAAqB5oB,EAAAA,GAAAA,IAChCzZ,GAASoiC,GAA0BpiC,GAAO0U,KAAI6Z,GAAKA,EAAE3qB,OAAO,QAAQolB,GAAQE,GAAalpB,EAAOgpB,SAChGsZ,GAAeA,IAGJC,GAA8BviC,IAASwiC,EAAAA,GAAAA,IAAeH,GAAmBriC,GAAOy8B,SAAQlO,GAAKA,EAAEvf,IAAI,WACnGyzB,GAAwBziC,GACnCoiC,GAA0BpiC,GAAO0U,KAAI6Z,IAAMnlB,EAAAA,GAAAA,QAAO,CAAEs5B,SAAUnU,EAAEvf,IAAI,QAAS2zB,QAASpU,EAAE7c,MAAM,CAAC,OAAQ,WAE5FkxB,IAAsBnpB,EAAAA,GAAAA,GACjC4oB,IACAC,GAAeA,EAAY5tB,KAAI6Z,GAAKA,EAAEvf,IAAI,QAAQkf,IAAI,OAAQK,EAAEvf,IAAI,aAGzD6zB,GAAwB7iC,GAAS4iC,GAAoB5iC,GAAO0U,KAAIgC,GAAKA,EAAE1H,IAAI,QAC3E8zB,GAA6BA,CAAC9iC,EAAOuwB,IAChD8R,GAAmBriC,GAAOyW,MAAK8X,GAAKA,EAAE7c,MAAM,CAAC,OAAQ,SAAW6e,IAAQvhB,IAAI,QAQjE+zB,IAAyCtpB,EAAAA,GAAAA,GACpD8oB,IACAvZ,GACEA,EAAKtU,KAAIyU,GAAKA,EAAEna,IAAI,iBAAiB0F,KAAIsuB,GAAMA,EAAGh0B,IAAI,QAAOi0B,QAAQ9Z,EAAEna,IAAI,WAGlEk0B,GAA+BljC,GAASkiC,GAAyBliC,GAAOgP,IAAI,cAC5Em0B,GAA0BnjC,GAASkiC,GAAyBliC,GAAOgP,IAAI,SACvEo0B,GAAwBpjC,GAASkiC,GAAyBliC,GAAOgP,IAAI,WACrEpZ,GAA0BoK,GAASkiC,GAAyBliC,GAAOgP,IAAI,aAGvEq0B,GAAyBrjC,GAAS4hC,GAAgB5hC,GAAO0R,MAAM,CAAC,SAAU,OAC1E4xB,GAAiCtjC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,+BAC5Eu0B,GAA2BvjC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,yBACtEw0B,GAAyBxjC,GAASgiC,GAAmBhiC,EAAOujC,GAAyBvjC,IACrFyjC,GAA0BzjC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,wBACrE00B,GAA8B1jC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,WACzE20B,GAAmC3jC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,gBAC9E40B,GAAaA,CAAC5jC,EAAO6jC,KAAaR,GAAuBrjC,GAAOgP,IAAI,mBAAmBygB,IAAIoU,GAG3FC,GAAsC9jC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,mBACjF+0B,GAAkCA,CAAC/jC,EAAOkyB,EAAQ3B,IAAW8S,GAAuBrjC,GAAOgP,IAAI,gBACzGjI,MAAKi9B,GACJA,EAASh1B,IAAI,YAAckjB,GAAU8R,EAASh1B,IAAI,YAAcuhB,IAEvD0T,GAAyCA,CAACjkC,EAAOkyB,EAAQ3B,IAAW8S,GAAuBrjC,GAAOgP,IAAI,qBAChHjI,MAAKi9B,GACJA,EAASh1B,IAAI,YAAckjB,GAAU8R,EAASh1B,IAAI,YAAcuhB,IAEvD2T,GAAsCA,CAAClkC,EAAOkyB,EAAQ3B,IACjE8S,GAAuBrjC,GAAOgP,IAAI,0BAA0BjI,MAAKo9B,GAC/DA,EAASn1B,IAAI,YAAckjB,GAAUiS,EAASn1B,IAAI,YAAcuhB,IAGvD6T,GAAuCpkC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,0BAClFq1B,GAAiDrkC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,oCAG5Fs1B,GAA6BtkC,GAAS4hC,GAAgB5hC,GAAO0R,MAAM,CAAC,SAAU,iBAC9E6yB,GAAgCvkC,GAASskC,GAA2BtkC,GAAO0U,KAAIyU,IAC1F,MAAM2I,EAAI3I,EAAErC,MAAM,KAElB,OAAOiL,SAASD,EAAEA,EAAEj4B,OAAS,GAAI,GAAG,IAGzB2qC,GAA4BA,CAACxkC,EAAOkyB,EAAQ3B,IAAW+T,GAA2BtkC,GAAOujB,SAAS,GAAGgN,KAAU2B,KAE/GuS,GAAuCA,CAACzkC,EAAO/L,IAC1D6uC,GAA2B9iC,EAAO/L,GAAIiO,OAAMinB,GAAKmb,GAA2BtkC,GAAOujB,SAAS,GAAGtvB,KAAMk1B,EAAEna,IAAI,WAGhG01B,GAA2C1kC,GACtDoiC,GAA0BpiC,GACvB0U,KAAIsZ,IAAS7pB,EAAAA,GAAAA,KAAI,CAChBosB,OAAQvC,EAAMtc,MAAM,CAAC,OAAQ,OAC7B7Y,QAASiqC,GAA2B9iC,EAAOguB,EAAMtc,MAAM,CAAC,OAAQ,QAC7DgD,KAAIyU,GAAKA,EAAEna,IAAI,iBAAiB0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOi0B,QAAQ9Z,EAAEna,IAAI,SACpEghB,SAAQ,OAIJ2U,GAA+B3kC,GAAS4hC,GAAgB5hC,GAAO0R,MAAM,CAAC,SAAU,aAGhFkzB,GAAwB5kC,GAAS4hC,GAAgB5hC,GAAOgP,IAAI,UAC5D61B,GAAsC7kC,GAAS4kC,GAAsB5kC,GAAOgP,IAAI,wBAGhF81B,GAA6B9kC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,2BACxE+1B,GAA2C/kC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,6BACtFg2B,GAAqChlC,GAASqjC,GAAuBrjC,GAAOgP,IAAI,uBCxHhFi2B,GAAUjlC,GAASA,EAAMklC,KAAKC,aCI9BC,GAAsBplC,GAASA,EAAMqlC,aAAar2B,IAAI,QAEtDs2B,IAAkB7rB,EAAAA,GAAAA,IAC7BzZ,GAASolC,GAAoBplC,GAAOgP,IAAI,UAAUhG,WAClDhJ,GAASolC,GAAoBplC,GAAOgP,IAAI,aACxCgd,GAAAA,GAIWuZ,GAAyBvlC,GAASA,EAAMqlC,aAAar2B,IAAI,uBAGzDw2B,GAAkCxlC,GAASA,EAAMqlC,aAAar2B,IAAI,oBAGlEy2B,GAAoBzlC,GAASA,EAAMqlC,aAAar2B,IAAI,MACpD02B,GAAwC1lC,GAASylC,GAAkBzlC,GAAOgP,IAAI,sCAC9E22B,GAA2B3lC,GAASylC,GAAkBzlC,GAAOgP,IAAI,yBACjE42B,GAAiC5lC,GAASylC,GAAkBzlC,GAAOgP,IAAI,+BACvE62B,GAA+B7lC,GAASylC,GAAkBzlC,GAAOgP,IAAI,iBACrE82B,GAA0BA,CAAC9lC,EAAO/L,IAAOwxC,GAAkBzlC,GAAOgP,IAAI,yBAAyBygB,IAAIx7B,GACnG8xC,GAAuB/lC,GAASylC,GAAkBzlC,GAAOgP,IAAI,qBAC7Dg3B,GAAwBA,CAAChmC,EAAOimC,IAC3CT,GAAgCxlC,GAAOgP,IAAI,kBAAkBjI,MAAK9S,GAAMA,IAAOgyC,IClBpEC,GAAsBlmC,GAASA,EAAMmmC,eAAen3B,IAAI,MACxDo3B,GAA0BpmC,GAASkmC,GAAoBlmC,GAAOgP,IAAI,UAEzEq3B,GAAmBA,CAAC3G,EAAG9tE,IACZ,SAAXA,EACK8tE,EAAEhuB,MAAM,CAAC,eAAgB9/C,IAAS0xD,cAG5B,YAAX1xD,EACK8tE,EAAEhuB,MAAM,CAAC,eAAgB,gBAG1BguB,EAAEhuB,MAAM,CAAC,eAAgB,QAAS9/C,IAGtC00E,GAAuBA,CAACH,EAAgBd,EAAczzE,IAAWu0E,EACpEzxB,KAAI6xB,GAAgBA,EAAavO,MAChC,CAAC,eAAgB,gBACjBuO,EAAa70B,MAAM,CAAC,eAAgB,mBACjCgD,KAAIzgB,GAAMoxC,EAAa5uB,MAAKyX,GAAOA,EAAIlf,IAAI,QAAU/a,MACrD+S,QAAOknB,GAAOA,OAElBt8D,QAAO8tE,GAAK2G,GAAiB3G,EAAG9tE,KAE7B40E,GAA+BC,IACnChtB,EAAAA,GAAAA,GAAwBgtB,EAAUnB,GAAiBc,GAAyBE,IAIjEI,GAAwB1mC,GAASA,EAAMmmC,eAAen3B,IAAI,QACjE23B,GAA0B3mC,GAAS0mC,GAAsB1mC,GAAOgP,IAAI,kBACpE43B,GAAkC5mC,GAAS0mC,GAAsB1mC,GAAOgP,IAAI,0BAGrE63B,GAAoBL,GAA6BG,IACjDG,GAA4BN,GAA6BI,IACzDG,GAAuBP,IAJFxmC,GAAS2mC,GAAwB3mC,GAAOuO,OAAOq4B,GAAgC5mC,MAMpGgnC,GAAyBhnC,GAAS0mC,GAAsB1mC,GAAOgP,IAAI,SACnEi4B,IAA2BxtB,EAAAA,GAAAA,GACtCstB,GACAX,GACAnB,IACA,CAACkB,EAAgBv0E,EAAQszE,KACvB,MAAMgC,GAAU1E,EAAAA,GAAAA,IAAe2D,EAAezxB,KAAIgrB,GAAKA,EAAEhuB,MAAM,CAAC,eAAgB,mBAAkBse,SAAQ,IACpGmX,EAAYD,EAAQxyB,KAAIod,GAAKA,EAAE9iB,IAAI,QAEnCo4B,EACJjB,EAAen/B,QAAO04B,IAAMA,EAAEhuB,MAAM,CAAC,eAAgB,mBAAmB3K,MAAK4vB,GAAKwQ,EAAU5jB,SAASoT,OAGvG,IAAI/1B,EAASsmC,EAAQxyB,KACnBwZ,GAAOA,EAAIA,IACT,iBACAA,EAAIlf,IAAI,0BACL0F,KAAI2yB,GAAOlB,EAAe1vB,MAAKipB,GAAKA,EAAEhuB,MAAM,CAAC,eAAgB,SAAW21B,EAAIr4B,IAAI,kBAChFhI,QAAO04B,GAAKA,IACZ9tE,QAAO8tE,GAAK2G,GAAiB3G,EAAG9tE,KAChC8iD,KAAIgrB,GAAKA,EAAE4H,SAAS,CAAC,eAAgB,iBAAiBC,GAAQA,EAAK7yB,KAAI8yB,GAAKA,EAAE/M,OAAO,iCAEvFA,OAAO,4BAWZ,OARK2M,EAAwBjwB,YAC3BvW,EAASA,EAAOC,MAAKuI,EAAAA,GAAAA,QAAO,CAC1BnV,GAAI,KACJ6a,KAAMo2B,EAAKl2B,IAAI,aACfm3B,eAAgBiB,MAIbxmC,EACJ8T,KAAIwZ,GAAOA,EAAIA,IAAI,QAASA,EAAIlf,IAAI,kBAAkB0F,KAAIgrB,GAAKA,EAAEhuB,MAAM,CAAC,eAAgB,YAAWgJ,QAClG,CAACC,EAAK8sB,IACJ9sB,EACG/W,OAAO,QAAQ8jC,GAAQA,EAAOD,EAAMz4B,IAAI,UACxCpL,OAAO,YAAY+jC,GAAYA,EAAWF,EAAMz4B,IAAI,cACpDpL,OAAO,gBAAgB8zB,GAAgBA,EAAe+P,EAAMz4B,IAAI,kBAChEpL,OAAO,mBAAmBgkC,GAAmBA,EAAkBH,EAAMz4B,IAAI,uBAE9E5F,EAAAA,GAAAA,QAAO,CACLs+B,KAAM,EACNC,SAAU,EACVjQ,aAAc,EACdkQ,gBAAiB,QAGpBh2E,QAAOs8D,GACgB,OAAlBA,EAAIlf,IAAI,MACH,0BAGM,SAAXp9C,EACKs8D,EAAIlf,IAAIp9C,GAAQ0xD,eAGjB4K,EAAIxc,MAAM,CAAC,QAAS9/C,KAC5B,IAKKi2E,GAAgC7nC,GAASkmC,GAAoBlmC,GAAOgP,IAAI,gBACxE84B,GAA2B9nC,GAASkmC,GAAoBlmC,GAAOgP,IAAI,WACnE+4B,GAA2B/nC,GAASkmC,GAAoBlmC,GAAOgP,IAAI,WACnEg5B,GAA6BhoC,GAASkmC,GAAoBlmC,GAAOgP,IAAI,eACrEi5B,GAA4BjoC,GACvCkmC,GAAoBlmC,GACjBgP,IAAI,eAAe0F,KAClBzgB,GAAM8yC,GAAqB/mC,GACxByW,MAAKipB,GAAKA,EAAEhuB,MAAM,CAAC,eAAgB,SAAWzd,MAElD+S,QAAO04B,GAAKA,IACZ12B,SAMQk/B,GAAuDloC,GADvBA,IAASA,EAAMmmC,eAAez0B,MAAM,CAAC,aAAc,OAE9Fy2B,CAA8BnoC,GAAOgP,IAAI,6BAI9Bo5B,GAAkCpoC,GAASA,EAAMmmC,eAAez0B,MAAM,CAAC,aAAc,SACrF22B,GAAuCroC,GAASooC,GAAgCpoC,GAAOgP,IAAI,GAC3Fs5B,GAAmDtoC,GAASooC,GAAgCpoC,GAAOgP,IAAI,GACvGu5B,GAA4CvoC,GAASooC,GAAgCpoC,GAAOgP,IAAI,GAChGw5B,GAA+CxoC,IAC1D,MAAMyoC,EAA4BP,GAAqDloC,GAAOgJ,SAASgjB,OACjG0c,EAAQD,EAA0BE,KAAK,OAAOC,cAC9CC,GAAalzB,EAAAA,GAAAA,GAAU8yB,EAA0BE,KAAK,MAE5D,OAAOP,GAAgCpoC,GAAOgP,IAAI,GAAGysB,MAAM,CAAEiN,QAAOG,cAAa,EAGtEC,GAAyC9oC,GAASooC,GAAgCpoC,GAAOgP,IAAI,GAC7F+5B,GAA2C/oC,GAASooC,GAAgCpoC,GAAOgP,IAAI,GAC/Fg6B,GAA2ChpC,GAASooC,GAAgCpoC,GAAOgP,IAAI,GAE/Fi6B,GAA8CjpC,GACzDooC,GAAgCpoC,GAAO0R,MAAM,CAAC,IAAK,OAAQ,EAAG,aAInDw3B,GAA6BlpC,GAASA,EAAMmmC,eAAez0B,MAAM,CAAC,QAAS,SAC3Ey3B,GAA2BnpC,GAASkpB,GAAalpB,EAAOkpC,GAA2BlpC,GAAOgP,IAAI,SAC9Fo6B,GAA4BppC,GAASkpB,GAAalpB,EAAOkpC,GAA2BlpC,GAAOgP,IAAI,UAC/Fq6B,GAA6BrpC,GAASkpC,GAA2BlpC,GAAOgP,IAAI,QAC5Es6B,GAA8BtpC,GAASkpC,GAA2BlpC,GAAOgP,IAAI,SC/IpFu6B,GAAmC9C,IAAYhtB,EAAAA,GAAAA,GACnDgtB,EACA7wB,GAAAA,GACA4zB,GACA,CAACtnB,EAAO3e,EAAYijB,KAC4D,IAA1E,CAACjd,GAAAA,GAAAA,KAAsBA,GAAAA,GAAAA,UAA0B9B,QAAQlE,IAAsBijB,EAC1EtE,EAAMlb,QAAOhB,GAAKA,EAAEgJ,IAAI,eAG7BzL,IAAegG,GAAAA,GAAAA,mBACV2Y,EAAMlb,QAAOhB,GAAKA,EAAEgJ,IAAI,kCAG1BkT,IAIEunB,GAAazpC,GAASA,EAAM0pC,QAC5BC,GAA4BJ,IAAiCvpC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,uBACzGk4B,GAA+B5pC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,qBAE3Em4B,GAAqBN,IAAiCvpC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,gBAClGo4B,GAAkB9pC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,WAC9Dq4B,IAAwBtwB,EAAAA,GAAAA,IAAwBzZ,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,gBAAegF,GAAKA,IAChHszB,GAAqBT,IAAiCvpC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,gBAClGu4B,GAAwBjqC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,cACpEw4B,GAAsBX,IAAiCvpC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,iBACnGy4B,GAAyBnqC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,eACrE04B,GAA0BpqC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,gBACtE24B,GAA4Bd,IAAiCvpC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,uBAEzG44B,IAAqB7wB,EAAAA,GAAAA,IAAwBzZ,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,sBACpGq4B,IACA,CAAC9tC,EAAKsuC,IACJA,EAAUvjC,QAAO0P,GAAKza,EAAIsnB,SAAS7M,EAAE1H,IAAI,WAGhCw7B,IAAoB/wB,EAAAA,GAAAA,IAC/BzZ,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,cAC5C+Z,GAAAA,GACA7V,GAAAA,GACArC,EAAAA,GACAg2B,IAAiCvpC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,gBAC7E,CAAC+4B,EAAUphC,EAAW9F,EAAYmnC,EAAiBC,KACjD,GAAIthC,IAAcC,GAAAA,GAAAA,QAChB,OAAOqhC,EAGT,MAAMC,EAAoBF,EAAgBh2B,KAAIgC,GAAKA,EAAE1H,IAAI,QAEzD,OACGy7B,IAAYrhC,EAAAA,GAAAA,QAAO,KACjBpC,QACC0P,GAAKA,EAAE1H,IAAI,qBAAuB47B,EAAkBzzB,WAAayzB,EAAkBrnB,SAAS7M,EAAE1H,IAAI,SACnG,IAII67B,GAAuB7qC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,aAEnEo5B,GAAwB9qC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,iBACpEq5B,GAA6B/qC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,sBACzEs5B,GAA4BhrC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,qBACxEu5B,GAA2CjrC,GAASgrC,GAA0BhrC,GAAOgH,QAAOkkC,GAAOA,EAAIl8B,IAAI,kBAC3Gm8B,GAAwCnrC,GAASgrC,GAA0BhrC,GAAOgH,QAAOkkC,GAAOA,EAAIl8B,IAAI,mBAExGo8B,GAA2BprC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,wBACvE25B,GAA8BrrC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,uBAC1E45B,GAAmCtrC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,4BAC/E65B,GAAkCvrC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,2BAC9E85B,GAAqCA,CAACxrC,EAAO/L,IACxDw1C,GAAWzpC,GAAO0R,MAAM,CAAC,WAAY,yBAA0Bzd,EAAGqJ,aAEvDmuC,GAA0CzrC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,mCAEtFg6B,GAA4B1rC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,WAAY,kBAC1Ei6B,GAAgC3rC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,WAAY,kBAAkBk6B,SAAS5iC,SAEzG6iC,GAA8BA,CAAC7rC,EAAO/D,IAAQA,EAAIyY,KAAIzgB,GAD1B63C,EAAC9rC,EAAO/L,IAAOy3C,GAA0B1rC,GAAOgP,IAAI/a,EAAGqJ,YACvBwuC,CAA0B9rC,EAAO/L,KAAK+S,QAAO0P,GAAKA,IAAG1N,SACjH+iC,GAAsB/rC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,eAClEs6B,GAA0BhsC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,oBACtEu6B,GAAoBjsC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,aAChEw6B,GAA0BlsC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,mBACtEy6B,GAAiCnsC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,0BAC7E06B,GAAsBpsC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,eAClE26B,GAAqBrsC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,cACjE46B,GAAyBtsC,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,kBACrE66B,IAAuC9yB,EAAAA,GAAAA,GAClDsyB,GACA73B,EAAAA,GACAC,EAAAA,GACAC,EAAAA,IACA,CAAC6lB,EAAYuS,EAAiBC,EAA0BC,IACtDzS,EACGroE,QAAOuoE,GAAKrC,KAAK6U,IAAIxS,EAAEnrB,IAAI,YAC3B49B,MAAM,EAAGF,EAAuBD,EAA2BD,GAC3Dj+B,OAAO0rB,EAAWjzB,QAAOmzB,GAAqB,YAAhBA,EAAEnrB,IAAI,SACpCp9C,QAAOuoE,GAAKA,EAAEnrB,IAAI,aAIZ69B,IAA4BpzB,EAAAA,GAAAA,IACvCzZ,GAASypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,uBAC5Co7B,GAAoBA,EAAiBC,SAAQjb,GAAKA,EAAE9iB,IAAI,kCAI7Cg+B,GAAqChtC,GAvFFA,IAAS2pC,GAA0B3pC,GAAOgH,QAAO0P,GAAKA,EAAE1H,IAAI,aAuFjDi+B,CAAiCjtC,GAAO0U,KAAIgC,GAAKA,EAAE1H,IAAI,QAerGk+B,GAA2BltC,GACtCypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,iBAAiB1K,QAAO0P,GAAKA,EAAE1H,IAAI,eAAcp9C,QAAO8kD,GAAKA,EAAE1H,IAAI,QAE3Fm+B,GAA0BntC,GACrCypC,GAAWzpC,GAAO0R,MAAM,CAAC,SAAU,aAAa1K,QAAO0P,GAAKA,EAAE1H,IAAI,eAAcp9C,QAAO8kD,GAAKA,EAAE1H,IAAI,QAGvFo+B,IAAsC3zB,EAAAA,GAAAA,GACjDmwB,GACAp2B,EAAAA,IACA,CAACxS,EAAKqsC,IAAYrsC,EAAIgG,QAAO0P,GAAK22B,EAAQ9pB,SAAS7M,EAAE1H,IAAI,WAG9Cs+B,IAAmC7zB,EAAAA,GAAAA,GAC9CmwB,GACAp2B,EAAAA,IACA,CAACxS,EAAKqsC,IACAA,EAAQl2B,UACHnW,EAGFA,EAAIgG,QAAO0P,GAAK22B,EAAQ9pB,SAAS7M,EAAE1H,IAAI,WAGrCu+B,IAA8B9zB,EAAAA,GAAAA,GACzCoxB,GACAp3B,EAAAA,IACA,CAACzS,EAAKqsC,IAAYrsC,EAAIgG,QAAO0P,GAAK22B,EAAQ9pB,SAAS7M,EAAE1H,IAAI,WAE9Cw+B,IAA+B/zB,EAAAA,GAAAA,GAC1CswB,GACAr2B,EAAAA,IACA,CAAC1S,EAAKqsC,IAAYrsC,EAAIgG,QAAO0P,GAAK22B,EAAQ9pB,SAAS7M,EAAE1H,IAAI,WAI9Cy+B,GAA2BA,CAACztC,EAAO/L,IAAOw1C,GAAWzpC,GAAO0R,MAAM,CAAC,WAAY,eAAgBzd,EAAGqJ,aCzKlGowC,GAAiB1tC,GAASA,EAAM2tC,QAAQ3+B,IAAI,QAE5C4+B,GAAoB5tC,GAAS0tC,GAAe1tC,GAAOgP,IAAI,QACvD6+B,GAAmB7tC,GAAS0tC,GAAe1tC,GACrD0R,MAAM,CAAC,SAAU,WACjBnD,OAAOm/B,GAAe1tC,GAAO0R,MAAM,CAAC,SAAU,YACpCo8B,GAAkB9tC,GAAS0tC,GAAe1tC,GAAOgP,IAAI,SAErD++B,GAAuB/tC,GAAS8tC,GAAgB9tC,GAAOgP,IAAI,SAG3Dg/B,GAAehuC,GAASA,EAAM2tC,QAAQ3+B,IAAI,MAC1Ci/B,GAA2BjuC,GAASguC,GAAahuC,GAAOgP,IAAI,kBAC5Dk/B,GAAmBluC,GAASguC,GAAahuC,GAAOgP,IAAI,UACpDm/B,GAA0BnuC,GAASguC,GAAahuC,GAAOgP,IAAI,iBAC3Do/B,GAAiBpuC,GAASguC,GAAahuC,GAAOgP,IAAI,QAClDq/B,GAA+BruC,GAASguC,GAAahuC,GAAOgP,IAAI,sBAChEs/B,GAAmCtuC,GAASguC,GAAahuC,GAAOgP,IAAI,0BAEpEu/B,GAAwBvuC,GAASguC,GAAahuC,GAAOgP,IAAI,eAEzDw/B,GAA0BxuC,GAASguC,GAAahuC,GAAOgP,IAAI,wBAC3Dy/B,GAA2BzuC,GAASguC,GAAahuC,GAAOgP,IAAI,yBAG5D0/B,GAA0B1uC,GAASA,EAAM2tC,QAAQ3+B,IAAI,UAErD2/B,IAA0Bl1B,EAAAA,GAAAA,GACrCi1B,IACAh1B,GAAWA,EAAQ1S,QAAOhP,GAASgoB,GAAAA,KAAAA,OAAYhoB,OAGpC42C,IAAgCn1B,EAAAA,GAAAA,GAC3Ci1B,IACAh1B,GAAWA,EAAQ1S,QAAOhP,GAA4B,iBAAXA,MAMhC62C,GAA+B7uC,GADJA,IAASA,EAAM2tC,QAAQ3+B,IAAI,kBACd8/B,CAAyB9uC,GAAOgP,IAAI,YAI5E+/B,GAA4B/uC,GAASA,EAAM2tC,QAAQ3+B,IAAI,mBACvDggC,GAAgChvC,GAAS+uC,GAA0B/uC,GAAOgP,IAAI,YAC9EigC,GAAmCjvC,GAAS+uC,GAA0B/uC,GAAOgP,IAAI,0BACjFkgC,GAAoClvC,GAAS+uC,GAA0B/uC,GAAOgP,IAAI,2BAClFmgC,GAAsCnvC,GAAS+uC,GAA0B/uC,GAAOgP,IAAI,c,mDC3B1F,MAAMogC,GAAoBpvC,GAASA,EAAMqvC,UAAUrgC,IAAI,QACjDsgC,GAAgBtvC,GAASovC,GAAkBpvC,GAAOgP,IAAI,cACtDugC,GAAgCvvC,GAASovC,GAAkBpvC,GAAOgP,IAAI,qBACtEwgC,GAAmBA,CAACxvC,EAAO/L,IAAOq7C,GAActvC,GAAOyW,MAAKsrB,GAAKA,EAAE/yB,IAAI,QAAU/a,IAEjFw7C,GAA2BzvC,GAASsvC,GAActvC,GAAO+jB,OAAQpQ,EAAAA,EAAAA,IAAmC3T,GAGpG0vC,GAAkB1vC,GAASA,EAAMqvC,UAAUrgC,IAAI,MAC/C2gC,GAAwB3vC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,WAC5D4gC,GAA0B5vC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,eAC9D6gC,GAAwB7vC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,aAC5D8gC,GAA0B9vC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,eAC9D+gC,GAAyB/vC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,cAC7DghC,GAA8BhwC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,mBAClEihC,GAAoCjwC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,yBACxEkhC,GAA6BlwC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,kBACjEmhC,GAA+BnwC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,oBACnEohC,GAAqBpwC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,UACzDqhC,GAAuBrwC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,YAC3DshC,GAAwBtwC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,aAC5DuhC,GAAgCvwC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,qBACpEwhC,GAAkCxwC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,uBACtEyhC,GAA+BzwC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,oBACnE0hC,GAA6B1wC,GAAS0vC,GAAgB1vC,GAAOgP,IAAI,kBAGxE2hC,GAAqB3wC,GAASA,EAAMqvC,UAAU39B,MAAM,CAAC,gBAAiB,OAC/Dk/B,GAAiC5wC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,SACxE6hC,GAAoC7wC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,YAC3E8hC,GAAoC9wC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,YAE3E+hC,GAAgD/wC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,wBAEvFgiC,GAAgDhxC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,gCACvFiiC,GAAoCjxC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,oBAC3EkiC,GAAkDlxC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,kCACzFmiC,GAAkDnxC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,kCACzFoiC,GAAiDpxC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,iCACxFqiC,GAAyCrxC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,iBAChFsiC,GAAqDtxC,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,6BAE5FuiC,GAAuBvxC,GAASA,EAAMqvC,UAAU39B,MAAM,CAAC,gBAAiB,SACxE8/B,GAAsCxxC,GAASuxC,GAAqBvxC,GAAOgP,IAAI,cAC/EyiC,GAAsCzxC,GAASuxC,GAAqBvxC,GAAOgP,IAAI,cAE/E0iC,GAAiD1xC,GAC5DuxC,GAAqBvxC,GAAO0R,MAAM,CAAC,OAAQ,kBAAmB,WAKnDigC,GAAsC3xC,GACjDuxC,GAAqBvxC,GAAO0R,MAAM,CAAC,OAAQ,MAAO,cAAetI,EAAAA,GAAAA,QAAO,IAE7DwoC,GAA2D5xC,GACtEuxC,GAAqBvxC,GAAO0R,MAAM,CAAC,OAAQ,oBAAqB,mBAErDmgC,GAAmD7xC,GAC9DuxC,GAAqBvxC,GAAO0R,MAAM,CAAC,OAAQ,oBAAqB,WAErDogC,GAAoC9xC,GAASuxC,GAAqBvxC,GAAO0R,MAAM,CAAC,OAAQ,aACxFqgC,GAAiC/xC,GAASuxC,GAAqBvxC,GAAOgP,IAAI,SAC1EgjC,GAAoChyC,GAASuxC,GAAqBvxC,GAAOgP,IAAI,YAC7EijC,GAAiDjyC,GAASuxC,GAAqBvxC,GAAO0R,MAAM,CAAC,cAAe,eAE5GwgC,IAA4Bz4B,EAAAA,GAAAA,IAnCYzZ,GAAS2wC,GAAmB3wC,GAAOgP,IAAI,iBAqC1FuiC,IACA,CAACY,EAAcC,IAAUA,EAAMlkB,IAAI,OAAQikB,EAAanjC,IAAIojC,EAAMpjC,IAAI,cAAe,SAG1EqjC,IAAuC54B,EAAAA,GAAAA,GAClDy4B,GACAZ,IACA,CAACc,EAAOE,IAAwC,kBAA5BF,EAAMpjC,IAAI,eAAqCsjC,IAGxDC,GAAyCvyC,GAASuxC,GAAqBvxC,GAAOgP,IAAI,iBAClFwjC,GAAoDxyC,GAC/DuxC,GAAqBvxC,GAAOgP,IAAI,8BAA+B5F,EAAAA,GAAAA,QAAO,IAG3DqpC,IAA2Dh5B,EAAAA,GAAAA,GACtEi5B,GAAAA,GACAT,GACAM,IACA,CAAC7lC,EAAenJ,EAAYuS,IAC1BpJ,EAAc1F,QAAOwgC,GAAKA,EAAEx4B,IAAI,gBAAkBzL,GAAcikC,EAAEx4B,IAAI,QAAU8G,MAIvE68B,GAAwC3yC,IACnD,MAAMoyC,EAAQb,GAAqBvxC,GAEnC,OAAOoyC,EAAMpjC,IAAI,eAAgBojC,EAAM1gC,MAAM,CAAC,cAAe,iBAAiB,EAGnEkhC,GAAkC5yC,IAC7C,MAAMoyC,EAAQb,GAAqBvxC,GAEnC,OAAOoyC,EAAMpjC,IAAI,SAAUojC,EAAM1gC,MAAM,CAAC,cAAe,WAAW,EAGvDmhC,GAAoC7yC,IAC/C,MAAMoyC,EAAQb,GAAqBvxC,GAEnC,OAAOoyC,EAAMpjC,IAAI,WAAYojC,EAAM1gC,MAAM,CAAC,cAAe,YAAavH,GAAAA,GAAAA,cAAwB,EAG1F2oC,GAA4BvvC,IAC8C,IAA1E,CAACgG,GAAAA,GAAAA,SAA0BA,GAAAA,GAAAA,MAAsB9B,QAAQlE,GACpD,CACLkG,GAAAA,GAAAA,QACAA,GAAAA,GAAAA,kBACAA,GAAAA,GAAAA,WACAA,GAAAA,GAAAA,WAIAlG,IAAegG,GAAAA,GAAAA,mBACV,CACLE,GAAAA,GAAAA,cACAA,GAAAA,GAAAA,yBAIG,CACLA,GAAAA,GAAAA,QACAA,GAAAA,GAAAA,WAISspC,IAA2Ct5B,EAAAA,GAAAA,GACtD83B,GACAU,IACA,CAACG,EAAO7uC,KACuF,IAAzF,CAAC,iBAAkB,kBAAmB,aAAakE,QAAQ2qC,EAAMpjC,IAAI,eAChE,GAGF8jC,GAA0BvvC,KAIxByvC,GAAqChzC,GAASuxC,GAAqBvxC,GAAOgP,IAAI,aAC9EikC,GAAoCjzC,GAASuxC,GAAqBvxC,GAAOgP,IAAI,YAC7EkkC,GAAkClzC,GAASuxC,GAAqBvxC,GAAOgP,IAAI,UAC3EmkC,GAAwCnzC,GAASuxC,GAAqBvxC,GAAOgP,IAAI,gBAOjFokC,GAAyDpzC,GACpEoxB,QAAQmgB,GAAqBvxC,GAAO0R,MAAM,CAAC,OAAQ,oBAAqB,YAG7D2hC,IAA2B55B,EAAAA,GAAAA,GACtC83B,GACAV,IACA,CAACuB,EAAOkB,KACN,IAAIC,GAAc,EAUlB,OAPEA,EADe,eAAbD,EACYliB,QAAQghB,EAAMpjC,IAAI,cACV,aAAbskC,EACKliB,QAAQghB,EAAMpjC,IAAI,cAAgBojC,EAAMpjC,IAAI,aAAa/H,WAAW,mBAEpEmqB,QAAQghB,EAAMpjC,IAAI,aAAeojC,EAAMpjC,IAAI,WAGpDukC,CAAW,IAITC,IAA8B/5B,EAAAA,GAAAA,GACzC83B,GACA8B,GACArC,GACAU,GACAT,GACAU,GACAR,GACAU,GACAT,GACAF,GACAU,IACA,CAACQ,EAAOmB,EAAaE,EAASC,EAAQC,EAAUC,EAAYC,EAASC,EAAQC,EAASC,EAASC,KACzFC,EAAAA,GAAAA,IAA0B9B,GACrBhhB,QAAQghB,EAAMpjC,IAAI,mBAAqBukC,GAG5CY,EAAAA,GAAAA,IAAuB/B,GAClBhhB,QAAQqiB,GAAWC,IAAWH,GAGnCa,EAAAA,GAAAA,IAAwBhC,GACnBmB,GAGLc,EAAAA,GAAAA,IAAWjC,GACNhhB,QAAQuiB,IAAaJ,IAAgBK,EAAWz8B,WAGrDm9B,EAAAA,GAAAA,IAAyBlC,IACvBmC,EAAAA,GAAAA,IAA2BnC,GACtBhhB,QAAQ6iB,GAGV7iB,QAAQ4iB,GAAWC,IAAmBV,GAG3CiB,EAAAA,GAAAA,IAAyBpC,GACpBhhB,QAAQyiB,GAAWC,IAAWP,GAGnCkB,EAAAA,GAAAA,IAAwBrC,GACnBhhB,QAAQ2iB,IAAYR,GAGzBmB,EAAAA,GAAAA,IAAYtC,GACPhhB,QAAQghB,EAAM1gC,MAAM,CAAC,OAAQ,aAGlCijC,EAAAA,GAAAA,IAAsBvC,IACjBhhB,QAAQwjB,MAAOxC,EAAM1gC,MAAM,CAAC,OAAQ,qBAAuB,IAAImjC,SAAWzC,EAAM1gC,MAAM,CAAC,OAAQ,qBAO/FojC,IAAoCr7B,EAAAA,GAAAA,GAC/C83B,GACAiC,GACAnC,IACA,CAACe,EAAOxvC,EAAUmyC,KAChB,IAAIC,EAAAA,GAAAA,IAAa5C,GAAQ,CACvB,MAAM6C,EAAW7C,EAAMpjC,IAAI,UAAYojC,EAAMpjC,IAAI,YAEjD,OAAOoiB,QAAQ2jB,GAAiBE,EAClC,CAEA,OAAOryC,CAAQ,IAKNsyC,GAAuBl1C,GAASA,EAAMqvC,UAAUrgC,IAAI,YAEpDmmC,IAA6B17B,EAAAA,GAAAA,GACxCy7B,GACAvF,IACA,CAACyF,EAAmBC,IACdA,EACKD,GAGFE,EAAAA,GAAAA,IAAcF,KAGZG,GAA6Bv1C,GAASk1C,GAAqBl1C,GAAOgP,IAAI,UACtEwmC,GAA8Bx1C,GAASk1C,GAAqBl1C,GAAOgP,IAAI,WACvEymC,GAAmCz1C,GAASm1C,GAA2Bn1C,GAAOgP,IAAI,UAClF0mC,GAAoC11C,GAASm1C,GAA2Bn1C,GAAOgP,IAAI,WACnF2mC,GAA2B31C,GAASk1C,GAAqBl1C,GAAOgP,IAAI,QACpE4mC,GAAsC51C,GAASk1C,GAAqBl1C,GAAO0R,MAAM,CAAC,SAAU,SAAU,eACtGmkC,GAAyC71C,GAASk1C,GAAqBl1C,GAAO0R,MAAM,CAAC,SAAU,uBAC/FokC,GAA6B91C,GAASk1C,GAAqBl1C,GAAOgP,IAAI,UACtE+mC,GAAgC/1C,GAASk1C,GAAqBl1C,GAAO0R,MAAM,CAAC,SAAU,SAAU,SAChGskC,GAAgDA,CAACh2C,EAAOo3B,EAAO6e,IAC1EV,GAA2Bv1C,GAAO0R,MAAM,CAACukC,EAAY7e,IAG1C8e,IAAkCz8B,EAAAA,GAAAA,GAC7C+7B,IACAW,GAAWA,EAAQz7B,QAAO,CAACC,EAAK3iB,EAAOD,IAASC,EAAMmf,UAAYwD,EAAMA,EAAI9Z,KAAK9I,KAAOqR,EAAAA,GAAAA,QAAO,OAIpFgtC,GAAuBp2C,GAASA,EAAMqvC,UAAUrgC,IAAI,YAGpDqnC,GAAmBr2C,GAASA,EAAMqvC,UAAUrgC,IAAI,QAIhDsnC,GAA4Bt2C,GAASA,EAAMqvC,UAAU39B,MAAM,CAAC,YAAa,SAKzE6kC,KAJkC98B,EAAAA,GAAAA,GAC7C68B,IACA5+C,GAAQA,EAAKsX,IAAI,YAE8BunC,CAACv2C,EAAO/L,IAC1CqiD,GAA0Bt2C,GACpCgP,IAAI,UACJ0F,KAAIsZ,GAASA,EAAMhf,IAAI,QAAQyH,MAAK0S,GAAKA,EAAEna,IAAI,QAAU/a,MACzD+S,QAAOmiB,QAAWrvB,IAANqvB,IACZ2G,SAKQ0mB,GAA0Bx2C,GAASA,EAAMqvC,UAAU39B,MAAM,CAAC,YAAa,OACvE+kC,GAAqCz2C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,SACjF0nC,GAA0C12C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,cACtF2nC,GAA4C32C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,gBAExF4nC,IAAqCn9B,EAAAA,GAAAA,GAChDi9B,GACAC,IACA,CAACE,EAAYC,IAAiB,CAC5BD,EAAaA,EAAW7nC,IAAI,QAAU,KACtC8nC,EAAeA,EAAa9nC,IAAI,QAAU,MAC1ChI,OAAOoqB,SAASuX,KAAK,SAGZoO,GAAgD/2C,IAC3D,MAAM0M,GAAgBgmC,EAAAA,GAAAA,IAAoB1yC,GACpC/L,EAZkD+L,IAASw2C,GAAwBx2C,GAAOgP,IAAI,iBAYzFgoC,CAA2Ch3C,GAChDi3C,EAAQvqC,EAAc+J,MAAK+wB,GAAKA,EAAEx4B,IAAI,QAAU/a,IAEtD,OAAIgjD,GAIGR,GAAmCz2C,GAAOgP,IAAI,cAAc,EAGxDkoC,GAAkCl3C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,QAC9EmoC,GAA+Bn3C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,WAC3EooC,GAAoCp3C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,gBAChFqoC,GAAgCr3C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,YAC5EsoC,GAA8Bt3C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,UAC1EuoC,GAAiCv3C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,aAC7EwoC,GAAgCx3C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,YAC5EyoC,GAAoCz3C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,gBAChF0oC,GAA8B13C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,UAE1E2oC,GAAkD33C,GAC7Dw2C,GAAwBx2C,GAAO0R,MAAM,CAAC,QAAS,cAAe,eAGnDkmC,IAAuCn+B,EAAAA,GAAAA,GAClDk+B,IACAp0C,GAAcuvC,GAA0BvvC,GAAYyD,QAAOunB,GAAKA,IAAM9kB,GAAAA,GAAAA,cAG3DouC,GAAsCA,IAAMC,GAAAA,GAE5CC,IAA0Ct+B,EAAAA,GAAAA,GACrDg9B,GACAkB,IACA,CAACvF,EAAO7uC,IACN,CAAC,YAAa,cAAcwD,MAAKygC,GAAK4K,EAAMpjC,IAAI,gBAAkBw4B,GAAK4K,EAAMpjC,IAAI,iBAAmBw4B,KACjGjkC,IAAegG,GAAAA,GAAAA,YAITyuC,IAAkDv+B,EAAAA,GAAAA,GAC7Dg9B,GACAkB,IACA,CAACvF,EAAO7uC,IACN,CAAC,oBAAqB,uBAAuBwD,MAAKygC,GAAK4K,EAAMpjC,IAAI,gBAAkBw4B,GAAK4K,EAAMpjC,IAAI,iBAAmBw4B,KAClHjkC,IAAegG,GAAAA,GAAAA,WAIT0uC,GAAyCj4C,GAASw2C,GAAwBx2C,GAAOgP,IAAI,qBACrFkpC,GAAkCl4C,GAASs2C,GAA0Bt2C,GAAOgP,IAAI,cAEhFmpC,GAA+Cn4C,IAC1D,MAAMuD,EAAa0uC,GAA+CjyC,GAC5DsyC,EAAUhB,GAAmDtxC,GAC7DxJ,EAASiuB,EAAQzkB,GAAOgP,IAAI,MAElC,OAAe,QAAXxY,GAA+B,QAAXA,EACf,CACL4hD,GAAAA,GAAAA,OACAA,GAAAA,GAAAA,UAIA70C,IAAegG,GAAAA,GAAAA,mBACb+oC,EACK,CACL8F,GAAAA,GAAAA,QAIG,CACLA,GAAAA,GAAAA,UACAA,GAAAA,GAAAA,IACAA,GAAAA,GAAAA,yBACAA,GAAAA,GAAAA,gBACAA,GAAAA,GAAAA,YAIA9F,EACK,CACL8F,GAAAA,GAAAA,OACAA,GAAAA,GAAAA,yBAIG,CACLA,GAAAA,GAAAA,OACAA,GAAAA,GAAAA,SACAA,GAAAA,GAAAA,IACAA,GAAAA,GAAAA,UACAA,GAAAA,GAAAA,gBACAA,GAAAA,GAAAA,iBACAA,GAAAA,GAAAA,WACD,ECrbUC,GAAoBr4C,IAASs1C,EAAAA,GAAAA,IADLt1C,IAASA,EAAMs4C,eAAetpC,IAAI,QACfupC,CAAsBv4C,IAEjEw4C,GAAsBx4C,GAASA,EAAMs4C,eAAetpC,IAAI,MACxDypC,GAA8Bz4C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,wBACtE0pC,GAA8B14C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,cACtE2pC,GAA2B34C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,WACnE4pC,GAA2B54C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,WACnE6pC,GAA4B74C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,YACpE8pC,GAA4B94C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,YACpE+pC,GAA8B/4C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,cACtEgqC,GAAiCh5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,iBACzEiqC,GAA8Bj5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,cACtEkqC,GAA0Bl5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,UAClEmqC,GAAsBn5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,MAC9DoqC,GAA0Bp5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,UAElEqqC,GAAoCr5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,oBAC5EsqC,GAA8Bt5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,cACtEuqC,GAAqCv5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,qBAC7EwqC,GAAsCx5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,sBAC9EyqC,GAAsCz5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,sBAC9E0qC,GAAuC15C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,uBAC/E2qC,GAA+B35C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,eACvE4qC,GAAkC55C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,kBAC1E6qC,GAAyC75C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,yBACjF8qC,GAAuC95C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,uBAC/E+qC,GAAkC/5C,GAASw4C,GAAoBx4C,GAAOgP,IAAI,kBAE1EgrC,GAA2Bh6C,GAASoxB,QAC/CunB,GAAyB34C,IACtBq5C,GAAkCr5C,IAClC64C,GAA0B74C,IAC1Bk5C,GAAwBl5C,KAjBmBA,IAASw4C,GAAoBx4C,GAAOgP,IAAI,mBAkBlFirC,CAAiCj6C,I,4BCpChC,MAAMk6C,GAAQl6C,GAASA,EAAMm6C,GAIvBC,GAAsBp6C,GADNA,IAASk6C,GAAMl6C,GAAOgP,IAAI,YACXqrC,CAAcr6C,GAAOgP,IAAI,UAGxDsrC,GAAgBt6C,GAASk6C,GAAMl6C,GAAOgP,IAAI,YAC1CurC,GAAuBv6C,GAASs6C,GAAct6C,GAAOgP,IAAI,WACzDwrC,GAAwBx6C,GAASs6C,GAAct6C,GAAOgP,IAAI,YAC1DyrC,GAA0Bz6C,GAASs6C,GAAct6C,GAAOgP,IAAI,cAI5D0rC,GAAkC16C,GADxBA,IAASk6C,GAAMl6C,GAAOgP,IAAI,MACO2rC,CAAQ36C,GAAOgP,IAAI,4BC0G9D4rC,IAAsBnhC,EAAAA,GAAAA,IZvHGzZ,GAAS8+B,GAAiB9+B,GAAO0R,MAAM,CAAC,SAAU,sBYyHtF47B,IACA,CAACuN,EAAUxN,KACT,MAAMyN,EAAazN,EAAQ34B,KAAIod,GAAKA,EAAE9iB,IAAI,QAE1C,OAAO6rC,EAAS7zC,QAAOmzB,GAAK2gB,EAAWv3B,SAAS4W,IAAG,IAiB1C4gB,GAAsBA,CAAC/6C,EAAOg7C,KACzC,IAAIniD,EAAU63B,GAAuB1wB,GAErC,GAAIg7C,EACF,OAAO5xC,EAAAA,GAAAA,QAAO,IAGhB,GAAIod,EAAoBxmB,GAAQ,CAC9BnH,EAAUkqC,GAAuC/iC,GAEjD,MAAMi7C,EAA6B1W,GAA8BvkC,GAEjE,OAAKi7C,EAA2B9jC,UAIzBte,EAHEA,EAAQmO,QAAO/S,GAAMgnD,EAA2B13B,SAAStvB,EAAG67B,UAIvE,CAEA,MAAMorB,EAA8BrpB,GAA+B7xB,GAEnE,OAAKk7C,EAA4B/jC,UAI1Bte,EAHEA,EAAQmO,QAAO/S,GAAMinD,EAA4B33B,SAAStvB,EAAG67B,UAGxD,EAGHqrB,GAAuBn7C,IAClC,IAAIgpB,EAAOwH,GAAoBxwB,GAC3Bo7C,EAAcvpB,GAA+B7xB,GAYjD,OAVIwmB,EAAoBxmB,KACtBgpB,EAAOuZ,GAA4BviC,GAEnCo7C,EAAc7W,GAA8BvkC,IAGzCo7C,EAAYjkC,YACf6R,EAAOA,EAAKhiB,QAAOmiB,GAAKiyB,EAAY73B,SAAS4F,EAAEna,IAAI,UAG9Cga,CAAI,EAGPqyB,GAA+BA,CAACryB,EAAMsyB,KAC1C,MAAMC,EAAgBD,EAAiB5gC,QAAO,CAACC,EAAK3iB,KAClD,MAAOu4B,EAAQ2B,GAAUl6B,EAAM8uB,MAAM,KAErC,OAAInM,EAAI8U,IAAIc,GACH5V,EAAI/W,OAAO2sB,GAAQt0B,GAAOA,EAAI4E,KAAKkxB,SAASG,EAAQ,OAGtDvX,EAAIuT,IAAIqC,GAAQnnB,EAAAA,GAAAA,QAAO,CAAC2oB,SAASG,EAAQ,MAAM,IACrD/tB,EAAAA,GAAAA,KAAI,CAAC,IAER,OAAO6kB,EACJhiB,QAAOmiB,GAAKoyB,EAAc9rB,IAAyB,OAArBtG,EAAEna,IAAI,WAAsB,OAASma,EAAEna,IAAI,WAAW1R,cACpFoX,KAAIyU,GAAKA,EAAEvlB,OAAO,YAAY3H,GAAOA,EAAI+K,QACxC/S,GAAMsnD,EAAcvsC,IAAyB,OAArBma,EAAEna,IAAI,WAAsB,OAASma,EAAEna,IAAI,WAAW1R,YAAYimB,SAAStvB,SAEpG+S,QAAOmiB,IAAMA,EAAEna,IAAI,YAAYmI,WAAU,EAGjCqkC,GAAmCA,CAACx7C,EAAOg7C,KACtD,IAAIhyB,GAAO5f,EAAAA,GAAAA,QAAO,IAElB,GAAI4xC,EACF,OAAOhyB,EAGT,GAAIxC,EAAoBxmB,GAAQ,CAC9BgpB,EAAOyZ,GAAsBziC,GAE7B,MAAMy7C,EAA0BnX,GAA2BtkC,GAEtDy7C,EAAwBtkC,YAC3B6R,EAAOqyB,GAA6BryB,EAAMyyB,GAE9C,MAAO,GA5F4Bz7C,IACnCqmB,EAAermB,IAA6C,IAAnCsxB,GAAwBtxB,IAC9CmwB,GAAqBnwB,GAAO+jB,KAAO,IAAMoN,GAAkCnxB,GA0FnE07C,CAAsB17C,GAAQ,CACvCgpB,EAAOmH,GAAqBnwB,GAAO0U,KAAI0b,IAAShnB,EAAAA,GAAAA,QAAO,CACrDu5B,QAASvS,EAAKphB,IAAI,MAClB0zB,SAAUtS,EAAKphB,IAAI,QAAQ0F,KAAIyU,GAAKA,EAAEna,IAAI,YAE5C,MAAM2sC,EAA2B/pB,GAA4B5xB,GAExD27C,EAAyBxkC,YAC5B6R,EAAOqyB,GAA6BryB,EAAM2yB,GAE9C,MAAO,GAjG8B37C,IACrCqmB,EAAermB,KACsB,IAAnCsxB,GAAwBtxB,KACpBiwB,GAAyBjwB,IAC1BmxB,GAAkCnxB,IA6F5B47C,CAAwB57C,GAAQ,CACzCgpB,EAAO0H,GAAuB1wB,GAE9B,MAAMk7C,EAA8BrpB,GAA+B7xB,GAE9Dk7C,EAA4B/jC,YAC/B6R,EAAOA,EAAKhiB,QAAOmiB,GAAK+xB,EAA4BlyC,SAASua,SAAS4F,EAAE2G,YAG1E9G,EAAOA,EAAKtU,KAAIyU,GAAKA,EAAE2G,SACzB,CAEA,OAAO9G,CAAI,EAGP6yB,GAAkC77C,IACtC,MAAMk7C,EAA8BrpB,GAA+B7xB,GACnE,IAAIgpB,EAAOwH,GAAoBxwB,GAM/B,OAJKk7C,EAA4B/jC,YAC/B6R,EAAOA,EAAKhiB,QAAOmiB,GAAK+xB,EAA4B33B,SAAS4F,EAAEna,IAAI,UAG9Dga,CAAI,EAqBA8yB,GAAgBA,CAAC97C,EAAO9J,EAAM6lD,EAAS9wC,KAClD,MAAM/D,EAAWkjB,GAAkBpqB,GAE7Bg8C,GADSpqC,EAAAA,EAAAA,IAAU5R,GACEgP,IAAI,eACzBpb,EAAWw0B,EAAYpoB,GACvB0kB,EAAOD,EAAQzkB,GACfi8C,EAAoBt1B,EAAY3mB,GAChCk8C,EAAqCpiB,GAA0C95B,GAE/EklC,EAAOD,GAAQjlC,GACfm8C,EAAiBj1C,EAAS8H,IAAa,QAAT9Y,EAAiB,oBAAsB,kBAAkB+S,OACvFmzC,EAAmBD,EAAeloD,IAChCooD,uBAAuB,YAAEC,EAAW,YAAEC,EAAW,eAAEC,EAAc,WAAEC,IAAiBN,EAC5FA,EAAeE,sBAAsBG,eACf,OAAnBA,GAA4BJ,EAA+DI,GAAkB,GAA7DtX,EAAKl2B,IAAI,+BAE5DmtC,EAAeE,sBAAsBI,WACnB,OAAfA,GAAwBL,EAA2DK,GAAc,GAArDvX,EAAKl2B,IAAI,2BAGpC,KAAhBstC,UACKH,EAAeE,sBAAsBC,YAG1B,KAAhBC,UACKJ,EAAeE,sBAAsBE,YAG9C,IAAIx5B,EAAY7b,EAAS8H,IAAI,aACzBgU,EAAU9b,EAAS8H,IAAI,WAEvB9Y,EAAK+Q,WAAW,cAClB8b,EAAYA,EAAYH,KAAOoY,GAAoBh7B,IAAQi9B,OAAO,8BAAgC,KAClGja,EAAUA,EAAUJ,KAAOqY,GAAkBj7B,IAAQi9B,OAAO,8BAAgC,OAE5Fla,EAAYA,EAAYH,KAAOG,GAAWka,OAAO,cAAgB,KACjEja,EAAUA,EAAUJ,KAAOI,GAASia,OAAO,cAAgB,MAG7D,IACIyf,EACApnD,EAFAqnD,EAAkB,GAIlBn2B,EAAoBxmB,KACtB28C,EAAkBnZ,GAAuBxjC,GAAOgP,IAAI,QACpD0tC,EAAqBtZ,GAAsBpjC,GAC3C1K,EAAgBkuC,GAAuBxjC,GAAOgP,IAAI,OAGpD,MAAM4tC,EAAiBxrB,QAAiB,QAATl7B,GAAkB6lD,GAAoB,UAAT9wC,GACtD4xC,EAAmBzrB,QAAiB,QAATl7B,GAA2B,YAAT+U,GAC7C+vC,EAAe4B,GAAkBC,EAEvC,MAAO,CACL7zB,KAAMwyB,GAAiCx7C,EAAOg7C,GAAc/xC,OAC5Dy5B,SAAUqY,GAAoB/6C,EAAOg7C,GAAc/xC,OACnD6zC,WAAYF,EACZG,cAAeF,EACf3mD,OACAgR,SAAU,CACR81C,iBAAkB91C,EAAS8H,IAAI,mBAC/BiuC,8BAA+B/1C,EAAS8H,IAAI,+BAC5CkuC,mBAAoBh2C,EAAS8H,IAAI,oBACjCmuC,WAAY3C,GAAsBx6C,GAClCo9C,iBAAkBl2C,EAAS8H,IAAI,mBAC/BquC,kBAAmBn2C,EAAS8H,IAAI,oBAChCsuC,WAAYp2C,EAAS8H,IAAI,aACzBuuC,cAAer2C,EAAS8H,IAAI,eAC5BwuC,uBAAwBt2C,EAAS8H,IAAI,uBACrCyuC,SAAUv2C,EAAS8H,IAAI,WACvB0uC,gBAAiBC,KAAmBxB,GACpCyB,kBAAmB12C,EAAS8H,IAAI,mBAChC6uC,gBAAiB32C,EAAS8H,IAAI,iBAC9B8uC,gBAAiB52C,EAAS8H,IAAI,kBAC9B+uC,QAAS72C,EAAS8H,IAAI,WACtBgvC,aAAchC,EACdiC,WAAYl7B,EACZm7B,SAAUl7B,EACVm7B,kBAAmBxB,EACnByB,qBAAsB1B,EACtB2B,gBAAiB/oD,EACjBgpD,WAAYvC,EAAU,EAAI,KAC1BwC,iBAAkBtC,EAAoBv3B,EAAK1V,IAAI,sBAAsB/F,OAAS,GAC9Eu1C,2BAA4BjlB,GAA+Cv5B,GAAOiJ,OAClFw1C,0BAA2B7kB,GAA8C55B,GAAOiJ,OAChFy1C,6BAA8BjlB,GAAwCz5B,GAAOiJ,OAC7E01C,8BAA+B3kB,GAA8Ch6B,GAAOiJ,OACpF40B,cAAehE,GAAmC75B,GAClD4+C,yCAA0C1C,EAC1CtoD,YAEH,EAGUirD,GAAmB7+C,IAC9B,MAAMnH,EAAUkiD,GAAoB/6C,GAAO,GAC3C,IAAIgpB,EAAOnwB,EAAQm3B,UAMnB,OAJIpJ,EAAa5mB,KACfgpB,EArH+BhpB,IACpB67C,GAAgC77C,GAEjC0U,KAAIyU,IAAK,CACnBl1B,GAAIk1B,EAAEna,IAAI,MACV8vC,SAAU31B,EAAEna,IAAI,YAChB+vC,KAAM51B,EAAEna,IAAI,WACZgwC,aAAc71B,EAAEna,IAAI,eACpBiwC,IAAK91B,EAAEna,IAAI,eACXivB,YAAa,CACXhqC,GAAIk1B,EAAEna,IAAI,eAAeA,IAAI,MAC7BF,KAAMqa,EAAEna,IAAI,eAAeA,IAAI,QAC/BwoB,MAAOrO,EAAEna,IAAI,cAAcA,IAAI,UAEjCqhB,MAAOlH,EAAEna,IAAI,SAAS0F,KAAIgC,GAAKA,EAAE1H,IAAI,cACnC/F,OAsGKi2C,CAAoBl/C,IAGtB,CACL9J,KAAM,MACN8yB,OACA0Z,SAAU7pC,EACX,EAGGsmD,GAA0BA,CAACn/C,EAAO9J,KACtC,MAAM2C,EAAUkiD,GAAoB/6C,GAAO,GAC3C,IAAIgpB,EAAOnwB,EAAQm3B,UAMnB,OAJIpJ,EAAa5mB,KACfgpB,EAAO6yB,GAAgC77C,IAGjC,CACN9J,OACA8yB,OACA0Z,SAAU7pC,EACX,EAGUumD,GAAmBp/C,GAASm/C,GAAwBn/C,EAAO,OAC3Dq/C,GAAoBr/C,GAASm/C,GAAwBn/C,EAAO,QAE5Ds/C,GAAcA,CAACt/C,EAAOu/C,EAAIC,EAAST,EAAMU,EAAMC,KAC1D,MAAM9+C,EAAS,CACb2+C,KACAC,UACAC,KAAMA,IAAQvtC,EAAAA,GAAAA,IAA0BlS,IAGtC,CAAC,OAAQ,MAAO,uBAAuBujB,SAAS8F,GAAiBrpB,GAAOgP,IAAI,oBAC9EpO,EAAO++C,SAAWr2B,GAAsBtpB,GACxCY,EAAOg/C,YAAcl2B,GAA8B1pB,GAAO0U,KAAIod,IAAK,CACjE+tB,UAAW/tB,EAAE9iB,IAAI,YACjBF,KAAMgjB,EAAE9iB,IAAI,YACZiwC,IAAKntB,EAAE9iB,IAAI,OACX+U,KAAM+N,EAAE9iB,IAAI,cAGdpO,EAAOm+C,KAAOA,EAAK34B,QAAQ,MAAO,UAClCxlB,EAAOg/C,YAAc,CACnB,CACE9wC,KAAMya,GAA2BvpB,GACjCi/C,IAAK31B,GAAsBtpB,GAC3B6/C,UAAWp2B,GAA2BzpB,GACtC+jB,KAAMyF,GAAuBxpB,MAKnC,MAAM8/C,EtBlYqB9/C,IAASopB,GAAcppB,GAAOgP,IAAI,csBkY1C+wC,CAAc//C,GAEjC,IAAIggD,EAAe,CACjB9pD,KAAM4pD,EAAW9wC,IAAI,QACrBpb,SAAUw0B,EAAYpoB,IAaxB,OAVI0/C,IACFM,EAAe,IAAKA,EAAcC,cAAeP,IAIjDM,EADEx5B,EAAoBxmB,GACP,IAAKggD,EAAc3B,gBAAiB9a,GAAyBvjC,GAAQkgD,YAAa,iBAElF,IAAKF,EAAcE,aAAatqC,EAAAA,GAAAA,IAAwB5V,IAGlE,IAAKY,EAAQu/C,cAAeH,EAAc,EAGtCI,GAAgBA,CAACpgD,EAAO9D,EAAUC,KAAW,CACxDkkD,OAAQjiB,GAAyBp+B,GACjCsgD,UAAWnlB,GAAoBn7B,GAC/BugD,cAAenlB,GAAwBp7B,GACvCwgD,eAAeC,EAAAA,GAAAA,IAAoBzgD,GACnC0gD,YAAYj1B,EAAAA,GAAAA,IAAuBzrB,GACnCgpB,KAAMqT,GAAuBr8B,EAAO9D,EAAUC,GAC9CwkD,cAAetiB,GAA+Br+B,GAC9Ci+B,YAAaD,GAA8Bh+B,GAC3Cm+B,QAASD,GAA0Bl+B,GACnC+jB,KAAM68B,GAAAA,GACNC,QAASC,GAAU9gD,GACnB+gD,eAAgBC,GAAiBhhD,GACjCpM,SAAUw0B,EAAYpoB,GACtBkgD,aAAatqC,EAAAA,GAAAA,IAAwB5V,KAGjCk8B,GAAaA,CAACxkC,EAAMgiB,EAASgiB,EAAWC,KAC5C,MAAMQ,EAAUziB,EAAQ1K,IAAI0sB,GAAW10B,QAAO60B,IAAMA,EAAE7sB,IAAI,cAAa/F,OACjEmzB,EAAkB1iB,EAAQ1K,IAAI0sB,GAAW10B,QAAO60B,GAAKA,EAAE7sB,IAAI,cAAa/F,OAE9E,IAAIrI,EAASlJ,EAUb,OARIykC,EAAQtiC,SACV+G,EAAS,IAAKA,EAAQ,CAAC+6B,GAAYQ,EAAQznB,KAAIqnB,GAAOA,EAAG9nC,IAAM8nC,EAAG/jC,UAGhEokC,EAAgBviC,SAClB+G,EAAS,IAAKA,EAAQ,CAAC,WAAW+6B,KAAcS,EAAgB1nB,KAAIqnB,GAAOA,EAAG9nC,IAAM8nC,EAAG/jC,UAGlF4I,CAAM,EAGFqgD,GAAqBjhD,IAChC,MAAMkhD,GAAuBjhC,EAAAA,GAAAA,IAA6BjgB,GACpDmhD,GAAwBjhC,EAAAA,GAAAA,IAA8BlgB,GAEtDohD,EAAkBF,EAAqBl6C,QAAO60B,IAAMA,EAAE7sB,IAAI,cAAa/F,OACvEo4C,EAAkBH,EAAqBl6C,QAAO60B,GAAKA,EAAE7sB,IAAI,cAAa/F,OAEtEq4C,EAAmBH,EAAsBn6C,QAAO60B,IAAMA,EAAE7sB,IAAI,cAAa/F,OACzEs4C,EAAmBJ,EAAsBn6C,QAAO60B,GAAKA,EAAE7sB,IAAI,cAAa/F,OAE9E,MAAO,CACL8Y,SAAU,CACRwB,SAAU69B,EAAgB1sC,KAAIgC,IAAK,CACjCtL,MAAOsL,EAAEtL,MAAMgb,QAAQ,WAAY,IACnCpuB,MAAO0e,EAAE1e,UAEXwpD,SAAUH,EAAgB3sC,KAAIgC,IAAK,CACjCtL,MAAOsL,EAAEtL,MAAMgb,QAAQ,WAAY,IACnCpuB,MAAO0e,EAAE1e,WAGbgqB,UAAW,CACTuB,SAAU+9B,EAAiB5sC,KAAIgC,IAAK,CAClCtL,MAAOsL,EAAEtL,MAAMgb,QAAQ,YAAa,IACpCpuB,MAAO0e,EAAE1e,UAEXwpD,SAAUD,EAAiB7sC,KAAIgC,IAAK,CAClCtL,MAAOsL,EAAEtL,MAAMgb,QAAQ,YAAa,IACpCpuB,MAAO0e,EAAE1e,WAGd,EAGUypD,GAAkBzhD,IAC7B,MAAM0hD,GAAuB9nC,EAAAA,GAAAA,IAA0B5Z,GACjD2hD,GAAgC9nC,EAAAA,GAAAA,IAAmC7Z,GACnE4hD,GAAuC9nC,EAAAA,GAAAA,IAA4C9Z,GAEzF,IAAI6hD,EAAkBH,EAAqB16C,QAAO60B,IAAMA,EAAE7sB,IAAI,cAAa/F,OACvE64C,EAA2BH,EAA8B36C,QAAO60B,IAAMA,EAAE7sB,IAAI,cAAa/F,OACzF84C,EAAmCH,EAAqC56C,QAAO60B,IAAMA,EAAE7sB,IAAI,cAAa/F,OAE5G,GAAI44C,EAAgBhoD,OAAQ,CAC1B,MAAMmoD,EAAaH,EAAgB76C,QAAO0P,GAAiB,iBAAZA,EAAEtL,QAC3C62C,EAAiBJ,EAAgB76C,QAAO0P,GAAiB,gBAAZA,EAAEtL,QAC/CxK,EAAS,GACfohD,EAAWnqD,SAAQmP,IACjBpG,EAAOC,KAAK,CACV,CAAEuK,MAAO,aAAcpT,MAAOgP,EAAOhP,QACrC,IAEJiqD,EAAepqD,SAAQmP,IACrBpG,EAAOC,KAAK,CACV,CAAEuK,MAAO,OAAQpT,MAAOgP,EAAOhP,QAC/B,IAEJ6pD,EAAkBjhD,EAAOq7B,MAC3B,CAEA,GAAI6lB,EAAyBjoD,OAAQ,CACnC,MAAMmoD,EAAaF,EAAyB96C,QAAO0P,GAAiB,2BAAZA,EAAEtL,QACpDxK,EAAS,GACfohD,EAAWnqD,SAAQmP,IACjBpG,EAAOC,KAAK,CACV,CAAEuK,MAAO,OAAQpT,MAAOgP,EAAOhP,MAAOkqD,WAAY,cAEpDthD,EAAOC,KAAK,CACV,CAAEuK,MAAO,cAAepT,MAAOgP,EAAOhP,MAAOkqD,WAAY,aACzD,IAEJJ,EAA2BlhD,EAAOq7B,MACpC,CAEA,GAAI8lB,EAAiCloD,OAAQ,CAC3C,MAAMmoD,EAAaD,EAAiC/6C,QAAO0P,GAAiB,+BAAZA,EAAEtL,QAC5DxK,EAAS,GACfohD,EAAWnqD,SAAQmP,IACjBpG,EAAOC,KAAK,CACV,CAAEuK,MAAO,qBAAsBpT,MAAOgP,EAAOhP,QAC7C,IAEJ+pD,EAAmCnhD,EAAOq7B,MAC5C,CAEA,MAAO,CACLpY,SAAU,CACRN,SAAU,IAAIs+B,KAAoBE,IAEpC5+B,kBAAmB,CACjBI,SAAUu+B,GAEb,EAGUK,GAAuBniD,IAClC,MAAMoiD,EAAuBzT,GAAwB3uC,GAC/CqiD,EAA6BzT,GAA8B5uC,GAEjE,IAAI0Z,EAAU,CAAC,EAOf,OANAA,EAAUwiB,GAAWxiB,EAAS0oC,EAAsB,WAAY,WAChE1oC,EAAUwiB,GAAWxiB,EAAS0oC,EAAsB,YAAa,YACjE1oC,EAAUwiB,GAAWxiB,EAAS0oC,EAAsB,uBAAwB,WAC5E1oC,EAAUwiB,GAAWxiB,EAAS0oC,EAAsB,gBAAiB,wBACrE1oC,EAAQ4oC,eAAiBD,EAA2BrzC,IAAI,kBAEjD,CACL0K,UACAxd,SAAU8+B,GAAoBh7B,GAC9B7D,OAAQ8+B,GAAkBj7B,GAC1BpuC,OAAQs8E,GAAiBluC,GACzBuiD,cAAepU,GAAwBnuC,GACxC,EAGUwiD,GAAuBA,CAACxiD,EAAO9J,KAC1C,MAAMusD,EAAarC,GAAcpgD,GACjC,IAAI+jB,GAAO3R,EAAAA,EAAAA,IAAepS,IACtB,KAAEgpB,GAASy5B,EAkBf,OAhBIvsD,EAAKowB,MAAM,UACbvC,GAAO1R,EAAAA,EAAAA,IAAmBrS,GAEb,wBAAT9J,IACF6tB,GAAOxR,EAAAA,EAAAA,IAA0BvS,IAGnCgpB,EAAO,IACFy5B,EAAWz5B,KACdwR,SAAU,IACLioB,EAAWz5B,KAAKwR,SACnBkoB,iBAAiB,KAKhB,IACFD,EACHhD,KAAM,EACN17B,OACAiF,OACD,EAGU25B,GAA2B3iD,IAI/B,IAHMogD,GAAcpgD,GAKzB+jB,KAAM,GACN88B,QALavhB,GAAqBt/B,KASzB4iD,GAA4B5iD,IACvC,MAAMvM,EAAO2sD,GAAcpgD,GACrBpuC,EAAS2vE,GAAsBvhC,GAQrC,OAJIvM,EAAKwqC,YAAY4kB,iBACnBpvD,EAAKwqC,YAAY4kB,eAAiBpvD,EAAKwqC,YAAY4kB,eAAenuC,KAAIouC,GAAK,CAACA,EAAGA,EAAEx/B,iBAAgB2Y,QAG5F,IACFxoC,EACHswB,KAAM,GACN88B,QAASjvF,EACV,EAGUmxF,GAA8B/iD,IAIlC,IAHMogD,GAAcpgD,GAKzBgjD,cAAenb,GAA8B7nC,GAC7C+jB,KAAM,GACN88B,QANa,UAUJoC,GAAiCjjD,IAGrC,IAFMogD,GAAcpgD,GAET+jB,KAAM,IAGbm/B,GAAuBA,CAACljD,EAAO/L,KAC1C,IAAI2M,EAASw/C,GAAcpgD,GAC3B,MAAMkL,EAASi4C,GAAmBnjD,EAAO/L,GAGvC2M,EADEsK,EACO,IACJtK,EACHmjB,KAAM7Y,EAAO8D,IAAI,QACjBywC,KAAMv0C,EAAO8D,IAAI,SAGV,IACJpO,EACHmjB,KAAM,GACN07B,KAAM,IAIV,MAAMt0C,GAASi4C,EAAAA,GAAAA,IAAmCpjD,GAGlD,IAAKmL,EACH,OAAOvK,EAGT,MAAMwK,GAAQi4C,EAAAA,GAAAA,IAAkCrjD,GAEhD,IAAI0Z,EAAU2iB,GAAuBr8B,GAarC,MAXe,gBAAXmL,IACFuO,EAAUskB,GAA8Bh+B,IAItC0Z,EAAQtO,IAAUsO,EAAQtO,GAAOvR,SAA0C,IAAhC6f,EAAQtO,GAAO3D,QAAQxT,GACpEylB,EAAQtO,GAAS,EAAE,aAEnBsO,EAAQtO,GAAS,CAACnX,GAGb,IAAK2M,EAAQ,CAACuK,GAASuO,EAAS,EAG5B4pC,GAA2BA,CAACtjD,EAAO1I,EAAS46B,EAAQqxB,KAC/D,MAAM3iD,EAASsiD,GAAqBljD,EAAO1I,GAE3C,MAAO,IACFsJ,EACH6+C,KAAM,EACN17B,KAAM,IACN88B,QAAS,QACT73B,KAAM,IACDpoB,EAAOooB,KACVw6B,WAAY,CAACD,GACbxmB,YAAa,CAAC7K,GACdsI,SAAU,IACL55B,EAAOooB,KAAKwR,SACfkoB,iBAAiB,IAGtB,EASUe,GAAsBzjD,IACjC,MAAM+O,GAAS6C,EAAAA,EAAAA,IAAU5R,GAEzB,MAAO,CACLtI,KAAM,CACJgsD,uBAAwB30C,EAAOC,IAAI,uBACnC20C,kBAAmB50C,EAAOC,IAAI,mBAC9B40C,uBAAwB70C,EAAOC,IAAI,uBACnC60C,0BAA2B90C,EAAOC,IAAI,0BACtC80C,mBAAoB/0C,EAAOC,IAAI,oBAC/B+0C,OAAQpG,KAAmB5uC,EAAOC,IAAI,UAAU/F,QAChD60C,gBAAiB/uC,EAAOC,IAAI,kBAC5Bg1C,+BAAgCj1C,EAAOC,IAAI,8BAC3C6uC,gBAAiB9uC,EAAOC,IAAI,iBAC5Bi1C,WAAYl1C,EAAOC,IAAI,aACvBk1C,cAAen1C,EAAOC,IAAI,gBAC1Bm1C,eAAgBp1C,EAAOC,IAAI,iBAC3Bo1C,cAAer1C,EAAOC,IAAI,gBAC1Bq1C,gBAAiBt1C,EAAOC,IAAI,iBAC5Bs1C,cAA8C,KAA/Bv1C,EAAOC,IAAI,gBAAyB,KAAOD,EAAOC,IAAI,iBAExE,EAGUu1C,GAA2BvkD,IAAS,CAC/CwkD,UAAW5J,GAAoB56C,GAC/BykD,YAAazlB,GAAsBh/B,KAGxB0kD,GAAmB1kD,IAC9B,G1BhvBmCA,IAA6E,OAApEimB,EAAejmB,GAAOsmB,MAAM,oC0BgvBpEq+B,CAAsB3kD,GACxB,OAAO,EAGT,GAAIymB,EAAYzmB,GACd,OAAO,EAGT,G1BpvBuCA,IAAmE,OAA1DimB,EAAejmB,GAAOsmB,MAAM,0B0BovBxEs+B,CAA0B5kD,GAC5B,OAAO,EAGT,GAAI+mB,EAAkC/mB,GACpC,OAAO,EAGT,GAAIgnB,EAAuBhnB,GACzB,OAAO,EAGT,G1B5vB0CA,IAAuE,OAA9DimB,EAAejmB,GAAOsmB,MAAM,8B0B4vB3Eu+B,CAA6B7kD,GAC/B,OAAO,EAGT,MAAM8kD,EAAU7+B,EAAejmB,GAAOsmB,MAAM,YAE5C,OAAO8K,QAAQ0zB,GAAWA,EAAQjrD,QAAU,EAAE,EAG1CkrD,GAAuBA,CAACC,EAAYrkD,KACxC,IAAIskD,EAAUD,EAoBd,OAnBAC,EAAUA,EAAQC,UAAUvkD,GAE5BskD,EAAUA,EAAQvwC,KAAI1c,GAChBmM,GAAAA,IAAAA,MAAUnM,IAAUA,EAAMy3B,IAAI,cACzBz3B,EAAM4L,OACX,cACAuhD,GAAcA,EAAWzwC,KACvBkqB,GACEA,EACGh7B,OAAO,gBAAgBwhD,GAAOplC,GAAAA,KAAAA,OAAYolC,GAAMA,EAAGp+C,QAAOwgC,IAAsC,IAAjC7mC,EAAK8G,QAAQ+/B,EAAEx4B,IAAI,WAAmBo2C,IACrGxhD,OAAO,eAAeyhD,GAAOrlC,GAAAA,KAAAA,OAAYqlC,GAAMA,EAAGr+C,QAAOwgC,IAAsC,IAAjC7mC,EAAK8G,QAAQ+/B,EAAEx4B,IAAI,WAAmBq2C,QAMxGrtD,IAGFitD,CAAO,EAGHK,GAAkBtlD,IAC7B,MAAMg8C,GAAcpqC,EAAAA,EAAAA,IAAU5R,GAAOgP,IAAI,eACnCu2C,GAAU3zC,EAAAA,EAAAA,IAAU5R,GAAOgP,IAAI,WAC/B3C,EAAe2Y,EAAgBhlB,GAC/BxJ,EAASiuB,EAAQzkB,GAAOgP,IAAI,MAClC,IAAIi2C,EAAUO,GAAuBxlD,GA4CrC,OA1CKqM,EAAa2C,IAAIzC,GAAAA,GAAAA,mBACpB04C,EAAUF,GAAqBE,EAAS,CAAC,gBAGtC54C,EAAa2C,IAAIzC,GAAAA,GAAAA,iBACpB04C,EAAUF,GAAqBE,EAAS,CAAC,uBAAwB,iBAAkB,iBAAkB,2BAGlG54C,EAAa2C,IAAIzC,GAAAA,GAAAA,WACpB04C,EAAUF,GAAqBE,EAAS,CAAC,qBAAsB,mBAAoB,kBAGhFjJ,IACHiJ,EAAUF,GAAqBE,EAAS,CAAC,WAAY,gBAGlDM,IACHN,EAAUF,GAAqBE,EAAS,CAAC,aAAc,eAGpDx+B,EAAYzmB,KACfilD,EAAUF,GAAqBE,EAAS,CAAC,mBAG5B,QAAXzuD,GAA+B,QAAXA,IACtByuD,EAAUF,GACRE,EACA,CACE,cACA,cACA,eACA,kBACA,wBACA,gBACA,QACA,SACA,MACA,iBAKCA,CAAO,EAGHQ,IAA0ChsC,EAAAA,GAAAA,GACrD83B,GACAU,GACAjtB,GACAotB,IACE,IAAgF,IAA5E,CAAC,iBAAkB,mBAAmB3qC,QAAQ2qC,EAAMpjC,IAAI,eAAuB,CAQjF,MAPoB,CAClB,OACA,QACA,eACA,OAIJ,CAEA,OAAO8oC,GAAAA,EAAc,IAInB4N,GAAyB,CAC7B,CACEC,QAAS,QACTC,aAAc,GAEhB,CACED,QAAS,SACTC,aAAc,GAEhB,CACED,QAAS,YACTC,aAAc,IAILC,GAAgB7lD,IAC3B,MAAMuK,GAAkBu7C,EAAAA,GAAAA,IAAmB9lD,GAE3C,GAAIuK,EAAgB4M,UAClB,OAAO,EAGT,MAAMonB,EAAgBhD,GAAiBv7B,GAIjC+lD,EAAqBx7C,EAAgB4M,WAAa5M,EAAgBxD,MAFjDC,GAAUu3B,EAAcvvB,IAAIhI,KAAYu3B,EAAcvvB,IAAIhI,GAAQmQ,YAGnF6uC,EAAiBznB,EAAcI,WAAW31B,SAASgnB,SAAQ,GAAMjpB,MAAK80B,IAAMA,EAAE7sB,IAAI,cAElFi3C,EAAc1nB,EAAcvvB,IAAI,iBAAkB5F,EAAAA,GAAAA,QAAO,IACzD88C,EAAgB3nB,EAAcvvB,IAAI,mBAAoB5F,EAAAA,GAAAA,QAAO,IAC7D+8C,EAAqB5nB,EAAcvvB,IAAI,wBAAyB5F,EAAAA,GAAAA,QAAO,IAK7E,OAJgB68C,EAAY13C,OAAO23C,EAAeC,GAEpBp/C,MAAK4N,GAAK+wC,GAAuB3+C,MAAK80B,IAAMlnB,EAAE3F,IAAI,SAASsX,MAAMuV,EAAE8pB,UAAY,IAAI9rD,OAASgiC,EAAE+pB,kBAErGG,GAAsBC,CAAc,EAyBvDI,GAAgC,IAEzBC,GAA4BA,CAACjU,EAAOl8C,IAClC,SAATA,EACK,KAGqF,IAA1F,CAAC,SAAU,WAAY,WAAY,iBAAiBuR,QAAQ2qC,EAAMpjC,IAAI,eACjEo3C,KAGgH,IAArH,CAAC,iBAAkB,uBAAwB,gBAAiB,mBAAmB3+C,QAAQ2qC,EAAMpjC,IAAI,eAC5Fo3C,IAGI,SAATlwD,IAA0E,IAAvD,CAAC,gBAAgBuR,QAAQ2qC,EAAMpjC,IAAI,iBAAyE,IAAhD,CAAC,SAASvH,QAAQ2qC,EAAMpjC,IAAI,eACtGo3C,IAGFA,GAGIE,GAAeA,CAACtmD,EAAOoyC,EAAOqQ,EAAY1+B,KACrD,MAAMnwB,EAAWw0B,EAAYpoB,GACvBklC,EAAOD,GAAQjlC,GACfumD,GAAOC,EAAAA,GAAAA,IAAQxmD,GACfymD,IAAcrU,EAAM1gC,MAAM,CAAC,OAAQ,cAAc,GAEjDg1C,EAAU3iC,GAAQquB,EAAM1gC,MAAM,CAAC,OAAQ,UAhDf0gC,KACiD,IAA3E,CAACuU,GAAAA,GAAAA,QAAoBA,GAAAA,GAAAA,WAAsBl/C,QAAQ2qC,EAAMpjC,IAAI,SACxD43C,GAJkB,GAkD8BC,CAAiBzU,GACpE1J,GAAQoe,EAAAA,GAAAA,IAAmB1U,EAAOlN,EAAMuhB,GACxCM,GAAWC,EAAAA,GAAAA,IAAsB5U,EAAOlN,EAAMuhB,GAC9CQ,EAAYtJ,MAAoBvL,EAAMpjC,IAAI,UAAW5F,EAAAA,GAAAA,QAAO,CAAC,IAAI87C,UACrE,CAAC,kBAAmB,oBAAqB,oBAAqB,MAAO,qBACrEj8C,QAEIi+C,EAAc,CAClBC,YAAa/U,EAAMpjC,IAAI,aAAco4C,GAAAA,GAAAA,qBACrCC,OAAQjV,EAAMpjC,IAAI,cAClBs4C,OAAQlV,EAAMpjC,IAAI,cAClBu4C,SAAUnV,EAAMpjC,IAAI,eACpBw4C,UAAWpV,EAAMpjC,IAAI,YACrBy4C,QAASrV,EAAMpjC,IAAI,UACnBmuB,WAAYiV,EAAMpjC,IAAI,aACtBuxC,cAAenO,EAAMpjC,IAAI,gBACzB9Y,KAAMmnC,KAAW+U,EAAMpjC,IAAI,SAC3B04C,WAAYtV,EAAMpjC,IAAI,aACtB24C,WAAYV,EACZve,QACAkf,UAAWb,EACXR,OACA3yD,YAGF,IAAIH,EAEJ,IAAIygD,EAAAA,GAAAA,IAA0B9B,GAAQ,CACpC,MAAMt8B,EAAgBs8B,EAAMpjC,IAAI,iBAEhC,GAAI8G,GAAiB2sC,EAAY,CAC/B,MAAM/gD,EAAO,CACX4+C,UAAWlO,EAAMpjC,IAAI,YACrBq1C,gBAAiBvuC,EACjB+xC,4BAA6BzV,EAAMpjC,IAAI,4BACvCwxC,cAAepO,EAAMpjC,IAAI,gBACzB6xC,QAASzO,EAAMpjC,IAAI,UAEnBmuB,WAAYiV,EAAMpjC,IAAI,aACtB+U,KAAM2iC,GAIJjE,EACF/gD,EAAKomD,cAAgBrF,EAIrB/gD,EAAK2iD,gBAAkBvuC,EAGzBriB,EAAO,IACFyzD,EACHa,iBAAkBrmD,EAClB2lD,OAAQhqB,KAAW+U,EAAMpjC,IAAI,eAC7Bs4C,OAAQlV,EAAMpjC,IAAI,cAAgBquB,KAAW+U,EAAMpjC,IAAI,eAAiB,KACxEu4C,SAAUnV,EAAMpjC,IAAI,eAAiBquB,MAhGf2qB,EAgGgD5V,EAAMpjC,IAAI,eA/FlE,aAAhBg5C,EACK,aAGW,cAAhBA,EACK,aAGFA,IAuFkG,KAEvG,CACF,MAAW7T,EAAAA,GAAAA,IAAuB/B,GAChC3+C,EAAO,IACFyzD,EACHa,iBAAkBpK,MAAoBvL,EAAM1gC,MAAM,CAAC,OAAQ,sBAAuBtI,EAAAA,GAAAA,QAAO,CAAC,IAAIH,UAEvForC,EAAAA,GAAAA,IAAWjC,GACpB3+C,EAAO,IACFyzD,EACHa,iBAAkBpK,MAAoBvL,EAAM1gC,MAAM,CAAC,OAAQ,UAAWtI,EAAAA,GAAAA,QAAO,CAAC,IAAIH,UAE3EmrC,EAAAA,GAAAA,IAAwBhC,GACjC3+C,EAAO,IACFyzD,EACHa,iBAAkB,CAAC,IAEZzT,EAAAA,GAAAA,IAAyBlC,GAClC3+C,EAAO,IACFyzD,EACHa,iBAAkBpK,MAAoBvL,EAAM1gC,MAAM,CAAC,OAAQ,wBAAyBtI,EAAAA,GAAAA,QAAO,CAAC,IAAIH,UAEzFurC,EAAAA,GAAAA,IAAyBpC,GAClC3+C,EAAO,IACFyzD,EACHa,iBAAkBpK,MAAoBvL,EAAM1gC,MAAM,CAAC,OAAQ,wBAAyBtI,EAAAA,GAAAA,QAAO,CAAC,IAAIH,QAChGo+C,OAAQhqB,KAAW+U,EAAMpjC,IAAI,iBAEtBylC,EAAAA,GAAAA,IAAwBrC,GACjC3+C,EAAO,IACFyzD,EACHa,iBAAkBpK,MAAoBvL,EAAM1gC,MAAM,CAAC,OAAQ,uBAAwBtI,EAAAA,GAAAA,QAAO,CAAC,IAAIH,QAC/Fo+C,OAAQhqB,KAAW+U,EAAMpjC,IAAI,iBAEtBgmC,EAAAA,GAAAA,IAAa5C,GACtB3+C,EAAO,IACFyzD,EACHa,iBAAkB,CAAC,EACnBV,OAAQ,UAED3S,EAAAA,GAAAA,IAAYtC,GACrB3+C,EAAO,IACFyzD,EACHa,iBAAkB,CAAC,EACnBV,OAAQ,SAED1S,EAAAA,GAAAA,IAAsBvC,KAC/B3+C,EAAO,IACFyzD,EACHa,iBAAkB,CAAC,EACnBV,OAAQ,oBAnJgBW,MAuJ5B,OAAOv0D,CAAI,EAGAw0D,GAAoBjoD,IAC/B,MAAM+O,GAAS6C,EAAAA,EAAAA,IAAU5R,GAEzB,OAAO+O,EAAOC,IAAI,uBAAuBgR,EAAAA,GAAAA,SACtCtL,KAAIC,GAAKA,EAAEuZ,IAAI,OAAQ,WACvB3f,OACCQ,EAAOC,IAAI,wBAAwBgR,EAAAA,GAAAA,SAAQtL,KAAIC,GAAKA,EAAEuZ,IAAI,OAAQ,aAEnEt8D,QAAO+iD,GAAKA,EAAE3F,IAAI,SAAQ,EAGlBk5C,GAAsBloD,IACjC,GAAIulB,EAAgBvlB,IAAqC,KAA3BulB,EAAgBvlB,GAC5C,OAAO,EAGT,GAAIinB,EAAYjnB,GAAQ,CACtB,MAAMs4C,EAAiBD,GAAkBr4C,GAEzC,OACG+5C,GAAgC/5C,KAC7B85C,GAAqC95C,OACnCs4C,GAAkBA,EAAenhC,UAE3C,CAEA,O1BjlC6BnX,IAAmE,OAA1DimB,EAAejmB,GAAOsmB,MAAM,0B0BilC1D6hC,CAAgBnoD,K1BhlCEA,IAA2E,OAAlEimB,EAAejmB,GAAOsmB,MAAM,kC0BglC5B8hC,CAAapoD,EAAM,EAe3CqoD,GAAyBroD,IACpC,MAAMsoD,EAAQrd,GAAyCjrC,GACjDuoD,EAAkBvpB,GAAsBh/B,GACxCwoD,EAAcF,EACjBthD,QAAOmzB,GAAKouB,EAAgBhlC,SAAS4W,EAAEnrB,IAAI,SAC3C0F,KAAIylB,GAAKA,EAAEnrB,IAAI,gBAElB,OAAIw5C,EAAYzhD,MAAK80B,GAAKA,EAAE1kB,aACnB6I,EAAAA,GAAAA,QAGFwoC,EAAYx4B,SAAS,ECxnCxBy4B,IAAqB5/C,EAAAA,GAAAA,KAAI,CAAC,mBAAoB,WAAY,eAC1D6/C,IAAiBt/C,EAAAA,GAAAA,QAAO,CAC5B,WACA,aACA,0BACA,aACA,mBACA,oBACA,mBACA,2BACA,gBAGIu/C,IAAYv/C,EAAAA,GAAAA,QAAO,IACnBw/C,IAAWx/C,EAAAA,GAAAA,QAAO,CAAC,GAEnBy/C,GAAkCA,CAACzW,EAAOvmB,EAAU7rB,KACxD,MAAMuD,EAAa6uC,EAAM1gC,MAAM,CAAC,cAAe,iBAAkBkE,EAAAA,GAAAA,IAAwB5V,GACnF8oD,EAAa1W,EAAMpjC,IAAI,aAAco4C,GAAAA,GAAAA,qBAE3C,OAAOv7B,EACJ7kB,QAAOmE,IACD5H,IAAe4H,EAAO6D,IAAI,gBAIxB7D,EAAO6D,IAAI,eAAeuU,SAAShgB,KAE3CyD,QAAOmE,IACDA,EAAO6D,IAAI,gBAIT7D,EAAO6D,IAAI,eAAeuU,SAASulC,IAC1C,EAGAC,GAAWA,CAAC/oD,EAAO0oC,IAAUzD,GAAQjlC,GAAOgP,IAAIquB,KAAWqL,IAEpDsgB,GAAkCA,CAAChpD,EAAOoyC,IAAUyW,GAC/DzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAASA,EAAMgX,IAAI,cACjDhP,GAEC4rC,SACA5iC,SACAp3C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBC,GAAiCA,CAAClpD,EAAOoyC,IAAUyW,GAC9DzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAAS0wD,GAAexmD,OAAMnK,IAAQC,EAAMgX,IAAIjX,OAC9EiI,GAEC4rC,SACA5iC,SACAmgD,WAAUnxD,GAASywD,GAAmBh5B,IAAIz3B,KAC1CpmC,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBG,GAAmCA,CAACppD,EAAOoyC,IAAUyW,GAChEzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAAS0wD,GAAexmD,OAAMnK,IAAQC,EAAMgX,IAAIjX,OAC9EiI,GAEC4rC,SACA5iC,SACAhC,QAAOhP,GAASywD,GAAmBh5B,IAAIz3B,KACvCpmC,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBI,GAAoCA,CAACrpD,EAAOoyC,IAAUyW,GACjEzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAASA,EAAMgX,IAAI,gBACjDhP,GAEC4rC,SACA5iC,SACAp3C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBK,GAAiDA,CAACtpD,EAAOoyC,IAAUyW,GAC9EzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAASA,EAAMgX,IAAI,6BACjDhP,GAEC4rC,SACA5iC,SACAp3C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBM,GAAoCA,CAACvpD,EAAOoyC,IAAUyW,GACjEzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAASA,EAAMgX,IAAI,gBACjDhP,GAEC4rC,SACA5iC,SACAp3C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBO,GAA0CA,CAACxpD,EAAOoyC,IAAUyW,GACvEzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAASA,EAAMgX,IAAI,sBACjDhP,GAEC4rC,SACA5iC,SACAp3C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBQ,GAA2CA,CAACzpD,EAAOoyC,IAAUyW,GACxEzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAASA,EAAMgX,IAAI,uBACjDhP,GAEC4rC,SACA5iC,SACAp3C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBS,GAAkDA,CAAC1pD,EAAOoyC,IAAUyW,GAC/EzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAASA,EAAMgX,IAAI,8BACjDhP,GAEC4rC,SACA5iC,SACAp3C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBU,GAA0CA,CAAC3pD,EAAOoyC,IAAUyW,GACvEzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAASA,EAAMgX,IAAI,sBACjDhP,GAEC4rC,SACA5iC,SACAp3C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBW,GAAqCA,CAAC5pD,EAAOoyC,IAAUyW,GAClEzW,EACAkT,GAAgBtlD,GAAOgH,QAAOhP,GAASA,EAAMgX,IAAI,iBACjDhP,GAEC4rC,SACA5iC,SACAp3C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBY,GAA2BA,CAAC7pD,EAAOoyC,IAC9CkT,GAAgBtlD,GAAO0R,MAAM,CAAC0gC,EAAMpjC,IAAI,cAAe,cAAe45C,IAAUhd,SAAS5iC,SACtFp3C,QAAOq3F,GAAQF,GAAS/oD,EAAO,cAAcipD,OAGrCa,GAA6BA,CAAC9pD,EAAOoyC,IAAUyW,GAC1DzW,EACAkT,GAAgBtlD,GAAO0R,MAAM,CAAC0gC,EAAMpjC,IAAI,cAAe,aAAcojC,EAAMpjC,IAAI,QAAS,gBAAiB25C,IACzG3oD,GAEC0U,KAAIu0C,GAAQA,EAAKj6C,IAAI,UACrBp9C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KAErBc,GAA4BA,CAAC/pD,EAAOoyC,IAAUyW,GACzDzW,EACAkT,GAAgBtlD,GAAO0R,MAAM,CAAC0gC,EAAMpjC,IAAI,cAAe,aAAcojC,EAAMpjC,IAAI,QAAS,eAAgB25C,IACxG3oD,GAEC0U,KAAIu0C,GAAQA,EAAKj6C,IAAI,UACrBp9C,QAAOq3F,GAAQF,GAAS/oD,EAAOipD,KCnKrBe,GAAgBhqD,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,SAAU,SACrDu4C,GAAoBjqD,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,SAAU,aAEzDw4C,GAAelqD,GAASgqD,GAAchqD,GAAOgP,IAAI,UACjDm7C,GAAkBnqD,GAASkqD,GAAalqD,GAExCoqD,GAAmBpqD,GAASgqD,GAAchqD,GAAOgP,IAAI,WACrDq7C,GAA0BrqD,GAASiqD,GAAkBjqD,GAAOgP,IAAI,UAChEs7C,GAA2BtqD,GAASiqD,GAAkBjqD,GAAOgP,IAAI,WAEjEu7C,GAAcvqD,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,SAAU,OACnD84C,GAAqBxqD,GAASuqD,GAAYvqD,GAAOgP,IAAI,aACrDy7C,GAAqBzqD,GAASuqD,GAAYvqD,GAAOgP,IAAI,aAErD07C,GAAyB1qD,GAASuqD,GAAYvqD,GAAOgP,IAAI,iBACzD27C,GAA8B3qD,GAASuqD,GAAYvqD,GAAOgP,IAAI,sBAC9D47C,GAAiC5qD,GAASuqD,GAAYvqD,GAAOgP,IAAI,yBACjE67C,GAA2B7qD,GAASuqD,GAAYvqD,GAAOgP,IAAI,mBAC3Dw2C,GAAyBxlD,GAASuqD,GAAYvqD,GAAOgP,IAAI,uBAEzD87C,IAAuBrxC,EAAAA,GAAAA,GAClC2wC,IACAjU,GAAWA,EAAQz7B,QAAO,CAACC,EAAK3iB,EAAOD,IAASC,EAAMmf,UAAYwD,EAAMA,EAAI9Z,KAAK9I,KAAOqR,EAAAA,GAAAA,QAAO,OAGpF2hD,GAA2B/qD,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,SAAU,oBAChEs5C,GAAqChrD,GAAS+qD,GAAyB/qD,GAAOgP,IAAI,cAClFi8C,GAAkCjrD,GAAS+qD,GAAyB/qD,GAAOgP,IAAI,WAC/Ek8C,GAAgClrD,GAAS+qD,GAAyB/qD,GAAOgP,IAAI,SAC7Em8C,GAAmCnrD,GAAS+qD,GAAyB/qD,GAAOgP,IAAI,YAIhFo8C,GAAyBprD,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,eAAgB,YACpE25C,GAAwBrrD,GAFGA,IAASA,EAAMgpB,KAAKtX,MAAM,CAAC,eAAgB,WAErC45C,CAAyBtrD,GCpC1DurD,GAAkBvrD,GAASA,EAAMgpB,KAAKha,IAAI,YAC1Cw8C,GAAsBxrD,GAASurD,GAAgBvrD,GAAOgP,IAAI,QAEjEy8C,GAAYp7B,GAASD,GACzBA,EACGqL,MAAMpL,EAAMrhB,IAAIohB,EAAKphB,IAAI,MAAM1R,aAC/BsG,OAAO,YAAY8nD,GAAYA,EAASh3C,IAAI+2C,GAAUp7B,MAM9Cs7B,IAA0BlyC,EAAAA,GAAAA,IACrCzZ,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,SAAU,cACrCg6B,IALmC1rC,GAASwrD,GAAoBxrD,GAAOgP,IAAI,0BACrChP,GAASwrD,GAAoBxrD,GAAOgP,IAAI,6BAO9E,CAACb,EAAUkiB,EAAOu7B,EAAgBC,IAC5B19C,EAASa,IAAI,uBACR68C,EAAkBn3C,KAAIsZ,GAASA,EAAMpqB,OAAO,SAASkoD,GAASA,EAAMp3C,IAAI+2C,GAAUp7B,QAGpFu7B,EAAel3C,KAAIsZ,GAASA,EAAMpqB,OAAO,SAASkoD,GAASA,EAAMp3C,IAAI+2C,GAAUp7B,UAI7E07B,GAAoB/rD,GAASurD,GAAgBvrD,GAAOgP,IAAI,MAExDg9C,GAAqCA,CAAChsD,EAAO9J,IADd8J,IAAS+rD,GAAkB/rD,GAAOgP,IAAI,iBACfi9C,CAA6BjsD,GAAOgP,IAAI9Y,GAE9Fg2D,GAAsCA,CAAClsD,EAAO9J,IADd8J,IAAS+rD,GAAkB/rD,GAAOgP,IAAI,kBACfm9C,CAA8BnsD,GAAOgP,IAAI9Y,GAChGk2D,GAAgDpsD,GAAS+rD,GAAkB/rD,GAAOgP,IAAI,kCACtFq9C,GAAkCrsD,GAAS+rD,GAAkB/rD,GAAOgP,IAAI,oBAIxEs9C,IAAuB7yC,EAAAA,GAAAA,IAFdzZ,GAASurD,GAAgBvrD,GAAOgP,IAAI,WAIxDhP,GAASA,EAAMgpB,KAAKtX,MAAM,CAAC,SAAU,eACrC,CAAC0gC,EAAOjkC,KACN,MAAMo+C,EAAUp+C,EAASa,IAAI,gBAAgB0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,QAEnE,MAAgC,kBAA5B4iB,EAAMpjC,IAAI,eAAkE,kBAA7BojC,EAAMpjC,IAAI,gBAAsCu9C,EAAQp1C,UAClGi7B,EAAM3X,OAAO,eAGf2X,CAAK,IAIHoa,GAAyBxsD,GAASurD,GAAgBvrD,GAAOgP,IAAI,WCrD7Dy9C,GAAoBzsD,GAASA,EAAMgpB,KAAKha,IAAI,kBAC5C09C,GAAwB1sD,IACnC,MAAMC,EAAUwsD,GAAkBzsD,GAAOgP,IAAI,WACvCtX,EAAO+0D,GAAkBzsD,GAAOgP,IAAI,QAE1C,OAAOoiB,QAAQ15B,GAAQA,EAAKqsB,KAAO,IAAM9jB,CAAO,ECWrCnK,GAAUkK,GAASA,EAAMgpB,KACzBgO,GAAyBh3B,GAASlK,GAAQkK,GAAOgP,IAAI,kBACrD8nB,GAAgB92B,GAASlK,GAAQkK,GAAOgP,IAAI,UAAU0F,KAAIsZ,GACrEA,EAAMpqB,OAAO,QAAQ/K,GAAWqwB,GAAalpB,EAAOnH,OACnDmO,QAAOgnB,IAAUA,EAAMhf,IAAI,QAAQmI,YACzBw1C,GAAmB3sD,GAASlK,GAAQkK,GAAOgP,IAAI,UAC/C49C,GAAkB5sD,GAASlK,GAAQkK,GAAOgP,IAAI,UAAU48B,SAAS5iC,SACjE6jD,GAAsB7sD,GAASlK,GAAQkK,GAAOgP,IAAI,UAAU2vB,WAAWlC,SAAQzO,GAASA,EAAMhf,IAAI,UAC5GhG,SACUm6C,GAAqBA,CAACnjD,EAAO/L,IAAO6B,GAAQkK,GAAO0R,MAAM,CAAC,SAAUzd,EAAGqJ,aACvEwvD,GAAoB9sD,GAASlK,GAAQkK,GAAOgP,IAAI,SAChD+9C,GAA0B/sD,GAASlK,GAAQkK,GAAOgP,IAAI,SACtD8xC,GAAY9gD,GAASlK,GAAQkK,GAAOgP,IAAI,UACxCgyC,GAAmBhhD,GAASlK,GAAQkK,GAAOgP,IAAI,iBAE/C8tB,GAAoB98B,GAASlK,GAAQkK,GAAOgP,IAAI,kBAEhDg+C,GAAqBhtD,GAASlK,GAAQkK,GAAOgP,IAAI,mBCjCjDi+C,GAAkBjtD,GAASA,EAAMktD,aACjCC,GAAwBntD,GAASitD,GAAgBjtD,GAAOgP,IAAI,WAG5Do+C,GAAiCptD,GAASmtD,GAAsBntD,GAAO0R,MAAM,CAAC,KAAM,iBACpF27C,GAA2BrtD,GAASmtD,GAAsBntD,GAAO0R,MAAM,CAAC,KAAM,WAC9E47C,GAA4BttD,GAASmtD,GAAsBntD,GAAO0R,MAAM,CAAC,KAAM,YAG/E67C,GAAyBvtD,GAASmtD,GAAsBntD,GAAO0R,MAAM,CAAC,OAAQ,wBCN9E87C,IAAiB/zC,EAAAA,GAAAA,IAC5BzZ,GAASA,EAAMytD,YAAYz+C,IAAI,SAC/B0+C,GAAAA,IACA,CAACD,EAAa/gD,IACZ+gD,EAAY/4C,KAAIi5C,GACdA,EAAW31B,MAAM,CAAC,QAAS,eAAgBtrB,EAAcgF,MAAM,CAAC,WAAYi8C,EAAWj8C,MAAM,CAAC,QAAS,yBAKhGk8C,GAAsB5tD,GAASA,EAAMytD,YAAY/7C,MAAM,CAAC,QAAS,SACjEm8C,GAA0BA,CAAC7tD,EAAO/L,KAC7C,MAAM05D,EAAaC,GAAoB5tD,GAEvC,OAAI2tD,EAAW3+C,IAAI,QAAU/a,EACpB05D,EAAWj8C,MAAM,CAAC,QAAS,SAG7B,IAAI,EAGAo8C,GAAmB9tD,GAASA,EAAMytD,YAAYz+C,IAAI,MAClD++C,GAAuB/tD,GAAS8tD,GAAiB9tD,GAAOgP,IAAI,UAC5Dg/C,GAA2BhuD,GAAS8tD,GAAiB9tD,GAAOgP,IAAI,cCzBhEi/C,GAAwBjuD,GAASA,EAAMkuD,iBAAiBl/C,IAAI,MAC5Dm/C,GAAgBnuD,GAASiuD,GAAsBjuD,GAAOgP,IAAI,cAC1Do/C,GAAepuD,GAASiuD,GAAsBjuD,GAAOgP,IAAI,iBCFzDq/C,GAAqBruD,GAASA,EAAMsuD,cAAct/C,IAAI,MACtDu/C,GAA6BvuD,GAASquD,GAAmBruD,GAAOgP,IAAI,gBACpEw/C,GAA0BxuD,GAASquD,GAAmBruD,GAAOgP,IAAI,sBACjEy/C,GAA2BzuD,GAASquD,GAAmBruD,GAAOgP,IAAI,uBAClE0/C,GAAiB1uD,GAASquD,GAAmBruD,GAAOgP,IAAI,eAIxD2/C,GAAmB3uD,GADIA,IAASA,EAAMsuD,cAAct/C,IAAI,QAC5B4/C,CAAqB5uD,GAAOgP,IAAI,iBAG5D6/C,GAAyB7uD,GAASA,EAAMsuD,cAAct/C,IAAI,UAC1D8/C,GAA2B9uD,GAAS6uD,GAAuB7uD,GAAOgP,IAAI,Y,gBCZ5E,MAAM+/C,GAAmB/uD,GAASA,EAAMgvD,sBAAsBhgD,IAAI,QAC5DigD,GAA8BjvD,GAAS+uD,GAAiB/uD,GAAOgP,IAAI,mBACnEkgD,GAA+BlvD,GAAS+uD,GAAiB/uD,GAAOgP,IAAI,oBACpEmgD,GAA+BnvD,GAAS+uD,GAAiB/uD,GAAOgP,IAAI,oBAGpEogD,GAAiBpvD,GAASA,EAAMgvD,sBAAsBhgD,IAAI,MAC1DqgD,GAA+BrvD,GAASovD,GAAepvD,GAAOgP,IAAI,oBAClEsgD,GAA6BtvD,GAASovD,GAAepvD,GAAOgP,IAAI,kBAChEugD,GAA+BvvD,GAASovD,GAAepvD,GAAOgP,IAAI,oBAClEwgD,GAAkCxvD,GAASovD,GAAepvD,GAAOgP,IAAI,uBACrEygD,GAAqCzvD,GAASovD,GAAepvD,GAAOgP,IAAI,+BACxE0gD,GAAiC1vD,GAASovD,GAAepvD,GAAOgP,IAAI,sBACpE2gD,GAAmC3vD,GAASovD,GAAepvD,GAAOgP,IAAI,wBACtE4gD,GAAyB5vD,GAASovD,GAAepvD,GAAOgP,IAAI,cAC5D6gD,GAAuB7vD,GAASovD,GAAepvD,GAAOgP,IAAI,YAG1D8gD,GAAqB9vD,GAASA,EAAMgvD,sBAAsBhgD,IAAI,UAG9D+gD,GAAwB/vD,GAChB4vD,GAAuB5vD,GAEtBivD,GAA4BjvD,GAASkvD,GAA6BlvD,GCxB3EgwD,GAAkBhwD,GAASA,EAAMiwD,SAASjhD,IAAI,QAC9CkhD,GAAsBlwD,GAASgwD,GAAgBhwD,GAC/CmwD,GAAoBnwD,GAASgwD,GAAgBhwD,GAAOgP,IAAI,UAGxDohD,GAAgBpwD,GAASA,EAAMiwD,SAASjhD,IAAI,MAC5CqhD,GAA2BrwD,GAASowD,GAAcpwD,GAAOgP,IAAI,yBAC7DshD,GAA4BtwD,GAASowD,GAAcpwD,GAAOgP,IAAI,kBAC9DuhD,GAAoCvwD,GAASowD,GAAcpwD,GAAOgP,IAAI,0BACtEwhD,GAA6BxwD,GAASowD,GAAcpwD,GAAOgP,IAAI,mBAC/DyhD,GAAoBzwD,GAASowD,GAAcpwD,GAAOgP,IAAI,kBAGtD0hD,GAAoB1wD,GAASA,EAAMiwD,SAASjhD,IAAI,UAChD2hD,GAAkB3wD,GAAS0wD,GAAkB1wD,GAAOgP,IAAI,QACxD4hD,GAAqB5wD,GAAS0wD,GAAkB1wD,GAAOgP,IAAI,WAC3D6hD,GAAqB7wD,GAAS0wD,GAAkB1wD,GAAOgP,IAAI,WChB3D8hD,GAAoB9wD,GAASA,EAAM+wD,eACnCC,GAAwBhxD,GAAS8wD,GAAkB9wD,GAAOgP,IAAI,QAK9DiiD,GAAoBjxD,GAASgxD,GAAsBhxD,GAAOgP,IAAI,qBAC9DkiD,GAA2BlxD,GAASgxD,GAAsBhxD,GAAOgP,IAAI,4BACrEmiD,GAAyBnxD,GAASgxD,GAAsBhxD,GAAOgP,IAAI,0BAGnEoiD,GAAsBpxD,GATAA,IAAS8wD,GAAkB9wD,GAAOgP,IAAI,MAS7BqiD,CAAoBrxD,GAAOgP,IAAI,qBAC9DsiD,GAAkCtxD,GAASoxD,GAAoBpxD,GAAOgP,IAAI,kBAC1EuiD,GAAoCvxD,GAASoxD,GAAoBpxD,GAAOgP,IAAI,oBAC5EwiD,GAAoCxxD,GAASoxD,GAAoBpxD,GAAOgP,IAAI,oBAC5EyiD,GAA0CzxD,GAASoxD,GAAoBpxD,GAAOgP,IAAI,0BAClF0iD,GAA0C1xD,GAASoxD,GAAoBpxD,GAAOgP,IAAI,0BAClF2iD,GAA8B3xD,GAASoxD,GAAoBpxD,GAAOgP,IAAI,cACtE4iD,GAAkC5xD,GAASoxD,GAAoBpxD,GAAOgP,IAAI,kBAC1E6iD,GAAoC7xD,GAASoxD,GAAoBpxD,GAAOgP,IAAI,oBAC5E8iD,GAA6B9xD,GAASoxD,GAAoBpxD,GAAOgP,IAAI,2BAGrE+iD,GAA2B/xD,GApBDA,IAAS8wD,GAAkB9wD,GAAOgP,IAAI,UAoB5BgjD,CAAwBhyD,GAAOgP,IAAI,qBACvEijD,GAAwBjyD,GAAS+xD,GAAyB/xD,GAAOgP,IAAI,QACrEkjD,GAAyBlyD,GAAS+xD,GAAyB/xD,GAAOgP,IAAI,S,0uBCrB5E,MAAMmjD,EAAoBnyD,GAASA,EAAMgpB,KAAKha,IAAI,cAC5CyxC,EAAsBzgD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,gBAC5DojD,EAAsBpyD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,cAG5DqjD,EAAsBryD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,gBAC5DsjD,EAAuBtyD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,qBAC7DujD,EAAsBvyD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,oBAC5DwjD,EAAyBxyD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,uBAE/DyjD,EAA8BzyD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,kBACpE82C,EAAqB9lD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,mBAC3D0jD,EAA4B1yD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,gBAClE2jD,EAAoB,SAAC3yD,GAAK,QAAAg0B,EAAAp6B,UAAAC,OAAKo6B,EAAK,IAAA5wB,MAAA2wB,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAALD,EAAKC,EAAA,GAAAt6B,UAAAs6B,GAAA,OAAKD,EAAMltB,MAAK+H,IAAwE,IAAhEqjD,EAAkBnyD,GAAOgP,IAAI,gBAAgBvH,QAAQqH,IAAa,EAC9H8jD,EAA+B5yD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,mBACrE6jD,EAA0C7yD,GAASmyD,EAAkBnyD,GAAO0R,MAAM,CAAC,kBAAmB,sBACtGohD,EAAwC9yD,GACnDmyD,EAAkBnyD,GAAO0R,MAAM,CAAC,kBAAmB,8BAExCqhD,EAAiC/yD,GAASmyD,EAAkBnyD,GAAO0R,MAAM,CAAC,kBAAmB,OAAQ,SACrGshD,EAA6BhzD,GAASmyD,EAAkBnyD,GAAO0R,MAAM,CAAC,kBAAmB,OAAQ,SACjGuhD,EAAkCjzD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,sBACxEkkD,EAAqClzD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,yBAC3EmkD,EAA6BnzD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,iBAEnEokD,EAA+BpzD,GAASmyD,EAAkBnyD,GAAO0R,MAAM,CAAC,kBAAmB,WAAWvN,EAAAA,EAAAA,QACtGi/C,EAAqCpjD,GAASozD,EAA6BpzD,GAAOgP,IAAI,UACtFq0C,EAAoCrjD,GAASozD,EAA6BpzD,GAAOgP,IAAI,SAErFqkD,EAAwBrzD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,YAE9Dyc,EAAyBzrB,GAASmyD,EAAkBnyD,GAAOgP,IAAI,aAC/D4G,EAA0B5V,GAASmyD,EAAkBnyD,GAAOgP,IAAI,cAChEskD,GAAiC75C,EAAAA,EAAAA,GAC5C7D,GACArS,GAAcwK,EAAAA,GAAAA,SAAuB/E,SAAShC,QAAO04B,GAAK3xB,EAAAA,GAAAA,MAAoB,CAAC2xB,EAAG,iBAAmBn8B,MAG1FgwD,EAA8BvzD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,4BAEpEwkD,EAAmCxzD,GAASmyD,EAAkBnyD,GAAOgP,IAAI,sB,gtBCzC/E,MAAM0+C,EAAuB1tD,GAASA,EAAM0M,cAAcsC,IAAI,QACxD0jC,EAAsB1yC,GAAS0tD,EAAqB1tD,GAAOgP,IAAI,UAC/D+G,EAAqBA,CAAC/V,EAAO/L,IAAOy5D,EAAqB1tD,GAAO0R,MAAM,CAAC,WAAYzd,IAGnFw/D,EAA2BA,CAACzzD,EAAOuD,IAC9CmqD,EAAqB1tD,GAAOgP,IAAI,UAAUhI,QAAOwgC,GAAKA,EAAEx4B,IAAI,gBAAkBzL,IAGnEmwD,GAAmBj6C,EAAAA,EAAAA,GAC9B7D,EAAAA,IAPwC5V,GAAS0tD,EAAqB1tD,GAAOgP,IAAI,YASjF,CAACzL,EAAYmJ,IAAkBA,EAAc1F,QAAOwgC,GAAKA,EAAEx4B,IAAI,gBAAkBzL,MAItEowD,EAAqB3zD,GAASA,EAAM0M,cAAcsC,IAAI,MACtD4kD,EAA0B5zD,GAAS2zD,EAAmB3zD,GAAOgP,IAAI,WAEjE6kD,EAAkC7zD,GAAS2zD,EAAmB3zD,GAAOgP,IAAI,qBACzE8kD,EAA0B9zD,GAAS2zD,EAAmB3zD,GAAOgP,IAAI,aACjE+kD,EAAyB/zD,GAAS2zD,EAAmB3zD,GAAOgP,IAAI,YAChEglD,EAAsBh0D,GAAS2zD,EAAmB3zD,GAAOgP,IAAI,OAG7DilD,EAA0Bj0D,GAASA,EAAM0M,cAAcsC,IAAI,WAG3DklD,EAAyBl0D,GAASi0D,EAAwBj0D,GAAOgP,IAAI,QAAQA,IAAI,uBACjFmlD,EAAyBn0D,GAASi0D,EAAwBj0D,GAAOgP,IAAI,QAAQA,IAAI,uBAGjFolD,EAA4Bp0D,GAASi0D,EAAwBj0D,GAAOgP,IAAI,MACxEqlD,EAAiCr0D,GAASo0D,EAA0Bp0D,GAAOgP,IAAI,gBAC/EslD,EAAkCt0D,GAASo0D,EAA0Bp0D,GAAOgP,IAAI,4BAChFulD,EAAiCv0D,GAASo0D,EAA0Bp0D,GAAOgP,IAAI,gBAC/EwlD,EAA+Bx0D,GAASo0D,EAA0Bp0D,GAAOgP,IAAI,cAC7EylD,EAAgCz0D,GAASo0D,EAA0Bp0D,GAAOgP,IAAI,iBAC9E0lD,EAAqC10D,GAASo0D,EAA0Bp0D,GAAOgP,IAAI,oBACnF2lD,EAAwB30D,GAASo0D,EAA0Bp0D,GAAOgP,IAAI,sBAGtE4lD,EAA4B50D,GAASA,EAAM0M,cAAcsC,IAAI,aAG7D6lD,EAA2B70D,GAASA,EAAM0M,cAAcsC,IAAI,cAM5D8lD,GAAwBr7C,EAAAA,EAAAA,GACnC7D,EAAAA,IAH6C5V,GAASA,EAAM0M,cAAcgF,MAAM,CAAC,QAAS,OAAQ,YAKlGg8C,GACA,CAACnqD,EAAYwxD,EAAOroD,IAAkBqoD,EACnCrgD,KAAIsgD,GAAQA,EAAK9mC,IAAI,cAAexhB,EAAcgF,MAAM,CAAC,WAAYsjD,EAAKhmD,IAAI,sBAC9EhI,QAAOguD,GAAQA,EAAKtjD,MAAM,CAAC,cAAe,iBAAmBnO,MAGrD0xD,EAAkCj1D,GAZNA,IAASA,EAAM0M,cAAcgF,MAAM,CAAC,QAAS,SAY9BwjD,CAA0Bl1D,GAAOgP,IAAI,YAAY+U,KAC5FoxC,EAA0Bn1D,GAASA,EAAM0M,cAAcgF,MAAM,CAAC,QAAS,OACvE0jD,EAAoCp1D,GAASm1D,EAAwBn1D,GAAOgP,IAAI,cAChFqmD,EAAgCr1D,GAASm1D,EAAwBn1D,GAAOgP,IAAI,UAC5EsmD,EAAkCt1D,GAASm1D,EAAwBn1D,GAAOgP,IAAI,YAC9EumD,EAAkCv1D,GAASm1D,EAAwBn1D,GAAOgP,IAAI,W,+1BChEpF,MAAMwmD,EAAgBx1D,GAASA,EAAMy1D,OAAOzmD,IAAI,QAE1C0mD,EAAyB11D,GAASw1D,EAAcx1D,GAAOgP,IAAI,iBAC3D2mD,EAA2B31D,GAASw1D,EAAcx1D,GAAOgP,IAAI,yBAG7D4mD,EAAc51D,GAASA,EAAMy1D,OAAOzmD,IAAI,MACxC6mD,EAAqB71D,GAAS41D,EAAY51D,GAAOgP,IAAI,aACrD8mD,EAA0B91D,GAAS41D,EAAY51D,GAAOgP,IAAI,kBAC1D+mD,EAAgC/1D,GAAS41D,EAAY51D,GAAOgP,IAAI,wBAChEgnD,EAAuCh2D,GAAS41D,EAAY51D,GAAOgP,IAAI,+BACvEinD,EAAqCj2D,GAAS41D,EAAY51D,GAAOgP,IAAI,6BACrEknD,EAAmBl2D,GAAS41D,EAAY51D,GAAOgP,IAAI,WACnDmnD,EAA8Bn2D,GAAS41D,EAAY51D,GAAOgP,IAAI,sBAC9DonD,EAAwBp2D,GAAS41D,EAAY51D,GAAOgP,IAAI,gBACxDqnD,EAAkCr2D,GAAS41D,EAAY51D,GAAOgP,IAAI,0BAClEsnD,EAAuCt2D,GAAS41D,EAAY51D,GAAOgP,IAAI,kBACvEunD,EAA6Bv2D,GAAS41D,EAAY51D,GAAOgP,IAAI,qBAC7DwnD,EAAkCx2D,GAAS41D,EAAY51D,GAAOgP,IAAI,0BAClEynD,EAAmCz2D,GAAS41D,EAAY51D,GAAOgP,IAAI,2BACnE0nD,EAAqC12D,GAAS41D,EAAY51D,GAAOgP,IAAI,6BACrE2nD,EAAqC32D,GAAS41D,EAAY51D,GAAOgP,IAAI,6BACrE4nD,EAAuB52D,GAAS41D,EAAY51D,GAAOgP,IAAI,qBACvD6nD,EAAqB72D,GAAS41D,EAAY51D,GAAOgP,IAAI,mBACrD8nD,EAA4B92D,GAAS41D,EAAY51D,GAAOgP,IAAI,0BAC5D+nD,EAAyB/2D,GAAS41D,EAAY51D,GAAOgP,IAAI,uBAGzDgoD,EAAmBh3D,GAASA,EAAMy1D,OAAOzmD,IAAI,UAC7CioD,GAAyBx9C,EAAAA,EAAAA,GACpCu9C,GACAt9C,GAAWA,EAAQ1S,QAAOhP,GAASgoB,EAAAA,KAAAA,OAAYhoB,OAEpCk/D,GAA+Bz9C,EAAAA,EAAAA,GAC1Cu9C,GACAt9C,IACE,IAAI9Y,GAASuD,EAAAA,EAAAA,OAEb,GAAIuV,EAAQhI,MAAM,CAAC,cAAe,aAAc,CAC9C,MAAMylD,EAAWz9C,EAAQhI,MAAM,CAAC,cAAe,QAE3CylD,IACFv2D,EAASA,EAAOstB,IAAI,WAAYipC,IAGlC,MAAMC,EAAW19C,EAAQhI,MAAM,CAAC,cAAe,QAE3C0lD,IACFx2D,EAASA,EAAOstB,IAAI,WAAYkpC,GAEpC,CAEA,GAAI19C,EAAQhI,MAAM,CAAC,gBAAiB,aAAc,CAChD,MAAM2lD,EAAa39C,EAAQhI,MAAM,CAAC,gBAAiB,QAE/C2lD,IACFz2D,EAASA,EAAOstB,IAAI,aAAcmpC,IAGpC,MAAMC,EAAa59C,EAAQhI,MAAM,CAAC,gBAAiB,QAE/C4lD,IACF12D,EAASA,EAAOstB,IAAI,aAAcopC,GAEtC,CAEA,OAAO12D,CAAM,IAGJ22D,GAAkC99C,EAAAA,EAAAA,IAC7CzZ,IACE,MAAMw3D,EAAiBR,EAAiBh3D,GAAOgP,IAAI,YAEnD,MAAgC,aAA5BknD,EAAiBl2D,GACZw3D,EAAe/8B,OAAO,kBAGxB+8B,CAAc,IAEvBh9B,GAAYA,IAGDi9B,EAAwBz3D,GAASg3D,EAAiBh3D,GAAOgP,IAAI,gBAC7D0oD,EAAgC13D,GAASg3D,EAAiBh3D,GAAO0R,MAAM,CAAC,wBAAyB,WACjGimD,EAAmC33D,GAASg3D,EAAiBh3D,GAAO0R,MAAM,CAAC,wBAAyB,cACpGkmD,EAA8B53D,GAASg3D,EAAiBh3D,GAAO0R,MAAM,CAAC,sBAAuB,WAC7FmmD,EAAiC73D,GAASg3D,EAAiBh3D,GAAO0R,MAAM,CAAC,sBAAuB,cAEvGomD,EAAe37B,IAAW,CAC9BA,QAASA,EAAQn1B,QAAO+wD,IAAOA,EAAG/oD,IAAI,cAAa0F,KAAIC,IAAK,CAAGvJ,MAAOuJ,EAAE3F,IAAI,SAAUhX,MAAO2c,EAAE3F,IAAI,aAAa/F,OAChH+uD,gBAAiB77B,EAAQn1B,QAAO+wD,GAAMA,EAAG/oD,IAAI,cAAa0F,KAAIC,IAAK,CAAGvJ,MAAOuJ,EAAE3F,IAAI,SAAUhX,MAAO2c,EAAE3F,IAAI,aAAa/F,SAG5GgvD,GAAgCx+C,EAAAA,EAAAA,GAC3Cu9C,GACAt9C,IAAW,CACTw+C,WAAYx+C,EAAQhI,MAAM,CAAC,WAAY,mBACvCymD,yBAA0Bz+C,EAAQhI,MAAM,CAAC,eAAgB,UACzD0mD,wBAAyB1+C,EAAQhI,MAAM,CAAC,eAAgB,SACxD2mD,sBAAuB3+C,EAAQhI,MAAM,CAAC,eAAgB,UACnDomD,EAAap+C,EAAQ1K,IAAI,yBAInBspD,GAA8B7+C,EAAAA,EAAAA,GACzCu9C,GACAt9C,IACE,MAAM9Y,EAAS,CAAC,EAgChB,GA9BI8Y,EAAQ1K,IAAI,cAAc+U,KAAO,IACnCnjB,EAAO23D,eAAiB7+C,EAAQ1K,IAAI,cACjChI,QAAOwxD,IAAOA,EAAGxpD,IAAI,cACrB0F,KAAI8jD,GAAMA,EAAGxpD,IAAI,QAAO/F,OAE3BrI,EAAO63D,uBAAyB/+C,EAAQ1K,IAAI,cACzChI,QAAOwxD,GAAMA,EAAGxpD,IAAI,cACpB0F,KAAI8jD,GAAMA,EAAGxpD,IAAI,QAAO/F,QAGzByQ,EAAQ1K,IAAI,eAAe+U,KAAO,IACpCnjB,EAAO83D,gBAAkBh/C,EAAQ1K,IAAI,eAClChI,QAAOwxD,IAAOA,EAAGxpD,IAAI,cACrB0F,KAAI8jD,GAAMA,EAAGxpD,IAAI,QAAO/F,OAE3BrI,EAAO+3D,wBAA0Bj/C,EAAQ1K,IAAI,eAC1ChI,QAAOwxD,GAAMA,EAAGxpD,IAAI,cACpB0F,KAAI8jD,GAAMA,EAAGxpD,IAAI,QAAO/F,QAGzByQ,EAAQ1K,IAAI,aAAa+U,KAAO,IAClCnjB,EAAOg4D,YAAcl/C,EAAQ1K,IAAI,aAC9BhI,QAAO0P,IAAMA,EAAE1H,IAAI,cACnB0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAO/F,OAEzBrI,EAAOi4D,oBAAsBn/C,EAAQ1K,IAAI,aACtChI,QAAO0P,GAAKA,EAAE1H,IAAI,cAClB0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAO/F,QAGvByQ,EAAQhI,MAAM,CAAC,gBAAiB,aAAc,CAChD,MAAM2lD,EAAa39C,EAAQhI,MAAM,CAAC,gBAAiB,QAE/C2lD,IACFz2D,EAAOk4D,aAAezB,GAGxB,MAAMC,EAAa59C,EAAQhI,MAAM,CAAC,gBAAiB,QAE/C4lD,IACF12D,EAAOm4D,aAAezB,EAE1B,CAEA,GAAI59C,EAAQhI,MAAM,CAAC,cAAe,aAAc,CAC9C,MAAMylD,EAAWz9C,EAAQhI,MAAM,CAAC,cAAe,QAE3CylD,IACFv2D,EAAOo4D,UAAY7B,GAGrB,MAAMC,EAAW19C,EAAQhI,MAAM,CAAC,cAAe,QAE3C0lD,IACFx2D,EAAOq4D,UAAY7B,EAEvB,CAYA,OAVI19C,EAAQ1K,IAAI,eAAe+U,KAAO,IACpCnjB,EAAO3E,IAAMyd,EAAQ1K,IAAI,eACtBhI,QAAO04B,IAAMA,EAAE1wB,IAAI,cACnB0F,KAAIgrB,GAAKA,EAAE1wB,IAAI,QAAO/F,OAEzBrI,EAAOm8B,YAAcrjB,EAAQ1K,IAAI,eAC9BhI,QAAO04B,GAAKA,EAAE1wB,IAAI,cAClB0F,KAAIgrB,GAAKA,EAAE1wB,IAAI,QAAO/F,QAGpB,IAAKrI,KAAWk3D,EAAap+C,EAAQ1K,IAAI,uBAAwB,G,wiBCjL5E,MAAM,SAAEkqD,EAAQ,KAAEC,EAAI,SAAEhzC,GAAa7gB,OAAOkD,SAE/B4wD,EAAsBp5D,GAASA,EAAMq5D,WACrCC,EAAsBt5D,GAASo5D,EAAoBp5D,GAAOgP,IAAI,UAC9Dw3C,EAAUxmD,GAASo5D,EAAoBp5D,GAAOgP,IAAI,QAClDuqD,EAAev5D,GAASo5D,EAAoBp5D,GAAOgP,IAAI,cAAgBw3C,EAAQxmD,GAC/EkS,EAA4BlS,GAASo5D,EAAoBp5D,GAAOgP,IAAI,gBACpEwqD,EAAuBx5D,GAASo5D,EAAoBp5D,GAAOgP,IAAI,WAC/DyqD,EAAqBz5D,GAASo5D,EAAoBp5D,GAAOgP,IAAI,SAC7D0qD,EAA0B15D,GAASo5D,EAAoBp5D,GAAOgP,IAAI,gBAAiB5F,EAAAA,EAAAA,QAAO,IAC1FuwD,EAAe35D,GAASo5D,EAAoBp5D,GAAOgP,IAAI,aACvD4qD,EAAgB55D,GAASo5D,EAAoBp5D,GAAOgP,IAAI,cACxD6qD,EAAoB75D,GAASo5D,EAAoBp5D,GAAO0R,MAAM,CAAC,MAAO,UACtEooD,EAAaA,IAAM,GAAGZ,MAAaC,IAAOhzC,IAAWC,QAAQ,MAAO,IACpE/yB,EAAY2M,IACvB,MAAMi/C,EAAMma,EAAoBp5D,GAAO0R,MAAM,CAAC,UAAU4S,EAAAA,EAAAA,IAAStkB,KAEjE,MAAY,cAARi/C,EACK,GAAG6a,UAGL7a,CAAG,EAGC8a,EAA0B/5D,GAASo5D,EAAoBp5D,GAAOgP,IAAI,cAClEgrD,EAA+Bh6D,GAAS+5D,EAAwB/5D,GAAOgP,IAAI,eAC3EirD,EAA2Bj6D,GAAS+5D,EAAwB/5D,GAAOgP,IAAI,WACvEkrD,EAAsCl6D,GAAS+5D,EAAwB/5D,GAAOgP,IAAI,sBAClFmrD,EAA4Bn6D,GAAS+5D,EAAwB/5D,GAAO0R,MAAM,CAAC,WAAY,SACvF0oD,EAA4Bp6D,GAAS+5D,EAAwB/5D,GAAO0R,MAAM,CAAC,WAAY,SACvF2oD,EAA+Br6D,GAASo5D,EAAoBp5D,GAAOgP,IAAI,mBACvEsrD,EAAqBt6D,GAASo5D,EAAoBp5D,GAAOgP,IAAI,SAC7DurD,EAAev6D,GAAuC,eAA9Bs6D,EAAmBt6D,E,ssCCrCjD,MAAMu8B,EAAoB,CAC/BvT,KAAM,CACJwxC,WAAY,eACZC,gBAAiB,sBACjB/uC,WAAY,gBACZgvC,OAAQ,QACR7uC,SAAU,cACV8uC,eAAgB,qBAChBC,qBAAsB,2BACtBC,cAAe,oBACfC,gBAAiB,sBACjBC,iBAAkB,uBAClBC,sBAAuB,4BACvBC,SAAU,UACVC,WAAY,cACZC,UAAW,cACXC,iBAAkB,sBAClBC,iBAAkB,uBAClBC,YAAa,iBACbC,SAAU,UACVC,wBAAyB,0BACzBr1B,eAAgB,mBAChB35B,aAAc,iBACdivD,WAAY,YACZjiC,eAAgB,oBAChBS,WAAY,WACZyhC,SAAU,aACVC,QAAS,SACTC,WAAY,eACZC,UAAW,cACX1tD,SAAU,CACRotC,cAAe,oBACfugB,gBAAiB,sBACjBC,cAAe,oBACfC,aAAc,mBACdC,oBAAqB,wBAEvBl+B,WAAY,CACVm+B,YAAa,kBACbC,aAAc,qBAGlBl+B,YAAa,CACXwM,SAAU,aACVF,UAAW,aACX6xB,kBAAmB,wBACnBC,aAAc,mBACdC,WAAY,gBACZC,eAAgB,iBAChBC,sBAAuB,2BACvBC,qBAAsB,wBACtBC,OAAQ,YAEVn2B,aAAc,CACZlB,aAAc,oBAEhBlH,QAAS,CACPw+B,eAAgB,SAChBC,YAAa,QAIJ7yD,EAAgB,CAC3B8yD,KAAM,OACNC,eAAgB,iBAChBC,YAAa,cACbC,aAAc,eACdC,OAAQ,SACRC,WAAY,aACZC,WAAY,aACZC,SAAU,WACVC,MAAO,QACPC,eAAgB,iBAChBC,cAAe,gBACfC,iBAAkB,oBAGPj0D,EAAkB,CAC7BszD,KAAM,OACNY,SAAU,WACVC,mBAAoB,qBACpBC,UAAW,aAGAC,EAAsB,CACjC,CAACr0D,EAAgBo0D,WAAY,iBAC7B,CAACp0D,EAAgBszD,MAAO,UACxB,CAACtzD,EAAgBk0D,UAAW,UAC5B,CAACl0D,EAAgBm0D,oBAAqB,WAG3BG,EAAoB,CAC/BC,SAAU,YACVC,SAAU,aAGCtzD,EAAuB,CAAC,MAAO,OAAQ,OAAQ,MAAO,MAAO,WAAY,OAAQ,aAEjFuzD,EAAgB,CAC3BC,UAAW,iBACXC,UAAW,YACXR,mBAAoB,0BACpBS,YAAa,mBACbC,iBAAkB,wBAClBC,cAAe,qBACfC,aAAc,uCACdC,wBAAyB,sCACzBC,SAAU,4CACVC,OAAQ,eAGGt0D,EAAY,CACvBu0D,QAAS,UACTC,aAAc,eAGHC,EAAa,CACxBC,KAAM,OACNC,aAAc,eACdC,MAAO,QACPC,oBAAqB,oBACrBC,uBAAwB,yBACxBC,uBAAwB,0BAGbj1D,EAAoB,CAC/Bk1D,QAAS,CACPP,EAAWC,KACXD,EAAWG,MACXH,EAAWE,aACXF,EAAWI,qBAEblC,eAAgB,CACd8B,EAAWC,KACXD,EAAWG,MACXH,EAAWE,aACXF,EAAWI,oBACXJ,EAAWK,uBACXL,EAAWM,yBAKFv2D,EAAe,CAC1By2D,YAAa,aACbC,eAAgB,gBAChBC,SAAU,WACVC,SAAU,WACVC,UAAW,YACXC,YAAa,aACbC,kBAAmB,kBACnBC,mBAAoB,oBACpBC,QAAS,UACTC,SAAU,WACVC,gBAAiB,iBACjBC,aAAc,cACdC,OAAQ,SACRC,SAAU,WACVC,gBAAiB,iBACjBC,sBAAuB,uBACvBC,eAAgB,gBAChBC,iBAAkB,kBAClBC,kBAAmB,mBACnBC,iBAAkB,kBAClBC,sBAAuB,sBACvBC,iBAAkB,kBAClBC,cAAe,eACfC,iBAAkB,iBAClBC,gBAAiB,iBACjBC,SAAU,WACVC,SAAU,WACVC,WAAY,aACZC,cAAe,eACfjE,YAAa,cACbkE,WAAY,aACZC,UAAW,YACXC,UAAW,YACXC,mBAAoB,mBACpBC,mBAAoB,mBACpBC,aAAc,cACdC,YAAa,aACbC,aAAc,cACdC,gBAAiB,iBACjBC,oBAAqB,qBACrB1E,aAAc,eACd2E,WAAY,aACZC,wBAAyB,wBACzBC,yBAA0B,yBAC1BC,gBAAiB,iBACjBC,WAAY,aACZtE,SAAU,WACVuE,gBAAiB,iBACjBC,wBAAyB,wBACzBC,0BAA2B,0BAC3BC,gBAAiB,iBACjBC,uBAAwB,wBACxBC,mBAAoB,mBACpBC,sBAAuB,sBACvBC,OAAQ,UAGGC,EAAsB,CACjCC,uBAAwB,uBACxBC,gBAAiB,iBACjBC,SAAU,YAGCr4D,EAAoB,CAC/BuyD,KAAM,OACNE,YAAa,cACbC,aAAc,gBAGH1zD,EAAa,CACxB61D,QAAS,UACTrC,eAAgB,kBAGLrzD,EAAgB,CAC3Bm5D,QAAS,UACTC,kBAAmB,oBACnBC,WAAY,aACZC,cAAe,gBACfC,UAAW,YACXC,wBAAyB,0BACzBC,eAAgB,kBAGL32D,EAAe,CAC1B42D,mBAAoB,qBACpBC,0BAA2B,4BAC3BC,+BAAgC,iCAChCC,wCAAyC,0CACzCC,gCAAiC,kCACjCC,oBAAqB,sBACrBC,iCAAkC,mCAClCC,4CAA6C,8CAC7CC,4BAA6B,8BAC7BC,kCAAmC,oCACnCC,yDAA0D,2DAC1DC,iCAAkC,mCAClCC,yCAA0C,2CAC1CC,kBAAmB,oBACnBC,yBAA0B,2BAC1BC,0BAA2B,4BAC3BC,gBAAiB,kBACjBC,uBAAwB,yBACxBC,0BAA2B,4BAC3BC,2BAA4B,6BAC5BC,8BAA+B,gCAC/BC,qBAAsB,uBACtBC,iCAAkC,mCAClCC,wBAAyB,0BACzBC,yBAA0B,2BAC1BC,oBAAqB,sBACrBC,6BAA8B,+BAC9BC,8BAA+B,gCAC/BC,uBAAwB,yBACxBC,oBAAqB,sBACrBC,+BAAgC,iCAChCC,uBAAwB,yBACxBC,kBAAmB,oBACnBC,kCAAmC,oCACnCC,iCAAkC,mCAClCC,wBAAyB,0BACzBC,gBAAiB,kBACjBC,kCAAmC,oCACnCC,8BAA+B,gCAC/BC,qBAAsB,uBACtBC,yCAA0C,2CAC1CC,iCAAkC,mCAClCC,qBAAsB,uBACtBC,kCAAmC,oCACnCC,6CAA8C,+CAC9CC,6BAA8B,+BAC9BC,kDAAmD,oDACnDC,mCAAoC,qCACpCC,wCAAyC,0CACzCC,wBAAyB,0BACzBC,8BAA+B,gCAC/BC,QAAS,UACTC,8BAA+B,gCAC/BC,sDAAuD,wDACvDC,sCAAuC,wCACvCC,4CAA6C,8CAC7CC,wBAAyB,0BACzBC,sBAAuB,wBACvBC,kBAAmB,oBACnBC,yBAA0B,2BAC1BC,iBAAkB,mBAClBC,eAAgB,iBAChBC,gBAAiB,kBACjBC,cAAe,gBACfC,mBAAoB,qBACpBC,sBAAuB,wBACvBC,0BAA2B,4BAC3BC,2BAA4B,6BAC5BC,2BAA4B,6BAC5BC,wBAAyB,0BACzBC,2BAA4B,6BAC5BC,0BAA2B,4BAC3BC,wBAAyB,0BACzBC,+BAAgC,iCAChCC,iBAAkB,mBAClBC,wBAAyB,0BACzBC,iBAAkB,mBAClBC,8CAA+C,gDAC/CC,+CAAgD,iDAChDC,0CAA2C,4CAC3CC,uBAAwB,yBACxBC,mBAAoB,qBACpBC,yBAA0B,4BAGfC,EAAa,CACxBC,KAAM,OACNC,UAAW,YACXC,OAAQ,SACRC,MAAO,QACPC,gBAAiB,mBAGNC,EAA8B,CACzCL,KAAM,OACNM,MAAO,QACPC,WAAY,cAGDloB,EAAe,GACfmoB,EAAuB,GACvBC,EAAqB,GACrBC,EAAc,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAErD7wB,EAAY,CACvB8wB,IAAK,MACLjM,OAAQ,SACRkM,SAAU,WACVC,wBAAyB,0BACzBC,UAAW,YACXC,gBAAiB,kBACjBC,iBAAkB,mBAClBC,yBAA0B,2BAC1B/H,gBAAiB,kBACjBgI,WAAY,cAGDriB,EAAmB,CAC9BsiB,oBAAqB,sBACrBC,iBAAkB,mBAClBC,IAAK,MACLC,kBAAmB,oBACnBC,oBAAqB,sBACrBC,mBAAoB,qBACpBC,kBAAmB,oBACnBC,MAAO,QACPC,KAAM,OACNC,gBAAiB,mBAGNxjB,EAAa,CACxByjB,KAAM,OACNC,IAAK,MACLC,OAAQ,SACRH,gBAAiB,iBACjBI,OAAQ,SACRC,MAAO,QACPC,QAAS,UACTC,eAAgB,gBAChBT,MAAO,QACPR,WAAY,YACZkB,gBAAiB,iBACjBC,KAAM,OACNvB,UAAW,WACXwB,YAAa,aACbC,mBAAoB,mBACpBC,IAAK,MACLC,iBAAkB,kBAClBC,MAAO,QACPC,WAAY,YACZC,UAAW,YACXC,4BAA6B,2BAC7BC,oCAAqC,kCACrCC,UAAW,WACXC,UAAW,WACXrB,KAAM,OACNsB,QAAS,UACTC,UAAW,YAGAC,EAAc,CACzBC,UAAW,kBACXC,cAAe,sBACfC,QAAS,gBACTC,aAAc,qBACdC,iBAAkB,0BAGPC,EAAY,CACvBC,WAAY,aACZC,KAAM,OACNC,SAAU,YAGCC,EAAW,CACtB,CAAEt9D,KAAM,QAAS7a,GAAI,QAASo4E,uBAAuB,GACrD,CAAEv9D,KAAM,WAAY7a,GAAI,WAAYo4E,uBAAuB,GAC3D,CAAEv9D,KAAM,MAAO7a,GAAI,MAAOo4E,uBAAuB,GACjD,CAAEv9D,KAAM,UAAW7a,GAAI,UAAWo4E,uBAAuB,GACzD,CAAEv9D,KAAM,UAAW7a,GAAI,UAAWo4E,uBAAuB,GACzD,CAAEv9D,KAAM,MAAO7a,GAAI,MAAOo4E,uBAAuB,GACjD,CAAEv9D,KAAM,MAAO7a,GAAI,MAAOo4E,uBAAuB,GACjD,CAAEv9D,KAAM,UAAW7a,GAAI,UAAWo4E,uBAAuB,GACzD,CAAEv9D,KAAM,eAAgB7a,GAAI,eAAgBo4E,uBAAuB,IAGxDC,EAAY,CACvBC,OAAQ,GACRC,YAAa,IACbC,MAAO,KACPC,aAAc,KACdC,OAAQ,MACRC,QAAS,OAGEC,EAAa,CACxB,QACA,YACA,YACA,YACA,aACA,aACA,eACA,eACA,iBACA,iBACA,YACA,YACA,gBACA,iBACA,cACA,eACA,eACA,eACA,gBACA,iBAGW/0B,EAAiB,CAC5B,GACA,QACA,gBAGWg1B,EAA8B,CAAC,aAAc,aAAc,eAE3DC,EAA0B,CACrCC,mBAAoB,qBACpBC,cAAe,gBACfC,cAAe,iBAGJC,EAAgC,CAC3CC,aAAc,eACdC,YAAa,cACbC,uBAAwB,yBACxBC,2BAA4B,8BAGjBC,EAAqB,CAChCC,WAAY,aACZC,iBAAkB,mBAClBC,iBAAkB,mBAClBC,UAAW,WACXC,UAAW,WACXC,aAAc,aACdC,aAAc,aACdC,gBAAiB,iBACjBC,YAAa,eAGFC,EAA0C,CAAC,IAC3CC,EAA8C,CAAC,GAE/CC,EAAY,CACvBC,IAAK,GACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,KAGMC,EAAgB,CAC3B,CAAEz6E,GAAI,EAAGy0C,MAAO,kCAChB,CAAEz0C,GAAI,EAAGy0C,MAAO,mCAChB,CAAEz0C,GAAI,EAAGy0C,MAAO,YAChB,CAAEz0C,GAAI,EAAGy0C,MAAO,aAChB,CAAEz0C,GAAI,EAAGy0C,MAAO,UAChB,CAAEz0C,GAAI,EAAGy0C,MAAO,YAChB,CAAEz0C,GAAI,EAAGy0C,MAAO,YAChB,CAAEz0C,GAAI,EAAGy0C,MAAO,UAChB,CAAEz0C,GAAI,EAAGy0C,MAAO,aAChB,CAAEz0C,GAAI,GAAIy0C,MAAO,YACjB,CAAEz0C,GAAI,GAAIy0C,MAAO,cACjB,CAAEz0C,GAAI,GAAIy0C,MAAO,cACjB,CAAEz0C,GAAI,GAAIy0C,MAAO,eACjB,CAAEz0C,GAAI,GAAIy0C,MAAO,eAGNimC,EAA0B,WAE1BC,EAAyB,CAAC,EAAG,GAAI,GAAI,GAAI,KAEzCC,EAA8B,SAC9BC,EAAmC,IAEnCC,EAAkB,CAC7B,CACEC,WAAY,EACZC,cAAe,KACfC,YAAa,KACbC,cAAe,CAAC,GAElB,CACEH,WAAY,EACZC,cAAe,KACfC,YAAa,KACbC,cAAe,CACb,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,OAGb,CACEH,WAAY,EACZC,cAAe,KACfC,YAAa,KACbC,cAAe,CAAC,GAElB,CACEH,WAAY,EACZC,cAAe,KACfC,YAAa,KACbC,cAAe,CAAC,GAElB,CACEH,WAAY,EACZC,cAAe,KACfC,YAAa,KACbC,cAAe,CAAC,GAElB,CACEH,WAAY,EACZC,cAAe,KACfC,YAAa,KACbC,cAAe,CAAC,IAIPC,EAA2B,CACtCr3C,IAAK,EACLs3C,IAAK,IACLC,MAAO,CACL,CACEt3E,MAAO,EACPu3E,YAAa,EACb7mC,MAAO,KAET,CACE1wC,MAAO,GACPu3E,YAAa,IACb7mC,MAAO,QAET,CACE1wC,MAAO,GACPu3E,YAAa,IACb7mC,MAAO,MAET,CACE1wC,MAAO,GACPu3E,YAAa,IACb7mC,MAAO,OAET,CACE1wC,MAAO,IACPu3E,YAAa,IACb7mC,MAAO,SAKA8mC,EAA6B,CACxCz3C,IAAK,EACLs3C,IAAK,IACLC,MAAO,CACL,CACEt3E,MAAO,EACPu3E,YAAa,EACb7mC,MAAO,KAET,CACE1wC,MAAO,GACPu3E,YAAa,IACb7mC,MAAO,OAET,CACE1wC,MAAO,GACPu3E,YAAa,IACb7mC,MAAO,OAET,CACE1wC,MAAO,GACPu3E,YAAa,IACb7mC,MAAO,QAET,CACE1wC,MAAO,IACPu3E,YAAa,IACb7mC,MAAO,QAKA+mC,EAAgB,oEAGhBC,EAAc,CACzBC,MAAO,QACPC,OAAQ,SACRC,SAAU,WACVC,SAAU,WACVC,YAAa,eAGFC,EAAqB,CAChCC,QAAS,SACTC,iBAAkB,OAClBC,gBAAiB,OACjBC,iBAAkB,wCAClBC,gBAAiB,iD,2IC3nBnB,MAcMC,EAAeA,CAACC,EAASC,KAAcpnE,EAAAA,EAAAA,QAAOmnE,EAAQ77D,KAAI4yC,IAAU,CACxEtvD,MAAO,GAAGqlC,IAAWiqB,WACrBkpB,YACAp+B,MAAO,CACLq+B,WAAYnpB,EACZU,YAAa,KACbnf,WAAY,KACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,gBAIJ+pB,EAAOJ,EA1BW,CACtB,iBACA,WACA,oCACA,iCACA,wBAqByC,GAAO/hE,OAAO+hE,EAlBhC,CACvB,cACA,QACA,iBAesF,IAElFvhE,GAAS3F,EAAAA,EAAAA,QAAO,CACpB,CACEpR,MAAO,aACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,KACbnf,WAAY,iBACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,OAGV,CACE3uD,MAAO,YACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,KACbnf,WAAY,WACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,OAGV,CACE3uD,MAAO,yBACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,kBACbnf,WAAY,uBACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,OAGV,CACE3uD,MAAO,wBACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,KACbnf,WAAY,sBACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,OAGV,CACE3uD,MAAO,oCACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,iBACbnf,WAAY,8BACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,OAGV,CACE3uD,MAAO,8BACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,2BACZzoB,YAAa,KACbnf,WAAY,KACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,8BAGV,CACE3uD,MAAO,8BACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,2BACZzoB,YAAa,KACbnf,WAAY,KACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,8BAGV,CACE3uD,MAAO,sCACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,kCACZzoB,YAAa,KACbnf,WAAY,KACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,sCAGV,CACE3uD,MAAO,cACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,KACbnf,WAAY,cACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,OAGV,CACE3uD,MAAO,QACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,KACbnf,WAAY,QACZigB,WAAY1B,EAAAA,GAAAA,mBACZlxD,KAAMywD,EAAAA,GAAAA,SAGTp4C,OAAOmiE,GAEV,OAEO,MAAMC,EAAiB,WAAuB,IAAtBH,EAAS52E,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACtC,MAAMq9C,EAAQloC,EAAO0H,MAAKC,GAAKA,EAAE1H,IAAI,eAAiBwhE,IAEtD,OAAIv5B,EACKA,EAAMjoC,IAAI,SAGZ,IACT,EAEa4hE,EAAmBx+B,IAC9B,MAAM6E,EAAQloC,EAAO0H,MAAKC,IAAKtN,EAAAA,EAAAA,QAAO,CACpCqnE,WAAYr+B,EAAMpjC,IAAI,cACtBg5C,YAAa5V,EAAMpjC,IAAI,eACvB65B,WAAYuJ,EAAMpjC,IAAI,cACtB85C,WAAY1W,EAAMpjC,IAAI,cACtB9Y,KAAMk8C,EAAMpjC,IAAI,UACf6hE,OAAOn6D,EAAE1H,IAAI,YAEhB,OAAIioC,EACKA,EAAMjoC,IAAI,SAGZ,IAAI,C,qEC1KN,MAAM8hE,EAAe,CAC1Bh9B,OAAQ,GACRi9B,YAAa,GACb76E,KAAM,OACN86E,QAAS,iBACTC,iBAAkB,GAClBC,KAAM,GACNC,aAAc,CAAC,E,+FCJjB,MAAMpiE,GAAS3F,EAAAA,EAAAA,QAAO,CACpB,CACEpR,MAAO,oBACPo6C,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,KACbnf,WAAY,cACZigB,WAAY1B,EAAAA,GAAAA,iBACZlxD,KAAM,SAGV,CACE8B,MAAO,8BACPo6C,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,oBACbnf,WAAY,cACZigB,WAAY1B,EAAAA,GAAAA,iBACZlxD,KAAM,kBAGV,CACE8B,MAAO,qBACPo6C,MAAO,CACLq+B,WAAY,YACZzoB,YAAa,KACbnf,WAAY,cACZigB,WAAY1B,EAAAA,GAAAA,iBACZlxD,KAAM,aAGV,CACE8B,MAAO,mBACPo6C,MAAO,CACLq+B,WAAY,oBACZzoB,YAAa,KACbnf,WAAY,cACZigB,WAAY1B,EAAAA,GAAAA,iBACZlxD,KAAM,QAGV,CACE8B,MAAO,4BACPo6C,MAAO,CACLq+B,WAAY,oBACZzoB,YAAa,aACbnf,WAAY,cACZigB,WAAY1B,EAAAA,GAAAA,iBACZlxD,KAAM,QAGV,CACE8B,MAAO,qBACPo6C,MAAO,CACLq+B,WAAY,YACZzoB,YAAa,KACbnf,WAAY,cACZigB,WAAY1B,EAAAA,GAAAA,iBACZlxD,KAAM,QAGV,CACE8B,MAAO,iBACPo6C,MAAO,CACLq+B,WAAY,cACZzoB,YAAa,KACbnf,WAAY,eACZigB,WAAY1B,EAAAA,GAAAA,iBACZlxD,KAAM,QAGV,CACE8B,MAAO,qCACPo6C,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,qBACbnf,WAAY,cACZigB,WAAY1B,EAAAA,GAAAA,iBACZlxD,KAAM,oBAKZ,MAEO,MAAM06E,EAAmBx+B,IAC9B,MAAM6E,EAAQloC,EAAO0H,MAAKC,IAAKtN,EAAAA,EAAAA,QAAO,CACpCqnE,WAAYr+B,EAAMpjC,IAAI,cACtBg5C,YAAa5V,EAAMpjC,IAAI,eACvB85C,WAAY1W,EAAMpjC,IAAI,gBACrB6hE,OAAOn6D,EAAE1H,IAAI,SAASk2C,UAAU,CAAC,aAAc,YAElD,OAAIjO,EACKA,EAAMjoC,IAAI,SAGZ,IAAI,C,mCC/Eb,IApBmB,CACjBoiE,sBAAuB,8EACvBC,uBAAwB,+EACxBC,wBAAyB,uEACzBC,wBAAyB,gFACzBC,uBAAwB,qEACxBC,SAAU,0DACVC,eAAgB,gEAEhBC,kBAAmB,8DACnBC,WAAY,+DACZC,mBAAoB,+DACpBC,mBAAoB,+DACpBC,gBAAiB,kEACjBC,aAAc,+DAEdC,qBAAsB,6EACtBC,eAAgB,uE,2ICbX,MAAM3B,EAAU,CAErB,iBACA,eACA,mBACA,oBACA,gBACA,kBACA,oBAGA,sBACA,mBAGA,aACA,aACA,YACA,eACA,aACA,kBACA,0BAGIG,GAAOtnE,EAAAA,EAAAA,QAAOmnE,EAAQ77D,KAAI4yC,IAAU,CACxCtvD,MAAO,GAAGqlC,IAAWiqB,WACrBlV,MAAO,CACLq+B,WAAYnpB,EACZU,YAAa,KACbnf,WAAY,KACZigB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAMywD,EAAAA,GAAAA,gBAIJ53C,GAAS3F,EAAAA,EAAAA,QAAO,CACpB,CACEpR,MAAO,oBACPo6C,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,KACbnf,WAAY,eACZigB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAMywD,EAAAA,GAAAA,OAGV,CACE3uD,MAAO,8BACPo6C,MAAO,CACLq+B,WAAY,2BACZzoB,YAAa,KACbnf,WAAY,KACZigB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAMywD,EAAAA,GAAAA,gCAGTp4C,OAAOmiE,GAEV,OAEO,MAAME,EAAmBx+B,IAC9B,MAAM6E,EAAQloC,EAAO0H,MAAKC,IAAKtN,EAAAA,EAAAA,QAAO,CACpCqnE,WAAYr+B,EAAMpjC,IAAI,cACtBg5C,YAAa5V,EAAMpjC,IAAI,eACvB85C,WAAY1W,EAAMpjC,IAAI,gBACrB6hE,OAAOn6D,EAAE1H,IAAI,SAASk2C,UAAU,CAAC,aAAc,YAElD,OAAIjO,EACKA,EAAMjoC,IAAI,SAGZ,IAAI,C,4FC1EN,MAAMmjE,EAAe,CAC1B9xB,OAAQ,GACR+xB,WAAY,iBACZC,WAAY,SACZC,eAAgB,YAChBC,2BAA2B,EAC3BC,aAAc,CACZC,iBAAkB,YAClBC,eAAgB,IAElBx8E,KAAM,aAGKy8E,EAA8B,CAAC,wBAAyB,wBAAyB,kB,wnECP9F,GAAexuE,EAAAA,EAAAA,KAAI,CACjByuE,OAAOzuE,EAAAA,EAAAA,KAAI,CACT0uE,KAAK1uE,EAAAA,EAAAA,KAAI2uE,GACTC,YAAY5uE,EAAAA,EAAAA,KAAI6uE,KAElBC,OAAO9uE,EAAAA,EAAAA,KAAI,CACTqI,aAAchN,EAAAA,cAAC0zE,EAAAA,EAAgB,MAC/B5mE,YAAa,QACbof,WAAY,UACZhf,cAAe,YACf2jB,MAAO,cACP8iD,SAAU,WACV1oC,UAAUtmC,EAAAA,EAAAA,KAAI,CACZ,EAAG,oBACH,EAAG,cACH,EAAG,mBACH,EAAG,mBACH,EAAG,iBACH,EAAG,kBACH,EAAG,mBACH,EAAG,gBACH,EAAG,kBACH,GAAI,oBACJ,GAAI,iBACJ,GAAI,kBACJ,GAAI,aACJ,GAAI,mBACJ,GAAI,iBACJ,GAAI,mBACJ,GAAI,cACJ,GAAI,cACJ,GAAI,eACJ,GAAI,mBACJ,GAAI,iBACJ,GAAI,uBACJ,GAAI,uBACJ,GAAI,YACJ,GAAI,wBACJ,GAAI,gBACJ,GAAI,iBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,kBACJ,GAAI,2BACJ,GAAI,cACJ,GAAI,eACJ,GAAI,eACJ,GAAI,gBACJ,GAAI,cACJ,GAAI,iBACJ,GAAI,kBACJ,GAAI,mBAENivE,eAAejvE,EAAAA,EAAAA,KAAI,CACjBkvE,MAAO,oBACPC,SAAU,cACVC,GAAI,mBACJC,MAAO,mBACPC,KAAM,iBACNC,SAAU,kBACVC,QAAS,mBACTC,QAAS,gBACTpD,UAAW,kBACX,cAAe,oBACfqD,MAAO,iBACPC,YAAa,aACbC,WAAY,mBACZC,SAAU,iBACVC,WAAY,mBACZC,MAAO,cACPC,MAAO,cACPC,OAAQ,eACRC,SAAU,wBACVC,OAAQ,uBACRC,GAAI,uBACJC,UAAW,YACXC,SAAU,wBACVC,QAAS,gBACTC,QAAS,iBACTC,OAAQ,gBACRC,OAAQ,gBACRC,WAAY,kBACZC,eAAgB,2BAChBC,cAAe,cACfC,OAAQ,eACRC,MAAO,eACPC,OAAQ,gBACRC,KAAM,cACNC,QAAS,iBACTC,SAAU,kBACVC,QAAS,sB,+FC9Ff,MAAMxmE,GAAS3F,EAAAA,EAAAA,QAAO,CACpB,CACEpR,MAAO,uBACPo6C,MAAO,CACLq+B,WAAY,qBACZzoB,YAAa,KACbnf,WAAY,KACZigB,WAAY1B,EAAAA,GAAAA,IACZlxD,KAAM,cAGV,CACE8B,MAAO,qBACPo6C,MAAO,CACLq+B,WAAY,mBACZzoB,YAAa,KACbnf,WAAY,KACZigB,WAAY1B,EAAAA,GAAAA,IACZlxD,KAAM,cAGV,CACE8B,MAAO,gCACPo6C,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,QACbnf,WAAY,qBACZigB,WAAY1B,EAAAA,GAAAA,IACZlxD,KAAM,OACNwL,KAAM,CACJ8zE,OAAQ,CAAC,EAAG,QAIlB,CACEx9E,MAAO,8BACPo6C,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,QACbnf,WAAY,mBACZigB,WAAY1B,EAAAA,GAAAA,IACZlxD,KAAM,OACNwL,KAAM,CACJ8zE,OAAQ,CAAC,EAAG,UAMpB,MAEO,MAAM5E,EAAmBx+B,IAC9B,MAAM6E,EAAQloC,EAAO0H,MAAKC,IAAKtN,EAAAA,EAAAA,QAAO,CACpCqnE,WAAYr+B,EAAMpjC,IAAI,cACtBg5C,YAAa5V,EAAMpjC,IAAI,eACvB85C,WAAY1W,EAAMpjC,IAAI,gBACrB6hE,OAAOn6D,EAAE1H,IAAI,SAASk2C,UAAU,CAAC,aAAc,YAElD,OAAIjO,EACKA,EAAMjoC,IAAI,SAGZ,IAAI,C,qECjEN,MAAMymE,EAAU,CACrBv4E,QAAS,CACPjJ,GAAI,KACJyhF,MAAO,IAETltE,SAAU,GACVu2C,KAAM,GACN76B,QAAS,G,6DCLX,IAAetB,IAAAA,GAAAA,O,0GCEf,MAAM2tD,EAAU,CAAC,mBAAoB,cAAe,gBAC9CoF,GAAYvsE,EAAAA,EAAAA,QAAOmnE,EAAQ77D,KAAI4yC,IAAU,CAC7CtvD,MAAOsvD,EACPlV,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,KACbnf,YAAYlzB,EAAAA,EAAAA,GAAU2xC,GACtBwB,WAAY1B,EAAAA,GAAAA,kBACZlxD,KAAMywD,EAAAA,GAAAA,WAGJ+pB,GAAOtnE,EAAAA,EAAAA,QAAOmnE,EAAQ77D,KAAI4yC,IAAU,CACxCtvD,MAAO,GAAGsvD,UACVlV,MAAO,CACLq+B,YAAY96D,EAAAA,EAAAA,GAAU2xC,GACtBU,YAAa,KACbnf,WAAY,KACZigB,WAAY1B,EAAAA,GAAAA,kBACZlxD,KAAMywD,EAAAA,GAAAA,gBAIJ53C,GAAS3F,EAAAA,EAAAA,QAAO,CACpB,CACEpR,MAAO,8BACPw4E,WAAW,EACXp+B,MAAO,CACLq+B,WAAY,2BACZzoB,YAAa,KACbnf,WAAY,KACZigB,WAAY1B,EAAAA,GAAAA,kBACZlxD,KAAMywD,EAAAA,GAAAA,gCAGTp4C,OAAOonE,EAAWjF,GAErB,MAEO,MAAME,EAAmBx+B,IAC9B,MAAM6E,EAAQloC,EAAO0H,MAAKC,IAAKtN,EAAAA,EAAAA,QAAO,CACpCqnE,WAAYr+B,EAAMpjC,IAAI,cACtBg5C,YAAa5V,EAAMpjC,IAAI,eACvB65B,WAAYuJ,EAAMpjC,IAAI,cACtB85C,WAAY1W,EAAMpjC,IAAI,cACtB9Y,KAAMk8C,EAAMpjC,IAAI,UACf6hE,OAAOn6D,EAAE1H,IAAI,YAEhB,OAAIioC,EACKA,EAAMjoC,IAAI,SAGZ,IAAI,C,gMCpDN,MAAM4mE,EAAc,CACzB,WACA,yBACA,YACA,2BACA,aACA,mBAGF,MAAexsE,EAAAA,EAAAA,QAAO,CACpB,CACEgpC,MAAO,CACLq+B,WAAY,WACZzoB,YAAa,KACbnf,WAAY,QACZigB,WAAY1B,EAAAA,GAAAA,kBACZlxD,KAAMywD,EAAAA,GAAAA,SAKL,MAAMkvB,EAAc,CACzB,QACA,WACA,QACA,SACA,sBACA,0BACA,mBACA,oBACA,mBAGIC,EAAqB,CACzBC,gBAAiB,CACf,QACA,2BAEFC,WAAY,CACV,QACA,2BAEFC,yBAA0B,CACxB,QACA,4BAISC,EAA6BzF,GAAcqF,EAAmBrF,IAAeoF,EAE7EM,EAA4BA,CAAC1F,EAAY5nC,KACpD,IAAyC,IAArCgtC,EAAYpuE,QAAQgpE,GACtB,OAAO,KAGT,MAAM2F,EAASF,EAA2BzF,GAE1C,OAAoC,IAAhC2F,EAAO3uE,QAAQohC,GACVA,EAGFutC,EAAO,EAAE,EAGLC,EAAsBA,CAAC5F,EAAYv6E,KACL,IAArC2/E,EAAYpuE,QAAQgpE,GACf9pB,EAAAA,GAAAA,UAGFzwD,IAASywD,EAAAA,GAAAA,UAAuBA,EAAAA,GAAAA,KAAkBzwD,C,wBCvE3D8O,EAAOC,QAAU,EAAjBD,K,uOCMO,SAASsxE,EAAWxnE,EAAM9W,EAAOu+E,GAA+C,IAAtCC,EAA4B58E,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,IACvE48E,IAAgCjxD,EAAAA,EAAAA,IAAgBhyB,EAAAA,EAAAA,cAClDkjF,EAAAA,EAAAA,IAAY3nE,EAAM9W,EAAO,CAAE0+E,KAAM,IAAKH,QAASA,GAAW3zD,MAAS+zD,IAAI,IAAK,QAAQ9zD,UAExF,CAEO,SAAS+zD,EAAa9nE,GAC3B2nE,EAAAA,EAAAA,OAAe3nE,EAAM,CAAE4nE,KAAM,KAC/B,CAEO,SAASG,EAAW/nE,GACzB,OAAO2nE,EAAAA,EAAAA,IAAY3nE,EACrB,CAQO,SAASgoE,IACdF,EAAalL,EAAAA,GAAAA,SACbkL,EAAalL,EAAAA,GAAAA,aACf,C,eClBA,MAAM93E,EAAWgvB,IAAAA,GAAAA,SAAqB,gBAEtCA,IAAAA,GAAAA,WAAqBhvB,GAErB,MAAMmjF,EAAMhlD,UAAS3K,EAAAA,EAAAA,IAAM9hB,OAAOkD,SAASC,KAAKqe,MAAM,KAAK,IAAM,IAAIiwD,IAAK,IAE7DroE,GAAetF,EAAAA,EAAAA,QAAO,CACjC4tE,WAAY,KACZC,YAAa,KACbnzH,aAAa,EACbozH,kBAAmBH,GAAOhlD,SAAS8kD,EAAWnL,EAAAA,GAAAA,WAAwB,KAAO,KAC7EyL,YAAY,EACZC,SAAU,GACVC,YAAY,EACZC,aAAc,GACdC,gBAAgB,EAChBx0H,UAAU,EACVk9C,SAAS,EACTu3E,cAAc,EACdC,cAAe,KACfC,WAAY,KACZC,SAAS,EACTl1H,gBAAgB,EAChBm1H,mBAAoB,CAClBC,MAAM,EACNC,QAAS,OACT/4B,KAAM,GACNg5B,kBAAkB,GAEpBC,cAAe,KACfpkF,aAGF,OAAe+a,EAAAA,EAAAA,GAAc,CAC3B,EAACspE,EAAAA,EAAAA,GAAeC,EAAAA,GAA2BA,EAAAA,KAA2Bl4E,GACpEA,EAAMy7B,MAAM,CAAE27C,SAAU,GAAIC,YAAY,EAAOG,cAAc,IAG/D,CAACU,EAAAA,IAA8Bl4E,GAASA,EAAMy7B,MAAM,CAAE27C,SAAU,GAAIC,YAAY,EAAOG,cAAc,IAErG,EAACS,EAAAA,EAAAA,GAAeC,EAAAA,GAA2BA,EAAAA,KAA2B,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASspE,GAAKrgF,EAAA,OAC5FkI,EAAMy7B,MAAM,CAAE27C,SAAUe,EAAKd,YAAY,EAAMG,cAAc,GAAQ,EAGvE,CAACU,EAAAA,IAA8B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASspE,GAAKC,EAAA,OAAKp4E,EAAMy7B,MAAM,CAAE27C,SAAUe,EAAKd,YAAY,EAAMG,cAAc,GAAQ,EAEjI,CAACU,EAAAA,IAA0B,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,SAAEuoE,EAAQ,WAAEC,IAAcgB,EAAA,OAAKr4E,EAC1EkuB,IAAI,WAAYkpD,GAChBlpD,IAAI,aAAcmpD,EAAW,EAChC,CAACa,EAAAA,IAA+Bl4E,GAAS0O,EAAawf,IAAI,oBAAqBluB,EAAMgP,IAAI,sBACzF,CAACkpE,EAAAA,IAA6B,CAACl4E,EAAKs4E,KAAA,IAAIzpE,QAAShb,GAAaykF,EAAA,OAAKt4E,EAAMkuB,IAAI,oBAAqBr6B,EAAY,EAC9G,CAACqkF,EAAAA,IAA2B,CAACl4E,EAAKu4E,KAAA,IAAI1pE,QAASmiE,GAASuH,EAAA,OAAKv4E,EAAMkuB,IAAI,gBAAiB8iD,EAAQ,EAChG,CAACkH,EAAAA,IAAwB,CAACl4E,EAAKw4E,KAAA,IAAI3pE,QAASmiE,GAASwH,EAAA,OAAKx4E,EAAMkuB,IAAI,aAAc8iD,EAAQ,EAC1F,CAACkH,EAAAA,IAAsBl4E,GAASA,EAAMkuB,IAAI,cAAc,GACxD,CAACgqD,EAAAA,IAAqBl4E,GAASA,EAAMkuB,IAAI,cAAc,GACvD,CAACgqD,EAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,kBAAmBluB,EAAMgP,IAAI,mBAC5E,CAACkpE,EAAAA,IAAmBl4E,GAASA,EAAMkuB,IAAI,YAAY,GACnD,CAACgqD,EAAAA,IAAmBl4E,GAASA,EAAMkuB,IAAI,YAAY,GACnD,CAACgqD,EAAAA,IAAwB,CAACl4E,EAAKy4E,KAAkB,IAAhB,QAAE5pE,GAAS4pE,EAC1C,YAAgB3+E,IAAZ+U,EACK7O,EAAM4D,OAAO,WAAW3D,IAAYA,IAGtCD,EAAMkuB,IAAI,UAAWrf,EAAQ,EAEtC,CAACqpE,EAAAA,IAAwB,CAACl4E,EAAK04E,KAAA,IAAI7pE,QAASmoE,GAAY0B,EAAA,OAAK14E,EAAMkuB,IAAI,aAAc8oD,EAAW,EAChG,CAACkB,EAAAA,IAAyB,CAACl4E,EAAK24E,KAAA,IAAI9pE,QAASooE,GAAa0B,EAAA,OAAK34E,EAAMkuB,IAAI,cAAe+oD,EAAY,EACpG,CAACiB,EAAAA,IAAsBl4E,GAASA,EAAMkuB,IAAI,eAAe,GACzD,CAACgqD,EAAAA,IAAwB,CAACl4E,EAAK44E,KAAA,IAAE,QAAE/pE,GAAS+pE,EAAA,OAAK54E,EAAM4D,OAAO,WAAW+zE,QAAwB79E,IAAZ+U,EAAwBA,GAAW8oE,GAAS,EACjI,CAACO,EAAAA,IAA2B,CAACl4E,EAAK64E,KAAA,IAAE,QAAEhqE,GAASgqE,EAAA,OAC7C74E,EAAM4D,OAAO,kBAAkB+zE,QAAwB79E,IAAZ+U,EAAwBA,GAAW8oE,GAAS,EAEzF,CAACO,EAAAA,IAAoC,CAACl4E,EAAK84E,KAAA,IAAIjqE,SAAS,KAAEkwC,EAAI,QAAE+4B,EAAO,iBAAEC,IAAoBe,EAAA,OAC3F94E,EAAMkuB,IAAI,sBAAsB9kB,EAAAA,EAAAA,QAAO,CAAE21C,OAAM+4B,UAASC,mBAAkBF,MAAM,IAAQ,EAE1F,CAACK,EAAAA,IAAiCl4E,GAChCA,EAAMkuB,IAAI,qBAAsBxf,EAAaM,IAAI,uBAGnD,CAACkpE,EAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,gBAAiB,MACxE,CAACgqD,EAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,gBAAiB,MACxE,CAACgqD,EAAAA,IAAqC,CAACl4E,EAAK+4E,KAAA,IAAE,QAAElqE,GAASkqE,EAAA,OACvD/4E,EAAMkuB,IAAI,iBAAiB9kB,EAAAA,EAAAA,QAAOyF,GAASjL,OAAO,OAAOq7C,GAAO,QAAQA,EAAIn4B,MAAM,aAAa,MAAMjY,EAAQ5W,aAAY,EAG3H,CAACigF,EAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,gBAAiB,MAElE,CAACgqD,EAAAA,IAAqBl4E,GAASA,EAAMkuB,IAAI,kBAAkB,IAC1Dxf,G,WCpGI,SAASsqE,EAAgBC,GAC9B,MAAMC,EAAgBD,EAAMp/E,OAAS,EAE/Bs/E,GADmBF,EAAM7yD,QAAQ,YAAa,IACfE,MAAM,uCAE3C,OAAO4yD,GAAiBC,CAC1B,C,yBCJA,MAAMvG,EAAQhlE,EAAAA,EAAAA,IAAiB,SAAS3E,OAQxC,OACE,CACE6F,KAAM,UACNsqE,SAAU,gBACVr1B,OAAQ,CACNs1B,MAAO,CACLC,QAAS1G,EAAMC,IAAI9uB,OAAOu1B,QAC1BC,OAAQ3G,EAAMC,IAAI9uB,OAAOw1B,OACzBC,aAAc5G,EAAMC,IAAI9uB,OAAOy1B,aAC/BC,uBAAwB7G,EAAMC,IAAI9uB,OAAO01B,uBACzCzsE,OAAQ,CACN0sE,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGbC,KAAM,CACJd,QAAS1G,EAAMC,IAAI9uB,OAAOu1B,QAC1BC,OAAQ3G,EAAMC,IAAI9uB,OAAOw1B,OACzBC,aAAc5G,EAAMC,IAAI9uB,OAAOy1B,aAC/BC,uBAAwB7G,EAAMC,IAAI9uB,OAAO01B,uBACzCzsE,OAAQ,CACN0sE,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,cAKjB,CACErrE,KAAM,UACNsqE,SAAU,QACVr1B,OAAQ,CACNs1B,MAAO,CACLC,QAAS1G,EAAMC,IAAI9uB,OAAOu1B,QAC1BC,OAAQ3G,EAAMC,IAAI9uB,OAAOw1B,OACzBC,aAAc5G,EAAMC,IAAI9uB,OAAOy1B,aAC/BC,uBAAwB7G,EAAMC,IAAI9uB,OAAO01B,uBACzCzsE,OAAQ,CACN0sE,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGbC,KAAM,CACJd,QAAS1G,EAAMC,IAAI9uB,OAAOu1B,QAC1BC,OAAQ3G,EAAMC,IAAI9uB,OAAOw1B,OACzBC,aAAc5G,EAAMC,IAAI9uB,OAAOy1B,aAC/BC,uBAAwB7G,EAAMC,IAAI9uB,OAAO01B,uBACzCzsE,OAAQ,CACN0sE,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,cAKjB,CACErrE,KAAM,UACNsqE,SAAU,QACVr1B,OAAQ,CACNs1B,MAAO,CACLC,QAAS1G,EAAMC,IAAI9uB,OAAOu1B,QAC1BC,OAAQ3G,EAAMC,IAAI9uB,OAAOw1B,OACzBC,aAAc5G,EAAMC,IAAI9uB,OAAOy1B,aAC/BC,uBAAwB7G,EAAMC,IAAI9uB,OAAO01B,uBACzCzsE,OAAQ,CACN0sE,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGbC,KAAM,CACJd,QAAS1G,EAAMC,IAAI9uB,OAAOu1B,QAC1BC,OAAQ3G,EAAMC,IAAI9uB,OAAOw1B,OACzBC,aAAc5G,EAAMC,IAAI9uB,OAAOy1B,aAC/BC,uBAAwB7G,EAAMC,IAAI9uB,OAAO01B,uBACzCzsE,OAAQ,CACN0sE,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,cAKjB,CACErrE,KAAM,UACNsqE,SAAU,QACVr1B,OAAQ,CACNs1B,MAAO,CACLC,QAAS,UACTC,OAAQ,UACRC,aAAc5G,EAAMC,IAAI9uB,OAAOy1B,aAC/BC,uBAAwB7G,EAAMC,IAAI9uB,OAAO01B,uBACzCzsE,OAAQ,CACN0sE,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGbC,KAAM,CACJd,QAAS,UACTC,OAAQ,UACRC,aAAc5G,EAAMC,IAAI9uB,OAAOy1B,aAC/BC,uBAAwB7G,EAAMC,IAAI9uB,OAAO01B,uBACzCzsE,OAAQ,CACN0sE,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,cAKjB,CACErrE,KAAM,UACNsqE,SAAU,aACVxG,MAAO,aACP7uB,OAAQ,CACNq2B,KAAM,CACJd,QAAS1G,EAAMG,WAAWhvB,OAAOu1B,QACjCC,OAAQ3G,EAAMG,WAAWhvB,OAAOw1B,OAChCC,aAAc5G,EAAMG,WAAWhvB,OAAOy1B,aACtCC,uBAAwB7G,EAAMG,WAAWhvB,OAAO01B,uBAChDzsE,OAAQ,CACN0sE,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGbd,MAAO,CACLC,QAAS1G,EAAMG,WAAWhvB,OAAOu1B,QACjCC,OAAQ3G,EAAMG,WAAWhvB,OAAOw1B,OAChCC,aAAc,UACdC,uBAAwB7G,EAAMG,WAAWhvB,OAAO01B,uBAChDzsE,OAAQ,CACN0sE,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,e,iECvMZ,MAAMzrE,GAAetF,EAAAA,EAAAA,QAAO,CACjCixE,4BAA4B,EAC5BC,oBAAqB,EACrB5wE,gBAAiB,UACjB6wE,oBAAqB,YACrBC,uBAAwB,EACxBC,iBAAkB,EAClBC,eAAgB,oCAChBC,cAAe,GACfC,UAAW,GACX5+B,aAAa,EACb6+B,gBAAgB,EAChB7B,iBAAiB,EACjBzzB,SAAS,EACTu1B,SAAU,MACVC,aAAc,EACdC,WAAY,oCACZC,YAAa,EACbzuC,gBAAiB,EACjBC,yBAA0B,EAC1BC,sBAAsB,EACtBwuC,gBAAiB,EACjBC,6BAA8B,EAC9BC,6BAA8B,EAC9BC,qBAAsB,EACtBC,wBAAyB,KACzBC,wBAAwB,EACxBC,yBAAyB,EACzBC,0BAA2B,KAC3BC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,iBAAkB,KAClBC,0BAA0B,EAC1BC,oBAAqB,KACrBC,YAAa,KACbC,sBAAsB,EACtBC,qBAAqB,EACrBz0D,aAAcqvD,EAAWnL,EAAAA,GAAAA,gBAA8B,KACvDwQ,mBAAmB,EACnBC,qBAAqB,EACrBC,wBAAwB,EACxBC,WAAY,CACVC,kBAAmB,KACnBC,+BAAgC,KAChCC,sBAAuB,KACvBC,YAAa,MAEf14B,OAAQ24B,EAAO,GAAG34B,OAAOs1B,MACzBqD,OAAM,EACNC,cAAe,KACfC,eAAgB,CACdC,iBAAkB,EAClBC,UAAW,EACXC,SAAU,SACVtyC,SAAU,IAEZuyC,WAAY,CACVpyC,kBAAmB,GACnBqyC,kBAAmB,GACnBC,eAAgB,IAElBC,gBAAiB,CACfC,qBAAsB,EACtBC,iBAAkB,GAEpBC,WAAW,EACXjlG,cAAc,EACdklG,eAAe,EACfC,cAAc,EACdC,qBAAsB,GACtBC,oBAAqB,GACrBC,kBAAmB,CACjBC,YAAa,GACbpI,OAAQ,GACRqI,aAAc,GACdC,QAAS,CAAC,EACVC,aAAc,CAAC,EACfC,kBAAmB,GACnBC,oBAAoB,GAEtBC,YAAY,EACZC,aAAc,CAAC,IAiCjB,OAAexvE,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAoB,CAACl4E,EAAKlI,KAAkB,IAAhB,QAAE+W,GAAS/W,EACtC,MAAMsmF,EAAY,IAAKvvE,GAKvB,OAHAuvE,EAAUzD,cAAgByD,EAAUzD,eAAiB,GACrDyD,EAAUlC,mBAAoB,EAEvBl8E,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAOg1E,GAAW,EAEvC,CAAClG,EAAAA,IAAuB,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASE,GAAQqpE,EAAA,OAAKp4E,EAAMy7B,MAAM1sB,EAAO,EAC3E,CAACmpE,EAAAA,IAA6B,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAC/Cr4E,EAAMg4B,MAAM,CAAC,gBAAgBriB,EAAAA,EAAAA,GAAU9G,EAAQ9W,MAAO8W,EAAQwvE,OAAO,EAEvE,EAACpG,EAAAA,EAAAA,GACCC,EAAAA,GACAA,EAAAA,GACAA,EAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,8BAA8B,GACrD,EAAC+pD,EAAAA,EAAAA,GACCC,EAAAA,GACAA,EAAAA,GACAA,EAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,8BAA8B,GACrD,EAAC+pD,EAAAA,EAAAA,GACCC,EAAAA,GACAA,EAAAA,GACAA,EAAAA,KACEl4E,IJzIJ42E,EAAalL,EAAAA,GAAAA,WACbkL,EAAalL,EAAAA,GAAAA,SACbkL,EAAalL,EAAAA,GAAAA,cI0IJ1rE,EAAMkuB,IAAI,8BAA8B,IAEjD,CAACgqD,EAAAA,IAAyB,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,MA9DjBgG,EAACt+E,EAAO+O,KACpC,MAAM,kBAAEivE,EAAiB,mBAAEC,GAAuBlvE,EAElD,IAAKivE,EACH,OAAOh+E,EAGT,MAAMu+E,EAA4BP,EAAkBh3E,QAAO+6B,GAAKA,EAAEy8C,kBAElE,GAAIP,EACF,OAAOj+E,EAAMkuB,IAAI,qBAAqB9kB,EAAAA,EAAAA,QAAO,IAAK2F,EAAQivE,kBAAmBO,KAG/E,MAAME,GAAiBC,EAAAA,EAAAA,MACjBziF,EAAM,GAUZ,OARAwiF,EAAe5mF,SAAQ8mF,IACrB,MAAM1nC,EAAQ+mC,EAAkBvnE,MAAKsrB,GAAKA,EAAEjzB,OAAS6vE,EAAc3vE,IAAI,YAEnEioC,GACFh7C,EAAI4E,KAAKo2C,EAAMhjD,GACjB,IAGK+L,EAAMkuB,IACX,qBACA9kB,EAAAA,EAAAA,QAAO,IAAK2F,EAAQivE,kBAAmBO,EAA0Bv3E,QAAO+6B,IAAM9lC,EAAIsnB,SAASwe,EAAE9tC,QAC9F,EAmCiDqqF,CAAsBt+E,EAAO6O,EAAQ,EACvF,CAACqpE,EAAAA,IAA4B,CAACl4E,EAAKu4E,KAAA,IAAE,QAAE1pE,GAAS0pE,EAAA,OAAKv4E,EAAM4+E,QAAQ,CAAC,sBAAsBx1E,EAAAA,EAAAA,QAAOyF,GAAS,EAC1G,CAACqpE,EAAAA,IAAmC,CAACl4E,EAAO6+E,IAC1C7+E,EAAMkuB,IAAI,kBAAmB8qD,EAAgB6F,EAAOhwE,UAEtD,CAACqpE,EAAAA,IAA+B,IAAMxpE,EACtC,CAACwpE,EAAAA,IAAsB,CAACl4E,EAAKw4E,KAAkC,IAA9B3pE,SAAS,KAAEC,EAAI,KAAE7D,IAAQutE,EACxD,MACMz0B,EAAS/jD,EAAMgP,IAAI,UAAUyH,MADpB0jB,GAAKrrB,IAASqrB,EAAEnrB,IAAI,UACa0C,MAAM,CAAC,SAAUzG,IAEjE,OAAOjL,EAAMkuB,IAAI,gBAAiBpf,GAAM8vE,QAAQ,CAAC,UAAW76B,EAAO,EAErE,CAACm0B,EAAAA,IAAmB,CAACl4E,EAAKy4E,KAAkC,IAA9B5pE,SAAS,KAAEC,EAAI,KAAE7D,IAAQwtE,EAGrD,OAAOz4E,EAAMkuB,IAAI,gBAAiBpf,GAAM8vE,QAAQ,CAAC,UAAW5+E,EAAMgP,IAAI,UAAUyH,MAFjE0jB,GAAKrrB,IAASqrB,EAAEnrB,IAAI,UAE0D0C,MAAM,CAAC,SAAUzG,IAAO,EAGvH,CAACitE,EAAAA,IAA+B,CAACl4E,EAAK04E,KAAA,IAAI7pE,QAAS5a,GAAIykF,EAAA,OACrD14E,EAAMsnC,SAAS,CAAC,aAAc,sBAAsBw3C,GAAU7qF,IAAO6qF,EAAQ,KAAO7qF,GAAI,EAE1F,CAACikF,EAAAA,IAAmC,CAACl4E,EAAK24E,KAAA,IAAI9pE,QAAS5a,GAAI0kF,EAAA,OACzD34E,EAAMsnC,SAAS,CAAC,aAAc,0BAA0Bw3C,GAAU7qF,IAAO6qF,EAAQ,KAAO7qF,GAAI,EAE9F,CAACikF,EAAAA,IAA4C,CAACl4E,EAAK44E,KAAA,IAAI/pE,QAAS5a,GAAI2kF,EAAA,OAClE54E,EAAMsnC,SAAS,CAAC,aAAc,mCAAmCw3C,GAAU7qF,IAAO6qF,EAAQ,KAAO7qF,GAAI,EAEvG,CAACikF,EAAAA,IAAmC,CAACl4E,EAAK64E,KAAA,IAAIhqE,QAAS5a,GAAI4kF,EAAA,OACzD74E,EAAMsnC,SAAS,CAAC,aAAc,0BAA0Bw3C,GAAU7qF,IAAO6qF,EAAQ,KAAO7qF,GAAI,EAE9F,CAACikF,EAAAA,IAAyB,CAACl4E,EAAK84E,KAAA,IAAIjqE,QAAS5a,GAAI6kF,EAAA,OAC/C94E,EAAMsnC,SAAS,CAAC,aAAc,gBAAgBw3C,GAAU7qF,IAAO6qF,EAAQ,KAAO7qF,GAAI,EAEpF,CAACikF,EAAAA,IAA6B,CAACl4E,EAAK+4E,KAAA,IAAIlqE,SAAS,MAAEzD,EAAK,MAAEpT,IAAS+gF,EAAA,OACjE/4E,EAAMg4B,MAAM,CAAC,aAAc5sB,GAAQpT,EAAM,EAE3C,CAACkgF,EAAAA,IAAyC,CAACl4E,EAAK++E,KAAA,IAAIlwE,QAAS5a,GAAI8qF,EAAA,OAAK/+E,EAAMg4B,MAAM,CAAC,aAAc,MAAOjG,SAAS99B,EAAI,IAAI,EAEzH,CAACikF,EAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAClF,CAACgqD,EAAAA,IAAqCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GACnF,CAACgqD,EAAAA,IAAqCl4E,GAASA,EAAMkuB,IAAI,2BAA2B,GACpF,CAACgqD,EAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,2BAA2B,GACrF,CAACgqD,EAAAA,IAAsCl4E,GAASA,EAAMy7B,MAAM,CAC1DigD,0BAA0B,EAC1BC,0BAA0B,IAE5B,CAACzD,EAAAA,IAAuCl4E,GAASA,EAAMy7B,MAAM,CAC3DigD,0BAA0B,EAC1BC,0BAA0B,IAE5B,CAACzD,EAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GACtF,CAACgqD,EAAAA,IAAuCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GAEvF,CAACgqD,EAAAA,IAAiC,CAACl4E,EAAKg/E,KAAA,IAAE,QAAEnwE,GAASmwE,EAAA,OAAKh/E,EAAMy7B,MAAM,CACpE0gD,oBAAqBttE,EACrButE,wBAAwB,GACxB,EAEF,CAAClE,EAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAC3E,CAACgqD,EAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAC7E,CAACgqD,EAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAE3E,CAAC+wD,EAAAA,IAA0B,CAACj/E,EAAKk/E,KAAkB,IAAhB,QAAErwE,GAASqwE,EAC5C,MAAMpwE,EAAO9O,EAAMgP,IAAI,iBACjB/D,EAAO4D,EAAU,OAAS,QAG1B8tE,EAAgB38E,EAAMgP,IAAI,UAAUyH,MAD3B0jB,GAAKrrB,IAASqrB,EAAEnrB,IAAI,UAGnC,OAAK2tE,EAIE38E,EAAM4+E,QAAQ,CAAC,UAAWjC,EAAcjrE,MAAM,CAAC,SAAUzG,KAHvDjL,CAG8D,EAGzE,EAACi4E,EAAAA,EAAAA,GACCkH,EAAAA,GACAC,EAAAA,KACE,CAACp/E,EAAKq/E,KAAsD,IAAlDxwE,SAAS,OAAEk1C,EAAM,SAAE+2B,EAAQ,aAAEC,IAAgBsE,EACzD,MAAMC,GAAWl2E,EAAAA,EAAAA,QAAO,CAAE26C,SAAQ+2B,WAAUC,iBAE5C,OAAO/6E,EAAMy7B,MAAM6jD,EAAS,EAE9B,CAACC,EAAAA,IAAwC,CAACv/E,EAAKw/E,KAAA,IAAI3wE,SAAS,qBAAE4uE,EAAoB,oBAAEC,IAAuB8B,EAAA,OACzGx/E,EAAMy7B,MAAM,CACVgiD,sBAAsBr0E,EAAAA,EAAAA,QAAOq0E,GAC7BC,qBAAqBt0E,EAAAA,EAAAA,QAAOs0E,IAC5B,EACJ,EAACzF,EAAAA,EAAAA,GACCwH,EAAAA,GACAA,EAAAA,KACEz/E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC/C,EAAC+pD,EAAAA,EAAAA,GACCwH,EAAAA,GACAA,EAAAA,GACAA,EAAAA,GACAA,EAAAA,KACEz/E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC/C,CAACjf,EAAAA,IAAwBjP,GAAS0O,EAAa+sB,MAAM,CACnDsoB,OAAQ/jD,EAAMgP,IAAI,UAClBktE,kBAAmBl8E,EAAMgP,IAAI,wBAE9BN,G,2CCnQH,MAAMgxE,EAAqBA,KAAMt2E,EAAAA,EAAAA,QAAO,CACtC0F,KAAM,GACN6wE,YAAa,GACbxjD,SAAStzB,EAAAA,EAAAA,KAAI,IACb+2E,UAAW,EACXC,oBAAoB,EACpBC,mBAAmB9/D,EAAAA,EAAAA,MAAK,MAGbtR,GAAetF,EAAAA,EAAAA,QAAO,CACjCnJ,SAAS,EACTh+B,qBAAqB,EACrBW,2BAA2B,EAC3BT,0BAA0B,EAC1B4yE,cAAe,KACfgrC,kBAAmBL,IACnBM,sBAAsBhgE,EAAAA,EAAAA,MAAK,IAC3BigE,kCAAmC,OACnCruH,OAAQ,OACRsuH,6BAA6B,EAC7BC,gBAAiB,KACjBC,qBAAqBv3E,EAAAA,EAAAA,KAAI,IACzBw3E,SAAU,OACVC,cAAe,QAGjB,OAAe3xE,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA+B,CAACl4E,EAAKlI,KAAA,IAAI+W,QAAS+e,GAAW91B,EAAA,OAAKkI,EAAMkuB,IAAI,oBAAqBN,EAAU,EAC5G,CAACsqD,EAAAA,IAA2Cl4E,GAASA,EAClDkuB,IAAI,oBAAqBxf,EAAaM,IAAI,sBAC1Ckf,IAAI,uBAAuB,GAC9B,CAACgqD,EAAAA,IAA2B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASnX,GAAM0gF,EAAA,OAAKp4E,EAAMkuB,IAAI,gBAAiBx2B,EAAK,EAE1F,CAACwgF,EAAAA,IAA8B,CAACl4E,EAAKq4E,KAAkB,IAAhB,QAAExpE,GAASwpE,EAC5C0H,EAAoBL,IAMxB,OAJI7wE,IACFkxE,EAAoBlxE,EAAQjL,OAAO,WAAWu4B,IAAWtzB,EAAAA,EAAAA,KAAIszB,MAGxDn8B,EAAMy7B,MAAM,CACjBx5D,qBAAqB,EACrB8yE,cAAe,KACfgrC,qBACA,EAEJ,CAAC7H,EAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GACzE,CAACqyD,EAAAA,IAA0CvgF,GAASA,EAAMkuB,IAAI,uBAAuB,GACrF,CAACsyD,EAAAA,IAA0CxgF,GAASA,EAAMkuB,IAAI,uBAAuB,GAErF,CAACgqD,EAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACrE,CAACqyD,EAAAA,IAAyDvgF,GAASA,EAAMkuB,IAAI,WAAW,GAExF,CAACgqD,EAAAA,IAAkD,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EAAMy7B,MAAM,CACrFwkD,kCAAmCpxE,GACnC,EACF,CAACqpE,EAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GACnF,CAACgqD,EAAAA,IAAiB,CAACl4E,EAAKu4E,KAAA,IAAI1pE,QAASj9C,GAAQ2mH,EAAA,OAAKv4E,EAAMkuB,IAAI,SAAUt8D,EAAO,EAE7E,CAACsmH,EAAAA,IAAoC,CAACl4E,EAAKw4E,KAAA,IAAI3pE,QAAS+e,GAAW4qD,EAAA,OAAKx4E,EAAMy7B,MAAM,CAClF74D,2BAA2B,EAC3Bm9G,kBAAmBnyD,GACnB,EAEF,CAACsqD,EAAAA,IAAmC,CAACl4E,EAAKy4E,KAAA,IAAI5pE,QAAS+e,GAAW6qD,EAAA,OAAKz4E,EAAMy7B,MAAM,CACjFt5D,0BAA0B,EAC1B49G,kBAAmBnyD,GACnB,EACF,CAACsqD,EAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,6BAA6B,GAErF,CAACgqD,EAAAA,IAA6B,CAACl4E,EAAK04E,KAAA,IAAI7pE,QAASvX,GAASohF,EAAA,OAAK14E,EAAM4D,OAAO,mBAAmB3P,GAAOA,IAAOqD,EAAU,KAAOA,GAAS,EACvI,CAAC4gF,EAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,kBAAmB,MAEtE,CAACgqD,EAAAA,IAAgC,CAACl4E,EAAK24E,KAAA,IAAE,QAAE9pE,GAAS8pE,EAAA,OAClD34E,EACGkuB,IAAI,SAAU,QACdA,IAAI,kBAAmB,MACvBA,IAAI,WAAYrf,EAAQ,EAE7B,CAACqpE,EAAAA,IAA8B,CAACl4E,EAAK44E,KAAA,IAAE,QAAE/pE,GAAS+pE,EAAA,OAAK54E,EAAMkuB,IAAI,gBAAiBrf,EAAQ,EAE1F,CAACqpE,EAAAA,IAA4Cl4E,GAASA,EAAM4D,OAAO,+BAA+Bg7B,IAAMA,IAExG,CAACs5C,EAAAA,IAAuC,CAACl4E,EAAK64E,KAAA,IAAIhqE,SAAS,UAAE+e,IAAairD,EAAA,OACxE74E,EACG4D,OAAO,wBAAwB68E,IAAMA,IAAKzgE,EAAAA,EAAAA,MAAK,KAAKijB,QAAQrV,EAAU5e,IAAI,SAC1EpL,OAAO,uBAAuB68E,IAAMA,IAAK53E,EAAAA,EAAAA,KAAI,KAAK63E,OAAO9yD,EAAU5e,IAAI,SACvEkf,IAAI,oBAAqBxf,EAAaM,IAAI,qBAAqB,EAEpE,CAACkpE,EAAAA,IAAqC,CAACl4E,EAAK84E,KAAA,IAAIjqE,SAAS,UAAE+e,IAAakrD,EAAA,OACtE94E,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAE9J,IAAI/oD,EAAU5e,IAAI,QAAO,EAEtE,CAACkpE,EAAAA,IAAqC,CAACl4E,EAAK+4E,KAAA,IAAIlqE,SAAS,UAAE+e,IAAamrD,EAAA,OACtE/4E,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAEC,OAAO9yD,EAAU5e,IAAI,QAAO,EAGzE,CAACkpE,EAAAA,IAAuC,CAACl4E,EAAK++E,KAAA,IAAIlwE,SAAS,UAAE+e,IAAamxD,EAAA,OACxE/+E,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAE9J,IAAI/oD,EAAU5e,IAAI,QAAO,EAEtE,CAACkpE,EAAAA,IAAuC,CAACl4E,EAAKg/E,KAAA,IAAInwE,SAAS,UAAE+e,IAAaoxD,EAAA,OACxEh/E,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAEC,OAAO9yD,EAAU5e,IAAI,QAAO,EAEzE,CAACkpE,EAAAA,IAAyC,CAACl4E,EAAKk/E,KAAA,IAAIrwE,SAAS,UAAE+e,IAAasxD,EAAA,OAC1El/E,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAEC,OAAO9yD,EAAU5e,IAAI,QAAO,EAGzE,CAACkpE,EAAAA,IAAwC,CAACl4E,EAAKq/E,KAAA,IAAIxwE,SAAS,YAAEtX,IAAe8nF,EAAA,OAC3Er/E,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAEC,OAAOnpF,IAAa,EAEjE,CAAC2gF,EAAAA,IAAsC,CAACl4E,EAAKw/E,KAAA,IAAI3wE,QAAStX,GAAaioF,EAAA,OACrEx/E,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAE9J,IAAIp/E,IAAa,EAE9D,CAAC2gF,EAAAA,IAAsC,CAACl4E,EAAK2gF,KAAA,IAAI9xE,SAAS,YAAEtX,IAAeopF,EAAA,OACzE3gF,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAEC,OAAOnpF,IAAa,EAGjE,CAAC2gF,EAAAA,IAAwC,CAACl4E,EAAK4gF,KAAA,IAAI/xE,QAAStX,GAAaqpF,EAAA,OACvE5gF,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAE9J,IAAIp/E,IAAa,EAE9D,CAAC2gF,EAAAA,IAAwC,CAACl4E,EAAK6gF,KAAA,IAAIhyE,SAAS,YAAEtX,IAAespF,EAAA,OAC3E7gF,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAEC,OAAOnpF,IAAa,EAEjE,CAAC2gF,EAAAA,IAA0C,CAACl4E,EAAK8gF,KAAA,IAAIjyE,SAAS,YAAEtX,IAAeupF,EAAA,OAC7E9gF,EAAM4D,OAAO,uBAAuB68E,GAAKA,EAAEC,OAAOnpF,IAAa,EAGjE,CAAC0X,EAAAA,IAAwB,IAAMP,GAC9BA,G,WC9HI,MAAMA,GAAetF,EAAAA,EAAAA,QAAO,CACjCyiB,SAAU,CAAC,EACXjrB,OAAQ,KAGGmgF,EAAiBA,CAAC/gF,EAAOpuC,KACpC,MAAMi6D,EAAW7rB,EAAMgP,IAAI,YAE3B,IAAIgyE,EAAW,CAACpvH,GAMhB,MAJe,qBAAXA,IACFovH,EAAW,CAAC,oBAAqB,cAG5BhhF,EAAM4D,OAAO,UAAUhD,IAC5B,MAAMqgF,EAAYrgF,EAAOhvC,QAAOqiC,IAC9B,MAAM+D,EAAQ6zB,EAAS7c,IAAI/a,EAAGqJ,YAAYoU,MAAMsvE,GAEhD,MAAqB,iBAAVhpF,EACFA,EAAMsrB,cAGRtrB,CAAK,IAGd,MAAe,SAAXpmC,EACKqvH,EAAUC,UAGZD,CAAS,GAChB,EAGJ,OAAetyE,EAAAA,EAAAA,GAAc,CAC3B,CAACwyE,EAAAA,IAAiC,CAACnhF,EAAKlI,KAAA,IAAI+W,SAAS,WAAE6c,IAAc5zB,EAAA,OACnEkI,EAAMy7B,OAAMryB,EAAAA,EAAAA,SAAOg4E,EAAAA,EAAAA,GAAY,CAAE11D,cAAc,cAAc,EAE/D,CAACy1D,EAAAA,IAA8C,CAACnhF,EAAKo4E,KAAA,IAAIvpE,QAAStX,GAAa6gF,EAAA,OAAKp4E,EACjFg4B,MAAM,CAAC,WAAYzgC,EAAY+F,WAAY,gBAAiB,EAAE,EACjE,CAAC6jF,EAAAA,IAAwC,CAACnhF,EAAKq4E,KAAA,IAAIxpE,SAAS,UAAE+e,EAAS,cAAEyzD,GAAgB,IAAShJ,EAAA,OAAKr4E,EACpG4D,OAAO,YAAYioB,GAAYA,EAASjoB,OAAOgqB,EAAU35B,GAAGqJ,YAAYoZ,IACvE,MAAM4qE,GAASl4E,EAAAA,EAAAA,QAAOwkB,GAEtB,OAAKyzD,GAAiB3qE,EACb4qE,EAAOpzD,IAAI,YAAaxX,EAAE1H,IAAI,cAGhCsyE,CAAM,MAEd19E,OAAO,UAAUhD,IACsB,IAAlCA,EAAO6G,QAAQmmB,EAAU35B,IACpB2M,EAAOC,KAAK+sB,EAAU35B,IAGxB2M,GACP,EACJ,CAACugF,EAAAA,IAA0C,CAACnhF,EAAKs4E,KAAA,IAAIzpE,QAAStX,GAAa+gF,EAAA,OAAKt4E,EAC7E4D,OAAO,YAAYioB,GAAYA,EAAS4O,OAAOljC,EAAY+F,cAC3DsG,OAAO,UAAUhD,GAAUA,EAAOoG,QAAO0P,GAAKA,IAAMnf,KAAa,EACpE,CAAC4pF,EAAAA,IAAyC,CAACnhF,EAAKu4E,KAAA,IAAI1pE,QAAS+e,GAAW2qD,EAAA,OAAKv4E,EAC1Eg4B,MAAM,CAAC,WAAYupD,OAAO3zD,EAAU5e,IAAI,OAAQ,aAAc,EAAE,EACnE,CAACmyE,EAAAA,IAAgD,CAACnhF,EAAKw4E,KAAA,IAAI3pE,SAAS,UAAE+e,EAAS,KAAE5E,IAAQwvD,EAAA,OAAKx4E,EAC3FsnC,SAAS,CAAC,WAAYi6C,OAAO3zD,EAAU5e,IAAI,OAAQ,cAAcuoB,GAASA,GAASvO,EAAKha,IAAI,gBAAkB,KAC9GgpB,MAAM,CAAC,WAAYupD,OAAO3zD,EAAU5e,IAAI,OAAQ,sBAAsB5F,EAAAA,EAAAA,QAAO,CAAEo4E,UAAW,IAAIC,OAAU,EAC3G,CAACN,EAAAA,IAAkD,CAACnhF,EAAKy4E,KAA+C,IAA3C5pE,SAAS,UAAE+e,EAAS,aAAE8zD,IAAgBjJ,EAC7FkJ,EAAe3hF,EAAM0R,MAAM,CAAC,WAAY6vE,OAAO3zD,EAAU5e,IAAI,SAASpL,OAAO,aAAa2zB,GAASA,EAAQmqD,IAM/G,OAJKC,EAAa3yE,IAAI,eACpB2yE,EAAeA,EAAazzD,IAAI,oBAAqB,OAGhDluB,EAAMg4B,MAAM,CAAC,WAAYupD,OAAO3zD,EAAU5e,IAAI,QAAS2yE,EAAa,EAG7E,CAACR,EAAAA,IAA0B,CAACnhF,EAAK04E,KAAA,IAAI7pE,QAASj9C,GAAQ8mH,EAAA,OAAKqI,EAAe/gF,EAAOpuC,EAAO,EAExF,CAACuvH,EAAAA,IAAyCnhF,GAAS+gF,EAAe/gF,EAAO,QAEzE,CAACmhF,EAAAA,IAAiD,CAACnhF,EAAK24E,KAAuC,IAAnC9pE,SAAS,QAAEvX,EAAO,OAAEsJ,IAAU+3E,EACxF,MAAMgJ,EAAe3hF,EAAM0R,MAAM,CAAC,WAAY6vE,OAAO3gF,EAAOrJ,eAAeqM,OAAO,qBAAqB3H,GAAOA,EAAI4E,KAAKvJ,KAEvH,OAAO0I,EAAMg4B,MAAM,CAAC,WAAYupD,OAAO3gF,EAAOrJ,cAAeoqF,EAAa,EAG5E,CAACR,EAAAA,IAAmD,CAACnhF,EAAK44E,KAAiD,IAA7C/pE,SAAS,QAAEvX,EAAO,IAAEsqF,EAAG,YAAErqF,IAAeqhF,EACpG,MAAM+I,EAAe3hF,EAAM0R,MAAM,CAAC,WAAY6vE,OAAOhqF,KAClDqM,OAAO,qBAAqB3H,GAAOA,EAAIktD,WAAUl1D,GAAMA,IAAOqD,MAEjE,OAAO0I,EAAMg4B,MAAM,CAAC,WAAYupD,OAAOhqF,IAAeoqF,EAAa,EAGrE,CAACpB,EAAAA,IAAoC,CAACvgF,EAAK64E,KAAA,IAAIhqE,SAAS,UAAE+e,EAAS,YAAEi0D,IAAehJ,EAAA,OAAK74E,EACtFsnC,SAAS,CAAC,WAAYi6C,OAAO3zD,EAAU5e,IAAI,OAAQ,cAAcuoB,GAASA,EAAQsqD,GAAY,EAEjG,CAACrB,EAAAA,IAAoC,CAACxgF,EAAK84E,KAAA,IAAIjqE,SAAS,UAAE+e,EAAS,YAAEi0D,IAAe/I,EAAA,OAAK94E,EACtFsnC,SAAS,CAAC,WAAYi6C,OAAO3zD,EAAU5e,IAAI,OAAQ,cAAcuoB,GAASA,EAAQsqD,GAAY,EAEjG,CAAC5yE,EAAAA,IAAwB,IAAMP,GAC9BA,GCrGI,MAAMA,GAAetF,EAAAA,EAAAA,QAAO,CACjC4f,KAAM,KAGR,OAAera,EAAAA,EAAAA,GAAc,CAC3B,CAACwyE,EAAAA,IAAgD,CAACnhF,EAAKlI,KAAA,IAAI+W,SAAS,KAAEma,IAAQlxB,EAAA,OAAKkI,EAAMy7B,MAAM,CAC7FzS,MAAM5f,EAAAA,EAAAA,QAAO4f,IACb,EACF,CAAC/Z,EAAAA,IAAwB,IAAMP,GAC9BA,GCXH,GAAeozE,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAIA,ICCC,MAAMgX,IAAetF,EAAAA,EAAAA,QAAO,CACjCyuE,MAAM,EACNkK,eAAgB,IAGlB,QAAepzE,EAAAA,EAAAA,GAAc,CAC3B,CAACwyE,EAAAA,IAAoD,CAACnhF,EAAKlI,KAAA,IAAI+W,QAASqjB,GAAQp6B,EAAA,OAAKkI,EAAMy7B,MAAM,CAC/Fo8C,MAAM,EACNkK,eAAgB7vD,GAChB,EACF,CAACivD,EAAAA,IAAoD,IAAMzyE,GAE3D,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICbI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCyuE,MAAM,EACNmK,gBAAiB,IAGnB,QAAerzE,EAAAA,EAAAA,GAAc,CAC3B,CAACwyE,EAAAA,IAAqD,CAACnhF,EAAKlI,KAAA,IAAI+W,QAASvX,GAASQ,EAAA,OAAKkI,EAAMy7B,MAAM,CACjGo8C,MAAM,EACNmK,gBAAiB1qF,GACjB,EACF,CAAC6pF,EAAAA,IAAqD,IAAMzyE,GAE5D,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,I,YCZH,MAAMuzE,GAAiBA,KAAM74E,EAAAA,EAAAA,QAAO,CAClC0F,KAAM,GACN6e,0BAA2B,KAGhBjf,IAAetF,EAAAA,EAAAA,QAAO,CACjClmC,iBAAiB,EACjBE,uBAAuB,EACvB8+G,QAAQ,EACRn1E,UAAU,EACVo1E,cAAeF,KACfG,UAAUC,EAAAA,GAAAA,OAGZ,QAAe1zE,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA2B,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASmf,GAAOl2B,EAAA,OAAKkI,EAAMkuB,IAAI,gBAAiBF,EAAM,EAC5F,CAACkqD,EAAAA,IAA0B,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMy7B,MAAM,CAC7Dv4D,iBAAiB,EACjBi/G,cAAetzE,GAAWozE,MAC1B,EACF,CAAC/J,EAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GACjE,CAACgqD,EAAAA,IAAgC,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAAKr4E,EAAMy7B,MAAM,CACnEr4D,uBAAuB,EACvB++G,cAAetzE,GACf,EACF,CAACqpE,EAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAE7E,CAACgqD,EAAAA,IAAyBl4E,GAASA,EAAMkuB,IAAI,UAAU,GACvD,CAACgqD,EAAAA,IAAyBl4E,GAASA,EAAMkuB,IAAI,UAAU,GACvD,CAACgqD,EAAAA,IAA2Bl4E,GAASA,EAAMy7B,MAAM,CAC/CymD,QAAQ,EACRh/G,iBAAiB,IAGnB,CAACg1G,EAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,YAAY,GAC3D,CAACgqD,EAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,YAAY,GAC3D,CAACgqD,EAAAA,IAA6Bl4E,GAASA,EAAMy7B,MAAM,CACjD1uB,UAAU,EACV3pC,uBAAuB,IAGzB,CAAC6rC,EAAAA,IAAwB,IAAMP,IAC9BA,IC3CI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,IAEnC,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAwB,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,gBAAE4rD,IAAmB3iE,EAAA,OAAKsR,EAAAA,EAAAA,QAAOqxD,EAAgB,EAE7F,CAACyd,EAAAA,IAA2B,CAACl4E,EAAKo4E,KAAkB,IAAhB,QAAEvpE,GAASupE,EAC7C,MAAMpqD,GAAQ5kB,EAAAA,EAAAA,QAAOyF,GACfyzE,EAAatiF,EAAMuiF,WAAUh0D,GAAKA,EAAEvf,IAAI,QAAUgf,EAAMhf,IAAI,QAElE,OAAoB,IAAhBszE,EACKtiF,EAAMkuB,IAAIo0D,EAAYt0D,GAGxBhuB,EAAMa,KAAKmtB,EAAM,EAE1B,CAACkqD,EAAAA,IAA6B,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAASmf,GAAOqqD,EAAA,OAAKr4E,EAAMgH,QAAOunB,GAAKA,EAAEvf,IAAI,QAAUgf,EAAMhf,IAAI,OAAM,EAE/G,CAACkpE,EAAAA,IAAwC,CAACl4E,EAAKs4E,KAAA,IAAIzpE,SAAS,QAAEvX,EAAO,OAAEsJ,IAAU03E,EAAA,OAAKt4E,EAAM0U,KAAI6Z,GAC1FA,EAAEvf,IAAI,QAAU1X,EACXi3B,EAAE3qB,OAAO,6BAA6B8S,GAAKA,EAAE7V,MAAKuI,EAAAA,EAAAA,QAAOxI,MAG3D2tB,GACP,EAEF,CAAC2pD,EAAAA,IAA0C,CAACl4E,EAAKu4E,KAAA,IAAI1pE,SAAS,QAAEvX,EAAO,GAAErD,EAAE,aAAEuuF,IAAgBjK,EAAA,OAAKv4E,EAAM0U,KAAI6Z,GACtGA,EAAEvf,IAAI,QAAU1X,EACXi3B,EAAE3qB,OAAO,6BAA6B8S,GAAKA,EAAEyyC,WAAUs5B,GAAMA,EAAGzzE,IAAI,QAAU/a,MAGhFs6B,GACP,EAEF,CAAC2pD,EAAAA,IAA+B,CAACl4E,EAAKw4E,KAAiC,IAA7B3pE,SAAS,UAAE+e,IAAa4qD,EAChE,MAAMmJ,GAAev4E,EAAAA,EAAAA,QAAOwkB,GAE5B,OAAO5tB,EAAM0U,KAAI6Z,GAAKA,EAAE3qB,OAAO,6BAA6B8S,IAC1D,MAAMgsE,EAAehsE,EAAEhC,KAAI+tE,GAAMA,EAAGzzE,IAAI,iBACxC,IAAI2e,EAA4BjX,EAEhC,GAAIirE,EAAa3yE,IAAI,qBAAqBuU,SAASgL,EAAEvf,IAAI,SAAW0zE,EAAan/D,SAASo+D,EAAa3yE,IAAI,OAAQ,CACjH,MAAM2zE,EAA2BhB,EAAa3yE,IAAI,6BAC/CyH,MAAKmsE,GAAOA,EAAI5zE,IAAI,sBAAwBuf,EAAEvf,IAAI,QAErD2e,EAA4BA,EAA0B9sB,KAAK8hF,EAC7D,CAEA,OAAOh1D,EAA0B3mB,QAC/By7E,GAAMA,EAAGzzE,IAAI,iBAAmB2yE,EAAa3yE,IAAI,OAAS2yE,EAAa3yE,IAAI,qBAAqBuU,SAASk/D,EAAGzzE,IAAI,sBACjH,KACA,EAGL,CAACC,EAAAA,IAAwB,IAAMP,IAC9BA,ICvDH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,KCEN,IAAeoqF,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,EACFnrF,KAAI,EACJorF,OAAM,EACNC,uBAAsB,GACtBC,wBAAuB,GACvB70D,OAAMA,K,wBCNR,MAGM80D,GAAqBjjF,IACzB,MAAM0F,EAASJ,OAAO49E,OAAOx9E,QAAU,KACvC,IAAIy9E,EAAYna,EAAAA,GAEhB,MAAMrjE,EAAcD,EAAU09E,GANZ,GAOZC,EAAcvrD,KAAKwrD,MAAM39E,EAAcw9E,GAC7CA,EAAYx9E,EAAc09E,EAC1B,MAAME,EAAa59E,EAAc,EAEjC,OAAI3F,EAAMgP,IAAI,gBAAkBtJ,EACvB,CAAEy9E,YAAWI,aAAYF,eAG3B,CAAEF,UAAWna,EAAAA,GAAoBua,gBAAYzpF,EAAWupF,cAAa,EAGjE30E,IAAetF,EAAAA,EAAAA,QAAO,CACjC0D,SAAS,EACTo1E,QAAQ,EACRn1E,UAAU,EACVy2E,WAAW,EACXh8H,iBAAiB,EACjBihB,gBAAgB,EAChBF,uBAAuB,EACvBI,kBAAkB,EAClB86G,mBAAmB,EACnBC,qBAAqB,EACrBC,kBAAkB,EAClBC,gBAAgB,EAChBC,aAAa,EACbN,gBAAYzpF,EACZqpF,UAAWna,EAAAA,GACXqa,YAAa,IAGf,QAAe10E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAwBl4E,GAASA,EAAMkuB,IAAI,WAAYluB,EAAMgP,IAAI,YAElE,CAACkpE,GAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GACjE,CAACgqD,GAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GAEjE,CAACgqD,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAC7E,CAACgqD,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAE7E,CAACgqD,GAAAA,IAAyBl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC/D,CAACgqD,GAAAA,IAAyBl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAE/D,CAACgqD,GAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GACnE,CAACgqD,GAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAEnE,CAACgqD,GAAAA,IAAyBl4E,GAASA,EAAMkuB,IAAI,WAAW,GAExD,CAACgqD,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,UAAU,GAC3D,CAACgqD,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,UAAU,GAC3D,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,UAAU,GAE7D,CAACgqD,GAAAA,IAA2Cl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GACtF,CAACgqD,GAAAA,IAA2Cl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GACtF,CAACgqD,GAAAA,IAA6Cl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAExF,CAACgqD,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GACrE,CAACgqD,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GACrE,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAEvE,CAACgqD,GAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GACjE,CAACgqD,GAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GACjE,CAACgqD,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAEnE,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,YAAY,GAC/D,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,YAAY,GAC/D,CAACgqD,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,YAAY,GAEjE,CAACgqD,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,aAAa,GAC9D,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,aAAa,GAE/D,CAACgqD,GAAAA,IAA+B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,oBAAqBrf,EAAQ,EAE/F,CAACqpE,GAAAA,IAA4Bl4E,IAC3B,MAAMs/E,EAAWt/E,EACdkuB,IAAI,YAAa86C,EAAAA,IACjBplE,OAAO,eAAeg7B,IAAMA,IAE/B,OAAO0gD,EAAS7jD,MAAMwnD,GAAmB3D,GAAU,EAGrD,CAACwE,GAAAA,IAA0C9jF,GAASA,EAAMy7B,MAAMwnD,GAAmBjjF,IAEnF,CAACiP,EAAAA,IAAwB,IAAMP,IAC9BA,IC5FI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC26E,WAAY,GACZC,kBAAmBnX,EAAAA,KAGf7gD,GAAO+3D,GAAcA,EAAWnyH,QAAOmwE,GAAKA,EAAE/yB,IAAI,QAAQsU,gBAGhE,QAAe3U,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAwB,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASk1E,GAAYjsF,EAAA,OAAKkI,EAAMkuB,IAAI,aAAclC,IAAK5iB,EAAAA,EAAAA,QAAO26E,IAAa,EAE9G,CAAC7L,GAAAA,IAA+B,CAACl4E,EAAKo4E,KAAkB,IAAhB,QAAEvpE,GAASupE,EACjD,MAAM/oC,GAAYjmC,EAAAA,EAAAA,QAAOyF,GACnBk1E,EAAa/jF,EAAMgP,IAAI,cACvBioC,EAAQ8sC,EAAWttE,MAAKsrB,GAAKA,EAAE/yB,IAAI,QAAUqgC,EAAUrgC,IAAI,QAEjE,IAAIi1E,EAMJ,OAJI50C,EAAUrgC,IAAI,YAChBi1E,EAbsBj3E,IAAUA,EAAO0N,QAAO,CAACC,EAAKjE,IAAMiE,EAAIg8D,IAAIjgE,EAAEhC,KAAIqtB,GAAMA,EAAE/yB,IAAI,sBAAqBnG,EAAAA,EAAAA,QAaxFq7E,CAAoB70C,EAAUrgC,IAAI,WAAWghB,UAAUhnB,UAGtEiuC,EACKj3C,EAAMkuB,IAAI,aAAclC,GAAK+3D,EAAWrvE,KAAIqtB,GAC7CA,EAAE/yB,IAAI,QAAUqgC,EAAUrgC,IAAI,MACzBqgC,EAAUnhB,IAAI,iBAAkB+1D,GAGlCliD,MAIJ/hC,EAAM4D,OAAO,cAAcm+B,GAAK/V,GAAK+V,EAAElhC,KAAKwuC,EAAUnhB,IAAI,iBAAkB+1D,MAAkB,EAGvG,CAAC/L,GAAAA,IAAiC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAAS5a,GAAIokF,EAAA,OACvDr4E,EAAM4D,OAAO,cAAcmgF,GAAcA,EAAW/8E,QAAO+6B,GAAKA,EAAE/yB,IAAI,QAAU/a,KAAI,EAGtF,CAACgb,EAAAA,IAAwB,IAAMP,IAC9BA,I,wBCxCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CAAC,GAI9B+6E,GAA4BA,CAAC/xC,EAAOpkB,EAAO/tB,IAC3C+tB,EACKokB,EAAM9K,SAAS,CAAC,OAAQ,WAAWnZ,GAAUA,EAAOzZ,KAAI6Z,GACzDA,EAAEvf,IAAI,QAAUgf,EAAMhf,IAAI,MACrBuf,EAAEL,IAAI,UAAWjuB,GAGnBsuB,MAIJ6jB,EAAMpa,MAAM,CAAC,OAAQ,WAAY/3B,GAG1C,QAAe0O,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA+B,CAACl4E,EAAKlI,KAA6B,IAAzB+W,QAASwgC,GAAWv3C,EAG5D,OAFqBssF,EAAAA,GAAAA,KAAWh7E,EAAAA,EAAAA,QAAOimC,GAEpB,EAGrB,CAAC6oC,GAAAA,IAAuB,CAACl4E,EAAKo4E,KAA2D,IAAvDvpE,SAAS,MAAEuoB,EAAK,WAAE6e,EAAU,KAAEv+C,EAAI,WAAE2sF,IAAcjM,EAClF,MAAMhmC,EAAQpyC,EAAM0R,MAAM,CAAC,SAAUukC,EAAY7e,IAEjD,OAAIgb,EACKpyC,EAAMg4B,MAAM,CAAC,SAAUie,EAAY7e,GAAQgb,EAAM3W,MAAM,CAC5D/jC,MAAM0R,EAAAA,EAAAA,QAAO1R,GACbuI,SAAS,EACTokF,gBAIGrkF,CAAK,EAGd,CAACk4E,GAAAA,IAA0B,CAACl4E,EAAKq4E,KAAkD,IAA9CxpE,SAAS,MAAEuoB,EAAK,WAAE6e,EAAU,QAAEh2C,IAAWo4E,EAC5E,MAAMiM,EAAsB,OAAVltD,EAAiBp3B,EAAM0R,MAAM,CAAC,SAAUukC,IAAalyB,KAAO,EAAIqT,EAE5Egb,EAAQpyC,EAAM0R,MAAM,CAAC,SAAUukC,EAAYquC,IAEjD,OAAIlyC,EACKpyC,EAAMg4B,MAAM,CAAC,SAAUie,EAAYquC,GAAYlyC,EAAMlkB,IAAI,eAAuBp0B,IAAZmG,GAAwBA,IAG9FD,CAAK,EAGd,CAACk4E,GAAAA,IAAsB,CAACl4E,EAAKs4E,KAAqD,IAAjDzpE,SAAS,MAAEuoB,EAAK,WAAE6e,EAAU,IAAEl+C,EAAG,MAAEC,IAASsgF,EAC3E,MAAMgM,EAAsB,OAAVltD,EAAiBp3B,EAAM0R,MAAM,CAAC,SAAUukC,IAAalyB,KAAO,EAAIqT,EAC5Egb,EAAQpyC,EAAM0R,MAAM,CAAC,SAAUukC,EAAYquC,IAEjD,OAAIlyC,EACKpyC,EAAMg4B,MAAM,CAAC,SAAUie,EAAYquC,GAAYlyC,EAAMxuC,OAAO,QAAQlC,IAASA,IAAQyC,EAAAA,EAAAA,KAAI,CAAC,IAAI+pB,IAAIn2B,EAAKC,MAGzGgI,CAAK,EAGd,CAACk4E,GAAAA,IAAmB,CAACl4E,EAAKu4E,KAAgD,IAA5C1pE,SAAS,MAAEujC,EAAK,MAAEhb,EAAK,WAAE6e,IAAcsiC,EACnE,GAAc,OAAVnhD,EAAgB,CAClB,MAAMmtD,EAAavkF,EAAM0R,MAAM,CAAC,UAAWukC,IAAavhC,KAAI8vE,GAAUA,EAAO5gF,OAAO,KAAK6gF,GAAKA,EAAI,MAElG,OAAOzkF,EAAMsnC,SAAS,CAAC,SAAU2O,IAAajpC,GAAUA,EAAOnM,KAAKuxC,KACjEpa,MAAM,CAAC,UAAWie,GAAasuC,EAAW1jF,MAAKuI,EAAAA,EAAAA,QAAO,CAAEs7E,EAAG,GAAIC,EAAG,EAAG7hC,EAAG,EAAG2hC,EAAG,KACnF,CAEA,OAAOzkF,EAAMg4B,MAAM,CAAC,SAAUie,EAAY7e,GAAQgb,EAAM,EAG1D,CAAC8lC,GAAAA,IAAoC,CAACl4E,EAAKw4E,KAAA,IAAI3pE,SAAS,MAAEuoB,EAAK,WAAE6e,EAAU,MAAEjoB,IAASwqD,EAAA,OACpFx4E,EAAMsnC,SAAS,CAAC,SAAU2O,EAAY7e,IAAQgb,GAAS+xC,GAA0B/xC,EAAOpkB,GAAO,IAAM,EAGvG,CAACkqD,GAAAA,IAAoC,CAACl4E,EAAKy4E,KAAA,IAAI5pE,SAAS,MAAEuoB,EAAK,WAAE6e,EAAU,MAAEjoB,IAASyqD,EAAA,OACpFz4E,EAAMsnC,SAAS,CAAC,SAAU2O,EAAY7e,IAAQgb,GAAS+xC,GAA0B/xC,EAAOpkB,GAAO,IAAO,EAGxG,CAACkqD,GAAAA,IAAsC,CAACl4E,EAAK04E,KAAwD,IAApD7pE,SAAS,MAAEuoB,EAAK,WAAE6e,EAAU,MAAEjoB,EAAK,OAAEptB,IAAU83E,EAC1FkM,EAAW5kF,EAAM0R,MAAM,CAAC,SAAUukC,EAAY7e,IAElD,GAAIpJ,EAAO,CACT,MAAM12B,EAAU02B,EAAMhf,IAAI,MACpB61E,GAAUz7E,EAAAA,EAAAA,QAAOxI,EAAOutB,QAAQzc,MAAM,CAAC,EAAG,SAE5CmzE,IACFD,EAAWA,EACRt9C,SAAS,CAAC,OAAQ,WAAWnZ,GAAUA,EAAOzZ,KAAI6Z,GAC7CA,EAAEvf,IAAI,QAAU1X,EACXi3B,EACJ3qB,OAAO,QAAQolB,GAAQA,EAAKza,OAAOs2E,KACnCjhF,OAAO,OA5FC,IA4FyB67C,GAAQA,EA5FjC,KA+FNlxB,MAGf,KAAO,CACL,MAAMs2D,GAAUz7E,EAAAA,EAAAA,QAAOxI,EAAOooB,MAE1B67D,IACFD,EAAWA,EAAShhF,OAAO,QAAQlM,GACjCA,EACGkM,OAAO,QAAQolB,GAAQA,EAAKza,OAAOs2E,KACnCjhF,OAAO,OAzGK,IAyGqB67C,GAAQA,EAzG7B,OA4GrB,CAEA,OAAOz/C,EAAMg4B,MAAM,CAAC,SAAUie,EAAY7e,GAAQ+sD,GAA0BS,EAAU52D,GAAO,GAAO,EAGtG,CAACkqD,GAAAA,IAA2C,CAACl4E,EAAK24E,KAAyD,IAArD9pE,SAAS,MAAEuoB,EAAK,WAAE6e,EAAU,MAAEjoB,EAAK,QAAE62D,IAAWlM,EAChGiM,EAAW5kF,EAAM0R,MAAM,CAAC,SAAUukC,EAAY7e,IAElD,GAAIpJ,EAAO,CACT,MAAM12B,EAAU02B,EAAMhf,IAAI,MAE1B41E,EAAWA,EACRt9C,SAAS,CAAC,OAAQ,WAAWnZ,GAAUA,EAAOzZ,KAAI6Z,GAC7CA,EAAEvf,IAAI,QAAU1X,EACXi3B,EACJ3qB,OAAO,QAAQolB,GAAQA,EAAKtU,KAAIyU,GAAMA,EAAEna,IAAI,QAAU61E,EAAQ71E,IAAI,MAAQ61E,EAAU17D,MAGlFoF,KAEb,MACEq2D,EAAWA,EAAShhF,OAAO,QAAQlM,GACjCA,EACGkM,OAAO,QAAQolB,GAAQA,EAAKtU,KAAIyU,GAAMA,EAAEna,IAAI,QAAU61E,EAAQ71E,IAAI,MAAQ61E,EAAU17D,QAI3F,OAAOnpB,EAAMg4B,MAAM,CAAC,SAAUie,EAAY7e,GAAQwtD,EAAS,EAG7D,CAAC1M,GAAAA,IAAqD,CAACl4E,EAAK44E,KAAA,IAAI/pE,SAAS,MAAEuoB,EAAK,WAAE6e,IAAc2iC,EAAA,OAC9F54E,EAAMsnC,SAAS,CAAC,SAAU2O,EAAY7e,IAAQgb,GAASA,EAAMpa,MAAM,CAAC,OAAQ,YAAY,IAAM,EAGhG,CAACkgD,GAAAA,IAAqD,CAACl4E,EAAK64E,KAAA,IAAIhqE,SAAS,MAAEuoB,EAAK,WAAE6e,IAAc4iC,EAAA,OAC9F74E,EAAMsnC,SAAS,CAAC,SAAU2O,EAAY7e,IAAQgb,GAASA,EAAMpa,MAAM,CAAC,OAAQ,YAAY,IAAO,EAGjG,CAACkgD,GAAAA,IAAuD,CAACl4E,EAAK84E,KAAiD,IAA7CjqE,SAAS,MAAEuoB,EAAK,WAAE6e,EAAU,OAAEr1C,IAAUk4E,EACxG,MAAM8L,EAAW5kF,EACd0R,MAAM,CAAC,SAAUukC,EAAY7e,IAC7BkQ,SAAS,CAAC,OAAQ,UAAUw9C,GAASA,EAAMv2E,QAAOnF,EAAAA,EAAAA,QAAOxI,EAAOkkF,UAChE9sD,MAAM,CAAC,OAAQ,WAAW5uB,EAAAA,EAAAA,QAAOxI,EAAOsK,SACxC8sB,MAAM,CAAC,OAAQ,YAAY,GAE9B,OAAOh4B,EAAMg4B,MAAM,CAAC,SAAUie,EAAY7e,GAAQwtD,EAAS,EAG7D,CAAC1M,GAAAA,IAAsB,CAACl4E,EAAK+4E,KAAA,IAAIlqE,SAAS,WAAEonC,EAAU,MAAE7e,IAAS2hD,EAAA,OAC/D/4E,EACG+kF,SAAS,CAAC,SAAU9uC,EAAY7e,IAChC2tD,SAAS,CAAC,UAAW9uC,EAAY7e,GAAO,EAG7C,CAAC8gD,GAAAA,IAAqB,CAACl4E,EAAK++E,KAA0C,IAAtClwE,SAAS,WAAEonC,EAAU,OAAEuuC,IAAUzF,EAC/D,MAAMwF,GAAan7E,EAAAA,EAAAA,QAAOo7E,GAAQ9vE,KAAI8yB,IAAKp+B,EAAAA,EAAAA,QAAO,CAChD05C,EAAGtb,EAAEx4B,IAAI,KACTy1E,EAAGj9C,EAAEx4B,IAAI,KACT01E,EAAGl9C,EAAEx4B,IAAI,KACT21E,EAAGn9C,EAAEx4B,IAAI,SAGX,OAAOhP,EAAMg4B,MAAM,CAAC,UAAWie,GAAasuC,EAAW,EAGzD,CAACrM,GAAAA,IAAiC,IAAMxpE,GAExC,CAACwpE,GAAAA,IAA8B,CAACl4E,EAAKg/E,KAAA,IAAInwE,SAAS,KAAE4wC,EAAI,GAAEF,IAAMy/B,EAAA,OAAKt2H,EAAAA,GAAAA,IAAoBs3C,EAAOy/C,EAAMF,EAAG,EAEzG,CAAC24B,GAAAA,GAA6C,CAACl4E,EAAKk/E,KAAA,IAAIrwE,QAASm2E,GAAW9F,EAAA,OAC1El/E,EACG4D,OACC,UACAoJ,GAAUA,EAAO0N,QACf,CAACC,EAAK7R,EAAQmtC,IAAet7B,EAAIuT,IAAI+nB,EAAYntC,EAAO4L,KAAI09B,GAASA,EAAM3W,MAAM,CAC/EupD,YACAC,aAAc,YACV77E,EAAAA,EAAAA,QAAO,CAAC,KAEjB,EAGL,CAAC8uE,GAAAA,IAAwC,CAACl4E,EAAKq/E,KAAA,IAAIxwE,QAASq2E,GAAK7F,EAAA,OAC/Dr/E,EACG4D,OACC,UACAoJ,GAAUA,EAAO0N,QACf,CAACC,EAAK7R,EAAQmtC,IAAet7B,EAAIuT,IAAI+nB,EAAYntC,EAAO4L,KAAI09B,IACtD8B,EAAAA,GAAAA,IAA0B9B,GACF,cAAtBA,EAAMpjC,IAAI,QACLojC,EAAMlkB,IAAI,aAAcg3D,GAG1B9yC,EAAMlkB,IAAI,aAAcg3D,GAG1B9yC,OACJhpC,EAAAA,EAAAA,QAAO,CAAC,KAEhB,EAGL,CAAC8uE,GAAAA,IAAyC,CAACl4E,EAAKw/E,KAAA,IAAI3wE,SAAS,SAAE3S,EAAQ,OAAEC,IAAUqjF,EAAA,OACjFx/E,EACG4D,OACC,UACAoJ,GAAUA,EAAO0N,QACf,CAACC,EAAK7R,EAAQmtC,IAAet7B,EAAIuT,IAAI+nB,EAAYntC,EAAO4L,KAAI09B,GAASA,EAAM3W,MAAM,CAC/EupD,UAAW,KACXC,aAAc,KACd/oF,WACAC,gBAEFiN,EAAAA,EAAAA,QAAO,CAAC,KAEX,EAGL,CAAC6F,EAAAA,IAAwB,IAAMP,IAC9BA,ICvOI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC0F,KAAM,GACNC,OAAQ,CAAC,EACTo2E,wBAAyB,OAG3B,QAAex2E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAyB,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAM+W,GAAWH,EAAY,EAC1E,CAACwpE,GAAAA,IAA2B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASwgC,GAAW+oC,EAAA,OAAK/oC,CAAS,EAExE,CAAC6oC,GAAAA,IAAgC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,IAAE9W,EAAG,MAAEC,IAASqgF,EAAA,OAClEr4E,EACG4D,OAAO,UAAUmL,GAAWA,IAAU3F,EAAAA,EAAAA,QAAO,CAAC,KAC9Ck+B,SAAS,CAAC,SAAU,WAAWyc,IAAWA,IAAU36C,EAAAA,EAAAA,QAAO,CAAC,IAAI8kB,IAAIn2B,EAAKC,IAAO,EAGrF,CAACkgF,GAAAA,IAAkD,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EAAMkuB,IAAI,0BAA2Brf,EAAQ,EACxH,CAACqpE,GAAAA,IAA6C,CAACl4E,EAAKu4E,KAAA,IAAE,QAAE1pE,GAAS0pE,EAAA,OAC/Dv4E,EACG4D,OAAO,UAAUmL,GAAWA,IAAU3F,EAAAA,EAAAA,QAAO,CAAC,KAC9C4uB,MAAM,CAAC,SAAU,sBAAuBnpB,EAAQ,EAGrD,CAACqpE,GAAAA,IAA4Cl4E,GAC3CA,EACGy6B,OAAO,2BACPsqD,SAAS,CAAC,SAAU,uBAGzB,CAAC91E,EAAAA,IAAwB,IAAMP,IAC9BA,IC5BH,QAAeC,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAsB,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASwgC,GAAWv3C,EAAA,OAAKsR,EAAAA,EAAAA,QAAOimC,EAAU,EAC3E,CAACpgC,EAAAA,IAAwB,IAJC,Y,YCIrB,MAAMP,IAAetF,EAAAA,EAAAA,QAAO,CACjCgpC,MAAO,CAAC,EACRnyC,SAAS,EACTmlF,mBAAmB,EACnBvN,MAAM,EACN37E,SAAU,KACVC,OAAQ,KACR6oF,UAAW,KACX1oD,SAAU,KACV+oD,aAAc,KACd77E,aAAc,UACd53C,OAAQ,GACRilF,WAAY,KACZC,aAAc,KACdhhC,cAAe,OAGXwvE,GAAcA,CAACC,EAAY1uC,KACD,IAA1BA,EAAW7nC,IAAI,MACV,CAAEjX,IAAK,WAAWwtF,IAAcvtF,MAAO6+C,EAAW7nC,IAAI,eAGxD,CAAEjX,IAAKwtF,EAAYvtF,MAAO,CAAC6+C,EAAW7nC,IAAI,QAG7Cr7B,GAAaA,CAAC0xG,EAAcj6E,EAAO1T,EAAM8tF,KAC7C,MAAM5kF,EAAS,IAAKykF,GACdxuC,GAAaztC,EAAAA,EAAAA,QAAO1R,GAE1B,IAAI+tF,EAAYr6E,EAEF,aAAVA,EACFq6E,EAAY,aACO,cAAVr6E,EACTq6E,EAAY,cACHC,EAAAA,GAAAA,IAAct6E,KACvBq6E,EAAY,cAGd,MAAME,EAAiBppD,EAAAA,GAAAA,KAAuBkpD,GAE9C,GAAIE,EAAgB,CAClB/kF,EAAOooB,KAAOpoB,EAAOooB,MAAQ,CAAC,EAC9B,MAAM,IAAEjxB,EAAG,MAAEC,GAAUstF,GAAYK,EAAgB9uC,GACnDj2C,EAAOooB,KAAKjxB,GAAOC,CACrB,CAEA,MAAM4tF,EAAwBrpD,EAAAA,GAAAA,YAA8BkpD,GAE5D,GAAIG,EAAuB,CACzBhlF,EAAOq9B,YAAcr9B,EAAOq9B,aAAe,CAAC,EAC5C,MAAM,IAAElmC,EAAG,MAAEC,GAAUstF,GAAYM,EAAuB/uC,GAC1Dj2C,EAAOq9B,YAAYlmC,GAAOC,CAC5B,CAEA,MAAM6tF,EAAoBtpD,EAAAA,GAAAA,QAA0BkpD,GAEpD,GAAII,EAAmB,CACrBjlF,EAAOu9B,QAAUv9B,EAAOu9B,SAAW,CAAC,EACpC,MAAM,IAAEpmC,EAAG,MAAEC,GAAUstF,GAAYO,EAAmBhvC,GACtDj2C,EAAOu9B,QAAQpmC,GAAOC,CACxB,CAEA,GAAkB,kBAAdytF,EAIF,GAHA7kF,EAAOooB,KAAOpoB,EAAOooB,MAAQ,CAAC,EAC9BpoB,EAAOooB,KAAK7a,SAAWvN,EAAOooB,KAAK7a,UAAY,CAAC,EAE5Cq3E,EAAgB,CAClB,MAAM,IAAEztF,EAAG,MAAEC,GAAUstF,GAAY,mBAAoBzuC,GACvDj2C,EAAOooB,KAAK7a,SAASpW,GAAOC,CAC9B,KAAO,CACL,MAAM,IAAED,EAAG,MAAEC,GAAUstF,GAAY,oBAAqBzuC,GACxDj2C,EAAOooB,KAAK7a,SAASpW,GAAOC,CAC9B,CAQF,GALkB,gBAAdytF,IACF7kF,EAAOooB,KAAOpoB,EAAOooB,MAAQ,CAAEwT,YAAa,IAC5C57B,EAAOooB,KAAKwT,YAAc57B,EAAOooB,KAAKwT,YAAYjuB,OAAOsoC,EAAW7nC,IAAI,eAAe/F,SAGvE,wBAAdw8E,EAAqC,CACvC7kF,EAAOooB,KAAOpoB,EAAOooB,MAAQ,CAAC,EAC9BpoB,EAAOooB,KAAK7a,SAAWvN,EAAOooB,KAAK7a,UAAY,CAAC,EAChD,MAAM,IAAEpW,EAAG,MAAEC,GAAUstF,GAAY,uBAAwBzuC,GAC3Dj2C,EAAOooB,KAAK7a,SAASpW,GAAOC,CAC9B,CAEA,OAAO4I,CAAM,EAGTklF,GAAoBA,CAAC1zC,EAAOyE,EAAYC,KAC5C,IAAIuuC,EAAe,CAAC,EAUpB,OARIxuC,IACFwuC,EAAe1xG,GAAW0xG,EAAcjzC,EAAMpjC,IAAI,cAAe6nC,IAG/DC,IACFuuC,EAAe1xG,GAAW0xG,EAAcjzC,EAAMpjC,IAAI,eAAgB8nC,GAAc,KAG3E1tC,EAAAA,EAAAA,QAAOi8E,EAAa,EAG7B,QAAe12E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA8B,CAACl4E,EAAKlI,KAAkE,IAA9D+W,SAAS,MAAEujC,EAAOrQ,GAAG,WAAE8U,GAAcC,aAAcivC,IAAMjuF,EAC5FutF,EAAe,KACfnpF,EAAW,KACXC,EAAS,KACT6oF,EAAY,KACZlvE,EAAgB,KACpB,MAAMwmB,EAAW8V,EAAMpjC,IAAI,aAAeojC,EAAM1gC,MAAM,CAAC,cAAe,aAChEolC,EAAeivC,GAAK38E,EAAAA,EAAAA,QAAO28E,GAAM,KAqBvC,OAnBKC,EAAAA,GAAAA,IAAW5zC,IAAUA,EAAMpjC,IAAI,UAAY23C,EAAAA,GAAAA,OAM9CzqD,EAAW26C,EAAWovC,MAAMxmC,KAC5BtjD,EAAS06C,EAAWovC,MAAM1mC,GAC1B8lC,EAAeS,GAAkB1zC,EAAO,KAAM0E,KAP9CuuC,EAAeS,GAAkB1zC,EAAOyE,EAAYC,GACpD56C,EAAWk2C,EAAMpjC,IAAI,YACrB7S,EAASi2C,EAAMpjC,IAAI,UACnBg2E,EAAY5yC,EAAMpjC,IAAI,cAQtB8G,EAD8B,kBAA5Bs8B,EAAMpjC,IAAI,cACI6nC,EAAW5iD,GACW,kBAA7Bm+C,EAAMpjC,IAAI,gBAAsC8nC,EACzCA,EAAa9nC,IAAI,MAEjBojC,EAAM1gC,MAAM,CAAC,cAAe,OAGvC1R,EAAMy7B,MAAM,CACjB2W,QACAylC,MAAM,EACN37E,WACAC,SACA6oF,YACA1oD,WACAxmB,gBACAtM,aAAc4oC,EAAM1gC,MAAM,CAAC,cAAe,iBAC1C9/C,OAAQwgF,EAAM1gC,MAAM,CAAC,cAAe,WACpC2zE,eACAxuC,YAAYztC,EAAAA,EAAAA,QAAOytC,GAAc,CAAC,GAAGpc,OAAO,gBAC5Cqc,gBACA,EAEJ,CAACohC,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,QAAQ,GAE1D,CAACgqD,GAAAA,IAAyCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACxE,CAACgqD,GAAAA,IAAyCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACxE,CAACgqD,GAAAA,IAA2Cl4E,GAASA,EAAMkuB,IAAI,WAAW,GAE1E,CAACgqD,GAAAA,IAA+Cl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GACxF,CAACgqD,GAAAA,IAA+Cl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GACxF,CAACgqD,GAAAA,IAAiDl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GAE1F,CAACgqD,GAAAA,IAAsC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASrF,GAAc4uE,EAAA,OAAKp4E,EAAMkuB,IAAI,eAAgB1kB,EAAa,EACpH,CAAC0uE,GAAAA,IAAgC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAASj9C,GAAQymH,EAAA,OAAKr4E,EAAMkuB,IAAI,SAAUt8D,EAAO,EAE5F,CAACq9C,EAAAA,IAAwB,IAAMP,IAC9BA,I,YCtKH,MAEMw3E,GAAqBA,CAAClmF,EAAO1I,EAAS2I,IAC1CD,EAAM4D,OAAO,UAAUuqB,GAAUA,EAAOzZ,KAAIsZ,GACtCA,EAAMhf,IAAI,QAAU1X,EACf02B,EAAMyN,MAAM,CAAEx7B,YAGhB+tB,MA8BEtf,IAAetF,EAAAA,EAAAA,QAAO,CACjC+kB,OAAQ,GACRg4D,WAAY,OAGd,QAAex3E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA8B,IAAMxpE,GAErC,CAACwpE,GAAAA,IAA2C,CAACl4E,EAAKlI,KAA8B,IAA1B+W,SAAS,OAAEsf,IAAUr2B,EACzE,MAAMsuF,GAAYh9E,EAAAA,EAAAA,QAAO+kB,GACzB,IAAImxD,EAAWt/E,EAAMkuB,IAAI,SAAUk4D,GASnC,OAPA9G,EAAW8G,EAAU1rE,QACnB,CAACC,EAAKqT,IACJk4D,GAAmBvrE,EAAKqT,EAAMhf,IAAI,OAAO,IAE3CswE,GAGKA,CAAQ,EAGjB,CAAC1wE,GAAAA,IAAyB,CAAC5O,EAAKo4E,KAAwB,IAApBvpE,QAASma,GAAMovD,EAC7CkH,EAAWt/E,EAIf,OAFAs/E,EAAWt2D,EAAKtO,QAAO,CAACC,EAAKwO,IAnDHk9D,EAACrmF,EAAO6kF,IAAY7kF,EAC/C4D,OAAO,UAAUuqB,GAAUA,EAAOzZ,KAAI6Z,GAAKA,EACzC3qB,OAAO,QAAQolB,GAAQA,EAAKtU,KAAIyU,GAC3BA,EAAEna,IAAI,QAAU61E,EAAQ71E,IAAI,MACvB61E,EAGF17D,UA4C0Bk9D,CAAsB1rE,EAAKwO,IAAIm2D,GAE3DA,CAAQ,EAGjB,CAACpH,GAAAA,IAA6C,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,MAAEmf,IAASqqD,EAAA,OAC1E6N,GAAmBlmF,EAAOguB,EAAMhf,IAAI,OAAO,EAAK,EAGlD,CAACkpE,GAAAA,IAA6C,CAACl4E,EAAKs4E,KAAA,IAAIzpE,SAAS,MAAEmf,IAASsqD,EAAA,OAC1E4N,GAAmBlmF,EAAOguB,EAAMhf,IAAI,OAAO,EAAM,EAGnD,CAACkpE,GAAAA,IAA+C,CAACl4E,EAAKu4E,KAAqC,IAAjC1pE,SAAS,MAAEmf,EAAK,OAAEptB,IAAU23E,EACpF,MAAMjhF,EAAU02B,EAAMhf,IAAI,MACpB61E,GAAUz7E,EAAAA,EAAAA,QAAOxI,EAAOutB,OAAOnnB,QAAOunB,GAAKA,EAAEt6B,KAAOqD,KAAUoa,MAAM,CAAC,EAAG,SAE9E,IAAI4tE,EAAWt/E,EAmBf,OAjBI6kF,GACFvF,EAAWA,EACR17E,OAAO,UAAUuqB,GAAUA,EAAOzZ,KAAI6Z,GACjCA,EAAEvf,IAAI,QAAU1X,EACXi3B,EACJ3qB,OAAO,QAAQolB,GAAQA,EAAKza,OAAOs2E,KACnCjhF,OAAO,OAxFG,IAwFuB67C,GAAQA,EAxF/B,KA2FRlxB,MAGX+wD,EAAW4G,GAAmB5G,EAAUhoF,GAAS,IAEjDgoF,EAAW4G,GAAmB5G,EAAUhoF,GAAS,GAG5CgoF,CAAQ,EAEjB,CAACpH,GAAAA,IAAoD,CAACl4E,EAAKw4E,KAAsC,IAAlC3pE,SAAS,MAAEmf,EAAK,QAAE62D,IAAWrM,EACtF8G,EAAWt/E,EAEf,GAAIguB,GAAS62D,EAAS,CAGpBvF,EArFoBgH,EAACtmF,EAAO1I,EAASutF,IAAY7kF,EACpD4D,OAAO,UAAUuqB,GAAUA,EAAOzZ,KAAI6Z,GACjCA,EAAEvf,IAAI,QAAU1X,EACXi3B,EACJ3qB,OAAO,QAAQolB,GAAQA,EAAKtU,KAAIyU,GAC3BA,EAAEna,IAAI,QAAU61E,EAAQ71E,IAAI,MACvB61E,EAGF17D,MAINoF,MAwEM+3D,CAAkBtmF,EAFbguB,EAAMhf,IAAI,MAEmB61E,EAC/C,CAEA,OAAOvF,CAAQ,EAGjB,CAACpH,GAAAA,IAA+Cl4E,GAASA,EAAMkuB,IAAI,aAAc,MACjF,CAACgqD,GAAAA,IAAiD,CAACl4E,EAAKy4E,KAAA,IAAI5pE,SAAS,SAAEV,IAAYsqE,EAAA,OAAKz4E,EAAMkuB,IAAI,cAAc9kB,EAAAA,EAAAA,QAAO+E,GAAU,EAEjI,CAACc,EAAAA,IAAwB,IAAMP,IAC9BA,ICvHH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,K,oFCoBN,MAAM6uF,GAAiBA,KAAMn9E,EAAAA,EAAAA,QAAO,CAClCqnE,WAAY,WACZ3nB,WAAY1B,EAAAA,GAAAA,oBACZ49B,UAAW,cACX9uF,KAAM,QAGKwY,GAAe63E,KAE5B,QAAe53E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA2B,CAACl4E,EAAKlI,KAAyB,IAArB+W,QAASujC,GAAOt6C,EACpD,GAAIkI,EAAMgP,IAAI,gBAAkBojC,EAAMpjC,IAAI,cAAe,CACvD,IAAIklC,EAAAA,GAAAA,IAA0B9B,GAC5B,OAAOm0C,KAGT,IAAIpyC,EAAAA,GAAAA,IAAuB/B,GACzB,OAAOo0C,GAAAA,EAAAA,MAAiC,CAAC,EAAG,UAG9C,IAAInyC,EAAAA,GAAAA,IAAWjC,GACb,OAAOq0C,GAAAA,EAAAA,MAAqB,CAAC,EAAG,UAGlC,IAAIryC,EAAAA,GAAAA,IAAwBhC,GAC1B,OAAOs0C,GAAAA,GAAAA,MAAkC,CAAC,EAAG,UAG/C,IAAIpyC,EAAAA,GAAAA,IAAyBlC,GAC3B,OAAOu0C,GAAAA,GAAAA,MAAmC,CAAC,EAAG,UAGhD,IAAInyC,EAAAA,GAAAA,IAAyBpC,GAC3B,OAAOw0C,GAAAA,GAAAA,MAAmC,CAAC,EAAG,UAGhD,IAAInyC,EAAAA,GAAAA,IAAwBrC,GAC1B,OAAOy0C,GAAAA,EAAAA,MAAkC,CAAC,EAAG,UAG/C,IAAI7xC,EAAAA,GAAAA,IAAa5C,GACf,OAAOhpC,EAAAA,EAAAA,QAAO,CACZ0/C,WAAY1B,EAAAA,GAAAA,MACZ0/B,SAAU10C,EAAMpjC,IAAI,YACpB9Y,KAAMywD,EAAAA,GAAAA,MACNje,MAAO0J,EAAMpjC,IAAI,SACjB+3C,SAAU3U,EAAMpjC,IAAI,cAIxB,IAAI0lC,EAAAA,GAAAA,IAAYtC,GACd,OAAOA,EAAM3W,MAAM,CACjBqtB,WAAY1B,EAAAA,GAAAA,KACZlxD,KAAMywD,EAAAA,GAAAA,KACN1mD,SAAS,IAIb,IAAI00C,EAAAA,GAAAA,IAAsBvC,GACxB,OAAOA,EAAM3W,MAAM,CACjBqtB,WAAY1B,EAAAA,GAAAA,gBACZlxD,KAAMywD,EAAAA,GAAAA,gBACN1mD,SAAS,GAGf,CAEA,OAAOmyC,CAAK,EAEd,CAAC8lC,GAAAA,IAA8B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,IAAE9W,EAAG,MAAEC,IAASogF,EAAA,OAAKp4E,EAAM4D,OAAO,QAAQlC,IAASA,IAAQyC,EAAAA,EAAAA,KAAI,CAAC,IAAI+pB,IAAIn2B,EAAKC,IAAO,EAEtI,CAACkgF,GAAAA,IAAoC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAASk4E,GAAM1O,EAAA,OAC5Dr4E,EAAM4D,OAAO,QAAQlC,IAASA,IAAQyC,EAAAA,EAAAA,KAAI,CAAC,IAAIP,OAAO,mBAAmBojF,IAAOA,IAAM7iF,EAAAA,EAAAA,KAAI,CAAC,IAAIs3B,MAAM,CACnGiY,OAAQqzC,EAAK/3E,IAAI,MACjBi4E,SAAUF,EAAK/3E,IAAI,aACjB,EAGN,CAACkpE,GAAAA,IAA2B,CAACl4E,EAAKs4E,KAAA,IAAIzpE,QAASq4E,GAAS5O,EAAA,OACtDt4E,EAAM4D,OAAO,QAAQlC,IAASA,IAAQyC,EAAAA,EAAAA,KAAI,CAAC,IAAIP,OAAO,OAAOojF,IAAOA,IAAM7iF,EAAAA,EAAAA,KAAI,CAAC,IAAI+pB,IAAI,WAAW9kB,EAAAA,EAAAA,QAAO89E,OAAW,EAGtH,CAAChP,GAAAA,IAA8C,CAACl4E,EAAKu4E,KAAA,IAAI1pE,QAASs4E,GAAc5O,EAAA,OAC9Ev4E,EAAM4D,OAAO,QAAQlC,IAASA,IAAQyC,EAAAA,EAAAA,KAAI,CAAC,IAAIP,OAAO,qBAAqBojF,IAAOA,IAAM7iF,EAAAA,EAAAA,KAAI,CAAC,IAAIs3B,MAAM,CACrGwY,eAAgBkzC,EAAan4E,IAAI,MACjCo4E,iBAAkBD,EAAan4E,IAAI,aACjC,EAGN,CAACkpE,GAAAA,IAAsC,CAACl4E,EAAKw4E,KAAA,IAAI3pE,QAAS9U,GAAMy+E,EAAA,OAC9Dx4E,EAAM4D,OAAO,QAAQlC,IAASA,IAAQyC,EAAAA,EAAAA,KAAI,CAAC,IAAIP,OAAO,qBAAqByjF,IAAQA,IAAOljF,EAAAA,EAAAA,KAAI,CAAC,IAAIs3B,MAAM,CACvGqY,OAAQ/5C,EAAKiV,IAAI,MACjBs4E,SAAUvtF,EAAKiV,IAAI,aACjB,EAGN,CAACkpE,GAAAA,IAA4B,CAACl4E,EAAKy4E,KAA+B,IAA3B5pE,QAAS04E,GAAa9O,EAC3D,MAAM+O,EAAgBxnF,EAAM0R,MAAM,CAAC,cAAe,eAC5C+1E,EAAYF,EAAYv4E,IAAI,cAE5B04E,EAAW,CACf5xE,cAAeyxE,EAAYv4E,IAAI,MAC/Bu4E,eAiBF,OAdIE,IAAcl+E,EAAAA,GAAAA,YAChBm+E,EAASprD,SAAW,WAGlBt8B,EAAMgP,IAAI,8BACZ04E,EAASC,yBAA2B3nF,EAAMgP,IAAI,4BAE1Cw4E,IAAkBC,IACpBC,EAASC,0BAA2Bv+E,EAAAA,EAAAA,QAAO,KAG7Cs+E,EAASC,yBAA2BD,EAASC,yBAAyB3gF,QAAO/S,GAAMA,IAAOszF,EAAYv4E,IAAI,SAGrGhP,EACJy7B,OAAMryB,EAAAA,EAAAA,QAAOs+E,IACbjtD,OAAO,eAAe,EAG3B,CAACy9C,GAAAA,IAAwC,CAACl4E,EAAK04E,KAAA,IAAE,QAAE7pE,GAAS6pE,EAAA,OAAK14E,EAAMkuB,IAAI,4BAA4B9kB,EAAAA,EAAAA,QAAOyF,GAAS,EAEvH,CAACqpE,GAAAA,IAA0B,CAACl4E,EAAK24E,KAAA,IAAI9pE,QAASm2E,GAAWrM,EAAA,OAAKiP,EAAAA,GAAAA,IAAe5nF,EAAMy7B,MAAM,CACvFupD,YACA9oF,SAAU,KACVC,OAAQ,OACP,EACH,CAAC+7E,GAAAA,IAAqB,CAACl4E,EAAK44E,KAAA,IAAI/pE,SAAS,SAAE3S,EAAQ,OAAEC,IAAUy8E,EAAA,OAAKgP,EAAAA,GAAAA,IAAe5nF,EAAMy7B,MAAM,CAC7FupD,UAAW9oF,GAAYC,EAAS,KAAO6D,EAAMgP,IAAI,aACjD9S,WACAC,WACC,EACH,CAAC+7E,GAAAA,IAAyB,CAACl4E,EAAK64E,KAA4B,IAAxBhqE,QAASykC,GAAUulC,EACjDmM,EAAYhlF,EAAMgP,IAAI,aACtB7S,EAAS6D,EAAMgP,IAAI,UACnB9S,EAAW8D,EAAMgP,IAAI,YAYzB,MAViB,aAAbskC,GAA6B0xC,GAAcA,EAAU/9E,WAAW,kBAI5C,eAAbqsC,GAA+B0xC,IAAaA,EAAU/9E,WAAW,oBAC1E+9E,EAAY,QACZ7oF,EAAS,KACTD,EAAW,OANX8oF,EAAY,wBACZ7oF,EAAS,KACTD,EAAW,MAON8D,EAAMy7B,MAAM,CACjBupD,YACA7oF,SACAD,YACA,EAGJ,CAACg8E,GAAAA,IAAyB,CAACl4E,EAAK84E,KAAA,IAAIjqE,QAASytB,GAAUw8C,EAAA,OAAK94E,EAAMkuB,IAAI,WAAYoO,EAAS,EAC3F,CAAC47C,GAAAA,IAA6B,CAACl4E,EAAK+4E,KAAA,IAAIlqE,QAASo2E,GAAclM,EAAA,OAAK/4E,EAAMkuB,IAAI,eAAgB+2D,EAAa,EAC3G,CAAC/M,GAAAA,IAA2B,CAACl4E,EAAK++E,KAAA,IAAIlwE,QAASg6B,GAAYk2C,EAAA,OAAK/+E,EAAMkuB,IAAI,aAAc2a,EAAW,EACnG,CAACqvC,GAAAA,IAA2B,CAACl4E,EAAKg/E,KAA8B,IAA1BnwE,QAAS4hE,GAAYuO,EACrDn2C,EAAa7oC,EAAMgP,IAAI,cACvB9Y,EAAO8J,EAAMgP,IAAI,QAOrB,OALIolC,EAAAA,GAAAA,IAAwBp0C,KAC1B6oC,GAAastC,EAAAA,GAAAA,IAA0B1F,EAAY5nC,GACnD3yC,GAAOmgF,EAAAA,GAAAA,IAAoB5F,EAAYv6E,IAGlC8J,EAAMy7B,MAAM,CACjBg1C,aACAv6E,OACA2yC,cACA,EAGJ,CAACqvC,GAAAA,IAAwC,CAACl4E,EAAKk/E,KAAA,IAAIrwE,QAASrF,GAAc01E,EAAA,OAAKl/E,EAAMkuB,IAAI,eAAgB1kB,EAAa,EACtH,CAAC0uE,GAAAA,GAAkC,CAACl4E,EAAKq/E,KAAA,IAAIxwE,QAASj9C,GAAQytH,EAAA,OAAKr/E,EAAMkuB,IAAI,SAAUt8D,EAAO,EAE9F,CAACsmH,GAAAA,IAAqC,CAACl4E,EAAKw/E,KAAyB,IAArB3wE,QAAS7W,GAAOwnF,EAC9D,MAAM9nF,EAAO8uF,GAAAA,EAAAA,MAAgC9vE,GAAKA,EAAE1H,IAAI,WAAahX,IAErE,OAAIN,EACKsI,EAAM6nF,UAAUnwF,EAAKsX,IAAI,UAG3BhP,CAAK,EAEd,CAACk4E,GAAAA,IAAyB,CAACl4E,EAAK2gF,KAAyB,IAArB9xE,QAAS7W,GAAO2oF,EAClD,MAAMjpF,EAAO+uF,GAAAA,EAAAA,MAAoB/vE,GAAKA,EAAE1H,IAAI,WAAahX,IAEzD,OAAIN,EACKsI,EAAM6nF,UAAUnwF,EAAKsX,IAAI,UAG3BhP,CAAK,EAEd,CAACk4E,GAAAA,IAAuC,CAACl4E,EAAK4gF,KAAyB,IAArB/xE,QAAS7W,GAAO4oF,EAChE,MAAMlpF,EAAOivF,GAAAA,GAAAA,MAAkCjwE,GAAKA,EAAE1H,IAAI,WAAahX,IAEvE,OAAIN,EACKsI,EAAM6nF,UAAUnwF,EAAKsX,IAAI,UAG3BhP,CAAK,EAEd,EAACi4E,EAAAA,EAAAA,GAAeC,GAAAA,GAAsCA,GAAAA,KAAqC,CAACl4E,EAAK6gF,KAAyB,IAArBhyE,QAAS7W,GAAO6oF,EACnH,MAAMnpF,EAAOkvF,GAAAA,GAAAA,MAAkClwE,GAAKA,EAAE1H,IAAI,WAAahX,IAEvE,OAAIN,EACKsI,EAAM6nF,UAAUnwF,EAAKsX,IAAI,UAG3BhP,CAAK,EAGd,CAACk4E,GAAAA,IAAsC,CAACl4E,EAAK8gF,KAAyB,IAArBjyE,QAAS7W,GAAO8oF,EAC/D,MAAMppF,EAAOmvF,GAAAA,EAAAA,MAAiCnwE,GAAKA,EAAE1H,IAAI,WAAahX,IAEtE,OAAIN,EACKsI,EAAM6nF,UAAUnwF,EAAKsX,IAAI,UAG3BhP,CAAK,EAGd,CAACk4E,GAAAA,IAA4C,CAACl4E,EAAK8nF,KAAkB,IAAhB,QAAEj5E,GAASi5E,EAC9D,MAAM11C,EAAQvjC,EAAUA,EAAQujC,MAAQpyC,EAExC,OAAKg1C,EAAAA,GAAAA,IAAa5C,KAAWsC,EAAAA,GAAAA,IAAYtC,KAAWuC,EAAAA,GAAAA,IAAsBvC,GAInEA,EAHEA,EAAMlkB,IAAI,WAAW,EAGlB,EAEd,CAACgqD,GAAAA,IAA4Cl4E,GAASA,EAAMkuB,IAAI,WAAW,GAC3E,CAACgqD,GAAAA,IAA8Cl4E,GAASA,EAAMkuB,IAAI,WAAW,GAE7E,CAACgqD,GAAAA,IAAoD,CAACl4E,EAAK+nF,KAAA,IAAE,QAAEl5E,GAASk5E,EAAA,OAAK/nF,EAAMy7B,MAAM5sB,EACrF,CACA4hE,WAAY,gBACZzoB,YAAa,MACX,CACFyoB,WAAY,WACZzoB,YAAa,KACb2/B,0BAA0Bv+E,EAAAA,EAAAA,QAAO,KACjC,EAEJ,CAAC6F,EAAAA,IAAwB,IAAMP,IAC9BA,I,UCvQH,MAAQs5E,qBAAsBC,KAAgCC,EAAAA,GAAAA,IAAmB,KAAM,IAAIzG,KAAQ,IAAIA,MAEjG0G,GAAoCC,GAAaA,EAAUphF,QAAO2vB,GAAW,SAANA,IAEhEjoB,IAAetF,EAAAA,EAAAA,QAAO,CACjC+oC,aAAc,CAAC,EACf/a,MAAO,KACPixD,SAAUjwC,EAAAA,GAAAA,OACV9E,SAAU04B,EAAAA,GAAAA,WACVgc,qBAAsBC,GACtBK,gCAAiCH,GAAkCF,IACnEM,6BAA8B,oBAC9BC,iBAAkB,qBAClBC,8BAA+B,KAC/BC,iCAAkC,KAClCC,+BAAgC,oBAChCC,+BAAgC,aAChCC,8BAA+B,8BAC/BC,2BAA2B,EAC3B/zC,cAAe,OAGXg0C,GAAkBA,CAAC/oF,EAAO9D,EAAUC,EAAQ6oF,KAChD,GAAI9oF,GAAYC,EAAQ,CACtB,MAAM,qBAAE6rF,IAAyBE,EAAAA,GAAAA,IAAmB,KAAMhsF,EAAUC,EAAQ6oF,GAE5E,OAAOhlF,EACJkuB,IAAI,uBAAwB85D,GAC5B95D,IAAI,kCAAmCi6D,GAAkCH,GAC9E,CAEA,MAAM,KAAEvoC,EAAI,GAAEF,IAAOypC,EAAAA,GAAAA,IAAahE,IAC5B,qBAAEgD,IAAyBE,EAAAA,GAAAA,IAAmB,KAAMzoC,EAAMF,EAAIylC,GAEpE,OAAOhlF,EACJkuB,IAAI,uBAAwB85D,GAC5B95D,IAAI,kCAAmCi6D,GAAkCH,GAAsB,EAGpG,QAAer5E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA2B,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASujC,GAAOt6C,EAAA,OAAKixF,GACzD/oF,EACAoyC,EAAMpjC,IAAI,YACVojC,EAAMpjC,IAAI,UACVojC,EAAMpjC,IAAI,aACX,EAED,CAACkpE,GAAAA,IAA0B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASm2E,GAAW5M,EAAA,OAAK2Q,GAAgB/oF,EAAO,KAAM,KAAMglF,EAAU,EAE3G,CAAC9M,GAAAA,IAAyB,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAASykC,GAAU+kC,EAAA,OAAKr4E,EAAMkuB,IAAI,WAAYolB,EAAS,EAE3F,CAAC4kC,GAAAA,IAAqB,CAACl4E,EAAKs4E,KAAwC,IAApCzpE,SAAS,SAAE3S,EAAQ,OAAEC,IAAUm8E,EAC7D,OAAIp8E,GAAYC,EACP4sF,GAAgB/oF,EAAO9D,EAAUC,EAAQ,MAG3C6D,CAAK,EAGd,CAACk4E,GAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,gBAAiB,MAE/D,CAACgqD,GAAAA,IAAmC,CAACl4E,EAAKu4E,KAAA,IAAI1pE,QAASw5E,GAAU9P,EAAA,OAAKv4E,EAAMkuB,IAAI,WAAYm6D,EAAS,EAErG,CAACnQ,GAAAA,IAA4C,CAACl4E,EAAKw4E,KAAkB,IAAhB,QAAE3pE,GAAS2pE,EAC1D8G,EAAWt/E,EAEf,GAAI6O,EAAS,CACX,MAAM,MAAEujC,EAAK,MAAEhb,EAAK,QAAEkb,GAAYzjC,EAElC,IAAIykC,EAAW04B,EAAAA,GAAAA,WAsBf,OApBI55B,EAAMpjC,IAAI,aAAeojC,EAAMpjC,IAAI,UACrCskC,EAAW04B,EAAAA,GAAAA,MACD55B,EAAMpjC,IAAI,cAAgB,IAAI/H,WAAW,oBACnDqsC,EAAW04B,EAAAA,GAAAA,UAGbsT,EAAWA,EAAS7jD,OAAMryB,EAAAA,EAAAA,QAAO,CAC/BguB,QACA+a,aAAc,CAAC,EACf22C,0BACE13D,QAAQkhB,IAAwC,kBAA5BF,EAAMpjC,IAAI,eAAkE,kBAA7BojC,EAAMpjC,IAAI,eAE/EskC,WACAi1C,8BAA8BU,EAAAA,GAAAA,GAAgC72C,IAAUpyC,EAAMgP,IAAI,gCAClFw5E,kBAAkBU,EAAAA,GAAAA,GAAoB92C,IAAUpyC,EAAMgP,IAAI,oBAC1D25E,gCAAgCQ,EAAAA,GAAAA,IAAyB/2C,IAAUpyC,EAAMgP,IAAI,kCAC7E45E,gCAAgCQ,EAAAA,GAAAA,IAAyBh3C,IAAUpyC,EAAMgP,IAAI,kCAC7E65E,+BAA+BQ,EAAAA,GAAAA,GAAwBj3C,IAAUpyC,EAAMgP,IAAI,oCAGtE+5E,GAAgBzJ,EAAUltC,EAAMpjC,IAAI,YAAaojC,EAAMpjC,IAAI,UAAWojC,EAAMpjC,IAAI,aACzF,CAEA,OAAOswE,EAAS7jD,OAAMryB,EAAAA,EAAAA,QAAO,CAC3BguB,MAAO,KACP+a,aAAc,CAAC,IACd,EAGL,CAAC+lC,GAAAA,IAA8C,CAACl4E,EAAKy4E,KAAA,IAAI5pE,QAASy6E,GAAM7Q,EAAA,OACtEz4E,EAAMkuB,IAAI,gBAAgB9kB,EAAAA,EAAAA,QAAOkgF,GAAM,EAGzC,CAACpR,GAAAA,IAAqC,CAACl4E,EAAK04E,KAAA,IAAI7pE,QAASujC,GAAOsmC,EAAA,OAAK14E,EAAMkuB,IAAI,+BAAgCkkB,EAAM,EACrH,CAAC8lC,GAAAA,IAAyB,CAACl4E,EAAK24E,KAAA,IAAI9pE,QAASujC,GAAOumC,EAAA,OAAK34E,EAAMkuB,IAAI,mBAAoBkkB,EAAM,EAC7F,CAAC8lC,GAAAA,IAAuC,CAACl4E,EAAK44E,KAAA,IAAI/pE,QAASujC,GAAOwmC,EAAA,OAAK54E,EAAMkuB,IAAI,iCAAkCkkB,EAAM,EACzH,EACA6lC,EAAAA,EAAAA,GACEC,GAAAA,GACAA,GAAAA,KAEC,CAACl4E,EAAK64E,KAAA,IAAIhqE,QAASujC,GAAOymC,EAAA,OAAK74E,EAAMkuB,IAAI,iCAAkCkkB,EAAM,EACpF,CAAC8lC,GAAAA,IAAsC,CAACl4E,EAAK84E,KAAA,IAAIjqE,QAASujC,GAAO0mC,EAAA,OAAK94E,EAAMkuB,IAAI,gCAAiCkkB,EAAM,EAEvH,CAAC8lC,GAAAA,IAAwC,CAACl4E,EAAK+4E,KAAA,IAAIlqE,QAASnX,GAAMqhF,EAAA,OAAK/4E,EAAMkuB,IAAI,gBAAiBx2B,EAAK,EAEvG,CAACwgF,GAAAA,IAAoD,CAACl4E,EAAK++E,KAAA,IAAE,QAAElwE,GAASkwE,EAAA,OAAK/+E,EAAMkuB,IAAI,4BAA6Brf,EAAQ,EAE5H,CAACI,EAAAA,IAAwB,IAAMP,IAC9BA,ICjIH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJmrF,GAAEA,KCGJ,IAAef,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJ16C,UAAS,GACTusI,KAAI,GACJC,SAAQ,GACRrlD,SAAQ,GACRslD,cAAa,GACb5G,GAAEA,K,uBCVJ,MAAMn0E,IAAetF,EAAAA,EAAAA,QAAO,CAC1BsgF,QAAQ,EACRC,QAAQ,EACRC,OAAO,KAGH,UAAEC,IAAcC,UAChBC,GAAKF,OAAgBA,GAAUvjE,MAAM,WAAaujE,GAAUvjE,MAAM,YAExE,QAAe3X,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA+B,CAACl4E,EAAKlI,KAAqC,IAAjC+W,SAAS,MAAErJ,EAAK,OAAEE,IAAU5N,EACpE,MAAMkyF,EAAS,IAAIC,KAAJ,CAAiBH,UAAUD,WAE1C,OAAO7pF,EAAMy7B,MAAM,CACjBiuD,SAAUM,EAAON,SACjBC,SAAUK,EAAOL,SACjBC,QAASI,EAAOJ,QAChBM,IAAqB,QAAhBF,EAAOG,KACZJ,MACAK,GAAI5kF,EAAQ,IACZ,QAASA,GAAS,IAClB,QAASA,EAAQ,IACjB6kF,GAAI7kF,GAAS,KAAOA,EAAQ,IAC5B,QAASA,GAAS,IAClB,QAASA,EAAQ,IACjB8kF,GAAI9kF,GAAS,KAAOA,EAAQ,KAC5B,QAASA,GAAS,KAClB,QAASA,EAAQ,KACjB+kF,GAAI/kF,GAAS,MAAQA,EAAQ,KAC7B,QAASA,GAAS,KAClB,QAASA,EAAQ,KACjBglF,GAAIhlF,GAAS,KACbilF,UAAWjlF,EAAQE,GACnB,GAEHgJ,ICrCH,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CAC1B5D,MAAO,KACPE,OAAQ,KACRglF,MAAO,cACPC,qBAAqB,IAGvB,QAAeh8E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA+B,CAACl4E,EAAO6+E,IAAW7+E,EAAMy7B,MAAM,CAC7Dj2B,MAAOq5E,EAAOhwE,QAAQrJ,MACtBE,OAAQm5E,EAAOhwE,QAAQnJ,SAEzB,CAACwyE,GAAAA,IAA8B,CAACl4E,EAAO6+E,IAAW7+E,EAAMy7B,MAAM,CAC5DivD,MAAO7L,EAAOhwE,QACd87E,qBAAqB,KAEtBj8E,I,yg9aCnBH,MAAMv1D,GAAS,cAEFyxI,IAA2BvxI,EAAAA,GAAAA,GAAa,GAAGF,iCAClBE,EAAAA,GAAAA,GAAa,GAAGF,8B,gBCO/C,MAAM0xI,GAA0B,SAACC,GAAQ,IAAE/7E,EAAMnV,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGurC,GAAY,OACrEzkC,OAAOC,KAAKoO,GAAQ2L,QAAO,CAACC,EAAKowE,KAAY,IAAMpwE,EAAK,CAACowE,GAAUh8E,EAAOg8E,GAASD,MAAc,CAAC,EAAE,EAGhGptF,IAAS2nB,EAAAA,GAAAA,MAET2lE,IAAsB5hF,EAAAA,EAAAA,QAAOyhF,GAAwB,KAAM1lD,KAC3D8lD,IAAgC7hF,EAAAA,EAAAA,QAAOyhF,GAAwB,KAAMK,KAErEC,GAAYA,CAACC,EAAK7wB,KACtB,IAAI8wB,GAAkBjiF,EAAAA,EAAAA,QAAOyhF,GAAwBO,EAAKjmD,KACtDmmD,EAAUN,GAQd,OANIzwB,IACF8wB,EAAkBA,EAAgB5vD,OAAMryB,EAAAA,EAAAA,QAAOyhF,GAAwBO,EAAKF,MAC5EI,EAAUN,GAAoBvvD,MAAMwvD,KAI/B,CACLj8E,IAAK,SAAChX,GAAmD,IAA5CuzF,EAAY3xF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAG4xF,EAAY5xF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACtC6xF,EAAcJ,EAAgBr8E,IAAIhX,IAAUszF,EAAQt8E,IAAIhX,IAAUA,GAAS,GAM/E,OAJIwzF,IACFC,EAAcH,EAAQt8E,IAAIhX,IAAUA,GAAS,IAGxC0I,OAAOC,KAAK4qF,GAChB7wE,QACC,CAACC,EAAK5iB,IAAQ4iB,EAAI+wE,WAAW,IAAI3zF,KAAQwzF,EAAaxzF,KACtD0zF,GAEDrlE,QAAQ,WAAY,GACzB,EACD,EAGU1X,GAAe,CAC1By2B,aAAcgmD,GAAUztF,IACxB68D,cAAc,GAGhB,QAAe5rD,EAAAA,EAAAA,GAAc,CAC3B,CAACswE,EAAAA,IAAsB,CAACj/E,EAAKlI,KAAA,IAAI+W,SAAS,cAAEogE,IAAiBn3E,EAAA,MAC3D,IAAKkI,EAAOmlC,aAAcgmD,GAAUlc,EAAejvE,EAAMu6D,cAAe,EAG1E,CAACoxB,IAA6C,CAAC3rF,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,MAC/D,IAAKp4E,EAAOu6D,aAAgC,eAAlB1rD,EAAQ+jE,MAAwB,EAG5D,EAACqF,EAAAA,EAAAA,GACCkH,EAAAA,GACAC,EAAAA,KACE,CAACp/E,EAAKq4E,KAAA,IAAIxpE,SAAWnR,OAAQ0tF,IAAO/S,EAAA,MACtC,IAAKr4E,EAAOmlC,aAAcgmD,GAAUC,EAAKprF,EAAMu6D,cAAe,GAE/D7rD,I,YC/DI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC/zB,oCAAoC,EACpCF,uBAAuB,EACvBI,6BAA6B,EAC7Bq2G,uBAAuB/iF,EAAAA,EAAAA,KAAI,IAC3BksC,cAAe,KACf82C,mBAAmB,IAGrB,QAAel9E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAC7E,CAACgqD,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAE7E,CAACgqD,GAAAA,IAA6Cl4E,GAASA,EAAMkuB,IAAI,sCAAsC,GACvG,CAACgqD,GAAAA,IAA6Cl4E,GAASA,EAAMkuB,IAAI,sCAAsC,GAEvG,CAACgqD,GAAAA,IAAwC,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,YAAEi9E,IAAeh0F,EAAA,OAC3EkI,EAAM4D,OAAO,yBAAyB68E,GAAKA,EAAE9J,IAAImV,EAAY98E,IAAI,QAAO,EAE1E,CAACkpE,GAAAA,IAAwC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,YAAEi9E,IAAe1T,EAAA,OAC3Ep4E,EAAM4D,OAAO,yBAAyB68E,GAAKA,EAAEC,OAAOoL,EAAY98E,IAAI,QAAO,EAE7E,CAACkpE,GAAAA,IAA0C,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,YAAEi9E,IAAezT,EAAA,OAC7Er4E,EAAM4D,OAAO,yBAAyB68E,GAAKA,EAAEC,OAAOoL,EAAY98E,IAAI,QAAO,EAG7E,CAACkpE,GAAAA,IAA6C,CAACl4E,EAAKs4E,KAAA,IAAIzpE,SAAS,YAAEi9E,IAAexT,EAAA,OAChFt4E,EAAM4D,OAAO,yBAAyB68E,GAAKA,EAAE9J,IAAImV,EAAY98E,IAAI,QAAO,EAE1E,CAACkpE,GAAAA,IAA6C,CAACl4E,EAAKu4E,KAAA,IAAI1pE,SAAS,YAAEi9E,IAAevT,EAAA,OAChFv4E,EAAM4D,OAAO,yBAAyB68E,GAAKA,EAAEC,OAAOoL,EAAY98E,IAAI,QAAO,EAE7E,CAACkpE,GAAAA,IAA+C,CAACl4E,EAAKw4E,KAAA,IAAI3pE,SAAS,YAAEi9E,IAAetT,EAAA,OAClFx4E,EAAM4D,OAAO,yBAAyB68E,GAAKA,EAAEC,OAAOoL,EAAY98E,IAAI,QAAO,EAG7E,CAACkpE,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GACxE,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GACxE,CAACgqD,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GAE1E,CAACgqD,GAAAA,IAA2B,CAACl4E,EAAKy4E,KAAA,IAAI5pE,QAASnX,GAAM+gF,EAAA,OAAKz4E,EAAMkuB,IAAI,gBAAiBx2B,EAAK,EAE1F,CAACwgF,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,+BAA+B,GACzF,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,+BAA+B,GAEzF,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,IC7CI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCyiB,SAAU,CAAC,EACXjrB,OAAQ,KAGV,QAAe+N,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA0B,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASw2B,GAAcvtC,EAAA,OAC1DkI,EAAMy7B,OAAMryB,EAAAA,EAAAA,SAAOg4E,EAAAA,EAAAA,GAAY,CAAE/7C,gBAAgB,gBAAgB,EAGnE,CAAC6yC,GAAAA,IAAiC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,YAAEi9E,IAAe1T,EAAA,OACpEp4E,EACG4D,OAAO,YAAYioB,GAAYA,EAASqC,IAAI49D,EAAY73F,GAAGqJ,YAAY8L,EAAAA,EAAAA,QAAO0iF,MAC9EloF,OAAO,UAAUhD,GAAWA,EAAO2iB,SAASuoE,EAAY73F,IAAM2M,EAASA,EAAOC,KAAKirF,EAAY73F,KAAK,EAGzG,CAACikF,GAAAA,IAAmC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAAS5a,GAAIokF,EAAA,OACzDr4E,EACG4D,OAAO,YAAYioB,GAAYA,EAAS4O,OAAOxmC,EAAGqJ,cAClDsG,OAAO,UAAUhD,GAAUA,EAAOoG,QAAO2vB,GAAKA,IAAM1iC,KAAI,EAG7D,CAACikF,GAAAA,IAA+C,CAACl4E,EAAKs4E,KAA+C,IAA3CzpE,SAAS,YAAEi9E,EAAW,WAAEnwF,IAAc28E,EAC9F,MAAMntE,EAASnL,EAAM0R,MAAM,CAAC,WAAYo6E,EAAY98E,IAAI,MAAM1R,aAE9D,OAAI6N,EACKnL,EAAMg4B,MACX,CAAC,WAAY8zD,EAAY98E,IAAI,MAAM1R,YACnC6N,EAAOvH,OAAO,0BAA0BmoF,GAAMA,EAAG/kF,QAAO2vB,GAAKA,EAAE3nB,IAAI,gBAAkBrT,OAIlFqE,CAAK,EAGd,CAACk4E,GAAAA,IAA0C,CAACl4E,EAAKu4E,KAA8C,IAA1C1pE,SAAS,uBAAEm9E,IAA0BzT,EACxF,MAAM,cAAEtyC,GAAkB+lD,EACpB7gF,EAASnL,EAAM0R,MAAM,CAAC,WAAYu0B,EAAc3oC,aAEtD,OAAI6N,EACKnL,EAAMg4B,MACX,CAAC,WAAYiO,EAAc3oC,YAC3B6N,EAAOvH,OAAO,0BAA0BmoF,GAAMA,EAAGlrF,MAAKuI,EAAAA,EAAAA,QAAO4iF,OAI1DhsF,CAAK,EAGd,CAACiP,EAAAA,IAAwB,IAAMP,IAC9BA,ICnDI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC6iF,eAAgB,KAGlB,QAAet9E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA6C,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASq9E,GAAUp0F,EAAA,OAAKo0F,CAAQ,EAExF,CAAChU,GAAAA,IAA6C,IAAMxpE,GAEpD,CAACwpE,GAAAA,IAA0C,CAACl4E,EAAKo4E,KAA+C,IAA3CvpE,SAAS,YAAEi9E,EAAW,WAAEnwF,IAAcy8E,EACzF,OAAIp4E,EAAMgP,IAAI,QAAUrT,EACfqE,EACJ4D,OAAO,kBAAkB3H,GAAOA,EAAI4E,KAAKirF,EAAY98E,IAAI,SAGvDhP,CAAK,EAGd,CAACk4E,GAAAA,IAA+C,CAACl4E,EAAKq4E,KAA+C,IAA3CxpE,SAAS,YAAEi9E,EAAW,WAAEnwF,IAAc08E,EAC9F,OAAIr4E,EAAMgP,IAAI,QAAUrT,EACfqE,EACJ4D,OAAO,kBAAkB3H,GAAOA,EAAI+K,QAAO/S,GAAMA,IAAO63F,EAAY98E,IAAI,UAGtEhP,CAAK,EAGd,CAACk4E,GAAAA,IAAmC,CAACl4E,EAAKs4E,KAAA,IAAIzpE,QAASo3B,GAAeqyC,EAAA,OACpEt4E,EACG4D,OAAO,kBAAkB3H,GAAOA,EAAI+K,QAAO/S,GAAMA,IAAOgyC,KAAe,EAG5E,CAACh3B,EAAAA,IAAwB,IAAMP,IAC9BA,ICjCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC0F,KAAM,KAGR,QAAeH,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAgC,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASi9E,GAAah0F,EAAA,OAAKg0F,GAAep9E,EAAY,EAEjG,CAACwpE,GAAAA,IAAsC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASi9E,GAAa1T,EAAA,OAAK0T,CAAW,EAEvF,CAAC5T,GAAAA,IAAiC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAASi9E,GAAazT,EAAA,OAAKyT,CAAW,EAElF,CAAC78E,EAAAA,IAAwB,IAAMP,IAC9BA,ICXH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAI,GACJy0F,iBAAgB,GAChBC,oBAAmBA,K,YCLd,MAAM19E,IAAetF,EAAAA,EAAAA,QAAO,CACjCq2C,KAAM,EACN7tF,OAAQ,QACRy6H,SAAS,EACTjxC,aAAavyC,EAAAA,EAAAA,KAAI,MAGnB,QAAe8F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAoCl4E,GAASA,EAAM4D,OAAO,QAAQ67C,GAAQA,EAAO,KAAIhkB,MAAM,CAC1F4wD,SAAS,EACTjxC,aAAavyC,EAAAA,EAAAA,KAAI,MAEnB,CAACqvE,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACjE,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMy7B,MAAM,CACtDgkB,KAAM,EACN4sC,SAAS,IAEX,CAACnU,GAAAA,IAAwCl4E,GAASA,EAAM4D,OAAO,QAAQ67C,GAAQA,EAAO,KAEtF,CAACy4B,GAAAA,IAAoB,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASj9C,GAAQkmC,EAAA,OAAKkI,EAAMkuB,IAAI,SAAUt8D,EAAO,EAEhF,CAACsmH,GAAAA,IAA2B,CAACl4E,EAAKo4E,KAA8B,IAA1BvpE,QAAS6tB,GAAY07C,EACzD,OAAIp4E,EAAMgP,IAAI,eAAeygB,IAAIiN,EAAW1tB,IAAI,OACvChP,EAAM4D,OAAO,eAAew3C,GAAeA,EAAY3gB,OAAOiC,EAAW1tB,IAAI,SAG/EhP,EAAM4D,OAAO,eAAew3C,GAAeA,EAAYu7B,IAAIj6C,EAAW1tB,IAAI,QAAO,EAE1F,CAACkpE,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,eAAerlB,EAAAA,EAAAA,KAAI,KAE1E,CAACoG,EAAAA,IAAwB,IAAMP,IAC9BA,IC/BI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC6Y,MAAO,EACP3V,YAAa,KAGTggF,GAAiBhgF,IAAelD,EAAAA,EAAAA,QAAOkD,GAE7C,QAAeqC,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAoC,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,YAAEvC,EAAW,MAAE2V,IAASnqB,EAAA,OAAKkI,EAAMy7B,MAAM,CAC/FnvB,YAAaggF,GAAehgF,GAC5B2V,SACA,EACF,CAACi2D,GAAAA,IAAwC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,YAAEvC,IAAe8rE,EAAA,OAC3Ep4E,EAAM4D,OAAO,eAAe2oF,GAAOA,EAAIh+E,OAAO+9E,GAAehgF,KAAc,EAE7E,CAAC4rE,GAAAA,IAAyC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,WAAE6tB,IAAc27C,EAAA,OAC3Er4E,EAAM4D,OAAO,eACX0I,GAAeA,EAAYoI,KACzBiiB,GACGA,EAAE3nB,IAAI,QAAU0tB,EAAW1tB,IAAI,MAC9B2nB,EAAEqB,MAAM,CAAC,QAAS,iBAAiB,GAChCA,MAAM,CAAC,QAAS,sBAAsB,GACvCrB,KAEN,EAEN,CAAC1nB,EAAAA,IAAwB,IAAMP,IAC9BA,IC3BI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCyuE,MAAM,EACNwU,SAAS,EACTG,kBAAmB,OAGrB,QAAe79E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,QAAQ,GAC5D,CAACgqD,GAAAA,IAAgCl4E,GAASA,EAAMy7B,MAAM,CACpD+wD,kBAAmB,KACnB3U,MAAM,IAGR,CAACK,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACrE,CAACgqD,GAAAA,IAAwCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACvE,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,WAAW,GAErE,CAACgqD,GAAAA,IAAwB,CAACl4E,EAAKlI,KAA6B,IAAzB+W,QAASwoB,GAAWv/B,EACrD,OAAIu/B,IAAcr3B,EAAMgP,IAAI,qBACnBhP,EAAMkuB,IAAI,oBAAqB,MAGjCluB,EAAMkuB,IAAI,oBAAqBmJ,EAAU,EAGlD,CAACpoB,EAAAA,IAAwB,IAAMP,IAC9BA,IC1BI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCszB,WAAY,CACVl0B,SAAU,CAAC,GAEbikF,kBAAmB,CAAC,EACpBhiD,SAAU,GACV5mB,SAAU,CACR6oE,MAAO,GACPC,OAAQ,GACRC,OAAQ,GACRC,MAAO,GACPC,MAAO,GACPC,UAAW,GACXC,SAAU,IAEZC,WAAY,EACZC,WAAY,CACVzc,WAAY,QACZv6E,KAAM,MACNwB,KAAM,GACNgK,KAAM,CACJyrF,YAAa,MACbC,YAAa,GACbC,aAAa,MAKnB,QAAe1+E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAwC,CAACl4E,EAAKlI,KAAkB,IAAhB,QAAE+W,GAAS/W,EAC1D,MAAMJ,EAAOsI,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAOyF,IAEhC,OAAO7O,EAAMy7B,MAAM/jC,EAAK+iC,OAAO,UAAUzC,MAAM,CAAC,aAAc,QAAStgC,EAAKsX,IAAI,SAAS,EAG3F,CAACkpE,GAAAA,IAA8B,CAACl4E,EAAKo4E,KAA6B,IAAzBvpE,QAASwoB,GAAW+gD,EAC3D,MAAMkV,EAAYttF,EAAM0R,MAAM,CAAC,aAAc,SAASgD,KAAIiP,GAAKA,EAAE/f,OAAO,QAAQ,IAC5D,OAAdyzB,GAAsB1T,EAAE3U,IAAI,eAAiBqoB,EACxC1T,EAAE3U,IAAI,SAGR,cAGT,OAAOhP,EAAMg4B,MAAM,CAAC,aAAc,QAASs1D,EAAU,EAGvD,CAACr+E,EAAAA,IAAwB,IAAMP,IAC9BA,ICjDH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,KCDC,MAAMgX,IAAetF,EAAAA,EAAAA,QAAO,CACjCyuE,MAAM,EACN53E,SAAS,EACTstF,iBAAiB,EACjBC,kCAAkC,IAGpC,QAAe7+E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA4Cl4E,GAASA,EAAMkuB,IAAI,QAAQ,GACxE,CAACgqD,GAAAA,IAA6Cl4E,GAASA,EAAMkuB,IAAI,QAAQ,GACzE,CAACgqD,GAAAA,IAA8C,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,mCAAoCrf,EAAQ,EAC7H,CAACqpE,GAAAA,IAAuCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACtE,CAACgqD,GAAAA,IAAuCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACtE,CAACgqD,GAAAA,IAAyC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAC3Dp4E,EAAMkuB,IAAI,QAAQ,GACfA,IAAI,mCAAoCrf,EAAQ4+E,MAAQ5+E,EAAQ4+E,KAAK5zF,OAAS,GAC9Eq0B,IAAI,WAAW,EAAM,EAE1B,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GACrE,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GAC1C,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICxBI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCszB,WAAY,KACZgxD,YAAa,CACXC,cAAe,GAEjBC,mCAAoC,GACpCC,wBAAyB,KAG3B,QAAel/E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA4C,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAC9DkI,EAAMkuB,IAAI,cAAc9kB,EAAAA,EAAAA,QAAOyF,GAAS,EAG1C,CAACqpE,GAAAA,IAA6Cl4E,GAC5CA,EAAMkuB,IAAI,aAAc,MAE1B,CAACgqD,GAAAA,IAA4B,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAC9Cp4E,EAAMg4B,MAAM,CAAC,cAAenpB,EAAQ9W,MAAMqR,EAAAA,EAAAA,QAAOyF,EAAQ7W,OAAO,EAElE,CAACkgF,GAAAA,IAAgD,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAClEr4E,EAAMkuB,IAAI,sCAAsC9kB,EAAAA,EAAAA,QAAO,CAACyF,EAAQqV,UAAU,EAG5E,CAACg0D,GAAAA,IAAgC,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAClDt4E,EAAMkuB,IAAI,2BAA2B9kB,EAAAA,EAAAA,QAAOyF,EAAQgV,UAAU,EAGhE,CAAC5U,EAAAA,IAAwB,IAAMP,IAC9BA,IC9BH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,KCAN,IAAeoqF,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAI,GACJo2F,QAAO,GACPC,cAAaA,K,YCLR,MAAMr/E,IAAetF,EAAAA,EAAAA,QAAO,CAAC,GAYpC,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA0B,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASq+C,GAAcp1D,EAAA,MAX/Bk2F,EAAChuF,EAAOktD,KACpB9jD,EAAAA,EAAAA,QAAO,CAAC,GAAG6kF,eAAcC,IACxChhC,EAAar1D,SACXs2F,GAAeD,EAAIhgE,IAAIigE,EAAYn/E,IAAI,MAAM1R,WAAY6wF,IAC1D,IAO8DH,CAAuBhuF,GAAOoJ,EAAAA,EAAAA,QAAO8jD,GAAc,EACpH,CAACgrB,GAAAA,IAAiC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASs/E,GAAa/V,EAAA,OAAKp4E,EAAMkuB,IAAIigE,EAAYl6F,GAAGqJ,YAAY8L,EAAAA,EAAAA,QAAO+kF,GAAa,EAChI,CAACjW,GAAAA,IAAmC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAASu/E,GAAe/V,EAAA,OAAKr4E,EAAMy6B,OAAO2zD,EAAc9wF,WAAW,EACjH,CAAC2R,EAAAA,IAAwB,IAAMP,IAC9BA,ICjBI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCijF,SAAS,EACTgC,cAAc,EACdC,QAAQ,IAGV,QAAe3/E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,UAAU,GAC9D,CAACgqD,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,UAAU,GAE9D,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GAC1E,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GAE1E,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,WAAW,GAC9D,CAACgqD,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,WAAW,GAChE,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,WAAW,GAE9D,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,IClBI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCmlF,oBAAqB,CACnBz/E,KAAM,GACN4U,WAAY,MAIhB,QAAe/U,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAgC,CAACl4E,EAAO6+E,IACnCA,EAAOhwE,QACF7O,EAAMkuB,IAAI,sBAAuB2wD,EAAOhwE,SAG1C7O,EAET,CAACk4E,GAAAA,IAAoC,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASs/E,GAAar2F,EAAA,OAAKkI,EAAMkuB,IAAI,sBAAuBigE,EAAY,EACvH,CAACjW,GAAAA,IAAgC,IAAMxpE,GACvC,CAACwpE,GAAAA,IAAsC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASs/E,GAAa/V,EAAA,OAAKp4E,EAAMkuB,IAAI,sBAAuBigE,EAAY,EACzH,CAACjW,GAAAA,IAAsC,IAAMxpE,GAC7C,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICrBH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,KCFN,IAAeoqF,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJ82F,QAAOA,KCDF,MAAM9/E,IAAetF,EAAAA,EAAAA,QAAO,IAE7BqlF,GAAiB5iE,GACrBA,EACGnR,QACC,CAACC,EAAKxP,IAAWwP,EAAI/W,OAAOuH,EAAO6D,IAAI,MAAO7D,GAAQnF,GAAKA,EAAEpC,OAAO,QAAS,GAAG2zB,GAASA,EAAQ,QACjGnuB,EAAAA,EAAAA,QAAO,CAAC,IAETJ,SACAp3C,QAAOo0C,IAAMA,EAAEgJ,IAAI,WAGxB,QAAeL,EAAAA,EAAAA,GAAc,CAC3B,CAAC6xE,EAAAA,IAAsC,CAACxgF,EAAKlI,KAAA,IAAI+W,QAASnX,GAAMI,EAAA,OAAKsR,EAAAA,EAAAA,QAAO1R,EAAK,EACjF,CAAC8oF,EAAAA,IAAgD,CAACxgF,EAAKo4E,KAAA,IAAIvpE,QAASnX,GAAM0gF,EAAA,OAAKhvE,EAAAA,EAAAA,QAAO1R,EAAK,EAC3F,CAAC8oF,EAAAA,IAAkD,CAACxgF,EAAKq4E,KAA2C,IAAvCxpE,SAAS,cAAEvZ,EAAa,KAAE0zB,IAAQqvD,EAC7F,MAAMjhD,EAAQp3B,EAAMuiF,WAAUmM,GAAKA,EAAE1/E,IAAI,QAAU1Z,IAEnD,IAAe,IAAX8hC,EAAc,CAChB,MAAMwoD,EAAY52D,EAAKyT,SAAQtT,GAAKA,EAAEna,IAAI,mBAAkB+U,KAAOiF,EAAKjF,KAElEsM,EAAQrH,EAAKyT,SAAQtT,GAAKA,EAAEna,IAAI,WAChC2/E,EAAYF,GAAep+D,GAC3Boa,EAAWzhB,EAAKyT,SAAQtT,IAC5B,MAAMylE,EAAUzlE,EAAEzX,MAAM,CAAC,cAAe,YAElC9Q,EAAS,GACf,IAAK,IAAI+1B,EAAI,EAAGA,GAAKxN,EAAEna,IAAI,iBAAiB+U,KAAM4S,GAAK,EACrD/1B,EAAOC,KAAK+tF,GAGd,OAAOxlF,EAAAA,EAAAA,QAAOxI,EAAO,IAEjBiuF,EAAeJ,GAAehkD,GAEpC,OAAOzqC,EAAM4D,OAAOwzB,GAAO03D,GAAeA,EAAYrzD,OAAMryB,EAAAA,EAAAA,QAAO,CACjEw2E,YACAn4C,MAAO,CACLpX,MAAOs+D,EACPlkD,SAAUokD,OAGhB,CAEA,OAAO7uF,CAAK,EAEd,CAACiP,EAAAA,IAAwB,IAAMP,IAC9BA,IC/CI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCijF,SAAS,EACT0C,kCAAkC,EAClCz1G,sBAAsB,EACtB0C,iBAAiB,EACjBgzG,4BAA6B,CAAC,EAC9BC,sBAAuB,KACvBC,cAAc,EACdC,iBAAiBtmF,EAAAA,EAAAA,KAAI,IACrBumF,cAAcvmF,EAAAA,EAAAA,KAAI,IAClBwmF,mBAAmBxmF,EAAAA,EAAAA,KAAI,IACvBymF,wBAAwBzmF,EAAAA,EAAAA,KAAI,IAC5B5mC,qBAAqB,EACrBW,2BAA2B,EAC3B2sH,yBAAyB,IAG3B,QAAe5gF,EAAAA,EAAAA,GAAc,CAC3B,CAAC6xE,EAAAA,IAAmD,IAAM9xE,GAAawf,IAAI,WAAW,GACtF,CAACsyD,EAAAA,IAAqDxgF,GAASA,EAAMkuB,IAAI,WAAW,GACpF,CAACsyD,EAAAA,IAAmDxgF,GAASA,EAAMkuB,IAAI,WAAW,GAElF,CAACsyD,EAAAA,IAAqDxgF,GAASA,EAAMkuB,IAAI,gBAAgB,GACzF,CAACsyD,EAAAA,IAAqDxgF,GAASA,EAAMkuB,IAAI,gBAAgB,GAEzF,CAACsyD,EAAAA,IAA0CxgF,GAASA,EAAMkuB,IAAI,uBAAuB,GACrF,CAACsyD,EAAAA,IAA0CxgF,GAASA,EACjDkuB,IAAI,uBAAuB,GAC3BA,IAAI,2BAA2B,GAClC,CAACsyD,EAAAA,IAAgDxgF,GAASA,EAAMkuB,IAAI,6BAA6B,GACjG,CAACsyD,EAAAA,IAAgDxgF,GAASA,EAAMkuB,IAAI,6BAA6B,GAEjG,CAACsyD,EAAAA,IAAwC,CAACxgF,EAAKlI,KAAA,IAAI+W,QAASvZ,GAAewC,EAAA,OAAKkI,EAAMy7B,MAAM,CAC1FwzD,sBAAuB35F,GACvB,EACF,CAACkrF,EAAAA,IAA2C,CAACxgF,EAAKo4E,KAAA,IAAIvpE,QAASma,GAAMovD,EAAA,OAAKp4E,EAAMy7B,MAAM,CACpFniD,sBAAsB,EAAM01G,4BAA6BhmE,GACzD,EACF,CAACw3D,EAAAA,IAA2CxgF,GAASA,EAAMy7B,MAAM,CAC/DniD,sBAAsB,IAExB,CAACknG,EAAAA,IAAuDxgF,GAASA,EAAMy7B,MAAM,CAC3EniD,sBAAsB,EACtB41G,cAAc,IAEhB,CAAC1O,EAAAA,IAAqC,CAACxgF,EAAKq4E,KAAA,IAAIxpE,QAASgsC,GAAUw9B,EAAA,OAAKr4E,EAAMy7B,MAAM,CAClF0zD,gBAAiBnvF,EAAMgP,IAAI,mBAAmBwgF,MAAM30C,IACpD,EACF,CAAC2lC,EAAAA,IAAmC,CAACxgF,EAAKs4E,KAAA,IAAIzpE,QAASgsC,GAAUy9B,EAAA,OAAKt4E,EAAMy7B,MAAM,CAChF0zD,gBAAiBnvF,EAAMgP,IAAI,mBAAmBjG,SAAS8xC,IACvD,EACF,CAAC2lC,EAAAA,IAAkC,CAACxgF,EAAKu4E,KAAA,IAAI1pE,QAAShW,GAAS0/E,EAAA,OAAKv4E,EAAMy7B,MAAM,CAC9E2zD,aAAcpvF,EAAMgP,IAAI,gBAAgBwgF,MAAM32F,IAC9C,EACF,CAAC2nF,EAAAA,IAAkC,CAACxgF,EAAKw4E,KAAA,IAAI3pE,QAAShW,GAAS2/E,EAAA,OAAKx4E,EAAMy7B,MAAM,CAC9E2zD,aAAcpvF,EAAMgP,IAAI,gBAAgBjG,SAASlQ,IACjD,EACF,CAAC2nF,EAAAA,IAAkC,CAACxgF,EAAKy4E,KAAA,IAAI5pE,QAAShW,GAAS4/E,EAAA,OAAKz4E,EAAMy7B,MAAM,CAC9E4zD,kBAAmBrvF,EAAMgP,IAAI,qBAAqBwgF,MAAM32F,IACxD,EACF,CAAC2nF,EAAAA,IAAkC,CAACxgF,EAAK04E,KAAA,IAAI7pE,QAAShW,GAAS6/E,EAAA,OAAK14E,EAAMy7B,MAAM,CAC9E4zD,kBAAmBrvF,EAAMgP,IAAI,qBAAqBjG,SAASlQ,IAC3D,EACF,CAAC2nF,EAAAA,IAA2C,CAACxgF,EAAK24E,KAAoD,IAAhD9pE,SAAS,QAAEhW,EAAO,UAAE42F,EAAS,SAAEC,IAAY/W,EAC/F,MAAM2W,EAAyBtvF,EAAMgP,IAAI,0BACnC2gF,GAAYD,EAASE,SAAWF,EAASG,UACzCP,EAAuBvoF,MAAKoiB,GAAKA,EAAEna,IAAI,YAAcnW,EAAQi3B,QAAQ9gB,IAAI,YAC/E,IAAIoX,EAAUqpE,EAETrpE,IACHA,GAAWkpE,EAAuBn4E,WAAam4E,EAAuBx/D,QAAQ9gB,IAAI,YAAcnW,EAAQi3B,QAAQ9gB,IAAI,WAGtH,IAAIpO,GAASiI,EAAAA,EAAAA,KAAI,IAUjB,OAPEjI,EADEwlB,GACOvd,EAAAA,EAAAA,KAAIhQ,GACJ82F,EACAL,EAAuBvmF,SAASlQ,GAEhCy2F,EAAuBE,MAAM32F,GAGjCmH,EAAMy7B,MAAM,CACjB6zD,uBAAwB1uF,GACxB,EAEJ,CAAC4/E,EAAAA,IAA6C,CAACxgF,EAAK44E,KAAA,IAAI/pE,QAAShW,GAAS+/E,EAAA,OAAK54E,EAAMy7B,MAAM,CACzF6zD,uBAAwBtvF,EAAMgP,IAAI,0BAA0BjG,SAASlQ,IACrE,EAEF,EAACo/E,EAAAA,EAAAA,GACCuI,EAAAA,GACAA,EAAAA,KACExgF,GACFA,EAAMkuB,IAAI,yBAA0Bxf,GAAaM,IAAI,2BAGvD,CAACwxE,EAAAA,IAAiD,CAACxgF,EAAK64E,KAAA,IAAE,QAAEhqE,GAASgqE,EAAA,OACnE74E,EAAMkuB,IAAI,0BAA2Brf,EAAQ,EAG/C,EAACopE,EAAAA,EAAAA,GACCuI,EAAAA,GACAA,EAAAA,KACExgF,GAASA,EAAMkuB,IAAI,oCAAoC,GAE3D,CAACsyD,EAAAA,IAAsDxgF,GAASA,EAAMkuB,IAAI,oCAAoC,GAE9G,CAACsyD,EAAAA,IAAsCxgF,GAASA,EAAMkuB,IAAI,mBAAmB,GAC7E,CAACsyD,EAAAA,IAAsCxgF,GAASA,EAAMkuB,IAAI,mBAAmB,GAE7E,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,I,YCrHI,MAQDohF,GAAoBh4F,IAAA,IAAC,aACzBi4F,EAAY,sBACZC,EAAqB,YACrBC,EAAW,iBACXC,GACDp4F,EAAA,OATuBq4F,EAWpBJ,EAX0BK,EAY1BH,EAZsCI,EAatCH,GAZFI,EAAAA,GAAAA,IAASH,EAAMC,EAAYC,GADNE,IAACJ,EAAMC,EAAYC,CAcvC,EA4BUG,GAAwBC,GAC/BA,EAAKC,qBAAqB3sE,KAAO,EA1Bdq0D,KAInB,IAJoB,aACxB2X,EAAY,qBACZW,EAAoB,iBACpBR,GACD9X,EACC,MAAMuY,EAA8B,IAAID,GAiBxC,OAhBAC,EAA4B3kE,MAC1B,CAAC8F,EAAG8+D,KACF,MAAMC,EAAWd,EAAatoF,QAAQqqB,GAChCg/D,EAAWf,EAAatoF,QAAQmpF,GAEtC,OAAIC,IAAaC,EACRD,EAAWC,GAGZ,CAAC,IAIiBf,EAAa/oF,QAAO/S,IAAOy8F,EAAqBntE,SAAStvB,KAC5C88F,OAAOb,EAAkB,KAAMS,EAEvD,EAKVK,CAAiBP,GAGnBX,GAAkBW,GC5Cd/hF,IAAetF,EAAAA,EAAAA,QAAO,CACjC6nF,QAAS,KACTC,kBAAmB,GACnB5uD,YAAa,GACb6uD,WAAY,EACZ55D,MAAO,EACP65D,gBAAiB,GACjBC,UAAW,CAAC,IA8BRC,GAAWA,CAACtxF,EAAOuxF,EAAUC,IACjCxxF,EAAM4D,OAAO,eAAe0+B,IAAeguD,EAAAA,GAAAA,IAAShuD,EAAaivD,EAAUC,KAUvEC,GAAmBnvD,GAAeA,EAAYt7B,QAAOunB,IAAMA,EAAEvf,IAAI,QAAQmI,YAE/E,QAAexI,EAAAA,EAAAA,GAAc,CAC3B,CAAC6xE,EAAAA,IAA0C,CAACxgF,EAAKlI,KAAkB,IAAhB,QAAE+W,GAAS/W,EAC5D,MAAMo6B,EAASrjB,EAAQG,IAAI,UACrB+vC,EAAOlwC,EAAQG,IAAI,QAGzB,GAFchP,EAAMgP,IAAI,mBAAmBuzE,WAAUpoD,GAAKA,EAAEnrB,IAAI,YAAckjB,KAEjE,EACX,OAAOlyB,EAGT,MAAMY,EAAS,CAAEsxB,SAAQ6sB,QAEzB,OAAO/+C,EAAM4+E,QAAQ,CAAC,oBAAoBx1E,EAAAA,EAAAA,QAAO,CAACxI,IAAS,EAE7D,CAAC4/E,EAAAA,IAAmD,IAAM9xE,GAC1D,CAAC8xE,EAAAA,IAAqD,CACpDxgF,EAAKo4E,KAEF,IADDvpE,SAAS,MAAEoT,EAAK,MAAEsV,EAAK,UAAE85D,EAAS,KAAE35F,EAAI,QAAEu5F,EAAO,kBAAEC,IAAqB9Y,EAE1E,MAAM91C,GAAcl5B,EAAAA,EAAAA,QAAO1R,GAAMgd,KAAIsZ,GAASA,EAAMpqB,OAAO,QAAQolB,GAAQA,EAAKtU,KAAIyU,GAAKA,EAAEna,IAAI,YAE/F,OAAOhP,EAAMy7B,MAAM,CACjB6G,cACA2uD,UACAC,oBACAC,WAAYlvE,EACZsV,QACA85D,WAAWjoF,EAAAA,EAAAA,QAAOioF,IAClB,EAGJ,CAAC7Q,EAAAA,IAAiD,CAACxgF,EAAKq4E,KAAA,IAAIxpE,SAAS,SAAE0iF,EAAQ,SAAEC,IAAYnZ,EAAA,OAAKiZ,GAAStxF,EAAOuxF,EAAUC,EAAS,EACrI,CAAChR,EAAAA,IAAiD,CAACxgF,EAAKs4E,KAAA,IAAIzpE,SAAS,SAAE0iF,EAAQ,SAAEC,IAAYlZ,EAAA,OAAKgZ,GAAStxF,EAAOwxF,EAAUD,EAAS,EAErI,CAAC/Q,EAAAA,IACD,CAACxgF,EAAKu4E,KAAgE,IAA5D1pE,SAAS,OAAE0hB,EAAM,SAAEghE,EAAQ,SAAEC,EAAQ,aAAEE,IAAgBnZ,EAC/D,MAAMmY,EAAuBgB,EAAa1qF,QAAO2qF,GAAMA,EAAG3iF,IAAI,YAAcuhB,IAAQ7b,KAAIi9E,GAAMA,EAAG3iF,IAAI,YAC/F61E,EAAU2L,GAAsB,CACpCT,aAAc/vF,EAAMgP,IAAI,eAAeyH,MAAKm7E,GAAMA,EAAGlgF,MAAM,CAAC,OAAQ,SAAW6e,IAAQvhB,IAAI,QAC3F0hF,uBACAT,YAAasB,EACbrB,iBAAkBsB,IAGpB,OAAOxxF,EAAM4D,OAAO,eAAeguF,GAAMA,EAAGl9E,KAAI6Z,GAAMA,EAAE7c,MAAM,CAAC,OAAQ,SAAW6e,EAAShC,EAAEL,IAAI,OAAQ22D,GAAWt2D,KAAI,EAG1H,CAACiyD,EAAAA,IACC,CAACxgF,EAAKw4E,KAAA,IAAI3pE,SAAS,OAAE0hB,EAAM,SAAEghE,EAAQ,SAAEC,IAAYhZ,EAAA,MAzDtCqZ,EAAC7xF,EAAOuwB,EAAQuhE,EAAYN,KAC3C,MAAMO,EAAa/xF,EAAMgP,IAAI,eAAeuzE,WAAUqP,GAAMA,EAAGlgF,MAAM,CAAC,OAAQ,SAAW6e,IACnFs0D,GAAUyL,EAAAA,GAAAA,IAAStwF,EAAM0R,MAAM,CAAC,cAAeqgF,EAAY,SAAUD,EAAYN,GAEvF,OAAOxxF,EAAMg4B,MAAM,CAAC,cAAe+5D,EAAY,QAASlN,EAAQ,EAqDNgN,CAAS7xF,EAAOuwB,EAAQihE,EAAUD,EAAS,EAErG,CAAC/Q,EAAAA,IAAuD,CAACxgF,EAAKy4E,KAAA,IAAI5pE,SAAS,OAAEqjB,IAAUumD,EAAA,OACrFz4E,EAAM4D,OAAO,eAAeouF,GAAMA,EAAGt9E,KAAI6Z,GAAKA,EAAE3qB,OAAO,QAAQolB,GAASA,EAAKhiB,QAAO/S,GAAMA,IAAOi+B,UAC9FtuB,OAAO,cAAe6tF,GAAiB,EAG5C,CAACjR,EAAAA,IAAkC,CAACxgF,EAAK04E,KAAwB,IAApB7pE,QAASma,GAAM0vD,EAC1D,MAAMuZ,EAAcjpE,EAAKha,IAAI,SAAS0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,QAE5D,IAAI8S,EAActiC,EAAMgP,IAAI,eAAe0F,KAAI6Z,GACxC0jE,EAAYxiE,IAAIlB,EAAE7c,MAAM,CAAC,OAAQ,QAIjC6c,EAAEvf,IAAI,QAAQuU,SAASyF,EAAKha,IAAI,OAI9Buf,EAHEA,EAAE3qB,OAAO,QAAQulB,GAAKA,EAAEtoB,KAAKmoB,EAAKha,IAAI,SAJtCuf,EAAE3qB,OAAO,QAAQulB,GAAKA,EAAEniB,QAAO/S,GAAMA,IAAO+0B,EAAKha,IAAI,YAUhE,MAAMkjF,EAAelyF,EAAMgP,IAAI,eAAe0F,KAAI6Z,GAAKA,EAAE7c,MAAM,CAAC,OAAQ,SAAQ8d,QAQhF,OALA8S,EAFiBtZ,EAAKha,IAAI,SAAShI,QAAO0P,IAAMw7E,EAAaziE,IAAI/Y,EAAE1H,IAAI,SAEhD0L,QAAO,CAACC,EAAK3iB,IAAU2iB,EAAI9Z,MAAKuI,EAAAA,EAAAA,QAAO,CAC5D4f,KAAM,CAACA,EAAKha,IAAI,OAChBohB,KAAMp4B,MACHsqC,GAEEtiC,EAAMkuB,IAAI,cAAeujE,GAAiBnvD,GAAa,EAEhE,CAACk+C,EAAAA,IAAqC,CAACxgF,EAAK24E,KAAA,IAAE,QAAE9pE,GAAS8pE,EAAA,OAAK34E,EAAMkuB,IAAI,cAAerf,EAAQ,EAC/F,CAAC2xE,EAAAA,IAAkD,CAACxgF,EAAK44E,KAA4B,IAAxB/pE,SAAS,KAAEma,IAAQ4vD,EAC9E,MAAMrhD,EAAQvO,EAAKjF,KACbotE,EAAanoE,EAAKyT,SAAQtT,GAAKA,EAAEna,IAAI,mBAAkB+U,KAAOwT,EAEpE,OAAOv3B,EAAMy7B,MAAM,CACjBlE,QACA45D,cACA,EAGJ,CAAC3Q,EAAAA,IAAwD,CAACxgF,EAAK64E,KAAkB,IAAhB,QAAEhqE,GAASgqE,EACtEyG,EApIkC6S,EAACnyF,EAAOuwB,EAAQ2B,EAAQ17B,IAAWwJ,EAAMsnC,SACjF,CAAC,YAAa,GAAG/W,GAAU,OAAO2B,MAClCm/D,GAAeA,EAAwBA,EAAU38E,KAAI09E,GAAYA,EAASprF,QAAO0d,GAAQA,EAAK1V,IAAI,QAAUxY,MAAjF66F,IAkIVc,CAAkCnyF,EAAO6O,EAAQ0hB,OAAQ1hB,EAAQqjB,OAAQrjB,EAAQ6V,KAAKzwB,IAMrG,OAJI4a,EAAQ5a,KACVqrF,EAlI+B+S,EAACryF,EAAOuwB,EAAQ2B,EAAQogE,EAAgB5tE,IAAS1kB,EAAMsnC,SAC1F,CAAC,YAAa,GAAG/W,GAAU,OAAO2B,IAAUogE,IAC5CjB,GACOA,EAIEA,EAAUxwF,MAAKuI,EAAAA,EAAAA,QAAOsb,KAHpBtb,EAAAA,EAAAA,QAAO,CAACsb,MA8HJ2tE,CAA6B/S,EAAUzwE,EAAQ0hB,OAAQ1hB,EAAQqjB,OAAQrjB,EAAQ0jF,aAAat+F,GAAGqJ,WAAYuR,EAAQ6V,OAvH3G1kB,IACvBA,EAAM4D,OACJ,aACAytF,GACEA,EACG38E,KAAI09E,GAAYA,EAASprF,QAAO2c,IAAMA,EAAExM,cACxCnQ,QAAO2c,IAAMA,EAAExM,cAoHbq7E,CAAiBlT,EAAS,EAGnC,CAACkB,EAAAA,IAAuD,CAACxgF,EAAK84E,KAAA,IAAE,QAAEjqE,GAASiqE,EAAA,OAAK94E,EAAMkuB,IAAI,aAAa9kB,EAAAA,EAAAA,QAAOyF,GAAS,EAEvH,CAACI,EAAAA,IAAwB,IAAMP,IAC9BA,IC7JI,MAAMA,IAAe7F,EAAAA,EAAAA,KAAI,IAEhC,QAAe8F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA0B,CAACl4E,EAAKlI,KAAyD,IAArD+W,SAAS,gBAAE4jF,EAAe,iBAAEC,IAAoB56F,EAC/E66F,GAAWvpF,EAAAA,EAAAA,QAAO,CAACqpF,IAAkBziE,UAAUR,QAEnD,GAAIkjE,EACF,OAAO1yF,EAAMwvF,MAAMmD,GAGrB,MAAMC,EAAe5yF,EAAM6yF,UAAUF,GAGrC,OAFAA,EAAWA,EAAS5pF,SAAS6pF,GAEtB5yF,EAAM+I,SAAS6pF,GAAcpD,MAAMmD,EAAS,EAGrD,CAACza,EAAAA,IAA6B,IAAMxpE,GAEpC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,I,uBClBI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,IAEnC,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAuC,IAAMxpE,GAC9C,CAACwpE,EAAAA,IAAyC,CAAC4a,EAAMh7F,KAAA,IAAI+W,SAAS,SAAEkkF,IAAYj7F,EAAA,OAAKsR,EAAAA,EAAAA,QAAO2pF,EAAS,EAEjG,CAAC7a,EAAAA,IAAsB,CAAC4a,EAAM1a,KAAA,IAAIvpE,QAASkkF,GAAU3a,EAAA,OAAKhvE,EAAAA,EAAAA,QAAO4pF,MAAkB5pF,EAAAA,EAAAA,QAAO2pF,GAAU9pF,QAAQ,EAE5G,CAACgG,EAAAA,IAAwB,IAAMP,IAC9BA,ICTH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAI,GACJg6F,aAAY,GACZqB,SAAQA,KCLH,MAAMrkF,IAAetF,EAAAA,EAAAA,QAAO,CACjCpC,OAAQ,GACR+c,KAAM,GACNkvE,sBAAsB,IAGxB,QAAetkF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA+B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,UAAU9kB,EAAAA,EAAAA,QAAOyF,GAAS,EAC5F,CAACqpE,EAAAA,IAAmC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMkuB,IAAI,QAAQ9kB,EAAAA,EAAAA,QAAOyF,GAAS,EAC9F,CAACqpE,EAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC9E,EAAC+pD,EAAAA,EAAAA,GACCC,EAAAA,GACAA,EAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAE/C,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,IChBH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJorF,OAAM,GACN97E,OAAMA,K,YCHD,MAAM0H,IAAetF,EAAAA,EAAAA,QAAO,CACjC8pF,iBAAkB,SAGpB,QAAevkF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA8B,CAACl4E,EAAKlI,KAAA,IAAI+W,QAAS7W,GAAOF,EAAA,OAAKkI,EAAMkuB,IAAI,mBAAoBl2B,EAAM,EAClG,CAACiX,EAAAA,IAAwB,IAAMP,IAC9BA,ICPI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC+pF,sBAAuB,GACvBC,aAAc,GACdC,gBAAiB,GACjBC,YAAa,GACbC,IAAK,CAAC,EACN7rD,KAAM,CAAC,EACP+C,SAAU,GACV+oD,YAAa,CAAC,EACdjpD,UAAW,GACX7e,WAAY,GACZgvC,OAAQ,GACR7uC,SAAU,GACVovC,SAAU,GACVvjC,aAAc,CAAC,EACfyjC,UAAW,GACXC,iBAAkB,GAClBE,YAAa,GACbgB,WAAY,GACZ9kC,MAAO,CAAC,EACRi8D,UAAW,CAAC,EACZh4B,WAAY,GACZi4B,SAAU,GACVz5D,WAAY,GACZ05D,SAAU,CAAC,EACXC,OAAQ,CAAC,IAGX,QAAejlF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAqC,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASsjC,GAAcr6C,EAAA,OACrEq6C,EAAezjC,GAAa+sB,OAAMryB,EAAAA,EAAAA,QAAQ+oC,IAAkBzjC,EAAY,EAE1E,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,IClCH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,K,YCDC,MAAMgX,IAAetF,EAAAA,EAAAA,QAAO,CACjC3sD,gCAAgC,EAChCo3I,kBAAkB,EAElBC,cAAe,CACb3vD,SAAU,GACV4vD,WAAY,GACZC,SAAU,GACVC,QAAS,IAGXC,eAAgB,CACd/vD,UAAU,EACV4vD,YAAY,EACZC,UAAU,EACVC,SAAS,KAIb,QAAetlF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAyCl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAC/F,CAACgqD,GAAAA,IAAyCl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAE/F,CAACgqD,GAAAA,GAAoCl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAC5E,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAC9E,CAACgqD,GAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAE5E,CAACgqD,GAAAA,IAA8B,CAACl4E,EAAKlI,KAAkB,IAAhB,QAAE+W,GAAS/W,EAChD,MAAMq8F,EAAUn0F,EAAM0R,MAAM,CAAC,iBAAkB7C,IAE/C,OAAO7O,EAAMsnC,SAAS,CAAC,mBAAmB8sD,GAAUA,EAAO1/E,KAAI,CAAC1c,EAAOD,IACjEA,IAAQ8W,GACF7W,IAGHm8F,GAAUn8F,KAChB,EAGL,CAACkgF,GAAAA,IAA2B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,KAAE3Y,EAAI,MAAE41D,IAASssB,EAAA,OAC9Dp4E,EAAMg4B,MAAM,CAAC,gBAAiB9hC,IAC5BkT,EAAAA,EAAAA,QAAO0iD,GACJp3C,KAAIzgB,GAAMA,EAAGqJ,aACbkyB,QACAxmB,SAAU,EAGjB,CAACkvE,GAAAA,IAA2B,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,KAAE3Y,EAAI,MAAE41D,IAASusB,EAAA,OAC9Dr4E,EAAMsnC,SAAS,CAAC,gBAAiBpxC,IAAOm+F,GACtCA,EAAS7kE,QAAQggE,OAAMpmF,EAAAA,EAAAA,QAAO0iD,GAAOp3C,KAAIzgB,GAAMA,EAAGqJ,cAClD0L,UAAS,EAGb,CAACkvE,GAAAA,IAA8B,CAACl4E,EAAKs4E,KAAA,IAAIzpE,SAAS,KAAE3Y,EAAI,MAAE41D,IAASwsB,EAAA,OACjEt4E,EAAMsnC,SAAS,CAAC,gBAAiBpxC,IAAOm+F,GACtCA,EAAS7kE,QAAQzmB,UAASK,EAAAA,EAAAA,QAAO0iD,GAAOp3C,KAAIzgB,GAAMA,EAAGqJ,cACrD0L,UAAS,EAGb,CAACiG,EAAAA,IAAwB,IAAMP,IAC9BA,IC5DI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCkrF,qBAAsB,GACtBC,wBAAyB,KAsBrBC,GAAepkE,IAASA,EAAKphB,IAAI,YAAYmI,UAC7Cs9E,GAAY/9E,GACZA,EAAE1H,IAAI,YAAYsX,MAAM,OACnB5P,EAAE1H,IAAI,YAAYsX,MAAM,OAAOzsB,OAGjC,EAKH66F,GAAoBA,CAACrkE,EAAOskE,KAChC,IAAI/zF,GAASwI,EAAAA,EAAAA,QAAO,IACpB,MAAMwrF,EAAkBvkE,EAAMrpB,OAAO2tF,GAMrC,OAJAC,EAAgB/8F,SAAQ6e,IACtB9V,EAASA,EAAO2N,OAAOmmF,GAAkBh+E,EAAE1H,IAAI,YAAa2lF,GAAS,IAGhEC,EAAgBrmF,OAAO3N,EAAO,EAGjCi0F,GAAsBA,CAACxkE,EAAOskE,IAClCD,GAAkBrkE,EAAOskE,GAASjgF,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOp9C,QAAOqiC,GAAMA,IAAIygB,KAAIzgB,GAAMA,EAAGqJ,aAGlFw3F,GAAYzkE,GAASA,EAAMrpB,QAAO0P,IAlBtBq+E,EAAC3kE,EAAMC,IACvBA,EAAMtpB,MAAK2P,GAAK0Z,EAAKphB,IAAI,YAAY/H,WAAWyP,EAAE1H,IAAI,cAAgBylF,GAAU/9E,GAAK+9E,GAAUrkE,KAiBnD2kE,CAAUr+E,EAAG2Z,KASrD2kE,GAAc3kE,GAASD,IAC3B,MAAM5rB,EAAW6rB,EAAMrpB,QARTiuF,EAQwB7kE,EARV8kE,GAC5BA,EAAUlmF,IAAI,YAAY/H,WAAWguF,EAAWjmF,IAAI,cAAgBylF,GAAUS,GAAaT,GAAUQ,IAClGC,EAAUlmF,IAAI,qBAAuBimF,EAAWjmF,IAAI,qBAFzCimF,MASd,MAAME,EAxDqBC,EAAChlE,EAAMC,KAClC,IAAIglE,EAAY,GAEhB,MAAMC,GAAYzsF,EAAAA,EAAAA,KAChBunB,EAAKphB,IAAI,YACN8X,MAAM,KACN9f,OAAOoqB,SACPwb,MAAM,GAAI,GACVl4B,KAAIgrB,IACH,MAAM61D,EAAOF,EAGb,OAFAA,GAAa,GAAG31D,KAET,GAAG61D,IAAO71D,IAAI,KAI3B,OAAOrP,EAAMrpB,QAAO0P,GAAK4+E,EAAU7lE,IAAI/Y,EAAE1H,IAAI,cAAa,EAwCxComF,CAAchlE,EAAMC,GAChCq7B,EAAWopC,GAAUtwF,GAAUkQ,IAAIsgF,GAAY3kE,IAErD,OAAOjnB,EAAAA,EAAAA,QAAO,CACZnV,GAAIm8B,EAAKphB,IAAI,MACbwmF,WAAYplE,EAAKphB,IAAI,cACrBymF,aAAcjxF,EAASkQ,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,QAC7CkmE,YAAaP,EAAUzgF,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,QAC7CmmE,kBAAmBd,GAAoBnpC,EAAU8oC,IACjDA,cAAe9oC,EAASv0C,UACxBy+E,cAAepxF,EAASwC,QAAO0P,GAAKA,EAAE1H,IAAI,gBAAe0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOwgB,QAC/Ek8B,YACA,EAGEmqC,GAAmBA,CAACxlE,EAAOn6B,IACXm6B,EAAMrpB,QAAO0P,GAAKA,EAAE1H,IAAI9Y,KAAOtkC,QAAO8kD,GAAKA,EAAE1H,IAAI,cAGlE+9B,SAAQr2B,GAAKA,EAAE1H,IAAI,qBACnB0F,KAAI,CAACsZ,EAAO8nE,KACX,MAAMhqC,EAzBez7B,IAASA,EAAM84B,WAAUzyC,GAAKA,EAAE1H,IAAI,iBAAiBmI,YAAcT,EAAE1H,IAAI,gBAyBhF+mF,CAAmBjB,GAAU9mE,GAAOtZ,IAAIsgF,GAAYhnE,KAC5DgoE,EAAUnB,GAAoB/oC,GAAO,KAAM,IAC3C17B,EAAOC,EAAM5Z,MAAKC,GAAKA,EAAE1H,IAAI,QAAU88C,EAAMp6C,MAAM,CAAC,EAAG,SACvDukF,IAAY7lE,GAAOA,EAAKphB,IAAI,aAAa,GAEzC2mF,EAAoBd,GAAoB/oC,EAAO0oC,IAErD,OAAOprF,EAAAA,EAAAA,QAAO,CACZ6sF,YACAD,UACAL,oBACAG,kBACAhqC,SACA,IAEHntB,WACA31B,SACAp3C,QAAO41E,GAAMA,EAAEx4B,IAAI,aAAe,EAAI,IAG3C,QAAeL,EAAAA,EAAAA,GAAc,CAC3B,CAACunF,EAAAA,IAA2B,CAACl2F,EAAKlI,KAAkB,IAAhB,QAAE+W,GAAS/W,EAC7C,MAAMu4B,GAAQjnB,EAAAA,EAAAA,QAAOyF,EAAQsnF,eAAiB,IAE9C,OAAOn2F,EAAMy7B,MAAM,CACjB64D,qBAAsBuB,GAAiBxlE,EAAO,YAC9CkkE,wBAAyBsB,GAAiBxlE,EAAO,gBACjD,EAGJ,CAACphB,EAAAA,IAAwB,IAAMP,IAC9BA,IChHI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC,CACEqnE,WAAY,OACZ3nB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAM,YACNwL,KAAM,CACJ00F,iBAAiB,IAGrB,CACE3lB,WAAY,gBACZ3nB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAM,YACNwL,KAAM,CACJ00F,iBAAiB,IAGrB,CACE3lB,WAAY,kBACZ3nB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAM,YACNwL,KAAM,CACJ00F,iBAAiB,MAKvB,QAAeznF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAiC,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASuoB,GAAOt/B,EAAA,OAAKkI,EAAMg4B,MAAM,CAACZ,EAAO,YAAY,EAAK,EACtG,CAAC8gD,GAAAA,IAA8B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,KAAEnX,EAAI,MAAE0/B,IAASghD,EAAA,OAAKp4E,EAAM4+E,QAAQ,CAACxnD,GAAQ,CAC7Fn3B,SAAS,EACTvI,MAAM0R,EAAAA,EAAAA,QAAO1R,IACb,EAEF,CAACwgF,GAAAA,IAAyB,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAC3Cr4E,EAAMsnC,SAAS,CAAC,EAAG,eAAezL,GAAOhtB,EAAQg6B,YAAqC,kBAAvBh6B,EAAQg6B,WAAkCh6B,EAAQg6B,WAAahN,GAAG,EAGnI,CAAC5sB,EAAAA,IAAwB,IAAMP,IAC9BA,IC1CH,MAAM2nF,IAAsBjtF,EAAAA,EAAAA,QAAO,CAACG,EAAAA,GAAAA,KAAsBA,EAAAA,GAAAA,SAA0BA,EAAAA,GAAAA,qBAC9E+sF,IAAWltF,EAAAA,EAAAA,QAAO,CAACG,EAAAA,GAAAA,OACnBgtF,IAAwBntF,EAAAA,EAAAA,QAAO,CAACG,EAAAA,GAAAA,qBAChCitF,IAAsBptF,EAAAA,EAAAA,QAAO,CAACG,EAAAA,GAAAA,KAAsBA,EAAAA,GAAAA,SAA0BA,EAAAA,GAAAA,YAC9EktF,IAAertF,EAAAA,EAAAA,QAAO,CAACG,EAAAA,GAAAA,WAEvBmtF,GAAqB,CACzB,CACE5nF,KAAM,QAER,CACEA,KAAM,MACN6nF,YAAaH,IAEf,CACE1nF,KAAM,SAER,CACEA,KAAM,SAER,CACEA,KAAM,gBAER,CACEA,KAAM,mBAER,CACEA,KAAM,SACN6nF,YAAaH,IAEf,CACE1nF,KAAM,cACN6nF,YAAaH,IAEf,CACE1nF,KAAM,qBACN6nF,YAAaH,IAEf,CACE1nF,KAAM,mBACN6nF,YAAaH,IAEf,CACE1nF,KAAM,eACN6nF,YAAaH,IAEf,CACE1nF,KAAM,cACN6nF,YAAaH,IAEf,CACE1nF,KAAM,gBACN6nF,YAAaF,IAEf,CACE3nF,KAAM,iBAER,CACEA,KAAM,iBACN6nF,YAAaH,IAEf,CACE1nF,KAAM,SAER,CACEA,KAAM,oBACN6nF,YAAaF,KAIXG,GAAsB,CAC1B,CACE9nF,KAAM,aACN6nF,YAAaL,IAEf,CACExnF,KAAM,cAER,CACEA,KAAM,sBACN6nF,YAAaF,KAIXI,GAA8B,CAClC,CACE/nF,KAAM,aACN6nF,YAAaL,IAEf,CACExnF,KAAM,cAER,CACEA,KAAM,mBACN6nF,YAAaL,IAEf,CACExnF,KAAM,aACN6nF,YAAaN,IAEf,CACEvnF,KAAM,YAER,CACEA,KAAM,WAER,CACEA,KAAM,aAER,CACEA,KAAM,aAER,CACEA,KAAM,YAER,CACEA,KAAM,UAER,CACEA,KAAM,cAER,CACEA,KAAM,gBACN6nF,YAAaF,IAEf,CACE3nF,KAAM,sBACN6nF,YAAaF,IAEf,CACE3nF,KAAM,uBACN6nF,YAAaH,IAEf,CACE1nF,KAAM,iBACN6nF,YAAaH,IAEf,CACE1nF,KAAM,wBACN6nF,YAAaH,IAEf,CACE1nF,KAAM,cAER,CACEA,KAAM,cAIJgoF,GAAuBD,GAEvBE,GAAwCF,GAA4B7vF,QAAOwgC,IAAMA,EAAE14B,KAAKwX,MAAM,qBAE9F0wE,IAAqB5tF,EAAAA,EAAAA,QAAO,CAChC6tF,aAAcL,GACd/gB,YAAa6gB,KAGTQ,IAAwB9tF,EAAAA,EAAAA,QAAO,CACnC6tF,aAAcJ,GACdhhB,YAAa6gB,KAGTS,GAA+B,CACnCF,aAAc,GACdphB,YAAa6gB,IAGTU,GAAkC,CACtCH,aAAcF,GACdlhB,YAAa6gB,IAGFW,IAAsBjuF,EAAAA,EAAAA,QAAO,CACxC+7C,WAAY,CACV,CAACwB,EAAAA,GAAAA,KAAiBuwC,GAClB,CAACvwC,EAAAA,GAAAA,YAAwBuwC,GACzB,CAACvwC,EAAAA,GAAAA,gBAA4BuwC,GAC7B,CAACvwC,EAAAA,GAAAA,QAAoBuwC,GACrB,CAACvwC,EAAAA,GAAAA,KAAiBqwC,GAClB,CAACrwC,EAAAA,GAAAA,QAAoBqwC,GACrB,CAACrwC,EAAAA,GAAAA,WAAuBqwC,GACxB,CAACrwC,EAAAA,GAAAA,SAAqBqwC,GACtB,CAACrwC,EAAAA,GAAAA,OAAmBqwC,GACpB,CAACrwC,EAAAA,GAAAA,MAAkBqwC,GACnB,CAACrwC,EAAAA,GAAAA,MAAkBqwC,GACnB,CAACrwC,EAAAA,GAAAA,SAAqBuwC,MAIpBI,GAAwBD,GAAoBnpE,IAAI,cAAek5B,EAAAA,GAAAA,kBAC/DmwC,GAAsCF,GAAoBnpE,IAAI,cAAek5B,EAAAA,GAAAA,mBAE7EowC,GAAiB,CACrBP,aAAc,GACdphB,YAAa,IAGT4hB,GAA4Bd,GAAeU,GAAoBnpE,IAAI,cAAeyoE,GAElFe,IAAsBtuF,EAAAA,EAAAA,QAAO,CACjCuuF,UAAU,EACVxyC,WAAY,CACVyyC,UAAWJ,MAITK,GAA4BlB,GAAee,GAAoBxpE,IAAI,cAAeyoE,GAElFmB,IAAwB1uF,EAAAA,EAAAA,QAAO,CACnCuuF,UAAU,EACVxyC,WAAY,CACVyyC,UAAWJ,GACXO,MAAOP,MAILQ,GAA8BrB,GAAemB,GAAsB5pE,IAAI,cAAeyoE,GAEtFsB,GAAkBR,GAA0BjB,IAAqBx+D,MAAM,CAAC,aAAc2uB,EAAAA,GAAAA,WAAuBqwC,IAC7GkB,GAAeT,GAA0BjB,IAAqBx+D,MAAM,CAAC,aAAc2uB,EAAAA,GAAAA,WAAuBqwC,IAsDhH,QAAe5tF,EAAAA,EAAAA,QAAO,CACpBs+B,KAAMgwD,GACNlgE,MAAOkgE,GACPS,MAAOT,GACPU,MAAOV,GAEPjE,UAAWqE,GAEXpgE,aAAcggE,GACd9vD,gBAAiB8vD,GAEjBnE,IAAKsE,GAA0BrB,IAC/BhD,YAAaqE,GAA0BrB,IACvC5C,OAAQiE,GAA0BrB,IAClC6B,YAAaR,GAA0BrB,IACvC8B,mBAAoBT,GAA0BrB,IAC9C+B,iBAAkBV,GAA0BrB,IAC5CgC,aAAcX,GAA0BrB,IACxCiC,UAAWZ,GAA0BtB,IACrCmC,aAAcb,GAA0BtB,IACxCoC,eAAgBd,GAA0BrB,IAC1CoC,cAAef,GAA0BpB,IAEzCoC,kBAAmBb,GAA4BvB,IAC/Cx6B,oBAAqBw7B,GAA0BhB,IAE/C9C,SAAUqE,GAA4B1B,IAEtC5C,SAAU,CACR1N,YAAY,EACZ7gC,WAAY,CACV,CAACwB,EAAAA,GAAAA,gBAA4B,CAC3BswC,aAAcH,GACdjhB,YAAa6gB,IAEf,CAAC/vC,EAAAA,GAAAA,MAAkB,CACjBswC,aAAcH,GACdjhB,YAAa6gB,IAEf,CAAC/vC,EAAAA,GAAAA,MAAkB,CACjBswC,aAAcH,GACdjhB,YAAa6gB,IAEf,CAAC/vC,EAAAA,GAAAA,SAAqB,CACpBswC,aAAcH,GACdjhB,YAAa6gB,MAKnBoC,sBAAuB,CACrBC,yBAAyB,EACzB5zC,WAAY,CACV,CAACwB,EAAAA,GAAAA,gBAA4B,CAC3BswC,aAAc,CACZ,CACEnoF,KAAM,kBAGV+mE,YAAa6gB,IAEf,CAAC/vC,EAAAA,GAAAA,MAAkB,CACjBswC,aAAc,CACZ,CACEnoF,KAAM,kBAGV+mE,YAAa6gB,IAEf,CAAC/vC,EAAAA,GAAAA,MAAkB,CACjBswC,aAAc,CACZ,CACEnoF,KAAM,kBAGV+mE,YAAa6gB,MAKnBz8D,WAAY,CACV08D,YAAaL,GACbnxC,WAAY,CACV,CAACwB,EAAAA,GAAAA,KAAiBywC,GAClB,CAACzwC,EAAAA,GAAAA,QAAoBywC,GACrB,CAACzwC,EAAAA,GAAAA,KAAiBwwC,GAClB,CAACxwC,EAAAA,GAAAA,QAAoBwwC,GACrB,CAACxwC,EAAAA,GAAAA,SAAqBwwC,GACtB,CAACxwC,EAAAA,GAAAA,OAAmBwwC,GACpB,CAACxwC,EAAAA,GAAAA,SAAqBwwC,KAI1B17B,WAAY,CACVk7B,YAAaH,GACbrxC,WAAY,CACV,CAACwB,EAAAA,GAAAA,KAAiBywC,GAClB,CAACzwC,EAAAA,GAAAA,QAAoBywC,GACrB,CAACzwC,EAAAA,GAAAA,KAAiBwwC,GAClB,CAACxwC,EAAAA,GAAAA,QAAoBwwC,GACrB,CAACxwC,EAAAA,GAAAA,SAAqBwwC,GACtB,CAACxwC,EAAAA,GAAAA,OAAmBwwC,GACpB,CAACxwC,EAAAA,GAAAA,SAAqBwwC,KAI1B5sD,UAAW0tD,GAEXzrF,aAAc6qF,GACd5sD,SAAU4sD,GACVl8B,UAAWs8B,GAA0BjB,IACrCl7B,YAAam8B,GAA0BjB,IACvCl6B,WAAYm7B,GAA0BjB,IACtCL,cAAesB,GAA0BhB,IACzCx7B,SAAUo8B,GACV97B,SAAU87B,GACV38B,OAAQ28B,GACR/qF,YAAa+qF,GACb36B,OAAQw7B,GACRx8B,SAAU27B,GACV16B,eAAgB06B,GAChB17B,QAAS07B,GACT3qF,cAAe2qF,GACfz7B,WAAYy7B,GACZx7B,UAAWw7B,GAEX3rE,WAAY+rE,GAA0BpB,IACtCj7B,iBAAkBq8B,GAA0BnB,IAE5ChD,YAAamE,GAA0BjB,IACvCnD,gBAAiBoE,GAA0BjB,IAC3CpD,aAAcqE,GAA0BjB,IACxCwC,sBAAuBvB,GAA0BjB,IAEjD3qE,SAAU4rE,GAA0BpB,IACpC17B,eAAgB88B,GAA0BpB,IAC1Ct7B,iBAAkB08B,GAA0BpB,IAC5Cz7B,qBAAsB68B,GAA0BpB,IAChDv7B,gBAAiB28B,GAA0BpB,IAC3Cx7B,cAAe48B,GAA0BpB,IAEzC55B,qBAAsBg7B,GAA0BjB,IAChDj6B,eAAgBk7B,GAA0BjB,IAC1Ch6B,sBAAuBi7B,GAA0BjB,IAEjDyC,SAAU,CACRC,YAAY,EACZ/zC,WAAY,CACV,CAACwB,EAAAA,GAAAA,WAAuB6wC,GACxB,CAAC7wC,EAAAA,GAAAA,aAAyB6wC,KAI9B2B,eAAgB,CACdC,kBAAkB,EAClBj0C,WAAY,CACV,CAACwB,EAAAA,GAAAA,iBAA6B6wC,KAIlC6B,gBAAiB,CACfC,mBAAmB,EACnBn0C,WAAY,CACV,CAACwB,EAAAA,GAAAA,kBAA8B6wC,KAInC+B,uBAAwB,CACtBC,0BAA0B,EAC1B7C,YAAaJ,GACbpxC,WAAY,CACV,CAACwB,EAAAA,GAAAA,MAAkB,CACjBswC,aAAc,CACZ,CACEnoF,KAAM,mBAGV+mE,YAAa,CACX,CACE/mE,KAAM,QAER,CACEA,KAAM,oBAER,CACEA,KAAM,gBAER,CACEA,KAAM,YAER,CACEA,KAAM,aAER,CACEA,KAAM,UAER,CACEA,KAAM,qBAER,CACEA,KAAM,kBAER,CACEA,KAAM,mBAER,CACEA,KAAM,iBAOhBq3B,eAAgB,CACdszD,kBAAkB,EAClBt0C,WAAY,CACV,CAACwB,EAAAA,GAAAA,oBAAgC6wC,IAEnCb,YAAaJ,IAGfmD,UAAW,CACTC,aAAa,EACbx0C,WAAY,CACV,CAACwB,EAAAA,GAAAA,YAAwB6wC,KAK7B,oBAAqBF,GACrB,YAAaA,GACb,cAAeA,GAGfsC,uBAAwBrC,GACxBxhB,gBAAiBwhB,GACjBthB,yBAA0BshB,GAC1BvhB,WAAYuhB,KC3fP,MAAM7oF,IAAetF,EAAAA,EAAAA,QAAO,CACjCqnE,WAAY,gBACZzoB,YAAa,gBACbnf,WAAY,gBACZigB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAMywD,EAAAA,GAAAA,MAKR,QAAeh4C,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,WAAW,GAC7D,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,WAAW,GAC7D,CAACgqD,GAAAA,IAAgC,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMy7B,MAAM,CACnEx7B,SAAS,EACTvI,MAAM0R,EAAAA,EAAAA,QAAOyF,IACb,EAEF,CAACqpE,GAAAA,IAAyB,CAACl4E,EAAKo4E,KAAkB,IAAhB,QAAEvpE,GAASupE,EAC3C,MAAM1gF,EAAO,IAAKmX,GAClB,IAAIs2C,EAsBJ,OApBIztD,EAAK+4E,aAELtrB,EADEztD,EAAKmiG,oBACMniG,EAAKmiG,oBAAoB7qF,IAAItX,EAAK+4E,YAAYzhE,IAAI,cAAc48B,SAAS5iC,UAExE6wF,GAAAA,IAAwBniG,EAAK+4E,aAAe4mB,IAAqBroF,IAAI,cAAc48B,SAAS5iC,SAGvGm8C,EAAW5hC,SAASvjB,EAAMgP,IAAI,WAC7Bm2C,EAAW5hC,SAASojC,EAAAA,GAAAA,KACtBjvD,EAAKxB,KAAOywD,EAAAA,GAAAA,IAEZjvD,EAAKxB,KAAOivD,EAAWr1B,UAKzBp4B,EAAKswD,aAAoC,cAArBtwD,EAAKswD,cAC3BtwD,EAAKswD,YAAc,MAGdhoD,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAO1R,GAAM,EAGlC,CAACwgF,GAAAA,IAAsB,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,IAAE9W,EAAG,MAAEC,IAASqgF,EAAA,MArC1CyhB,EAAC95F,EAAOjI,EAAKC,IAAUgI,EAAM4D,OAAO,QAAQlC,IAASA,IAAQ0H,EAAAA,EAAAA,QAAO,CAAC,IAAI8kB,IAAIn2B,EAAKC,KAqCnC8hG,CAAU95F,EAAOjI,EAAKC,EAAM,EAE3F,CAACiX,EAAAA,IAAwB,IAAMP,IAC9BA,ICjDH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAI,GACJ64E,QAAO,GACPn+B,MAAKA,KCDP,MAKa1jC,IAAetF,EAAAA,EAAAA,QAAO,CACjCywF,oBAAmB,GACnBE,WAAW,EACX1kD,WAAW,EACXo0C,eAT2BrgF,EAAAA,EAAAA,QAAO,CAClCqnE,WAAY,mBACZv6E,KAAM,QAQN8jG,mBAAoB,KACpBC,sBAAuB7hD,EAAAA,GAAAA,OACvB5wF,iBAAiB,IAGnB,QAAemnD,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA2B,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASujC,GAAOt6C,EAAA,OACpDkI,EAAMkuB,IAAI,gBAAiBkkB,EAAMxuC,OAAO,QAAQlM,GAAQA,GAAQsI,EAAM0R,MAAM,CAAC,gBAAiB,WAAU,EAE1G,CAACwmE,GAAAA,IAA8B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,IAAE9W,EAAG,MAAEC,IAASogF,EAAA,OAChEp4E,EAAMsnC,SAAS,CAAC,gBAAiB,SAAS5lC,IAASA,IAAQyC,EAAAA,EAAAA,KAAI,CAAC,IAAI+pB,IAAIn2B,EAAKC,IAAO,EAGtF,CAACkgF,GAAAA,IAAmC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAASw5E,GAAUhQ,EAAA,OAAKr4E,EAAMkuB,IAAI,wBAAyBm6D,EAAS,EAClH,CAACnQ,GAAAA,IAA+B,CAACl4E,EAAKs4E,KAAA,IAAIzpE,QAASnX,GAAM4gF,EAAA,OAAKt4E,EAAMg4B,MAAM,CAAC,gBAAiB,SAAS5uB,EAAAA,EAAAA,QAAO1R,GAAM,EAClH,CAACwgF,GAAAA,IAAkC,CAACl4E,EAAKu4E,KAAA,IAAE,QAAE1pE,GAAS0pE,EAAA,OAAKv4E,EAAMg4B,MAAM,CAAC,gBAAiB,WAAYnpB,EAAQ,EAE7G,CAACqpE,GAAAA,IAA0B,CAACl4E,EAAKw4E,KAAkB,IAAhB,QAAE3pE,GAAS2pE,EACxCiR,EAAgBzpF,EAAMgP,IAAI,iBAC1BgrF,EAAqB,KAEzB,GAAInrF,EAAS,CACX,MAAM,MAAEujC,EAAK,MAAEhb,GAAUvoB,EACzB46E,EAAgBr3C,EAChB4nD,EAAqB5iE,CACvB,CAEA,OAAOp3B,EAAMy7B,MAAM,CACjBj0E,iBAAiB,EACjBiiI,gBACAuQ,qBACAC,sBAAuB7hD,EAAAA,GAAAA,QACvB,EAEJ,CAAC8/B,GAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GAEjE,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,aAAa,GACpE,CAACgqD,GAAAA,IAAqCl4E,GAASA,EAAMkuB,IAAI,aAAa,GACtE,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,aAAa,GAEpE,CAACgqD,GAAAA,IAAwBl4E,GAASA,EAAMkuB,IAAI,aAAcluB,EAAMgP,IAAI,cACpE,CAACkpE,GAAAA,IAAwBl4E,GAASA,EAAMkuB,IAAI,aAAa,GAEzD,CAACgoE,EAAAA,IAA2B,CAACl2F,EAAKy4E,KAAA,IAAE,QAAE5pE,GAAS4pE,EAAA,OAC7Cz4E,EAAM4D,OAAO,uBAAuBqhD,GHyLXi1C,EAACj1C,EAASuV,KACrC,IAAKA,IAAeA,EAAW3gE,OAC7B,OAAOorD,EAGT,MAAM2wB,GAAcxsE,EAAAA,EAAAA,QAClBoxD,EAAW9/C,QAAO,CAACC,EAAKuqE,IAAQvqE,EAAIuT,KAAIvY,EAAAA,EAAAA,GAAUuvE,EAAIntF,KAAM0/F,GAA0BpB,OAAuBjtF,EAAAA,EAAAA,QAAO,CAAC,KAGjH6tF,GAAe7tF,EAAAA,EAAAA,QAAOoxD,EAAW9lD,KAAIgC,IAAK,CAC9C5H,MAAM6G,EAAAA,EAAAA,GAAUe,EAAE3e,KAClB4+F,YAAaN,QAGf,OAAOpxC,EAAQxpB,MAAMm6C,GAAalhE,KAAI1c,GAChCA,EAAMgX,IAAI,cACLhX,EAAM4L,OAAO,cAAcuhD,GAAcA,EAAWzwC,KAAIkqB,GACzDA,EAAE5vB,IAAI,kBAAoB4vB,EAAE5vB,IAAI,gBAAgBmI,UAC3CynB,EAAEh7B,OAAO,gBAAgBu2B,GAAKA,EAAE5rB,OAAO0oF,KAGzCr4D,MAIJ5mC,GACP,EGnN+CkiG,CHkKtBC,EAACl1C,EAASm1C,KACrC,IAAKA,IAAeA,EAAWvgG,OAC7B,OAAOorD,EAGT,MAAMo1C,GAAgBjxF,EAAAA,EAAAA,QAAOgxF,EAAW1/E,QAAO,CAACC,EAAKuqE,IAAQvqE,EAAIuT,KAAIvY,EAAAA,EAAAA,GAAUuvE,EAAIntF,KAAM2/F,MAAsBtuF,EAAAA,EAAAA,QAAO,CAAC,KACjHysE,GAAczsE,EAAAA,EAAAA,QAAOgxF,EAAW1lF,KAAIgC,IAAK,CAAG5H,MAAM6G,EAAAA,EAAAA,GAAUe,EAAE3e,UAEpE,OAAOktD,EAAQxpB,MAAM4+D,GAAe3lF,KAAI1c,GAClCA,EAAMgX,IAAI,cACLhX,EAAM4L,OAAO,cAAcuhD,GAAcA,EAAWzwC,KAAIkqB,GACzDA,EAAE5vB,IAAI,iBAAmB4vB,EAAE5vB,IAAI,eAAemI,UACzCynB,EAAEh7B,OAAO,eAAeu2B,GAAKA,EAAE5rB,OAAOsnE,KAGxCj3C,MAIJ5mC,GACP,EGtL6DmiG,CAAcl1C,EAASp2C,EAAQurF,YAAavrF,EAAQ2rD,aAAY,EAG/H,CAACvrD,EAAAA,IAAwB,IAAMP,IAC9BA,I,ytFC5DI,MAAMA,IAAetF,EAAAA,EAAAA,QAAOkxF,IAE7BC,GAAsBA,CAACv6F,EAAOoL,EAAOpT,IAAUgI,EAAM4D,OACzD,UACAoJ,GAAUA,EAAO0N,QAAO,CAACC,EAAK7R,EAAQ/Q,IAAQ4iB,EAAIuT,IAAIn2B,EAAK+Q,EAAO4L,KAAIgC,GAAKA,EAAEwX,IAAI9iB,EAAOpT,QAAUoR,EAAAA,EAAAA,QAAO,CAAC,MAG5G,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAoB,CAACl4E,EAAKlI,KAAuC,IAAnC+W,SAAS,OAAE7B,EAAM,QAAEmpC,IAAWr+C,EAC3D,GAAIkV,GAAUmpC,EAAS,CACrB,MAAMqkD,GAAYpxF,EAAAA,EAAAA,QAAO4D,GACnBu3E,GAAan7E,EAAAA,EAAAA,QAAO+sC,GAE1B,IAAKqkD,EAAUrjF,YAAcotE,EAAWptE,UAAW,CACjD,IAAImoE,EAAWt/E,EAKf,OAJAs/E,EAAWA,EAASpxD,IAAI,SAAUssE,GAClClb,EAAWA,EAASpxD,IAAI,UAAWq2D,GACnCjF,GAAW8E,EAAAA,GAAAA,IAAW9E,GAEfA,CACT,CACF,CAEA,OAAOt/E,CAAK,EAEd,CAACk4E,GAAAA,IAA4B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,OAAE7B,EAAM,QAAEmpC,IAAWiiC,EAAA,OAAKp4E,EAAMkuB,IAAI,SAAUlhB,GAAQkhB,IAAI,UAAWioB,EAAQ,EAC7H,CAAC+hC,GAAAA,IAAqB,CAACl4E,EAAKq4E,KAA0C,IAAtCxpE,SAAS,WAAEonC,EAAU,OAAEuuC,IAAUnM,EAC/D,MAAMkM,GAAan7E,EAAAA,EAAAA,QAAOo7E,GAAQ9vE,KAAI8yB,IAAKp+B,EAAAA,EAAAA,QAAO,CAChD05C,EAAGtb,EAAEx4B,IAAI,KACTy1E,EAAGj9C,EAAEx4B,IAAI,KACT01E,EAAGl9C,EAAEx4B,IAAI,KACT21E,EAAGn9C,EAAEx4B,IAAI,SAGX,OAAOhP,EAAMg4B,MAAM,CAAC,UAAWie,GAAasuC,EAAW,EAEzD,CAACrM,GAAAA,IAAmB,CAACl4E,EAAKs4E,KAAgD,IAA5CzpE,SAAS,MAAEujC,EAAK,MAAEhb,EAAK,WAAE6e,IAAcqiC,EACnE,GAAc,OAAVlhD,EAAgB,CAClB,MAAMmtD,EAAavkF,EAAM0R,MAAM,CAAC,UAAWukC,IAAavhC,KAAI8vE,GAAUA,EAAO5gF,OAAO,KAAK6gF,GAAKA,EAAI,MAElG,OAAOzkF,EAAMsnC,SAAS,CAAC,SAAU2O,IAAajpC,GAAUA,EAAOnM,KAAKuxC,KACjEpa,MAAM,CAAC,UAAWie,GAAasuC,EAAW1jF,MAAKuI,EAAAA,EAAAA,QAAO,CAAEs7E,EAAG,GAAIC,EAAG,EAAG7hC,EAAG,EAAG2hC,EAAG,KACnF,CAEA,OAAOzkF,EAAMg4B,MAAM,CAAC,SAAUie,EAAY7e,GAAQgb,EAAM,EAE1D,CAAC8lC,GAAAA,IAAsB,CAACl4E,EAAKu4E,KAAA,IAAI1pE,SAAS,WAAEonC,EAAU,MAAE7e,IAASmhD,EAAA,OAC/Dv4E,EACG+kF,SAAS,CAAC,SAAU9uC,EAAY7e,IAChC2tD,SAAS,CAAC,UAAW9uC,EAAY7e,GAAO,EAG7C,CAAC8gD,GAAAA,IAA8B,CAACl4E,EAAKw4E,KAAgC,IAA5B3pE,SAAS,KAAE4wC,EAAI,GAAEF,IAAMi5B,EAC9D,MAAM8G,GAAW8E,EAAAA,GAAAA,IAAWpkF,GAAO4+B,GAAK,GAAGA,EAAEltB,MAAM,CAAC,SAAU,QAAQktB,EAAEltB,MAAM,CAAC,SAAU,UAAS,GAElG,OAAO1R,EACJg4B,MAAM,CAAC,UAAWunB,IAAKk7C,EAAAA,GAAAA,IAAkBnb,EAAS5tE,MAAM,CAAC,SAAU+tC,IAAQF,IAC3EvnB,MAAM,CAAC,SAAUunB,GAAK+/B,EAAS5tE,MAAM,CAAC,SAAU+tC,IAAO,EAE5D,CAACy4B,GAAAA,IAAuB,CAACl4E,EAAKy4E,KAA+C,IAA3C5pE,SAAS,MAAEuoB,EAAK,WAAE6e,EAAU,KAAEv+C,IAAQ+gF,EACtE,MAAMrmC,EAAQpyC,EAAM0R,MAAM,CAAC,SAAUukC,EAAY7e,IAEjD,OAAIgb,EACKpyC,EAAMg4B,MAAM,CAAC,SAAUie,EAAY7e,GAAQgb,EAAM3W,MAAM,CAC5D/jC,MAAM0R,EAAAA,EAAAA,QAAO1R,GACbuI,SAAS,KAIND,CAAK,EAEd,CAACk4E,GAAAA,IAAmCl4E,GAASu6F,GAAoBv6F,EAAO,WAAW,GACnF,CAACk4E,GAAAA,IAAmCl4E,GAASu6F,GAAoBv6F,EAAO,WAAW,GACnF,CAACk4E,GAAAA,IAAqCl4E,GAASu6F,GAAoBv6F,EAAO,WAAW,GAErF,CAACiP,EAAAA,IAAwB,IAAMP,IAC9BA,IC9EI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC4D,OAAQ,CAAC,EACTmpC,QAAS,CAAC,IAGZ,QAAexnC,EAAAA,EAAAA,GAAc,CAC3B,CAAC+rF,GAAAA,IAA4B,CAAC16F,EAAKlI,KAAA,IAAI+W,SAAS,OAAE7B,EAAM,QAAEmpC,IAAWr+C,EAAA,OAAKkI,EAAMkuB,IAAI,SAAUlhB,GAAQkhB,IAAI,UAAWioB,EAAQ,EAC7H,CAAClnC,EAAAA,IAAwB,IAAMP,IAC9BA,ICRI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCtjB,YAAY,EACZma,SAAS,EACTkO,SAAU,KACVikC,MAAO,OAGT,QAAezjC,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAoC,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,MAAEujC,IAASt6C,EAAA,OAAKkI,EAAMy7B,MAAM,CAClF31C,YAAY,EACZqoB,SAAU,KACVikC,SACA,EACF,CAAC8lC,GAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,cAAc,GAEtE,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,WAAW,GAC9D,CAACgqD,GAAAA,IAAiC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,SAAEV,IAAYiqE,EAAA,OAAKp4E,EAAMy7B,MAAM,CAClFx7B,SAAS,EACTkO,YACA,EACF,CAAC+pE,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,WAAW,GAE9D,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICtBH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAI,GACJ8xF,SAAQ,GACRjxF,gBAAeA,KCJjB,QAAeoW,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAAiC,CAAC5O,EAAKlI,KAAA,IAAI+W,SAAS,MAAE0oB,IAASz/B,EAAA,OAAKy/B,CAAK,EAC1E,CAACtoB,EAAAA,IAAwB,IAJC,MCErB,MAAMP,IAAetF,EAAAA,EAAAA,QAAO,CACjC4f,KAAM,CAAC,EACP2xE,WAAY,CAAC,IAGTC,GAAiBA,CAAC56F,EAAOgpB,KAC7B,MAAM67D,GAAUz7E,EAAAA,EAAAA,QAAO,CAAC,GAAG6kF,eAAcC,IACvCllE,EAAKnxB,SAAQsxB,GAAK+kE,EAAIhgE,IAAI/E,EAAEna,IAAI,MAAM1R,WAAY6rB,IAAG,IAGjDwxE,EAAa3xE,EAAKtO,QACtB,CAACC,EAAKwO,IAAMxO,EAAI/W,OAAOulB,EAAEna,IAAI,MAAM1R,WAAY,GAAGi6B,GAASA,EAAQ,KAAIv3B,EAAMgP,IAAI,eAGnF,OAAOhP,EAAM4D,OAAO,QAAQulB,GAAKA,EAAEsS,MAAMopD,KACtCjhF,OAAO,cAAc+f,GAAKA,EAAE8X,MAAMk/D,IAAY,EAcnD,QAAehsF,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAAsB,CAAC5O,EAAKlI,KAAA,IAAI+W,QAASma,GAAMlxB,EAAA,OAAK8iG,GAAe56F,GAAOoJ,EAAAA,EAAAA,QAAO4f,GAAM,EACxF,CAACpa,GAAAA,IAAyB,CAAC5O,EAAKo4E,KAAA,IAAIvpE,QAASma,GAAMovD,EAAA,OAAKpvD,EAAKtO,QAAO,CAACC,EAAKwO,IAAMxO,EAAIqd,MAAM,CAAC,OAAQ7O,EAAEna,IAAI,MAAM1R,YAAa6rB,IAAInpB,EAAM,EACtI,CAAC4O,GAAAA,IAAsC,CAAC5O,EAAKq4E,KAAA,IAAIxpE,SAAS,aAAEs2B,EAAY,OAAEjT,EAAM,WAAE2oE,IAAcxiB,EAAA,OAC9Fr4E,EAAMg4B,MAAM,CAAC,OAAQ9F,EAAO50B,WAAY,iBAAiB8L,EAAAA,EAAAA,QAAO+7B,GAAcjX,IAAI,WAAY2sE,GAAY,EAE5G,CAACjsF,GAAAA,IAAiC,CAAC5O,EAAKs4E,KAAA,IAAIzpE,QAASqjB,GAAQomD,EAAA,OAAKt4E,EAAM+kF,SAAS,CAAC,OAAQ7yD,EAAO50B,WAAY,gBAAgB,EAC7H,CAACsR,GAAAA,IAAkC,CAAC5O,EAAKu4E,KAAA,IAAI1pE,QAAShW,GAAS0/E,EAAA,MAlB1Cv4E,KACrB,MAAM86F,EAAsB96F,EAAMgP,IAAI,cAAchI,QAAO43B,GAAKA,GAAK,IAAGgN,SAAS5iC,SAC3EggB,EAAOhpB,EAAMgP,IAAI,QAAQhI,QAAO,CAAC43B,EAAGm8D,KAAOD,EAAoBv3E,SAASw3E,KACxEJ,EAAa36F,EAAMgP,IAAI,cAAchI,QAAO,CAAC43B,EAAGm8D,KAAOD,EAAoBv3E,SAASw3E,KAE1F,OAAO/6F,EAAMy7B,MAAM,CACjBzS,OACA2xE,cACA,EAWAK,CACEniG,EAAQ6hB,QAAO,CAACC,EAAK1mB,IAAO0mB,EAAI2sB,SAAS,CAAC,aAAcrzC,EAAGqJ,YAAa,GAAGi6B,GAASA,EAAQ,KAAIv3B,GACjG,EAGH,CAACi7F,GAAAA,IAAoD,CAACj7F,EAAKw4E,KAA8B,IAA1B3pE,SAAS,OAAEsf,IAAUqqD,EAClF,MAAMxvD,GAAO5f,EAAAA,EAAAA,QAAO+kB,EAAOsO,SAAQlO,GAAKA,EAAEvF,QAE1C,OAAO4xE,GAAe56F,EAAOgpB,EAAK,EAGpC,CAAC/Z,EAAAA,IAAwB,IAAMP,IAC9BA,IClDI,MAAMA,IAAe7F,EAAAA,EAAAA,KAAI,IAEhC,QAAe8F,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAAgC,CAAC5O,EAAKlI,KAAA,IAAI+W,QAASqjB,GAAQp6B,EAAA,OAAKkI,EAAMuO,OAAO2jB,EAAO,EACrF,CAACjjB,EAAAA,IAAwB,IAAMP,IAC9BA,ICLI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC8xF,eAAe,EACfC,oBAAoB,EACpBC,aAAa,EACbC,YAAY,EACZC,cAAc,EACdC,qBAAqB,EACrBC,cAAe,GACflN,QAAQ,EACRmN,gBAAgB,EAChBC,eAAgB,CACdC,YAAY,EACZ1wF,KAAM,cACN2wF,UAAW,GACXC,kBAAmB,EACnBhB,WAAY,SAIViB,GAAqBA,CAAC97F,EAAOgpB,IAAShpB,EAAM4D,OAAO,iBAAiB3H,GAAOA,EAAIykF,OAAOzkF,EAAIwL,QAAQuhB,EAAKha,IAAI,UAEjH,QAAeL,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAA8B5O,GAASA,EAAMkuB,IAAI,iBAAiB,GACnE,CAACtf,GAAAA,IAAgC5O,GAASA,EAAMkuB,IAAI,iBAAiB,GACrE,CAACtf,GAAAA,IAA8B5O,GAASA,EAAMkuB,IAAI,iBAAiB,GAEnE,CAACtf,GAAAA,IAAmC5O,GAASA,EAAMkuB,IAAI,sBAAsB,GAC7E,CAACtf,GAAAA,IAAqC5O,GAASA,EAAMkuB,IAAI,sBAAsB,GAC/E,CAACtf,GAAAA,IAAmC5O,GAASA,EAAMkuB,IAAI,sBAAsB,GAE7E,CAACtf,GAAAA,IAA2B5O,GAASA,EAAMkuB,IAAI,eAAe,GAC9D,CAACtf,GAAAA,IAA2B5O,GAASA,EAAMkuB,IAAI,eAAe,GAC9D,CAACtf,GAAAA,IAA6B5O,GAASA,EAAMkuB,IAAI,eAAe,GAEhE,CAACtf,GAAAA,IAA8B,CAAC5O,EAAKlI,KAAA,IAAI+W,QAASma,GAAMlxB,EAAA,OAAKkI,EAAM4D,OAAO,iBAAiB3H,GAAOA,EAAI4E,KAAKmoB,EAAKha,IAAI,QAAO,EAC3H,CAACJ,GAAAA,IAA8B,CAAC5O,EAAKo4E,KAAA,IAAIvpE,SAAS,KAAEma,IAAQovD,EAAA,OAAK0jB,GAAmB97F,EAAOgpB,EAAK,EAChG,CAACpa,GAAAA,IAAgC,CAAC5O,EAAKq4E,KAAA,IAAIxpE,QAASma,GAAMqvD,EAAA,OAAKyjB,GAAmB97F,EAAOgpB,EAAK,EAE9F,CAACpa,GAAAA,IAA8B5O,GAASA,EAAMkuB,IAAI,gBAAgB,GAClE,CAACtf,GAAAA,IAA8B5O,GAASA,EAAMkuB,IAAI,gBAAgB,GAClE,CAACtf,GAAAA,IAAgC5O,GAASA,EAAMkuB,IAAI,gBAAgB,GAEpE,CAACtf,GAAAA,IAAiC5O,GAASA,EAAMkuB,IAAI,UAAU,GAC/D,CAACtf,GAAAA,IAAiC5O,GAASA,EAAMkuB,IAAI,UAAU,GAE/D,CAACtf,GAAAA,IAAqC5O,GAASA,EAAMkuB,IAAI,uBAAuB,GAChF,CAACtf,GAAAA,IAAsC5O,GAASA,EAAMkuB,IAAI,uBAAuB,GACjF,CAACtf,GAAAA,IAAwC5O,GAASA,EAAMkuB,IAAI,uBAAuB,GAEnF,CAACtf,GAAAA,IAAsC5O,GAASA,EAAMkuB,IAAI,kBAAkB,GAC5E,EAAC+pD,EAAAA,EAAAA,GACCrpE,GAAAA,GACAA,GAAAA,KACE5O,GAASA,EAAMkuB,IAAI,kBAAkB,GAEzC,CAACtf,GAAAA,IAA+B,CAAC5O,EAAKs4E,KAAA,IAAIzpE,SAAS,IAAE9W,EAAG,MAAEC,IAASsgF,EAAA,OACjEt4E,EAAMg4B,MAAM,CAAC,iBAAkBjgC,GAAMC,EAAM,EAE7C,CAAC4W,GAAAA,IAAoC5O,GACnCA,EAAMg4B,MAAM,CAAC,iBAAkB,eAAe,GAEhD,EAACigD,EAAAA,EAAAA,GACCrpE,GAAAA,GACAA,GAAAA,KACE5O,GAASA,EAAMg4B,MAAM,CAAC,iBAAkB,eAAe,GAE3D,CAAC/oB,EAAAA,IAAwB,IAAMP,IAC9BA,I,YCjEH,MAAMqtF,IAAsB3yF,EAAAA,EAAAA,QAAO,CACjC4yF,YAAa,IAAIva,KACjBwa,gBAAiBr5E,MAASoa,QAAQ,OAAOk/D,MAAM,IAAIr5E,SACnDwN,MAAO,GACP3E,WAAY,GACZywE,OAAQ,GACRC,YAAa,EACbC,cAAe,GACfC,qBAAqB,EACrBr+F,oBAAoB,IAGTyQ,IAAetF,EAAAA,EAAAA,QAAO,CACjCsoF,aAAcqK,GACdvvF,aAAc,GACd+vF,cAAe,GACfC,kBAAmB,OAGrB,QAAe7tF,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAAiC,IAAMF,GACxC,CAACE,GAAAA,IAA2B,CAAC5O,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,eAAgBrf,EAAQ,EACtF,CAACD,GAAAA,IAA6B,CAAC5O,EAAKo4E,KAA8C,IAA1CvpE,SAAWg2E,QAAS77D,EAAI,QAAEyzE,IAAWrkB,EAC3E,MAAMsZ,EAAe1xF,EAAMgP,IAAI,gBAE/B,IAAI0tF,GAAatzF,EAAAA,EAAAA,QAAO4f,GAQxB,OANA0zE,EAAaA,EAAWjhE,MAAM,CAC5B4gE,cAAe3K,EAAa1iF,IAAI,iBAChCotF,YAAa1K,EAAa1iF,IAAI,eAC9B2tF,MAAOD,EAAW1tF,IAAI,SAASkf,IAAI,gBAAiBuuE,EAAQ/qF,MAAM,CAAC,QAAS,qBAGvE1R,EAAMkuB,IAAI,eAAgBwuE,EAAW,EAG9C,CAAC9tF,GAAAA,IAAiC,CAAC5O,EAAKq4E,KAAA,IAAIxpE,QAASma,GAAMqvD,EAAA,OAAKr4E,EAAMkuB,IAAI,eAAgBlF,EAAK,EAC/F,CAACpa,GAAAA,IAAwC,CAAC5O,EAAKs4E,KAAA,IAAIzpE,SAAS,MAAEzD,EAAK,MAAEpT,IAASsgF,EAAA,OAAKt4E,EAAMg4B,MAAM,CAAC,eAAgB5sB,GAAQpT,EAAM,EAE9H,CAAC4W,GAAAA,IAAwC,CAAC5O,EAAKu4E,KAAA,IAAI1pE,QAASrC,GAAc+rE,EAAA,OACxEv4E,EAAMkuB,IAAI,gBAAgB9kB,EAAAA,EAAAA,QAAOoD,GAAc,EAGjD,CAACowF,GAAAA,IAA+C,CAAC58F,EAAKw4E,KAAA,IAAI3pE,QAASovB,GAAau6C,EAAA,OAC9Ex4E,EAAMkuB,IAAI,gBAAgB9kB,EAAAA,EAAAA,QAAO,CAAC60B,IAAc,EAGlD,CAACrvB,GAAAA,IAAgC,CAAC5O,EAAKy4E,KAAA,IAAI5pE,QAAS3Q,GAAMu6E,EAAA,OACxDz4E,EAAM4D,OAAO,iBAAiBi5F,GAASA,EAAMh8F,MAAKuI,EAAAA,EAAAA,QAAOlL,KAAO,EAElE,CAAC0Q,GAAAA,IAAiC,CAAC5O,EAAK04E,KAAA,IAAI7pE,QAASiuF,GAAQpkB,EAAA,OAC3D14E,EAAM4D,OAAO,iBAAiBi5F,GAASA,EAAM71F,QAAO9I,GAAQA,EAAK8Q,IAAI,QAAU8tF,KAAQ,EAGzF,CAACluF,GAAAA,IAAqC,CAAC5O,EAAK24E,KAAA,IAAI9pE,QAAS3Q,GAAMy6E,EAAA,OAC7D34E,EAAMkuB,IAAI,qBAAqB9kB,EAAAA,EAAAA,QAAOlL,GAAM,EAE9C,CAAC0Q,GAAAA,IAAsC5O,GACrCA,EAAMkuB,IAAI,oBAAqB,MAGjC,CAACtf,GAAAA,IAAqC,CAAC5O,EAAK44E,KAAA,IAAE,QAAE/pE,GAAS+pE,EAAA,OACvD54E,EAAMg4B,MAAM,CAAC,eAAgB,uBAAwBnpB,EAAQ,EAE/D,CAACD,GAAAA,IAAoC,CAAC5O,EAAK64E,KAAA,IAAE,QAAEhqE,GAASgqE,EAAA,OACtD74E,EAAMg4B,MAAM,CAAC,eAAgB,sBAAuBnpB,EAAQ,EAE9D,CAACD,GAAAA,IAAiC,CAAC5O,EAAK84E,KAAA,IAAIjqE,QAASkwC,GAAM+5B,EAAA,OACzD94E,EAAMg4B,MAAM,CAAC,eAAgB,SAAUh4B,EAAM0R,MAAM,CAAC,eAAgB,UAAY,IAAMqtC,EAAK,EAG7F,CAACnwC,GAAAA,IAAwB,IAAMF,GAC/B,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,IC5EH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,K,WCCC,MAAMgX,IAAetF,EAAAA,EAAAA,QAAO,CACjC2zF,mBAAmB,EACnBC,gBAAiB,KACjBC,gBAAiB,KACjBC,yBAAyB,EACzBC,eAAgB,KAChBpD,WAAW,EACX/gB,iBAAiB,EACjBokB,eAAgB,MAChBC,aAAa,EACbC,4BAA4B,EAC5B7rH,kBAAkB,EAClBC,oBAAoB,EACpB6rH,wBAAwB,EACxBC,cAAe,KACfC,wBAAwB,EACxBC,cAAe,KACfC,yBAAyB,EACzBC,eAAgB,KAChBC,eAAe,EACfC,UAAU,IAGZ,QAAenvF,EAAAA,EAAAA,GAAc,CAC3B,CAACovF,GAAAA,IAA4B/9F,GAASA,EAAMy7B,MAAM,CAChDs+D,WAAW,EACXuD,4BAA4B,EAC5BL,gBAAiB,OAEnB,CAACc,GAAAA,IAA4C/9F,GAASA,EAAMy7B,MAAM,CAChEs+D,WAAW,EACXuD,4BAA4B,EAC5BL,gBAAiB,OAEnB,CAACc,GAAAA,IAA6C/9F,GAASA,EAAMy7B,MAAM,CACjEs+D,WAAW,EACXuD,4BAA4B,EAC5BL,gBAAiB,OAEnB,CAACc,GAAAA,IAA8B,CAAC/9F,EAAKlI,KAAA,IAAI+W,SAAS,IAAEowC,EAAG,SAAEhnD,EAAQ,SAAE+lG,EAAQ,KAAEj6E,EAAI,YAAE67B,IAAe9nD,EAAA,OAAKkI,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAO,CACxH2wF,WAAW,EACXuD,4BAA4B,EAC5BL,gBAAiB,CACfr9C,YAAaA,GAAe,GAC5BX,MACAhnD,WACA8rB,OACAi6E,cAED,EACH,CAACD,GAAAA,IAA4B/9F,GAASA,EAAMy7B,MAAM,CAChDs+D,WAAW,EACXuD,4BAA4B,EAC5BL,gBAAiB,OAEnB,CAACc,GAAAA,IAAyB/9F,GAASA,EAAMy7B,MAAM,CAC7C4hE,aAAa,IAEf,EAACplB,EAAAA,EAAAA,GAAe8lB,GAAAA,GAA+BA,GAAAA,KAA+B/9F,GAASA,EAAMy7B,MAAM,CACjG4hE,aAAa,IAEf,CAACU,GAAAA,IAAiC/9F,GAASA,EAAMkuB,IAAI,qBAAqB,GAC1E,CAAC6vE,GAAAA,IAAmC,CAAC/9F,EAAKo4E,KAAA,IAAIvpE,SAAS,IAAEowC,IAAOm5B,EAAA,OAAKp4E,EAAMy7B,MAAM,CAC/EuhE,gBAAiB/9C,EACjB89C,mBAAmB,GACnB,EACF,CAACgB,GAAAA,IAAiC/9F,GAASA,EAAMkuB,IAAI,qBAAqB,GAE1E,CAAC6vE,GAAAA,IAAuC/9F,GAASA,EAAMkuB,IAAI,2BAA2B,GACtF,CAAC6vE,GAAAA,IAAuC/9F,GAASA,EAAMkuB,IAAI,2BAA2B,GACtF,CAAC6vE,GAAAA,IAAyC,CAAC/9F,EAAKq4E,KAAA,IAAIxpE,SAAS,IAAEowC,IAAOo5B,EAAA,OAAKr4E,EAAMy7B,MAAM,CACrF0hE,eAAgBl+C,EAChBi+C,yBAAyB,GACzB,EAEF,CAACa,GAAAA,IAAsC/9F,GAASA,EAAMkuB,IAAI,0BAA0B,GACpF,CAAC6vE,GAAAA,IAAsC/9F,GAASA,EAAMkuB,IAAI,0BAA0B,GACpF,CAAC6vE,GAAAA,IAAwC,CAAC/9F,EAAKs4E,KAAA,IAAIzpE,SAAS,IAAEowC,IAAOq5B,EAAA,OAAKt4E,EAAMy7B,MAAM,CACpF+hE,cAAev+C,EACfs+C,wBAAwB,GACxB,EAEF,CAACQ,GAAAA,IAAsC/9F,GAASA,EAAMkuB,IAAI,0BAA0B,GACpF,CAAC6vE,GAAAA,IAAsC/9F,GAASA,EAAMkuB,IAAI,0BAA0B,GACpF,CAAC6vE,GAAAA,IAAwC,CAAC/9F,EAAKu4E,KAAA,IAAI1pE,SAAS,IAAEowC,IAAOs5B,EAAA,OAAKv4E,EAAMy7B,MAAM,CACpFiiE,cAAez+C,EACfw+C,wBAAwB,GACxB,EAEF,CAACM,GAAAA,IAAuC/9F,GAASA,EAAMkuB,IAAI,2BAA2B,GACtF,CAAC6vE,GAAAA,IAAuC/9F,GAASA,EAAMkuB,IAAI,2BAA2B,GACtF,CAAC6vE,GAAAA,IAAyC,CAAC/9F,EAAKw4E,KAAA,IAAI3pE,SAAS,IAAEowC,IAAOu5B,EAAA,OAAKx4E,EAAMy7B,MAAM,CACrFmiE,eAAgB3+C,EAChB0+C,yBAAyB,GACzB,EAEF,CAACI,GAAAA,IAA4C,CAAC/9F,EAAO6+E,IAAW7+E,EAAMkuB,IAAI,iBAAkB2wD,EAAOhwE,SACnG,CAACkvF,GAAAA,IAA2C/9F,GAASA,EAAMkuB,IAAI,8BAA8B,GAC7F,CAAC6vE,GAAAA,IAAiC,CAAC/9F,EAAKy4E,KAAA,IAAE,QAAE5pE,GAAS4pE,EAAA,OAAKz4E,EAAMy7B,MAAM,CACpEuhE,gBAAiB,KACjBG,eAAgB,KAChBK,cAAe,KACfE,cAAe,KACfE,eAAgB,KAChBnsH,kBAAkB,EAClB2rH,eAAgBvuF,GAAW7O,EAAMgP,IAAI,mBACrC,EACF,CAAC+uF,GAAAA,IAAmC/9F,GAASA,EAAMy7B,MAAM,CACvD/pD,oBAAoB,IAEtB,CAACqsH,GAAAA,IAAmC/9F,GAASA,EAAMy7B,MAAM,CACvD/pD,oBAAoB,IAEtB,CAACqsH,GAAAA,IAAiC/9F,GAASA,EAAMy7B,MAAM,CACrDuhE,gBAAiB,KACjBG,eAAgB,KAChBK,cAAe,KACfE,cAAe,KACfE,eAAgB,KAChBnsH,kBAAkB,IAEpB,CAACssH,GAAAA,IAAiD,CAAC/9F,EAAO6+E,IACxD7+E,EAAMkuB,IAAI,kBAAmB8qD,EAAgB6F,EAAOhwE,UAGtD,CAACkvF,GAAAA,IAAiC/9F,GAASA,EAAMkuB,IAAI,YAAY,GACjE,CAAC6vE,GAAAA,IAAmC/9F,GAASA,EAAMkuB,IAAI,iBAAiB,GACxE,CAAC6vE,GAAAA,IAAiC/9F,GAASA,EAAMkuB,IAAI,iBAAiB,GACtE,CAAC6vE,GAAAA,IAAmC,CAAC/9F,EAAK04E,KAAA,IAAI7pE,SAAS,OAAEwvE,IAAU3F,EAAA,OAAK14E,EAAMy7B,MAAM,CAClFoiE,eAAe,EACfC,SAAqB,OAAXzf,GACV,EAEF,CAAC0f,GAAAA,IAAmC,IAAMrvF,GAC1C,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICxII,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC60F,iBAAiB,EACjBC,6BAA6B,EAC7BC,qBAAiBrkG,EACjBskG,sBAAkBtkG,EAClBikD,QAAS,CAAC,qBACVsgD,QAAS,KACTliD,eAAgB,KAChBmiD,kBAAmB,KACnBt7E,QAAS,KACT03D,eAAgB,GAChBC,cAAe,GACf4jB,iBAAiB,EACjBC,WAAW,EACXC,aAAa,EACbC,qBAAqB,EACrB37E,UAAW,KACX47E,kBAAkB,IAGpB,QAAehwF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA+B,CAACl4E,EAAO6+E,IACjCA,EAAOhwE,QAAQG,IAAI,mBAIjBhP,EAAMy7B,MAAMojD,EAAOhwE,SAHjB7O,EAAMy7B,MAAMojD,EAAOhwE,QAAQqf,IAAI,mBAAmB,IAK7D,CAACgqD,GAAAA,IAAmC,CAACl4E,EAAO6+E,IAAW7+E,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAOy1E,EAAOhwE,UACjF,CAACqpE,GAAAA,IAA6B,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,KAAEC,EAAI,MAAE9W,IAASF,EAAA,OAAKkI,EAAMkuB,IAAIpf,EAAM9W,EAAM,EAC7F,CAACkgF,GAAAA,IAA4B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAAS7W,GAAOogF,EAAA,OAAKp4E,EAAMkuB,IAAI,iBAAkBl2B,EAAM,EAC9F,CAACkgF,GAAAA,IAA4C,CAACl4E,EAAO6+E,IACnD7+E,EAAMg4B,MAAM,CAAC,iBAAkB,yBAA0B6mD,EAAOhwE,SAElE,CAACqpE,GAAAA,IAAqC,CAACl4E,EAAO6+E,IAAW7+E,EAAMkuB,IAAI,iBAAkB2wD,EAAOhwE,SAE5F,CAACqpE,GAAAA,IAAwC,CAACl4E,EAAO6+E,IAAW7+E,EAAMkuB,IAAI,qBAAqB9kB,EAAAA,EAAAA,QAAOy1E,EAAOhwE,UACzG,CAACqpE,GAAAA,IAA2C,CAACl4E,EAAO6+E,IAClD7+E,EAAMg4B,MAAM,CAAC,oBAAqB,wBAAyB6mD,EAAOhwE,SAEpE,CAACqpE,GAAAA,IAAqD,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAASk8E,GAAS1S,EAAA,OAChFr4E,EAAMsnC,SACJ,CAAC,oBAAqB,uBAAwB,0BAA2B,oCACzEs3D,GAAYA,EAASlqF,KAAIqnB,GACnBA,EAAG/sB,IAAI,QAAU+7E,EAAQ/7E,IAAI,MACxB+7E,EAGFhvD,KAEV,EAGH,CAACm8C,GAAAA,IAAmD,CAACl4E,EAAKs4E,KAAA,IAAIzpE,QAASk8E,GAASzS,EAAA,OAC9Et4E,EAAMsnC,SACJ,CAAC,oBAAqB,uBAAwB,wBAAyB,kCACvEs3D,GAAYA,EAASlqF,KAAIqnB,GACnBA,EAAG/sB,IAAI,QAAU+7E,EAAQ/7E,IAAI,MACxB+7E,EAGFhvD,KAEV,EAGH,CAACm8C,GAAAA,IAA0B,CAACl4E,EAAO6+E,IAAW7+E,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAO,CAC/DuxE,cAAekE,EAAOhwE,QAAQ8rE,eAAiB,GAC/CD,eAAgBmE,EAAOhwE,QAAQ6rE,gBAAkB,GACjD2jB,SAAUxf,EAAOhwE,QAAQ+rE,UAAUnkE,MAAKipB,GAAKA,EAAEr+B,WAAY,CAAEpN,GAAI,OAAQA,GACzE8pD,QAAS/9C,EAAMgP,IAAI,YAAc,MAGnC,CAACkpE,GAAAA,IAA4Bl4E,GAASA,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAO,CACvD20C,QAASrvC,GAAaM,IAAI,cAG5B,CAACkpE,GAAAA,IAA6B,CAACl4E,EAAKu4E,KAAA,IAAI1pE,SAAS,UAAEkU,EAAS,QAAEC,IAAWu1D,EAAA,OAAKv4E,EAAMy7B,MAAM,CACxF1Y,YACAC,WACA,EAEF,CAACk1D,GAAAA,IAAmC,CAACl4E,EAAKw4E,KAAA,IAAI3pE,SAAS,IAAEowC,EAAG,SAAEhnD,IAAYugF,EAAA,OACxEx4E,EAAM4+E,QAAQ,CAAC,iBAAkB,yBAA0B,CAAEigB,WAAY5/C,EAAK6/C,mBAAoB7mG,GAAW,EAE/G,CAACigF,GAAAA,IAAqCl4E,GACpCA,EAAM4+E,QAAQ,CAAC,iBAAkB,yBAA0B,CAAEigB,WAAY,KAAMC,mBAAoB,OAGrG,CAAC5mB,GAAAA,IAA0C,CAACl4E,EAAKy4E,KAAA,IAAI5pE,SAAS,IAAEowC,EAAG,SAAEhnD,IAAYwgF,EAAA,OAC/Ez4E,EAAM4+E,QAAQ,CAAC,iBAAkB,yBAA0B,CAAEmgB,kBAAmB9/C,EAAK+/C,0BAA2B/mG,GAAW,EAE7H,CAACigF,GAAAA,IAA4Cl4E,GAC3CA,EAAM4+E,QAAQ,CAAC,iBAAkB,yBAA0B,CAAEmgB,kBAAmB,KAAMC,0BAA2B,OAGnH,CAAC9I,EAAAA,IAA2B,CAACl2F,EAAK04E,KAAA,IAAI7pE,SACpCowF,qBAAsBC,GACtBC,oBAAqBb,KACpB5lB,EAAA,OACD14E,EAAMkuB,IAAI,kBAAkB9kB,EAAAA,EAAAA,QAAO81F,IAChChxE,IAAI,qBAAqB9kB,EAAAA,EAAAA,QAAOk1F,GAAmB,EAGxD,CAACpmB,GAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAEnE,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,IC5GI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC+qF,QAAS,EACTiL,kBAAmB,EACnBC,YAAa,IAGf,QAAe1wF,EAAAA,EAAAA,GAAc,CAC3B,CAACovF,GAAAA,IAA2C,CAAC/9F,EAAKlI,KAAyC,IAArC+W,SAAS,KAAEywF,EAAI,YAAED,IAAevnG,EACpF,MAAMq8F,EAAUn0F,EAAMgP,IAAI,WAAaswF,EAEvC,OAAInL,GAAW,IACNn0F,EAAMy7B,MAAM,CACjB04D,QAAS,MACTkL,gBAIGr/F,EAAMy7B,MAAM,CACjB04D,UACAkL,eACA,EAEJ,CAACtB,GAAAA,IAAqC/9F,GAASA,EAAMy7B,MAAM,CACzD04D,QAAS,IACTiL,kBAAmB,EACnBC,YAAa,IAEf,CAACtB,GAAAA,IAAmC,IAAMrvF,GAC1C,CAACqvF,GAAAA,IAAoC,CAAC/9F,EAAKo4E,KAAA,IAAIvpE,QAASuwF,GAAmBhnB,EAAA,OAAKp4E,EAAMkuB,IAAI,oBAAqBkxE,EAAkB,EACjI,CAACnwF,EAAAA,IAAwB,IAAMP,IAC9BA,IC7BI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACnC,GAEA,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAwB,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAO4pF,KAAkBnkF,IAAU,EAEhG,CAACI,EAAAA,IAAwB,IAAMP,IAC9BA,ICRI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,IAEnC,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACovF,GAAAA,IAAwC,CAACjL,EAAMh7F,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKsR,EAAAA,EAAAA,QAAOyF,EAAQ,EACjF,CAACkvF,GAAAA,IAAsC,CAAC/9F,EAAKo4E,KAAA,IAAIvpE,QAAS5a,GAAImkF,EAAA,OAC5Dp4E,EACGsnC,SAAS,CAACtnC,EAAMuiF,WAAUxgD,GAAKA,EAAE/yB,IAAI,QAAU/a,IAAK,mBAAmB,IAAM,cAC7EqzC,SAAS,CAACtnC,EAAMuiF,WAAUxgD,GAAKA,EAAE/yB,IAAI,QAAU/a,IAAK,eAAgB,UAAU,IAAM,aAAY,EAGrG,CAACgb,EAAAA,IAAwB,IAAMP,IAC9BA,ICXI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCnJ,SAAS,IAGX,QAAe0O,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,WAAW,GAC/D,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACjE,CAACgqD,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,WAAW,GAE/D,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICXH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJmrF,GAAEA,KCCJ,IAAef,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACF37E,SAAQ,GACRq4F,SAAQ,GACRz/C,WAAU,GACV0/C,YAAWA,K,YCCb,MAAMC,IAAuBr2F,EAAAA,EAAAA,QAAOmzB,EAAAA,IAE9BmjE,GAAiBD,GACpB9gE,WACAlC,SAAQmC,GAAKA,EAAEgN,WACflxB,QAAO,CAACC,EAAK5iB,IAAQ4iB,EAAIuT,IAAIn2B,GAAKioB,EAAAA,EAAAA,MAAK,OAAM5W,EAAAA,EAAAA,QAAO,CAAC,IAElDw0B,GAAkB6hE,GACrB/tF,MAAM,CAAC,OAAQ,aACfk6B,SACAlxB,QAAO,CAACC,EAAK5iB,IAAQ4iB,EAAIuT,IAAIn2B,GAAKioB,EAAAA,EAAAA,MAAK,OAAM5W,EAAAA,EAAAA,QAAO,CAAC,IAElDoyB,GAAoBikE,GACvB/tF,MAAM,CAAC,OAAQ,eACfk6B,SACAlxB,QAAO,CAACC,EAAK5iB,IAAQ4iB,EAAIuT,IAAIn2B,GAAKioB,EAAAA,EAAAA,MAAK,OAAM5W,EAAAA,EAAAA,QAAO,CAAC,IAElDu2F,IAAwBv2F,EAAAA,EAAAA,QAAO,CACnCw2F,QAAS,CACPniE,IAAK,KACLC,IAAK,MAEPmiE,YAAa,CACXpiE,IAAK,KACLC,IAAK,QAIHoiE,GAAoBJ,GAAejkE,OAAMryB,EAAAA,EAAAA,QAAO,CACpDkD,YAAa,GAEb25C,YAAa,GACbC,cAAe,GACfC,mBAAoB,GAEpBh4C,SAAUyvB,GAAgBnC,MAAM,CAC9BskE,cAAc,EACdC,qBAAqB,IAGvBjiE,WAAYvC,GAEZ8B,eAAgBqiE,GAEhBnlE,SAAU,CACRylE,gBAAgB,EAChBC,gBAAgB,EAChBC,gBAAgB,EAChBC,qBAAqB,EACrBC,iBAAiB,EACjBC,iBAAiB,EACjBC,kBAAkB,EAClBC,qBAAqB,OAIjBxY,qBAAsBC,KAAgCC,EAAAA,GAAAA,IAAmB,KAAM,IAAIzG,KAAQ,IAAIA,MAE1F/yE,GAAeoxF,GAAkBrkE,MAAM,CAClDv/B,SAAU,IAAIulF,KACdtlF,OAAQ,IAAIslF,KACZuD,UAAW,KACX1oD,SAAU,KACV2oD,aAAc,KACd+C,qBAAsBC,GACtBwY,iBAAkBxY,KAGdyY,GAAeA,CAACz3C,EAAM79C,IAAU69C,EAAKxtB,MAAM,CAC/CxnC,GAAIg1D,EAAKj6C,IAAI,MACb05B,MAAOugB,EAAKj6C,IAAI,UAAYi6C,EAAKj6C,IAAI,QACrC2xF,SAAU13C,EAAKj6C,IAAI,cAAe,EAClC5D,UAeIw1F,GAAmBA,CAAC1+E,EAAOliB,EAAOoL,EAAOy1F,KAC7C,IAAK3+E,EACH,OAAO9Y,EAAAA,EAAAA,QAAO,IAGhB,MAAM03F,EAAiB9gG,EAAMgP,IAAI5D,GAAOhC,EAAAA,EAAAA,QAAO,KAG/C,OAAOA,EAAAA,EAAAA,QAAO8Y,EAAMxN,KAAIu0C,GACR63C,EAAerqF,MAAKolB,GAAKA,EAAE7sB,IAAI,QAAUi6C,EAAKh1D,MAdxC8sG,EAAC93C,EAAM79C,KAAWhC,EAAAA,EAAAA,QAAO6/C,GAAMxtB,MAAM,CAC3DxnC,GAAIg1D,EAAKh1D,GACTy0C,MAAOugB,EAAKvgB,OAASugB,EAAKn6C,KAC1B1D,UAakB21F,CAAgB93C,EAAM43C,GAAqBz1F,KAC1D,EAGC41F,GAAe,CAAC,WAAY,UAAW,WAAY,WACnDC,GAAiB,CAAC,WAAY,iBAAkB,aAAc,cAE9DC,GAAgBjnE,IACpB,MAAMr5B,EAAS,GAYf,OAVAogG,GAAanpG,SAAQ87F,IACf15D,EAAW05D,IACb/yF,EAAOC,KAAK,CACV5M,GAAI0/F,EACJ7kF,KAAM6kF,EACNvoF,MAAOzC,EAAAA,GAAAA,YAEX,KAGKS,EAAAA,EAAAA,QAAOxI,EAAO,EAGjBntB,GAAeA,CAACusB,EAAKlI,KAA8B,IAA5B,MAAEsrB,EAAK,KAAEltB,EAAI,OAAE/8C,GAAQ2+C,EAClD,MAAMqpG,EA/CoBC,EAACppG,EAAO9B,EAAMwyC,EAAOvvF,KAAYiwD,EAAAA,EAAAA,QAAO,CAClEs/B,QACAvvF,SACAiyD,MAAOzC,EAAAA,GAAa,GAAGzS,EAAK0yC,yBAC5B5wC,UA2CcopG,CAAoBh+E,EAAOltB,EAAMktB,EAAOjqE,GAEtD,OAAK6mD,EAAMgP,IAAI,GAAG9Y,YAAeugB,MAAK9B,GAAKA,EAAE3F,IAAI,WAAamyF,EAAMnyF,IAAI,WAIjEhP,EAHEA,EAAMkuB,IAAI,GAAGh4B,WAAe8J,EAAMgP,IAAI,GAAG9Y,YAAe2K,KAAKsgG,GAG1D,EAGRE,GAAkB,SAACj2F,GAAwB,IAAjBgsB,EAAKx9B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAClC0nG,EAAa,CAACl2F,EAAOgsB,GAUzB,OARIhsB,EAAMnE,WAAW,gBACnBq6F,EAAa,CAAC,cAAc3rF,EAAAA,EAAAA,GAAUvK,EAAMgb,QAAQ,aAAc,KAAMgR,KAGtEsuD,EAAAA,GAAAA,IAAct6E,KAChBk2F,EAAa,CAAC,aAAclqE,IAGvBkqE,EAAWt6F,QAAO60B,GAAW,OAANA,GAChC,EAEA,QAAeltB,EAAAA,EAAAA,GAAc,CAC3B,CAACswE,EAAAA,IAAsB,CAACj/E,EAAKo4E,KAAA,IAAIvpE,QAAS6V,GAAM0zD,EAAA,OAAKp4E,EAAMg4B,MAAM,CAAC,WAAY,kBAAmBtT,EAAK68E,qBAAqB,EAC3H,CAACtiB,EAAAA,IAAuB,CAACj/E,EAAKq4E,KAAoC,IAAhCxpE,SAAS,MAAEzD,EAAK,MAAEpT,IAASqgF,EAC3D,MAAc,yBAAVjtE,EACKpL,EAAMg4B,MAAM,CAAC,WAAY,kBAAmBhgC,GAG9CgI,CAAK,EAEd,CAACwhG,GAAAA,IAA6B,CAACxhG,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAK7kG,GAAausB,EAAO6O,EAAQ,EAClF,CAAC2yF,GAAAA,IAA+B,CAACxhG,EAAKu4E,KAA2B,IAAvB1pE,QAASstB,GAASo8C,EACtD+G,EAAWt/E,EAMf,OAJAm8B,EAAQtkC,SAAQurB,IACdk8D,EAAW7rG,GAAa6rG,EAAUl8D,EAAM,IAGnCk8D,CAAQ,EAGjB,CAACkiB,GAAAA,IAAmC,CAACxhG,EAAKw4E,KAAkB,IAAhB,QAAE3pE,GAAS2pE,EACrD,MAAM,WACJv+C,EAAU,SACVO,EAAQ,eACR8C,EAAc,WACdS,GACElvB,EAEE4yF,EAAa/gG,OAAOC,KAAKkO,GAC5B7H,QAAOjP,IAAwC,IAAjCkpG,GAAex5F,QAAQ1P,KACrC2iB,QAAO,CAACC,EAAK5iB,KAAQ,IAAM4iB,EAAK,CAAC5iB,GAAM6oG,GAAiB/xF,EAAQ9W,GAAMiI,EAAOjI,MAAS,CAAC,GAE1F,OAAOiI,EACJy7B,MAAMgmE,GACNhmE,MAAM,CACLxB,WAAYinE,GAAcjnE,GAC1BO,UAAUpxB,EAAAA,EAAAA,QAAOoxB,GACjB8C,eAAgBA,GAAkBqiE,GAElC5hE,WAAY/9B,EAAMgP,IAAI,cAAcysB,MAAM,CACxC0gC,aAAcykC,GAAiB7iE,EAAWo+B,aAAcn8D,EAAMgP,IAAI,cAAe,eAAgB,6BAEnG,EAEN,CAACwyF,GAAAA,IAA2B,CAACxhG,EAAKy4E,KAA2B,IAAvB5pE,QAAS6K,GAAS++D,EAClD6G,EAAWt/E,EAef,OAdA0Z,EAAQ7hB,SAAQ6gF,IAAuB,IAAtB,OAAE1xE,EAAM,MAAEoE,GAAOstE,EAChC,IAAK1xE,EACH,OAGF,MAAMm6F,EAAQT,GAAa15F,EAAQoE,GAE7Bk2F,EAAaD,GAAgBj2F,GAE/Bk0E,EAAS5tE,MAAM4vF,KAAgBhiB,EAAS5tE,MAAM4vF,GAAY7qF,MAAKwyC,GAAQA,EAAKj6C,IAAI,QAAUmyF,EAAMnyF,IAAI,UACtGswE,EAAWA,EAASh4C,SAASg6D,GAAYx4F,GAAUA,EAAOjI,KAAKsgG,KACjE,IAGK7hB,CAAQ,EAEjB,CAACkiB,GAAAA,IAA+B,CAACxhG,EAAK24E,KAA2B,IAAvB9pE,QAAS6K,GAASi/D,EACtD2G,EAAW5lE,EAAQgB,QAAO,CAACC,EAAGi+D,KAAgB,IAAd,MAAExtE,GAAOwtE,EAC3C,MAAM0oB,EAAaD,GAAgBj2F,GAEnC,OAAIpL,EAAM0R,MAAM4vF,GACP3mF,EAAIqd,MAAMspE,EAAY5yF,GAAagD,MAAM4vF,IAG3C3mF,CAAG,GACT3a,GAgBH,OAdA0Z,EAAQ7hB,SAAQghF,IAAuB,IAAtB,OAAE7xE,EAAM,MAAEoE,GAAOytE,EAChC,IAAK7xE,EACH,OAGF,MAAMm6F,EAAQT,GAAa15F,EAAQoE,GAE7Bk2F,EAAaD,GAAgBj2F,GAE/Bk0E,EAAS5tE,MAAM4vF,KAAgBhiB,EAAS5tE,MAAM4vF,GAAY7qF,MAAKwyC,GAAQA,EAAKj6C,IAAI,QAAUmyF,EAAMnyF,IAAI,UACtGswE,EAAWA,EAASh4C,SAASg6D,GAAYx4F,GAAUA,EAAOjI,KAAKsgG,KACjE,IAGK7hB,CAAQ,EAEjB,CAACkiB,GAAAA,IAAkC,CAACxhG,EAAK84E,KAA0B,IAAtBjqE,QAAS6yF,GAAQ5oB,EACxDwG,EAAWt/E,EAKf,OAJA0hG,EAAO7pG,SAAQuT,IACbk0E,EAAWA,EAASpxD,IAAI9iB,EAAOsD,GAAaM,IAAI5D,GAAO,IAGlDk0E,CAAQ,EAEjB,CAACkiB,GAAAA,IAA0B,CAACxhG,EAAK+4E,KAAA,IAAIlqE,SAAS,MAAEzD,EAAK,OAAEtC,IAAUiwE,EAAA,OAAK/4E,EAAMkuB,IAAI9iB,EAAOtC,EAAO,EAC9F,CAAC04F,GAAAA,IAA2B,CAACxhG,EAAK++E,KAAA,IAAIlwE,SAAS,MAAEzD,EAAK,MAAEpT,IAAS+mF,EAAA,OAAK/+E,EAAMg4B,MAAM,CAAC,WAAY5sB,GAAQpT,EAAM,EAC7G,CAACwpG,GAAAA,IAA2B,CAACxhG,EAAKg/E,KAAmD,IAA/CnwE,SAAS,SAAE3S,EAAQ,OAAEC,EAAM,UAAE6oF,IAAahG,EAC9E,MAAM,aAAEiG,EAAY,qBAAE+C,IAAyBE,EAAAA,GAAAA,IAAmBloF,EAAMgP,IAAI,gBAAiB9S,EAAUC,GACjGmgC,EAAWt8B,EAAMgP,IAAI,YAE3B,IAAI2yF,EAAczlG,EAEdylG,GAA4B,gBAAbrlE,IACjBqlE,EAAc/+E,IAAO++E,GAAa3kE,QAAQ,OAAOna,UAGnD,IAAI++E,EAAYzlG,EAMhB,OAJIylG,GAA0B,gBAAbtlE,IACfslE,EAAYh/E,IAAOg/E,GAAW1kE,MAAM,OAAOra,UAGtC7iB,EAAMy7B,MAAM,CACjBv/B,SAAUylG,EACVxlG,OAAQylG,EACR5c,UAAWA,IAAa5nD,EAAAA,GAAAA,IAAalhC,EAAUC,GAC/C8oF,eACA+C,wBACA,EAEJ,CAACwZ,GAAAA,IAA+B,CAACxhG,EAAKk/E,KAAA,IAAIrwE,QAASytB,GAAU4iD,EAAA,OAAKl/E,EAAMkuB,IAAI,WAAYoO,EAAS,EACjG,CAACklE,GAAAA,IAAmC,CAACxhG,EAAKq/E,KAAA,IAAIxwE,QAASgzF,GAAUxiB,EAAA,OAAKr/E,EAAMkuB,IAAI,eAAgB2zE,EAAS,EACzG,CAACL,GAAAA,IAA6B,CAACxhG,EAAKw/E,KAAoC,IAAhC3wE,SAAS,MAAEzD,EAAK,MAAEgsB,IAASooD,EACjE,OAAIx/D,EAAAA,KAAAA,OAAYhgB,EAAMgP,IAAI5D,IACjBpL,EAAM4D,OAAOwH,GAAO+kF,GAAQA,EAAK11D,OAAOrD,KAGnC,aAAVhsB,EACKpL,EAAMg4B,MAAM,CAAC5sB,EAAOgsB,IAAQ,GAGvB,mBAAVhsB,EACKpL,EAAMkuB,IAAI9iB,EAAOsD,GAAaM,IAAI,mBAGvC5D,EAAMnE,WAAW,cACZjH,EAAM+kF,SAAS,CAAC,cAAcpvE,EAAAA,EAAAA,GAAUvK,EAAMgb,QAAQ,aAAc,KAAMgR,KAG/EsuD,EAAAA,GAAAA,IAAct6E,GACTpL,EAAM+kF,SAAS,CAAC,aAAc3tD,IAGhCp3B,EAAMy6B,OAAOrvB,EAAM,EAE5B,CAACo2F,GAAAA,IAA6B,CAACxhG,EAAK2gF,KAAoC,IAAhC9xE,SAAS,MAAEzD,EAAK,MAAEgsB,IAASupD,EACjE,OAAI+E,EAAAA,GAAAA,IAAct6E,GACTpL,EAAMsnC,SAAS,CAAC,aAAclQ,EAAO,aAAaupE,IAAaA,IAGpE3gF,EAAAA,KAAAA,OAAYhgB,EAAMgP,IAAI5D,IACjBpL,EAAMsnC,SAAS,CAACl8B,EAAOgsB,EAAO,aAAaupE,IAAaA,IAG1D3gG,CAAK,EAGd,CAACwhG,GAAAA,IAA6B,CAACxhG,EAAK4gF,KAAqC,IAAjC/xE,SAAS,OAAE7H,EAAM,MAAEowB,IAASwpD,EAClE,OAAI5gE,EAAAA,KAAAA,OAAYhgB,EAAMgP,IAAIhI,EAAOgI,IAAI,WAC5BhP,EAAMg4B,MAAM,CAAChxB,EAAOgI,IAAI,SAAUooB,GAAQpwB,EAAOknB,IAAI,WAAW,IAGlEluB,CAAK,EAGd,CAACwhG,GAAAA,IAAkC,CAACxhG,EAAK6gF,KAAA,IAAIhyE,SAAS,MAAEzD,EAAK,MAAEpT,IAAS6oF,EAAA,OAAK7gF,EAAMg4B,MAAM,CAAC,WAAY5sB,GAAQpT,EAAM,EAEpH,CAACwpG,GAAAA,IAAoC,CAACxhG,EAAK8gF,KAAoC,IAAhCjyE,SAAS,MAAEzD,EAAK,MAAEpT,IAAS8oF,EACxE,MAAMghB,EAAW9pG,EAAM0c,KAAIkqB,GAAK8hE,GAAa9hE,GAAGjpB,EAAAA,EAAAA,GAAU,cAAcvK,QAExE,OAAOpL,EAAMg4B,MAAM,CAAC,aAAc5sB,GAAQ02F,EAAS,EAGrD,CAACN,GAAAA,IAAwC,CAACxhG,EAAK8nF,KAAA,IAAIj5E,QAAS8kF,GAAU7L,EAAA,OACpE9nF,EAAMsnC,SAAS,CAAC,WAAY,wBAAwBrN,GAC9CA,EAAWlzB,MAAKozB,GAAKA,EAAEnrB,IAAI,QAAU2kF,EAAS3kF,IAAI,QAC7CirB,EAAWjzB,QAAOmzB,GAAKA,EAAEnrB,IAAI,QAAU2kF,EAAS3kF,IAAI,QAGtDirB,EAAWp5B,KAAK8yF,IACvB,EAGJ,CAAC6N,GAAAA,IAAyCxhG,GACxCA,EAAM4D,OAAO,YAAYuK,GAAYA,EAASstB,OAAMryB,EAAAA,EAAAA,QAAO,CACzDmyC,cAAe,GACfugB,gBAAiB,GACjBC,cAAe,GACfC,aAAc,QAIlB,CAACwlC,GAAAA,IAAqDxhG,GACpDA,EAAM4D,OAAO,YAAYuK,GAAYA,EAASstB,OAAMryB,EAAAA,EAAAA,QAAO,CACzDmyC,cAAeptC,EAASa,IAAI,gBAC5BgtD,aAAc7tD,EAASa,IAAI,sBAI/B,CAACwyF,GAAAA,IAA6B,CAACxhG,EAAK+nF,KAAA,IAAIl5E,QAAS0yF,GAAsBxZ,EAAA,OACrE/nF,EAAMy7B,MAAMqkE,IACT9nE,MAAM,CAAC,WAAY,uBAAwBh4B,EAAM0R,MAAM,CAAC,WAAY,yBACpEsmB,MAAM,CAAC,WAAY,kBAAmBupE,EAAqB,EAGhE,CAACrL,EAAAA,IAA2B,CAACl2F,EAAK+hG,KAAA,IAAE,QAAElzF,GAASkzF,EAAA,OAC7C/hG,EAAMg4B,MAAM,CAAC,WAAY,yBAA0BnpB,EAAQsnF,eAAiB,IAAIpvF,MAAK2P,GAAKA,EAAEvI,WAAU,EAGxG,CAACc,EAAAA,IAAwB,IAAMP,IAC9BA,IC7WI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCqnE,WAAY,WACZzoB,YAAa,KACbnf,WAAY,OACZigB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAMywD,EAAAA,GAAAA,eACNjlD,KAAM,CACJsgG,UAAU,EACVC,YAAY,EACZC,aAAc,KAIlB,QAAevzF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,WAAW,GAClE,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,WAAW,GAClE,CAACgqD,GAAAA,IAAqC,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMy7B,MAAM,CACxEx7B,SAAS,EACTvI,MAAM0R,EAAAA,EAAAA,QAAOyF,IACb,EAEF,CAACI,EAAAA,IAAwB,IAAMP,IAC9BA,ICvBI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CAAC,GAEpC,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAAiC,CAACkkF,EAAMh7F,KAAA,IAAI+W,SAAS,OAAEsf,IAAUr2B,EAAA,OAAKsR,EAAAA,EAAAA,QAAO,CAAC,GAAG6kF,eAAcC,IAC9F//D,EAAOt2B,SAAQm2B,GACbkgE,EAAIhgE,IACFF,EAAM/5B,IACNmV,EAAAA,EAAAA,QAAO4kB,GAAOpqB,OAAO,QAAQolB,GAAQA,EAAKtU,KAAIyU,GAAKA,EAAEna,IAAI,YAE3D,GACF,EACF,CAACJ,GAAAA,IAAmC,CAAC5O,EAAKo4E,KAAsB,IAAlBvpE,QAAS5a,GAAImkF,EACzD,MAAMpqD,EAAQhuB,EAAMgP,IAAI/a,GAAIi6B,IAAI,eAAe,GAE/C,OAAOluB,EAAMkuB,IAAIj6B,EAAI+5B,EAAM,EAE7B,CAACpf,GAAAA,IAAqC,CAAC5O,EAAKq4E,KAA4C,IAAxCxpE,SAAWnX,MAAM,OAAEy2B,GAAQ,GAAEl6B,IAAMokF,EACjF,MAAM8pB,EAAYh0E,EAAOnnB,QAAO0P,GAAKA,EAAEziB,KAAOA,IAAI,GAElD,IAAKkuG,EACH,OAAIniG,EAAMgP,IAAI/a,GACL+L,EAAMkuB,IAAIj6B,EAAI+L,EAAMgP,IAAI/a,GAAIg6F,eACjCC,GAAOA,EAAIzyD,MAAM,CAAE2mE,aAAa,OAI7BpiG,EAGT,GAAIA,EAAMgP,IAAI/a,GAAK,CACjB,MAAMouG,EAAariG,EAAM0R,MAAM,CAACzd,EAAI,SAC9B+0B,EAAOm5E,EAAUn5E,KAAKhiB,QAAOmiB,IAAMk5E,EAAW9+E,SAAS4F,EAAEl1B,MAE/D,OAAO+L,EAAMkuB,IAAIj6B,EAAI+L,EAAMgP,IAAI/a,GAAIg6F,eACjCC,GAAOA,EACJhgE,IAAI,OAAQluB,EAAM0R,MAAM,CAACzd,EAAI,SAASsa,QAAOnF,EAAAA,EAAAA,QAAO4f,EAAKtU,KAAIyU,GAAKA,EAAEl1B,QACpEi6B,IAAI,eAAe,KAE1B,CAEA,OAAOluB,CAAK,EAEd,CAAC4O,GAAAA,IAA2B,CAAC5O,EAAKs4E,KAA0D,IAAtDzpE,SAAS,YAAEyzF,EAAW,cAAEC,EAAa,OAAErwE,IAAUomD,EAIrF,OAHsBt4E,EAAM0U,KAAI8yB,GAAKA,EAClCtZ,IAAI,OAAQsZ,EAAEx4B,IAAI,QAAQhI,QAAOmiB,GAAKA,IAAM+I,OAE1Bxd,KAAI8yB,GACnB86D,EAAY/+E,SAASikB,EAAEx4B,IAAI,OACtBw4B,EAAEtZ,IAAI,OAAQsZ,EAAEx4B,IAAI,QAAQwzF,OAAO,EAAGtwE,IAGxCsV,IACN/L,MAAM8mE,EAAc,EAEzB,CAAC3zF,GAAAA,IAA+B,CAAC5O,EAAKu4E,KAAA,IAAI1pE,SAAS,OAAEsf,IAAUoqD,EAAA,OAAKpqD,EAAOzT,QAAO,CAAC4kE,EAAUtxD,IACvFsxD,EAAStwE,IAAIgf,EAAM/5B,IACdqrF,EAAStnD,MAAM,CAAChK,EAAM/5B,GAAI,UAAUmV,EAAAA,EAAAA,QAAO4kB,EAAMyZ,QAGnD63C,GACNt/E,EAAM,EAET,CAAC4O,GAAAA,IAAwB,IAAMF,GAC/B,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,IChEI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,IAEnC,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAAiC,CAAC5O,EAAKlI,KAAA,IAAI+W,SAAS,OAAEsf,IAAUr2B,EAAA,OAAKsR,EAAAA,EAAAA,QAAO+kB,EAAOzZ,KAAI0jE,IAAA,IAAC,GAAEnkF,GAAImkF,EAAA,OAAKnkF,CAAE,IAAE,EACxG,CAAC2a,GAAAA,IAA2B,CAAC5O,EAAKq4E,KAAqC,IAAjCxpE,SAAS,cAAE0zF,IAAiBlqB,EAChE,MAAMoqB,EAAYF,EAAc32D,SAEhC,OAAI5rC,EAAMyvB,KAAK,GACNzvB,EAAMwiG,QAAQ,EAAGC,GAAWzyE,UAG9BhwB,EAAMwiG,OAAOxiG,EAAM+jB,KAAM0+E,GAAWzyE,SAAS,EAEtD,CAACphB,GAAAA,IAAwB,IAAMF,GAC/B,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICdI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CAAC,GAEpC,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAA6B,CAAC5O,EAAKlI,KAAuC,IAAnC+W,SAAS,OAAEsf,EAAM,QAAE72B,IAAWQ,EAChEmE,EAAM,GAGRA,EADE3E,EACI,CAACA,GAED62B,EAAOzZ,KAAI0jE,IAAA,IAAC,GAAEnkF,GAAImkF,EAAA,OAAKnkF,CAAE,IAGjC,MAAMyuG,EAAU,CAAC,EAsBjB,OApBAzmG,EAAIpE,SAAQ5D,IACV,GAAI+L,EAAMyvB,IAAIx7B,EAAGqJ,YAAa,CAC5B,MAAMymB,EAAO/jB,EAAM0R,MAAM,CAACzd,EAAGqJ,WAAY,SAEzCoD,OAAOiB,OAAO+gG,EAAS,CACrB,CAACzuG,GAAK,CACJ8vB,OACA07B,KAAMz/C,EAAM0R,MAAM,CAACzd,EAAGqJ,WAAY,SAAWymB,IAGnD,MACErjB,OAAOiB,OAAO+gG,EAAS,CACrB,CAACzuG,GAAK,CACJ8vB,KAAMglD,EAAAA,GACNtpB,KAAMmB,EAAAA,KAGZ,IAGK5gD,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAOs5F,GAAS,EAErC,CAAC9zF,GAAAA,GAA+B,IAAMF,GACtC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICvCI,MAAMA,IAAe7F,EAAAA,EAAAA,KAAI,IAEhC,QAAe8F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAqB,CAACl4E,EAAKlI,KAA2B,IAAvB+W,QAAShW,GAASf,EAC5C6qG,GAAav5F,EAAAA,EAAAA,QAAO,CAACvQ,IAAUm3B,UAAUR,QAC7C,MAAMojE,EAAe5yF,EAAM6yF,UAAU8P,GAGrC,OAFAA,EAAaA,EAAW55F,SAAS6pF,GAE1B5yF,EAAM+I,SAAS6pF,GAAcpD,MAAMmT,EAAW,EAGvD,CAACzqB,GAAAA,IAA6B,IAAMxpE,GAEpC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICdI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCijF,SAAS,EACTuW,SAAU,EACV3gI,qBAAqB,EACrB0pB,mBAAmB,EACnB/oB,2BAA2B,EAC3B46G,cAAc,EACdjmF,YAAa,KACbsrG,yBAAyB,IAG3B,QAAel0F,EAAAA,EAAAA,GAAc,CAC3B,CAAC4xE,EAAAA,IAAqC,CAACvgF,EAAKlI,KAAA,IAAI+W,QAAS+zF,GAAU9qG,EAAA,OAAKkI,EAAMkuB,IAAI,WAAY00E,EAAS,EACvG,CAACriB,EAAAA,IAAqC,CAACvgF,EAAKo4E,KAAA,IAAIvpE,QAAStX,GAAa6gF,EAAA,OAAKp4E,EAAMkuB,IAAI,cAAe32B,GAAe,KAAK,EACxH,CAACgpF,EAAAA,IAA0CvgF,GAASA,EAAMkuB,IAAI,uBAAuB,GACrF,CAACqyD,EAAAA,IAA0CvgF,GAASA,EACjDkuB,IAAI,uBAAuB,GAC3BA,IAAI,2BAA2B,GAClC,CAACqyD,EAAAA,IAAgDvgF,GAASA,EAAMkuB,IAAI,6BAA6B,GACjG,CAACqyD,EAAAA,IAAgDvgF,GAASA,EAAMkuB,IAAI,6BAA6B,GACjG,CAACqyD,EAAAA,IAAqCvgF,GAASA,EAAM4D,OAAO,gBAAgB5L,IAAUA,IACtF,CAACuoF,EAAAA,IAAqCvgF,GAASA,EAAMkuB,IAAI,WAAW,GACpE,CAACqyD,EAAAA,IAAuCvgF,GAASA,EAAMkuB,IAAI,WAAW,GACtE,CAACqyD,EAAAA,IAAqCvgF,GAASA,EAAMkuB,IAAI,WAAW,GACpE,CAACqyD,EAAAA,IAAoDvgF,GAASA,EAAMkuB,IAAI,WAAW,GACnF,CAACqyD,EAAAA,IAAsDvgF,GAASA,EAAMkuB,IAAI,WAAW,GACrF,CAACqyD,EAAAA,IAAoDvgF,GAASA,EAAMkuB,IAAI,WAAW,GACnF,CAACqyD,EAAAA,IAAuDvgF,GAASA,EAAMkuB,IAAI,WAAW,GACtF,CAACqyD,EAAAA,IAAyDvgF,GAASA,EAAMkuB,IAAI,WAAW,GACxF,CAACqyD,EAAAA,IAAuDvgF,GAASA,EAAMkuB,IAAI,WAAW,GACtF,CAACqyD,EAAAA,IAAwCvgF,GAASA,EAAMkuB,IAAI,qBAAqB,GACjF,CAACqyD,EAAAA,IAAwCvgF,GAASA,EAAMkuB,IAAI,qBAAqB,GACjF,CAACqyD,EAAAA,IAAiC,CAACvgF,EAAKq4E,KAAA,IAAIxpE,QAASw9E,GAAShU,EAAA,OAAKr4E,EAAMkuB,IAAI,UAAWm+D,EAAQ,EAChG,CAAC9L,EAAAA,IAAiD,CAACvgF,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OACnEt4E,EAAMkuB,IAAI,0BAA2Brf,EAAQ,EAG/C,CAACI,EAAAA,IAAwB,IAAMP,IAC9BA,ICnCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC4f,KAAM,GACNqH,MAAO,KAGHyyE,GAAW9iG,GAASA,EAAMgP,IAAI,SAC9B+zF,GAAoBA,CAAC/iG,EAAO/L,IAAO6uG,GAAS9iG,GAAOuiF,WAAU7rE,GAAKA,EAAE1H,IAAI,QAAU/a,IAElF+uG,GAAqBA,CAAChjG,EAAOgpB,KACjC,IAAIi6E,EAAejjG,EAAMgP,IAAI,QACzBk0F,GAAc95F,EAAAA,EAAAA,QAAO,IAmBzB,OAlBA4f,EAAKnxB,SAAQsxB,IACX,MAAMg6E,EAAmBh6E,EAAEna,IAAI,iBAAiB0F,KAAIsuB,GAAMA,EAAGh0B,IAAI,QACjE,IAAIo0F,GAAiB,EACrBH,EAAeA,EAAavuF,KAAI2uF,GAC1BA,EAAIvzE,UAAY3G,EAAEna,IAAI,OACxBo0F,GAAiB,EAEVC,EAAI90F,OAAO40F,GAAkBG,eAAet6F,UAG9Cq6F,IAGJD,IACHF,EAAcA,EAAYriG,KAAKsiG,EAAiBlgE,QAAQ9Z,EAAEna,IAAI,QAChE,IAGKi0F,EAAa10F,OAAO20F,EAAY,EAEzC,QAAev0F,EAAAA,EAAAA,GAAc,CAC3B,CAAC4xE,EAAAA,IAAuC,CAACvgF,EAAKlI,KAAwB,IAApB+W,QAASma,GAAMlxB,EAC/D,MAAM+sF,GAAUz7E,EAAAA,EAAAA,QAAO4f,GAAMtU,KAAIyU,GAAKA,EAAEna,IAAI,iBAAiB0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOi0B,QAAQ9Z,EAAEna,IAAI,SAEjG,OAAOhP,EAAMkuB,IAAI,OAAQ22D,EAAQ,EAEnC,CAACtE,EAAAA,IAAyD,CAACvgF,EAAKo4E,KAAA,IAAIvpE,QAASma,GAAMovD,EAAA,OACjFp4E,EAAMkuB,IAAI,OAAQ80E,GAAmBhjG,EAAOgpB,GAAM,EAEpD,CAACu3D,EAAAA,IAAsD,CAACvgF,EAAKq4E,KAAA,IAAIxpE,QAASma,GAAMqvD,EAAA,OAAKr4E,EAAMkuB,IAAI,OAAQ80E,GAAmBhjG,EAAOgpB,GAAM,EACvI,CAACu3D,EAAAA,IAAiD,CAACvgF,EAAKs4E,KAAkB,IAAhB,QAAEzpE,GAASypE,EACnE,MAAMirB,GAAan6F,EAAAA,EAAAA,QAAOyF,GAEpBhW,EAAUmnB,EAAAA,KAAAA,OAAYujF,GAAcA,EAAaA,EAAWv0F,IAAI,WAChEu9C,EAAUg3C,EAAWv0F,IAAI,YAAchP,EAAMgP,IAAI,SAAS0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAEzEqhB,EAAQrwB,EAAMgP,IAAI,SACrB0F,KAAI0b,GAAQA,EAAKxsB,OAAO,QAAQolB,GAASujC,EAAQhpC,SAAS6M,EAAKphB,IAAI,OAASga,EAAKhiB,QAAOmiB,IAAMtwB,EAAQ0qB,SAAS4F,KAAMH,MACrHhiB,QAAOopB,IAASA,EAAKphB,IAAI,QAAQmI,YAE9B6R,EAAOhpB,EAAMgP,IAAI,QAAQhI,QAAOmiB,GAAKkH,EAAM5Z,MAAK2Z,GAAQA,EAAKphB,IAAI,QAAQuU,SAAS4F,EAAE2G,aAE1F,OAAO9vB,EAAMy7B,MAAM,CACjBpL,QACArH,QACA,EAEJ,CAACu3D,EAAAA,IAA6C,CAACvgF,EAAKu4E,KAAgE,IAA5D1pE,SAAS,OAAE0hB,EAAM,SAAEghE,EAAQ,SAAEC,EAAQ,aAAEE,IAAgBnZ,EAC7G,MAAMmY,EAAuBgB,EAAa1qF,QAAO2qF,GAAMA,EAAG3iF,IAAI,YAAcuhB,IAAQ7b,KAAIi9E,GAAMA,EAAG3iF,IAAI,YAE/F61E,EAAU2L,GAAsB,CACpCT,aAAc/vF,EAAMgP,IAAI,QAAQ0F,KAAIyU,GAAKA,EAAE2G,UAC3C4gE,uBACAT,YAAasB,EACbrB,iBAAkBsB,IAGpB,OAAOxxF,EAAM4D,OAAO,QAAQolB,GAAQA,EAAKp3D,QAAOu3D,GAAK07D,EAAQp9E,QAAQ0hB,EAAE2G,YAAU,EAEnF,CAACywD,EAAAA,IAAoD,CAACvgF,EAAKw4E,KAAgE,IAA5D3pE,SAAS,OAAE0hB,EAAM,SAAEghE,EAAQ,SAAEC,EAAQ,aAAEE,IAAgBlZ,EACpH,MAAMgrB,EAAYT,GAAkB/iG,EAAOuwB,GAErCmgE,EAAuBgB,EAAa1qF,QAAO2qF,GAAMA,EAAG3iF,IAAI,YAAcuhB,IAAQ7b,KAAIi9E,GAAMA,EAAG3iF,IAAI,YAC/F61E,EAAU2L,GAAsB,CACpCT,aAAc/vF,EAAM0R,MAAM,CAAC,QAAS8xF,EAAW,SAC/C9S,uBACAT,YAAasB,EACbrB,iBAAkBsB,IAGpB,OAAOxxF,EAAMg4B,MAAM,CAAC,QAASwrE,EAAW,QAAS3e,EAAQ,EAE3D,CAACtE,EAAAA,IAA6C,CAACvgF,EAAKy4E,KAA0C,IAAtC5pE,SAAS,SAAE0iF,EAAQ,SAAEC,IAAY/Y,EACvF,MAAMgrB,GAAYnT,EAAAA,GAAAA,IAASwS,GAAS9iG,GAAQuxF,EAAUC,GAEtD,OAAOxxF,EAAMkuB,IAAI,QAASu1E,EAAU,EAEtC,CAACljB,EAAAA,IAAqC,CAACvgF,EAAK04E,KAA0B,IAAtB7pE,QAAS0hB,GAAQmoD,EAC/D,MAAM8qB,EAAYT,GAAkB/iG,EAAOuwB,GACrCkzE,EAAYX,GAAS9iG,GAAO4D,OAAO4/F,GAAWpzE,GAAQA,EAAKlC,IAAI,YAAakC,EAAKphB,IAAI,eAE3F,OAAOhP,EAAMkuB,IAAI,QAASu1E,EAAU,EAEtC,CAACljB,EAAAA,IAAyCvgF,GAASA,EAAMkuB,IAAI,QAAS40E,GAAS9iG,GAAO0U,KAAIgC,GAAKA,EAAEwX,IAAI,YAAY,MACjH,CAACqyD,EAAAA,IAA2CvgF,GAASA,EAAMkuB,IAAI,QAAS40E,GAAS9iG,GAAO0U,KAAIgC,GAAKA,EAAEwX,IAAI,YAAY,MACnH,CAACqyD,EAAAA,IAA+B,CAACvgF,EAAK24E,KAAA,IAAI9pE,QAASwhB,GAAOsoD,EAAA,OAAK34E,EAAMkuB,IAAI,QAASmC,EAAM,EACxF,CAACkwD,EAAAA,IAA8B,CAACvgF,EAAK44E,KAAA,IAAI/pE,QAASma,GAAM4vD,EAAA,OAAK54E,EAAMkuB,IAAI,OAAQlF,EAAK,EAEpF,CAACu3D,EAAAA,IAAqC,CAACvgF,EAAK64E,KAAoC,IAAhChqE,SAAS,OAAE60F,EAAM,KAAE16E,IAAQ6vD,EACzE,MAAM8qB,EAAS36E,EAAKtU,KAAIyU,GAAKA,EAAEna,IAAI,QAC7B40F,EAAgBF,EAAO5zE,QACvB+zE,EAAgBF,EAAO7zE,QAEvB+0D,EAAU7kF,EAAMgP,IAAI,QAAQ0F,KAAIzY,GAAQA,EAAI40E,OAAO6yB,GAAUC,EAAS1nG,IACtEo0B,EAAQrwB,EAAMgP,IAAI,SAAS0F,KAAI0b,GAAQA,EAAKxsB,OAAO,QAAQ3H,GAAOA,EAAIyY,KAAIzgB,GAAOA,IAAO2vG,EAAgBC,EAAgB5vG,QAE9H,OAAO+L,EAAMy7B,MAAM,CAAEzS,KAAM67D,EAASx0D,SAAQ,EAG9C,CAACphB,EAAAA,IAAwB,IAAMP,IAC9BA,IClHI,MAAMA,IAAe7F,EAAAA,EAAAA,KAAI,IAEhC,QAAe8F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA0B,CAACl4E,EAAKlI,KAAyD,IAArD+W,SAAS,gBAAE4jF,EAAe,iBAAEC,IAAoB56F,EAC/E66F,GAAWvpF,EAAAA,EAAAA,QAAO,CAACqpF,IAAkBziE,UAAUR,QAEnD,GAAIkjE,EACF,OAAO1yF,EAAMwvF,MAAMmD,GAGrB,MAAMC,EAAe5yF,EAAM6yF,UAAUF,GAGrC,OAFAA,EAAWA,EAAS5pF,SAAS6pF,GAEtB5yF,EAAM+I,SAAS6pF,GAAcpD,MAAMmD,EAAS,EAGrD,CAACza,EAAAA,IAA6B,IAAMxpE,GAEpC,CAACwpE,EAAAA,IAAyB,IAAMxpE,GAEhC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICrBI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCsoF,cAAc7oF,EAAAA,EAAAA,KAAI,MAGpB,QAAe8F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA+B,CAACl4E,EAAKlI,KAAiD,IAA7C+W,SAAS,KAAEma,EAAI,UAAEymE,EAAS,SAAEC,IAAY53F,EAChF,MAAM45F,EAAe1xF,EAAMgP,IAAI,gBACzB2gF,EACJv+D,QAAQs+D,EAASE,SAAWF,EAASG,UACjC6B,EAAa3qF,MAAKoiB,GAAKA,EAAEna,IAAI,YAAcga,EAAK8G,QAAQ9gB,IAAI,YAElE,IAAIoX,EAAUqpE,EAETrpE,IACHA,GAAWsrE,EAAav6E,WAAau6E,EAAa5hE,QAAQ9gB,IAAI,YAAcga,EAAK8G,QAAQ9gB,IAAI,WAG/F,IAAIpO,GAASiI,EAAAA,EAAAA,KAAI,IAUjB,OAPEjI,EADEwlB,GACOvd,EAAAA,EAAAA,KAAImgB,GACJ2mE,EACA+B,EAAa3oF,SAASigB,GAEtB0oE,EAAalC,MAAMxmE,GAGvBhpB,EAAMy7B,MAAM,CACjBi2D,aAAc9wF,GACd,EAGJ,EACAq3E,EAAAA,EAAAA,GACEC,EAAAA,GACAA,EAAAA,GACAA,EAAAA,KAEC,IAAMxpE,GAET,CAACwpE,EAAAA,IAAyB,IAAMxpE,GAEhC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,IC1CI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCnJ,SAAS,EACT6jG,kBAAmB,KACnBC,mBAAoB,KACpBC,mBAAoB,KACpBC,oBAAqB,KACrBprG,QAAS,GACTmwB,KAAM,KAGR,QAAera,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA4B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,UAAWrf,EAAQ,EAClF,CAACqpE,EAAAA,IAA4B,IAAMxpE,GAEnC,CAACwpE,EAAAA,IAAyCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACxE,CAACgqD,EAAAA,IAAyCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACxE,CAACgqD,EAAAA,IAA2C,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASma,GAAMovD,EAAA,OAAKp4E,EAAMy7B,MAAM,CACpFx7B,SAAS,EACT+oB,MAAM5f,EAAAA,EAAAA,QAAO4f,IACb,EAEF,CAACkvD,EAAAA,IAA4B,CAACl4E,EAAKq4E,KAAoC,IAAhCxpE,SAAS,GAAE5a,EAAE,SAAEu9F,IAAYnZ,EAChE,MAAMjhD,EAAQp3B,EAAMgP,IAAI,QAAQuzE,WAAUp5D,GAAKl1B,IAAOk1B,EAAEna,IAAI,QAE5D,OAAOhP,EAAM4D,OAAO,QAAQolB,IAAQsnE,EAAAA,GAAAA,IAAStnE,EAAMoO,EAAOo6D,IAAU,EAGtE,CAACtZ,EAAAA,IAAoC,CAACl4E,EAAKs4E,KAAA,IAAIzpE,SAAS,MAAEihB,EAAK,OAAEo0E,IAAU5rB,EAAA,OAAKt4E,EAAMy7B,MAAM,CAC1FqoE,kBAAmBh0E,EACnBi0E,mBAAoBG,GACpB,EAEF,CAAChsB,EAAAA,IAAqC,CAACl4E,EAAKu4E,KAAA,IAAI1pE,SAAS,MAAEihB,EAAK,OAAEo0E,IAAU3rB,EAAA,OAAKv4E,EAAMy7B,MAAM,CAC3FuoE,mBAAoBl0E,EACpBm0E,oBAAqBC,GACrB,EAEF,CAACj1F,EAAAA,IAAwB,IAAMP,IAC9BA,ICrCH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAI,GACJg6F,aAAY,GACZyS,QAAO,GACPC,QAAOA,KCPF,MAAM11F,IAAetF,EAAAA,EAAAA,QAAO,CACjCklF,QAAQ,EACR8M,aAAa,EACbiJ,iBAAiB,IAGnB,QAAe11F,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAAqC5O,GAASA,EAAMkuB,IAAI,UAAU,GACnE,CAACtf,GAAAA,IAAqC5O,GAASA,EAAMkuB,IAAI,UAAU,GAAOA,IAAI,mBAAmB,GACjG,CAACtf,GAAAA,IAAoC5O,GAASA,EAAMkuB,IAAI,mBAAmB,GAE3E,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICZI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCsoF,aAAc,CACZsK,YAAa,IAAIva,KACjBpxD,MAAO,GACP8rE,OAAQ,MAIZ,QAAextF,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAAqC,CAAC5O,EAAKlI,KAAA,IAAI+W,QAASma,GAAMlxB,EAAA,OAAKkI,EAAMkuB,IAAI,eAAgBlF,EAAK,EAEnG,CAACpa,GAAAA,IAAwB,IAAMF,GAC/B,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICdH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,KCIC,MAAMgX,IAAetF,EAAAA,EAAAA,QAAO,CACjC4D,OAAQ,CACNu9E,GAAI,CACF,CAAEr0F,KAAM,YAAau6E,WAAY,SACjC,CAAEv6E,KAAM,YAAau6E,WAAY,QACjC,CAAEv6E,KAAM,YAAau6E,WAAY,UACjC,CAAEv6E,KAAM,OAAQu6E,WAAY,YAC5B,CAAEv6E,KAAM,MAAOu6E,WAAY,aAC3B,CAAEv6E,KAAM,WAAYu6E,WAAY,aAChC,CAAEv6E,KAAM,WAAYu6E,WAAY,YAChC,CAAEv6E,KAAM,MAAOu6E,WAAY,YAC3B,CAAEv6E,KAAM,MAAOu6E,WAAY,cAC3B,CAAEv6E,KAAM,WAAYu6E,WAAY,WAElC6Z,GAAI,CACF,CAAEp0F,KAAM,YAAau6E,WAAY,SACjC,CAAEv6E,KAAM,YAAau6E,WAAY,QACjC,CAAEv6E,KAAM,YAAau6E,WAAY,UACjC,CAAEv6E,KAAM,OAAQu6E,WAAY,YAC5B,CAAEv6E,KAAM,WAAYu6E,WAAY,aAChC,CAAEv6E,KAAM,MAAOu6E,WAAY,aAC3B,CAAEv6E,KAAM,MAAOu6E,WAAY,cAC3B,CAAEv6E,KAAM,MAAOu6E,WAAY,YAC3B,CAAEv6E,KAAM,WAAYu6E,WAAY,YAChC,CAAEv6E,KAAM,WAAYu6E,WAAY,WAElC4Z,GAAI,CACF,CAAEn0F,KAAM,YAAau6E,WAAY,SACjC,CAAEv6E,KAAM,YAAau6E,WAAY,QACjC,CAAEv6E,KAAM,YAAau6E,WAAY,UACjC,CAAEv6E,KAAM,OAAQu6E,WAAY,YAC5B,CAAEv6E,KAAM,WAAYu6E,WAAY,aAChC,CAAEv6E,KAAM,MAAOu6E,WAAY,aAC3B,CAAEv6E,KAAM,MAAOu6E,WAAY,cAC3B,CAAEv6E,KAAM,MAAOu6E,WAAY,YAC3B,CAAEv6E,KAAM,WAAYu6E,WAAY,YAChC,CAAEv6E,KAAM,WAAYu6E,WAAY,WAElC2Z,GAAI,CACF,CAAEl0F,KAAM,YAAau6E,WAAY,SACjC,CAAEv6E,KAAM,YAAau6E,WAAY,QACjC,CAAEv6E,KAAM,YAAau6E,WAAY,UACjC,CAAEv6E,KAAM,OAAQu6E,WAAY,YAC5B,CAAEv6E,KAAM,WAAYu6E,WAAY,aAChC,CAAEv6E,KAAM,MAAOu6E,WAAY,aAC3B,CAAEv6E,KAAM,MAAOu6E,WAAY,cAC3B,CAAEv6E,KAAM,MAAOu6E,WAAY,YAC3B,CAAEv6E,KAAM,WAAYu6E,WAAY,YAChC,CAAEv6E,KAAM,WAAYu6E,WAAY,YAGpCt6B,QAAS,CACPo0C,GAAI,CACF,CAAE9F,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,IAEzB2F,GAAI,CACF,CAAE7F,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,GAAI3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACxB,CAAEF,EAAG,GAAI3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,IAE1B0F,GAAI,CACF,CAAE5F,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,EAAGC,EAAG,GACvB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,GAAI3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACzB,CAAEF,EAAG,GAAI3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACzB,CAAEF,EAAG,GAAI3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACzB,CAAEF,EAAG,GAAI3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,IAE3ByF,GAAI,CACF,CAAE3F,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,EAAG3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACxB,CAAEF,EAAG,GAAI3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACzB,CAAEF,EAAG,GAAI3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACzB,CAAEF,EAAG,GAAI3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,GACzB,CAAEF,EAAG,GAAI3hC,EAAG,EAAG4hC,EAAG,GAAIC,EAAG,OAKzB4V,GAAsBA,CAACv6F,EAAOoL,EAAOpT,IAAUgI,EAAM4D,OACzD,UACAoJ,GAAUA,EAAO0N,QAAO,CAACC,EAAK7R,EAAQ/Q,IAAQ4iB,EAAIuT,IAAIn2B,EAAK+Q,EAAO4L,KAAIgC,GAAKA,EAAEwX,IAAI9iB,EAAOpT,QAAUoR,EAAAA,EAAAA,QAAO,CAAC,MAG5G,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAmCl4E,GAASu6F,GAAoBv6F,EAAO,WAAW,GACnF,CAACk4E,GAAAA,IAAmCl4E,GAASu6F,GAAoBv6F,EAAO,WAAW,GACnF,CAACk4E,GAAAA,IAAqCl4E,GAASu6F,GAAoBv6F,EAAO,WAAW,GAErF,CAACk4E,GAAAA,IAA8B,CAACl4E,EAAKlI,KAAA,IAAI+W,QAAS7W,GAAOF,EAAA,OAAME,EAAQuiG,GAAoBv6F,EAAO,aAAchI,GAAS0W,EAAY,EACrI,CAACwpE,GAAAA,IAA6B,CAACl4E,EAAKo4E,KAA+C,IAA3CvpE,SAAS,MAAEuoB,EAAK,WAAE6e,EAAU,KAAEv+C,IAAQ0gF,EAC5E,MAAMhmC,EAAQpyC,EAAM0R,MAAM,CAAC,SAAUukC,EAAY7e,IAEjD,OAAIgb,EACKpyC,EAAMg4B,MAAM,CAAC,SAAUie,EAAY7e,GAAQgb,EAAM3W,MAAM,CAC5D/jC,MAAM0R,EAAAA,EAAAA,QAAO1R,GACbuI,SAAS,KAIND,CAAK,EAGd,CAACiP,EAAAA,IAAwB,IAAMP,IAC9BA,ICrII,MAED41F,GAAiB,CACrB,EAAG,GACH,EAAG,QACH,EAAG,gBAGL,QAAe31F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAoB,CAACl4E,EAAO6+E,IAAWA,EAAOhwE,QAE/C,CAACqnF,EAAAA,IAA0B,CAACl2F,EAAKlI,KAAA,IAAI+W,SAAS,iBAAE4rE,IAAoB3iF,EAAA,OAAKwsG,GAAe,GAAG7pB,MAAuB,EAAE,EAEpH,CAACxrE,EAAAA,IAAwB,IAbC,QCDrB,MAAMP,GAAe,OAE5B,QAAeC,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA2Bl4E,GAAoB,SAAVA,EAAmB,MAAQ,OAEjE,CAACiP,EAAAA,IAAwB,IAAMP,IAC9BA,ICJH,QAAeC,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAAiC,CAAC5O,EAAKlI,KAAA,IAAI+W,SAAS,MAAEoT,IAASnqB,EAAA,OAAKmqB,CAAK,EAC1E,CAAChT,EAAAA,IAAwB,IAJC,MCK5B,MAAMs1F,GAAmB,CACvBC,KAAM,OACNC,QAAS,UAGLC,GAAwB,CAC5B17E,KAAM,kBACNq3B,OAAQ,qBACRokD,QAAS,sBACTxmE,YAAa,0BACbumE,KAAM,oBAGFG,GAAkB,CACtB,CAAC56F,EAAAA,GAAAA,aAA4B,CAC3B66F,kBAAmB,SACnBC,eAAgB,sBAElB,CAAC96F,EAAAA,GAAAA,UAAyB,CACxB66F,kBAAmB,SACnBC,eAAgB,uBAElB,CAAC96F,EAAAA,GAAAA,OAAsB,CACrB66F,kBAAmB,OACnBC,eAAgB,oBAElB,CAAC96F,EAAAA,GAAAA,YAA2B,CAC1B66F,kBAAmB,OACnBC,eAAgB,oBAElB,CAAC96F,EAAAA,GAAAA,cAA6B,CAC5B66F,kBAAmB,cACnBC,eAAgB,2BAElBxjG,QAAS,CACPujG,kBAAmB,OACnBC,eAAgB,oBAIPn2F,IAAetF,EAAAA,EAAAA,QAAO,CACjC6tB,aAAc,EACd6tE,oBAAoB,EACpBC,cAAc,EACdC,qBAAqB,EACrB9V,cAAc,EACd+V,qBAAsB,CACpBhxG,GAAI,KACJ6qD,SAAU,MAEZomD,gBAAgB,EAChBN,kBAAmB,OACnBC,eAAgB,kBAChBM,sBAAsB,EACtBC,SAAU,OACVC,iBAAkB,OAClBC,wBAAwB,EACxBC,eAAgB,EAChBC,cAAc,EACdC,6BAA8B,EAC9BC,4BAA6B,EAC7BC,oBAAoB,EACpBC,oCAAqC,EACrCC,0BAA2B,KAC3BC,yBAA0B,KAC1BC,iCAAkC,OAGpC,QAAep3F,EAAAA,EAAAA,GAAc,CAC3B,CAACC,GAAAA,IAAiC,CAAC5O,EAAKlI,KAAA,IAAI+W,QAASuoB,GAAOt/B,EAAA,OAAKkI,EAAMkuB,IAAI,eAAgBkJ,EAAM,EACjG,CAACxoB,GAAAA,IAAmC5O,IAClC,MAAM63E,EAAO73E,EAAMgP,IAAI,sBACvB,IAAIpO,EAASZ,EAAMkuB,IAAI,sBAAuB2pD,GAO9C,OALa,IAATA,IACFj3E,EAASA,EAAOstB,IAAI,gBAAgB,GACpCttB,EAASA,EAAOstB,IAAI,kBAAkB,IAGjCttB,CAAM,EAEf,CAACgO,GAAAA,IAA2C,CAAC5O,EAAKo4E,KAAA,IAAIvpE,QAASma,GAAMovD,EAAA,OACnEp4E,EAAMy7B,MAAM,CAAEupE,qBAAqB,EAAMC,qBAAsBj8E,GAAO,EAExE,CAACpa,GAAAA,IAA2C5O,GAASA,EAAMkuB,IAAI,uBAAuB,GAEtF,CAACtf,GAAAA,IAA8B5O,GAASA,EAAMkuB,IAAI,gBAAgB,GAClE,CAACtf,GAAAA,IAA8B5O,GAASA,EAAMkuB,IAAI,gBAAgB,GAClE,CAACtf,GAAAA,IAAgC5O,GAASA,EAAMy7B,MAAM,CAAEyzD,cAAc,EAAO8V,qBAAqB,IAElG,CAACp2F,GAAAA,IAA+B5O,GAASA,EAAMkuB,IAAI,kBAAmBluB,EAAMgP,IAAI,mBAChF,CAACJ,GAAAA,IAA6B,CAAC5O,EAAKq4E,KAAkB,IAAhB,QAAExpE,GAASwpE,EAC3CR,GAAQ73E,EAAMgP,IAAI,qBAENlV,IAAZ+U,IACFgpE,GAAmB,IAAZhpE,GAGT,IAAIjO,EAASZ,EAAMkuB,IAAI,eAAgB2pD,GAOvC,OALIA,IACFj3E,EAASA,EAAOstB,IAAI,sBAAsB,GAC1CttB,EAASA,EAAOstB,IAAI,kBAAkB,IAGjCttB,CAAM,EAEf,CAACgO,GAAAA,IAAqD,CAAC5O,EAAKs4E,KAAsB,IAAlBzpE,QAAS5a,GAAIqkF,EAC3E,OAAIrkF,IAAO+L,EAAMgP,IAAI,uCACZhP,EAAMkuB,IAAI,sCAAuC,GAGnDluB,EAAMkuB,IAAI,sCAAuCj6B,EAAG,EAE7D,CAACutG,GAAAA,IAAqC,CAACxhG,EAAKu4E,KAA6B,IAAzB1pE,QAASm3F,GAAWztB,EAClE,MAAM+G,EAAWt/E,EAAMkuB,IAAI,oBAAqBq2E,GAAiByB,IAAcA,GAE/E,OAAItB,GAAsBsB,GACjB1mB,EAASpxD,IAAI,iBAAkBw2E,GAAsBsB,IAGvDhmG,CAAK,EAEd,CAAC4O,GAAAA,GAA+B5O,GAC1BA,EAAMgP,IAAI,sBACLhP,EAGFA,EAAMkuB,IAAI,wBAAwB,GAE3C,CAACtf,GAAAA,IAAsC,CAAC5O,EAAKw4E,KAAA,IAAI3pE,QAASw9E,GAAS7T,EAAA,OAAKx4E,EAAMkuB,IAAI,uBAAwBm+D,EAAQ,EAClH,CAACz9E,GAAAA,IAA4B5O,GAASA,EAAMkuB,IAAI,wBAAwB,GACxE,CAACtf,GAAAA,IAA0B,CAAC5O,EAAKy4E,KAAwB,IAApB5pE,QAASk4E,GAAMtO,EAC9C2sB,EAAWre,EAEXqe,IAAar7F,EAAAA,GAAAA,QAAwB/J,EAAMgP,IAAI,cAAgBjF,EAAAA,GAAAA,SACjEq7F,EAAWplG,EAAMgP,IAAI,qBAUvB,OAPiBhP,EAAMy7B,MAAM,CAC3B4pE,iBAAkBrlG,EAAMgP,IAAI,WAAYN,GAAaM,IAAI,aACzDo2F,WACAS,0BAA2B,KAC3BC,yBAA0B,OAGZrqE,MAAMkpE,GAAgBS,IAAaT,GAAgBtjG,QAAQ,EAE7E,EAAC42E,EAAAA,EAAAA,GAAerpE,GAAAA,GAA8BA,GAAAA,KAAkC5O,GAASA,EAAMkuB,IAAI,wBAAwB,GAC3H,CAACtf,GAAAA,IAAwB5O,GAAS0O,GAAa+sB,MAAM,CACnD2pE,SAAUplG,EAAMgP,IAAI,YACpBq2F,iBAAkBrlG,EAAMgP,IAAI,oBAC5Bu2F,eAAgBvlG,EAAMgP,IAAI,kBAC1Bw2F,aAAcxlG,EAAMgP,IAAI,gBACxB22F,mBAAoB3lG,EAAMgP,IAAI,wBAGhC,CAACJ,GAAAA,IAAkC5O,GAASA,EAAM4D,OAAO,0BAA0Bg7B,IAAMA,IAEzF,EAACq5C,EAAAA,EAAAA,GACCupB,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACExhG,GAASA,EAAMkuB,IAAI,0BAA0B,GAEjD,CAACtf,GAAAA,IAAgC,CAAC5O,EAAK04E,KAAA,IAAI7pE,QAAS5a,GAAIykF,EAAA,OAAK14E,EAAMkuB,IAAI,iBAAkBj6B,EAAG,EAE5F,CAAC2a,GAAAA,IAA8B,CAAC5O,EAAK24E,KAAA,IAAI9pE,QAAS22F,GAAc7sB,EAAA,OAAK34E,EAAMkuB,IAAI,eAAgBs3E,EAAa,EAC5G,CAAC52F,GAAAA,IAA8C,CAAC5O,EAAK44E,KAAA,IAAI/pE,QAAS5a,GAAI2kF,EAAA,OAAK54E,EAAMkuB,IAAI,+BAAgCj6B,GAAM,EAAE,EAE7H,CAAC2a,GAAAA,IAA+B5O,GAASA,EAAMkuB,IAAI,sBAAsB,GACzE,CAACtf,GAAAA,IAAiC5O,GAASA,EAAMkuB,IAAI,sBAAsB,GAE3E,CAACtf,GAAAA,IAA2C,CAAC5O,EAAK64E,KAAA,IAAE,QAAEhqE,GAASgqE,EAAA,OAAK74E,EAAMkuB,IAAI,4BAA6Brf,EAAQ,EACnH,CAACD,GAAAA,IAA0C,CAAC5O,EAAK84E,KAAA,IAAE,QAAEjqE,GAASiqE,EAAA,OAAK94E,EAAMkuB,IAAI,2BAA4Brf,EAAQ,EAEjH,CAACD,GAAAA,IAAoC,CAAC5O,EAAK+4E,KAAA,IAAIlqE,SAAS,KAAEma,IAAQ+vD,EAAA,OAAK/4E,EAAMkuB,IAAI,mCAAoClF,EAAKha,IAAI,MAAM,EACpI,CAACJ,GAAAA,IAAsC5O,GAASA,EAAMkuB,IAAI,mCAAoC,MAE9F,CAACtf,GAAAA,IAAmC,CAAC5O,EAAK++E,KAAA,IAAIlwE,QAASqjB,GAAQ6sD,EAAA,OAAK/+E,EAAMkuB,IAAI,8BAA+BgE,EAAO,EAEpH,CAACgkE,EAAAA,IAA0B,CAACl2F,EAAKg/E,KAA0B,IAAtBnwE,QAASE,GAAQiwE,EACpD,MAAmC,cAA/BjwE,EAAOwrE,oBACFv6E,EAAMkuB,IAAI,gBAAgB,GAG5BluB,CAAK,EAGd,CAACiP,EAAAA,IAAwB,IAAMP,IAC9BA,I,YChLH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7B3vC,aAAY,GACZhkC,SAAQ,GACRnB,OAAM,GACNuqB,MAAK,GACL7/B,KAAI,GACJmlC,eAAc,GACdopE,SAAQ,GACRp5F,OAAQq5F,GACRl/F,OAAM,GACNm/F,eAAc,GACdh4E,OAAM,GACN4I,eAAc,GACd7rB,OAAM,GACNk7F,gBAAe,GACfC,aAAY,GACZC,aAAY,GACZC,aAAY,GACZ30I,OAAM,GACN2wF,cAAa,GACbtgC,MAAK,GACL4gE,GAAE,GACF2jB,WAAUA,GAAAA,K,YCzCL,MAAM93F,IAAetF,EAAAA,EAAAA,QAAO,CACjCijF,SAAS,EACTz6H,OAAQ,OACR60I,cAAc,EACdxS,SAAS,EACT74C,aAAavyC,EAAAA,EAAAA,KAAI,MAGnB,QAAe8F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAuCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACtE,CAACgqD,GAAAA,IAAqCl4E,GAASA,EAAMkuB,IAAI,WAAW,GACpE,CAACgqD,GAAAA,IAAqCl4E,GAASA,EAAMy7B,MAAM,CACzD4wD,SAAS,EACTjxC,aAAavyC,EAAAA,EAAAA,KAAI,MAGnB,CAACqvE,GAAAA,IAA6B,CAACl4E,EAAKlI,KAAgC,IAA5B+W,QAAS03B,GAAczuC,EAC7D,OAAIkI,EAAMgP,IAAI,eAAeygB,IAAI8W,EAAav3B,IAAI,OACzChP,EAAM4D,OAAO,eAAew3C,GAAeA,EAAY3gB,OAAO8L,EAAav3B,IAAI,SAGjFhP,EAAM4D,OAAO,eAAew3C,GAAeA,EAAYu7B,IAAIpwC,EAAav3B,IAAI,QAAO,EAE5F,CAACkpE,GAAAA,IAAqCl4E,GAASA,EAAMkuB,IAAI,eAAerlB,EAAAA,EAAAA,KAAI,KAE5E,CAACqvE,GAAAA,IAAoB,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASj9C,GAAQwmH,EAAA,OAAKp4E,EAAMkuB,IAAI,SAAUt8D,EAAO,EAEhF,CAACsmH,GAAAA,IAA6Bl4E,GAASA,EAAM4D,OAAO,gBAAgB5L,IAAUA,IAE9E,CAACkgF,GAAAA,IAAwBl4E,GAASA,EAAM4D,OAAO,WAAW5L,IAAUA,IAEpE,CAACiX,EAAAA,IAAwB,IAAMP,IAC9BA,IC/BI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC6Y,MAAO,EACPkkB,eAAgB,GAChBugE,uBAAwB,KAG1B,QAAe/3F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAuC,CAACl4E,EAAKlI,KAAkB,IAAhB,QAAE+W,GAAS/W,EACzD,MAAM,eAAEquC,EAAc,uBAAEugE,EAAsB,MAAEzkF,GAAUpT,EAE1D,OAAO7O,EAAMy7B,MAAM,CACjB0K,gBAAgB/8B,EAAAA,EAAAA,QAAO+8B,GACvBugE,wBAAwBt9F,EAAAA,EAAAA,QAAOs9F,GAC/BzkF,SACA,EAGJ,CAAC0kF,GAAAA,IAAqD,CAAC3mG,EAAKo4E,KAAA,IAAIvpE,SAAS,YAAEi9E,EAAW,WAAEnwF,IAAcy8E,EAAA,OACpGp4E,EAAM4D,OAAO,kBAAkBuiC,GAAkBA,EAAezxB,KAAI6xB,GAC9DA,EAAa70B,MAAM,CAAC,eAAgB,SAAW/V,EAC1C4qC,EACJe,SAAS,CAAC,eAAgB,mBAAmBrrC,GAAOA,EAAI4E,KAAKirF,EAAY98E,IAAI,SAG3Eu3B,KACN,EAGL,CAACogE,GAAAA,IAA0D,CAAC3mG,EAAKq4E,KAAA,IAAIxpE,SAAS,YAAEi9E,EAAW,WAAEnwF,IAAc08E,EAAA,OACzGr4E,EAAM4D,OAAO,kBAAkBuiC,GAAkBA,EAAezxB,KAAI6xB,GAC9DA,EAAa70B,MAAM,CAAC,eAAgB,SAAW/V,EAC1C4qC,EACJe,SAAS,CAAC,eAAgB,mBAAmBrrC,GAAOA,EAAI+K,QAAO/S,GAAMA,IAAO63F,EAAY98E,IAAI,UAG1Fu3B,KACN,EAGL,CAACogE,GAAAA,IAA8C,CAAC3mG,EAAKs4E,KAAA,IAAIzpE,QAASo3B,GAAeqyC,EAAA,OAC/Et4E,EAAM4D,OAAO,kBAAkBuiC,GAAkBA,EAAezxB,KAAI6xB,GAClEA,EACGe,SAAS,CAAC,eAAgB,mBAAmBrrC,GAAOA,EAAI+K,QAAO/S,GAAMA,IAAOgyC,SAC9E,EAGL,CAACh3B,EAAAA,IAAwB,IAAMP,IAC9BA,I,YC9CH,MAQaA,IAAetF,EAAAA,EAAAA,QAAO,CACjC,CACEqnE,WAAY,yBACZzoB,YAAa,iBACbnf,WAAY,OACZigB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAM,OACNwyC,MAAO,OACPhnC,KAAMklG,GAAAA,EAENC,YAAal+F,EAAAA,GAAAA,WACbm+F,uBAAuB,GAEzB,CACEr2B,WAAY,yBACZzoB,YAAa,iBACbnf,WAAY,mBACZigB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAM,OACNwyC,MAAO,oBACPhnC,KAAM,IAAKklG,GAAAA,EAAkBG,gBAAgB,EAAMC,eAAe,GAElEH,YAAal+F,EAAAA,GAAAA,WACbm+F,uBAAuB,GAEzB,CACEr2B,WAAY,yBACZzoB,YAAa,iBACbnf,WAAY,eACZigB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAM,OACNwyC,MAAO,eACPhnC,KAAMklG,GAAAA,EAENC,YAAal+F,EAAAA,GAAAA,WACbs+F,2BAA2B,EAC3BH,uBAAuB,GAEzB,CACEr2B,WAAY,yBACZzoB,YAAa,iBACbnf,WAAY,YACZigB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAM,OACNwyC,MAAO,YACPhnC,KAAMklG,GAAAA,EAENC,YAAal+F,EAAAA,GAAAA,WACbm+F,uBAAuB,GAEzB,CACEr2B,WAAY,SACZ3nB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAM,WACNwyC,MAAO,SACPhnC,KAAMklG,GAAAA,EAENC,YAAal+F,EAAAA,GAAAA,QAEf,CACE8nE,WAAY,WACZ3nB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAM,WACNwyC,MAAO,WACPhnC,KAAM,IAAKklG,GAAAA,EAvEbM,QAAS,IAyEPL,YAAal+F,EAAAA,GAAAA,UAEf,CACE8nE,WAAY,WACZ3nB,WAAY1B,EAAAA,GAAAA,oBACZlxD,KAAM,WACNwyC,MAAO,WACPhnC,KAAM,IAAKklG,GAAAA,EA5EbM,QAAS,IA8EPL,YAAal+F,EAAAA,GAAAA,YAIjB,QAAegG,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAuB,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,MAAEuoB,EAAK,KAAE1/B,IAAQI,EAAA,OAAKkI,EAAM4+E,QAAQ,CAACxnD,GAAQ,CACtFn3B,SAAS,EACTvI,MAAM0R,EAAAA,EAAAA,QAAO1R,IACb,EAEF,CAACwgF,GAAAA,IAA0B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASuoB,GAAOghD,EAAA,OAAKp4E,EAAMg4B,MAAM,CAACZ,EAAO,YAAY,EAAK,EAE/F,CAACnoB,EAAAA,IAAwB,IAAMP,IAC9BA,IClGH,MAAMy4F,IAAgBt+F,EAAAA,EAAAA,KAAI,CAAC,WAAY,SAAU,cAEpC6F,IAAetF,EAAAA,EAAAA,QAAO,CACjCq/B,0BAA2B0+D,KAG7B,QAAex4F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA0C,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASujC,GAAOt6C,EAAA,OAAKkI,EAAM4D,OAAO,6BAA6BoJ,IAClH,IAAIwtF,EAAYxtF,EAQhB,OALEwtF,EADExtF,EAAOyiB,IAAI2iB,GACDooD,EAAU9Z,OAAOtuC,GAEjBooD,EAAU7jB,IAAIvkC,GAGxBooD,EAAUrjF,UACLgwF,GAGF3M,CAAS,GAChB,EAEF,CAACvrF,EAAAA,IAAwB,IAAMP,IAC9BA,ICzBH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJmrF,GAAEA,KCAG,MAAMn0E,IAAetF,EAAAA,EAAAA,QAAO,CACjCg+F,KAAM,GACNC,MAAO,KAGT,QAAe14F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA0C,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,KAAEu4F,EAAI,MAAEC,IAASvvG,EAAA,OAAKkI,EAAMy7B,MAAM,CAC9F2rE,MAAMh+F,EAAAA,EAAAA,QAAOg+F,EAAK1yF,KAAI8vF,GAAQA,EAAKvwG,MACnCozG,OAAOj+F,EAAAA,EAAAA,QAAOi+F,EAAM3yF,KAAI8vF,GAAQA,EAAKvwG,OACrC,EACF,CAAC2a,GAAAA,IAAwB,IAAMF,GAC/B,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICfH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAIA,KCEN,IAAeoqF,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJotF,MAAK,GACLwiB,WAAU,GACVzkB,GAAEA,KCLG,MAAMn0E,IAAetF,EAAAA,EAAAA,QAAO,CACjCq2C,KAAM,EACN7tF,OAAQ,QACRy6H,SAAS,EACTkb,cAAc,EACdnsD,aAAavyC,EAAAA,EAAAA,KAAI,MAGnB,QAAe8F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAqCl4E,GAASA,EAAM4D,OAAO,QAAQ67C,GAAQA,EAAO,KAAIhkB,MAAM,CAC3F4wD,SAAS,EACTjxC,aAAavyC,EAAAA,EAAAA,KAAI,MAEnB,CAACqvE,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,WAAW,GAClE,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMy7B,MAAM,CACvDgkB,KAAM,EACN4sC,SAAS,IAEX,CAACnU,GAAAA,IAAyCl4E,GAASA,EAAM4D,OAAO,QAAQ67C,GAAQA,EAAO,KAEvF,CAACy4B,GAAAA,IAAoB,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASj9C,GAAQkmC,EAAA,OAAKkI,EAAMkuB,IAAI,SAAUt8D,EAAO,EAEhF,CAACsmH,GAAAA,IAA4B,CAACl4E,EAAKo4E,KAA+B,IAA3BvpE,QAASovB,GAAam6C,EAC3D,OAAIp4E,EAAMgP,IAAI,eAAeygB,IAAIwO,EAAYjvB,IAAI,OACxChP,EAAM4D,OAAO,eAAew3C,GAAeA,EAAY3gB,OAAOwD,EAAYjvB,IAAI,SAGhFhP,EAAM4D,OAAO,eAAew3C,GAAeA,EAAYu7B,IAAI14C,EAAYjvB,IAAI,QAAO,EAE3F,CAACkpE,GAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,eAAerlB,EAAAA,EAAAA,KAAI,KAC3E,CAACqvE,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GACvE,CAACgqD,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GACrE,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GAClE,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GAElE,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICnCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC6Y,MAAO,EACPzV,aAAc,GACdg7F,eAAgB,OAGZC,GAAkBj7F,IAAgBpD,EAAAA,EAAAA,QAAOoD,GAE/C,QAAemC,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAqC,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,aAAErC,EAAY,MAAEyV,IAASnqB,EAAA,OAAKkI,EAAMy7B,MAAM,CACjGjvB,aAAci7F,GAAgBj7F,GAC9ByV,SACA,EACF,CAACi2D,GAAAA,IAAyC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,aAAErC,IAAgB4rE,EAAA,OAC7Ep4E,EAAM4D,OAAO,gBAAgB2oF,GAAOA,EAAIh+E,OAAOk5F,GAAgBj7F,KAAe,EAEhF,CAAC0rE,GAAAA,IAAmC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAASovB,GAAao6C,EAAA,OAAKr4E,EAAMkuB,IAAI,kBAAkB9kB,EAAAA,EAAAA,QAAO60B,GAAa,EACzH,CAACi6C,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,iBAAkB,MACpE,CAACtf,GAAAA,IAAiC5O,GAASA,EAAMkuB,IAAI,iBAAkB,MACvE,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,iBAAkB,MACxE,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICvBH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,K,YCAC,MAAMgX,IAAetF,EAAAA,EAAAA,QAAO,CACjCyiB,SAAU,CAAC,EACXjrB,OAAQ,GACR8mG,OAAQ,KAGGC,GAAY3nG,GAASA,EAAMkuB,IAAI,UAAUlC,EAAAA,EAAAA,GACpDhsB,EAAMgP,IAAI,UACVhP,EAAMgP,IAAI,cAGZ,QAAeL,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA2B,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,cAAEnC,IAAiB5U,EAAA,OAChE6vG,GAAU3nG,EAAMy7B,OAAMryB,EAAAA,EAAAA,SAAOg4E,EAAAA,EAAAA,GAAY,CAAE10E,iBAAiB,cAAe,mBAAmB,EAGhG,CAACwrE,GAAAA,IAAiC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAAS04E,GAAanP,EAAA,OAAKuvB,GAAU3nG,EAC9E4D,OAAO,YAAYioB,GAAYA,EAASqC,IAAIq5D,EAAYtzF,IAAImV,EAAAA,EAAAA,QAAOm+E,MACnE3jF,OAAO,UAAUhD,GAAWA,EAAO2iB,SAASgkE,EAAYtzF,IAAM2M,EAASA,EAAOC,KAAK0mF,EAAYtzF,MAAM,EAExG,CAACikF,GAAAA,IAAmC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAAS5a,GAAIokF,EAAA,OAAKsvB,GAAU3nG,EACvE4D,OAAO,YAAYioB,GAAYA,EAAS4O,OAAOxmC,KAC/C2P,OAAO,UAAUhD,GAAUA,EAAOoG,QAAO2vB,GAAKA,IAAM1iC,MAAK,EAE5D,CAACgb,EAAAA,IAAwB,IAAMP,IAC9BA,IC1BI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,IAEnC,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA6C,CAACl4E,EAAKlI,KAAA,IAAI+W,QAAS8mE,GAAW79E,EAAA,OAAKsR,EAAAA,EAAAA,QAAOusE,EAAU,EAElG,CAAC1mE,EAAAA,IAAwB,IAAMP,IAC9BA,ICNI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,IAEnC,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA0C,IAAMxpE,GACjD,CAACwpE,GAAAA,IAA4C,CAACl4E,EAAKlI,KAAA,IAAI+W,QAAS+4F,GAAY9vG,EAAA,OAAKsR,EAAAA,EAAAA,QAAOw+F,EAAW,EAEnG,CAAC34F,EAAAA,IAAwB,IAAMP,IAC9BA,ICPI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCnJ,SAAS,EACT4nG,mBAAmB,EACnBC,WAAW,EACXC,qBAAqB,EACrB1nB,SAAU,OACV2nB,IAAK,mBAGP,QAAer5F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA2Cl4E,GAASA,EAAMkuB,IAAI,WAAW,GAC1E,CAACgqD,GAAAA,IAA2Cl4E,GAASA,EAAMkuB,IAAI,WAAW,GAC1E,CAACgqD,GAAAA,IAA6Cl4E,GAASA,EAAMkuB,IAAI,WAAW,GAE5E,CAACgqD,GAAAA,IAA0Cl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GACnF,CAACgqD,GAAAA,IAA0Cl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GACnF,CAACgqD,GAAAA,IAA4Cl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GAErF,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,aAAa,GACnE,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,aAAa,GACnE,CAACgqD,GAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,aAAa,GAErE,CAACgqD,GAAAA,IAAiC,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,sBAAuBrf,EAAQ,EAEnG,CAACqpE,GAAAA,IAAsB,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMkuB,IAAI,WAAYrf,EAAQ,EAE7E,CAACqpE,GAAAA,IAAiB,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAAKr4E,EAAMkuB,IAAI,MAAOrf,EAAQ,EAEnE,CAACI,EAAAA,IAAwB,IAAMP,IAC9BA,IC7BI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCilF,cAAc,EACd4Z,0BAA0B,EAC1BC,cAAc,EACdC,YAAY,EACZC,kBAAkB,EAClBrzD,cAAe,KACfszD,mBAAoB,KAGtB,QAAe15F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAoCl4E,GAASA,EAAMy7B,MAAM,CACxD0sE,YAAY,EACZpzD,cAAe,OAEjB,CAACmjC,GAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,cAAc,GAEtE,CAACgqD,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,cAAc,GACnE,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAO,CAC9DilF,cAAc,EACdga,mBAAoB,MAGtB,CAACnwB,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GAC1E,CAACgqD,GAAAA,GAAsCl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GAE1E,CAACgqD,GAAAA,IAAuCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GACvF,CAACgqD,GAAAA,IAAuCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GAEvF,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GAC1E,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GAE1E,CAACgqD,GAAAA,IAA0Cl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAClF,CAACgqD,GAAAA,IAA0Cl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAElF,CAACgqD,GAAAA,IAA2B,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASnX,GAAMI,EAAA,OAAKkI,EAAMkuB,IAAI,gBAAiBx2B,EAAK,EAE1F,CAACwgF,GAAAA,IAAgC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASnX,GAAM0gF,EAAA,OAAKp4E,EAAMkuB,IAAI,qBAAsBx2B,EAAK,EAEpG,CAACuX,EAAAA,IAAwB,IAAMP,IAC9BA,I,YCpCH,MAAM45F,GAAkB,gBAExB,IAAI10G,GAAWgvB,IAAAA,GAAAA,SAAqB0lF,IAGC,IAAjCC,GAAAA,EAAAA,QAAkB30G,MACpBA,GAAW00G,IAGN,MAAMrmJ,IAAamnD,EAAAA,EAAAA,QAAO,CAC/Bo/F,oBAAqB,CACnBC,OAAQ,GACRC,OAAQ,GACRC,OAAQ,GACRC,OAAQ,GACRC,OAAQ,GACRC,OAAQ,GACRC,YAAa,CACX7yG,KAAM,OACN8yG,UAAW,EACXC,MAAO,GACPr1G,SAAQ,GACR8vB,WAAY,OAKLhV,GAAezsD,GAAWw5E,MAAM,CAC3C/vD,oBAAqB,OAGvB,QAAeijC,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAoC,CAACl4E,EAAO6+E,IACvCA,EAAOhwE,QACF7O,EAAMkuB,IAAI,sBAAuB2wD,EAAOhwE,SAG1C7O,EAAMy7B,MAAMx5E,IAGrB,CAACi2H,GAAAA,IAA0C,CAACl4E,EAAO6+E,IAAW7+E,EAAMkuB,IAAI,sBAAuB2wD,EAAOhwE,SAEtG,CAACqpE,GAAAA,IAAoC,CAACl4E,EAAKlI,KAAA,IAAI+W,QAAS04E,GAAazvF,EAAA,OAAKkI,EAAMkuB,IAAI,sBAAuBq5D,EAAY,EAEvH,CAACrP,GAAAA,IAAsC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAAS04E,GAAanP,EAAA,OAAKp4E,EAAMkuB,IAAI,sBAAuBq5D,EAAY,EAEzH,CAACrP,GAAAA,IAAiC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAAS04E,GAAalP,EAAA,OAAKr4E,EAAMkuB,IAAI,sBAAuBq5D,EAAY,EAEpH,CAACrP,GAAAA,IAAiC,CAACl4E,EAAKs4E,KAA+B,IAA3BzpE,QAAS04E,GAAajP,EAChE,OAAIt4E,EAAMgP,IAAI,wBAA0Bu4E,EAAYtzF,KAAO+L,EAAM0R,MAAM,CAAC,sBAAuB,OACtF1R,EAAMkuB,IAAI,uBAAuB9kB,EAAAA,EAAAA,QAAOm+E,IAG1CvnF,CAAK,EAGd,CAACwhG,GAAAA,IAA6B,IAAM9yF,GAEpC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,IChEH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,KCAC,MAAMgX,IAAetF,EAAAA,EAAAA,QAAO,CACjCyiB,SAAU,CAAC,EACXjrB,OAAQ,GACR8mG,OAAQ,KAGGC,GAAY3nG,GAASA,EAAMkuB,IAAI,UAAUlC,EAAAA,EAAAA,GACpDhsB,EAAMgP,IAAI,UACVhP,EAAMgP,IAAI,cAGZ,QAAeL,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA2B,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,MAAEkmD,IAASj9D,EAAA,OACxD6vG,GAAU3nG,EAAMy7B,OAAMryB,EAAAA,EAAAA,SAAOg4E,EAAAA,EAAAA,GAAY,CAAErsB,SAAS,OAAQ,WAAW,EAGzE,CAACmjB,GAAAA,IAAqC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAAS04E,GAAanP,EAAA,OAAKuvB,GAAU3nG,EAClF4D,OAAO,YAAYioB,GAAYA,EAASqC,IAAIq5D,EAAYtzF,IAAImV,EAAAA,EAAAA,QAAOm+E,MACnE3jF,OAAO,UAAUhD,GAAWA,EAAO2iB,SAASgkE,EAAYtzF,IAAM2M,EAASA,EAAOC,KAAK0mF,EAAYtzF,MAAM,EAExG,CAACikF,GAAAA,IAAuC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAAS5a,GAAIokF,EAAA,OAAKsvB,GAAU3nG,EAC3E4D,OAAO,YAAYioB,GAAYA,EAAS4O,OAAOxmC,KAC/C2P,OAAO,UAAUhD,GAAUA,EAAOoG,QAAO2vB,GAAKA,IAAM1iC,MAAK,EAE5D,CAACgb,EAAAA,IAAwB,IAAMP,IAC9BA,IC1BI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC8/F,WAAY,KACZhnB,QAAQ,EACRn1E,UAAU,EACVo8F,UAAU,IAGZ,QAAex6F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAgC,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAClDkI,EAAM4D,OAAO,cAAc3P,GAAOA,IAAO4a,EAAU,KAAOA,GAAS,EAGrE,CAACqpE,GAAAA,IAAmC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMkuB,IAAIrf,EAAU,SAAW,YAAY,EAAK,EAC5G,CAACqpE,GAAAA,IAAqCl4E,GACpCA,EAAMy7B,MAAM,CACVymD,QAAQ,EACRinB,UAAU,IAGd,CAACjxB,GAAAA,IAAmCl4E,GAClCA,EAAMy7B,MAAM,CACVymD,QAAQ,EACRinB,UAAU,IAId,CAACjxB,GAAAA,IAAqCl4E,GAASA,EAAMkuB,IAAI,YAAY,GACrE,CAACgqD,GAAAA,IAAuCl4E,GAASA,EAAMkuB,IAAI,YAAY,GACvE,CAACgqD,GAAAA,IAAqCl4E,GAASA,EAAMkuB,IAAI,YAAY,GAErE,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,IChCH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJmrF,GAAEA,KCEJ,IAAef,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJ82F,QAAO,GACPoZ,WAAU,GACV7yC,MAAK,GACL4gB,UAAS,GACTkN,GAAEA,KCNJ,MAAMumB,GAAgB,CACpB3+D,SAAU,GACVF,UAAW,GACXmyB,OAAQ,GACR2sC,iBAAkB,GAClBC,gBAAiB,GACjBltC,kBAAmB,GACnBtvB,iBAAkB,GAClBuvB,aAAc,GACdlB,UAAW,GACXC,iBAAkB,GAClBC,iBAAkB,GAClBkuC,aAAc,GACdjtC,WAAY,GACZhB,YAAa,GACbkB,sBAAuB,GACvBD,eAAgB,GAChBtiC,WAAY,GACZ2hC,WAAY,GACZC,UAAW,GACX2tC,gBAAiB,GACjBC,SAAU,GACVC,cAAe,GACfvrB,aAAc,IAGHzvE,IAAetF,EAAAA,EAAAA,QAAO,CACjCyiB,SAAUu9E,GACVxoG,OAAQwoG,GACR1B,OAAQ0B,KAGJO,GAAa96F,IACjB,MAAMnX,EAAO,IACRmX,EACH+6F,yBAA0B/6F,EAAQg7F,iBAAmB,CAAC,GAAGC,UAAY,GACrEC,gCAAiCl7F,EAAQm7F,mBAAqB,CAAC,GAAGC,eAAiB,GACnFC,wBAAyBr7F,EAAQs7F,mBAAqB,CAAC,GAAGC,OAAS,IAG/DxpG,EAAS,CAAEirB,SAAU,CAAC,EAAGjrB,OAAQ,CAAC,GASxC,OAPAF,OAAOC,KAAKjJ,GAAMG,SAAQE,IACpBsL,MAAMC,QAAQ5L,EAAKK,MACrB6I,EAAOirB,SAAS9zB,GAAOL,EAAKK,GAAK2iB,QAAO,CAACC,EAAKsuC,KAAS,IAAMtuC,EAAK,CAACsuC,EAAKh1D,IAAKg1D,KAAS,CAAC,GACvFroD,EAAOA,OAAO7I,GAAOL,EAAKK,GAAK2c,KAAIu0C,GAAQA,EAAKh1D,KAClD,IAGK2M,CAAM,EAGT+mG,GAAY3nG,GACHA,EAAMgP,IAAI,YAAY48B,SAEvBlxB,QAAO,CAACC,EAAK5iB,IAAQ4iB,EAAIqd,MAAM,CAAC,SAAUjgC,IAAMi0B,EAAAA,EAAAA,GAC1DhsB,EAAM0R,MAAM,CAAC,SAAU3Z,IACvBiI,EAAM0R,MAAM,CAAC,WAAY3Z,OACvBiI,GAGN,QAAe2O,EAAAA,EAAAA,GAAc,CAC3B,CAACunF,EAAAA,IAA2B,CAACl2F,EAAO6+E,IAAW8oB,IAAUv+F,EAAAA,EAAAA,QAAOugG,GAAW9qB,EAAOhwE,WAElF,EAACopE,EAAAA,EAAAA,GACCkH,EAAAA,GACAkrB,EAAAA,KACE,CAACrqG,EAAO6+E,KACV,MAAMyrB,EAAU3C,IAAUv+F,EAAAA,EAAAA,QAAOugG,GAAW9qB,EAAOhwE,WAEnD,OAAO7O,EACJ4+E,QAAQ,CAAC,YAAa0rB,EAAQt7F,IAAI,aAClC4vE,QAAQ,CAAC,UAAW0rB,EAAQt7F,IAAI,WAChC4vE,QAAQ,CAAC,UAAW0rB,EAAQt7F,IAAI,UAAU,EAG/C,CAACC,EAAAA,IAAwB,IAAMP,IAC9BA,I,YChFH,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CAC1BmhG,kBAAkB1hG,EAAAA,EAAAA,KAAI,MAGxB,QAAe8F,EAAAA,EAAAA,GAAc,CAC3B,CAAC67F,GAAAA,IAAwC,CAACxqG,EAAKlI,KAA6C,IAAzC+W,SAAS,cAAEkwB,EAAa,OAAE0rE,IAAU3yG,EACrF,MAAM4yG,GAAc7hG,EAAAA,EAAAA,KAAI4hG,EAAOzjG,QAAOmzB,GAAKA,EAAEwwE,UAASj2F,KAAIylB,GAAKA,EAAElmC,MAC3D22G,GAAqB/hG,EAAAA,EAAAA,KAAI4hG,EAAO/1F,KAAIylB,GAAKA,EAAElmC,MAC3C4mD,GAAWhyC,EAAAA,EAAAA,MAAIO,EAAAA,EAAAA,QAAO21B,GACzBrqB,KAAI8yB,GAAKA,EAAEx4B,IAAI,aAAYghB,UAAUhpB,QAAO0P,GAAKk0F,EAAmBn7E,IAAI/Y,MAE3E,OAAO1W,EAAMkuB,IAAI,mBAAoB2sB,EAAS20C,MAAMkb,GAAa,EAEnE,CAACF,GAAAA,IAAiC,CAACxqG,EAAKo4E,KAAA,IAAIvpE,QAASgsC,GAAUu9B,EAAA,OAAKp4E,EAAMkuB,IAAI,oBAAoBrlB,EAAAA,EAAAA,KAAIgyC,GAAU,EAChH,CAAC2vD,GAAAA,IAA4C,CAACxqG,EAAKq4E,KAAuC,IAAnCxpE,SAAS,MAAEg8F,EAAK,SAAE1mE,IAAYk0C,EACnF,OAAIl0C,EACKnkC,EAAMkuB,IAAI,mBAAoBluB,EAAMgP,IAAI,oBAAoB2nE,IAAIk0B,EAAM77F,IAAI,QAG5EhP,EAAMkuB,IAAI,mBAAoBluB,EAAMgP,IAAI,oBAAoB0xE,OAAOmqB,EAAM77F,IAAI,OAAO,EAE7F,CAACC,EAAAA,IAAwB,IAAMP,IAC9BA,ICtBH,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CAC1B0hG,oBAAoBjiG,EAAAA,EAAAA,KAAI,MAG1B,QAAe8F,EAAAA,EAAAA,GAAc,CAC3B,CAAC67F,GAAAA,IAAwC,CAACxqG,EAAKlI,KAAqC,IAAjC+W,SAAS,cAAEkwB,IAAiBjnC,EAC7E,MAAMizG,EAAahsE,EAAc/3B,QAAOwgC,IAAMA,EAAEwjE,cAAat2F,KAAI8yB,GAAKA,EAAEyjE,oBAExE,OAAOjrG,EAAMkuB,IAAI,sBAAsBrlB,EAAAA,EAAAA,KAAIkiG,GAAY,EAEzD,CAACP,GAAAA,IAA8C,CAACxqG,EAAKo4E,KAAyC,IAArCvpE,SAAS,QAAEq8F,EAAO,SAAE/mE,IAAYi0C,EACvF,OAAIj0C,EACKnkC,EAAMkuB,IAAI,qBAAsBluB,EAAMgP,IAAI,sBAAsB2nE,IAAIu0B,EAAQl8F,IAAI,QAGlFhP,EAAMkuB,IAAI,qBAAsBluB,EAAMgP,IAAI,sBAAsB0xE,OAAOwqB,EAAQl8F,IAAI,OAAO,EAEnG,CAACC,EAAAA,IAAwB,IAAMP,IAC9BA,ICnBH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7B2oB,OAAM,GACNU,SAAQA,K,kCCKV,MAAMC,GAAMv0B,EAAWnL,EAAAA,GAAAA,UAAwB,GACzCqF,GAAc8F,EAAWnL,EAAAA,GAAAA,eAA6B,GACtD5lD,GAAmC,KAAhBirD,GACnBs6B,GAAwB,CAC5BC,WAAY,IACZjtB,OAAQ,GACRrN,QAAS,GACTu6B,cAAe,IAEX7tG,IAAS8tG,EAAAA,GAAAA,MACTC,GAA6B50B,EAAWnL,EAAAA,GAAAA,kBAExCh9D,IAAetF,EAAAA,EAAAA,QAAO,CAC1BgiG,OACAr6B,eACAjrD,mBACApoB,OAAM,GACNguG,aAAcD,GACdE,SAAS,EACTN,yBACAO,gBAAgB,EAChBC,UAAU,EACV9lF,UAAU,EACV+lF,iBAAiB,EACjBvK,sBAAsB,EACtBwK,2BAA2B,EAC3BC,iBAAiB,EACjBC,YAAa,EACb/tB,YAAY,EACZguB,aAAa,IAGTjqJ,IAAamnD,EAAAA,EAAAA,QAAO,CACxBgiG,IAAK,GACLr6B,YAAa,GACb46B,SAAS,EACT7lF,iBAAiB,EACjBpoB,OAAM,GACN2tG,yBACAO,gBAAgB,EAChBC,UAAU,IAGN74G,GAAQgN,GAAS/9C,GAAWw5E,MAAM,CACtCpvB,aAAcrM,EAAMgP,IAAI,gBACxB08F,aAAc1rG,EAAMgP,IAAI,gBACxB+W,SAAU/lB,EAAMgP,IAAI,YACpB88F,gBAAiB9rG,EAAMgP,IAAI,mBAC3BuyF,qBAAsBvhG,EAAMgP,IAAI,wBAChC+8F,0BAA2B/rG,EAAMgP,IAAI,6BACrCg9F,gBAAiBhsG,EAAMgP,IAAI,mBAC3Bi9F,YAAajsG,EAAMgP,IAAI,eACvBkvE,WAAYl+E,EAAMgP,IAAI,cACtBk9F,YAAalsG,EAAMgP,IAAI,iBAGzB,QAAeL,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAkB,CAACl4E,EAAKlI,KAAwB,IAApB+W,QAAS6V,GAAM5sB,EAC1C,MAAMq0G,GAAU/iG,EAAAA,EAAAA,QAAOsb,GACpB9gB,OAAO,gBAAgBwoG,GAAQA,EAAK1xF,QACnC,CAACC,EAAK3iB,EAAOD,IAAQ4iB,EAAIuT,IAAImP,KAAWtlC,GAAK6wC,cAAe5wC,KAC5DoR,EAAAA,EAAAA,QAAO,CAAC,MAET8kB,IAAI,mBAAmB,GAE1B,OAAOluB,EAAMy7B,MAAM0wE,EAAQ,EAG7B,CAACj0B,EAAAA,IAA0B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,aAAE68F,IAAgBtzB,EAAA,OAAKp4E,EAAMkuB,IAAI,eAAgBw9E,EAAa,EAE5G,CAACxzB,EAAAA,IAAqC,CAACl4E,EAAKq4E,KAA4B,IAAxBxpE,QAASw9F,GAAUh0B,EACjE,OAA4B,MAAxBg0B,EAASf,WACJtrG,EAAMkuB,IAAI,WAAW,GAGvBluB,EAAMy7B,MAAM,CAAE4vE,sBAAuBgB,EAAUT,gBAAgB,GAAQ,EAEhF,CAAC1zB,EAAAA,IAAmC,CAACl4E,EAAKs4E,KAAA,IAAIzpE,QAASw9F,GAAU/zB,EAAA,OAAKt4E,EAAMkuB,IAAI,wBAAyBm+E,EAAS,EAElH,CAACn0B,EAAAA,IAAsB,CAACl4E,EAAKu4E,KAAA,IAAE,QAAE1pE,GAAS0pE,EAAA,OAAKv4E,EAAMkuB,IAAI,WAAYrf,EAAQ,EAC7E,CAACqpE,EAAAA,IAA6B,CAACl4E,EAAKw4E,KAAA,IAAE,QAAE3pE,GAAS2pE,EAAA,OAAKx4E,EAAMkuB,IAAI,kBAAmBrf,EAAQ,EAE3F,CAACqpE,EAAAA,IAAmB,CAACl4E,EAAKy4E,KAAA,IAAI5pE,SAAS,MAAEzD,EAAK,MAAEpT,IAASygF,EAAA,OAAKz4E,EAAMkuB,IAAI9iB,EAAOpT,EAAM,EAErF,CAACkgF,EAAAA,IAAgBllF,GAEjB,CAACs5G,GAAAA,IAAoCtsG,GAASA,EAAMkuB,IAAI,cAAc,GAEtE,CAACgqD,EAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,YAAY,GACjE,CAACgqD,EAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,YAAY,GACnE,CAACgqD,EAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,YAAY,GAEjE,CAACjf,EAAAA,IAA+Bjc,GAChC,CAACic,EAAAA,IAAgCjP,GAASA,EAAMkuB,IAAI,mBAAmB,GACvE,CAACjf,EAAAA,IAAkCjc,IAClC0b,I,iPC9FH,MAAQkkE,MAAKA,KAAKxrD,EAAAA,EAAAA,IAAM9hB,OAAOkD,SAASC,KAAKqe,MAAM,KAAK,IAAM,IAEjDpY,IAAetF,EAAAA,EAAAA,QAAO,CACjCmjG,aAAc,oCACdhmD,KAAMimD,GAAAA,EAAAA,qBACNC,UAAWD,GAAAA,EAAAA,eACX92B,MAAO,wBACPg3B,QAAS,GACTC,WAAW,EACXC,WAAY,KACZh6B,MAAOA,IAAS,MAChBi6B,gBAAiB,CAAC,IAAK,IAAK,KAC5BC,WAAY,CACV,UACA,SAEF/oD,OAAQ,CACNu1B,QAAS1rE,EAAAA,EAAAA,MAAmB,CAAC,QAAS,MAAO,SAAU,YACvD2rE,OAAQ3rE,EAAAA,EAAAA,MAAmB,CAAC,QAAS,MAAO,SAAU,YAExDrQ,IAAK,CACHwvG,MAAO,CACLC,SAAU,uCACVC,UAAW,6CAGfC,WAAY,CACVC,mBAAoB,KACpBC,YAAa,KACbC,QAAS,KACTC,SAAU,CACRx+F,KAAM,KACNoiE,KAAM,OAGVq8B,OAAQC,KAGV,QAAe7+F,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,IAAmC,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKyV,EAAAA,GAAAA,IAAmBvN,GAAOoJ,EAAAA,EAAAA,QAAOyF,GAAS,GACrGH,IC9CI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCnV,GAAI,KACJL,SAAU,gBACV8J,OAAQ,KACRhD,QAAS,GACT+yG,QAAS,GACTvrB,QAAQ,EACRwrB,YAAY,EACZ3nF,UAAU,EACV4nF,YAAY,EACZC,eAAe,EACfC,YAAY,EACZC,iBAAiB,EACjBC,kBAAkB,EAClBjoH,YAAY,EACZkoH,qBAAqB,EACrBC,gBAAgB,EAChBC,qBAAsB,KACtBC,kBAAmB,KACnBC,mBAAoB,KACpBC,mBAAoB,KACpBC,oBAAqB,KACrBC,YAAa,KACbC,eAAgB,KAChBC,sBAAuB,KACvBC,uBAAwB,KACxBC,wBAAyB,OAG3B,QAAehgG,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAiC,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,IAAE9W,EAAG,MAAEC,IAASF,EAAA,OAAKkI,EAAMkuB,IAAIn2B,EAAKC,EAAM,EAE/F,CAACkgF,EAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,UAAU,GAChE,CAACgqD,EAAAA,IAAoC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMkuB,IAAI,UAAU,GAAOuN,OAAMryB,EAAAA,EAAAA,QAAOyF,GAAS,EAC9G,CAACqpE,EAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,UAAU,GAEhE,CAACgqD,EAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,UAAU,GAClE,CAACgqD,EAAAA,IAAsCl4E,GAAS0O,GAAa+sB,MAAM,CACjE/9B,OAAQsC,EAAMgP,IAAI,UAClBlpB,WAAYka,EAAMgP,IAAI,gBAExB,CAACkpE,EAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,UAAU,GAElE,CAACgqD,EAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAC9E,CAACgqD,EAAAA,IAAqC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,MAAE+/F,KAAU//F,IAAWwpE,EAAA,OAC9Er4E,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAOyF,IAAUqf,IAAI,uBAAuB,EAAM,EAEhE,CAACgqD,EAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAE9E,CAACgqD,EAAAA,IAAyC,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAOyF,GAAS,EAE9F,CAACqpE,EAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GACnE,CAACgqD,EAAAA,IAA8B,CAACl4E,EAAKu4E,KAAA,IAAI1pE,SAAS,UAAEggG,IAAat2B,EAAA,OAAKv4E,EAAMy7B,MAAM,CAChFqyE,iBAAiB,EACjBC,iBAAkBc,GAClB,EACF,CAAC32B,EAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GAEnE,CAACgqD,EAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,cAAc,GACrE,CAACgqD,EAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,cAAc,GAErE,CAACgqD,EAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,cAAc,GAE5D,CAAC+wD,EAAAA,IAAsB,CAACj/E,EAAKw4E,KAAA,IAAI3pE,SAAS,cAAEogE,IAAiBuJ,EAAA,OAAKx4E,EAAMkuB,IAAI,SAAU+gD,EAAc,EAEpG,CAAChgE,EAAAA,IAAwB,IAAMP,IAC9BA,IChEH,QAAeC,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAqC,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,KAAEnX,IAAQI,EAAA,OAAKssF,EAAAA,GAAAA,KAAWh7E,EAAAA,EAAAA,QAAO1R,GAAM,EAChG,CAACwgF,EAAAA,IAAmC,KAAM9uE,EAAAA,EAAAA,QAAO,CAAEjJ,MAAO,cAE1D,CAAC8O,EAAAA,IAAwB,IANC,YCF5B,IAAe6yE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,KCDC,MAAMgX,IAAetF,EAAAA,EAAAA,QAAO,CACjC84E,QAAQ,EACRp8F,YAAY,IAGd,QAAe6oB,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,UAAU,GAC9D,CAACgqD,EAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,UAAU,GAChE,CAACgqD,EAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,UAAU,GAE9D,CAACgqD,EAAAA,IAAqBl4E,GAASA,EAAMkuB,IAAI,cAAc,GACvD,CAACgqD,EAAAA,IAAqBl4E,GAASA,EAAMkuB,IAAI,cAAc,GAEvD,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICbI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,IAE7B0lG,GAAaA,CAAC9uG,EAAO/L,EAAIgM,IAAYD,EAAM0U,KAAIi5C,GAC/CA,EAAW3+C,IAAI,QAAU/a,GAAa,OAAPA,EAC1B05D,EAAW31B,MAAM,CAAC,QAAS,WAAY/3B,GAGzC0tD,IAGT,QAAeh/C,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAkC,CAACl4E,EAAKlI,KAAA,IAAI+W,QAASjO,GAAQ9I,EAAA,OAAKkI,EAAM0U,KAAIi5C,GACvEA,EAAW3+C,IAAI,QAAUpO,EAAO3M,IAC3BmV,EAAAA,EAAAA,QAAOxI,GAGT+sD,GACP,EAEF,CAACuqB,EAAAA,IAA+B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,GAAE5a,IAAMmkF,EAAA,OAAK02B,GAAW9uG,EAAO/L,GAAI,EAAK,EAC3F,CAACikF,EAAAA,IAAiCl4E,GAAS8uG,GAAW9uG,EAAO,MAAM,GACnE,CAACk4E,EAAAA,IAA+Bl4E,GAAS8uG,GAAW9uG,EAAO,MAAM,GAEjE,CAACk4E,EAAAA,IAAkC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,QAASjO,GAAQy3E,EAAA,OAAKr4E,EAAMa,MAAKuI,EAAAA,EAAAA,QAAOxI,GAAQ,EAE7F,EAACq3E,EAAAA,EAAAA,GACCC,EAAAA,GACAA,EAAAA,KACE,CAACl4E,EAAKs4E,KAAA,IAAIzpE,QAAS5a,GAAIqkF,EAAA,OAAKt4E,EAAMgH,QAAOwgC,GAAKA,EAAEx4B,IAAI,QAAU/a,GAAG,EAErE,CAACiiG,EAAAA,IAAqC,CAACl2F,EAAKu4E,KAAA,IAAI1pE,SAAS,YAAE4+C,IAAe8qB,EAAA,OAAKnvE,EAAAA,EAAAA,QAAOqkD,EAAY,EAClG,CAACx+C,EAAAA,IAAwB,IAAMP,IAC9BA,ICjCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCnJ,SAAS,IAGX,QAAe0O,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,WAAW,GAC9D,CAACgqD,EAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,WAAW,GAChE,CAACgqD,EAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,WAAW,GAE9D,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICVI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CAAC,GAEpC,QAAeuF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAiC,CAACl4E,EAAKlI,KAAA,IAAI+W,QAAS8+C,GAAY71D,EAAA,OAAKsR,EAAAA,EAAAA,QAAOukD,EAAW,EACxF,CAACuqB,EAAAA,IAA+B,KAAM9uE,EAAAA,EAAAA,QAAO,CAAEgpC,MAAO,CAAEiyC,WAAY,CAAErT,QAAS,gBAE/E,CAACkH,EAAAA,IAAkC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAAS8+C,GAAYyqB,EAAA,OAAKhvE,EAAAA,EAAAA,QAAOukD,EAAW,EAEzF,EAACsqB,EAAAA,EAAAA,GACChpE,EAAAA,GACAipE,EAAAA,GACAA,EAAAA,KACE,IAAMxpE,IACTA,ICdH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,KCDN,IAAeoqF,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAI,GACJ06C,MAAKA,KCJA,MAAM1jC,IAAetF,EAAAA,EAAAA,QAAO,CACjC2lG,YAAa,KACbnD,gBAAgB,EAChBh6I,OAAQ,YACR2wF,cAAe,OACfwkC,KAAM,aACN+d,oBAAoB,EACpBQ,wBAAwB,EACxB0J,sBAAsB,EACtBC,uBAAuB,EACvBC,UAAU,EACV9M,aAAa,IAGf,QAAezzF,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GACnE,CAACgqD,EAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GACrE,CAACgqD,EAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAEnE,CAACgqD,EAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GACxE,CAACgqD,EAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC1E,CAACgqD,EAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAExE,CAACgqD,EAAAA,IAA2B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,SAAUrf,EAAQ,EAChF,CAACqpE,EAAAA,IAAkC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMkuB,IAAI,gBAAiBrf,EAAQ,EAC9F,CAACqpE,EAAAA,IAA4B,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAAKr4E,EAAMkuB,IAAI,OAAQrf,EAAQ,EAE/E,CAACqpE,EAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,sBAAuBluB,EAAMgP,IAAI,uBAEpF,CAACkpE,EAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC5E,CAACgqD,EAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAE9E,CAACgqD,EAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC3E,CAACgqD,EAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAE7E,CAACgqD,EAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC5E,CAACgqD,EAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC1E,CAACgqD,EAAAA,IAAqCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC3E,CAACgqD,EAAAA,IAAqCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC3E,CAACgqD,EAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC5E,CAACgqD,EAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC5E,CAACgqD,EAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GACvE,CAACgqD,EAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,eAAe,GACzE,CAACgqD,EAAAA,IAAwCl4E,GAASA,EAAMkuB,IAAI,eAAe,GAC3E,CAACgqD,EAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,eAAe,GACzE,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,I,+CCxCH,MAAMygG,GAASC,GAAUt3E,KAAKu3E,MAAe,IAATD,GAAgB,IAC9CE,GAAkBnmF,GAAMA,EAAEomF,MAAQ,CACtCzgG,KAAMqa,EAAEra,MAAO0gG,EAAAA,GAAAA,IAAWrmF,EAAEra,MAAQqa,EAAEpxB,IACtC9D,GAAIk1B,EAAEpxB,IACNw3G,MAAOpmF,EAAEomF,MACTh4E,MAAOpO,EAAEsmF,SACThoE,MAAO,CAAEC,KAAMve,EAAEsmF,WACf,CACF3gG,KAAMqa,EAAEra,MAAO0gG,EAAAA,GAAAA,IAAWrmF,EAAEra,MAAQqa,EAAEpxB,IACtC9D,GAAIk1B,EAAEpxB,IACNw/B,MAAOpO,EAAEsmF,SACThoE,MAAO,CAAEC,KAAMve,EAAEsmF,WAGbC,GAAyB3tE,IAAK,CAClCkkD,OAAO0pB,EAAAA,GAAAA,IAAY5tE,EAAE6tE,aACrB9gG,KAAM8T,KAAOmf,EAAE6tE,aAAa3yE,OAAO,WACnC4kE,SAAU,MACV5tG,GAAI8tC,EAAEhqC,IACNw/B,MAAOwK,EAAE0tE,WAGLI,GAAuB9tE,IAAK,CAChCoyD,QAASpyD,EAAEoyD,QACX3K,SAAUznD,EAAEynD,WAwHRsmB,GAAqCp4G,GACzCA,EAAKgd,KAAIqtB,IAAK,IACT2tE,GAAuB,IAAK3tE,EAAE,GAAIhqC,IAAKgqC,EAAE,GAAGpf,KAAMitF,YAAa7tE,EAAE,GAAGpf,OACvE4U,MAAO43E,GAAOptE,EAAE,GAAGguE,OACnBtoE,MAAO,CACLC,KAAMynE,GAAOptE,EAAE,GAAGguE,OAClB5zE,QAAS4F,EAAErtB,KAAIC,IAAK,CAClB7F,KAAM6F,EAAEq7F,eACR/7G,GAAI0gB,EAAEq7F,eACNz4E,MAAO43E,GAAOx6F,EAAEo7F,OAChBtoE,MAAO,CACLC,KAAMynE,GAAOx6F,EAAEo7F,iBAOZE,GAAeA,CAACC,EAASC,KACpC,IAAIz4G,EAEJ,OAAQw4G,GACN,KAAKE,GAAAA,GAAAA,UAAyB14G,EA1IDA,KAC/B,MAAM24G,GAAMC,EAAAA,GAAAA,IAAY54G,GAElB64G,EAAe74G,EAAKsP,QADL+6B,GAAKA,EAAE0tE,SAAa,MAAcY,IAGjDG,GAAaC,EAAAA,GAAAA,IAAeF,GAElC,IAAIG,EAAaF,EAEjB,GAAIA,EAAW32G,OAAS,EAAG,CACzB,MAAM82G,EAAcH,EAAW5jE,MAAM,EAAG,GAClCgkE,EAAaJ,EAAW5jE,MAAM,GAE9B6iE,GAAWa,EAAAA,GAAAA,IAAYM,GAC7BD,EAAY9vG,KAAK,CACf9I,IAAK,iBACLw3G,MAAOqB,EAAWl8F,KAAIm8F,IAAM,CAC1B/hG,MAAM0gG,EAAAA,GAAAA,IAAWqB,EAAG/hG,MACpB/W,IAAK84G,EAAG94G,QAEV03G,aAGFiB,EAAaC,CACf,CAEA,OAAOD,EAAWh8F,IAAI46F,GAAgB,EAgHCwB,CAAyBX,GAAU,MACxE,KAAKC,GAAAA,GAAAA,SAAwB14G,EA5IDA,IAAQA,EAAKgd,IAAI46F,IA4ITyB,CAAwBZ,GAAU,MACtE,KAAKC,GAAAA,GAAAA,qBAAoC14G,EA/GCA,IAC5CA,EAAKgd,KAAIqtB,IAAK,CACZjzB,KAAMizB,EAAEhqC,IACR9D,GAAI8tC,EAAEhqC,IACNw/B,MAAOwK,EAAEivE,YAAYh5G,MACrByvC,MAAO,CACLC,KAAM5P,KAAKu3E,MAAoC,IAA9BF,GAAOptE,EAAEivE,YAAYh5G,aAyGQi5G,CAAsCd,GAAU,MAChG,KAAKC,GAAAA,GAAAA,eAA8B14G,EArGVA,IAAQm4G,GAAqBn4G,GAqGZw5G,CAAqBf,GAAU,MACzE,KAAKC,GAAAA,GAAAA,kBAAiC14G,EApGFA,IAAQA,EAAKgd,KAAIqtB,IAAK,IACzD2tE,GAAuB3tE,GAC1B0F,MAAO,CACL8zB,SAAU,CACR,CACEhkC,MAAOwK,EAAE0tE,SACT3gG,KAAM,WACN7a,GAAI,WACJwzC,MAAO,CACLC,KAAM3F,EAAE0tE,YAId/nE,KAAM3F,EAAE0tE,cAuFqC0B,CAAgChB,GAAU,MACvF,KAAKC,GAAAA,GAAAA,kBAAiC14G,EApFFA,IACtCA,EAAKgd,KAAIqtB,IAAK,IACT2tE,GAAuB3tE,GAC1B0F,MAAO,CACLC,KAAM3F,EAAE0tE,SACRziB,SAAUjrD,EAAEirD,SAASokB,QAAQ18F,KAAIyU,IAAK,CACpCoO,MAAOpO,EAAEsmF,SACT3gG,KAAMqa,EAAEpxB,IACR9D,GAAIk1B,EAAEpxB,IACN0vC,MAAO,CACLC,KAAMve,EAAEsmF,mBA0E+B4B,CAAgClB,GAAU,MACvF,KAAKC,GAAAA,GAAAA,kBAAiC14G,EAnDJA,IAAQm4G,GAAqB,CACjE1b,QAASr8D,KAAKu3E,MAAqB,IAAf33G,EAAKy8F,SACzB3K,SAAU1xD,KAAKu3E,MAAsB,IAAhB33G,EAAK8xF,YAiDqB8nB,CAA8BnB,GAAU,MACrF,KAAKC,GAAAA,GAAAA,qBAAoC14G,EA/CCA,IAC5CA,EAAKgd,KAAIqtB,IAAK,IACT2tE,GAAuB3tE,GAC1BxK,MAAO43E,GAAOptE,EAAEivE,YAAYh5G,OAC5ByvC,MAAO,CACLC,KAAoC,IAA9BynE,GAAOptE,EAAEivE,YAAYh5G,OAC3Bg5G,YAAa,CAAC,CACZliG,KAAM,cACNyoB,MAAO43E,GAAOptE,EAAEivE,YAAYh5G,OAC5B/D,GAAI,cACJwzC,MAAO,CACLC,KAAoC,IAA9BynE,GAAOptE,EAAEivE,YAAYh5G,eAoCeu5G,CAAsCpB,GAAU,MAChG,KAAKC,GAAAA,GAAAA,sBAAqC14G,EAAOo4G,GAAmCK,GAAU,MAC9F,KAAKC,GAAAA,GAAAA,wBAAuC14G,EAvEHA,IAC3CA,EAAKgd,KAAIqtB,IAAK,IACT2tE,GAAuB3tE,GAC1B0F,MAAO,CACLC,KAAM3F,EAAE0tE,SACR+B,cAAezvE,EAAEyvE,cAAcJ,QAAQ18F,KAAIyU,IAAK,CAC9CoO,MAAOpO,EAAEsmF,SACT3gG,KAAMqa,EAAEra,KACR7a,GAAIk1B,EAAEpxB,IACN0vC,MAAO,CACLC,KAAMve,EAAEsmF,mBA6DqCgC,CAAqCtB,GAAU,MAClG,KAAKC,GAAAA,GAAAA,qBAAoC14G,EAAOo4G,GAAmCK,GAAU,MAC7F,QAASz4G,EAAO,KAGlB,OAAOg6G,GAAAA,GAAAA,IAAyBxB,GAASz0E,OAAMryB,EAAAA,EAAAA,QAAO,CAAE1R,SAAQ,ECrLrDgX,IAAetF,EAAAA,EAAAA,QAAO,CACjCuoG,KAAM,GACNlqE,MAAO,CACLxlB,MAAO,EACP2vF,eAAgB,GAElBpoB,SAAU,CACRvnE,MAAO,EACP2vF,eAAgB,GAElBC,OAAQ,GACR7kG,OAAQ,CACN6kG,OAAQ,GACRn9I,OAAQ,MA0CZ,QAAei6C,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA+B,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,MAAE44B,EAAK,KAAE/vC,EAAI,SAAE8xF,IAAY1xF,EAAA,OAAKkI,EAChFkuB,IAAI,QAAQ9kB,EAAAA,EAAAA,QAAO1R,IACnBw2B,IAAI,SAAS9kB,EAAAA,EAAAA,QAAOq+B,IACpBvZ,IAAI,YAAY9kB,EAAAA,EAAAA,QAAOogF,IACvBxxD,MAAM,CAAC,SAAU,WAAW5uB,EAAAA,EAAAA,QA3CT0oG,EAACrqE,EAAO+hD,KAC9B,MAAMvnE,EAAQguF,GAAaG,GAAAA,GAAAA,eAA8B,CAAEjc,QAAS1sD,EAAMxlB,MAAOunE,SAAUA,EAASvnE,QAC9F+qE,EAAWijB,GAAaG,GAAAA,GAAAA,SAAwB3oE,EAAMulD,UACtD4kB,EAAiB3B,GAAaG,GAAAA,GAAAA,kBAAiC,CAAEjc,QAAS1sD,EAAMmqE,eAAgBpoB,SAAUA,EAASooB,iBACnHG,EAAyB9B,GAAaG,GAAAA,GAAAA,qBAAoC3oE,EAAMisD,UAChFse,EAAgB/B,GAAaG,GAAAA,GAAAA,kBAAiC3oE,EAAMisD,UACpEue,EAAyBhC,GAAaG,GAAAA,GAAAA,qBAAoC3oE,EAAMulD,UAChF7xB,EAAY80C,GAAaG,GAAAA,GAAAA,UAAyB3oE,EAAM0zB,WAI9D,MAAO,CACLy2C,EACAK,EACAF,EACA9vF,EACA+vF,EACAhlB,EATuBijB,GAAaG,GAAAA,GAAAA,kBAAiC3oE,EAAMisD,UAC/Cuc,GAAaG,GAAAA,GAAAA,wBAAuC3oE,EAAMisD,UAWtFv4B,EACD,EAsBqC22C,CAAgBrqE,EAAO+hD,IAAW,EAExE,CAACtR,EAAAA,IAA+B,CAACl4E,EAAKo4E,KAA2C,IAAvCvpE,SAAS,OAAEgjG,EAAM,YAAEK,IAAe95B,EAC1E,MAAM+5B,EAAiBN,EAAOn6G,KAAKgd,KAAIqtB,IAAK,IAAMA,EAAGiuE,eAAgBjuE,EAAEqwE,kBAAkBtjG,SAEzF,OAAO9O,EACJkuB,IAAI,UAAU9kB,EAAAA,EAAAA,QAAO+oG,IACrBn6E,MAAM,CAAC,SAAU,WAAW5uB,EAAAA,EAAAA,QA1BVipG,EAACR,EAAQK,KAChC,MAAMI,GAAgBlpG,EAAAA,EAAAA,QAAOyoG,GAC1Bn9F,KAAIqnB,GAAMA,EAAG7N,IAAI,MAAOtL,IAAOmZ,EAAG/sB,IAAI,SAASiuB,OAAO,cACtD8P,SAAQ+V,GAAKA,EAAE9zC,IAAI,SACnB2vB,WACA/sE,QAAO41E,GAAKA,EAAEx4B,IAAI,UAErB,OAAIkjG,EACK,CAACjC,GAAaG,GAAAA,GAAAA,qBAAoCkC,EAAcrpG,SAGlE,CAACgnG,GAAaG,GAAAA,GAAAA,sBAAqCkC,EAAcrpG,QAAQ,EAexCopG,CAAiBF,EAAgBD,IAAc,EAGvF,CAACh6B,EAAAA,IAAwC,CAACl4E,EAAKq4E,KAA4B,IAAxBxpE,SAAS,KAAEnX,IAAQ2gF,EACpE,MAAMk6B,EAAavyG,EAAMgP,IAAI,QAAQ0F,KAAIiwE,GAAKA,EAAE31E,IAAI,QAEpD,OAAOhP,EACJ4D,OAAO,QAAQ+tG,GAAQA,EAAKpjG,QAAOnF,EAAAA,EAAAA,QAAO1R,GAAMsP,QAAO+0B,IAAOw2E,EAAWC,SAASz2E,EAAG/sB,IAAI,WAAS,EAGvG,CAACC,EAAAA,IAAwB,IAAMP,IAC9BA,ICnFI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC4jF,SAAU,GACV7xB,UAAW,GACXq2C,cAAe,GACfiB,qBAAsB,GACtBnwD,eAAgB,IAGZnpG,GAASiyD,GACC,aAAVA,EACK,UAGF,GASHw1F,GAAmBA,CAAC1+E,EAAOliB,EAAOoL,KACtC,MAAM01F,EAAiB9gG,EAAMgP,IAAI5D,GAAOhC,EAAAA,EAAAA,QAAO,KAG/C,OAAOA,EAAAA,EAAAA,QAAO8Y,EAAMxN,KAAIu0C,GACR63C,EAAerqF,MAAKolB,GAAKA,EAAE7sB,IAAI,QAAUi6C,EAAKh1D,MAZxC8sG,EAAC93C,EAAM79C,KAAWhC,EAAAA,EAAAA,QAAO6/C,GAAMxtB,MAAM,CAC3DxnC,GAAIg1D,EAAKh1D,GACTy0C,MAAOugB,EAAKvgB,OAASugB,EAAKn6C,KAC1B31D,OAAQA,GAAOiyD,GACfA,UAUkB21F,CAAgB93C,EAAM79C,KACrC,EAGL,QAAeuD,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAA4B,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,WAAE6jG,EAAU,MAAE16G,EAAK,KAAE8W,IAAQhX,EAAA,OAC3EkI,EAAM4D,OAAO8uG,GAAYC,GACvBA,EACGpkG,OAAOqyF,GAAiB,CAAC,CAAE3sG,GAAI+D,EAAO8W,KAAMA,GAAQ9W,IAAUgI,EAAO0yG,IACrE3lE,SAAQlR,GAAKA,EAAE7sB,IAAI,QACnB0F,KAAImnB,GAAKA,EAAE/L,UACX9mB,UACH,EAEJ,CAACkvE,EAAAA,IAA6B,CAACl4E,EAAKo4E,KAAkB,IAAhB,QAAEvpE,GAASupE,EAC/C,MAAM,SACJ4U,EAAQ,UACR7xB,EAAS,cACTq2C,EAAa,eACblvD,GACEzzC,EAEJ,OAAO7O,EAAMy7B,MAAM,CACjBuxD,SAAU4T,GAAiB5T,EAAUhtF,EAAO,YAC5Cm7D,UAAWylC,GAAiBzlC,EAAWn7D,EAAO,aAC9CwxG,cAAe5Q,GAAiB4Q,EAAexxG,EAAO,iBACtDsiD,kBACA,EAEJ,CAAC41B,EAAAA,IAAgC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,MAAEuU,IAASi1D,EAAA,OAC7Dr4E,EAAM4D,OAAO,wBAAwBu4B,GAAWA,EAAQt7B,MAAKuI,EAAAA,EAAAA,QAAO,CAClEs/B,MAAOtlB,EACPprB,MAAOorB,EACPhY,MAAO,2BACL,EAEN,CAAC8sE,EAAAA,IAAuB,CAACl4E,EAAKs4E,KAAoC,IAAhCzpE,SAAS,MAAEzD,EAAK,MAAEgsB,IAASkhD,EAC3D,OAAIt4D,EAAAA,KAAAA,OAAYhgB,EAAMgP,IAAI5D,IACjBpL,EAAM4D,OAAOwH,GAAO+kF,GAAQA,EAAK11D,OAAOrD,KAI1Cp3B,EAAMkuB,IAAI9iB,EAAO,EAAE,EAE5B,CAAC8sE,EAAAA,IAAuB,CAACl4E,EAAKu4E,KAAoC,IAAhC1pE,SAAS,MAAEzD,EAAK,MAAEgsB,IAASmhD,EAC3D,OAAIv4D,EAAAA,KAAAA,OAAYhgB,EAAMgP,IAAI5D,IACjBpL,EAAMsnC,SAAS,CAACl8B,EAAOgsB,EAAO,aAAaupE,IAAaA,IAG1D3gG,CAAK,EAEd,CAACk4E,EAAAA,IAAuB,CAACl4E,EAAKw4E,KAAqC,IAAjC3pE,SAAS,OAAE7H,EAAM,MAAEowB,IAASohD,EAC5D,OAAIx4D,EAAAA,KAAAA,OAAYhgB,EAAMgP,IAAIhI,EAAOgI,IAAI,WAC5BhP,EAAMg4B,MAAM,CAAChxB,EAAOgI,IAAI,SAAUooB,GAAQpwB,EAAOknB,IAAI,WAAW,IAGlEluB,CAAK,EAEd,CAACk4E,EAAAA,IAAuBl4E,GACtBA,EAAMy7B,MAAM/sB,IAEd,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,IC3FI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCzR,SAAU,CACR1D,GAAI,KACJ6a,KAAM,GACN8jG,WAAY,GACZC,aAAc,MAIlB,QAAelkG,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAmC,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OACrDkI,EAAM4D,OAAO,YAAY+uG,GAAYA,EAASl3E,MAAM5sB,IAAS,EAE/D,CAACqpE,EAAAA,IAAkC,IAAMxpE,GACzC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICbI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCzR,SAAU,CACR1D,GAAI,KACJ6a,KAAM,GACNigG,YAAa,GACbpiB,OAAQ,GACRkmB,aAAc,GACd7lB,SAAUtsF,OAAOiB,OAAO,CAAC,KAAMyqE,EAAAA,GAAAA,KAAarwC,IAAM,CAAG,CAACA,EAAG9nC,KAAK,OAC9DquD,eAAgB,GAElBwwD,wBAAwB,EACxBC,yBAAyB,EACzBC,WAAY,OAGd,QAAerkG,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,EAAAA,IAAoC,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OACtDkI,EAAM4D,OAAO,YAAY+uG,GACvBA,EAASl3E,MAAM5sB,IACf,EAEJ,CAACqpE,EAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAC7E,CAACgqD,EAAAA,IAAiCl4E,GAChCA,EAAMy7B,MAAM,CACVq3E,wBAAwB,EACxBE,WAAY,KACZD,yBAAyB,IAG7B,CAAC76B,EAAAA,IAA+Bl4E,GAC9BA,EAAMy7B,MAAM,CACVq3E,wBAAwB,EACxBE,YAAY5pG,EAAAA,EAAAA,QAAO,CAAEuuE,SAAS,EAAO3G,QAAS,gCAC9C+hC,yBAAyB,IAG7B,CAAC76B,EAAAA,IAAuC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OACzDp4E,EAAMy7B,MAAM,CACVu3E,YAAY5pG,EAAAA,EAAAA,QAAOyF,GACnBikG,wBAAwB,EACxBC,yBAAyB,GACzB,EAEJ,CAAC76B,EAAAA,IAAmC,IAAMxpE,GAC1C,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,IC5CH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAI,GACJsP,OAAM,GACNisG,eAAc,GACdC,gBAAeA,K,YCRV,MAAMxkG,IAAetF,EAAAA,EAAAA,QAAO,CACjC+pG,WAAY,GACZp+D,cAAe,OAGjB,QAAepmC,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,GAA0B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,aAAcrf,EAAQ,EACnF,CAACqpE,GAAAA,GAAyB,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMkuB,IAAI,gBAAiBrf,EAAQ,EACrF,CAACI,EAAAA,IAAwB,IAAMP,IAC9BA,ICVH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAEA,K,YCCJ,MAAM6hB,GAAwB,CAC5B0O,mBAAoB,gCACpBC,cAAe,2BACfC,cAAe,4BAGJ5kG,IAAetF,EAAAA,EAAAA,QAAO,CACjCk8F,wBAAwB,EACxBiO,sBAAsB,EACtBC,4BAA4B,EAC5BC,0BAA0B,EAC1BC,uBAAuB,EACvBC,uBAAuB,EACvBhrI,kBAAkB,EAClBirI,8BAA8B,EAC9BC,uBAAuB,EACvBC,oBAAoB,EACpBC,uBAAuB,EACvBC,gBAAgB,EAChBC,wBAAwB,EACxBC,oBAAoB,EACpBC,wBAAwB,EACxBC,qCAAqC,EACrCC,cAAe,iBACfC,oBAAoB,EACpBC,gCAAgC,EAChCC,+BAA+B,EAC/BC,wCAAwC,EACxCC,kBAAkB,EAClBC,wBAAwB,EACxBC,wBAAwB,EACxBhJ,gBAAgB,EAChBiJ,WAAY,CAAE5gH,GAAI,GAClB2wG,kBAAmB,qBACnBC,eAAgB,gCAChBiQ,wBAAwB,EACxBC,uBAAuB,EACvBC,iBAAkB,KAClBC,mBAAmB,EACnBC,gBAAgB,EAChBC,mBAAmB,EACnBC,oBAAoB,EACpBC,wBAAwB,EACxBC,cAAc,EACdC,wBAAwB,EACxBC,wBAAwB,EACxBC,4BAA4B,EAC5BC,4BAA4B,EAC5BC,8BAA8BvsG,EAAAA,EAAAA,QAAO,IACrCwsG,eAAgB,MAChBC,mBAAoB,KACpBC,yBAA0B,WAC1BC,sBAAsB,EACtBC,0BAA0B,EAC1BC,qBAAsB,MACtBC,6BAA6B,EAC7BC,6BAA8B,KAC9BC,mCAAmC,EACnCC,2BAA4B,KAC5BC,sBAAsB,EACtBC,sBAAuB,GACvBC,sBAAsB,EACtBC,2BAA2B,EAC3BC,2BAA2B,EAC3BC,eAAgB,KAChBC,4BAA4B,EAC5BC,sBAAsB,EACtBC,sBAAsB,EACtBC,oBAAoB,IAGtB,QAAepoG,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,KAAuC,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,gCAAgC9kB,EAAAA,EAAAA,QAAOyF,GAAS,EAC1H,CAACqpE,GAAAA,KAAqCl4E,GAASA,EAAMkuB,IACnD,gCACA9kB,EAAAA,EAAAA,QAAO,CAAC,CAAEnV,GAAI,EAAG+iH,WAAY,qBAAsBC,QAAS,6DAE9D,CAAC/+B,GAAAA,KAA+B,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OACjDp4E,EACGkuB,IAAI,wBAAwB,GAC5BA,IAAI,0BAA0B,GAC9BA,IAAI,gCAAiCrf,IAAWA,EAAQqoG,YAAY,EAEzE,CAACh/B,GAAAA,KAAgCl4E,GAC/BA,EACGkuB,IAAI,wBAAwB,GAC5BA,IAAI,gBAAiB,kBACrBA,IAAI,kBAAkB,GAE3B,CAACgqD,GAAAA,KAAgCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAC7E,CAACgqD,GAAAA,KAAiCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAC9E,CAACgqD,GAAAA,KAA2B,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAAKr4E,EAAMkuB,IAAI,mBAAoBrf,EAAQ,EAC1F,CAACqpE,GAAAA,KAA4Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GACpE,CAACgqD,GAAAA,KAAuCl4E,GAASA,EAAMkuB,IAAI,gCAAgC,GAC3F,CAACgqD,GAAAA,KAAwCl4E,GAASA,EAAMkuB,IAAI,gCAAgC,GAC5F,CAACgqD,GAAAA,KAAiCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAC/E,CAACgqD,GAAAA,KAAkCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAChF,CAACgqD,GAAAA,KAA+B,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EAAMkuB,IAAI,aAAcrf,EAAQ,EACxF,CAACqpE,GAAAA,KAA2Bl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GACxE,CAACgqD,GAAAA,KAA4Bl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAAOA,IAAI,0BAA0B,GAC9G,CAACgqD,GAAAA,KAAoCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAClF,CAACgqD,GAAAA,KAA6Bl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACvE,CAACgqD,GAAAA,KAAgCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAC7E,CAACgqD,GAAAA,KAA8Bl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACxE,CAACgqD,GAAAA,KAAiCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAC9E,CAACgqD,GAAAA,KAAyBl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC/D,CAACgqD,GAAAA,KAA0Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAChE,CAACgqD,GAAAA,KAA6Bl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACvE,CAACgqD,GAAAA,KAA8Bl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACxE,CAACgqD,GAAAA,KAAqC,CAACl4E,EAAKu4E,KAAA,IAAE,QAAE1pE,GAAS0pE,EAAA,OAAKv4E,EAAMkuB,IAAI,gBAAiBrf,EAAQ,EACjG,CAACqpE,GAAAA,KAAkCl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GAC5E,CAACgqD,GAAAA,KAAiCl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GAC3E,CAACgqD,GAAAA,KAA4Cl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAClG,CAACgqD,GAAAA,KAAoDl4E,GAASA,EAAMkuB,IAAI,0CAA0C,GAClH,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,iCAAiC,GACxD,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,0CAA0C,GACjE,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GACzD,EAAC+pD,EAAAA,EAAAA,GAAeC,GAAAA,IAA8BA,GAAAA,MAAoCl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GAC1H,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,IACAA,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GAC5C,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,IACAA,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAC3C,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,IACAA,GAAAA,IACAA,GAAAA,IACAA,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAC3C,CAACgqD,GAAAA,KAA6Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAAOA,IAAI,kBAAkB,GAClG,CAACgqD,GAAAA,KAA2B,CAACl4E,EAAKw4E,KAAkB,IAAhB,QAAE3pE,GAAS2pE,EACzC2+B,GAAW,EAQf,OANItoG,EAAQw9F,UAC0B,MAAhCx9F,EAAQw9F,SAASf,aACnB6L,GAAW,GAIRn3G,EACJkuB,IAAI,iBAAkBipF,GACtBjpF,IAAI,oBAAoB,EAAM,EAEnC,CAACgqD,GAAAA,KAAgCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAC7E,CAACgqD,GAAAA,KAAmCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GACnF,CAACgqD,GAAAA,KAAiCl4E,GAChCA,EACGkuB,IAAI,yBAAyB,GAC7BA,IAAI,0BAA0B,GAC9BA,IAAI,kBAAkB,GACtBA,IAAI,qBAAsB,MAE/B,CAACgqD,GAAAA,KAAoCl4E,GACnCA,EACGkuB,IAAI,4BAA4B,GAChCA,IAAI,0BAA0B,GAC9BA,IAAI,kBAAkB,GAE3B,CAACgqD,GAAAA,KAAgCl4E,GAC/BA,EACGkuB,IAAI,0BAA0B,GAEnC,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GACzC,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,IACAA,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAAOA,IAAI,4BAA4B,GAChF,EAAC+pD,EAAAA,EAAAA,GAAeC,GAAAA,IAA4BA,GAAAA,MAA+Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAChH,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,IACAA,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GACzC,EAAC+pD,EAAAA,EAAAA,GAAeC,GAAAA,IAA8BA,GAAAA,MAAiCl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GAEtH,CAACgqD,GAAAA,KAA+B,CAACl4E,EAAKy4E,KAAkB,IAAhB,QAAE5pE,GAAS4pE,EACjD,MAAM6G,EAAWt/E,EAAMkuB,IAAI,oBAAqBrf,GAEhD,OAAI61F,GAAsB71F,GACjBywE,EAASpxD,IAAI,iBAAkBw2E,GAAsB71F,IAGvD7O,CAAK,EAEd,CAACk4E,GAAAA,KAA8Bl4E,GAASA,EAAM4D,OAAO,0BAA0Bg7B,IAAMA,IAErF,CAACs5C,GAAAA,KAA+Bl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAC7E,CAACgqD,GAAAA,KAA8Bl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAC3E,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GACjD,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAEhD,CAACgqD,GAAAA,KAAmC,CAACl4E,EAAK04E,KAAA,IAAI7pE,SAAS,IAAEowC,IAAOy5B,EAAA,OAAK14E,EAAMkuB,IAAI,mBAAoB+wB,EAAI,EACvG,CAACi5B,GAAAA,KAA6Bl4E,GAASA,EAAM4D,OAAO,gBAAgB5L,IAAUA,IAC9E,EAACigF,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,mBAAoB,MAC3C,CAACgqD,GAAAA,KAA+Bl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GACxE,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GAC5C,CAACgqD,GAAAA,KAAmCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GACzE,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GACzC,CAACgqD,GAAAA,KAAuCl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACjF,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GAC7C,CAACgqD,GAAAA,KAA+Bl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAC7E,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GACjD,CAACgqD,GAAAA,KAAuCl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACjF,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GAC7C,CAACgqD,GAAAA,KAAoC,CAACl4E,EAAK24E,KAAA,IAAE,QAAE9pE,GAAS8pE,EAAA,OAAK34E,EAAMkuB,IAAI,yBAA0Brf,EAAQ,EACzG,CAACqpE,GAAAA,KAAoCl4E,GAASA,EAC3CkuB,IAAI,0BAA0B,GAC9BA,IAAI,8BAA8B,GACrC,CAACgqD,GAAAA,KAA8Cl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAC5F,CAACgqD,GAAAA,KAA8Cl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAC5F,CAACgqD,GAAAA,KAA4Cl4E,GAASA,EACnDkuB,IAAI,0BAA0B,GAC9BA,IAAI,8BAA8B,GACrC,CAACgqD,GAAAA,KAA4Cl4E,GAASA,EACnDkuB,IAAI,0BAA0B,GAC9BA,IAAI,8BAA8B,GACrC,CAACgqD,GAAAA,KAAmCl4E,GAASA,EAAMkuB,IAAI,8BAA8B,GACrF,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,8BAA8B,GAErD,CAACgqD,GAAAA,KAAiCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAC/E,CAACgqD,GAAAA,KAAkCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAChF,CAACgqD,GAAAA,KAA+B,CAACl4E,EAAK44E,KAAA,IAAE,QAAE/pE,GAAS+pE,EAAA,OAAK54E,EAAMkuB,IAAI,iBAAkBrf,EAAQ,EAC5F,CAACqpE,GAAAA,KAAmC,CAACl4E,EAAK64E,KAAA,IAAE,QAAEhqE,GAASgqE,EAAA,OAAK74E,EAAMkuB,IAAI,qBAAsBrf,EAAQ,EACpG,CAACqpE,GAAAA,KAAyC,CAACl4E,EAAK84E,KAAA,IAAE,QAAEjqE,GAASiqE,EAAA,OAAK94E,EAAMkuB,IAAI,2BAA4Brf,EAAQ,EAChH,CAACqpE,GAAAA,KAAkCl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC9E,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACEl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC/C,CAACgqD,GAAAA,KAAmCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GACnF,CAACgqD,GAAAA,KAAoCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GACpF,CAACgqD,GAAAA,KAAqC,CAACl4E,EAAK+4E,KAAA,IAAE,QAAElqE,GAASkqE,EAAA,OAAK/4E,EAAMkuB,IAAI,uBAAwBrf,EAAQ,EACxG,CAACqpE,GAAAA,KAAsC,CAACl4E,EAAK++E,KAAA,IAAE,QAAElwE,GAASkwE,EAAA,OAAK/+E,EAC5DkuB,IAAI,+BAA+B,GACnCA,IAAI,+BAAgCrf,EAAQ,EAC/C,CAACqpE,GAAAA,KAAuCl4E,GAASA,EAC9CkuB,IAAI,+BAA+B,GACnCA,IAAI,+BAAgC,MACvC,CAACgqD,GAAAA,KAA4C,CAACl4E,EAAKg/E,KAAA,IAAE,QAAEnwE,GAASmwE,EAAA,OAAKh/E,EAClEkuB,IAAI,qCAAqC,GACzCA,IAAI,6BAA8Brf,EAAQ,EAC7C,CAACqpE,GAAAA,KAA6Cl4E,GAASA,EACpDkuB,IAAI,qCAAqC,GACzCA,IAAI,6BAA8B,MACrC,CAACgqD,GAAAA,KAAkC,CAACl4E,EAAKk/E,KAAA,IAAE,QAAErwE,GAASqwE,EAAA,OAAKl/E,EAAMkuB,IAAI,uBAAwBrf,GAC1Fqf,IAAI,wBAAyBxf,GAAaM,IAAI,yBAAyB,EAC1E,CAACkpE,GAAAA,KAAmC,CAACl4E,EAAKq/E,KAAA,IAAE,QAAExwE,GAASwwE,EAAA,OAAKr/E,EAAMkuB,IAAI,wBAAyBrf,EAAQ,EACvG,CAACqpE,GAAAA,KAAkC,CAACl4E,EAAKw/E,KAAA,IAAE,QAAE3wE,GAAS2wE,EAAA,OAAKx/E,EAAMkuB,IAAI,uBAAwBrf,EAAQ,EACrG,CAACqpE,GAAAA,KAAoC,CAACl4E,EAAK2gF,KAAA,IAAE,QAAE9xE,GAAS8xE,EAAA,OAAK3gF,EAC1DkuB,IAAI,6BAA6B,GACjCA,IAAI,iBAAkBrf,EAAQ,EACjC,CAACqpE,GAAAA,KAAqCl4E,GAASA,EAC5CkuB,IAAI,6BAA6B,GACjCA,IAAI,iBAAkB,MACzB,CAACgqD,GAAAA,KAAoC,CAACl4E,EAAK4gF,KAAA,IAAE,QAAE/xE,GAAS+xE,EAAA,OAAK5gF,EAC1DkuB,IAAI,6BAA6B,GACjCA,IAAI,iBAAkBrf,EAAQ,EACjC,CAACqpE,GAAAA,KAAqCl4E,GAASA,EAC5CkuB,IAAI,6BAA6B,GACjCA,IAAI,iBAAkB,MACzB,CAACgqD,GAAAA,KAA0Cl4E,GAASA,EAAMkuB,IAAI,8BAA8B,GAC5F,CAACgqD,GAAAA,KAAyCl4E,GAASA,EAAMkuB,IAAI,8BAA8B,GAC3F,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC3E,CAACgqD,GAAAA,KAAgCl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC5E,CAACgqD,GAAAA,KAAgCl4E,GAASA,EACvCkuB,IAAI,wBAAwB,GAC5BA,IAAI,sBAAsB,GAC7B,CAACgqD,GAAAA,KAA8B,CAACl4E,EAAK6gF,KAAkB,IAAhB,QAAEhyE,GAASgyE,EAChD,OAAIhyE,EAAQw9F,UAA4C,MAAhCx9F,EAAQw9F,SAASf,WAChCtrG,EAAMkuB,IAAI,sBAAsB,GAAMA,IAAI,wBAAwB,GAGpEluB,EAAMkuB,IAAI,wBAAwB,EAAM,EAEjD,CAACgqD,GAAAA,KAAgCl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC5E,CAACgqD,GAAAA,KAA8Bl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACxE,CAACgqD,GAAAA,KAA8Cl4E,GAASA,EAAMkuB,IAAI,uCAAuC,GACzG,CAACgqD,GAAAA,KAA+Cl4E,GAASA,EAAMkuB,IAAI,uCAAuC,GAE1G,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,IC1UH,MAAM0oG,GAAyB,CAC7B,CAACrqC,EAAAA,GAAAA,oBAA6C,CAC5CsqC,aAAc,wBAEhB,CAACtqC,EAAAA,GAAAA,eAAwC,CACvCsqC,aAAc,wBAEhB,CAACtqC,EAAAA,GAAAA,eAAwC,CACvCsqC,aAAc,0BAIL3oG,IAAetF,EAAAA,EAAAA,QAAO,CACjCkuG,aAAc,EACdC,cAAe,GACfC,eAAgB,GAChBC,kBAAmB,GACnBC,YAAa,EACbC,aAAc,GACdC,cAAe,GACfC,iBAAkB,GAClB32D,qBAAsB,GACtBC,sBAAuB,GACvB22D,eAAgB,EAChBC,gBAAiB,GACjBC,gBAAiB,CACfC,SAAU,MACVC,WAAY,IAEdC,eAAgB,CACdF,SAAU,MACVC,WAAY,IAEdE,qBAAsB,CACpBliH,KAAM,MACN8uF,UAAW,kBAIf,QAAer2E,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,KAAyB,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,MAAEuU,EAAK,kBAAEwhF,IAAqB9sG,EAAA,OACzEkI,EAAM4D,OAAOwzG,GAAuBxS,GAAmByS,cAAcl7E,GAAWA,EAAQt7B,MAAKuI,EAAAA,EAAAA,QAAO,CAClGs/B,MAAOtlB,EACPprB,MAAOorB,EACPhY,MAAOw5F,MACL,EACN,CAAC1sB,GAAAA,KAAuB,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,MAAEzD,EAAK,MAAEgsB,IAASghD,EAAA,OAC3Dp4E,EAAM4D,OAAOwzG,GAAuBhsG,GAAOisG,cAAclnB,GAAQA,EAAK11D,OAAOrD,IAAO,EAEtF,CAAC8gD,GAAAA,KAAuB,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,MAAEzD,EAAK,MAAEgsB,IAASihD,EAAA,OAC3Dr4E,EAAMsnC,SAAS,CAAC8vE,GAAuBhsG,GAAOisG,aAAcjgF,EAAO,aAAaupE,IAAaA,GAAS,EAExG,CAACzoB,GAAAA,KAAuB,CAACl4E,EAAKs4E,KAAqC,IAAjCzpE,SAAS,OAAE7H,EAAM,MAAEowB,IAASkhD,EAC5D,MAAM,aAAE++B,GAAiBD,GAAuBpwG,EAAOgI,IAAI,UAE3D,OAAOhP,EAAMg4B,MAAM,CAACq/E,EAAcjgF,GAAQpwB,EAAOknB,IAAI,WAAW,GAAM,EAExE,CAACgqD,GAAAA,KAAmB,CAACl4E,EAAKu4E,KAAA,IAAI1pE,SAAS,IAAE9W,EAAG,MAAEC,IAASugF,EAAA,OAAKv4E,EAAMkuB,IAAIn2B,EAAKC,EAAM,EACjF,CAACkgF,GAAAA,KAAkB,CAACl4E,EAAKw4E,KAAA,IAAI3pE,SAAS,IAAE9W,EAAG,MAAEC,IAASwgF,EAAA,OAAKx4E,EAAMkuB,IAAIn2B,EAAKC,EAAM,EAChF,CAACkgF,GAAAA,IAAoB,CAACl4E,EAAKy4E,KAA+C,IAA3C5pE,SAAS,KAAE3Y,EAAI,OAAEtkC,EAAM,UAAEysC,IAAao6E,EACnE,MAAa,cAATviF,EACK8J,EAAMy7B,MAAM,CACjB+7E,eAAgB5lJ,EAChB6lJ,kBAAmBp5G,IAIV,aAATnI,EACK8J,EAAMy7B,MAAM,CACjBm8E,cAAehmJ,EACfimJ,iBAAkBx5G,IAIf2B,CAAK,EAEd,CAACk4E,GAAAA,KAA4B,CAACl4E,EAAK04E,KAAA,IAAE,QAAE7pE,GAAS6pE,EAAA,OAAK14E,EAAMkuB,IAAI,kBAAkB9kB,EAAAA,EAAAA,QAAOyF,GAAS,EACjG,CAACqpE,GAAAA,KAA6B,CAACl4E,EAAK24E,KAAA,IAAE,QAAE9pE,GAAS8pE,EAAA,OAAK34E,EAAMkuB,IAAI,mBAAmB9kB,EAAAA,EAAAA,QAAOyF,GAAS,EACnG,CAACqpE,GAAAA,KAAuBl4E,GACtBA,EAAMy7B,MAAM/sB,IAEd,CAACwpE,GAAAA,KAAkCl4E,GAASA,EAAMkuB,IAAI,iBAAkBluB,EAAMgP,IAAI,kBAAoB,GACtG,CAACkpE,GAAAA,KAAkC,CAACl4E,EAAK44E,KAAA,IAAI/pE,SAAS,IAAE9W,EAAG,MAAEC,IAAS4gF,EAAA,OAAK54E,EAAMg4B,MAAM,CAAC,uBAAwBjgC,GAAMC,EAAM,EAC5H,CAACiX,EAAAA,IAAwB,IAAMP,IAC9BA,I,wBCjFH,MASaA,IAAetF,EAAAA,EAAAA,QAAO,CACjC+yD,aAAc,CACZl6C,MAAO,KACPC,MAAO,GACPm2F,SAAU,IAEZn8C,YAAa,CACXj6C,MAAO,KACPC,MAAO,IAETo2F,cAAe,CACbr2F,MAAO,KACPs2F,OAAQ,GACRvqG,OAAQ,CACNgb,KAAM,GACNye,MAAO,CACLxlB,MAAO,EACPuV,MAAO,KAIbghF,iBAAkB,CAChBC,MAAO,CAAC,EACRC,YAAa,CAAC,GAEhBC,mBAAoB,GACpBC,wBAAyB,KACzBC,4BAA6B,EAC7BC,aAAc,GACdC,gBAAiB,CACf9kH,GAAI,KACJyhF,MAAO,GACPl2B,QAAS,GACTw5D,UAAW,GACXvlH,KAAM,GACN0+E,aAAY,KACZrB,aAAY,KACZ56E,KAAM,KACN+iH,WAAY,KACZv5D,aAAc,KACdw5D,YAAa,KACbx1F,WAAY,GACZy1F,aAAc,KACdn+B,WAAY,GACZo+B,WAAY,GACZ5jC,OAAQ,GACRqI,aAAc,GACdw7B,cAAe,GACfC,SAAS,EACTC,SAAU,KACVC,SAAU,KACVC,eAAgB,QAChBp7B,OAAQ,KACRq7B,MAAO,GACPC,WAAY,MAEdC,iBAAkB,CAChBC,eAAgB,KAChB5lH,GAAI,KACJ6a,KAAM,GACNiU,UAAW,GACXC,QAAS,GACTiuE,QAAS,GACT3C,QAAQ,GAEVwrB,gBAAiB,CAAC,EAClBC,wBAAyB,GACzBC,uBAAwB,GACxBC,uBAAwB,GACxBC,gCAAiC,GACjCC,4BAA6B,GAC7BC,eAAgB,GAChBC,iBAAkB,KAGdC,GAAgCA,CAACt6G,EAAOu6G,EAAWC,EAAYC,KACnE,IAAIn7B,EAAWt/E,EA8Cf,OA3CEs/E,EADEA,EAAS5tE,MAAM,CAAC,cAAe,UAAU1K,QAAO0P,GAAKA,EAAE1H,IAAI,QAAUurG,IAAWx2F,KACvEu7D,EACRh4C,SAAS,CAAC,cAAe,UAAUvlB,GAClCA,EAASrN,KAAIxX,GACPA,EAAQ8R,IAAI,QAAUurG,EACjBE,EAGFv9G,MAIFoiF,EACRtnD,MAAM,CAAC,cAAe,SAAUh4B,EAAM0R,MAAM,CAAC,cAAe,UAAUuxB,QAAQw3E,IAC9EziF,MAAM,CAAC,cAAe,SAAUh4B,EAAM0R,MAAM,CAAC,cAAe,UAAY,GAGzE4tE,EAAS5tE,MAAM,CAAC,eAAgB,UAAU1K,QAAO0P,GAAKA,EAAE1H,IAAI,QAAUwrG,IAAYz2F,OACpFu7D,EAAWA,EAASh4C,SAAS,CAAC,eAAgB,UAAUtlB,GACtDA,EAAUtN,KAAIkG,GACRA,EAAS5L,IAAI,QAAUwrG,EACrB5/F,EAAS5L,IAAI,eAAehI,QAAO0P,GAAKA,EAAE1H,IAAI,QAAUurG,IAAWx2F,KAC9DnJ,EAAShX,OAAO,eAAeme,GACpCA,EAASrN,KAAIxX,GACPA,EAAQ8R,IAAI,QAAUurG,EACjBE,EAGFv9G,MAKN0d,EAAS6gB,MAAM,CACpBi/E,iBAAkB9/F,EAAS5L,IAAI,oBAAsB,EACrDktD,YAAathD,EAAS5L,IAAI,eAAei0B,QAAQw3E,KAI9C7/F,OAKN0kE,CAAQ,EAGjB,QAAe3wE,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,KAA8C,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,aAAEstD,IAAgBrkE,EAAA,OAClFkI,EAAMkuB,IAAI,2BAA2B9kB,EAAAA,EAAAA,QAAO+yD,GAAc,EAC5D,CAAC+b,GAAAA,KAA6C,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,YAAEqtD,IAAekc,EAAA,OAChFp4E,EAAMkuB,IAAI,0BAA0B9kB,EAAAA,EAAAA,QAAO8yD,GAAa,EAC1D,CAACgc,GAAAA,KAA6C,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,SAAEgV,IAAYw0D,EAAA,OAC7Er4E,EAAMkuB,IAAI,0BAA0B9kB,EAAAA,EAAAA,QAAOya,GAAU,EACvD,CAACq0D,GAAAA,KAAsD,CAACl4E,EAAKs4E,KAAA,IAAIzpE,SAAS,kBAAEsU,IAAqBm1D,EAAA,OAC/Ft4E,EAAMkuB,IAAI,mCAAmC9kB,EAAAA,EAAAA,QAAO+Z,GAAmB,EACzE,CAAC+0D,GAAAA,KAA+B,CAACl4E,EAAKu4E,KAAkB,IAAhB,QAAE1pE,GAAS0pE,EACjD,MAAMoiC,EAAa36G,EAAM0R,MAAM,CAAC,cAAe,UAAU+E,MAAKvZ,GAAWA,EAAQ8R,IAAI,QAAUH,EAAQ5a,KAEvG,IAAI2mH,EAAmB56G,EAAM0R,MAAM,CAAC,cAAe,UAEnD,GAAIipG,EAAY,CACd,MAAME,EAAmB76G,EAAM0R,MAAM,CAAC,cAAe,UACrDkpG,EAAmBC,EAAoBA,EAAmB,EAAKA,CACjE,CAEA,MAAMC,EAAc96G,EAAM0R,MAAM,CAAC,cAAe,UAAU1K,QAAO9J,GAAWA,EAAQ8R,IAAI,QAAUH,EAAQ5a,KAEpG8mH,EAAe/6G,EAClB0R,MAAM,CAAC,eAAgB,UACvBgD,KAAIkG,IACH,MAAMogG,EAAmBpgG,EACtB5L,IAAI,eACJhI,QAAO9J,GAAWA,EAAQ8R,IAAI,QAAUH,EAAQ5a,KAC7CgnH,EAAmBrgG,EACtB5L,IAAI,eACJyH,MAAKvZ,GAAWA,EAAQ8R,IAAI,QAAUH,EAAQ5a,KAEjD,IAAIinH,EAAwBtgG,EAAS5L,IAAI,oBAMzC,OAJIisG,IACFC,EAAkD,IAA1BA,EAA8B,EAAItgG,EAAS5L,IAAI,oBAAsB,GAGxF4L,EACJsT,IAAI,cAAe8sF,GACnB9sF,IAAI,mBAAoBgtF,EAAsB,IAGrD,OAAOl7G,EACJg4B,MAAM,CAAC,eAAgB,SAAU+iF,GACjC/iF,MAAM,CAAC,cAAe,SAAU8iF,GAChC9iF,MAAM,CAAC,cAAe,SAAU4iF,EAAiB,EAEtD,CAAC1iC,GAAAA,KAAgC,CAACl4E,EAAKw4E,KAAkB,IAAhB,QAAE3pE,GAAS2pE,EAClD,MAAM2iC,EAAcn7G,EAAM0R,MAAM,CAAC,eAAgB,UAAU+E,MAAKmE,GAAYA,EAAS5L,IAAI,QAAUH,EAAQ5a,KAE3G,IAAImnH,EAAoBp7G,EAAM0R,MAAM,CAAC,eAAgB,UACjDkpG,EAAmB56G,EAAM0R,MAAM,CAAC,cAAe,UAEnD,GAAIypG,EAAa,CACf,MAAME,EAAoBr7G,EAAM0R,MAAM,CAAC,eAAgB,UACvD0pG,EAAoBC,EAAqBA,EAAoB,EAAKA,EAClET,EAAmBA,EAAmBA,EAAmBO,EAAYnsG,IAAI,oBAAsB4rG,CACjG,CAEA,MAAMG,EAAe/6G,EAAM0R,MAAM,CAAC,eAAgB,UAAU1K,QAAO4T,GAAYA,EAAS5L,IAAI,QAAUH,EAAQ5a,KACxG6mH,EAAc96G,EAAM0R,MAAM,CAAC,cAAe,UAAU1K,QAAO9J,GAAWA,EAAQ8R,IAAI,eAAeA,IAAI,QAAUH,EAAQ5a,KAE7H,OAAO+L,EACJg4B,MAAM,CAAC,eAAgB,SAAU+iF,GACjC/iF,MAAM,CAAC,eAAgB,SAAUojF,GACjC9zE,SAAS,CAAC,eAAgB,aAAa+wE,GAAYA,EAASrxG,QAAOhB,GAAKA,EAAEgJ,IAAI,QAAUH,EAAQ5a,OAChG+jC,MAAM,CAAC,cAAe,SAAU8iF,GAChC9iF,MAAM,CAAC,cAAe,SAAU4iF,EAAiB,EAEtD,CAAC1iC,GAAAA,KAAuB,CAACl4E,EAAKy4E,KAAA,IAAE,QAAE5pE,GAAS4pE,EAAA,OAAKz4E,EAAMy7B,MAAM,CAAEq9E,cAAc1vG,EAAAA,EAAAA,QAAOyF,IAAW,EAE9F,CAACqpE,GAAAA,KAAuB,CAACl4E,EAAK04E,KAAA,IAAI7pE,SAAS,MAAEoT,EAAK,aAAEk6C,EAAY,SAAEk8C,IAAY3/B,EAAA,OAAK14E,EAChFg4B,MAAM,CAAC,eAAgB,UAAU5uB,EAAAA,EAAAA,QAAO+yD,IACxCnkC,MAAM,CAAC,eAAgB,SAAU/V,GACjC+V,MAAM,CAAC,eAAgB,aAAa5uB,EAAAA,EAAAA,QAAOivG,GAAU,EACxD,CAACngC,GAAAA,KAAyBl4E,GAASA,EAAMkuB,IAAI,eAAgBxf,GAAaM,IAAI,iBAG9E,CAACkpE,GAAAA,KAA6B,CAACl4E,EAAK24E,KAAA,IAAI9pE,SAAS,IAAE9W,EAAG,MAAEC,IAAS2gF,EAAA,OAC/D34E,EACGg4B,MAAM,CAAC,kBAAmB,YAAY,GACtCA,MAAM,CAAC,kBAAmBjgC,GAAMC,EAAM,EAE3C,CAACkgF,GAAAA,KAA0B,CAACl4E,EAAK44E,KAAA,IAAE,QAAE/pE,GAAS+pE,EAAA,OAC5C54E,EAAMsnC,SAAS,CAAC,kBAAmB,eAAe5jB,GAChDA,EAAW1c,QAAOid,GAAaA,EAAUjV,IAAI,QAAUH,KACvD,EAEJ,CAACqpE,GAAAA,KAAwB,CAACl4E,EAAK64E,KAAA,IAAE,QAAEhqE,GAASgqE,EAAA,OAC1C74E,EACGg4B,MAAM,CAAC,kBAAmB,YAAY,GACtCp0B,OAAO,mBAAmB+uG,GAAYA,EAASl3E,MAAM5sB,IAAS,EAEnE,CAACqpE,GAAAA,KAA+B,CAACl4E,EAAK84E,KAAA,IAAE,QAAEjqE,GAASiqE,EAAA,OACjD94E,EAAMkuB,IAAI,kBAAmBxf,GAAaM,IAAI,mBAAmBysB,MAAM5sB,GAAW,CAAC,GAAG,EAExF,CAACqpE,GAAAA,KAAgC,CAACl4E,EAAK+4E,KAAA,IAAE,QAAElqE,GAASkqE,EAAA,OAClD/4E,EACG4D,OAAO,mBAAmB+uG,GAAYA,EAASl3E,MAAM5sB,KACrDjL,OAAO,mBAAmB+uG,GAAYA,EAASl3E,MAAM5sB,IAAS,EAEnE,CAACqpE,GAAAA,KAAmC,CAACl4E,EAAK++E,KAAA,IAAE,QAAElwE,GAASkwE,EAAA,OACrD/+E,EACG4D,OAAO,mBAAmB+uG,GAAYA,EAASl3E,MAAM5sB,KACrDjL,OAAO,mBAAmB+uG,GAAYA,EAASl3E,MAAM5sB,IAAS,EAEnE,CAACqpE,GAAAA,KAAiCl4E,GAChCA,EACGkuB,IAAI,kBAAmBxf,GAAaM,IAAI,oBACxCkf,IAAI,kBAAmBxf,GAAaM,IAAI,oBACxCkf,IAAI,iBAAkBxf,GAAaM,IAAI,mBACvCkf,IAAI,mBAAoBxf,GAAaM,IAAI,qBAE9C,CAACkpE,GAAAA,KAAoCl4E,GACnCA,EACGkuB,IAAI,kBAAmBxf,GAAaM,IAAI,oBACxCkf,IAAI,kBAAmBxf,GAAaM,IAAI,oBACxCkf,IAAI,iBAAkBxf,GAAaM,IAAI,mBACvCkf,IAAI,mBAAoBxf,GAAaM,IAAI,qBAE9C,CAACkpE,GAAAA,KAAgC,CAACl4E,EAAKg/E,KAAA,IAAE,QAAEnwE,GAASmwE,EAAA,OAClDh/E,EAAM4D,OAAO,mBAAmB+uG,GAAaA,EAASl3E,MAAM5sB,IAAU,EAGxE,CAACqpE,GAAAA,KAAiC,CAACl4E,EAAKk/E,KAAA,IAAE,QAAErwE,GAASqwE,EAAA,OAAKl/E,EAAM4D,OAAO,mBAAmB+uG,GAAaA,EAASl3E,MAAM5sB,IAAU,EAChI,CAACqpE,GAAAA,KAAkCl4E,GAASA,EAAMkuB,IAAI,kBAAmBxf,GAAaM,IAAI,oBAG1F,EAACipE,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACE,CAACl4E,EAAKq/E,KAAA,IAAE,QAAExwE,GAASwwE,EAAA,OAAKr/E,EAAMkuB,IAAI,kBAAmBrf,EAAQ,EACjE,CAACqpE,GAAAA,KAAiCl4E,GAASA,EAAMkuB,IAAI,kBAAmBxf,GAAaM,IAAI,oBAGzF,EAACipE,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACE,CAACl4E,EAAKw/E,KAAkB,IAAhB,QAAE3wE,GAAS2wE,EACrB,MAAMg7B,EAAa3rG,EAAQ5a,GACrBwmH,GAAUrxG,EAAAA,EAAAA,QAAOyF,GACjBwpG,EAnRsBiD,EAACjD,EAAUz9F,IACrCy9F,EAAStxG,MAAKf,GAAKA,EAAEgJ,IAAI,QAAU4L,EAAS5L,IAAI,QAC3CqpG,EAAS3jG,KAAI1O,GAAOA,EAAEgJ,IAAI,QAAU4L,EAAS5L,IAAI,MACtDhJ,EAAEkoB,IAAI,OAAQtT,EAAS5L,IAAI,SAAYhJ,IAGpCqyG,EAASx3G,MAAKuI,EAAAA,EAAAA,QAAO,CAAEnV,GAAI2mB,EAAS5L,IAAI,MAAOF,KAAM8L,EAAS5L,IAAI,WA6QtDssG,CAAwBt7G,EAAM0R,MAAM,CAAC,eAAgB,aAAc+oG,GAEpF,OAAIz6G,EAAM0R,MAAM,CAAC,eAAgB,UAAU1K,QAAO0P,GAAKA,EAAE1H,IAAI,QAAUwrG,IAAYz2F,KAC1E/jB,EAAMsnC,SAAS,CAAC,eAAgB,UAAUtlB,GAC/CA,EAAUtN,KAAIkG,GACRA,EAAS5L,IAAI,QAAUwrG,EAClBC,EAGF7/F,MAERod,MAAM,CAAC,eAAgB,YAAaqgF,GAGlCr4G,EACJg4B,MAAM,CAAC,eAAgB,SAAUh4B,EAAM0R,MAAM,CAAC,eAAgB,UAAUuxB,QAAQw3E,IAChFziF,MAAM,CAAC,eAAgB,SAAUh4B,EAAM0R,MAAM,CAAC,eAAgB,UAAY,GAC1EsmB,MAAM,CAAC,eAAgB,YAAaqgF,EAAS,EAIlD,CAACngC,GAAAA,KAAsB,CAACl4E,EAAK2gF,KAAA,IAAI9xE,SAAS,MAAEoT,EAAK,YAAEi6C,IAAeykB,EAAA,OAAK3gF,EACpEg4B,MAAM,CAAC,cAAe,UAAU5uB,EAAAA,EAAAA,QAAO8yD,IACvClkC,MAAM,CAAC,cAAe,SAAU/V,EAAM,EACzC,CAACi2D,GAAAA,KAA6B,CAACl4E,EAAK4gF,KAAkB,IAAhB,QAAE/xE,GAAS+xE,EAC3CtB,EAAWt/E,EAoBf,OAlBA6O,EAAQhX,SAAQ6nC,IACd,MAAM66E,EAAY76E,EAAEzrC,GACdwmH,GAAUrxG,EAAAA,EAAAA,QAAOs2B,GAEnB4/C,EAAS5tE,MAAM,CAAC,cAAe,UAAU1K,QAAO0P,GAAKA,EAAE1H,IAAI,QAAUurG,IAAWx2F,OAClFu7D,EAAWA,EACRh4C,SAAS,CAAC,cAAe,UAAUvlB,GAClCA,EAASrN,KAAIxX,GACPA,EAAQ8R,IAAI,QAAUurG,EACjBE,EAGFv9G,MAGf,IAGKoiF,CAAQ,EAEjB,CAACpH,GAAAA,KAAsC,CAACl4E,EAAK6gF,KAAkB,IAAhB,QAAEhyE,GAASgyE,EACpDvB,EAAWt/E,EAiBf,OAfA6O,EAAQhX,SAAQ6nC,IACd,MAAM66E,EAAY76E,EAAEzrC,GACdwmH,GAAUrxG,EAAAA,EAAAA,QAAOs2B,GAEvB4/C,EAAWA,EAASh4C,SAAS,CAAC,eAAgB,UAAUtlB,GACtDA,EAAUtN,KAAIkG,GACZA,EAAS0sB,SAAS,CAAC,gBAAgBvlB,GACjCA,EAASrN,KAAIxX,GACXA,EAAQ8R,IAAI,QAAUurG,EAAYE,EAAUv9G,SAIlD,IAGGoiF,CAAQ,EAEjB,EAACrH,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,IACAA,GAAAA,MACE,CAACl4E,EAAK8gF,KAAkB,IAAhB,QAAEjyE,GAASiyE,EACrB,MAAMy5B,EAAY1rG,EAAQ5a,GACpBumH,EAAa3rG,EAAQqqG,YAAYjlH,GACjCwmH,GAAUrxG,EAAAA,EAAAA,QAAOyF,GACjBywE,EAAWg7B,GAA8Bt6G,EAAOu6G,EAAWC,EAAYC,GAE7E,OAAOn7B,EACJtnD,MAAM,CAAC,kBAAmB,MAAOuiF,GACjCviF,MAAM,CAAC,kBAAmB,YAAY,GACtCA,MAAM,CAAC,kBAAmB,SAAUyiF,EAAQzrG,IAAI,UAAYswE,EAAS5tE,MAAM,CAAC,kBAAmB,WAC/FsmB,MAAM,CAAC,kBAAmB,kBAAmByiF,EAAQzrG,IAAI,mBAAqBswE,EAAS5tE,MAAM,CAAC,kBAAmB,oBACjHwc,IAAI,kBAAmBusF,EAAQ,EAEpC,EAACxiC,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACE,CAACl4E,EAAK8nF,KAAkB,IAAhB,QAAEj5E,GAASi5E,EACrB,MAAMyyB,EAAY1rG,EAAQ5a,GACpBumH,EAAa3rG,EAAQqqG,YAAYjlH,GACjCwmH,GAAUrxG,EAAAA,EAAAA,QAAOyF,GAGvB,OAFiByrG,GAA8Bt6G,EAAOu6G,EAAWC,EAAYC,GAE7DvsF,IAAI,kBAAmBusF,EAAQ,EAEjD,CAACviC,GAAAA,KAAwBl4E,GAASA,EAAMkuB,IAAI,cAAexf,GAAaM,IAAI,gBAG5E,CAACkpE,GAAAA,KAAiC,CAACl4E,EAAK+nF,KAAA,IAAE,QAAEl5E,GAASk5E,EAAA,OACnD/nF,EAAM4D,OAAO,oBAAoB+uG,GAAaA,EAASl3E,MAAM5sB,IAAU,EAEzE,CAACqpE,GAAAA,KAA2B,CAACl4E,EAAK+hG,KAAA,IAAE,QAAElzF,GAASkzF,EAAA,OAC7ClzF,EAAU7O,EAAMkuB,IAAI,mBAAoBxf,GAAaM,IAAI,oBAAoBysB,MAAM5sB,IAAY7O,CAAK,EAEtG,CAACk4E,GAAAA,KAA4Bl4E,GAASA,EAAMkuB,IAAI,mBAAoBxf,GAAaM,IAAI,qBAGrF,CAACkpE,GAAAA,KAAiC,CAACl4E,EAAKu7G,KAAA,IAAI1sG,SAAS,MAAEoT,EAAK,OAAEs2F,EAAM,OAAEvqG,EAAM,MAAEwtG,IAASD,EAAA,OACrFv7G,EACGg4B,MAAM,CAAC,gBAAiB,WAAW5uB,EAAAA,EAAAA,QAAOmvG,GAAU,KACpDvgF,MAAM,CAAC,gBAAiB,SAAU/V,GAClC+V,MAAM,CAAC,gBAAiB,WAAW5uB,EAAAA,EAAAA,QAAO4E,IAC1CgqB,MAAM,CAAC,gBAAiB,UAAU5uB,EAAAA,EAAAA,QAAOoyG,GAAS,CAAC,GAAG,EAE3D,CAACtjC,GAAAA,KAAsBl4E,GAASA,EAAMkuB,IAAI,gBAAiBxf,GAAaM,IAAI,kBAC5E,CAACkpE,GAAAA,KAAiC,CAACl4E,EAAKy7G,KAAA,IAAI5sG,SAAS,WAAE6sG,EAAU,MAAEz5F,IAASw5F,EAAA,OAC1Ez7G,EAAMkuB,IAAI,sBAAsB9kB,EAAAA,EAAAA,QAAOsyG,IAAaxtF,IAAI,0BAA2BjM,EAAM,EAE3F,CAACi2D,GAAAA,KAA2B,CAACl4E,EAAK27G,KAAA,IAAI9sG,SAAS,WAAE6sG,EAAU,MAAEz5F,IAAS05F,EAAA,OACpE37G,EAAMkuB,IAAI,qBAAsBluB,EAAMgP,IAAI,sBAAsBT,QAAOnF,EAAAA,EAAAA,QAAOsyG,KAAcxtF,IAAI,0BAA2BjM,EAAM,EAEnI,EAACg2D,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,IACAA,GAAAA,MACE,CAACl4E,EAAK47G,KAAkB,IAAhB,QAAE/sG,GAAS+sG,EACrB,MACMC,EADQ77G,EAAMgP,IAAI,sBAAsBi0B,SAAQ75B,EAAAA,EAAAA,QAAO4pF,KAAkBnkF,KACrDk+B,SAAQ7uC,GAAQA,EAAK8Q,IAAI,QAAO0F,KAAIsZ,GAASA,EAAM8B,UAAS9mB,SAEtF,OAAOhJ,EAAMkuB,IAAI,qBAAsB2tF,EAAY,EAErD,CAAC3jC,GAAAA,KAAiC,CAACl4E,EAAK87G,KAA2C,IAAvCjtG,SAAS,aAAEktG,EAAY,MAAE95F,IAAS65F,EAC5E,MAAME,EAAoBh8G,EAAMgP,IAAI,sBAAsBhI,QAAOi1G,GAAaA,EAAUjtG,IAAI,QAAU+sG,EAAa9nH,KAEnH,OAAO+L,EACJkuB,IAAI,qBAAsB8tF,GAC1B9tF,IAAI,0BAA2BjM,EAAM,EAE1C,CAACi2D,GAAAA,KAAiC,CAACl4E,EAAKk8G,KAAA,IAAE,QAAErtG,GAASqtG,EAAA,OACnDl8G,EAAMkuB,IAAI,mBAAoBluB,EAAMgP,IAAI,oBAAoBi0B,SAAQ75B,EAAAA,EAAAA,QAAOyF,IAAU,EAEvF,CAACqpE,GAAAA,KAA4B,CAACl4E,EAAKm8G,KAAA,IAAE,QAAEttG,GAASstG,EAAA,OAC9Cn8G,EAAMkuB,IAAI,iBAAkBrf,EAAQ,EAEtC,CAACqpE,GAAAA,KAA0Cl4E,GACzCA,EACGg4B,MAAM,CAAC,kBAAmB,kBAAkB5uB,EAAAA,EAAAA,QAAO,KACnD4uB,MAAM,CAAC,kBAAmB,gBAAiB,MAC3CA,MAAM,CAAC,kBAAmB,gBAAiB,MAEhD,CAACkgD,GAAAA,KAAyC,CAACl4E,EAAKo8G,KAAA,IAAE,QAAEvtG,GAASutG,EAAA,OAAKp8G,EAAMkuB,IAAI,8BAA+Brf,EAAQ,EACnH,CAACqpE,GAAAA,KAA8C,CAACl4E,EAAKq8G,KAAkB,IAAhB,QAAExtG,GAASwtG,EAChE,MAAM,MAAE3mC,EAAK,IAAEz2B,EAAG,YAAE0gC,EAAW,GAAE1rF,EAAE,KAAEklE,EAAI,SAAE2tB,GAAaj4E,EAClD3R,GAAUkM,EAAAA,EAAAA,QAAO,CACrBkzG,QAAS,CACP5mC,MAAOA,GAAS,GAChB6mC,OAAQt9D,EACR0gC,YAAaA,GAAe,GAC5B1rF,KACAklE,OACA2tB,SAAUA,GAAY,MAI1B,OAAO9mF,EACJg4B,MAAM,CAAC,kBAAmB,eAAgB,QAAS,QACnDA,MAAM,CAAC,kBAAmB,eAAgB,WAAY96B,EAAQ,EAEnE,CAACg7E,GAAAA,KAA8C,CAACl4E,EAAKw8G,KAAkB,IAAhB,QAAE3tG,GAAS2tG,EAChE,MAAM,MAAE9mC,EAAK,IAAEz2B,EAAG,YAAE0gC,EAAW,KAAExmB,EAAI,MAAEsjD,GAAU5tG,EAE3CsiE,GAAe/nE,EAAAA,EAAAA,QACnB,CACEssE,QACA6mC,OAAQt9D,EACR0gC,cACAxmB,OACA2tB,SAAU21B,IAId,OAAOz8G,EACJg4B,MAAM,CAAC,kBAAmB,eAAgB,QAASinB,GACnDjnB,MAAM,CAAC,kBAAmB,eAAgB,gBAAiBm5C,EAAa,EAE7E,CAAC+G,GAAAA,KAA4C,CAACl4E,EAAK08G,KAAkB,IAAhB,QAAE7tG,GAAS6tG,EAC9D,MAAMC,EAAS9tG,EAAQowC,IACjBA,EAAM,IAAI29D,IAAID,GAEdz/G,GAAUkM,EAAAA,EAAAA,QAAO,CACrBkzG,QAAS,CACP5mC,MAAOz2B,EAAI49D,SACXN,OAAQI,EACRxjD,KAAMla,EAAI49D,YAId,OAAO78G,EACJg4B,MAAM,CAAC,kBAAmB,eAAgB,QAAS,QACnDA,MAAM,CAAC,kBAAmB,eAAgB,WAAY96B,EAAQ,EAEnE,CAACg7E,GAAAA,KAA4C,CAACl4E,EAAK88G,KAAkB,IAAhB,QAAEjuG,GAASiuG,EAC9D,MAAMH,EAAS9tG,EAAQowC,IACjBA,EAAM,IAAI29D,IAAID,GAEdxrC,GAAe/nE,EAAAA,EAAAA,QACnB,CACEssE,MAAOz2B,EAAI49D,SACXN,OAAQI,EACRxjD,KAAMla,EAAI49D,WAId,OAAO78G,EACJg4B,MAAM,CAAC,kBAAmB,eAAgB,QAAS2kF,GACnD3kF,MAAM,CAAC,kBAAmB,eAAgB,gBAAiBm5C,EAAa,EAE7E,CAAC+G,GAAAA,KAAoC,CAACl4E,EAAK+8G,KAAA,IAAE,QAAEluG,GAASkuG,EAAA,OACtD/8G,EAAMkuB,IAAI,oBAAoB9kB,EAAAA,EAAAA,QAAOyF,GAAS,EAEhD,CAACqpE,GAAAA,KAAyC,CAACl4E,EAAKg9G,KAAA,IAAE,QAAEnuG,GAASmuG,EAAA,OAC3Dh9G,EAAMkuB,IAAI,8BAA+Brf,EAAQ,EAEnD,CAACI,EAAAA,IAAwB,IAAMP,IAC9BA,ICvfI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCtjB,YAAY,EACZm3H,oBAAoB94G,EAAAA,EAAAA,OACpB+4G,mBAAmB/4G,EAAAA,EAAAA,SAGrB,QAAewK,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,KAA6Bl4E,GAASA,EAAMkuB,IAAI,cAAc,GAC/D,CAACgqD,GAAAA,KAA8Bl4E,GAASA,EAAMkuB,IAAI,cAAc,GAChE,CAACgqD,GAAAA,KAAoC,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,GAAE5a,IAAM6D,EAAA,OAAKkI,EAAMg4B,MAAM,CAAC,qBAAsB/jC,IAAK,EAAK,EAClH,EAACgkF,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACE,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,GAAE5a,IAAMmkF,EAAA,OAAKp4E,EAAMg4B,MAAM,CAAC,qBAAsB/jC,IAAK,EAAM,EAClF,CAACikF,GAAAA,KAAmC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,GAAE5a,IAAMokF,EAAA,OAAKr4E,EAAMg4B,MAAM,CAAC,oBAAqB/jC,IAAK,EAAK,EAChH,EAACgkF,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACE,CAACl4E,EAAKs4E,KAAA,IAAIzpE,SAAS,GAAE5a,IAAMqkF,EAAA,OAAKt4E,EAAMg4B,MAAM,CAAC,oBAAqB/jC,IAAK,EAAM,EAEjF,CAACgb,EAAAA,IAAwB,IAAMP,IAC9BA,ICpBI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCuZ,KAAMC,MAASoa,QAAQ,SAASC,OAAO,cACvClb,SAAU,CACRE,MAAO,KACPC,MAAO,IAETF,UAAW,CACTC,MAAO,KACPC,MAAO,IAETK,mBAAoB,KACpBD,YAAaM,MAASqa,OAAO,cAC7BkgF,gBAAiB,CACf/xG,MAAO,YACPgyG,MAAO,QAETC,iBAAkB,CAChBjyG,MAAO,YACPgyG,MAAO,UAILE,GAAYA,CAACp7F,EAAO9W,EAAOgyG,IAC/Bl7F,EAAMtwD,QAAOq3F,GAAQA,EAAKj6C,IAAI5D,KAAQxH,QAAO25G,GACjC,SAAVH,EAAmBG,EAASr8B,UAAYq8B,IAItCC,GAAgBA,CAACx9G,EAAOmL,EAAQ0D,IACpC7O,EAAMsnC,SAAS,CAACn8B,EAAQ,UAAU+W,GAChCA,EAAMxN,KAAIu0C,GACPA,EAAKj6C,IAAI,QAAUH,EAAQ5a,IAAMmV,EAAAA,EAAAA,QAAOyF,GAAWo6C,MAK1D,QAAet6C,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,KAA0B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,OAAQrf,EAAQ,EAC7E,CAACqpE,GAAAA,KAAmCl4E,GAClCA,EAAMkuB,IAAI,WAAYxf,GAAaM,IAAI,aACpCkf,IAAI,YAAaxf,GAAaM,IAAI,cAEvC,CAACkpE,GAAAA,KAAqC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,UAAEmT,EAAS,SAAED,IAAYq2D,EAAA,OAChFp4E,EAAMkuB,IAAI,YAAY9kB,EAAAA,EAAAA,QAAO,CAC3B6Y,MAAOF,EAASE,MAChBC,MAAOo7F,IACLl0G,EAAAA,EAAAA,QAAO2Y,EAASG,OAAOxN,KAAIgC,GAAKA,EAAEwX,IAAI,YAAa,aACnDluB,EAAM0R,MAAM,CAAC,kBAAmB,UAChC1R,EAAM0R,MAAM,CAAC,kBAAmB,cAGjCwc,IAAI,aAAa9kB,EAAAA,EAAAA,QAAO,CACvB6Y,MAAOD,EAAUC,MACjBC,MAAOo7F,IACLl0G,EAAAA,EAAAA,QAAO4Y,EAAUE,OAAOxN,KAAIgC,GAAKA,EAAEwX,IAAI,YAAa,cACpDluB,EAAM0R,MAAM,CAAC,mBAAoB,UACjC1R,EAAM0R,MAAM,CAAC,mBAAoB,aAElC,EAEP,CAACwmE,GAAAA,KAAwC,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAAKr4E,EAAMkuB,IAAI,qBAAsBrf,EAAQ,EACzG,CAACqpE,GAAAA,KAAiC,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EACvDkuB,IAAI,cAAerf,GACnBqf,IAAI,qBAAsB,KAAK,EAClC,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACE,CAACl4E,EAAKu4E,KAAA,IAAE,QAAE1pE,GAAS0pE,EAAA,OACrBilC,GAAcx9G,EAAO,YAAa6O,EAAQ,EAE5C,EAACopE,EAAAA,EAAAA,GACCC,GAAAA,IACAA,GAAAA,MACE,CAACl4E,EAAKw4E,KAAA,IAAE,QAAE3pE,GAAS2pE,EAAA,OACrBglC,GAAcx9G,EAAO,WAAY6O,EAAQ,EAE3C,CAACqpE,GAAAA,KAAuB,CAACl4E,EAAKy4E,KAAA,IAAI5pE,SAAS,MAAEzD,EAAK,MAAEgyG,IAAS3kC,EAAA,OAC3Dz4E,EACGkuB,IAAI,mBAAmB9kB,EAAAA,EAAAA,QAAO,CAAEgC,QAAOgyG,WACvC91E,SAAS,CAAC,WAAY,UAAUplB,GAC/Bo7F,GAAUp7F,EAAO9W,EAAOgyG,IACxB,EAEN,CAACllC,GAAAA,KAAwB,CAACl4E,EAAK04E,KAAA,IAAI7pE,SAAS,MAAEzD,EAAK,MAAEgyG,IAAS1kC,EAAA,OAC5D14E,EACGkuB,IAAI,oBAAoB9kB,EAAAA,EAAAA,QAAO,CAAEgC,QAAOgyG,WACxC91E,SAAS,CAAC,YAAa,UAAUplB,GAChCo7F,GAAUp7F,EAAO9W,EAAOgyG,IACxB,EAEN,CAACllC,GAAAA,KAA6B,CAACl4E,EAAK24E,KAAkB,IAAhB,QAAE9pE,GAAS8pE,EAC3C2G,EAAWt/E,EAoBf,OAlBA6O,EAAQhX,SAAQ6nC,IACd,MAAM66E,EAAY76E,EAAEzrC,GACdwmH,GAAUrxG,EAAAA,EAAAA,QAAOs2B,GAEnB4/C,EAAS5tE,MAAM,CAAC,WAAY,UAAU1K,QAAO0P,GAAKA,EAAE1H,IAAI,QAAUurG,IAAWx2F,OAC/Eu7D,EAAWA,EACRh4C,SAAS,CAAC,WAAY,UAAUvlB,GAC/BA,EAASrN,KAAIxX,GACPA,EAAQ8R,IAAI,QAAUurG,EACjBr9G,EAAQu+B,MAAMg/E,GAGhBv9G,MAGf,IAGKoiF,CAAQ,EAEjB,CAACrwE,EAAAA,IAAwB,IAAMP,IAC9BA,ICpHH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAIA,KCAN,IAAeoqF,EAAAA,EAAAA,GAAgB,CAC7B27B,SAAQ,GACR56B,GAAE,GACF77E,OAAM,GACNtP,KAAIA,K,YCLN,MAAMgtG,GAAwB,CAC5BgZ,aAAc,qBACdC,YAAa,qBACbC,uBAAwB,gCAGblvG,IAAetF,EAAAA,EAAAA,QAAO,CACjCx3C,OAAQ,GACRysC,UAAW,GACXxsC,WAAY,GACZgsJ,cAAe,GACf/rJ,WAAY,GACZgsJ,cAAe,GACfC,aAAc,EACdC,sBAAuB,EACvBC,uBAAuB,EACvBC,mBAAmB,EACnBC,yBAAyB,EACzBC,gBAAgB,EAChBC,qBAAqB,EACrBC,qBAAqB,EACrB9wB,kCAAkC,EAClC+wB,gCAAgC,EAChCC,gCAAgC,EAChCC,iCAAiC,EACjCC,sBAAsB,EACtBC,wBAAwB,EACxBC,yBAAyB,EACzBC,0BAA0B,EAC1BC,uBAAuB,EACvBC,kBAAmB,WACnBnT,gBAAgB,EAChB72D,cAAe,KACf6vD,kBAAmB,eACnBC,eAAgB,qBAChBma,eAAe,EACfC,uBAAuB,EACvBC,gCAAgC,EAChCC,+BAA+B,EAC/B7Z,wBAAwB,EACxB8Z,4BAA4B,EAC5BC,uBAAuB,IAGzB,QAAe1wG,EAAAA,EAAAA,GACb,CACE,CAACupE,GAAAA,IAAiB,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,OAAEj9C,EAAM,UAAEysC,IAAavG,EAAA,OAAKkI,EAAMy7B,MAAM,CAAE7pE,SAAQysC,aAAY,EACnG,CAAC65E,GAAAA,IAAqB,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,OAAEj9C,EAAM,UAAEysC,IAAa+5E,EAAA,OAAKp4E,EAAMy7B,MAAM,CAAE5pE,WAAYD,EAAQisJ,cAAex/G,GAAY,EAClI,CAAC65E,GAAAA,IAAqB,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,OAAEj9C,EAAM,UAAEysC,IAAag6E,EAAA,OAAKr4E,EAAMy7B,MAAM,CAAE3pE,WAAYF,EAAQksJ,cAAez/G,GAAY,EAClI,CAAC65E,GAAAA,IAA0B,CAACl4E,EAAKs4E,KAAA,IAAIzpE,QAAS9U,GAAMu+E,EAAA,OAAKt4E,EAAMkuB,IAAI,eAAgBn0B,EAAK,EACxF,CAACm+E,GAAAA,IAAmC,CAACl4E,EAAKu4E,KAAA,IAAI1pE,QAAS9U,GAAMw+E,EAAA,OAAKv4E,EAAMkuB,IAAI,wBAAyBn0B,EAAK,EAE1G,CAACm+E,GAAAA,IAAgC,CAACl4E,EAAKw4E,KAAA,IAAI3pE,SAAS,WAAEywG,IAAc9mC,EAAA,OAAKx4E,EACtEkuB,IAAI,yBAAyB,GAC7BA,IAAI,wBAAyBoxF,EAAW,EAC3C,CAACpnC,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAE9E,CAACgqD,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GACzE,CAACgqD,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GAE1E,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,2BAA2B,GACjF,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,2BAA2B,GAElF,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GACzE,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAE1E,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GACzE,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAE1E,CAACgqD,GAAAA,IAAyBl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC/D,CAACgqD,GAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAEhE,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAEzC,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,EACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAEzC,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,2BAA2B,GAAOA,IAAI,yBAAyB,GAEtF,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GACnF,CAACgqD,GAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GACjFA,IAAI,8BAA8B,GAClCA,IAAI,yBAAyB,GAChC,CAACgqD,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GAAOA,IAAI,kBAAkB,GAE7G,CAACgqD,GAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAClE,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAAOA,IAAI,kBAAkB,GACxG,CAACgqD,GAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAElE,CAACgqD,GAAAA,IAA2Cl4E,GAASA,EAAMkuB,IAAI,oCAAoC,GACnG,CAACgqD,GAAAA,IAA4Cl4E,GAASA,EAAMkuB,IAAI,oCAAoC,GAEpG,CAACgqD,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC3E,CAACgqD,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAE5E,CAACgqD,GAAAA,IAAyCl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAC/F,CAACgqD,GAAAA,IAA0Cl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAChG,CAACgqD,GAAAA,IAAwCl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAE9F,CAACgqD,GAAAA,IAAyCl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAC/F,CAACgqD,GAAAA,IAA0Cl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAEhG,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAEzC,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAM4D,OAAO,0BAA0Bg7B,IAAMA,IAErF,CAACs5C,GAAAA,IAA+B,CAACl4E,EAAKy4E,KAAkB,IAAhB,QAAE5pE,GAAS4pE,EACjD,MAAM6G,EAAWt/E,EAAMkuB,IAAI,oBAAqBrf,GAEhD,OAAI61F,GAAsB71F,GACjBywE,EAASpxD,IAAI,iBAAkBw2E,GAAsB71F,IAGvD7O,CAAK,EAGd,EAACi4E,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,oCAAoC,GAAOA,IAAI,kBAAkB,GACxF,CAAEgqD,GAAAA,IAA8Cl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAErF,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,oCAAoC,GAAOA,IAAI,kBAAkB,GAExF,CAACgqD,GAAAA,IAA2B,CAACl4E,EAAK04E,KAAA,IAAI7pE,QAASnX,GAAMghF,EAAA,OAAK14E,EAAMkuB,IAAI,gBAAiBx2B,EAAK,EAE1F,CAACwgF,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAC1E,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAC5F,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,iCAAiC,GAE3F,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAEhD,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAEzD,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,iCAAiC,GAExD,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,iBAAiB,GACxC,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,iBAAiB,GAExC,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,2BAA2B,GACjF,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,2BAA2B,GAElF,CAACgqD,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAC/E,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAEhF,CAACgqD,GAAAA,IAA0Cl4E,GAASA,EAAMkuB,IAAI,mCAAmC,GACjG,CAACgqD,GAAAA,IAA2Cl4E,GAASA,EAAMkuB,IAAI,mCAAmC,GAElG,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC5E,CAACgqD,GAAAA,IAAwCl4E,GAASA,EAC/CkuB,IAAI,kBAAkB,GACtBA,IAAI,mCAAmC,GAC1C,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAE5E,CAACgqD,GAAAA,IAAwC,CAACl4E,EAAK24E,KAAA,IAAE,QAAE9pE,GAAS8pE,EAAA,OAAK34E,EAAMkuB,IAAI,6BAA8Brf,EAAQ,EACjH,CAACqpE,GAAAA,IAAmC,CAACl4E,EAAK44E,KAAA,IAAE,QAAE/pE,GAAS+pE,EAAA,OAAK54E,EAAMkuB,IAAI,wBAAyBrf,EAAQ,EACvG,CAACI,EAAAA,IAAwB,IAAMP,IAEjCA,ICjNF,MAAM6wG,GAAwB,CAC5B,CAACpyC,EAAAA,GAAAA,cAA6C,CAC5CkqC,aAAc,wBAEhB,CAAClqC,EAAAA,GAAAA,aAA4C,CAC3CkqC,aAAc,wBAEhB,CAAClqC,EAAAA,GAAAA,wBAAuD,CACtDkqC,aAAc,iCAEhB,CAAClqC,EAAAA,GAAAA,4BAA2D,CAC1DkqC,aAAc,0CAIL3oG,IAAetF,EAAAA,EAAAA,QAAO,CACjCo2G,qBAAsB,EACtBC,sBAAuB,GACvBC,YAAa,EACbC,aAAc,GACdC,kBAAkB,EAClBC,SAAU,EACVC,UAAW,IACXp+D,qBAAsB,GACtBC,8BAA+B,GAC/Bo+D,sCAAuC,KAGzC,QAAepxG,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAyB,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,MAAEuU,EAAK,kBAAEwhF,IAAqB9sG,EAAA,OACzEkI,EAAM4D,OAAO27G,GAAsB3a,GAAmByS,cAAcl7E,GAAWA,EAAQt7B,MAAKuI,EAAAA,EAAAA,QAAO,CACjGs/B,MAAOtlB,EACPprB,MAAOorB,EACPhY,MAAOw5F,MACL,EACN,CAAC1sB,GAAAA,IAAiD,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,MAAEuU,EAAK,kBAAEwhF,IAAqBxsB,EAAA,OACjGp4E,EAAMkuB,IAAIqxF,GAAsB3a,GAAmByS,cAAcjuG,EAAAA,EAAAA,QAAO,CAAC,CACvEs/B,MAAOtlB,EAAMslB,MACb1wC,MAAOorB,EAAMprB,MACboT,MAAOw5F,KACL,EACN,CAAC1sB,GAAAA,IAAuB,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,MAAEzD,EAAK,MAAEgsB,IAASihD,EAAA,OAC3Dr4E,EAAM4D,OAAO27G,GAAsBn0G,GAAOisG,cAAclnB,GAAQA,EAAK11D,OAAOrD,IAAO,EAErF,CAAC8gD,GAAAA,IAA8Cl4E,GAASA,EACrDkuB,IAAI,wCAAyCxf,GAAaM,IAAI,0CACjE,CAACkpE,GAAAA,IAAuB,CAACl4E,EAAKs4E,KAAqC,IAAjCzpE,SAAS,OAAE7H,EAAM,MAAEowB,IAASkhD,EAC5D,MAAM,aAAE++B,GAAiBkI,GAAsBv4G,EAAOgI,IAAI,UAE1D,OAAOhP,EAAMg4B,MAAM,CAACq/E,EAAcjgF,GAAQpwB,EAAOknB,IAAI,WAAW,GAAM,EAExE,CAACgqD,GAAAA,IAA0B,CAACl4E,EAAKu4E,KAAA,IAAI1pE,QAAS9U,GAAMw+E,EAAA,OAAKv4E,EAAMkuB,IAAI,cAAen0B,EAAK,EACvF,CAACm+E,GAAAA,IAAmC,CAACl4E,EAAKw4E,KAAA,IAAI3pE,QAAS9U,GAAMy+E,EAAA,OAAKx4E,EAAMkuB,IAAI,uBAAwBn0B,EAAK,EACzG,CAACm+E,GAAAA,IAAyCl4E,IACxC,IAAIs/E,EAAWt/E,EAAMkuB,IAAI,oBAAqBluB,EAAMgP,IAAI,qBAMxD,OAJIswE,EAAStwE,IAAI,sBACfswE,EAAWA,EAASpxD,IAAI,cAAe,IAGlCoxD,CAAQ,EAEjB,CAACpH,GAAAA,IAAuBl4E,GACtBA,EAAMy7B,MAAM/sB,IAEd,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,IClEI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC42G,cAAe,EACfC,uBAAwB,EACxBC,gBAAiB,CACfjsH,GAAI,KACJksH,UAAW,GACXC,SAAU,GACV3yB,KAAM,GACN/X,MAAO,GACP2qC,SAAU,GACVC,QAAS,GACTC,QAAS,GACTC,QAAS,GACT52B,MAAO,GACP62B,IAAK,GACLC,oBAAqB,GACrBC,QAAS,KACT3gH,MAAO,KACP4gH,YAAa,GACbC,WAAY,GACZC,YAAa,GACbC,WAAY,GACZC,UAAW,GACXC,aAAc,GACdC,WAAY,GACZC,SAAU,GACVh+F,kBAAmB,GACnBuI,WAAY,GACZ4vC,YAAa,GACbH,UAAW,GACXmB,WAAY,IAEdz4C,SAAU,GACVu9F,kBAAmB,KACnBC,iBAAkB,GAClBC,KAAM,GACNn+F,kBAAmB,GACnBo+F,wBAAyB,GACzBC,SAAU,CACRvtH,GAAI,KACJ6a,KAAM,GACN6wE,YAAa,KACb97D,SAAU,IAEZ49F,cAAe,CACbC,MAAO,GACPC,YAAa,GACbC,mBAAmB,GAErBC,aAAc,CACZC,SAAU,GACVC,OAAQ,GACRC,eAAgB,EAChBC,aAAc,KAIlB,QAAetzG,EAAAA,EAAAA,GACb,CACE,CAACupE,GAAAA,IAAgC,CAACl4E,EAAKlI,KAAkC,IAA9B+W,SAAS,IAAE9W,EAAG,MAAEC,IAASF,EAC9DooH,EAAkBlgH,EAAMgP,IAAI,mBAAmBkf,IAAIn2B,EAAKC,GAM5D,MAJY,YAARD,IACFmoH,EAAkBA,EAAgBhyF,IAAI,QAAS,OAG1CluB,EAAMkuB,IAAI,kBAAmBgyF,EAAgB,EAEtD,CAAChoC,GAAAA,IAAyB,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMy7B,MAAM,CAAE6lF,MAAMl4G,EAAAA,EAAAA,QAAOyF,IAAW,EACxF,CAACqpE,GAAAA,IAA2B,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAAKr4E,EAAMg4B,MAAM,CAAC,kBAAmB,eAAe5uB,EAAAA,EAAAA,QAAOyF,GAAS,EACnH,CAACqpE,GAAAA,IAAoB,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EAAM4+E,QAAQ,CAAC,SAASx1E,EAAAA,EAAAA,QAAOyF,GAAS,EACrF,CAACqpE,GAAAA,GAA2B,CAACl4E,EAAKu4E,KAAkB,IAAhB,QAAE1pE,GAAS0pE,EAC7C,MAAM,GAAEtkF,GAAO4a,EACTqzG,EAAUliH,EAAMgP,IAAI,QAAQhI,QAAOmzB,GAAKA,EAAEnrB,IAAI,QAAU/a,IAAI4M,MAAKuI,EAAAA,EAAAA,QAAOyF,IACxEszG,EAAcniH,EAAMgP,IAAI,YAAY0F,KAAIgC,IAC5C,MAAM0rG,EAAiB1rG,EAAE1H,IAAI,cAAchI,QAAOmzB,GAAKA,EAAEnrB,IAAI,QAAU/a,IAAI4M,MAAKuI,EAAAA,EAAAA,QAAOyF,IAEvF,OAAO6H,EAAEwX,IAAI,aAAck0F,EAAe,IAG5C,OAAOpiH,EACJkuB,IAAI,OAAQg0F,GACZh0F,IAAI,WAAYi0F,EAAY,EAEjC,CAACjqC,GAAAA,IAA2B,CAACl4E,EAAKw4E,KAAkB,IAAhB,QAAE3pE,GAAS2pE,EAC7C,MAAM,GAAEvkF,GAAO4a,EACTqzG,EAAUliH,EAAMgP,IAAI,QAAQhI,QAAOmzB,GAAKA,EAAEnrB,IAAI,QAAU/a,IACxDkuH,EAAcniH,EAAMgP,IAAI,YAAY0F,KAAIgC,IAC5C,MAAM0rG,EAAiB1rG,EAAE1H,IAAI,cAAchI,QAAOmzB,GAAKA,EAAEnrB,IAAI,QAAU/a,IAEvE,OAAOyiB,EAAEwX,IAAI,aAAck0F,EAAe,IAG5C,OAAOpiH,EACJkuB,IAAI,OAAQg0F,GACZh0F,IAAI,WAAYi0F,EAAY,EAGjC,CAACjqC,GAAAA,IAAmC,CAACl4E,EAAKy4E,KAAkB,IAAhB,QAAE5pE,GAAS4pE,EACrD,MAAM4pC,EAAgBxzG,EAAQ6F,KAAIylB,IAAK,CAAGlmC,GAAIkmC,MAE9C,OAAOn6B,EAAMg4B,MAAM,CAAC,kBAAmB,gBAAgB5uB,EAAAA,EAAAA,QAAOi5G,GAAe,EAG/E,CAACnqC,GAAAA,IAAiC,CAACl4E,EAAK04E,KAAkB,IAAhB,QAAE7pE,GAAS6pE,EACnD,MAAM4pC,EAAczzG,EAAQ6F,KAAIylB,IAAK,CAAGlmC,GAAIkmC,MAE5C,OAAOn6B,EAAMg4B,MAAM,CAAC,kBAAmB,cAAc5uB,EAAAA,EAAAA,QAAOk5G,GAAa,EAG3E,CAACpqC,GAAAA,IAAkC,CAACl4E,EAAK24E,KAAkB,IAAhB,QAAE9pE,GAAS8pE,EACpD,MAAM4pC,EAAe1zG,EAAQ6F,KAAIylB,IAAK,CAAGlmC,GAAIkmC,MAE7C,OAAOn6B,EAAMg4B,MAAM,CAAC,kBAAmB,eAAe5uB,EAAAA,EAAAA,QAAOm5G,GAAc,EAG7E,CAACrqC,GAAAA,IAAgC,CAACl4E,EAAK44E,KAAA,IAAI/pE,SAAS,QAAEqV,IAAW00D,EAAA,OAAK54E,EACnE4+E,QAAQ,CAAC,mBAAoB16D,GAC7BgK,IAAI,oBAAqBhK,EAAQlV,IAAI,MAAM,EAE9C,CAACkpE,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,kBAAmBxf,GAAaM,IAAI,oBACzF,CAACkpE,GAAAA,IAAgC,CAACl4E,EAAK64E,KAAA,IAAE,QAAEhqE,GAASgqE,EAAA,OAAK74E,EAAMkuB,IAAI,oBAAqBrf,EAAQG,IAAI,MAAM,EAC1G,CAACkpE,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,oBAAqBxf,GAAaM,IAAI,sBAE3F,CAACkpE,GAAAA,IAAkC,CAACl4E,EAAK84E,KAAA,IAAE,QAAEjqE,GAASiqE,EAAA,OAAK94E,EAAMkuB,IAAI,oBAAoB9kB,EAAAA,EAAAA,QAAOyF,GAAS,EAEzG,EAACopE,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,mBAAoBxf,GAAaM,IAAI,qBAE5D,CAACkpE,GAAAA,IAAyC,CAACl4E,EAAK+4E,KAAA,IAAIlqE,SAAS,IAAE9W,EAAG,MAAEC,IAAS+gF,EAAA,OAAK/4E,EAAMg4B,MAAM,CAAC,WAAYjgC,GAAMC,EAAM,EACvH,CAACkgF,GAAAA,IAAwB,CAACl4E,EAAK++E,KAA+B,IAA3BlwE,QAAS6+E,GAAa3O,EAGvD,OAFmB/+E,EAAM0R,MAAM,CAAC,WAAY,aAAagD,KAAIwP,GAAWA,EAAQlV,IAAI,QAErEuU,SAASmqE,EAAY1+E,IAAI,OAC/BhP,EAAMsnC,SAAS,CAAC,WAAY,aAAazjB,GAAYA,EAAS7c,QAAOkd,GAAWA,EAAQlV,IAAI,QAAU0+E,EAAY1+E,IAAI,UAGxHhP,EAAMsnC,SAAS,CAAC,WAAY,aAAazjB,GAAYA,EAAShjB,KAAK6sF,IAAa,EAEzF,CAACxV,GAAAA,IAA4Bl4E,IAC3B,MAAMwiH,EAAcxiH,EAAMgP,IAAI,YACxByzG,EAAmBziH,EAAM0R,MAAM,CAAC,WAAY,aAE5CgxG,EAAsBF,EACzBx7G,QAAOkd,IAAYu+F,EAAiB/tG,KAAIgC,GAAKA,EAAE1H,IAAI,QAAOuU,SAASW,EAAQlV,IAAI,SAAWkV,EAAQlV,IAAI,kBAEzG,OAAOhP,EAAMsnC,SAAS,CAAC,WAAY,aAAazjB,GAAYA,EAAStV,OAAOm0G,IAAqB,EAEnG,CAACxqC,GAAAA,IAAiC,CAACl4E,EAAKg/E,KAAsB,IAAlBnwE,QAAS+U,GAAIo7D,EAGvD,OAFgBh/E,EAAM0R,MAAM,CAAC,gBAAiB,UAAUgD,KAAI+rE,GAAKA,EAAEzxE,IAAI,QAE3DuU,SAASK,EAAG5U,IAAI,OACnBhP,EAAMsnC,SAAS,CAAC,gBAAiB,UAAUo6E,GAASA,EAAM16G,QAAOy5E,GAAKA,EAAEzxE,IAAI,QAAU4U,EAAG5U,IAAI,UAG/FhP,EAAMsnC,SAAS,CAAC,gBAAiB,UAAUo6E,GAASA,EAAM7gH,KAAK+iB,IAAI,EAE5E,CAACs0D,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,gBAAiBxf,GAAaM,IAAI,kBACnF,CAACkpE,GAAAA,IAAyC,CAACl4E,EAAKk/E,KAAA,IAAE,QAAErwE,GAASqwE,EAAA,OAAKl/E,EAAMkuB,IAAI,WAAYrf,EAAQ,EAChG,CAACqpE,GAAAA,IAA0Cl4E,GAASA,EAAMkuB,IAAI,WAAYxf,GAAaM,IAAI,aAC3F,CAACkpE,GAAAA,IAA4Cl4E,GAASA,EAAMkuB,IAAI,WAAYxf,GAAaM,IAAI,aAC7F,EAACipE,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,WAAYxf,GAAaM,IAAI,aAEpD,CAACkpE,GAAAA,IAAyC,CAACl4E,EAAKq/E,KAAA,IAAE,QAAExwE,GAASwwE,EAAA,OAAKr/E,EAAMkuB,IAAI,oBAAqBrf,EAAQG,IAAI,MAAM,EAEnH,CAACkpE,GAAAA,IAA8B,CAACl4E,EAAKw/E,KAAA,IAAE,QAAE3wE,GAAS2wE,EAAA,OAAKx/E,EAAMg4B,MAAM,CAAC,WAAY,MAAOnpB,EAAQ,EAC/F,CAACqpE,GAAAA,IAAwC,CAACl4E,EAAK2gF,KAAA,IAAI9xE,SAAS,kBAAEsU,EAAiB,MAAElB,IAAS0+D,EAAA,OACxF3gF,EAAMkuB,IAAI,qBAAqB9kB,EAAAA,EAAAA,QAAO+Z,IAAqB+K,IAAI,0BAA0B9kB,EAAAA,EAAAA,QAAO6Y,GAAO,EACzG,CAACi2D,GAAAA,IAAwC,CAACl4E,EAAK4gF,KAAA,IAAI/xE,SAAS,kBAAEsU,IAAqBy9D,EAAA,OACjF5gF,EAAMkuB,IAAI,2BAA2B9kB,EAAAA,EAAAA,QAAO+Z,GAAmB,EACjE,CAAC+0D,GAAAA,IAAwC,CAACl4E,EAAK6gF,KAAkB,IAAhB,QAAEhyE,GAASgyE,EAC1D,MAAM8hC,EAAY3iH,EAAMgP,IAAI,qBACtB4zG,GAAcx5G,EAAAA,EAAAA,QAAO,IAAKyF,EAASgV,UAAUza,EAAAA,EAAAA,QAAO,MAE1D,OAAOpJ,EACJkuB,IAAI,oBAAqBy0F,EAAU1/E,QAAQ2/E,IAC3C10F,IAAI,yBAA0BluB,EAAMgP,IAAI,0BAA4B,EAAE,EAE3E,CAACkpE,GAAAA,IAAwC,CAACl4E,EAAK8gF,KAAkB,IAAhB,QAAEjyE,GAASiyE,EAC1D,MAAM+hC,EAAY7iH,EACfgP,IAAI,qBACJuzE,WAAU3+D,GAAMA,EAAG5U,IAAI,QAAUH,EAAQ5a,KAE5C,OAAO+L,EAAMg4B,MAAM,CAAC,oBAAqB6qF,IAAYz5G,EAAAA,EAAAA,QAAOyF,GAAS,EAEvE,CAACqpE,GAAAA,IAAwC,CAACl4E,EAAK8nF,KAAkB,IAAhB,QAAEj5E,GAASi5E,EAC1D,MAAMg7B,EAAe9iH,EAAMgP,IAAI,qBAAqBhI,QAAO4c,GAAMA,EAAG5U,IAAI,QAAUH,EAAQ5a,KACpFwtH,EAAgBzhH,EAAMgP,IAAI,iBAAiBA,IAAI,SAAShI,QAAOy5E,GAAKA,EAAEzxE,IAAI,QAAUH,EAAQ5a,KAC5F8uH,EAAgB/iH,EAAMgP,IAAI,0BAEhC,OAAOhP,EACJkuB,IAAI,oBAAqB40F,GACzB9qF,MAAM,CAAC,gBAAiB,SAAUypF,GAClCvzF,IAAI,yBAA4C,IAAlB60F,EAAsBA,EAAgB,EAAI,EAAE,EAE/E,CAAC7qC,GAAAA,IAAuC,CAACl4E,EAAK+nF,KAAkB,IAAhB,QAAEl5E,GAASk5E,EACzD,MAAM86B,EAAY7iH,EACfgP,IAAI,qBACJuzE,WAAU3+D,GAAMA,EAAG5U,IAAI,QAAUH,EAAQ5a,KAE5C,GAAuC,OAAnC+L,EAAMgP,IAAI,qBAA+B,CAC3C,MACMg0G,EADUhjH,EAAMgP,IAAI,YAAYyH,MAAKC,GAAKA,EAAE1H,IAAI,QAAUhP,EAAMgP,IAAI,uBACjCA,IAAI,qBAAqBhI,QAAO4c,GAAMA,EAAG5U,IAAI,QAAUH,EAAQ5a,KAClGgvH,EAAejjH,EAAMgP,IAAI,YAAYuzE,WAAU7rE,GAAKA,EAAE1H,IAAI,QAAUhP,EAAMgP,IAAI,uBAEpF,OAAOhP,EACJg4B,MAAM,CAAC,oBAAqB6qF,IAAYz5G,EAAAA,EAAAA,QAAOyF,IAC/CmpB,MAAM,CAAC,WAAYirF,EAAc,qBAAsBD,EAC5D,CAEA,OAAOhjH,EACJg4B,MAAM,CAAC,oBAAqB6qF,IAAYz5G,EAAAA,EAAAA,QAAOyF,GAAS,EAE7D,CAACqpE,GAAAA,IAA+C,CAACl4E,EAAK+hG,KAAkB,IAAhB,QAAElzF,GAASkzF,EACjE,MAAM8gB,EAAY7iH,EACfgP,IAAI,qBACJuzE,WAAU3+D,GAAMA,EAAG5U,IAAI,QAAUH,EAAQ5a,KAEtCivH,EAAkBljH,EAAMgP,IAAI,YAAY0F,KAAIwP,IAChD,MAAMi/F,EAAsBt0G,EAAQgV,SAAS0+D,WAC3C6gC,GAAkBA,EAAenvH,KAAOiwB,EAAQlV,IAAI,QAEhDq0G,GAAan/F,EAAQlV,IAAI,qBAAqB0F,KAAI+rE,GAAKA,EAAEzxE,IAAI,QAAOwjG,SAAS3jG,EAAQ5a,IAE3F,OAA6B,IAAzBkvH,GAA8BE,EACzBn/F,EAAQgK,IACb,oBACAhK,EAAQlV,IAAI,qBAAqBi0B,SAAQ75B,EAAAA,EAAAA,QAAO,CAAEnV,GAAI4a,EAAQ5a,GAAI6a,KAAMD,EAAQC,SAI7EoV,CAAO,IAGhB,OAAOlkB,EACJkuB,IAAI,WAAYg1F,GAChBlrF,MAAM,CAAC,oBAAqB6qF,IAAYz5G,EAAAA,EAAAA,QAAOyF,IAC/Cqf,IAAI,WAAYxf,GAAaM,IAAI,YAAY,EAElD,CAACkpE,GAAAA,IAA+B,CAACl4E,EAAKu7G,KAAA,IAAI1sG,SAAS,SAAEgV,EAAQ,MAAE5B,IAASs5F,EAAA,OACtEv7G,EAAMkuB,IAAI,YAAY9kB,EAAAA,EAAAA,QAAOya,IAAYqK,IAAI,iBAAiB9kB,EAAAA,EAAAA,QAAO6Y,GAAO,EAG9E,CAACqhG,GAAAA,KAA6CtjH,GAASA,EAAMkuB,IAAI,WAAYxf,GAAaM,IAAI,aAC3Fkf,IAAI,gBAAiBxf,GAAaM,IAAI,kBAEzC,CAACkpE,GAAAA,IAA8B,CAACl4E,EAAKy7G,KAAkB,IAAhB,QAAE5sG,GAAS4sG,EAChD,MAAM8H,GAAan6G,EAAAA,EAAAA,QAAOyF,GACpBuoB,EAAQp3B,EAAMgP,IAAI,YAAYuzE,WAAU7rE,GAAKA,EAAE1H,IAAI,QAAUu0G,EAAWv0G,IAAI,QAClF,IAAIswE,EAUJ,OAPEA,EADEloD,GAAS,EACAp3B,EAAMg4B,MAAM,CAAC,WAAYZ,GAAQmsF,GAEjCvjH,EACRkuB,IAAI,WAAYluB,EAAMgP,IAAI,YAAYi0B,QAAQsgF,IAC9Cr1F,IAAI,gBAAiBluB,EAAMgP,IAAI,iBAAmB,GAGhDswE,EAASpxD,IAAI,kBAAmBxf,GAAaM,IAAI,mBAAmB,EAE7E,CAACkpE,GAAAA,IAAgC,CAACl4E,EAAK27G,KAAA,IAAE,QAAE9sG,GAAS8sG,EAAA,OAAK37G,EAAMkuB,IAAI,gBAAgB9kB,EAAAA,EAAAA,QAAOyF,GAAS,EACnG,CAACqpE,GAAAA,IAAkCl4E,GAASA,EACzCkuB,IAAI,eAAgBxf,GAAaM,IAAI,iBACrCkf,IAAI,WAAYxf,GAAaM,IAAI,aACpC,CAACkpE,GAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,WAAYxf,GAAaM,IAAI,aACrF,CAACkpE,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,eAAgBxf,GAAaM,IAAI,iBACvF,CAACkpE,GAAAA,GAAwC,CAACl4E,EAAK47G,KAAA,IAAI/sG,SAAS,IAAE9W,EAAG,MAAEC,IAAS4jH,EAAA,OAAK57G,EAC9E4D,OAAO,iBAAiBlM,GAAQA,EAAKw2B,IAAIn2B,EAAKC,IAAO,EACxD,CAACkgF,GAAAA,IAAwC,CAACl4E,EAAK87G,KAAgD,IAA5CjtG,SAAS,WAAE20G,EAAU,aAAEC,IAAgB3H,EACxF,MAAM6G,EAAY3iH,EAAMgP,IAAI,qBAAqBhI,QAAOy5E,IAAMgjC,EAAalgG,SAASk9D,EAAEzxE,IAAI,SAE1F,OAAOhP,EACJkuB,IAAI,oBAAqBy0F,EAAU1/E,SAAQ75B,EAAAA,EAAAA,QAAOo6G,KAClDt1F,IAAI,gBAAiBxf,GAAaM,IAAI,kBACtCkf,IAAI,yBAA0BluB,EAAMgP,IAAI,0BAA4B,EAAIy0G,EAAa5pH,OAAO,EAEjG,CAACoV,EAAAA,IAAwB,IAAMP,IAC9BA,IC9RL,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACF77E,OAAM,GACNtP,KAAIA,K,YCHC,MAAMgX,IAAetF,EAAAA,EAAAA,QAAO,CACjCs6G,kBAAkB,EAClBC,gBAAgB,EAChBC,kBAAkB,EAClB5V,qBAAqB,EACrB6V,6BAA6B,EAC7BC,oBAAoB,EACpBC,sBAAsB,EACtBC,YAAY,EACZC,UAAU,IAGZ,QAAet1G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GACnE,CAACgqD,GAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GACpE,CAACgqD,GAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GACnE,CAACgqD,GAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,oBAAoB,GACpE,CAACgqD,GAAAA,IAAyBl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC/D,CAACgqD,GAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAChE,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GACzE,EAAC+pD,EAAAA,EAAAA,GAAeC,GAAAA,GAA+BA,GAAAA,KAA+Bl4E,GAC5EA,EAAMkuB,IAAI,uBAAuB,GAEnC,CAACgqD,GAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACtE,EAAC+pD,EAAAA,EAAAA,GAAeC,GAAAA,GAA6BA,GAAAA,IAA6Bl4E,GACxEA,EAAMkuB,IAAI,sBAAsB,GAElC,CAACgqD,GAAAA,GAAgCl4E,GAASA,EAAMkuB,IAAI,cAAeluB,EAAMgP,IAAI,eAC7E,CAACkpE,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC1E,EAAC+pD,EAAAA,EAAAA,GAAeC,GAAAA,GAA+BA,GAAAA,KAA+Bl4E,GAC5EA,EAAMkuB,IAAI,wBAAwB,GAEpC,CAACgqD,GAAAA,GAAsB,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,WAAYrf,EAAQ,EAC7E,CAACqpE,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,+BAA+B,GACzF,EAAC+pD,EAAAA,EAAAA,GAAeC,GAAAA,GAAuCA,GAAAA,KAAuCl4E,GAC5FA,EAAMkuB,IAAI,+BAA+B,GAE3C,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICtCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC86G,iBAAkB,CAChBC,SAAS,EACTjiG,MAAO,IAETkiG,gBAAiB,CACfD,SAAS,EACTjiG,MAAO,IAETmiG,iBAAkB,CAChBpwH,GAAI,KACJ6a,KAAM,KACNw1G,QAAQ,EACRC,UAAU,EACVC,KAAM,KACNC,KAAM,KACNnL,SAAS,KAIb,QAAe3qG,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA8B,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,IAAE9W,EAAG,MAAEC,IAASF,EAAA,OAChEkI,EAAMg4B,MAAM,CAAC,mBAAoBjgC,GAAMC,GAAOggC,MAAM,CAAC,mBAAoB,YAAY,EAAK,EAE5F,CAACkgD,GAAAA,GAA+B,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OACjDp4E,EAAMkuB,IAAI,mBAAoBrf,EAAQ,EAExC,CAACqpE,GAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,mBAAoBxf,GAAaM,IAAI,qBACrF,CAACkpE,GAAAA,IAA8B,CAACl4E,EAAKq4E,KAAkB,IAAhB,QAAExpE,GAASwpE,EAChD,IAAKxpE,EACH,OAAO7O,EAGT,MAAM,GAAE/L,EAAE,OAAEqwH,GAAWz1G,EACjB9W,EAAMusH,EAAS,kBAAoB,mBACnCI,EAAmB1kH,EAAM0R,MAAM,CAAC3Z,EAAK,UAE3C,GAAI2sH,EAAiB39G,MAAK49G,GAAYA,EAAS31G,IAAI,QAAU/a,IAAK,CAChE,MAAMmjC,EAAQstF,EAAiBniC,WAAUoiC,GAAYA,EAAS31G,IAAI,QAAU/a,IAE5E,OAAO+L,EAAMg4B,MAAM,CAACjgC,EAAK,QAASq/B,IAAQhuB,EAAAA,EAAAA,QAAOyF,GACnD,CAEA,OAAO7O,EAAMsnC,SAAS,CAACvvC,EAAK,UAAU6sH,GAAiBA,EAAc3hF,SAAQ75B,EAAAA,EAAAA,QAAOyF,KAAU,EAEhG,CAACqpE,GAAAA,IAAgC,CAACl4E,EAAKs4E,KAA8D,IAA1DzpE,SAAS,OAAEy1G,EAAQ1jH,QAAQ,UAAEikH,EAAS,QAAEV,KAAa7rC,EAC9F,MAAMvgF,EAAMusH,EAAS,kBAAoB,mBAEzC,OAAOtkH,EACJsnC,SAAS,CAACvvC,EAAK,UAAU6sH,GAAiBA,EAAc/jH,SAAQuI,EAAAA,EAAAA,QAAOy7G,MACvE7sF,MAAM,CAACjgC,EAAK,WAAYosH,EAAQ,EAErC,CAACjsC,GAAAA,IAAgC,CAACl4E,EAAKu4E,KAAkB,IAAhB,QAAE1pE,GAAS0pE,EAClD,MAAMxgF,EAAM8W,EAAQy1G,OAAS,kBAAoB,mBAEjD,OAAOtkH,EAAMg4B,MAAM,CAACjgC,EAAK,SAAUiI,EAAM0R,MAAM,CAAC3Z,EAAK,UAAUiP,QAAO29G,GAAYA,EAAS31G,IAAI,QAAUH,IAAS,EAEpH,CAACqpE,GAAAA,IAA+B,IAAMxpE,GACtC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,IC5DI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCrP,KAAM,EACNJ,MAAO,GACP/nC,OAAQ,aACRysC,UAAW,SAGb,QAAesQ,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAgCl4E,GAASA,EAAMkuB,IAAI,OAAQluB,EAAMgP,IAAI,QAAU,GAChF,EAACipE,EAAAA,EAAAA,GAAeC,GAAAA,GAA8BA,GAAAA,KAAgC4a,GAAUpkF,GACxF,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICVH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAI,GACJsP,OAAMA,K,YCHD,MAAM0H,IAAetF,EAAAA,EAAAA,QAAO,CACjC07G,cAAc,EACdC,oBAAoB,EACpB/W,qBAAqB,EACrB5yD,YAAa,OAGf,QAAezsC,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAqBl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GACzD,CAACgqD,GAAAA,IAAsBl4E,GAASA,EAAMkuB,IAAI,gBAAgB,GAC1D,CAACgqD,GAAAA,IAA0B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAChDkuB,IAAI,sBAAsB,GAC1BA,IAAI,cAAerf,EAAQ,EAC9B,EAACopE,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EACVkuB,IAAI,sBAAsB,GAC1BA,IAAI,cAAe,MACtB,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAC7E,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAE9C,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,IC1BI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCklD,cAAe,KAGjB,QAAe3/C,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA2B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,iBAAiB9kB,EAAAA,EAAAA,QAAOyF,GAAS,EAC/F,CAACqpE,GAAAA,IAAoC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAC1D4D,OAAO,iBAAiB0qD,GAAiBA,EAAcztD,SAAQuI,EAAAA,EAAAA,QAAOyF,KAAU,EACnF,CAACqpE,GAAAA,IAA8B,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAChDr4E,EAAMsnC,SAAS,CAAC,kBAAkBgnB,GAChCA,EAAc55C,KAAIswG,IAChB,MAAM1+F,EAAQzX,EAAQ4H,MAAKipB,GAAKslF,EAAah2G,IAAI,QAAU0wB,EAAEulF,sBAE7D,OAAI3+F,EACK0+F,EAAa92F,IAAI,SAAU5H,EAAM4+F,QAGnCF,CAAY,KAErB,EAEJ,CAAC/1G,EAAAA,IAAwB,IAAMP,IAC9BA,ICvBI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCrP,KAAM,EACNorH,UAAU,EACVxrH,MAAO,EACP/nC,OAAQ,cACRysC,UAAW,SAGb,QAAesQ,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,GAA+B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,OAAQrf,EAAQ,EAClF,CAACqpE,GAAAA,IAAsBl4E,GAASA,EAAMkuB,IAAI,YAAY,GACtD,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICXH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFnrF,KAAI,GACJsP,OAAMA,K,YCFD,MAAM0H,IAAetF,EAAAA,EAAAA,QAAO,CACjCg8G,uBAAuB,EACvBxZ,gBAAgB,EAChByZ,wBAAwB,EACxBC,gBAAiB,KACjBC,gBAAgB,IAGlB,QAAe52G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,yBAA0BluB,EAAMgP,IAAI,0BAC1F,CAACkpE,GAAAA,IAAyCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAAMA,IAAI,kBAAkB,GAC3G,CAACgqD,GAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAAMA,IAAI,kBAAkB,GACtG,EAAC+pD,EAAAA,EAAAA,GAAeC,GAAAA,GAAqCA,GAAAA,KAAqCl4E,GAASA,EAAMkuB,IAAI,kBAAkB,GAC/H,EAAC+pD,EAAAA,EAAAA,GACCutC,GAAAA,IACAA,GAAAA,IACAA,GAAAA,MACE,IAAM92G,GACV,CAACwpE,GAAAA,IAAiC,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,GAAE5a,IAAM6D,EAAA,OAAKkI,EAAMkuB,IAAI,0BAA0B,GAAMA,IAAI,kBAAmBj6B,EAAG,EACtI,EAACgkF,EAAAA,EAAAA,GAAeC,GAAAA,GAAkCA,GAAAA,KAAkCl4E,GAASA,EAC1FkuB,IAAI,0BAA0B,GAC9BA,IAAI,kBAAmB,MAC1B,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICvBI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCrP,KAAM,EACN0rH,QAAS,GACTC,QAAS,aAGX,QAAe/2G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,OAAQxf,GAAaM,IAAI,SAC3E,CAACkpE,GAAAA,IAAwBl4E,GAASA,EAAMkuB,IAAI,OAAQluB,EAAMgP,IAAI,QAAU,GACxE,EAACipE,EAAAA,EAAAA,GACCutC,GAAAA,IACAA,GAAAA,IACAA,GAAAA,MACE,IAAM92G,GACV,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICfI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCu8G,OAAQ,CACN1jG,MAAO,KACP2jG,WAAY,KACZ1jG,MAAO,IAETkB,MAAO,KAGT,QAAezU,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA4B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAClDsnC,SAAS,CAAC,SAAU,UAAUplB,GAASA,EAAMrhB,SAAQuI,EAAAA,EAAAA,QAAOyF,EAAQg3G,YACpE7tF,MAAM,CAAC,SAAU,SAAUnpB,EAAQoT,OACnC+V,MAAM,CAAC,SAAU,cAAenpB,EAAQi3G,YAAY,EACvD,CAAC5tC,GAAAA,GAA8B,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,KAAEC,EAAI,MAAE9W,IAASogF,EAAA,OAAKp4E,EAAMkuB,IAAIpf,EAAM9W,EAAM,EAC9F,CAACkgF,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,SAAUxf,GAAaM,IAAI,WAC7E,CAACkpE,GAAAA,IAAkC,IAAMxpE,GACzC,EAACupE,EAAAA,EAAAA,GACCutC,GAAAA,IACAA,GAAAA,IACAA,GAAAA,MACE,IAAM92G,GACV,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICxBH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACF77E,OAAM,GACNtP,KAAIA,K,YCFC,MAAMgX,IAAetF,EAAAA,EAAAA,QAAO,CACjC28G,uBAAuB,EACvBC,YAAY,EACZC,gBAAgB,EAChBC,sBAAsB,EACtBC,sBAAsB,EACtBC,uBAAuB,EACvBC,8BAA8B,EAC9BC,iCAAiC,EACjCC,6BAA6B,EAC7BC,8BAA8B,EAC9BC,iBAAiB,EACjBC,WAAY,cACZC,6BAA6B,EAC7Bn5B,kCAAkC,EAClCo5B,gBAAiB,KACjBC,aAAc,cACdC,qBAAqB,EACrBC,oCAAoC,EACpCC,gCAAgC,EAChCC,iCAAiC,EACjCC,oBAAoB,EACpBC,wBAAwB,EACxBC,6BAA6B,IAG/B,QAAez4G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GACzE,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EACrCkuB,IAAI,yBAAyB,GAC7BA,IAAI,cAAc,GACrB,CAACgqD,GAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GACzE,CAACgqD,GAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,kBAAmBluB,EAAMgP,IAAI,mBAC5E,EAACipE,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC/C,CAACgqD,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,mCAAmC,GACxF,CAACgqD,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,+BAA+B,GAChF,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,gCAAgC,GAClF,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GAC1E,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EACVkuB,IAAI,wBAAwB,GAC5BA,IAAI,mCAAmC,GAC1C,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EACVkuB,IAAI,wBAAwB,GAC5BA,IAAI,+BAA+B,GACtC,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EACVkuB,IAAI,wBAAwB,GAC5BA,IAAI,gCAAgC,GACvC,CAACgqD,GAAAA,GAA8Bl4E,GAASA,EACrCkuB,IAAI,gCAAgC,GACpCA,IAAI,mCAAmC,GACvCA,IAAI,+BAA+B,GACnCA,IAAI,gCAAgC,GACvC,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,gCAAgC,GACvD,CAACgqD,GAAAA,IAA2B,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMkuB,IAAI,aAAcrf,EAAQ,EACpF,EAACopE,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC/C,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC/C,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,+BAA+B,GACzF,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,IACEl4E,GAASA,EAAMkuB,IAAI,+BAA+B,GACtD,CAACgqD,GAAAA,GAA2Cl4E,GAASA,EAAMkuB,IAAI,oCAAoC,GACnG,CAACgqD,GAAAA,IAA2Cl4E,GAASA,EAAMkuB,IAAI,oCAAoC,GACnG,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAC3E,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,yBAAyB,GAChD,EAAC+pD,EAAAA,EAAAA,GACCovC,GAAAA,GACAA,GAAAA,KACErnH,GAASA,EAAMkuB,IAAI,oCAAoC,GAAOA,IAAI,wBAAwB,GAC9F,EAAC+pD,EAAAA,EAAAA,GACCovC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACErnH,GAASA,EAAMkuB,IAAI,oCAAoC,GAAOA,IAAI,wBAAwB,GAC9F,CAACgqD,GAAAA,IAA8Bl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GACzE,CAACgqD,GAAAA,IAA8B,CAACl4E,EAAKo4E,KAAkB,IAAhB,QAAEvpE,GAASupE,EAChD,MAAM,OAAEjtE,GAAW0D,EAEnB,IAAIm5F,EAUJ,MARe,eAAX78F,IACF68F,EAAM,eAGO,WAAX78F,IACF68F,EAAM,WAGDhoG,EAAMkuB,IAAI,uBAAuB,GAAMA,IAAI,eAAgB85E,EAAI,EAExE,CAAC9vB,GAAAA,IAA+Bl4E,GAASA,EAAMkuB,IAAI,uBAAuB,GAAOA,IAAI,eAAgB,eACrG,CAACgqD,GAAAA,IAA6B,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAAKr4E,EAAMkuB,IAAI,kBAAmBrf,EAAQ,EAC3F,CAACqpE,GAAAA,GAA6B,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EAAMkuB,IAAI,eAAgBrf,EAAQ,EACxF,EAACopE,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,IACF,IAAIs/E,EAAWt/E,EAcf,MAZqC,eAAjCA,EAAMgP,IAAI,qBACZswE,EAAWA,EACRpxD,IAAI,sCAAsC,GAC1CA,IAAI,mCAAmC,IAGP,WAAjCluB,EAAMgP,IAAI,qBACZswE,EAAWA,EACRpxD,IAAI,kCAAkC,GACtCA,IAAI,sCAAsC,IAGxCoxD,CAAQ,EAEjB,CAACpH,GAAAA,IAA0Cl4E,GAASA,EAAMkuB,IAAI,sCAAsC,GACpG,CAACgqD,GAAAA,IAAsCl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GAC5F,CAACgqD,GAAAA,IAAuCl4E,GAASA,EAAMkuB,IAAI,mCAAmC,GAC9F,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,sCAAsC,GAC7D,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,kCAAkC,GACzD,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,mCAAmC,GAC1D,CAACgqD,GAAAA,IAA2Cl4E,GAASA,EAAMkuB,IAAI,+BAA+B,GAC9F,CAACgqD,GAAAA,IAAsBl4E,GAASA,EAAMkuB,IAAI,+BAA+B,GACzE,CAACgqD,GAAAA,IAA0B,IAAMxpE,GAAawf,IAAI,cAAc,GAChE,CAACgqD,GAAAA,IAAyBl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACnE,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAChF,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,IChKI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCqhG,OAAQ,KACRlgE,UAAW,KACXmyB,OAAQ,KACRJ,WAAY,KACZnB,UAAW,KACXmsD,QAAS,OAGX,QAAe34G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAqB,CAACl4E,EAAKlI,KAAkB,IAAhB,QAAE+W,GAAS/W,EACvC,MAAM,OAAE2yG,EAAM,UAAElgE,EAAS,OAAEmyB,EAAM,WAAEJ,EAAU,UAAEnB,GAActsD,EAE7D,OAAO7O,EACJkuB,IAAI,UAAU9kB,EAAAA,EAAAA,QAAOqhG,IACrBv8E,IAAI,aAAa9kB,EAAAA,EAAAA,QAAOmhC,IACxBrc,IAAI,UAAU9kB,EAAAA,EAAAA,QAAOszD,IACrBxuC,IAAI,cAAc9kB,EAAAA,EAAAA,QAAOkzD,IACzBpuC,IAAI,aAAa9kB,EAAAA,EAAAA,QAAO+xD,GAAW,EAExC,CAAC+c,GAAAA,IAAyB,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMkuB,IAAI,WAAW9kB,EAAAA,EAAAA,QAAOyF,GAAS,EACvF,CAACqpE,GAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,UAAW,MACzD,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICvBI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCga,MAAO,GACPtU,KAAM,GACNuxG,SAAU,GACVkH,WAAY,KAGd,QAAe54G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAwB,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,IAAE9W,EAAG,MAAEC,IAASF,EAAA,OAAKkI,EAAMkuB,IAAIn2B,EAAKC,EAAM,EACtF,CAACkgF,GAAAA,IAA2Bl4E,GAASA,EAClCkuB,IAAI,OAAQ,IACZA,IAAI,WAAY,IAChBA,IAAI,aAAc,IACrB,CAACgqD,GAAAA,IAA0B,IAAMxpE,GACjC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICfI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCyhG,MAAO,KACP2c,UAAW,KACX7G,QAAS,KACT3gH,MAAO,KACPynH,KAAM,GACNC,YAAa,CACXC,aAAc,CAAC,EACfC,WAAY,CACV7tH,KAAM,EACN8tH,SAAU,IAEZ77F,KAAM,CACJ87F,GAAI,kBACJC,UAAW,SAGfC,QAAS,CACPL,aAAc,CAAC,EACfC,WAAY,CACV7tH,KAAM,EACN8tH,SAAU,IAEZ77F,KAAM,CACJ87F,GAAI,kBACJC,UAAW,SAGfE,SAAU,CACRN,aAAc,CAAC,EACfC,WAAY,CACVM,OAAQ,GACRL,SAAU,IAEZ77F,KAAM,CACJ87F,GAAI,kBACJC,UAAW,WAKjB,QAAep5G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAyB,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,IAAE9W,EAAG,MAAEC,IAASF,EAAA,OAAKkI,EAAMkuB,IAAIn2B,EAAKC,EAAM,EACvF,CAACkgF,GAAAA,IAA6Bl4E,GAASA,EACpCkuB,IAAI,cAAexf,GAAaM,IAAI,gBACpCkf,IAAI,UAAWxf,GAAaM,IAAI,YAChCkf,IAAI,WAAYxf,GAAaM,IAAI,aACpC,CAACkpE,GAAAA,IAAgC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EACtDg4B,MAAM,CAACnpB,EAAS,cAAeH,GAAagD,MAAM,CAAC7C,EAAS,eAAe,EAC9E,CAACqpE,GAAAA,IAA2Bl4E,GAASA,EAClCkuB,IAAI,QAAS,MACbA,IAAI,YAAa,MACjBA,IAAI,UAAW,MACfA,IAAI,QAAS,MACbA,IAAI,OAAQ,IACf,CAACgqD,GAAAA,IAA0B,IAAMxpE,GACjC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICzDI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCs+G,YAAa,KAGf,QAAe/4G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA6B,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,IAAE9W,EAAG,MAAEC,IAASF,EAAA,OAAKkI,EAAMkuB,IAAIn2B,EAAKC,EAAM,EAC3F,EAACigF,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACE,IAAMxpE,GACV,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICXI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCs+G,YAAa,CACX77F,SAAU,GACVs8F,UAAW,CACTh3B,WAAY,EACZ02B,SAAU,GACVO,YAAa,GAEfC,OAAQ,CAAC,GAEXL,QAAS,CACPn8F,SAAU,GACVs8F,UAAW,CACTh3B,WAAY,EACZ02B,SAAU,GACVO,YAAa,GAEfC,OAAQ,CAAC,GAEXJ,SAAU,CACRp8F,SAAU,GACVq8F,OAAQ,GACRI,eAAgB,GAChBT,SAAU,GACVQ,OAAQ,CAAC,KAIb,QAAe15G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAoB,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,OAAE1D,EAAM,MAAEnT,IAASF,EAAA,OAAKkI,EAAMkuB,IAAI/iB,GAAQ/B,EAAAA,EAAAA,QAAOpR,GAAO,EAChG,EAACigF,EAAAA,EAAAA,GACCC,GAAAA,EACAA,GAAAA,KACE,IAAMxpE,GACV,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICnCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCm/G,aAAc,GACd36B,mCAAoC,KAMtC,QAAej/E,EAAAA,EAAAA,GAAc,CAC3B,EAACspE,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,gBAAgB9kB,EAAAA,EAAAA,QAAO,KAC9C,CAAC8uE,GAAAA,IAAwB,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAM4D,OACrD,gBAAgB+uG,GAAaA,EAASl3E,OAAMryB,EAAAA,EAAAA,QAAOyF,KACpD,EACD,CAACqpE,GAAAA,IAAyC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAM4D,OACtE,gBACA+uG,GAAYA,EAAS3rG,QAAO43B,GAAKA,IAAM/vB,KACxC,EACD,CAACqpE,GAAAA,IAAgC,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,gBAAE25G,EAAe,qBAAEC,IAAwBpwC,EAAA,OAAKr4E,EAAM4D,OACxG,gBACA+uG,GAAYA,EAAS3rG,QAAO43B,GAAKA,EAAE5vB,IAAI,qBAAuBw5G,MAC9D5kH,OACA,sCACA8kH,GAAeA,EAAYh0G,KAAIgC,GAC5BA,EAAE1H,IAAI,QAAUw5G,EAAgBx5G,IAAI,OACnC5F,EAAAA,EAAAA,QAAOq/G,GAAsB/2G,MAAM,CAAC,EAAG,oBACrCgF,KAEP,EACD,CAACwhE,GAAAA,IAA2Cl4E,GAASA,EAAMkuB,IAAI,sCAAsC9kB,EAAAA,EAAAA,QAAO,KAC5G,CAAC8uE,GAAAA,IAAgD,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EAAMkuB,IAC7E,sCACA9kB,EAAAA,EAAAA,QAAOyF,GAAS6F,KAAI1O,GAAKA,EAAEgJ,IAAI,oBAAsBhJ,EAAEgJ,IAAI,qBAC5D,EACD,CAACkpE,GAAAA,IAA0B,IAAMxpE,GACjC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICtCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCs+G,YAAa,CACX77F,SAAU,GACVs8F,UAAW,CACTh3B,WAAY,EACZ02B,SAAU,GACVO,YAAa,IAGjBJ,QAAS,CACPn8F,SAAU,GACVs8F,UAAW,CACTh3B,WAAY,EACZ02B,SAAU,GACVO,YAAa,IAGjBH,SAAU,CACRp8F,SAAU,GACVq8F,OAAQ,GACRI,eAAgB,GAChBT,SAAU,MAId,QAAel5G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA6B,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,OAAE1D,EAAM,MAAEnT,IAASF,EAAA,OAAKkI,EAAMkuB,IAAI/iB,GAAQ/B,EAAAA,EAAAA,QAAOpR,GAAO,EACzG,EAACigF,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACE,IAAMxpE,GACV,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,IChCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCqhG,OAAQ,GACR37F,KAAM,GACNnT,WAAY,KACZgtH,SAAU,KACV9tE,SAAU,GACV+tE,kBAAmB,KACnBC,SAAU,KACVnB,YAAa,CACXE,WAAY,CACV7tH,KAAM,EACN8tH,SAAU,KAGdG,QAAS,CACPJ,WAAY,CACV7tH,KAAM,EACN8tH,SAAU,KAGdI,SAAU,CACRL,WAAY,CACVM,OAAQ,GACRL,SAAU,IAEZj2J,OAAQ,CAAC,oBAIb,QAAe+8C,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAmC,CAAC4a,EAAMh7F,KAAA,IAAI+W,QAAS6K,GAAS5hB,EAAA,OAAK4hB,CAAO,EAC7E,CAACw+D,GAAAA,IAAkC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,IAAE9W,EAAG,MAAEC,IAASogF,EAAA,OAAKp4E,EAAMkuB,IAAIn2B,EAAKC,EAAM,EAChG,CAACkgF,GAAAA,IAA+B,CAACl4E,EAAKq4E,KAA4B,IAAxBxpE,SAAS,KAAEC,IAAQupE,EAC3D,MAAMoyB,EAASzqG,EAAMgP,IAAI,UAAU0F,KAAIm2F,GACjCA,EAAM77F,IAAI,UAAYF,GACjB1F,EAAAA,EAAAA,QAAO,CAAE0F,OAAMw/E,QAASuc,EAAM77F,IAAI,YAGpC67F,IAGT,OAAO7qG,EAAMkuB,IAAI,SAAUu8E,EAAO,EAEpC,CAACvyB,GAAAA,IAAgC,CAACl4E,EAAKs4E,KAAkB,IAAhB,QAAEzpE,GAASypE,EAC9CgH,EAAWt/E,EAAMkuB,IAAI,SAAUrf,EAAQ47F,OAAO/1F,KAAIm2F,IAAUzhG,EAAAA,EAAAA,QAAO,CAAE0F,KAAM+7F,EAAOvc,QAAQ,OAE9F,GAAuB,eAAnBz/E,EAAQ1D,OAAyB,CACnC,MAAM,UAAE29G,EAAS,WAAEntH,EAAU,KAAEmT,EAAI,SAAE65G,EAAQ,SAAE9tE,GAAahsC,EAC5DywE,EAAWA,EAAS7jD,MAAM,CACxBqtF,YACAntH,aACAmT,OACA65G,WACA9tE,YAEJ,CAMA,MAJuB,WAAnBhsC,EAAQ1D,SACVm0E,EAAWA,EAASpxD,IAAI,WAAYrf,EAAQg6G,UAAU36F,IAAI,OAAQrf,EAAQC,OAGrEwwE,CAAQ,EAEjB,EAACrH,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACE,IAAMxpE,GACV,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICpEI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC2/G,eAAgB,GAChBC,UAAW,EACX/xF,aAAc,IAGhB,QAAetoB,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAuC,CAACl4E,EAAKlI,KAA2B,IAAvB+W,QAAS6K,GAAS5hB,EAClE,MAAMmxH,EAAUjpH,EAAMgP,IAAI,kBAGpBwiF,EAFYxxF,EAAMgP,IAAI,aAEC,EACvBk6G,EAAaD,EAAQpoH,MAAKuI,EAAAA,EAAAA,QAAO,CAAEsQ,UAAS0d,MAAOo6D,KAEzD,OAAOxxF,EAAMkuB,IAAI,iBAAkBg7F,GAAYh7F,IAAI,eAAgBsjE,GAAUtjE,IAAI,YAAasjE,EAAS,EAEzG,CAACtZ,GAAAA,IAAmC,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASuoB,GAAOghD,EAAA,OAAKp4E,EAAMkuB,IAAI,eAAgBkJ,EAAM,EACnG,EAAC6gD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACE,IAAMxpE,GACV,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICfH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7Be,GAAE,GACFn5C,QAAO,GACPh1E,OAAM,GACNglD,QAAO,GACPyqB,SAAQ,GACRzsC,KAAI,GACJyxH,QAAO,GACPC,cAAa,GACbC,iBAAgB,GAChBC,iBAAgBA,KCrBlB,MAEaC,IAAkBlwK,EAAAA,GAAAA,GAAa,qBAC/BmwK,IAAkBnwK,EAAAA,GAAAA,GAAa,qBAC/BowK,IAAgBpwK,EAAAA,GAAAA,GAAa,mBAE7BqwK,IAAgBrwK,EAAAA,GAAAA,GAAa,mBAC7BswK,IAAgBtwK,EAAAA,GAAAA,GAAa,mBAC7BuwK,IAAcvwK,EAAAA,GAAAA,GAAa,iBAE3BwwK,IAAexwK,EAAAA,GAAAA,GAAa,kBAC5BywK,IAAezwK,EAAAA,GAAAA,GAAa,kBCR5Bq1D,KDUqBr1D,EAAAA,GAAAA,GAAa,yBAClBA,EAAAA,GAAAA,GAAa,mBCXds9D,EAAAA,EAAAA,KAAa,CACvC2qG,MAAMyI,EAAAA,EAAAA,OACNxR,QAAQ5+F,EAAAA,EAAAA,WAGV,QAAehL,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,IAAwB,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAC9C4D,OAAO,QAAQsqB,GAAOA,EAAIyoD,IAAI,CAAEqzC,IAAKn7G,EAAQm7G,IAAKre,QAAS98F,EAAQ88F,WAAW,EACjF,CAACzzB,IAA0B,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAChD4D,OAAO,UAAUusF,GAAQA,EAAKtvF,KAAK,CAAE2hB,MAAO3T,EAAQ2T,MAAOmpF,QAAS98F,EAAQ88F,WAAW,GACzFj9F,I,YCTI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC40E,kBAAmB,CACjB97D,MAAO,GACPD,MAAO,GAETgoG,yBAA0B,CACxBh2H,GAAI,KACJ6a,KAAM,GACN0vE,iBAAiB,EACjB0rC,mBAAmB,EACnBC,kBAAkB,EAClBC,OAAQ,GACRC,cAAc,EACdC,eAAe,EACfC,cAAe,IAEjBC,uBAAwB,CACtBC,eAAgB,GAChBC,iBAAkB,GAClBC,gBAAiB,MAIrB,QAAeh8G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA4B,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,QAAE8sD,EAAO,MAAE15C,IAASnqB,EAAA,OAAKkI,EACtEg4B,MAAM,CAAC,oBAAqB,UAAU5uB,EAAAA,EAAAA,QAAOuyD,IAC7C3jC,MAAM,CAAC,oBAAqB,SAAU/V,EAAM,EAC/C,CAACi2D,GAAAA,IAAmC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMkuB,IAAI,4BAA4B9kB,EAAAA,EAAAA,QAAOyF,GAAS,EAClH,EAACopE,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,2BAA4Bxf,GAAaM,IAAI,6BACpE,CAACkpE,GAAAA,IAA0C,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAAKr4E,EAAMkuB,IAAI,0BAA0B9kB,EAAAA,EAAAA,QAAOyF,GAAS,EACvH,CAACqpE,GAAAA,IAA0Cl4E,GAASA,EAAMkuB,IAAI,yBAA0Bxf,GAAaM,IAAI,2BACzG,CAACC,EAAAA,IAAwB,IAAMP,IAC9BA,ICzCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC40E,kBAAmB,CACjB4sC,iBAAkB,GAClBC,iBAAkB,GAClBC,uBAAwB,GACxBC,uBAAwB,GACxBnf,gBAAgB,EAChBof,YAAY,EACZC,gBAAgB,EAChBC,kBAAkB,EAClBC,wBAAyB,MAyB7B,QAAex8G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA4C,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMg4B,MAAM,CAAC,oBAAqB,oBAAqBnpB,EAAQ,EACpI,CAACqpE,GAAAA,IAA8B,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMg4B,MAAM,CAAC,oBAAqB,oBAAqBnpB,EAAQ,EACtH,CAACqpE,GAAAA,IAAoC,CAACl4E,EAAKq4E,KAAA,IAAE,QAAExpE,GAASwpE,EAAA,OAAKr4E,EAAMg4B,MAAM,CAAC,oBAAqB,0BAA2BnpB,EAAQ,EAClI,CAACqpE,GAAAA,IAA0C,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EAAMg4B,MAAM,CAAC,oBAAqB,0BAA2BnpB,EAAQ,EACxI,CAACqpE,GAAAA,IAAyCl4E,GAASA,EAChDg4B,MAAM,CAAC,oBAAqB,eAAgBh4B,EAAM0R,MAAM,CAAC,oBAAqB,gBACjF,EAACumE,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMg4B,MAAM,CAAC,oBAAqB,mBAAmB,GAClE,CAACkgD,GAAAA,IAAqCl4E,GAASA,EAAMg4B,MAAM,CAAC,oBAAqB,oBAAqB,IACtG,EAACigD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EACVg4B,MAAM,CAAC,oBAAqB,mBAAmB,GAC/CA,MAAM,CAAC,oBAAqB,eAAe,GAC3CA,MAAM,CAAC,oBAAqB,oBAAqB,IACjDA,MAAM,CAAC,oBAAqB,0BAA2B,IAC1D,CAACkgD,GAAAA,IAAyCl4E,GAASA,EAChDg4B,MAAM,CAAC,oBAAqB,mBAAoBh4B,EAAM0R,MAAM,CAAC,oBAAqB,oBACrF,CAACwmE,GAAAA,IAAyCl4E,GAASA,EAChDg4B,MAAM,CAAC,oBAAqB,qBAAqB,GACpD,CAACkgD,GAAAA,IAA0Cl4E,GAASA,EACjDg4B,MAAM,CAAC,oBAAqB,qBAAqB,GACpD,EAACigD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EACVg4B,MAAM,CAAC,oBAAqB,mBAAmB,GAClD,CAACk+D,EAAAA,IAA+B,CAACl2F,EAAKu4E,KAAA,IAAE,QAAE1pE,GAAS0pE,EAAA,MAlE5B6yC,EAACprH,EAAO+O,KAC/B,MAAM,kBAAEivE,GAAsBjvE,EAE9B,IAAKivE,EACH,OAAOh+E,EAGT,MAAMy+E,GAAiBC,EAAAA,EAAAA,MACjBziF,EAAM,GAUZ,OARAwiF,EAAe5mF,SAAQ8mF,IACrB,MAAM1nC,EAAQ+mC,EAAkBvnE,MAAKsrB,GAAKA,EAAEjzB,OAAS6vE,EAAc3vE,IAAI,YAEnEioC,GACFh7C,EAAI4E,KAAKo2C,EAAMhjD,GACjB,IAGK+L,EAAMg4B,MAAM,CAAC,oBAAqB,4BAA4B5uB,EAAAA,EAAAA,QAAOnN,GAAK,EAgDzBmvH,CAAiBprH,EAAO6O,EAAQ,EACxF,CAACI,EAAAA,IAAwB,IAAMP,IAC9BA,ICrFI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjC40E,kBAAmB,CACjBjkF,KAAM,EACNJ,MAAO,KAIX,QAAegV,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAgC,CAACl4E,EAAKlI,KAAA,IAAE,QAAE+W,GAAS/W,EAAA,OAAKkI,EAAMg4B,MAAM,CAAC,oBAAqB,QAASnpB,EAAQ,EAC5G,CAACI,EAAAA,IAAwB,IAAMP,IAC9BA,ICVH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJmrF,GAAE,GACF77E,OAAMA,K,YCHD,MAAM0H,IAAetF,EAAAA,EAAAA,QAAO,CACjCiiH,eAAgB,CACdnpG,MAAO,GACPD,MAAO,GAETqpG,sBAAuB,CACrBppG,MAAO,GACPD,MAAO,GAETzV,aAAc,CACZ0V,MAAO,GACPD,MAAO,GAETvV,cAAe,CACbwV,MAAO,IAETqpG,sBAAuB,CAAC,IAG1B,QAAe58G,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA4C,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,SAAEw9F,EAAQ,KAAEtyG,IAAQjC,EAAA,OAAKkI,EAAMkuB,IAAI,kBACjG9kB,EAAAA,EAAAA,QAAO,CACL8Y,MAAiB,IAATnoB,GAAcqP,EAAAA,EAAAA,QAAOijG,EAASgf,gBAAkBrrH,EAAM0R,MAAM,CAAC,iBAAkB,UACpFnD,QAAOnF,EAAAA,EAAAA,QAAOijG,EAASgf,iBAC1BppG,MAAOoqF,EAASpqF,QACf,EACL,CAACi2D,GAAAA,IAAkD,CAACl4E,EAAKo4E,KAAA,IAAIvpE,SAAS,SAAEw9F,EAAQ,KAAEtyG,IAAQq+E,EAAA,OAAKp4E,EAAMkuB,IAAI,yBACvG9kB,EAAAA,EAAAA,QAAO,CACL8Y,MAAiB,IAATnoB,GAAcqP,EAAAA,EAAAA,QAAOijG,EAASgf,gBAAkBrrH,EAAM0R,MAAM,CAAC,wBAAyB,UAC3FnD,QAAOnF,EAAAA,EAAAA,QAAOijG,EAASgf,iBAC1BppG,MAAOoqF,EAASpqF,QACf,EACL,CAACi2D,GAAAA,IAA0C,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,SAAEw9F,EAAQ,KAAEtyG,IAAQs+E,EAAA,OAAKr4E,EAAMkuB,IAAI,gBAC/F9kB,EAAAA,EAAAA,QAAO,CACL8Y,MAAiB,IAATnoB,GAAcqP,EAAAA,EAAAA,QAAOijG,EAAS7/F,cAAgBxM,EAAM0R,MAAM,CAAC,eAAgB,UAChFnD,QAAOnF,EAAAA,EAAAA,QAAOijG,EAAS7/F,eAC1ByV,MAAOoqF,EAASpqF,QACf,EAEL,CAACi2D,GAAAA,IAA2C,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EAAMg4B,MAAM,CAAC,gBAAiB,UAAU5uB,EAAAA,EAAAA,QAAOyF,GAAS,EAC5H,CAACqpE,GAAAA,IAAuC,CAACl4E,EAAKu4E,KAAkB,IAAhB,QAAE1pE,GAAS0pE,EACzD,MACMnhD,EADQp3B,EAAM0R,MAAM,CAAC,gBAAiB,UACxB6wE,WAAUt5B,GAAQA,EAAKj6C,IAAI,QAAUH,EAAQ5a,KAEjE,OAAe,IAAXmjC,EACKp3B,EAAMg4B,MAAM,CAAC,gBAAiB,QAASZ,IAAQhuB,EAAAA,EAAAA,QAAOyF,IAGxD7O,EAAMsnC,SAAS,CAAC,gBAAiB,UAAU6oD,GAAQA,EAAKtvF,MAAKuI,EAAAA,EAAAA,QAAOyF,KAAU,EAEvF,CAACqpE,GAAAA,IAAyC,CAACl4E,EAAKw4E,KAAkB,IAAhB,QAAE3pE,GAAS2pE,EAC3D,MACMphD,EADQp3B,EAAM0R,MAAM,CAAC,gBAAiB,UACxB6wE,WAAUt5B,GAAQA,EAAKj6C,IAAI,QAAUH,EAAQ5a,KAEjE,OAAe,IAAXmjC,EACKp3B,EAAM+kF,SAAS,CAAC,gBAAiB,QAAS3tD,IAG5Cp3B,CAAK,EAEd,CAACk4E,GAAAA,IAA2C,CAACl4E,EAAKy4E,KAAkB,IAAhB,QAAE5pE,GAAS4pE,EACzD6G,EAAWt/E,EACf,MAAMkiB,EAAQliB,EAAM0R,MAAM,CAAC,gBAAiB,UAEtC85G,EAAuBtpG,EAAMqgE,WAAUt5B,IAAiC,IAAzBA,EAAKj6C,IAAI,eAEhC,IAA1Bw8G,IACFlsC,EAAWA,EAAStnD,MAAM,CAAC,gBAAiB,QAASwzF,EAAsB,aAAa,IAG1F,MAAMC,EAAmBvpG,EAAMqgE,WAAUt5B,GAAQA,EAAKj6C,IAAI,QAAUH,EAAQ5a,KAE5E,OAA0B,IAAtBw3H,EACKnsC,EAAStnD,MAAM,CAAC,gBAAiB,QAASyzF,IAAmBriH,EAAAA,EAAAA,QAAOyF,IAGtEywE,CAAQ,EAEjB,CAACpH,GAAAA,IAAmC,CAACl4E,EAAK04E,KAAA,IAAE,QAAE7pE,GAAS6pE,EAAA,OAAK14E,EAAMkuB,IAAI,wBAAyBrf,EAAQ,EACvG,CAACqpE,GAAAA,IAAoC,CAACl4E,EAAK24E,KAAiD,IAA7C9pE,SAAS,SAAEw9F,EAAQ,gBAAEqf,IAAmB/yC,EACrF,MAAMgzC,GAAsBviH,EAAAA,EAAAA,QAAO,CAACijG,EAASuf,qBACvCP,EAAiBrrH,EAAM0R,MAAM,CAAC,iBAAkB,UAChD0lB,EAAQi0F,EAAe9oC,WAAUt5B,GAAQA,EAAKj6C,IAAI,QAAU08G,IAElE,IAAIpsC,EAAWt/E,EAEf,IAAe,IAAXo3B,EAAc,CAChB,MAAMy0F,EAAgBR,EAAer8G,IAAIooB,GAAOlJ,IAAI,sBAAuBy9F,GAE3ErsC,EAAWA,EAAStnD,MAAM,CAAC,iBAAkB,QAASZ,GAAQy0F,EAChE,CAEA,MAAMP,EAAwBtrH,EAAM0R,MAAM,CAAC,wBAAyB,UAC9Do6G,EAAeR,EAAsB/oC,WAAUt5B,GAAQA,EAAKj6C,IAAI,QAAU08G,IAEhF,IAAsB,IAAlBI,EAAqB,CACvB,MAAMD,EAAgBP,EAAsBt8G,IAAI88G,GAAc59F,IAAI,sBAAuBy9F,GAEzFrsC,EAAWA,EAAStnD,MAAM,CAAC,wBAAyB,QAAS8zF,GAAeD,EAC9E,CAMA,OAJI7rH,EAAM0R,MAAM,CAAC,wBAAyB,SAAWg6G,IACnDpsC,EAAWA,EAAStnD,MAAM,CAAC,wBAAyB,uBAAwB2zF,IAGvErsC,CAAQ,EAEjB,CAACpH,GAAAA,IAAsC,CAACl4E,EAAK44E,KAAuC,IAAnC/pE,SAAS,gBAAE68G,IAAmB9yC,EAC7E,MAAMyyC,EAAiBrrH,EAAM0R,MAAM,CAAC,iBAAkB,UAChD0lB,EAAQi0F,EAAe9oC,WAAUt5B,GAAQA,EAAKj6C,IAAI,QAAU08G,IAElE,IAAIpsC,EAAWt/E,EAEf,IAAe,IAAXo3B,EAAc,CAChB,MAAMy0F,EAAgBR,EAAer8G,IAAIooB,GAAOlJ,IAAI,uBAAuB9kB,EAAAA,EAAAA,QAAO,KAElFk2E,EAAWA,EAAStnD,MAAM,CAAC,iBAAkB,QAASZ,GAAQy0F,EAChE,CAEA,MAAMP,EAAwBtrH,EAAM0R,MAAM,CAAC,wBAAyB,UAC9Do6G,EAAeR,EAAsB/oC,WAAUt5B,GAAQA,EAAKj6C,IAAI,QAAU08G,IAEhF,IAAsB,IAAlBI,EAAqB,CACvB,MAAMD,EAAgBP,EAAsBt8G,IAAI88G,GAAc59F,IAAI,uBAAuB9kB,EAAAA,EAAAA,QAAO,KAEhGk2E,EAAWA,EAAStnD,MAAM,CAAC,wBAAyB,QAAS8zF,GAAeD,EAC9E,CAMA,OAJI7rH,EAAM0R,MAAM,CAAC,wBAAyB,SAAWg6G,IACnDpsC,EAAWA,EAAStnD,MAAM,CAAC,wBAAyB,wBAAwB5uB,EAAAA,EAAAA,QAAO,MAG9Ek2E,CAAQ,EAEjB,CAACpH,GAAAA,IAAkCl4E,GAASA,EACzCkuB,IAAI,yBAAyB/pB,EAAAA,EAAAA,QAC7B6zB,MAAM,CAAC,wBAAyB,UAAUhY,EAAAA,EAAAA,SAC1CgY,MAAM,CAAC,wBAAyB,SAAU,GAE7C,CAAC/oB,EAAAA,IAAwB,IAAMP,IAC9BA,ICpIH,MAAMq9G,GAA4B,CAChC,CAACv+C,EAAAA,GAAAA,YAAgC,mBACjC,CAACA,EAAAA,GAAAA,kBAAsC,qBACvC,CAACA,EAAAA,GAAAA,kBAAsC,qBACvC,CAACA,EAAAA,GAAAA,WAA+B,WAChC,CAACA,EAAAA,GAAAA,WAA+B,WAChC,CAACA,EAAAA,GAAAA,cAAkC,aACnC,CAACA,EAAAA,GAAAA,cAAkC,cAGxBw+C,GAAwB5gH,GAC/BA,IAAUoiE,EAAAA,GAAAA,WACL,mBAGLpiE,IAAUoiE,EAAAA,GAAAA,kBAIVpiE,IAAUoiE,EAAAA,GAAAA,iBAHL,qBAOFpiE,GAGD48E,qBAAsBC,KAAgCC,EAAAA,GAAAA,IAAmB,KAAM,IAAIzG,KAAQ,IAAIA,MAC1F/yE,IAAetF,EAAAA,EAAAA,QAAO,CACjC4+E,qBAAsBC,GACtBwY,iBAAkBxY,GAClBztD,SAAU,CACRyxF,gBAAgB,GAElBC,YAAa,CACXC,UAAU,EACVp0F,IAAKq0F,EAAAA,GAAAA,IACL/8C,IAAK+8C,EAAAA,GAAAA,KAEPC,cAAe,CACbF,UAAU,EACVp0F,IAAKu0F,EAAAA,GAAAA,IACLj9C,IAAKi9C,EAAAA,GAAAA,KAEPC,iBAAkB,GAClBpmE,mBAAoB,GAGpBloB,YAAa,GACbq+B,WAAY,GACZhB,YAAa,GACb/wB,UAAW,GACXiiF,aAAc,CACZ/sE,KAAM78B,MAASoa,QAAQ,SAASna,SAChC08B,GAAI38B,MAASsa,MAAM,SAASra,SAC5BojE,MAAO,aACP4b,SAAU,KACV3rG,KAAM,qBAERu2H,mBAAoB,EACpBC,0BAA2B,EAC3BC,iBAAkB,EAClBhzH,MAAO,GACPizH,sBAAuB,CACrBh7J,OAAQ,qBACRysC,UAAW,QAEbwuH,oBAAqB,CACnBj7J,OAAQ,QACRysC,UAAW,UAIT4iG,GAAiB,CAAC,WAAY,cAAe,iBAO7CL,GAAmBA,CAAC1+E,EAAOliB,EAAOoL,EAAOy1F,KAC7C,MAAMC,EAAiB9gG,EAAMgP,IAAI5D,GAAOhC,EAAAA,EAAAA,QAAO,KAG/C,OAAOA,EAAAA,EAAAA,QAAO8Y,EAAMxN,KAAIu0C,GACR63C,EAAerqF,MAAKolB,GAAKA,EAAE7sB,IAAI,QAAUi6C,EAAKh1D,MAVxC8sG,EAAC93C,EAAM79C,KAAWhC,EAAAA,EAAAA,QAAO6/C,GAAMxtB,MAAM,CAC3DxnC,GAAIg1D,EAAKh1D,GACTy0C,MAAOugB,EAAKvgB,OAASugB,EAAKn6C,KAC1B1D,UASkB21F,CAAgB93C,EAAM43C,GAAqBz1F,KAC1D,EAGL,QAAeuD,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAmC,CAACl4E,EAAKlI,KAAkB,IAAhB,QAAE+W,GAAS/W,EACrD,MAAM,SAAE0iC,EAAQ,YAAE0xF,EAAW,cAAEG,GAAkBx9G,EAC3C4yF,EAAa/gG,OAAOC,KAAKkO,GAC5B7H,QAAOjP,IAAwC,IAAjCkpG,GAAex5F,QAAQ1P,KACrC2iB,QAAO,CAACC,EAAK5iB,KAAQ,IAAM4iB,EAAK,CAAC5iB,GAAM6oG,GAAiB/xF,EAAQ9W,GAAMiI,EAAOjI,MAAS,CAAC,GAE1F,OAAOiI,EACJy7B,MAAMgmE,GACNhmE,MAAM,CACLjB,UAAUpxB,EAAAA,EAAAA,QAAOoxB,GACjB0xF,cACAG,iBACA,EAEN,CAACn0C,GAAAA,IAAoC,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAAMkuB,IAAI,cAAerf,EAAQ,EAC9F,CAACqpE,GAAAA,IAAuB,CAACl4E,EAAKq4E,KAAoC,IAAhCxpE,SAAS,MAAEzD,EAAK,MAAEgsB,IAASihD,EAC3D,MAAMoN,EAAYumC,GAAsB5gH,GAExC,OAAI4U,EAAAA,KAAAA,OAAYhgB,EAAMgP,IAAIy2E,IACjBzlF,EAAM4D,OAAO6hF,GAAW0K,GAAQA,EAAK11D,OAAOrD,KAGjDhsB,IAAUoiE,EAAAA,GAAAA,WAIVpiE,IAAUoiE,EAAAA,GAAAA,UAHLxtE,EAAMkuB,IAAI,cAAeluB,EAAMgP,IAAI,eAAekf,IAAI,YAAY,IAOvE9iB,IAAUoiE,EAAAA,GAAAA,cAIVpiE,IAAUoiE,EAAAA,GAAAA,aAHLxtE,EAAMkuB,IAAI,gBAAiBluB,EAAMgP,IAAI,iBAAiBkf,IAAI,YAAY,IAQxEluB,EAAMg4B,MAAM,CAACytD,EAAWruD,IAAQ,EAAM,EAG/C,CAAC8gD,GAAAA,IAAuB,CAACl4E,EAAKs4E,KAAoC,IAAhCzpE,SAAS,MAAEzD,EAAK,MAAEgsB,IAASkhD,EAC3D,MAAMmN,EAAYumC,GAAsB5gH,GAExC,OAAI4U,EAAAA,KAAAA,OAAYhgB,EAAMgP,IAAIy2E,IACjBzlF,EAAMsnC,SAAS,CAACm+C,EAAWruD,EAAO,aAAaupE,IAAaA,IAG9D3gG,CAAK,EAEd,CAACk4E,GAAAA,IAAuB,CAACl4E,EAAKu4E,KAAqC,IAAjC1pE,SAAS,OAAE7H,EAAM,MAAEowB,IAASmhD,EAC5D,MAAMxgF,EAAMg0H,GAA0B/kH,EAAOgI,IAAI,UAC3CmtB,EAAUn8B,EAAMgP,IAAIjX,GAE1B,OAAIioB,EAAAA,KAAAA,OAAYmc,GACPn8B,EAAMg4B,MAAM,CAACjgC,EAAKq/B,GAAQpwB,EAAOknB,IAAI,WAAW,IAGlDluB,CAAK,EAEd,CAACk4E,GAAAA,IAAqB,CAACl4E,EAAKw4E,KAAuC,IAAnC3pE,SAAS,KAAE4wC,EAAI,GAAEF,EAAE,MAAE0mC,IAASzN,EAC5D,MAAM,aAAEyM,EAAY,qBAAE+C,IAAyBE,EAAAA,GAAAA,IAAmBloF,EAAM0R,MAAM,CAAC,eAAgB,aAAc+tC,EAAMF,GAEnH,OAAOv/C,EAAM4D,OAAO,gBAAgB4oH,GAAgBA,EAAa/wF,MAAM,CACrEgkB,OACAF,KACA0mC,MAAOA,IAAS7oD,EAAAA,GAAAA,IAAaqiB,EAAMF,GACnCsiD,SAAU5c,EACV+C,0BACC,EAEL,CAAC9P,GAAAA,IAAmB,CAACl4E,EAAKy4E,KAA2C,IAAvC5pE,SAAS,MAAEuU,EAAK,KAAEltB,EAAI,OAAE/8C,IAAUs/H,EAC9D,MAAM1gF,EAAMg0H,GAA0B71H,GAChCimC,EAAUn8B,EAAMgP,IAAIjX,GAE1B,OAAKokC,EAAQ1lB,MAAK9B,GAAKA,EAAE3F,IAAI,WAAaoU,IAUnCpjB,EATEA,EAAMkuB,IAAIn2B,EAAKokC,EAAQt7B,MAAKuI,EAAAA,EAAAA,QAAO,CACxCjwD,SACAuvF,MAAOtlB,EACPprB,MAAOorB,EACPhY,MAAOlV,EACPyqG,UAAU,KAIF,EAEd,CAACzoB,GAAAA,IAAsC,CAACl4E,EAAK04E,KAAA,IAAI7pE,SAAS,QAAE6K,IAAWg/D,EAAA,OAAK14E,EAAMy7B,OAAMryB,EAAAA,EAAAA,QAAOsQ,GAAS,EAExG,CAACw+D,GAAAA,IAAwB,CAACl4E,EAAK24E,KAAA,IAAI9pE,SAAS,SAAEi+G,EAAQ,UAAEC,IAAap0C,EAAA,OAAK34E,EAAMkuB,IAAI4+F,EAAUC,EAAU,EACxG,CAAC70C,GAAAA,IAAyB,CAACl4E,EAAK44E,KAAA,IAAE,QAAE/pE,GAAS+pE,EAAA,OAAK54E,EAAMkuB,IAAI,QAASrf,EAAQ,EAC7E,CAACqpE,GAAAA,IAAwB,CAACl4E,EAAK64E,KAAA,IAAIhqE,SAAS,OAAEj9C,EAAM,UAAEysC,EAAS,SAAE2uH,IAAYn0C,EAAA,OAAK74E,EAAM4D,OACtFopH,GACAra,GAAYA,EAASl3E,OAAMryB,EAAAA,EAAAA,QAAO,CAAEx3C,SAAQysC,gBAC7C,EAED,CAAC65E,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,4BAA6B,GAEnF,CAACgqD,GAAAA,IAA6B,IAAMxpE,GAEpC,CAACO,EAAAA,IAAwB,IAAMP,IAC9BA,ICxMH,MAAMg2F,GAAwB,CAC5BuoB,WAAY,wBACZC,iBAAkB,6BAClBC,iBAAkB,8BAGPz+G,IAAetF,EAAAA,EAAAA,QAAO,CACjCgkH,mBAAmB,EACnB9nB,wBAAwB,EACxBR,oBAAoB,EACpBC,cAAc,EACdiB,UAAW,aACXnB,eAAgB,wBAChBqhB,sBAAsB,EACtBmH,6BAA6B,EAC7BC,2BAA2B,EAC3BC,yBAAyB,EACzBC,QAAS,kBACTC,2BAA2B,EAC3BC,wBAAwB,EACxBC,0BAA2B,KAC3BC,2BAA2B,EAC3BC,mBAAmB,EACnBC,iBAAiB,EACjBC,wBAAwB,EACxB9xC,qBAAqB,IAGvB,QAAettE,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAA+B,CAACl4E,EAAKlI,KAAkB,IAAhB,QAAE+W,GAAS/W,EACjD,MAAMwnF,EAAWt/E,EAAMkuB,IAAI,YAAarf,GAExC,OAAI61F,GAAsB71F,GACjBywE,EAASpxD,IAAI,iBAAkBw2E,GAAsB71F,IAGvD7O,CAAK,EAEd,CAACk4E,GAAAA,IAAwB,CAACl4E,EAAKo4E,KAAA,IAAE,QAAEvpE,GAASupE,EAAA,OAAKp4E,EAC9CkuB,IAAI,UAAWrf,GACfqf,IAAI,YAAyB,mBAAZrf,EAA+B,mBAAqB,cACrEqf,IAAI,iBAA8B,mBAAZrf,EAA+B61F,GAAsBwoB,iBAAmBxoB,GAAsBuoB,WAAW,EAClI,CAAC/0C,GAAAA,IAA+Bl4E,GAASA,EAAM4D,OAAO,sBAAsBkhG,IAAuBA,IACnG,CAAC5sB,GAAAA,IAAyBl4E,GAASA,EAAM4D,OAAO,gBAAgBmhG,IAAiBA,IACjF,CAAC7sB,GAAAA,IAA8Bl4E,GAASA,EAAM4D,OAAO,0BAA0Bg7B,IAAMA,IACrF,CAACs5C,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACvE,CAACgqD,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,sBAAsB,GACvE,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAC/E,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,2BAA2B,GAClD,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,wBAAwB,GAAOA,IAAI,2BAA2B,GACrF,CAACgqD,GAAAA,IAAqCl4E,GAASA,EAAMkuB,IAAI,+BAA+B,GACxF,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,+BAA+B,GAAOA,IAAI,wBAAwB,GACzF,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,6BAA6B,GACpF,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,6BAA6B,GAAOA,IAAI,wBAAwB,GAEvF,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,6BAA6B,GACpD,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,2BAA2B,GAElD,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,6BAA6B,GAEpD,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACE,CAACl4E,EAAKq4E,KAAA,IAAIxpE,SAAS,gBAAE68G,IAAmBrzC,EAAA,OAAKr4E,EAAMkuB,IAAI,4BAA6Bw9F,EAAgB,EAExG,EAACzzC,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,GACAA,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,4BAA6B,MAEpD,CAACgqD,GAAAA,IAAqC,CAACl4E,EAAKs4E,KAAA,IAAE,QAAEzpE,GAASypE,EAAA,OAAKt4E,EAAMkuB,IAAI,oBAAqBrf,EAAQ,EACrG,CAACqpE,GAAAA,IAAiCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAC/E,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAChF,CAACgqD,GAAAA,IAAoCl4E,GAASA,EAAMkuB,IAAI,6BAA6B,GACrF,EAAC+pD,EAAAA,EAAAA,GACCC,GAAAA,GACAA,GAAAA,KACEl4E,GAASA,EAAMkuB,IAAI,6BAA6B,GAEpD,CAACgqD,GAAAA,IAA4Bl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GACrE,CAACgqD,GAAAA,IAA6Bl4E,GAASA,EAAMkuB,IAAI,qBAAqB,GAEtE,CAACgqD,GAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GACjE,CAACgqD,GAAAA,IAA2Bl4E,GAASA,EAAMkuB,IAAI,mBAAmB,GAElE,CAACgqD,GAAAA,IAAkCl4E,GAASA,EAAMkuB,IAAI,0BAA0B,GAEhF,CAACgoE,EAAAA,IAAsCl2F,GAASA,EAAMkuB,IAAI,uBAAuB,GACjF,EAAC+pD,EAAAA,EAAAA,GACCie,EAAAA,GACAA,EAAAA,KACEl2F,GAASA,EAAMkuB,IAAI,uBAAuB,GAE9C,CAACgoE,EAAAA,IAAwCl2F,GAASA,EAAMkuB,IAAI,0BAA0B,GAEtF,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,IC3HH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7BpqF,KAAI,GACJsP,OAAM,GACN67E,GAAEA,K,YCFG,MAAMn0E,IAAetF,EAAAA,EAAAA,QAAO,CACjC1L,OAAQ,OAGV,QAAeiR,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,GAAoB,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,IAAE9W,EAAG,MAAEC,IAASF,EAAA,OAAKkI,EAAMkuB,IAAIn2B,EAAKC,EAAM,EAElF,CAACinF,EAAAA,IAAsB,CAACj/E,EAAKo4E,KAAA,IAAIvpE,SAAS,cAAEogE,IAAiBmJ,EAAA,OAAKp4E,EAAMkuB,IAAI,SAAU+gD,EAAc,EAEpG,CAAChgE,EAAAA,IAAwB,IAAMP,IAC9BA,ICTI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCtjB,YAAY,EACZma,SAAS,EACTkO,SAAU,OAGZ,QAAeQ,EAAAA,EAAAA,GAAc,CAC3B,EAACspE,EAAAA,EAAAA,GACCC,GAAAA,GACAtpE,GAAAA,KACE5O,GAASA,EAAMy7B,MAAM,CACvB31C,YAAY,EACZqoB,SAAU,OAEZ,CAAC+pE,GAAAA,IAA+Bl4E,GAASA,EAAMy7B,MAAM,CACnD31C,YAAY,EACZqoB,SAAU,OAGZ,CAAC+pE,GAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,WAAW,GACzD,CAACgqD,GAAAA,IAA4B,CAACl4E,EAAKlI,KAAA,IAAI+W,SAAS,SAAEV,IAAYrW,EAAA,OAAKkI,EAAMy7B,MAAM,CAC7Ex7B,SAAS,EACTkO,YACA,EACF,CAAC+pE,GAAAA,IAA0Bl4E,GAASA,EAAMkuB,IAAI,WAAW,GAEzD,CAACgqD,GAAAA,IAAwB,CAACl4E,EAAKo4E,KAAA,IAAIvpE,QAASV,GAAUiqE,EAAA,OAAKp4E,EAAMkuB,IAAI,WAAY/f,EAAS,EAE1F,CAAC4vF,GAAAA,IAAiC/9F,GAASA,EAAMkuB,IAAI,WAAY,MAEjE,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICjCI,MAAMA,IAAetF,EAAAA,EAAAA,QAAO,CACjCxtD,0BAA0B,IAG5B,QAAe+yD,EAAAA,EAAAA,GAAc,CAC3B,CAACupE,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GACnF,CAACgqD,GAAAA,IAAmCl4E,GAASA,EAAMkuB,IAAI,4BAA4B,GAEnF,CAACjf,EAAAA,IAAwB,IAAMP,IAC9BA,ICTH,IAAeozE,EAAAA,EAAAA,GAAgB,CAC7B56E,SAAQ,GACRiH,SAAQ,GACR00E,GAAEA,KCwFJ,OApBoBmrC,GAAiB,CAAChuH,EAAO6+E,KAC3C,IAAIS,EAAWt/E,EAef,OAbI6+E,EAAO3oF,QAASzyC,EAAAA,EAAAA,MAAuByyC,OAEzCopF,EAAW,CACTj7D,YAAarkB,EAAMqkB,YACnBg1C,WAAYr5D,EAAMq5D,WAClBn0B,KAAMllC,EAAMklC,KACZvd,KAAKve,EAAAA,EAAAA,QAAO,CACV8tE,kBAAmBl3E,EAAM2nB,IAAI3Y,IAAI,uBAEnC6Z,OAAQ7oB,EAAM6oB,SAlDDmlG,KAAiBlsC,EAAAA,EAAAA,IAAgB,CAClDn6D,IAAG,EACHwyB,GAAE,GACFprC,OAAM,EACN2c,WAAU,GACV2jB,UAAS,GACTxmB,OAAM,GACNxE,YAAW,GACX6gB,KAAI,GACJG,aAAY,GACZ/4B,YAAW,GACX4gD,aAAY,GACZ/5B,aAAY,GACZnK,KAAI,GACJmd,eAAc,GACd35B,aAAY,GACZ0Z,OAAQ8nG,EACRthH,cAAa,GACb4rC,eAAc,GACdmV,YAAW,GACX/jB,QAAO,GACP3K,cAAa,GACbra,KAAI,GACJ20C,WAAU,GACV1rB,QAAO,GACPugB,iBAAgB,GAChB3zC,YAAW,GACXrE,kBAAiB,GACjBo4C,cAAa,GACb2B,SAAQ,GACR9gD,SAAQ,GACR6/C,sBAAqB,GACrBi/D,IAAG,GACHl9D,eAAc,GACd0E,OAAMA,KAoBCy4D,CAAWF,EAAXE,CAA0B5uC,EAAUT,EAAO,E,0DC7FrC,SAASsvC,GAAYpyF,EAAIr6B,EAAM0sH,GAC5C,qCAA4DhuH,MAAKiuH,KAE/DtrH,EADasrH,EAAIhtH,SACZ06B,EAAIr6B,GAAMtB,MAAKkuH,GAAUF,EAASE,IAAQ,GAEnD,CCDA,MAGMC,GAAgB,SAACD,EAAQzpH,EAASupH,GAAwB,IAAd1sH,EAAI9H,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACxD,MAAMgH,EAAS,CACb4tH,QAASF,EAAOG,UAAU/sH,EAAKs8F,UAAY,aAC3CswB,UAGEA,EAAOI,SACT7pH,EAAQ,IAAKjE,EAAQ+tH,KAAML,EAAOI,aAElCJ,EAAOM,QAAOD,GAAQ9pH,EAAQ,IAAKjE,EAAQ+tH,WAGzCP,GACFA,GAEJ,EAoFO,MAAMS,GAAiB,SAACC,EAAaroF,GAAwB,IAAd/kC,EAAI9H,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC5D,MAAMwO,EAAYR,SAASS,eAAeymH,GAC1C,IAAI/yF,EAAK3zB,EAAU2mH,WAEftoF,IACF1K,EAAK3zB,EAAU4mH,cAAcvoF,GAC7B1K,EAAGl0B,aAAa,QAAS,oBAGvBnG,EAAKutH,qBACPlzF,EAAGmzF,MAAMC,WAAa,OAAOztH,EAAKutH,oDAClClzF,EAAGmzF,MAAME,eAAiB,SAG5B,MAAMC,EAAUhsH,MAAM8C,UAAUymC,MAAMvmC,KAAK01B,EAAGuzF,qBAAqB,WAC7DC,EAAWlsH,MAAM8C,UAAUymC,MAAMvmC,KAAK01B,EAAGyzF,uBAAuB,6BAEtEH,EAAQx3H,SAAQ43H,IACdA,EAAOP,MAAM78C,WAAa,QAAQ,IAGpCk9C,EAAS13H,SAAQ63H,IACfA,EAAQR,MAAM78C,WAAa,QAAQ,IAGrC,MAAM7wE,EAAU,CAAQmuH,SAAS,EAAOC,MAAO,EAAGC,YAAY,EAAMC,SAAS,KAAapuH,GAAQ,CAAC,GAEnG,OAAO,IAAIX,SAAQ8D,IACjBspH,GAAYpyF,EAAIv6B,GAAS8sH,IACvBC,GAAcD,EAAQzpH,EAAS,KAAMrD,GAEjCE,EAAKutH,qBACPlzF,EAAGmzF,MAAMa,eAAe,cACxBh0F,EAAGmzF,MAAMa,eAAe,oBAG1BV,EAAQx3H,SAAQ43H,IACdA,EAAOP,MAAM78C,WAAa,SAAS,GACnC,GACF,GAEN,E,gBCjJA,OAAqB3+E,GAAAA,GACnB,MACA,eACAA,GAAAA,GACA,CAAC,GACD,G,YCPK,MAAMs8H,GAAcA,CAAC1B,EAAQE,EAASv2H,KAC3C,+BAAgDmI,MAAKtI,IAAe,IAAd,MAAEm4H,GAAOn4H,EAC7D,MAAMo4H,EAAM,IAAID,EAAM,CACpBE,KAAM,KACNC,SAAU,CAAC,cACXC,YAAa/B,EAAO9oH,MAAQ8oH,EAAO5oH,OAAS,YAAc,WAC1Du3B,OAAQ,CAACqxF,EAAO9oH,MAAO8oH,EAAO5oH,UAGhCwqH,EAAII,SAAS9B,EAAS,OAAQ,EAAG,GACjC0B,EAAIK,KAAKt4H,EAAS,GAClB,EAGSu4H,GAAYA,CAACzlC,EAAS9yF,KACjC,+BAAgDmI,MAAKg4E,IAAe,IAAd,MAAE63C,GAAO73C,EACjD,IAAI63C,EAAM,CACpBE,KAAM,KACNC,SAAU,CAAC,cACXnzF,OAAQ,OAMNwnF,KACF15B,EACA,CACEvlF,MAAOA,IACPirH,YAAajrH,IACbs9C,EARY,GASZ2hC,EATY,GAUZ2pC,SAAUsC,IACRA,EAAIH,KAAKt4H,EAAS,GAGvB,GACD,ECjBG,SAAUy/E,GAAW34B,EAAM44B,SAC1Bg5C,EAAAA,GAAAA,IAAIz4C,EAAAA,QAAkCp+E,IAAZ69E,GAA+BA,UACzDg5C,EAAAA,GAAAA,IAAIz4C,EAAAA,IAAyB,UAC7Bt2E,EAAAA,GAAAA,IAAM,WACN+uH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsBn5B,UAC1Bn9C,EAAAA,GAAAA,IAAM,WACN+uH,EAAAA,GAAAA,IAAIz4C,EAAAA,IAAyB,UAC7By4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsB,MAClC,CAEO,SAAUN,GAAmB74B,EAAM+4B,EAASC,GACjD,MAAM64C,EAAgB74C,IAAoB,QACpC44C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkC,CAAEn5B,OAAM+4B,UAASC,iBAAkB64C,IACjF,CAGO,SAAUC,GAAgB58H,SACzB08H,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2BjkF,UAC/B08H,EAAAA,GAAAA,KAAInnK,EAAAA,EAAAA,MACZ,CAEO,SAAUxG,GAAgB67H,UACGiyC,EAAAA,GAAAA,IAAOC,EAAAA,cAGjCJ,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAAS,0BAGdq0I,GAAgBhyC,EAAOhwE,QAChC,CAEO,SAAU3sD,GAAkB41C,GAAA,IAAG+W,QAAShb,GAAaiE,EAAA,yBACpDuO,EAAAA,GAAAA,IAAK2qH,EAAyBtlD,EAAAA,GAAAA,UAAuB73E,EAC7D,CAF4D,EAE3D,CAEM,SAAU9xC,KACf,MAAMmjF,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WACpB1qH,EAAAA,GAAAA,IAAKqxE,GAAYxyC,EAAKl2B,IAAI,YAAY,EAC9C,CAEO,SAAUltD,KACf,MAAMojF,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WACpB1qH,EAAAA,GAAAA,IAAKqxE,GAAYxyC,EAAKl2B,IAAI,kBAAkB,EACpD,CAEO,SAAUvsD,GAAc21H,GAAA,IAAGvpE,SAAS,KAAEkwC,EAAI,QAAE44B,IAAWS,EAAA,yBACtD/xE,EAAAA,GAAAA,IAAKqxE,GAAY34B,EAAM44B,EAC/B,CAF8D,EAE7D,CAEM,SAAUj1H,GAAmB21H,GAAA,IAAGxpE,QAASkwC,GAAMs5B,EAAA,yBAC9ChyE,EAAAA,GAAAA,IAAKqxE,GAAY34B,GAAM,EAC/B,CAFsD,EAErD,CAEM,SAAUp8F,GAAqB21H,GAAA,IAAGzpE,QAASkwC,GAAMu5B,EAAA,yBAChDjyE,EAAAA,GAAAA,IAAKqxE,GAAY34B,GAAM,EAC/B,CAFwD,EAEvD,CAEM,SAAUn8F,GAAsB21H,GAAA,IAAG1pE,SAAS,KAAEkwC,EAAI,QAAE+4B,EAAO,iBAAEC,IAAoBQ,EAAA,yBAChFlyE,EAAAA,GAAAA,IAAKuxE,GAAoB74B,EAAM+4B,EAASC,EAChD,CAFwF,EAEvF,CAEM,SAAUpjF,KACf,IACE,MAAMo8E,QAAoB+/C,EAAAA,GAAAA,IAAOC,EAAAA,KAC3BnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAY,CAAEu9H,aAAclgD,UAEhD4/C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6Bt3E,UACjCyF,EAAAA,GAAAA,IAAK2qH,EAIb,CAHE,MAAO7wH,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2B/3E,UAC/BwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkB/3E,GAC9B,CACF,CAEO,SAAUvL,GAAK4jF,GAAA,IAAG3pE,SAAS,SAAEqiH,EAAQ,SAAEC,EAAQ,OAAEC,IAAU54C,EAAA,mBAChE,MAAMtzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMl9H,QAAoBi9H,EAAAA,GAAAA,IAAOC,EAAAA,KAEjC,GAAMG,GAAYC,GAAcC,EAEzB,CACL,MAAM,KAAE1sG,EAAM7wB,YAAaw9H,SAAyBhrH,EAAAA,GAAAA,IAAK3S,GAAAA,GAAW,CAAEw9H,WAAUC,WAAUC,SAAQE,aAAcz9H,IAE5Gw9H,IAAmBx9H,UACf88H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2Bm5C,WAGjCV,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA4BxzD,UAChCre,EAAAA,GAAAA,IAAK2qH,EACb,YAVQL,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA4BhzC,EAAKl2B,IAAI,uBAuCnD,CA5BE,MAAO7O,GACP,IAAIg4E,EAAMjzC,EAAKl2B,IAAI,iBAEf7O,EAAMksG,UAC0B,MAA9BlsG,EAAMksG,SAASf,aACjBnzB,EAAMjzC,EAAKl2B,IAAI,uBAGiB,MAA9B7O,EAAMksG,SAASf,aACjBnzB,EAAMjzC,EAAKl2B,IAAI,8BAG2C,IAAxD,CAAC,IAAK,IAAK,KAAKvH,QAAQtH,EAAMksG,SAASf,oBACnCqlB,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkB/3E,MAG9Bg4E,EAAMjzC,EAAKl2B,IAAI,6BAGX3I,EAAAA,GAAAA,IAAK2qH,SACLL,EAAAA,GAAAA,IAAI1xC,EAAAA,MAENmyC,IACFj5C,EAAMjzC,EAAKl2B,IAAI,4BACT2hH,EAAAA,GAAAA,KAAIl0I,EAAAA,GAAAA,cAGNk0I,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0BC,GACtC,CACF,CA/CkE,EA+CjE,CAEM,SAAU70H,GAAmBm1H,GAAA,IAAG5pE,QAAS6V,GAAM+zD,EAAA,mBACpD,GAAK/zD,EAAK6sG,WAAW13H,OAGd,CACL,IAAIhG,EAAc6wB,EAAK6sG,WAAW,GAAGt9H,GACrC,MAAMu9H,QAA2BV,EAAAA,GAAAA,IAAOC,EAAAA,KAEpCS,IAAoG,IAA9E9sG,EAAK6sG,WAAW78G,KAAIkqB,GAAKA,EAAE3qC,KAAIwT,QAAQsqB,SAASy/F,EAAoB,OAC5F39H,EAAc29H,SAGVb,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2BrkF,UAC/B88H,EAAAA,GAAAA,IAAI1xC,EAAAA,GAAoBv6D,UACxBisG,EAAAA,GAAAA,KAAIh0I,EAAAA,GAAAA,MACZ,KAd6B,CAC3B,MAAMuoD,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WACpBJ,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0BhzC,EAAKl2B,IAAI,uBAC/C,CAYF,CAhBsD,EAgBrD,CAEM,SAAUprD,GAAe80H,GAAA,IAAG7pE,QAAS4iH,GAAe/4C,EAAA,mBACzD,MAAM1B,QAAmB85C,EAAAA,GAAAA,IAAOC,EAAAA,KAC1BltC,QAAoBitC,EAAAA,GAAAA,IAAOC,EAAAA,KAE5B/5C,EAEMA,IAAey6C,GAAkB5tC,UACpC8sC,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsBu5C,UAC1Bd,EAAAA,GAAAA,IAAIz4C,EAAAA,aAHJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsBu5C,GAKpC,CAV2D,EAU1D,CAEM,SAAU1tK,KACf,IACE,OAAU,CACR,MAAMkzH,QAAoB65C,EAAAA,GAAAA,IAAOC,EAAAA,MACzB9gD,QAASyhD,SAAyBrrH,EAAAA,GAAAA,IAAKsrH,IACzC9tC,QAAoBitC,EAAAA,GAAAA,IAAOC,EAAAA,KAE5B95C,EAEMA,IAAgBy6C,GAAmB7tC,UACtC8sC,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuBw5C,UAC3Bf,EAAAA,GAAAA,IAAIz4C,EAAAA,aAHJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuBw5C,UAM7B9vH,EAAAA,GAAAA,IAAM,IACd,CAKF,CAJE,MAAOoE,GAAK,CACZ,cACMpE,EAAAA,GAAAA,IAAM,WACN+uH,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CACF,CAEO,SAAU9zH,GAASu0H,GAAA,IAAG9pE,QAAS1O,GAAOw4E,EAAA,mBAC3C,IAAKx4E,EAAMksG,UAAalsG,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,iBACjDjlG,EAAAA,GAAAA,IAAKurH,EAAAA,EAAczxH,OACpB,CACL,MAAM+kC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WACpBJ,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0BhzC,EAAKl2B,IAAI,yBACvC2hH,EAAAA,GAAAA,IAAI1xC,EAAAA,KACZ,CACF,CAR6C,EAQ5C,CAEM,SAAU4yC,GAAoBn6H,EAAMO,EAAU+lG,GACnD,UACQ2yB,EAAAA,GAAAA,IAAIz4C,EAAAA,MAEV,MAAMt3E,QAAeyF,EAAAA,GAAAA,IAAK5O,GAAYC,EAAMO,EAAU+lG,EAAUp7E,MAAS+zD,IAAI,EAAG,SAAS15C,gBAEnF0zF,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmCt3E,GAK/C,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiC/3E,UACrCwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkB/3E,GAC9B,CACF,CAEO,SAAU5C,GAAGq7E,GAAA,IAAG/pE,SAAS,KAAE3Y,EAAI,KAAEwB,IAAQkhF,EAAA,mBAC9C,MAAM1zC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAS,CAAEwC,OAAMwB,KAAMimD,KAAmBjmD,KAE9C,MAAlBkJ,EAAOy9E,aACHsyC,EAAAA,GAAAA,IAAIz4C,EAAAA,GACRhzC,EAAKl2B,IACH,0BACA,CACEypG,MAAO,MAAM73G,EAAO63G,sBAKpBkY,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA4Bt3E,GAM1C,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAwBhzC,EAAKl2B,IAAI,yBACrC2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkB/3E,GAC9B,CACF,CAvBgD,EAuB/C,CAEM,SAAU17C,GAAsBo0H,GAAA,IAAGhqE,SAAS,GAAE5a,EAAE,SAAEgE,EAAQ,SAAEwuC,EAAQ,KAAE/kC,IAAQm3E,EAAA,mBACnF,IACE,MAAMj4E,QAAeyF,EAAAA,GAAAA,IAAKwoH,GAAgB56H,EAAIwyC,EAAU/kC,SAElD2E,EAAAA,GAAAA,IAAKyrH,GAAclxH,EAAO+tH,KAAM12H,EAAU,YAMlD,CALE,MAAOkI,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkB/3E,UACtBwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAAE,cACMy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CACF,CAXqF,EAWpF,CAEM,SAAUvzH,GAAoBm0H,GAAA,IAAGjqE,SAAS,GAAE5a,EAAE,SAAEgE,EAAQ,SAAEwuC,EAAQ,KAAE/kC,EAAI,OAAEqwH,IAAUj5C,EAAA,mBACzF,IACE,GAAIi5C,EAAQ,CACV,MAAMtN,EAAO78G,SAASS,eAAepU,GAAI+9H,gBAEnC3rH,EAAAA,GAAAA,IAAKmqH,GAAW/L,EAAMxsH,EAC9B,KAAO,CACL,MAAMuJ,EAAU,IAAME,GAAQ,CAAC,EAASs8F,SAAU,eAE5C,OAAEswB,EAAM,QAAEE,SAAkBnoH,EAAAA,GAAAA,IAAKwoH,GAAgB56H,EAAIwyC,EAAUjlC,SAE/D6E,EAAAA,GAAAA,IAAK2pH,GAAa1B,EAAQE,EAASv2H,EAC3C,CAMF,CALE,MAAOkI,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkB/3E,UACtBwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAAE,cACMy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CACF,CAnB2F,EAmB1F,CAEM,SAAUrzH,GAAUk0H,GAAA,IAAGlqE,SAAS,YAAEojH,EAAW,KAAE3Q,EAAI,OAAEx4G,IAAUiwE,EAAA,mBACpE,UACQ1yE,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgB,CACzBu+H,cACA3Q,KAAMA,GAAQ,CAAC,EACfx4G,OAAQA,GAAU,CAAC,GAIvB,CAFE,MAAO9C,IACP4rH,EAAAA,EAAAA,GAAa5rH,EACf,CACF,CAVsE,EAUrE,CAEM,SAAUksH,WACTC,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAyBl1H,GAC3C,CAEO,SAAUovK,WACTD,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA4Bh2H,GAC9C,CAEO,SAAUmwK,WACTF,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA+Bn2H,GACjD,CAEO,SAAUuwK,WACTC,EAAAA,GAAAA,IAAWr6C,EAAAA,GAAwBz1H,GAC3C,CAEO,SAAU+vK,WACTD,EAAAA,GAAAA,IAAWr6C,EAAAA,GAA6Bx1H,GAChD,CAEO,SAAU+vK,WACTF,EAAAA,GAAAA,IAAWr6C,EAAAA,GAA+Bv1H,GAClD,CAEO,SAAU+vK,WACTH,EAAAA,GAAAA,IAAWr6C,EAAAA,GAAgCt1H,GACnD,CAEO,SAAU+vK,WACTR,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA6Bp2H,GAC/C,CAEO,SAAU8wK,WACTT,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA4BvjF,GAC9C,CAEO,SAAUk+H,WACTV,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA2BtjF,GAC7C,CAEO,SAAUk+H,WACTX,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA6B50H,GAC/C,CAEO,SAAUyvK,WACTZ,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAyBt0H,GAC3C,CAEO,SAAUovK,WACTb,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA0Bn0H,GAC5C,CAEO,SAAUkvK,WACTd,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAmB9zH,GACrC,CAEO,SAAU8uK,WACTf,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAyB36E,GAC3C,CAEO,SAAU41H,WACThB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAgCzzH,GAClD,CAEO,SAAU2uK,WACTjB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA8BvzH,GAChD,CAEO,SAAU0uK,WACTlB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoBrzH,GACtC,CAEe,SAAUyuK,WACjBtyH,EAAAA,GAAAA,IAAI,CACRkxH,KACAE,KACAC,KACAC,KACAE,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,C,gBCzXA,MAAME,GAAiB,CACrBC,WAAY,EACZC,SAAUA,KAAM,GAGX,SAAUC,GAAUC,EAAMC,EAAU/0C,GAAM,IAAEn9E,EAAI9H,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,mBAC1D,MAAM4H,EAAU,IAAK+xH,MAAoB7xH,GAAQ,CAAC,IAC5C,WAAE8xH,EAAU,SAAEC,GAAajyH,EAEjC,IAAK,IAAIm1B,EAAI,EAAGA,GAAK68F,EAAY78F,GAAK,EACpC,IACE,aAAcg9F,EAAK90C,EAWrB,CAVE,MAAO1+E,GACP,IAAIszH,EAAStzH,GAOX,aAAcyzH,EAASzzH,EAAO0+E,GAN9B,KAAIloD,EAAI68F,GAGN,aAAcI,EAASzzH,EAAO0+E,SAFxBj9E,EAAAA,GAAAA,IAAM,KAAQ+0B,EAAI,GAO9B,CAGF,OAAO,IACT,CArB4D,EAqB3D,CAEM,SAAUl/B,GAAWC,GAAI,IAAEO,EAAQ2B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAMokG,EAAQpkG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAMi6H,EAASj6H,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAI,mBAClF,IAAIgH,EAAS,CACXq+C,IAAK,MAGP,GAAIvnD,EAAM,CACR,MAAMC,EAAW,CACf,CACEI,IAAK,OACLC,MAAON,EACPO,SAAUA,QAAY6B,IAItB+5H,GACFl8H,EAASkJ,KAAK,CACZ9I,IAAK,aACLC,MAAO67H,IAIP71B,GACFrmG,EAASkJ,KAAK,CACZ9I,IAAK,YACLC,MAAOgmG,IAIXp9F,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBiE,EACtC,CAEA,OAAOiJ,CACT,CAhCoF,EAgCnF,CAEM,SAAUkzH,GAAYp8H,GAC3B,MAAM,IAAEunD,SAAexnD,GAAWC,GAElC,OAAOunD,CACT,CAEO,SAAU6yE,GAAanD,EAAM12H,EAAU+lG,GAC5C,MAAMn1E,QAAeioG,EAAAA,GAAAA,IAAOC,EAAAA,KAEtBloG,EAAO7Z,IAAI,QAAU6Z,EAAO7Z,IAAI,YAG9B3I,EAAAA,GAAAA,IAAKwrH,GAAqBlD,EAAM12H,EAAU+lG,SAF1C33F,EAAAA,GAAAA,IAAK0tH,GAAAA,EAAUpF,EAAM12H,EAAU+lG,EAIzC,CAEO,SAAUg2B,GAAWhrG,GAAI,IAAEirG,EAAGr6H,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGlG,GAAAA,GAAU,mBAChD,GAAIs1B,EAAM,CACR,MACM1xB,SADew5H,EAAAA,GAAAA,IAAOC,EAAAA,MACLt6G,MAAK8X,GAAKA,EAAEvf,IAAI,QAAQuU,SAASyF,EAAKha,IAAI,SAAQA,IAAI,MAE7E,GAAI1X,EAAS,CACX,MAAM7D,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,IAAoCz5H,EAAS0xB,EAAKha,IAAI,MAAOga,EAAKha,IAAI,cAChG,IAAIpO,QAAeyF,EAAAA,GAAAA,IAAK4tH,EAAKxgI,GAM7B,YAJsBqG,IAAlB8G,EAAOutB,SACTvtB,GAASwI,EAAAA,EAAAA,SAAQxI,EAAOutB,OAAO1X,MAAK8X,GAAKA,EAAEt6B,KAAOqD,KAAY,CAAE0xB,KAAM,KAAMA,QAGvE5f,EAAAA,EAAAA,QAAOxI,EAChB,CAEA,OAAOwI,EAAAA,EAAAA,QAAO,GAChB,CAEA,OAAOA,EAAAA,EAAAA,QAAO,GAChB,CApBkD,EAoBjD,CC7ED,MAAM8qH,GAAqB,4EAWrBC,GAAqB,CAAC,KAAM,KAAM,KAAM,MAIjCC,GAAmBA,CAAChiF,EAAOlN,EAAMmvF,IAC7B,GAAGjiF,EAAMpjC,IAAI,UAAYojC,EAAMpjC,IAAI,cAAe83C,EAAAA,GAAAA,IAAmB1U,EAAOlN,MAASmvF,IAEtFjuG,QAAQ,YAAa,KAAKA,QAAQ,MAAO,KAAK9C,cAGvD,SAAUgxG,GAAiBx8H,GAAA,IAAC,MAAEs6C,EAAK,WAAEqQ,GAAY3qD,EAAA,mBACtD,KAAKk9C,EAAAA,GAAAA,IAAa5C,MAAWsC,EAAAA,GAAAA,IAAYtC,MAAWuC,EAAAA,GAAAA,IAAsBvC,GAAQ,CAChF,MAAM3+C,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,GAAwB3+E,EAAOqQ,GAEzD,aAAap8C,EAAAA,GAAAA,IAAK3S,GAAAA,GAAoBD,EACxC,CAEA,OAAO,IACT,CARwD,EAQvD,CAEM,SAAU8gI,GAAmBp0H,SAC5BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CAEO,SAAU1E,GAAe22C,EAAOqQ,GACrC,aAAap8C,EAAAA,GAAAA,IAAKqtH,GAAWY,GAAmBC,GAAoB,CAClEniF,QACAqQ,cAEJ,CAEO,SAAUtqD,KACf,IACE,MAAM6U,QAAe8jH,EAAAA,GAAAA,IAAOC,EAAAA,KACtB56E,QAAgB26E,EAAAA,GAAAA,IAAOC,EAAAA,KAEvByD,EAAkBxnH,EAAO0N,QAC7B,CAACC,EAAK7R,EAAQ/Q,IAAQ4iB,EAAIuT,IAAIn2B,EAAK+Q,EAAO4L,KAAI09B,GAASA,EAAM3X,OAAO,aACpErxB,EAAAA,EAAAA,QAAO,CAAC,IACRH,OAEIxV,EAAO,CACXuZ,OAAQ2wC,KAAmB62E,GAC3Br+E,QAASA,EAAQltC,cAGb5C,EAAAA,GAAAA,IAAK3S,GAAAA,GAAkBD,SACvBk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B,CAAElrE,SAAQmpC,YAKlD,CAJE,MAAOh2C,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0B/3E,UAC9BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUl5C,WAIT0pK,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoB,CAAElrE,OAHjB,CAAC,EAGwBmpC,QAFxB,CAAC,WAGXw6E,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAUu8C,GAAmBriF,EAAOqQ,EAAY1+B,EAAMswG,GAC3D,MAAMnvF,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB2D,QAAmBruH,EAAAA,GAAAA,IAAK0qH,EAAAA,IAAqC3+E,EAAOiiF,GAC1E,IAAI5gI,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,GAAwB3+E,EAAOqQ,EAAY1+B,GAAQ2wG,GAO3E,OALAjhI,EAAO,IACFA,EACHkhI,WAAYzvF,EAAKl2B,IAAIquB,KAAW+U,EAAMpjC,IAAI,eAAiBojC,EAAMpjC,IAAI,WAGhEvb,CACT,CAEO,SAAUmhI,GAAYxiF,EAAOqQ,EAAYoyE,EAASR,EAAKr2B,EAAUj6E,GACtE,MAAMmhB,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBt9H,QAAcghI,GAAmBriF,EAAOqQ,EAAY1+B,EAAMswG,GAC1Dp8H,EAAWm8H,GAAiBhiF,EAAOlN,EAAMmvF,GACzCzzH,QAAeyF,EAAAA,GAAAA,IAAKwuH,EAASphI,SAE7B4S,EAAAA,GAAAA,IAAKyrH,GAAclxH,EAAQ3I,EAAU+lG,EAC7C,CAGO,SAAU82B,GAAY1iF,EAAOqQ,GAClC,UACSmyE,GAAYxiF,EAAOqQ,EAAY/uD,GAAAA,GAAiB,OAAQ+7E,EAAAA,UAEzDkhD,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyB/3E,UAC7BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAU/H,GAAWggF,GAAA,IAAGvpE,QAASujC,GAAOgmC,EAAA,mBAC7C,MAAM31B,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,WACzB+D,GAAY1iF,EAAOqQ,EAC5B,CAH+C,EAG9C,CAGM,SAAUsyE,GAAiB3iF,EAAOqQ,GACvC,UACSmyE,GAAYxiF,EAAOqQ,EAAY/uD,GAAAA,GAAsB,OAAQwgI,GAAoB9hF,EAAM1gC,MAAM,CAAC,OAAQ,QAAS,WAEhHi/G,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8B/3E,UAClCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAU9H,GAAgBggF,GAAA,IAAGxpE,QAASujC,GAAOimC,EAAA,mBAClD,MAAM51B,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,WACzBgE,GAAiB3iF,EAAOqQ,EACjC,CAHoD,EAGnD,CAGM,SAAUuyE,GAAsBhoH,EAAQy1C,GAAU,IAAE/gD,EAAI9H,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,mBAClE,IACE,MAAMq7H,EAAc,GACpBjoH,EAAOnV,SAAQu6C,GAAS6iF,EAAYp0H,MAAKwF,EAAAA,GAAAA,IAAKouH,GAAoBriF,EAAOqQ,EAAYrQ,EAAM1gC,MAAM,CAAC,OAAQ,QAAS,IAAK,WAExH,IAAIje,EAAO,CACTuZ,aAAchM,EAAAA,GAAAA,IAAIi0H,IAGpBxhI,EAAO,IAAKA,KAASiO,GAErB,MAAMd,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2BD,SAE/C4S,EAAAA,GAAAA,IAAKyrH,GAAclxH,EAAQc,EAAKzJ,UAAY,cAAei8H,UAE3DvD,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmC/3E,UACvCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CArBoE,EAqBnE,CAEM,SAAU+0H,GAA0B58C,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,mBACrD,MAAMriC,QAAmB66E,EAAAA,GAAAA,IAAOC,EAAAA,KAChC,IAAI/jH,QAAe8jH,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,MAAMtuE,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,KAC1Bn9H,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBxqE,QAAauqE,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B/jH,EAASA,EACNgC,IAAIinC,GACJvhC,KAAI09B,IACH,IAAIwyC,EAAWxyC,EAAM3X,OAAO,QAM5B,OAJI5rB,GAAWA,EAAQsmH,YACrBvwC,EAAWA,EAAS12D,IAAI,aAAa,IAGhC02D,CAAQ,UAGbv+E,EAAAA,GAAAA,IAAK2uH,GAAuBhoH,EAAQy1C,EAAY,CACpD7uD,WACA2yD,eAGIoqE,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAzBuD,EAyBtD,CAEM,SAAU3wH,GAAagxH,GAAA,IAAG1pE,SAAS,MAAEujC,EAAK,GAAEn+C,IAAMskF,EAAA,mBACvD,IACE,MAAMrzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB94H,EAAWm8H,GAAiBhiF,EAAOlN,EAAM,OAEzCtkC,QAAeyF,EAAAA,GAAAA,IAAKwoH,GAAgB56H,SAEpCoS,EAAAA,GAAAA,IAAKyrH,GAAclxH,EAAO+tH,KAAM12H,EAAU,YAIlD,CAHE,MAAOkI,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAZyD,EAYxD,CAEM,SAAU5nD,KACf,MAAMguF,QAAkBy7E,EAAAA,GAAAA,IAAOC,EAAAA,KAC/B,IAAI/jH,QAAe8jH,EAAAA,GAAAA,IAAOC,EAAAA,KACtB56E,QAAgB26E,EAAAA,GAAAA,IAAOC,EAAAA,KAEtB17E,IACHroC,QAAe8jH,EAAAA,GAAAA,IAAOC,EAAAA,KACtB56E,QAAgB26E,EAAAA,GAAAA,IAAOC,EAAAA,WACjBJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0B,CAAElrE,SAAQmpC,aAE9CnpC,EAAS,CAAC,EACVmpC,EAAU,CAAC,SAGPw6E,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoB,CAAElrE,SAAQmpC,YAC1C,CAEO,SAAUn5F,GAASw7H,GAAA,IAAG3pE,SAAS,MAAEujC,EAAOrQ,GAAG,WAAE8U,GAAY,aAAEC,EAAY,QAAE1wB,IAAWoyD,EAAA,mBACzF,IAAI48C,EAAmBhjF,EAAMpjC,IAAI,eAER,aAArBomH,IACFA,EAAmB,cAGrB,IAAIC,EAAkBjjF,EAAMpjC,IAAI,cAUhC,GARwB,aAApBqmH,IACFA,EAAkB,cAGK,cAArBD,IACFA,EAAmB,eAGhBpvC,EAAAA,GAAAA,IAAW5zC,GA4DL0E,SACH65E,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CACjCtlG,SAAU,IAAIulF,KAAK5qC,EAAWovC,MAAMxmC,MACpCtjD,OAAQ,IAAIslF,KAAK5qC,EAAWovC,MAAM1mC,OAGX,kBAArB61E,QACIzE,EAAAA,GAAAA,IAAI2E,GAAAA,GAA8B,CACtClqH,MAAO,eACPpT,OAAOoR,EAAAA,EAAAA,QAAO,CAAC0tC,OAEa,wBAArBs+E,QACHzE,EAAAA,GAAAA,IAAI2E,GAAAA,GAA8B,CACtClqH,MAAO,sBACPpT,OAAOoR,EAAAA,EAAAA,QAAO,CAAC0tC,OAER1wB,QACHuqG,EAAAA,GAAAA,IAAI2E,GAAAA,GAA2B,CAAC,CACpCtuH,QAAQoC,EAAAA,EAAAA,QAAO0tC,GACf1rC,MAAOgqH,YAGHzE,EAAAA,GAAAA,IAAI2E,GAAAA,GAAuB,CAAC,CAChCtuH,QAAQoC,EAAAA,EAAAA,QAAO0tC,GACf1rC,MAAOgqH,aAILzE,EAAAA,GAAAA,IAAI2E,GAAAA,GAA4B,CACpCp5H,SAAU,IAAIulF,KAAK5qC,EAAWovC,MAAMxmC,MACpCtjD,OAAQ,IAAIslF,KAAK5qC,EAAWovC,MAAM1mC,WA1Fd,CACtB,GAAInN,EAAMpjC,IAAI,aAAc,CAC1B,MAAQywC,KAAMvjD,EAAUqjD,GAAIpjD,SAAiBkK,EAAAA,GAAAA,IAAK2iF,GAAAA,GAAc52C,EAAMpjC,IAAI,oBAEpE2hH,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CACjCtlG,WACAC,WAEJ,MAAO,GAAIi2C,EAAMpjC,IAAI,aAAeojC,EAAMpjC,IAAI,UAAW,CACvD,MAAM9S,EAAWk2C,EAAMpjC,IAAI,YAAc,IAAIyyE,KAAKrvC,EAAMpjC,IAAI,aAAe,KACrE7S,EAASi2C,EAAMpjC,IAAI,UAAY,IAAIyyE,KAAKrvC,EAAMpjC,IAAI,WAAa,WAE/D2hH,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CACjCtlG,WACAC,WAEJ,CAEA,MAAMud,EAAU,GAEQ,kBAApB27G,QACI1E,EAAAA,GAAAA,IAAInvB,GAAAA,GAAgC,CACxCp2F,MAAO,gBACPpT,OAAOoR,EAAAA,EAAAA,QAAO,CAACytC,OAGjBn9B,EAAQ7Y,KAAK,CACXmG,QAAQoC,EAAAA,EAAAA,QAAOytC,GACfzrC,MAAOiqH,IAIPv+E,IACuB,kBAArBs+E,QACIzE,EAAAA,GAAAA,IAAInvB,GAAAA,GAAgC,CACxCp2F,MAAO,eACPpT,OAAOoR,EAAAA,EAAAA,QAAO,CAAC0tC,OAEa,wBAArBs+E,QACHzE,EAAAA,GAAAA,IAAInvB,GAAAA,GAAgC,CACxCp2F,MAAO,sBACPpT,OAAOoR,EAAAA,EAAAA,QAAO,CAAC0tC,OAGjBp9B,EAAQ7Y,KAAK,CACXmG,QAAQoC,EAAAA,EAAAA,QAAO0tC,GACf1rC,MAAOgqH,KAKT17G,EAAQ7f,OACNusB,QACIuqG,EAAAA,GAAAA,IAAI2E,GAAAA,GAA2B57G,UAE/Bi3G,EAAAA,GAAAA,IAAI2E,GAAAA,GAAuB57G,UAG7Bi3G,EAAAA,GAAAA,IAAI/hH,GAAAA,IAEd,CAiCF,CA9G2F,EA8G1F,CAwEM,SAAUhoD,GAAiB6xH,GAAA,IAAG5pE,SAAWujC,MAAOmjF,EAAM,IAAEx9H,EAAKC,MAAO4mC,EAAC,SAAE42F,EAAQ,YAAEC,IAAeh9C,EAAA,mBACrG,MAAMzgF,EAAQ4mC,GAAK,GACnB,IAAIwT,EA4BJ,OA1BI8B,EAAAA,GAAAA,IAA0BqhF,GAC5BnjF,QA3EJ,UAA2CmjF,EAAQx9H,EAAKC,GACtD,IAAIo6C,EAAQmjF,EAEZ,GAAY,eAARx9H,EAAsB,CAEtBq6C,EADY,KAAVp6C,EACMo6C,EAAMlkB,IAAIn2B,EA9Te,oBAgUzBq6C,EAAMlkB,IAAIn2B,EAAKC,GAGzB,MAAMmtD,QAAmB2rE,EAAAA,GAAAA,IAAOC,EAAAA,IAAoC3+E,GAE/D+S,EAAW5hC,SAAS6uB,EAAMpjC,IAAI,WACjCojC,EAAQA,EAAMlkB,IAAI,OAAQi3B,EAAWr1B,UAGvC,MAAM+lD,QAAoBi7C,EAAAA,GAAAA,IAAOC,EAAAA,IAAqC3+E,GAExD,2BAAVp6C,GACFo6C,EAAQA,EAAMlkB,IAAI,cAAe,kBAE5B2nD,EAAYtyD,SAAS6uB,EAAMpjC,IAAI,iBAClCojC,EAAQA,EAAMlkB,IAAI,aAAc2nD,EAAY/lD,WAE3B,0BAAV93B,GACTo6C,EAAQA,EAAMlkB,IAAI,cAAe,iBAE5B2nD,EAAYtyD,SAAS6uB,EAAMpjC,IAAI,iBAClCojC,EAAQA,EAAMlkB,IAAI,aAAc2nD,EAAY/lD,kBAGnBghG,EAAAA,GAAAA,IAAOC,EAAAA,IAAsC3+E,IAEtD7uB,SAAS6uB,EAAMpjC,IAAI,kBACnCojC,EAAQA,EAAM3X,OAAO,gBAIpBo7C,EAAYtyD,SAAS6uB,EAAMpjC,IAAI,iBAClCojC,EAAQA,EAAM3X,OAAO,cAEzB,KAAmB,gBAAR1iC,EAEPq6C,EADEA,EAAMpjC,IAAIjX,KAASC,EACbo6C,EAAM3X,OAAO1iC,GAEbq6C,EAAMlkB,IAAIn2B,EAAKC,GAER,eAARD,EACTq6C,EAAQA,EAAMlkB,IAAIn2B,EAAKC,GACN,SAARD,GACTq6C,EAAQA,EAAMlkB,IAAIn2B,EAAKC,UAEI84H,EAAAA,GAAAA,IAAOC,EAAAA,IAAsC3+E,IAEtD7uB,SAAS6uB,EAAMpjC,IAAI,kBACnCojC,EAAQA,EAAM3X,OAAO,uBAGGq2F,EAAAA,GAAAA,IAAOC,EAAAA,IAAqC3+E,IAErD7uB,SAAS6uB,EAAMpjC,IAAI,iBAClCojC,EAAQA,EAAM3X,OAAO,gBAGvB2X,EAAQA,EAAMlkB,IAAIn2B,EAAKC,GAGzB,OAAOo6C,CACT,CAOmBsjF,CAAiCH,EAAQx9H,EAAKC,IAE7Do6C,EAAQmjF,EAAOrnG,IAAIn2B,EAAKC,IAEpBg9C,EAAAA,GAAAA,IAAa5C,KACfA,EAAQA,EAAMlkB,IAAI,OAAQ,WAGxBwmB,EAAAA,GAAAA,IAAYtC,KACdA,EAAQA,EAAMlkB,IAAI,OAAQ,UAGxBymB,EAAAA,GAAAA,IAAsBvC,KACxBA,EAAQA,EAAMlkB,IAAI,OAAQ,oBAI9BsnG,EAASpjF,EAAM3X,OAAO,SAElBg7F,GACFA,EAAY,CACVE,YAAaJ,IAIVnjF,CACT,CA/BuG,EA+BtG,CAEM,SAAUwjF,GAAsBxjF,EAAOqQ,EAAYrrB,EAAO6e,GAC/D,IACE,MAAMuwD,QAAmBsqB,EAAAA,GAAAA,IAAOC,EAAAA,WAE1BJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB,CAChC9gD,QACA6e,gBAEF,MAAMhpC,QAA4B6jH,EAAAA,GAAAA,IAAOC,EAAAA,KACzC,IAAInsC,EAAWxyC,EAEf,GAAInlC,EAAqB,CACvB,MAAMimF,QAAyB49B,EAAAA,GAAAA,IAAOC,EAAAA,KACtCnsC,EAAWA,EAAS12D,IAAI,aAAcglE,EACxC,CAEA,MAAMtyF,QAAeyF,EAAAA,GAAAA,IAAK5K,GAAgBmpF,EAAUniC,GAE9C6qC,EAAY,CAChBl2D,QACA6e,aACAv+C,KAAMkJ,EAASA,EAAOwxC,EAAMpjC,IAAI,eAAiB,MAG/Cw3F,EAAWx3F,IAAI,gBAAkBzF,EAAAA,GAAAA,gBAC7BonH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2BoV,UAE/BqjC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqBoV,GAQnC,CANE,MAAOntF,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqB,CAC7B9gD,QACA6e,aACAv+C,KAAM,OAEV,CACF,CAEO,SAAUm+H,KACf,MAAMrvB,QAAmBsqB,EAAAA,GAAAA,IAAOC,EAAAA,KAChC,IAAI/jH,EAGFA,EADmC,cAAjCw5F,EAAWx3F,IAAI,oBACF8hH,EAAAA,GAAAA,IAAOC,EAAAA,WAEPD,EAAAA,GAAAA,IAAOC,EAAAA,KAGxB,MAAMtuE,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B+E,QAA0BhF,EAAAA,GAAAA,IAAOC,EAAAA,KACjCloG,QAAeioG,EAAAA,GAAAA,IAAOC,EAAAA,KAE5B,IAAIgF,EAAoB5B,GAEpBtrG,EAAO7Z,IAAI,UAAY6Z,EAAO7Z,IAAI,WACpC+mH,EAAoB,CAACD,GAEjBjtG,EAAO7Z,IAAI,aACb+mH,EAAkBl1H,KAAKszH,GAAmBA,GAAmB1sH,QAAQquH,GAAqB,IAE1FC,EAAkBl1H,KAAKszH,GAAmBA,GAAmB1sH,QAAQquH,GAAqB,KAElD,cAAjCtvB,EAAWx3F,IAAI,gBACxB+mH,EAAoB,CAACD,IAGvB,MAAME,EAAmB,GACnBC,EAAU,GAsBhB,OApBAjpH,EAAOnV,SAAQ,CAACq+H,EAAIjgF,KAClBigF,EAAGr+H,SAAQ,CAACu6C,EAAOhb,MAC8B,IAA3C2+F,EAAkBtuH,QAAQwuC,KAExBA,IAAe6/E,EACjBE,EAAiBn1H,MAAKwF,EAAAA,GAAAA,IAAKuvH,GAAuBxjF,EAAOqQ,EAAYrrB,EAAO6e,IAE5EggF,EAAQp1H,MAAKwF,EAAAA,GAAAA,IAAKuvH,GAAuBxjF,EAAOqQ,EAAYrrB,EAAO6e,IAEvE,GACA,UAGEj1C,EAAAA,GAAAA,IAAIg1H,SAEJrF,EAAAA,GAAAA,IAAIz4C,GAAAA,YAEJt2E,EAAAA,GAAAA,IAAM,WACNZ,EAAAA,GAAAA,IAAIi1H,GAEH,IACT,CAEO,SAAUzvK,GAAQkyH,GAAA,IAAC,QAAE7pE,GAAS6pE,EAAA,mBACnC,MAAM,MAAEtmC,EAAK,MAAEhb,EAAK,WAAE6e,GAAepnC,EAC/B4zC,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,WAC1BJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiB,CACzB9gD,QACA6e,aACA7D,MAAOA,EAAM3X,OAAO,WAGtB,IAAI07F,EAAI/+F,EAER,GAAU,OAAN++F,EAAY,CACd,IAAInpH,EAIFA,EADmC,qBAFZ8jH,EAAAA,GAAAA,IAAOC,EAAAA,MAEjB/hH,IAAI,oBACF8hH,EAAAA,GAAAA,IAAOC,EAAAA,WAEPD,EAAAA,GAAAA,IAAOC,EAAAA,KAGxBoF,EAAInpH,EAAOgC,IAAIinC,GAAYlyB,KAAO,CACpC,OAEM1d,EAAAA,GAAAA,IAAKuvH,GAAuBxjF,EAAOqQ,EAAY0zE,EAAGlgF,EAC1D,CAzBqC,EAyBpC,CAEM,SAAU3sF,WACTqnK,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAUk+C,KACf,UACQzF,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAgC,IAC1C,MAAM9lC,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,KACrBtuE,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,KAE1BnwH,QAAeyF,EAAAA,GAAAA,IAAK5K,GAAgB22C,EAAOqQ,GAE7C7hD,UACI+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6Bt3E,EAAOwxC,EAAMpjC,IAAI,wBAGpD2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAgC,GAI5C,CAHE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUp4C,GAAgB4wH,GAAA,IAAG9pE,SAAS,YAAE8mH,IAAeh9C,EAAA,mBAC5D,MAAM09C,QAAmBvF,EAAAA,GAAAA,IAAOC,EAAAA,KACjB,CAAC,aAAc,cAAe,aAAc,QAAQhqH,MAAKuvH,GAASX,EAAY3mH,IAAIsnH,KAAWD,EAAWrnH,IAAIsnH,aAGnHjwH,EAAAA,GAAAA,IAAK+vH,IAEf,CAP8D,EAO7D,CAEM,SAAUzuK,GAAmBixH,GAAA,IAAG/pE,SAAS,IAAE9W,IAAO6gF,EAAA,oBAU1B,IATd,CACb,gBACA,OACA,4BACA,oBACA,+BACA,sBAGSnxE,QAAQ1P,WACXsO,EAAAA,GAAAA,IAAK+vH,IAEf,CAbyD,EAaxD,CAEM,SAAU79H,KACf,IACE,IAAI0mD,EACJ,MAAM/Z,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB3+E,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,KACrBrzH,QAAeozH,EAAAA,GAAAA,IAAOC,EAAAA,KAE5B,IAAK/wG,EAAAA,KAAAA,OAAYoyB,EAAMpjC,IAAI,YAAaunH,EAAAA,GAAAA,IAAYnkF,GAAQ,OACpDxwC,EAAAA,GAAAA,IAAM,KAEZ,MAAM3J,EAAWm8H,GAAiBhiF,EAAOlN,EAAM,OACzCsxF,QAAoBnwH,EAAAA,GAAAA,IAAKwoH,GAAgB4H,GAAAA,GAAc,KAAM,CAAE7G,MAAO,IACtEiE,EAAYjxG,MAAS+zD,IAAI,EAAG,SAAS15C,SAG3CgiB,SAFyB54C,EAAAA,GAAAA,IAAK5O,GAAY++H,EAAY7H,KAAM12H,EAAU,YAAa47H,IAElE50E,GACnB,CAEA,MAAMy3E,EAAkBC,KAAKC,UAAUxkF,EAAMnpC,QACvCrI,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqB,CAAEurD,MAAK7M,MAAOskF,EAAiBh5H,iBAExEizH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+Bt3E,GAK3C,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6B/3E,GACzC,CACF,CAEO,SAAU3H,GAAkBqgF,GAAA,IAAGhqE,SAAS,WAAEonC,EAAU,MAAE7e,EAAK,MAAEgb,IAASymC,EAAA,mBAC3E,UACQ83C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiB,CACzB9gD,QACA6e,aACA7D,MAAOA,EAAMlkB,IAAI,wBAAwB,MAG3C,MAAM,YAAEyxD,SAAsBt5E,EAAAA,GAAAA,IAAK3S,GAAAA,GAAwB,CAAE0+C,MAAOukF,KAAKC,UAAUxkF,EAAMnpC,gBAEnF0nH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiB,CACzB9gD,QACA6e,aACA7D,MAAOA,EAAM3W,MAAM,CACjBo7F,cAAel3C,EACfm3C,sBAAsB,aAIpBnG,EAAAA,GAAAA,IAAIz4C,GAAAA,KAgBZ,CAfE,MAAO/3E,GACP,MAAM+kC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WAEpBJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiB,CACzB9gD,QACA6e,aACA7D,MAAOA,EAAM3W,MAAM,CACjBq7F,sBAAsB,EACtBD,cAAe3xF,EAAKl2B,IAAI,4BAItB2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,EAAgC/3E,UACpCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CApC6E,EAoC5E,CAEM,SAAU42H,WACT5E,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2B//E,GAC7C,CAEO,SAAU6+H,WACT7E,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BjxH,GAC/C,CAEO,SAAUgwK,WACT9E,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0B9/E,GAC5C,CAEO,SAAU8+H,WACT/E,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+B7/E,GACjD,CAEO,SAAU8+H,WACThF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoCg9C,GACtD,CAEO,SAAUkC,WACTjF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuB3wH,GACzC,CAEO,SAAU8vK,WACTlF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuB7wH,GACzC,CAEO,SAAUiwK,WACTnF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmBl7H,GACrC,CAEO,SAAUu6K,WACTpF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2BtxH,GAC7C,CAEO,SAAU4wK,WACTrF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkC29C,GACpD,CAEO,SAAU4B,WACTtF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6B5uH,GAC/C,CAEO,SAAUouK,WACTvF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyBk+C,GAC3C,CAEO,SAAUuB,WACTxF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuB1xH,GACzC,CAEO,SAAUoxK,WACTzF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0BnwH,GAC5C,CAEO,SAAU8vK,WACTC,EAAAA,GAAAA,IAAS,IAAM5/C,GAAAA,GAA6BvwH,GACpD,CAEO,SAAUowK,WACT5F,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA8B3/E,GAChD,CAEO,SAAUy/H,WACT7F,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiC1/E,GACnD,CAEe,SAAUm7H,WACjB3yH,EAAAA,GAAAA,IAAI,CACR+1H,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAE,KACAC,KACAF,KACAG,KACAC,KACAE,KACAC,MAEJ,CCzvBA,SAAUC,GAAmB1wC,GAC3B,MAAM2wC,QAAepH,EAAAA,GAAAA,IAAOC,EAAAA,KACtBhoB,EAAcxhB,EAAYv4E,IAAI,eAAe5F,EAAAA,EAAAA,QAAO,CAAC,IAE3D,MAAO,CACLlT,KAAM6yG,EAAY/5F,IAAI,QACtBi6F,MAAOF,EAAY/5F,IAAI,SACvBmpH,KAAMpvB,EAAY/5F,IAAI,QACtBpb,SAAUm1G,EAAY/5F,IAAI,YAC1Bg6F,UAAWD,EAAY/5F,IAAI,aAC3B0U,WAAYqlF,EAAY/5F,IAAI,cAC5BopH,eAAgBrvB,EAAY/5F,IAAI,iBAChCqpH,SAAUtvB,EAAY/5F,IAAI,YAC1BspH,iBAAkBvvB,EAAY/5F,IAAI,kBAClCupH,qBAAsBxvB,EAAY/5F,IAAI,qBACtCu4C,SAAUwhD,EAAY/5F,IAAI,WAC1BrV,MAAOovG,EAAY/5F,IAAI,SACvBwpH,OAAQzvB,EAAY/5F,IAAI,UACxBypH,WAAY1vB,EAAY/5F,IAAI,aAC5B0pH,WAAY3vB,EAAY/5F,IAAI,aAC5B2pH,SAAU5vB,EAAY/5F,IAAI,WAC1B4pH,YAAa7vB,EAAY/5F,IAAI,cAC7B6pH,iBAAkB9vB,EAAY/5F,IAAI,mBAClC8pH,cAAe/vB,EAAY/5F,IAAI,gBAC/BkpH,SAEJ,CAGO,SAAU9+H,GAAkBmuF,GACjC,MAAM7pF,QAAeozH,EAAAA,GAAAA,IAAOC,EAAAA,KACtBgI,QAAyBd,GAAmB1wC,GAC5ChkF,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAE1Bt9H,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,KAC1Bt9H,EAAKulI,QAAUzxC,EAAYv4E,IAAI,UAC/Bvb,EAAKwlI,QAAU1xC,EAAYv4E,IAAI,UAC/Bvb,EAAKylI,QAAU3xC,EAAYv4E,IAAI,UAC/Bvb,EAAK0lI,QAAU5xC,EAAYv4E,IAAI,UAC/Bvb,EAAK2lI,QAAU7xC,EAAYv4E,IAAI,UAC/Bvb,EAAK4lI,QAAU9xC,EAAYv4E,IAAI,UAC/Bvb,EAAKksF,YAAc4H,EAAYv4E,IAAI,gBAAkB,GACrDvb,EAAK6lI,MAAQ/xC,EAAYv4E,IAAI,SAC7Bvb,EAAKgkC,MAAQ8vD,EAAYv4E,IAAI,SAC7Bvb,EAAKiK,OAAS6pF,EAAYv4E,IAAI,WAAatR,EAC3CjK,EAAK8lI,aAAeR,EACpBtlI,EAAKysD,YAAc38C,EACnB9P,EAAKQ,GAAKszF,EAAYv4E,IAAI,MAE1B,MAAMpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBD,GAIjD,aAFMk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA+B9uE,EAAAA,EAAAA,QAAOxI,KAEzCA,CACT,CAEO,SAAU44H,GAAe1hI,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBAC1C,IACE,MAAMotC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,IAAIxpC,EAAc14E,EAClB,MAAM5a,EAAKszF,EAAYv4E,IAAI,MACrB+lC,QAAsB+7E,EAAAA,GAAAA,IAAOC,EAAAA,KAEnC,IAgBInwH,EACAnN,EAjBAgkC,EAAQ8vD,EAAYv4E,IAAI,SAE5B,GAAI+lC,EAAe,CACjB,MAAMp9C,EAAW,CACf,CACEI,IAAK,OACLC,MAAO+8C,KAIL,IAAEkK,SAAc54C,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBiE,GAC3C8/B,EAAQwnB,CACV,CAEAsoC,EAAcA,EAAY3jF,OAAO,SAAS87B,GAAKjI,GAASiI,IAIxD,IAAI+5F,EAAiBv0F,EAAKl2B,IAAI,WAE9B,GAAI/a,EAAI,CACN,MAAMyJ,QAAeozH,EAAAA,GAAAA,IAAOC,EAAAA,KACtBgI,QAAyBd,GAAmB1wC,GAClDkyC,EAAiBv0F,EAAKl2B,IAAI,WAE1Bvb,EAAO,CACLulI,QAASzxC,EAAYv4E,IAAI,UACzBiqH,QAAS1xC,EAAYv4E,IAAI,UACzBkqH,QAAS3xC,EAAYv4E,IAAI,UACzBmqH,QAAS5xC,EAAYv4E,IAAI,UACzBoqH,QAAS7xC,EAAYv4E,IAAI,UACzBqqH,QAAS9xC,EAAYv4E,IAAI,UACzB2wE,YAAa4H,EAAYv4E,IAAI,gBAAkB,GAC/CsqH,MAAO/xC,EAAYv4E,IAAI,SACvBkxC,YAAaqnC,EAAYv4E,IAAI,cAC7BtR,OAAQ6pF,EAAYv4E,IAAI,WAAatR,EACrC67H,aAAcR,EACdthG,MAAO8vD,EAAYv4E,IAAI,UAGzBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBO,EAAIR,EACjD,MACEmN,QAAgBxH,GAAkBmuF,SAG9BopC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+Bt3E,UACnC+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM,MAAMn+C,EAAOkO,YAAY2qH,MAKvE,CAJE,MAAOt5H,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6B/3E,UACjCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CA3D4C,EA2D3C,CAEM,SAAU3V,KACf,IACE,MACMrF,SADoB68H,EAAAA,GAAAA,IAAOC,EAAAA,MACV/hH,IAAI,YAErB3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBO,SAE5B08H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiCjkF,UACrC08H,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,KAKZ,CAJE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B/3E,UACnCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAEO,SAAUznB,GAAuB4wF,GAAA,IAAGvpE,QAAS04E,GAAanP,EAAA,mBAC/D,MAAMnkF,EAAKszF,EAAYv4E,IAAI,MACrB+0E,QAAmB+sC,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B2I,EAA+B31C,EAClC/8E,QAAO+6B,GAAKA,EAAE/yB,IAAI,UAChB0L,QAAO,CAACiJ,EAAGib,IAAMA,EAAElqB,KAAI09B,GAASA,EAAMpjC,IAAI,2BAA4B,IACpEuU,SAAStvB,MAAM,IAAIsvB,UAAS,KAC7B8kF,EAAqBtkB,EAAW/8E,QAAO+6B,GAAKA,EAAE/yB,IAAI,kBAAkBuU,SAAStvB,KAAKsa,OAAOmrH,GAE3FrxB,EAAmBlxF,gBACfw5G,EAAAA,GAAAA,IAAIz4C,GAAAA,aAEJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,WACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8BmwB,UAClCsoB,EAAAA,GAAAA,IAAIz4C,GAAAA,MAEd,CAhBiE,EAgBhE,CAEM,SAAU3+E,GAAkB8+E,GAAA,IAAGxpE,QAAS04E,GAAalP,EAAA,mBAC1D,UACQs4C,EAAAA,GAAAA,IAAIz4C,GAAAA,MACV,MAAMh8E,QAAiB40H,EAAAA,GAAAA,IAAOC,EAAAA,KACxB50H,QAAe20H,EAAAA,GAAAA,IAAOC,EAAAA,KAEtB98H,EAAKszF,EAAYv4E,IAAI,MAErBvb,EAAO,CACX+zD,UAAWtrD,EAAW0mB,IAAO1mB,GAAU+gC,SAAW,KAClDwqB,QAAStrD,EAASymB,IAAOzmB,GAAQ8gC,SAAW,MAGxCr8B,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAwBO,EAAIR,GAEtD,IAAIimB,GAAUtQ,EAAAA,EAAAA,QAAOxI,GACrB,MAAM45B,EAAW9gB,EAAQ1K,IAAIrG,EAAAA,GAAAA,UACvB20B,EAAiB5jB,EAAQ1K,IAAIrG,EAAAA,GAAAA,kBAC7BwF,EAAWuL,EAAQ1K,IAAIrG,EAAAA,GAAAA,UAE7B+Q,EAAUA,EAAQwrC,UAAU,CAACv8C,EAAAA,GAAAA,SAAuBA,EAAAA,GAAAA,iBAA+BA,EAAAA,GAAAA,WACnF+Q,EAAUA,EAAQgB,QAChB,CAACC,EAAK7R,EAAQ/Q,IACZ4iB,EAAIpM,OAAOzF,EAAO4L,KAAI1c,IAAS,CAC7BgP,OAAQhP,EACRoT,MAAOrT,SAGXqR,EAAAA,EAAAA,QAAO,KAGT,MAAMm4F,QAA6BuvB,EAAAA,GAAAA,IAAOC,EAAAA,KAgB1C,SAfMJ,EAAAA,GAAAA,IAAInvB,GAAAA,GAA2BD,UAC/BovB,EAAAA,GAAAA,IAAI/hH,GAAAA,YAEJ+hH,EAAAA,GAAAA,IAAInvB,GAAAA,GAAwB,CAChCp2F,MAAOzC,EAAAA,GAAAA,SACPG,OAAQ0xB,KAGN8C,UACIqzF,EAAAA,GAAAA,IAAInvB,GAAAA,GAAwB,CAChCp2F,MAAOzC,EAAAA,GAAAA,iBACPG,OAAQw0B,MAIRnvB,EAAU,CACZ,MAAMwrH,EAAexrH,EAASy9B,SAE9B,IAAK,IAAIjV,EAAI,EAAGA,EAAIgjG,EAAa51G,KAAM4S,GAAK,EAAG,CAC7C,MAAMijG,EAAcD,EAAa3qH,IAAI2nB,SAE/Bg6F,EAAAA,GAAAA,IAAInvB,GAAAA,GAAgC,CACxCp2F,MAAOwuH,EACP5hI,MAAOmW,EAASa,IAAI4qH,KAExB,CACF,OAEMjJ,EAAAA,GAAAA,IAAI2E,GAAAA,GAAuB57G,UAC3Bi3G,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgC/3E,UACpCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAnE4D,EAmE3D,CAEM,SAAU4qH,KACf,IACE,MAAMt2H,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAEhC,GAAIxtH,EAAY,CACd,MAAMmJ,QAAsBokH,EAAAA,GAAAA,IAAOC,EAAAA,IAAoCxtH,GAEvE,IAAKmJ,EAAcyK,UAAW,CAC5B,MAAMi7B,GAAQhpC,EAAAA,EAAAA,QAAO,CACnBlT,KAAMywD,EAAAA,GAAAA,KACNmC,WAAY1B,EAAAA,GAAAA,oBACZ49B,UAAW,eACXvU,WAAY,0BACZzoB,YAAa,iBACbnf,WAAY,OACZ/yB,cAAepJ,EAAcojB,QAAQ9gB,IAAI,MACzC24E,yBAA0Bj7E,EAAckgC,MAAM,GAAGl4B,KAAI8yB,GAAKA,EAAEx4B,IAAI,UAG5DpO,QAAeyF,EAAAA,GAAAA,IAAK5K,GAAgB22C,SAEpCu+E,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2Ct3E,EAAOk4F,uBAC9D,CACF,YACQl3F,EAAAA,GAAAA,IAAM,WACN+uH,EAAAA,GAAAA,IAAIz4C,GAAAA,KAMd,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyC/3E,UAC7CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAEO,SAAUvV,KACf,IACE,MAAM6tF,QAAoBupC,EAAAA,GAAAA,IAAOC,EAAAA,KAC3BnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgC6zF,EAAYv4E,IAAI,aACpE2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0Ct3E,GAKtD,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwC/3E,UAC5CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAEO,SAAU9lB,KACf,MAAMo+F,QAAoBupC,EAAAA,GAAAA,IAAOC,EAAAA,KAE7BxpC,UACIopC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2BqP,IAEzC,CAEO,SAAUt9G,GAAcquG,GAAA,IAAGzpE,QAAS04E,GAAajP,EAAA,mBACtD,MAAMrkF,EAAKszF,EAAYv4E,IAAI,MACrBzL,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAE5BxtH,IAAegG,EAAAA,GAAAA,WACXonH,EAAAA,GAAAA,IAAIz6B,EAAAA,GAAmCjiG,IACpCsP,IAAegG,EAAAA,GAAAA,eAClBonH,EAAAA,GAAAA,IAAIz6B,EAAAA,GAAuCjiG,IACxCsP,IAAegG,EAAAA,GAAAA,yBAClBonH,EAAAA,GAAAA,IAAIz6B,EAAAA,GAAgDjiG,UAEpD08H,EAAAA,GAAAA,IAAIz6B,EAAAA,GAAuCjiG,UAG7C08H,EAAAA,GAAAA,IAAIz6B,EAAAA,KACZ,CAfwD,EAevD,CAEM,SAAUzqH,GAAmBozG,SAC5B8xC,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA+B,UACnC7xE,EAAAA,GAAAA,IAAK9M,GAAoBslF,SACzB8xC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B2G,EAAOhwE,iBAEViiH,EAAAA,GAAAA,IAAOC,EAAAA,cAGrCJ,EAAAA,GAAAA,IAAImJ,GAAAA,MAEd,CAEO,SAAUC,GAAkBxhD,GAAA,IAAG1pE,QAAS04E,GAAahP,EAAA,mBAC1D,IACE,MAAM33E,QAAeyF,EAAAA,GAAAA,IAAKjN,GAAmBmuF,SAEvCopC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkCt3E,UACtC+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,KAKZ,CAJE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgC/3E,UACpCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAX4D,EAW3D,CAEM,SAAU+qH,GAAmBxhD,GAAA,IAAG3pE,QAASorH,GAAiBzhD,EAAA,mBAC/D,IACE,IAAI53E,EACAnN,EAEJ,GAAIwmI,EACFxmI,EAAOkqD,KAAmBs8E,EAAgBhxH,QAE1CrI,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2BumI,EAAgBjrH,IAAI,MAAOvb,OACrE,CACL,MAAM8P,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAGhCt9H,EAAO,CACLysD,YAAa38C,EACb3P,eAJqBk9H,EAAAA,GAAAA,IAAOC,EAAAA,MAO9BnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2BD,EACjD,OAEMk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmCt3E,IAExCq5H,UACGtJ,EAAAA,GAAAA,IAAI1hH,EAAAA,MAMd,CAJE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiC/3E,UACrCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CA/BiE,EA+BhE,CAEM,SAAU/U,GAAqBu+E,GAAA,IAAG5pE,QAASorH,GAAiBxhD,EAAA,mBACjE,IACE,MAAMxkF,EAAKgmI,EAAgBjrH,IAAI,YAEzB3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2BO,SAEhC08H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqCjkF,UACzC08H,EAAAA,GAAAA,IAAI1hH,EAAAA,KAKZ,CAJE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmC/3E,UACvCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAbmE,EAalE,CAEM,SAAUirH,WACT/H,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA8BshD,GAChD,CAEO,SAAUW,WACThI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgC5+E,GAClD,CAEO,SAAU8gI,WACTjI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiC1wF,GACnD,CAEO,SAAU6yI,WACTlI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0C2hD,GAC5D,CAEO,SAAUS,WACTnI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyCx+E,GAC3D,CAEO,SAAU6gI,WACTpI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBjuG,GAC1C,CAEO,SAAUuwJ,WACTrI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2B/uF,GAC7C,CAEO,SAAUsxI,WACTtI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4BzsG,GAC9C,CAEO,SAAUivJ,WACTvI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiC6hD,GACnD,CAEO,SAAUY,WACTxI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkC8hD,GACpD,CAEO,SAAUY,WACTzI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoCh+E,GACtD,CAEe,SAAUy5H,WACjB3yH,EAAAA,GAAAA,IAAI,CACRk5H,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,C,gBCtbO,MAcMC,GAAkBA,KAC7B,GAAIC,GAAAA,EAAAA,YACGA,GAAAA,EAAAA,aACH,IACEA,GAAAA,EAAAA,SAGF,CAFE,MAAOC,GACPv0H,QAAQw0H,KAAK,4BACf,CAEJ,EAGWC,GAAiBA,KACxBH,GAAAA,EAAAA,WACEA,GAAAA,EAAAA,cACFA,GAAAA,EAAAA,MAEJ,EAGWI,GAAeA,IAC1B51H,OAAO61H,YAAe71H,OAAOG,aAAeH,OAAO49E,OAAO19E,OAASF,OAAOK,cAAgBL,OAAO49E,OAAOx9E,OAO7F01H,GAASA,KACpB91H,OAAOkD,SAAS4yH,QAAQ,ECZpBjH,GAAqB,CAAC,KAAM,KAAM,KAAM,MAExCkH,GAAqB,CACzBllC,cAAe,YAGXmlC,GAAqB,CACzB,CAAC/xH,EAAAA,GAAAA,oBAAqCQ,EAAAA,GAAAA,OAGjC,SAAUwxH,KACf,MAAMl2C,QAAqByrC,EAAAA,GAAAA,IAAOC,EAAAA,KAQlC,MAAO,CACLvpE,gBARqBspE,EAAAA,GAAAA,IAAOC,EAAAA,KAS5BtpE,cARmBqpE,EAAAA,GAAAA,IAAOC,EAAAA,KAS1B5zF,iBARsB2zF,EAAAA,GAAAA,IAAOC,EAAAA,KAS7BzwE,gBARqBwwE,EAAAA,GAAAA,IAAOC,EAAAA,KAS5BvwE,oBARyBswE,EAAAA,GAAAA,IAAOC,EAAAA,KAShClwE,cARmBiwE,EAAAA,GAAAA,IAAOC,EAAAA,KAS1BjpE,cAAeu9B,EAEnB,CAEO,SAAUuwC,GAAsBxjF,EAAOhb,EAAO6e,EAAYulF,GAC/D,IACMA,UACI7K,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB,CAChC9gD,QACA6e,iBAIJ,MAAMr1C,QAAeyF,EAAAA,GAAAA,IAAK5K,GAAgB22C,GAE1C,IAAIiyC,EAEJ,GAAIzjF,GAAUA,EAAOT,MAAO,CAC1B,MAAMs7H,IAAoBvnF,EAAAA,GAAAA,IAA0B9B,GAE9CvjC,EAAU,CACdmiE,QAASpwE,EAAOT,OAGlB,GAAIs7H,EAAkB,CACpB5sH,EAAQ7D,KAAO,UACf,MAAM0wH,QAA4B5K,EAAAA,GAAAA,IAAOC,EAAAA,IAAyBxkH,EAAAA,GAAAA,+BAC5D24B,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAEtB2K,IAA6D,IAAtC7sH,EAAQmiE,QAAQvpE,QAAQ,WACjDoH,EAAQ8sH,WAAa,wCACrB9sH,EAAQ1G,KAAO+8B,EAAKl2B,IAAI,oCAG1BH,EAAQmiE,QAAU9rC,EAAKl2B,IAAIH,EAAQmiE,QACrC,CAEAqT,GAAaj7E,EAAAA,EAAAA,QAAOyF,EACtB,OAEM8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqB,CAC7B9gD,QACA6e,aACAv+C,KAAMkJ,EAASA,EAAOwxC,EAAMpjC,IAAI,eAAiB,KACjDq1E,eAYJ,CAVE,MAAOlkF,GACDA,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,mBAC/BqlB,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,WAG3BwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqB,CAC7B9gD,QACA6e,aACAv+C,KAAM,OAEV,CACF,CAEO,SAAUkkI,KAA0B,IAACJ,IAAoB5hI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAAO,mBACrE,MAAMw7C,QAA0B07E,EAAAA,GAAAA,IAAOC,EAAAA,KAEvC,GAAI37E,EAAkBpmC,IAAI,MAAO,CAC/B,IAAI8mH,QAA0BhF,EAAAA,GAAAA,IAAOC,EAAAA,KACrC,MAAMloG,QAAeioG,EAAAA,GAAAA,IAAOC,EAAAA,KAE5B,IAAIgF,EAAoB5B,GAExB,IAAItrG,EAAO7Z,IAAI,UAAY6Z,EAAO7Z,IAAI,aACpC+mH,EAAoB,CAACD,GAEjBjtG,EAAO7Z,IAAI,aACb+mH,EAAkBl1H,KAAKszH,GAAmBA,GAAmB1sH,QAAQquH,GAAqB,IAE1FC,EAAkBl1H,KAAKszH,GAAmBA,GAAmB1sH,QAAQquH,GAAqB,IAGxFC,EAAkB7zH,OAAM+zC,GAAcb,EAAkB1jC,MAAM,CAAC,SAAUukC,IAAa7sC,EAAAA,EAAAA,QAAO,KAAK+N,aAAY,CAChH4+G,EAAoB5B,GACjBntH,QAAOivC,IAAyD,IAA3C8/E,EAAkBtuH,QAAQwuC,KAC/CjvC,QAAOivC,IAAeb,EAAkB1jC,MAAM,CAAC,SAAUukC,IAAa7sC,EAAAA,EAAAA,QAAO,KAAK+N,YAErF,MAAO0kH,GAAiB9F,EACxBD,EAAoB+F,CACtB,CAGF,MAAM7F,EAAmB,GACnBC,EAAU,IAChB7sH,EAAAA,EAAAA,QAAOgsC,EAAkBpmC,IAAI,WAC1BnX,SAAQ,CAACmV,EAAQipC,KAChBjpC,EAAOnV,SAAQ,CAACu6C,EAAOhb,KACrB,IAA+C,IAA3C2+F,EAAkBtuH,QAAQwuC,GAAoB,CAChD,MAAM6lF,GAASz1H,EAAAA,GAAAA,IAAKuvH,GAAuBxjF,EAAOhb,EAAO6e,EAAYulF,GAGjEvlF,IAAe6/E,EACjBE,EAAiBn1H,KAAKi7H,GAEtB7F,EAAQp1H,KAAKi7H,EAEjB,IACA,UAGA96H,EAAAA,GAAAA,IAAIg1H,SACJp0H,EAAAA,GAAAA,IAAM,WACNZ,EAAAA,GAAAA,IAAIi1H,EACZ,CACF,CAlDuE,EAkDtE,CAEM,SAAUpuJ,GAAciwB,GAAA,IAAG+W,QAAS5a,GAAI6D,EAAA,mBAC7C,MACMu3C,SADmByhF,EAAAA,GAAAA,IAAOC,EAAAA,MACHt6G,MAAKsrB,GAAKA,EAAE/yB,IAAI,QAAU/a,IAEvD,GAAIo7C,QACIshF,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6B7oC,UACjChpC,EAAAA,GAAAA,IAAKu1H,SAEX,IACE,MAAMh7H,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0BO,SAE9CoS,EAAAA,GAAAA,IAAKwqH,GAAiBjwH,EAAO/M,YAOrC,CANE,MAAOsM,GAGa,0BAFM2wH,EAAAA,GAAAA,IAAOC,EAAAA,cAGzBJ,EAAAA,GAAAA,IAAImJ,GAAAA,GAA2B,mBAEzC,CAEJ,CApB+C,EAoB9C,CAEM,SAAUiC,GAA6Bl9C,GAC5C,IACMA,GAAUA,EAAOhwE,SAAWgwE,EAAOhwE,QAAQmtH,kBACtCp6H,EAAAA,GAAAA,IAAM,aAGkBkvH,EAAAA,GAAAA,IAAOC,EAAAA,cAGhCJ,EAAAA,GAAAA,IAAIz4C,GAAAA,OAGZ,MAAM9lC,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,KACrBvnH,QAAqBsnH,EAAAA,GAAAA,IAAOC,EAAAA,KAC5Bn/J,QAAek/J,EAAAA,GAAAA,IAAOC,EAAAA,KACtBsF,EAAajkF,EAAM3W,MAAM,CAC7BjyB,eACA53C,WAKF,SAFyBk/J,EAAAA,GAAAA,IAAOC,EAAAA,KAEhB,CACd,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK5K,GAAgB46H,GAEtCz1H,UACI+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4Ct3E,IAE1D,CAKF,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0C/3E,UAC9CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUp3B,KACf,MAAMygH,QAAiBsnC,EAAAA,GAAAA,IAAOC,EAAAA,WACxBJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6BsR,UACjCmnC,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAGO,SAAU+jD,GAAcp9C,GAC7B,IACE,IAMIj+E,EACAnN,EAPA47C,EAAYwvC,EAAOhwE,QAAUgwE,EAAOhwE,QAAQwgC,UAAY,KAS5D,GAPKA,IACHA,QAAkByhF,EAAAA,GAAAA,IAAOC,EAAAA,MAMvB1hF,EAAUrgC,IAAI,MAAO,CACvB,MAAMm2E,EAA0B91C,EAAUrgC,IAAI,2BACxCigH,QAA2B5oH,EAAAA,GAAAA,IAAKytH,GAAa3uC,GAEnD91C,EAAYA,EAAUzrC,OACpB,UACAmL,IAAWA,IAAU3F,EAAAA,EAAAA,QAAO,CAAC,IAAIxF,OAAO,sBAAsBq7C,GAAOgwE,GAAsBhwE,GAAO,SAGpG,MAAMi9E,EAAgB7sF,EAAUzrC,OAC9B,UACAoJ,GAAUA,EAAO0N,QACf,CAACC,EAAK7R,EAAQ/Q,IAAQ4iB,EAAIuT,IAAIn2B,EAAK+Q,EAAO4L,KAAI09B,GAASA,EAAM8S,UAAU,CAAC,OAAQ,qBAChF97C,EAAAA,EAAAA,QAAO,CAAC,MAEVH,OAEFxV,EAAO,CACLulI,QAASkD,EAAczzB,OACvBwwB,QAASiD,EAAcxzB,OACvBwwB,QAASgD,EAAcvzB,OACvBwwB,QAAS+C,EAActzB,OACvBwwB,QAAS8C,EAAcrzB,OACvBwwB,QAAS6C,EAAcpzB,OACvB97F,OAAQ2wC,KAAmBu+E,EAAclvH,QACzCmpC,QAASwH,KAAmBu+E,EAAc/lF,SAC1CpnC,OAAQ4uC,KAAmBu+E,EAAcntH,SAG3CnO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,EAAqBwoI,EAAcjoI,GAAIR,EAC7D,MACEA,EAAO,CACLulI,QAAS3pF,EAAUrgC,IAAI,UACvBiqH,QAAS5pF,EAAUrgC,IAAI,UACvBkqH,QAAS7pF,EAAUrgC,IAAI,UACvBmqH,QAAS9pF,EAAUrgC,IAAI,UACvBoqH,QAAS/pF,EAAUrgC,IAAI,UACvBqqH,QAAShqF,EAAUrgC,IAAI,WAGzBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqBD,SAGrCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6Bt3E,KAElCi+E,EAAOhwE,SAAYgwE,EAAOhwE,SAAWuiB,QAAQytD,EAAOhwE,QAAQ1nD,qBACzDwpK,EAAAA,GAAAA,IAAIz4C,GAAAA,aAEJy4C,EAAAA,GAAAA,IAAImJ,GAAAA,GAA2B,kBAAkBl5H,EAAO3M,aACxD08H,EAAAA,GAAAA,IAAIz4C,GAAAA,aAGNy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoB7oC,UACxBshF,EAAAA,GAAAA,IAAI1hH,EAAAA,KAKZ,CAJE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2B/3E,UAC/BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAU7F,KACf,IACE,MAAM+0C,QAAkByhF,EAAAA,GAAAA,IAAOC,EAAAA,KACzB10C,QAAmBy0C,EAAAA,GAAAA,IAAOC,EAAAA,WAE1B1qH,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqB27C,EAAUrgC,IAAI,MAAOqtE,EAAWrtE,IAAI,aAE9D2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B7oC,EAAUrgC,IAAI,cACjD2hH,EAAAA,GAAAA,IAAIz6B,EAAAA,GAA6B,aACjCy6B,EAAAA,GAAAA,IAAI1hH,EAAAA,KAKZ,CAJE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6B/3E,UACjCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUg8H,GAAiBttH,GAGhC,SAFyBiiH,EAAAA,GAAAA,IAAOC,EAAAA,KAEhB,CACd,MAAM3+E,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,KACrB35F,QAAc05F,EAAAA,GAAAA,IAAOC,EAAAA,KACrBjoC,QAAkCgoC,EAAAA,GAAAA,IAAOC,EAAAA,WAEzCJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0C,CAClD9lC,QACAhb,QACA4kG,UAAWntH,IAAkC,IAAtBA,EAAQmtH,UAC/B1pF,QAASw2C,IAEb,CACF,CAEO,SAAU7+G,GAAcmuG,GAAA,IAAGvpE,QAASwgC,GAAW+oC,EAAA,mBACpD,MAAMnkF,EAAKo7C,EAAUrgC,IAAI,YAEnB2hH,EAAAA,GAAAA,IAAIz6B,EAAAA,GAA6BjiG,UAEjC08H,EAAAA,GAAAA,IAAIz6B,EAAAA,KACZ,CANsD,EAMrD,CAEM,SAAUhsH,GAAamuG,GAAA,IAAGxpE,QAAS5a,GAAIokF,EAAA,mBAC5C,MAAM+jD,QAA6BtL,EAAAA,GAAAA,IAAOC,EAAAA,KACpC37E,QAA0B07E,EAAAA,GAAAA,IAAOC,EAAAA,KACjChtC,QAAmB+sC,EAAAA,GAAAA,IAAOC,EAAAA,KAC1BsL,EAA0Bt4C,EAAWh9E,MAAKg7B,GAAKA,EAAE/yB,IAAI,QAAUotH,IAErE,IAAIE,EAGAroI,EACFqoI,EAAQroI,EAGCmhD,EAAkBpmC,IAAI,MAC/BstH,EAAQlnF,EAAkBpmC,IAAI,MAGrBqtH,EACTC,EAAQF,EAGEr4C,EAAW5sE,YACrBmlH,EAAQv4C,EAAWj0D,QAAQ9gB,IAAI,OAGjC,MAAMutH,QAAoBzL,EAAAA,GAAAA,IAAOC,EAAAA,KAEjC,GAAIuL,EAAO,CAGLC,IAFY,kBAAkBD,UAG1B3L,EAAAA,GAAAA,KAAIvqG,EAAAA,EAAAA,IAAQ,kBAAkBk2G,YAE9B3L,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuBokD,GAErC,KAA2B,mBAAhBC,UACH5L,EAAAA,GAAAA,IAAImJ,GAAAA,GAA2B,mBAEzC,CAtC8C,EAsC7C,CAEM,SAAU3vJ,GAAsBmuG,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,mBACjD,MAAM,MAAElhD,EAAK,WAAE6e,GAAepnC,EACxBujC,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,IAAyD35F,EAAO6e,GAEvF7D,KACEmC,EAAAA,GAAAA,IAA2BnC,SACvBu+E,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmDrpE,UAEvD8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkCrpE,IAGlD,CAXmD,EAWlD,CAEM,SAAU2tH,GAAoBjkD,GAAA,IAAG1pE,SAAS,MAAEuoB,EAAK,MAAEpJ,EAAK,WAAEioB,IAAcsiC,EAAA,mBAC7E,IACE,MAAMnmC,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,IAAyD35F,EAAO6e,GACrFwJ,EAAOzxB,EAAQA,EAAMhf,IAAI,OAAQ,IAAOojC,EAAM1gC,MAAM,CAAC,OAAQ,UAAY,GAEzEje,EAAO,CACX+zD,UAAWpV,EAAMpjC,IAAI,YACrBy4C,QAASrV,EAAMpjC,IAAI,UACnBmuB,WAAYiV,EAAMpjC,IAAI,aACtBsxC,UAAWlO,EAAMpjC,IAAI,YACrBwxC,cAAepO,EAAMpjC,IAAI,gBACzB6xC,QAASzO,EAAMpjC,IAAI,UACnBytH,SAAUzuG,EAAQA,EAAMhf,IAAI,WAAQlV,EACpC2lD,QAGI7+C,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8B0+C,EAAMpjC,IAAI,iBAAkBvb,SAE9Ek9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC,CAAE9gD,QAAOx2B,SAAQq1C,aAAYjoB,UAK7E,CAJE,MAAO7tB,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC,CAAE/3E,QAAOi3B,QAAO6e,aAAYjoB,iBAClE2iG,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAxB+E,EAwB9E,CAEM,SAAUu8H,GAAyBlkD,GAAA,IAAG3pE,SAAS,MAAEuoB,EAAK,MAAEpJ,EAAK,WAAEioB,EAAU,OAAE/jB,IAAUsmD,EAAA,mBAC1F,IACE,MAAMpmC,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,IAAyD35F,EAAO6e,GAE3F,IAAIjtB,EAGFA,EADEgF,EACKokB,EAAM1gC,MAAM,CAAC,OAAQ,WACzB+E,MAAK8X,GAAKA,EAAEvf,IAAI,QAAUgf,EAAMhf,IAAI,QACpCA,IAAI,QACJyH,MAAK0S,GAAKA,EAAEna,IAAI,QAAUkjB,IAEtBkgB,EAAM1gC,MAAM,CAAC,OAAQ,SACzB+E,MAAK0S,GAAKA,EAAEna,IAAI,QAAUkjB,IAG/B,MAAMz+B,EAAO,CACX+zD,UAAWpV,EAAMpjC,IAAI,YACrBy4C,QAASrV,EAAMpjC,IAAI,UACnBmuB,WAAYiV,EAAMpjC,IAAI,aACtBsxC,UAAWlO,EAAMpjC,IAAI,YACrBwxC,cAAepO,EAAMpjC,IAAI,gBACzB6xC,QAASzO,EAAMpjC,IAAI,UACnBytH,SAAUzuG,EAAQA,EAAMhf,IAAI,WAAQlV,GAGtC,GAAIkvB,EAAKha,IAAI,eAAiB,EAAG,CAC/B,MAAM1X,EAAU02B,EAAQA,EAAMhf,IAAI,WAAQlV,EACpC6iI,GAAavzH,EAAAA,EAAAA,QAAO,CACxBq2C,KAAM,EACN17B,KAAM,IACN88B,QAAS,QACTiH,cAAe,CACb9+B,KAAM,CACJw6B,WAAY,CAACx6B,EAAKha,IAAI,cACtB+tB,YAAa,CAAC/T,EAAKha,IAAI,OACvBwrB,SAAU,CACRkoB,iBAAiB,OAMnBD,QAAmBp8C,EAAAA,GAAAA,IAAKkH,GAAAA,IAAoBnE,EAAAA,EAAAA,QAAO3V,GAAOkpI,GAChE,IACI93C,EADAjkF,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8B0+C,EAAMpjC,IAAI,iBAAkByzC,QAG5D3oD,IAAlB8G,EAAOutB,QACTvtB,GAASwI,EAAAA,EAAAA,SAAQxI,EAAOutB,OAAO1X,MAAK8X,GAAKA,EAAEt6B,KAAOqD,KAAY,CAAE0xB,KAAM,KAAMA,MAC5E67D,EAAU77D,EAAKkF,IAAI,gBAAiBttB,IAEpCikF,EAAU77D,EAAKkF,IAAI,iBAAiB9kB,EAAAA,EAAAA,QAAOxI,EAAOooB,aAG9C2nG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyC,CAAE9gD,QAAO6e,aAAYjoB,QAAO62D,YACjF,CAKF,CAJE,MAAO1kF,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuC,CAAE/3E,QAAO6tB,QAAOkE,SAAQ+jB,aAAY7e,iBAC/Eu5F,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CA7D4F,EA6D3F,CAEM,SAAU2tH,GAAqCnkD,GAAA,IAAG5pE,SAAS,MAAEuoB,EAAK,WAAE6e,IAAcwiC,EAAA,mBACvF,IACE,IAAIrmC,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,IAAyD35F,EAAO6e,IAErFzB,EAAAA,GAAAA,IAAyBpC,KAC3BA,EAAQA,EAAMpa,MAAM,CAAC,OAAQ,oBAAqB,UAAWoa,EAAM1gC,MAAM,CAAC,OAAQ,cAGhF4iC,EAAAA,GAAAA,IAAyBlC,KAC3BA,EAAQA,EAAMpa,MAAM,CAAC,OAAQ,oBAAqB,UAAWoa,EAAM1gC,MAAM,CAAC,OAAQ,cAGhF+iC,EAAAA,GAAAA,IAAwBrC,KAC1BA,EAAQA,EAAMpa,MAAM,CAAC,OAAQ,mBAAoB,UAAWoa,EAAM1gC,MAAM,CAAC,OAAQ,aAGnF,MAAM9Q,QAAeyF,EAAAA,GAAAA,IAAK5K,GAAgB22C,SAEpCu+E,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqD,CAAE9gD,QAAOx2B,OAAQA,EAAOwxC,EAAMpjC,IAAI,eAAgBinC,eAKnH,CAJE,MAAO91C,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmD,CAAE9gD,QAAOj3B,QAAO81C,sBACvE06E,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAxByF,EAwBxF,CAEM,SAAU08H,KACf,IACE,MAAMt1C,QAAoBupC,EAAAA,GAAAA,IAAOC,EAAAA,KAC3Bt9H,QAAa4S,EAAAA,GAAAA,IAAKk1H,IAElB36H,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8B6zF,EAAYv4E,IAAI,MAAOvb,SAEzEk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyCt3E,GAKrD,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuC/3E,UAC3CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAU28H,KACf,IACE,MAAM53F,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB3+E,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,KACrBl6E,QAAmBi6E,EAAAA,GAAAA,IAAOC,EAAAA,KAC1Bj6E,QAAqBg6E,EAAAA,GAAAA,IAAOC,EAAAA,KAE5BxpC,QAAoBupC,EAAAA,GAAAA,IAAOC,EAAAA,KACjC,IAAIt9H,QAAa4S,EAAAA,GAAAA,IAAKk1H,IACtB,MAAM79H,QAAeozH,EAAAA,GAAAA,IAAOC,EAAAA,KAEtBgM,EAAW,CACf,CACEjuH,KAAM+nC,EAAW7nC,IAAI,QACrB9Y,KAAMgvC,EAAKl2B,IAAIquB,KAAW+U,EAAMpjC,IAAI,eAAgB,CAAC,GAAG,KAIxD8nC,GACFimF,EAASl8H,KAAK,CACZ5M,GAAI6iD,EAAa9nC,IAAI,MACrBF,KAAMgoC,EAAa9nC,IAAI,QACvB9Y,KAAMgvC,EAAKl2B,IAAIquB,KAAW+U,EAAMpjC,IAAI,gBAAiB,CAAC,GAAG,KAI7Dvb,EAAO,IAAKA,EAAMiK,SAAQq/H,YAE1B,MAAMn8H,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAwC6zF,EAAYv4E,IAAI,MAAOvb,SAEnFk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+Ct3E,GAK3D,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6C/3E,UACjDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAU68H,GAA6BtkD,GAAA,IAAG7pE,SAAS,MAAEmf,IAAS0qD,EAAA,mBACnE,IACE,MAAM6O,QAAoBupC,EAAAA,GAAAA,IAAOC,EAAAA,KAC3Bt9H,QAAa4S,EAAAA,GAAAA,IAAKk1H,IAExB9nI,EAAKgsD,KAAOzxB,EAAMhf,IAAI,OAAQ,IAE9B,MAAMpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8B6zF,EAAYv4E,IAAI,MAAOvb,SAEzEk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6C,CAAEt3E,SAAQotB,UAKnE,CAJE,MAAO7tB,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2C,CAAE/3E,QAAO6tB,iBACxD2iG,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAfqE,EAepE,CAEM,SAAU88H,GAAkCtkD,GAAA,IAAG9pE,SAAS,MAAEmf,EAAK,OAAEkE,IAAUymD,EAAA,mBAChF,IACE,MAAM3vD,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,IAA6C7+F,GAEvE,GAAIlJ,EAAKha,IAAI,eAAiB,EAAG,CAC/B,MAAMu4E,QAAoBupC,EAAAA,GAAAA,IAAOC,EAAAA,KAC3Bz5H,EAAU02B,EAAQA,EAAMhf,IAAI,WAAQlV,EACpCrG,QAAa4S,EAAAA,GAAAA,IAAKk1H,IAClBoB,GAAavzH,EAAAA,EAAAA,QAAO,CACxBq2C,KAAM,EACN17B,KAAM,IACN88B,QAAS,QACT47E,SAAUnlI,EACVwwD,cAAe,CACb9+B,KAAM,CACJw6B,WAAY,CAACx6B,EAAKha,IAAI,cACtB+tB,YAAa,CAAC7K,GACdsI,SAAU,CACRkoB,iBAAiB,OAMnBD,QAAmBp8C,EAAAA,GAAAA,IAAKkH,GAAAA,IAAoBnE,EAAAA,EAAAA,QAAO3V,GAAOkpI,GAChE,IACI93C,EADAjkF,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8B6zF,EAAYv4E,IAAI,MAAOyzC,QAGvD3oD,IAAlB8G,EAAOutB,SACTvtB,GAASwI,EAAAA,EAAAA,SAAQxI,EAAOutB,OAAO1X,MAAK8X,GAAKA,EAAEt6B,KAAOqD,KAAY,CAAE0xB,KAAM,KAAMA,MAC5E67D,EAAU77D,EAAKkF,IAAI,gBAAiBttB,UAGhC+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkD,CAAElqD,QAAO62D,YACvE,CAKF,CAJE,MAAO1kF,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgD,CAAE/3E,QAAO6tB,QAAOkE,kBACpEy+F,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAxCkF,EAwCjF,CAEM,SAAUxjC,KACf,UACQklJ,EAAAA,GAAAA,IAAI/hH,GAAAA,MACV,MAAM24E,QAAoBupC,EAAAA,GAAAA,IAAOC,EAAAA,KAC3BxtH,EAAagkF,EAAYv4E,IAAI,cAC7BurD,QAAqBu2D,EAAAA,GAAAA,IAAOC,EAAAA,KAE9BxtH,IAAegG,EAAAA,GAAAA,gBACXonH,EAAAA,GAAAA,IAAImJ,GAAAA,GAA2Bv/D,EAAe,wBAA0B,2BAExEo2D,EAAAA,GAAAA,IAAImJ,GAAAA,GAA2B,QAAQv2H,MAG/C,MAAM,QAAE1B,SAAkBq7H,EAAAA,GAAAA,IAAK,CAC7B/4F,UAAUg5F,EAAAA,GAAAA,IAAKvuH,GAAAA,IACf/M,SAASD,EAAAA,GAAAA,IAAM,OAGjB,IAAKC,EAAS,OACN8uH,EAAAA,GAAAA,IAAIyM,GAAAA,IAA4C,UAEhD/2H,EAAAA,GAAAA,IAAK9M,GAAoB6jI,GAAAA,GAAwC71C,IAEvE,MAAMn1C,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,KACrBl6E,QAAmBi6E,EAAAA,GAAAA,IAAOC,EAAAA,KAC1Bj6E,QAAqBg6E,EAAAA,GAAAA,IAAOC,EAAAA,KAE5BrvB,EAAS,CAAC25B,GAAmBxkF,EAAW7nC,IAAI,WAAa6nC,EAAW7nC,IAAI,UAE1E8nC,GACF4qD,EAAO7gG,KAAKw6H,GAAmBvkF,EAAa9nC,IAAI,WAAa8nC,EAAa9nC,IAAI,UAGhF,MAAMstB,EAAW8V,EAAMpjC,IAAI,aAAeu4E,EAAYv4E,IAAI,aAAe7E,EAAAA,GAAAA,mBAEnEwmH,EAAAA,GAAAA,IAAInvB,GAAAA,GAA6BllE,UACjCq0F,EAAAA,GAAAA,IAAInvB,GAAAA,GAAgCE,UAEpCr7F,EAAAA,GAAAA,IAAKrpD,GAAW09I,GAAAA,GAAwB,CAC5CtoD,QACAhsB,SAAS,EACT2b,EAAG,CACD8U,WAAYA,EAAW5tC,QAEzB6tC,aAAcA,EAAeA,EAAa7tC,OAAS,cAG/C0nH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAI/hH,GAAAA,YACJ+hH,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAwB0sH,GAAmB/3H,GAAc+3H,GAAmB/3H,GAAcwG,EAAAA,GAAAA,aAC9F4mH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAOF,CANE,MAAOzO,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CAAE,cACMwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAI/hH,GAAAA,KACZ,CACF,CAEO,SAAU/lC,WACT8nJ,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAUmlD,WACT1M,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU9/E,GAAWwgF,GAAA,IAAG/pE,QAASujC,GAAOwmC,EAAA,yBACvCvyE,EAAAA,GAAAA,IAAKyuH,GAAa1iF,EAC1B,CAF+C,EAE9C,CAEM,SAAU/5C,GAAgBwgF,GAAA,IAAGhqE,QAASujC,GAAOymC,EAAA,yBAC5CxyE,EAAAA,GAAAA,IAAK0uH,GAAkB3iF,EAC/B,CAFoD,EAEnD,CAEM,SAAUkrF,GAA2BxkD,GAAA,IAAC,QAAEjqE,GAASiqE,EAAA,mBACtD,MAAM7iC,QAAmB66E,EAAAA,GAAAA,IAAOC,EAAAA,KAChC,IAAI56E,QAAgB26E,EAAAA,GAAAA,IAAOC,EAAAA,KACvB/jH,QAAe8jH,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,MAAMwM,QAAmBzM,EAAAA,GAAAA,IAAOC,EAAAA,KAC1Bn9H,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBxqE,QAAauqE,EAAAA,GAAAA,IAAOC,EAAAA,KACpB94H,EAAWslI,EAAWn3G,QAAQ,YAAa,KAAKA,QAAQ,MAAO,KAAK9C,cAE1E6yB,EAAUA,EAAQnnC,IAAIinC,GACtBjpC,EAASA,EACNgC,IAAIinC,GACJvhC,KAAI09B,IACH,IAAIwyC,EAAWxyC,EAAM3X,OAAO,QAM5B,OAJI5rB,GAAWA,EAAQsmH,YACrBvwC,EAAWA,EAAS12D,IAAI,aAAa,IAGhC02D,CAAQ,IAGhBlqE,QAAO,CAACC,EAAKy3B,EAAOhb,KACnBzc,EAAI9Z,KAAK,CAAEu2B,QAAOgb,UAEXz3B,IACN,IACFqR,MAAK,CAAC8F,EAAG8+D,KACR,MAAMj6D,EAAI7E,EAAEsF,MACN++F,EAAIvlC,EAAEx5D,MAEZ,OAAI+e,EAAQzkC,MAAM,CAACilB,EAAG,MAAQwf,EAAQzkC,MAAM,CAACykH,EAAG,OACtC,EAGNhgF,EAAQzkC,MAAM,CAACilB,EAAG,MAAQwf,EAAQzkC,MAAM,CAACykH,EAAG,MACvC,EAGLhgF,EAAQzkC,MAAM,CAACilB,EAAG,MAAQwf,EAAQzkC,MAAM,CAACykH,EAAG,OACtC,EAGNhgF,EAAQzkC,MAAM,CAACilB,EAAG,MAAQwf,EAAQzkC,MAAM,CAACykH,EAAG,MACvC,EAGF,CAAC,IAETzhH,KAAIlU,GAAOA,EAAI4xC,cAEZ/rC,EAAAA,GAAAA,IAAK2uH,IAAuB5rH,EAAAA,EAAAA,QAAO4D,GAAS,KAAM,CACtDwwH,YAAaD,EACb3pI,WACA2yD,OACAtuD,SAAU,GAAGA,iBAGT04H,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CA3DwD,EA2DvD,CAEM,SAAU/wH,KAGf,SAFwB2pK,EAAAA,GAAAA,IAAOC,EAAAA,KAEhB,CACb,MAAM37E,QAA0B07E,EAAAA,GAAAA,IAAOC,EAAAA,WACjCJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoB9iC,GAChC,CACF,CAEO,SAAUqoF,KAGf,WAFqB3M,EAAAA,GAAAA,IAAOC,EAAAA,MAEhB/hH,IAAI,UAAW,CACzB,MAAM60E,QAAoBitC,EAAAA,GAAAA,IAAOC,EAAAA,KAC3BtqG,QAAoBqqG,EAAAA,GAAAA,IAAOC,EAAAA,KAC3B2M,QAAmBr3H,EAAAA,GAAAA,IAAK60H,KAE1Bz0G,GAAei3G,IAAe75C,GAEvBp9D,IAAgBi3G,GAAc75C,WADjC8sC,EAAAA,GAAAA,IAAIz4C,GAAAA,MAId,CACF,CAEO,SAAU7rG,KACf,OAAS,CACP,MAAM,KAAEsxJ,SAAeT,EAAAA,GAAAA,IAAK,CAC1BS,MAAMR,EAAAA,GAAAA,IAAKjlD,GAAAA,IACX0lD,SAASh8H,EAAAA,GAAAA,IAAM,OAGjB,GAAI+7H,EACF,MAGF,MAAM95C,QAAoBitC,EAAAA,GAAAA,IAAOC,EAAAA,KAC3BtqG,QAAoBqqG,EAAAA,GAAAA,IAAOC,EAAAA,KAE7BltC,GAAep9D,UACXpgB,EAAAA,GAAAA,IAAKu1H,IAA4B,GAE3C,CACF,CAEO,SAAUxvJ,KACf,WAC4B0kJ,EAAAA,GAAAA,IAAOC,EAAAA,YAGzB1qH,EAAAA,GAAAA,IAAKw0H,UAELx0H,EAAAA,GAAAA,IAAK40H,GAIf,CAFE,MAAO96H,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUp4C,GAAgBgxH,GAAA,IAAGlqE,SAAS,YAAE8mH,IAAe58C,EAAA,mBAC5D,MAAMs9C,QAAmBvF,EAAAA,GAAAA,IAAOC,EAAAA,KAEhC,IAAIqK,EAAS,CAAC,aAAc,cAAe,aAAc,QAAQr0H,MAAKuvH,GAASX,EAAY3mH,IAAIsnH,KAAWD,EAAWrnH,IAAIsnH,YACjFxF,EAAAA,GAAAA,IAAOC,EAAAA,OAEmB,kBAAjCsF,EAAWrnH,IAAI,gBAC9CosH,GAAS,QACHzK,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyBm+C,EAAWnoG,IAAI,cAAe,oBAG/DktG,UACI/0H,EAAAA,GAAAA,IAAK81H,IAEf,CAd8D,EAc7D,CAEM,SAAU50J,KACf,IACE,MAAM6tE,QAA0B07E,EAAAA,GAAAA,IAAOC,EAAAA,KACjC7rF,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBjiH,EAAO,GAAGsmC,EAAkBpmC,IAAI,YAAYk2B,EAAKl2B,IAAI,wBAErD,GAAE/a,SAAaoS,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqB,CAAEulI,QAASnqH,UAEpD6hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6B9iC,EAAkB3Z,MAAM,CAC7D3sB,OACA7a,eAGIoS,EAAAA,GAAAA,IAAK41H,GAAe,CAAC,EAI7B,CAHE,MAAO97H,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAU5zB,WACTokJ,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAUvwH,GAAmBo3H,GAAA,IAAGlwE,SAAS,IAAE9W,IAAOgnF,EAAA,oBAYlB,IAXd,CACrB,gBACA,YACA,OACA,oBACA,oBACA,+BACA,gBACA,mBAGiBt3E,QAAQ1P,WACnBsO,EAAAA,GAAAA,IAAK81H,MAG6D,IAAtE,CAAC,4BAA6B,sBAAsB10H,QAAQ1P,WACxDsO,EAAAA,GAAAA,IAAK81H,GAAkB,CAAEH,WAAW,IAE9C,CAnByD,EAmBxD,CAEM,SAAUx1K,GAAQw4H,GAAA,IAAGnwE,SAAS,MAAEujC,EAAK,MAAEhb,EAAK,WAAE6e,IAAc+oC,EAAA,mBACjE,IAAIhqC,EAAAA,GAAAA,IAAa5C,GAAQ,OACjBu+E,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB,CAAE9gD,QAAO6e,gBAE3C,MAAMlB,QAAsB+7E,EAAAA,GAAAA,IAAOC,EAAAA,KAC7BjqC,QAAiBzgF,EAAAA,GAAAA,IAAKytH,GAAa/+E,GAErCA,UACI47E,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoB,CAC5B9gD,QACA6e,aACAl+C,IAAK,WACLC,MAAO8uF,WAGH6pC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB,CAAE9gD,QAAO6e,aAAYh2C,SAAS,KAEpE,CAEA,GAAImyC,EAAMpjC,IAAI,WACZ,GAAc,OAAVooB,QACI/wB,EAAAA,GAAAA,IAAKuvH,GAAuBxjF,EAAOhb,EAAO6e,GAAY,OACvD,CACL,MAAMjpC,QAAe8jH,EAAAA,GAAAA,IAAOC,EAAAA,WAEtB1qH,EAAAA,GAAAA,IAAKuvH,GAAuBxjF,EAAOplC,EAAOgC,IAAIinC,GAAYlyB,KAAO,EAAGkyB,GAAY,EACxF,CAEJ,CA5BmE,EA4BlE,CAEM,SAAUhpE,GAA2BiyG,GAAA,IAAGrwE,QAASgvH,GAAW3+C,EAAA,mBACjE,MAAM4+C,QAAsBhN,EAAAA,GAAAA,IAAOC,EAAAA,KAC7B3I,QAAoB0I,EAAAA,GAAAA,IAAOC,EAAAA,IAA8C+M,GAAiB,IAC1FC,QAAgBjN,EAAAA,GAAAA,IAAOC,EAAAA,IAA8C8M,GAE3E,IAAIj5C,EAEAwjC,EACEA,EAAYp5G,IAAI,eAAiB+uH,EAAQ/uH,IAAI,aAC/C41E,QAAiBv+E,EAAAA,GAAAA,IAAK23H,GAAAA,KACZ5V,EAAYp5G,IAAI,cAAgB+uH,EAAQ/uH,IAAI,eACtD41E,QAAiBv+E,EAAAA,GAAAA,IAAK23H,GAAAA,IAAwB,IAGhDp5C,EADSm5C,EAAQ/uH,IAAI,mBACJ3I,EAAAA,GAAAA,IAAK23H,GAAAA,IAAwB,SAE7B33H,EAAAA,GAAAA,IAAK23H,GAAAA,IAGpBp5C,UACI+rC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC0M,WAGxC+rC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC6lD,GAChD,CAxBmE,EAwBlE,CAEM,SAAUx2K,KACf,UACQq6C,EAAAA,GAAAA,IAAM,KACZ,MAAMwzC,QAA0B07E,EAAAA,GAAAA,IAAOC,EAAAA,KACjC94H,EAAW,aAAam9C,EAAkBpmC,IAAI,YAE9CivH,SADmB53H,EAAAA,GAAAA,IAAKf,OAAO44H,iBAAkBt2H,SAASnU,OAC7B0qI,iBAAiB,0BAE9CxN,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1ChX,WACAhE,GAAI,aAAamhD,EAAkBpmC,IAAI,QACvCtN,KAAM,CACJu8H,kBACArO,MAAO,YAILuN,EAAAA,GAAAA,IAAKluH,EAAAA,UAEL0hH,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2B/3E,UAC/BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUi+H,KACf,UACQx8H,EAAAA,GAAAA,IAAM,KACZ,MAAMwzC,QAA0B07E,EAAAA,GAAAA,IAAOC,EAAAA,KACjC94H,EAAW,aAAam9C,EAAkBpmC,IAAI,YAE9CivH,SADmB53H,EAAAA,GAAAA,IAAKf,OAAO44H,iBAAkBt2H,SAASnU,OAC7B0qI,iBAAiB,0BAE9CxN,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAgC,CACxChX,WACAhE,GAAI,aAAamhD,EAAkBpmC,IAAI,QACvCtN,KAAM,CACJu8H,kBACAhP,mBAAoB75E,EAAkB1jC,MAAM,CAAC,SAAU,uBACvDk+G,MAAO,YAILuN,EAAAA,GAAAA,IAAKluH,EAAAA,UAEL0hH,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyB/3E,UAC7BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAU3H,GAAkB6mF,GAAA,IAAGxwE,SAAS,WAAEonC,EAAU,MAAE7e,EAAK,MAAEgb,IAASitC,EAAA,mBAC3E,UACQsxC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiB,CACzB9gD,QACA6e,aACA7D,MAAOA,EAAMlkB,IAAI,wBAAwB,MAG3C,MAAM,YAAEyxD,SAAsBt5E,EAAAA,GAAAA,IAAK3S,GAAAA,GAAwB,CAAE0+C,MAAOukF,KAAKC,UAAUxkF,EAAMnpC,gBAEnF0nH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiB,CACzB9gD,QACA6e,aACA7D,MAAOA,EAAM3W,MAAM,CACjBo7F,cAAel3C,EACfm3C,sBAAsB,aAIpBnG,EAAAA,GAAAA,IAAIz4C,GAAAA,KAgBZ,CAfE,MAAO/3E,GACP,MAAM+kC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WAEpBJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiB,CACzB9gD,QACA6e,aACA7D,MAAOA,EAAM3W,MAAM,CACjBq7F,sBAAsB,EACtBD,cAAe3xF,EAAKl2B,IAAI,4BAItB2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,EAAgC/3E,UACpCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CApC6E,EAoC5E,CAEM,SAAUk+H,WACT9L,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAwBrwG,GAC3C,CAEO,SAAUy2J,WACT/L,EAAAA,GAAAA,IAAWr6C,GAAAA,GAA2C6jD,GAC9D,CAEO,SAAUwC,WACTpM,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuBnvG,GACzC,CAEO,SAAUy1J,WACTrM,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4B+jD,GAC9C,CAEO,SAAUwC,WACTtM,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA8B59E,GAChD,CAEO,SAAUokI,WACTvM,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2BikD,UACrChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyBikD,UACnChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoBikD,UAC9BhK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBikD,UAClChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4BikD,UACtChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoCikD,UAC9ChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmCikD,UAC7ChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBikD,UAClChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0BikD,UACpChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAsCikD,UAChDhK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6CikD,UACvDhK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAsCikD,UAChDhK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqCikD,UAC/ChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqCikD,UAC/ChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuCikD,UACjDhK,EAAAA,GAAAA,IAAUj6C,GAAAA,EAAiCikD,UAC3ChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0BikD,UACpChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0BikD,UACpChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBikD,UAClChK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmDikD,UAC7DhK,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuCikD,GACzD,CAEO,SAAU5B,WACTpI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBjuG,GAC1C,CAEO,SAAU00J,WACTxM,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuBhuG,GACzC,CAEO,SAAU00J,WACTzM,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgC/tG,GAClD,CAEO,SAAU00J,WACT1M,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmCskD,GACrD,CAEO,SAAUsC,WACT3M,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwCwkD,GAC1D,CAEO,SAAUqC,WACT5M,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BrvG,GAC/C,CAEO,SAAUm2J,WACT7M,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwC2kD,GAC1D,CAEO,SAAUoC,WACT9M,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA8C4kD,GAChE,CAEO,SAAUoC,WACT/M,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4C8kD,GAC9D,CAEO,SAAUmC,WACThN,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiD+kD,GACnE,CAEO,SAAUmC,WACTjN,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoD0kD,GACtE,CAEO,SAAUyC,WACTlN,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqCmlD,UAC/ClL,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+BmlD,GACjD,CAEO,SAAU5C,WACTtI,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4BzsG,GAC9C,CAEO,SAAUwrJ,WACT9E,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0B9/E,GAC5C,CAEO,SAAU8+H,WACT3E,EAAAA,GAAAA,IAAWr6C,GAAAA,GAA+B7/E,GAClD,CAEO,SAAUinI,WACT/M,EAAAA,GAAAA,IAAWr6C,GAAAA,GAA0ColD,GAC7D,CAEO,SAAUjG,WACTlF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuB/wH,GACzC,CAEO,SAAUo4K,WACTpN,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0B7rG,UACpC8lJ,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0BulD,GAC5C,CAEO,SAAU+B,WACTrN,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2B9rG,GAC7C,CAEO,SAAUwrJ,WACTzF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0BnwH,GAC5C,CAEO,SAAU03K,WACTtN,EAAAA,GAAAA,IAAUj6C,GAAAA,EAA4C0jD,UACtDzJ,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwC0jD,UAClDzJ,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuC0jD,GACzD,CAEO,SAAU8D,WACTvN,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwB3wG,GAC1C,CAEO,SAAUo4J,WACTxN,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6B3rG,GAC/C,CAEO,SAAUsrJ,WACTC,EAAAA,GAAAA,IAAS,IAAK5/C,GAAAA,GAA6BvwH,GACnD,CAEO,SAAUgwK,WACTxF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkB1xH,GACpC,CAEO,SAAUo5K,WACTzN,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqCjrG,GACvD,CAEO,SAAUmqJ,WACTjF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4B3wH,GAC9C,CAEO,SAAUs4K,WACT1N,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0BkmD,GAC5C,CAEO,SAAUpG,WACT7F,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiC1/E,GACnD,CAEe,SAAUm7H,WACjB3yH,EAAAA,GAAAA,IAAI,CACRq9H,KACAC,KACAC,KACAC,KACAC,KACAC,KACAnE,KACAoE,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACA5E,KACAxD,KACAC,KACAoI,KACAjI,KACAkI,KACAC,KACA5H,KACA6H,KACAC,KACAC,KACA9H,KACAF,KACAiI,KACAxI,KACAyI,KACA7H,MAEJ,CCzsCO,SAAUl8K,WACT60K,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAEO,SAAUkxH,GAAYC,SACrBpP,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B,CAAE6nD,kBAC1C,CAEO,SAAUhkL,GAAiB+7C,GAAA,IAAG+W,SAAS,MAAEzD,EAAK,MAAEpT,IAASF,EAAA,mBAC9D,IAAIgqG,EACJ,OAAQ12F,GACN,IAAK,gBAIL,IAAK,kBAIL,IAAK,gBAIL,IAAK,eACH02F,QAAiBgvB,EAAAA,GAAAA,IAAOC,EAAAA,IAAuC/4H,GAC/D,MAEF,QACE8pG,EAAW9pG,QAIT24H,EAAAA,GAAAA,IAAInvB,GAAAA,GAAgC,CAAEp2F,QAAOpT,MAAO8pG,WACpD6uB,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CA1BgE,EA0B/D,CAEM,SAAUz8E,GAAc28E,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,yBACnCu4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+BrpE,IAEzC,MAAMujC,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,KACrBtuE,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,KAE1BnwH,QAAeyF,EAAAA,GAAAA,IAAK25H,GAAoB5tF,EAAOqQ,SAE/CkuE,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8Bt3E,EAASA,EAAOwxC,EAAMpjC,IAAI,eAAiB,MACrF,CAT2C,EAS1C,CAEM,SAAUixH,GAAsB7tF,EAAOhb,SACtCu5F,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B9gD,IACzC,MAAM8oG,QAAsBpP,EAAAA,GAAAA,IAAOC,EAAAA,KAC7BnsC,EAAWxyC,EACdlkB,IAAI,cAAegyG,EAAclxH,IAAI,gBACrCpL,OAAO,QAAQwF,EAAAA,EAAAA,QAAO,CAAC,IAAI1H,GACE,kBAA5B0wC,EAAMpjC,IAAI,cAAoCtN,EAAKwsB,IAAI,eAAgBgyG,EAAclxH,IAAI,eAAiBtN,IAGxG+gD,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,KAC1BnwH,QAAeyF,EAAAA,GAAAA,IAAK25H,GAAoBp7C,EAAUniC,SAElDkuE,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B,CACpCxgF,KAAMkJ,EAASA,EAAOwxC,EAAMpjC,IAAI,eAAiB,KACjDooB,UAEJ,CAEO,SAAUn6E,GAAsBo7H,GAAA,IAAC,QAAExpE,GAASwpE,EAAA,mBACjD,IAAIrrE,QAAe8jH,EAAAA,GAAAA,IAAOC,EAAAA,KAEtBliH,GAAWA,EAAQkxH,gBACrB/yH,EAASA,EAAOhG,QAAO,CAACorC,EAAOhb,KAAoD,IAA1CvoB,EAAQkxH,cAAct4H,QAAQ2vB,MAGzE,MAAM6+F,EAAU,GAChBjpH,EAAOnV,SAAQ,CAACu6C,EAAOhb,KACrB6+F,EAAQp1H,MAAKwF,EAAAA,GAAAA,IAAK45H,GAAuB7tF,EAAOhb,GAAO,UAGnDp2B,EAAAA,GAAAA,IAAIi1H,EACZ,CAbmD,EAalD,CAEM,SAAUn5K,GAAcw7H,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,yBACnCjyE,EAAAA,GAAAA,IAAKy5H,GAAejxH,GAAYA,EAAQ3Y,KAAoB,QAAZ4D,EACxD,CAF2C,EAE1C,CAEM,SAAU/8C,WACTspD,EAAAA,GAAAA,IAAKvpD,GAAgB,CAAC,EAC9B,CAEO,SAAUN,KACf,MAAMw7C,QAAc84H,EAAAA,GAAAA,IAAOC,EAAAA,WAErBJ,EAAAA,GAAAA,IAAInvB,GAAAA,YAEJmvB,EAAAA,GAAAA,IAAInvB,GAAAA,GAAgC,CACxCp2F,MAAO,sBACPpT,OAAQA,WAGJqO,EAAAA,GAAAA,IAAKvqD,GACb,CAEO,SAAUkB,GAASu7H,GAAA,IAAC,QAAE1pE,GAAS0pE,EAAA,mBACpC,MAEMqM,SAFcksC,EAAAA,GAAAA,IAAOC,EAAAA,MAGxBntH,OAAO,cAAc68E,GAAY,kBAANA,EAAwB,iBAAmBA,IACtE78E,OAAO,eAAe68E,GAAY,kBAANA,EAAwB,wBAA0BA,IAC9E78E,OAAO,cAAc68E,GAAY,wBAANA,EAA8B,0BAA4BA,IACrF78E,OAAO,eAAe68E,GAAY,wBAANA,EAA8B,0BAA4BA,UAEnFkwC,EAAAA,GAAAA,IAAIj2B,GAAAA,GAAwB,IAAK7rF,EAASujC,MAAOwyC,IACzD,CAVsC,EAUrC,CAEM,SAAU5oI,GAAuBw8H,GAAA,IAAC,QAAE3pE,GAAS2pE,EAAA,yBAC5Cm4C,EAAAA,GAAAA,IAAInvB,GAAAA,GAAsC3yF,UAC1C8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAHoD,EAGnD,CAEM,SAAUioD,GAAoB1nD,GAAA,IAAG5pE,SAAS,cAAEiH,EAAa,KAAEhH,EAAI,YAAE2tE,IAAehE,EAAA,mBACrF,IACE,MAAMppC,QAAkByhF,EAAAA,GAAAA,IAAOC,EAAAA,IAA4Bt0C,GAE3D,GAAIptC,IAAcvgC,GAAQgH,GAAgB,CAGxC,IAAIyxE,QAFEopC,EAAAA,GAAAA,IAAI11B,GAAAA,GAAsC5rD,IAI3Cv5B,EAeHyxE,QAAoBupC,EAAAA,GAAAA,IAAOC,EAAAA,IAA8Bj7G,IAdzDyxE,GAAcn+E,EAAAA,EAAAA,QAAO,CACnBq/F,OAAQ35F,EACR45F,OAAQ55F,EACR65F,OAAQ75F,EACR85F,OAAQ95F,EACR+5F,OAAQ/5F,EACRg6F,OAAQh6F,IAEVy4E,QAAoBlhF,EAAAA,GAAAA,IAAKjN,GAAmBmuF,SAEtCopC,EAAAA,GAAAA,IAAIyM,GAAAA,GAA4C71C,IAEtDA,GAAcn+E,EAAAA,EAAAA,QAAOm+E,IAKvB,MAAMvC,QAAkB8rC,EAAAA,GAAAA,IAAOC,EAAAA,KACzB70H,QAAiB40H,EAAAA,GAAAA,IAAOC,EAAAA,KACxB50H,QAAe20H,EAAAA,GAAAA,IAAOC,EAAAA,KACtB9rC,QAAqB6rC,EAAAA,GAAAA,IAAOC,EAAAA,KAC5Bz0F,QAAiBw0F,EAAAA,GAAAA,IAAOC,EAAAA,KAE9B,IAAI3+E,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,KACzB3+E,EAAQA,EAAM3W,OAAMryB,EAAAA,EAAAA,QAAO,CACzBm+E,cACAzxE,cAAeyxE,EAAYv4E,IAAI,MAC/Bg2E,YACA9oF,SAAU8oF,EAAY,KAAO9oF,EAC7BC,OAAQ6oF,EAAY,KAAO7oF,EAC3B8oF,eACA3oD,WACAwsB,WAAY1B,EAAAA,GAAAA,uBAGd,MAAMnR,QAAmB66E,EAAAA,GAAAA,IAAOC,EAAAA,WAE1BJ,EAAAA,GAAAA,IAAI11B,GAAAA,GAA0B,CAClC7oD,QACAhb,MAAO,KACP6e,sBAGI5vC,EAAAA,GAAAA,IAAK41H,GAAehhC,GAAAA,GAAoC,CAC5D9zI,eAAe,WAGXwpK,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,OAEMy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC/3E,UACtCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAlEuF,EAkEtF,CAEM,SAAUmxH,WACTjO,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2Bn8H,GAC7C,CAEO,SAAUskL,WACTvI,EAAAA,GAAAA,IAAS,IAAM5/C,GAAAA,GAA6Bp8H,GACpD,CAEO,SAAUwkL,WACT/N,EAAAA,GAAAA,IAAWr6C,GAAAA,GAA6Bz8E,GAChD,CAEO,SAAU8kI,WACThO,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAgCj7H,GACnD,CAEO,SAAUujL,WACTrO,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBp7H,GAC1C,CAEO,SAAU2jL,WACTtO,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqBn7H,GACvC,CAEO,SAAU2jL,WACTvO,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmC17H,GACrD,CAEO,SAAUmkL,WACTxO,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiCl8H,GACnD,CAEO,SAAU4kL,WACTzO,EAAAA,GAAAA,IAAUj6C,GAAAA,EAAmCioD,GACrD,CAEO,SAAU7I,WACTnF,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmBl7H,GACrC,CAEe,SAAU22K,WACjB3yH,EAAAA,GAAAA,IAAI,CACRo/H,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAtJ,MAEJ,CCxPO,SAAUv5H,GAAYjG,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBACvC,MAAMotC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,UACQ1qH,EAAAA,GAAAA,IAAK3S,GAAAA,GAAkB,CAC3BmtI,QAAShyH,EAAQC,KAAMgyH,+BAAgCjyH,EAAQkyH,eAE3DpQ,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz6B,EAAAA,KASZ,CARE,MAAO/1F,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,MAEwB,MAA9B/3E,EAAMksG,SAASf,iBACXqlB,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM7Z,EAAKl2B,IAAI,mBAAoB2oE,SAAS,WAE5Eg5C,EAAAA,GAAAA,IAAI1hH,EAAAA,KAEd,CACF,CAlByC,EAkBxC,CAEM,SAAUjR,GAAYo6E,GAAA,IAAGvpE,QAAS5a,GAAImkF,EAAA,mBAC3C,UACQ/xE,EAAAA,GAAAA,IAAK3S,GAAAA,GAAkBO,SACvB08H,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz6B,EAAAA,KAIZ,CAHE,MAAO/1F,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAT6C,EAS5C,CAEM,SAAU+xH,WACT7O,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA2Bn6E,GAC7C,CAEO,SAAUkjI,WACT9O,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA2Bl6E,GAC7C,CAEe,SAAUs1H,WACjBtyH,EAAAA,GAAAA,IAAI,CACRggI,KACAC,MAEJ,C,eC7CO,SAAUjmI,GAA2BlD,GAAA,IAAG+W,SAAS,KAAEuhB,IAAQt4B,EAAA,mBAChE,UACQuO,EAAAA,GAAAA,IAAK3S,GAAAA,GAAiC,CAC1C08B,eAGIugG,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACF,CAfkE,EAejE,CAEM,SAAUh9E,GAA4Bk9E,GAAA,IAAGvpE,SAAS,KAAEuhB,IAAQgoD,EAAA,mBACjE,UACQ/xE,EAAAA,GAAAA,IAAK3S,GAAAA,GAAkC,CAC3C08B,eAGIugG,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACF,CAfmE,EAelE,CAEM,SAAU98E,GAAoBi9E,GAAA,IAAGxpE,SAAS,KAAEuhB,IAAQioD,EAAA,mBACzD,UACQhyE,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0B,CACnC08B,eAGIugG,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACF,CAf2D,EAe1D,CAEM,SAAUj9E,KACf,UACQoL,EAAAA,GAAAA,IAAK3S,GAAAA,UAELi9H,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACF,CAEO,SAAU/8E,KACf,UACQkL,EAAAA,GAAAA,IAAK3S,GAAAA,UAELi9H,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACF,CAEO,SAAU78E,KACf,UACQgL,EAAAA,GAAAA,IAAK3S,GAAAA,UAELi9H,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACF,CAEO,SAAU38E,KACf,UACQ8K,EAAAA,GAAAA,IAAK3S,GAAAA,UAELi9H,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACF,CAEO,SAAU58E,KACf,UACQ+K,EAAAA,GAAAA,IAAK3S,GAAAA,UAELi9H,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACF,CAEO,SAAU18E,GAAoB88E,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,mBAC/C,UACQjyE,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0B,CACnCwtI,GAAIryH,EAAQkiE,YACZowD,QAAStyH,EAAQuyH,eAGbzQ,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz6B,EAAAA,KAIZ,CAHE,MAAO/1F,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAdiD,EAchD,CAEM,SAAUkhI,WACTlP,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0Cl9E,GAC5D,CAEO,SAAUsmI,WACTnP,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoCj9E,GACtD,CAEO,SAAUsmI,WACTpP,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2Ch9E,GAC7D,CAEO,SAAUsmI,WACTrP,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqC/8E,GACvD,CAEO,SAAUsmI,WACTtP,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6B58E,GAC/C,CAEO,SAAUomI,WACTvP,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6B78E,GAC/C,CAEO,SAAUsmI,WACTxP,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4B38E,GAC9C,CAEO,SAAUqmI,WACTzP,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmC18E,GACrD,CAEO,SAAUqmI,WACT1P,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmC98E,GACrD,CAEe,SAAUk4H,WACjBtyH,EAAAA,GAAAA,IAAI,CACRqgI,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,C,gBC9JO,SAAUC,WACTnR,EAAAA,GAAAA,KAAItuK,EAAAA,EAAAA,OACV,MAAM65H,QAA0B40C,EAAAA,GAAAA,IAAOC,EAAAA,KACjC50C,QAA4B20C,EAAAA,GAAAA,IAAOC,EAAAA,KACnCl9H,QAAoBi9H,EAAAA,GAAAA,IAAOC,EAAAA,KAC3BhgD,QAAoB+/C,EAAAA,GAAAA,IAAOC,EAAAA,KAC3Bn9H,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBwL,QAAoBzL,EAAAA,GAAAA,IAAOC,EAAAA,KAC3Br0C,QAAeo0C,EAAAA,GAAAA,IAAOC,EAAAA,KAE5B,GAAIhgD,GAAel9E,EAAa,CAG9B,MAAM+M,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAiBE,IAErC,aACJklH,EAAY,eACZipB,EAAc,uBACdC,EAAsB,OACtBjzH,EAAM,QACN26B,EAAO,KACPhlB,EAAI,cACJqa,EAAa,WACbrT,EAAU,aACV2Z,EAAY,OACZr4B,EAAM,aACNmmB,EAAY,aACZ+5B,EAAY,cACZxgD,EAAa,WACbq3E,EAAU,cACVz1B,GACE1tD,GAEE,kBAAE+8E,KAAsBskD,GAAelzH,EAEvC4tE,ECvEiBulD,EAACxlD,EAAQzxE,EAAM84C,KACxC,MAAMo+E,GAAkBC,EAAAA,EAAAA,aAAYr+E,GAAUA,GAAS36C,EAAAA,EAAAA,QAAO26C,GAC9D,IAAIs+E,EAAW,KAQf,OANA3lD,EAAO7kF,SAAQ+6E,IACTuvD,EAAgBtxD,OAAO+B,EAAMlhE,MAAM,CAAC,SAAUzG,OAChDo3H,EAAWzvD,EAAM5jE,IAAI,QACvB,IAGKqzH,CAAQ,ED6DSH,CAAYxlD,EAASh4D,EAAKqB,SAAW,OAAS,QAAUk8G,EAAWl+E,QA4BzF,SA1BM4sE,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6Bt3E,UACjC+vH,EAAAA,GAAAA,KAAI1+H,EAAAA,EAAAA,IAAQyyB,UACZisG,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmBxuC,UACvBinF,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkB,IAAK+pD,EAAYtlD,yBACvCg0C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuByF,UAC3BgzC,EAAAA,GAAAA,KAAIt5I,EAAAA,GAAAA,IAAgB61E,UACpByjE,EAAAA,GAAAA,KAAIxpI,EAAAA,GAAAA,IAAiBulB,UACrBikH,EAAAA,GAAAA,KAAItpJ,EAAAA,GAAAA,IAAc08G,UAClB4sC,EAAAA,GAAAA,KAAIv/I,EAAAA,GAAAA,IAAgB6wJ,UACpBtR,EAAAA,GAAAA,KAAIlkI,EAAAA,GAAAA,IAAiB,CACzBsyC,gBACA0rE,OAAQ/gE,EAAQ44F,sCAEZ3R,EAAAA,GAAAA,KAAIzwJ,EAAAA,EAAAA,IAAcwrD,UAClBilG,EAAAA,GAAAA,KAAIr8I,EAAAA,GAAAA,IAAgB+wD,UACpBsrF,EAAAA,GAAAA,KAAI7pK,EAAAA,GAAAA,IAAUkmD,UACd2jH,EAAAA,GAAAA,KAAI14I,EAAAA,EAAAA,IAAgBk7C,UACpBw9F,EAAAA,GAAAA,KAAIx0J,EAAAA,GAAAA,KAAa28I,UACjB6X,EAAAA,GAAAA,KAAI7hK,EAAAA,GAAAA,IAAeizK,UACnBpR,EAAAA,GAAAA,KAAIruI,EAAAA,GAAAA,IAAiBgsE,EAAci0E,0BACnC5R,EAAAA,GAAAA,KAAIt4J,EAAAA,GAAAA,KAA+B2pK,IAEpC1zE,EAAck0E,uBACX7R,EAAAA,GAAAA,KAAI5tI,EAAAA,GAAAA,QAGRk/I,EAAWQ,uBAAwB,CACrC,MAAM,KAAEhjF,EAAI,GAAEF,GAAO0iF,EAAWQ,uBAE5BhjF,GAAQF,QACJoxE,EAAAA,GAAAA,KAAI78I,EAAAA,GAAAA,IAAW,CACnBooB,SAAU,IAAIulF,KAAKhiC,GACnBtjD,OAAQ,IAAIslF,KAAKliC,YAGboxE,EAAAA,GAAAA,KAAI78I,EAAAA,GAAAA,IAAW,CACnBooB,SAAU,KACVC,OAAQ,OAGd,CAEI8lI,EAAWz6G,oBACPnhB,EAAAA,GAAAA,IAAK2qH,EAAyBtlD,EAAAA,GAAAA,cAA2Bu2D,EAAWz6G,cAErE00D,GAAsBC,GAAuBogD,IAAgB0F,EAAWz6G,qBACrEmpG,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAASylJ,EAAWz6G,uBAG1BnhB,EAAAA,GAAAA,IAAK2qH,EAA2BtlD,EAAAA,GAAAA,qBAGlCilD,EAAAA,GAAAA,KAAIruK,EAAAA,EAAAA,aACJquK,EAAAA,GAAAA,KAAI1sK,EAAAA,EAAAA,MACZ,YACQ0sK,EAAAA,GAAAA,KAAI+R,EAAAA,EAAAA,MAEd,CAEO,SAAUC,GAAgBxiI,SACzBwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2B/3E,UAC/BwwH,EAAAA,GAAAA,KAAI+R,EAAAA,EAAAA,SAELviI,EAAMksG,UAAalsG,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,oBACjDqlB,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,aACJ6uK,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,IAExB,CAEO,MAAMyiI,GAAiBziI,KAAWA,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,YAEnE,SAAU33G,WACT0S,EAAAA,GAAAA,IAAKqtH,GAAWoO,GAAgBa,GAAiB,KAAM,CAAEnP,WAAY,EAAGC,SAAUmP,IAC1F,CAEO,SAAU/4K,KACf,IACE,MAAM4pC,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBl9H,QAAoBi9H,EAAAA,GAAAA,IAAOC,EAAAA,WAE3B1qH,EAAAA,GAAAA,IAAK3S,GAAAA,GAAkBD,EAAMI,SAC7BwS,EAAAA,GAAAA,IAAK2qH,EAA2BtlD,EAAAA,GAAAA,qBAChCilD,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,KAAI5uK,EAAAA,EAAAA,MAKZ,CAJE,MAAOo+C,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiC/3E,UACrCwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,aACJ6uK,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CACF,CAEO,SAAUrM,KACf,IACE,MAAMuoF,QAAmBy0C,EAAAA,GAAAA,IAAOC,EAAAA,KAE1Bt9H,EAAO,CACXQ,GAAIooF,EAAWrtE,IAAI,MACnBtX,KAAM,CACJmrI,qBAAsBxmD,EAAWrtE,IAAI,qBACrC8zH,mCAAoCzmD,EAAWrtE,IAAI,kCACnD+zH,0BAA2B1mD,EAAWrtE,IAAI,yBAC1Cg0H,yBAA0B3mD,EAAWrtE,IAAI,yBACzCi0H,aAAc5mD,EAAWrtE,IAAI,eAC7Bk0H,yBAA0B7mD,EAAWrtE,IAAI,0BACzCm0H,qCAAsC9mD,EAAWrtE,IAAI,uCAInD,GAAE/a,SAAaoS,EAAAA,GAAAA,IAAK3S,GAAAA,GAAsBD,SAC1Ck9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuCjkF,UAC3C08H,EAAAA,GAAAA,KAAI5uK,EAAAA,EAAAA,MAKZ,CAJE,MAAOo+C,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqC/3E,UACzCwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,aACJ6uK,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CACF,CAEO,SAAUt1C,KACf,MAAMq6E,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,UACQJ,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJilD,EAAAA,GAAAA,IAAKjlD,EAAAA,UAELy4C,EAAAA,GAAAA,KAAI/tK,EAAAA,EAAAA,IAAuB,CAC/Bm8F,KAAM7Z,EAAKl2B,IAAI,oDACf8oE,QAAS,YAOb,CALE,MAAO33E,SACDwwH,EAAAA,GAAAA,KAAI/tK,EAAAA,EAAAA,IAAuB,CAC/Bm8F,KAAM7Z,EAAKl2B,IAAI,kDACf8oE,QAAS,UAEb,CACF,CAEO,SAAU/jF,KACf,IACE,MAAM6M,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,UACpBi9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuBt3E,UAC3B+vH,EAAAA,GAAAA,IAAIz4C,EAAAA,KAGZ,CAFE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CACF,CAEO,SAAUlkF,KACf,IACE,MAAM2pF,QAA0BmzC,EAAAA,GAAAA,IAAOC,EAAAA,KAEjC98H,EAAK0pF,EAAkB3uE,IAAI,MAE3Bvb,EAAO,CACX2vI,aAAczlD,EAAkB3uE,IAAI,eACpCq0H,YAAa1lD,EAAkB3uE,IAAI,cACnCwmE,OAAQmI,EAAkB3uE,IAAI,UAC9Bs0H,cAAe3lD,EAAkB3uE,IAAI,gBACrCu0H,qBAAsB5lD,EAAkB3uE,IAAI,uBAGxCpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6BO,EAAIR,SAErDk9H,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuBt3E,UAC3B+vH,EAAAA,GAAAA,IAAI6S,GAAAA,YACJ7S,EAAAA,GAAAA,KAAI5uK,EAAAA,EAAAA,MAKZ,CAJE,MAAOo+C,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,aACJ6uK,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CACF,CAEO,SAAUsjI,KACf,MAAM1/E,QAAe+sE,EAAAA,GAAAA,IAAOC,EAAAA,WAEtB1qH,EAAAA,GAAAA,IAAKq9H,GAAAA,GAAmB3/E,EAAO/0C,IAAI,WAC3C,CAEO,SAAU20H,GAAgB7rI,GAAA,IAAG+W,QAAS5a,GAAI6D,EAAA,mBAC/C,IACE,MAAM8I,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAiB,CAAEkwI,gBAAiB3vI,UAExD08H,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2Bt3E,GAKvC,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA8B/3E,UAClCwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,aACJ6uK,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CACF,CAXiD,EAWhD,CAEM,SAAU0jI,WACT1R,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA4BvkF,GAC9C,CAEO,SAAUmwI,WACT3R,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAkCruH,GACpD,CAEO,SAAUk6K,WACT5R,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAsCpkF,GACxD,CAEO,SAAUkwI,WACT7R,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA8CrtH,GAChE,CAEO,SAAUo5K,WACT9R,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAsCnkF,GACxD,CAEO,SAAUmwI,WACT/R,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAuClkF,GACzD,CAEO,SAAUmwI,WACThS,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAmBurD,UAC7BtR,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAsBurD,UAChCtR,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAqBurD,GACvC,CAEO,SAAUW,WACTjS,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA+ByrD,GACjD,CAEe,SAAUU,WACjBrjI,EAAAA,GAAAA,IAAI,CACR6iI,KACAC,KACAC,KACAI,KACAH,KACAC,KACAC,KACAE,MAEJ,C,gBEtSO,SAAUE,KACf,IACE,MAAMp/F,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBnjG,QAAkBkjG,EAAAA,GAAAA,IAAOC,EAAAA,KACzBh8E,QAAsB+7E,EAAAA,GAAAA,IAAOC,EAAAA,KAC7BxtH,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAC1BwT,QAAkBzT,EAAAA,GAAAA,IAAOC,EAAAA,KACzByT,QAA8B1T,EAAAA,GAAAA,IAAOC,EAAAA,KACrCluB,QAAgCiuB,EAAAA,GAAAA,IAAOC,EAAAA,KACvC0T,QAA8B3T,EAAAA,GAAAA,IAAOC,EAAAA,KACrCxhC,QAAgCuhC,EAAAA,GAAAA,IAAOC,EAAAA,KAE7C,IAAIt5F,EAAQ7J,EAAU5e,IAAI,SAE1B,GAAI+lC,EAAe,CACjB,MAAMp9C,EAAW,CACf,CACEI,IAAK,OACLC,MAAO+8C,KAIL,IAAEkK,SAAc54C,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBiE,GAC3C8/B,EAAQwnB,CACV,CAEA,MAAMxrD,EAAO,CACXulI,QAASprG,EAAU5e,IAAI,UACvBiqH,QAASrrG,EAAU5e,IAAI,UACvBkqH,QAAStrG,EAAU5e,IAAI,UACvBmqH,QAASvrG,EAAU5e,IAAI,UACvBoqH,QAASxrG,EAAU5e,IAAI,UACvBqqH,QAASzrG,EAAU5e,IAAI,UACvB2wE,YAAa/xD,EAAU5e,IAAI,eAC3BmtB,QAASvO,EAAU5e,IAAI,WACvB01H,oBAAqB92G,EAAU5e,IAAI,sBACnC21H,WAAY/2G,EAAU5e,IAAI,aAC1B41H,UAAWhnE,EAAAA,GAAoBr6D,GAC/BshI,YAAaj3G,EAAU5e,IAAI,cAC3B81H,YAAal3G,EAAU5e,IAAI,cAC3B+1H,aAAcn3G,EAAU5e,IAAI,eAC5BsqH,MAAO1rG,EAAU5e,IAAI,SACrBg2H,qBAAsBp3G,EAAU5e,IAAI,qBACpCyoB,SAGF,IAAI72B,EACA64H,EAAiBv0F,EAAKl2B,IAAI,WAE1B4e,EAAU5e,IAAI,OAChByqH,EAAiBv0F,EAAKl2B,IAAI,WAC1BpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqBk6B,EAAU5e,IAAI,MAAOvb,IAE9DmN,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqBD,SAGrCk9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B,CAAEtqD,UAAWhtB,KAEhD2jI,UACI5T,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmC,CAAEtqD,WAAWxkB,EAAAA,EAAAA,QAAOxI,GAASooB,KAAMu7G,MAG9EC,GAAyB3hC,IAA4B0hC,UACjD5T,EAAAA,GAAAA,IAAIpwC,EAAAA,GAAgC,CAAE3yD,WAAWxkB,EAAAA,EAAAA,QAAOxI,GAASi+E,OAAQ,UAG7E4lD,GAAyBl1C,IAA4Bg1C,UACjD5T,EAAAA,GAAAA,IAAInwC,EAAAA,GAAgC,CAAE5yD,WAAWxkB,EAAAA,EAAAA,QAAOxI,GAASi+E,OAAQ,UAG5E0Q,GAA4BsT,UACzB8tB,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM,MAAMn+C,EAAOkO,YAAY2qH,OAMzE,CAJE,MAAOt5H,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2B/3E,UAC/BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUpJ,KACf,IACE,MAAMmuC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBnjG,QAAkBkjG,EAAAA,GAAAA,IAAOC,EAAAA,WAEzBJ,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA8BtqD,UAClC+iG,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM,MAAMnxB,EAAU5e,IAAI,eAAek2B,EAAKl2B,IAAI,gBAExF,MAAM,KAAE9rD,EAAI,SAAE+hL,SAAmB/H,EAAAA,GAAAA,IAAK,CACpCh6K,MAAMi6K,EAAAA,GAAAA,IAAKluH,EAAAA,IACXg2H,UAAUrjI,EAAAA,GAAAA,IAAM,OAKlB,SAFM+uH,EAAAA,GAAAA,IAAI1hH,EAAAA,MAEN/rD,QACIytK,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B,CAAEtqD,UAAWA,EAAU3kB,OAAQo4E,eAAe,WAC/EsvC,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM7Z,EAAKl2B,IAAI,kBAChD,GAAIi2H,EAAU,CACnB,MAAMC,QAAiBpU,EAAAA,GAAAA,IAAOC,EAAAA,KACxBt9H,EAAO,CACXQ,GAAI25B,EAAU5e,IAAI,MAClB41H,UAAWM,SAGP7+H,EAAAA,GAAAA,IAAK3S,GAAAA,GAAoBD,EACjC,CAKF,CAJE,MAAO0M,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA4B/3E,UAChCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUrJ,KACf,IACE,MAAMouC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBnjG,QAAkBkjG,EAAAA,GAAAA,IAAOC,EAAAA,WAEzBJ,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA+BtqD,EAAU5e,IAAI,cACjD2hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM,MAAMnxB,EAAU5e,IAAI,eAAek2B,EAAKl2B,IAAI,gBAExF,MAAM,KAAE9rD,EAAI,SAAE+hL,SAAmB/H,EAAAA,GAAAA,IAAK,CACpCh6K,MAAMi6K,EAAAA,GAAAA,IAAKluH,EAAAA,IACXg2H,UAAUrjI,EAAAA,GAAAA,IAAM,OAKlB,SAFM+uH,EAAAA,GAAAA,IAAI1hH,EAAAA,MAEN/rD,QACIytK,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B,CAAEtqD,UAAWA,EAAU3kB,gBACxD0nH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM7Z,EAAKl2B,IAAI,kBAChD,GAAIi2H,EAAU,CACnB,MAAMC,QAAiBpU,EAAAA,GAAAA,IAAOC,EAAAA,KACxBt9H,EAAO,CACXQ,GAAI25B,EAAU5e,IAAI,MAClB41H,UAAWM,EACXC,QAAS,gBAEL9+H,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqBk6B,EAAU5e,IAAI,MAAOvb,EACvD,CAKF,CAJE,MAAO0M,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B/3E,UACjCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUlJ,GAAqBa,GAAA,IAAG+W,SAAS,UAAE+e,EAAS,KAAE5E,IAAQlxB,EAAA,mBACrE,IACE,MAAMskG,EAAcpzE,EAAKha,IAAI,eACvBzL,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAChC,IAAIlsC,EAAU77D,EAEd,GAAIozE,EAAc,GAAKpzE,EAAKha,IAAI,iBAAiB+U,OAASq4E,EAAc,EAAG,CACzE,MAAMC,QAAsBh2F,EAAAA,GAAAA,IAAK2tH,GAAYhrG,GAE7C67D,EAAUA,EAAQ32D,IAAI,gBAAiBmuE,EACzC,CAEA,MAAM+oC,GAAkBvgD,EAAQ71E,IAAI,mBAAoB5F,EAAAA,EAAAA,QAAO,KAAK65B,QAAQ4hD,GAEtEpxF,GAAO2V,EAAAA,EAAAA,QAAO,CAClB1R,KAAM0tI,EAAe1wH,KAAIsuB,IACvB55B,EAAAA,EAAAA,QAAO,CACL,kBAAmB,CAACwkB,EAAU5e,IAAI,OAClCq2H,QAASriG,EAAGh0B,IAAI,MAChBgwC,aAAchc,EAAGh0B,IAAI,mBAGzB41H,UAAWhnE,EAAAA,GAAoBr6D,WAG3B8C,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2BD,GAEtC,MAAM6xI,EAAazgD,EAAQjhF,OAAO,cAAc8nB,GAAeA,EAAW7qB,KAAK+sB,EAAUhqB,OAAO,aAAa2zB,GAASA,EAAQ,aAExHo5F,EAAAA,GAAAA,IAAI/hH,GAAAA,IAAuBxF,EAAAA,EAAAA,QAAO,CAACk8H,YACnC3U,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqC,CAAEtqD,YAAW5E,KAAM67D,IAKpE,CAJE,MAAO1kF,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmC,CAAE/3E,QAAOytB,qBAChD+iG,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CApCuE,EAoCtE,CAEM,SAAUolI,GAAuBntD,GAAA,IAAGvpE,SAAS,UAAE+e,EAAS,KAAE5E,IAAQovD,EAAA,mBACvE,IACE,IAAIyM,EAAU77D,EAEd,MAAMozE,EAAcpzE,EAAKha,IAAI,eACvBzL,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAEhC,GAAI30B,EAAc,GAAKpzE,EAAKha,IAAI,iBAAiB+U,OAASq4E,EAAc,EAAG,CACzE,MAAMC,QAAsBh2F,EAAAA,GAAAA,IAAK2tH,GAAYhrG,GAE7C67D,EAAUA,EAAQ32D,IAAI,gBAAiBmuE,EACzC,CAEA,MAAM+oC,GAAkBvgD,EAAQ71E,IAAI,mBAAoB5F,EAAAA,EAAAA,QAAO,KAAK65B,QAAQ4hD,GACtEpxF,GAAO2V,EAAAA,EAAAA,QAAO,CAClB1R,KAAM0tI,EAAe1wH,KAAIsuB,IACvB55B,EAAAA,EAAAA,QAAO,CACL,kBAAmB,CAACwkB,EAAU5e,IAAI,OAClCq2H,QAASriG,EAAGh0B,IAAI,MAChBgwC,aAAchc,EAAGh0B,IAAI,mBAGzB41H,UAAWhnE,EAAAA,GAAoBr6D,WAG3B8C,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2BD,GAEtC,MAAM6xI,EAAazgD,EAAQjhF,OAAO,cAAc8nB,GAAeA,EAAW1kB,QAAOgjH,GAAOA,EAAIh7G,IAAI,QAAU4e,EAAU5e,IAAI,gBAElH2hH,EAAAA,GAAAA,IAAI/hH,GAAAA,IAAuBxF,EAAAA,EAAAA,QAAO,CAACk8H,YACnC3U,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuC,CAC/CtqD,YACAsE,OAAQ2yD,EAAQ71E,IAAI,MACpB0yE,aAAcmD,EAAQ71E,IAAI,gBAAkB,IAMhD,CAJE,MAAO7O,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqC,CAAE/3E,QAAOytB,qBAClD+iG,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAxCyE,EAwCxE,CAEM,SAAU9I,GAAsBghF,GAAA,IAAGxpE,QAAStX,GAAa8gF,EAAA,mBAC9D,IACE,MAAM/gF,QAAgBw5H,EAAAA,GAAAA,IAAOC,EAAAA,KAEvBnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,EAA4B4D,EAASC,SAEzDo5H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsC,CAAE5gF,UAASsJ,SAAQrJ,gBAKrE,CAJE,MAAO4I,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoC,CAAE/3E,QAAO5I,uBACjDo5H,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAZgE,EAY/D,CAEM,SAAU3I,GAAwB8gF,GAAA,IAAGzpE,QAAStX,GAAa+gF,EAAA,mBAChE,IACE,MAAMhhF,QAAgBw5H,EAAAA,GAAAA,IAAOC,EAAAA,MAEvB,GAAE98H,SAAaoS,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8B4D,EAASC,SAE3Do5H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAwC,CAAE5gF,UAASrD,KAAIsD,gBAKnE,CAJE,MAAO4I,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsC,CAAE/3E,QAAO5I,uBACnDo5H,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAZkE,EAYjE,CAEM,SAAUnJ,GAAqBuhF,GAAA,IAAG1pE,QAAStX,GAAaghF,EAAA,mBAC7D,IACE,MACM9kF,EAAO,CACXu1B,KAAM,CACJwR,SAAU,CACRkoB,iBAAiB,EACjB8iF,iBAAiB,IAGrBzhH,KAAM,IACN28B,iBATsBowE,EAAAA,GAAAA,IAAOC,EAAAA,MAYzBnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2B6D,EAAa9D,SAE5Dk9H,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAoBhO,EAAOooB,aAE/B2nG,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqCt3E,UACzC+vH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmC3gF,GAK/C,CAJE,MAAO4I,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmC/3E,UACvCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAzB+D,EAyB9D,CAEM,SAAU19B,GAAyB+1G,GAAA,IAAG3pE,QAAS+e,GAAW4qD,EAAA,mBAC/D,MAAMitD,QAAuB3U,EAAAA,GAAAA,IAAOC,EAAAA,WAE9BJ,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAAS,QAAQipJ,MAC3B,MAAMlkC,QAA6BuvB,EAAAA,GAAAA,IAAOC,EAAAA,WACpCJ,EAAAA,GAAAA,IAAInvB,GAAAA,GAA2BD,UAC/BovB,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CACjCtlG,SAAU,KACVC,OAAQ,cAEJw0H,EAAAA,GAAAA,IAAI2E,GAAAA,GAAuB,CAAC,CAChCtuH,OAAQ4mB,EACRxiB,MAAOzC,EAAAA,GAAAA,eAEX,CAdiE,EAchE,CAEM,SAAUjmC,GAA8B+1G,GAAA,IAAG5pE,QAASmf,GAAOyqD,EAAA,mBAChE,MAAMgtD,QAAuB3U,EAAAA,GAAAA,IAAOC,EAAAA,WAC9BJ,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAAS,QAAQipJ,MAC3B,MAAMlkC,QAA6BuvB,EAAAA,GAAAA,IAAOC,EAAAA,WACpCJ,EAAAA,GAAAA,IAAInvB,GAAAA,GAA2BD,UAC/BovB,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CACjCtlG,SAAU,KACVC,OAAQ,cAEJw0H,EAAAA,GAAAA,IAAI2E,GAAAA,GAAuB,CAAC,CAChCtuH,OAAQgnB,EACR5iB,MAAOzC,EAAAA,GAAAA,qBAEX,CAbkE,EAajE,CAEM,SAAU7kC,GAAmB40G,GAAA,IAAG7pE,QAAS+e,GAAW8qD,EAAA,yBACnDi4C,EAAAA,GAAAA,IAAIz4C,EAAAA,MAEV,MAAMutD,QAAuB3U,EAAAA,GAAAA,IAAOC,EAAAA,WAC9BJ,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAAS,QAAQipJ,MAC3B,MAAMlkC,QAA6BuvB,EAAAA,GAAAA,IAAOC,EAAAA,WACpCJ,EAAAA,GAAAA,IAAInvB,GAAAA,GAA2BD,IACrC,MAAMr8D,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WAEpBJ,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CACjCtlG,SAAU,KACVC,OAAQ,cAGJw0H,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CAAC,CAClCx6F,OAAQ4mB,EAAUM,IAAI,YAAY,GAClC9iB,MAAOzC,EAAAA,GAAAA,gBAGT,MAAMwzB,EAAUvO,EAAU5e,IAAI,WAAW0F,KAAI0O,IAAS,CACpDltB,KAAM,OACNktB,QACAjqE,OAAQ+rF,EAAKl2B,IAAI,YACf/F,aAEE0nH,EAAAA,GAAAA,IAAInvB,GAAAA,GAA6BrlE,UACjCw0F,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CA3B2D,EA2B1D,CAEM,SAAUjsC,GAA2Bg2G,GAAA,IAAG9pE,QAAS+e,GAAW+qD,EAAA,yBAC3Dg4C,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAAS,GAAGoxC,EAAU5e,IAAI,uBACtC,CAFmE,EAElE,CAEM,SAAU02H,GAA8B9sD,GAAA,IAAG/pE,SAAS,UAAE+e,EAAS,SAAE+J,EAAQ,eAAEguG,IAAkB/sD,EAAA,mBAClG,IACE,MAAM1zC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBxtH,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAC1Br5H,EAAOigC,EAASjjB,KAAIyU,IACEA,EAAEna,IAAI,mBAAoB5F,EAAAA,EAAAA,QAAO,KACxDpC,QAAOg8B,IAAO2iG,GAAkBA,EAAel2G,IAAIuT,EAAGh0B,IAAI,SAC1D0F,KAAIsuB,IACH55B,EAAAA,EAAAA,QAAO,CACLi8H,QAASriG,EAAGh0B,IAAI,MAChBgwC,aAAchc,EAAGh0B,IAAI,eACrB,kBAAmB,CAAC4e,EAAU5e,IAAI,WAIhBi0B,SAAQ75B,EAAAA,EAAAA,QAAO,CACrCi8H,QAASl8G,EAAEna,IAAI,MACfgwC,aAAc71B,EAAEna,IAAI,eACpB,kBAAmB,CAAC4e,EAAU5e,IAAI,YAEnCghB,SAAQ,GAEL41G,EAAa9tG,KAAK+tG,KAAKnuI,EAAKqsB,KAAO,IACnC+hH,GAASC,EAAAA,GAAAA,IAAUruI,EAAMkuI,SAEzBjV,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4Bi2B,EAAKl2B,IAAI,mBAAoB,CAAEuwF,SAAU,SAE/E,IAAK,IAAI5oE,EAAI,EAAGA,EAAImvG,EAAO/hH,KAAM4S,GAAK,EAAG,CACvC,MAAMljC,EAAO,CACXiE,KAAMouI,EAAO92H,IAAI2nB,GACjBiuG,UAAWhnE,EAAAA,GAAoBr6D,UAG3B8C,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2BD,GAEtC,IAAI8rG,EAAWznE,KAAK+tG,MAAOlvG,EAAI,GAAKmvG,EAAO/hH,KAAQ,KACnDw7E,EAAW,GAAGA,WACRoxB,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4Bi2B,EAAKl2B,IAAI,mBAAoB,CAAEuwF,cACvE,CACA,MAAMv2E,EAAO2O,EAASjjB,KAAIyU,GAAKA,EAAEvlB,OAAO,cAAc8nB,GAAeA,EAAW1kB,QAAOgjH,GAAOA,EAAIh7G,IAAI,QAAU4e,EAAU5e,IAAI,kBAExH2hH,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAuBoa,UAC3B2nG,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4B,aAChC0hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuC,CAAEtqD,YAAW8zD,aAAchqF,EAAKqsB,OAKnF,CAJE,MAAO5jB,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqC,CAAEtqD,YAAWztB,iBACtDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAjDoG,EAiDnG,CAEM,SAAU8/E,KACf,IACE,MACMpB,SADWiyC,EAAAA,GAAAA,IAAOC,EAAAA,MACN/hH,IAAI,qCAChB4e,QAAkBkjG,EAAAA,GAAAA,IAAOC,EAAAA,KAE/B,OAAQlyC,GACN,IAAK,aAAc,CACjB,MAAMmnD,QAAyBlV,EAAAA,GAAAA,IAAOC,EAAAA,KAChCkV,QAAsBnV,EAAAA,GAAAA,IAAOC,EAAAA,IAAwBiV,GACrDE,QAAyBpV,EAAAA,GAAAA,IAAOC,EAAAA,KAChCoV,EAAkBF,EAAcj/H,QAAOo/H,IAA2E,IAArEF,EAAiB3jD,WAAU8jD,GAAMA,EAAGr3H,IAAI,QAAUo3H,EAAGp3H,IAAI,gBACtG3I,EAAAA,GAAAA,IAAKq/H,GAAgC,CAAE72H,QAAS,CAAE+e,YAAW+J,SAAUwuG,WACvExV,EAAAA,GAAAA,IAAIz4C,EAAAA,MACV,KACF,CACA,IAAK,QAAS,CACZ,MAAMr/E,QAAgBi4H,EAAAA,GAAAA,IAAOC,EAAAA,KACvB/nG,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,IAAwBl4H,SAC5CwN,EAAAA,GAAAA,IAAKq/H,GAAgC,CAAE72H,QAAS,CAAE+e,YAAW+J,SAAU3O,WACvE2nG,EAAAA,GAAAA,IAAIpwC,EAAAA,GAA+C1nF,UACnD83H,EAAAA,GAAAA,IAAIz4C,EAAAA,MACV,KACF,CACA,cACQy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,MAOhB,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA+C/3E,UACnDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUmmI,KACf,IACE,MAAMt4G,QAAc8iG,EAAAA,GAAAA,IAAOC,EAAAA,KAErBt9H,EAAO,CACXqb,KAAMkf,EAAMhf,IAAI,SAGlB,IAAIpO,EAGFA,EADEotB,EAAMhf,IAAI,YACG3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0Bs6B,EAAMhf,IAAI,MAAOvb,SAEhD4S,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0BD,SAG1Ck9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAyBt3E,UAC7B+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,KAKZ,CAJE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuB/3E,UAC3BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUomI,KACf,IACE,MAAMv4G,QAAc8iG,EAAAA,GAAAA,IAAOC,EAAAA,WAErB1qH,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0Bs6B,EAAMhf,IAAI,aAEzC2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2BlqD,UAC/B2iG,EAAAA,GAAAA,IAAI1hH,EAAAA,KAKZ,CAJE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAyB/3E,UAC7BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUn9B,WACT4+B,EAAAA,GAAAA,IAAM,KACZ,MAAM3N,QAAW68H,EAAAA,GAAAA,IAAOC,EAAAA,WAClB1qH,EAAAA,GAAAA,IAAKmgI,GAAAA,GAAgBvyI,EAC7B,CAEO,SAAUwyI,WACTtU,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA4BosD,GAC9C,CAEO,SAAUoC,WACTvU,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA8BphF,GAChD,CAEO,SAAU6vI,WACTxU,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA6BnhF,GAC/C,CAEO,SAAU6vI,WACTzU,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoCjhF,GACtD,CAEO,SAAU4vI,WACT1U,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAsCqtD,GACxD,CAEO,SAAUuB,WACT3U,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAqC7gF,GACvD,CAEO,SAAU0vI,WACT5U,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAuC1gF,GACzD,CAEO,SAAUwvI,WACT7U,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoClhF,GACtD,CAEO,SAAUiwI,WACT9U,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAmCz1G,GACrD,CAEO,SAAUykK,WACT/U,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwCx1G,GAC1D,CAEO,SAAUykK,WACThV,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA6Bp0G,GAC/C,CAEO,SAAUsjK,WACTjV,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAqCv1G,GACvD,CAEO,SAAU0kK,WACTlV,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAgD+H,GAClE,CAEO,SAAUqnD,WACTnV,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwBouD,GAC1C,CAEO,SAAUiB,WACTpV,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA0BquD,GAC5C,CAEO,SAAUiB,WACTrV,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA4Bl1G,GAC9C,CAEe,SAAU2wJ,WACjB3yH,EAAAA,GAAAA,IAAI,CACRomI,KACAC,KACAX,KACAC,KACAK,KACAC,KACAC,KACAC,KACAP,KACAC,KACAC,KACAC,KACAN,KACAa,KACAC,KACAC,MAEJ,CCnkBO,SAAUC,GAAe3vI,GAAA,IAAG+W,QAASs/E,GAAar2F,EAAA,mBACvD,IACE,MAAMrE,EAAO,CACXqb,KAAMq/E,EAAYn/E,IAAI,QACtB0U,WAAYyqE,EAAYn/E,IAAI,cAAc/F,QAG5C,GAAIklF,EAAYn/E,IAAI,MAAO,CACzB,MAAM04H,QAAuBrhI,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBy6F,EAAYn/E,IAAI,MAAOvb,SAC1Ek9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+BwvD,UACnC/W,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,KAAO,CACL,MAAMwvD,QAAuBrhI,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBD,SACnDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+BwvD,UACnC/W,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,OAEMy4C,EAAAA,GAAAA,KAAI5uK,EAAAA,EAAAA,MAKZ,CAJE,MAAOo+C,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6B/3E,UACjCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,MACZ,CACF,CAvByD,EAuBxD,CAEM,SAAUo3C,GAAiBk/E,GAAA,IAAGvpE,QAASu/E,GAAehW,EAAA,mBAC3D,UACQ/xE,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuB06F,SAE5BuiC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiCkW,UACrCuiC,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,KAAI5uK,EAAAA,EAAAA,MAKZ,CAJE,MAAOo+C,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B/3E,UACnCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,MACZ,CACF,CAZ6D,EAY5D,CAEM,SAAU6lL,WACTxV,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgCh/E,GAClD,CAEO,SAAU0uI,WACTzV,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA8BuvD,GAChD,CAEe,SAAUI,WACjB7mI,EAAAA,GAAAA,IAAI,CACR4mI,KACAD,MAEJ,CC7CO,MAAMG,GAA4B,CAAC,aAAc,qBAEjD,SAAU5lJ,GAAY4V,GAAA,IAAG+W,QAASma,GAAMlxB,EAAA,mBAC7C,MAAM0R,QAAqBsnH,EAAAA,GAAAA,IAAOC,EAAAA,KAElC,IAAyD,IAArD+W,GAA0BrgI,QAAQ+B,GACpC,OAGF,MAAMu+H,EAAa/+G,EAAKha,IAAI,SAAS0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAC9Cg5H,EAAkBh/G,EAAKha,IAAI,cAAc0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAExDytF,QAAgBq0B,EAAAA,GAAAA,IAAOC,EAAAA,IAAuB/nG,EAAKha,IAAI,OAE7D,IAAKytF,EACH,OAGF,MAAMwrC,EAAaxrC,EAAQztF,IAAI,SAAS0F,KAAIgC,GAAKA,EAAE1H,IAAI,QACjDk5H,EAAkBzrC,EAAQztF,IAAI,cAAc0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAEjE,GACE+4H,EAAW/7G,OAAOwD,QAAQqhD,OAAOo3D,EAAWj8G,OAAOwD,UAChDw4G,EAAgBh8G,OAAOwD,QAAQqhD,OAAOq3D,EAAgBl8G,OAAOwD,SAEhE,OAGF,IAAI8yE,EAAcylC,EAEG,eAAjBv+H,IACF84F,EAAc0lC,GAGZ1lC,EAAYnrF,YACdmrF,GAAcl5F,EAAAA,EAAAA,QAAO,EAAE,KAGzB,MAAM++H,QAAwBrX,EAAAA,GAAAA,IAAOC,EAAAA,KAC/BqX,EAAkB9lC,EAAYt7F,QAAO+0B,IAAOosG,EAAgB5kH,SAASwY,KAE3E,IAAIwmE,GAAgBp+F,EAAAA,EAAAA,KAAI,CAAC,GACzB,IAAK,IAAIwyB,EAAI,EAAGA,EAAIyxG,EAAgBrkH,KAAM4S,GAAK,EAAG,CAChD,MAAM0xG,QAA0BvX,EAAAA,GAAAA,IAAOC,EAAAA,IAAgCqX,EAAgBp5H,IAAI2nB,WACpF0xG,EAAkB5oF,KAEzB,MAAM7+C,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAY20I,GAElCznI,EAAOutB,OAAO,KAChBo0E,EAAgBA,EAAcr0E,IAAIttB,EAAOutB,OAAO,GAAGl6B,IAAImV,EAAAA,EAAAA,QAAO,IAAKxI,EAAOutB,OAAO,GAAInF,KAAMpoB,EAAOutB,OAAO,GAAGnF,KAAKtU,KAAIqnB,GAAMA,EAAG9nC,cACxH08H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuBt3E,IAErC,OAEM+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqB,CAAEoqB,cAAaC,gBAAerwE,OAAQlJ,EAAKha,IAAI,SAE9E,MAAMyzC,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,KAC1BnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAY,IAAK+uD,EAAY1+B,KAAM,UACvD4sG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyBt3E,GACrC,CAzD+C,EAyD9C,CAgIM,SAAUliB,GAAU05F,GAAA,IAAGvpE,QAASma,GAAMovD,EAAA,mBACvCpvD,EAAKtX,MAAM,CAAC,QAAS,wBAnBpB,UAA8BsX,GACnC,UACQ2nG,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAmB9uE,EAAAA,EAAAA,QAAO,CAAC4f,MAErC,MAAMv1B,EAAO,CACXggG,UAAWzqE,EAAKha,IAAI,oBAGhB3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAAyBs1B,EAAKha,IAAI,MAAOvb,SAE9Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0BlvD,GAKtC,CAJE,MAAO7oB,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB/3E,UAC5BwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,MACZ,CACF,CAIW42C,CAAoBswB,SAhIxB,UAA4BA,GACjC,IACE,MAAMxC,QAA4BsqG,EAAAA,GAAAA,IAAOC,EAAAA,KACnCuX,QAAsBxX,EAAAA,GAAAA,IAAOC,EAAAA,IAA6C/nG,EAAKha,IAAI,OACnFu5H,EAAcD,IAAkBA,EAAcnxH,UAE/CqP,UACGmqG,EAAAA,GAAAA,IAAIz4C,GAAAA,OAGZ,MAAMqkB,QAAsBu0B,EAAAA,GAAAA,IAAOC,EAAAA,KAC7ByX,QAAkB1X,EAAAA,GAAAA,IAAOC,EAAAA,KACzB0X,EAA+C,YAA5Bz/G,EAAKha,IAAI,gBAAgCwX,EAE5DuhH,EAAa/+G,EAAKha,IAAI,SAAS0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAC9Cg5H,EAAkBh/G,EAAKha,IAAI,cAAc0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAExDotF,EAAcpzE,EAAKha,IAAI,eAC7B,IAAIqtF,EAAgBrzE,EAAKha,IAAI,iBAG3BotF,EAAc,GACXC,EAAct4E,OAASq4E,EAAc,IACpCqsC,IACAF,EAEJlsC,QAAsBh2F,EAAAA,GAAAA,IAAK2tH,GAAYhrG,IAC9By/G,GAAoBF,KAC7BlsC,GAAgBjzF,EAAAA,EAAAA,QAAO,KAGzB,MAAM3V,EAAO,CACXurD,aAAch2B,EAAKha,IAAI,eACvB05H,iBAAkB1/G,EAAKha,IAAI,mBAC3B25H,SAAUZ,EACVa,eAAgBZ,EAChBlpF,SAAU91B,EAAKha,IAAI,YACnBmtF,OAAQnzE,EAAKha,IAAI,UACjB65H,kBAAmB7/G,EAAKha,IAAI,mBAC5B85H,QAAS9/G,EAAKha,IAAI,WAClB+5H,SAAU//G,EAAKha,IAAI,YACnBg6H,iBAAkBhgH,EAAKha,IAAI,mBAC3BiiF,QAASjoE,EAAKha,IAAI,WAClB+vC,KAAM/1B,EAAKha,IAAI,QACf2kF,SAAU3qE,EAAKha,IAAI,YACnBiwC,IAAKj2B,EAAKha,IAAI,eACd6tF,MAAON,EACP0sC,sBAAuBjgH,EAAKha,IAAI,uBAChC4uH,SAAUp3G,EACV0iH,WAAYV,EACZW,mBAAoB9sC,EAAc3nF,KAAIyU,GAAKA,EAAEna,IAAI,QAAO/F,QAGtD+f,EAAKha,IAAI,0BACJvb,EAAKsrD,KAGd,IAAM/1B,KAAM67D,SAAkBx+E,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBs1B,EAAKha,IAAI,MAAOvb,GA2BnE,GAzBAoxF,GAAUz7E,EAAAA,EAAAA,QAAOy7E,GAGjBA,EAAUA,EAAQppD,MAAM,CACtB4gE,cAAerzE,EAAKha,IAAI,iBACxBotF,YAAapzE,EAAKha,IAAI,eACtB2tF,MAAO9X,EAAQ71E,IAAI,SAASkf,IAAI,gBAAiBlF,EAAKtX,MAAM,CAAC,QAAS,4BAGzCo/G,EAAAA,GAAAA,IAAOC,EAAAA,IAA4B/nG,EAAKha,IAAI,gBAGnE2hH,EAAAA,GAAAA,IAAIpwC,EAAAA,IAA8Cn3E,EAAAA,EAAAA,QAAO,CAACy7E,OAG7Dr+D,GAGEwC,EAAKtX,MAAM,CAAC,QAAS,0BAClBi/G,EAAAA,GAAAA,IAAInwC,EAAAA,GAAgCqE,WAGtC8rC,EAAAA,GAAAA,IAAIz4C,GAAAA,aANJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0BlvD,IASlCxC,GAAuBwC,EAAKtX,MAAM,CAAC,QAAS,kBAAmB,CACjE,IAAI03H,QAAiBtY,EAAAA,GAAAA,IAAOC,EAAAA,IAAuBlsC,EAAQ71E,IAAI,eAE/Do6H,EAAWA,EAASxlI,OAAO,iBAAiBo/B,GAAMA,EAAGtuB,KAAI20H,GACnDA,EAAIr6H,IAAI,QAAU61E,EAAQ71E,IAAI,MACzBq6H,EAAIn7G,IAAI,WAAY22D,EAAQ71E,IAAI,aAGlCq6H,YAGH1Y,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAmB9uE,EAAAA,EAAAA,QAAO,CAACggI,KACvC,YACQzY,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAmB9uE,EAAAA,EAAAA,QAAO,CAACy7E,YAGjC8rC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0B2M,GAKtC,CAJE,MAAO1kF,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB,CAAE/3E,QAAO6oB,gBACrC2nG,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,MACZ,CACF,CAwBWwnL,CAAkBtgH,EAE7B,CAN6C,EAM5C,CAEM,SAAUrwB,GAAU0/E,GAAA,IAAGxpE,QAASma,GAAMqvD,EAAA,mBAC3C,IACE,MAAMkkB,QAAsBu0B,EAAAA,GAAAA,IAAOC,EAAAA,KAC7ByX,QAAkB1X,EAAAA,GAAAA,IAAOC,EAAAA,KAEzBxkE,EAAUvjC,EAAKha,IAAI,SAAS0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAC3C0zE,EAAe15D,EAAKha,IAAI,cAAc0F,KAAIgC,GAAKA,EAAE1H,IAAI,QAE3D,IAAIvb,EAAO,CACTurD,aAAch2B,EAAKha,IAAI,eACvB05H,iBAAkB1/G,EAAKha,IAAI,mBAC3B25H,SAAUp8E,EACVq8E,eAAgBlmD,EAChB5jC,SAAU91B,EAAKha,IAAI,YACnBu6H,WAAYvgH,EAAKha,IAAI,aACrBjV,KAAMivB,EAAKha,IAAI,QACfw6H,eAAgBxgH,EAAKtX,MAAM,CAAC,cAAe,OAC3Co3H,QAAS9/G,EAAKha,IAAI,WAClB+5H,SAAU//G,EAAKha,IAAI,YACnBg6H,iBAAkBhgH,EAAKha,IAAI,mBAC3BiiF,QAASjoE,EAAKha,IAAI,WAClB+vC,KAAM/1B,EAAKha,IAAI,QACf2kF,SAAU3qE,EAAKha,IAAI,YACnBiwC,IAAKj2B,EAAKha,IAAI,eACd6tF,MAAON,EACP2sC,WAAYV,GAGd,MAAMhiH,QAA4BsqG,EAAAA,GAAAA,IAAOC,EAAAA,KACnC1qG,QAAuByqG,EAAAA,GAAAA,IAAOC,EAAAA,KAEpC,GAAIvqG,EAAqB,CACvB,MAAMsoE,QAAoBgiC,EAAAA,GAAAA,IAAOC,EAAAA,KAEjCt9H,EAAO,IACFA,EACHo1I,kBAAmB/5C,EAAY9/E,IAAI,mBACnCy6H,aAAc,CACZxrF,WAAY6wC,EAAY9/E,IAAI,aAC5BkvC,SAAU4wC,EAAY9/E,IAAI,WAC1B06H,qBAAsB56C,EAAY9/E,IAAI,sBAG5C,MAAWga,EAAKha,IAAI,SAAS+U,OAC3BtwB,EAAO,IAAKA,EAAMo1I,kBAAmB7/G,EAAKha,IAAI,SAAS8gB,QAAQ9gB,IAAI,qBAGrE,IAAMga,KAAM67D,SAAkBx+E,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBD,SAE7Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgB,CAAC2M,WACrB8rC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0B2M,IACpCA,QAAgBisC,EAAAA,GAAAA,IAAOC,EAAAA,IAAuBlsC,EAAQ5wF,IAElDuyB,QACImqG,EAAAA,GAAAA,IAAInwC,EAAAA,GAAgCqE,IACjCx+D,QACHsqG,EAAAA,GAAAA,IAAIpwC,EAAAA,GAA0C,CAACsE,EAAQ71E,IAAI,eAE3D2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,WAGNy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB/3E,UAC5BwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,MACZ,CACF,CAnE6C,EAmE5C,CAEM,SAAUo9B,KACf,MAAM8pC,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,KAEtB/nG,EAAKha,IAAI,YACL2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwBlvD,UAE5B2nG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwBlvD,GAEtC,CAEO,SAAU/zB,GAAkBqjF,GAAA,IAAGzpE,SAAS,KAAEC,EAAI,WAAE66H,IAAcrxD,EAAA,mBACnE,UACQq4C,EAAAA,GAAAA,IAAIz4C,GAAAA,MAEV,MAAMzkF,EAAO,CACXqb,KAAM,IAAIA,KACV86H,YAAaD,IAGT,OAAE/oI,SAAiByF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2BD,SAEnDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkCt3E,GAG9C,CAFE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC,IAC9C,CACF,CAfqE,EAepE,CAEM,SAAUzgF,GAAU8gF,GAAA,IAAG1pE,QAAS3Q,GAAMq6E,EAAA,mBAC3C,MAAMvvD,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,IACE,MAAMp5H,EAAW,CACf,CACEI,IAAK,OACLC,MAAOkG,GAET,CACEnG,IAAK,aACLC,MAAO4qB,MAAS+zD,IAAI,EAAG,QAAQkzD,gBAI7BjpI,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBiE,SAEpCg5H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0Bt3E,KAEG,IAAnCooB,EAAKha,IAAI,uBAAgD,oBAAd9Q,EAAKhI,aAC5Cy6H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgCh6E,IAM9C,CAJE,MAAOiC,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB/3E,UAC5BwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,MACZ,CACF,CA1B6C,EA0B5C,CAEM,SAAUgoL,GAAetxD,GAAA,IAAG3pE,QAAS3Q,GAAMs6E,EAAA,mBAChD,IACE,MAAM7gF,EAAW,CACf,CACEI,IAAK,OACLC,MAAOkG,GAET,CACEnG,IAAK,aACLC,MAAO4qB,MAAS+zD,IAAI,EAAG,QAAQkzD,gBAI7BjpI,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBiE,SAEpCg5H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+Bt3E,GAK3C,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6B/3E,UACjCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,MACZ,CACF,CArBkD,EAqBjD,CAEM,SAAU2mB,GAAcgwG,GAAA,IAAG5pE,QAASma,GAAMyvD,EAAA,mBAC3CzvD,UACI2nG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqBlvD,IAEnC,CAJiD,EAIhD,CAEM,SAAUlzB,GAAO4iF,GAAA,IAAG7pE,QAASma,GAAM0vD,EAAA,mBACxC,IACE,MAAM93E,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAas1B,EAAKha,IAAI,aAC1C2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuB,CAAEukB,QAASzzE,EAAM67D,QAASjkF,EAAOooB,OAapE,CAZE,MAAO7oB,GAGP,SAFMwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqB/3E,IAE3BA,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,WAAoB,CACvD,MAAMpmE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WACpBJ,EAAAA,GAAAA,KAAIjuK,EAAAA,EAAAA,IAAoBwiF,EAAKl2B,IAAI,mBACzC,YACQ2hH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,aAGN6uK,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACF,CAjB0C,EAiBzC,CAEM,SAAUj6E,GAAkB06E,GAAA,IAAG9pE,QAAS3Q,GAAMy6E,EAAA,mBACnD,MAAMzzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAwBwK,SAC5CyyH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkCt3E,IAExCA,QACI+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2Bt3E,UAE/B+vH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,EACT54B,KAAM7Z,EAAKl2B,IAAI,uBAYvB,CARE,MAAO7O,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgC/3E,UACpCwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,EACT54B,KAAM7Z,EAAKl2B,IAAI,uBAGrB,CACF,CAzBqD,EAyBpD,CAEM,SAAU+6H,KACf,IACE,MAAMr4C,QAAqBo/B,EAAAA,GAAAA,IAAOC,EAAAA,KAC5Br1B,QAAuBo1B,EAAAA,GAAAA,IAAOC,EAAAA,KAE9Bt9H,EAAO,CACXqrD,SAAU4yC,EAAa1iF,IAAI,YAC3Bg7H,cAAet4C,EAAahgF,MAAM,CAAC,WAAY,YAC/C2zH,QAAS3zC,EAAa1iF,IAAI,MAC1B/D,KAAMywF,EAAe1sF,IAAI,QACzB+vC,KAAM2yC,EAAa1iF,IAAI,QACvBi7H,YAAavuC,EAAe1sF,IAAI,cAChCk7H,WAAYxuC,EAAe1sF,IAAI,aAC/Bm7H,oBAAqBzuC,EAAe1sF,IAAI,uBAGpC,QAAEiiF,EAAO,gBAAEm5C,SAA0B/jI,EAAAA,GAAAA,IAAK3S,GAAAA,GAAmBD,SAC7Dk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC,CAAE9sE,MAAO,kBAAmBpT,MAAOoyI,WACzEzZ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC,CAAE9sE,MAAO,UAAWpT,MAAOi5F,WAEjE0/B,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAOlyE,SACD2qH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8BlyE,UAClC2qH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU4hD,UACd2qH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,MACZ,CACF,CACO,SAAUuoL,WACTlY,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+B6xD,GACjD,CAEO,SAAUO,WACTnY,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyBx5F,GAC3C,CAEO,SAAU6rJ,WACTpY,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyBv/E,GAC3C,CAEO,SAAU6xI,WACTrY,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkBh5F,GACpC,CAEO,SAAUurJ,WACT3S,EAAAA,GAAAA,IAAS,IAAK5/C,GAAAA,GAAiCjjF,GACvD,CAEO,SAAUy1I,WACTvY,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyBzgF,GAC3C,CAEO,SAAUkzI,WACTxY,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA8B4xD,GAChD,CAEO,SAAUc,WACTzY,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4BzvG,GAC9C,CAEO,SAAUoiK,WACT1Y,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAsBpiF,GACxC,CAEO,SAAUg1I,WACTvY,EAAAA,GAAAA,IAAWr6C,GAAAA,GAA2Bh2F,GAC9C,CAEO,SAAU6oJ,WACT5Y,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiCj6E,GACnD,CAEe,SAAU+sI,WACjBhqI,EAAAA,GAAAA,IAAI,CACRqpI,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CC1eA,WAAqBr3I,GAAAA,GACnB,MACA,aACAA,GAAAA,GACA,CAAC,GACD,GCJF,MAAMu3I,IAAU5oD,EAAAA,GAAAA,KAEhB,OAAe7M,GACE,yBAAXA,EACK9hF,GAAAA,GACL,CACEw3I,YAAa,CACXC,qBAAsB,wCACtBC,aAAc,8CACd/9B,QAAS,gDACTC,SAAU,CACRx+F,KAAM,iBACNoiE,KAAM,uCAGVm6D,QAAS,CACPC,WAAY,mDAMb53I,GAAAA,GACL,MACA,mDAAmD8hF,mBAAwBy1D,KAC3Ev3I,GAAAA,GACA,CAAC,GACD,GACA0M,KAAK1M,GAAAA,ICpBF,SAAU1kB,KACf,IACE,MAAM+/B,QAAe1I,EAAAA,GAAAA,IAAK+yD,GAAqB9zD,OAAOkD,SAASq0G,gBACzD8T,EAAAA,GAAAA,IAAI/lC,GAAyB77E,IAE/BA,EAAOw8H,4BACH5a,EAAAA,GAAAA,KAAI19H,EAAAA,EAAAA,IAAgB,CAAEy4G,aAAc38F,EAAOw8H,uBAEvC,CAAZ,MAAOvlI,GAAK,OAGR2qH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6B,CACrC1yE,MAAOF,OAAOG,WACdC,OAAQJ,OAAOK,eAGjB,IACE,MAAM,MAAE+kF,SAAgBrkF,EAAAA,GAAAA,IAAKie,UACvBqsG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4BwS,GAGxC,CAFE,MAAO1kF,SACD2qH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B,WACxC,CACF,CAEO,SAAU7e,KACf,MAAMqzC,QAAgBokB,EAAAA,GAAAA,IAAOC,EAAAA,KACvBr7C,QAAco7C,EAAAA,GAAAA,IAAOC,EAAAA,KACrBhtE,QAAe+sE,EAAAA,GAAAA,IAAOC,EAAAA,IAM5B,GAJIr7C,IACF9tE,SAAS8tE,MAAQA,GAGfg3B,EAAS,CACS9kG,SAASS,eAAe,gBAChCR,aAAa,OAAQ6kG,EACnC,OAEMrmG,EAAAA,GAAAA,IAAKq9H,GAAAA,GAAmB3/E,EAAO/0C,IAAI,WAC3C,CAEO,SAAUw8H,WACTrZ,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyBlpG,GAC3C,CAEO,SAAUy8J,WACTtZ,EAAAA,GAAAA,IAAUvnC,GAA0BvxB,GAC5C,CAEe,SAAUqyE,WACjB1qI,EAAAA,GAAAA,IAAI,CACRwqI,KACAC,MAEJ,CCxDA,MA2BMp8J,GAAgByoB,IAA+B,IAA9B,KAAE5B,EAAI,QAAE6lD,EAAO,OAAEn7C,GAAQ9I,EAC9C,GAAIikD,EAAS,CACX,GAAI,CAAC,OAAQ,uBAAuBt0C,QAAQvR,IAAS,EACnD,OAAOy6H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiCt3E,IAG9C,GAAa,QAAT1K,EACF,OAAOy6H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgCt3E,IAG7C,GAAa,QAAT1K,EACF,OAAOy6H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgCt3E,IAG7C,GAAa,SAAT1K,EACF,OAAOy6H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiCt3E,IAG9C,GAAa,QAAT1K,EACF,OAAOy6H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2Bt3E,GAE1C,CAEA,OAAO+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsBt3E,GAAQ,EAGrCxxB,GAAcA,CAACu8J,EAAOxrI,IACtBwrI,GACKhb,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyB/3E,KAG/BwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoB/3E,IAG1B,SAAUyrI,GAAQxzD,GAAA,IAAGvpE,SAAS,KAAE3Y,EAAI,QAAE6lD,EAAO,aAAEhnD,EAAY,KAAEkW,IAAQmtE,EAAA,mBAC1E,IACE,IAAIyzD,QAAmB/a,EAAAA,GAAAA,IAAOC,EAAAA,IAAyB76H,EAAM6lD,EAAS9wC,GAEtE,GAAIlW,EAAc,CAChB,MAAM0tD,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,IAAgC76H,GAC1D0K,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAkB+uD,GACtC7uD,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KAC9B8a,EAAa,IAAKA,EAAY7iH,KAAMpoB,EAAQ8hC,SAAU9hC,EAAQhN,WAChE,CAEKmoD,UACG40E,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsB2zD,KAGlC,MAAMjrI,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAiBm4I,GAEtC9vF,UACG40E,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJt2E,EAAAA,GAAAA,IAAM,YAGRvyB,GAAc,CAAE6mB,OAAM6lD,UAASn7C,UAKvC,CAJE,MAAOT,SACD/wB,GAAqB,QAAT8mB,GAAkB6lD,EAAS57C,SACvCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA+B9O,UACnCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CA5B4E,EA4B3E,CAEM,SAAU2rI,GAAwBzzD,GAAA,IAAGxpE,SAAS,sBAAEk9H,IAAyB1zD,EAAA,mBAC9E,IACE,IAAIwzD,EAAa,CAAEG,cAAeD,EAAsB/8H,IAAI,OAE5D,GAAI+8H,EAAsB/8H,IAAI,cAAe,CAC3C,MAAMi9H,QAAkBnb,EAAAA,GAAAA,IAAOC,EAAAA,KAC/B8a,EAAa,IAAKA,KAAeI,EACnC,MAAO,GAAIF,EAAsB/8H,IAAI,cAAe,CAClD,MAAMk9H,QAAkBpb,EAAAA,GAAAA,IAAOC,EAAAA,KAC/B8a,EAAa,IAAKA,KAAeK,EACnC,MAAO,GAAIH,EAAsB/8H,IAAI,eAAgB,CACnD,MAAMm9H,QAAmBrb,EAAAA,GAAAA,IAAOC,EAAAA,KAChC8a,EAAa,IAAKA,KAAeM,EACnC,OAEMxb,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsB2zD,IAEhC,MAAMjrI,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAiBm4I,SACrClb,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJt2E,EAAAA,GAAAA,IAAM,WACNvyB,GAAc,CAAEuxB,iBAChB+vH,EAAAA,GAAAA,IAAIyb,EAAAA,KAKZ,CAJE,MAAOjsI,SACD/wB,IAAY,EAAO+wB,SACnBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA+B9O,UACnCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CA3BgF,EA2B/E,CAEM,SAAUksI,KACf,UACQ1b,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC,wBAC9C,MAAMz1B,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,KAC1BhtG,QAAa+sG,EAAAA,GAAAA,IAAOC,EAAAA,KAEpBt9H,EAAO,CACXyC,KAAM,sBACN4xD,cAAe,IAAKrF,EAAY1+B,eAG5B4sG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsBzkF,IAEhC,MAAMmN,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAiBD,SACrCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJt2E,EAAAA,GAAAA,IAAM,WACNvyB,GAAc,CAAEuxB,UAKxB,CAJE,MAAOT,SACD/wB,IAAY,EAAO+wB,SACnBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA+B9O,UACnCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUmsI,GAAch0D,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,mBACzC,MAAM92E,QAAgBsvH,EAAAA,GAAAA,IAAOC,EAAAA,KAE7B,IAAIwb,EAEJ,GAAI19H,IAAYA,EAAQ9Z,aAAc,CAEpCw3I,EAvJsBC,EAACxjH,EAAM9yB,KAC/B,IAAIq2I,EAAWvjH,EAAKtO,QAAO,CAACoX,EAAG3I,KAC7B,IAAIvoB,EAaJ,MAXa,QAAT1K,GACF0K,EAASkxB,EAAI,IACblxB,GAAwC,IAA9BuoB,EAAEna,IAAI,iBAAiB+U,MACkB,IAA1CoF,EAAEzX,MAAM,CAAC,cAAe,eACjC9Q,EAASkxB,EAAI,EACblxB,GAAyC,GAA9BuoB,EAAEna,IAAI,iBAAiB+U,OAElCnjB,EAASkxB,EAAI,GACblxB,GAAyC,IAA9BuoB,EAAEna,IAAI,iBAAiB+U,MAG7BnjB,CAAM,GACZ,GAIH,OAFA2rI,EAAWz0G,KAAKu3E,MAAMk9B,GAEjBA,GACI,CAGM,EA+HFC,OADQ1b,EAAAA,GAAAA,IAAOC,EAAAA,KACSvvH,EAAQwN,IAAI,kBACjD,KAAO,CACL,MAAMmiF,QAAmB2/B,EAAAA,GAAAA,IAAOC,EAAAA,KAEhCwb,EAAyB,KADLp7C,EAAa,IAAQ,IAAQA,EAEnD,CAEA,MAAMmO,EAAO,IAAMitC,QACb5b,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4Bq0D,IAEtC,MAAME,EAAY7pH,MAElB,OAAS,CACP,MAAMy8E,EAAcz8E,MAAS8pH,KAAKD,EAAW,iBAEvC9b,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmC,CAC3ConB,OACAD,iBAGF,MAAM,SAAEstC,EAAQ,SAAEC,EAAQ,OAAEC,EAAM,OAAEC,SAAiB5P,EAAAA,GAAAA,IAAK,CACxDyP,UAAUxP,EAAAA,GAAAA,IAAKjlD,GAAAA,IACf00D,UAAUzP,EAAAA,GAAAA,IAAKjlD,GAAAA,IACf20D,QAAQ1P,EAAAA,GAAAA,IAAKjlD,GAAAA,IACb40D,QAAQ3P,EAAAA,GAAAA,IAAKjlD,GAAAA,IACbonB,MAAM19F,EAAAA,GAAAA,IAAM,OAGd,GAAI+qI,GAAYC,GAAYC,GAAUC,EAGpC,aAFMnc,EAAAA,GAAAA,IAAIz4C,GAAAA,MAEH,IAEX,CACF,CAzC2C,EAyC1C,CAEM,SAAU60D,KACf,MAAMC,QAAalc,EAAAA,GAAAA,IAAOC,EAAAA,KAG1B,WAFiCD,EAAAA,GAAAA,IAAOC,EAAAA,OAEbic,EAAM,CAC/B,MAAM5vC,QAAuB0zB,EAAAA,GAAAA,IAAOC,EAAAA,KAEb,QAAnB3zB,UACIuzB,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyB,CACjChiF,KAAM,MACN6lD,SAAS,MAIU,SAAnBqhD,UACIuzB,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B,CACvChiF,KAAM,OACN6lD,SAAS,MAIU,wBAAnBqhD,UACIuzB,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B,CACvChiF,KAAM,sBACN6lD,SAAS,MAIU,QAAnBqhD,UACIuzB,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8B,CACtChiF,KAAM,MACN6lD,SAAS,MAIU,QAAnBqhD,UACIuzB,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8B,CACtChiF,KAAM,MACN6lD,SAAS,MAIU,SAAnBqhD,UACIuzB,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B,CACvChiF,KAAM,OACN6lD,SAAS,KAGf,CACF,CAEO,SAAUtqE,WACT40B,EAAAA,GAAAA,IAAK0mI,GACb,CAEO,SAAUz7J,GAAQinG,GAAA,IAAG1pE,SAAS,GAAE0wC,EAAE,QAAEC,EAAO,KAAET,EAAI,WAAEq6D,EAAU,WAAEp+B,IAAczC,EAAA,mBAClF,IACE,IAAI94B,EAAO,KAEP25D,GAAcp+B,IAChBv7B,EAAO,GAAG25D,MAAep+B,MAG3B,MAAMiyD,QAAiBnc,EAAAA,GAAAA,IAAOC,EAAAA,IAAuBxxE,EAAIC,EAAST,EAAMU,GAClE7+C,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAcu5I,SAElCtc,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwBt3E,GAKpC,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsB/3E,UAC1BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA+B9O,UACnCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAnBoF,EAmBnF,CAEM,SAAUhK,GAAcqiF,GAAA,IAAG3pE,SAAS,GAAE0wC,EAAE,QAAEC,EAAO,KAAET,EAAI,WAAEq6D,EAAU,WAAEp+B,EAAU,aAAEt7B,IAAgB84B,EAAA,mBACtG,IACE,IAAI/4B,EAAO,KAEP25D,GAAcp+B,IAChBv7B,EAAO,GAAG25D,MAAep+B,MAG3B,MAAMiyD,QAAiBnc,EAAAA,GAAAA,IAAOC,EAAAA,IAAuBxxE,EAAIC,EAAST,EAAMU,EAAMC,GACxE9+C,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAoBu5I,SAExCtc,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8Bt3E,GAK1C,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B/3E,UAChCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA+B9O,UACnCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAnBwG,EAmBvG,CAEM,SAAU/J,GAAcqiF,GAAA,IAAG5pE,QAAS5a,GAAIwkF,EAAA,mBAC7C,UACQpyE,EAAAA,GAAAA,IAAK3S,GAAAA,GAAoBO,SACzB08H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8BjkF,GAK1C,CAJE,MAAOkM,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B/3E,UAChCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAT+C,EAS9C,CAEM,SAAU+sI,GAAoBx0D,GAAA,IAAG7pE,QAAS3Q,GAAMw6E,EAAA,mBACrD,IACE,GAAIx6E,EAAM,CACR,MAAMvG,EAAW,CACf,CACEI,IAAK,OACLC,MAAOkG,GAET,CACEnG,IAAK,aACLC,MAAO4qB,MAAS+zD,IAAI,GAAI,QAAQ15C,YAI9B,IAAEgiB,EAAG,SAAEhnD,SAAmBoO,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBiE,SAE/Cg5H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiC,CAAEj5B,MAAKhnD,oBAC5C04H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B,CACvChiF,KAAM,OACN6lD,SAAS,IAEb,CAKF,CAJE,MAAO57C,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC/3E,UACtCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CA3BuD,EA2BtD,CAEM,SAAUgtI,GAA2Bx0D,GAAA,IAAG9pE,QAAS3Q,GAAMy6E,EAAA,mBAC5D,IACE,GAAIz6E,EAAM,CACR,MAAMvG,EAAW,CACf,CACEI,IAAK,OACLC,MAAOkG,GAET,CACEnG,IAAK,aACLC,MAAO4qB,MAAS+zD,IAAI,GAAI,QAAQ15C,YAI9B,IAAEgiB,EAAG,SAAEhnD,SAAmBoO,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBiE,SAE/Cg5H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwC,CAAEj5B,MAAKhnD,oBACnD04H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B,CACvChiF,KAAM,OACN6lD,SAAS,IAEb,CAKF,CAJE,MAAO57C,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyC/3E,UAC7CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CA3B8D,EA2B7D,CAEM,SAAUpF,GAAW69E,GAAA,IAAG/pE,QAAS4pG,GAAO7/B,EAAA,mBAC7C,UACQ+3C,EAAAA,GAAAA,IAAIz4C,GAAAA,MACV,MAAMt3E,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAiB,CAAE+kH,gBACvCkY,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2Bt3E,GAIvC,CAHE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyB/3E,UAC7BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAT+C,EAS9C,CAEM,SAAUhxB,WACTk3B,EAAAA,GAAAA,IAAK0mI,GACb,CAEO,SAAU12I,KACf,IACE,MAAMuK,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,UAEpBi9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgCt3E,GAI5C,CAHE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8B/3E,UAClCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUitI,WACTjb,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0B0zD,UACpCzZ,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgC0zD,UAC1CzZ,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+B0zD,UACzCzZ,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+B0zD,UACzCzZ,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgC0zD,UAC1CzZ,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqB0zD,UAC/BzZ,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqBo0D,UAC/Bna,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqC4zD,UAC/C3Z,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqCo0D,UAC/Cna,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAsCm0D,UAChDla,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAsCo0D,GACxD,CAEO,SAAUe,WACTlb,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0BzmG,GAC5C,CAEO,SAAU67J,WACTnb,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkB5mG,GACpC,CAEO,SAAUi8J,WACTpb,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6B/hF,GAC/C,CAEO,SAAUq3I,WACTrb,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6B9hF,GAC/C,CAEO,SAAUq3I,WACTlb,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAmCg1D,GACtD,CAEO,SAAUQ,WACTnb,EAAAA,GAAAA,IAAWr6C,GAAAA,GAA0Ci1D,GAC7D,CAEO,SAAUQ,WACT7V,EAAAA,GAAAA,IAAS,IAAK5/C,GAAAA,GAA0Bn9E,GAChD,CAEO,SAAU6yI,WACTzb,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqC/oG,GACvD,CAEO,SAAU0+J,WACT1b,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+B7hF,GACjD,CAEe,SAAUy3I,WACjB9sI,EAAAA,GAAAA,IAAI,CACRosI,KACAC,KACAC,KACAG,KACAC,KACAC,KACAC,KACAC,KACAN,KACAC,MAEJ,CC5bO,SAAUO,GAAmBj2I,GAAA,IAAG+W,SAAS,SAAE3S,EAAQ,OAAEC,IAAUrE,EAAA,mBACpE,MAAMs6C,QAAc0+E,EAAAA,GAAAA,IAAOC,EAAAA,KAErBtuE,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,IAAyB70H,EAAUC,IAE3Du3F,SAAU9yF,SAAiByF,EAAAA,GAAAA,IAAK5K,GAAgB22C,EAAOqQ,SAEzDkuE,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmCt3E,GAC/C,CARsE,EAQrE,CAEM,SAAUotI,WACTzb,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAkC61D,GACrD,CAEe,SAAU/C,WACjBhqI,EAAAA,GAAAA,IAAI,CACRgtI,MAEJ,CCvBA,MAEaxrH,IAAQnpE,EAAAA,GAAAA,GAAa,YAErB2oD,KADY3oD,EAAAA,GAAAA,GAAa,iBAClBA,EAAAA,GAAAA,GAAa,YACpB40L,IAAW50L,EAAAA,GAAAA,GAAa,gBACxBgC,IAAYhC,EAAAA,GAAAA,GAAa,iB,gBCLtC,IAAI60L,IAAc,EAElB,MAAMrvD,GAASuvC,GAKN8f,IAAe9f,IAGXpsH,GAAOA,KAClBksI,IAAc,EACdrvD,IAAO,KACLsvD,GAAAA,GAAAA,WAAmB,eAAe,GAClC,EAESF,GAAW9nH,GAAY04D,IAAO,KACzCsvD,GAAAA,GAAAA,KAAa,CAAEC,QAAS,WAAYr0I,KAAMosB,GAAY7gB,OAAOkD,SAAS6lI,MAAO,IAElEC,GAAcA,CAACv2I,EAAKC,IAAU6mF,IAAO,IAAMsvD,GAAAA,GAAAA,IAAY,CAAE,CAACp2I,GAAMC,MAChEwqB,GAAQiuE,GAAQ5R,IAAO,IAAMsvD,GAAAA,GAAAA,MAAc19C,KClBjD,SAAUzuF,WACTqE,EAAAA,GAAAA,IAAKkoI,GACb,CAEO,SAAU/rH,GAAK1qB,GAAA,IAAG+W,QAAS2/H,GAAW12I,EAAA,yBACrCuO,EAAAA,GAAAA,IAAKkoI,GAAUC,EACvB,CAF6C,EAE5C,CAEM,SAAUP,GAAQ71D,GAAA,IAAGvpE,QAAS9U,GAAMq+E,EAAA,mBACzC,MAAMq2D,EAAY10I,EAAKqsB,QAAQ,mBAAoB,wBAC7C/f,EAAAA,GAAAA,IAAKkoI,GAAaE,EAC1B,CAH2C,EAG1C,CAEM,SAAUpzL,GAASg9H,GAAA,IAAGxpE,SAAS,IAAE9W,EAAG,MAAEC,IAASqgF,EAAA,yBAC9ChyE,EAAAA,GAAAA,IAAKkoI,GAAgBx2I,EAAKC,EAClC,CAFsD,EAErD,CAEM,SAAU02I,WACTvc,EAAAA,GAAAA,IAAUj6C,GAAcl2E,GAChC,CAEO,SAAU2sI,WACTxc,EAAAA,GAAAA,IAAUj6C,GAAe11D,GACjC,CAEO,SAAUosH,WACTzc,EAAAA,GAAAA,IAAUj6C,GAAkB+1D,GACpC,CAEO,SAAUY,WACT1c,EAAAA,GAAAA,IAAUj6C,GAAmB78H,GACrC,CAEe,SAAUyzL,WACjB9tI,EAAAA,GAAAA,IAAI,CACR0tI,KACAC,KACAC,KACAC,MAEJ,CCtCO,SAAUE,KACf,IACE,MAAM7pG,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBjlC,QAAoBglC,EAAAA,GAAAA,IAAOC,EAAAA,KAC3Bh8E,QAAsB+7E,EAAAA,GAAAA,IAAOC,EAAAA,KAEnC,IAAIt5F,EAAQ,KAEZ,GAAIsd,EAAe,CACjB,MAAMp9C,EAAW,CACf,CACEI,IAAK,OACLC,MAAO+8C,KAIL,IAAEkK,SAAc54C,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBiE,GAC3C8/B,EAAQwnB,CACV,CAEA,MAAMxrD,EAAO,CACXqb,KAAMg9E,EAAY98E,IAAI,QACtByoB,SAGF,IAAI72B,EACA64H,EAAiBv0F,EAAKl2B,IAAI,WAE1B88E,EAAY98E,IAAI,OAClByqH,EAAiBv0F,EAAKl2B,IAAI,WAC1BpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBo4F,EAAY98E,IAAI,MAAOvb,IAElEmN,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBD,SAGvCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B,CAAE4T,YAAalrF,WAClD+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM,MAAMn+C,EAAOkO,YAAY2qH,MAKvE,CAJE,MAAOt5H,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6B/3E,UACjCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUpE,KACf,IACE,MAAMmpC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBjlC,QAAoBglC,EAAAA,GAAAA,IAAOC,EAAAA,WAE3BJ,EAAAA,GAAAA,IAAIz4C,GAAAA,YAEJ7xE,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBo4F,EAAY98E,IAAI,aAE5C2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiC4T,EAAY98E,IAAI,cACrD2hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM,MAAM+sC,EAAY98E,IAAI,eAAek2B,EAAKl2B,IAAI,eAK5F,CAJE,MAAO7O,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B/3E,UACnCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUzE,GAAwB5D,GAAA,IAAG+W,SAAS,YAAEi9E,IAAeh0F,EAAA,mBACpE,IACE,MAAMo0F,QAAiB4kC,EAAAA,GAAAA,IAAOC,EAAAA,KAExBnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8Bo4F,EAAY98E,IAAI,MAAOk9E,EAASl9E,IAAI,aAEtF2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwC,CAAE4T,cAAanwF,WAAYuwF,EAASl9E,IAAI,MAAOg9E,uBAAwBprF,IAK3H,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsC,CAAE/3E,QAAO2rF,uBACnD6kC,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAZsE,EAYrE,CAEM,SAAUvE,GAA6Bw8E,GAAA,IAAGvpE,SAAS,YAAEi9E,EAAW,WAAEnwF,EAAU,YAAEqzI,IAAe52D,EAAA,mBAClG,IAKE,SAJM/xE,EAAAA,GAAAA,IAAK3S,GAAAA,GAAmCo4F,EAAY98E,IAAI,MAAOrT,SAE/Dg1H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6C,CAAE4T,cAAanwF,gBAElEqzI,EAAa,CACf,MAAM9pG,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WACpBJ,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM,MAAM+sC,EAAY98E,IAAI,eAAek2B,EAAKl2B,IAAI,eAC5F,CAKF,CAJE,MAAO7O,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2C,CAAE/3E,QAAO2rF,uBACxD6kC,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAfoG,EAenG,CAEM,SAAU8uI,WACT9c,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA8B62D,GAChD,CAEO,SAAUG,WACT/c,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgCn8E,GAClD,CAEO,SAAUozI,WACThd,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuCx8E,GACzD,CAEO,SAAU0zI,WACTjd,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4Ct8E,GAC9D,CAEe,SAAU+3H,WACjB3yH,EAAAA,GAAAA,IAAI,CACRiuI,KACAC,KACAC,KACAC,MAEJ,CCtHA,MAAM/7I,GAAYA,KAAMC,EAAAA,EAAAA,KAAeC,EAAAA,EAAAA,YAE1B87I,GAAgB57I,GAAQC,GAAAA,GACnC,GAAGL,2CACHI,GAGW67I,GAAiB77I,GAAQC,GAAAA,GACpC,GAAGL,kDACHI,GAGW87I,GAAiB97I,GAAQC,GAAAA,GACpC,GAAGL,oCACHI,GAGW+7I,GAAiBA,CAACv7I,EAAIR,IAASC,GAAAA,GAC1C,GAAGL,qCAA4CY,IAC/CR,GAGWg8I,GAAiBh8I,GAAQC,GAAAA,GACpC,GAAGL,2CACHI,GAGWi8I,GAAyBj8I,GAAQC,GAAAA,GAC5C,GAAGL,qDACHI,GAGWk8I,GAAyBl8I,GAAQC,GAAAA,GAC5C,GAAGL,8CACHI,GAGWm8I,GAAyBA,CAAC37I,EAAIR,IAASC,GAAAA,GAClD,GAAGL,+CAAsDY,IACzDR,GAGWo8I,GAAyB57I,GAAMP,GAAAA,GAC1C,GAAGL,+CAAsDY,KAG9C67I,GAAgCA,CAAC77I,EAAIR,IAASC,GAAAA,GACzD,GAAGL,+CAAsDY,iBAAmBR,GAGjEs8I,GAAwBA,CAAC97I,EAAI60H,IAAcp1H,GAAAA,GACtD,GAAGL,+CAAsDY,oBAAqB60H,KAGnEknB,GAAiBt4I,IAC5B,MAAMC,EAAW,IAAIC,SAGrB,OAFAF,EAAKG,SAAQC,IAAA,IAAC,IAAEC,EAAG,MAAEC,GAAOF,EAAA,OAAKH,EAASO,OAAOH,EAAKC,EAAM,IAErDtE,GAAAA,GACL,GAAGL,oDAA4DsE,EAChE,EAGUs4I,GAAwBv4I,GACnChE,GAAAA,GACE,GAAGL,0CAAkDqE,EAAM,QAIlDw4I,GAA2Bx4I,GACtChE,GAAAA,GACE,GAAGL,oDAA4DqE,EAAM,QAI5Dy4I,GAAmB18I,GAAQC,GAAAA,GACtC,GAAGL,gCACHI,GAGW28I,GAAmBA,CAACn8I,EAAI6a,IAASpb,GAAAA,GAC5C,GAAGL,iCAAwCY,IAC3C,CAAE6a,SAGSuhI,GAAmBp8I,GAAMP,GAAAA,GACpC,GAAGL,iCAAwCY,KAGhCq8I,GAAkBA,CAACr8I,EAAIR,IAASC,GAAAA,GAC3C,GAAGL,qCAA4CY,YAC/CR,GAGW88I,GAAuBA,CAACt8I,EAAIu8I,IAAU98I,GAAAA,GACjD,GAAGL,qCAA4CY,gBAAiBu8I,KAGrDC,GAAah9I,GAAQC,GAAAA,GAChC,GAAGL,uCACHI,GAGWi9I,GAA4Bj9I,GAAQC,GAAAA,GAC/C,GAAGL,uDAA+DI,GAGvDk9I,GAAwBl9I,GAAQC,GAAAA,GAC3C,GAAGL,mDAA2DI,GAGnDm9I,GAAyBn9I,GAAQC,GAAAA,GAC5C,GAAGL,oDAA4DI,GAGpDo9I,GAAuBA,IAAMn9I,GAAAA,GACxC,GAAGL,6CAGQy9I,GAAwBr9I,GAAQC,GAAAA,GAC3C,GAAGL,4CAAoDI,GAG5Cs9I,GAAyBt9I,GAAQC,GAAAA,GAC5C,GAAGL,2CAAmDI,GAG3Cu9I,GAAiBv9I,GAAQC,GAAAA,GACpC,GAAGL,mDAA2DI,GAGnDw9I,GAAyBx9I,GAAQC,GAAAA,GAC5C,GAAGL,oDAA4DI,GC3H1D,SAAUy9I,KACf,MAAMz9I,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,KAEpBnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBD,SAE3Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkCt3E,GAC9C,CAEO,SAAUuwI,GAAqBhxI,SAC9BwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgC/3E,UACpCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CAEO,SAAUixI,WACT/qI,EAAAA,GAAAA,IAAKqtH,GAAWwd,GAAqBC,GAC7C,CAEO,SAAUE,KACf,MAAM5xF,QAAaqxE,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,GAAItxE,EAAM,CACR,MACMhsD,EAAO,UADYq9H,EAAAA,GAAAA,IAAOC,EAAAA,KACFtxE,QACxB7+C,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBD,SAC3Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsCt3E,GAClD,CACF,CAEO,SAAU0wI,GAAyBnxI,SAClCwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC/3E,UACxCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CAEO,SAAUoxI,WACTlrI,EAAAA,GAAAA,IAAKqtH,GAAW2d,GAAyBC,GACjD,CAEO,SAAUE,GAAkB15I,GAAA,IAAG+W,QAAS5a,GAAI6D,EAAA,mBACjD,MAAM8I,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqBO,SAEzC08H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsCt3E,GAClD,CAJmD,EAIlD,CAEM,SAAU6wI,GAAoBtxI,SAC7BwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC/3E,UACxCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CAEO,SAAUpH,GAAgB8lF,SACzBx4E,EAAAA,GAAAA,IAAKqtH,GAAW8d,GAAoBC,GAAqB5yD,EACjE,CAEO,SAAU7oG,GAAmBoiG,GAAA,IAAGvpE,SAAS,WAAE6tB,EAAU,WAAEg1G,EAAU,UAAEC,EAAY,OAAQv5D,EAAA,mBAC5F,MAAMw5D,EAAgB,CAAC,CACrB5qI,OAAQ01B,EACRtxB,MAAOzC,EAAAA,GAAAA,cAGT,GAAIgpI,EAAW,CACb,MAAMxjH,QAAe2iG,EAAAA,GAAAA,IAAOC,EAAAA,KAC5B6gB,EAAc/wI,KAAK,CACjBmG,OAAQmnB,EAAO1X,MAAKo7H,GAAMA,EAAG7iI,IAAI,QAAQsU,gBAAkBquH,EAAUruH,gBACrElY,MAAOzC,EAAAA,GAAAA,UAEX,OAEMgoH,EAAAA,GAAAA,KAAI9/H,EAAAA,GAAAA,IAAa+gJ,UACjBzU,EAAAA,GAAAA,IAAK//I,GAAAA,UACLuzI,EAAAA,GAAAA,KAAInzI,EAAAA,GAAAA,IAAYk0J,GACxB,CAjB8F,EAiB7F,CAEM,SAAUz7J,GAA4BoiG,GAAA,IAAGxpE,SAAS,WAAE6iI,IAAcr5D,EAAA,mBACvE,MAAMy5D,QAA8BhhB,EAAAA,GAAAA,IAAOC,EAAAA,KACrCghB,QAAsBjhB,EAAAA,GAAAA,IAAOC,EAAAA,KAC7BihB,EAAqBF,EACxBp9H,KAAIzgB,GAAM89I,EAAct7H,MAAKimB,GAAcA,EAAW1tB,IAAI,QAAU/a,MACpEgV,OACAyL,KAAI1N,IAAU,CAAGA,QAAQoC,EAAAA,EAAAA,QAAOpC,GAASoE,MAAOzC,EAAAA,GAAAA,sBAE7CgoH,EAAAA,GAAAA,KAAI9/H,EAAAA,GAAAA,IAAamhJ,UACjB7U,EAAAA,GAAAA,IAAK//I,GAAAA,UACLuzI,EAAAA,GAAAA,KAAInzI,EAAAA,GAAAA,IAAYk0J,GACxB,CAXyE,EAWxE,CAEM,SAAUzyK,WACT0xJ,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAUphG,GAAqBwhG,GAAA,IAAGzpE,QAAS6tB,GAAY47C,EAAA,yBACtDq4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoCx7C,EAAW1tB,IAAI,OAC/D,CAF8D,EAE7D,CAEM,SAAU73B,KACf,MAAMkgD,QAAkBy5F,EAAAA,GAAAA,IAAOC,EAAAA,WACzBJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B7gD,GACxC,CAEO,SAAUr+B,GAAuBu/E,GAAA,IAAG1pE,QAASlT,GAAY48E,EAAA,mBAC9D,MAAMrzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAEpBpjC,SADoBmjC,EAAAA,GAAAA,IAAOC,EAAAA,MACC/hH,IAAI,iBAChC0tB,QAAmBo0F,EAAAA,GAAAA,IAAOC,EAAAA,KAC1BtjC,EAAO/wD,EAAWhrB,MAAM,CAAC,QAAS,6BAA+BgrB,EAAWhrB,MAAM,CAAC,WAAY,SAAUi8E,IAAkB,KAC3HhnE,QAAoBmqG,EAAAA,GAAAA,IAAOC,EAAAA,KAE3Bt9H,EAAO,CACX+oC,YAAa7gC,EACbs2I,aAAc,CACZC,WAAYx1G,EAAW1tB,IAAI,aAC3BmjI,UAAWz1G,EAAW1tB,IAAI,YAC1By+E,OACA8uB,OAAQ51F,EAAc,aAAe,gBAIzC,IACE,MAAM/lB,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6BgpC,EAAW1tB,IAAI,MAAOvb,SACvEk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8Ct3E,UAClD+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuC,CAAEx7C,aAAY+wD,gBACzDkjC,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,iBACf8oE,QAAS,YASb,CAPE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqC/3E,UACzCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM5+C,EAAMksG,SAASr7B,QACrB8G,QAAS,UAEb,CACF,CAlCgE,EAkC/D,CAEM,SAAUw3D,GAAc92D,GAAA,IAAG3pE,QAAS4pG,GAAOjgC,EAAA,mBAChD,IACE,MAAM/kF,EAAO,CACX2+I,aAAc,CACZ,CAAEhnI,MAAO,OAAQpT,MAAOygH,KAGtB73G,QAAeyF,EAAAA,GAAAA,IAAKgsI,GAAsC5+I,SAC1Dk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8Bt3E,GAI1C,CAHE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B/3E,UAChCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CACF,CAbkD,EAajD,CAEM,SAAUmyI,WACT/f,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAiCk5D,GACpD,CAEO,SAAUmB,WACTpgB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqCq5D,GACvD,CAEO,SAAUiB,WACTjgB,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAqCn/E,GACxD,CAEO,SAAU05I,WACTtgB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmBj5G,GACrC,CAEO,SAAUyzK,WACTngB,EAAAA,GAAAA,IAAWr6C,GAAAA,GAA6BliG,GAChD,CAEO,SAAU28J,WACTpgB,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAsCjiG,GACzD,CAEO,SAAU28J,WACTzgB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+BphG,GACjD,CAEO,SAAU+7J,WACT1gB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuB/gG,GACzC,CAEO,SAAU27J,WACTvgB,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAsCl/E,GACzD,CAEO,SAAU+5I,WACT5gB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6Bo3D,GAC/C,CAEe,SAAU3b,WACjB3yH,EAAAA,GAAAA,IAAI,CACRsxI,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAE,KACAD,KACAE,MAEJ,CCtNO,MAAMC,GAAcA,CAACthD,EAAcuhD,EAAcpkI,EAAS5S,KAC/D,MAAMi3I,EAAmBxhD,EAAayhD,OAAOnkI,IAAI,UAC3CuhB,EAAS1hB,EAAQihB,QAAQ9gB,IAAI,UAC7BnW,EAAUoD,GAAOg3I,EAAav+H,KAAIyU,GAAKA,EAAEna,IAAI,QAC7CokI,EAAcv6I,EAAQ4O,QAAQyrI,GAC9BG,EAAax6I,EAAQ4O,QAAQoH,EAAQihB,QAAQ9gB,IAAI,WAEvD,GAAIqkI,IAAeD,EAAa,CAC9B,MAAME,EAAsBD,EAAaD,EACnC38G,EAAQ68G,EAAsBF,EAAcC,EAC5C38G,EAAM48G,EAAsBD,EAAaD,EAQ/C,OANkBv6I,EAAQ+zC,MAAMnW,EAAOC,EAAM,GACPhiB,KAAIwd,IAAW9oB,EAAAA,EAAAA,QAAO,CAC1D8oB,SACA3B,YAIJ,CAEA,OAAOnnB,EAAAA,EAAAA,QAAO,CAAC,CAAC,GAAG,ECvBRmqI,GAAkB,SAACjxG,EAAakxG,EAAoBp2B,GAAK,IAAElnH,EAAI0D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,SAAQ,OACrF0oC,EAAY5tB,KAAIsZ,IACd,MAAMylH,EAAoB,WAATv9I,EAAoB,gBAAkB,EACvD,IAAI8yB,EAAOgF,EAAMhf,IAAI,QAmBrB,OAjByBga,EAAKtU,KAAIyU,GAAKA,EAAEzX,MAAM8hI,IAAuBC,IAAUjkH,QAG3DzL,KAAO,IAC1BiF,EAAOA,EAAKp3D,QAAOu3D,GACJ,WAATjzB,EACKizB,EAAEzX,MAAM8hI,IAAuBC,GAGhCtqH,EAAEzX,MAAM8hI,IAAuBC,GAAUn2I,WAAWgmB,gBAGhD,SAAV85F,IACFp0F,EAAOA,EAAKk4D,YAITlzD,EAAME,IAAI,OAAQlF,EAAKtU,KAAIyU,GAAKA,EAAEna,IAAI,QAAO,GACpD,ECRG,SAAUt2B,GAAiBof,GAAA,IAAG+W,QAASma,GAAMlxB,EAAA,mBAClD,MAAMo6B,EAASlJ,EAAKha,IAAI,MAExB,IACE,MAAMq9F,QAAiBhmG,EAAAA,GAAAA,IAAK3S,GAAAA,GAAkBw+B,GAExCrjB,GAAUzF,EAAAA,EAAAA,QAAO,CACrB8oB,SACA6sB,KAAMstD,EAASrjF,KAAK+1B,aAEhB4xE,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA4BrpE,GAGxC,CAFE,MAAO1O,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B/3E,GACtC,CACF,CAdoD,EAcnD,CAEM,SAAUuzI,KACf,IACE,MAAMp+I,QAAsBw7H,EAAAA,GAAAA,IAAOC,EAAAA,KACnC,IAAI4iB,QAAsBttI,EAAAA,GAAAA,IAAK3S,GAAAA,GAA4B4B,GAC3Dq+I,GAAgBvqI,EAAAA,EAAAA,QAAOuqI,GACvB,MAAMC,QAAuB9iB,EAAAA,GAAAA,IAAOC,EAAAA,KAC9B5sB,QAAgB2sB,EAAAA,GAAAA,IAAOC,EAAAA,KACvB8iB,GAAiBzqI,EAAAA,EAAAA,QAAO4pF,KAAkBmR,EAAQl7F,SAExD,IAAI6qI,GAAc,EAElB,KAAK/nD,EAAAA,EAAAA,IAAG4nD,EAAeC,GACrB,IAAI7nD,EAAAA,EAAAA,IAAG4nD,EAAeE,GACpBC,GAAc,MACT,OACCnjB,EAAAA,GAAAA,IAAIz4C,EAAAA,MAEV,MAAM67D,QAAiB7W,EAAAA,GAAAA,IAAK,CAC1B8W,QAAQ7W,EAAAA,GAAAA,IAAKjlD,EAAAA,IACbpzE,QAAQq4H,EAAAA,GAAAA,IAAKjlD,EAAAA,IACbr2E,SAASD,EAAAA,GAAAA,IAAM,QAGbmyI,EAASjvI,QAAUivI,EAASlyI,SAC9BiyI,GAAc,QACRztI,EAAAA,GAAAA,IAAK+0H,WAELzK,EAAAA,GAAAA,IAAIz4C,EAAAA,KAEd,CAGE47D,UACInjB,EAAAA,GAAAA,IAAIz4C,EAAAA,YAGNy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoBisB,GAIhC,CAHE,MAAOhkG,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuB/3E,UAC3BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUowF,KACf,IACE,MAAMj7F,QAAsBw7H,EAAAA,GAAAA,IAAOC,EAAAA,KAE7Bt9H,EAAO,CACXQ,GAAIqB,EACJ6uG,cAHoB2sB,EAAAA,GAAAA,IAAOC,EAAAA,YAMvB1qH,EAAAA,GAAAA,IAAK3S,GAAAA,GAAwBD,SAE7Bk9H,EAAAA,GAAAA,IAAIz4C,EAAAA,KAIZ,CAHE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqB/3E,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAU8zI,GAAuB77D,GAAA,IAAGvpE,QAASvZ,GAAe8iF,EAAA,mBACjE,UACQu4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B5iF,IAEpC,MAAMsL,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAoB4B,GAExC0zB,GAAOwZ,EAAAA,GAAAA,KAAep5B,EAAAA,EAAAA,QAAOxI,EAAOlJ,MAAM+kC,SAAQsF,GAAKA,EAAE/yB,IAAI,iBAE7D2hH,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAoBoa,EAAK/f,eAC7B0nH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuCt3E,UAC3C+vH,EAAAA,GAAAA,IAAIz4C,EAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqC/3E,UACzCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAhBmE,EAgBlE,CAEM,SAAU+zI,WACTvjB,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAEO,SAAUi8D,WACTxjB,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAEO,SAAUk8D,GAAU/7D,GAAA,IAAGxpE,QAASqjB,GAAQmmD,EAAA,mBAC7C,IACE,MAAM/iF,QAAsBw7H,EAAAA,GAAAA,IAAOC,EAAAA,KAE7Bt9H,EAAO,CACXQ,GAAIi+B,EACJmsB,gBAAiB/oD,SAGb+Q,EAAAA,GAAAA,IAAK3S,GAAAA,GAA+BD,SACpCk9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAyC,CAAEhmD,kBAC/Cy+F,EAAAA,GAAAA,IAAIz4C,EAAAA,KAGZ,CAFE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuC/3E,GACnD,CACF,CAf+C,EAe9C,CAEM,SAAU9lB,YACmBy2I,EAAAA,GAAAA,IAAOC,EAAAA,cAGjCJ,EAAAA,GAAAA,IAAIz4C,EAAAA,MAEd,CAEO,SAAU1+F,KACf,MACMqf,SADoBi4H,EAAAA,GAAAA,IAAOC,EAAAA,MACLt0F,SAAQrF,GAASA,EAAMpoB,IAAI,QAAQ0F,KAAI2/H,IAAYjrI,EAAAA,EAAAA,QAAO,CACpF8oB,OAAQmiH,EACR9jH,OAAQ6G,EAAM1lB,MAAM,CAAC,OAAQ,mBAEzBi/G,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoBr/E,GAChC,CAEO,SAAUnf,KACf,MACMmf,SADoBi4H,EAAAA,GAAAA,IAAOC,EAAAA,MACLt0F,SAAQrF,GAASA,EAAMpoB,IAAI,QAAQ0F,KAAI2/H,IAAYjrI,EAAAA,EAAAA,QAAO,CACpF8oB,OAAQmiH,EACR9jH,OAAQ6G,EAAM1lB,MAAM,CAAC,OAAQ,mBAEzBi/G,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoBr/E,GAChC,CAEO,SAAU5e,KACf,MACM4e,SADoBi4H,EAAAA,GAAAA,IAAOC,EAAAA,MACLt0F,SAAQrF,GAASA,EAAMpoB,IAAI,QAAQ0F,KAAI2/H,IAAYjrI,EAAAA,EAAAA,QAAO,CACpF8oB,OAAQmiH,EACR9jH,OAAQ6G,EAAM1lB,MAAM,CAAC,OAAQ,mBAEzBi/G,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoBr/E,GAChC,CAEO,SAAU1e,KACf,MACM0e,SADoBi4H,EAAAA,GAAAA,IAAOC,EAAAA,MACLt0F,SAAQrF,GAASA,EAAMpoB,IAAI,QAAQ0F,KAAI2/H,IAAYjrI,EAAAA,EAAAA,QAAO,CACpF8oB,OAAQmiH,EACR9jH,OAAQ6G,EAAM1lB,MAAM,CAAC,OAAQ,mBAEzBi/G,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoBr/E,GAChC,CAEO,SAAUve,KACf,MAAMgb,QAAsBw7H,EAAAA,GAAAA,IAAOC,EAAAA,KAC7B/nG,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,WAEpBJ,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoC,CAC5C5iF,gBACA0zB,SAEJ,CAEO,SAAUvuC,GAAyB69F,GAAA,IAAGzpE,SAAS,QAAEhW,EAAO,UAAE42F,EAAS,SAAEC,IAAYpX,EAAA,mBACtF,MAAM/nD,EAAS13B,EAAQi3B,QAAQ9gB,IAAI,UAC7BikI,QAAqBniB,EAAAA,GAAAA,IAAOC,EAAAA,IAAsCxgG,GAClE++D,QAA+BwhC,EAAAA,GAAAA,IAAOC,EAAAA,KAE5C,GAAIzhC,EAAuBn4E,gBACnBw5G,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B,CAAEr/E,UAAS42F,YAAWC,kBACxD,CACL,MAAM4kD,QAAuBjuI,EAAAA,GAAAA,IAAK2sI,GAAa1jD,EAAwB2jD,EAAcp6I,SAC/E83H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B,CAAEr/E,QAASy7I,EAAgB7kD,YAAWC,aAC/E,CACF,CAXwF,EAWvF,CAEM,SAAUx3G,KACf,MAAMq0E,QAAgBukE,EAAAA,GAAAA,IAAOC,EAAAA,WAEvBJ,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuB3rB,GACnC,CAEO,SAAUp0E,KACf,MAAMo0E,QAAgBukE,EAAAA,GAAAA,IAAOC,EAAAA,WAEvBJ,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqB3rB,GACjC,CAEO,SAAU36F,GAAM2mH,GAAA,IAAG1pE,SAAS,MAAEzD,EAAK,MAAEgyG,IAAS7kC,EAAA,mBAEnD,IAAIg8D,EAEJ,GAAc,UAAVnpI,EAAmB,CAErBmpI,SAD0BzjB,EAAAA,GAAAA,IAAOC,EAAAA,MACJn/J,QAAOmgI,GAAcA,EAAWrgF,MAAM,CAAC,OAAQ,cAL7D,kBAOD,SAAV0rG,IACFm3B,EAAiBA,EAAerzD,UAEpC,KAAO,CACL,MAAM5+C,QAAoBwuF,EAAAA,GAAAA,IAAOC,EAAAA,KAE3ByjB,GAA0E,IAArD,CAAC,kBAAmB,aAAa/sI,QAAQ2D,GACpE,IAAIooI,EAAqB,CAACpoI,GAEtBopI,IACFhB,EAAqB,CAAC,cAAyB,oBAAVpoI,EAA8B,OAASA,IAG9EmpI,EAAiBhB,GAAgBjxG,EAAakxG,EAAoBp2B,EACpE,OAEMuT,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuBq8D,GACnC,CAzBqD,EAyBpD,CAED,MAAME,GAAmBA,CAAClkH,EAAQ13B,IAAYA,EAAQ6b,KAAIyU,QAAiBrvB,IAAXy2B,EAAuBgxD,OAAOp4D,GAAK,GAAGoH,KAAUpH,MAEzG,SAAU/sC,GAAUo8F,GAAA,IAAG3pE,SAAS,OAAE0hB,EAAM,QAAE13B,EAAO,iBAAE65F,IAAoBla,EAAA,mBAC5E,IAAIia,EAAkBgiD,GAAiBlkH,EAAQ13B,GAC3C64F,QAAqBo/B,EAAAA,GAAAA,IAAOC,EAAAA,KAChC,MAEM2jB,SAFuB5jB,EAAAA,GAAAA,IAAOC,EAAAA,MAGjCr8G,KAAIigI,GAAQF,GAAiBE,EAAK3lI,IAAI,UAAW2lI,EAAK3lI,IAAI,cAC1DghB,SAAQ,GAEP0hE,EAAav6E,YACfs7E,EAAkBiiD,EACfvrF,WAAUzyC,GAAK+7E,EAAgBlvE,SAAS7M,YAGvCi6G,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAwB,CAAEua,kBAAiBC,sBAErDhB,QAAqBo/B,EAAAA,GAAAA,IAAOC,EAAAA,KAExBr/B,EAAa3tE,OAAS2wH,EAAmB3wH,aACrC4sG,EAAAA,GAAAA,IAAIz4C,EAAAA,MAEd,CArB8E,EAqB7E,CAEM,SAAU57F,KACf,MAAMo1G,QAAqBo/B,EAAAA,GAAAA,IAAOC,EAAAA,KAO5Bt+B,SANuBq+B,EAAAA,GAAAA,IAAOC,EAAAA,MAGjCr8G,KAAIigI,GAAQF,GAAiBE,EAAK3lI,IAAI,UAAW2lI,EAAK3lI,IAAI,cAC1DghB,SAAQ,GAEgCm5B,WAAUzyC,GAAKg7E,EAAanuE,SAAS7M,WAE1Ei6G,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAwB,CAAEua,oBACtC,CAEO,SAAU13G,KACf,MAAM87D,QAAmBi6E,EAAAA,GAAAA,IAAOC,EAAAA,KAEhC,IACE,MAAMt9H,EAAO,CACXmhJ,sBAAuB/9F,EAAW7nC,IAAI,UACtC+U,KAAM8yB,EAAW7nC,IAAI,QAAU,GAG3BpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAwBD,SAE5Ck9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkCt3E,GAI9C,CAHE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgC/3E,UACpCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAEO,SAAU4lI,GAAMp8D,GAAA,IAAG5pE,SAAS,UAAE+e,EAAS,OAAEixD,IAAUpG,EAAA,mBACxD,IACE,MAAMvzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBxtH,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAChC,IAAI/nG,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,KAEpB/nG,EAAK7R,YACP6R,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,MAGtB/nG,EAAOA,EAAKhgB,SAEZ,MAAM8rI,EAAwB9rH,EAAKtO,QAAO,CAACC,EAAKwO,KAC9C,MAAM6Z,EAAK7Z,EAAEna,IAAI,mBAAoB5F,EAAAA,EAAAA,QAAO,IAE5C,OAAOuR,EAAIpM,OAAOy0B,EAAGniC,KAAKsoB,GAAG,IAC5BnJ,EAAAA,EAAAA,SAEG4lH,EAAa9tG,KAAK+tG,KAAKiP,EAAsB/wH,KAAO,KACpD+hH,GAASC,EAAAA,GAAAA,IAAU+O,EAAuBlP,SAE1CjV,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4Bi2B,EAAKl2B,IAAI,mBAAoB,CAAEuwF,SAAU,SAE/E,IAAIw1C,EAAe,EACnB,IAAK,IAAIp+G,EAAI,EAAGA,EAAImvG,EAAO/hH,KAAM4S,GAAK,EAAG,CACvC,MAAMq+G,EAAYlP,EAAO92H,IAAI2nB,GAE7B,IAAI4oE,EAAW,GAAGznE,KAAK+tG,MAAOlvG,EAAI,GAAKmvG,EAAO/hH,KAAQ,cAChD4sG,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4Bi2B,EAAKl2B,IAAI,mBAAoB,CAAEuwF,eAErE,MAAM7nG,EAAOs9I,EAAUtgI,KAAIyU,IAAM/f,EAAAA,EAAAA,QAAO,CACtCi8H,QAASl8G,EAAEna,IAAI,MACfgwC,aAAc71B,EAAEna,IAAI,eACpB,EAAe,UAAX6vE,EAAqB,IAAM,KAA9B,kBAAoD,CAACjxD,EAAU5e,IAAI,iBAGhE3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2B,CAAEgE,OAAMktI,UAAWhnE,EAAAA,GAAoBr6D,KAE7EwxI,GAAgBr9I,EAAKqsB,KAErBw7E,EAAW,GAAGznE,KAAK+tG,MAAOlvG,EAAI,GAAKmvG,EAAO/hH,KAAQ,cAC5C4sG,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4Bi2B,EAAKl2B,IAAI,mBAAoB,CAAEuwF,cACvE,CAEA,MAAMje,EAAS1zD,EAAUhqB,OAAO,aAAa2zB,GAASA,GAAoB,UAAXsnD,GAAsBk2D,EAAeA,KAEpG/rH,EAAOA,EAAKtU,KAAIyU,GAAKA,EAAEvlB,OAAO,cAAc8nB,GAC3B,UAAXmzD,EACKnzD,EAAW1kB,QAAO0P,GAAKA,EAAE1H,IAAI,QAAUsyE,EAAOtyE,IAAI,QAGpD0c,EAAW7qB,KAAKygF,aAGnBqvC,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAuBoa,UAC3B2nG,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4B,aAChC0hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsB,CAAEtqD,YAAWi0D,YAAa74D,EAAKjF,cACzD4sG,EAAAA,GAAAA,IAAI1hH,EAAAA,KAMZ,CALE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4B,aAChC0hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoB/3E,UACxBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAhE0D,EAgEzD,CAEM,SAAUpmB,GAAQ2+F,GAAA,IAAG7pE,SAAS,UAAE+e,IAAa8qD,EAAA,yBAC5CryE,EAAAA,GAAAA,IAAKwuI,GAAQ,CAAEhmI,QAAS,CAAE+e,YAAWixD,OAAQ,UACrD,CAFoD,EAEnD,CAEM,SAAUlpF,GAA0BgjF,GAAA,IAAG9pE,SAAS,OAAEqjB,EAAM,OAAE3B,EAAM,eAAE+hE,IAAkB3Z,EAAA,mBACzF,IACE,MAAMrjF,QAAsBw7H,EAAAA,GAAAA,IAAOC,EAAAA,KAE7Bt9H,EAAO,CACX4xI,QAASnzG,EACTyQ,QAASpS,EACT0kH,iBAAkB3iD,GAGd1xF,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgC4B,EAAe7B,SAEnEk9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0Ct3E,GAGtD,CAFE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAwC/3E,GACpD,CACF,CAhB2F,EAgB1F,CAEM,SAAU+0I,KACf,IAGE,WAFsBpkB,EAAAA,GAAAA,IAAOC,EAAAA,MAEf,CACZ,MAAMz7H,QAAsBw7H,EAAAA,GAAAA,IAAOC,EAAAA,KAE7BnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6B4B,SAEjDq7H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAyCt3E,GACrD,CAGF,CAFE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuC/3E,GACnD,CACF,CAEO,SAAUg1I,KACf,OAAU,CACR,MAAM,KAAExX,SAAeT,EAAAA,GAAAA,IAAK,CAC1BS,MAAMR,EAAAA,GAAAA,IAAKjlD,EAAAA,IACX0lD,SAASh8H,EAAAA,GAAAA,IAAM,OAGjB,GAAI+7H,EACF,YAGIhN,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CACF,CAEO,SAAUk9D,WACTjjB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAsC+7D,GACxD,CAEO,SAAUoB,WACTljB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoCg8D,GACtD,CAEO,SAAUoB,WACTnjB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoCi8D,GACtD,CAEO,SAAUoB,WACTpjB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwCk8D,GAC1D,CAEO,SAAUoB,WACTrjB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAqB79F,GACvC,CAEO,SAAUo7J,WACTtjB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAgC59F,GAClD,CAEO,SAAUo7J,WACTvjB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA2BhgG,GAC7C,CAEO,SAAUy9J,WACTxjB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAyB//F,GAC3C,CAEO,SAAUy9J,WACTzjB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAyB1+F,GAC3C,CAEO,SAAUq8J,WACT1jB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAyBx+F,GAC3C,CAEO,SAAUo8J,WACT3jB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA0Bj+F,GAC5C,CAEO,SAAU87J,WACT5jB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA0B/9F,GAC5C,CAEO,SAAU67J,WACT7jB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAmCz9F,GACrD,CAEO,SAAUw7J,WACT9jB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA2Bx/F,GAC7C,CAEO,SAAUw9J,WACT/jB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAgBtmH,GAClC,CAEO,SAAUukL,WACThkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoB97F,GACtC,CAEO,SAAUg6J,WACTjkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA6B57F,GAC/C,CAEO,SAAU+5J,WACTlkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAiCn9F,GACnD,CAEO,SAAUu7J,WACTnkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAqB28D,GACvC,CAEO,SAAU0B,WACTpkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAkBn+F,GACpC,CAEO,SAAUy8J,WACTrkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAyCviF,GAC3D,CAEO,SAAU8gJ,WACTlkB,EAAAA,GAAAA,IAAWr6C,EAAAA,GAAwCg9D,GAC3D,CAEO,SAAUwB,WACTvkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwCi9D,GAC1D,CAEO,SAAUwB,WACTpkB,EAAAA,GAAAA,IAAWr6C,EAAAA,EAAsBqY,GACzC,CAEO,SAAUqmD,WACT9e,EAAAA,GAAAA,IAAS,IAAM5/C,EAAAA,GAAwBw7D,GAC/C,CAEe,SAAUmD,WACjB71I,EAAAA,GAAAA,IAAI,CACRo0I,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CC1hBO,SAAUp6J,GAAQsb,GAAA,IAAG+W,QAAS6nE,GAAM5+E,EAAA,mBACzC,MAAMpjC,QAAeo8J,EAAAA,GAAAA,IAAOC,EAAAA,KAE5B,GAAKr6C,EAAKzvE,WAAW,WAIb0pH,EAAAA,GAAAA,KAAI9vH,EAAAA,EAAAA,IAAK,GAAG61E,IAAOhiH,UAJA,CACzB,MAAM6nK,QAAoBzL,EAAAA,GAAAA,IAAOC,EAAAA,WAC3BJ,EAAAA,GAAAA,KAAI9vH,EAAAA,EAAAA,IAAK,GAAG07H,KAAe7lD,IAAOhiH,KAC1C,CAGF,CAT2C,EAS1C,CAEM,SAAU+nB,WACTk0I,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiB,KAC7B,CAEO,SAAUx7F,GAAI07F,GAAA,IAAGvpE,QAASioI,GAAO1+D,EAAA,mBACtC,MAAM2+D,EAAYD,GAAS,EAErBE,SADoBlmB,EAAAA,GAAAA,IAAOC,EAAAA,MACPjqG,MAAM,KAAK9f,QAAO43B,GAAKA,IAAGlqB,KAAIkqB,GAAKA,EAAE9X,MAAM,OAC/DpyD,QAAeo8J,EAAAA,GAAAA,IAAOC,EAAAA,KAE5B,IAAK,IAAIp6F,EAAI,EAAGA,EAAIogH,EAAWpgH,GAAK,EAClCqgH,EAAMryI,MAGR,MAAMsyI,EAAU,CACdD,EAAMtiI,KAAIkqB,GAAKA,EAAE+J,KAAK,MAAKA,KAAK,KAChCj0E,EAAO0xD,QAAQ,MAAO,KACtBpf,QAAO43B,GAAKA,IAAG+J,KAAK,WAEhBgoF,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiB,IAAI++D,KACjC,CAhBwC,EAgBvC,CAEM,SAAUt6J,KAGf,SAF8Bm0I,EAAAA,GAAAA,IAAOC,EAAAA,KAEhB,CACnB,MAAMmmB,QAAcpmB,EAAAA,GAAAA,IAAOC,EAAAA,WACrBJ,EAAAA,GAAAA,KAAI9vH,EAAAA,EAAAA,IAAKq2I,GACjB,CACF,CAEO,SAAUC,GAAc9+D,GAAA,IAAGxpE,SAAWrG,UAAU,SAAE2d,KAAckyD,EAAA,mBACrE,MAAM/wD,QAAiBwpG,EAAAA,GAAAA,IAAOC,EAAAA,KAE9B,GAAiB,MAAb5qG,EAAkB,CACfmB,UACGqpG,EAAAA,GAAAA,IAAIz6B,EAAAA,IAAqC,YAGvB46B,EAAAA,GAAAA,IAAOC,EAAAA,MAEhB/hH,IAAI,+BACbkuH,EAAAA,GAAAA,IAAK,CACTvlD,SAASwlD,EAAAA,GAAAA,IAAKr5C,GAAAA,IACdjiF,SAASD,EAAAA,GAAAA,IAAM,cAIbyE,EAAAA,GAAAA,IAAK1pB,GACb,MAAWwpC,EAASlf,WAAW,mBACxBqgB,UACGqpG,EAAAA,GAAAA,IAAIz6B,EAAAA,IAAqC,KAGrD,CAvBuE,EAuBtE,CAEM,SAAUkhD,GAAmB9+D,GAAA,IAAGzpE,SAAWrG,UAAU,SAAE2d,KAAcmyD,EAAA,mBAC1E,IAAI5B,EAAOvwD,EAEPuwD,GAAQA,EAAKzvE,WAAW,mBAC1ByvE,EAAO,uBAGHi6C,EAAAA,GAAAA,IAAIsd,GAASv3D,GACrB,CAR4E,EAQ3E,CAEM,SAAU2gE,WACTllB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkB17F,GACpC,CAEO,SAAU86J,WACTnlB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqBz7F,GACvC,CAEO,SAAU86J,WACTplB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAcx7F,GAChC,CAEO,SAAU86J,WACTrlB,EAAAA,GAAAA,IAAUslB,EAAAA,GAAiBN,GACnC,CAEO,SAAUO,WACT5f,EAAAA,GAAAA,IAAS,GAAI2f,EAAAA,GAAiBL,GACtC,CAEO,SAAUO,WACTxlB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+Bv7F,GACjD,CAEe,SAAUi7J,WACjB52I,EAAAA,GAAAA,IAAI,CACRq2I,KACAC,KACAC,KACAC,KACAE,KACAC,MAEJ,CChGO,SAAUE,KACf,MAAMh/I,QAAgBi4H,EAAAA,GAAAA,IAAOC,EAAAA,KACvBtuE,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,KAC1BxrB,QAAuBurB,EAAAA,GAAAA,IAAOC,EAAAA,KAC9B5jH,QAAiC2jH,EAAAA,GAAAA,IAAOC,EAAAA,KAExCnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAY+uD,GAEhCz5B,GAAO5f,EAAAA,EAAAA,QAAOxI,EAAOutB,QAAQsO,SAAQzO,GAASA,EAAMhf,IAAI,UAAS/F,OACjE6uI,EAAYhgH,KAAKu3C,OAAOrmD,EAAKtU,KAAI5c,IAAA,IAAC,GAAE7D,GAAI6D,EAAA,OAAK7D,CAAE,KAEjD6jJ,EAAYvyC,UACRl/F,EAAAA,GAAAA,IAAKiwE,EAAYnpE,EAA0B2qI,EAAWl1H,MAASoa,QAAQ,OAAO25C,IAAI,EAAG,SAAS9zD,iBAGhG8tG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgBlvD,UACpB2nG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2Bt3E,UAC/B+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuBt3E,UAC3B+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4Br/E,GACxC,CAEO,SAAUk/I,GAAc53I,SACvBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyB/3E,UAC7BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CAEO,SAAU63I,KACf,MAAMnyF,QAAsBirE,EAAAA,GAAAA,IAAOC,EAAAA,KAC7BprB,QAA2BmrB,EAAAA,GAAAA,IAAOC,EAAAA,KAExC,GAAIlrE,IAAkB8/C,EAAoB,CACxC,MAAMswB,EAAU,EAACtF,EAAAA,GAAAA,IAAIz4C,GAAAA,OAEf7rE,QAAqBykH,EAAAA,GAAAA,IAAOC,EAAAA,KAC5BknB,QAA8BnnB,EAAAA,GAAAA,IAAOC,EAAAA,KAErCmnB,EAAmB,CAACnuI,EAAAA,GAAAA,aAC1B,IAAIouI,QAA2BrnB,EAAAA,GAAAA,IAAOC,EAAAA,OAAgCmnB,GAClEE,EAAWH,EAAsBjpI,IAAI,eACzCmpI,EAAqBA,GAAsBC,EAASrxI,MAAKsxI,GAAWhsI,EAAa2C,IAAIqpI,KAEjFF,GACFliB,EAAQp1H,MAAK8vH,EAAAA,GAAAA,IAAI2nB,GAAAA,OAGnB,MAAMC,EAAoB,CAACxuI,EAAAA,GAAAA,cAC3B,IAAIyuI,QAA4B1nB,EAAAA,GAAAA,IAAOC,EAAAA,OAAgCwnB,GACvEH,EAAWH,EAAsBjpI,IAAI,gBACrCwpI,EAAsBA,GAAuBJ,EAASrxI,MAAKsxI,GAAWhsI,EAAa2C,IAAIqpI,KAEnFG,GACFviB,EAAQp1H,MAAK8vH,EAAAA,GAAAA,IAAI/zB,GAAAA,OAGnB,MAAM67C,EAAgB,CAAC1uI,EAAAA,GAAAA,UACjB2uI,QAAwB5nB,EAAAA,GAAAA,IAAOC,EAAAA,OAAgC0nB,GAEjEpsI,EAAa2C,IAAIzC,EAAAA,GAAAA,gCAA+CmsI,GAClEziB,EAAQp1H,MAAK8vH,EAAAA,GAAAA,IAAIgoB,GAAAA,OAGnB,MAAMC,EAAgB,CAAC7uI,EAAAA,GAAAA,kBACjB8uI,QAAwB/nB,EAAAA,GAAAA,IAAOC,EAAAA,OAAgC6nB,GAEjEvsI,EAAa2C,IAAIzC,EAAAA,GAAAA,sBAAqCssI,GACxD5iB,EAAQp1H,MAAK8vH,EAAAA,GAAAA,IAAImoB,GAAAA,OAGnB,MAAMC,EAAoB,CACxBhvI,EAAAA,GAAAA,OACAA,EAAAA,GAAAA,eAEIivI,QAA4BloB,EAAAA,GAAAA,IAChCC,EAAAA,OACGgoB,GAECE,EAAqB,CACzB1sI,EAAAA,GAAAA,kBACAA,EAAAA,GAAAA,sBACAxF,MAAK2P,GAAKrK,EAAa2C,IAAI0H,KACvBwiI,QAA2BpoB,EAAAA,GAAAA,IAAOC,EAAAA,OAA4BgoB,GAC9Dx1I,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAE5BkoB,GAAsBD,IAAyBz1I,IAAegG,EAAAA,GAAAA,WAA8B2vI,KAC1FA,GACE31I,IAAegG,EAAAA,GAAAA,WACjB0sH,EAAQhzF,SAAQrhC,EAAAA,GAAAA,IAAM,MAGxBq0H,EAAQhzF,SAAQ0tF,EAAAA,GAAAA,IAAIj2B,GAAAA,QAEpBu7B,EAAQp1H,MAAK8vH,EAAAA,GAAAA,IAAIj2B,GAAAA,QAIrB,IAAK,IAAI/jE,EAAI,EAAGA,EAAIs/F,EAAQp8H,OAAQ88B,GAAK,QACjCs/F,EAAQt/F,EAElB,YACQg6F,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAgC,GAE9C,CAEO,SAAUt/E,GAAUw/E,GAAA,IAAGvpE,QAASqjB,GAAQkmD,EAAA,mBAC7C,IACE,IAAIv/E,GAAUuQ,EAAAA,EAAAA,QAAO,CAAC8oB,IACtB,MAAMlJ,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,IAAuB7+F,GAEjD,GAAIlJ,EAAKha,IAAI,eAAiB,EAAG,CAC/B,MAAMpO,QAAeyF,EAAAA,GAAAA,IAAK2tH,GAAYhrG,EAAMt1B,GAAAA,IAE5CmF,EAAUA,EAAQ0V,OAAO3N,EAC3B,CAEA/H,GAAUuQ,EAAAA,EAAAA,QAAOvQ,GAEjB,MAAM+sI,EAAa9tG,KAAK+tG,KAAKhtI,EAAQkrB,KAAO,IACtC+hH,GAASC,EAAAA,GAAAA,IAAUltI,EAAS+sI,GAElC,IAAI3R,EAAMvgI,GAAAA,GAENs1B,EAAKtX,MAAM,CAAC,QAAS,oBACvBuiH,EAAMvgI,GAAAA,IAGR,IAAK,IAAIijC,EAAI,EAAGA,EAAImvG,EAAO/hH,KAAM4S,GAAK,QAC9BtwB,EAAAA,GAAAA,IAAK4tH,EAAK6R,EAAO92H,IAAI2nB,GAAGgS,KAAK,YAG/BgoF,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0Br/E,UAC9B83H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB/3E,UAC5BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAjC+C,EAiC9C,CAEM,SAAUl7B,KACf,MAAMolK,QAA4BroB,EAAAA,GAAAA,IAAOC,EAAAA,IAA6BhnH,EAAAA,GAAAA,YAChEqvI,QAAmBtoB,EAAAA,GAAAA,IAAOC,EAAAA,IAA6BhnH,EAAAA,GAAAA,kBAEzDovI,QACIxoB,EAAAA,GAAAA,IAAIgoB,GAAAA,MACDS,QACHzoB,EAAAA,GAAAA,IAAImoB,GAAAA,YAEJnoB,EAAAA,GAAAA,IAAIj2B,GAAAA,KAEd,CAEO,SAAU2+C,GAAgBhhE,GAAA,IAAGxpE,QAAS5a,GAAIokF,EAAA,mBAC/C,MAAMgwD,QAA0BvX,EAAAA,GAAAA,IAAOC,EAAAA,IAAgC98H,GAEjE2M,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAY20I,GAEhClmC,EAAYvhG,EAAOutB,OAAOnnB,QAAO0P,GAAKA,EAAEziB,KAAOA,IAAI,GAErDkuG,UACIwuB,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgBiqB,EAAUn5E,cAGhC2nG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B,CACvCxgF,KAAMkJ,EACN3M,cAGI08H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuB,CAAE5gF,QAASrD,IAC9C,CAjBiD,EAiBhD,CAEM,SAAUqlJ,GAAkBn5I,SAC3BwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6B/3E,UACjCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CAEO,SAAUo5I,GAAc16D,SACvBx4E,EAAAA,GAAAA,IAAKqtH,GAAW2lB,GAAkBC,GAAmBz6D,EAC7D,CAEO,SAAUlhG,GAAsB26F,GAAA,IAAGzpE,SAAS,KAAEC,EAAI,YAAE0qI,EAAW,aAAEC,IAAgBnhE,EAAA,mBACtF,MAAMohE,QAAuB5oB,EAAAA,GAAAA,IAAOC,EAAAA,WAE9BJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4BppE,IAEtC,MAAMsvE,QAAkB0yC,EAAAA,GAAAA,IAAOC,EAAAA,KAE/B,IAAK2oB,EAAe7oE,OAAOuN,GAAY,CACrC,MAAMt0E,QAAqBgnH,EAAAA,GAAAA,IAAOC,EAAAA,KAKlC,SAHMJ,EAAAA,GAAAA,IAAIyM,GAAAA,IAA4C,UAChDzM,EAAAA,GAAAA,IAAI5yB,GAAAA,OAEL07C,EAAc,CACjB,MAAMn9G,QAAiBw0F,EAAAA,GAAAA,IAAOC,EAAAA,KAE9B,GAAgB,MAAZz0F,EAAkB,CACpB,MAAMq9G,QAA8B7oB,EAAAA,GAAAA,IAAOC,EAAAA,WACrCJ,EAAAA,GAAAA,IAAInvB,GAAAA,GAA6Bm4C,GACzC,YACQhpB,EAAAA,GAAAA,IAAInvB,GAAAA,GAA6BllE,GAE3C,CAEA,MAAM/4B,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAEhC,GAAIxtH,IAAegG,EAAAA,GAAAA,UAA2B,CAC5C,MAAM,KAAEk2C,EAAI,GAAEF,SAAal5C,EAAAA,GAAAA,IAAK2iF,GAAAA,GAAc,eAExC2nC,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CACjCtlG,SAAUujD,EACVtjD,OAAQojD,EACRylC,UAAW,UAEf,CAEA,MAAM40D,QAAqB9oB,EAAAA,GAAAA,IAAOC,EAAAA,KAC5B8oB,QAAoB/oB,EAAAA,GAAAA,IAAOC,EAAAA,KAC3B+oB,QAAqBhpB,EAAAA,GAAAA,IAAOC,EAAAA,KAE5Bl4H,EAAU+gJ,EAAarrI,OAAOsrI,EAAaC,GAE3CC,EAAsB37D,EAAUpvE,IAAI,kBAAoB0qI,EAAe1qI,IAAI,gBAC3EgrI,EAAoBz2I,IAAem2I,EAAe1qI,IAAI,cAI5D,SAFM2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,OAELshE,EAAa,CAChB,MAAMj4C,QAA6BuvB,EAAAA,GAAAA,IAAOC,EAAAA,WACpCJ,EAAAA,GAAAA,IAAInvB,GAAAA,GAA2BD,UAC/BovB,EAAAA,GAAAA,IAAI1hH,EAAAA,IAAgC,GAC5C,OAEM0hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4Br/E,IAElCmhJ,UACIrpB,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoBpuE,EAAagmB,WAG7C,MAAM3iB,QAAiC2jH,EAAAA,GAAAA,IAAOC,EAAAA,KAC9C,IAAIxrB,QAAuBl/F,EAAAA,GAAAA,IAAKwwE,EAAY1pE,GAC5Co4F,EAAiBxzE,SAASwzE,GAAkB,EAAG,UACzCorB,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0BqtB,IAEpC,MAAMhe,QAAoBupC,EAAAA,GAAAA,IAAOC,EAAAA,KAI7BipB,GAAqBzyD,QACjBopC,EAAAA,GAAAA,IAAIyM,GAAAA,OACDh/C,EAAUpvE,IAAI,qBAAwBgrI,GAAqBD,WAC9DppB,EAAAA,GAAAA,IAAIz4C,GAAAA,KAEd,OAEMy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CA5EwF,EA4EvF,CAEM,SAAU+hE,GAAiB1hE,GAAA,IAAG1pE,QAASqjB,GAAQqmD,EAAA,mBACpD,IACE,MAAMvvD,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,IAAuB7+F,GAEjD,GAAIlJ,EAAKha,IAAI,eAAiB,EAAG,CAC/B,MAAMqtF,QAAsBh2F,EAAAA,GAAAA,IAAK2tH,GAAYhrG,SAEvC2nG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmB,CAAClvD,EAAKkF,IAAI,gBAAiBmuE,KAC1D,CAKF,CAJE,MAAOl8F,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B/3E,UACnCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAdsD,EAcrD,CAEM,SAAU5xB,WACT6/I,EAAAA,GAAAA,IAAK,CACTgd,MAAM7zI,EAAAA,GAAAA,IAAKqtH,GAAWmkB,GAAcE,IACpCoC,QAAQhd,EAAAA,GAAAA,IAAKjlD,GAAAA,KAEjB,CAEO,SAAUkiE,GAAqB5hE,GAAA,IAAG3pE,SAAS,KAAEma,EAAI,WAAE6xE,IAAcriB,EAAA,mBACtE,IACE,MAAMtmD,EAASlJ,EAAKha,IAAI,MAElBvb,EAAO,CACXqrD,SAAU91B,EAAKha,IAAI,YACnB85H,QAAS9/G,EAAKha,IAAI,WAClBi7H,YAAapvC,EACbwqC,QAASnzG,GAGPlJ,EAAKha,IAAI,aACXvb,EAAKw9F,QAAUjoE,EAAKha,IAAI,YAGtBga,EAAKha,IAAI,qBACXvb,EAAKu1I,iBAAmBhgH,EAAKha,IAAI,oBAGnC,MAAMpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAeD,SACnCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgC,CAAE/yC,aAAcvkC,EAAOukC,aAAcjT,SAAQ2oE,eAGzF,CAFE,MAAO16F,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8B/3E,GAC1C,CACF,CAxBwE,EAwBvE,CAEM,SAAUk6I,WACTloB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyBt/E,GAC3C,CAEO,SAAU0hJ,WACTnoB,EAAAA,GAAAA,IAAUj6C,GAAAA,EAA0B8/D,GAC5C,CAEO,SAAUuC,WACTpoB,EAAAA,GAAAA,IAAU3wB,GAAAA,GAAkCztH,GACpD,CAEO,SAAUymK,WACTroB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA8BqhE,GAChD,CAEO,SAAUkB,WACTtoB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgCv6F,GAClD,CAEO,SAAU+8J,WACTvoB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgC+hE,GAClD,CAEO,SAAUU,WACTxoB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0B76F,GAC5C,CAEO,SAAUu9J,WACTzoB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+BkiE,GACjD,CAEe,SAAUpP,WACjBhqI,EAAAA,GAAAA,IAAI,CACRq5I,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CC3WO,SAAUC,KACf,MAAMpnJ,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,KAEpBnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0BD,SAE9Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqCt3E,GACjD,CAEO,SAAUk6I,GAAwB36I,SACjCwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmC/3E,UACvCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CAEO,SAAU46I,WACTpqB,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,YAEJ7xE,EAAAA,GAAAA,IAAKqtH,GAAWmnB,GAAwBC,GAChD,CAEO,SAAUllB,GAAsBxjF,EAAOhb,EAAO1/B,GACnD,IAEE,IAAIkJ,EAEJ,SAHM+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB9gD,KAG7B1/B,EAAM,CACT,MAAM+qD,QAAmBquE,EAAAA,GAAAA,IAAOC,EAAAA,KAChCnwH,QAAeyF,EAAAA,GAAAA,IAAK5K,GAAgB22C,EAAOqQ,EAC7C,CAcA,OAZI/qD,GAAQkJ,QACJ+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqB,CAC7B9gD,QACA1/B,MAAOA,GAAQkJ,GAAQwxC,EAAMpjC,IAAI,wBAG7B2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqB,CAC7B9gD,QACA1/B,KAAM,QAIHA,GAAQkJ,CAQjB,CAPE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqB,CAC7B9gD,QACA1/B,KAAM,OAEV,CAEA,OAAO,IACT,CAEO,SAAUsjJ,KACf,MAAMhuI,QAAe8jH,EAAAA,GAAAA,IAAOC,EAAAA,KAE5B,IAAIkF,EAAU,GACdjpH,EAAOnV,SAAQ,CAACu6C,EAAOhb,KACrB6+F,EAAQp1H,MAAK8vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB9gD,IAAQ,UAE7Cp2B,EAAAA,GAAAA,IAAIi1H,GAEVA,EAAU,GACVjpH,EAAOnV,SAAQ,CAACu6C,EAAOhb,KAChBgb,EAAMpjC,IAAI,0BACbinH,EAAQp1H,MAAKwF,EAAAA,GAAAA,IAAKuvH,GAAuBxjF,EAAOhb,GAClD,UAEIp2B,EAAAA,GAAAA,IAAIi1H,GAEV,MAAMglB,EAAkBjuI,EAAOu1E,WAAUnwC,GAASA,EAAMpjC,IAAI,2BACtDksI,QAAyB70I,EAAAA,GAAAA,IAAKuvH,GAAuB5oH,EAAOgC,IAAIisI,GAAkBA,GAExFhlB,EAAU,GACVjpH,EAAOnV,SAAQ,CAACu6C,EAAOhb,KACjBgb,EAAMpjC,IAAI,2BACZinH,EAAQp1H,MAAKwF,EAAAA,GAAAA,IAAKuvH,GAAuBxjF,EAAOhb,EAAO8jH,IACvDjlB,EAAQp1H,MAAKe,EAAAA,GAAAA,IAAM,MACrB,IAGF,IAAK,IAAI+0B,EAAI,EAAGA,EAAIs/F,EAAQp8H,OAAQ88B,GAAK,QACjCs/F,EAAQt/F,EAElB,CAEO,SAAUwkH,KACf,MAAM1nJ,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,MAEpB,MAAEjsC,SAAgBz+E,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6BD,SAEpDk9H,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAoBk2E,EAAMsiB,aAC9BupB,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAoBk2E,EAAMuiB,cAC9BspB,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwC4M,GACpD,CAEO,SAAUs2D,GAA2Bj7I,SACpCwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsC/3E,UAC1CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CAEO,SAAUk7I,WACTh1I,EAAAA,GAAAA,IAAKqtH,GAAWynB,GAA2BC,GACnD,CAEO,SAAU13J,WACTitI,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAUojE,WACT/oB,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAoC6iE,GACvD,CAEO,SAAUQ,WACThpB,EAAAA,GAAAA,IAAWr6C,GAAAA,GAA8C8iE,GACjE,CAEO,SAAUQ,WACTjpB,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAuCmjE,GAC1D,CAEO,SAAUI,WACTtpB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4Bx0F,GAC9C,CAEe,SAAUiwI,WACjB3yH,EAAAA,GAAAA,IAAI,CACRs6I,KACAC,KACAC,KACAC,MAEJ,CCnIO,SAAUC,KACf,MAAMjoJ,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,KAEpBnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAwBD,SAE5Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmCt3E,GAC/C,CAEO,SAAU5K,GAAiB8B,GAAA,IAAG+W,QAASpb,GAAMqE,EAAA,mBAClD,IACE,MAAM8I,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBD,SAE3Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiCt3E,EAAOq9B,aAKpD,CAJE,MAAO99B,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B/3E,UACnCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,MACZ,CACF,CAVoD,EAUnD,CAEM,SAAU65L,GAAsBx7I,SAC/BwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiC/3E,UACrCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CAEO,SAAUy7I,WACTv1I,EAAAA,GAAAA,IAAKqtH,GAAWgoB,GAAsBC,GAC9C,CAEO,SAAUE,KACf,MAAMp8F,QAAaqxE,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,GAAItxE,EAAM,CACR,MACMhsD,EAAO,UADYq9H,EAAAA,GAAAA,IAAOC,EAAAA,KACFtxE,QACxB7+C,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAwBD,SAC5Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuCt3E,GACnD,CACF,CAEO,SAAUk7I,GAA0B37I,SACnCwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqC/3E,UACzCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CAEO,SAAU47I,WACT11I,EAAAA,GAAAA,IAAKqtH,GAAWmoB,GAA0BC,GAClD,CAEO,SAAU13J,GAAoBg0F,GAAA,IAAGvpE,SAAS,YAAEovB,EAAW,WAAEyzG,IAAct5D,EAAA,yBACtEu4C,EAAAA,GAAAA,KAAI9/H,EAAAA,GAAAA,IAAa,CAAC,CACtBmW,OAAQi3B,EACR7yB,MAAOzC,EAAAA,GAAAA,uBAEHw0H,EAAAA,GAAAA,IAAK//I,GAAAA,UACLuzI,EAAAA,GAAAA,KAAInzI,EAAAA,GAAAA,IAAYk0J,GACxB,CAP8E,EAO7E,CAEM,SAAUrtJ,GAA6Bg0F,GAAA,IAAGxpE,SAAS,WAAE6iI,IAAcr5D,EAAA,mBACxE,MAAM2jE,QAA+BlrB,EAAAA,GAAAA,IAAOC,EAAAA,KACtCkrB,QAAuBnrB,EAAAA,GAAAA,IAAOC,EAAAA,KAC9BmrB,EAAsBF,EACzBtnI,KAAIzgB,GAAMgoJ,EAAexlI,MAAKwnB,GAAeA,EAAYjvB,IAAI,QAAU/a,MACvEgV,OACAyL,KAAI1N,IAAU,CAAGA,QAAQoC,EAAAA,EAAAA,QAAOpC,GAASoE,MAAOzC,EAAAA,GAAAA,uBAE7CgoH,EAAAA,GAAAA,KAAI9/H,EAAAA,GAAAA,IAAaqrJ,UACjB/e,EAAAA,GAAAA,IAAK//I,GAAAA,UACLuzI,EAAAA,GAAAA,KAAInzI,EAAAA,GAAAA,IAAYk0J,GACxB,CAX0E,EAWzE,CAEM,SAAUzyK,WACT0xJ,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAUikE,WACT5pB,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAkC0jE,GACrD,CAEO,SAAUQ,WACTjqB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAsC6jE,GACxD,CAEO,SAAUtJ,WACTtgB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmBj5G,GACrC,CAEO,SAAUo9K,WACT9pB,EAAAA,GAAAA,IAAWr6C,GAAAA,GAA8B9zF,GACjD,CAEO,SAAUk4J,WACT/pB,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAuC7zF,GAC1D,CAEO,SAAUk4J,WACTpqB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgCliF,GAClD,CAEe,SAAU29H,WACjB3yH,EAAAA,GAAAA,IAAI,CACRm7I,KACAC,KACA3J,KACA8J,KACAF,KACAC,MAEJ,CC/GO,SAAU7hJ,GAAmB3C,GAAA,IAAG+W,QAASnU,GAAS5C,EAAA,mBACvD,IACE,MAAM8I,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAyB8oJ,UAAU9hJ,UAEvDi2H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmCt3E,WAEpBkwH,EAAAA,GAAAA,IAAOC,EAAAA,cAGxBJ,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAwBx9E,IAQtC,CANE,MAAOyF,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiC/3E,IAErCA,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,mBAC/BqlB,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,IAEnC,CACF,CAlByD,EAkBxD,CAEM,SAAUxF,KACf,IACE,MAAMy6C,QAA0B07E,EAAAA,GAAAA,IAAOC,EAAAA,KACjCnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6B0hD,EAAkBpmC,IAAI,aAEvE2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuCt3E,GAInD,CAHE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqC/3E,UACzCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUs8I,KACf,IACE,MAAMrnG,QAA0B07E,EAAAA,GAAAA,IAAOC,EAAAA,KACjChiH,QAAe+hH,EAAAA,GAAAA,IAAOC,EAAAA,KAEtBriB,EAAyB3/F,EAAOC,IAAI,0BACpCm/F,QAA0B9nG,EAAAA,GAAAA,IAAKytH,GAAaplB,GAE5CC,EAA0B5/F,EAAOC,IAAI,2BACrCq/F,QAA2BhoG,EAAAA,GAAAA,IAAKytH,GAAanlB,GAE7Cl7G,EAAO,CACXQ,GAAImhD,EAAkBpmC,IAAI,MAC1B0tI,SAAU3tI,EAAOC,IAAI,WACrBpb,SAAUmb,EAAOC,IAAI,YACrB2tI,UAAW5tI,EAAOC,IAAI,YACtB4tI,YAAa7tI,EAAOC,IAAI,cACxB6tI,gBAAiB9tI,EAAOC,IAAI,iBAC5B8tI,YAAa/tI,EAAOC,IAAI,cACxB+tI,gBAAiBhuI,EAAOC,IAAI,kBAC5BtR,OAAQqR,EAAOC,IAAI,UACnBguI,qBAAsB7uC,GAAqBp/F,EAAOC,IAAI,qBACtDiuI,sBAAuBluI,EAAOC,IAAI,sBAClCkuI,sBAAuB7uC,GAAsBt/F,EAAOC,IAAI,sBACxDmuI,uBAAwBpuI,EAAOC,IAAI,uBACnCouI,aAAcruI,EAAOC,IAAI,eACzBquI,gBAAiBtuI,EAAOC,IAAI,kBAC5BsuI,wBAAyBvuI,EAAOC,IAAI,0BAGhCpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0BD,SAE9Ck9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkCt3E,UACtC+vH,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,KAKZ,CAJE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgC/3E,UACpCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAEO,SAAUrU,KACf,IACE,MAAMw6C,QAA0B07E,EAAAA,GAAAA,IAAOC,EAAAA,KACjCnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0B0hD,EAAkBpmC,IAAI,aAEpE2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoCt3E,GAKhD,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkC/3E,UACtCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAEO,SAAUsuI,KACf,IACE,MAAMnoG,QAA0B07E,EAAAA,GAAAA,IAAOC,EAAAA,KACjCr2H,QAAgBo2H,EAAAA,GAAAA,IAAOC,EAAAA,KAEvBt9H,EAAO,CACXQ,GAAImhD,EAAkBpmC,IAAI,MAC1B0tI,SAAUhiJ,GAGNkG,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgCD,SAEpDk9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA4Bt3E,GAIxC,CAHE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B/3E,UAC9BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUpZ,WACT4pI,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAEO,SAAUjxF,GAAemxF,GAAA,IAAGvpE,QAASnU,GAAS09E,EAAA,mBACnD,aACQx2E,EAAAA,GAAAA,IAAM,WACN+uH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiCx9E,GAE/C,CALqD,EAKpD,CAEM,SAAUxT,GAAsBmxF,GAAA,IAAGxpE,SAAS,IAAE9W,IAAOsgF,EAAA,mBAC9C,YAARtgF,UACI44H,EAAAA,GAAAA,IAAIz4C,EAAAA,MAEd,CAJ4D,EAI3D,CAEM,SAAU3xF,GAA0B+xF,GAAA,IAAGzpE,SAAS,OAAEnR,EAAM,SAAE9J,IAAY0kF,EAAA,mBAC3E,MAAMklE,GAAeC,EAAAA,GAAAA,IAAsB//I,EAAQA,EAAQ9J,SAErDyS,EAAAA,GAAAA,IAAKuc,IAAAA,OAAe46H,EAC5B,CAJ6E,EAI5E,CAEM,SAAUE,WACTnrB,EAAAA,GAAAA,IAAWr6C,EAAAA,GAAkCz9E,GACrD,CAEO,SAAUkjJ,WACTxrB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAsCv9E,GACxD,CAEO,SAAUijJ,WACTzrB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAkCnxF,GACpD,CAEO,SAAU82J,WACT1rB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAiCukE,GACnD,CAEO,SAAUqB,WACT3rB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAmCt9E,GACrD,CAEO,SAAUmjJ,WACT5rB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA2BqlE,GAC7C,CAEO,SAAUS,WACTlmB,EAAAA,GAAAA,IAAS,IAAK5/C,EAAAA,GAAgChxF,GACtD,CAEO,SAAU+2J,WACT9rB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAyBjxF,GAC3C,CAEO,SAAUi3J,WACT/rB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoC3xF,GACtD,CAEe,SAAUotI,WACjB3yH,EAAAA,GAAAA,IAAI,CACR08I,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CChLO,SAAUzgJ,GAAe3F,GAAA,IAAG+W,SAAS,GAAE5a,EAAIyJ,OAAQygJ,EAAkBvqJ,SAAUwqJ,IAAsBtmJ,EAAA,mBAC1G,IACE,MAAMlE,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBrzH,QAAe2I,EAAAA,GAAAA,IAAKgf,GAAAA,IACpBzkB,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqBO,EAAImqJ,GAAsBxqJ,EAAUuqJ,GAAoBzgJ,SAEjGizH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA+Bt3E,GAI3C,CAHE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B,CAAE/3E,QAAOlM,cAC1C08H,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAX4G,EAW3G,CAEM,SAAUvC,GAAgBw6E,GAAA,IAAGvpE,QAASujC,GAAOgmC,EAAA,mBAClD,IACE,MAAMxkF,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KAExBt9H,EAAO,CACX2+C,MAAOukF,KAAKC,UAAUj5E,KAAmBvL,EAAM3X,OAAO,QAAQxxB,SAC9Do1I,WAAYz7H,MAAS+zD,IAAI,EAAG,SAASkzD,cACrCj2I,YAGIgN,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAsBD,SAE1Ck9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgCt3E,UACpC+vH,EAAAA,GAAAA,IAAIz4C,EAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA8B/3E,UAClCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAnBoD,EAmBnD,CAEM,SAAUpR,GAAgBw6E,GAAA,IAAGxpE,QAAS8+C,GAAY0qB,EAAA,mBACvD,IACE,MAAMpkF,EAAK05D,EAAW3+C,IAAI,MACpBk2B,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WAEpBJ,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgCjkF,UACpC08H,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,MAEV,MAAM,KAAE/rD,SAAeg6K,EAAAA,GAAAA,IAAK,CAC1Bh6K,MAAMi6K,EAAAA,GAAAA,IAAKluH,EAAAA,IACXg2H,UAAUrjI,EAAAA,GAAAA,IAAM,aAGZ+uH,EAAAA,GAAAA,IAAI1hH,EAAAA,MAEN/rD,SACIytK,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgCvqB,UACpCgjE,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAAE8vC,KAAM7Z,EAAKl2B,IAAI,qBAE/C3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAAsBO,SAE3B08H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgCjkF,IAM9C,CAJE,MAAOkM,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA8B/3E,UAClCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CA7ByD,EA6BxD,CAEM,SAAUnR,GAAgBw6E,GAAA,IAAGzpE,QAAS8+C,GAAY2qB,EAAA,mBACvD,IACE,MAAM7kF,EAAO,CACX4qJ,WAAY1wF,EAAW3+C,IAAI,cAGvBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAsBi6D,EAAW3+C,IAAI,MAAOvb,SAEhEk9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgCt3E,UACpC+vH,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,KAKZ,CAJE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA8B/3E,UAClCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAhByD,EAgBxD,CAEM,SAAUqvI,GAAiB/lE,GAAA,IAAG1pE,QAAS8+C,GAAY4qB,EAAA,mBACxD,UACQlyE,EAAAA,GAAAA,IAAK3S,GAAAA,GAAsBi6D,EAAW3+C,IAAI,aAE1C2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiCvqB,EAAW3+C,IAAI,cACpD2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,KAIZ,CAHE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA+B/3E,UACnCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAV0D,EAUzD,CAEM,SAAUpb,GAAsByzF,GAAA,IAAG3pE,SAAS,OAAEnR,EAAM,SAAE9J,IAAY4kF,EAAA,mBACvE,MAAMglE,GAAeC,EAAAA,GAAAA,IAAsB//I,EAAQA,EAAQ9J,SAErDyS,EAAAA,GAAAA,IAAKuc,IAAAA,OAAe46H,EAC5B,CAJyE,EAIxE,CAEM,SAAU33J,WACT8qI,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAAS,2CACbm0I,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAEO,SAAUqmE,WACTpsB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA8Bz6E,GAChD,CAEO,SAAU+gJ,WACTrsB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAgCnzF,GAClD,CAEO,SAAU05J,WACTtsB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA+Bt6E,GACjD,CAEO,SAAU8gJ,WACTvsB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA+Br6E,GACjD,CAEO,SAAU8gJ,WACTxsB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA+Bp6E,GACjD,CAEO,SAAU8gJ,WACTzsB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAgComE,GAClD,CAEO,SAAUO,WACT1sB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA4BryF,GAC9C,CAEe,SAAU8tI,WACjB3yH,EAAAA,GAAAA,IAAI,CACRu9I,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CC3JA,MAAMhgE,GAASo1C,IACb,IACE,OAAOA,GAGT,CAFE,MAAMjuH,GACN,OAAO,IACT,GAEW84I,GAAUA,CAAC/mJ,EAAKC,IAAU6mF,IAAO,IAAMj5E,EAAAA,EAAOm5I,aAAaD,QAAQ/mJ,EAAKC,KACxEgnJ,GAAUjnJ,GAAO8mF,IAAO,IAAMj5E,EAAAA,EAAOm5I,aAAaC,QAAQjnJ,KCUjE07I,GAAW,gBAEV,SAAUwL,KAAoB,IAACC,EAAMtlJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAE,mBAC/C,MAAM/F,QAAoBi9H,EAAAA,GAAAA,IAAOC,EAAAA,KAC3BxtH,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAEhC,OAAIl9H,GAAe0P,EACV,CAAC,iBAAiBA,KAAc1P,IAAeqrJ,GAAQl4I,QAAOwgC,GAAKA,IAAGmB,KAAK,KAG7E,IACT,CATiD,EAShD,CAEM,SAAUqvG,GAASlgJ,GAAA,IAAG+W,QAASswI,GAAarnJ,EAAA,mBACjD,IACE,MAAMsnJ,QAAoBtuB,EAAAA,GAAAA,IAAOC,EAAAA,KAC3B1nH,QAAkBynH,EAAAA,GAAAA,IAAOC,EAAAA,KACzBh5H,QAAYsO,EAAAA,GAAAA,IAAK44I,IACjBI,QAAgBh5I,EAAAA,GAAAA,IAAKi5I,GAAsB,GAAGvnJ,cAC9CwnJ,QAAgBl5I,EAAAA,GAAAA,IAAKi5I,GAAsB,GAAGvnJ,cAE9CtE,EAAO,CACXivC,SAAU08G,EAAYn2I,OACtBy3C,WAAYr3C,EACZm2I,kBAAmBH,EACnBI,gBAAiBF,GAGb3+I,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAiBD,GACrCu1B,GAAO5f,EAAAA,EAAAA,QAAOxI,SAEd+vH,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAoBoa,UACxB2nG,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAyBlvD,KAEf,IAAhBm2H,UACIxuB,EAAAA,GAAAA,IAAIz4C,EAAAA,MAQd,CANE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuB/3E,UAC3BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CAAE,cACMwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CA/BmD,EA+BlD,CAEM,SAAUywI,KACf,IACE,IAAIjsJ,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBt9H,EAAO,IACFA,EACHgsD,KAAM,EACN17B,KAAM,IACN47H,iBAAiB,EACjB32H,KAAM,IACDv1B,EAAKu1B,KACRwR,SAAU,IACL/mC,EAAKu1B,KAAKwR,SACbgrG,iBAAiB,KAIvB,MAAM5kI,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAYD,GAChCu1B,GAAO5f,EAAAA,EAAAA,QAAOxI,EAAOutB,QAAQzT,QAAO,CAACC,EAAKqT,IAAUrT,EAAIpM,OAAOyf,EAAMhf,IAAI,WAAU5F,EAAAA,EAAAA,QAAO,WAC1FunH,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAoBoa,IAC9B,MAAMnwB,GAAUgQ,EAAAA,EAAAA,KAAImgB,EAAKtU,KAAIyU,GAAKA,EAAEna,IAAI,SAAQ/F,aAC1C0nH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAyCr/E,UAC7C83H,EAAAA,GAAAA,IAAIz4C,EAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsC/3E,UAC1CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUy/I,GAA2BxnE,GAAA,IAAGvpE,QAAShW,GAASu/E,EAAA,mBAC/D,IACE,MAAMn8E,GAAMmN,EAAAA,EAAAA,QAAOvQ,GACnB,IAAIgnJ,GAAcz2I,EAAAA,EAAAA,QAAO,IACzB,IAAK,IAAIutB,EAAI,EAAGA,EAAI16B,EAAI8nB,KAAM4S,GAAK,EAAG,CACpC,MAAMzE,EAASj2B,EAAI+S,IAAI2nB,GACvB,IAAI3N,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,IAAuB7+F,GAE/C,GAAIlJ,EAAKha,IAAI,eAAiB,GAAwC,IAAnCga,EAAKha,IAAI,iBAAiB+U,KAAY,CACvE,MAAMs4E,QAAsBh2F,EAAAA,GAAAA,IAAK2tH,GAAYhrG,GAE7CA,EAAOA,EAAKkF,IAAI,gBAAiBmuE,EACnC,CAEAwjD,EAAcA,EAAYh/I,KAAKmoB,EACjC,OAEM2nG,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAoBixI,UACxBlvB,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2C2nE,UAC/ClvB,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkC2nE,GAK9C,CAJE,MAAO1/I,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAyC/3E,UAC7CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAzBiE,EAyBhE,CAEM,SAAU4lI,GAAMx8D,GAAA,IAAGxpE,SAAS,UAAE+e,EAAS,OAAEixD,IAAUxG,EAAA,mBACxD,IACE,MAAMnzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBxtH,QAAmButH,EAAAA,GAAAA,IAAOC,EAAAA,KAChC,IAAI/nG,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,KAEpB/nG,EAAK7R,YACP6R,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,MAGtB/nG,EAAOA,EAAKhgB,SAEZ,MAAM8rI,EAAwB9rH,EAAKtO,QAAO,CAACC,EAAKwO,KAC9C,MAAM6Z,EAAK7Z,EAAEna,IAAI,mBAAoB5F,EAAAA,EAAAA,QAAO,IAE5C,OAAOuR,EAAIpM,OAAOy0B,EAAGniC,KAAKsoB,GAAG,IAC5BnJ,EAAAA,EAAAA,SAEG4lH,EAAa9tG,KAAK+tG,KAAKiP,EAAsB/wH,KAAO,KACpD+hH,GAASC,EAAAA,GAAAA,IAAU+O,EAAuBlP,SAE1CjV,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4Bi2B,EAAKl2B,IAAI,mBAAoB,CAAEuwF,SAAU,SAE/E,IAAIw1C,EAAe,EACnB,IAAK,IAAIp+G,EAAI,EAAGA,EAAImvG,EAAO/hH,KAAM4S,GAAK,EAAG,CACvC,MAAMq+G,EAAYlP,EAAO92H,IAAI2nB,GAE7B,IAAI4oE,EAAW,GAAGznE,KAAK+tG,MAAOlvG,EAAI,GAAKmvG,EAAO/hH,KAAQ,cAChD4sG,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4Bi2B,EAAKl2B,IAAI,mBAAoB,CAAEuwF,eAErE,MAAM7nG,EAAOs9I,EAAUtgI,KAAIyU,IAAM/f,EAAAA,EAAAA,QAAO,CACtCi8H,QAASl8G,EAAEna,IAAI,MACfgwC,aAAc71B,EAAEna,IAAI,eACpB,EAAe,UAAX6vE,EAAqB,IAAM,KAA9B,kBAAoD,CAACjxD,EAAU5e,IAAI,iBAGhE3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2B,CAAEgE,OAAMktI,UAAWhnE,EAAAA,GAAoBr6D,KAE7EwxI,GAAgBr9I,EAAKqsB,KAErBw7E,EAAW,GAAGznE,KAAK+tG,MAAOlvG,EAAI,GAAKmvG,EAAO/hH,KAAQ,cAC5C4sG,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4Bi2B,EAAKl2B,IAAI,mBAAoB,CAAEuwF,cACvE,CAEA,MAAMje,EAAS1zD,EAAUhqB,OAAO,aAAa2zB,GAASA,GAAoB,UAAXsnD,GAAsBk2D,EAAeA,KAEpG/rH,EAAOA,EAAKtU,KAAIyU,GAAKA,EAAEvlB,OAAO,cAAc8nB,GAC3B,UAAXmzD,EACKnzD,EAAW1kB,QAAO0P,GAAKA,EAAE1H,IAAI,QAAUsyE,EAAOtyE,IAAI,QAGpD0c,EAAW7qB,KAAKygF,aAGnBqvC,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAuBoa,UAC3B2nG,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4B,aAChC0hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsB,CAAEtqD,YAAWi0D,YAAa74D,EAAKjF,cACzD4sG,EAAAA,GAAAA,IAAI1hH,EAAAA,KAMZ,CALE,MAAO9O,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA4B,aAChC0hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoB/3E,UACxBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAhE0D,EAgEzD,CAEM,SAAUpmB,GAAQu+F,GAAA,IAAGzpE,SAAS,UAAE+e,IAAa0qD,EAAA,yBAC5CjyE,EAAAA,GAAAA,IAAKwuI,GAAQ,CAAEhmI,QAAS,CAAE+e,YAAWixD,OAAQ,UACrD,CAFoD,EAEnD,CAEM,SAAUj0F,GAAiB2tF,GAAA,IAAC,QAAE1pE,GAAS0pE,EAAA,mBAC5C,MAAM,aAAEunE,GAAkBjxI,GAAW,CAAC,EAEhCkxI,QAAoBjvB,EAAAA,GAAAA,IAAOC,EAAAA,WAC3BJ,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmC6nE,IAEzCD,UACInvB,EAAAA,GAAAA,KAAIj0I,EAAAA,GAAAA,OAEd,CAT8C,EAS7C,CAEM,SAAUwN,GAAqBsuF,GAAA,IAAC,QAAE3pE,GAAS2pE,EAAA,yBAC1Cm4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAyCrpE,GACrD,CAFkD,EAEjD,CAEM,SAAUj9C,GAAM6mH,GAAA,IAAG5pE,SAAS,MAAEzD,EAAK,MAAEgyG,IAAS3kC,EAAA,mBACnD,IAAIunE,EAEJ,GAAc,UAAV50I,EAAmB,CAErB40I,SADoBlvB,EAAAA,GAAAA,IAAOC,EAAAA,MACVn/J,QAAOw+D,GAAQA,EAAKphB,IAAI,aAAeykI,KAE1C,SAAVr2B,IACF4iC,EAAWA,EAAS9+D,UAExB,KAAO,CACL,MAAM7wD,QAAcygG,EAAAA,GAAAA,IAAOC,EAAAA,KAErByjB,GAA0E,IAArD,CAAC,kBAAmB,aAAa/sI,QAAQ2D,GAC9D60I,EAA2B,YAAV70I,EACjB80I,GAAkE,IAA9C,CAAC,QAAS,gBAAgBz4I,QAAQ2D,GAE5D,IAAIooI,EAAqB,CAACpoI,GACtBlV,EAAO,SAEPs+I,IACFhB,EAAqB,CAAC,cAAyB,oBAAVpoI,EAA8B,OAASA,IAG1E60I,IACFzM,EAAqB,CAAC,cAAe,UAAW,SAG9C0M,IACF1M,EAAqB,CAAC,aAAcpoI,GACpClV,EAAO,UAGT8pJ,EAAWzM,GAAgBljH,EAAOmjH,EAAoBp2B,EAAOlnH,EAC/D,OAEMy6H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiB8nE,GAC7B,CArCqD,EAqCpD,CAEM,SAAUn1J,GAAe6tF,GAAA,IAAG7pE,SAAS,MAAEzD,EAAK,MAAEgyG,IAAS1kC,EAAA,mBAC5D,MAAM1vD,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,KACpBovB,QAAqBrvB,EAAAA,GAAAA,IAAOC,EAAAA,KAE5BlsC,EAAU77D,EAAKp3D,QAAOu3D,IAC+B,IAArD,CAAC,kBAAmB,aAAa1hB,QAAQ2D,IACnC+d,EAAEzX,MAAM,CAAC,cAAyB,oBAAVtG,EAA8B,OAASA,KAAWqoI,IAAUn2I,WAAWgmB,cAG3F,YAAVlY,GACM+d,EAAEzX,MAAM,CAAC,cAAe,UAAW,UAAY+hI,IAAUn2I,WAAWgmB,eAG5B,IAA9C,CAAC,QAAS,gBAAgB7b,QAAQ2D,GAC7B+d,EAAEzX,MAAM,CAAC,aAActG,KAAW,GAGnC+d,EAAEna,IAAI5D,IAAUqoI,IAAUnwH,gBACjC5O,KAAIyU,GAAKA,EAAEna,IAAI,QAElB,IAAIpO,EAASu/I,EAAavuL,QAAOwyI,GAAWvf,EAAQp9E,QAAQ28F,EAAQt0E,WAEtD,SAAVstF,IACFx8G,EAASA,EAAOsgF,iBAGZyvC,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgBt3E,GAC5B,CA3B8D,EA2B7D,CAEM,SAAUtV,GAA0BuzF,GACzC,GAAIA,GAAUA,EAAOhwE,QAAS,CAE5B,IAAImxI,QADgBlvB,EAAAA,GAAAA,IAAOC,EAAAA,KAG3BlyC,EAAOhwE,QAAQhX,SAAQuoJ,IACrB,MAAMC,EAAqBjwH,GAAQgwH,EAAYpxI,IAAI,SAASjI,MAAK2P,GAAKA,EAAE1H,IAAI,QAAUohB,EAAKphB,IAAI,QACzFsxI,EAAqBlwH,GAAQA,EAAKphB,IAAI,QAAQuU,SAAS68H,EAAYpxI,IAAI,OAE7E,IAAIuxI,EAAcP,EAAStrI,KAAI0b,GACzBkwH,EAAmBlwH,KAAUiwH,EAAmBjwH,GAC3CA,EAAKxsB,OAAO,QAAQolB,GAAQA,EAAKhiB,QAAO/S,GAAMA,IAAOmsJ,EAAYpxI,IAAI,WAGzEsxI,EAAmBlwH,IAASiwH,EAAmBjwH,GAC3CA,EAAKxsB,OAAO,QAAQolB,GAAQA,EAAKnoB,KAAKu/I,EAAYpxI,IAAI,SAGxDohB,IAGT,MAAMowH,EAAaJ,EAChBpxI,IAAI,SACJhI,QAAOopB,IAASmwH,EAAYx5I,MAAK2P,GAAKA,EAAE1H,IAAI,QAAUohB,EAAKphB,IAAI,UAC/D0F,KAAI0b,GAAQA,EAAKqL,MAAM,CACtBglH,UAAU,EACVz3H,MAAM5f,EAAAA,EAAAA,QAAO,CAACg3I,EAAYpxI,IAAI,YAGlC,IAAI0xI,EAAWV,EAAS7M,OAEpBuN,GAAmC,OAAvBA,EAAS1xI,IAAI,OAC3BuxI,EAAcA,EACXv5I,QAAOopB,GAA2B,OAAnBA,EAAKphB,IAAI,QACxBT,OAAOiyI,GAGRE,EADEN,EAAYpxI,IAAI,SAASmI,UAChBupI,EAAS98I,OAAO,QAAQolB,GAAQA,EAAKnoB,KAAKu/I,EAAYpxI,IAAI,SAE1D0xI,EAAS98I,OAAO,QAAQolB,GAAQA,EAAKhiB,QAAOmiB,GAAKA,IAAMi3H,EAAYpxI,IAAI,UAGpFuxI,EAAcA,EAAY1/I,KAAK6/I,KAE/BH,EAAcA,EAAYhyI,OAAOiyI,GAE7BJ,EAAYpxI,IAAI,SAASmI,YAC3BopI,EAAcA,EAAY1/I,MAAKuI,EAAAA,EAAAA,QAAO,CACpCnV,GAAI,KACJwsJ,UAAU,EACVz3H,KAAM,CAACo3H,EAAYpxI,IAAI,YAK7BgxI,EAAWO,EAAYv5I,QAAOopB,IAASA,EAAKphB,IAAI,QAAQmI,WAAU,WAGvC25G,EAAAA,GAAAA,IAAOC,EAAAA,YAM5BJ,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiB8nE,KAH3BA,EAAWA,EAAStrI,KAAI0b,GAAQA,EAAKlC,IAAI,YAAY,WAC/CyiG,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA8B8nE,IAI5C,KAAO,CACL,MAAMh3H,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,KAEpB4vB,EAAgBA,CAACx3H,EAAGiH,IAASA,EAAKlC,IAAI,OAC1C/E,EAAEniB,QAAO45I,GAAMA,EAAG5xI,IAAI,SAASyH,MAAKC,GAAKA,EAAE1H,IAAI,QAAUohB,EAAKphB,IAAI,UAAQ0F,KAAIksI,GAAMA,EAAG5xI,IAAI,SAI7F,IAAIqhB,EAFyBlH,IAAKA,EAAEsT,SAAQmkH,GAAMA,EAAG5xI,IAAI,WAAUp9C,QAAO8kD,GAAKA,EAAE1H,IAAI,cAEzE6xI,CAAqB73H,GACjCqH,GAAQmS,EAAAA,GAAAA,IAAenS,GACpB3b,KAAI0b,GAAQA,EAAKlC,IAAI,aAAelF,EAAKjF,KAAO,OAChDrP,KAAI0b,GAAQuwH,EAAc33H,EAAMoH,KAEnC,MAAM0wH,EAAgB93H,EAAKhiB,QAAOmiB,GAAKA,EAAEna,IAAI,SAASmI,YAEjD2pI,EAAc3pI,YACjBkZ,EAAQA,EAAMxvB,MAAKuI,EAAAA,EAAAA,QAAO,CACxBnV,GAAI,KACJwsJ,WAAaz3H,EAAKjF,KAAO,IACzBiF,KAAM83H,EAAcpsI,KAAIyU,GAAKA,EAAEna,IAAI,kBAIjC2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiB7nD,GAC7B,CACF,CAEO,SAAU+jH,GAAUz7D,GAAA,IAAC,QAAE9pE,GAAS8pE,EAAA,mBACrC,MAAM4qB,GAAan6F,EAAAA,EAAAA,QAAOyF,GACpBhW,EAAUmnB,EAAAA,KAAAA,OAAYujF,GAAcA,EAAaA,EAAWv0F,IAAI,WAChE+xI,QAA4BjwB,EAAAA,GAAAA,IAAOC,EAAAA,WAEnCJ,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAgC/V,EAAQmO,QAAO/S,IAAO8sJ,EAAoBx9H,SAAStvB,MAC/F,CANuC,EAMtC,CAEM,SAAU+sJ,KACf,IAAItpJ,QAAao5H,EAAAA,GAAAA,IAAOC,EAAAA,KAGxB,WAFwBD,EAAAA,GAAAA,IAAOC,EAAAA,MAEhB/hH,IAAI,MAAO,CACxBtX,EAAOi/H,KAAKC,UAAUl/H,GACtB,MAAMsxB,QAAa8nG,EAAAA,GAAAA,IAAOC,EAAAA,KACpBh5H,QAAYsO,EAAAA,GAAAA,IAAK44I,IAEjBv3C,EAAS1+E,EAAKtU,KAAIyU,GAAKA,EAAEna,IAAI,iBAAgBgd,OAC7CqzH,EAAU33C,EAAO53E,QACjByvH,EAAU73C,EAAOyrC,OAEnBkM,UACIh5I,EAAAA,GAAAA,IAAKi5I,GAAsB,GAAGvnJ,aAAgB6qB,IAAOy8H,GAASriH,QAAQ,OAAOC,WAGjFsiH,UACIl5I,EAAAA,GAAAA,IAAKi5I,GAAsB,GAAGvnJ,aAAgB6qB,IAAO28H,GAASriH,MAAM,OAAOD,iBAG7E52B,EAAAA,GAAAA,IAAKi5I,GAAsBvnJ,EAAKL,EACxC,CACF,CAQO,SAAUzzC,GAAoB20H,GAAA,IAAG/pE,QAASoyI,GAASroE,EAAA,mBACxD,IACE,MAAM7gF,QAAYsO,EAAAA,GAAAA,IAAK44I,IACvB,IAAIvnJ,QAAa2O,EAAAA,GAAAA,IAAKi5I,GAAsBvnJ,GAExCL,GACFA,GAAO0R,EAAAA,EAAAA,QAAOutH,KAAKvvG,MAAM1vB,IAErBA,EAAKsX,IAAI,QAAQ+U,OACH,IAAZk9H,UACItwB,EAAAA,GAAAA,IAAI1hH,EAAAA,aAGN0hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiBxgF,EAAKsX,IAAI,iBAC9B2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgBxgF,EAAKsX,IAAI,gBAC7B2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,IAAuB,WAE3By4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B,CAAE4nE,cAAc,MAE7C/nJ,UACH44H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B,CAAE4nE,cAAc,KAKxD,CAHE,MAAO3/I,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CA1B0D,EA0BzD,CAEM,SAAUx0B,GAAyBo+F,GAAA,IAAGhqE,SAAS,QAAEhW,EAAO,UAAE42F,EAAS,SAAEC,IAAY7W,EAAA,mBACtF,MAAMtoD,EAAS13B,EAAQi3B,QAAQ9gB,IAAI,UACnC,IAAIikI,EAGFA,OADan5I,IAAXy2B,QACmBugG,EAAAA,GAAAA,IAAOC,EAAAA,WAEPD,EAAAA,GAAAA,IAAOC,EAAAA,IAAuCxgG,GAGrE,MAAMmhE,QAAqBo/B,EAAAA,GAAAA,IAAOC,EAAAA,KAElC,GAAIr/B,EAAav6E,gBACTw5G,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B,CAAElvD,KAAMnwB,EAAS42F,YAAWC,kBAC9D,CACL,MAAM4kD,QAAuBjuI,EAAAA,GAAAA,IAAK2sI,GAAathD,EAAcuhD,EAAcp6I,SACrE83H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B,CAAElvD,KAAMsrH,EAAgB7kD,YAAWC,aAC5E,CACF,CAlBwF,EAkBvF,CAEM,SAAUvkG,GAAqB2tF,GAAA,IAAC,QAAEjqE,GAASiqE,EAAA,mBAChD,MAAM8G,EAAY/wE,EAAQ6F,KAAI0b,GAAQA,EAAKphB,IAAI,UAASghB,UAAUjM,KAC5Dw/E,EAAa10F,EAAQ6F,KAAI0b,GAAQA,EAAKlC,IAAI,aAAe0xD,EAAY,MAA0B,IAAjB/wE,EAAQkV,cACtF4sG,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiBqrB,GAC7B,CAJkD,EAIjD,CAEM,SAAU53G,WACTglI,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAEO,SAAUgpE,KACf,IACE,MAAMroJ,QAAgBi4H,EAAAA,GAAAA,IAAOC,EAAAA,KACvB1nH,QAAkBynH,EAAAA,GAAAA,IAAOC,EAAAA,KACzBh5H,QAAYsO,EAAAA,GAAAA,IAAK44I,IACjBI,QAAgBh5I,EAAAA,GAAAA,IAAKi5I,GAAsB,GAAGvnJ,cAC9CwnJ,QAAgBl5I,EAAAA,GAAAA,IAAKi5I,GAAsB,GAAGvnJ,cAE9CtE,EAAO,CACXivC,SAAU7pC,EAAQ6b,KAAIzgB,GAAM,CAACA,KAAKgV,OAClCy3C,WAAYr3C,EACZm2I,kBAAmBH,EACnBI,gBAAiBF,GAGb3+I,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAiBD,SAErCk9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAyCt3E,GAKrD,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAuC/3E,UAC3CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUlU,GAAc8sF,GAAA,IAAGlqE,SAAS,KAAEma,IAAQ+vD,EAAA,yBAC7C43C,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAoBoa,GAChC,CAFqD,EAEpD,CAED,MAAMyrH,GAAmBA,CAAClkH,EAAQ13B,IAAYA,EAAQ6b,KAAIyU,QAAiBrvB,IAAXy2B,EAAuBgxD,OAAOp4D,GAAK,GAAGoH,KAAUpH,MAEzG,SAAU/sC,GAAU2iG,GAAA,IAAGlwE,SAAS,OAAE0hB,EAAM,QAAE13B,EAAO,iBAAE65F,IAAoB3T,EAAA,mBAC5E,IAAI0T,EAAkBgiD,GAAiBlkH,EAAQ13B,GAE3C64F,QAAqBo/B,EAAAA,GAAAA,IAAOC,EAAAA,KAGhC,IAAI2jB,EAEJ,GAAiB,WAJM5jB,EAAAA,GAAAA,IAAOC,EAAAA,MAIV,CAGlB2jB,SAF6B5jB,EAAAA,GAAAA,IAAOC,EAAAA,MAGjCr8G,KAAIigI,GAAQF,GAAiBE,EAAK3lI,IAAI,UAAW2lI,EAAK3lI,IAAI,cAC1DghB,SAAQ,EACb,KAAO,CACL,MAAMmxH,QAAuBrwB,EAAAA,GAAAA,IAAOC,EAAAA,KAEpC2jB,EAAqBD,QAAiB36I,EAAWqnJ,EACnD,CAEIzvD,EAAav6E,YACfs7E,EAAkBiiD,EAAmBvrF,WAAUzyC,GAAK+7E,EAAgBlvE,SAAS7M,YAGzEi6G,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAwB,CAAEua,kBAAiBC,sBAErDhB,QAAqBo/B,EAAAA,GAAAA,IAAOC,EAAAA,KAExBr/B,EAAa3tE,OAAS2wH,EAAmB3wH,aACrC4sG,EAAAA,GAAAA,IAAIz4C,EAAAA,MAEd,CA/B8E,EA+B7E,CAEM,SAAU57F,KACf,MAAMo1G,QAAqBo/B,EAAAA,GAAAA,IAAOC,EAAAA,KAGlC,IAAI2jB,EAEJ,GAAiB,WAJM5jB,EAAAA,GAAAA,IAAOC,EAAAA,MAIV,CAGlB2jB,SAF6B5jB,EAAAA,GAAAA,IAAOC,EAAAA,MAGjCr8G,KAAIigI,GAAQF,GAAiBE,EAAK3lI,IAAI,UAAW2lI,EAAK3lI,IAAI,cAC1DghB,SAAQ,EACb,KAAO,CACL,MAAMmxH,QAAuBrwB,EAAAA,GAAAA,IAAOC,EAAAA,KAEpC2jB,EAAqBD,QAAiB36I,EAAWqnJ,EACnD,CAEA,MAAM1uD,EAAkBiiD,EAAmBvrF,WAAUzyC,GAAKg7E,EAAanuE,SAAS7M,WAE1Ei6G,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAwB,CAAEua,oBACtC,CAEO,SAAUznG,GAAcg0F,GAAA,IAAGnwE,QAAStX,GAAaynF,EAAA,mBACtD,IACE,GAAIznF,EAAa,OACTo5H,EAAAA,GAAAA,IAAIz4C,EAAAA,IAAmB,IAC7B,MAAMtqD,QAAkBkjG,EAAAA,GAAAA,IAAOC,EAAAA,KAEzBt9H,EAAO,CACXu1B,KAAM,CACJwR,SAAU,CACRkoB,iBAAiB,EACjB8iF,iBAAiB,IAGrBzhH,KAAM,IACN28B,iBATsBowE,EAAAA,GAAAA,IAAOC,EAAAA,MAYzBnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2Bk6B,EAAU5e,IAAI,MAAOvb,SAEpEk9H,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAoBhO,EAAOooB,OAErC,MAAMnwB,EAAU+H,EAAOooB,KAAKtU,KAAIyU,GAAKA,EAAEl1B,WAEjC08H,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA8Br/E,UAClC83H,EAAAA,GAAAA,IAAIxvC,EAAAA,GAA8CvgF,GAC1D,CAMF,CALE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CAAE,cACMwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,IAAmB,GAC/B,CACF,CAjCwD,EAiCvD,CAEM,SAAUoiE,WACTnoB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwB8/D,GAC1C,CAEO,SAAU1B,WACTnkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAqB28D,GACvC,CAEO,SAAU0B,WACTpkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAkBn+F,GACpC,CAEO,SAAUqnK,WACTjvB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAuCwnE,GACzD,CAEO,SAAU2B,WACTlvB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA2BttF,GAC7C,CAEO,SAAU02J,WACTnvB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA+BhuF,GACjD,CAEO,SAAUgsJ,WACT/jB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAgBtmH,GAClC,CAEO,SAAU2vL,WACTpvB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAyBrtF,GAC3C,CAEO,SAAU22J,WACTrvB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAmC5sF,GACrD,CAEO,SAAUiqJ,WACTpjB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoCk8D,GACtD,CAEO,SAAUqN,WACTtvB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA0C0nE,GAC5D,CAEO,SAAU8B,WACTvvB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoC8oE,UAC9C7uB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAgC8oE,UAC1C7uB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAuC8oE,UACjD7uB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAgC8oE,UAC1C7uB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAkB8oE,UAC5B7uB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAiB8oE,UAC3B7uB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwB8oE,UAClC7uB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA4B8oE,UACtC7uB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA8B8oE,GAChD,CAEO,SAAUW,WACTxvB,EAAAA,GAAAA,IAAUljH,EAAAA,GAAiChrD,GACnD,CAEO,SAAU+xL,WACT7jB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAmCz9F,GACrD,CAEO,SAAUmnK,WACTzvB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA+B/sF,GACjD,CAEO,SAAU02J,WACT1vB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA2BvsF,GAC7C,CAEO,SAAUm2J,WACT3vB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwCgpE,GAC1D,CAEO,SAAUa,WACT5vB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwBjsF,GAC1C,CAEO,SAAUkqJ,WACThkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoB97F,GACtC,CAEO,SAAUg6J,WACTjkB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA6B57F,GAC/C,CAEO,SAAU0lK,WACT7vB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwBltF,GAC1C,CAEe,SAAUi3J,WACjBjhJ,EAAAA,GAAAA,IAAI,CACRs5I,KACAmH,KACAnL,KACAC,KACA6K,KACAC,KACAC,KACApL,KACAqL,KACAC,KACAjM,KACAmM,KACAC,KACA3L,KACA4L,KACAC,KACAC,KACAC,KACA5L,KACAC,KACA4L,MAEJ,CCxrBO,SAAU/rJ,GAAc6B,GAAA,IAAG+W,SAAS,KAAEma,EAAI,eAAEk5H,IAAkBpqJ,EAAA,mBACnE,IAGE,UAFuBuO,EAAAA,GAAAA,IAAK3S,GAAAA,GAAoBs1B,EAAKha,IAAI,MAAOkzI,IAEnDC,aAAc,CACzB,MAAMt9D,EAAU77D,EAAKkF,IAAI,cAAe,iBAClCyiG,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmB,CAAC2M,WACxB8rC,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAKF,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B/3E,UAChCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,UACdwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,MACZ,CACF,CAdqE,EAcpE,CAEM,SAAUsgM,WACTjwB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BjiF,GAC/C,CAEe,SAAU+0I,WACjBhqI,EAAAA,GAAAA,IAAI,CACRohJ,MAEJ,CCjBO,SAAU9rJ,KACf,IACE,MAAM7C,QAAaq9H,EAAAA,GAAAA,IAAOvsE,EAAAA,WAEpBl+C,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBD,SAE5Bk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B/3E,UACnCwwH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,aACJ6uK,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CACF,CAEO,SAAUvT,GAAoBkL,GAAA,IAAG+W,SAAS,MAAEg8F,EAAK,SAAE1mE,IAAYrsC,EAAA,yBAC9D64H,EAAAA,GAAAA,IAAIz4C,GAAAA,MACV,MAAMhzC,QAAa4rF,EAAAA,GAAAA,IAAO7rF,EAAAA,KAEtBd,QACIwsF,EAAAA,GAAAA,KAAIluK,EAAAA,EAAAA,IAAe,CAAEs8F,KAAM,MAAM8rD,EAAM77F,IAAI,eAAek2B,EAAKl2B,IAAI,oBAEnE2hH,EAAAA,GAAAA,KAAIluK,EAAAA,EAAAA,IAAe,CAAEs8F,KAAM,MAAM8rD,EAAM77F,IAAI,eAAek2B,EAAKl2B,IAAI,eAE7E,CATsE,EASrE,CAEM,SAAUriB,GAAsByrF,GAAA,IAAGvpE,SAAS,QAAEq8F,EAAO,SAAE/mE,IAAYi0C,EAAA,yBAClEu4C,EAAAA,GAAAA,IAAIz4C,GAAAA,MACV,MAAMhzC,QAAa4rF,EAAAA,GAAAA,IAAO7rF,EAAAA,KAEtBd,QACIwsF,EAAAA,GAAAA,KAAIluK,EAAAA,EAAAA,IAAe,CAAEs8F,KAAM,MAAMmsD,EAAQl8F,IAAI,eAAek2B,EAAKl2B,IAAI,oBAErE2hH,EAAAA,GAAAA,KAAIluK,EAAAA,EAAAA,IAAe,CAAEs8F,KAAM,MAAMmsD,EAAQl8F,IAAI,eAAek2B,EAAKl2B,IAAI,eAE/E,CAT0E,EASzE,CAEM,SAAUziB,KACf,MAAM24C,QAAa4rF,EAAAA,GAAAA,IAAO7rF,EAAAA,KACpBwlE,QAAeqmB,EAAAA,GAAAA,IAAOxjF,EAAAA,KACtB+0G,QAA4BvxB,EAAAA,GAAAA,IAAOzoE,EAAAA,KAEzC,IAAIi6F,EAAiB73C,EAEhB43C,EAAoBlrI,YACvBmrI,EAAiB73C,EAAOzjG,QAAOmzB,GAAKkoH,EAAoB9+H,SAAS4W,EAAEnrB,IAAI,SAA+B,IAArBmrB,EAAEnrB,IAAI,cAGzF,MAAM6rC,EAAWynG,EAAe5tI,KAAIylB,GAAKA,EAAEnrB,IAAI,cACzC2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkBr9B,UACtB81E,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,KAAIluK,EAAAA,EAAAA,IAAe,CAAEs8F,KAAM7Z,EAAKl2B,IAAI,yBAC5C,CAEO,SAAUxiB,KACf,MAAM04C,QAAa4rF,EAAAA,GAAAA,IAAO7rF,EAAAA,KACpB4V,QAAiBi2E,EAAAA,GAAAA,IAAO9jF,EAAAA,WACxB2jF,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkBr9B,UACtB81E,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,KAAIluK,EAAAA,EAAAA,IAAe,CAAEs8F,KAAM7Z,EAAKl2B,IAAI,2BAC5C,CAEO,SAAUuzI,WACTC,EAAAA,GAAAA,IAAS,IAAMtqE,GAAAA,GAAgC5hF,GACvD,CAEO,SAAUmsJ,WACTtwB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA8BtrF,GAChD,CAEO,SAAU81J,WACTvwB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgCvrF,GAClD,CAEO,SAAUg2J,WACTxwB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyB3rF,GAC3C,CAEO,SAAUq2J,WACTzwB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2B1rF,GAC7C,CAEe,SAAUq2J,WACjB7hJ,EAAAA,GAAAA,IAAI,CACRuhJ,KACAE,KACAC,KACAC,KACAC,MAEJ,CC1FO,SAAUzxJ,GAAW2G,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,yBAChC64H,EAAAA,GAAAA,IAAI/hH,GAAAA,GAAsBC,UAC1B8hH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAHwC,EAGvC,CAEM,SAAUxd,GAAkBgnF,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,yBACvCu4C,EAAAA,GAAAA,IAAI/hH,GAAAA,GAA6BC,UACjC8hH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAH+C,EAG9C,CAEM,SAAU18C,GAAcmmH,GAAA,IAAGxpE,QAASuU,GAAOi1D,EAAA,mBAChD,GAAc,KAAVj1D,EAAc,CAChB,IAAI0/H,GAAU,EACVC,GAAe,EAEnB,IACE,MAAM15I,QAAkBynH,EAAAA,GAAAA,IAAOC,EAAAA,KAC/B,IAAI50F,QAAgB20F,EAAAA,GAAAA,IAAOC,EAAAA,KAC3B50F,EAAUA,EAAQznB,KAAIC,GAAKA,EAAE3F,IAAI,WAAUnO,KAAKuiB,GAEhD,MAAM3vB,EAAO,CACX0oC,UACAukB,WAAYr3C,IAGR,MAAE25I,EAAK,WAAEC,SAAqB58I,EAAAA,GAAAA,IAAK3S,GAAAA,GAAcD,GAEvDqvJ,EAAUE,EACVD,EAAeE,IAAc,CAG/B,CAFE,MAAOj9I,GACP88I,GAAU,CACZ,CAEA,GAAIA,EAAS,CACX,MAAM5sJ,QAAa46H,EAAAA,GAAAA,IAAOC,EAAAA,KACpB7rF,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB53K,QAAektD,EAAAA,GAAAA,IAAK6+B,EAAKl2B,IAAK9Y,GAE9BimC,EAAU/Y,EAAM0D,MAAM,KAAKpS,KAAIC,GAAKA,EAAEkgC,SAAQ7tC,QAAO2N,GAAKA,IAEhE,IAAK,IAAIgiB,EAAI,EAAGA,EAAIwF,EAAQtiC,OAAQ88B,GAAK,QACjCg6F,EAAAA,GAAAA,IAAInvB,GAAAA,GAA2B,CACnCp+E,MAAO+Y,EAAQxF,GACfzgC,OACA/8C,kBAIEw3K,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,KAAO,CACL,MAAMs2B,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WAEpBJ,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI+zI,EAAe,oBAAsB,iBACpDprE,SAAS,IAEb,CACF,YACQg5C,EAAAA,GAAAA,IAAI/hH,GAAAA,IAEd,CAlDkD,EAkDjD,CAEM,SAAUz8C,GAAcmmH,GAAA,IAAGzpE,SAAS,MAAEuoB,EAAK,MAAEhsB,IAASktE,EAAA,yBACrDq4C,EAAAA,GAAAA,IAAInvB,GAAAA,GAA2B,CAAEpqE,QAAOhsB,iBACxCulH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAH6D,EAG5D,CAEM,SAAUryC,GAAcg8G,GAAA,IAAG1pE,SAAS,MAAEuoB,EAAK,MAAEhsB,IAASmtE,EAAA,yBACrDo4C,EAAAA,GAAAA,IAAInvB,GAAAA,GAA2B,CAAEpqE,QAAOhsB,iBACxCulH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAH6D,EAG5D,CAEM,SAAU/d,GAAY2nF,GAAA,IAAG3pE,QAAS6K,GAAS8+D,EAAA,yBAC1Cm4C,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB9nF,UAC7Bi3G,EAAAA,GAAAA,IAAI/hH,GAAAA,WACJvI,EAAAA,GAAAA,IAAKf,OAAO49I,SAAU,EAAG,EACjC,CAJkD,EAIjD,CAEM,SAAUpyJ,GAAgB2nF,GAAA,IAAG5pE,QAAS6K,GAAS++D,EAAA,yBAC9Ck4C,EAAAA,GAAAA,IAAInvB,GAAAA,GAA6B9nF,UACjCi3G,EAAAA,GAAAA,IAAI/hH,GAAAA,WACJvI,EAAAA,GAAAA,IAAKf,OAAO49I,SAAU,EAAG,EACjC,CAJsD,EAIrD,CAEM,SAAUx9K,GAAiBgzG,GAAA,IAAG7pE,SAAS,SAAE3S,EAAQ,OAAEC,EAAM,UAAE6oF,IAAatM,EAAA,yBACvEi4C,EAAAA,GAAAA,IAAI/hH,GAAAA,IAA2B,UAC/B+hH,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CAAEtlG,WAAUC,SAAQ6oF,qBACjD2rC,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAJ+E,EAI9E,CAEM,SAAUjpC,GAAmBgzG,GAAA,IAAG9pE,QAASo3E,GAAOtN,EAAA,mBACrD,MAAM,KAAEl5B,EAAI,GAAEF,SAAal5C,EAAAA,GAAAA,IAAK2iF,GAAAA,GAAc/C,IAE1CxmC,GAAQF,WACJoxE,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0B,CAClCh8E,SAAUujD,EACVtjD,OAAQojD,EACRylC,UAAWiB,KAGjB,CAVuD,EAUtD,CAEM,SAAUhgH,WACT0qJ,EAAAA,GAAAA,IAAI/hH,GAAAA,YACJ+hH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAEO,SAAU5oC,GAAc4yG,GAAA,IAAG/pE,QAASs0I,GAAYvqE,EAAA,mBACrD,MAAM2oB,QAA6BuvB,EAAAA,GAAAA,IAAOC,EAAAA,WACpCJ,EAAAA,GAAAA,IAAInvB,GAAAA,GAA2BD,UAElBznG,IAAfqpJ,GAA4BA,WACxBxyB,EAAAA,GAAAA,IAAI/hH,GAAAA,aAGN+hH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CATuD,EAStD,CAEM,SAAU3d,GAAmB4nF,GAAA,IAAC,QAAEhqE,GAASgqE,EAAA,yBACxC83C,EAAAA,GAAAA,IAAInvB,GAAAA,GAAgC3yF,UACpC8hH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAHgD,EAG/C,CAEM,SAAUw0I,YACMtyB,EAAAA,GAAAA,IAAOC,EAAAA,MAEjB/hH,IAAI,iBACP3I,EAAAA,GAAAA,IAAKg9I,GAAAA,IAEf,CAEO,SAAUtyJ,GAAa8tF,SACtB8xC,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB3iB,EAAOhwE,gBACpC8hH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAEO,SAAUx8C,GAAeysH,SACxB8xC,EAAAA,GAAAA,IAAInvB,GAAAA,GAA2B3iB,EAAOhwE,gBACtC8hH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAEO,SAAU5d,GAAoB6tF,SAC7B8xC,EAAAA,GAAAA,IAAInvB,GAAAA,GAAgC3iB,EAAOhwE,gBAC3C8hH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAEO,SAAU1d,WACTy/H,EAAAA,GAAAA,IAAInvB,GAAAA,YACJmvB,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAEO,SAAU00I,WACTnxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqB/mF,GACvC,CAEO,SAAUoyJ,WACTpxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4B9mF,GAC9C,CAEO,SAAUoyJ,WACTrxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBhmH,GAC1C,CAEO,SAAUuxL,WACTtxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwB/lH,GAC1C,CAEO,SAAUuxL,WACTvxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwB37G,GAC1C,CAEO,SAAUonL,WACTxxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAsBrnF,GACxC,CAEO,SAAU+yJ,WACTzxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0BpnF,GAC5C,CAEO,SAAU+yJ,WACT1xB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2BxyG,GAC7C,CAEO,SAAUo+K,WACT3xB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BvyG,GAC/C,CAEO,SAAUo+K,WACT5xB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBjyG,GAC1C,CAEO,SAAU+9K,WACT7xB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBlyG,GAC1C,CAEO,SAAUi+K,WACT9xB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BjnF,GAC/C,CAEO,SAAUizJ,WACT/xB,EAAAA,GAAAA,IAAUvjH,GAAAA,GAAkCw0I,UAC5CjxB,EAAAA,GAAAA,IAAUvjH,GAAAA,GAA4Bw0I,GAC9C,CAEO,SAAUe,WACThyB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAsBnnF,GACxC,CAEO,SAAUqzJ,WACTjyB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwB9lH,GAC1C,CAEO,SAAUiyL,WACTlyB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BlnF,GAC/C,CAEO,SAAUszJ,WACTnyB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgDhnF,GAClE,CAEe,SAAUoiI,WACjBtyH,EAAAA,GAAAA,IAAI,CACRsiJ,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CCvOO,SAAU9wJ,GAAYsE,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBACvC,IACE,MAAM21G,QAAgBqjB,EAAAA,GAAAA,IAAOC,EAAAA,KACvBr5H,EAAO,IAAKmX,EAAS01I,SAAU92C,GAE/B7sG,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAkBgE,SACtCi5H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmCt3E,GAK/C,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiC/3E,UAErCwwH,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CACF,CAZyC,EAYxC,CAEM,SAAU5J,GAAU6hF,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,mBACrC,MAAM,YAAEosE,EAAW,YACjBC,EAAW,WACXz1E,EAAU,UACVmxC,EAAS,SACTC,EAAQ,cACRrrE,EAAa,SACbhvB,EAAQ,gBACR+lF,EAAe,qBACfvK,EAAoB,0BACpBwK,EAAyB,YACzBG,GAAgBr9F,EAEZq2B,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMrsG,QAAaosG,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IAAIt5F,EAAQ,KAEZ,GAAIsd,EAAe,CACjB,MAAMp9C,EAAW,CACf,CACEI,IAAK,OACLC,MAAO+8C,KAIL,IAAEkK,SAAc54C,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBiE,GAC3C8/B,EAAQwnB,CACV,CAEA,MAAMxrD,EAAO,CACXixJ,aAAcF,EACdG,aAAcF,EACdG,YAAa51E,EACbkjE,WAAY/xB,EACZgyB,UAAW/xB,EACXu8B,UAAW52H,EACX8+H,iBAAkB/4C,EAClBg5C,uBAAwBvjD,EACxBwjD,4BAA6Bh5C,EAC7Bi5C,aAAc94C,EACdz0E,eAEIpxB,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgBD,EAAMixB,EAAK1V,IAAI,aAEpC2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,MAENlJ,QAA2Bl1E,IAAbisB,QACV4qG,EAAAA,GAAAA,KAAI5uK,EAAAA,EAAAA,aAEJ4uK,EAAAA,GAAAA,KAAIluK,EAAAA,EAAAA,IAAe,CAAEs8F,KAAM7Z,EAAKl2B,IAAI,8BAGxCggE,UACI2hD,EAAAA,GAAAA,IAAIz6B,EAAAA,MAYd,CAVE,MAAO/1F,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA+B/3E,IAEP,MAA9BA,EAAMksG,SAASf,iBACXqlB,EAAAA,GAAAA,KAAIluK,EAAAA,EAAAA,IAAe,CAAEs8F,KAAM7Z,EAAKl2B,IAAI,+BAEpC2hH,EAAAA,GAAAA,KAAI7uK,EAAAA,EAAAA,aAGN6uK,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,CACF,CArEuC,EAqEtC,CAEM,SAAU1J,GAAc4hF,GAAA,IAAGxpE,SAAS,MAAE4pG,IAASpgC,EAAA,mBACpD,MAAMnzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMr8J,QAAeo8J,EAAAA,GAAAA,IAAOC,EAAAA,KACtBtjB,QAAgBqjB,EAAAA,GAAAA,IAAOC,EAAAA,KACvBtxE,QAAaqxE,EAAAA,GAAAA,IAAOC,EAAAA,KACpBxqE,QAAauqE,EAAAA,GAAAA,IAAOC,EAAAA,KACpBhtE,QAAe+sE,EAAAA,GAAAA,IAAOC,EAAAA,IACtBt9H,EAAO,CACXglH,QACA/jJ,SACA6vL,SAAU92C,EACVhuD,OACA8G,OACA+yE,MAAOv1E,EAAO/0C,IAAI,kBAEd3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAAoBD,SAEzBk9H,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,KAAInuK,EAAAA,EAAAA,IAAgB,CACxB40H,SAAUlyC,EAAKl2B,IAAI,2BACnBqoE,YAAY,IAiBhB,CAfE,MAAOl3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmC/3E,IAEzCA,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,iBAC7BqlB,EAAAA,GAAAA,KAAInuK,EAAAA,EAAAA,IAAgB,CACxB40H,SAAUlyC,EAAKl2B,IAAI,wCACnBqoE,YAAY,YAGRs5C,EAAAA,GAAAA,KAAInuK,EAAAA,EAAAA,IAAgB,CACxB40H,SAAUlyC,EAAKl2B,IAAI,yBACnBqoE,YAAY,WAERs5C,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,IAExB,OAEMwwH,EAAAA,GAAAA,KAAIl0I,EAAAA,GAAAA,MACZ,CA1CsD,EA0CrD,CAEM,SAAUia,GAAa4hF,GAAA,IAAGzpE,SAAS,YAAEkiE,EAAW,YAAE0zE,IAAensE,EAAA,mBACtE,MAAMpzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMr8J,QAAeo8J,EAAAA,GAAAA,IAAOC,EAAAA,KACtBtjB,QAAgBqjB,EAAAA,GAAAA,IAAOC,EAAAA,KACvBtxE,QAAaqxE,EAAAA,GAAAA,IAAOC,EAAAA,KACpBxqE,QAAauqE,EAAAA,GAAAA,IAAOC,EAAAA,KACpBhtE,QAAe+sE,EAAAA,GAAAA,IAAOC,EAAAA,IACtBt9H,EAAO,CACXw9H,aAAclgD,EACd4zE,aAAcF,EACd/vL,SACA6vL,SAAU92C,EACVhuD,OACA8G,OACA+yE,MAAOv1E,EAAO/0C,IAAI,aAEd,KAAE0V,SAAere,EAAAA,GAAAA,IAAK3S,GAAAA,GAAmBD,SAEzCk9H,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,KAAIrtK,EAAAA,EAAAA,IAAoBohE,IAE9B,MAAMvnB,QAAoB2zH,EAAAA,GAAAA,IAAOC,EAAAA,KAE7B5zH,EAAYmqB,iBACRqpG,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAAS2gB,EAAYmqB,kBAG3B1lB,EAAAA,GAAAA,IAAM,WACN+uH,EAAAA,GAAAA,KAAIluK,EAAAA,EAAAA,IAAe,CAAEs8F,KAAM7Z,EAAKl2B,IAAI,4BAS5C,CARE,MAAO7O,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkC/3E,UACtCwwH,EAAAA,GAAAA,KAAInuK,EAAAA,EAAAA,IAAgB,CACxB40H,SAAUlyC,EAAKl2B,IAAI,wBACnBqoE,YAAY,WAGRs5C,EAAAA,GAAAA,KAAIvsK,EAAAA,EAAAA,IAAU+7C,GACtB,OAEMwwH,EAAAA,GAAAA,KAAIl0I,EAAAA,GAAAA,MACZ,CA1CwE,EA0CvE,CAEM,SAAUwV,GAAOsmF,GAAA,IAAG1pE,QAAS6V,GAAM6zD,EAAA,yBAClClyE,EAAAA,GAAAA,IAAKiwE,EAAY5K,EAAAA,GAAAA,QAAqBhnD,EAAK0mF,WAC3C/kG,EAAAA,GAAAA,IAAKiwE,EAAY5K,EAAAA,GAAAA,aAA0BhnD,EAAKqsD,aAEtD,MAAMrzE,QAAeozH,EAAAA,GAAAA,IAAOC,EAAAA,KACtBn9H,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBysB,GAAeC,EAAAA,GAAAA,IAAsB/4H,EAAKuqD,cAAevxE,EAAQ9J,SAEjEyS,EAAAA,GAAAA,IAAKuc,IAAAA,OAAe46H,EAC5B,CAT0C,EASzC,CAEM,SAAU7mJ,GAAY6hF,GAAA,IAAC,QAAE3pE,GAAS2pE,EAAA,mBACvC,MAAMtzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,UACQ1qH,EAAAA,GAAAA,IAAK3S,GAAAA,GAAkB,CAAEuxJ,IAAKp2I,EAAQo2I,YACtCt0B,EAAAA,GAAAA,KAAInuK,EAAAA,EAAAA,IAAgB,CACxB40H,SAAUlyC,EAAKl2B,IAAI,2BACnBqoE,YAAY,IAehB,CAbE,MAAOl3E,GAC2B,MAA9BA,EAAMksG,SAASf,iBACXqlB,EAAAA,GAAAA,KAAInuK,EAAAA,EAAAA,IAAgB,CACxB40H,SAAU,GACVC,YAAY,YAGRs5C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B/3E,UAC9BwwH,EAAAA,GAAAA,KAAInuK,EAAAA,EAAAA,IAAgB,CACxB40H,SAAUlyC,EAAKl2B,IAAI,yBACnBqoE,YAAY,KAGlB,CAEuB,kBAAnBxoE,EAAQ7J,aACJ2rH,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAAS,6BAEbm0I,EAAAA,GAAAA,KAAIl0I,EAAAA,GAAAA,MAEd,CA5ByC,EA4BxC,CAEM,SAAUwW,GAAewlF,GAAA,IAAG5pE,SAAS,aAAE68F,IAAgBjzB,EAAA,yBACtDpyE,EAAAA,GAAAA,IAAKiwE,EAAY5K,EAAAA,GAAAA,iBAA8BggC,EAAc9oF,MAAS+zD,IAAI,EAAG,SAAS9zD,UAAU,GAEtG,MAAMuoF,QAAY0lB,EAAAA,GAAAA,IAAOC,EAAAA,KACnBhgD,QAAoB+/C,EAAAA,GAAAA,IAAOC,EAAAA,KAC3Bl9H,QAAoBi9H,EAAAA,GAAAA,IAAOC,EAAAA,KAE7B3lB,UACI/kG,EAAAA,GAAAA,IAAKiwE,EAAY5K,EAAAA,GAAAA,QAAqB0/B,IAG1Cr6B,UACI1qE,EAAAA,GAAAA,IAAKiwE,EAAY5K,EAAAA,GAAAA,aAA0BqF,IAG/Cl9E,UACIwS,EAAAA,GAAAA,IAAKiwE,EAAY5K,EAAAA,GAAAA,UAAuB73E,GAElD,CAlB8D,EAkB7D,CAEM,SAAUqxJ,WACT/yB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAkC1kF,GACpD,CAEO,SAAU2xJ,WACThzB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAgC3hF,GAClD,CAEO,SAAU6uJ,WACTjzB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoCzhF,GACtD,CAEO,SAAU4uJ,WACTlzB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAmCxhF,GACrD,CAEO,SAAU4uJ,WACTnzB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAiBjmF,GACnC,CAEO,SAAUszJ,WACTpzB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA2BvhF,GAC7C,CAEO,SAAU6uJ,WACTrzB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAyBjlF,GAC3C,CAEe,SAAUwyJ,WACjBzkJ,EAAAA,GAAAA,IAAI,CACRkkJ,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CC3RO,SAAUthL,GAAkB4zB,GAAA,IAAG+W,QAASqjG,GAAap6G,EAAA,mBAC1D,MAAMmE,QAAY60H,EAAAA,GAAAA,IAAOC,EAAAA,KACnB70H,QAAiB40H,EAAAA,GAAAA,IAAOC,EAAAA,KACxB50H,QAAe20H,EAAAA,GAAAA,IAAOC,EAAAA,KAEtB20B,EAAoB9iI,IAAO1mB,GAAU+gC,OAAO,KAC5C0oH,EAAkB/iI,IAAOzmB,GAAQ8gC,OAAO,KAE9C,IACE,IAAI40E,EAGFA,EADEK,QACa7rG,EAAAA,GAAAA,IAAK3S,GAAAA,UAEL2S,EAAAA,GAAAA,IAAK3S,GAAAA,GAA4BuI,EAAIgN,OAAQy8I,EAAmBC,SAG3Eh1B,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B,CAAE25B,SAAQK,gBAGnD,CAFE,MAAO5xG,SACDqwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2B53E,GACvC,CACF,CArB4D,EAqB3D,CAEM,SAAU96B,GAAc4yG,GAAA,IAAGvpE,SAAS,KAAEnX,EAAI,QAAEw4G,IAAW93B,EAAA,mBAC5D,MACMtpE,SADagiH,EAAAA,GAAAA,IAAOC,EAAAA,MACR/hH,IAAItX,EAAKoX,MACrB9W,EAAQN,EAAKiJ,MAAQjJ,EAAKzD,GAYhC,GAVI,CAACm8G,GAAAA,GAAAA,qBAAoCA,GAAAA,GAAAA,UAAwB3oG,QAAQyoG,IAAY,UAC7EygB,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B,CAClCw6B,WAAY,WACZ16G,QACA8W,gBAGI6hH,EAAAA,GAAAA,IAAIz4C,EAAAA,OAGR,CACFk4B,GAAAA,GAAAA,kBACAA,GAAAA,GAAAA,qBACAA,GAAAA,GAAAA,mBACA3oG,QAAQyoG,IAAY,EAAG,CACvB,MAAM,KAAEzwD,EAAI,GAAEF,GAAO7nD,EAAKm/C,WAAWovC,MAC/B2/D,EAAQhjI,IAAO68B,GACfomG,EAAMjjI,IAAO28B,GACbumG,EAAeF,EAAMlZ,KAAKmZ,GAAO,QACjCl1B,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B,CAClCh8E,SAAU4pJ,EAAcF,EAAQC,EAAI98I,SAAS,EAAG,QAChD5M,OAAQ2pJ,EAAcD,EAAMD,EAAMjvE,IAAI,EAAG,QACzCqO,UAAW,KAEf,CAEI,CAACorB,GAAAA,GAAAA,WAAyB3oG,QAAQyoG,IAAY,IAC5Cx4G,EAAK63G,YACDvuG,EAAAA,GAAAA,IAAItJ,EAAK63G,MAAM76F,KAAIkqB,IACvB+xF,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B,CAAEw6B,WAAY,YAAa16G,MAAO4mC,EAAE7mC,IAAK+W,KAAM8vB,EAAE9vB,iBAG3E6hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B,CAAEw6B,WAAY,YAAa16G,QAAO8W,gBAGlE6hH,EAAAA,GAAAA,IAAIz4C,EAAAA,MAEd,CA1C8D,EA0C7D,CAEM,SAAUzyG,GAAqB4yG,GAAA,IAAC,QAAExpE,GAASwpE,EAAA,yBAC1Cs4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0BrpE,UAE9B8hH,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAJkD,EAIjD,CAEM,SAAU5zG,KACf,MAAM4gE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KACxB/jC,EAAWr1F,EAASqX,IAAI,YAExB+2I,EAAc,CAClBj3I,KAAMnX,EAASqX,IAAI,QACnBoU,MAAOzrB,EAASqX,IAAI,eACpB29E,OAAQh1F,EAASqX,IAAI,UACrB6jG,aAAcl7G,EAASqX,IAAI,gBAC3Bg+E,SAAUtsF,OAAOC,KAAKqsF,GAAUhmF,QAAOjP,IAAyB,IAAlBi1F,EAASj1F,KACvDiuJ,QAASruJ,EAASqX,IAAI,kBAAoB,KAG5C,IAAIpO,EAGFA,EADEjJ,EAASqX,IAAI,YACA3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8BiE,EAASqX,IAAI,MAAO+2I,SAEvD1/I,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8BqyJ,SAG9Cp1B,EAAAA,GAAAA,IAAIz4C,EAAAA,YAEJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,EAAsCt3E,UAC1C+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAIpO,EAAOowE,SACtB2G,SAAS,IAOb,CALE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoC/3E,UACxCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC0oE,SAAS,IAEb,CACF,CAEO,SAAUtxG,GAAqBiyG,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,mBAGhD,SAFMq4C,EAAAA,GAAAA,IAAIz4C,EAAAA,MAENrpE,EAAS,CACX,MAAM89E,EAAS99E,EAAQG,IAAI,WAAWhI,QAAOhB,GAAuB,WAAlBA,EAAEgJ,IAAI,UAAsB0F,KAAI1O,GAAKA,EAAEgJ,IAAI,WACvF6jG,EAAehkG,EAAQG,IAAI,WAAWhI,QAAOhB,GAAuB,kBAAlBA,EAAEgJ,IAAI,UAA6B0F,KAAI1O,GAAKA,EAAEgJ,IAAI,WACpGg+E,EAAWtsF,OAAOiB,OACtB,CAAC,KACEyqE,EAAAA,GAAAA,KAAarwC,IAAM,CACpB,CAACA,EAAG9nC,IAAK4a,EACNG,IAAI,WACJhI,QAAOhB,GAAuB,aAAlBA,EAAEgJ,IAAI,UAClB0F,KAAI1O,GAAKA,EAAEgJ,IAAI,WACfuU,SAASwY,EAAG9nC,SAIbyD,EAAO,CACXzD,GAAI4a,EAAQG,IAAI,MAChBF,KAAMD,EAAQG,IAAI,QAClB29E,SACAkmB,eACA7lB,WACA1qC,eAAqD,IAArC2jG,WAAWp3I,EAAQG,IAAI,YACvC+/F,YAAalgG,EAAQG,IAAI,gBAGrB2hH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkCxgF,GAC9C,CACF,CA7BkD,EA6BjD,CAEM,SAAUjzB,KACf,MAAMygE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBg1B,EAAc,CAClBj3I,KAAMnX,EAASqX,IAAI,QACnB2sD,SAASuqF,EAAAA,GAAAA,IAAiBvuJ,EAASqX,IAAI,cAAe,OAAOT,QAAO23I,EAAAA,GAAAA,IAAiBvuJ,EAASqX,IAAI,gBAAiB,WAGrH,IAAIpO,EAGFA,EADEjJ,EAASqX,IAAI,YACA3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6BiE,EAASqX,IAAI,MAAO+2I,SAEtD1/I,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6BqyJ,SAG7Cp1B,EAAAA,GAAAA,IAAIz4C,EAAAA,YAEJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqCt3E,UACzC+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAIpO,EAAOowE,SACtB2G,SAAS,IAOb,CALE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmC/3E,UACvCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC0oE,SAAS,IAEb,CACF,CAEO,SAAUvxG,GAAoBmyG,GAAA,IAAC,QAAE1pE,GAAS0pE,EAAA,mBAG/C,SAFMo4C,EAAAA,GAAAA,IAAIz4C,EAAAA,MAENrpE,EAAS,CACX,MAAM+jG,EAAa/jG,EAAQG,IAAI,WAAWhI,QAAOwuE,GAAiC,QAAvBA,EAAOxmE,IAAI,UAAmB0F,KAAI8gE,GAAUA,EAAOxmE,IAAI,YAC5G6jG,EAAehkG,EAAQG,IAAI,WAAWhI,QAAOwuE,GAAiC,UAAvBA,EAAOxmE,IAAI,UAAqB0F,KAAI8gE,GAAUA,EAAOxmE,IAAI,YAChHtX,EAAO,CACXzD,GAAI4a,EAAQG,IAAI,MAChBF,KAAMD,EAAQG,IAAI,QAClB4jG,aACAC,gBAGF,UACQ8d,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAiCxgF,GAG7C,CAFE,MAAOyI,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAmC/3E,GAC/C,CACF,CACF,CAnBiD,EAmBhD,CAEM,SAAUx7B,KACf,IACE,MAAMi8B,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,UACpBi9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA+Bt3E,GAG3C,CAFE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B/3E,GACzC,CACF,CAEO,SAAUr7B,GAAuB0zG,GAAA,IAAG3pE,SAAS,KAAE3Y,EAAI,GAAEjC,IAAMukF,EAAA,mBAChE,MAAMtzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,IAAInwH,EAES,WAAT1K,EACF0K,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8BO,GAChC,UAATiC,IACT0K,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6BO,UAG7C08H,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAIpO,EAAOowE,SACtB2G,SAAS,IAQb,CANE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgC/3E,UACpCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,sBACf2oE,SAAS,IAEb,CACF,CAzBkE,EAyBjE,CAEM,SAAU1yG,GAA2BwzG,GAAA,IAAG5pE,SAAS,KAAE3Y,EAAI,GAAEjC,IAAMwkF,EAAA,mBACpE,MAAMvzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA4BO,EAAI,CAAEiC,eAEtDy6H,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsCt3E,UAC1C+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAIpO,EAAOowE,SACtB2G,SAAS,IAQb,CANE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoC/3E,UACxCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,0BACf2oE,SAAS,IAEb,CACF,CAnBsE,EAmBrE,CAEM,SAAUvyG,GAAyBszG,GAAA,IAAG7pE,SAAS,KAAE3Y,EAAI,GAAEjC,IAAMykF,EAAA,mBAClE,MAAMxzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0BO,EAAI,CAAEiC,eAEpDy6H,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoCt3E,UACxC+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAIpO,EAAOowE,SACtB2G,SAAS,IAQb,CANE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAkC/3E,UACtCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,wBACf2oE,SAAS,IAEb,CACF,CAnBoE,EAmBnE,CAEM,SAAU3wG,KACf,MAAMk+D,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,IACE,MAAMp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KACxB/jC,EAAWr1F,EAASqX,IAAI,YAExB+2I,EAAc,CAClB3iI,MAAOzrB,EAASqX,IAAI,eACpB29E,OAAQh1F,EAASqX,IAAI,UACrB6jG,aAAcl7G,EAASqX,IAAI,gBAC3Bg+E,SAAUtsF,OAAOC,KAAKqsF,GAAUhmF,QAAOjP,IAAyB,IAAlBi1F,EAASj1F,KACvDiuJ,QAASruJ,EAASqX,IAAI,kBAAoB,KAGtCpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqBqyJ,SACzCp1B,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqC,CAC7CP,QAAS/2E,EAAO+2E,QAChB3G,QAAS,GAAG9rC,EAAKl2B,IAAI,yCAAyCpO,EAAOulJ,iBAAiBC,yBAElFxkJ,EAAAA,GAAAA,IAAM,WACN+uH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA+Bt3E,GAO3C,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6B/3E,UACjCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,2BACf2oE,SAAS,IAEb,CACF,CAEO,SAAUzwG,KACf,MAAMusB,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBs1B,QAAuBv1B,EAAAA,GAAAA,IAAOC,EAAAA,KACpCt9H,EAAKgsD,KAAO4mG,EAActiI,KAE1B,IACE,MAAMnjB,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0BD,SAC9Ck9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAsCt3E,GAGlD,CAFE,MAAON,SACDqwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAoC53E,GAChD,CACF,CAEO,SAAUgmJ,WACTn0B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA4Bh0G,GAC9C,CAEO,SAAUqiL,WACTp0B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwB1yG,GAC1C,CAEO,SAAUghL,WACTr0B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA+BzyG,GACjD,CAEO,SAAUghL,WACTt0B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAqC5zG,GACvD,CAEO,SAAUoiL,WACTv0B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA+B7xG,GACjD,CAEO,SAAUsgL,WACTx0B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA8B9xG,GAChD,CAEO,SAAUwgL,WACTz0B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAoCzzG,GACtD,CAEO,SAAUoiL,WACT10B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA8BvzG,GAChD,CAEO,SAAUmiL,WACT30B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAiCpzG,GACnD,CAEO,SAAUiiL,WACT50B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAqCjzG,GACvD,CAEO,SAAU+hL,WACT70B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAmC9yG,GACrD,CAEO,SAAU6hL,WACT90B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA8BlxG,GAChD,CAEO,SAAUkgL,WACT/0B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAqChxG,GACvD,CAEe,SAAUigL,WACjBnmJ,EAAAA,GAAAA,IAAI,CACRslJ,KACAC,KACAC,KACAC,KACAG,KACAC,KACAC,KACAC,KACAC,KACAL,KACAD,KACAO,KACAC,MAEJ,CCjYO,SAAUxhL,GAAiBoyB,GAAA,IAAG+W,SAAS,SAAE3S,EAAQ,OAAEC,EAAM,UAAE6oF,IAAaltF,EAAA,yBACvE64H,EAAAA,GAAAA,IAAI/hH,GAAAA,IAA2B,UAC/B+hH,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CAAEtlG,WAAUC,SAAQ6oF,qBACjD2rC,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAL+E,EAK9E,CAEM,SAAUvyG,GAAmByyG,GAAA,IAAGvpE,QAASo3E,GAAO7N,EAAA,mBACrD,MAAM,KAAE34B,EAAI,GAAEF,SAAal5C,EAAAA,GAAAA,IAAK2iF,GAAAA,GAAc/C,IAE1CxmC,GAAQF,WACJoxE,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA0B,CAClCh8E,SAAUujD,EACVtjD,OAAQojD,EACRylC,UAAWiB,KAGjB,CAVuD,EAUtD,CAEM,SAAU/zH,GAAcmmH,GAAA,IAAGxpE,QAASuU,GAAOi1D,EAAA,mBAChD,GAAc,KAAVj1D,EAAc,CAChB,IAAI0/H,GAAU,EAEd,IACE,MAAMrvJ,EAAO,CACX2vB,QACAs9B,WAAY,oBAGR,MAAEsiG,SAAgB38I,EAAAA,GAAAA,IAAK3S,GAAAA,GAAcD,GAE3CqvJ,EAAUE,CAGZ,CAFE,MAAOh9I,GACP88I,GAAU,CACZ,CAEA,GAAIA,EAAS,CACX,MAAM3mH,EAAU/Y,EAAM0D,MAAM,KAAKpS,KAAIC,GAAKA,EAAEkgC,SAAQ7tC,QAAO2N,GAAKA,IAEhE,IAAK,IAAIgiB,EAAI,EAAGA,EAAIwF,EAAQtiC,OAAQ88B,GAAK,QACjCg6F,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA8B,CACtC90D,MAAO+Y,EAAQxF,YAIbg6F,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,KAAO,CACL,MAAMhzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WAEpBJ,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,iBACf2oE,SAAS,IAEb,CACF,YACQg5C,EAAAA,GAAAA,IAAIz4C,EAAAA,KAEd,CAtCkD,EAsCjD,CAEM,SAAUjyG,WACT0qJ,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAEO,SAAUlyG,WACT2qJ,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAEO,SAAU/lH,GAAcmmH,GAAA,IAAGzpE,SAAS,MAAEuoB,EAAK,MAAEhsB,IAASktE,EAAA,yBACrDq4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqB,CAAE9gD,QAAOhsB,iBAClCulH,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAH6D,EAG5D,CAEM,SAAU37G,GAAcg8G,GAAA,IAAG1pE,SAAS,MAAEuoB,EAAK,MAAEhsB,IAASmtE,EAAA,yBACrDo4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqB,CAAE9gD,QAAOhsB,iBAClCulH,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAH6D,EAG5D,CAEM,SAAU9lH,GAAcomH,GAAA,IAAC,QAAE3pE,GAAS2pE,EAAA,yBACnCm4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAqBrpE,UACzB8hH,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAH2C,EAG1C,CAEM,SAAU2rE,WACT1xB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA2BxyG,GAC7C,CAEO,SAAUo+K,WACT3xB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA6BvyG,GAC/C,CAEO,SAAU69K,WACTrxB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwBhmH,GAC1C,CAEO,SAAUuxL,WACTtxB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwB/lH,GAC1C,CAEO,SAAUuxL,WACTvxB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwB37G,GAC1C,CAEO,SAAUwnL,WACT5xB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwBjyG,GAC1C,CAEO,SAAUm+K,WACTjyB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwB9lH,GAC1C,CAEO,SAAU4xL,WACT7xB,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwBlyG,GAC1C,CAEe,SAAUohL,WACjBpmJ,EAAAA,GAAAA,IAAI,CACR8iJ,KACAN,KACAO,KACAN,KACAC,KACAU,KACAP,KACAG,MAEJ,CCtIO,SAAUjgL,KACf,MAAM0vB,QAAaq9H,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0BD,SAC9Ck9H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA6Bt3E,GAGzC,CAFE,MAAON,SACDqwH,EAAAA,GAAAA,IAAIz4C,EAAAA,GAA2B53E,GACvC,CACF,CAEO,SAAUz5B,GAAcixB,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,yBACnC64H,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAyBrpE,UAC7B8hH,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAH2C,EAG1C,CAEM,SAAUpxG,GAAqBsxG,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,yBAC1Cu4C,EAAAA,GAAAA,IAAIz4C,EAAAA,GAAgCrpE,UACpC8hH,EAAAA,GAAAA,IAAIz4C,EAAAA,KACZ,CAHkD,EAGjD,CAEM,SAAUmvE,WACTl1B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA4Bn0G,GAC9C,CAEO,SAAUujL,WACTn1B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAAwBrxG,GAC1C,CAEO,SAAU0gL,WACTp1B,EAAAA,GAAAA,IAAUj6C,EAAAA,GAA+BpxG,GACjD,CAEe,SAAU0gL,WACjBxmJ,EAAAA,GAAAA,IAAI,CACRsmJ,KACAC,KACAF,MAEJ,CCvCe,SAAUI,WACjBzmJ,EAAAA,GAAAA,IAAI,CACRmmJ,KACAC,KACAI,MAEJ,CCLA,MAAMn0J,GAAYA,KAAMC,EAAAA,EAAAA,KAAeC,EAAAA,EAAAA,YAE1Bm0J,GAAiBj0J,GAAQC,GAAAA,GACpC,GAAGL,8BACHI,GAGWk0J,GAAiBA,CAAC1zJ,EAAIR,IAASC,GAAAA,GAC1C,GAAGL,+BAAsCY,IACzCR,GAGWm0J,GAAiB3zJ,GAAMP,GAAAA,GAClC,GAAGL,+BAAsCY,KAG9B4zJ,GAAkBp0J,GAAQC,GAAAA,GACrC,GAAGL,qCACHI,GAGWq0J,GAAgBr0J,GAAQC,GAAAA,GACnC,GAAGL,6BACHI,GAGWs0J,GAAa9zJ,GAAMP,GAAAA,GAC9B,GAAGL,8BAAqCY,KAG7BvgC,GAAgBA,CAACugC,EAAIR,IAASC,GAAAA,GACzC,GAAGL,8BAAqCY,IACxCR,GAGWu0J,GAAgB/zJ,GAAMP,GAAAA,GACjC,GAAGL,8BAAqCY,KAG7Bg0J,GAAgBx0J,GAAQC,GAAAA,GACnC,GAAGL,iCACHI,GAGWy0J,GAAiBz0J,GAAQC,GAAAA,GACpC,GAAGL,oCACHI,GAGW00J,GAAcl0J,GAAMP,GAAAA,GAC/B,GAAGL,mCAA0CY,KAGlCm0J,GAAgBn0J,GAAMP,GAAAA,GACjC,GAAGL,qCAA4CY,KAGpCo0J,GAAkBA,CAACp0J,EAAIR,IAASC,GAAAA,GAC3C,GAAGL,8BAAqCY,aACxCR,GAGW60J,GAAwB70J,GAAQC,GAAAA,GAC3C,GAAGL,2EACHI,GAGW80J,GAA4B90J,GAAQC,GAAAA,GAC/C,GAAGL,iDAAyDI,GAGjD+0J,GAAsB9wJ,GACjChE,GAAAA,GACE,GAAGL,gDAAwDqE,EAAM,QAIxD+wJ,GAAsBh1J,GAAQC,GAAAA,GACzC,GAAGL,8BACHI,GAGWi1J,GAAsBA,CAACz0J,EAAIR,IAASC,GAAAA,GAC/C,GAAGL,+BAAsCY,IACzCR,GAGWk1J,GAAsB10J,GAAMP,GAAAA,GACvC,GAAGL,+BAAsCY,KAG9B20J,GAAsBn1J,GAAQC,GAAAA,GACzC,GAAGL,qCAA6CI,GAGrCo1J,GAAkBp1J,GAAQC,GAAAA,GACrC,GAAGL,oCACHI,GAGWq1J,GAAkBA,CAAC70J,EAAI80J,IAAwBr1J,GAAAA,GAC1D,GAAGL,8BAAqCY,4CAA6C80J,KAG1EC,GAAgCA,CAAC9yJ,EAAM8uF,EAAWikE,IAAoBv1J,GAAAA,GACjF,GAAGL,yCAAgD6C,gBAAmB8uF,sBAA8BikE,KAGzFC,GAAmBz1J,GAAQC,GAAAA,GACtC,GAAGL,uCACHI,GAGW01J,GAAkBl1J,GAAMP,GAAAA,GACnC,GAAGL,wCAA+CY,KAGvCm1J,GAAoBlrJ,IAC/B,MAAMvG,EAAW,IAAIC,SAGrB,OAFAD,EAASO,OAAO,OAAQgG,EAAK0hD,YAAY,GAAI1hD,EAAK0hD,YAAY,GAAG9wC,MAE1Dpb,GAAAA,GACL,GAAGL,yCACHsE,EACD,EAGU0xJ,GAAkB3xJ,IAC7B,MAAMC,EAAW,IAAIC,SASrB,OARAF,EAAKG,SAAQC,IAA8B,IAA7B,IAAEC,EAAG,MAAEC,EAAK,SAAEC,GAAUH,EAChCG,EACFN,EAASO,OAAOH,EAAKC,EAAOC,GAE5BN,EAASO,OAAOH,EAAKC,EACvB,IAGKtE,GAAAA,GACL,GAAGL,yCACHsE,EACD,EAGU2xJ,GAAiBA,CAACr1J,EAAIR,IAASC,GAAAA,GAC1C,GAAGL,8BAAqCY,QACxCR,G,4BChIK,SAAUx/B,GAAe6jC,GAAA,IAAG+W,SAAS,GAAE5a,IAAM6D,EAAA,mBAClD,IACE,MAAM8I,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAgBO,SACpC08H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA0Bt3E,UAC9B+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA6B,CAAC,GAO1C,CANE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAwB/3E,UAC5BwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,aACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC0oE,SAAS,IAEb,CACF,CAZoD,EAYnD,CAEM,SAAUj8G,KACf,MAAMwpE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBg1B,EAAc,CAClBwD,iBAAkB5xJ,EAASqX,IAAI,kBAC/BkvC,SAAUvmD,EAASqX,IAAI,WACvB/a,GAAI0D,EAASqX,IAAI,MACjBF,KAAMnX,EAASqX,IAAI,QACnBivC,WAAYtmD,EAASqX,IAAI,aACzBiiF,QAASt5F,EAASqX,IAAI,WACtBs/E,OAAQ32F,EAASqX,IAAI,WAGvB,IAAIpO,EACAm+C,EAEApnD,EAASqX,IAAI,OACfpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBiE,EAASqX,IAAI,MAAO+2I,GAC5DhnG,EAAO7Z,EAAKl2B,IAAI,0BAEhBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBqyJ,GACxChnG,EAAO7Z,EAAKl2B,IAAI,+BAGZ2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA4Bt3E,IAEtC,MAAM4oJ,QAAqB14B,EAAAA,GAAAA,IAAOC,EAAAA,WAC5BJ,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAiCsxE,UAErC74B,EAAAA,GAAAA,IAAIz4C,GAAAA,aAEJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,OACA+4B,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA0B/3E,UAC9BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAEO,SAAU1hH,GAAwBgiH,GAAA,IACvCvpE,SAAS,GACP5a,EAAE,MACFyhF,EAAK,WACLujC,EAAU,aACVv5D,EAAY,oBACZ+pG,EAAmB,uBACnBC,EAAsB,eACtBjwC,EAAc,cACdkwC,IAEHvxE,EAAA,mBACC,MAAMlzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMg1B,EAAc,CAClB9xJ,KACAyhF,QACAk0E,YAAa3wC,EACbh5D,cAAeP,EACfmqG,uBAAwBJ,EACxBK,0BAA2BJ,EAC3BK,gBAAiBtwC,EACjBuwC,gBAAiBL,GAEb/oJ,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAmBO,EAAI8xJ,SAC3Cp1B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAmCt3E,GAa/C,CAZE,MAAOT,GACP,IAAIg4E,EAAMjzC,EAAKl2B,IAAI,UAEf7O,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,aACnCnzB,EAAMjzC,EAAKl2B,IAAI,sCAGX2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAiC/3E,UACrCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAMo5B,EACNL,QAAS,UAEb,CACF,CA7BC,EA6BA,CAEM,SAAU7hH,GAAgBoiH,GAAA,IAAC,QAAExpE,GAASwpE,EAAA,mBAC3C,MAAMnzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBn9H,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBhiH,QAAe+hH,EAAAA,GAAAA,IAAOC,EAAAA,KACtB7X,EAAcvhH,EAASqX,IAAI,eAC3B9Y,EAAOyB,EAAS+Z,MAAM,CAAC,OAAQ,OAErC,IAAIi4I,EAAgB,KAEA,OAAhBzwC,IACFywC,EAAgBzwC,EAAYlqG,IAAI,UAGlC,MAAM0U,EAAa/rB,EAASqX,IAAI,cAAc0F,KAAIiP,IAAK,CACrDsmI,WAAYtmI,EAAE3U,IAAI,aAClBkjI,WAAYvuH,EAAE3U,IAAI,aAClBmjI,UAAWxuH,EAAE3U,IAAI,YACjBy+E,KAAM9pE,EAAE3U,IAAI,QACZk7I,WAAYvmI,EAAE3U,IAAI,aAClBm7I,qBAAsBxmI,EAAE3U,IAAI,0BAGxBqqG,EAAgB1hH,EAASqX,IAAI,iBAAiB0F,KAAImnB,IAAK,CAC3D5nC,GAAI4nC,EAAE7sB,IAAI,UAGN0qG,EAAQ/hH,EAASqX,IAAI,SAAS0F,KAAIyU,IAAK,CAC3C41B,KAAM51B,EAAEna,IAAI,QACZo7I,WAAYjhI,EAAEna,IAAI,aAClBq7I,WAAYlhI,EAAEna,IAAI,iBAGdoqG,EAAazhH,EAASqX,IAAI,eAAiBD,EAAOC,IAAI,cACtDgsE,EAAarjF,EAASqX,IAAI,eAAiBD,EAAOC,IAAI,eACtD/a,EAAK0D,EAASqX,IAAI,MAElB+2I,EAAc,CAClB9xJ,KACAyhF,MAAO/9E,EAASqX,IAAI,SACpBvb,KAAMkE,EAASqX,IAAI,QACnBs7I,WAAY3yJ,EAASqX,IAAI,aACzBu7I,cAAe5zB,KAAKC,UAAUj/H,EAASqX,IAAI,iBAC3C9Y,OACAspD,QAAS7nD,EAASqX,IAAI,WACtB46I,YAAajyJ,EAASqX,IAAI,cAC1BixC,cAAetoD,EAASqX,IAAI,gBAC5Bg7I,gBAAiBL,EACjBa,gBAAiBnxC,EACjB31F,aACA9vB,WACA62J,YAAazvE,EACbqoD,YAAajqB,EACb5jC,OAAQ79E,EAASqX,IAAI,UACrBs0H,cAAe3rI,EAASqX,IAAI,gBAC5B+6I,gBAAiBpyJ,EAASqX,IAAI,kBAC9B0qG,SAmBF,GAhBa,aAATxjH,IACF6vJ,EAAY2E,eAAiB/zB,KAAKC,UAAUj/H,EAASqX,IAAI,iBACzD+2I,EAAY0E,YAAc,GAC1B1E,EAAY1iB,YAAc,GAC1B0iB,EAAYvwE,OAAS,GACrBuwE,EAAYziB,cAAgB,IAGjB,aAATptI,IACF6vJ,EAAY4E,cAAgBh0B,KAAKC,UAAUj/H,EAASqX,IAAI,iBACxD+2I,EAAY0E,YAAc,GAC1B1E,EAAY1iB,YAAc,GAC1B0iB,EAAYvwE,OAAS,GACrBuwE,EAAYziB,cAAgB,IAGjB,sBAATptI,IACF6vJ,EAAY0E,YAAc,GAC1B1E,EAAY1iB,YAAc,GAC1B0iB,EAAYvwE,OAAS,GACrBuwE,EAAYziB,cAAgB,GAExByiB,EAAYtyJ,MAAM,CACpB,MAAMm3J,EAAaj0B,KAAKvvG,MAAM2+H,EAAYtyJ,MAC1C,IAAI,KAAEsrD,GAAS6rG,GACX,QAAE1mI,GAAY0mI,EAClB7rG,QAAa14C,EAAAA,GAAAA,IAAKwkJ,GAAAA,GAAyB9rG,EAAM,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,OACvF76B,QAAgB7d,EAAAA,GAAAA,IAAKwkJ,GAAAA,GAAyB3mI,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,OAEjF,MAAM4mI,EAAiB/rG,EAAK34B,QAAQ,eAAgB,MAAMA,QAAQ,WAAY,IACxE2kI,EAAmB7mI,EAAQkC,QAAQ,eAAgB,MAAMA,QAAQ,WAAY,IAEnF2/H,EAAYuE,WAAa,GAAGQ,KAAkBC,IAC9ChF,EAAYtyJ,KAAOkjI,KAAKC,UAAU,IAAKg0B,EAAY7rG,OAAM76B,WAC3D,CAGF,IAAItjB,EACAm+C,EAEA9qD,GACF2M,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAmBO,EAAI8xJ,GAC3ChnG,EAAO7Z,EAAKl2B,IAAI,yBAEhBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAmBqyJ,GACvChnG,EAAO7Z,EAAKl2B,IAAI,wBAGdH,GAAWA,EAAQryC,kCACfm0J,EAAAA,GAAAA,IAAIz4C,GAAAA,QAGRrpE,GAAWA,EAAQpyC,sCACfk0J,EAAAA,GAAAA,IAAIz4C,GAAAA,QAGRrpE,GAAWA,EAAQj1C,8BACf+2J,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyB,CAAEjkF,GAAI2M,EAAO3M,GAAIr6B,uBAAuB,MAGzEi1C,GAAWA,EAAQ/0C,iCACf62J,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyB,CAAEjkF,GAAI2M,EAAO3M,GAAIn6B,0BAA0B,MAG5E+0C,GAAWA,EAAQh1C,+BACf82J,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2B,CAAEr+G,wBAAwB,MAG7Dg1C,GAAWA,EAAQ90C,kCACf42J,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2B,CAAEn+G,2BAA2B,MAGpE,MAAMyvL,QAAqB14B,EAAAA,GAAAA,IAAOC,EAAAA,WAC5BJ,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAiCsxE,UAErC74B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2Bt3E,UAC/B+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,OACA+4B,QAAS,YAkBb,CAhBE,MAAO33E,GACP,IAAIg4E,EAAMjzC,EAAKl2B,IAAI,UAEf7O,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,aACnCnzB,EAAMjzC,EAAKl2B,IAAI,gCAGb7O,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,aACnCnzB,EAAMh4E,EAAMksG,SAASr7B,eAGjB2/C,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyB/3E,UAC7BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAMo5B,EACNL,QAAS,UAEb,CACF,CA9J6C,EA8J5C,CAEM,SAAUj8G,GAAkBy8G,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,mBAC7C,MAAMpzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAmBmb,EAAQ5a,UAC/C08H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA6Bt3E,UACjC+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,mBACf8oE,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2B/3E,UAC/BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAjB+C,EAiB9C,CAEM,SAAU97G,GAAmBu8G,GAAA,IAAC,QAAE1pE,GAAS0pE,EAAA,mBAC9C,MAAMrzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBmb,EAAQ5a,UAChD08H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA8Bt3E,UAClC+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,wBACf8oE,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA4B/3E,UAChCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAjBgD,EAiB/C,CAEM,SAAUnkH,KACf,MAAMglJ,QAA2BmY,EAAAA,GAAAA,IAAOC,EAAAA,WAElCJ,EAAAA,GAAAA,IAAIz4C,GAAAA,OAENygC,EAAmBxhG,kBACfw5G,EAAAA,GAAAA,IAAIz4C,GAAAA,OAEd,CAEO,SAAUh+G,GAAqBs+G,GAAA,IAAG3pE,QAASirG,GAAiBthC,EAAA,yBAC3Dm4C,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAwB,CAAEjkF,GAAI6lH,EAAgB9qG,IAAI,QAC9D,CAFmE,EAElE,CAEM,SAAUp1C,KACf,MAAM++I,QAA2BmY,EAAAA,GAAAA,IAAOC,EAAAA,WAElCJ,EAAAA,GAAAA,IAAIz4C,GAAAA,OAENygC,EAAmBxhG,kBACfw5G,EAAAA,GAAAA,IAAIz4C,GAAAA,OAEd,CAEO,SAAUp+G,KACf,MAAM6+I,QAA2BmY,EAAAA,GAAAA,IAAOC,EAAAA,WAElCJ,EAAAA,GAAAA,IAAIz4C,GAAAA,OAENygC,EAAmBxhG,kBACfw5G,EAAAA,GAAAA,IAAIz4C,GAAAA,OAEd,CAEO,SAAUjjH,KACf,MAAMiwE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMt9H,EAAO,CACXu3J,cAAe,CAAC,KAAM,OAAQ,mBAAoB,SAAU,aAAc,WAAY,WACtFjxJ,KAAM,EACNJ,MAAO,KAGHiH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAqBD,SACzCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA4Ct3E,GAOxD,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA0C/3E,UAC9CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAEO,SAAUviH,GAAgCqjH,GAAA,IAAG5pE,SAAS,MAAE6mE,EAAK,KAAEx/E,IAAQuiF,EAAA,mBAC5E,MAAMvzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMt9H,EAAO,CACXuT,OAAQ,CAAC,CAAEoE,MAAO,QAASpT,MAAO09E,GAAS,IAAM,CAAEtqE,MAAO,OAAQpT,MAAO9B,GAAQ,UACjF6D,KAAM,EACNJ,MAAO,IAGHiH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBD,SACxCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2Ct3E,GAOvD,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyC/3E,UAC7CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAnB8E,EAmB7E,CAEM,SAAUxgH,KACf,MAAM+tE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMt9H,EAAO,CACXsG,KAAM,EACNJ,MAAO,IAGHiH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAsBD,SAC1Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA+Bt3E,UACnC+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,KAAkC,UACtCy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,MAOZ,CANE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA6B/3E,UACjCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAEO,SAAUrgH,GAAwBohH,GAAA,IAAC,QAAE7pE,GAAS6pE,EAAA,mBACnD,MAAMxzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBk6B,QAAuBn6B,EAAAA,GAAAA,IAAOC,EAAAA,KAC9BpY,QAA2BmY,EAAAA,GAAAA,IAAOC,EAAAA,KAClCnY,QAAgCkY,EAAAA,GAAAA,IAAOC,EAAAA,KACvCh3H,QAAa+2H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBp3H,QAAcm3H,EAAAA,GAAAA,IAAOC,EAAAA,KAErB5M,EAAUvL,EAA0B7+G,EAAOJ,EAC3C+hH,EAAa/C,EAChB3xG,QAAOi1G,GAA2C,OAA9BA,EAAUjtG,IAAI,cAClChI,QAAOi1G,GAAaA,EAAUjtG,IAAI,YAAYuU,SAAS,WACvD7O,KAAIunG,IAAa,CAChBhoH,GAAIgoH,EAAUjtG,IAAI,MAClBxG,SAAUyzG,EAAUjtG,IAAI,OACxBk8I,YAAajvC,EAAUjtG,IAAI,YAC3BxJ,MAAO,IACPE,OAAQ,IACR62G,OAAQ,WACNtzG,OAEN,IACE,MAAMxV,EAAO,CACXsG,OACAJ,SAGF,GAAIsxJ,GAAkBp8I,EAAQs8I,KAK5B,aAJMx6B,EAAAA,GAAAA,IAAIz4C,GAAAA,KAAkC,UACtC7xE,EAAAA,GAAAA,IAAKwI,EAAQs8I,KAAMzvC,EAAY,CAAEyI,UAASpqH,OAAMJ,QAAOi/G,uCACvD+X,EAAAA,GAAAA,IAAIz4C,GAAAA,QAKZ,MAAMt3E,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAsBD,GAEhD,GAAIob,EAAQs8I,KAAM,CAChB,MAAMC,EAAgB1vC,EAAWntG,OAAO3N,EAAO86G,WAC5C10G,QAAOi1G,GAAaA,EAAUje,SAASz6E,SAAS,WAChD7O,KAAIunG,IAAa,CAChBhoH,GAAIgoH,EAAUhoH,GACduU,SAAUyzG,EAAUh9D,IACpBisG,YAAajvC,EAAUje,SACvBx4F,MAAO,IACPE,OAAQ,IACR62G,OAAQ,kBAGNl2G,EAAAA,GAAAA,IAAKwI,EAAQs8I,KAAMC,EAAe,CAAEjnC,UAASpqH,OAAMJ,QAAOi/G,2BAClE,OAEM+X,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyBt3E,UAC7B+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,aAEJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,MAOZ,CANE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAiC/3E,UACrCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CA/DqD,EA+DpD,CAEM,SAAUlgH,GAAoBkhH,GAAA,IAAC,QAAE9pE,GAAS8pE,EAAA,mBAC/C,MACM0yE,SAD2Bv6B,EAAAA,GAAAA,IAAOC,EAAAA,MACAt6G,MAAKwlG,GAAaA,EAAUjtG,IAAI,QAAUH,EAAQ5a,KAAI+a,IAAI,iBAElG,IACE,MAAM,aAAE+sG,EAAY,MAAE95F,EAAK,UAAEqpI,SAAoBjlJ,EAAAA,GAAAA,IAAK3S,GAAqB23J,SACrE16B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA+B,CAAE6jC,eAAc95F,iBACnD0uG,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAuCozE,GAGnD,CAFE,MAAOC,SACD56B,EAAAA,GAAAA,IAAIz4C,GAAAA,MACZ,CACF,CAXiD,EAWhD,CAEM,SAAU3iH,KACf,MAAM2vE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMt9H,EAAO,CACXuT,OAAQ,CAAC,CAAEoE,MAAO,OAAQpT,MAAO,KACjC+B,KAAM,EACNJ,MAAO,KAIHiH,QAAeyF,EAAAA,GAAAA,IAAKgsI,GAA8C5+I,SAClEk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAoDt3E,GAOhE,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAkD/3E,UACtDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAEO,SAAUjiH,GAAgCkjH,GAAA,IAAG/pE,SAAS,aAAE28I,IAAgB5yE,EAAA,mBAC7E,MAAM1zC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMt9H,EAAO,CACXuT,OAAQ,CAAC,CAAEoE,MAAO,aAAcpT,MAAOwzJ,IACvCzxJ,KAAM,EACNJ,MAAO,KAIHiH,QAAeyF,EAAAA,GAAAA,IAAKgsI,GAAqC5+I,SACzDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2Ct3E,GAOvD,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyC/3E,UAC7CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CApB+E,EAoB9E,CAEM,SAAUr8G,GAAsBu9G,GAAA,IAAGhqE,SAAS,KAAE3Q,IAAQ26E,EAAA,mBAC3D,IAEE,MAAM,cAAE4yE,EAAa,2BAAEC,SAAqCrlJ,EAAAA,GAAAA,IAAK3S,GAAuBwK,SAClFyyH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAiCuzE,UACrC96B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAuCwzE,GAGnD,CAFE,MAAOH,SACD56B,EAAAA,GAAAA,IAAIz4C,GAAAA,MACZ,CACF,CAT6D,EAS5D,CAEM,SAAUriH,GAAoBijH,GAAA,IAAC,QAAEjqE,GAASiqE,EAAA,mBAC/C,MAAM57E,QAAgB4zH,EAAAA,GAAAA,IAAOC,EAAAA,KAE7B,GAA8B,aAA1B7zH,EAAQ8R,IAAI,UACd,OAGF,MAAMk2B,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB98H,EAAKiJ,EAAQ8R,IAAI,MACjB+5I,EAAsBl6I,EAAQk6I,qBAAuB,MAE3D,IACE,MAAMnoJ,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAqBO,EAAI80J,SAC7Cp4B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA+Bt3E,GAgB3C,CAfE,MAAOT,GAGHA,GAASA,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,WACvCpuG,EAAQ8R,IAAI,6BACT2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA6C,CAAEh7E,oBAGrDyzH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,WAIPg5C,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA6B/3E,GACzC,CACF,CA9BiD,EA8BhD,CAEM,SAAU5pC,GAAoCwiH,GAAA,IAAGlqE,SAAS,QAAE3R,IAAW67E,EAAA,mBAC5E,MAAM7zC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAM98H,EAAKiJ,EAAQ8R,IAAI,MAGjB+2I,EAAc,CAClBrwE,MAAOx4E,EAAQ8R,IAAI,SACnB46I,YAAa1sJ,EAAQ8R,IAAI,cACzBixC,cAAe/iD,EAAQ8R,IAAI,gBAC3B66I,uBAAwB3sJ,EAAQ8R,IAAI,uBACpC86I,0BAA2B5sJ,EAAQ8R,IAAI,0BACvCg7I,gBAAiB9sJ,EAAQwU,MAAM,CAAC,cAAe,OAC/C84I,gBAAiBttJ,EAAQ8R,IAAI,iBAAiB0F,KAAImnB,IAAK,CAAG5nC,GAAI4nC,EAAE7sB,IAAI,UACpE28I,oBAAoB,GAGhB/qJ,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAmBO,EAAI8xJ,SAC3Cp1B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA+Ct3E,GAO3D,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA6C/3E,UACjDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CA3B8E,EA2B7E,CAEM,SAAUwwE,GAAWppE,GAAA,IAAC,QAAElwE,GAASkwE,EAAA,mBACtC,MAAM,GAAE9qF,GAAO4a,GAAW,CAAC,EACrB+8I,GAAa/8I,GACbA,IAAaA,EAAQ1xC,yBAA4B0xC,EAAQj1C,wBAA0Bi1C,EAAQ/0C,yBAG3ForE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB86B,QAAgC/6B,EAAAA,GAAAA,IAAOC,EAAAA,KAE7C,IACE,IAAIxW,EAEJ,IAAKtmH,GAAM23J,EAAU,CAEnBrxC,SADsBuW,EAAAA,GAAAA,IAAOC,EAAAA,MACT/hH,IAAI,KAC1B,MACEurG,EAAYtmH,EAGd,GAAIsmH,EAAW,CACb,MAAM35G,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAiB6mH,GACrC71F,QAAaosG,EAAAA,GAAAA,IAAOC,EAAAA,KAI1B,SAFMJ,EAAAA,GAAAA,IAAIz4C,GAAAA,KAA2B9uE,EAAAA,EAAAA,QAAOxI,MAEvCgrJ,EAAU,CAGb,GAF4BhrJ,EAAO44G,WAAa90F,EAAK1V,IAAI,MAEhC,CACvB,MAAMkqG,EAAc,CAAElhH,MAAO4I,EAAOs4G,YAAYjlH,GAAIy0C,MAAO9nC,EAAOs4G,YAAYpqG,MACxEg9I,EAAeD,EAAwB7kJ,QAAOmzB,GAAKA,EAAEnrB,IAAI,QAAUpO,EAAO1K,OAAM45B,QAEtF,IAAI55B,EAAO,CAAE8B,MAAO6zJ,EAAwB/7H,QAAQ9gB,IAAI,MAAO05B,MAAOmjH,EAAwB/7H,QAAQ9gB,IAAI,SAEtG88I,IACF51J,EAAO,CAAEjC,GAAI63J,EAAa98I,IAAI,MAAOhX,MAAO8zJ,EAAa98I,IAAI,MAAO05B,MAAOojH,EAAa98I,IAAI,UAG9F,MAAM+8I,GAAgB3iJ,EAAAA,EAAAA,QAAO,IACxBxI,EACEs4G,cACAhjH,SAGH2Y,GAAWA,EAAQ1xC,+BACfwzJ,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA+B6zE,KAGvCl9I,GAAWA,EAAQj1C,8BACf+2J,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA6C,UAAZhiF,EAAKjC,GAAiB,WAAa,yBACxE08H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA8B6zE,KAGtCl9I,GAAWA,EAAQ/0C,iCACf62J,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAiC6zE,IAE/C,YACQp7B,EAAAA,GAAAA,IAAIz4C,GAAAA,MAEd,CACF,CAOF,CANE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyB/3E,UAC7BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CApEwC,EAoEvC,CAEM,SAAUywE,GAAappE,GAAA,IAAC,QAAEnwE,GAASmwE,EAAA,mBACxC,MAAMgtE,EACJn9I,IAAaA,EAAQh1C,yBAA2Bg1C,EAAQzxC,0BAA4ByxC,EAAQ90C,0BAExFmjC,QAAgB4zH,EAAAA,GAAAA,IAAOC,EAAAA,KACvB7rF,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBxW,EAAYr9G,EAAQ8R,IAAI,MAE9B,IACE,GAAIurG,EAAW,CACb,MAAM35G,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAmB6mH,SACvCoW,EAAAA,GAAAA,IAAIz4C,GAAAA,KAA6B9uE,EAAAA,EAAAA,QAAOxI,IAChD,CAqBF,CApBE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2B/3E,UAC/BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CAAE,QACKq0E,IACCn9I,GAAWA,EAAQh1C,+BACf82J,EAAAA,GAAAA,IAAIz4C,GAAAA,QAGRrpE,GAAWA,EAAQ90C,kCACf42J,EAAAA,GAAAA,IAAIz4C,GAAAA,QAGRrpE,GAAWA,EAAQzxC,gCACfuzJ,EAAAA,GAAAA,IAAIz4C,GAAAA,QAGhB,CACF,CAlC0C,EAkCzC,CAEM,SAAUxhH,GAA2BwoH,GAAA,IAAGrwE,SAAS,KAAEo9I,GAAO,EAAK,UAAEhoI,IAAai7D,EAAA,mBACnF,MAAMh6C,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,IACE,MAAMp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KAExBg1B,EAAc,CAClBkG,QAGEhoI,IACF8hI,EAAY9hI,UAAYA,SAGpB5d,EAAAA,GAAAA,IAAK3S,GAAqBiE,EAASqX,IAAI,MAAO+2I,SAC9Cp1B,EAAAA,GAAAA,IAAIz4C,GAAAA,aACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,WACf2oE,SAAS,IAQb,CANE,MAAO4zE,SACD56B,EAAAA,GAAAA,IAAIz4C,GAAAA,aACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CA1BqF,EA0BpF,CAEM,SAAUn7G,WACTm0J,EAAAA,GAAAA,IAAIz4C,GAAAA,aACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,aACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,aACJy4C,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAAS,uCACrB,CAEO,SAAU/f,WACTk0J,EAAAA,GAAAA,IAAIu7B,GAAAA,YACJv7B,EAAAA,GAAAA,IAAIu7B,GAAAA,GAAyC,UAC7Cv7B,EAAAA,GAAAA,IAAIz4C,GAAAA,aACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,aACJy4C,EAAAA,GAAAA,KAAIn0I,EAAAA,GAAAA,IAAS,sCACrB,CAEO,SAAU9f,GAAkB2iH,GAAA,IAAGxwE,SAAS,MAAEzD,EAAK,MAAEpT,IAASqnF,EAAA,mBAC/D,UACQsxC,EAAAA,GAAAA,IAAI/hH,GAAAA,MAEV,MAAM2rD,QAAqBu2D,EAAAA,GAAAA,IAAOC,EAAAA,WAE5BJ,EAAAA,GAAAA,IAAImJ,GAAAA,GAA2Bv/D,EAAe,wBAA0B,qBAE9E,MAAM,QAAE14D,SAAkBq7H,EAAAA,GAAAA,IAAK,CAC7B/4F,UAAUg5F,EAAAA,GAAAA,IAAKvuH,GAAAA,IACf/M,SAASD,EAAAA,GAAAA,IAAM,OAGjB,IAAKC,EAAS,CASZ,SARM8uH,EAAAA,GAAAA,IAAI/hH,GAAAA,YACJ+hH,EAAAA,GAAAA,IAAInvB,GAAAA,YAEJmvB,EAAAA,GAAAA,IAAInvB,GAAAA,GAAkC,CAC1Cp2F,QACApT,OAAOoR,EAAAA,EAAAA,QAAO,CAACpR,EAAMyiC,OAAO,cAGhB,gBAAVrvB,GAA2BpT,EAAMgX,IAAI,cAAe,CACtD,MAAM9S,EAAWlE,EAAMgX,IAAI,cACrB7S,EAASymB,IAAO1mB,GAAUy6E,IAAI,GAAI,QAAQ15C,eAE1C0zF,EAAAA,GAAAA,IAAInvB,GAAAA,GAAyB,CACjCtlG,WACAC,WAEJ,OAEMw0H,EAAAA,GAAAA,IAAIyM,GAAAA,IAA4C,UAEhDzM,EAAAA,GAAAA,IAAI/hH,GAAAA,YACJ+hH,EAAAA,GAAAA,IAAI/hH,GAAAA,IACZ,CAMF,CALE,MAAOzO,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CAAE,cACMwwH,EAAAA,GAAAA,IAAI/hH,GAAAA,KACZ,CACF,CA3CiE,EA2ChE,CAEM,SAAU/3C,GAA4B2oH,GAAA,IAAG3wE,SAAS,KAAE3Q,IAAQshF,EAAA,mBACjE,IACE,GAAIthF,EAAM,CACR,MAAMvG,EAAW,CACf,CACEI,IAAK,OACLC,MAAOkG,KAKL,cAAEutJ,EAAa,2BAAEC,SAAqCrlJ,EAAAA,GAAAA,IAAK3S,GAAqBiE,SAChFg5H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuCuzE,UAC3C96B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAuCwzE,GACnD,CAGF,CAFE,MAAOH,SACD56B,EAAAA,GAAAA,IAAIz4C,GAAAA,MACZ,CACF,CAlBmE,EAkBlE,CAEM,SAAUlhH,GAA4B2pH,GAAA,IAAG9xE,SAAS,KAAE3Q,IAAQyiF,EAAA,mBACjE,IACE,GAAIziF,EAAM,CACR,MAAMvG,EAAW,CACf,CACEI,IAAK,OACLC,MAAOkG,KAKL,cAAEutJ,EAAa,2BAAEC,SAAqCrlJ,EAAAA,GAAAA,IAAK3S,GAAqBiE,SAChFg5H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAuCuzE,UAC3C96B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAuCwzE,GACnD,CAGF,CAFE,MAAOH,SACD56B,EAAAA,GAAAA,IAAIz4C,GAAAA,MACZ,CACF,CAlBmE,EAkBlE,CAEM,SAAUjgH,GAAoB2oH,GAAA,IAAG/xE,SAAS,YAAEq8I,EAAW,WAAEiB,EAAU,SAAErhE,EAAQ,KAAEshE,IAAQxrE,EAAA,mBAC5F,IACE,MAAMyrE,QAAmBv7B,EAAAA,GAAAA,IAAOC,EAAAA,KAC1Bu7B,QAA2Bx7B,EAAAA,GAAAA,IAAOC,EAAAA,KAClCw7B,QAAqBz7B,EAAAA,GAAAA,IAAOC,EAAAA,KAElC,IACInwH,EADA4rJ,EAAc,GAGE,aAAhBtB,IACFsB,EAAcF,EAAmB56I,MAAM,CAAC,eAAgB,aAGtC,aAAhBw5I,IACFsB,EAAcF,EAAmB56I,MAAM,CAAC,eAAgB,gBAG1D,MAAMje,EAAO,CACXg5J,YAAaN,EACbO,YAAaL,GAAcG,EAC3B1hE,WACAshE,QAGIO,QAAsBtmJ,EAAAA,GAAAA,IAAK3S,GAAqBD,GAElD24J,IACFxrJ,EAAS,CACPgsJ,SAAUL,EAAaxoI,KAAO,EAC9B86D,OAAQstE,EAAW7oI,cACnBy7B,KAAM4tG,EACNP,OACA7vC,OAAQ8vC,GAAcG,IAIrBJ,IACHxrJ,EAAS,CACPgsJ,SAAUL,EAAaxoI,KAAO,EAC9B86D,OAAQstE,EAAW7oI,cACnBy7B,KAAM4tG,EACNpwC,OAAQ8vC,GAAcG,UAIpB77B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA+Bt3E,GAG3C,CAFE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA6B/3E,GACzC,CACF,CAjD8F,EAiD7F,CAEM,SAAU7nC,GAAyBuoH,GAAA,IAAC,QAAEhyE,GAASgyE,EAAA,mBACpD,IACE,GAA4B,aAAxBhyE,EAAQ6pG,YAA4B,CACtC,MAAM,MAAEhjC,EAAK,IAAEz2B,EAAG,MAAEw9D,EAAK,KAAEtjD,EAAI,YAAEwmB,SAAsBt5E,EAAAA,GAAAA,IAAKwmJ,GAAAA,GAA+B,CAAE5tG,IAAKpwC,EAAQowC,MAE1G,IAAI6tG,EAEJ,GAAIrwC,EAAO,CACT,MAAMv+G,QAAamI,EAAAA,GAAAA,IAAKwmJ,GAAAA,GAA0B,CAAE5tG,IAAKw9D,EAAOswC,WAAYnqI,MAAS+zD,IAAI,GAAI,QAAQ15C,WACrG6vH,EAAiB,CAAEp3E,QAAOz2B,MAAK0gC,cAAa1rF,GAAIiK,EAAKjK,GAAIklE,OAAM2tB,SAAU5oF,EAAK+gD,IAChF,MACE6tG,EAAiB,CAAEp3E,QAAOz2B,MAAK0gC,cAAaxmB,cAGxCw3D,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA4C40E,GACxD,CAEA,GAA4B,aAAxBj+I,EAAQ6pG,YAA4B,CACtC,MAAM93G,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA+B,CAAEurD,IAAKpwC,EAAQowC,YAClE0xE,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA4Ct3E,GACxD,CASF,CARE,MAAOT,GACqB,aAAxB0O,EAAQ6pG,oBACJiY,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA0C,CAAEj5B,IAAKpwC,EAAQowC,QAGzC,aAAxBpwC,EAAQ6pG,oBACJiY,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA0C,CAAEj5B,IAAKpwC,EAAQowC,OAEvE,CACF,CA9BsD,EA8BrD,CAEM,SAAUupG,GAAmB1nE,GAAA,IAAC,QAAEjyE,GAASiyE,EAAA,mBAC9C,MAAM,OAAEy3B,GAAW1pG,EACbq2B,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAyB,CAAE6kH,iBAC/ClyG,EAAAA,GAAAA,IAAKyrH,GAAclxH,EAAQ,6BAA8B6uE,EAAAA,UACzDkhD,EAAAA,GAAAA,IAAIz4C,GAAAA,aACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,wBACf8oE,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAiC/3E,UACrCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,mBACf8oE,QAAS,UAEb,CACF,CAnBgD,EAmB/C,CAEM,SAAUh/G,GAAyBgvH,GAAA,IAAC,QAAEj5E,GAASi5E,EAAA,mBACpD,MAAM,GAAE7zF,GAAO4a,EACTq2B,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMg1B,EAAc,CAClB9xJ,KACAs1J,iBAAkB16I,EAAQgrG,eAC1BvrB,OAAQz/E,EAAQy/E,OAChBrwC,WAAYpvC,EAAQkU,UACpBm7B,SAAUrvC,EAAQmU,QAClBiuE,QAASpiF,EAAQoiF,SAGbrwF,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBO,EAAI8xJ,SAE5Cp1B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAoCt3E,GAOhD,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAkC,CAAE/3E,QAAOlM,cAC/C08H,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAxBsD,EAwBrD,CAEM,SAAUz6G,GAAc0qH,GAAA,IAAC,QAAEl5E,GAASk5E,EAAA,mBACzC,MAAM,KAAE7xF,GAAS2Y,EACXq2B,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBr7C,EAAQxwC,EAAKl2B,IAAI,oBAAqB,CAAE9Y,KAAMgvC,EAAKl2B,IAAI9Y,GAAO82J,UAAWpqI,MAASqa,WAExF,GAAa,UAAT/mC,EAAkB,CACpB,MAAM6Y,QAAe+hH,EAAAA,GAAAA,IAAOC,EAAAA,WAEtBJ,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2B,CACnCngF,IAAK,SACLC,MAAO+W,EAAOC,IAAI,mBAGd2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2B,CACnCngF,IAAK,eACLC,MAAO+W,EAAOC,IAAI,kBAEtB,CAEA,GAAa,sBAAT9Y,EAA8B,CAChC,MAAMM,QAAes6H,EAAAA,GAAAA,IAAOC,EAAAA,KAEtBh5H,EAAM,+BADc+4H,EAAAA,GAAAA,IAAOC,EAAAA,QACmBv6H,yBAGpD,GAAc,iBAFM6P,EAAAA,GAAAA,IAAKi5I,GAAsBvnJ,IAK7C,kBAFM44H,EAAAA,GAAAA,IAAIz4C,GAAAA,aAKNy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2B,CACnCngF,IAAK,OACLC,MAAO2+H,KAAKC,UAAUq2B,GAAAA,KAE1B,OAEMt8B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2B,CACnCngF,IAAK,QACLC,MAAO09E,WAWHi7C,EAAAA,GAAAA,IAAIz4C,GAAAA,IAPK,sBAAThiF,EACK,iBAGF,aAKI,UAATA,GAA6B,sBAATA,SAChBy6H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2B,CACnCngF,IAAK,OACLC,MAAO,CAAE0wC,MAAOxyC,EAAMjC,GAAIiC,YAGtBy6H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyB,CAAEt+G,uBAAuB,YAGtD+2J,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyB,CAAEp+G,0BAA0B,IAEnE,CA/D2C,EA+D1C,CAEM,SAAU2E,KACf,MAAM+3B,QAAes6H,EAAAA,GAAAA,IAAOC,EAAAA,KAEtBh5H,EAAM,+BADc+4H,EAAAA,GAAAA,IAAOC,EAAAA,QACmBv6H,+BAC9C6P,EAAAA,GAAAA,IAAKi5I,GAAsBvnJ,EAAK,QACxC,CAEO,SAAUm1J,GAAkBnrD,GAAA,IAAC,QAAElzF,GAASkzF,EAAA,mBAC7C,MAAM78D,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMr3G,QAAgBo3G,EAAAA,GAAAA,IAAOC,EAAAA,KACvB76H,EAAOwjB,EAAQ1K,IAAI,QACnBg2E,EAAYtrE,EAAQ1K,IAAI,aACxBi6I,EAAkBp6I,GAASo6I,kBAAmB,EAEpD,IAAI9wB,EAAO,GAEO,gBAAdnzC,IACFmzC,EAAO,GAGS,iBAAdnzC,IACFmzC,EAAO,IAGS,kBAAdnzC,IACFmzC,EAAOrgG,KAAK6U,IAAI/pB,MAAS7Z,SAAS,EAAG,UAAU2jI,KAAK9pH,MAAU,UAGhE,MAAMhiB,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAmCwC,EAAMiiI,EAAM8wB,SACnEt4B,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAkCt3E,GAO9C,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAgC/3E,UACpCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAhC+C,EAgC9C,CAEM,SAAU2xE,GAAc/tC,GAAA,IAAG1sG,SAAS,GAAE5a,IAAMsnH,EAAA,mBACjD,MAAMr2E,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBO,SACxC08H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA8Bt3E,GAa1C,CAZE,MAAOT,GACP,IAAIg4E,EAAMjzC,EAAKl2B,IAAI,UAEf7O,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,aACnCnzB,EAAMh4E,EAAMksG,SAASr7B,eAGjB2/C,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA4B/3E,UAChCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAMo5B,EACNR,SAAS,IAEb,CACF,CAnBmD,EAmBlD,CAEM,SAAUw1E,WACTh7B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA2Bx8G,GAC7C,CAEO,SAAU0xL,WACTj7B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAmCp/G,GACrD,CAEO,SAAUu0L,WACTl7B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAkC9hH,GACpD,CAEO,SAAUk3L,WACTn7B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA0BjiH,GAC5C,CAEO,SAAUs3L,WACTp7B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA4Br8G,GAC9C,CAEO,SAAU2xL,WACTr7B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA6Bl8G,GAC/C,CAEO,SAAUyxL,WACTt7B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA+BvkH,GACjD,CAEO,SAAU+5L,WACTv7B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA+Bh+G,GACjD,CAEO,SAAUyzL,WACTx7B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA+Bt+G,GACjD,CAEO,SAAUg0L,WACTz7B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAkCp+G,GACpD,CAEO,SAAU+zL,WACT17B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA2CjjH,GAC7D,CAEO,SAAU64L,WACT37B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA0C9iH,GAC5D,CAEO,SAAU24L,WACTvL,EAAAA,GAAAA,IAAS,IAAMtqE,GAAAA,IAA0CxiH,GACjE,CAEO,SAAUs4L,WACTxL,EAAAA,GAAAA,IAAS,IAAMtqE,GAAAA,IAAmD3iH,GAC1E,CAEO,SAAU04L,WACTzL,EAAAA,GAAAA,IAAS,IAAMtqE,GAAAA,IAA8B/gH,GACrD,CAEO,SAAU+2L,WACT1L,EAAAA,GAAAA,IAAS,IAAMtqE,GAAAA,IAAkC5gH,GACzD,CAEO,SAAU62L,WACTh8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAgC58G,GAClD,CAEO,SAAU8yL,WACTj8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA8BzgH,GAChD,CAEO,SAAU42L,WACTl8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA8BriH,GAChD,CAEO,SAAUy4L,WACTn8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAyBjkH,GAC3C,CAEO,SAAUs6L,WACTp8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA0BiwE,GAC5C,CAEO,SAAUqG,WACTr8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA4BkwE,GAC9C,CAEO,SAAUqG,WACTt8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAqCxhH,GACvD,CAEO,SAAUg4L,WACTv8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAmC17G,GACrD,CAEO,SAAUmyL,WACTx8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAuCz7G,GACzD,CAEO,SAAUmyL,WACTz8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA4Bx7G,GAC9C,CAEO,SAAUmyL,WACT18B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAsCrhH,GACxD,CAEO,SAAUi4L,WACT38B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAsClhH,GACxD,CAEO,SAAU+3L,WACT58B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA8C3hH,GAChE,CAEO,SAAUy4L,WACT78B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA8BjgH,GAChD,CAEO,SAAUg3L,WACT98B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAmC5/G,GACrD,CAEO,SAAU42L,WACT/8B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAkCswE,GACpD,CAEO,SAAU2G,WACTh9B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAwB76G,GAC1C,CAEO,SAAU+xL,WACTj9B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA+Bz5G,GACjD,CAEO,SAAU4wL,WACTl9B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAiCg1E,GACnD,CAEO,SAAUoC,WACTn9B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA6BoxE,GAC/C,CAEe,SAAUnC,WACjBnmJ,EAAAA,GAAAA,IAAI,CACRmsJ,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAE,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAE,KACAD,KACAE,KACAE,KACAC,KACAd,KACAe,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAf,KACAgB,MAEJ,CCpwCO,SAAUp9L,GAAc4lC,GAAA,IAAG+W,QAASuU,GAAOtrB,EAAA,mBAChD,MAAM8sG,QAA0BksB,EAAAA,GAAAA,IAAOC,EAAAA,KAEvC,GAAc,KAAV3tG,EAAc,CAChB,MAAM+Y,EAAU/Y,EAAM0D,MAAM,KAAKpS,KAAIC,GAAKA,EAAEkgC,SAAQ7tC,QAAO2N,GAAKA,IAEhE,IAAK,IAAIgiB,EAAI,EAAGA,EAAIwF,EAAQtiC,OAAQ88B,GAAK,QACjCg6F,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAuB,CAC/B90D,MAAO+Y,EAAQxF,GACfiuE,sBAGN,OAEM+rB,EAAAA,GAAAA,IAAIz4C,GAAAA,MACZ,CAfkD,EAejD,CAEM,SAAUj5G,GAASm5G,GAAA,IAAGvpE,SAAS,KAAE3Y,IAAQkiF,EAAA,mBACjC,aAATliF,UACIy6H,EAAAA,GAAAA,IAAIz4C,GAAAA,QAGC,cAAThiF,UACIy6H,EAAAA,GAAAA,IAAIz4C,GAAAA,OAEd,CARgD,EAQ/C,CAEM,SAAU/lH,GAAckmH,GAAA,IAAGxpE,SAAS,MAAEuoB,EAAK,MAAEhsB,IAASitE,EAAA,yBACrDs4C,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAqB,CAAE9gD,QAAOhsB,iBAClCulH,EAAAA,GAAAA,IAAIz4C,GAAAA,MACZ,CAH6D,EAG5D,CAEM,SAAU9lH,GAAckmH,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,yBACnCq4C,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAqBrpE,UACzB8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,MACZ,CAH2C,EAG1C,CAEM,SAAUsrE,WACTrxB,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAwBhmH,GAC1C,CAEO,SAAUuxL,WACTtxB,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAwB/lH,GAC1C,CAEO,SAAUiyL,WACTjyB,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAwB9lH,GAC1C,CAEO,SAAUqgL,WACTtgB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmBj5G,GACrC,CAEe,SAAUmoL,WACjBpmJ,EAAAA,GAAAA,IAAI,CACRwiJ,KACAC,KACAW,KACA3R,MAEJ,CCpDO,SAAU/9K,WAETi8J,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAgB,CAAEngF,IAAK,eAAgBC,MAAO,WAClD24H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAgB,CAAEngF,IAAK,cAAeC,MAAO,WACjD24H,EAAAA,GAAAA,IAAIz4C,GAAAA,aACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,MACZ,CAEO,SAAUvjH,KACf,MAAMuwE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAM,UAAE/uG,EAAS,SAAED,SAAmB+uG,EAAAA,GAAAA,IAAOC,EAAAA,KACvCh3H,QAAa+2H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBp3H,QAAcm3H,EAAAA,GAAAA,IAAOC,EAAAA,KACrBn/J,QAAek/J,EAAAA,GAAAA,IAAOC,EAAAA,KACtB1yH,QAAkByyH,EAAAA,GAAAA,IAAOC,EAAAA,KACzBw+B,QAAoBz+B,EAAAA,GAAAA,IAAOC,EAAAA,IAE3Bt9H,EAAO,CACXuT,OAAQgb,EAAUuB,SAClBisI,aAAcD,EACdE,eAAgB1tI,EAASwB,SACzBxpB,OACAJ,QACAknD,QAASjvF,EACT89L,WAAYrxJ,GAGRuC,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAqBD,SACzCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAqBt3E,UAEzB+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,MAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA6B/3E,UAEjCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAEO,SAAU7iH,KACf,MAAMowE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAM,SAAEhvG,EAAQ,UAAEC,SAAoB8uG,EAAAA,GAAAA,IAAOC,EAAAA,KACvCh3H,QAAa+2H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBp3H,QAAcm3H,EAAAA,GAAAA,IAAOC,EAAAA,KACrBn/J,QAAek/J,EAAAA,GAAAA,IAAOC,EAAAA,KACtB1yH,QAAkByyH,EAAAA,GAAAA,IAAOC,EAAAA,KACzBw+B,QAAoBz+B,EAAAA,GAAAA,IAAOC,EAAAA,KAE3Bt9H,EAAO,CACXuT,OAAQ+a,EAASwB,SACjBisI,aAAcD,EACdI,gBAAiB3tI,EAAUuB,SAC3BxpB,OACAJ,QACAknD,QAASjvF,EACT89L,WAAYrxJ,GAGRuC,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBD,SACxCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAoBt3E,UAExB+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,MAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA4B/3E,UAEhCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAEO,SAAUi4E,GAAqB93J,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBAChD,MAAMotC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMt9H,EAAO,CACXuT,OAAQ,GACRjN,KAAM,EACNJ,MAAO,GACPsC,IAAK,CAAC4S,EAAQ5a,KAGV2M,QAAeyF,EAAAA,GAAAA,IAAKgsI,GAAqC5+I,SACzDk9H,EAAAA,GAAAA,IAAIk/B,GAAAA,GAAoCjvJ,UACxC+vH,EAAAA,GAAAA,IAAIk/B,GAAAA,IAAqCzmJ,EAAAA,EAAAA,QAAOxI,EAAOijB,SAAS,YAChE8sG,EAAAA,GAAAA,IAAIz4C,GAAAA,MAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAmC/3E,UAEvCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAvBkD,EAuBjD,CAEM,SAAU9/G,KACf,MAAMqtE,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB++B,QAAqBh/B,EAAAA,GAAAA,IAAOC,EAAAA,KAC5Bg/B,QAA8Bj/B,EAAAA,GAAAA,IAAOC,EAAAA,KACrCi/B,QAAyBl/B,EAAAA,GAAAA,IAAOC,EAAAA,KAChCk/B,QAAsCn/B,EAAAA,GAAAA,IAAOC,EAAAA,MAC7C,MAAE7uG,GAAU4tI,EAAa7mJ,QACvBiZ,MAAOguI,GAAyBF,EAAiB/mJ,OAEnDknJ,EAAaz5I,IACjB,IAAI05I,GAAY,EAEhB,GAAI15I,EAAE25I,iBAAmB35I,EAAEuiG,WAAY,CACrC,MAAMA,EAAar2F,KAAOlM,EAAEuiG,YAE5Bm3C,EADYxtI,OACI8pH,KAAKzzB,EAAY,SAAW,CAC9C,CAEA,MAAoB,cAAbviG,EAAE2nE,QAEL3nE,EAAE25I,iBACC35I,EAAE25I,gBAAgBhyE,SAAW3O,EAAAA,GAAAA,aAC7B0gF,CACJ,EAGCE,EAAoB,IACrBpuI,EAAMlb,QAAO0P,GAAKy5I,EAAWz5I,QAC7Bq5I,EAAsB/oJ,QAAO0P,GAAKy5I,EAAWz5I,QAC7Cw5I,EAAqBlpJ,QAAO0P,GAAKy5I,EAAWz5I,QAC5Cu5I,EAA8BjpJ,QAAO0P,GAAKy5I,EAAWz5I,MAGpD65I,EAAa,IAAI,IAAI1nJ,IAAIynJ,EAAkB57I,KAAIgC,GAAKA,EAAEziB,OAE5D,IACE,GAA0B,IAAtBs8J,EAAW12J,OACb,OAAa,CACX,MAAM,KAAE8jI,SAAeT,EAAAA,GAAAA,IAAK,CAC1BS,MAAMR,EAAAA,GAAAA,IAAKjlD,GAAAA,KACX0lD,SAASh8H,EAAAA,GAAAA,IAAM,OAGjB,GAAI+7H,EACF,MAGF,MAAMlqI,EAAO,CACXwI,IAAKs0J,IAGD,SAAExuI,SAAmB1b,EAAAA,GAAAA,IAAK3S,GAAmBD,SAC7Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA2Bn2D,UAC/B4uG,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAoCn2D,UACxC4uG,EAAAA,GAAAA,IAAIz4C,GAAAA,MACZ,CASJ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAmC/3E,UAEvCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAEO,SAAU36G,GAA0Bo7G,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,mBACrD,IACE,MAAMytC,QAAgBx/G,EAAAA,GAAAA,IAAK3S,GAA2B,CAAE0vB,MAAOvU,UACzD8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAqC2tC,GAUjD,CATE,MAAO1lH,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAmC/3E,IAE7C,MAAM+kC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,WAEpBJ,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAduD,EActD,CAEM,SAAU64E,WACTr+B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAoCl7G,GACtD,CAEO,SAAUyzL,WACTt+B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAgBxjH,GAClC,CAEO,SAAUg8L,WACTv+B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA8BvjH,GAChD,CAEO,SAAUg8L,WACTx+B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAA6BpjH,GAC/C,CAEO,SAAU87L,WACTz+B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAoCrgH,GACtD,CAEO,SAAUg5L,WACT1+B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAoC03E,GACtD,CAEe,SAAUpI,WACjBxmJ,EAAAA,GAAAA,IAAI,CACRyvJ,KACAD,KACAE,KACAC,KACAC,KACAC,MAEJ,CC/NO,SAAUC,GAAmBh5J,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBAC9C,MAAMotC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMh3H,EAAO,EACPJ,EAAQ,IAQRlG,EAAO,CACXs9J,YARiB,CACjB,CAAE3lJ,MAAO,qBAAsBpT,MAAO4qB,IAAO/T,GAAS9F,SAAS,EAAG,SAClE,CAAEqC,MAAO,mBAAoBpT,MAAO4qB,IAAO/T,GAASquB,MAAM,SAASy5C,IAAI,EAAG,SAC1E,CAAEvrE,MAAO,mBAAoBpT,MAAO4qB,IAAO/T,GAAS9F,SAAS,EAAG,SAChE,CAAEqC,MAAO,iBAAkBpT,MAAO4qB,IAAO/T,GAASquB,MAAM,SAASy5C,IAAI,EAAG,UAKxE58E,OACAJ,SAGIq3J,QAAuB3qJ,EAAAA,GAAAA,IAAK3S,GAAoBD,GAEhDw9J,EAAqB,CACzB,CAAE7lJ,MAAO,gBAAiBpT,MAAO4qB,IAAO/T,GAASquB,MAAM,SAASy5C,IAAI,EAAG,SACvE,CAAEvrE,MAAO,gBAAiBpT,MAAO4qB,IAAO/T,GAAS9F,SAAS,EAAG,UAGzDmoJ,QAAwB7qJ,EAAAA,GAAAA,IAAK3S,GAAqB,CACtDq9J,YAAaE,EACbl3J,OACAJ,gBAGIg3H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAmC,CAC3Cn2D,SAAU,CACRE,MAAO+uI,EAAe/uI,MACtBC,MAAO8uI,EAAe90F,aAExBl6C,UAAW,CACTC,MAAOivI,EAAgBjvI,MACvBC,MAAOgvI,EAAgB/0F,aACvBk8C,SAAU64C,EAAgB74C,YAUhC,CAPE,MAAOl4G,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAiC/3E,UAErCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAnDgD,EAmD/C,CAEM,SAAU13G,GAAsBm4G,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,mBACjD,MAAMliF,EAAO2Y,EAAQG,IAAI,QACnBqvE,EAASxvE,EAAQG,IAAI,UAE3B,GAAa,sBAAT9Y,EACF,GAAe,gBAAXmoF,GAAuC,aAAXA,QACxBsyC,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA8BrpE,QACnC,CACmBA,EAAQG,IAAI,yBAG5B3I,EAAAA,GAAAA,IAAKf,OAAO0nI,KAAM,4BAA6B,SAAU,6BAEzDrc,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyB,CAAEjkF,GAAI4a,EAAQG,IAAI,MAAOp1C,uBAAuB,IAEvF,CAGW,UAATs8B,IACa,aAAXmoF,GAAoC,WAAXA,QACrBsyC,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA8BrpE,UAElC8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyB,CAAEjkF,GAAI4a,EAAQG,IAAI,MAAOp1C,uBAAuB,MAI1E,aAATs8B,GAAgC,aAATA,IACV,aAAXmoF,GAAoC,WAAXA,QACrBsyC,EAAAA,GAAAA,IAAIz4C,GAAAA,IAA8BrpE,UAElC8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAyB,CAAEjkF,GAAI4a,EAAQG,IAAI,MAAOl1C,0BAA0B,KAG5F,CAjCmD,EAiClD,CAEM,SAAUq3L,WACTh/B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAkC44E,GACpD,CAEO,SAAUM,WACTj/B,EAAAA,GAAAA,IAAUj6C,GAAAA,IAAgCj4G,GAClD,CAEe,SAAUoxL,WACjBrwJ,EAAAA,GAAAA,IAAI,CACRmwJ,KACAC,MAEJ,CCxGe,SAAUE,WACjBtwJ,EAAAA,GAAAA,IAAI,CACRmmJ,KACAC,KACAI,KACA6J,MAEJ,CCOO,SAAU1jM,KACf,MAAMu3E,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBr5H,QAAao5H,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,IACE,MAAMt9H,EAAO,CACXqb,KAAMpX,EAAKsX,IAAI,QACf2wE,YAAajoF,EAAKsX,IAAI,gBAElBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA4BD,GAEtD,GAAImN,EAAOowE,QAOT,aANM2/C,EAAAA,GAAAA,IAAIz4C,GAAAA,iBACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,iCACf8oE,QAAS,kBAMP64C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsCt3E,GAOlD,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC/3E,UACxCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM5+C,EAAMksG,SAASr7B,QACrB8G,QAAS,UAEb,CACF,CAEO,SAAUhqH,GAAkCgqC,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBAC7D,MAAMotC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBjzC,QAAgBgzC,EAAAA,GAAAA,IAAOC,EAAAA,KACvBr5H,QAAao5H,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,IAAIltG,EAAWnsB,EAAKsX,IAAI,YAEpBH,IACqB,aAAnBA,EAAQ0tG,OACV14F,QAAiBitG,EAAAA,GAAAA,IAAOC,EAAAA,KACI,eAAnBliH,EAAQ0tG,SACjB14F,QAAiBitG,EAAAA,GAAAA,IAAOC,EAAAA,OAI5B,MAAMt9H,EAAO,CACX89J,YAAa1tI,EAASnP,KAAIwP,GAAWA,EAAQlV,IAAI,SAGnD,GAAuB,OAAnBtX,EAAKsX,IAAI,MAAgB,CAC3B,MAAMpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAmCgE,EAAKsX,IAAI,MAAOvb,SACvEk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6Ct3E,UACjD+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,8BACf8oE,QAAS,YAEb,MAAO,GAAIj0D,EAASE,MAAQ+5D,EAAQ9uE,IAAI,4BAA6B,OAC7D2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJilD,EAAAA,GAAAA,IAAKjlD,GAAAA,IAEX,MAAMs5E,QAAiB1gC,EAAAA,GAAAA,IAAOC,EAAAA,KAExBnwH,QAAeyF,EAAAA,GAAAA,IACnB3S,GACA89J,EACG/6I,MAAK05E,GAAQA,EAAKnhF,IAAI,UAAYtX,EAAKsX,IAAI,UAC3CA,IAAI,MACPvb,SAEIk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6Ct3E,UACjD+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM,GAAG7Z,EAAKl2B,IAAI,4BAA4Bk2B,EAAKl2B,IAAI,aACvD8oE,QAAS,YAEb,CAEIj0D,EAASE,KAAO+5D,EAAQ9uE,IAAI,oCACxB2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,wCACf8oE,QAAS,WASf,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2C/3E,UAC/CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM5+C,EAAMksG,SAASr7B,QACrB8G,QAAS,UAEb,CACF,CA7D+D,EA6D9D,CAEM,SAAUlrH,KACf,MAAMs4E,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KACxB0gC,QAAiB3gC,EAAAA,GAAAA,IAAOC,EAAAA,KACxBjI,EAAYnxH,EAASqX,IAAI,MACzB0iJ,EAAuB/5J,EAASqX,IAAI,wBAE1C,IAAI2iJ,EAAY,GACZC,EAAe,GAEnB,MAAM78G,QAAsB+7E,EAAAA,GAAAA,IAAOC,EAAAA,KAE7B8gC,EAASl6J,EAASqX,IAAI,cAAc0F,KAAIylB,GAAKA,EAAEnrB,IAAI,QAEzD,GAAI85G,EAAW,CACb,MAAMgpC,EAAYL,EAASziJ,IAAI,cAAc0F,KAAIylB,GAAKA,EAAEnrB,IAAI,QAE5D2iJ,EAAYE,EAAO7qJ,QAAO/S,IAAO69J,EAAUvuI,SAAStvB,KAAKgV,OACzD2oJ,EAAeE,EAAU9qJ,QAAO/S,IAAO49J,EAAOtuI,SAAStvB,KAAKgV,MAC9D,MACE0oJ,EAAYE,EAAO5oJ,OAGrB,MAAM8oJ,EAAiBp6J,EAASqX,IAAI,aAAa0F,KAAIylB,GAAKA,EAAEnrB,IAAI,QAAO/F,OACjE+oJ,EAAkBr6J,EAASqX,IAAI,cAAc0F,KAAIylB,GAAKA,EAAEnrB,IAAI,QAAO/F,OACnEgpJ,EAAmBt6J,EAASqX,IAAI,eAAe0F,KAAIylB,GAAKA,EAAEnrB,IAAI,QAAO/F,OAE3E,IAAIs3G,EAAU5oH,EAASqX,IAAI,WAE3B,GAAI+lC,EAAe,CACjB,MAAMm9G,EAAiB,CACrB,CACEn6J,IAAK,OACLC,MAAO+8C,KAIL,IAAEkK,SAAc54C,EAAAA,GAAAA,IAAKwmJ,GAAAA,GAAmBqF,GAC9C3xC,EAAUthE,CACZ,CAEA,MAOMkzG,EAAoBx6J,EAASoP,MAAK,CAAC/O,EAAOD,IAPrBq6J,EAACr6J,EAAKC,IACvB,wBAARD,GACW,UAARA,GACQ,eAARA,KACCg0F,EAAAA,EAAAA,IAAG/zF,EAAOy5J,EAASziJ,IAAIjX,IAG2Bq6J,CAAmBr6J,EAAKC,KAC1Eq6J,EAA8C,OAA7B16J,EAASqX,IAAI,aAAyB85G,GAAaqpC,EAEpEpM,EAAc,CAClB7T,WAAYv6I,EAASqX,IAAI,aACzBmjI,UAAWx6I,EAASqX,IAAI,YACxBy+E,KAAM91F,EAASqX,IAAI,QACnB0mE,MAAO/9E,EAASqX,IAAI,SACpBsjJ,UAAW36J,EAASqX,IAAI,YACxBsxG,QAAS3oH,EAASqX,IAAI,WACtBuxG,UACAC,QAAS7oH,EAASqX,IAAI,WACtB46E,MAAOjyF,EAASqX,IAAI,SACpByxG,IAAK9oH,EAASqX,IAAI,OAClBujJ,qBAAsB56J,EAASqX,IAAI,uBACnCwjJ,QAAS76J,EAASqX,IAAI,WACtByjJ,QAAS96J,EAASqX,IAAI,WACtB0qG,MAAO/hH,EAASqX,IAAI,SACpB0jJ,sBAAuB/6J,EAASqX,IAAI,uBACpC2jJ,WAAYh7J,EAAS+Z,MAAM,CAAC,UAAW,MAAO,MAC9CkhJ,SAAUj7J,EAAS+Z,MAAM,CAAC,QAAS,MAAO,MAC1CmhJ,aAAcl7J,EAASqX,IAAI,eAC3B8jJ,YAAan7J,EAASqX,IAAI,cAC1B+jJ,aAAcp7J,EAASqX,IAAI,eAC3BgkJ,YAAar7J,EAASqX,IAAI,cAC1BikJ,WAAYt7J,EAASqX,IAAI,aACzBkkJ,cAAev7J,EAASqX,IAAI,gBAC5BmkJ,YAAax7J,EAASqX,IAAI,cAC1BokJ,UAAWz7J,EAASqX,IAAI,YACxBqkJ,uBAAwB3B,EACxB4B,SAAU37J,EAASqX,IAAI,YACvBukJ,mBAAoB57J,EAASqX,IAAI,qBAAqB0F,KAAIy7E,IAAQ,CAChEg6D,qBAAsBh6D,EAAKnhF,IAAI,UAC7B/F,OACJuqJ,mBAAoBzB,EAAer9I,KAAIs6D,IAAc,CACnD41E,YAAa51E,MAEfykF,qBAAsBzB,EAAgBt9I,KAAIg/I,IAAe,CACvDC,cAAeD,MAEjBE,sBAAuB3B,EAAiBv9I,KAAImvB,IAAW,CACrDgwH,eAAgBhwH,MAElBiwH,eAAgBzB,GAGlB,IACE,IAAIzxJ,EACAm+C,EAEJ,GAAI+pE,EAAW,CAWb,GAVI6oC,EAAU93J,eACNwM,EAAAA,GAAAA,IAAK3S,GAAqBg+J,EAAsB,CAAE9oB,eAAgB+oB,KAGtEC,EAAa/3J,eACTmH,EAAAA,GAAAA,IAAI4wJ,EAAal9I,KAAInd,IAAe8O,EAAAA,GAAAA,IAAK3S,GAA0Bg+J,EAAsBn6J,OAGjGqJ,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBo1H,EAAWi9B,GAE/CnlJ,EAAOowE,QAIT,aAHM2/C,EAAAA,GAAAA,IAAIz4C,GAAAA,iBACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,OAKZn5B,EAAO,GAAG7Z,EAAKl2B,IAAI,cAAck2B,EAAKl2B,IAAI,YAC5C,KAAO,CAGL,GAFApO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBqyJ,GAEpCnlJ,EAAOowE,QAIT,aAHM2/C,EAAAA,GAAAA,IAAIz4C,GAAAA,iBACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,OAKRy5E,EAAU93J,eACNwM,EAAAA,GAAAA,IAAK3S,GAAqBkN,EAAO8wJ,qBAAsB,CAAE9oB,eAAgB+oB,MAG7EA,EAAU93J,QAAUo4J,EAAiBp4J,UACvCksJ,EAAYsN,uBAAyBzyJ,EAAO8wJ,qBAC5C3L,EAAY6N,sBAAwB3B,EAAiBv9I,KAAIzgB,IAAM,CAC7Di2J,WAAYtpJ,EAAO3M,GACnB4/J,eAAgB5/J,MAGlB2M,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBkN,EAAO3M,GAAI8xJ,IAGrDhnG,EAAO,GAAG7Z,EAAKl2B,IAAI,cAAck2B,EAAKl2B,IAAI,YAC5C,OAEM2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4Bt3E,UAEhC+vH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,OACA44B,SAAS,KAIT06E,UACI1hC,EAAAA,GAAAA,IAAIz4C,GAAAA,MAUd,CARE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAGf,CACF,CAEO,SAAU5qH,KACf,MAAMm4E,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMtO,QAAyBqO,EAAAA,GAAAA,IAAOC,EAAAA,KAMhCt9H,EAAO,CACXowB,SANuB4+F,EAAiB/tG,KAAIgC,IAAK,CACjDziB,GAAIyiB,EAAE1H,IAAI,MACVskJ,SAAU58I,EAAE1H,IAAI,iBAOZpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBD,SAExCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8Bt3E,UAClC+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM,GAAG7Z,EAAKl2B,IAAI,eAAek2B,EAAKl2B,IAAI,aAC1C2oE,SAAS,IAWf,CARE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B/3E,UAChCwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAGf,CACF,CAEO,SAAU1pH,GAA0BmqH,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,mBACrD,MAAMlzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBvP,QAAiBsP,EAAAA,GAAAA,IAAOC,EAAAA,KACxB98H,EAAK4a,EAAQG,IAAI,UAAYH,EAAQG,IAAI,UAAYwyG,EAASxyG,IAAI,MAClE85G,EAAYj6G,EAAQG,IAAI,MAE9B,IAAIpO,EAEJ,IACEA,QAAeyF,EAAAA,GAAAA,IACb3S,GACAO,EACA60H,SAEI6H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqCt3E,GASjD,CARE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmC/3E,UACvCwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAGf,CACF,CAxBuD,EAwBtD,CAEM,SAAUvpH,KACf,MAAM82E,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBr5H,QAAao5H,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IAAInwH,EAEJ,IACE,MAAMnN,EAAO,CACXqb,KAAMpX,EAAKsX,IAAI,QACf2wE,YAAajoF,EAAKsX,IAAI,gBASxB,GANApO,QAAeyF,EAAAA,GAAAA,IACb3S,GACAgE,EAAKsX,IAAI,MACTvb,GAGEmN,EAAOowE,QAOT,aANM2/C,EAAAA,GAAAA,IAAIz4C,GAAAA,iBACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,iCACf8oE,QAAS,kBAMP64C,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsCt3E,UAC1C+vH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM,GAAG7Z,EAAKl2B,IAAI,wBAAwBk2B,EAAKl2B,IAAI,aACnD2oE,SAAS,IAWf,CARE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC/3E,UACxCwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAGf,CACF,CAEO,SAAUppH,GAA2B8pH,GAAA,IAAC,QAAExpE,GAASwpE,EAAA,mBACtD,MAAMnzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBjzC,QAAgBgzC,EAAAA,GAAAA,IAAOC,EAAAA,KACvBhzC,QAAqB+yC,EAAAA,GAAAA,IAAOC,EAAAA,KAElC,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA4Bmb,GAElDkvE,EAAa/uE,IAAI,0BAA4B8uE,EAAQ9uE,IAAI,kCACrD2hH,EAAAA,GAAAA,KAAInmK,EAAAA,EAAAA,cAGNmmK,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsCt3E,UAC1C+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM,GAAG7Z,EAAKl2B,IAAI,wBAAwBk2B,EAAKl2B,IAAI,aACnD8oE,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC/3E,UACxCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAxBwD,EAwBvD,CAEM,SAAUppH,GAAmB4pH,GAAA,IAAGzpE,QAAS3Q,GAAMo6E,EAAA,mBACpD,MAAMpzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB3R,QAAmC0R,EAAAA,GAAAA,IAAOC,EAAAA,KAC1C1R,QAA8ByR,EAAAA,GAAAA,IAAOC,EAAAA,KACrCvP,QAAiBsP,EAAAA,GAAAA,IAAOC,EAAAA,KACxBp5H,EAAW,CACf,CACEI,IAAK,OACLC,MAAOkG,GAET,CACEnG,IAAK,gCACLC,MAAOonH,GAET,CACErnH,IAAK,gBACLC,MAAOwpH,EAASxyG,IAAI,SAEtB,CACEjX,IAAK,4BACLC,MAAOqnH,GAET,CACEtnH,IAAK,mBACLC,MAAOwpH,EAASxyG,IAAI,QAIxB,IAAIpO,EACJ,IACEA,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAoBiE,IAEpCynH,GAA8BC,WAC1BsR,EAAAA,GAAAA,IAAIz4C,GAAAA,aAGNy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,YAEJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8Bt3E,UAClC+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,KAgBZ,CAfE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B/3E,IAEtC,IAAIg4E,EAAMjzC,EAAKl2B,IAAI,UAEf7O,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,aACnCnzB,EAAMh4E,EAAMksG,SAASr7B,eAGjB2/C,EAAAA,GAAAA,IACJ1hH,EAAAA,GAAkC,CAChC8vC,KAAMo5B,EACNL,QAAS,UAGf,CACF,CAxDsD,EAwDrD,CAEM,SAAUi8E,GAAiBx7E,GAAA,IAAC,QAAE1pE,GAAS0pE,EAAA,mBAC5C,MAAMy7E,EAAWnlJ,EAAQolJ,UAAUjtJ,QAAO43B,IAAMA,EAAEs1H,QAAOx/I,KAAIylB,IAAK,CAAGrrB,KAAMqrB,EAAEuO,MAAOz0C,GAAIkmC,EAAEniC,MAAO9B,KAAM,aACjGg+J,EAAQrlJ,EAAQolJ,UAAUjtJ,QAAO43B,GAAKA,EAAEs1H,QAAOx/I,KAAIylB,GAAKA,EAAEuO,QAChE,IAAIyrH,EACAvzJ,EAAS,GACb,IACMszJ,EAAMr6J,SACR+G,QAAeI,EAAAA,GAAAA,IAAIkzJ,EAAMx/I,KAAIs1G,IAAO3jH,EAAAA,GAAAA,IAAK3S,GAAsB,CAAEob,KAAMk7G,aACjE2G,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkBt3E,KAG9BuzJ,EAAc,IAAIH,KAAapzJ,SACzB+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyBi8E,GAQrC,CAPE,MAAOh0J,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuB/3E,UAC3BwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,IAGf,CACF,CArB8C,EAqB7C,CAEM,SAAUy8E,GAAS57E,GAAA,IAAC,QAAE3pE,GAAS2pE,EAAA,mBACpC,MAAMtzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB98H,EAAK4a,EAAQ2hI,OACb,KAAE1hI,GAASD,EAEjB,IACE,MAAMjO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAsBO,EAAI6a,SAC9C6hH,EAAAA,GAAAA,IAAIz4C,GAAAA,EAAyBt3E,UAC7B+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM7Z,EAAKl2B,IAAI,eACf2oE,SAAS,IAUf,CAPE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuB/3E,UAC3BwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,IAGf,CACF,CAvBsC,EAuBrC,CAEM,SAAU08E,GAAS57E,GAAA,IAAC,QAAE5pE,GAAS4pE,EAAA,mBACpC,MAAMvzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,MACpB,GAAE98H,GAAO4a,EAEf,UACQxI,EAAAA,GAAAA,IAAK3S,GAAsBO,SAC3B08H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyB,CAAEjkF,cAC/B08H,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM7Z,EAAKl2B,IAAI,eACf2oE,SAAS,IAUf,CAPE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuB/3E,UAC3BwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,IAGf,CACF,CAtBsC,EAsBrC,CAEM,SAAU/nH,GAA0B8oH,GAAA,IAAG7pE,SAAS,SAAEgV,EAAQ,UAAEywI,EAAS,WAAEC,IAAc77E,EAAA,mBAC1F,IACE,MAAMjlF,EAAO,CACXowB,WACA8wG,WAAY2/B,EACZE,YAAaD,GAET3zJ,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA2BD,SAC/C4S,EAAAA,GAAAA,IAAKyrH,GAAclxH,EAAQ2zJ,EAAa,gCAAkC,gBAAiB9kF,EAAAA,UAC3FkhD,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqCt3E,GAQjD,CAPE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmC/3E,UACvCwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,IAGf,CACF,CAlB4F,EAkB3F,CAEM,SAAU5nH,KACf,MAAMm1E,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBr5H,QAAao5H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBjzC,QAAgBgzC,EAAAA,GAAAA,IAAOC,EAAAA,KACvBhzC,QAAqB+yC,EAAAA,GAAAA,IAAOC,EAAAA,KAC5BrP,EAAQhqH,EAAKsX,IAAI,SACjBylJ,EAAa/yC,EAAMhtG,KAAI+rE,GAAKA,EAAEzxE,IAAI,YAAY0F,KAAIgC,GAAKA,EAAE1H,IAAI,UAAQghB,UAAUR,QAErF,IACE,MAAM/7B,EAAO,CACXwI,IAAKylH,EAAMhtG,KAAI+rE,GAAKA,EAAEzxE,IAAI,QAC1BuiJ,YAAakD,EACb3lJ,KAAMpX,EAAKsX,IAAI,QACf0lJ,oBAAqBh9J,EAAKsX,IAAI,sBAE1BpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA4BD,GAEtD,GAAImN,EAAOowE,QAOT,aANM2/C,EAAAA,GAAAA,IAAIz4C,GAAAA,iBACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,iCACf8oE,QAAS,YAMTiG,EAAa/uE,IAAI,0BAA4B8uE,EAAQ9uE,IAAI,kCACrD2hH,EAAAA,GAAAA,KAAInmK,EAAAA,EAAAA,cAGNmmK,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsCt3E,UAC1C+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,6BACf8oE,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC/3E,UACxCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM5+C,EAAMksG,SAASr7B,QACrB8G,QAAS,UAEb,CACF,CAEO,SAAU5nH,GAA6ByoH,GAAA,IAAC,QAAE9pE,GAAS8pE,EAAA,mBACxD,MAAMzzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,IACE,MAAMt9H,EAAO,CACXQ,GAAI4a,EAAQG,IAAI,MAChB2lH,WAAYzvF,EAAKl2B,IAAI,aAEjBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA8BD,SAClD4S,EAAAA,GAAAA,IAAKyrH,GAAclxH,EAAQ,GAAGiO,EAAQG,IAAI,eAAgBygE,EAAAA,UAC1DkhD,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwCt3E,GAQpD,CAPE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsC/3E,UAC1CwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,IAGf,CACF,CAlB0D,EAkBzD,CAEM,SAAUg9E,WACTxiC,EAAAA,GAAAA,IACJj6C,GAAAA,GACAvqH,GAEJ,CAEO,SAAUinM,WACTziC,EAAAA,GAAAA,IACJj6C,GAAAA,GACA9pH,GAEJ,CAEO,SAAUymM,WACT1iC,EAAAA,GAAAA,IACJj6C,GAAAA,GACA3pH,GAEJ,CAEO,SAAUumM,WACT3iC,EAAAA,GAAAA,IACJj6C,GAAAA,GACApqH,GAEJ,CAEO,SAAUinM,WACT5iC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2BtrH,GAC7C,CAEO,SAAUooM,WACT7iC,EAAAA,GAAAA,IACJj6C,GAAAA,GACAjqH,GAEJ,CAEO,SAAUgnM,WACT9iC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BnrH,GAC/C,CAEO,SAAUmoM,WACT/iC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BxpH,GAC/C,CAEO,SAAUymM,WACThjC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwB67E,GAC1C,CAEO,SAAUqB,WACTjjC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBk8E,GAC1C,CAEO,SAAUiB,WACTljC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBm8E,GAC1C,CAEO,SAAUiB,WACTnjC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoCtoH,GACtD,CAEO,SAAU2lM,WACTpjC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqCnoH,GACvD,CAEO,SAAUylM,WACTrjC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuChoH,GACzD,CAEe,SAAUi3L,WACjBnmJ,EAAAA,GAAAA,IAAI,CACR+zJ,KACAE,KACAN,KACAC,KACAC,KACAC,KACAE,KACAE,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CCzsBO,SAAUtjM,GAAc4lC,GAAA,IAAG+W,QAASuU,GAAOtrB,EAAA,mBAChD,MAAM8sG,QAA0BksB,EAAAA,GAAAA,IAAOC,EAAAA,KAEvC,GAAc,KAAV3tG,EAAc,CAChB,MAAM+Y,EAAU/Y,EAAM0D,MAAM,KAAKpS,KAAIC,GAAKA,EAAEkgC,SAAQ7tC,QAAO2N,GAAKA,IAEhE,IAAK,IAAIgiB,EAAI,EAAGA,EAAIwF,EAAQtiC,OAAQ88B,GAAK,QACjCg6F,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuB,CAC/B90D,MAAO+Y,EAAQxF,GACfiuE,sBAGN,OAEM+rB,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAfkD,EAejD,CAEM,SAAUjlH,GAAgCmlH,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,yBACrDu4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+C,CACvD90D,MAAOvU,EACP+1F,kBAAmB,sCAGf+rB,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAP6D,EAO5D,CAEM,SAAU/lH,GAAckmH,GAAA,IAAGxpE,SAAS,MAAEuoB,EAAK,MAAEhsB,IAASitE,EAAA,yBACrDs4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqB,CAAE9gD,QAAOhsB,iBAClCulH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAH6D,EAG5D,CAEM,SAAUu9E,WACT9kC,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU9lH,GAAckmH,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,yBACnCq4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqBrpE,UACzB8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAH2C,EAG1C,CAEM,SAAUsrE,WACTrxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBhmH,GAC1C,CAEO,SAAUwjM,WACTvjC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0CjlH,GAC5D,CAEO,SAAUwwL,WACTtxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwB/lH,GAC1C,CAEO,SAAUwjM,WACTxjC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6Cu9E,GAC/D,CAEO,SAAUrR,WACTjyB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwB9lH,GAC1C,CAEe,SAAUg1L,WACjBpmJ,EAAAA,GAAAA,IAAI,CACRwiJ,KACAkS,KACAjS,KACAkS,KACAvR,MAEJ,CClEO,SAAUj4L,KACf,IACE,MAAM,SAAE03D,SAAmBitG,EAAAA,GAAAA,IAAOC,EAAAA,KAC5Bh3H,QAAa+2H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBp3H,QAAcm3H,EAAAA,GAAAA,IAAOC,EAAAA,KACrBn/J,QAAek/J,EAAAA,GAAAA,IAAOC,EAAAA,KACtB1yH,QAAkByyH,EAAAA,GAAAA,IAAOC,EAAAA,KACzBnR,QAAyBkR,EAAAA,GAAAA,IAAOC,EAAAA,KAEhCt9H,EAAO,CACXuT,OAAQ6c,EAASN,SACjBxpB,OACAJ,QACAknD,QAASjvF,EACT89L,WAAYrxJ,KACRuhH,GAAoB,CAAEg2C,cAAc,IAGpCh1J,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAmBD,SACvCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA6Bt3E,GAQzC,CAPE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2B/3E,UAC/BwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,IAGf,CACF,CAEO,SAAU14G,WACT0xJ,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU7kH,WACTs9J,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACO,SAAU5kH,WACTq9J,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU5rH,KACf,MAAMwlE,QAAUg/F,EAAAA,GAAAA,IAAOC,EAAAA,MACjB,kBAAE5tG,GAAsB2O,EACxB/3B,QAAa+2H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBp3H,QAAcm3H,EAAAA,GAAAA,IAAOC,EAAAA,KACrBn/J,QAAek/J,EAAAA,GAAAA,IAAOC,EAAAA,KACtB1yH,QAAkByyH,EAAAA,GAAAA,IAAOC,EAAAA,KAEzBt9H,EAAO,CAEX+7J,aAAc,CAAEv3C,SAAU,KAAMC,WAAY/0F,EAAkBI,UAC9DxpB,OACAJ,QACAknD,QAASjvF,EACT89L,WAAYrxJ,GAEd,IACE,MAAMuC,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA4BD,SAChDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsCt3E,GAQlD,CAPE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC/3E,UACxCwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,IAGf,CACF,CAEO,SAAUtnH,GAA2BynC,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBACtD,MAAMiC,QAAa+2H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBp3H,QAAcm3H,EAAAA,GAAAA,IAAOC,EAAAA,KACrBn/J,QAAek/J,EAAAA,GAAAA,IAAOC,EAAAA,KACtB1yH,QAAkByyH,EAAAA,GAAAA,IAAOC,EAAAA,KAEzBt9H,EAAO,CACXuT,OAAQ6H,EAAQ7H,OAChBjN,OACAJ,QACAknD,QAASjvF,EACT89L,WAAYrxJ,GAEd,IACE,MAAMuC,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA4BD,SAChDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsCt3E,GAGlD,CAFE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC/3E,GAChD,CACF,CAnBwD,EAmBvD,CAEM,SAAU01J,WACTllC,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAUzrH,GAAc2rH,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,mBACzC,MAAMlzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMh3H,QAAa+2H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBp3H,QAAcm3H,EAAAA,GAAAA,IAAOC,EAAAA,KACrBn/J,QAAek/J,EAAAA,GAAAA,IAAOC,EAAAA,KAGtBt9H,EAAO,CACXsG,OACAJ,QACAknD,QAASjvF,EACT89L,iBANsB5+B,EAAAA,GAAAA,IAAOC,EAAAA,KAO7B/pH,OAAQ6H,EAAQ7H,QAAU,IAGtBpG,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAgBD,SACpCk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuBt3E,UAE3B+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,KAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuB/3E,UAE3BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CA7B2C,EA6B1C,CAEM,SAAUm+E,WACTnlC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuB,CAAElxE,OAAQ,KAC7C,CAEO,SAAU96C,WACTykK,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU69E,WACT5jC,EAAAA,GAAAA,IACJj6C,GAAAA,GACA5rH,GAEJ,CAEO,SAAU0pM,WACT7jC,EAAAA,GAAAA,IACJj6C,GAAAA,GACA7nH,GAEJ,CAEO,SAAU4lM,WACT9jC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4B/rH,GAC9C,CAEO,SAAUsmL,WACTtgB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgBj5G,GAClC,CAEO,SAAUi3L,WACT/jC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoB29E,GACtC,CAEO,SAAUM,WACThkC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoB49E,GACtC,CAEO,SAAUM,WACTjkC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyB7kH,GAC3C,CACO,SAAUgjM,WACTlkC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkC5kH,GACpD,CAEO,SAAUgjM,WACTnkC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkBhsH,GACpC,CAEO,SAAUqqM,WACTpkC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBzrH,GAC1C,CAEe,SAAU+6L,WACjBxmJ,EAAAA,GAAAA,IAAI,CACR+0J,KACAC,KACAC,KACAxjB,KACAyjB,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CClMe,SAAUC,WACjBx1J,EAAAA,GAAAA,IAAI,CACRmmJ,KACAC,KACAI,MAEJ,CCJO,SAAUhlK,GAAesV,GAAA,IAAG+W,QAAS4nJ,GAAiB3+J,EAAA,mBAC3D,MAAMrE,EAAO,CACXijK,uBAAwBD,GAG1B,IACE,MAAM71J,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA4BD,SAEhDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4Bt3E,UAChC+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,KAKZ,CAJE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAf6D,EAe5D,CAEM,SAAUxd,KACf,MAAM+2B,QAAgBo3G,EAAAA,GAAAA,IAAOC,EAAAA,KAEvBh3H,EAAO2f,EAAQ1K,IAAI,QAAU,EAC7BrV,EAAQ+f,EAAQ1K,IAAI,SACpBp9C,EAAS8nD,EAAQ1K,IAAI,UACrB3Q,EAAYqb,EAAQ1K,IAAI,aAE9B,IACE,MAAM,eAAEwzH,EAAc,kBAAED,SAA4Bl8H,EAAAA,GAAAA,IAAK3S,GAAAA,GAAwBqG,EAAMJ,EAAO/nC,EAAQysC,SAEhGsyH,EAAAA,GAAAA,IAAIz4C,GAAAA,EAA6Bn+E,IAElCyoI,UACG7R,EAAAA,GAAAA,IAAIz4C,GAAAA,aAGNy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkCqqD,GAK9C,CAJE,MAAOpiI,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUw2J,WACTxkC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyB11F,GAC3C,CAEO,SAAUo0K,WACTzkC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiCv1F,GACnD,CAEe,SAAUk0K,WACjB71J,EAAAA,GAAAA,IAAI,CACR21J,KACAC,MAEJ,CCxDO,SAAUt4J,KACf,IACE,MAAMsC,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,UACpBkO,EAAAA,GAAAA,IAAM,YACN+uH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4Bt3E,GAKxC,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAU22J,WACT3kC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2B55E,GAC7C,CAEe,SAAUy4J,WACjB/1J,EAAAA,GAAAA,IAAI,CACR81J,MAEJ,CC1BO,MAAME,GAAYA,CAACplM,EAAQ2wF,IACV,QAAlBA,EACK,CAAC3wF,GAGH,CAAC,IAAIA,KAGDqlM,GAAcA,CAACC,EAAWC,EAAYxvC,KACjD,IAAIyvC,EAAc,GAElB,MAAMpwJ,EAASmwJ,EAAWnoJ,IAAIkoJ,GAExBG,EAAc1vC,EAAa34G,IAAIkoJ,GAUrC,OARIlwJ,GACFowJ,EAAYv2J,KAAKmG,GAGfqwJ,GAAeA,EAAYpuJ,OAAOpP,OAAS,IAC7Cu9J,EAAcA,EAAY7oJ,OAAO8oJ,EAAYpuJ,SAGxCmuJ,EAAYpwJ,QAAO,CAAChP,EAAOo/B,EAAOkgI,IAAUA,EAAM7vJ,QAAQzP,KAAWo/B,GAAM,ECd7E,SAAUn5E,KACf,MAAMyW,QAAeo8J,EAAAA,GAAAA,IAAOC,EAAAA,KACtBomC,QAAmBrmC,EAAAA,GAAAA,IAAOC,EAAAA,KAE1BpJ,EAAewvC,EAAWzlJ,MAAM,CAAC,cAAe,iBAEhDgI,EAAU,CACdmxF,MAAOosD,GAAY,QAASE,EAAYxvC,GACxC4vC,WAAYN,GAAY,YAAaE,EAAYxvC,GACjDhH,QAASs2C,GAAY,UAAWE,EAAYxvC,GAC5C3nH,MAAOi3J,GAAY,QAASE,EAAYxvC,GACxCF,KAAMwvC,GAAY,OAAQE,EAAYxvC,GACtCjyC,MAAOuhF,GAAY,QAASE,EAAYxvC,GACxC6vC,KAAMP,GAAY,OAAQE,EAAYxvC,IAGlC5tH,EAAOo9J,EAAWzlJ,MAAM,CAAC,cAAe,aAAc,SACtDm2G,EAAWsvC,EAAWzlJ,MAAM,CAAC,cAAe,aAAc,aAC1D9/C,EAASulM,EAAWzlJ,MAAM,CAAC,cAAe,OAAQ,OAClD6wC,EAAgB40G,EAAWzlJ,MAAM,CAAC,cAAe,OAAQ,cAEzDje,EAAO,CACXkhB,EAAGjgD,EAAOs6C,IAAI,SACdF,KAAMp6C,EAAOs6C,IAAI,QACjB0mE,MAAOhhH,EAAOs6C,IAAI,YAClByoJ,OAAQ/iM,EAAOs6C,IAAI,cACnB0K,UACA3f,OACA29J,UAAW7vC,EACXQ,OAAQ3nH,OAAOC,KAAK+Y,GACpBsS,KAAMgrI,GAAUplM,EAAQ2wF,GACxBo1G,gBAAgB,EAChBC,gBAAgB,GAGlB,IACE,MAAMh3J,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA+BD,IACnD,YAAEi0H,EAAW,UAAES,EAAS,OAAEE,EAAM,eAAEwvC,GAAmBj3J,EAEvDi3J,UACIlnC,EAAAA,GAAAA,IAAIz4C,GAAAA,aAGNy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkB,CAAE/sE,OAAQ,cAAenT,MAAO,CAAE6zB,SAAU67F,EAAaS,YAAWE,mBAC1FsI,EAAAA,GAAAA,IAAIz4C,GAAAA,KAcZ,CAbE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B/3E,IAEP,MAA9BA,EAAMksG,SAASf,mBACXqlB,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyB,mBAG/By4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM5+C,EAAMksG,SAASr7B,QACrB8G,QAAS,UAEb,CACF,CAEO,SAAU15H,KACf,MAAM8mF,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBr8J,QAAeo8J,EAAAA,GAAAA,IAAOC,EAAAA,KACtBomC,QAAmBrmC,EAAAA,GAAAA,IAAOC,EAAAA,KAE1BpJ,EAAewvC,EAAWzlJ,MAAM,CAAC,UAAW,iBAE5CgI,EAAU,CACdmxF,MAAOosD,GAAY,QAASE,EAAYxvC,GACxC4vC,WAAYN,GAAY,YAAaE,EAAYxvC,GACjDhH,QAASs2C,GAAY,UAAWE,EAAYxvC,GAC5C3nH,MAAOi3J,GAAY,QAASE,EAAYxvC,GACxCF,KAAMwvC,GAAY,OAAQE,EAAYxvC,GACtC6vC,KAAMP,GAAY,OAAQE,EAAYxvC,IAGlC5tH,EAAOo9J,EAAWzlJ,MAAM,CAAC,UAAW,aAAc,SAClDm2G,EAAWsvC,EAAWzlJ,MAAM,CAAC,UAAW,aAAc,aACtD9/C,EAASulM,EAAWzlJ,MAAM,CAAC,UAAW,OAAQ,OAC9C6wC,EAAgB40G,EAAWzlJ,MAAM,CAAC,UAAW,OAAQ,cAIrDje,EAAO,CACXkhB,EAHQ,CAACjgD,EAAOs6C,IAAI,SAAUt6C,EAAOs6C,IAAI,QAASt6C,EAAOs6C,IAAI,aAGxD25B,KAAK,KAAKkM,OACf/lC,KAAMp6C,EAAOs6C,IAAI,cACjB0K,UACA3f,OACA29J,UAAW7vC,EACXQ,OAAQ3nH,OAAOC,KAAK+Y,GACpBsS,KAAMgrI,GAAUplM,EAAQ2wF,GACxBo1G,gBAAgB,EAChBC,gBAAgB,GAGlB,IACE,MAAMh3J,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA2BD,IAC/C,QAAEu0H,EAAO,UAAEG,EAAS,OAAEE,GAAWznH,QAEjC+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkB,CAAE/sE,OAAQ,UAAWnT,MAAO,CAAE6zB,SAAUm8F,EAASG,YAAWE,mBAClFsI,EAAAA,GAAAA,IAAIz4C,GAAAA,KAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2B/3E,UAE/BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAEO,SAAUp5H,KACf,MAAMmW,QAAeo8J,EAAAA,GAAAA,IAAOC,EAAAA,KACtBomC,QAAmBrmC,EAAAA,GAAAA,IAAOC,EAAAA,KAE1BpJ,EAAewvC,EAAWzlJ,MAAM,CAAC,WAAY,iBAE7CgI,EAAU,CACdmxF,MAAOosD,GAAY,QAASE,EAAYxvC,GACxC4vC,WAAYN,GAAY,YAAaE,EAAYxvC,GACjDhH,QAASs2C,GAAY,UAAWE,EAAYxvC,GAC5C3nH,MAAOi3J,GAAY,QAASE,EAAYxvC,GACxCF,KAAMwvC,GAAY,OAAQE,EAAYxvC,GACtCjyC,MAAOuhF,GAAY,QAASE,EAAYxvC,GACxC6vC,KAAMP,GAAY,OAAQE,EAAYxvC,GACtCmwC,aAAcb,GAAY,cAAeE,EAAYxvC,IAGjDowC,EAAgBZ,EAAWzlJ,MAAM,CAAC,WAAY,aAAc,WAC5Dm2G,EAAWsvC,EAAWzlJ,MAAM,CAAC,WAAY,aAAc,aACvD9/C,EAASulM,EAAWzlJ,MAAM,CAAC,WAAY,OAAQ,OAC/C6wC,EAAgB40G,EAAWzlJ,MAAM,CAAC,WAAY,OAAQ,cAItDje,EAAO,CACXkhB,EAHQ,CAACjgD,EAAOs6C,IAAI,SAAUt6C,EAAOs6C,IAAI,QAASt6C,EAAOs6C,IAAI,YAAat6C,EAAOs6C,IAAI,eAGhF25B,KAAK,KAAKkM,OACfn7B,UACAwuG,OAAQ6vC,EACRL,UAAW7vC,EACXQ,OAAQ3nH,OAAOC,KAAK+Y,GACpBsS,KAAMgrI,GAAUplM,EAAQ2wF,GACxBo1G,gBAAgB,GAGlB,IACE,MAAM/2J,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA4BD,IAChD,SAAEw0H,EAAQ,OAAEC,EAAM,eAAEI,EAAc,OAAED,GAAWznH,QAE/C+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkB,CAAE/sE,OAAQ,WAAYnT,MAAO,CAAE6zB,SAAUo8F,EAAUC,SAAQI,iBAAgBD,mBACjGsI,EAAAA,GAAAA,IAAIz4C,GAAAA,KAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B/3E,UAEhCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM5+C,EAAMksG,SAASr7B,QACrB8G,QAAS,UAEb,CACF,CAEO,SAAUn3H,GAA+Bm3C,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBAC1D,MAAMqT,EAAS0D,EACTq2B,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB1H,QAAyByH,EAAAA,GAAAA,IAAOC,EAAAA,KAGtC,SAFqCD,EAAAA,GAAAA,IAAOC,EAAAA,KAG1C,OAGF,MAGMt9H,EAAO,CACXsG,KAJWsvH,EAAiB33G,MAAM,CAAC,cAAe,aAAc,SAKhEgmJ,UAJeruC,EAAiB33G,MAAM,CAAC,cAAe,aAAc,aAKpEimJ,gBAAgB,EAChBC,gBAAgB,GAGlB,GAAe,eAAXzsJ,EAAyB,CAC3B,MAAM29G,EAAYO,EAAiBr6G,IAAI,aACvCvb,EAAKimB,QAAU,CACb8qC,UAAW6kE,EAAiBr6G,IAAI,YAChC67F,MAAOwe,EACJr6G,IAAI,UACJhI,QAAO6jG,IAAiC,IAAxBA,EAAM77F,IAAI,YAC1B0F,KAAIm2F,GAASA,EAAM77F,IAAI,WAGxB85G,IACFr1H,EAAKimB,QAAQs+I,oBAAsB,CAAClvC,GAExC,CAEe,WAAX39G,IACF1X,EAAKwkK,UAAY5uC,EAAiBr6G,IAAI,aAGxC,IAEE,GAAe,eAAX7D,GAA2B1X,EAAKimB,QAAQmxF,MAAM9mF,KAAO,EAAG,CAC1D,MAAMnjB,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA+BD,IACnD,YAAEi0H,EAAW,UAAES,GAAcvnH,EAC7Bs3J,EAAsBxwC,EAAY1gH,QAAOmxJ,GAAcA,EAAWlkK,KAAOo1H,EAAiBr6G,IAAI,6BAE9F2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2B,CAAE/sE,OAAQ,cAAenT,MAAO,CAAE6zB,SAAUqsI,EAAqB/vC,eACxG,OAEMwI,EAAAA,GAAAA,IAAIz4C,GAAAA,KAaZ,CAZE,MAAO/3E,GACP,IAAIg4E,EAAMjzC,EAAKl2B,IAAI,gBACb2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwC/3E,IAE9CA,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,aACnCnzB,EAAMh4E,EAAMksG,SAASr7B,eAGjB2/C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAMo5B,EACNL,QAAS,UAEb,CACF,CA/D4D,EA+D3D,CAEM,SAAUh3H,KACf,MAAMokF,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB1H,QAAyByH,EAAAA,GAAAA,IAAOC,EAAAA,KAEhCh3H,EAAOsvH,EAAiB33G,MAAM,CAAC,UAAW,aAAc,SACxDm2G,EAAWwB,EAAiB33G,MAAM,CAAC,UAAW,aAAc,aAE5Dje,EAAO,CACXimB,QAAS,CACPmxF,MAAOwe,EACJr6G,IAAI,UACJhI,QAAO6jG,IAAiC,IAAxBA,EAAM77F,IAAI,YAC1B0F,KAAIm2F,GAASA,EAAM77F,IAAI,WAE5BjV,OACA29J,UAAW7vC,EACX8vC,gBAAgB,EAChBC,gBAAgB,GAGlB,IACE,MAAMh3J,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA2BD,IAC/C,QAAEu0H,EAAO,UAAEG,GAAcvnH,QAEzB+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2B,CAAE/sE,OAAQ,UAAWnT,MAAO,CAAE6zB,SAAUm8F,EAASG,sBAChFwI,EAAAA,GAAAA,IAAIz4C,GAAAA,KAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC/3E,UAExCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAEO,SAAU12H,KACf,MAAMikF,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB1H,QAAyByH,EAAAA,GAAAA,IAAOC,EAAAA,KAGtC,SAFqCD,EAAAA,GAAAA,IAAOC,EAAAA,KAG1C,OAGF,MAAMgnC,EAAgB1uC,EAAiB33G,MAAM,CAAC,WAAY,aAAc,WAClEm2G,EAAWwB,EAAiB33G,MAAM,CAAC,WAAY,aAAc,aAC7D9/C,EAASy3J,EAAiB33G,MAAM,CAAC,WAAY,WAE7Cje,EAAO,CACX2kK,OAAQ,CAAC/uC,EAAiBr6G,IAAI,SAC9Bk5G,OAAQ6vC,EACR/rI,KAAMp6D,EACN8lM,UAAW7vC,EACXrrF,YAAa6sF,EAAiBr6G,IAAI,cAClCqpJ,UAAWhvC,EAAiBr6G,IAAI,aAGlC,IACE,MAAMpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA4BD,IAChD,SAAEw0H,EAAQ,OAAEC,EAAM,eAAEI,GAAmB1nH,QAEvC+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2B,CAAE/sE,OAAQ,WAAYnT,MAAO,CAAE6zB,SAAUo8F,EAAUC,SAAQI,2BAC1FqI,EAAAA,GAAAA,IAAIz4C,GAAAA,KAaZ,CAZE,MAAO/3E,GACP,IAAIg4E,EAAMjzC,EAAKl2B,IAAI,gBACb2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqC/3E,IAE3CA,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,aACnCnzB,EAAMh4E,EAAMksG,SAASr7B,eAGjB2/C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAMo5B,EACNL,QAAS,UAEb,CACF,CAEO,SAAUz6H,KACf,MAAM6nF,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,UAEpBi9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmBt3E,UACvB+vH,EAAAA,GAAAA,IAAItJ,GAAAA,YACJsJ,EAAAA,GAAAA,IAAIz4C,GAAAA,KAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0B/3E,UAE9BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAEO,SAAUn6H,GAAkB46H,GAAA,IAAGvpE,SAAS,SAAEypJ,EAAQ,OAAE/7C,IAAUnkC,EAAA,mBACnE,MAAMlzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAEpBt9H,EAAO,CACX6kK,WACA/7C,SACAhlF,MAAO,IAGT,IACE,MAAM,QAAE+vF,SAAkBjhH,EAAAA,GAAAA,IAAK3S,GAA2BD,SAEpDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuBovC,UAC3BqJ,EAAAA,GAAAA,IAAIz4C,GAAAA,KAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA2B/3E,UAE/BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAtBqE,EAsBpE,CAEM,SAAU75H,KACf,UACQuoD,EAAAA,GAAAA,IAAKpoD,UACLooD,EAAAA,GAAAA,IAAKjoD,UACLioD,EAAAA,GAAAA,IAAK9nD,UACLoyK,EAAAA,GAAAA,IAAIz4C,GAAAA,KAGZ,CAFE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B/3E,GACxC,CACF,CAEO,SAAU3/C,GAAqB63H,GAAA,IAAC,QAAExpE,GAASwpE,EAAA,mBAChD,MAAM,OAAEltE,EAAM,gBAAEotJ,GAAoB1pJ,EACpC,IACE,IAAK0pJ,EAAiB,CACpB,MAAMlvC,QAAyByH,EAAAA,GAAAA,IAAOC,EAAAA,KAEhCynC,SADyB1nC,EAAAA,GAAAA,IAAOC,EAAAA,MACW/hH,IAAI,kBAErD,IAAIypJ,EACAC,EAEW,eAAXvtJ,IACFstJ,EAAWpvC,EAAiBr6G,IAAI,qBAChC0pJ,EAAcF,EAAwB/hJ,MAAKsyG,GAAkBA,EAAer3G,MAAM,CAAC,UAAW,wBAA0B+mJ,KAG3G,WAAXttJ,IACFstJ,EAAWpvC,EAAiBr6G,IAAI,YAChC0pJ,EAAcF,EAAwB/hJ,MAAKsyG,GAAkBA,EAAer3G,MAAM,CAAC,UAAW,eAAiB+mJ,KAG7GC,QACI/nC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiCwgF,EAAY1pJ,IAAI,iBAErD2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqCmxC,GAEnD,CAEe,eAAXl+G,UACI9E,EAAAA,GAAAA,IAAK1lD,GAAiC,CAAEkuD,QAAS1D,UACjD9E,EAAAA,GAAAA,IAAKplD,KAGE,WAAXkqD,UACI9E,EAAAA,GAAAA,IAAK1lD,GAAiC,CAAEkuD,QAAS1D,UACjD9E,EAAAA,GAAAA,IAAKvlD,WAGP6vK,EAAAA,GAAAA,IAAIz4C,GAAAA,KAGZ,CAFE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8B/3E,GAC1C,CACF,CA1CkD,EA0CjD,CAEM,SAAU7+C,GAAsBg3H,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,mBACjD,MAAM,MAAElhD,EAAK,OAAEjsB,GAAW0D,EACpBy6G,QAAyBwH,EAAAA,GAAAA,IAAOC,EAAAA,WAEhCJ,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiC9gD,IAE3C,MAAMuhI,EAAervC,EAAiBt6G,IAAI,kBAAkByH,MAAKsyG,GAAkBA,EAAe/5G,IAAI,WAAaooB,UAE7Gu5F,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiCygF,EAAa3pJ,IAAI,mBACtD3I,EAAAA,GAAAA,IAAK7lD,GAAuB,CAAEquD,QAAS,CAAE1D,SAAQotJ,iBAAiB,IAC1E,CAVmD,EAUlD,CAEM,SAAUK,WACTzmC,EAAAA,GAAAA,IAAUj6C,GAAAA,EAA6Bp6H,GAC/C,CAEO,SAAU+6M,WACT1mC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgCj6H,GAClD,CAEO,SAAU66M,WACT3mC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4B95H,GAC9C,CAEO,SAAU26M,WACT5mC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6B35H,GAC/C,CAEO,SAAUy6M,WACT7mC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2B76H,GAC7C,CAEO,SAAU47M,WACT9mC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4B16H,GAC9C,CAEO,SAAU07M,WACT/mC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+B13H,GACjD,CAEO,SAAU24M,WACThnC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyCv3H,GAC3D,CAEO,SAAUy4M,WACTjnC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqCp3H,GACvD,CAEO,SAAUu4M,WACTlnC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAsCj3H,GACxD,CAEO,SAAUq4M,WACTnnC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgC52H,GAClD,CAEe,SAAUkmM,WACjBxmJ,EAAAA,GAAAA,IAAI,CACR43J,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CC7dO,SAAU15M,GAAWk4C,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBACtC,MAAMotC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IAAIt9H,EAEJ,IACE,GAAIob,GAAWA,EAAQ5a,GACrBR,EAAO,CACLwI,IAAK,CAAC4S,EAAQ5a,SAGX,CAELR,EAAO,CACLwI,WAFqB60H,EAAAA,GAAAA,IAAOC,EAAAA,MAEd/hH,IAAI,eAEtB,CAEA,MAAMpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAA4BD,GAEhD8lK,QAA6BzoC,EAAAA,GAAAA,IAAOC,EAAAA,KAEtCwoC,UACI5oC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8Ct3E,KAGtDA,EAAOmG,MAAKg1B,GAAMA,EAAGysF,yBACjBmI,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsBt3E,UAC1B+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,cAEJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsBt3E,IAE5B24J,UACI5oC,EAAAA,GAAAA,IAAIz4C,GAAAA,YAGNy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,iBACf8oE,QAAS,aASf,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoB/3E,UACxBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM5+C,EAAMksG,SAASr7B,QACrB8G,QAAS,UAEb,CACF,CAhDwC,EAgDvC,CAEM,SAAU53H,GAAmBk4H,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,mBAC9C,MAAMlzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMvI,EAAkB35G,EAAQG,IAAI,mBAC9BmpJ,EAAatpJ,EAAQG,IAAI,cACzB/a,EAAKu0H,EAAgBx5G,IAAI,MAGzBvb,EAAO,CACXQ,KACAq/J,SAJe9qC,EAAgBx5G,IAAI,YAKnCkV,QAAS,CACPguH,WAAYimB,EAAWnpJ,IAAI,aAC3BmjI,UAAWgmB,EAAWnpJ,IAAI,YAC1By+E,KAAM0qE,EAAWnpJ,IAAI,QACrB0mE,MAAOyiF,EAAWnpJ,IAAI,SACtBsjJ,UAAW6F,EAAWnpJ,IAAI,YAC1BsxG,QAAS63C,EAAWnpJ,IAAI,WACxBuxG,QAAS43C,EAAWnpJ,IAAI,WACxBwxG,QAAS23C,EAAWnpJ,IAAI,WACxB46E,MAAOuuE,EAAWnpJ,IAAI,SACtByxG,IAAK03C,EAAWnpJ,IAAI,OACpBwjJ,QAAS2F,EAAWnpJ,IAAI,WACxB2jJ,WAAYwF,EAAWnpJ,IAAI,aAC3B4jJ,SAAUuF,EAAWnpJ,IAAI,WACzBskJ,SAAU6E,EAAWnpJ,IAAI,YACzBwqJ,YAAarB,EAAWnpJ,IAAI,cAC5B6jJ,aAAcsF,EAAWnpJ,IAAI,eAC7B8jJ,YAAaqF,EAAWnpJ,IAAI,cAC5B+jJ,aAAcoF,EAAWnpJ,IAAI,eAC7BikJ,WAAYkF,EAAWnpJ,IAAI,aAC3BkkJ,cAAeiF,EAAWnpJ,IAAI,gBAC9BgkJ,YAAamF,EAAWnpJ,IAAI,cAC5BmkJ,YAAagF,EAAWnpJ,IAAI,cAC5BokJ,UAAW+E,EAAWnpJ,IAAI,YAC1BwkJ,mBAAoB2E,EAAWnpJ,IAAI,qBACnCykJ,qBAAsB0E,EAAWnpJ,IAAI,uBAEvC7G,KAAM,CACJsvJ,OAAQU,EAAWnpJ,IAAI,UACvB67F,MAAOstD,EAAWnpJ,IAAI,WAIpBy5G,QAA6BpiH,EAAAA,GAAAA,IAAK3S,GAAoBD,SAEtDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8B,CAAEswC,kBAAiBC,gCACrDkI,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsBuwC,IAIhC,SAFmCqI,EAAAA,GAAAA,IAAOC,EAAAA,KAEhB,CACxB,MAAMxI,QAAqBuI,EAAAA,GAAAA,IAAOC,EAAAA,KACfxI,EAAavhH,QAAO+0B,GAAMA,EAAG/sB,IAAI,qBAErC+U,KAAO,UACd4sG,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KAEd,OAEMy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,iBACf8oE,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B/3E,UAChCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM5+C,EAAMksG,SAASr7B,QACrB8G,QAAS,UAEb,CACF,CAzEgD,EAyE/C,CAEM,SAAU93H,GAAWq4H,GAAA,IAAC,QAAExpE,GAASwpE,EAAA,mBACtC,MACMohF,SADqB3oC,EAAAA,GAAAA,IAAOC,EAAAA,MACF/pH,QAAO+0B,GAAMA,EAAG/sB,IAAI,4BAEjB8hH,EAAAA,GAAAA,IAAOC,EAAAA,OAEd0oC,EAAW11I,KAAO,UACtC4sG,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,YAGNy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuCrpE,GACnD,CAZwC,EAYvC,CAEM,SAAU6qJ,WACTvnC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqBt4H,GACvC,CAEO,SAAU+5M,WACTxnC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6Bh4H,GAC/C,CAEO,SAAU05M,WACTznC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0Ct4H,GAC5D,CAEO,SAAUi6M,WACT1nC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqBl4H,GACvC,CAEe,SAAU85M,WACjB94J,EAAAA,GAAAA,IAAI,CACR04J,KACAE,KACAC,KACAF,MAEJ,CClKe,SAAUI,WACjB/4J,EAAAA,GAAAA,IAAI,CACRwmJ,KACAsS,MAIJ,CCCO,SAAUxsL,GAAiBwqB,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBAC5C,MAAMotC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBipC,QAA4BlpC,EAAAA,GAAAA,IAAOC,EAAAA,KACnCkpC,EAAatiK,EAASqX,IAAI,MAEhC,IAAI+2I,EAGFA,EADEl3I,EACY,CACZC,KAAMnX,EAASqX,IAAI,QACnBw1G,KAAMmS,KAAKC,UAAUojC,EAAoBhrJ,IAAI,gBAAgB/F,QAC7Dw7G,KAAMu1C,EAAoBhrJ,IAAI,QAC9Bs1G,OAAQ3sH,EAASqX,IAAI,UACrBu1G,SAAU5sH,EAASqX,IAAI,aAGX,CACZ/a,GAAIgmK,EACJnrJ,KAAMnX,EAASqX,IAAI,QACnBw1G,KAAMmS,KAAKC,UAAUj/H,EAASqX,IAAI,QAAQ/F,QAC1Cw7G,KAAM9sH,EAASqX,IAAI,QACnBs1G,OAAQ3sH,EAASqX,IAAI,UACrBu1G,SAAU5sH,EAASqX,IAAI,aAI3B,IACE,IAAIpO,EACAm+C,EAEAk7G,GACFr5J,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAyBumK,EAAYlU,GACzDhnG,EAAO,GAAG7Z,EAAKl2B,IAAI,eAAek2B,EAAKl2B,IAAI,eAE3CpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAyBqyJ,GAC7ChnG,EAAO,GAAG7Z,EAAKl2B,IAAI,eAAek2B,EAAKl2B,IAAI,cAGzCH,SACI8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIupC,GAAAA,eAEJvpC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4Bt3E,UAChC+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,aAGNy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,OACA+4B,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,WACJy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CA3D8C,EA2D7C,CAEM,SAAUrqG,GAAmB2qG,GAAA,IAAGvpE,SAAS,GAAE5a,IAAMmkF,EAAA,mBACtD,MAAMlzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAC1B,UACQ1qH,EAAAA,GAAAA,IAAK3S,GAAyBO,SAC9B08H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8BjkF,UAClC08H,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM,GAAG7Z,EAAKl2B,IAAI,eAAek2B,EAAKl2B,IAAI,aAC1C2oE,SAAS,IAWf,CARE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAGf,CACF,CApBwD,EAoBvD,CAEM,SAAUzpG,GAAkBmqG,GAAA,IAAC,QAAExpE,GAASwpE,EAAA,mBAC7C,MAAM,GAAEpkF,GAAO4a,EACTq2B,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAEpBpM,SADkBmM,EAAAA,GAAAA,IAAOC,EAAAA,MACJ/hH,IAAI,SAASyH,MAAK0jJ,GAAQA,EAAKnrJ,IAAI,QAAU/a,IAElE8xJ,EAAc,CAClBj3I,KAAM,GAAG61G,EAAS31G,IAAI,WAAWk2B,EAAKl2B,IAAI,eAC1Cw1G,KAAMmS,KAAKC,UAAUjS,EAAS31G,IAAI,QAAQ/F,QAC1Cw7G,KAAME,EAAS31G,IAAI,QACnBs1G,QAAQ,EACRC,UAAU,GAGZ,IACE,MAAM3jH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAyBqyJ,GAE/CphC,EAAS31G,IAAI,gBACT2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,WAEJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4Bt3E,UAGlC+vH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM,GAAG7Z,EAAKl2B,IAAI,eAAek2B,EAAKl2B,IAAI,gBAC1C2oE,SAAS,IAWf,CARE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,WACJy4C,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAGf,CACF,CAtC+C,EAsC9C,CAEM,SAAUyiF,WACTjoC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2B5qG,GAC7C,CAEO,SAAU+sL,WACTloC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BzqG,GAC/C,CAEO,SAAU6sL,WACTnoC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4BhqG,GAC9C,CAEe,SAAUi5K,WACjBnmJ,EAAAA,GAAAA,IAAI,CACRo5J,KACAC,KACAC,MAEJ,CC7IO,SAAU1rL,KACf,MAAM2rL,QAA4BzpC,EAAAA,GAAAA,IAAOC,EAAAA,WAEnCJ,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B,CAAEosC,OAAQi2C,IAClD,CAEO,SAAU3sL,GAAmBkqB,GAAA,IAAG+W,SAAS,OAAEy1G,EAAM,SAAEC,IAAYzsH,EAAA,mBACpE,MAAMotC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpBr3G,QAAgBo3G,EAAAA,GAAAA,IAAOC,EAAAA,KAEvB/pH,EAAS,CACb,CAAEoE,MAAO,SAAUpT,MAAOssH,IAGxBC,GACFv9G,EAAOnG,KAAK,CAAEuK,MAAO,WAAYpT,OAAO,IAG1C,MAAM+tJ,EAAc,CAClB3T,aAAcprI,EACdjN,KAAM2f,EAAQ1K,IAAI,QAClBrV,MAAO+f,EAAQ1K,IAAI,SACnB6xC,QAASnnC,EAAQ1K,IAAI,UACrB0gJ,WAAYh2I,EAAQ1K,IAAI,cAG1B,IACE,MAAMpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAyBqyJ,SAE7Cp1B,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8B,CAAEosC,SAAQ1jH,WASpD,CARE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAGf,CACF,CAjCsE,EAiCrE,CAEM,SAAU6iF,KACf,UACQ7pC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B,CAAEosC,QAAQ,EAAOC,UAAU,WAC3D4Y,EAAAA,GAAAA,IAAKjlD,GAAAA,UACLy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B,CAAEosC,QAAQ,EAAMC,UAAU,WAC1D4Y,EAAAA,GAAAA,IAAKjlD,GAAAA,UACLy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KAGZ,CAFE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CACF,CAEO,SAAUuiF,WACTtoC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAqCsiF,GACvD,CAEO,SAAUE,WACTvoC,EAAAA,GAAAA,IAAUj6C,GAAAA,EAA+BtpG,GACjD,CAEO,SAAU+rL,WACTxoC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BtqG,GAC/C,CAEe,SAAU45K,WACjBxmJ,EAAAA,GAAAA,IAAI,CACR25J,KACAD,KACAD,MAEJ,CC7EO,SAAUxsL,GAAuB6pB,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBAClD,IAAIwsH,EAGFA,EADEz1G,EACOA,EAAQy1G,aAEFwM,EAAAA,GAAAA,IAAOC,EAAAA,WAGlBJ,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA4B,CAAEosC,WAC1C,CAXoD,EAWnD,CAEM,SAAUs2C,WACTzoC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiCjqG,GACnD,CAEe,SAAUm5K,WACjBpmJ,EAAAA,GAAAA,IAAI,CACR45J,MAEJ,CC1Be,SAAUC,WACjB75J,EAAAA,GAAAA,IAAI,CACRmmJ,KACAK,KACAJ,MAEJ,CCLO,SAAU/1J,KACf,IACE,MAAM0I,QAAa+2H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBtL,QAAgBqL,EAAAA,GAAAA,IAAOC,EAAAA,KACvBrL,QAAgBoL,EAAAA,GAAAA,IAAOC,EAAAA,KAGvBt9H,EAAO,CACX2vB,aAHqB0tG,EAAAA,GAAAA,IAAOC,EAAAA,MAGZ/hH,IAAI,SACpBjV,OACA+gK,SAAUr1C,EACVs1C,SAAUr1C,GAGN9kH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0BD,SAC9Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0Bt3E,UAC9B+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KAQZ,CAPE,MAAOqzE,SACD56B,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,IAGf,CACF,CAEO,SAAUhmF,KACf,IACE,MAAM8B,EAAO,CACX8jC,MAAO,IAGH32B,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA+BD,SACnDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0Bt3E,UAC9B+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,KAQZ,CAPE,MAAOqzE,SACD56B,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,IAGf,CACF,CAEO,SAAUqjF,WACT7oC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmC7mF,GACrD,CAEO,SAAU4pK,WACT9oC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwCvmF,GAC1D,CAEe,SAAU61J,WACjBxmJ,EAAAA,GAAAA,IAAI,CACRg6J,KACAC,MAEJ,CC5DO,SAAUzpK,GAAsBsG,GAAA,IAAG+W,SAAS,IAAEowC,EAAG,SAAEhnD,IAAYH,EAAA,mBACpE,MAAMrE,EAAO,CACXwrD,MACAhnD,YAGF,UACQoO,EAAAA,GAAAA,IAAK3S,GAAAA,GAA2BD,SAChCk9H,EAAAA,GAAAA,IAAInL,GAAAA,aACJmL,EAAAA,GAAAA,IAAIz4C,GAAAA,KAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA+B/3E,UACnCwwH,EAAAA,GAAAA,IACJ1hH,EAAAA,GAA0B,CACxB0oE,SAAS,IAGf,CACF,CAlBsE,EAkBrE,CAEM,SAAUujF,WACT/oC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAgC1mF,GAClD,CAEe,SAAU21J,WACjBnmJ,EAAAA,GAAAA,IAAI,CACRk6J,MAEJ,CC9Be,SAAUC,WACjBn6J,EAAAA,GAAAA,IAAI,CACRwmJ,KACAL,MAEJ,CCPO,MAAMiU,GAAYA,IAAMx4I,MAASinH,cAE3B7f,GAAMqxC,GAKV,KAII74I,GAAQ84I,GAKZ,KCbF,SAAU94I,GAAK1qB,GAAA,IAAG+W,QAAS2/H,GAAW12I,EAAA,mBAC3C,MAAM6zG,QAAgBtlG,EAAAA,GAAAA,IAAKC,IAE3B,UACQD,EAAAA,GAAAA,IAAKC,GAAWkoI,SAChB7d,EAAAA,GAAAA,IAAIz4C,GAAwB,CAAE11D,MAAOgsH,EAAW7iC,YAGxD,CAFE,MAAOxrG,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAsB,CAAE11D,MAAOgsH,EAAWruI,UACtD,CACF,CAT6C,EAS5C,CAEM,SAAU6pH,GAAG5xC,GAAA,IAAGvpE,QAAS0sJ,GAASnjF,EAAA,mBACvC,MAAMuzB,QAAgBtlG,EAAAA,GAAAA,IAAKC,IAE3B,UACQD,EAAAA,GAAAA,IAAKC,GAASi1J,SACd5qC,EAAAA,GAAAA,IAAIz4C,GAAsB,CAAE8xC,IAAKuxC,EAAS5vD,YAGlD,CAFE,MAAOxrG,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAoB,CAAE8xC,IAAKuxC,EAASp7J,UAChD,CACF,CATyC,EASxC,CAEM,SAAUq7J,GAASnjF,GAAA,IAAGxpE,QAAS9U,GAAMs+E,EAAA,mBAC1C,MAAMm2D,EAAY,CAChBitB,SAAU,QACV58E,OAAQ,aACRn2C,MAAO,OACP1wC,MAAO+B,SAGH42H,EAAAA,GAAAA,IAAIz4C,GAAwBs2D,GACpC,CAT4C,EAS3C,CAEM,SAAUktB,GAASpjF,GAAA,IAAGzpE,QAAS9U,GAAMu+E,EAAA,mBAC1C,MAAMk2D,EAAY,CAChBitB,SAAU,QACV58E,OAAQ,aACRn2C,MAAO,OACP1wC,MAAO+B,SAGH42H,EAAAA,GAAAA,IAAIz4C,GAAwBs2D,GACpC,CAT4C,EAS3C,CAEM,SAAUmtB,WACTxpC,EAAAA,GAAAA,IAAUj6C,GAAyB11D,GAC3C,CAEO,SAAUo5I,WACTzpC,EAAAA,GAAAA,IAAUj6C,GAAuB8xC,GACzC,CAEO,SAAU6xC,WACT1pC,EAAAA,GAAAA,IAAUj6C,GAAsBsjF,GACxC,CAEO,SAAUM,WACT3pC,EAAAA,GAAAA,IAAUj6C,GAAsBwjF,GACxC,CAEe,SAAUK,WACjB/6J,EAAAA,GAAAA,IAAI,CACR26J,KACAC,KACAC,KACAC,MAEJ,CC9DO,SAAU3nK,KACf,MAAM+wC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMjiH,QAAagiH,EAAAA,GAAAA,IAAOC,EAAAA,KAGpBg1B,EAAc,CAClBj3I,OACAs7G,aAJmB0G,EAAAA,GAAAA,IAAOC,EAAAA,MAOtBnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAyBqyJ,SAE7Cp1B,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmCt3E,UACvC+vH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJilD,EAAAA,GAAAA,IAAKjlD,GAAAA,UAELy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,8BACf8oE,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiC/3E,UACrCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAEO,SAAUkkF,KACf,MAAM92H,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMtyC,GAAiBC,EAAAA,EAAAA,MAEvB,IAAK,IAAI/nD,EAAI,EAAGA,EAAI8nD,EAAe16D,KAAM4S,GAAK,EAAG,CAC/C,MAAM7nB,EAAO2vE,EAAezvE,IAAI2nB,GAAG3nB,IAAI,UACjCo7G,EAAS3rC,EAAezvE,IAAI2nB,GAAG3nB,IAAI,sBACnC3I,EAAAA,GAAAA,IAAK3S,GAAAA,GAAyB,CAAEob,OAAMs7G,UAC9C,OAEMuG,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJilD,EAAAA,GAAAA,IAAKjlD,GAAAA,GAOb,CANE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyC/3E,UAC7CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAEO,SAAUmkF,GAAmBnkK,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBAC9C,MAAMotC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAM,WAAEmrC,GAAertJ,EACjBlX,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KAE9B,IAAIg1B,EACAnlJ,EAEe,iBAAfs7J,IACFnW,EAAc,CACZj3I,KAAMnX,EAASqX,IAAI,QACnBo7G,OAAQzyH,EAASqX,IAAI,UACrBs/E,QAAS32F,EAASqX,IAAI,iBAGxBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAqCiE,EAASqX,IAAI,MAAO+2I,IAG5D,kBAAfmW,IACFnW,EAAc,CACZj3I,KAAMnX,EAASqX,IAAI,QACnBo7G,OAAQzyH,EAASqX,IAAI,UACrBs/E,QAAS32F,EAASqX,IAAI,kBAGxBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAsCiE,EAASqX,IAAI,MAAO+2I,IAG7D,iBAAfmW,IACFnW,EAAc,CACZoW,eAAgBxkK,EAASqX,IAAI,kBAG/BpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAsCiE,EAASqX,IAAI,MAAO+2I,UAG1Ep1B,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmCt3E,UACvC+vH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJilD,EAAAA,GAAAA,IAAKjlD,GAAAA,UAELy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,8BACf8oE,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiC/3E,UACrCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAtDgD,EAsD/C,CAEM,SAAUvjF,KACf,MAAM2wC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KAExBnwH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAyBiE,EAASqX,IAAI,aAE1D2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmCt3E,UACvC+vH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJilD,EAAAA,GAAAA,IAAKjlD,GAAAA,UAELy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,8BACf8oE,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiC/3E,UACrCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAEO,SAAUtjF,KACf,MAAM0wC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KAExBg1B,EAAc,CAClB9xJ,GAAI0D,EAASqX,IAAI,MACjBF,KAAMnX,EAASqX,IAAI,QACnBo7G,OAAQzyH,EAASqX,IAAI,WAGjBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgCqyJ,SAEpDp1B,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0Ct3E,UAC9C+vH,EAAAA,GAAAA,IAAIz6B,EAAAA,YACJy6B,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJilD,EAAAA,GAAAA,IAAKjlD,GAAAA,UAELy4C,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,uCACf8oE,QAAS,YAQb,CANE,MAAO33E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwC/3E,UAC5CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAEO,SAAUrjF,KACf,MAAMywC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMp5H,QAAiBm5H,EAAAA,GAAAA,IAAOC,EAAAA,KAExBg1B,EAAc,CAClBj3I,KAAMnX,EAASqX,IAAI,QACnBo7G,OAAQzyH,EAASqX,IAAI,WAGjBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8BqyJ,SAElDp1B,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwCt3E,GAOpD,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsC/3E,UAC1CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAkC,CAC1C8vC,KAAM7Z,EAAKl2B,IAAI,UACf8oE,QAAS,UAEb,CACF,CAEO,SAAUskF,WACTjqC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkC/jF,GACpD,CAEO,SAAUkoK,WACTlqC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0C8jF,GAC5D,CAEO,SAAUM,WACTnqC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkC+jF,GACpD,CAEO,SAAUM,WACTpqC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkC3jF,GACpD,CAEO,SAAUioK,WACTrqC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAyC1jF,GAC3D,CAEO,SAAUioK,WACTtqC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuCzjF,GACzD,CAEe,SAAU0yJ,WACjBnmJ,EAAAA,GAAAA,IAAI,CACRo7J,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CCtOO,SAAUvoK,KACf,MAAMgxC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MACM9yC,SAD0B6yC,EAAAA,GAAAA,IAAOC,EAAAA,MACM/hH,IAAI,sBAC3CF,QAAagiH,EAAAA,GAAAA,IAAOC,EAAAA,KACpBh3H,QAAa+2H,EAAAA,GAAAA,IAAOC,EAAAA,KACpBp3H,QAAcm3H,EAAAA,GAAAA,IAAOC,EAAAA,KACrB3F,QAAyB0F,EAAAA,GAAAA,IAAOC,EAAAA,KAEhCt9H,EAAO,CACXuT,OAAQ,CAAE8H,QACV4tJ,eAAgB,CAAEzgK,IAAKgiF,EAAqB,GAAKmtC,GACjDrxH,OACAJ,SAGIiH,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA0BD,SAE9Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0Bt3E,UAC9B+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,KAQZ,CAPE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC/3E,UAEtCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,UACf2oE,SAAS,IAEb,CACF,CAEO,SAAUglF,WACTxqC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmChkF,GACrD,CAEe,SAAUszJ,WACjBxmJ,EAAAA,GAAAA,IAAI,CACR27J,MAEJ,CC1Ce,SAAUC,WACjB57J,EAAAA,GAAAA,IAAI,CACRmmJ,KACAK,MAEJ,CCOO,SAAUx6J,YACiB8jI,EAAAA,GAAAA,IAAOC,EAAAA,cAG/BJ,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAmC,IAEjD,CAEO,SAAUjrF,YACuB6jI,EAAAA,GAAAA,IAAOC,EAAAA,cAGrCJ,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAmC,IAEjD,CAEO,SAAU2kF,GAAY/kK,GAAA,IAAG+W,SAAS,gBAAE68G,IAAmB5zH,EAAA,mBAC5D,IACE,MAAMrE,EAAO,CACXqpK,kBAAmBpxC,GAGfrf,QAAiBhmG,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8BD,SAEpDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC,CAAEm0B,WAAUqf,oBAG1D,CAFE,MAAOvrH,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgC/3E,GAC5C,CACF,CAZ8D,EAY7D,CAEM,SAAU48J,GAAc3kF,GAAA,IAAGvpE,SAAS,gBAAE68G,EAAe,qBAAEsxC,IAAwB5kF,EAAA,mBACpF,UACQ/xE,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8BspK,SAEnCrsC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoC,CAAEwzC,oBAGlD,CAFE,MAAOvrH,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC/3E,GAC9C,CACF,CARsF,EAQrF,CAEM,SAAU88J,KACf,IACE,MAAMC,QAAsBpsC,EAAAA,GAAAA,IAAOC,EAAAA,KAC7Bn9H,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBosC,QAA0BrsC,EAAAA,GAAAA,IAAOC,EAAAA,KAGjCt9H,EAAO,CACX+Y,aAAc2wJ,EACdC,sBAJgCtsC,EAAAA,GAAAA,IAAOC,EAAAA,KAKvClwE,QAASq8G,EAAcxrJ,MAAM,CAAC,wBAAyB,WACvDg+I,WAAYwN,EAAcxrJ,MAAM,CAAC,wBAAyB,cAC1D9d,YAEIgN,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgCD,SACpD4S,EAAAA,GAAAA,IAAKyrH,GAAclxH,EAAQ,mBAAoB6uE,EAAAA,UAC/CkhD,EAAAA,GAAAA,IAAIz4C,GAAAA,KAGZ,CAFE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAkC/3E,GAC9C,CACF,CAEO,SAAUl8C,KACf,IACE,MAAMo5M,QAA6BvsC,EAAAA,GAAAA,IAAOC,EAAAA,KACpCv6H,QAAes6H,EAAAA,GAAAA,IAAOC,EAAAA,KAEtBh5H,EAAM,gBADc+4H,EAAAA,GAAAA,IAAOC,EAAAA,QACIv6H,yBAGvB,iBAFM6P,EAAAA,GAAAA,IAAKi5I,GAAsBvnJ,KAErBslK,UAClB1sC,EAAAA,GAAAA,IAAIz4C,GAAAA,MAKd,CAHE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,UACzBwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,KACZ,CACF,CAEO,SAAUzhB,KACf,IACE,MAAMgJ,QAAes6H,EAAAA,GAAAA,IAAOC,EAAAA,KAEtBh5H,EAAM,gBADc+4H,EAAAA,GAAAA,IAAOC,EAAAA,QACIv6H,+BAC/B6P,EAAAA,GAAAA,IAAKi5I,GAAsBvnJ,EAAK,QAGxC,CAFE,MAAOoI,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAEO,SAAUwhJ,WACTxvB,EAAAA,GAAAA,IAAUljH,EAAAA,GAAiChrD,GACnD,CAEO,SAAUq5M,WACTnrC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4B1qF,GAC9C,CAEO,SAAU+vK,WACTprC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiBlrF,GACnC,CAEO,SAAUwwK,WACTrrC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmBjrF,GACrC,CAEO,SAAUwwK,WACTtrC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAiC2kF,GACnD,CAEO,SAAUa,WACTvrC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmC6kF,GACrD,CAEO,SAAUY,WACTxrC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmC+kF,GACrD,CAEe,SAAU9V,WACjBnmJ,EAAAA,GAAAA,IAAI,CACRu8J,KACAC,KACAC,KACAC,KACAC,KACAhc,KACA2b,MAEJ,CC3IO,SAAUzvK,WACT8iI,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU37G,GAAcu7B,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,yBACnC64H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqBrpE,UACzB8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAH2C,EAG1C,CAEM,SAAU/lH,GAAcimH,GAAA,IAAGvpE,SAAS,MAAEuoB,EAAK,MAAEhsB,IAASgtE,EAAA,yBACrDu4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqB,CAAE9gD,QAAOhsB,iBAClCulH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAH6D,EAG5D,CAEM,SAAU9lH,GAAcimH,GAAA,IAAC,QAAExpE,GAASwpE,EAAA,yBACnCs4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqBrpE,UACzB8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAH2C,EAG1C,CAEM,SAAUpqF,WACT6iI,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU0lF,WACTzrC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4BrqF,GAC9C,CAEO,SAAU61J,WACTvxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwB37G,GAC1C,CAEO,SAAUknL,WACTtxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwB/lH,GAC1C,CAEO,SAAUiyL,WACTjyB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwB9lH,GAC1C,CAEO,SAAUyrM,WACT1rC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4BpqF,GAC9C,CAEe,SAAUs5J,WACjBpmJ,EAAAA,GAAAA,IAAI,CACR48J,KACAla,KACAD,KACAW,KACAyZ,MAEJ,CC5CO,SAAUrvK,KACf,IACE,MAAM0uK,QAAsBpsC,EAAAA,GAAAA,IAAOC,EAAAA,KAC7Bn9H,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBh3H,EAAOmjK,EAAcluJ,IAAI,sBACzBmuJ,QAA0BrsC,EAAAA,GAAAA,IAAOC,EAAAA,KAGjCt9H,EAAO,CACX+Y,aAAc2wJ,EACdC,sBAJgCtsC,EAAAA,GAAAA,IAAOC,EAAAA,KAKvCp3H,MAAOujK,EAAcluJ,IAAI,SACzB6xC,QAASq8G,EAAcxrJ,MAAM,CAAC,wBAAyB,WACvDg+I,WAAYwN,EAAcxrJ,MAAM,CAAC,wBAAyB,cAC1D3X,OACAnG,YAEIy4G,QAAiBhmG,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgCD,SACtDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0C,CAAEm0B,WAAUtyG,gBAC1D42H,EAAAA,GAAAA,IAAIz4C,GAAAA,KAGZ,CAFE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiC/3E,GAC7C,CACF,CAEO,SAAU29J,KACf,IACE,MAAMvyC,QAA8BuF,EAAAA,GAAAA,IAAOC,EAAAA,KACrCmsC,QAAsBpsC,EAAAA,GAAAA,IAAOC,EAAAA,KAC7Bn9H,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBh3H,EAAOmjK,EAAcluJ,IAAI,6BAEzBvb,EAAO,CACX+Y,aAAc,CACZvQ,IAAK,CAACsvH,EAAsB75G,MAAM,CAAC,cAAe,SAEpD0rJ,gBAAiB,CACfhlG,wBAAyBx1C,OAAS7Z,SAAS,EAAG,SAAS8Z,UAEzDlpB,MAAOujK,EAAcluJ,IAAI,SACzB6xC,QAAS,qBACT6uG,WAAY,OACZ31J,OACAnG,YAEIy4G,QAAiBhmG,EAAAA,GAAAA,IAAK3S,GAAAA,GAAgCD,SACtDk9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAgD,CAAEm0B,WAAUtyG,SAGxE,CAFE,MAAOoG,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA8C/3E,GAC1D,CACF,CAEO,SAAUrR,KACf,IACE,MAAMouK,QAAsBpsC,EAAAA,GAAAA,IAAOC,EAAAA,KAC7Bn9H,QAAiBk9H,EAAAA,GAAAA,IAAOC,EAAAA,KACxBh3H,EAAOmjK,EAAcluJ,IAAI,oBACzBmuJ,QAA0BrsC,EAAAA,GAAAA,IAAOC,EAAAA,KAGjCt9H,EAAO,CACX+Y,aAAc2wJ,EACdC,sBAJgCtsC,EAAAA,GAAAA,IAAOC,EAAAA,KAKvCp3H,MAAOujK,EAAcluJ,IAAI,SACzB6xC,QAASq8G,EAAcxrJ,MAAM,CAAC,sBAAuB,WACrDg+I,WAAYwN,EAAcxrJ,MAAM,CAAC,sBAAuB,cACxD3X,OACAnG,YAGIy4G,QAAiBhmG,EAAAA,GAAAA,IAAK3S,GAAAA,GAA8BD,IAC1D0pI,EAAAA,GAAAA,IAAKjlD,GAAAA,UACCy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwC,CAAEm0B,WAAUtyG,WAC9DojI,EAAAA,GAAAA,IAAKjlD,GAAAA,UACCy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KAGZ,CAFE,MAAO/3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiC/3E,GAC7C,CACF,CAEO,SAAU9R,WACTsiI,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsB,CAAE60C,UAAW,EAAGD,SAAU,8BACpD6D,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsB,CAAE60C,UAAW,EAAGD,SAAU,4BACpD6D,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU6lF,KACf,MACMhkK,SADsB+2H,EAAAA,GAAAA,IAAOC,EAAAA,MACR/hH,IAAI,sBAAwB,QACjD2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsB,CAAE60C,UAAWhzH,EAAM+yH,SAAU,8BACvD6D,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU8lF,KACf,MACMjkK,SADsB+2H,EAAAA,GAAAA,IAAOC,EAAAA,MACR/hH,IAAI,6BAA+B,QACxD2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsB,CAAE60C,UAAWhzH,EAAM+yH,SAAU,qCACvD6D,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU6jE,KACf,MACMhiJ,SADsB+2H,EAAAA,GAAAA,IAAOC,EAAAA,MACR/hH,IAAI,oBAAsB,QAC/C2hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsB,CAAE60C,UAAWhzH,EAAM+yH,SAAU,4BACvD6D,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU/pF,GAAgB2J,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,yBACrC64H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAsBrpE,UAC1B8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAH6C,EAG5C,CAEM,SAAU+lF,WACT9rC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkC7pF,GACpD,CAEO,SAAU6vK,WACT/rC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoC1pF,GACtD,CAEO,SAAU2vK,WACThsC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA+C4lF,GACjE,CAEO,SAAUM,WACTjsC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkCppF,GACpD,CAEO,SAAUuvK,WACTlsC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA4C6lF,GAC9D,CAEO,SAAUO,WACTnsC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAmD8lF,GACrE,CAEO,SAAUO,WACTpsC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0C6jE,GAC5D,CAEO,SAAUyiB,WACTrsC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA0B/pF,GAC5C,CAEe,SAAUq5J,WACjBxmJ,EAAAA,GAAAA,IAAI,CACRi9J,KACAG,KACAF,KACAC,KACAE,KACAC,KACAC,KACAC,MAEJ,CC/JO,SAAU94L,GAAiBoyB,GAAA,IAAG+W,SAAS,SAAE3S,EAAQ,OAAEC,EAAM,MAAE8pF,IAASnuF,EAAA,yBACnE64H,EAAAA,GAAAA,IAAIz4C,GAAAA,IAAuB,UAC3By4C,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmB,CAAEz4B,KAAMvjD,EAAUqjD,GAAIpjD,EAAQ8pF,iBACrD0qC,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAJ2E,EAI1E,CAEM,SAAUvyG,GAAmByyG,GAAA,IAAGvpE,QAASo3E,GAAO7N,EAAA,mBACrD,MAAM,KAAE34B,EAAI,GAAEF,SAAal5C,EAAAA,GAAAA,IAAK2iF,GAAAA,GAAc/C,IAE1CxmC,GAAQF,WACJoxE,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0B,CAClCh8E,SAAUujD,EACVtjD,OAAQojD,EACR0mC,WAGN,CAVuD,EAUtD,CAEM,SAAU/zH,GAAcmmH,GAAA,IAAGxpE,QAASuU,GAAOi1D,EAAA,mBAChD,GAAc,KAAVj1D,EAAc,CAChB,MAAM8hB,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KACpB76H,QAAa46H,EAAAA,GAAAA,IAAOC,EAAAA,KACpB53K,QAAektD,EAAAA,GAAAA,IAAK6+B,EAAKl2B,IAAK9Y,SAC9By6H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiB,CAAEhiF,OAAMktB,QAAOjqE,WAC5C,OAEMw3K,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CATkD,EASjD,CAEM,SAAU2rE,WACT1xB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA2BxyG,GAC7C,CAEO,SAAUo+K,WACT3xB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAA6BvyG,GAC/C,CAEO,SAAU69K,WACTrxB,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwBhmH,GAC1C,CAEe,SAAUusM,WACjBz9J,EAAAA,GAAAA,IAAI,CACR6iJ,KACAC,KACAN,MAEJ,CC3DO,MAAMkb,GAAwBA,CAAC59D,EAAgB69D,KAEpD,MAQMC,EAAoBA,CAACC,EAAMC,KAC/B,MAAMn+J,EAAOD,OAAOC,KAAKm+J,GACzB,IAAIC,GAAa,EAiCjB,OA9BAp+J,EAAK9I,SAAQE,IACX,IAAK2I,OAAOyF,UAAUC,eAAeC,KAAKw4J,EAAM9mK,GAG9C,YAFAgnK,GAAa,GAKf,GApBmBC,EAoBAH,EAAK9mK,GApBGknK,EAoBGH,EAAK/mK,IAnBvBsL,MAAMC,QAAQ07J,GAAU,eAAiBA,KACzC37J,MAAMC,QAAQ27J,GAAU,eAAiBA,GAqBnD,YAFAF,GAAa,GArBGG,IAACF,EAAQC,EA2B3B,MAAME,EAAkBnnK,GAA2B,iBAAVA,GAAgC,OAAVA,GAAmBqL,MAAMC,QAAQtL,GAEvEA,MAIrBmnK,EAAgBN,EAAK9mK,KAASonK,EAAgBL,EAAK/mK,MAJ9BC,EAMD6mK,EAAK9mK,GANMsL,MAAMC,QAAQtL,IAA2B,IAAjBA,EAAM6B,QAC1C,iBAAV7B,GAAgC,OAAVA,GAAgD,IAA9B0I,OAAOC,KAAK3I,GAAO6B,QAMhE+kK,EAAkBC,EAAK9mK,GAAM+mK,EAAK/mK,MACpCgnK,GAAa,GAGnB,IAGKA,CAAU,EAInB,MAC4B,iBAAnBj+D,GACe,OAAnBA,GAC8B,iBAAvB69D,GACgB,OAAvBA,GAKEC,EAAkB99D,EAAgB69D,EAAmB,ECpCvD,SAAUS,GAAqBtnK,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBAChD,MAAMotC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MAAMr3G,QAAgBo3G,EAAAA,GAAAA,IAAOC,EAAAA,KAE7B,IAAIhyE,EACAn+C,EACJ,MAAM2mF,EAAc14E,EACd5a,EAAKszF,EAAYv4E,IAAI,MAErB+2I,EAAc,CAClB/sB,QAASzxC,EAAYv4E,IAAI,UACzBiqH,QAAS1xC,EAAYv4E,IAAI,UACzBkqH,QAAS3xC,EAAYv4E,IAAI,UACzBmqH,QAAS5xC,EAAYv4E,IAAI,UACzBoqH,QAAS7xC,EAAYv4E,IAAI,UACzBqqH,QAAS9xC,EAAYv4E,IAAI,UACzB2wE,YAAa4H,EAAYv4E,IAAI,eAC7B0K,QAAS,CACP8gB,SAAU9gB,EAAQ1K,IAAI,YACtBk9G,YAAaxyG,EAAQ1K,IAAI,eACzBq9G,cAAe3yG,EAAQ1K,IAAI,iBAC3Bu9G,iBAAkB7yG,EAAQ1K,IAAI,oBAC9Bm3C,mBAAoBzsC,EAAQ1K,IAAI,sBAChCstD,WAAY5iD,EAAQ1K,IAAI,gBAIxB/a,GACF2M,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6BO,EAAI8xJ,GACrDhnG,EAAO7Z,EAAKl2B,IAAI,0BAEhBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6BqyJ,GACjDhnG,EAAO7Z,EAAKl2B,IAAI,+BAGZ2hH,EAAAA,GAAAA,IAAIyM,GAAAA,IAA4Ch0H,EAAAA,EAAAA,QAAOxI,WACvD+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqCt3E,UACzC+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,OACA44B,SAAS,IAOb,CALE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAmC/3E,UACvCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC0oE,SAAS,IAEb,CACF,CAjDkD,EAiDjD,CAEM,SAAUx4E,GAAuBi5E,GAAA,IAAC,QAAEvpE,GAASupE,EAAA,mBAClD,MAAMlzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MACM98H,EADc4a,EACGG,IAAI,MAErBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA6BO,SAEjD08H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuCt3E,UAC3C+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,wBACf2oE,SAAS,IAOb,CALE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAqC/3E,UACzCwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC0oE,SAAS,IAEb,CACF,CApBoD,EAoBnD,CAEM,SAAU54E,KACf,IACE,MAAM6B,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA+B,CAAC,SAEpDi9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyCt3E,GAOrD,CANE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuC/3E,UAE3CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC0oE,SAAS,IAEb,CACF,CAEO,SAAUnnF,WACTmgI,EAAAA,GAAAA,IAAIyM,GAAAA,GAA4C,aAChDzM,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJy4C,EAAAA,GAAAA,IAAIz4C,GAAAA,KACZ,CAEO,SAAU3nF,GAAwB8nF,GAAA,IAAC,QAAExpE,GAASwpE,EAAA,mBACnD,IACE,MAAMpkF,EAAK4a,EAAQG,IAAI,MACjBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA4BO,GAElDyqK,GAAsBxB,GAAAA,OAAsBt8J,EAAO8Y,gBAC/Ci3G,EAAAA,GAAAA,IAAIyM,GAAAA,GAA4CvuH,EAAQqf,IAAI,YAAY,WACxEyiG,EAAAA,GAAAA,IAAIz4C,GAAAA,cAEJy4C,EAAAA,GAAAA,IAAIyM,GAAAA,GAA4CvuH,UAChD8hH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAoCt3E,UACxC+vH,EAAAA,GAAAA,IAAIz4C,GAAAA,cAG0B44C,EAAAA,GAAAA,IAAOC,EAAAA,cAGrCJ,EAAAA,GAAAA,IAAImJ,GAAAA,MAMd,CAJE,MAAO35H,SACDwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC0oE,SAAS,IAEb,CACF,CAxBqD,EAwBpD,CAEM,SAAUv4E,GAAyBk5E,GAAA,IAAC,QAAEzpE,GAASypE,EAAA,mBACpD,MAAMpzC,QAAa4rF,EAAAA,GAAAA,IAAOC,EAAAA,KAE1B,IACE,MACM98H,EADc4a,EACGG,IAAI,MAErBpO,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAA+BO,SAEnD08H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAyCt3E,UAC7C+vH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC8vC,KAAM7Z,EAAKl2B,IAAI,0BACf2oE,SAAS,IAOb,CALE,MAAOx3E,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAuC/3E,UAC3CwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAA0B,CAClC0oE,SAAS,IAEb,CACF,CApBsD,EAoBrD,CAEM,SAAUrnF,WACTqgI,EAAAA,GAAAA,IAAIyM,GAAAA,GAA4C,aAChDzM,EAAAA,GAAAA,IAAIyM,GAAAA,GAA+CiiC,GAAAA,IAAsB,+BACzE1uC,EAAAA,GAAAA,IAAIz4C,GAAAA,YACJilD,EAAAA,GAAAA,IAAKjlD,GAAAA,IAEX,MAEMonF,SAFsBxuC,EAAAA,GAAAA,IAAOC,EAAAA,MAEO/hH,IAAI,SAASyH,MAAK8oJ,IAA6B,IAAvBA,EAAGvwJ,IAAI,cAErEswJ,UACI3uC,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAiConF,IAE/C,CAEO,SAAUE,WACTrtC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAuC5nF,GACzD,CAEO,SAAUmvK,WACTttC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAoCknF,GACtD,CAEO,SAAUM,WACTvtC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwCn5E,GAC1D,CAEO,SAAU4gK,WACTxtC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAsC/4E,GACxD,CAEO,SAAUygK,WACTztC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkC3nF,GACpD,CAEO,SAAUsvK,WACT1tC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAkC1nF,GACpD,CAEO,SAAUsvK,WACT3tC,EAAAA,GAAAA,IAAUj6C,GAAAA,GAAwC94E,GAC1D,CAEe,SAAU2gK,WACjB/+J,EAAAA,GAAAA,IAAI,CACRw+J,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEJ,CChNe,SAAUE,WACjBh/J,EAAAA,GAAAA,IAAI,CACRmmJ,KACAC,KACAI,KACAiX,KACAsB,MAEJ,CCRO,SAAU55E,GAAUruF,GAAA,IAAC,QAAE+W,GAAS/W,EAAA,mBACrC,IACE,IAAIkxB,EAAOna,EAAQma,OAAQ5f,EAAAA,EAAAA,QAAO,IAElC,MAAM1L,QAAeozH,EAAAA,GAAAA,IAAOC,EAAAA,KAE5B/nG,EAAOA,EAAKtU,KAAIyU,IAAK,CACnBl1B,GAAIk1B,EAAEna,IAAI,MACV85H,QAAS3/G,EAAEna,IAAI,WACf8vC,SAAU31B,EAAEna,IAAI,YAChBgwC,aAAc71B,EAAEna,IAAI,eACpBivB,YAAa,CACX2wD,QAAS,CACP9/E,KAAMqa,EAAEzX,MAAM,CAAC,cAAe,UAAW,UAE3C5C,KAAMqa,EAAEzX,MAAM,CAAC,cAAe,UAEhCuuJ,YAAa,CACXzoI,MAAOrO,EAAEzX,MAAM,CAAC,aAAc,UAC9BgmB,aAAcvO,EAAEzX,MAAM,CAAC,aAAc,sBAErCzI,OAEJ,MAAMxV,EAAO,IAAMob,GAAW,CAAC,EAAInR,SAAQsrB,QAErCpoB,QAAeyF,EAAAA,GAAAA,IAAK3S,GAAAA,GAAuBD,SAE3Ck9H,EAAAA,GAAAA,IAAIz4C,GAAAA,GAA0Bt3E,GAKtC,CAJE,MAAOT,SACDwwH,EAAAA,GAAAA,IAAIz4C,GAAAA,GAAwB/3E,UAC5BwwH,EAAAA,GAAAA,IAAI1hH,EAAAA,YACJ0hH,EAAAA,GAAAA,IAAI1hH,EAAAA,GAAqB9O,GACjC,CACF,CAjCuC,EAiCtC,CAEM,SAAU+/J,WACT3tC,EAAAA,GAAAA,IAAWr6C,GAAAA,GAAyBiO,GAC5C,CAEe,SAAU87D,WACjBjhJ,EAAAA,GAAAA,IAAI,CACRk/J,MAEJ,CCPe,SAAUC,WACjBn/J,EAAAA,GAAAA,IAAI,CACRo/J,KACAC,KACA/sC,KACAgtC,KACAC,KACAl8B,KACAm8B,KACAC,KACAC,KACAC,KACAj1B,KACAoC,KACA8yB,KACA9xB,KACA+xB,KACAC,KACAjqB,KACAe,KACA5M,KACA+1B,KACAC,KACAC,KACAC,KACAnB,KACA9d,KACA37C,KACAu8C,KACA4b,KACAhZ,KACAgC,KACA6J,KACAkF,KACA2K,KACAhG,KACApE,KACAgD,KACAc,KACAkB,KACAa,KACAoD,KACAoB,MAEJ,CCpFO,MAAMC,GAAkBC,GAAUC,GAAQ1iF,IAC/C,IACE,OAAO0iF,EAAK1iF,EAOd,CANE,MAAO1+E,GAKP,OAJKA,EAAMksG,UAAalsG,EAAMksG,UAA0C,MAA9BlsG,EAAMksG,SAASf,cACvDsmB,EAAAA,EAAAA,GAAazxH,GAGTA,CACR,GAGWqhK,GAAeF,GAAUC,GAAQ1iF,IAC5C,IACE,IAAI48E,EAAW,gBACXgG,EAAM5iF,EAAO3oF,KACjB,MAAM8gJ,EAAQn4D,EAAO3oF,KAAK4wB,MAAM,KAEf,OAAbkwH,EAAM,KACJA,EAAMn9I,OAAS,IACjB4hK,EAAW,GAAGA,KAAYzkB,EAAMpqG,MAAM,GAAI,GAAGjE,KAAK,OAClD84H,EAAMzqB,EAAMA,EAAMn9I,OAAS,IAG7B00I,GAAS,CACPktB,WACA58E,OAAQ4iF,EACR/4H,MAAkC,iBAAnBm2C,EAAOhwE,QAAuBgwE,EAAOhwE,aAAU/U,IAGlD,CAAhB,MAAOqG,GAAS,CAGlB,OAAOohK,EAAK1iF,EAAO,EAGR6iF,GAAmBnuK,GAASguK,GAAQ1iF,IAC3CA,EAAO8iF,WAAkC7nK,IAA1B+kF,EAAO8iF,KAAKC,WAC7BruK,EAAMsuK,UAASt/M,EAAAA,EAAAA,IAAcs8H,EAAO8iF,KAAKC,YAGpCL,EAAK1iF,I,IC3Cd,IAAeijF,E,SAAAA,MCWf,MAAM,mBAAEC,GAAkB,iBAAEC,GAAgB,cAAEh0C,KAAkBi0C,EAAAA,EAAAA,IAA0B,CACxFh5C,QAAOA,KAGHi5C,IAAiBC,EAAAA,EAAAA,IAAqB,CAC1CC,QAASxwC,EAAAA,IAGX,IAAIywC,IAAgB,EAEL,SAASC,KAAkC,IAAnB5zJ,EAAY9U,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrD,MAAM2oK,GAAWC,EAAAA,EAAAA,KACfC,EAAAA,EAAAA,IACEP,GACAF,GACAX,GACAG,GACAE,KAIEnuK,GAAQmvK,EAAAA,EAAAA,IACZC,GAAY30C,IACZt/G,EACA6zJ,GAiBF,OAdAhvK,EAAMqvK,WAAU,KACd,IAAKP,GAAe,CAClB,MAAMQ,GAAgBt9I,EAAAA,EAAAA,IAAgBhyB,EAAMuvK,aACR,eAAlBD,GAAoD,SAAlBA,KAGlDt0B,KACA8zB,IAAgB,EAEpB,KAGFH,GAAea,IAAI5C,IAEZ,CACL5sK,QACA01H,QAAS84C,GAAmBxuK,GAEhC,C,oFCxDA,MAAM,MAAEA,EAAK,QAAE01H,IAAYq5C,EAAAA,EAAAA,WAE3B,K,sKCEA,MAAMU,GAAYvpJ,EAAAA,EAAAA,IAChBzZ,GAASA,EAAM0pC,QAAQh4B,MAAM,CAAC,SAAU,iBAAkBtI,EAAAA,EAAAA,QAAO,MACjEoxD,IAAeA,IAAcpxD,EAAAA,EAAAA,QAAO,KAAKsR,QAAO,CAACC,EAAKjE,IAAMiE,EAAI8gB,MAAM,CACpE,CAAC/kB,EAAE1H,IAAI,QAAS0H,EAChB,EAACf,EAAAA,EAAAA,GAAUe,EAAE1H,IAAI,SAAU0H,MACzBtN,EAAAA,EAAAA,QAAO,CAAC,MAGD65J,EAAalrK,KAASA,GAAOirK,EAAUzvK,EAAAA,EAAAA,YAAkBk8B,IAAI13B,GAE7D2tF,EAAgB3tF,IAAO4d,EAAAA,EAAAA,GAAU,GAAG5d,KAAOkP,WAAW,oBAEtDi8J,EAAkBnrK,GAAOirK,EAAUzvK,EAAAA,EAAAA,YAAkBme,MAAM,CAAC3Z,EAAK,S,2TCZ9E,MAEMorK,EAAaA,CAACC,EAAS/2D,EAAUr7B,EAASqyF,KAC9C,IAAIljK,EAAQ,IAAIsB,MAAM,eAAe2hK,EAAQE,UAAUF,EAAQnkH,wBAM/D,GAJA9+C,EAAMksG,SAAW,CACfr7B,QAAS,uDAGPq7B,EAAU,CACZlsG,EAAQ,IAAIsB,MAAM,mBAAmB2hK,EAAQE,UAAUF,EAAQnkH,QAAQotD,EAAShuB,WAAWguB,EAASk3D,eACpG,MAAMC,EAAkB,CAAC,EACzBn3D,EAASo3D,QAAQ5rK,SAAQ,CAACG,EAAO8W,KAC/B00J,EAAgB10J,GAAQ9W,CAAK,IAG/BmI,EAAMksG,SAAW,CACff,WAAYe,EAAShuB,OACrBolF,QAASD,EACTxyF,UAEJ,CAQA,OANIqyF,IACFljK,EAAMujK,MAAQL,GAGhBljK,EAAMijK,QAAUA,EAETjjK,CAAK,EAGRwjK,EAAeA,CAACP,EAAS/2D,EAAUg3D,KACvC,IAAKD,EAAQr0J,OAAO60J,SAAW,GAjCd,EAkCf,OAAO,IAAI7iK,SAAQ8D,IACjB,MAAMu5E,EAAY,IAAKglF,EAAQr0J,OAAQ60J,SAAUR,EAAQr0J,OAAO60J,SAAW,GAAK,GAChFlgK,YAAW,IAAMmB,EAAQg/J,EAAUT,EAAQE,OAAQF,EAAQnkH,IAAKmkH,EAAQK,QAASrlF,EAAWglF,EAAQU,kBAAkB,IAAK,IAI/H,MAAMX,EAAWC,EAAS/2D,EAAU,GAAIg3D,EAAW,EAG/CU,EAAeX,GAAWjjK,GAASwjK,EAAaP,EAAS,KAAMjjK,EAAMujK,OAErEM,EAAcA,CAACZ,EAASC,IAAeh3D,IACA,CACzC,MAAMr1B,EAAaq1B,EAASo3D,QAAQz0J,IAAI,iBAEpCgoE,GACFzjF,EAAAA,EAAAA,UAAe3vC,EAAAA,EAAAA,IAAgBozH,GAEnC,CAEA,OAAIq1B,EAAShuB,QAAU,KAAOguB,EAAShuB,OAAS,IACvCguB,EAGe,MAApBA,EAAShuB,SAAmB+kF,EAAQr0J,OAAO60J,SAAW,IA1DzC,EA2DRD,EAAaP,EAAS/2D,EAAUg3D,GAGlCh3D,EAASmY,OAAOpkH,MAAK1I,IAC1B,MAAMyrK,EAAWC,EAAS/2D,EAAU30G,EAAKs5E,QAASqyF,EAAW,GAC7D,EAGEY,EAAY53D,GAAYA,EAASmY,OACjC0/C,EAAY73D,GAAYA,EAASsiB,OAC1Bw1C,EAAW93D,GAAYrZ,IAAkBqZ,GAEzC+3D,EAAc,CACzBC,OAAQ,mBACR,eAAgB,oBAGLC,EAAiB,IAAKF,EAAa,cAActqG,EAAAA,EAAAA,OAAc,kBAAmB,aAElFyqG,EAAc,CACzBF,OAAQ,oBAGGR,EAAY,SAACP,EAAQrkH,GAAsE,IAAjEwkH,EAAO7pK,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG0qK,EAAgBv1J,EAAMnV,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGkqK,IAAclqK,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC1F,MAAMypK,GAAc,IAAI5hK,OAASiiK,MAC3B1jK,EAAQzM,EAAAA,EAAAA,WACRixK,EAAa,IAAKf,GAExB,GAAIK,EAAgB,CAClB,MAAM/yF,GAAchsD,EAAAA,EAAAA,KAAe/kB,GAE/B+wE,IACFyzF,EAAW,kBAAoBzzF,GAGjC,MAAMl9E,GAAck0B,EAAAA,EAAAA,KAAe/nB,GAE/B+wE,IACFyzF,EAAW,kBAAoB3wK,EAEnC,CAEA,MAAMuvK,EAAU,CACdnkH,MACAqkH,SACAG,QAASe,EACTz1J,SACA+0J,kBAGF,OAAOW,IACLxlH,EAAK,IAAKlwC,EAAQu0J,SAAQG,QAASe,IAElCpkK,KAAK4jK,EAAYZ,EAASC,GAAaU,EAAaX,GACzD,EAEasB,EAAgB,SAACpB,EAAQrkH,GAAG,IAAEwkH,EAAO7pK,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG0qK,EAAgBv1J,EAAMnV,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGkqK,IAAclqK,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAAO,OACrGiqK,EAAUP,EAAQrkH,EAAKwkH,EAAS10J,EAAQ+0J,GACrC1jK,KAAK6jK,EAAU,EAGPU,EAAgB,SAACrB,EAAQrkH,GAAG,IAAEwkH,EAAO7pK,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG0qK,EAAgBv1J,EAAMnV,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGkqK,IAAclqK,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAAO,OACrGiqK,EAAUP,EAAQrkH,EAAKwkH,EAAS10J,EAAQ+0J,GACrC1jK,KAAK8jK,EAAU,EAGPl1J,EAAMiwC,GAAOylH,EAAc,MAAOzlH,EAAKqlH,GAEvC9/D,EAAO,SAACvlD,EAAKxrD,GAA0B,IAApBugJ,EAAMp6I,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,OACvC,MAAe,SAAXo6I,EACK0wB,EAAc,OAAQzlH,EAAKqlH,EAAgB,CAChD7wK,KAAMkjI,KAAKC,UAAUnjI,KAIV,SAAXugJ,EACK2wB,EAAc,OAAQ1lH,EAAKqlH,EAAgB,CAChD7wK,KAAMkjI,KAAKC,UAAUnjI,KAIlBowK,EAAU,OAAQ5kH,EAAKqlH,EAAgB,CAC5C7wK,KAAMkjI,KAAKC,UAAUnjI,IAEzB,EAEamxK,EAAQA,CAAC3lH,EAAKxrD,IAASixK,EAAc,OAAQzlH,EAAKqlH,EAAgB,CAC7E7wK,KAAMkjI,KAAKC,UAAU,IAAMnjI,GAAQ,CAAC,EAAI0xI,QAAS,YAG7C0/B,EAAe,CAAEpxK,KAAMkjI,KAAKC,UAAU,CAAEuO,QAAS,YAC1C2/B,EAAU7lH,GAAOylH,EAAc,OAAQzlH,EAAKqlH,EAAgBO,GAE5DE,EAAOA,CAAC9lH,EAAKtnD,IAAa+sK,EAAc,OAAQzlH,EAAKslH,EAAa,CAC7E9wK,KAAMkE,G,izBC1HR,MAAMqtK,EAAe5yH,GACfA,EAAMpjC,IAAI,QAAQ/H,WAAW,SAAWmrC,EAAMpjC,IAAI,QAAQ/H,WAAW,SAChE,GAGF,OAEHg+J,GAAwB77J,EAAAA,EAAAA,QAAO,CACnCuqF,SAAU,aACVkF,kBAAmB,sBACnBpF,UAAW,eAGPyxE,EAAgB9yH,GAASA,EAAMpjC,IAAI,eAAiB,OAEpDm2J,EAA0B,CAAC,WAAY,aAAc,oBAAqB,uBACnEC,EAAmBrtK,IAAiD,IAA1CotK,EAAwB19J,QAAQ1P,GAEjEstK,EAA2B,CAAC,YAAa,cAClCC,EAAoBvtK,IAAkD,IAA3CstK,EAAyB59J,QAAQ1P,GAEnEwtK,EAA+B,CAAC5+G,EAAAA,GAAAA,IAAgBA,EAAAA,GAAAA,IAAgBA,EAAAA,GAAAA,QAGhE6+G,EAA+B,CACnC7+G,EAAAA,GAAAA,UACAA,EAAAA,GAAAA,MACAA,EAAAA,GAAAA,UACAA,EAAAA,GAAAA,YACAA,EAAAA,GAAAA,gBACAA,EAAAA,GAAAA,mBACAA,EAAAA,GAAAA,iBACAA,EAAAA,GAAAA,4BACAA,EAAAA,GAAAA,oCACAA,EAAAA,GAAAA,YAEI8+G,EAA+B,CACnC,0BAEIC,EAAoB3tK,IAAsD,IAA/CytK,EAA6B/9J,QAAQ1P,GAChE4tK,EAAoB5tK,IAAsD,IAA/C0tK,EAA6Bh+J,QAAQ1P,GAEhE6tK,EAAwB,CAC5Bj/G,EAAAA,GAAAA,UACAA,EAAAA,GAAAA,YACAA,EAAAA,GAAAA,gBACAA,EAAAA,GAAAA,iBACAA,EAAAA,GAAAA,YAEIk/G,EAAa9tK,IAA+C,IAAxC6tK,EAAsBn+J,QAAQ1P,GAElD+tK,EAAyB,CAACn/G,EAAAA,GAAAA,UAAsBA,EAAAA,GAAAA,SAGhDo/G,EAAsB,CAC1B,WACA,wBACA,0BAEW//E,EAAa5zC,IAAmE,IAA1D2zH,EAAoBt+J,QAAQ2qC,EAAMpjC,IAAI,eAEnEg3J,EAA4B,CAChCr/G,EAAAA,GAAAA,4BACAA,EAAAA,GAAAA,qCAEWpS,EAA6BnC,IAAyE,IAAhE4zH,EAA0Bv+J,QAAQ2qC,EAAMpjC,IAAI,eAElFi3J,EAAiB,CAC5BC,mBAAoB,EACpBC,cAAe,EACfC,SAAU,EACVC,QAAS,EACTC,UAAW,EACXC,eAAgB,EAChBC,oBAAqB,EACrBC,QAAS,MAGEC,EAAkBT,EAEzBU,GAAiB99J,EAAAA,EAAAA,KAAI,CACzB89C,EAAAA,GAAAA,UACAA,EAAAA,GAAAA,YACAA,EAAAA,GAAAA,gBACAA,EAAAA,GAAAA,mBACAA,EAAAA,GAAAA,iBACAA,EAAAA,GAAAA,4BACAA,EAAAA,GAAAA,oCACAA,EAAAA,GAAAA,UACAA,EAAAA,GAAAA,aAGW4vE,EAAcnkF,GAASu0H,EAAel3I,IAAI2iB,EAAMpjC,IAAI,SAEpD43J,EAAmBx0H,GAASA,EAAMpjC,IAAI,UAAY23C,EAAAA,GAAAA,UAEzDoC,EAAWA,CAACrgB,EAAOxD,IAASA,EAAKl2B,IAAIquB,IAAYqL,GAAS,IAAKprC,YAE/DupK,EAAqBA,CAACn+H,EAAO0J,EAAOlN,KACxC,MAAM4hI,EAAoB10H,EAAM1gC,MAAM,CAAC,OAAQ,sBAE/C,OAAKo1J,GAAqB9gF,EAAW5zC,GAC5B1J,EAGF,GAAGxD,EAAKl2B,IAAI,GAAGquB,IAAWypI,GAAqB,cAAe,CAAEC,QAASr+H,KAAU,EAGtFs+H,EAAaC,GAAcrkJ,IAAOqkJ,GACrChqI,OAAO,KAMJiqI,EAAuBA,CAAC90H,EAAOlN,KACnC,IAAIwD,EAAQqgB,EAAS3W,EAAMpjC,IAAI,cAAek2B,GAM9C,OAJIiiI,EAAAA,EAAAA,GAAY9pI,IAAW+U,EAAMpjC,IAAI,kBACnC05B,GAAQ0+H,EAAAA,EAAAA,GAAiB/pI,IAAW+U,EAAMpjC,IAAI,iBAGzC63J,EAAmBn+H,EAAO0J,EAAOlN,EAAK,EAGzCmiI,EAAuBA,CAACj1H,EAAOlN,KACnC,IAAIwD,EAAQqgB,EAAS3W,EAAMpjC,IAAI,cAAek2B,GAE9C,OAAKkN,EAAMpjC,IAAI,gBAIXm4J,EAAAA,EAAAA,GAAY9pI,IAAW+U,EAAMpjC,IAAI,kBACnC05B,GAAQ0+H,EAAAA,EAAAA,GAAiB/pI,IAAW+U,EAAMpjC,IAAI,kBAG5Ci0J,EAAAA,EAAAA,IAAW5lI,IAAW+U,EAAMpjC,IAAI,kBAClC05B,GAAQw6H,EAAAA,EAAAA,IAAgB9wH,EAAMpjC,IAAI,gBAG7B05B,GAXEA,CAWG,EAGR4+H,EAAwBA,CAACl1H,EAAOlN,KACpC,IAAIwD,EAAQqgB,EAAS3W,EAAMpjC,IAAI,eAAgBk2B,GAE/C,OAAKkN,EAAMpjC,IAAI,iBAIXi0J,EAAAA,EAAAA,IAAW5lI,IAAW+U,EAAMpjC,IAAI,mBAClC05B,GAAQw6H,EAAAA,EAAAA,IAAgB9wH,EAAMpjC,IAAI,iBAG7B05B,GAPEA,CAOG,EAGD6+H,EAAW,SAACn1H,EAAOlN,GAAsB,IAAhBsiI,EAAM5tK,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAC7C,IAAI06C,EAAAA,EAAAA,IAAyBlC,IAAUA,EAAMpjC,IAAI,UAAY23C,EAAAA,GAAAA,4BAC3D6gH,EAAO3mK,KAAKqkC,EAAKl2B,IAAI,mBAChB,GAAIojC,EAAMpjC,IAAI,UAAY23C,EAAAA,GAAAA,oCAC/B6gH,EAAO3mK,KAAKqkC,EAAKl2B,IAAI,uBAChB,GAAIojC,EAAMpjC,IAAI,aACnB,GAAIojC,EAAMpjC,IAAI,aAAa/H,WAAW,kBAAmB,CACvD,MAAOswB,EAAO44F,GAAQ/9E,EAAMpjC,IAAI,aAAaoX,QAAQ,kBAAmB,IAAIU,MAAM,KAClF0gJ,EAAO3mK,KAAKqkC,EAAKl2B,IAAI,sBAAuB,CAAEuoB,QAAO44F,KAAMjrF,EAAKl2B,IAAImhH,KACtE,MACEq3C,EAAO3mK,KAAKqkC,EAAKl2B,IAAIojC,EAAMpjC,IAAI,oBAExBojC,EAAMpjC,IAAI,aAAeojC,EAAMpjC,IAAI,WAC5Cw4J,EAAO3mK,KAAK,GAAGmmK,EAAW50H,EAAMpjC,IAAI,kBAAkBg4J,EAAW50H,EAAMpjC,IAAI,cAG7E,OAAOw4J,CACT,EAEa1gH,EAAqB,SAAC1U,EAAOlN,GAA2B,IAArBuhB,IAAS7sD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACvD,IAAkB,IAAd6sD,EAAqB,CACvB,MAAM+gH,EAAS,CAACp1H,EAAMpjC,IAAI,UAM1B,OAJIojC,EAAM1gC,MAAM,CAAC,OAAQ,oBACvB61J,EAASn1H,EAAOlN,EAAMsiI,GAGjBA,EAAOxgK,QAAOy5E,GAAKA,IAAG93C,KAAK,MACpC,CAEA,IAAIqM,EAAAA,EAAAA,IAAa5C,KAAUsC,EAAAA,EAAAA,IAAYtC,KAAUuC,EAAAA,EAAAA,IAAsBvC,GACrE,MAAO,GAGT,MAAMo1H,EAAS,GAEf,KAAKtzH,EAAAA,EAAAA,IAA0B9B,GAAQ,CAKrC,IAJKoC,EAAAA,EAAAA,IAAyBpC,IAC5Bo1H,EAAO3mK,KAAKqkC,EAAKl2B,IAAIojC,EAAMpjC,IAAI,iBAG7BwlC,EAAAA,EAAAA,IAAyBpC,GAAQ,CACnC,IAAIk1C,EAAWl1C,EAAM1gC,MAAM,CAAC,OAAQ,oBAAqB,aAEzD,GAAI41E,EAAU,CACZ,MAAOpxF,KAASuxK,GAAQngF,EAASxgE,MAAM,OACvC,IAAIgiC,EAAa5jB,EAAKl2B,IAAIojC,EAAMpjC,IAAI,eAEhCy4J,EAAK5tK,SACPivD,EAAaA,EAAW1iC,QAAQ,WAAYlwB,GAC5CoxF,EAAWmgF,EAAK9+H,KAAK,QAGvB6+H,EAAO3mK,KAAKioD,GACZ0+G,EAAO3mK,KAAKymF,EACd,CACF,EAEInzC,EAAAA,EAAAA,IAAuB/B,IACzBo1H,EAAO3mK,KAAKuxC,EAAM1gC,MAAM,CAAC,OAAQ,kBAAmB,eAGlD4iC,EAAAA,EAAAA,IAAyBlC,IAC3Bo1H,EAAO3mK,KAAKuxC,EAAM1gC,MAAM,CAAC,OAAQ,oBAAqB,qBAE1D,CAEA,GAAIg0J,EAAkBtzH,EAAMpjC,IAAI,UAAY02J,EAAkBtzH,EAAMpjC,IAAI,eAAgB,CAGtF,GAFAw4J,EAAO3mK,KAAKgmK,EAAmBQ,EAAqBj1H,EAAOlN,GAAOkN,EAAOlN,IAErE2gI,EAAWzzH,EAAMpjC,IAAI,SAAU,CACjC,MAAM04J,EAAexiI,EAAKl2B,IAAI,kBAAmBojC,EAAMpjC,IAAI,SAAU,KAAOg2J,EAAa5yH,MACzFo1H,EAAO3mK,KAAK,GAAGqkC,EAAKl2B,IAAI,eAAe04J,IACzC,CAEA,OAAOF,EAAOxgK,QAAOy5E,GAAKA,IAAG93C,KAAK,MACpC,CAEA,OAAIg9H,EAAkBvzH,EAAMpjC,IAAI,eACvBk4J,EAAqB90H,EAAOlN,IAGrCsiI,EAAO3mK,KAAKwmK,EAAqBj1H,EAAOlN,IAEpCkN,EAAMpjC,IAAI,iBACqB,kBAA7BojC,EAAMpjC,IAAI,eACZw4J,EAAO3mK,KAAKqkC,EAAKl2B,IAAI,kBAErBw4J,EAAO3mK,KAAKymK,EAAsBl1H,EAAOlN,KAIzCkN,EAAMpjC,IAAI,cACZw4J,EAAO3mK,KAAKqmK,EAAqB90H,EAAOlN,IAExCsiI,EAAO3mK,KAAKqmK,EAAqB90H,EAAMlkB,IAAI,aAAc,QAASgX,IAG7DsiI,EAAOxgK,QAAOy5E,GAAKA,IAAG93C,KAAK,OACpC,EAEaqe,EAAwB,SAAC5U,EAAOlN,GAA2B,IAArBuhB,IAAS7sD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC1D,IAAkB,IAAd6sD,EAAqB,CACvB,MAAM+gH,EAAS,CAACp1H,EAAMpjC,IAAI,aAM1B,OAJIojC,EAAM1gC,MAAM,CAAC,OAAQ,uBACvB61J,EAASn1H,EAAOlN,EAAMsiI,GAGjBA,EAAOxgK,QAAOy5E,GAAKA,IAAG93C,KAAK,MACpC,CAEA,IAAIqM,EAAAA,EAAAA,IAAa5C,KAAUsC,EAAAA,EAAAA,IAAYtC,KAAUuC,EAAAA,EAAAA,IAAsBvC,GACrE,MAAO,GAGT,MAAMo1H,EAAS,GAgBf,OAdIp1H,EAAM1gC,MAAM,CAAC,cAAe,gBAC9B81J,EAAO3mK,KAAKqkC,EAAKl2B,IAAI,UAAUojC,EAAM1gC,MAAM,CAAC,cAAe,mBAGzD0gC,EAAM1gC,MAAM,CAAC,cAAe,WAC1B0gC,EAAMpjC,IAAI,6BAA+BojC,EAAMpjC,IAAI,4BAA4B+U,KAAO,EACxFyjJ,EAAO3mK,KAAKqkC,EAAKl2B,IAAI,eAAgB,CAAEuoB,MAAO6a,EAAMpjC,IAAI,4BAA4B+U,KAAO,KAE3FyjJ,EAAO3mK,KAAKqkC,EAAKl2B,IAAIojC,EAAM1gC,MAAM,CAAC,cAAe,YAIrD61J,EAASn1H,EAAOlN,EAAMsiI,GAEfA,EAAO7+H,KAAK,MACrB,EAEag/H,EAA0BA,CAACjwK,EAAM06C,IACxC4zC,EAAW5zC,GACN,WAGLA,EAAMpjC,IAAI,UAAY23C,EAAAA,GAAAA,KACjB,OAGF,GAAGvU,EAAMpjC,IAAI,iBAAiB7K,EAAAA,IAAAA,MAAUzM,GAAQA,EAAKsX,IAAI,MAAQtX,EAAKzD,KAGlE2zK,EAAgCA,CAAClwK,EAAM06C,KAClD,MAAMrjC,EAASqjC,EAAM1gC,MAAM,CAAC,OAAQ,gBAEpC,GAAI3C,EAAQ,CACV,MAAMkoC,EAAQloC,EAAO0H,MAAKwyC,GAAQA,EAAKj6C,IAAI,SAAW24J,EAAwBjwK,EAAM06C,KAEpF,GAAI6E,EACF,OAAOA,EAAMjoC,IAAI,QAErB,CAEA,OAAO,IAAI,EAGA64J,EAA2BA,CAACnwK,EAAM06C,IAAU,GAAGA,EAAMpjC,IAAI,kBAAkB7K,EAAAA,IAAAA,MAAUzM,GAAQA,EAAKsX,IAAI,MAAQtX,EAAKzD,KAEnH6zK,EAAiCA,CAACpwK,EAAM06C,KACnD,MAAMrjC,EAASqjC,EAAM1gC,MAAM,CAAC,OAAQ,gBAEpC,GAAI3C,EAAQ,CACV,MAAMkoC,EAAQloC,EAAO0H,MAAKwyC,GAAQA,EAAKj6C,IAAI,SAAW64J,EAAyBnwK,EAAM06C,KAErF,GAAI6E,EACF,OAAOA,EAAMjoC,IAAI,QAErB,CAEA,OAAO,IAAI,EAGP+4J,EAAaA,CAAC58J,EAAQmuH,EAAO0uC,IAAgB78J,EAAOvH,OAAO,QAAQqkK,GAAQD,GAAeC,GAAQ98J,EAAO6D,IAAI,UAAYsqH,IA+BlH4uC,GAAaA,CAACxwK,EAAM06C,EAAO2R,KAEtC,GAAgC,aAA5B3R,EAAMpjC,IAAI,cACZ,OAAItX,GAAQA,EAAK+3B,IAAI,YAAc/3B,EAAKsX,IAAI,UAAU+U,MAIlDrsB,GAAQA,EAAK+3B,IAAI,UAAY/3B,EAAKsX,IAAI,QAAQ+U,KAHzC,KAOFrsB,EAIT,GAAI68C,EAA2BnC,GAC7B,OAAI16C,GAAQA,EAAK+3B,IAAI,WAAa/3B,EAAKsX,IAAI,SAAS+U,KAC3C,KAGFrsB,EAGT,GAAgC,mBAA5B06C,EAAMpjC,IAAI,eACZ,GAAItX,GAAQA,EAAK+3B,IAAI,iBAAmB/3B,EAAKsX,IAAI,eAAe+U,KAC9D,OAAO,UAEJ,GAAgC,mBAA5BquB,EAAMpjC,IAAI,eACnB,GAAItX,GAAQA,EAAKywK,MAAM,CAAC,iBAAkB,qBAAuBzwK,EAAKga,MAAM,CAAC,iBAAkB,mBAAmBqS,KAChH,OAAO,UAEJ,GAAgC,oBAA5BquB,EAAMpjC,IAAI,eACftX,GAAQA,EAAK+3B,IAAI,kBAAoB/3B,EAAKsX,IAAI,gBAAgB+U,KAChE,OAAO,KAIX,IAAIqkJ,EAAc1wK,EAElB,MAAM2wK,EAAYtkH,EAAO/0C,IAAI,UAC1Bp9C,QAAO,CAAComC,EAAOD,IAAQA,IACvB4mC,WACA11B,OAEGqwE,EAAU+uF,EAAU,GAE1B,GAAoB,OAAhBD,GAAyBpoJ,EAAAA,KAAAA,OAAYooJ,KAAiBA,EAAYrkJ,KACpE,OAAO,KAIT,IAAK/D,EAAAA,KAAAA,OAAYooJ,GACf,OAAOA,EA7WMrwK,QAkXXq6C,EAAMpjC,IAAI,OAAQ,IAAI/H,WAAW,cAA6E,IAA9D,CAAC,SAAU,aAAaQ,QAAQ2qC,EAAMpjC,IAAI,iBACxFmlC,EAAAA,EAAAA,IAAuB/B,KAAW4zC,EAAW5zC,KAnXpCr6C,EAmXuDq6C,EAAMpjC,IAAI,SAnXjB,IAAzC82J,EAAuBr+J,QAAQ1P,OAqXnDqwK,EAAcA,EAAYx7H,MAAM,EAAGwF,EAAM1gC,MAAM,CAAC,OAAQ,UAAYkvC,EAAAA,KAItEwnH,EAAcA,EAAY1zJ,KAAI4zJ,GAAOA,EAAIp6I,IAAI,aAAco6I,KAE3D,MAAMtgH,EAAci9G,EAAsBj2J,IAAIojC,EAAMpjC,IAAI,eAAgBojC,EAAMpjC,IAAI,gBAC5E65B,EAAaq8H,EAAc9yH,GAGjC,GAAIvJ,GACF,GAAImf,EAAa,CACf,IAAKogH,EAAY12J,MAAM,CAAC,EAAG,QAASs2C,IAClC,OAAO,KAGTogH,EAAcA,EAAY1zJ,KAAI4zJ,GAC5BA,EAAIp6I,IAAI,QAASo6I,EAAI52J,MAAM,CAAC,QAASs2C,IAActtC,QAAO,CAACC,EAAK6sB,IAAM7sB,EAAM6sB,EAAE91B,MAAM,CAAC,QAASm3B,KAAc,KAEhH,MAGE,GAFAu/H,EAAcA,EAAY1zJ,KAAI4zJ,GAAOA,EAAIp6I,IAAI,QAASo6I,EAAI52J,MAAM,CAAC,QAASm3B,OAEtEu/H,EAAYlmK,OAAMomK,IAAQA,EAAIt5J,IAAI,WACpC,OAAO,UAKN,GAAIg5C,EAAa,CACtB,IAAKogH,EAAY12J,MAAM,CAAC,EAAG,QAASs2C,IAClC,OAAO,KAGTogH,EAAcA,EAAY1zJ,KAAI4zJ,GAC5BA,EAAIp6I,IAAI,QAASo6I,EAAI52J,MAAM,CAAC,QAASs2C,IAActtC,QAAO,CAACC,EAAK6sB,IAAM7sB,EAAM6sB,EAAEx4B,IAAI,UAAU,KAEhG,CAGA,IAAKg3E,EAAW5zC,GAAQ,CACtB,MAAMm2H,EAAen2H,EAAM1gC,MAAM,CAAC,OAAQ,iBACpC82J,EAAkBp2H,EAAM1gC,MAAM,CAAC,OAAQ,oBAE7C02J,EAAcA,EAAYx2M,QAAO02M,GACV,mBAAjBC,GACMD,EAAIt5J,IAAI,SAAW,IAAIsU,cAGZ,aAAjBilJ,GACMD,EAAIt5J,IAAI,aAAe,IAAIsU,eAG7BglJ,EAAIt5J,IAAI,WAGG,mBAAjBu5J,GAAyD,SAApBC,IACvCJ,EAAcA,EAAYlnF,UAE9B,CAIEknF,EADEh2H,EAAMpjC,IAAI,UAAY23C,EAAAA,GAAAA,KAAkBvU,EAAMpjC,IAAI,gBAAkBojC,EAAM1gC,MAAM,CAAC,OAAQ,iBAAiB,GAC9F02J,EAAY1zJ,KAAI,CAAC4zJ,EAAK3xI,IAAMoxI,EAAWO,EAAKD,EAAU1xI,EAAI,IAAKixI,EAA8BU,EAAKl2H,MAGvGgzH,EAAiBhzH,EAAMpjC,IAAI,iBAAmBo2J,EAAiBhzH,EAAMpjC,IAAI,eACpEo5J,EAAY1zJ,KAAI4zJ,GAC5BP,EAAWO,EAAKhvF,EAASsuF,EAA8BU,EAAKl2H,KAAUq2H,EAAAA,EAAAA,IA7XjDH,SACYxuK,IAArCwuK,EAAI52J,MAAM,CAAC,QAAS,aAA6B42J,EAAI52J,MAAM,CAAC,QAAS,aAAe42J,EAAI52J,MAAM,CAAC,QAAS,sBA4Xbg3J,CAAmBJ,OAInGhD,EAAkBlzH,EAAMpjC,IAAI,iBAAmBs2J,EAAkBlzH,EAAMpjC,IAAI,eACtEo5J,EAAY1zJ,KACxB4zJ,GAAOP,EAAWO,EAAKhvF,EAASsuF,EAA8BU,EAAKl2H,KAAUq2H,EAAAA,EAAAA,IAAiBH,EAAI52J,MAAM,CAAC,QAAS,kBA5d9F3Z,KAAsD,IAA/CwtK,EAA6B99J,QAAQ1P,GAgezD4wK,CAAkBv2H,EAAMpjC,IAAI,SACvBo5J,EAAY1zJ,KAAI,CAAC4zJ,EAAK3xI,IAAMoxI,EAAWO,EAAKD,EAAU1xI,EAAI0xI,EAAUxuK,QAAS+tK,EAA8BU,EAAKl2H,MAIhHg2H,EAAY1zJ,KAAI4zJ,GAAOP,EAAWO,EAAKhvF,EAASsuF,EAA8BU,EAAKl2H,MAInG,MAAMojC,EAAS4yF,EAAY1zJ,KAAI4zJ,GAAOA,EAAI52J,MAAM,CAAC,QAASs2C,IAAc5+C,EAAAA,EAAAA,QAAO,KAAKsL,KAAI1O,GAAKA,EAAEgJ,IAAI,UAChGghB,SAAQ,GACRR,QACAxmB,SACAp3C,QAAOqiC,GAAMA,IACbgV,OAEG2/J,EAAcpzF,EAAO9gE,KAAI,CAACm0J,EAAIlyI,KAClC,IAAImyI,EAAWhxI,KAAKwrD,MAAM3sD,EAAI0xI,EAAUxuK,QAAU,GAAM,IAExD,OAAIivK,EAAU,IACZA,GAAW,GAEPA,EAAU,GACLC,IAAAA,SAAmBzrK,WAGrByrK,IAAUV,EAAU1xI,EAAI0xI,EAAUxuK,SAASmvK,QAAQF,GAASxrK,YAG9DyrK,IAAUV,EAAU1xI,EAAI0xI,EAAUxuK,SAASovK,OAAOH,GAASxrK,UAAU,IAc9E,OAZA8qK,EAAcA,EAAY1zJ,KAAI4zJ,GAAOA,EAAIp6I,IAAI,QArM5Bg7I,EAAC92H,EAAOk2H,EAAKM,EAAapzF,KAC3C,MAAMxtB,EAAci9G,EAAsBj2J,IAAIojC,EAAMpjC,IAAI,eAAgBojC,EAAMpjC,IAAI,gBAC5E65B,EAAaq8H,EAAc9yH,GAEjC,OAAOk2H,EAAI52J,MAAM,CAAC,QAASs2C,IAAc5+C,EAAAA,EAAAA,QAAO,KAAKsL,KAAIu0C,IACvD,IAAIkgH,EAAUlgH,EAGd,GAAIm8G,EAAiBp9G,GACnBmhH,EAAUpB,EAAW9+G,EAAM,KAAM6+G,EAA+B7+G,EAAM7W,KAAUq2H,EAAAA,EAAAA,IAAiBxC,EAAeh9G,EAAKj6C,IAAI,cAGpH,GAAIs2J,EAAkBt9G,GAC3BmhH,EAAUpB,EAAW9+G,EAAM,KAAM6+G,EAA+B7+G,EAAM7W,KAAUq2H,EAAAA,EAAAA,IAAiB/B,EAAgBz9G,EAAKj6C,IAAI,aAGrH,CACL,MAAMsqH,EAAQsvC,EAAYpzF,EAAO/tE,QAAQwhD,EAAKj6C,IAAI,QAClDm6J,EAAUpB,EAAW9+G,EAAMqwE,EAAOwuC,EAA+B7+G,EAAM7W,GACzE,CAMA,OAJIvJ,IACFsgI,EAAUA,EAAQj7I,IAAI,QAASi7I,EAAQz3J,MAAM,CAAC,QAASm3B,MAGlDsgI,EAAQ1uI,OAAO,QAAQ,GAC9B,EA2KoDyuI,CAAW92H,EAAOk2H,EAAKM,EAAapzF,MAGrFwQ,EAAW5zC,KACdg2H,EAAcA,EAAYphK,QAAOshK,IAAQA,EAAI74I,IAAI,UAAY2B,QAAQk3I,EAAIt5J,IAAI,aAI3EojC,EAAMpjC,IAAI,gBAAkBo5J,EAAYlmK,OAAMomK,GAAOA,EAAIt5J,IAAI,SAASmI,cACxEixJ,EAAc,MAGTA,CAAW,EAGP3xC,GAAe,gBAAep0C,EAAAA,EAAAA,M,6ZCpkBpC,MAAM+B,EAAa,SAAC/0C,EAAW+5H,GAA2B,IAAnBloF,IAAOtnF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACnD,MAAMoT,EAASqiC,EAAUrgC,IAAI,UAEvBpO,EAASoM,EAAO0N,QAAO,CAACC,EAAK3iB,EAAOD,KACxC,MAAMo+C,EAAU9G,EAAU39B,MAAM,CAAC,UAAW3Z,IAC5C,IAAI2vG,EAAS1vG,EAAM0iB,QACjB,CAACoX,EAAG8M,EAAGjI,IAAM7E,EAAEjxB,MAAKuI,EAAAA,EAAAA,QAAO,CACzBgpC,MAAOxT,EACP4lD,OAAQruC,EAAQnnC,IAAI2nB,QAEtBvtB,EAAAA,EAAAA,QAAO,KAENx3C,OAAOw3M,GAAU,CAACxqI,GAAKA,EAAEltB,MAAM,CAAC,SAAU,QAM7C,OAJIwvE,IACFwmB,EAASA,EAAOxmB,WAGXvmE,EACJqd,MAAM,CAAC,SAAUjgC,GAAM2vG,EAAOhzF,KAAI8yB,GAAKA,EAAEx4B,IAAI,YAC7CgpB,MAAM,CAAC,UAAWjgC,GAAM2vG,EAAOhzF,KAAI8yB,IAAKp+B,EAAAA,EAAAA,QAAO,CAC9C05C,EAAGtb,EAAE91B,MAAM,CAAC,SAAU,MACtB+yE,EAAGj9C,EAAE91B,MAAM,CAAC,SAAU,MACtBgzE,EAAGl9C,EAAE91B,MAAM,CAAC,SAAU,MACtBizE,EAAGn9C,EAAE91B,MAAM,CAAC,SAAU,UACpB,GACL29B,GAEH,OAAOzuC,CACT,EAEa65F,EAAoBA,CAACjW,EAAQvuC,IACrB,OAAfA,GACK7sC,EAAAA,EAAAA,QAAOo7E,EAAO9vE,KAAI,CAAC+rE,EAAG9pD,KAAMvtB,EAAAA,EAAAA,QAAO,CACxC05C,EAAInsB,EAAI,EAAK,EACb8tD,EAAuB,EAApB3sD,KAAKwrD,MAAM3sD,EAAI,GAClB+tD,EAAG,EACHC,EAAG,OAIY,OAAf1uC,GACK7sC,EAAAA,EAAAA,QAAOo7E,EAAO9vE,KAAI,CAAC+rE,EAAG9pD,KAAMvtB,EAAAA,EAAAA,QAAO,CACxC05C,EAAInsB,EAAI,EAAK,EACb8tD,EAAuB,EAApB3sD,KAAKwrD,MAAM3sD,EAAI,GAClB+tD,EAAG,EACHC,EAAG,QAIAv7E,EAAAA,EAAAA,QAAOo7E,EAAO9vE,KAAI,CAAC+rE,EAAG9pD,KAAMvtB,EAAAA,EAAAA,QAAO,CACxC05C,EAAG,EACH2hC,EAAO,EAAJ9tD,EACH+tD,EAAG,GACHC,EAAG,OASM0kF,EAAattI,IAAMpmB,EAAAA,EAAAA,GAAU,SADjBomB,KAAMpmB,SAAAA,EAAAA,GAAU,GAJzB1hB,EAIoC8nC,EAAG/sB,IAAI,MAHzD/a,EAAK,EAAI,QAAQA,IAAOA,KAG2C8nC,EAAG/sB,IAAI,WAJ5D/a,KAIsE,EACnCq1K,CAAiBvtI,MAEvDwtI,EAAgB7xK,IAC3B,MAAM8xK,EAAW9xK,EAAKgd,KAAIqtB,GAAKA,EAAE/yB,IAAI,SAAS0F,IAAI20J,KAAar5I,SAAQ,GAAMR,QAE7E,OAAO93B,EAAKgd,KAAIqtB,IACd,IAAI0nI,EAAO1nI,EAcX,OAZA0nI,EAAKz6J,IAAI,SAASnX,SAAQ2vC,IACxBiiI,EAAOA,EACJhvI,OAAO,QACPvM,IAAIm7I,EAAW7hI,GAAIA,EAAEx4B,IAAI,SAAS,IAGvCw6J,EAAS3xK,SAAQ6xK,IACVD,EAAKh6I,IAAIi6I,KACZD,EAAOA,EAAKv7I,IAAIw7I,EAAS,GAC3B,IAGKD,CAAI,GACX,EAGSE,EAAWjyK,GAAQA,GAAQA,EAAKqP,MAAQrP,EAAKqP,MAAKg7B,QAAiBjoC,IAAZioC,EAAE2hI,OAAmC,OAAZ3hI,EAAE2hI,OAAkB3hI,EAAE2hI,MAAM7pK,OAAS,IAErH+vK,EAAelyK,GAC1BA,EAAKgjB,QACH,CAACC,EAAKonB,IACJA,EAAE/yB,IAAI,SAAS5F,EAAAA,EAAAA,QAAO,KAAKsR,QACzB,CAACoX,EAAG0V,IACG1V,EAAErC,IAAI+X,EAAEx4B,IAAI,MAAM1R,YAIhBw0B,EAHEA,EAAE5D,IAAIsZ,EAAEx4B,IAAI,MAAM1R,WAAYkqC,IAKzC7sB,KAGJvR,EAAAA,EAAAA,QAAO,CAAC,IAEPu1B,WACA31B,SAGQtgD,EAAsBA,CAAC2mF,EAAWoQ,EAAMF,KACnD,MAAMmoD,EAAStjB,EAAW/0C,GAAWzQ,GAAK,GAAGA,EAAEltB,MAAM,CAAC,SAAU,QAAQktB,EAAEltB,MAAM,CAAC,SAAU,UAAS,GAEpG,OAAO29B,EACJrX,MAAM,CAAC,UAAWunB,GAAKk7C,EAAkBiN,EAAOh2F,MAAM,CAAC,SAAU+tC,IAAQF,IACzEvnB,MAAM,CAAC,SAAUunB,GAAKmoD,EAAOh2F,MAAM,CAAC,SAAU+tC,IAAO,EAG7CnK,EAAgBjG,IAC3B,IAAKA,EACH,OAAOA,EAGT,MAAM8G,EAAU9G,EAAUrgC,IAAI,WAE9B,IAAKmnC,EACH,OAAO9G,EAGT,MAAMw6H,EAAc,CAAC,KAAM,KAAM,KAAM,MACvC,IAAIjpK,EAASyuC,EAqBb,OAnBA8G,EAAQt+C,SACN,CAACiR,EAAQmtC,KACP,GAAIntC,EAAOqO,UAAW,CACpB,MAAMigB,EAAQyyI,EAAYpiK,QAAQwuC,GAClC,IAAI6zH,EAAiBD,EAEjBzyI,IACF0yI,EAAiBD,EAAYj9H,MAAM,EAAGxV,GAAO8pD,UAAU3yE,OAAOs7J,EAAYj9H,MAAMxV,EAAQ,GAAI,KAG9F,MAAM2yI,EAA0BD,EAAerzJ,MAAKm6E,KAAOz6C,EAAQnnC,IAAI4hF,KAAMxnF,EAAAA,EAAAA,QAAO,KAAK+N,YAErF4yJ,IACFnpK,EAASl4C,EAAoBk4C,EAAQmpK,EAAyB9zH,GAElE,KAIGr1C,CAAM,EAKTopK,EAAgB,CAAC,GAAI,GAAI,IAElBC,EAAiCA,CAAC38E,EAAW9nF,KACxD,MAAM0kK,EAAgB58E,EAAU54E,KAAI5c,IAAA,IAAC,KAAEgX,GAAMhX,EAAA,OAAKgX,CAAI,IAAE65B,KAAK,KAE7D,IAAIwhI,EACAC,EACJJ,EAAcnyK,SAAQksB,IACpB,MAAMsmJ,EAAcC,IAAWJ,EAAe,CAAEnmJ,SAChDqmJ,EAAcC,EAAc7kK,EAExB4kK,EAboB,MAakBD,IACxCA,EAAWpmJ,EACb,IAGF,IAAI89E,EAAW,EAWf,OATKsoE,IACHtoE,EAAW,EACXsoE,EAAW,IAGTC,GAxB0B,MAyB5BvoE,OAAW/nG,GAGN,CAAC+nG,EAAUsoE,EAAS,EAGhBI,EAAmB,SAAC7yK,GAAoB,IAAdqsB,EAAInqB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAC5C,MAAMy+G,EAAW3gH,EAAKgd,KAAIqtB,GAAK,CAACA,EAAEjzB,MAAMP,QAAQwzB,EAAE2hI,OAAS,IAAIhvJ,KAAI8yB,GAAKA,EAAE14B,UAAQmtB,OAGlF,OAFAo8E,EAASrsF,MAAK,CAAC8F,EAAG8+D,IAAMA,EAAE/2F,OAASi4B,EAAEj4B,SAE9BywK,IAAWjyD,EAAS,GAAI,CAAEt0F,SAAU,EAC7C,EAEa6jE,EAAiBx1C,IAC5B,MAAMo4H,EAAkBp4H,EAAMpjC,IAAI,gBAElC,IAAKw7J,EACH,OAAOp4H,EAGT,MAAMl2C,EAAWk2C,EAAMpjC,IAAI,YACrB7S,EAASi2C,EAAMpjC,IAAI,UAEzB,GAAI9S,GAAYC,EAAQ,CACtB,MAAM,aAAE8oF,IAAiBiD,EAAAA,EAAAA,IAAmBsiF,EAAiBtuK,EAAUC,GAEvE,OAAOi2C,EAAMlkB,IAAI,eAAgB+2D,EACnC,CAEA,MAAM,KAAExlC,EAAI,GAAEF,IAAOypC,EAAAA,EAAAA,IAAa52C,EAAMpjC,IAAI,eACtC,aAAEi2E,IAAiBiD,EAAAA,EAAAA,IAAmBsiF,EAAiB/qH,EAAMF,EAAInN,EAAMpjC,IAAI,cAEjF,OAAOojC,EAAMlkB,IAAI,eAAgB+2D,EAAa,EAGnCwlF,EAAuBC,GAC9BA,EAAO3mJ,MAAQ2mJ,EAAO56I,QAAQL,IAAI,WAC7Bi7I,EAAO94M,QAAO41E,GAAKA,EAAEx4B,IAAI,aAG3B07J,EAAO1+I,MAAK,CAAC8F,EAAG8+D,KACA,IAAjB9+D,EAAE9iB,IAAI,MACD,GAGY,IAAjB4hF,EAAE5hF,IAAI,OACA,EAGH4hF,EAAE5hF,IAAI,SAAW8iB,EAAE9iB,IAAI,WAKrB27J,EAAiCD,GAC5CA,EAAO1+I,MAAK,CAAC8F,EAAG8+D,IACV9+D,EAAE9iB,IAAI,UAAW,IAAIuU,SAAS,UACzB,EAGLqtE,EAAE5hF,IAAI,UAAW,IAAIuU,SAAS,WACxB,EAGHqtE,EAAE5hF,IAAI,SAAW8iB,EAAE9iB,IAAI,U,oFCtPnB,SAAS/mD,EAAoB6mD,EAAM8yJ,GAChD,OAAOvoN,EAAAA,EAAAA,GAAay1D,GAAMD,GAAWA,IAAS,KAAM,CAAG+yJ,eACzD,C,gICCA,MAAMoB,GAAYvpJ,EAAAA,EAAAA,IAChBzZ,GAASA,EAAM0pC,QAAQh4B,MAAM,CAAC,SAAU,iBACxC0oF,IAAeA,IAAchxF,EAAAA,EAAAA,QAAO,KAAKsR,QAAO,CAACC,EAAKjE,IAAMiE,EAAIuT,IAAIxX,EAAE1H,IAAI,OAAQ0H,KAAItN,EAAAA,EAAAA,QAAO,CAAC,MAGnF+9J,EAAcpvK,GAAOirK,EAAUzvK,EAAAA,EAAAA,YAAkBk8B,IAAI13B,GAErDqvK,EAAmBrvK,GAAOirK,EAAUzvK,EAAAA,EAAAA,YAAkBme,MAAM,CAAC3Z,EAAK,S,oWCPxE,MAAMq4G,EAAgB,CAC3BjvC,UAAW,iBACXypG,kBAAmB,wBACnBC,eAAgB,gBAChBC,kBAAmB,sBACnBC,qBAAsB,8BACtBC,qBAAsB,8BACtBroG,SAAU,gBACVsoG,kBAAmB,wBACnBC,sBAAuB,2BACvBC,wBAAyB,6BACzBC,qBAAsB,sBAGXC,EAAYA,CAACj5H,EAAOn+C,IAAOm+C,EAAMpjC,IAAI,QAAU/a,EAC/Cq3K,EAAeA,CAACt+J,EAAQ/Y,IAAO+Y,EAAOyJ,MAAKC,GAAK20J,EAAU30J,EAAGziB,OAAQkQ,EAAAA,EAAAA,OACrEonK,EAAgBA,CAACv+J,EAAQ/Y,IAAO+Y,EAAOhG,QAAO0P,GAAK20J,EAAU30J,EAAGziB,OAAQ+rB,EAAAA,EAAAA,QACxEwrJ,EAAmB,SAACp5H,GAAK,IAAEoyC,EAAM5qF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,IAAGuK,EAAAA,EAAAA,OAAOzC,EAAI9H,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,IAAGuK,EAAAA,EAAAA,OAAK,OAAKiuC,EACtE9K,SAAS,CAAC,WAAW,eAAC5wB,EAAC9c,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,IAAGuK,EAAAA,EAAAA,OAAK,OAAKuS,EAAE+kB,MAAM+oD,EAAO,IACnDl9C,SAAS,CAAC,SAAS,eAAC5wB,EAAC9c,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,IAAGuK,EAAAA,EAAAA,OAAK,OAAKuS,EAAE+kB,MAAM/5B,EAAK,GAAC,EACtC4uG,EAAcl+D,GAASA,EAAM19B,KAAIgC,GAAKA,EAAE+4F,WAAU/0F,QAAO,CAACC,EAAK3iB,IAAU2iB,EAAM3iB,GAAO,GACtF23G,EAAc87D,IAAgB,CACzChsH,KAAM78B,IAAO6oJ,GAAc5hC,cAC3BtqF,GAAI38B,IAAO6oJ,GAAc90F,IAAI,EAAG,QAAQ5tE,SAAS,EAAG,WAAW8gI,gBAEpDp5B,EAAiB/4G,GAAQA,EAAKs0B,MAAK,CAAC8F,EAAG8+D,IAC9CA,EAAE6e,SAAW39E,EAAE29E,SACV,EAGL39E,EAAE29E,SAAW7e,EAAE6e,UACT,EAGH,IAGIiC,GAAuBtoG,EAAAA,EAAAA,QAAO,CACzCsiK,eAAgB,CACdz3K,GAAIm8G,EAAcjvC,UAClBjrE,KAAMywD,EAAAA,GAAAA,IACNje,MAAO,YACP+nC,WAAY,aAEdk7F,sBAAuB,CACrB13K,GAAIm8G,EAAcw6D,kBAClB10K,KAAMywD,EAAAA,GAAAA,KACNje,MAAO,qBACP+nC,WAAY,WACZzoB,YAAa,YAEf4jH,cAAe,CACb33K,GAAIm8G,EAAcy6D,eAClB30K,KAAMywD,EAAAA,GAAAA,UACNje,MAAO,WACP+nC,WAAY,OACZ/uE,KAAM,CAAC,GAETmqK,oBAAqB,CACnB53K,GAAIm8G,EAAc06D,kBAClB50K,KAAMywD,EAAAA,GAAAA,UACNje,MAAO,kBACP+nC,WAAY,cACZ/uE,KAAM,CAAC,GAEToqK,4BAA6B,CAC3B73K,GAAIm8G,EAAc26D,qBAClB70K,KAAMywD,EAAAA,GAAAA,KACNje,MAAO,wBACPsf,YAAa,cACbyoB,WAAY,YAEds7F,4BAA6B,CAC3B93K,GAAIm8G,EAAc46D,qBAClB90K,KAAMywD,EAAAA,GAAAA,IACNje,MAAO,0BACP+nC,WAAY,YAEdu7F,cAAe,CACb/3K,GAAIm8G,EAAcztC,SAClBzsE,KAAMywD,EAAAA,GAAAA,IACNje,MAAO,uBACP+nC,WAAY,YAEdw7F,sBAAuB,CACrBh4K,GAAIm8G,EAAc66D,kBAClB/0K,KAAMywD,EAAAA,GAAAA,KACNje,MAAO,iCACP+nC,WAAY,WACZzoB,YAAa,YAEfkkH,yBAA0B,CACxBj4K,GAAIm8G,EAAc86D,sBAClBh1K,KAAMywD,EAAAA,GAAAA,KACNje,MAAO,yBACP+nC,WAAY,WACZzoB,YAAa,WAEfmkH,2BAA4B,CAC1Bl4K,GAAIm8G,EAAc+6D,wBAClBj1K,KAAMywD,EAAAA,GAAAA,KACNje,MAAO,sCACP+nC,WAAY,WACZzoB,YAAa,iBAEfokH,mBAAoB,CAClBn4K,GAAIm8G,EAAcg7D,qBAClBl1K,KAAMywD,EAAAA,GAAAA,KACNje,MAAO,yBACP+nC,WAAY,WACZzoB,YAAa,UACbtmD,KAAM,CACJ2qK,mBAAmB,EACnBtlE,gBAAgB,EAChB76F,uBAAuB,EACvBV,eAAe,EACf8gK,UAAU,EACVn/E,YAAa,aACbpnE,UAAU,EACVwmJ,eAAgB,UAChBC,gBAAiB,UACjBC,qBAAsB,UACtBC,WAAY,UACZC,cAAe,UACf1uC,gBAAiB,cAMjB2uC,EAAwB,yLACxBC,EAAuB,0JAGhBC,EAAct3F,KAAaA,EAAOlvD,MAAMsmJ,GACxCG,EAAat0D,KAAYA,EAAMnyF,MAAMumJ,GAErC3mB,EAAmBA,CAAC/1D,EAAMj6F,IACrCi6F,EAAKz7E,KAAI8gE,IACP,GAAIs3F,EAAYt3F,GACd,MAAO,CAAEA,SAAQt/E,QAGnB,MAAM,IAAIuL,MAAM,iBAAiB,G,6SClJ9B,MAAMyyC,EAA4B9B,GACvCA,EAAMpjC,IAAI,aAAco4C,EAAAA,GAAAA,uBAA0CA,EAAAA,GAAAA,oBAGvDjT,EAAyB/B,GACpCA,EAAMpjC,IAAI,gBAAkBo4C,EAAAA,GAAAA,iBAGjBhT,EAA0BhC,GACrCA,EAAMpjC,IAAI,gBAAkBo4C,EAAAA,GAAAA,kBAGjB9S,EAA2BlC,GACtCA,EAAMpjC,IAAI,gBAAkBo4C,EAAAA,GAAAA,oBAGjB5S,EAA2BpC,GACtCA,EAAMpjC,IAAI,gBAAkBo4C,EAAAA,GAAAA,mBAGjB3S,EAA0BrC,GACrCA,EAAMpjC,IAAI,gBAAkBo4C,EAAAA,GAAAA,kBAGjBpS,EAAe5C,GAC1BA,EAAMpjC,IAAI,gBAAkB23C,EAAAA,GAAAA,OAAoBvU,EAAMpjC,IAAI,UAAY23C,EAAAA,GAAAA,MAG3DtS,EAAajC,GACxBA,EAAMpjC,IAAI,gBAAkBo4C,EAAAA,GAAAA,IAGjB1S,EAActC,GACzBA,EAAMpjC,IAAI,gBAAkBo4C,EAAAA,GAAAA,MAAyBhV,EAAMpjC,IAAI,UAAY23C,EAAAA,GAAAA,KAGhEhS,EAAwBvC,GACnCA,EAAMpjC,IAAI,gBAAkBo4C,EAAAA,GAAAA,iBAAoChV,EAAMpjC,IAAI,UAAY23C,EAAAA,GAAAA,e,+NCpCxF,MAAMqmH,EAAmBrqJ,IACvB,IAAI88B,EACAF,EAWJ,OATK58B,EAAK3T,IAAI,SAAW,EAAK,GAC5BywC,EAAO98B,EAAKqa,QAAQ,QACpBuiB,EAAK38B,IAAO68B,GAAMk3B,IAAI,EAAG,UAAUz5C,MAAM,SAASra,SAClD48B,EAAOA,EAAK58B,WAEZ08B,EAAK58B,EAAKua,MAAM,QAChBuiB,EAAO78B,IAAO28B,GAAIx2C,SAAS,EAAG,UAAUi0B,QAAQ,SAASna,UAGpD,CAAE48B,OAAMF,KAAI,EAGRypC,EAAe/C,IAC1B,IAAIxmC,EACAF,EAEJ,OAAQ0mC,GACN,IAAK,QACHxmC,EAAO78B,MAASoa,QAAQ,OAAOna,SAC/B08B,EAAK38B,MAASsa,MAAM,OAAOra,SAC3B,MAEF,IAAK,YACH48B,EAAO78B,MAAS+zD,KAAK,EAAG,QAAQ35C,QAAQ,OAAOna,SAC/C08B,EAAK38B,MAAS+zD,KAAK,EAAG,QAAQz5C,MAAM,OAAOra,SAC3C,MAEF,IAAK,YACH48B,EAAO78B,MAASoa,QAAQ,QAAQna,SAChC08B,EAAK38B,MAASsa,MAAM,QAAQra,SAC5B,MAEF,IAAK,YACH48B,EAAO78B,MAAS7Z,SAAS,IAAK,QAAQi0B,QAAQ,QAAQna,SACtD08B,EAAK38B,MAAS7Z,SAAS,IAAK,QAAQm0B,MAAM,QAAQra,SAClD,MAEF,IAAK,YACH48B,EAAO78B,MAASoa,QAAQ,QAAQna,SAChC08B,EAAK38B,MAASsa,MAAM,QAAQra,SAC5B,MAEF,IAAK,aACH48B,EAAO78B,MAASoa,QAAQ,SAASna,SACjC08B,EAAK38B,MAASsa,MAAM,SAASra,SAC7B,MAEF,IAAK,YACH48B,EAAO78B,MAAS7Z,SAAS,IAAK,QAAQi0B,QAAQ,QAAQna,SACtD08B,EAAK38B,MAAS7Z,SAAS,IAAK,QAAQm0B,MAAM,QAAQra,SAClD,MAEF,IAAK,aACH48B,EAAO78B,MAAS7Z,SAAS,IAAK,SAASi0B,QAAQ,SAASna,SACxD08B,EAAK38B,MAAS7Z,SAAS,IAAK,SAASm0B,MAAM,SAASra,SACpD,MAEF,IAAK,eACH48B,EAAO78B,MAASoa,QAAQ,WAAWna,SACnC08B,EAAK38B,MAASsa,MAAM,WAAWra,SAC/B,MAEF,IAAK,eACH48B,EAAO78B,MAAS7Z,SAAS,IAAK,WAAWi0B,QAAQ,WAAWna,SAC5D08B,EAAK38B,MAAS7Z,SAAS,IAAK,WAAWm0B,MAAM,WAAWra,SACxD,MAEF,IAAK,iBAAkB,CACrB,MAAMF,EAAOC,MACPhiB,EAASosK,EAAiBrqJ,GAChC88B,EAAO7+C,EAAO6+C,KACdF,EAAK3+C,EAAO2+C,GAEZ,KACF,CACA,IAAK,iBAAkB,CACrB,MAAM58B,EAAOC,MAAS7Z,SAAS,EAAG,YAC5BnI,EAASosK,EAAiBrqJ,GAChC88B,EAAO7+C,EAAO6+C,KACdF,EAAK3+C,EAAO2+C,GAEZ,KACF,CACA,IAAK,cACHE,EAAO78B,MAAS7Z,SAAS,IAAK,QAAQi0B,QAAQ,OAAOna,SACrD08B,EAAK38B,MAASsa,MAAM,OAAOra,SAC3B,MAEF,IAAK,eACH48B,EAAO78B,MAAS7Z,SAAS,KAAM,QAAQi0B,QAAQ,OAAOna,SACtD08B,EAAK38B,MAASsa,MAAM,OAAOra,SAC3B,MAEF,IAAK,eACH48B,EAAO78B,MAAS7Z,SAAS,KAAM,QAAQi0B,QAAQ,OAAOna,SACtD08B,EAAK38B,MAASsa,MAAM,OAAOra,SAC3B,MAEF,IAAK,eACH48B,EAAO78B,MAAS7Z,SAAS,KAAM,QAAQi0B,QAAQ,OAAOna,SACtD08B,EAAK38B,MAASsa,MAAM,OAAOra,SAC3B,MAEF,IAAK,gBACH48B,EAAO78B,MAAS7Z,SAAS,KAAM,SAAS8Z,SACxC08B,EAAK38B,MAASC,SACd,MAEF,IAAK,gBACH48B,EAAO78B,MAAS7Z,SAAS,KAAM,SAAS8Z,SACxC08B,EAAK38B,MAASC,SACd,MAEF,IAAK,gBACH48B,EAAO78B,MAAS7Z,SAAS,IAAK,UAAUi0B,QAAQ,OAAOna,SACvD08B,EAAK38B,MAASsa,MAAM,OAAOra,SAC3B,MAEF,IAAK,iBACH48B,EAAO78B,MAAS7Z,SAAS,KAAM,UAAUi0B,QAAQ,OAAOna,SACxD08B,EAAK38B,MAASsa,MAAM,OAAOra,SAC3B,MAEF,IAAK,iBAAkB,CACrB,MAAMoqJ,EAAeD,EAAiBpqJ,OACtC68B,EAAO78B,IAAOqqJ,EAAaxtH,MAAMk3B,IAAI,EAAG,UAAU9zD,SAClD08B,EAAK38B,IAAOqqJ,EAAa1tH,IAAIo3B,IAAI,EAAG,UAAU9zD,SAC9C,KACF,CACA,IAAK,aACH48B,EAAO78B,MAASoa,QAAQ,SAAS25C,IAAI,EAAG,SAAS9zD,SACjD08B,EAAK38B,MAASsa,MAAM,SAASy5C,IAAI,EAAG,SAAS9zD,SAC7C,MAEF,IAAK,eACH48B,EAAO78B,MAASoa,QAAQ,WAAW25C,IAAI,EAAG,WAAW9zD,SACrD08B,EAAK38B,MAASsa,MAAM,WAAWy5C,IAAI,EAAG,WAAW9zD,SACjD,MAEF,IAAK,YACH48B,EAAO78B,MAASoa,QAAQ,QAAQ25C,IAAI,EAAG,QAAQ9zD,SAC/C08B,EAAK38B,MAASsa,MAAM,QAAQy5C,IAAI,EAAG,QAAQ9zD,SAC3C,MAEF,QACE48B,EAAO,KACPF,EAAK,KAIT,MAAO,CAAEE,OAAMF,KAAI,EAGRniB,EAAeA,CAACqiB,EAAMF,KACjC,IAAI2tH,EACJ,MAAMhxK,EAAW0mB,IAAO68B,GAClBtjD,EAASymB,IAAO28B,GAEhB4tH,EAAMvqJ,MACNwqJ,EAAYxqJ,MAAS+zD,KAAK,EAAG,QAEnC,GAAIz6E,EAAS4mB,OAAO3mB,EAAQ,OAAQ,CAClC,GAAID,EAAS4mB,OAAOqqJ,EAAK,OACvB,MAAO,QAGT,GAAIjxK,EAAS4mB,OAAOsqJ,EAAW,OAC7B,MAAO,WAEX,CAEA,MAAMC,EAAczqJ,MAASoa,QAAQ,QAC/BswI,EAAY1qJ,MAASsa,MAAM,QAEjC,GAAIhhC,EAAS4mB,OAAOuqJ,EAAa,WAAalxK,EAAO2mB,OAAOwqJ,EAAW,UACrE,MAAO,YAGT,MAAMC,EAAe3qJ,MAASoa,QAAQ,SAChCwwI,EAAa5qJ,MAASsa,MAAM,SAElC,GAAIhhC,EAAS4mB,OAAOyqJ,EAAc,WAAapxK,EAAO2mB,OAAO0qJ,EAAY,UACvE,MAAO,aAGT,MAAMC,EAAiB7qJ,MAASoa,QAAQ,WAClC0wI,EAAe9qJ,MAASsa,MAAM,WAEpC,GAAIhhC,EAAS4mB,OAAO2qJ,EAAgB,WAAatxK,EAAO2mB,OAAO4qJ,EAAc,UAC3E,MAAO,eAKT,GAFAR,EAAclkF,EAAa,kBAEvB9sF,EAAS4mB,OAAOoqJ,EAAYztH,KAAM,WAAatjD,EAAO2mB,OAAOoqJ,EAAY3tH,GAAI,UAC/E,MAAO,iBAGT,MAAMouH,EAAc/qJ,MAASoa,QAAQ,QAC/B4wI,EAAYhrJ,MAASsa,MAAM,QAEjC,GAAIhhC,EAAS4mB,OAAO6qJ,EAAa,WAAaxxK,EAAO2mB,OAAO8qJ,EAAW,UACrE,MAAO,YAGT,MAAMC,EAAkBjrJ,MAAS7Z,SAAS,IAAK,QAAQi0B,QAAQ,QACzD8wI,EAAgBlrJ,MAAS7Z,SAAS,IAAK,QAAQm0B,MAAM,QAE3D,GAAIhhC,EAAS4mB,OAAO+qJ,EAAiB,WAAa1xK,EAAO2mB,OAAOgrJ,EAAe,UAC7E,MAAO,YAGT,MAAMC,EAAmBnrJ,MAAS7Z,SAAS,IAAK,SAASi0B,QAAQ,SAC3DgxI,EAAiBprJ,MAAS7Z,SAAS,IAAK,SAASm0B,MAAM,SAE7D,GAAIhhC,EAAS4mB,OAAOirJ,EAAkB,WAAa5xK,EAAO2mB,OAAOkrJ,EAAgB,UAC/E,MAAO,aAGT,MAAMC,EAAqBrrJ,MAAS7Z,SAAS,IAAK,WAAWi0B,QAAQ,WAC/DkxI,EAAmBtrJ,MAAS7Z,SAAS,IAAK,WAAWm0B,MAAM,WAEjE,GAAIhhC,EAAS4mB,OAAOmrJ,EAAoB,WAAa9xK,EAAO2mB,OAAOorJ,EAAkB,UACnF,MAAO,eAKT,GAFAhB,EAAclkF,EAAa,kBAEvB9sF,EAAS4mB,OAAOoqJ,EAAYztH,KAAM,WAAatjD,EAAO2mB,OAAOoqJ,EAAY3tH,GAAI,UAC/E,MAAO,iBAGT,MAAM4uH,EAAkBvrJ,MAAS7Z,SAAS,IAAK,QAAQi0B,QAAQ,QACzDoxI,EAAgBxrJ,MAAS7Z,SAAS,IAAK,QAAQm0B,MAAM,QAE3D,GAAIhhC,EAAS4mB,OAAOqrJ,EAAiB,WAAahyK,EAAO2mB,OAAOsrJ,EAAe,UAC7E,MAAO,YAGT,MAAMC,EAAczrJ,MAAS7Z,SAAS,IAAK,QAAQi0B,QAAQ,OAE3D,GAAI9gC,EAAS4mB,OAAOurJ,EAAa,WAAalyK,EAAO2mB,OAAOqqJ,EAAK,OAC/D,MAAO,cAGT,MAAMmB,EAAe1rJ,MAAS7Z,SAAS,KAAM,QAAQi0B,QAAQ,OAE7D,GAAI9gC,EAAS4mB,OAAOwrJ,EAAc,WAAanyK,EAAO2mB,OAAOqqJ,EAAK,OAChE,MAAO,eAGT,MAAMoB,EAAe3rJ,MAAS7Z,SAAS,KAAM,QAAQi0B,QAAQ,OAE7D,GAAI9gC,EAAS4mB,OAAOyrJ,EAAc,WAAapyK,EAAO2mB,OAAOqqJ,EAAK,OAChE,MAAO,eAGT,MAAMqB,EAAe5rJ,MAAS7Z,SAAS,KAAM,QAAQi0B,QAAQ,OAE7D,OAAI9gC,EAAS4mB,OAAO0rJ,EAAc,WAAaryK,EAAO2mB,OAAOqqJ,EAAK,OACzD,eAGF,IAAI,EA4BAllF,GAA8Bp/E,EAAAA,EAAAA,KAAI,CAAC,OAAQ,MAAO,OAAQ,QAAS,UAAW,SAC9E4lK,GAA0B5lK,EAAAA,EAAAA,KAAI,CAAC,MAAO,OAAQ,QAAS,UAAW,SAClE6lK,GAA8B7lK,EAAAA,EAAAA,KAAI,CAAC,OAAQ,QAAS,UAAW,SAC/D8lK,GAA+B9lK,EAAAA,EAAAA,KAAI,CAAC,QAAS,UAAW,SAExDq/E,EAAqBA,CAACsiF,EAAiB/qH,EAAMF,EAAI0mC,KAC5D,IAAIhB,EAAeulF,EACfxiF,EAAuBC,EAC3B,MAAM/rF,EAAW0mB,IAAO68B,GAClBtjD,EAASojD,EAAK38B,IAAO28B,GAAM38B,MAEjC,GAAIqjE,GAASA,EAAMh/E,WAAW,kBAAmB,CAC/C,MAAM+vI,EAAQ/wD,EAAMn/D,MAAM,KAEpByQ,EAAQxF,SAASilH,EAAM,GAAI,IAC3B7mB,EAAO6mB,EAAM,GAEN,SAAT7mB,GACFnoC,EAAuB2mF,EAEnBp3I,GAAS,MACXywD,EAAuBymF,GAGrBl3I,GAAS,KACXywD,EAAuBC,IAGzBD,EADkB,WAATmoC,GAAqB54F,GAAS,GAChBk3I,EACL,WAATt+C,GAAqB54F,GAAS,GAChBm3I,EAEAC,CAE3B,MAAYlvH,EAEDtjD,EAAOuwI,KAAKxwI,EAAU,SAAW,GAC1C8rF,EAAuB0mF,EACdvyK,EAAOuwI,KAAKxwI,EAAU,QAAU,IACzC8rF,EAAuBymF,GAJvBzmF,EAAuB2mF,EAWzB,OAJI1pF,IAAiB+C,EAAqBzkE,SAAS0hE,KACjDA,EAAe+C,EAAqBl4D,SAG/B,CACLm1D,eACA+C,uBACD,EAGG4mF,EAAoB,KAGpBC,EAAUpvH,IACd,IAAIvjD,EAAWujD,EAEf,IAAKvjD,EACH,OAAO,EAGTA,EAAW0mB,IAAO1mB,GAClB,MAAM4yK,EAAgBlsJ,IAAO1mB,GAAU8gC,QAAQ,OAE/C,OAAO9gC,EAAS4mB,OAAOgsJ,EAAc,EAGjCC,EAAQxvH,IACZ,IAAIpjD,EAASojD,EAEb,IAAKpjD,EACH,OAAO,EAGTA,EAASymB,IAAOzmB,GAChB,MAAM6yK,EAAYpsJ,IAAOzmB,GAAQ+gC,MAAM,OAEvC,OAAO/gC,EAAO2mB,OAAOksJ,EAAU,EAGpBC,EAAgBA,CAACjqF,EAAWvlC,EAAMF,EAAIra,EAAMgqI,KACvD,IAAIhzK,EAAWujD,EACXtjD,EAASojD,EAEb,MAAM4vH,EAAaN,EAAQ3yK,IAAa6yK,EAAM5yK,GAE9C,IAAI8gC,EAAS2xI,EAUb,GARKO,IACHlyI,EArCmB,OAwCjBiyI,IACFjyI,EAASiyI,GAGPlqF,EAAW,CACb,GAAIA,EAAU/9E,WAAW,kBAAmB,CAC1C,MAAOswB,EAAO44F,GAAQnrC,EAAU5+D,QAAQ,kBAAmB,IAAIU,MAAM,KAErE,OAAOoe,EAAKl2B,IAAI,sBAAuB,CAAEuoB,QAAO44F,KAAMjrF,EAAKl2B,IAAImhH,IACjE,CAEA,MAAMi/C,EAAkBlqI,EAAKl2B,IAAIg2E,GAEjC,OAAImqF,GAAcnqF,EAAU1+D,MAAM,SACzB8oJ,EAGLlzK,GAAYC,GACdD,EAAW0mB,IAAO1mB,GAClBC,EAASymB,IAAOzmB,GAET,GAAGizK,KAAmBlzK,EAAS+gC,OAAO,WAAW9gC,EAAO8gC,OAAO,SAGjEmyI,CACT,CAEA,OAAKlzK,GAAaC,GAoBlBD,EAAW0mB,IAAO1mB,GAClBC,EAASymB,IAAOzmB,GAEZD,EAAS4mB,OAAO3mB,EAAQ,OACtB0yK,EAAQ3yK,GACHA,EAAS+gC,OAAOA,GAGlB,GAAG/gC,EAAS+gC,OAAOA,QAAa9gC,EAAO8gC,OAAO,QAGhD,GAAG/gC,EAAS+gC,OAAOA,QAAa9gC,EAAO8gC,OAAOA,OA9B9C/gC,GAAYC,GACX4yK,EAAM5yK,KACR8gC,EAAS2xI,GAGJ,GAAG1pI,EAAKl2B,IAAI,WAAW4T,IAAOzmB,GAAQ8gC,OAAOA,MAGlD/gC,IAAaC,GACX0yK,EAAQ3yK,KACV+gC,EAAS2xI,GAGJ,GAAG1pI,EAAKl2B,IAAI,WAAW4T,IAAO1mB,GAAU+gC,OAAOA,MAGjDiI,EAAKl2B,IAAI,aAc4C,EAGnDqgK,EAAsBn5K,GACpB,sBAATA,EACK,CAAC,CACN,aACA,eACA,iBACA,aAEF,CACE,aACA,eACA,iBACA,cAIG,CAAC,CACN,QACA,YACA,aACA,eACA,iBACA,YACA,cACA,eACA,iBAEF,CACE,YACA,YACA,aACA,eACA,iBACA,YACA,eACA,eACA,mBAISmvB,EAAYA,IAAOzC,IAAAA,UAAmB,I,8IC1enD,MAAM0sJ,EAAoBA,CAAC7oI,EAAUzuC,KACnC,MAAM+yF,EAAUnjF,SAASonH,cAAcvoF,GAEnCskD,IACFA,EAAQ7tF,QAAUlF,EACpB,EAIW0rI,EAAoB1rI,GAASs3K,EAAkB,2BAA4Bt3K,GAC3Eu3K,EAAoBv3K,GAASs3K,EAAkB,4BAA6Bt3K,GAC5Ew3K,EAA0Bx3K,GAASs3K,EAAkB,kCAAmCt3K,GAExFy3K,EAAyBA,IAAM7nK,SAASnU,KAAKy7H,MAAM+O,e,qCCfjD,SAASlK,EAASr8H,EAAMO,GACrC,qCAA0DmI,MAAKiuH,KAE7DtrH,EADasrH,EAAIhtH,SACZ3J,EAAMO,EAAS,GAExB,C,oGCLO,MACM25H,EAAextK,IADE+7C,SAER/7C,GAFuBioJ,UAA0C,MAA9BlsG,EAAMksG,SAASf,YAGpE9kG,QAAQrG,MAAM/7C,EAChB,C,6MCDK,MAAMksI,EAAWA,CAACH,EAAMoB,EAAUC,KAAapoF,EAAAA,EAAAA,QCCvC,SAAmBkuJ,EAAO73G,EAAMF,GAC7C,MAAMztB,EAAIwlI,EAAM1qH,QAGhB,MARsB8iI,EAACpY,EAAO73G,EAAMF,KACpC+3G,EAAMvmE,OAAQxxC,EAAK,EAAI+3G,EAAMz9J,OAAS0lD,EAAKA,EAAK,EAAG+3G,EAAMvmE,OAAOtxC,EAAM,GAAG,GAAG,EAK5EiwH,CAAgB59I,EAAG2tB,EAAMF,GAElBztB,CACT,CDN6D69I,CAAUx/E,EAAKlnF,OAAQsoF,EAAUC,IACjFhvD,EAAiB2tD,IAC5B,MAAMl0F,EAAMk0F,EAAKz7E,KAAI1O,GAAKA,EAAEgJ,IAAI,QAEhC,OAAOmhF,EAAKz1E,QAAO,CAACoX,EAAG8+D,IAAM9+D,EAAE5D,IAAI0iE,EAAE5hF,IAAI,MAAO4hF,KAAIxnF,EAAAA,EAAAA,QAAO,CAAC,IAAIJ,SAASp3C,QAAOo0C,GAAK/J,EAAIwL,QAAQzB,EAAEgJ,IAAI,QAAO,EAGnG4gK,EAAsBA,CAACz/E,EAAMp4F,KACxC,MAAM4I,EAAOwvF,EAAKz7E,KAAI1O,GAAKA,EAAEgJ,IAAIjX,KAEjC,OAAOo4F,EAAKz1E,QAAO,CAACoX,EAAG8+D,IAAM9+D,EAAE5D,IAAI0iE,EAAE5hF,IAAIjX,GAAM64F,KAAIxnF,EAAAA,EAAAA,QAAO,CAAC,IAAIJ,SAASp3C,QAAOo0C,GAAKrF,EAAK8G,QAAQzB,EAAEgJ,IAAIjX,KAAM,EAGlGguI,EAAY,SAAC51C,EAAMy1C,GAA6B,IAAjBqiC,EAAIruK,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC9C,GAAIu2F,EAAKh5E,UACP,OAAO6I,EAAAA,EAAAA,QAGT,MAAM6vJ,EAAY/3I,KAAK+tG,KAAK11C,EAAK54D,QAAUquG,GACrC3/C,GAAQ6pF,EAAAA,EAAAA,OAAM,EAAG3/E,EAAK54D,QAASs4I,GACrC,IAAIjvK,EAASqlF,EAAMvxE,KAAIq7J,GAAc5/E,EAAKvjD,MAAMmjI,EAAYA,EAAaF,KAAY7mK,SAMrF,OAJIi/J,IACFrnK,EAASA,EAAO2N,QAAOuhK,EAAAA,EAAAA,OAAM,EAAGlqC,EAAahlI,EAAO22B,SAAS7iB,KAAIs7J,IAAMhwJ,EAAAA,EAAAA,QAAOhX,aAGzEpI,CACT,EAEa2M,EAAqBA,CAACukB,EAAG8+D,IAChC9+D,GAAKA,EAAExkB,YAAc0S,EAAAA,KAAAA,OAAY8R,KAAO9R,EAAAA,KAAAA,OAAY4wE,GAC/C9+D,EAAExkB,UAAUC,EAAoBqjF,GAGlCA,EAGIq/E,EAAQ,WAAa,QAAAj8I,EAAAp6B,UAAAC,OAAT8G,EAAI,IAAA0C,MAAA2wB,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJvzB,EAAIuzB,GAAAt6B,UAAAs6B,GAC3B,MAAMg8I,GAASrnK,EAAAA,EAAAA,KAAIlI,GAEnB,MAAO,CAACi+B,EAAGm8D,IAAMm1E,EAAOzgJ,IAAIsrE,EAC9B,C,sQErCO,MAAMo1E,EAAsB,SAACC,EAAQtkH,EAAOxjD,GAA6B,IAAvB+nK,IAAWz2K,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAChE0O,EAAKgoK,SACLC,EAAAA,EAAAA,uBACIH,EACAtkH,GACA0kH,EAAAA,EAAAA,0BAGAH,GACAI,EAAAA,EAAAA,YAAWC,eAGXC,EAAAA,EAAAA,eAAc,KAEtB,EAEaC,EAA0B,SACnCC,EACAC,EACAC,GAGC,IAFDC,EAAWp3K,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACdq3K,EAAgBr3K,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAEnB,MAAMs3K,EAAeH,EAAWI,cAEhC,GAAmB,OAAfN,IAAwBK,EAIxB,OAHAJ,EAAa5hD,MAAMkiD,QAAU,SAC7BN,EAAa5hD,MAAMmiD,UAAY,iCAKnC,MAAMC,EAAmBR,EAAaS,wBAChCC,EAAoBT,EAAWQ,wBAC/BE,EAAqBP,EAAaK,wBAExC,IAAIG,EAAMb,EAAWa,IAAMJ,EAAiB5rK,OAASsrK,EACjDW,EAAOd,EAAWc,KAAOV,EAEzBS,EAAMD,EAAmBC,MACzBA,GAAOJ,EAAiB5rK,OAASmrK,EAAWnrK,OAAuB,EAAdsrK,GAGrDW,EAAOL,EAAiB9rK,MAAQisK,EAAmBG,QACnDD,EAAOF,EAAmBG,MAAQN,EAAiB9rK,MAAQyrK,GAG/DS,GAAOF,EAAkBE,IACzBC,GAAQH,EAAkBG,KAE1Bb,EAAa5hD,MAAMkiD,QAAU,IAC7BN,EAAa5hD,MAAMmiD,UAAY,aAAaM,QAAWD,MAC3D,EAuBaG,EACTC,IAEA,MAAM,OAAEC,GAAWD,GACb,MAAEE,GAAUF,EACZG,EAAaH,EAAUC,OAAOG,UAC9BC,EAAYL,EAAUE,MAAME,UAElC,GAAID,IAAeE,EACf,OAAOF,EAKX,OAFmBH,EAAUM,cAGlBC,EAAAA,EAAAA,cAAaL,GAASC,EAAaE,GAGvCE,EAAAA,EAAAA,cAAaN,GAAUE,EAAaE,CAAS,EAkB3CG,EAA4B7tD,IACrC,MAAM15B,EAAUnjF,SAASzG,cAAc,UAGvC,GAFA4pF,EAAQinC,UAAYvN,EAEc,IAA9B15B,EAAQwnF,kBAAyB,CACjC,MAAMC,EAAQznF,EAAQgkC,WAEtB,GAAqC,MAAjCyjD,EAAMC,SAAS7pI,eAA6C,KAApB4pI,EAAMxgD,UAC9C,MAAO,EAEf,CAEA,OAAOvN,CAAI,EAGFiuD,EAAsBjuD,GAAQA,EACtCr+F,QAAQ,UAAW,KACnBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,SAAU,KAClBA,QAAQ,UAAW,KACnBA,QAAQ,UAAW,KACnBA,QAAQ,UAAW,KACnBA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,KAClBA,QAAQ,UAAW,KACnBA,QAAQ,UAAW,KACnBA,QAAQ,SAAU,KA8DVusJ,EAAyBA,CAACvC,EAAQpwK,EAAOqwK,KAClD,MAAM/nK,GAAOmoK,EAAAA,EAAAA,YACPmC,GAAWC,EAAAA,EAAAA,iBAAgB7yK,GACjCmwK,EAAoBC,EAAQ,CAACwC,GAAWtqK,EAAM+nK,EAAY,EAGjDyC,EAAoBA,CAAC1C,EAAQpwK,EAAOqwK,KAC7C,MAAM/nK,GAAOmoK,EAAAA,EAAAA,YAEPsC,GADS,IAAIC,WACAC,gBAAgDjzK,EA7DXomB,QAAQ,OAAQ,SA6DG,aAC3E,MAAM0lC,GAAQonH,EAAAA,EAAAA,uBAAsB9C,EAAQ2C,GAC5C5C,EAAoBC,EAAQtkH,EAAOxjD,EAAM+nK,EAAY,EASzD,MAoCaxlB,EAA0BA,CAAC9rG,EAAMo0H,KAE1C,MAEMziD,GAFS,IAAIsiD,WAEAC,gBAAgBl0H,EAAM,aAGnCq0H,EAAoBC,IAELhwK,MAAMo8C,KAAK4zH,EAAKC,YACxBz7K,SAAQ26K,IACb,GAAIA,EAAMe,WAAaC,KAAKC,aACxB,GAAKN,EAAY5vJ,SAASivJ,EAAMC,UAQ5BW,EAAkBZ,OARqB,CAEvC,KAAOA,EAAMzjD,YACTskD,EAAKK,aAAalB,EAAMzjD,WAAYyjD,GAExCa,EAAKM,YAAYnB,EACrB,CAIJ,GACF,EAON,OAHAY,EAAkB1iD,EAAIj9H,MAGfi9H,EAAIj9H,KAAKu+H,SAAS,C,4FCnS7B,MACM4hD,EAAqB,CACzB3zK,QAFc4zK,IAAM,KAGpBjyK,MAAO,GAGIwD,EAAiB,SAACtF,GAAgC,IAAxBg0K,EAAcl6K,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACvD,MAAMsH,EAAQ,IAAK0yK,KAAuBE,GAG1C,OAFA5yK,EAAMpB,OAASA,EAERoE,IAAShD,EAClB,C,sHCXO,MAAMsqG,EAAcA,KACzB,IAAIgsD,EAaJ,OAXI1tE,UAAU3uB,WAAa2uB,UAAU3uB,UAAUthE,QAE5C29J,GAAQ1tE,UAAU3uB,UAGnBq8F,EAFS1tE,UAAUiqF,aAEZjqF,UAAUiqF,aAGVjqF,UAAUgB,SAGZ0sE,EAAOA,EAAKl0I,cAAgBk0I,CAAI,EAG5BnyI,EAAYA,KACvB,MAAMmyI,EAAOhsD,IAEb,IAAI9tG,EAAS,KAab,OAVI85J,GAAQA,EAAKlxI,MAAM,MACrB5oB,EAAS,KAEA85J,GAAQA,EAAKlxI,MAAM,MAC5B5oB,EAAS,KAEA85J,GAAQA,EAAKlxI,MAAM,QAC5B5oB,EAAS,MAGJA,CAAM,EAGF+/I,EAAwBA,CAACxuE,EAAevxE,EAAQ9J,KAC3D,GAAsB,OAAlBq7E,EACF,OAAOA,EAKT,OAFiB79C,QAAQx9B,EAAS0yB,MAAM,aAE0B,IAAjD,CAAC,QAAS,QAAS,SAAS7e,QAAQ/J,GAI9C,QAHEA,CAGK,C,qIC/ChB,MAAMs2K,EAAY,kBACZC,EAAY,mBAIZC,EAAwB,CAC5B,CAAEl8K,MAAO,KAAM0wC,MAAO,MACtB,CAAE1wC,MAAO,KAAM0wC,MAAO,OAGlByrI,EAAkB,CACtBC,GAAIH,EACJI,GAAIL,GAKOM,EAAyBA,IAAMJ,EAE/Bx1F,EAAoBA,KAAMt1E,EAAAA,EAAAA,QAAO,CAC5C,CAAEosE,OAAQy+F,EAAWp2F,aAjBZ,MAkBT,CAAErI,OAAQw+F,EAAWn2F,aAnBZ,QAqBE02F,EAAwBC,IACnC,MAAMpqD,EATeoqD,IAAgB,QAARA,EAZpB,KADA,KAsBMC,CAAeD,GAE9B,OAAOprK,EAAAA,EAAAA,QAAO,CACZosE,OAAQ2+F,EAAgB/pD,GACxBvsC,aAAcusC,GACd,C,2GC7BG,MAAMhpC,EAAcA,CAAC1pF,EAAMg9K,EAAYC,KAC5C,MAAMC,EAAOD,GAAU,GAAGD,KAC1B,IAAIG,EAAkB,KAClBC,EAAmB,KAOvB,OALAD,EAAkB,IAAIE,EAAAA,GAAAA,OAAcL,GACpCI,GAAmBE,EAAAA,EAAAA,IAAUt9K,EAAM,CACjC,CAACk9K,GAAO,IAAIG,EAAAA,GAAAA,MAAaF,KAGpB,CACLhpJ,SAAUipJ,EAAiBjpJ,SAAS6oJ,IAAe,CAAC,EACpD9zK,OAAQk0K,EAAiBl0K,OAAOg0K,IAAS,GAC1C,EAGU5oJ,EAAOA,CAACprB,EAAQirB,IAAajrB,EAAO8T,KAAIzgB,GAAM43B,EAAS7c,IAAI/a,EAAGqJ,a,qEClBpE,MAAMspG,EAAmB,CAC9BI,eAAe,EACfxxB,OAAQ,CAAC,EAAG,W,0GCCP,MAAM/7D,GAA0Bw7J,EAAAA,EAAAA,IAAsBC,EAAAA,GAAgBnpF,EAAAA,G,gGCAtE,MAAMopF,GAAyB/rK,EAAAA,EAAAA,QAAO,CAC3C,CACE0F,KAAMvC,EAAAA,GAAAA,qBACN2qI,MAAO,kBAET,CACEpoI,KAAMvC,EAAAA,GAAAA,gBACN2qI,MAAO,aAET,CACEpoI,KAAMvC,EAAAA,GAAAA,qBACN2qI,MAAO,oBAET,CACEpoI,KAAMvC,EAAAA,GAAAA,qBACN2qI,MAAO,yBAET,CACEpoI,KAAMvC,EAAAA,GAAAA,8BACN2qI,MAAO,2BAET,CACEpoI,KAAMvC,EAAAA,GAAAA,yBACN2qI,MAAO,sBAET,CACEpoI,KAAMvC,EAAAA,GAAAA,wBACN2qI,MAAO,sBAET,CACEpoI,KAAMvC,EAAAA,GAAAA,oBACN2qI,MAAO,iBAET,CACEpoI,KAAMvC,EAAAA,GAAAA,mBACN2qI,MAAO,0BAET,CACEpoI,KAAMvC,EAAAA,GAAAA,wBACN2qI,MAAO,qBAET,CACEpoI,KAAMvC,EAAAA,GAAAA,+BACN2qI,MAAO,uCAET,CACEpoI,KAAMvC,EAAAA,GAAAA,iCACN2qI,MAAO,6CAET,CACEpoI,KAAMvC,EAAAA,GAAAA,mBACN2qI,MAAO,iBAIEk+B,EAAeD,EAAuBrlJ,QAAQ9gB,IAAI,SASlDyY,EAAqBpb,IAChC,IAAKA,EACH,OAAO+oK,EAGT,MAAMn+H,EAAQk+H,EAAuB1+J,MAAKkP,IAA6C,IAAtCtZ,EAAa2C,IAAI2W,EAAI3W,IAAI,WAE1E,OAAIioC,EACKA,EAAMjoC,IAAI,SAhBG,WAmBP,C,8LC7EV,MAAMq0I,EAAcA,IAAM/9I,OAAO49I,SAAS,EAAG,GAEvC1c,EAAiB,SAACvyI,GAA6C,IAAzCohL,EAAQz7K,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,SAAU07K,EAAK17K,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,QAC9D,MAAMmiC,EAAKn0B,SAASS,eAAepU,GAE/B8nC,GACFA,EAAGyqG,eAAe,CAAE6uC,WAAUC,SAElC,EAqCaC,EAAqBC,IAChC,MAAMzqF,EAAUnjF,SAASS,eAAemtK,GAEpCzqF,IACFA,EAAQ0qF,UAAY,EACtB,EAGWC,EAAsBF,IACjB5tK,SAASS,eAAemtK,GAChCG,WAAa,CAAC,EAGXC,EAAgBA,CAACJ,EAAWK,KACvC,MAAM9qF,EAAUnjF,SAASS,eAAemtK,GAExC,OAAIzqF,GACFA,EAAQ0qF,WAAaI,EAEd,CAAC9qF,EAAQ0qF,UAAW1qF,EAAQ+qF,aAAc/qF,EAAQgrF,eAGpD,EAAE,EAGEC,EAAiBA,CAACR,EAAWK,KACxC,MAAM9qF,EAAUnjF,SAASS,eAAemtK,GAExC,OAAIzqF,GACFA,EAAQ4qF,YAAcE,EAEf,CAAC9qF,EAAQ4qF,WAAY5qF,EAAQkrF,YAAalrF,EAAQmrF,cAGpD,EAAE,C,8IC9EJ,MAAM1mE,EAAa,SAAA13G,GAAA,IACvBg4B,KAAU23I,GAAK3vK,EAChB4F,EAAM9D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGkwF,UAAUgB,SAAQ,YACbhxF,IAAVg2B,EAAsB,GAAKA,EAAMqmJ,kBAAkBz4K,GAAU+pK,EAAK9+H,KAAK,GAAG,EAEnEkoC,EAASA,CAACulG,EAASC,IAAY,GAAGD,KAAc,GAAGC,IAEnDC,EAAUA,CAACC,EAAQ18K,IAAY08K,EAAO18K,OAASA,EAAS,GAAG08K,EAAO3pI,MAAM,EAAG/yC,EAAS,QAAU08K,EAE9FC,EAAcD,GAAUA,EAAOnwJ,QAAQ,YAAYqwJ,GAAM,IAAIA,EAAGnzJ,iB,0MCN7E,MAAMyoB,EAAsB/rC,GAASA,EAAM0pC,QAAQh4B,MAAM,CAAC,SAAU,eAE9DwC,EAAqBlU,GAASA,EAAM+O,OAAOC,IAAI,mBAErD,IAAI0nK,EACAC,EACAC,EAEJ,MAuBanO,EAAmBzwK,IAC9B,GAAc,OAAVA,EACF,OAXE4+K,IAIJA,EAAoB7qI,EAAoBx4C,EAAAA,EAAAA,YAAkBkjB,MAAK0jB,GAAwB,MAAnBA,EAAEnrB,IAAI,WAAmBA,IAAI,SAE1F4nK,GAQP,MAAOphG,EAAQyQ,GA5BS4wF,MACxB,GAAIH,GAAeC,EACjB,MAAO,CAACD,EAAaC,GAGvB,MAAM18I,EAAa8R,EAAoBx4C,EAAAA,EAAAA,YAAkByT,QAAOmzB,GAAwB,MAAnBA,EAAEnrB,IAAI,WAK3E,OAHA0nK,EAAcz8I,EAAWvlB,KAAIylB,GAAKA,EAAEnrB,IAAI,WAAU/F,OAClD0tK,EAAa18I,EAAWvlB,KAAIylB,GAAKA,EAAEnrB,IAAI,WAAU/F,OAE1C,CAACytK,EAAaC,EAAW,EAkBRE,GAExB,OAAOC,EAAAA,EAAAA,KAActhG,OAAOA,GAAQyQ,MAAMA,EAAnC6wF,CAA0C9+K,EAAM,EAG5C++K,EAA2B/tJ,GAClBA,EACjBha,IAAI,iBACJ0F,KAAIyU,GAAKA,EAAEna,IAAI,cACfhI,QAAOmzB,GAAKA,SAAuC,MAANA,IAC7Czf,QAAO,CAACC,EAAKwf,IAAMxf,EAAMwf,GAAG,GAEVnR,EAAKha,IAAI,iBAAiB+U,KAGpCizJ,EAAgChuJ,GAAQy/I,EAAiBsO,EAAyB/tJ,IAElFiuJ,EAAyBjyK,IACpC,IAAI4qH,EAAQ,EAGVA,EADE5qH,IAAWuE,EAAAA,GAAAA,UACuBhW,EAAAA,EAAAA,WAxDWwb,OAAOC,IAAI,6BA0DlDkF,EAAmB3gB,EAAAA,EAAAA,YAG7Bq8H,EAAQA,GAAS,EAEjB,MAAM31F,EAAa8R,EAAoBx4C,EAAAA,EAAAA,YAAkByT,QAAOmzB,GAAwB,MAAnBA,EAAEnrB,IAAI,WAErEqgE,GAAOugD,EAAQ,GAAK,EACpB73F,GAAa,EAAPs3C,EAEZ,OAAOp1C,EAAWjzB,QAAOmzB,GAAKA,EAAEnrB,IAAI,UAAY+oB,GAAOoC,EAAEnrB,IAAI,UAAYqgE,GAAI,EAGlE6nG,EAAsBC,GAAa,GAAGA,IAAY5zJ,SAAS,S,wBC7ExE,IAAI7O,EAAM,CACT,OAAQ,MACR,UAAW,MACX,UAAW,MACX,UAAW,MACX,OAAQ,MACR,OAAQ,OAIT,SAAS0iK,EAAeC,GACvB,IAAIpjL,EAAKqjL,EAAsBD,GAC/B,OAAOE,EAAoBtjL,EAC5B,CACA,SAASqjL,EAAsBD,GAC9B,IAAIE,EAAoBt1I,EAAEvtB,EAAK2iK,GAAM,CACpC,IAAIrxK,EAAI,IAAIvE,MAAM,uBAAyB41K,EAAM,KAEjD,MADArxK,EAAEoqB,KAAO,mBACHpqB,CACP,CACA,OAAO0O,EAAI2iK,EACZ,CACAD,EAAez2K,KAAO,WACrB,OAAOD,OAAOC,KAAK+T,EACpB,EACA0iK,EAAevyK,QAAUyyK,EACzBtyK,EAAOC,QAAUmyK,EACjBA,EAAenjL,GAAK,K","sources":["webpack://groot/./src/actions/administration.js","webpack://groot/./src/actions/ai.js","webpack://groot/./src/actions/analysis.js","webpack://groot/./src/actions/anewstip.js","webpack://groot/./src/actions/api_keys.js","webpack://groot/./src/actions/app.js","webpack://groot/./src/actions/auth.js","webpack://groot/./src/actions/charts.js","webpack://groot/./src/actions/config.js","webpack://groot/./src/actions/contact_management.js","webpack://groot/./src/actions/content_desk.js","webpack://groot/./src/actions/custom_tags.js","webpack://groot/./src/actions/darknet.js","webpack://groot/./src/actions/dashboard.js","webpack://groot/./src/actions/email_templates_library.js","webpack://groot/./src/actions/environment.js","webpack://groot/./src/actions/export.js","webpack://groot/./src/actions/filter.js","webpack://groot/./src/actions/identity_sets.js","webpack://groot/./src/actions/influencers.js","webpack://groot/./src/actions/mailing_lists.js","webpack://groot/./src/actions/media_reviews.js","webpack://groot/./src/actions/navigation.js","webpack://groot/./src/actions/news.js","webpack://groot/./src/actions/notifications.js","webpack://groot/./src/actions/page_identities.js","webpack://groot/./src/actions/personal_settings.js","webpack://groot/./src/actions/publications.js","webpack://groot/./src/actions/saved_charts.js","webpack://groot/./src/actions/saved_dashboard.js","webpack://groot/./src/actions/saved_searches.js","webpack://groot/./src/actions/shopping_cart.js","webpack://groot/./src/actions/subscriptions.js","webpack://groot/./src/actions/survey.js","webpack://groot/./src/actions/themax.js","webpack://groot/./src/actions/ui.js","webpack://groot/./src/actions/unsplash.js","webpack://groot/./src/actions/user.js","webpack://groot/./src/api/bff.js","webpack://groot/./src/components/loadable/index.js","webpack://groot/./src/utils/tracking.js","webpack://groot/./src/index.js","webpack://groot/./src/utils/embedded_charts.js","webpack://groot/./src/reducers/news/view_config.js","webpack://groot/./src/selectors/anewstip.js","webpack://groot/./src/selectors/config.js","webpack://groot/./src/selectors/contact_management.js","webpack://groot/./src/selectors/content_desk.js","webpack://groot/./src/selectors/environment.js","webpack://groot/./src/selectors/user.js","webpack://groot/./src/selectors/routing.js","webpack://groot/./src/selectors/app.js","webpack://groot/./src/selectors/device.js","webpack://groot/./src/selectors/news/data.js","webpack://groot/./src/selectors/news/export.js","webpack://groot/./src/selectors/custom_tags.js","webpack://groot/./src/selectors/news/shopping_cart.js","webpack://groot/./src/selectors/news/media_review_detail.js","webpack://groot/./src/selectors/news/ui.js","webpack://groot/./src/selectors/news/edit_news.js","webpack://groot/./src/selectors/news/shopping_news.js","webpack://groot/./src/selectors/news/aggregations.js","webpack://groot/./src/selectors/news/channel_status.js","webpack://groot/./src/selectors/filters.js","webpack://groot/./src/selectors/subscriptions.js","webpack://groot/./src/selectors/influencers.js","webpack://groot/./src/selectors/publications.js","webpack://groot/./src/selectors/media_reviews.js","webpack://groot/./src/selectors/i18n.js","webpack://groot/./src/selectors/identity_sets.js","webpack://groot/./src/selectors/page_identities.js","webpack://groot/./src/selectors/statics.js","webpack://groot/./src/selectors/darknet.js","webpack://groot/./src/selectors/dashboard.js","webpack://groot/./src/selectors/saved_dashboard.js","webpack://groot/./src/selectors/ai.js","webpack://groot/./src/selectors/calculated.js","webpack://groot/./src/selectors/news/charts/chart_dialog.js","webpack://groot/./src/selectors/news/charts/index.js","webpack://groot/./src/selectors/news/analysis.js","webpack://groot/./src/selectors/news/filter_timeline.js","webpack://groot/./src/selectors/news/index.js","webpack://groot/./src/selectors/mailing_lists.js","webpack://groot/./src/selectors/saved_charts.js","webpack://groot/./src/selectors/personal_settings.js","webpack://groot/./src/selectors/notifications.js","webpack://groot/./src/selectors/email_templates_library.js","webpack://groot/./src/selectors/unsplash.js","webpack://groot/./src/selectors/administration.js","webpack://groot/./src/selectors/news/view_config.js","webpack://groot/./src/selectors/saved_searches.js","webpack://groot/./src/selectors/themax.js","webpack://groot/./src/selectors/whitelabel.js","webpack://groot/./src/static/constants/index.js","webpack://groot/./src/static/facebook_analytics_charts.js","webpack://groot/./src/static/facebook_post_config.js","webpack://groot/./src/static/google_analytics_charts.js","webpack://groot/./src/static/image_links.js","webpack://groot/./src/static/linked_in_analytics_charts.js","webpack://groot/./src/static/linked_in_post_config.js","webpack://groot/./src/static/master_config.js","webpack://groot/./src/static/moz_charts.js","webpack://groot/./src/static/ots_body_config.js","webpack://groot/./src/static/time_zones.js","webpack://groot/./src/static/twitter_analytics_charts.js","webpack://groot/./src/static/youtube_analytics_charts.js","webpack://groot/./src/store/configureStore.js","webpack://groot/./src/utils/cookieHelper.js","webpack://groot/./src/reducers/app.js","webpack://groot/./src/utils/filename.js","webpack://groot/./src/static/themes.js","webpack://groot/./src/reducers/config.js","webpack://groot/./src/reducers/custom_tags/ui.js","webpack://groot/./src/reducers/custom_tags/data.js","webpack://groot/./src/reducers/custom_tags/detail/data.js","webpack://groot/./src/reducers/custom_tags/detail/index.js","webpack://groot/./src/reducers/custom_tags/assign_custom_tags_to_news.js","webpack://groot/./src/reducers/custom_tags/assign_custom_tags_to_group.js","webpack://groot/./src/reducers/custom_tags/groups/ui.js","webpack://groot/./src/reducers/custom_tags/groups/data.js","webpack://groot/./src/reducers/custom_tags/groups/index.js","webpack://groot/./src/reducers/custom_tags/index.js","webpack://groot/./src/reducers/dashboard/ui.js","webpack://groot/./src/reducers/dashboard/data.js","webpack://groot/./src/reducers/dashboard/selected.js","webpack://groot/./src/reducers/dashboard/edit.js","webpack://groot/./src/reducers/dashboard/previous.js","webpack://groot/./src/reducers/dashboard/drilldown/ui.js","webpack://groot/./src/reducers/dashboard/drilldown/data.js","webpack://groot/./src/reducers/dashboard/drilldown/index.js","webpack://groot/./src/reducers/dashboard/selected_chart/data.js","webpack://groot/./src/reducers/dashboard/selected_chart/ui.js","webpack://groot/./src/reducers/dashboard/selected_chart/index.js","webpack://groot/./src/reducers/dashboard/index.js","webpack://groot/./src/reducers/device.js","webpack://groot/./src/reducers/environment.js","webpack://groot/./src/actions/whitelabel.js","webpack://groot/./src/reducers/i18n.js","webpack://groot/./src/reducers/identity_sets/ui.js","webpack://groot/./src/reducers/identity_sets/data.js","webpack://groot/./src/reducers/identity_sets/selected_identity.js","webpack://groot/./src/reducers/identity_sets/selected_identity_set.js","webpack://groot/./src/reducers/identity_sets/index.js","webpack://groot/./src/reducers/influencers/ui.js","webpack://groot/./src/reducers/influencers/data.js","webpack://groot/./src/reducers/influencers/details/ui.js","webpack://groot/./src/reducers/influencers/details/data.js","webpack://groot/./src/reducers/influencers/details/index.js","webpack://groot/./src/reducers/influencers/add_to_contacts/ui.js","webpack://groot/./src/reducers/influencers/add_to_contacts/data.js","webpack://groot/./src/reducers/influencers/add_to_contacts/index.js","webpack://groot/./src/reducers/influencers/index.js","webpack://groot/./src/reducers/mailing_lists/data.js","webpack://groot/./src/reducers/mailing_lists/dialogs/ui.js","webpack://groot/./src/reducers/mailing_lists/dialogs/data.js","webpack://groot/./src/reducers/mailing_lists/dialogs/index.js","webpack://groot/./src/reducers/mailing_lists/index.js","webpack://groot/./src/reducers/media_reviews/data.js","webpack://groot/./src/reducers/media_reviews/detail/ui.js","webpack://groot/./src/utils/multidrag.js","webpack://groot/./src/reducers/media_reviews/detail/data.js","webpack://groot/./src/reducers/media_reviews/detail/selected_news.js","webpack://groot/./src/reducers/media_reviews/detail/snapshot.js","webpack://groot/./src/reducers/media_reviews/detail/index.js","webpack://groot/./src/reducers/media_reviews/filter.js","webpack://groot/./src/reducers/media_reviews/index.js","webpack://groot/./src/reducers/news/aggregations/ui.js","webpack://groot/./src/reducers/news/aggregations/data.js","webpack://groot/./src/reducers/news/aggregations/index.js","webpack://groot/./src/reducers/news/analysis/ui.js","webpack://groot/./src/reducers/news/analysis/data.js","webpack://groot/./src/reducers/news/analysis/metrics.js","webpack://groot/./src/static/allowed_chart_configs.js","webpack://groot/./src/reducers/news/analysis/chart.js","webpack://groot/./src/reducers/news/analysis/index.js","webpack://groot/./src/reducers/news/charts/ui.js","webpack://groot/./src/reducers/news/charts/data.js","webpack://groot/./src/reducers/news/charts/previous.js","webpack://groot/./src/reducers/news/charts/ai_chart_analysis.js","webpack://groot/./src/reducers/news/charts/index.js","webpack://groot/./src/reducers/news/count.js","webpack://groot/./src/reducers/news/data.js","webpack://groot/./src/reducers/news/deleted_news_ids.js","webpack://groot/./src/reducers/news/edit_news/ui.js","webpack://groot/./src/reducers/news/edit_news/data.js","webpack://groot/./src/reducers/news/edit_news/index.js","webpack://groot/./src/reducers/news/export/ui.js","webpack://groot/./src/reducers/news/export/settings.js","webpack://groot/./src/reducers/news/export/progress.js","webpack://groot/./src/reducers/news/export/last_export.js","webpack://groot/./src/reducers/news/export/dispatch_log/data.js","webpack://groot/./src/reducers/news/export/dispatch_log/ui.js","webpack://groot/./src/reducers/news/export/dispatch_log/index.js","webpack://groot/./src/reducers/news/export/index.js","webpack://groot/./src/reducers/news/filter.js","webpack://groot/./src/reducers/news/filter_timeline.js","webpack://groot/./src/reducers/news/groups.js","webpack://groot/./src/reducers/news/group_sort_order.js","webpack://groot/./src/reducers/news/paging.js","webpack://groot/./src/reducers/news/selected_news_ids.js","webpack://groot/./src/reducers/news/shopping_cart/ui.js","webpack://groot/./src/reducers/news/shopping_cart/data.js","webpack://groot/./src/reducers/news/shopping_cart/selected_news.js","webpack://groot/./src/reducers/news/shopping_cart/sorting.js","webpack://groot/./src/reducers/news/shopping_cart/cluster.js","webpack://groot/./src/reducers/news/shopping_cart/index.js","webpack://groot/./src/reducers/news/shopping_news/ui.js","webpack://groot/./src/reducers/news/shopping_news/data.js","webpack://groot/./src/reducers/news/shopping_news/index.js","webpack://groot/./src/reducers/news/static_charts.js","webpack://groot/./src/reducers/news/sort_by.js","webpack://groot/./src/reducers/news/sort_direction.js","webpack://groot/./src/reducers/news/total.js","webpack://groot/./src/reducers/news/ui.js","webpack://groot/./src/reducers/news/index.js","webpack://groot/./src/reducers/page_identities/ui.js","webpack://groot/./src/reducers/page_identities/data.js","webpack://groot/./src/reducers/page_identities/statistics/data.js","webpack://groot/./src/reducers/page_identities/statistics/ui.js","webpack://groot/./src/reducers/page_identities/statistics/index.js","webpack://groot/./src/reducers/page_identities/posts/data.js","webpack://groot/./src/reducers/page_identities/posts/index.js","webpack://groot/./src/reducers/page_identities/index.js","webpack://groot/./src/reducers/publications/ui.js","webpack://groot/./src/reducers/publications/data.js","webpack://groot/./src/reducers/publications/index.js","webpack://groot/./src/reducers/saved_searches/data.js","webpack://groot/./src/reducers/saved_searches/timelines.js","webpack://groot/./src/reducers/saved_searches/dispatches.js","webpack://groot/./src/reducers/saved_searches/ui.js","webpack://groot/./src/reducers/saved_searches/dialogs/ui.js","webpack://groot/./src/reducers/saved_searches/dialogs/data.js","webpack://groot/./src/reducers/saved_searches/dialogs/index.js","webpack://groot/./src/reducers/saved_searches/feeds/data.js","webpack://groot/./src/reducers/saved_searches/feeds/ui.js","webpack://groot/./src/reducers/saved_searches/feeds/index.js","webpack://groot/./src/reducers/saved_searches/index.js","webpack://groot/./src/reducers/statics.js","webpack://groot/./src/reducers/subscriptions/topics.js","webpack://groot/./src/reducers/subscriptions/editions.js","webpack://groot/./src/reducers/subscriptions/index.js","webpack://groot/./src/reducers/user.js","webpack://groot/./src/reducers/whitelabel.js","webpack://groot/./src/reducers/saved_dashboard/ui.js","webpack://groot/./src/reducers/saved_dashboard/data.js","webpack://groot/./src/reducers/saved_dashboard/index.js","webpack://groot/./src/reducers/saved_charts/ui.js","webpack://groot/./src/reducers/saved_charts/data.js","webpack://groot/./src/reducers/saved_charts/chart/ui.js","webpack://groot/./src/reducers/saved_charts/chart/data.js","webpack://groot/./src/reducers/saved_charts/chart/index.js","webpack://groot/./src/reducers/saved_charts/index.js","webpack://groot/./src/reducers/darknet/ui.js","webpack://groot/./src/utils/darknetCharts.js","webpack://groot/./src/reducers/darknet/data.js","webpack://groot/./src/reducers/darknet/filter.js","webpack://groot/./src/reducers/darknet/score_query_form.js","webpack://groot/./src/reducers/darknet/search_query_form.js","webpack://groot/./src/reducers/darknet/index.js","webpack://groot/./src/reducers/personal_settings/ui.js","webpack://groot/./src/reducers/personal_settings/index.js","webpack://groot/./src/reducers/content_desk/ui.js","webpack://groot/./src/reducers/content_desk/filter.js","webpack://groot/./src/reducers/content_desk/data.js","webpack://groot/./src/reducers/content_desk/calendar/ui.js","webpack://groot/./src/reducers/content_desk/calendar/data.js","webpack://groot/./src/reducers/content_desk/calendar/index.js","webpack://groot/./src/reducers/content_desk/index.js","webpack://groot/./src/reducers/contact_management/ui.js","webpack://groot/./src/reducers/contact_management/filter.js","webpack://groot/./src/reducers/contact_management/data.js","webpack://groot/./src/reducers/contact_management/index.js","webpack://groot/./src/reducers/email_templates_library/ui.js","webpack://groot/./src/reducers/email_templates_library/data.js","webpack://groot/./src/reducers/email_templates_library/filter.js","webpack://groot/./src/reducers/email_templates_library/index.js","webpack://groot/./src/reducers/notifications/ui.js","webpack://groot/./src/reducers/notifications/data.js","webpack://groot/./src/reducers/notifications/filter.js","webpack://groot/./src/reducers/notifications/index.js","webpack://groot/./src/reducers/unsplash/ui.js","webpack://groot/./src/reducers/unsplash/filter.js","webpack://groot/./src/reducers/unsplash/data.js","webpack://groot/./src/reducers/unsplash/index.js","webpack://groot/./src/reducers/anewstip/ui.js","webpack://groot/./src/reducers/anewstip/statics.js","webpack://groot/./src/reducers/anewstip/search.js","webpack://groot/./src/reducers/anewstip/filters.js","webpack://groot/./src/reducers/anewstip/selected.js","webpack://groot/./src/reducers/anewstip/data.js","webpack://groot/./src/reducers/anewstip/imports.js","webpack://groot/./src/reducers/anewstip/drill_down_data.js","webpack://groot/./src/reducers/anewstip/drill_down_filters.js","webpack://groot/./src/reducers/anewstip/drill_down_history.js","webpack://groot/./src/reducers/anewstip/index.js","webpack://groot/./src/actions/ust.js","webpack://groot/./src/reducers/ust.js","webpack://groot/./src/reducers/administration/data.js","webpack://groot/./src/reducers/administration/ui.js","webpack://groot/./src/reducers/administration/filter.js","webpack://groot/./src/reducers/administration/index.js","webpack://groot/./src/reducers/themax/data.js","webpack://groot/./src/reducers/themax/filter.js","webpack://groot/./src/reducers/themax/ui.js","webpack://groot/./src/reducers/themax/index.js","webpack://groot/./src/reducers/ai/settings.js","webpack://groot/./src/reducers/ai/analysis.js","webpack://groot/./src/reducers/ai/ui.js","webpack://groot/./src/reducers/ai/index.js","webpack://groot/./src/reducers/index.js","webpack://groot/./src/utils/html2canvas.js","webpack://groot/./src/utils/downloadSvg.js","webpack://groot/./src/api/version.js","webpack://groot/./src/utils/jsPdf.js","webpack://groot/./src/sagas/app.js","webpack://groot/./src/utils/sagas.js","webpack://groot/./src/sagas/charts.js","webpack://groot/./src/sagas/saved_searches.js","webpack://groot/./src/utils/browser.js","webpack://groot/./src/sagas/dashboard.js","webpack://groot/./src/sagas/analysis.js","webpack://groot/./src/sagas/api_keys.js","webpack://groot/./src/sagas/auth.js","webpack://groot/./src/sagas/config.js","webpack://groot/./src/utils/themes.js","webpack://groot/./src/sagas/custom_tags.js","webpack://groot/./src/sagas/edit_mailing_list.js","webpack://groot/./src/sagas/edit_news.js","webpack://groot/./src/api/stage.js","webpack://groot/./src/api/whitelabel.js","webpack://groot/./src/sagas/environment.js","webpack://groot/./src/sagas/export.js","webpack://groot/./src/sagas/filter_timeline.js","webpack://groot/./src/actions/ga.js","webpack://groot/./src/utils/ga.js","webpack://groot/./src/sagas/ga.js","webpack://groot/./src/sagas/identity_sets.js","webpack://groot/./src/api/contacts_management.js","webpack://groot/./src/sagas/influencers.js","webpack://groot/./src/utils/multiselect.js","webpack://groot/./src/utils/sorting.js","webpack://groot/./src/sagas/media_review.js","webpack://groot/./src/sagas/navigation.js","webpack://groot/./src/sagas/news.js","webpack://groot/./src/sagas/page_identities.js","webpack://groot/./src/sagas/publications.js","webpack://groot/./src/sagas/saved_dashboard.js","webpack://groot/./src/sagas/saved_charts.js","webpack://groot/./src/utils/localStorage.js","webpack://groot/./src/sagas/shopping_cart.js","webpack://groot/./src/sagas/shopping_news.js","webpack://groot/./src/sagas/subscriptions.js","webpack://groot/./src/sagas/ui.js","webpack://groot/./src/sagas/user.js","webpack://groot/./src/sagas/darknet/main.js","webpack://groot/./src/sagas/darknet/filter.js","webpack://groot/./src/sagas/darknet/search.js","webpack://groot/./src/sagas/darknet/index.js","webpack://groot/./src/api/content_desk.js","webpack://groot/./src/sagas/content_desk/main.js","webpack://groot/./src/sagas/content_desk/filter.js","webpack://groot/./src/sagas/content_desk/search.js","webpack://groot/./src/sagas/content_desk/calendar.js","webpack://groot/./src/sagas/content_desk/index.js","webpack://groot/./src/sagas/contact_management/main.js","webpack://groot/./src/sagas/contact_management/filter.js","webpack://groot/./src/sagas/contact_management/search.js","webpack://groot/./src/sagas/contact_management/index.js","webpack://groot/./src/sagas/notifications.js","webpack://groot/./src/sagas/survey.js","webpack://groot/./src/utils/anewstip.js","webpack://groot/./src/sagas/anewstip/search.js","webpack://groot/./src/sagas/anewstip/import.js","webpack://groot/./src/sagas/anewstip/index.js","webpack://groot/./src/sagas/email_templates_library/main.js","webpack://groot/./src/sagas/email_templates_library/search.js","webpack://groot/./src/sagas/email_templates_library/filter.js","webpack://groot/./src/sagas/email_templates_library/index.js","webpack://groot/./src/sagas/unsplash/search.js","webpack://groot/./src/sagas/unsplash/main.js","webpack://groot/./src/sagas/unsplash/index.js","webpack://groot/./src/utils/ust.js","webpack://groot/./src/sagas/ust.js","webpack://groot/./src/sagas/administration/main.js","webpack://groot/./src/sagas/administration/search.js","webpack://groot/./src/sagas/administration/index.js","webpack://groot/./src/sagas/themax/main.js","webpack://groot/./src/sagas/themax/filter.js","webpack://groot/./src/sagas/themax/search.js","webpack://groot/./src/sagas/themax/ui.js","webpack://groot/./src/utils/themax.js","webpack://groot/./src/sagas/themax/saved_searches.js","webpack://groot/./src/sagas/themax/index.js","webpack://groot/./src/sagas/ai.js","webpack://groot/./src/sagas/index.js","webpack://groot/./src/utils/middlewares.js","webpack://groot/./src/store/configureHistory.js","webpack://groot/./src/store/configureStore.production.js","webpack://groot/./src/store/index.js","webpack://groot/./src/utils/ai_entities.js","webpack://groot/./src/utils/api.js","webpack://groot/./src/utils/chart.js","webpack://groot/./src/utils/charts.js","webpack://groot/./src/utils/createLoadingAction.js","webpack://groot/./src/utils/custom_kpis.js","webpack://groot/./src/utils/darknet.js","webpack://groot/./src/utils/data_source.js","webpack://groot/./src/utils/date.js","webpack://groot/./src/utils/dom.js","webpack://groot/./src/utils/download.js","webpack://groot/./src/utils/error.js","webpack://groot/./src/utils/immutable.js","webpack://groot/./src/utils/array_move.js","webpack://groot/./src/utils/lexicalEditorHelper.js","webpack://groot/./src/utils/loadable.js","webpack://groot/./src/utils/locale.js","webpack://groot/./src/utils/mailgun.js","webpack://groot/./src/utils/normalizr.js","webpack://groot/./src/utils/page_identities.js","webpack://groot/./src/utils/reselect.js","webpack://groot/./src/utils/routing.js","webpack://groot/./src/utils/scroll.js","webpack://groot/./src/utils/string.js","webpack://groot/./src/utils/tonality.js","webpack://groot/./node_modules/moment/locale/ sync ^\\.\\/(en-gb%7Cen-ca%7Cen-ie%7Cde%7Cfr%7Cru)$"],"sourcesContent":["/* eslint-disable import/named */\nimport { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'ADMINISTRATION'\nlet prefix = defaultPrefix\n\n// CD_SETTINGS/ALLOWED_DOMAINS DATA\nprefix = `${defaultPrefix}/CD_SETTINGS/ALLOWED_DOMAINS/DATA/`\n\nexport const setAllowedDomains = createAction(`${prefix}SET_ALLOWED_DOMAINS`)\nexport const setAllowedDomainFormData = createAction(`${prefix}SET_FORM_DATA`)\n\nexport const createAllowedDomainStart = createAction(`${prefix}CREATE_START`)\nexport const createAllowedDomainSuccess = createAction(`${prefix}CREATE_SUCCESS`)\nexport const createAllowedDomainError = createAction(`${prefix}CREATE_ERROR`)\n\nexport const deleteAllowedDomainStart = createAction(`${prefix}DELETE_START`)\nexport const deleteAllowedDomainSuccess = createAction(`${prefix}DELETE_SUCCESS`)\nexport const deleteAllowedDomainError = createAction(`${prefix}DELETE_ERROR`)\n\nexport const updateAllowedDomainStart = createAction(`${prefix}UPDATE_START`)\nexport const updateAllowedDomainSuccess = createAction(`${prefix}UPDATE_SUCCESS`)\nexport const updateAllowedDomainError = createAction(`${prefix}UPDATE_ERROR`)\n\nexport const searchAllowedDomainsStart = createAction(`${prefix}SEARCH_START`)\nexport const searchAllowedDomainsSuccess = createAction(`${prefix}SEARCH_SUCCESS`)\nexport const searchAllowedDomainsError = createAction(`${prefix}SEARCH_ERROR`)\n\nexport const refreshStatusAllowedDomainStart = createAction(`${prefix}REFRESH_STATUS_START`)\nexport const refreshStatusAllowedDomainSuccess = createAction(`${prefix}REFRESH_STATUS_SUCCESS`)\nexport const refreshStatusAllowedDomainError = createAction(`${prefix}REFRESH_STATUS_ERROR`)\n\nexport const fetchAllowedDomainStatusStart = createAction(`${prefix}FETCH_STATUS_START`)\nexport const fetchAllowedDomainStatusSuccess = createAction(`${prefix}FETCH_STATUS_SUCCESS`)\nexport const fetchAllowedDomainStatusError = createAction(`${prefix}FETCH_STATUS_ERROR`)\n\nexport const createDefaultAllowedDomainsStart = createAction(`${prefix}CREATE_DEFAULT_START`)\nexport const createDefaultAllowedDomainsSuccess = createAction(`${prefix}CREATE_DEFAULT_SUCCESS`)\nexport const createDefaultAllowedDomainsError = createAction(`${prefix}CREATE_DEFAULT_ERROR`)\n\n// CD_SETTINGS/ALLOWED_DOMAINS UI\nprefix = `${defaultPrefix}/CD_SETTINGS/ALLOWED_DOMAINS/UI/`\nexport const setAllowedDomainsQuickSearchQuery = createAction(`${prefix}SET_QUICK_SEARCH_QUERY`)\nexport const setNewAllowedDomain = createAction(`${prefix}SET_NEW_ALLOWED_DOMAIN`)\nexport const setNewAllowedDomainRegion = createAction(`${prefix}SET_NEW_ALLOWED_DOMAIN_REGION`)\nexport const setNewAllowedDomainSenderDomain = createAction(`${prefix}SET_NEW_ALLOWED_DOMAIN_SENDER_DOMAIN`)\nexport const toggleAllowedDomainsDeleteMode = createAction(`${prefix}TOGGLE_DELETE_MODE`)\nexport const toggleAllowedDomainsInfoDialog = createAction(`${prefix}TOGGLE_INFO_DIALOG`)\nexport const openAllowedDomainsStatusDialog = createAction(`${prefix}OPEN_STATUS_DIALOG`)\nexport const closeAllowedDomainsStatusDialog = createAction(`${prefix}CLOSE_STATUS_DIALOG`)\n\n// CD_SETTINGS/ALLOWED_DOMAINS FILTER\nprefix = `${defaultPrefix}CD_SETTINGS/ALLOWED_DOMAINS/FILTER/`\nexport const setAllowedDomainsPage = createAction(`${prefix}SET_PAGE`)\n\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'AI/'\nlet prefix = defaultPrefix\n\nprefix = `${defaultPrefix}SETTINGS/`\nexport const setOption = createAction(`${prefix}SET_OPTION`)\n\nprefix = `${defaultPrefix}ANALYSIS/`\nexport const aiAnalysisStart = createAction(`${prefix}ANALYSIS_START`)\nexport const aiAnalysisError = createAction(`${prefix}ANALYSIS_ERROR`)\nexport const aiAnalysisSuccess = createAction(`${prefix}ANALYSIS_SUCCESS`)\nexport const showAiAnalysisDialog = createAction(`${prefix}SHOW_ANALYSIS_DIALOG`)\nexport const hideAiAnalysisDialog = createAction(`${prefix}HIDE_ANALYSIS_DIALOG`)\nexport const setAiAnalysis = createAction(`${prefix}SET_ANALYSIS`)\n\nprefix = `${defaultPrefix}UI/`\nexport const showOrderSummariesDialog = createAction(`${prefix}SHOW_ORDER_SUMMARIES_DIALOG`)\nexport const hideOrderSummariesDialog = createAction(`${prefix}HIDE_ORDER_SUMMARIES_DIALOG`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'NEWS/ANALYSIS/'\nlet prefix = defaultPrefix\n\nprefix = `${defaultPrefix}DATA/`\nexport const applyAnalysisFilter = createAction(`${prefix}APPLY_ANALYSIS_FILTER`)\nexport const setAnalysisFilter = createAction(`${prefix}SET_ANALYSIS_FILTER`)\nexport const toggleStatementTonality = createAction(`${prefix}TOGGLE_STATEMENT_TONALITY`)\nexport const pushChartToDashboardStart = createAction(`${prefix}PUSH_CHART_TO_DASHBOARD_START`)\nexport const pushChartToDashboardError = createAction(`${prefix}PUSH_CHART_TO_DASHBOARD_ERROR`)\nexport const pushChartToDashboardSuccess = createAction(`${prefix}PUSH_CHART_TO_DASHBOARD_SUCCESS`)\n\nprefix = `${defaultPrefix}UI/`\nexport const setExpandedNodes = createAction(`${prefix}SET_EXPANDED_NODES`)\nexport const addExpandedNodes = createAction(`${prefix}ADD_EXPANDED_NODES`)\nexport const removeExpandedNodes = createAction(`${prefix}REMOVE_EXPANDED_NODES`)\nexport const toggleExpandedPanel = createAction(`${prefix}TOGGLE_EXPANDED_PANEL`)\nexport const toggleUseMediaReviewCodes = createAction(`${prefix}TOGGLE_USE_MEDIA_REVIEW_CODES`)\nexport const showPushChartToDashboardDialog = createAction(`${prefix}SHOW_PUSH_CHART_TO_DASHBOARD_DIALOG`)\nexport const hidePushChartToDashboardDialog = createAction(`${prefix}HIDE_PUSH_CHART_TO_DASHBOARD_DIALOG`)\n\nprefix = `${defaultPrefix}CHART/`\nexport const fetchChartDataStart = createAction(`${prefix}FETCH_CHART_DATA_START`)\nexport const fetchChartDataError = createAction(`${prefix}FETCH_CHART_DATA_ERROR`)\nexport const fetchChartDataSuccess = createAction(`${prefix}FETCH_CHART_DATA_SUCCESS`)\nexport const setChartFields = createAction(`${prefix}SET_CHART_FIELDS`)\nexport const setChartOpt = createAction(`${prefix}SET_CHART_OPT`)\nexport const drilldown = createAction(`${prefix}DRILLDOWN`)\n\nprefix = `${defaultPrefix}METRICS/`\nexport const fetchMetricsChartsData = createAction(`${prefix}FETCH_METRICS_CHART_DATA`)\nexport const setMetricsChartLoading = createAction(`${prefix}SET_METRICS_CHART_LOADING`)\nexport const setMetricsChartData = createAction(`${prefix}SET_METRICS_CHART_DATA`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'ANEWSTIP/'\nlet prefix = defaultPrefix\n\nexport const clearModuleData = createAction(`${prefix}CLEAR_MODULE_DATA`)\n\n// STATICS\nprefix = `${defaultPrefix}STATICS/`\n\nexport const fetchStaticsStart = createAction(`${prefix}FETCH_STATICS_START`)\nexport const fetchStaticsSuccess = createAction(`${prefix}FETCH_STATICS_SUCCESS`)\nexport const fetchStaticsError = createAction(`${prefix}FETCH_STATICS_ERROR`)\n\nexport const searchSuggestStart = createAction(`${prefix}SEARCH_SUGGEST_START`)\nexport const searchSuggestSuccess = createAction(`${prefix}SEARCH_SUGGEST_SUCCESS`)\nexport const searchSuggestError = createAction(`${prefix}SEARCH_SUGGEST_ERROR`)\n\nexport const setStatics = createAction(`${prefix}SET_STATICS`)\nexport const setSuggestions = createAction(`${prefix}SET_SUGGESTIONS`)\n\n// SEARCH\nprefix = `${defaultPrefix}SEARCH/`\n\nexport const setSearchForm = createAction(`${prefix}SET_SEARCH_FORM`)\n\nexport const combinedSearchStart = createAction(`${prefix}COMBINED_SEARCH_START`)\nexport const combinedSearchSuccess = createAction(`${prefix}COMBINED_SEARCH_SUCCESS`)\nexport const combinedSearchError = createAction(`${prefix}COMBINED_SEARCH_ERROR`)\n\nexport const searchJournalistsStart = createAction(`${prefix}SEARCH_JOURNALISTS_START`)\nexport const searchJournalistsSuccess = createAction(`${prefix}SEARCH_JOURNALISTS_SUCCESS`)\nexport const searchJournalistsError = createAction(`${prefix}SEARCH_JOURNALISTS_ERROR`)\n\nexport const searchOutletsStart = createAction(`${prefix}SEARCH_OUTLETS_START`)\nexport const searchOutletsSuccess = createAction(`${prefix}SEARCH_OUTLETS_SUCCESS`)\nexport const searchOutletsError = createAction(`${prefix}SEARCH_OUTLETS_ERROR`)\n\nexport const searchArticlesStart = createAction(`${prefix}SEARCH_ARTICLES_START`)\nexport const searchArticlesSuccess = createAction(`${prefix}SEARCH_ARTICLES_SUCCESS`)\nexport const searchArticlesError = createAction(`${prefix}SEARCH_ARTICLES_ERROR`)\n\n// FILTERS\nprefix = `${defaultPrefix}FILTERS/`\n\nexport const setFiltersForm = createAction(`${prefix}SET_FILTERS_FORM`)\nexport const resetEntityFilters = createAction(`${prefix}RESET_ENTITY_FILTERS`)\nexport const resetPaginationFilter = createAction(`${prefix}RESET_PAGINATION_FILTER`)\n\n// SELECTED\nprefix = `${defaultPrefix}SELECTED/`\n\nexport const setSelectedResults = createAction(`${prefix}SET_SELECTED_RESULTS`)\n\n// UI\nprefix = `${defaultPrefix}UI/`\n\nexport const switchSearchType = createAction(`${prefix}SWITCH_SEARCH_TYPE`)\nexport const switchResultsTab = createAction(`${prefix}SWITCH_RESULTS_TAB`)\nexport const openDrillDownDialog = createAction(`${prefix}OPEN_DRILL_DOWN_DIALOG`)\nexport const closeDrillDownDialog = createAction(`${prefix}CLOSE_DRILL_DOWN_DIALOG`)\nexport const setDrillDownEntity = createAction(`${prefix}SET_DRILL_DOWN_ENTITY`)\nexport const switchDrillDownTab = createAction(`${prefix}SWITCH_DRILL_DOWN_TAB`)\n\nexport const showDuplicateContactsDialog = createAction(`${prefix}SHOW_DUPLICATE_CONTACTS_DIALOG`)\nexport const hideDuplicateContactsDialog = createAction(`${prefix}HIDE_DUPLICATE_CONTACTS_DIALOG`)\n\nexport const lockNavigation = createAction(`${prefix}LOCK_NAVIGATION`)\nexport const setLimitedFunctionality = createAction(`${prefix}SET_LIMITED_FUNCTIONALITY`)\n\nexport const showDistributionListCreateDialog = createAction(`${prefix}SHOW_DISTRIBUTION_LIST_CREATE_DIALOG`)\nexport const hideDistributionListCreateDialog = createAction(`${prefix}HIDE_DISTRIBUTION_LIST_CREATE_DIALOG`)\n\nexport const setImportWithDistributionLists = createAction(`${prefix}SET_IMPORT_WITH_DISTRIBUTION_LISTS`)\nexport const setImportContactsForDistributionLists = createAction(`${prefix}SET_IMPORT_CONTACTS_FOR_DISTRIBUTION_LISTS`)\n\n// DATA\nprefix = `${defaultPrefix}DATA/`\n\nexport const setEntity = createAction(`${prefix}SET_ENTITY`)\n\n// IMPORT\nprefix = `${defaultPrefix}IMPORT/`\n\nexport const importStart = createAction(`${prefix}IMPORT_START`)\nexport const importSuccess = createAction(`${prefix}IMPORT_SUCCESS`)\nexport const importError = createAction(`${prefix}IMPORT_ERROR`)\n\nexport const addJournalistsToDistributionList = createAction(`${prefix}ADD_JOURNALIST_TO_DISTRIBUTION_LIST`)\n\nexport const keepContact = createAction(`${prefix}KEEP_CONTACT`)\nexport const removeContactFromDuplicateList = createAction(`${prefix}REMOVE_CONTACT_FROM_DUPLICATE_LIST`)\n\nexport const replaceContactStart = createAction(`${prefix}REPLACE_CONTACT_START`)\nexport const replaceContactSuccess = createAction(`${prefix}REPLACE_CONTACT_SUCCESS`)\nexport const replaceContactError = createAction(`${prefix}REPLACE_CONTACT_ERROR`)\n\n// DRILL DOWN FILTERS\nprefix = `${defaultPrefix}DRILL_DOWN_FILTERS/`\n\nexport const setDrillDownFiltersState = createAction(`${prefix}SET_DRILL_DOWN_FILTERS_STATE`)\nexport const setDrillDownFiltersForm = createAction(`${prefix}SET_DRILL_DOWN_FILTERS_FORM`)\nexport const toggleDrillDownTopic = createAction(`${prefix}TOGGLE_DRILL_DOWN_TOPIC`)\n\n// DRILL DOWN DATA\nprefix = `${defaultPrefix}DRILL_DOWN_DATA/`\n\nexport const drillDownRequestStart = createAction(`${prefix}DRILL_DOWN_REQUEST_START`)\nexport const drillDownRequestSuccess = createAction(`${prefix}DRILL_DOWN_REQUEST_SUCCESS`)\nexport const drillDownRequestError = createAction(`${prefix}DRILL_DOWN_REQUEST_ERROR`)\n\nexport const searchDrillDownJournalistsStart = createAction(`${prefix}SEARCH_DRILL_DOWN_JOURNALISTS_START`)\nexport const searchDrillDownJournalistsSuccess = createAction(`${prefix}SEARCH_DRILL_DOWN_JOURNALISTS_SUCCESS`)\nexport const searchDrillDownJournalistsError = createAction(`${prefix}SEARCH_DRILL_DOWN_JOURNALISTS_ERROR`)\n\nexport const searchDrillDownOutletsStart = createAction(`${prefix}SEARCH_DRILL_DOWN_OUTLETS_START`)\nexport const searchDrillDownOutletsSuccess = createAction(`${prefix}SEARCH_DRILL_DOWN_OUTLETS_SUCCESS`)\nexport const searchDrillDownOutletsError = createAction(`${prefix}SEARCH_DRILL_DOWN_OUTLETS_ERROR`)\n\nexport const searchDrillDownArticlesStart = createAction(`${prefix}SEARCH_DRILL_DOWN_ARTICLES_START`)\nexport const searchDrillDownArticlesSuccess = createAction(`${prefix}SEARCH_DRILL_DOWN_ARTICLES_SUCCESS`)\nexport const searchDrillDownArticlesError = createAction(`${prefix}SEARCH_DRILL_DOWN_ARTICLES_ERROR`)\n\nexport const setDrillDownResult = createAction(`${prefix}SET_DRILL_DOWN_RESULT`)\n\n// DRILL DOWN DATA\nprefix = `${defaultPrefix}DRILL_DOWN_HISTORY/`\n\nexport const addDrillDownFiltersToHistory = createAction(`${prefix}ADD_DRILL_DOWN_FILTERS_TO_HISTORY`)\n\nexport const drillDownHistorySearch = createAction(`${prefix}DRILL_DOWN_HISTORY_SEARCh`)\n\nexport const setDrillDownHistoryIndex = createAction(`${prefix}SET_DRILL_DOWN_HISTORY_INDEX`)\n\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'API_KEYS/'\n\nexport const submitApiKeyStart = createAction(`${prefix}SUBMIT_API_KEY_START`)\nexport const submitApiKeySuccess = createAction(`${prefix}SUBMIT_API_KEY_SUCCESS`)\nexport const submitApiKeyError = createAction(`${prefix}SUBMIT_API_KEY_ERROR`)\n\nexport const deleteApiKeyStart = createAction(`${prefix}DELETE_API_KEY_START`)\nexport const deleteApiKeySuccess = createAction(`${prefix}DELETE_API_KEY_SUCCESS`)\nexport const deleteApiKeyError = createAction(`${prefix}DELETE_API_KEY_ERROR`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'APP/'\n\nexport const genericErrorMessage = createAction(`${prefix}GENERIC_ERROR_MESSAGE`)\nexport const genericSuccessMessage = createAction(`${prefix}GENERIC_SUCCESS_MESSAGE`)\nexport const hideUndo = createAction(`${prefix}HIDE_UNDO`)\n\nexport const resetState = createAction(`${prefix}RESET_STATE`)\nexport const setActiveNewsradar = createAction(`${prefix}SET_ACTIVE_NEWSRADAR`)\nexport const setAppBarMessage = createAction(`${prefix}SET_APP_BAR_MESSAGE`)\nexport const setAppMessage = createAction(`${prefix}SET_APP_MESSAGE`)\nexport const setAppBusy = createAction(`${prefix}SET_APP_BUSY`)\nexport const setAppReady = createAction(`${prefix}SET_APP_READY`)\nexport const toggleLoading = createAction(`${prefix}TOGGLE_LOADING`)\nexport const setLoginMessage = createAction(`${prefix}SET_LOGIN_MESSAGE`)\nexport const showAppMessage = createAction(`${prefix}SHOW_APP_MESSAGE`)\nexport const showAppErrorMessage = createAction(`${prefix}SHOW_APP_ERROR_MESSAGE`)\nexport const showAppSuccessMessage = createAction(`${prefix}SHOW_APP_ERROR_MESSAGE`)\nexport const showAppSnackbarMessage = createAction(`${prefix}SHOW_APP_SNACKBAR_MESSAGE`)\nexport const triggerAppSnackbarMessage = createAction(`${prefix}TRIGGER_APP_SNACKBAR_MESSAGE`)\nexport const hideAppSnackbarMessage = createAction(`${prefix}HIDE_APP_SNACKBAR_MESSAGE`)\nexport const showUndo = createAction(`${prefix}SHOW_UNDO`)\nexport const switchNewsradar = createAction(`${prefix}SWITCH_NEWSRADAR`)\nexport const toggleNavigation = createAction(`${prefix}TOGGLE_NAVIGATION`)\nexport const undo = createAction(`${prefix}UNDO`)\n\nexport const loginRequestAborted = createAction(`${prefix}LOGIN_REQUEST_ABORTED`)\nexport const loginRequestError = createAction(`${prefix}LOGIN_REQUEST_ERROR`)\nexport const loginRequestStart = createAction(`${prefix}LOGIN_REQUEST_START`)\nexport const loginRequestSuccess = createAction(`${prefix}LOGIN_REQUEST_SUCCESS`)\nexport const logoutRequestError = createAction(`${prefix}LOGOUT_REQUEST_ERROR`)\nexport const logoutRequestStart = createAction(`${prefix}LOGOUT_REQUEST_START`)\nexport const logoutRequestSuccess = createAction(`${prefix}LOGOUT_REQUEST_SUCCESS`)\nexport const ssoRequestError = createAction(`${prefix}SSO_REQUEST_ERROR`)\nexport const ssoRequestStart = createAction(`${prefix}SSO_REQUEST_START`)\nexport const ssoRequestSuccess = createAction(`${prefix}SSO_REQUEST_SUCCESS`)\n\nexport const checkBffVersion = createAction(`${prefix}CHECK_BFF_VERSION`)\nexport const setBffVersion = createAction(`${prefix}SET_BFF_VERSION`)\nexport const forceReload = createAction(`${prefix}FORCE_RELOAD`)\n\nexport const checkViewVersion = createAction(`${prefix}CHECK_VIEW_VERSION`)\nexport const setViewVersion = createAction(`${prefix}SET_VIEW_VERSION`)\n\nexport const loadFromLocalStorage = createAction(`${prefix}LOAD_FROM_LOCAL_STORAGE`)\n\nexport const toggleSuccess = createAction(`${prefix}TOGGLE_SUCCESS`)\nexport const toggleAppMessage = createAction(`${prefix}TOGGLE_APP_MESSAGE`)\n\nexport const exception = createAction(`${prefix}EXCEPTION`)\n\nexport const uploadGeneratedFileError = createAction(`${prefix}UPLOAD_GENERATED_FILE_ERROR`)\nexport const uploadGeneratedFileStart = createAction(`${prefix}UPLOAD_GENERATED_FILE_START`)\nexport const uploadGeneratedFileSuccess = createAction(`${prefix}UPLOAD_GENERATED_FILE_SUCCESS`)\nexport const resetGeneratedFile = createAction(`${prefix}RESET_GENERATED_FILE`)\n\nexport const downloadElementAsImage = createAction(`${prefix}DOWNLOAD_ELEMENT_AS_IMAGE`)\nexport const downloadElementAsImageDone = createAction(`${prefix}DOWNLOAD_ELEMENT_AS_IMAGE_DONE`)\n\nexport const downloadElementAsPdf = createAction(`${prefix}DOWNLOAD_ELEMENT_AS_PDF`)\nexport const downloadElementAsPdfDone = createAction(`${prefix}DOWNLOAD_ELEMENT_AS_PDF_DONE`)\n\nexport const clickTrace = createAction(`${prefix}CLICK_TRACE`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'AUTH/'\n\nexport const authenticateGoogleAnalyticsStart = createAction(`${prefix}AUTHENTICATE_GOOGLE_ANALYTICS_START`)\nexport const authenticateGoogleAnalyticsSuccess = createAction(`${prefix}AUTHENTICATE_GOOGLE_ANALYTICS_SUCCESS`)\nexport const authenticateGoogleAnalyticsError = createAction(`${prefix}AUTHENTICATE_GOOGLE_ANALYTICS_ERROR`)\n\nexport const revokeGoogleAnalyticsStart = createAction(`${prefix}REVOKE_GOOGLE_ANALYTICS_START`)\nexport const revokeGoogleAnalyticsSuccess = createAction(`${prefix}REVOKE_GOOGLE_ANALYTICS_SUCCESS`)\nexport const revokeGoogleAnalyticsError = createAction(`${prefix}REVOKE_GOOGLE_ANALYTICS_ERROR`)\n\nexport const authenticateYoutubeAnalyticsStart = createAction(`${prefix}AUTHENTICATE_YOUTUBE_ANALYTICS_START`)\nexport const authenticateYoutubeAnalyticsSuccess = createAction(`${prefix}AUTHENTICATE_YOUTUBE_ANALYTICS_SUCCESS`)\nexport const authenticateYoutubeAnalyticsError = createAction(`${prefix}AUTHENTICATE_YOUTUBE_ANALYTICS_ERROR`)\n\nexport const revokeYoutubeAnalyticsStart = createAction(`${prefix}REVOKE_YOUTUBE_ANALYTICS_START`)\nexport const revokeYoutubeAnalyticsSuccess = createAction(`${prefix}REVOKE_YOUTUBE_ANALYTICS_SUCCESS`)\nexport const revokeYoutubeAnalyticsError = createAction(`${prefix}REVOKE_YOUTUBE_ANALYTICS_ERROR`)\n\nexport const revokeFacebookStart = createAction(`${prefix}REVOKE_FACEBOOK_START`)\nexport const revokeFacebookSuccess = createAction(`${prefix}REVOKE_FACEBOOK_SUCCESS`)\nexport const revokeFacebookError = createAction(`${prefix}REVOKE_FACEBOOK_ERROR`)\n\nexport const authenticateFacebookStart = createAction(`${prefix}AUTHENTICATE_FACEBOOK_START`)\nexport const authenticateFacebookSuccess = createAction(`${prefix}AUTHENTICATE_FACEBOOK_SUCCESS`)\nexport const authenticateFacebookError = createAction(`${prefix}AUTHENTICATE_FACEBOOK_ERROR`)\n\nexport const revokeLinkedInStart = createAction(`${prefix}REVOKE_LINKED_IN_START`)\nexport const revokeLinkedInSuccess = createAction(`${prefix}REVOKE_LINKED_IN_SUCCESS`)\nexport const revokeLinkedInError = createAction(`${prefix}REVOKE_LINKED_IN_ERROR`)\n\nexport const revokeTwitterStart = createAction(`${prefix}REVOKE_TWITTER_START`)\nexport const revokeTwitterSuccess = createAction(`${prefix}REVOKE_TWITTER_SUCCESS`)\nexport const revokeTwitterError = createAction(`${prefix}REVOKE_TWITTER_ERROR`)\n\nexport const authenticateLinkedInStart = createAction(`${prefix}AUTHENTICATE_LINKED_IN_START`)\nexport const authenticateLinkedInSuccess = createAction(`${prefix}AUTHENTICATE_LINKED_IN_SUCCESS`)\nexport const authenticateLinkedInError = createAction(`${prefix}AUTHENTICATE_LINKED_IN_ERROR`)\n","import { createAction } from 'redux-actions'\nimport createLoadingAction from 'utils/createLoadingAction'\n\nconst prefix = 'NEWS/CHARTS/'\n\nexport const setChartStart = createAction(`${prefix}SET_CHART_START`)\nexport const setChart = createAction(`${prefix}SET_CHART`)\nexport const setChartError = createAction(`${prefix}SET_CHART_ERROR`)\nexport const setChartData = createAction(`${prefix}SET_CHART_DATA`)\nexport const setStaticChartData = createAction(`${prefix}SET_STATIC_CHART_DATA`)\nexport const setChartLoading = createAction(`${prefix}SET_CHART_LOADING`)\nexport const calculateNewChart = createAction(`${prefix}CALCULATE_NEW_CHART`)\nexport const removeChart = createAction(`${prefix}REMOVE_CHART`)\nexport const setCharts = createAction(`${prefix}SET_CHARTS`)\nexport const setLayouts = createAction(`${prefix}SET_LAYOUTS`)\nexport const updateChartsStart = createAction(`${prefix}UPDATE_CHARTS_START`)\nexport const updateChartsSuccess = createAction(`${prefix}UPDATE_CHARTS_SUCCESS`)\nexport const updateChartsError = createAction(`${prefix}UPDATE_CHARTS_ERROR`)\nexport const toggleEditing = createAction(`${prefix}TOGGLE_EDITING`)\nexport const setNormalMode = createAction(`${prefix}SET_NORMAL_MODE`)\nexport const setPrevious = createAction(`${prefix}SET_PREVIOUS`)\nexport const setPreviousToData = createAction(`${prefix}SET_PREVIOUS_TO_DATA`)\nexport const downloadImage = createAction(`${prefix}DOWNLOAD_IMAGE`)\n\nexport const showChartDialog = createAction(`${prefix}SHOW_CHART DIALOG`)\nexport const hideChartDialog = createAction(`${prefix}HIDE_CHART DIALOG`)\nexport const setSelectedChart = createAction(`${prefix}SET_SELECTED_CHART`)\nexport const setSelectedChartOpt = createAction(`${prefix}SET_SELECTED_CHART_OPT`)\nexport const setSelectedChartStepType = createAction(`${prefix}SET_SELECTED_CHART_STEP_TYPE`)\nexport const setSelectedChartData = createAction(`${prefix}SET_SELECTED_CHART_DATA`)\nexport const setSelectedChartLoading = createAction(`${prefix}SET_SELECTED_CHART_LOADING`)\nexport const checkChartChange = createAction(`${prefix}CHECK_CHART_CHANGE`)\n\nexport const exportExcelStart = createLoadingAction(`${prefix}EXPORT_EXCEL_START`, true)\nexport const exportExcelSuccess = createLoadingAction(`${prefix}EXPORT_EXCEL_SUCCESS`, false)\nexport const exportExcelError = createLoadingAction(`${prefix}EXPORT_EXCEL_ERROR`, false)\n\nexport const exportPowerpointStart = createLoadingAction(`${prefix}EXPORT_POWERPOINT_START`, true)\nexport const exportPowerpointSuccess = createLoadingAction(`${prefix}EXPORT_POWERPOINT_SUCCESS`, false)\nexport const exportPowerpointError = createLoadingAction(`${prefix}EXPORT_POWERPOINT_ERROR`, false)\n\nexport const exportPowerpointBatchStart = createLoadingAction(`${prefix}EXPORT_POWERPOINT_BATCH_START`, true)\nexport const exportPowerpointBatchSuccess = createLoadingAction(`${prefix}EXPORT_POWERPOINT_BATCH_SUCCESS`, false)\nexport const exportPowerpointBatchError = createLoadingAction(`${prefix}EXPORT_POWERPOINT_BATCH_ERROR`, false)\n\nexport const drilldown = createAction(`${prefix}DRILLDOWN`)\n\nexport const copyFromDisplaySize = createAction(`${prefix}COPY_FROM_DISPLAY_SIZE`)\n\nexport const aggregationsRequestError = createAction(`${prefix}AGGREGATIONS_REQUEST_ERROR`)\nexport const aggregationsRequestStart = createAction(`${prefix}AGGREGATIONS_REQUEST_START`)\nexport const aggregationsRequestSuccess = createAction(`${prefix}AGGREGATIONS_REQUEST_SUCCESS`)\n\nexport const setAiChartAnalysisChart = createAction(`${prefix}AI_CHART_ANALYSIS_CHART`)\nexport const showAiChartAnalysisDialog = createAction(`${prefix}SHOW_AI_CHART_ANALYSIS_DIALOG`)\nexport const hideAiChartAnalysisDialog = createAction(`${prefix}HIDE_AI_CHART_ANALYSIS_DIALOG`)\nexport const aiChartAnalysisStart = createAction(`${prefix}AI_CHART_ANALYSIS_START`)\nexport const aiChartAnalysisSuccess = createAction(`${prefix}AI_CHART_ANALYSIS_SUCCESS`)\nexport const aiChartAnalysisError = createAction(`${prefix}AI_CHART_ANALYSIS_ERROR`)\nexport const aiChartDescriptionStart = createAction(`${prefix}AI_CHART_DESCRIPTION_START`)\nexport const aiChartDescriptionSuccess = createAction(`${prefix}AI_CHART_DESCRIPTION_SUCCESS`)\nexport const aiChartDescriptionError = createAction(`${prefix}AI_CHART_DESCRIPTION_ERROR`)\n\nexport const setAggregationValue = createAction(`${prefix}SET_AGGREGATION_VALUE`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'CONFIG/'\n\nexport const configRequestError = createAction(`${prefix}CONFIG_REQUEST_ERROR`)\nexport const configRequestStart = createAction(`${prefix}CONFIG_REQUEST_START`)\nexport const configRequestSuccess = createAction(`${prefix}CONFIG_REQUEST_SUCCESS`)\nexport const resetConfigToDefault = createAction(`${prefix}RESET_CONFIG_TO_DEFAULT`)\nexport const resetColors = createAction(`${prefix}RESET_COLORS`)\nexport const setConfig = createAction(`${prefix}SET_CONFIG`)\nexport const updateConfig = createAction(`${prefix}UPDATE_CONFIG`)\nexport const setStatics = createAction(`${prefix}SET_STATICS`)\nexport const validateFilenameInConfig = createAction(`${prefix}VALIDATE_FILENAME_IN_CONFIG`)\nexport const setColors = createAction(`${prefix}SET_COLORS`)\nexport const setTheme = createAction(`${prefix}SET_THEME`)\nexport const setStartedWithDeepLink = createAction(`${prefix}SET_STARTED_WITH_DEEP_LINK`)\n\nexport const updateConfigRequestError = createAction(`${prefix}UPDATE_CONFIG_REQUEST_ERROR`)\nexport const updateConfigRequestStart = createAction(`${prefix}UPDATE_CONFIG_REQUEST_START`)\nexport const updateConfigRequestSuccess = createAction(`${prefix}UPDATE_CONFIG_REQUEST_SUCCESS`)\n\nexport const updateUserConfigRequestError = createAction(`${prefix}UPDATE_USER_CONFIG_REQUEST_ERROR`)\nexport const updateUserConfigRequestStart = createAction(`${prefix}UPDATE_USER_CONFIG_REQUEST_START`)\nexport const updateUserConfigRequestSuccess = createAction(`${prefix}UPDATE_USER_CONFIG_REQUEST_SUCCESS`)\n\nexport const fetchCDeskConfigRequestError = createAction(`${prefix}FETCH_CONTENT_DESK_CONFIG_REQUEST_ERROR`)\nexport const fetchCDeskConfigRequestStart = createAction(`${prefix}FETCH_CONTENT_DESK_CONFIG_REQUEST_START`)\nexport const fetchCDeskConfigRequestSuccess = createAction(`${prefix}FETCH_CONTENT_DESK_CONFIG_REQUEST_SUCCESS`)\n\nexport const updateCDeskConfigRequestError = createAction(`${prefix}UPDATE_CONTENT_DESK_CONFIG_REQUEST_ERROR`)\nexport const updateCDeskConfigRequestStart = createAction(`${prefix}UPDATE_CONTENT_DESK_CONFIG_REQUEST_START`)\nexport const updateCDeskConfigRequestSuccess = createAction(`${prefix}UPDATE_CONTENT_DESK_CONFIG_REQUEST_SUCCESS`)\n\nexport const refreshContentDeskPlanUsageAndLimits = createAction(`${prefix}REFRESH_CONTENT_DESK_PLAN_USAGE_AND_LIMITS`)\n\nexport const setCDeskConfig = createAction(`${prefix}SET_CONTENT_DESK_CONFIG`)\nexport const updateCDeskConfig = createAction(`${prefix}UPDATE_CONTENT_DESK_CONFIG`)\n\nexport const setNewsSavedSearchId = createAction(`${prefix}SET_NEWS_SAVED_SEARCH_ID`)\nexport const setAnalysisSavedSearchId = createAction(`${prefix}SET_ANALYSIS_SAVED_SEARCH_ID`)\nexport const setProfileMonitoringSavedSearchId = createAction(`${prefix}SET_PROFILE_MONITORING_SAVED_SEARCH_ID`)\nexport const setNewsPoolSavedSearchId = createAction(`${prefix}SET_NEWS_POOL_SAVED_SEARCH_ID`)\nexport const setDashboardId = createAction(`${prefix}SET_DASHBOARD_ID`)\nexport const setUserConfigField = createAction(`${prefix}SET_USER_CONFIG_FIELD`)\nexport const setGoogleAnalyticsEnabled = createAction(`${prefix}SET_GOOGLE_ANALYTICS_ENABLED`)\nexport const setGoogleAnalyticsDisabled = createAction(`${prefix}SET_GOOGLE_ANALYTICS_DISABLED`)\nexport const setYoutubeAnalyticsEnabled = createAction(`${prefix}SET_YOUTUBE_ANALYTICS_ENABLED`)\nexport const setYoutubeAnalyticsDisabled = createAction(`${prefix}SET_YOUTUBE_ANALYTICS_DISABLED`)\nexport const setFacebookAnalyticsEnabled = createAction(`${prefix}SET_FACEBOOK_ANALYTICS_ENABLED`)\nexport const setFacebookAnalyticsDisabled = createAction(`${prefix}SET_FACEBOOK_ANALYTICS_DISABLED`)\nexport const setLinkedInAnalyticsEnabled = createAction(`${prefix}SET_LINKED_IN_ANALYTICS_ENABLED`)\nexport const setLinkedInAnalyticsDisabled = createAction(`${prefix}SET_LINKED_IN_ANALYTICS_DISABLED`)\nexport const setDarkMode = createAction(`${prefix}SET_DARK_MODE`)\nexport const setPrefersDarkMode = createAction(`${prefix}SET_PREFERS_DARK_MODE`)\n\nexport const updatePaidFeatures = createAction(`${prefix}UPDATE_PAID_FEATURES`)\n\nexport const orderPaidVersionStart = createAction(`${prefix}ORDER_PAID_VERSION_START`)\nexport const orderPaidVersionSuccess = createAction(`${prefix}ORDER_PAID_VERSION_SUCCESS`)\nexport const orderPaidVersionError = createAction(`${prefix}ORDER_PAID_VERSION_ERROR`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'CM/'\nlet prefix = defaultPrefix\n\n// DATA\nprefix = `${defaultPrefix}DATA/`\nexport const fetchAll = createAction(`${prefix}FETCH_ALL`)\n\nexport const fetchContactsStart = createAction(`${prefix}FETCH_CONTACTS_START`)\nexport const fetchContactsSuccess = createAction(`${prefix}FETCH_CONTACTS_SUCCESS`)\nexport const fetchContactsError = createAction(`${prefix}FETCH_CONTACTS_ERROR`)\n\nexport const fetchDistributionListsStart = createAction(`${prefix}FETCH_DISTRIBUTION_LISTS_START`)\nexport const fetchDistributionListsSuccess = createAction(`${prefix}FETCH_DISRIBUTION_LISTS_SUCCESS`)\nexport const fetchDistributionListsError = createAction(`${prefix}FETCH_DISTRIBUTION_LISTS_ERROR`)\n\nexport const fetchTagsStart = createAction(`${prefix}FETCH_TAGS_START`)\nexport const fetchTagsSuccess = createAction(`${prefix}FETCH_TAGS_SUCCESS`)\nexport const fetchTagsError = createAction(`${prefix}FETCH_TAGS_ERROR`)\n\nexport const saveContactsStart = createAction(`${prefix}SAVE_CONTACTS_START`)\nexport const saveContactsSuccess = createAction(`${prefix}SAVE_CONTACTS_SUCCESS`)\nexport const saveContactsError = createAction(`${prefix}SAVE_CONTACTS_ERROR`)\n\nexport const deleteContactsStart = createAction(`${prefix}DELETE_CONTACTS_START`)\nexport const deleteContactsSuccess = createAction(`${prefix}DELETE_CONTACTS_SUCCESS`)\nexport const deleteContactsError = createAction(`${prefix}DELETE_CONTACTS_ERROR`)\n\nexport const changeTagStart = createAction(`${prefix}CHANGE_TAG_START`)\nexport const changeTagSuccess = createAction(`${prefix}CHANGE_TAG_SUCCESS`)\nexport const changeTagError = createAction(`${prefix}CHANGE_TAG_ERROR`)\n\nexport const renameTagStart = createAction(`${prefix}RENAME_TAG_START`)\nexport const renameTagSuccess = createAction(`${prefix}RENAME_TAG_SUCCESS`)\nexport const renameTagError = createAction(`${prefix}RENAME_TAG_ERROR`)\n\nexport const deleteTagStart = createAction(`${prefix}DELETE_TAG_START`)\nexport const deleteTagSuccess = createAction(`${prefix}DELETE_TAG_SUCCESS`)\nexport const deleteTagError = createAction(`${prefix}DELETE_TAG_ERROR`)\n\nexport const createDistributionListStart = createAction(`${prefix}CREATE_DISTRIBUTION_LIST_START`)\nexport const createDistributionListSuccess = createAction(`${prefix}CREATE_DISTRIBUTION_LIST_SUCCESS`)\nexport const createDistributionListError = createAction(`${prefix}CREATE_DISTRIBUTION_LIST_ERROR`)\n\nexport const addContactsToDistributionListStart = createAction(`${prefix}ADD_CONTACTS_TO_DISTRIBUTION_LIST_START`)\nexport const addContactsToDistributionListSuccess = createAction(`${prefix}ADD_CONTACTS_TO_DISTRIBUTION_LIST_SUCCESS`)\nexport const addContactsToDistributionListError = createAction(`${prefix}ADD_CONTACTS_TO_DISTRIBUTION_LIST_ERROR`)\n\nexport const removeContactFromListStart = createAction(`${prefix}REMOVE_CONTACT_FROM_LIST_START`)\nexport const removeContactFromListSuccess = createAction(`${prefix}REMOVE_CONTACT_FROM_LIST_SUCCESS`)\nexport const removeContactFromListError = createAction(`${prefix}REMOVE_CONTACT_FROM_LIST_ERROR`)\n\nexport const updateDistributionListStart = createAction(`${prefix}UPDATE_DISTRIBUTION_LIST_START`)\nexport const updateDistributionListSuccess = createAction(`${prefix}UPDATE_DISTRIBUTION_LIST_SUCCESS`)\nexport const updateDistributionListError = createAction(`${prefix}UPDATE_DISTRIBUTION_LIST_ERROR`)\n\nexport const deleteDistributionListStart = createAction(`${prefix}DELETE_DISTRIBUTION_LIST_START`)\nexport const deleteDistributionListSuccess = createAction(`${prefix}DELETE_DISTRIBUTION_LIST_SUCCESS`)\nexport const deleteDistributionListError = createAction(`${prefix}DELETE_DISTRIBUTION_LIST_ERROR`)\n\nexport const uploadContactsStart = createAction(`${prefix}UPLOAD_CONTACTS_START`)\nexport const uploadContactsSuccess = createAction(`${prefix}UPLOAD_CONTACTS_SUCCESS`)\nexport const uploadContactsError = createAction(`${prefix}UPLOAD_CONTACTS_ERROR`)\n\nexport const setUploadedPhoto = createAction(`${prefix}SET_UPLOADED_PHOTO`)\nexport const setContactTags = createAction(`${prefix}SET_TAGS`)\nexport const setDistributionList = createAction(`${prefix}SET_DISTRIBUTION_LIST`)\n\nexport const changeContactFormData = createAction(`${prefix}CHANGE_CONTACT_FORM_DATA`)\nexport const changeContactMediaTopics = createAction(`${prefix}CHANGE_MEDIA_TOPICS`)\nexport const changeContactLanguages = createAction(`${prefix}CHANGE_LANGUAGES`)\nexport const changeContactMediaTypes = createAction(`${prefix}CHANGE_MEDIA_TYPES`)\nexport const createTag = createAction(`${prefix}CREATE_TAG`)\nexport const updateDistributionListFormData = createAction(`${prefix}UPDATE_DISTRIBUTION_LIST_FORM_DATA`)\nexport const selectContact = createAction(`${prefix}SELECT_CONTACT`)\nexport const selectAllContacts = createAction(`${prefix}SELECT_ALL_CONTACTS`)\nexport const clearListData = createAction(`${prefix}CLEAR_LIST_DATA`)\nexport const selectDistributionList = createAction(`${prefix}SELECT_DISTRIBUTION_LIST`)\nexport const clearSelectedLists = createAction(`${prefix}CLEAR_SELECTED_LISTS`)\nexport const setMergedDistributionListData = createAction(`${prefix}SET_MERGED_DISTRIBUTION_LIST_DATA`)\n\nexport const downloadContactsExcelStart = createAction(`${prefix}DOWNLOAD_CONTACTS_EXCEL_START`)\nexport const downloadContactsExcelSuccess = createAction(`${prefix}DOWNLOAD_CONTACTS_EXCEL_SUCCESS`)\nexport const downloadContactsExcelError = createAction(`${prefix}DOWNLOAD_CONTACTS_EXCEL_ERROR`)\n\nexport const mergeDistributionListsStart = createAction(`${prefix}MERGE_DISTRIBUTION_LISTS_START`)\nexport const mergeDistributionListsSuccess = createAction(`${prefix}MERGE_DISTRIBUTION_LISTS_SUCCESS`)\nexport const mergeDistributionListsError = createAction(`${prefix}MERGE_DISTRIBUTION_LISTS_ERROR`)\n\nexport const downloadDistributionListStart = createAction(`${prefix}DOWNLOAD_DISTRIBUTION_LIST_START`)\nexport const downloadDistributionListSuccess = createAction(`${prefix}DOWNLOAD_DISTRIBUTION_LIST_SUCCESS`)\nexport const downloadDistributionListError = createAction(`${prefix}DOWNLOAD_DISTRIBUTION_LIST_ERROR`)\n\nexport const searchDistributionListStart = createAction(`${prefix}SEARCH_DISTRIBUTION_LIST_START`)\nexport const searchDistributionListSuccess = createAction(`${prefix}SEARCH_DISTRIBUTION_LIST_SUCCESS`)\nexport const searchDistributionListError = createAction(`${prefix}SEARCH_DISTRIBUTION_LIST_ERROR`)\n\n// UI\nprefix = `${defaultPrefix}UI/`\n\nexport const openContactEditDialog = createAction(`${prefix}OPEN_CONTACT_EDIT_DIALOG`)\nexport const closeContactEditDialog = createAction(`${prefix}CLOSE_CONTACT_EDIT_DIALOG`)\n\nexport const openContactViewDialog = createAction(`${prefix}OPEN_CONTACT_VIEW_DIALOG`)\nexport const closeContactViewDialog = createAction(`${prefix}CLOSE_CONTACT_VIEW_DIALOG`)\n\nexport const openContactsUploadDialog = createAction(`${prefix}OPEN_CONTACTS_UPLOAD_DIALOG`)\nexport const closeContactsUploadDialog = createAction(`${prefix}CLOSE_CONTACTS_UPLOAD_DIALOG`)\n\nexport const openContactDeleteDialog = createAction(`${prefix}OPEN_CONTACT_DELETE_DIALOG`)\nexport const closeContactDeleteDialog = createAction(`${prefix}CLOSE_CONTACT_DELETE_DIALOG`)\n\nexport const openTagsDialog = createAction(`${prefix}OPEN_TAGS_DIALOG`)\nexport const closeTagsDialog = createAction(`${prefix}CLOSE_TAGS_DIALOG`)\n\nexport const openTagRenameDialog = createAction(`${prefix}OPEN_TAG_RENAME_DIALOG`)\nexport const closeTagRenameDialog = createAction(`${prefix}CLOSE_TAG_RENAME_DIALOG`)\n\nexport const openTagDeleteDialog = createAction(`${prefix}OPEN_TAG_DELETE_DIALOG`)\nexport const closeTagDeleteDialog = createAction(`${prefix}CLOSE_TAG_DELETE_DIALOG`)\n\nexport const openDistributionListCreateDialog = createAction(`${prefix}OPEN_DISTRIBUTION_LIST_CREATE_DIALOG`)\nexport const closeDistributionListCreateDialog = createAction(`${prefix}CLOSE_DISTRIBUTION_LIST_CREATE_DIALOG`)\n\nexport const openDistributionListEditDialog = createAction(`${prefix}OPEN_DISTRIBUTION_LIST_EDIT_DIALOG`)\nexport const closeDistributionListEditDialog = createAction(`${prefix}CLOSE_DISTRIBUTION_LIST_EDIT_DIALOG`)\n\nexport const openDistributionListViewDialog = createAction(`${prefix}OPEN_DISTRIBUTION_LIST_VIEW_DIALOG`)\nexport const closeDistributionListViewDialog = createAction(`${prefix}CLOSE_DISTRIBUTION_LIST_VIEW_DIALOG`)\n\nexport const sortBy = createAction(`${prefix}SORT_BY`)\nexport const listSortBy = createAction(`${prefix}LIST_SORT_BY`)\nexport const tagsSortBy = createAction(`${prefix}TAGS_SORT_BY`)\n\nexport const setSelectedQueryType = createAction(`${prefix}SET_SELECTED_QUERY_TYPE`)\n\nexport const openImportHelpDialog = createAction(`${prefix}OPEN_IMPORT_HELP_DIALOG`)\nexport const closeImportHelpDialog = createAction(`${prefix}CLOSE_IMPORT_HELP_DIALOG`)\n\nexport const uiEnteredQuery = createAction(`${prefix}ENTERED_QUERY`)\nexport const uiRemoveFilter = createAction(`${prefix}REMOVE_FILTER`)\nexport const uiUpdateFilter = createAction(`${prefix}UPDATE_FILTER`)\nexport const toggleActiveFilters = createAction(`${prefix}TOGGLE_ACTIVE_FILTERS`)\n\nexport const showEmailExistingDialog = createAction(`${prefix}SHOW_EMAIL_EXISTING_DIALOG`)\nexport const closeEmailExistingDialog = createAction(`${prefix}CLOSE_EMAIL_EXISTING_DIALOG`)\n\nexport const showUploadResultDialog = createAction(`${prefix}SHOW_UPLOAD_RESULT_DIALOG`)\nexport const closeUploadResultDialog = createAction(`${prefix}CLOSE_UPLOAD_RESULT_DIALOG`)\n\nexport const setAutoCreateDistributionList = createAction(`${prefix}SET_AUTO_CREATE_DISTRIBUTION_LIST`)\nexport const setAutoAddToExistingList = createAction(`${prefix}SET_AUTO_ADD_TO_EXISTING_LIST`)\n\nexport const openDistributionListMergeDialog = createAction(`${prefix}OPEN_DISTRIBUTION_LIST_MERGE_DIALOG`)\nexport const closeDistributionListMergeDialog = createAction(`${prefix}CLOSE_DISTRIBUTION_LIST_MERGE_DIALOG`)\n\n// FILTER\nprefix = `${defaultPrefix}FILTER/`\nexport const addSearchQuery = createAction(`${prefix}ADD_SEARCH_QUERY`)\nexport const removeFilter = createAction(`${prefix}REMOVE_FILTER`)\nexport const updateFilter = createAction(`${prefix}UPDATE_FILTER`)\nexport const addDistributionListContactFilter = createAction(`${prefix}ADD_DISTRIBUTION_LIST_CONTACT_FILTER`)\nexport const removeDistributionListContactFilter = createAction(`${prefix}REMOVE_DISTRIBUTION_LIST_CONTACT_FILTER`)\nexport const addDistributionListContactsSearchQuery = createAction(`${prefix}ADD_DISTRIBUTION_LIST_CONTACTS_SEARCH_QUERY`)\nexport const resetFilters = createAction(`${prefix}RESET_FILTER`)\nexport const setContactsPage = createAction(`${prefix}SET_CONTACTS_PAGE`)\nexport const setDistributionListsPage = createAction(`${prefix}SET_DISTRIBUTION_LISTS_PAGE`)\nexport const toggleContactsShowUnsubscribed = createAction(`${prefix}TOGGLE_CONTACTS_SHOW_UNSUBSCRIBED`)\n","/* eslint-disable import/named */\nimport { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'CD/'\nlet prefix = defaultPrefix\n\n// DATA\nexport const setContents = createAction(`${prefix}SET_CONTENTS`)\nexport const setContentFormData = createAction(`${prefix}SET_CONTENT_FORM_DATA`)\nexport const updateContent = createAction(`${prefix}UPDATE_CONTENT_FORM_DATA`)\nexport const cloneContentsFormData = createAction(`${prefix}CLONE_CONTENTS_FORM_DATA`)\nexport const updateCampaignFormData = createAction(`${prefix}UPDATE_CAMPAIGN_FORM_DATA`)\nexport const openCampaignForm = createAction(`${prefix}OPEN_NEW_CAMPAIGN_FORM`)\nexport const resetCampaignForm = createAction(`${prefix}RESET_CAMPAIGN_FORM`)\nexport const resetCampaigns = createAction(`${prefix}RESET_CAMPAIGNS`)\nexport const resetContents = createAction(`${prefix}RESET_CONTENTS`)\n\nexport const getContentStart = createAction(`${prefix}GET_CONTENT_START`)\nexport const getContentSuccess = createAction(`${prefix}GET_CONTENT_SUCCESS`)\nexport const getContentError = createAction(`${prefix}GET_CONTENT_ERROR`)\n\nexport const lockContentStart = createAction(`${prefix}LOCK_CONTENT_START`)\nexport const lockContentSuccess = createAction(`${prefix}LOCK_CONTENT_SUCCESS`)\nexport const lockContentError = createAction(`${prefix}LOCK_CONTENT_ERROR`)\n\nexport const unlockContentStart = createAction(`${prefix}UNLOCK_CONTENT_START`)\nexport const unlockContentSuccess = createAction(`${prefix}UNLOCK_CONTENT_SUCCESS`)\nexport const unlockContentError = createAction(`${prefix}UNLOCK_CONTENT_ERROR`)\n\nexport const search = createAction(`${prefix}SEARCH`)\n\nexport const searchCampaignsStart = createAction(`${prefix}SEARCH_CAMPAIGNS_START`)\nexport const searchCampaignsSuccess = createAction(`${prefix}SEARCH_CAMPAIGNS_SUCCESS`)\nexport const searchCampaignsError = createAction(`${prefix}SEARCH_CAMPAIGNS_ERROR`)\n\nexport const searchContentsStart = createAction(`${prefix}SEARCH_CONTENTS_START`)\nexport const searchContentsSuccess = createAction(`${prefix}SEARCH_CONTENTS_SUCCESS`)\nexport const searchContentsError = createAction(`${prefix}SEARCH_CONTENTS_ERROR`)\n\nexport const fetchCampaignDropdownOptionsStart = createAction(`${prefix}FETCH_CAMPAIGN_DROPDOWN_OPTIONS_START`)\nexport const fetchCampaignDropdownOptionsSuccess = createAction(`${prefix}FETCH_CAMPAIGN_DROPDOWN_OPTIONS_SUCCESS`)\nexport const fetchCampaignDropdownOptionsError = createAction(`${prefix}FETCH_CAMPAIGN_DROPDOWN_OPTIONS_ERROR`)\n\nexport const fetchContentDropdownOptionsStart = createAction(`${prefix}FETCH_CONTENT_DROPDOWN_OPTIONS_START`)\nexport const fetchContentDropdownOptionsSuccess = createAction(`${prefix}FETCH_CONTENT_DROPDOWN_OPTIONS_SUCCESS`)\nexport const fetchContentDropdownOptionsError = createAction(`${prefix}FETCH_CONTENT_DROPDOWN_OPTIONS_ERROR`)\n\nexport const fetchDistributionListDropdownOptionsStart = createAction(`${prefix}FETCH_DISTRIBUTION_LIST_DROPDOWN_OPTIONS_START`)\nexport const fetchDistributionListDropdownOptionsSuccess = createAction(`${prefix}FETCH_DISTRIBUTION_LIST_DROPDOWN_OPTIONS_SUCCESS`)\nexport const fetchDistributionListDropdownOptionsError = createAction(`${prefix}FETCH_DISTRIBUTION_LIST_DROPDOWN_OPTIONS_ERROR`)\n\nexport const fetchContactDropdownOptionsStart = createAction(`${prefix}FETCH_CONTACT_DROPDOWN_OPTIONS_START`)\nexport const fetchContactDropdownOptionsSuccess = createAction(`${prefix}FETCH_CONTACT_DROPDOWN_OPTIONS_SUCCESS`)\nexport const fetchContactDropdownOptionsError = createAction(`${prefix}FETCH_CONTACT_DROPDOWN_OPTIONS_ERROR`)\n\nexport const fetchStatisticsStart = createAction(`${prefix}FETCH_STATISTICS_START`)\nexport const fetchStatisticsSuccess = createAction(`${prefix}FETCH_STATISTICS_SUCCESS`)\nexport const fetchStatisticsError = createAction(`${prefix}FETCH_STATISTICS_ERROR`)\n\nexport const resetEvents = createAction(`${prefix}RESET_EVENTS`)\n\nexport const saveContentStart = createAction(`${prefix}SAVE_CONTENT_START`)\nexport const saveContentSuccess = createAction(`${prefix}SAVE_CONTENT_SUCCESS`)\nexport const saveContentError = createAction(`${prefix}SAVE_CONTENT_ERROR`)\n\nexport const saveContentFormlessStart = createAction(`${prefix}SAVE_CONTENT_FORMLESS_START`)\nexport const saveContentFormlessSuccess = createAction(`${prefix}SAVE_CONTENT_FORMLESS_SUCCESS`)\nexport const saveContentFormlessError = createAction(`${prefix}SAVE_CONTENT_FORMLESS_ERROR`)\n\nexport const saveDeletedExternallyForContentStart = createAction(`${prefix}SAVE_DELETED_EXTERNALLY_CONTENT_START`)\nexport const saveDeletedExternallyForContentSuccess = createAction(`${prefix}SAVE_DELETED_EXTERNALLY_CONTENT_SUCCESS`)\nexport const saveDeletedExternallyForContentError = createAction(`${prefix}SAVE_DELETED_EXTERNALLY_CONTENT_ERROR`)\n\nexport const dispatchContentRequestStart = createAction(`${prefix}DISPATCH_CONTENT_REQUEST_START`)\nexport const dispatchContentRequestSuccess = createAction(`${prefix}DISPATCH_CONTENT_REQUEST_SUCCESS`)\nexport const dispatchContentRequestError = createAction(`${prefix}DISPATCH_CONTENT_REQUEST_ERROR`)\n\nexport const uploadLinkedInMediaFileStart = createAction(`${prefix}UPLOAD_LINKED_IN_MEDIA_FILE_START`)\nexport const uploadLinkedInMediaFileSuccess = createAction(`${prefix}UPLOAD_LINKED_IN_MEDIA_FILE_SUCCESS`)\nexport const uploadLinkedInMediaFileError = createAction(`${prefix}UPLOAD_LINKED_IN_MEDIA_FILE_ERROR`)\n\nexport const uploadFacebookMediaFileStart = createAction(`${prefix}UPLOAD_FACEBOOK_MEDIA_FILE_START`)\nexport const uploadFacebookMediaFileSuccess = createAction(`${prefix}UPLOAD_FACEBOOK_MEDIA_FILE_SUCCESS`)\nexport const uploadFacebookMediaFileError = createAction(`${prefix}UPLOAD_FACEBOOK_MEDIA_FILE_ERROR`)\n\nexport const fetchMediaFilesStart = createAction(`${prefix}FETCH_MEDIA_FILES_START`)\nexport const fetchMediaFilesSuccess = createAction(`${prefix}FETCH_MEDIA_FILES_SUCCESS`)\nexport const fetchMediaFilesError = createAction(`${prefix}FETCH_MEDIA_FILES_ERROR`)\n\nexport const fetchMoreMediaFilesStart = createAction(`${prefix}FETCH_MORE_MEDIA_FILES_START`)\nexport const fetchMoreMediaFilesSuccess = createAction(`${prefix}FETCH_MORE_MEDIA_FILES_SUCCESS`)\nexport const fetchMoreMediaFilesError = createAction(`${prefix}FETCH_MORE_MEDIA_FILES_ERROR`)\n\nexport const deleteMediaFileStart = createAction(`${prefix}DELETE_MEDIA_FILE_START`)\nexport const deleteMediaFileSuccess = createAction(`${prefix}DELETE_MEDIA_FILE_SUCCESS`)\nexport const deleteMediaFileError = createAction(`${prefix}DELETE_MEDIA_FILE_ERROR`)\n\nexport const appendMediaFiles = createAction(`${prefix}APPEND_MEDIA_FILES`)\n\nexport const refreshContentsStatusStart = createAction(`${prefix}REFRESH_CONTENTS_STATUS_START`)\nexport const refreshContentsStatusSuccess = createAction(`${prefix}REFRESH_CONTENTS_STATUS_SUCCESS`)\nexport const refreshContentsStatusError = createAction(`${prefix}REFRESH_CONTENTS_STATUS_ERROR`)\nexport const stopRefreshContentsStatus = createAction(`${prefix}STOP_REFRESH_CONTENTS_STATUS`)\n\nexport const editorAiRequestStart = createAction(`${prefix}EDITOR_AI_REQUEST_START`)\nexport const editorAiRequestSuccess = createAction(`${prefix}EDITOR_AI_REQUEST_SUCCESS`)\nexport const editorAiRequestError = createAction(`${prefix}EDITOR_AI_REQUEST_ERROR`)\n\nexport const resetSocialMediaPostsAndUploads = createAction(`${prefix}RESET_SOCIAL_MEDIA_POSTS_AND_UPLOADS`)\nexport const setUploadedMediaFilesTotalSize = createAction(`${prefix}SET_UPLOADED_MEDIA_FILES_TOTAL_SIZE`)\n\nexport const buildSocialMediaLinkStart = createAction(`${prefix}BUILD_SOCIAL_MEDIA_LINK_START`)\nexport const buildSocialMediaLinkLinkedInSuccess = createAction(`${prefix}BUILD_SOCIAL_MEDIA_LINK_LINKEDIN_SUCCESS`)\nexport const buildSocialMediaLinkFacebookSuccess = createAction(`${prefix}BUILD_SOCIAL_MEDIA_LINK_FACEBOOK_SUCCESS`)\nexport const buildSocialMediaLinkLinkedInError = createAction(`${prefix}BUILD_SOCIAL_MEDIA_LINK_LINKEDIN_ERROR`)\nexport const buildSocialMediaLinkFacebookError = createAction(`${prefix}BUILD_SOCIAL_MEDIA_LINK_FACEBOOK_ERROR`)\n\nexport const downloadEmailEventsStart = createAction(`${prefix}DOWNLOAD_EMAIL_EVENTS_START`)\nexport const downloadEmailEventsSuccess = createAction(`${prefix}DOWNLOAD_EMAIL_EVENTS_SUCCESS`)\nexport const downloadEmailEventsError = createAction(`${prefix}DOWNLOAD_EMAIL_EVENTS_ERROR`)\n\nexport const saveCampaignFormlessStart = createAction(`${prefix}SAVE_CAMPAIGN_FORMLESS_START`)\nexport const saveCampaignFormlessSuccess = createAction(`${prefix}SAVE_CAMPAIGN_FORMLESS_SUCCESS`)\nexport const saveCampaignFormlessError = createAction(`${prefix}SAVE_CAMPAIGN_FORMLESS_ERROR`)\n\nexport const fetchKpiStatisticsStart = createAction(`${prefix}FETCH_KPI_STATISTICS_START`)\nexport const fetchKpiStatisticsSuccess = createAction(`${prefix}FETCH_KPI_STATISTICS_SUCCESS`)\nexport const fetchKpiStatisticsError = createAction(`${prefix}FETCH_KPI_STATISTICS_ERROR`)\nexport const removeRecipient = createAction(`${prefix}REMOVE_RECIPIENT`)\n\nexport const fetchRecipientContactStart = createAction(`${prefix}FETCH_RECIPIENT_CONTACT_START`)\nexport const fetchRecipientContactSuccess = createAction(`${prefix}FETCH_RECIPIENT_CONTACT_SUCCESS`)\nexport const fetchRecipientContactError = createAction(`${prefix}FETCH_RECIPIENT_CONTACT_ERROR`)\n\nexport const setDistributionListSearchQuery = createAction(`${prefix}SET_DISTRIBUTION_LIST_SEARCH_QUERY`)\n\nexport const createOtsDraftStart = createAction(`${prefix}CREATE_OTS_DRAFT_START`)\nexport const createOtsDraftSuccess = createAction(`${prefix}CREATE_OTS_DRAFT_SUCCESS`)\nexport const createOtsDraftError = createAction(`${prefix}CREATE_OTS_DRAFT_ERROR`)\n\n// UI\nprefix = `${defaultPrefix}UI/`\nexport const openEditContentDialog = createAction(`${prefix}OPEN_EDIT_CONTENT_DIALOG`)\nexport const closeEditContentDialog = createAction(`${prefix}CLOSE_EDIT_CONTENT_DIALOG`)\n\nexport const openOldEditContentDialog = createAction(`${prefix}OPEN_OLD_EDIT_CONTENT_DIALOG`)\nexport const closeOldEditContentDialog = createAction(`${prefix}CLOSE_OLD_EDIT_CONTENT_DIALOG`)\n\nexport const openNewContentDialog = createAction(`${prefix}OPEN_NEW_CONTENT_DIALOG`)\nexport const closeNewContentDialog = createAction(`${prefix}CLOSE_NEW_CONTENT_DIALOG`)\n\nexport const openViewContentDialog = createAction(`${prefix}OPEN_VIEW_CONTENT_DIALOG`)\nexport const closeViewContentDialog = createAction(`${prefix}CLOSE_VIEW_CONTENT_DIALOG`)\n\nexport const openDeleteDialog = createAction(`${prefix}OPEN_DELETE_DIALOG`)\nexport const closeDeleteDialog = createAction(`${prefix}CLOSE_DELETE_DIALOG`)\n\nexport const openScheduleDialog = createAction(`${prefix}OPEN_SCHEDULE_DIALOG`)\nexport const closeScheduleDialog = createAction(`${prefix}CLOSE_SCHEDULE_DIALOG`)\n\nexport const openOldScheduleDialog = createAction(`${prefix}OPEN_OLD_SCHEDULE_DIALOG`)\nexport const closeOldScheduleDialog = createAction(`${prefix}CLOSE_OLD_SCHEDULE_DIALOG`)\n\nexport const openPlanDialog = createAction(`${prefix}OPEN_PLAN_DIALOG`)\nexport const closePlanDialog = createAction(`${prefix}CLOSE_PLAN_DIALOG`)\n\nexport const openSaveTemplateDialog = createAction(`${prefix}OPEN_SAVE_TEMPLATE_DIALOG`)\nexport const closeSaveTemplateDialog = createAction(`${prefix}CLOSE_SAVE_TEMPLATE_DIALOG`)\n\nexport const setDeleteContentData = createAction(`${prefix}SET_DELETE_CONTENT_DATA`)\nexport const closeCampaignForm = createAction(`${prefix}CLOSE_CAMPAIGN_FORM`)\nexport const setCampaignDialogEditMode = createAction(`${prefix}SET_CAMPAIGN_DIALOG_EDIT_MODE`)\nexport const changeNewContentDialogView = createAction(`${prefix}CHANGE_NEW_CONTENT_DIALOG_VIEW`)\n\nexport const openBlockedContentEditDialog = createAction(`${prefix}OPEN_BLOCKED_CONTENT_EDIT_DIALOG`)\nexport const closeBlockedContentEditDialog = createAction(`${prefix}CLOSE_BLOCKED_CONTENT_EDIT_DIALOG`)\n\nexport const emailEditorLoadingStart = createAction(`${prefix}EMAIL_EDITOR_LOADING_START`)\nexport const emailEditorLoadingStop = createAction(`${prefix}EMAIL_EDITOR_LOADING_STOP`)\n\nexport const uploadEditorImageStart = createAction(`${prefix}UPLOAD_EDITOR_IMAGE_START`)\nexport const uploadEditorImageSuccess = createAction(`${prefix}UPLOAD_EDITOR_IMAGE_SUCCESS`)\nexport const uploadEditorImageError = createAction(`${prefix}UPLOAD_EDITOR_IMAGE_ERROR`)\n\nexport const resetUploadedImageUrl = createAction(`${prefix}RESET_UPLOADED_IMAGE_URL`)\n\nexport const saveCampaignStart = createAction(`${prefix}SAVE_CAMPAIGN_START`)\nexport const saveCampaignSuccess = createAction(`${prefix}SAVE_CAMPAIGN_SUCCESS`)\nexport const saveCampaignError = createAction(`${prefix}SAVE_CAMPAIGN_ERROR`)\n\nexport const deleteContentStart = createAction(`${prefix}DELETE_CONTENT_START`)\nexport const deleteContentSuccess = createAction(`${prefix}DELETE_CONTENT_SUCCESS`)\nexport const deleteContentError = createAction(`${prefix}DELETE_CONTENT_ERROR`)\n\nexport const deleteCampaignStart = createAction(`${prefix}DELETE_CAMPAIGN_START`)\nexport const deleteCampaignSuccess = createAction(`${prefix}DELETE_CAMPAIGN_SUCCESS`)\nexport const deleteCampaignError = createAction(`${prefix}DELETE_CAMPAIGN_ERROR`)\n\nexport const setAssignees = createAction(`${prefix}SET_ASSIGNEES`)\nexport const setCampaigns = createAction(`${prefix}SET_CAMPAIGNS`)\nexport const setUpdatedContents = createAction(`${prefix}SET_UPDATED_CONTENTS`)\nexport const setUpdatedCampaignsContents = createAction(`${prefix}SET_UPDATED_CAMPAIGNS_CONTENTS`)\n\nexport const setSelectedQueryType = createAction(`${prefix}SET_SELECTED_QUERY_TYPE`)\nexport const uiEnteredQuery = createAction(`${prefix}ENTERED_QUERY`)\n\nexport const uiRemoveFilter = createAction(`${prefix}REMOVE_FILTER`)\nexport const uiInvertFilter = createAction(`${prefix}INVERT_FILTER`)\nexport const uiUpdateFilter = createAction(`${prefix}UPDATE_FILTER`)\nexport const toggleActiveFilters = createAction(`${prefix}TOGGLE_ACTIVE_FILTERS`)\n\nexport const switchToContactManagement = createAction(`${prefix}SWITCH_TO_CONTACT_MANAGEMENT`)\nexport const switchToEmailTemplatesLibrary = createAction(`${prefix}SWITCH_TO_EMAIL_TEMPLATE_LIBRARY`)\n\nexport const switchToSearchPool = createAction(`${prefix}SWITCH_TO_SEARCH_POOL`)\nexport const toggleEditorAiMode = createAction(`${prefix}TOGGLE_EDITOR_AI_MODE`)\nexport const setAiSelectedText = createAction(`${prefix}SET_AI_SELECTED_TEXT`)\n\nexport const setMediaFilesInitialFetch = createAction(`${prefix}SET_MEDIA_FILES_INITIAL_FETCH`)\n\nexport const openTestMailDialog = createAction(`${prefix}OPEN_TEST_MAIL_DIALOG`)\nexport const closeTestMailDialog = createAction(`${prefix}CLOSE_TEST_MAIL_DIALOG`)\n\nexport const linkedInCompanySearchStart = createAction(`${prefix}LINKED_IN_COMPANY_SEARCH_START`)\nexport const linkedInCompanySearchSuccess = createAction(`${prefix}LINKED_IN_COMPANY_SEARCH_SUCCESS`)\nexport const linkedInCompanySearchError = createAction(`${prefix}LINKED_IN_COMPANY_SEARCH_ERROR`)\n\nexport const openContentNotesDialog = createAction(`${prefix}OPEN_CONTENT_NOTES_DIALOG`)\nexport const closeContentNotesDialog = createAction(`${prefix}CLOSE_CONTENT_NOTES_DIALOG`)\n\nexport const openNewContent = createAction(`${prefix}OPEN_NEW_CONTENT`)\n\nexport const changeContentTabView = createAction(`${prefix}CHANGE_CONTENT_TAB_VIEW`)\n\nexport const changeContentEditTabView = createAction(`${prefix}CHANGE_CONTENT_EDIT_TAB_VIEW`)\n\nexport const changeContentsCampaignsTabView = createAction(`${prefix}CHANGE_CONTENTS_CAMPAIGNS_TAB_VIEW`)\n\nexport const openClosedCampaignDialog = createAction(`${prefix}OPEN_CLOSED_CAMPAIGN_DIALOG`)\nexport const closeClosedCampaignDialog = createAction(`${prefix}CLOSE_CLOSED_CAMPAIGN_DIALOG`)\nexport const setRecipientBrowserOpen = createAction(`${prefix}SET_RECIPIENT_BROWSER_OPEN`)\n\nexport const changeAttachmentsMediaType = createAction(`${prefix}CHANGE_ATTACHMENTS_MEDIA_TYPE`)\n\nexport const openAttachmentsDeleteDialog = createAction(`${prefix}OPEN_ATTACHMENTS_DELETE_DIALOG`)\nexport const closeAttachmentsDeleteDialog = createAction(`${prefix}CLOSE_ATTACHMENTS_DELETE_DIALOG`)\n\nexport const openAttachmentsImagePreviewDialog = createAction(`${prefix}OPEN_ATTACHMENTS_IMAGE_PREVIEW_DIALOG`)\nexport const closeAttachmentsImagePreviewDialog = createAction(`${prefix}CLOSE_ATTACHMENTS_IMAGE_PREVIEW_DIALOG`)\n\nexport const setContentIsPublishable = createAction(`${prefix}SET_CONTENT_IS_PUBLISHABLE`)\n\nexport const openTemplateConfirmDialog = createAction(`${prefix}OPEN_TEMPLATE_CONFIRM_DIALOG`)\nexport const closeTemplateConfirmDialog = createAction(`${prefix}CLOSE_TEMPLATE_CONFIRM_DIALOG`)\n\nexport const openTemplatePreviewDialog = createAction(`${prefix}OPEN_TEMPLATE_PREVIEW_DIALOG`)\nexport const closeTemplatePreviewDialog = createAction(`${prefix}CLOSE_TEMPLATE_PREVIEW_DIALOG`)\n\nexport const emailEditorForceLoadDesignStart = createAction(`${prefix}EMAIL_EDITOR_FORCE_LOAD_DESIGN_START`)\nexport const emailEditorForceLoadDesignStop = createAction(`${prefix}EMAIL_EDITOR_FORCE_LOAD_DESIGN_STOP`)\n\nexport const openOtsWelcomeDialog = createAction(`${prefix}OPEN_OTS_WELCOME_DIALOG`)\nexport const closeOtsWelcomeDialog = createAction(`${prefix}CLOSE_OTS_WELCOME_DIALOG`)\n\nexport const closeOtsSuccessDialog = createAction(`${prefix}CLOSE_OTS_SUCCESS_DIALOG`)\nexport const closeOtsErrorDialog = createAction(`${prefix}CLOSE_OTS_ERROR_DIALOG`)\n\nexport const openRecipientsClearAllConfirmDialog = createAction(`${prefix}OPEN_RECIPIENTS_CLEAR_ALL_CONFIRM_DIALOG`)\nexport const closeRecipientsClearAllConfirmDialog = createAction(`${prefix}CLOSE_RECIPIENTS_CLEAR_ALL_CONFIRM_DIALOG`)\n\n// FILTER\nprefix = `${defaultPrefix}FILTER/`\nexport const addSearchQuery = createAction(`${prefix}ADD_SEARCH_QUERY`)\nexport const removeFilter = createAction(`${prefix}REMOVE_FILTER`)\nexport const invertFilter = createAction(`${prefix}INVERT_FILTER`)\nexport const updateFilter = createAction(`${prefix}UPDATE_FILTER`)\nexport const resetFilters = createAction(`${prefix}RESET_FILTERS`)\nexport const setPage = createAction(`${prefix}SET_PAGE`)\nexport const setLimit = createAction(`${prefix}SET_LIMIT`)\nexport const setSortBy = createAction(`${prefix}SET_SORT_BY`)\nexport const incrementMediaFilesPage = createAction(`${prefix}INCREMENT_MEDIA_FILES_PAGE`)\nexport const setContentFilters = createAction(`${prefix}SET_CONTENT_FILTERS`)\nexport const setCampaignFilters = createAction(`${prefix}SET_CAMPAIGN_FILTERS`)\nexport const setKpiStatisticsFilters = createAction(`${prefix}SET_KPI_STATISTICS_FILTERS`)\nexport const setRecipientBrowserQuery = createAction(`${prefix}SET_RECIPIENT_BROWSER_QUERY`)\n\n// CALENDAR\nprefix = `${defaultPrefix}CALENDAR/`\n\nexport const setCalendarDate = createAction(`${prefix}SET_CALENDAR_DATE`)\nexport const setCalendarSelectedCampaignId = createAction(`${prefix}SET_CALENDAR_SELECTED_CAMPAIGN_ID`)\nexport const setCalendarSelectedDay = createAction(`${prefix}SET_CALENDAR_SELECTED_DAY`)\n\nexport const fetchCalendarEventsStart = createAction(`${prefix}FETCH_CALENDAR_EVENTS_START`)\nexport const fetchCalendarEventsSuccess = createAction(`${prefix}FETCH_CALENDAR_EVENTS_SUCCESS`)\nexport const fetchCalendarEventsError = createAction(`${prefix}FETCH_CALENDAR_EVENTS_ERROR`)\n\nexport const openCalendarDialog = createAction(`${prefix}OPEN_CALENDAR_DIALOG`)\nexport const closeCalendarDialog = createAction(`${prefix}CLOSE_CALENDAR_DIALOG`)\n\nexport const sortContents = createAction(`${prefix}SORT_CONTENTS`)\nexport const sortCampaigns = createAction(`${prefix}SORT_CAMPAIGNS`)\n\nexport const onCalendarContentClick = createAction(`${prefix}ON_CALENDAR_CONTENT_CLICK`)\n","import { createAction } from 'redux-actions'\nimport createLoadingAction from 'utils/createLoadingAction'\n\nconst defaultPrefix = 'CUSTOM_TAGS/'\nlet prefix = 'CUSTOM_TAGS/'\n\n// DATA\nexport const setCustomTags = createAction(`${prefix}SET_CUSTOM_TAGS`)\nexport const resetCustomTagNewNewsCount = createAction(`${prefix}RESET_CUSTOM_TAGS_NEW_NEWS_COUNT`)\n\nexport const saveCustomTagStart = createLoadingAction(`${prefix}SAVE_CUSTOM_TAG_START`, true)\nexport const saveCustomTagSuccess = createLoadingAction(`${prefix}SAVE_CUSTOM_TAG_SUCCESS`, false)\nexport const saveCustomTagError = createLoadingAction(`${prefix}SAVE_CUSTOM_TAG_ERROR`, false)\n\nexport const deleteCustomTagStart = createAction(`${prefix}DELETE_CUSTOM_TAG_START`)\nexport const deleteCustomTagSuccess = createAction(`${prefix}DELETE_CUSTOM_TAG_SUCCESS`)\nexport const deleteCustomTagError = createAction(`${prefix}DELETE_CUSTOM_TAG_ERROR`)\n\nexport const emptyCustomTagStart = createAction(`${prefix}EMPTY_CUSTOM_TAG_START`)\nexport const emptyCustomTagSuccess = createAction(`${prefix}EMPTY_CUSTOM_TAG_SUCCESS`)\nexport const emptyCustomTagError = createAction(`${prefix}EMPTY_CUSTOM_TAG_ERROR`)\n\nexport const assignCustomTagToNewsStart = createLoadingAction(`${prefix}ASSIGN_CUSTOM_TAG_TO_NEWS_START`, true)\nexport const assignCustomTagToNewsSuccess = createLoadingAction(`${prefix}ASSIGN_CUSTOM_TAG_TO_NEWS_SUCCESS`, false)\nexport const assignCustomTagToNewsError = createLoadingAction(`${prefix}ASSIGN_CUSTOM_TAG_TO_NEWS_ERROR`, false)\n\nexport const removeCustomTagFromNewsStart = createLoadingAction(`${prefix}REMOVE_CUSTOM_TAG_FROM_NEWS_START`, true)\nexport const removeCustomTagFromNewsSuccess = createLoadingAction(`${prefix}REMOVE_CUSTOM_TAG_FROM_NEWS_SUCCESS`, false)\nexport const removeCustomTagFromNewsError = createLoadingAction(`${prefix}REMOVE_CUSTOM_TAG_FROM_NEWS_ERROR`, false)\n\nexport const assignCustomTagToGroupStart = createLoadingAction(`${prefix}ASSIGN_CUSTOM_TAG_TO_GROUP_START`, true)\nexport const assignCustomTagToGroupSuccess = createLoadingAction(`${prefix}ASSIGN_CUSTOM_TAG_TO_GROUP_SUCCESS`, false)\nexport const assignCustomTagToGroupError = createLoadingAction(`${prefix}ASSIGN_CUSTOM_TAG_TO_GROUP_ERROR`, false)\n\nexport const removeCustomTagFromGroupStart = createLoadingAction(`${prefix}REMOVE_CUSTOM_TAG_FROM_GROUP_START`, true)\nexport const removeCustomTagFromGroupSuccess = createLoadingAction(`${prefix}REMOVE_CUSTOM_TAG_FROM_GROUP_SUCCESS`, false)\nexport const removeCustomTagFromGroupError = createLoadingAction(`${prefix}REMOVE_CUSTOM_TAG_FROM_GROUP_ERROR`, false)\n\nexport const fetchNewsForCustomTagStart = createLoadingAction(`${prefix}FETCH_NEWS_FOR_CUSTOM_TAG_START`, true)\nexport const fetchNewsForCustomTagSuccess = createLoadingAction(`${prefix}FETCH_NEWS_FOR_CUSTOM_TAG_SUCCESS`, false)\nexport const fetchNewsForCustomTagError = createLoadingAction(`${prefix}FETCH_NEWS_FOR_CUSTOM_TAG_ERROR`, false)\n\nexport const afterStructuredFormatExportActionStart = createAction(`${prefix}AFTER_STRUCTURED_FORMAT_EXPORT_ACTION_START`)\nexport const afterStructuredFormatExportActionSuccess = createAction(`${prefix}AFTER_STRUCTURED_FORMAT_EXPORT_ACTION_SUCCESS`)\nexport const afterStructuredFormatExportActionError = createAction(`${prefix}AFTER_STRUCTURED_FORMAT_EXPORT_ACTION_ERROR`)\n\n// UI\nprefix = `${defaultPrefix}UI/`\nexport const updateAfterStructuredFormatExportAction = createAction(`${prefix}UPDATE_AFTER_STRUCTURED_FORMAT_EXPORT_ACTION`)\nexport const setSelectedCustomTag = createAction(`${prefix}SET_SELECTED_CUSTOM_TAG`)\nexport const showCustomTagDialog = createAction(`${prefix}SHOW_CUSTOM_TAG_DIALOG`)\nexport const hideCustomTagDialog = createAction(`${prefix}HIDE_CUSTOM_TAG_DIALOG`)\nexport const showEmptyCustomTagDialog = createAction(`${prefix}SHOW_EMPTY_CUSTOM_TAG_DIALOG`)\nexport const hideEmptyCustomTagDialog = createAction(`${prefix}HIDE_EMPTY_CUSTOM_TAG_DIALOG`)\nexport const showAssignCustomTagsToNewsDialog = createAction(`${prefix}SHOW_ASSIGN_CUSTOM_TAGS_TO_NEWS_DIALOG`)\nexport const hideAssignCustomTagsToNewsDialog = createAction(`${prefix}HIDE_ASSIGN_CUSTOM_TAGS_TO_NEWS_DIALOG`)\nexport const showAssignCustomTagsToGroupDialog = createAction(`${prefix}SHOW_ASSIGN_CUSTOM_TAGS_TO_GROUP_DIALOG`)\nexport const hideAssignCustomTagsToGroupDialog = createAction(`${prefix}HIDE_ASSIGN_CUSTOM_TAGS_TO_GROUP_DIALOG`)\nexport const uploadPhotoStart = createAction(`${prefix}UPLOAD_PHOTO_START`)\nexport const uploadPhotoSuccess = createAction(`${prefix}UPLOAD_PHOTO_SUCCESS`)\nexport const uploadPhotoError = createAction(`${prefix}UPLOAD_PHOTO_ERROR`)\nexport const setUploadedPhoto = createAction(`${prefix}SET_UPLOADED_PHOTO`)\nexport const filterBySelectedCustomTag = createAction(`${prefix}FILTER_BY_SELECTED_CUSTOM_TAG`)\nexport const filterBySelectedCustomTagGroup = createAction(`${prefix}FILTER_BY_SELECTED_CUSTOM_TAG_GROUP`)\nexport const openCustomTagInShoppingCart = createAction(`${prefix}OPEN_CUSTOM_TAG_IN_SHOPPING_CART`)\nexport const sortBy = createAction(`${prefix}SORT_BY`)\nexport const showRemoveCustomTagDialog = createAction(`${prefix}SHOW_REMOVE_CUSTOM_TAG_DIALOG`)\nexport const hideRemoveCustomTagDialog = createAction(`${prefix}HIDE_REMOVE_CUSTOM_TAG_DIALOG`)\nexport const setCustomTagsViewType = createAction(`${prefix}SET_CUSTOM_TAGS_VIEW_TYPE`)\nexport const changeCustomTagsTab = createAction(`${prefix}CHANGE_CUSTOM_TAGS_TAB`)\n\n// GROUPS\nprefix = `${defaultPrefix}GROUPS/`\nexport const setFilteredGroupId = createAction(`${prefix}SET_FILTERED_GROUP_ID`)\nexport const resetFilteredGroupId = createAction(`${prefix}RESET_FILTERED_GROUP_ID`)\n\nexport const showGroupDialog = createAction(`${prefix}SHOW_GROUP_DIALOG`)\nexport const hideGroupDialog = createAction(`${prefix}HIDE_GROUP_DIALOG`)\n\nexport const showDeleteGroupDialog = createAction(`${prefix}SHOW_DELETE_GROUP_DIALOG`)\nexport const hideDeleteGroupDialog = createAction(`${prefix}HIDE_DELETE_GROUP_DIALOG`)\n\nexport const setSelectedGroup = createAction(`${prefix}SET_SELECTED_GROUP`)\n\nexport const saveGroupStart = createAction(`${prefix}SAVE_GROUP_START`)\nexport const saveGroupSuccess = createAction(`${prefix}SAVE_GROUP_SUCCESS`)\nexport const saveGroupError = createAction(`${prefix}SAVE_GROUP_ERROR`)\n\nexport const deleteGroupStart = createAction(`${prefix}DELETE_GROUP_START`)\nexport const deleteGroupSuccess = createAction(`${prefix}DELETE_GROUP_SUCCESS`)\nexport const deleteGroupError = createAction(`${prefix}DELETE_GROUP_ERROR`)\n\nexport const toggleGroupedAssignableCustomTags = createAction(`${prefix}TOGGLE_GROUPED_ASSIGNABLE_CUSTOM_TAGS`)\n\nexport const runCustomTagQueries = createAction(`${prefix}RUN_CUSTOM_TAG_QUERIES`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'DARKNET/'\nlet prefix = defaultPrefix\n\nexport const searchRequestStart = createAction(`${prefix}SEARCH_REQUEST_START`)\nexport const searchRequestError = createAction(`${prefix}SEARCH_REQUEST_ERROR`)\nexport const searchRequestSuccess = createAction(`${prefix}SEARCH_REQUEST_SUCCESS`)\n\nexport const scoresRequestStart = createAction(`${prefix}SCORES_REQUEST_START`)\nexport const scoresRequestError = createAction(`${prefix}SCORES_REQUEST_ERROR`)\nexport const scoresRequestSuccess = createAction(`${prefix}SCORES_REQUEST_SUCCESS`)\n\nexport const saveSearchQueryRequestError = createAction(`${prefix}SAVE_SEARCH_QUERY_REQUEST_ERROR`)\nexport const saveSearchQueryRequestStart = createAction(`${prefix}SAVE_SEARCH_QUERY_REQUEST_START`)\nexport const saveSearchQueryRequestSuccess = createAction(`${prefix}SAVE_SEARCH_QUERY_REQUEST_SUCCESS`)\n\nexport const saveScoreQueryRequestError = createAction(`${prefix}SAVE_SCORE_QUERY_REQUEST_ERROR`)\nexport const saveScoreQueryRequestStart = createAction(`${prefix}SAVE_SCORE_QUERY_REQUEST_START`)\nexport const saveScoreQueryRequestSuccess = createAction(`${prefix}SAVE_SCORE_QUERY_REQUEST_SUCCESS`)\n\nexport const fetchAllQueriesStart = createAction(`${prefix}FETCH_ALL_QUERIES_START`)\nexport const fetchAllQueriesSuccess = createAction(`${prefix}FETCH_ALL_QUERIES_SUCCESS`)\nexport const fetchAllQueriesError = createAction(`${prefix}FETCH_ALL_QUERIES_ERROR`)\n\nexport const deleteQueryRequestStart = createAction(`${prefix}DELETE_QUERY_REQUEST_START`)\nexport const deleteQueryRequestSuccess = createAction(`${prefix}DELETE_QUERY_REQUEST_SUCCESS`)\nexport const deleteQueryRequestError = createAction(`${prefix}DELETE_QUERY_REQUEST_ERROR`)\n\nexport const deactivateQueryRequestStart = createAction(`${prefix}DEACTIVATE_QUERY_REQUEST_START`)\nexport const deactivateQueryRequestSuccess = createAction(`${prefix}DEACTIVATE_QUERY_REQUEST_SUCCESS`)\nexport const deactivateQueryRequestError = createAction(`${prefix}DEACTIVATE_QUERY_REQUEST_ERROR`)\n\nexport const activateQueryRequestStart = createAction(`${prefix}ACTIVATE_QUERY_REQUEST_START`)\nexport const activateQueryRequestSuccess = createAction(`${prefix}ACTIVATE_QUERY_REQUEST_SUCCESS`)\nexport const activateQueryRequestError = createAction(`${prefix}ACTIVATE_QUERY_REQUEST_ERROR`)\n\nexport const removeFilter = createAction(`${prefix}REMOVE_FILTER`)\nexport const invertFilter = createAction(`${prefix}INVERT_FILTER`)\nexport const updateFilter = createAction(`${prefix}UPDATE_FILTER`)\nexport const resetFilters = createAction(`${prefix}RESET_FILTERS`)\n\nexport const addDarknetSearchQuery = createAction(`${prefix}ADD_DARKNET_SEARCH_QUERY`)\nexport const chartDrilldown = createAction(`${prefix}CHART_DRILLDOWN`)\nexport const searchResultDrilldown = createAction(`${prefix}SEARCH_RESULT_DRILLDOWN`)\n\nprefix = `${defaultPrefix}UI/`\nexport const uiApplyDateFilter = createAction(`${prefix}APPLY_DATE_FILTER`)\nexport const uiChooseQuickSelect = createAction(`${prefix}CHOOSE_QUICK_SELECT`)\nexport const uiEnteredQuery = createAction(`${prefix}ENTERED_QUERY`)\nexport const uiOnSortByChange = createAction(`${prefix}onSortByChange`)\nexport const uiOnSortDirectionChange = createAction(`${prefix}onSortDirectionChange`)\nexport const changeDarknetView = createAction(`${prefix}CHANGE_DARKNET_VIEW`)\nexport const toggleAdvancedSearch = createAction(`${prefix}TOGGLE_ADVANCED_SEARCH`)\nexport const uiResetFilters = createAction(`${prefix}RESET_FILTERS`)\nexport const uiApplyFilters = createAction(`${prefix}APPLY_FILTERS`)\nexport const setSelectedFilters = createAction(`${prefix}SET_SELECTED_FILTERS`)\nexport const addSelectedFilter = createAction(`${prefix}ADD_SELECTED_FILTER`)\nexport const uiRemoveFilter = createAction(`${prefix}REMOVE_FILTER`)\nexport const uiInvertFilter = createAction(`${prefix}INVERT_FILTER`)\nexport const uiUpdateFilter = createAction(`${prefix}UPDATE_FILTER`)\n\nexport const openScoreQueryDialog = createAction(`${prefix}OPEN_SCORE_QUERY_DIALOG`)\nexport const openSearchQueryDialog = createAction(`${prefix}OPEN_SEARCH_QUERY_DIALOG`)\nexport const closeScoreQueryDialog = createAction(`${prefix}CLOSE_SCORE_QUERY_DIALOG`)\nexport const closeSearchQueryDialog = createAction(`${prefix}CLOSE_SEARCH_QUERY_DIALOG`)\n\nexport const updateScoreQueryFormData = createAction(`${prefix}UPDATE_SCORE_QUERY_FORM_DATA`)\nexport const resetScoreQueryFormData = createAction(`${prefix}RESET_SCORE_QUERY_FORM_DATA`)\n\nexport const updateSearchQueryFormData = createAction(`${prefix}UPDATE_SEARCH_QUERY_FORM_DATA`)\nexport const resetSearchQueryFormData = createAction(`${prefix}RESET_SEARCH_QUERY_FORM_DATA`)\nexport const setSearchQueryFormTestResult = createAction(`${prefix}SET_SEARCH_QUERY_FORM_TEST_RESULT`)\n\nprefix = `${defaultPrefix}API/`\n\nexport const onSortByChange = createAction(`${prefix}onSortByChange`)\nexport const onSortDirectionChange = createAction(`${prefix}onSortDirectionChange`)\nexport const testSearchQueryError = createAction(`${prefix}TEST_SEARCH_QUERY_ERROR`)\nexport const testSearchQueryStart = createAction(`${prefix}TEST_SEARCH_QUERY_START`)\nexport const testSearchQuerySuccess = createAction(`${prefix}TEST_SEARCH_QUERY_SUCCESS`)\nexport const loadMoreDarknetEntriesStart = createAction(`${prefix}LOAD_MORE_DARKNET_ENTRIES_START`)\nexport const loadMoreDarknetEntriesError = createAction(`${prefix}LOAD_MORE_DARKNET_ENTRIES_ERROR`)\nexport const loadMoreDarknetEntriesSuccess = createAction(`${prefix}LOAD_MORE_DARKNET_ENTRIES_SUCCESS`)\n","import { createAction } from 'redux-actions'\nimport createLoadingAction from 'utils/createLoadingAction'\n\nconst prefix = 'DASHBOARD/'\n\nexport const toggleEditing = createAction(`${prefix}TOGGLE_EDITING`)\nexport const setDashboards = createAction(`${prefix}SET_DASHBOARDS`)\nexport const setSelectedDashboard = createAction(`${prefix}SET_SELECTED_DASHBOARD`)\nexport const cloneDashboard = createAction(`${prefix}CLONE_DASHBOARD`)\n\nexport const setEditDashboard = createAction(`${prefix}SET_EDIT_DASHBOARD`)\nexport const setEditDashboardUploadedBackgroundImage = createAction(`${prefix}SET_EDIT_DASHBOARD_UPLOADED_BACKGROUND_IMAGE`)\nexport const setEditDashboardBackgroundImageUrl = createAction(`${prefix}SET_EDIT_DASHBOARD_BACKGROUND_IMAGE_URL`)\nexport const setEditDashboardColor = createAction(`${prefix}SET_EDIT_DASHBOARD_COLOR`)\nexport const resetEditDashboardBackgroundImage = createAction(`${prefix}RESET_EDIT_DASHBOARD_BACKGROUND_IMAGE`)\n\nexport const fetchDashboard = createAction(`${prefix}FETCH_DASHBOARD`)\n\nexport const saveDashboardStart = createAction(`${prefix}SAVE_DASHBOARD_START`)\nexport const saveDashboardSuccess = createAction(`${prefix}SAVE_DASHBOARD_SUCCESS`)\nexport const saveDashboardError = createAction(`${prefix}SAVE_DASHBOARD_ERROR`)\n\nexport const fetchSavedSearchAggregationsStart = createAction(`${prefix}FETCH_SAVED_SEARCH_AGGREGATIONS_START`)\nexport const fetchSavedSearchAggregationsSuccess = createAction(`${prefix}FETCH_SAVED_SEARCH_AGGREGATIONS_SUCCESS`)\nexport const fetchSavedSearchAggregationsError = createAction(`${prefix}FETCH_SAVED_SEARCH_AGGREGATIONS_ERROR`)\n\nexport const deleteDashboardStart = createAction(`${prefix}DELETE_DASHBOARD_START`)\nexport const deleteDashboardSuccess = createAction(`${prefix}DELETE_DASHBOARD_SUCCESS`)\nexport const deleteDashboardError = createAction(`${prefix}DELETE_DASHBOARD_ERROR`)\n\nexport const showChartDialog = createAction(`${prefix}SHOW_CHART_DIALOG`)\nexport const hideChartDialog = createAction(`${prefix}HIDE_CHART_DIALOG`)\nexport const showMultiChartsDialog = createAction(`${prefix}SHOW_MULTI_CHARTS_DIALOG`)\nexport const hideMultiChartsDialog = createAction(`${prefix}HIDE_MULTI_CHARTS_DIALOG`)\n\nexport const showEditDialog = createAction(`${prefix}SHOW_EDIT_DASHBOARD_DIALOG`)\nexport const hideEditDialog = createAction(`${prefix}HIDE_EDIT_DASHBOARD_DIALOG`)\n\nexport const showDeleteDialog = createAction(`${prefix}SHOW_DELETE_DASHBOARD_DIALOG`)\nexport const hideDeleteDialog = createAction(`${prefix}HIDE_DELETE_DASHBOARD_DIALOG`)\n\nexport const showDrilldownDialog = createAction(`${prefix}SHOW_DRILLDOWN_DIALOG`)\nexport const hideDrilldownDialog = createAction(`${prefix}HIDE_DRILLDOWN_DIALOG`)\n\nexport const setSelectedChart = createAction(`${prefix}SET_SELECTED_CHART`)\nexport const setSelectedChartOpt = createAction(`${prefix}SET_SELECTED_CHART_OPT`)\nexport const setSelectedChartStepType = createAction(`${prefix}SET_SELECTED_CHART_STEP_TYPE`)\nexport const setChart = createAction(`${prefix}SET_CHART`)\nexport const setChartOpt = createAction(`${prefix}SET_CHART_OPT`)\nexport const setChartData = createAction(`${prefix}SET_CHART_DATA`)\nexport const setChartLoading = createAction(`${prefix}SET_CHART_LOADING`)\nexport const checkChartChange = createAction(`${prefix}CHECK_CHART_CHANGE`)\nexport const removeChart = createAction(`${prefix}REMOVE_CHART`)\nexport const setLayouts = createAction(`${prefix}SET_LAYOUTS`)\nexport const setNormalMode = createAction(`${prefix}SET_NORMAL_MODE`)\nexport const setPrevious = createAction(`${prefix}SET_PREVIOUS`)\nexport const setPreviousToData = createAction(`${prefix}SET_PREVIOUS_TO_DATA`)\nexport const cancelEditing = createAction(`${prefix}CANCEL_EDITING`)\nexport const setChartLimitReached = createAction(`${prefix}SET_CHART_LIMIT_REACHED`)\n\nexport const selectSavedSearch = createAction(`${prefix}SELECT_SAVED_SEARCH`)\nexport const selectAdditionalSavedSearches = createAction(`${prefix}SELECT_ADDITIONAL_SAVED_SEARCHES`)\nexport const selectChartDialogGroupingType = createAction(`${prefix}SELECT_CHART_DIALOG_GROUPING_TYPE`)\nexport const selectChartDialogSortBy = createAction(`${prefix}SELECT_CHART_DIALOG_SORT_BY`)\nexport const selectDrilldownGroupingType = createAction(`${prefix}SELECT_DRILLDOWN_GROUPING_TYPE`)\nexport const selectDrilldownSortBy = createAction(`${prefix}SELECT_DRILLDOWN_SORT_BY`)\nexport const selectDateRange = createAction(`${prefix}SELECT_DATE_RANGE`)\nexport const selectDate = createAction(`${prefix}SELECT_DATE`)\nexport const selectDateMode = createAction(`${prefix}SELECT_DATE_MODE`)\nexport const selectDateType = createAction(`${prefix}SELECT_DATE_TYPE`)\nexport const selectDateInterval = createAction(`${prefix}SELECT_DATE_INTERVAL`)\nexport const selectThirdLevel = createAction(`${prefix}SELECT_THIRD_LEVEL`)\nexport const selectFirstLevel = createAction(`${prefix}SELECT_FIRST_LEVEL`)\nexport const updateDateRangeOfSelectedDashboard = createAction(`${prefix}UPDATE_DATE_RANGE_OF_SELECTED_DASHBOARD`)\nexport const updateKpisOfSelectedDashboard = createAction(`${prefix}UPDATE_KPI_OF_SELECTED_DASHBOARD`)\nexport const updateDatesOfSelectedDashboard = createAction(`${prefix}UPDATE_DATES_OF_SELECTED_DASHBOARD`)\n\nexport const toggleFavorite = createAction(`${prefix}TOGGLE_FAVORITE`)\nexport const loadDashboard = createAction(`${prefix}LOAD_DASHBOARD`)\n\nexport const loadMoreFeedChartItems = createAction(`${prefix}LOAD_MORE_FEED_CHART_ITEMS`)\n\nexport const loadMoreNewsFeedNewsStart = createAction(`${prefix}LOAD_MORE_NEWS_FEED_NEWS_START`)\nexport const loadMoreNewsFeedNewsSuccess = createAction(`${prefix}LOAD_MORE_NEWS_FEED_NEWS_SUCCESS`)\nexport const loadMoreNewsFeedNewsError = createAction(`${prefix}LOAD_MORE_NEWS_FEED_NEWS_ERROR`)\n\nexport const fetchNewsFeedClusterStatsError = createAction(`${prefix}FETCH_NEWS_FEED_CLUSTER_STATS_ERROR`)\nexport const fetchNewsFeedClusterStatsStart = createAction(`${prefix}FETCH_NEWS_FEED_CLUSTER_STATS_START`)\nexport const fetchNewsFeedClusterStatsSuccess = createAction(`${prefix}FETCH_NEWS_FEED_CLUSTER_STATS_SUCCESS`)\n\nexport const loadDrilldownNewsFeedNewsStart = createAction(`${prefix}LOAD_DRILLDOWN_NEWS_FEED_NEWS_START`)\nexport const loadDrilldownNewsFeedNewsSuccess = createAction(`${prefix}LOAD_DRILLDOWN_NEWS_FEED_NEWS_SUCCESS`)\nexport const loadDrilldownNewsFeedNewsError = createAction(`${prefix}LOAD_DRILLDOWN_NEWS_FEED_NEWS_ERROR`)\n\nexport const loadDrilldownNewsFeedAiAnalysisStart = createAction(`${prefix}LOAD_DRILLDOWN_NEWS_FEED_AI_ANALYSIS_START`)\nexport const loadDrilldownNewsFeedAiAnalysisSuccess = createAction(`${prefix}LOAD_DRILLDOWN_NEWS_FEED_AI_ANALYSIS_SUCCESS`)\nexport const loadDrilldownNewsFeedAiAnalysisError = createAction(`${prefix}LOAD_DRILLDOWN_NEWS_FEED_AI_ANALYSIS_ERROR`)\n\nexport const loadMoreDrilldownNewsFeedNewsStart = createAction(`${prefix}LOAD_MORE_DRILLDOWN_NEWS_FEED_NEWS_START`)\nexport const loadMoreDrilldownNewsFeedNewsSuccess = createAction(`${prefix}LOAD_MORE_DRILLDOWN_NEWS_FEED_NEWS_SUCCESS`)\nexport const loadMoreDrilldownNewsFeedNewsError = createAction(`${prefix}LOAD_MORE_DRILLDOWN_NEWS_FEED_NEWS_ERROR`)\n\nexport const fetchDrilldownNewsFeedClusterStatsError = createAction(`${prefix}FETCH_DRILLDOWN_NEWS_FEED_CLUSTER_STATS_ERROR`)\nexport const fetchDrilldownNewsFeedClusterStatsStart = createAction(`${prefix}FETCH_DRILLDOWN_NEWS_FEED_CLUSTER_STATS_START`)\nexport const fetchDrilldownNewsFeedClusterStatsSuccess = createAction(`${prefix}FETCH_DRILLDOWN_NEWS_FEED_CLUSTER_STATS_SUCCESS`)\n\nexport const loadMoreSocialMediaAnalyticsFeedPostsStart = createAction(`${prefix}LOAD_MORE_SOCIAL_MEDIA_ANALYTICS_FEED_POSTS_START`)\nexport const loadMoreSocialMediaAnalyticsFeedPostsSuccess = createAction(`${prefix}LOAD_MORE_SOCIAL_MEDIA_ANALYTICS_FEED_POSTS_SUCCESS`)\nexport const loadMoreSocialMediaAnalyticsFeedPostsError = createAction(`${prefix}LOAD_MORE_SOCIAL_MEDIA_ANALYTICS_FEED_POSTS_ERROR`)\n\nexport const executeSavedSearch = createAction(`${prefix}EXECUTE_SAVED_SEARCH`)\nexport const executedSavedSearch = createAction(`${prefix}EXECUTED_SAVED_SEARCH`)\n\nexport const exportExcelStart = createLoadingAction(`${prefix}EXPORT_EXCEL_START`, true)\nexport const exportExcelSuccess = createLoadingAction(`${prefix}EXPORT_EXCEL_SUCCESS`, false)\nexport const exportExcelError = createLoadingAction(`${prefix}EXPORT_EXCEL_ERROR`, false)\n\nexport const exportPowerpointStart = createLoadingAction(`${prefix}EXPORT_POWERPOINT_START`, true)\nexport const exportPowerpointSuccess = createLoadingAction(`${prefix}EXPORT_POWERPOINT_SUCCESS`, false)\nexport const exportPowerpointError = createLoadingAction(`${prefix}EXPORT_POWERPOINT_ERROR`, false)\n\nexport const exportDashboardAsPowerpointStart = createAction(`${prefix}EXPORT_DASHBOARD_AS_POWERPOINT_START`)\nexport const exportDashboardAsPowerpointSuccess = createAction(`${prefix}EXPORT_DASHBOARD_AS_POWERPOINT_SUCCESS`)\nexport const exportDashboardAsPowerpointError = createAction(`${prefix}EXPORT_DASHBOARD_AS_POWERPOINT_ERROR`)\n\nexport const downloadImageStart = createAction(`${prefix}DOWNLOAD_IMAGE_START`)\nexport const downloadImageError = createAction(`${prefix}DOWNLOAD_IMAGE_ERROR`)\nexport const downloadImageSuccess = createAction(`${prefix}DOWNLOAD_IMAGE_SUCCESS`)\n\nexport const downloadPdfStart = createAction(`${prefix}DOWNLOAD_PDF_START`)\nexport const downloadPdfError = createAction(`${prefix}DOWNLOAD_PDF_ERROR`)\nexport const downloadPdfSuccess = createAction(`${prefix}DOWNLOAD_PDF_SUCCESS`)\n\nexport const copyFromDisplaySize = createAction(`${prefix}COPY_FROM_DISPLAY_SIZE`)\n\nexport const toggleAutoRefresh = createAction(`${prefix}TOGGLE_AUTO_REFRESH`)\nexport const startAutoRefresh = createAction(`${prefix}START_AUTO_REFRESH`)\nexport const stopAutoRefresh = createAction(`${prefix}STOP_AUTO_REFRESH`)\n\nexport const addNewChartShortcut = createAction(`${prefix}ADD_NEW_CHART_SHORTCUT`)\n\nexport const selectGoogleAnalyticsChart = createAction(`${prefix}SELECT_GOOGLE_ANALYTICS_CHART`)\nexport const selectGoogleAnalyticsView = createAction(`${prefix}SELECT_GOOGLE_ANALYTICS_VIEW`)\n\nexport const selectMozChart = createAction(`${prefix}SELECT_MOZ_CHART`)\nexport const selectMozTargets = createAction(`${prefix}SELECT_MOZ_TARGETS`)\n\nexport const selectLinkedInAnalyticsChart = createAction(`${prefix}SELECT_LINKED_IN_ANALYTICS_CHART`)\nexport const selectLinkedInAnalyticsOrganization = createAction(`${prefix}SELECT_LINKED_IN_ANALYTICS_ORGANIZATION`)\n\nexport const selectFacebookAnalyticsChart = createAction(`${prefix}SELECT_FACEBOOK_ANALYTICS_CHART`)\nexport const setFacebookAnalyticsChart = createAction(`${prefix}SET_FACEBOOK_ANALYTICS_CHART`)\nexport const selectFacebookAnalyticsPage = createAction(`${prefix}SELECT_FACEBOOK_ANALYTICS_PAGE`)\nexport const changeFacebookAnalyticsPage = createAction(`${prefix}CHANGE_FACEBOOK_ANALYTICS_PAGE`)\n\nexport const selectTwitterAnalyticsChart = createAction(`${prefix}SELECT_TWITTER_ANALYTICS_CHART`)\n\nexport const setSelectedChartUploadedPhoto = createAction(`${prefix}SET_SELECTED_CHART_UPLOADED_PHOTO`)\n\nexport const setSelectedChartMultipleSavedSearchesMode = createAction(`${prefix}SET_SELECTED_CHART_MULTIPLE_SAVED_SEARCHES_MODE`)\n\nexport const aiChartDescriptionStart = createAction(`${prefix}AI_CHART_DESCRIPTION_START`)\nexport const aiChartDescriptionSuccess = createAction(`${prefix}AI_CHART_DESCRIPTION_SUCCESS`)\nexport const aiChartDescriptionError = createAction(`${prefix}AI_CHART_DESCRIPTION_ERROR`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'EMAIL_TEMPLATE_LIBRARY/'\nlet prefix = 'EMAIL_TEMPLATE_LIBRARY/'\n\n// DATA\nprefix = `${defaultPrefix}DATA/`\nexport const setTemplateFormData = createAction(`${prefix}SET_TEMPLATE_FORM_DATA`)\nexport const saveTemplateStart = createAction(`${prefix}SAVE_TEMPLATE_START`)\nexport const saveTemplateSuccess = createAction(`${prefix}SAVE_TEMPLATE_SUCCESS`)\nexport const saveTemplateError = createAction(`${prefix}SAVE_TEMPLATE_ERROR`)\nexport const deleteTemplateStart = createAction(`${prefix}DELETE_TEMPLATE_START`)\nexport const deleteTemplateSuccess = createAction(`${prefix}DELETE_TEMPLATE_SUCCESS`)\nexport const deleteTemplateError = createAction(`${prefix}DELETE_TEMPLATE_ERROR`)\nexport const fetchTemplatesStart = createAction(`${prefix}FETCH_TEMPLATES_START`)\nexport const fetchTemplatesSuccess = createAction(`${prefix}FETCH_TEMPLATES_SUCCESS`)\nexport const fetchTemplatesError = createAction(`${prefix}FETCH_TEMPLATES_ERROR`)\nexport const resetTemplatesModule = createAction(`${prefix}RESET_TEMPLATES_MODULE`)\nexport const loadSelectedTemplate = createAction(`${prefix}LOAD_SELECTED_TEMPLATE`)\nexport const fetchMoreTemplatesStart = createAction(`${prefix}FETCH_MORE_TEMPLATES_START`)\nexport const cloneTemplateStart = createAction(`${prefix}CLONE_TEMPLATE_START`)\nexport const cloneTemplateSuccess = createAction(`${prefix}CLONE_TEMPLATE_SUCCESS`)\nexport const cloneTemplateError = createAction(`${prefix}CLONE_TEMPLATE_ERROR`)\nexport const fetchReleasedTemplatesStart = createAction(`${prefix}FETCH_ALL_TEMPLATES_START`)\nexport const fetchReleasedTemplatesSuccess = createAction(`${prefix}FETCH_ALL_TEMPLATES_SUCCESS`)\nexport const fetchReleasedTemplatesError = createAction(`${prefix}FETCH_ALL_TEMPLATES_ERROR`)\n\n// UI\nprefix = `${defaultPrefix}UI/`\nexport const openEditorDialog = createAction(`${prefix}OPEN_EDITOR_DIALOG`)\nexport const closeEditorDialog = createAction(`${prefix}CLOSE_EDITOR_DIALOG`)\nexport const openSaveDialog = createAction(`${prefix}OPEN_SAVE_DIALOG`)\nexport const closeSaveDialog = createAction(`${prefix}CLOSE_SAVE_DIALOG`)\nexport const openPickerDialog = createAction(`${prefix}OPEN_PICKER_DIALOG`)\nexport const closePickerDialog = createAction(`${prefix}CLOSE_PICKER_DIALOG`)\nexport const togglePublicTemplates = createAction(`${prefix}SHOW_PUBLIC_TEMPLATES`)\nexport const setReadMode = createAction(`${prefix}SET_READ_MODE`)\n\n// FILTER\nprefix = `${defaultPrefix}FILTER/`\nexport const increaseTemplatesPage = createAction(`${prefix}INCREASE_TEMPLATES_PAGE`)\nexport const resetTemplateFilters = createAction(`${prefix}RESET_TEMPLATE_FILTERS`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'ENVIRONMENT/'\n\nexport const initEnvironment = createAction(`${prefix}INIT_ENVIRONMENT`)\nexport const changeWidthAndHeight = createAction(`${prefix}CHANGE_WIDTH_AND_HEIGHT`)\nexport const stageRequestSuccess = createAction(`${prefix}STAGE_REQUEST_SUCCESS`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'NEWS/EXPORT/'\n\nexport const changeExportFormatSelection = createAction(`${prefix}CHANGE_EXPORT_FORMAT_SELECTION`)\n\nexport const exportError = createAction(`${prefix}EXPORT_ERROR`)\n\nexport const exportSuccess = createAction(`${prefix}EXPORT_SUCCESS`)\nexport const exportStart = createAction(`${prefix}EXPORT_START`)\nexport const exportStructuredFormatStart = createAction(`${prefix}EXPORT_STRUCTURED_FORMAT_START`)\nexport const exportBackwardsNewsHtmlStart = createAction(`${prefix}EXPORT_BACKWARDS_NEWS_HTML_START`)\n\nexport const exportCoverError = createAction(`${prefix}EXPORT_COVER_ERROR`)\nexport const exportCoverSuccess = createAction(`${prefix}EXPORT_COVER_FINSISHED`)\nexport const exportCoverStart = createAction(`${prefix}EXPORT_COVER_START`)\n\nexport const exportHtmlPreviewSuccess = createAction(`${prefix}EXPORT_HTML_PREVIEW_SUCCESS`)\nexport const exportHtmlPreviewStart = createAction(`${prefix}EXPORT_HTML_PREVIEW_START`)\nexport const exportHtmlPreviewError = createAction(`${prefix}EXPORT_HTML_PREVIEW_ERROR`)\n\nexport const exportTxtPreviewSuccess = createAction(`${prefix}EXPORT_TXT_PREVIEW_SUCCESS`)\nexport const exportTxtPreviewStart = createAction(`${prefix}EXPORT_TXT_PREVIEW_START`)\nexport const exportTxtPreviewError = createAction(`${prefix}EXPORT_TXT_PREVIEW_ERROR`)\n\nexport const exportXmlPreviewSuccess = createAction(`${prefix}EXPORT_XML_PREVIEW_SUCCESS`)\nexport const exportXmlPreviewStart = createAction(`${prefix}EXPORT_XML_PREVIEW_START`)\nexport const exportXmlPreviewError = createAction(`${prefix}EXPORT_XML_PREVIEW_ERROR`)\n\nexport const exportJsonPreviewSuccess = createAction(`${prefix}EXPORT_JSON_PREVIEW_SUCCESS`)\nexport const exportJsonPreviewStart = createAction(`${prefix}EXPORT_JSON_PREVIEW_START`)\nexport const exportJsonPreviewError = createAction(`${prefix}EXPORT_JSON_PREVIEW_ERROR`)\n\nexport const uploadHtmlHeaderLogoSuccess = createAction(`${prefix}UPLOAD_HTML_HEADER_LOGO_SUCCESS`)\nexport const uploadHtmlHeaderLogoStart = createAction(`${prefix}UPLOAD_HTML_HEADER_LOGO_START`)\nexport const uploadHtmlHeaderLogoError = createAction(`${prefix}UPLOAD_HTML_HEADER_LOGO_ERROR`)\n\nexport const setUploadedHeaderLogoUrl = createAction(`${prefix}SET_UPLOADED_HEADER_LOGO_URL`)\nexport const resetUploadedHeaderLogoUrl = createAction(`${prefix}RESET_UPLOADED_HEADER_LOGO_URL`)\n\nexport const uploadHtmlAdvertisingBannerSuccess = createAction(`${prefix}UPLOAD_HEADER_ADVERTISING_BANNER_SUCCESS`)\nexport const uploadHtmlAdvertisingBannerStart = createAction(`${prefix}UPLOAD_HEADER_ADVERTISING_BANNER_START`)\nexport const uploadHtmlAdvertisingBannerError = createAction(`${prefix}UPLOAD_HEADER_ADVERTISING_BANNER_ERROR`)\n\nexport const setUploadedAdvertisingBannerUrl = createAction(`${prefix}SET_UPLOADED_ADVERTISING_BANNER_URL`)\nexport const resetUploadedAdvertisingBannerUrl = createAction(`${prefix}RESET_UPLOADED_ADVERTISING_BANNER_URL`)\n\nexport const resetExportUiState = createAction(`${prefix}RESET_EXPORT_UI_STATE`)\n\nexport const hideDocumentDownloadDialog = createAction(`${prefix}HIDE_DOCUMENT_DOWNLOAD_DIALOG`)\nexport const hideExportDialog = createAction(`${prefix}HIDE_EXPORT_DIALOG`)\nexport const hideSendMailDialog = createAction(`${prefix}HIDE_SEND_MAIL_DIALOG`)\nexport const setExportConfig = createAction(`${prefix}SET_EXPORT_CONFIG`)\nexport const resetExportConfig = createAction(`${prefix}RESET_EXPORT_CONFIG`)\nexport const sendMail = createAction(`${prefix}SEND_MAIL`)\nexport const sendMailSuccess = createAction(`${prefix}SEND_MAIL_SUCCESS`)\nexport const sendMailError = createAction(`${prefix}SEND_MAIL_ERROR`)\nexport const showExportDialog = createAction(`${prefix}SHOW_EXPORT_DIALOG`)\nexport const showSendMailDialog = createAction(`${prefix}SHOW_SEND_MAIL_DIALOG`)\nexport const updateExportSettings = createAction(`${prefix}UPDATE_EXPORT_SETTINGS`)\nexport const updateExportMediaReviewHtmlConfig = createAction(`${prefix}UPDATE_EXPORT_MEDIA_REVIEW_HTML_CONFIG`)\nexport const updateExportMediaReviewPdfConfig = createAction(`${prefix}UPDATE_EXPORT_MEDIA_REVIEW_PDF_CONFIG`)\nexport const updateExportDispatchConfig = createAction(`${prefix}UPDATE_EXPORT_DISPATCH_CONFIG`)\nexport const updateExportPdfDispatchConfig = createAction(`${prefix}UPDATE_EXPORT_PDF_DISPATCH_CONFIG`)\nexport const updateExportMediaReviewPdfCoverPageElement = createAction(`${prefix}UPDATE_EXPORT_PDF_MEDIA_REVIEW_PDF_COVER_PAGE_ELEMENT`)\nexport const updateExportMediaReviewPdfEndPageElement = createAction(`${prefix}UPDATE_EXPORT_PDF_MEDIA_REVIEW_PDF_END_PAGE_ELEMENT`)\nexport const updateTranslationOptions = createAction(`${prefix}UPDATE_TRANSLATION_OPTIONS`)\nexport const validateFilenameInExportSettings = createAction(`${prefix}VALIDATE_FILENAME_IN_EXPORT_SETTINGS`)\nexport const setValueInSettings = createAction(`${prefix}SET_VALUE_IN_SETTINGS`)\nexport const setExportFilename = createAction(`${prefix}SET_EXPORT_FILENAME`)\n\nexport const exportProgressIncreaseStep = createAction(`${prefix}EXPORT_PROGRESS_INCREASE_STEP`)\nexport const exportProgressReset = createAction(`${prefix}EXPORT_PROGRESS_RESET`)\nexport const exportProgressStart = createAction(`${prefix}EXPORT_PROGRESS_START`)\nexport const exportProgressFinish = createAction(`${prefix}EXPORT_PROGRESS_FINISH`)\nexport const exportProgressStop = createAction(`${prefix}EXPORT_PROGRESS_STOP`)\n\nexport const validateSpfSuccess = createAction(`${prefix}VALIDATE_SPF_SUCCESS`)\nexport const validateSpfStart = createAction(`${prefix}VALIDATE_SPF_START`)\nexport const validateSpfStarted = createAction(`${prefix}VALIDATE_SPF_STARTED`)\nexport const validateSpfError = createAction(`${prefix}VALIDATE_SPF_ERROR`)\n\nexport const changeStartEndDate = createAction(`${prefix}CHANGE_START_END_DATE`)\n\nexport const setLastExport = createAction(`${prefix}SET_LAST_EXPORT`)\n\nexport const fetchDispatchLogStart = createAction(`${prefix}FETCH_DISPATCH_LOG_START`)\nexport const fetchDispatchLogSuccess = createAction(`${prefix}FETCH_DISPATCH_LOG_SUCCESS`)\nexport const fetchDispatchLogError = createAction(`${prefix}FETCH_DISPATCH_LOG_ERROR`)\n\nexport const createDispatchStart = createAction(`${prefix}CREATE_DISPATCH_START`)\nexport const createDispatchSuccess = createAction(`${prefix}CREATE_DISPATCH_SUCCESS`)\nexport const createDispatchError = createAction(`${prefix}CREATE_DISPATCH_ERROR`)\n\nexport const cancelDispatchStart = createAction(`${prefix}CANCEL_DISPATCH_START`)\nexport const cancelDispatchSuccess = createAction(`${prefix}CANCEL_DISPATCH_SUCCESS`)\nexport const cancelDispatchError = createAction(`${prefix}CANCEL_DISPATCH_ERROR`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'NEWS/FILTER/'\n\nexport const addNewsQuery = createAction(`${prefix}ADD_NEWS_QUERY`)\nexport const addNewsQueries = createAction(`${prefix}ADD_NEWS_QUERIES`)\nexport const addFilters = createAction(`${prefix}ADD_FILTERS`)\nexport const replaceFilters = createAction(`${prefix}REPLACE_FILTERS`)\nexport const resetFilterFields = createAction(`${prefix}RESET_FILTER_FIELDS`)\nexport const changeDate = createAction(`${prefix}CHANGE_DATE`)\nexport const changeDateInterval = createAction(`${prefix}CHANGE_DATE_INTERVAL`)\nexport const changeDateType = createAction(`${prefix}CHANGE_DATE_TYPE`)\nexport const removeFilter = createAction(`${prefix}REMOVE_FILTER`)\nexport const resetFilters = createAction(`${prefix}RESET_FILTERS`)\nexport const setFilter = createAction(`${prefix}SET_FILTER`)\nexport const setBoolean = createAction(`${prefix}SET_BOOLEAN`)\nexport const setSelectedQueryType = createAction(`${prefix}SET_SELECTED_QUERY_TYPE`)\nexport const setSelectedFilters = createAction(`${prefix}SET_SELECTED_FILTERS`)\nexport const invertFilter = createAction(`${prefix}INVERT_FILTER`)\nexport const updateFilter = createAction(`${prefix}UPDATE_FILTER`)\nexport const setAnalysisFilter = createAction(`${prefix}SET_ANALYSIS_FILTER`)\nexport const setSimilarityFilter = createAction(`${prefix}SET_SIMILARITY_FILTER`)\nexport const resetAnalysisCodesFilter = createAction(`${prefix}RESET_ANALYSIS_CODES_FILTER`)\nexport const toggleStatementTonality = createAction(`${prefix}TOGGLE_STATEMENT_TONALITY`)\nexport const swapAnalysisCodeSelectionAndGrouping = createAction(`${prefix}SWAP_ANALYSIS_CODE_SELECTION_AND_GROUPING`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'IDENTITY_SETS/'\nlet prefix = 'IDENTITY_SETS/'\n\n// data\nexport const setIdentitySets = createAction(`${prefix}SET_IDENTITY_SETS`)\n\nexport const saveIdentitySetStart = createAction(`${prefix}SAVE_IDENTITY_SET_START`)\nexport const saveIdentitySetSuccess = createAction(`${prefix}SAVE_IDENTITY_SET_SUCCESS`)\nexport const saveIdentitySetError = createAction(`${prefix}SAVE_IDENTITY_SET_ERROR`)\n\nexport const deleteIdentitySetStart = createAction(`${prefix}DELETE_IDENTITY_SET_START`)\nexport const deleteIdentitySetSuccess = createAction(`${prefix}DELETE_IDENTITY_SET_SUCCESS`)\nexport const deleteIdentitySetError = createAction(`${prefix}DELETE_IDENTITY_SET_ERROR`)\n\nexport const addIdentityToIdentitySetStart = createAction(`${prefix}ADD_IDENTITY_TO_IDENTITY_SET_START`)\nexport const addIdentityToIdentitySetSuccess = createAction(`${prefix}ADD_IDENTITY_TO_IDENTITY_SET_SUCCESS`)\nexport const addIdentityToIdentitySetError = createAction(`${prefix}ADD_IDENTITY_TO_IDENTITY_SET_ERROR`)\n\nexport const removeIdentityFromIdentitySetStart = createAction(`${prefix}REMOVE_IDENTITY_FROM_IDENTITY_SET_START`)\nexport const removeIdentityFromIdentitySetSuccess = createAction(`${prefix}REMOVE_IDENTITY_FROM_IDENTITY_SET_SUCCESS`)\nexport const removeIdentityFromIdentitySetError = createAction(`${prefix}REMOVE_IDENTITY_FROM_IDENTITY_SET_ERROR`)\n\n// ui\nprefix = `${defaultPrefix}UI/`\nexport const showIdentitySetDialog = createAction(`${prefix}SHOW_IDENTITY_SET_DIALOG`)\nexport const hideIdentitySetDialog = createAction(`${prefix}HIDE_IDENTITY_SET_DIALOG`)\nexport const showAddIdentityToIdentitySetDialog = createAction(`${prefix}SHOW_ADD_IDENTITY_TO_IDENTITY_SET_DIALOG`)\nexport const hideAddIdentityToIdentitySetDialog = createAction(`${prefix}HIDE_ADD_IDENTITY_TO_IDENTITY_SET_DIALOG`)\nexport const showDeleteIdentitySetDialog = createAction(`${prefix}SHOW_DELETE_IDENTITY_SET_DIALOG`)\nexport const hideDeleteIdentitySetDialog = createAction(`${prefix}HIDE_DELETE_IDENTITY_SET_DIALOG`)\nexport const setSelectedIdentitySet = createAction(`${prefix}SET_SELECTED_IDENTITY_SET`)\nexport const setUploadedPhoto = createAction(`${prefix}SET_UPLOADED_PHOTO`)\n","import { createAction } from 'redux-actions'\n\nlet prefix = 'INFLUENCERS/'\n\nexport const influencersRequestError = createAction(`${prefix}INFLUENCERS_REQUEST_ERROR`)\nexport const influencersRequestStart = createAction(`${prefix}INFLUENCERS_REQUEST_START`)\nexport const influencersRequestSuccess = createAction(`${prefix}INFLUENCERS_REQUEST_SUCCESS`)\nexport const moreInfluencersRequestError = createAction(`${prefix}MORE_INFLUENCERS_REQUEST_ERROR`)\nexport const moreInfluencersRequestStart = createAction(`${prefix}MORE_INFLUENCERS_REQUEST_START`)\nexport const moreInfluencersRequestSuccess = createAction(`${prefix}MORE_INFLUENCERS_REQUEST_SUCCESS`)\nexport const searchForInfluencer = createAction(`${prefix}SEARCH_FOR_INFLUENCER`)\nexport const searchForSelectedInfluencers = createAction(`${prefix}SEARCH_FOR_SELECTED_INFLUENCERS`)\n\nexport const setSortBy = createAction(`${prefix}SET_SORT_BY`)\n\nexport const selectInfluencer = createAction(`${prefix}SELECT_INFLUENCER`)\nexport const resetInfluencerSelection = createAction(`${prefix}RESET_INFLUENCER_SELECTION`)\n\nexport const openAddInfluencerToContactsDialog = createAction(`${prefix}OPEN_ADD_INFLUENCER_TO_CONTACTS_DIALOG`)\nexport const closeAddInfluencerToContactsDialog = createAction(`${prefix}CLOSE_ADD_INFLUENCER_TO_CONTACTS_DIALOG`)\nexport const addInfluencerToContactsStart = createAction(`${prefix}ADD_INFLUENCER_TO_CONTACTS_START`)\nexport const addInfluencerToContactsSuccess = createAction(`${prefix}ADD_INFLUENCER_TO_CONTACTS_SUCCESS`)\nexport const addInfluencerToContactsError = createAction(`${prefix}ADD_INFLUENCER_TO_CONTACTS_ERROR`)\nexport const updateContactData = createAction(`${prefix}UPDATE_CONTACT_DATA`)\nexport const setDistributionListCreateDialogOpen = createAction(`${prefix}SET_DISTRIBUTION_LIST_CREATE_DIALOG_OPEN`)\nexport const setImportContactsForDistributionLists = createAction(`${prefix}SET_IMPORT_CONTACTS_FOR_DISTRIBUTION_LISTS`)\nexport const searchContactsStart = createAction(`${prefix}SEARCH_CONTACTS_START`)\nexport const searchContactsSuccess = createAction(`${prefix}SEARCH_CONTACTS_SUCCESS`)\nexport const searchContactsError = createAction(`${prefix}SEARCH_CONTACTS_ERROR`)\n\nprefix = `${prefix}/DETAIL/`\n\nexport const showInfluencerDetails = createAction(`${prefix}SHOW_INFLUENCER_DETAILS`)\nexport const hideInfluencerDetails = createAction(`${prefix}HIDE_INFLUENCER_DETAILS`)\n\nexport const fetchInfluencerRequestError = createAction(`${prefix}FETCH_INFLUENCER_REQUEST_ERROR`)\nexport const fetchInfluencerRequestStart = createAction(`${prefix}FETCH_INFLUENCER_REQUEST_START`)\nexport const fetchInfluencerRequestSuccess = createAction(`${prefix}FETCH_INFLUENCER_REQUEST_SUCCESS`)\n\nexport const selectChannel = createAction(`${prefix}SELECT_CHANNEL`)\nexport const highlightReachChart = createAction(`${prefix}HIGHLIGHT_REACH_CHART`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'MAILING_LISTS/'\n\nexport const setMailingLists = createAction(`${prefix}SET_MAILING_LISTS`)\nexport const updateSelectedMailingList = createAction(`${prefix}UPDATE_SELECTED_MAILING_LIST`)\n\nexport const saveMailingListStart = createAction(`${prefix}SAVE_MAILING_LIST_START`)\nexport const saveMailingListSuccess = createAction(`${prefix}SAVE_MAILING_LIST_SUCCESS`)\nexport const saveMailingListError = createAction(`${prefix}SAVE_MAILING_LIST_ERROR`)\n\nexport const deleteMailingListStart = createAction(`${prefix}DELETE_MAILING_LIST_START`)\nexport const deleteMailingListSuccess = createAction(`${prefix}DELETE_MAILING_LIST_SUCCESS`)\nexport const deleteMailingListError = createAction(`${prefix}DELETE_MAILING_LIST_ERROR`)\n\nexport const showMailingListDialog = createAction(`${prefix}SHOW_MAILING_LIST_DIALOG`)\nexport const hideMailingListDialog = createAction(`${prefix}HIDE_MAILING_LIST_DIALOG`)\n\nexport const showRemoveMailingListDialog = createAction(`${prefix}SHOW_REMOVE_MAILING_LIST_DIALOG`)\nexport const hideRemoveMailingListDialog = createAction(`${prefix}HIDE_REMOVE_MAILING_LIST_DIALOG`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'MEDIA_REVIEWS/'\nlet prefix = defaultPrefix\n\nexport const getMediaReviews = createAction(`${prefix}GET_MEDIA_REVIEWS`)\nexport const setMediaReviews = createAction(`${prefix}SET_MEDIA_REVIEWS`)\n\nexport const addNewsToMediaReview = createAction(`${prefix}ADD_NEWS_TO_MEDIA_REVIEW`)\n\nexport const collapseAllTopics = createAction(`${prefix}COLLAPSE_ALL_TOPICS`)\nexport const expandAllTopics = createAction(`${prefix}EXPAND_ALL_TOPICS`)\n\nexport const collapseTopics = createAction(`${prefix}COLLAPSE_TOPICS`)\nexport const expandTopics = createAction(`${prefix}EXPAND_TOPICS`)\n\nexport const fetchNewsForMediaReviewStart = createAction(`${prefix}FETCH_NEWS_FOR_MEDIA_REVIEW_START`)\nexport const fetchNewsForMediaReviewError = createAction(`${prefix}FETCH_NEWS_FOR_MEDIA_REVIEW_ERROR`)\nexport const fetchNewsForMediaReviewSuccess = createAction(`${prefix}FETCH_NEWS_FOR_MEDIA_REVIEW_SUCCESS`)\n\nexport const selectMediaReview = createAction(`${prefix}SELECT_MEDIA_REVIEW`)\n\nexport const loadFullTextStart = createAction(`${prefix}LOAD_FULL_TEXT_START`)\nexport const loadFullTextSuccess = createAction(`${prefix}LOAD_FULL_TEXT_SUCCESS`)\nexport const loadFullTextError = createAction(`${prefix}LOAD_FULL_TEXT_ERROR`)\n\nexport const moveNewsInMediaReviewStart = createAction(`${prefix}MOVE_NEWS_IN_MEDIA_REVIEW_START`)\nexport const moveNewsInMediaReviewSuccess = createAction(`${prefix}MOVE_NEWS_IN_MEDIA_REVIEW_SUCCESS`)\nexport const moveNewsInMediaReviewError = createAction(`${prefix}MOVE_NEWS_IN_MEDIA_REVIEW_ERROR`)\n\nexport const moveCodeInMediaReviewStart = createAction(`${prefix}MOVE_CODE_IN_MEDIA_REVIEW_START`)\nexport const moveCodeInMediaReviewSuccess = createAction(`${prefix}MOVE_CODE_IN_MEDIA_REVIEW_SUCCESS`)\nexport const moveCodeInMediaReviewError = createAction(`${prefix}MOVE_CODE_IN_MEDIA_REVIEW_ERROR`)\n\nexport const removeNewsFromMediaReviewStart = createAction(`${prefix}REMOVE_NEWS_FROM_MEDIA_REVIEW_START`)\nexport const removeNewsFromMediaReviewSuccess = createAction(`${prefix}REMOVE_NEWS_FROM_MEDIA_REVIEW_SUCCESS`)\nexport const removeNewsFromMediaReviewError = createAction(`${prefix}REMOVE_NEWS_FROM_MEDIA_REVIEW_ERROR`)\n\nexport const showRemoveNewsDialog = createAction(`${prefix}SHOW_REMOVE_NEWS_DIALOG`)\nexport const hideRemoveNewsDialog = createAction(`${prefix}HIDE_REMOVE_NEWS_DIALOG`)\n\nexport const showAllSnippets = createAction(`${prefix}SHOW_ALL_SNIPPETS`)\nexport const showSnippet = createAction(`${prefix}SHOW_SNIPPET`)\nexport const hideAllSnippets = createAction(`${prefix}HIDE_ALL_SNIPPETS`)\nexport const hideSnippet = createAction(`${prefix}HIDE_SNIPPET`)\n\nexport const pinAllStart = createAction(`${prefix}PIN_ALL_START`)\nexport const pinAllError = createAction(`${prefix}PIN_ALL_ERROR`)\nexport const pinAllSuccess = createAction(`${prefix}PIN_ALL_SUCCESS`)\nexport const unpinAll = createAction(`${prefix}UNPIN_ALL`)\nexport const showCustomTagDialog = createAction(`${prefix}SHOW_CUSTOM_TAG_DIALOG`)\nexport const hideCustomTagDialog = createAction(`${prefix}HIDE_CUSTOM_TAG_DIALOG`)\nexport const showRemoveCustomTagDialog = createAction(`${prefix}SHOW_REMOVE_CUSTOM_TAG_DIALOG`)\nexport const hideRemoveCustomTagDialog = createAction(`${prefix}HIDE_REMOVE_CUSTOM_TAG_DIALOG`)\nexport const setAutoAddMediaReviewsNews = createAction(`${prefix}SET_AUTO_ADD_MEDIA_REVIEWS_NEWS`)\n\nexport const showAllSummaries = createAction(`${prefix}SHOW_ALL_SUMMARIES`)\nexport const showSummary = createAction(`${prefix}SHOW_SUMMARY`)\nexport const hideAllSummaries = createAction(`${prefix}HIDE_ALL_SUMMARIES`)\nexport const hideSummary = createAction(`${prefix}HIDE_SUMMARY`)\n\nexport const toggleHighlight = createAction(`${prefix}TOGGLE_HIGHLIGHT`)\nexport const toggleNewsList = createAction(`${prefix}TOGGLE_NEWS_LIST`)\n\nexport const setCodes = createAction(`${prefix}SET_CODES`)\nexport const setNews = createAction(`${prefix}SET_NEWS`)\n\nexport const regroupNews = createAction(`${prefix}REGROUP_NEWS`)\nexport const updateMediaReviewStats = createAction(`${prefix}UPDATE_MEDIA_REVIEW_STATS`)\nexport const recalculateMediaReviewStats = createAction(`${prefix}RECALCULATE_MEDIA_REVIEW_STATS`)\n\nexport const selectNewsForSorting = createAction(`${prefix}SELECT_NEWS_FOR_SORTING`)\nexport const shiftSelectNewsForSorting = createAction(`${prefix}ON_SHIFT_SELECT_NEWS`)\nexport const deselectNewsForSorting = createAction(`${prefix}DESELECT_NEWS_FOR_SORTING`)\nexport const resetSortingSelection = createAction(`${prefix}RESET_SORTING_SELECTION`)\n\nexport const sortBy = createAction(`${prefix}SORT_BY`)\nexport const setGroupedNews = createAction(`${prefix}SET_GROUPED_NEWS`)\n\nexport const setMediaReviewFilter = createAction(`${prefix}SET_MEDIA_REVIEW_FILTER`)\nexport const setMediaReviewFilterSize = createAction(`${prefix}SET_MEDIA_REVIEW_FILTER_SIZE`)\n\nexport const filterMediaReviewsStart = createAction(`${prefix}FILTER_MEDIA_REVIEW_START`)\nexport const filterMediaReviewsSuccess = createAction(`${prefix}FILTER_MEDIA_REVIEW_SUCCESS`)\nexport const filterMediaReviewsError = createAction(`${prefix}FILTER_MEDIA_REVIEW_ERROR`)\n\nexport const replaceMediaReviewReactionStart = createAction(`${prefix}REPLACE_MEDIA_REVIEW_REACTION_START`)\nexport const replaceMediaReviewReactionSuccess = createAction(`${prefix}REPLACE_MEDIA_REVIEW_REACTION_SUCCESS`)\nexport const replaceMediaReviewReactionError = createAction(`${prefix}REPLACE_MEDIA_REVIEW_REACTION_ERROR`)\n\nexport const fetchMediaReviewReactionsStart = createAction(`${prefix}FETCH_MEDIA_REVIEW_REACTIONS_START`)\nexport const fetchMediaReviewReactionsSuccess = createAction(`${prefix}FETCH_MEDIA_REVIEW_REACTIONS_SUCCESS`)\nexport const fetchMediaReviewReactionsError = createAction(`${prefix}FETCH_MEDIA_REVIEW_REACTIONS_ERROR`)\n\nexport const checkMediaReviewReactionsStart = createAction(`${prefix}CHECK_MEDIA_REVIEW_REACTIONS_START`)\nexport const checkMediaReviewReactionsStop = createAction(`${prefix}CHECK_MEDIA_REVIEW_REACTIONS_STOP`)\n\nexport const setSnapshot = createAction(`${prefix}SET_SNAPSHOT`)\n\nexport const reorderStart = createAction(`${prefix}REORDER_START`)\nexport const reorderSuccess = createAction(`${prefix}REORDER_SUCCESS`)\nexport const reorderError = createAction(`${prefix}REORDER_ERROR`)\n\nexport const checkDiffStart = createAction(`${prefix}CHECK_DIFF_START`)\nexport const checkDiffSuccess = createAction(`${prefix}CHECK_DIFF_SUCCESS`)\nexport const checkDiffError = createAction(`${prefix}CHECK_DIFF_ERROR`)\n\nexport const showDiffWarning = createAction(`${prefix}SHOW_DIFF_WARNING`)\nexport const hideDiffWarning = createAction(`${prefix}HIDE_DIFF_WARNING`)\nexport const acceptDiff = createAction(`${prefix}ACCEPT_DIFF`)\nexport const rejectDiff = createAction(`${prefix}REJECT_DIFF`)\n\nprefix = `${defaultPrefix}SELECTED/`\nexport const selectNews = createAction(`${prefix}SELECT_NEWS`)\nexport const resetNewsSelection = createAction(`${prefix}RESET_NEWS_SELECTION`)\nexport const invertNewsSelection = createAction(`${prefix}INVERT_NEWS_SELECTION`)\nexport const setSelectedNews = createAction(`${prefix}SET_SELECTED_NEWS`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'NAVIGATION/'\n\nexport const navigate = createAction(`${prefix}NAVIGATE`)\nexport const backToLogin = createAction(`${prefix}BACK_TO_LOGIN`)\nexport const back = createAction(`${prefix}BACK`)\nexport const navigateToProfileMonitoring = createAction(`${prefix}NAVIGATE_TO_PROFILE_MONITORING`)\nexport const redirectAuthenticated = createAction(`${prefix}REDIRECT_AUTHENTICATED`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'NEWS/'\nlet prefix = defaultPrefix\n\nexport const setSortBy = createAction(`${prefix}SET_SORT_BY`)\nexport const setSortDirection = createAction(`${prefix}SET_SORT_DIRECTION`)\nexport const currentIndexChange = createAction(`${prefix}CURRENT_INDEX_CHANGE`)\nexport const increasePaging = createAction(`${prefix}INCREASE_PAGING`)\n\nexport const moreNewsRequestError = createAction(`${prefix}MORE_NEWS_REQUEST_ERROR`)\nexport const moreNewsRequestStart = createAction(`${prefix}MORE_NEWS_REQUEST_START`)\nexport const moreNewsRequestSuccess = createAction(`${prefix}MORE_NEWS_REQUEST_SUCCESS`)\n\nexport const newsRequestError = createAction(`${prefix}NEWS_REQUEST_ERROR`)\nexport const newsRequestStart = createAction(`${prefix}NEWS_REQUEST_START`)\nexport const newsRequestSuccess = createAction(`${prefix}NEWS_REQUEST_SUCCESS`)\nexport const startNewsRequest = createAction(`${prefix}START_NEWS_REQUEST`)\n\nexport const fetchClusterStatsError = createAction(`${prefix}FETCH_CLUSTER_STATS_ERROR`)\nexport const fetchClusterStatsStart = createAction(`${prefix}FETCH_CLUSTER_STATS_START`)\nexport const fetchClusterStatsSuccess = createAction(`${prefix}FETCH_CLUSTER_STATS_SUCCESS`)\n\nexport const setNewsView = createAction(`${prefix}SET_NEWS_VIEW`)\nexport const toggleAdvancedSearch = createAction(`${prefix}TOGGLE_ADVANCED_SEARCH`)\nexport const toggleDateForm = createAction(`${prefix}TOGGLE_DATE_FORM`)\nexport const toggleHelpDialog = createAction(`${prefix}TOGGLE_HELP_DIALOG`)\n\nexport const selectViewConfigPreset = createAction(`${prefix}SELECT_VIEW_CONFIG_PRESET`)\nexport const viewConfigPresetSelected = createAction(`${prefix}VIEW_CONFIG_PRESET_SELECTED`)\nexport const setViewConfigPreset = createAction(`${prefix}SET_VIEW_CONFIG_PRESET`)\nexport const resetNews = createAction(`${prefix}RESET_NEWS`)\n\nprefix = `${defaultPrefix}UI/`\nexport const toggleActiveFilters = createAction(`${prefix}TOGGLE_ACTIVE_FILTERS`)\nexport const setLastSeenNewsId = createAction(`${prefix}SET_LAST_SEEN_NEWS_ID`)\nexport const setShowNewsList = createAction(`${prefix}SET_SHOW_NEWS_LIST`)\nexport const setSelectedNewsIdToShowInDrawer = createAction(`${prefix}SET_SELECTED_NEWS_ID_TO_SHOW_IN_DRAWER`)\nexport const blockNewsRequest = createAction(`${prefix}BLOCK_NEWS_REQUEST`)\nexport const unblockNewsRequest = createAction(`${prefix}UNBLOCK_NEWS_REQUEST`)\nexport const setNewsRequestIsRunning = createAction(`${prefix}SET_NEWS_REQUEST_IS_RUNNING`)\nexport const setLastNewsIdClickedOnMorePublications = createAction(`${prefix}SET_LAST_NEWS_ID_CLICKED_ON_MORE_PUBLICATIONS`)\nexport const setYoutubePlayerActiveNewsId = createAction(`${prefix}SET_YOUTUBE_PLAYER_ACTIVE_NEWS_ID`)\nexport const setTiktokPlayerActiveNewsId = createAction(`${prefix}SET_TIKTOK_PLAYER_ACTIVE_NEWS_ID`)\nexport const removeTranslations = createAction(`${prefix}REMOVE_TRANSLATIONS`)\nexport const showAiAnalysisDialog = createAction(`${prefix}SHOW_AI_ANALYSIS_DIALOG`)\n\nprefix = `${defaultPrefix}DATA/`\nexport const addNews = createAction(`${prefix}ADD_NEWS`)\nexport const updateNews = createAction(`${prefix}UPDATE_NEWS`)\nexport const decrementReferences = createAction(`${prefix}DECREMENT_REFERENCES`)\nexport const translateRequestStart = createAction(`${prefix}TRANSLATE_REQUEST_START`)\nexport const translateRequestSuccess = createAction(`${prefix}TRANSLATE_REQUEST_SUCCESS`)\nexport const translateRequestError = createAction(`${prefix}TRANSLATE_REQUEST_ERROR`)\nexport const setImageAsIllustration = createAction(`${prefix}SET_IMAGE_AS_ILLUSTRATION`)\nexport const setExtractTextFromPdf = createAction(`${prefix}SET_EXTRACT_TEXT_FROM_PDF`)\nexport const mergeExtractedText = createAction(`${prefix}MERGE_EXTRACTED_TEXT`)\n\nprefix = `${defaultPrefix}EDIT/`\nexport const saveNews = createAction(`${prefix}SAVE_NEWS`)\n\nexport const updateNewsError = createAction(`${prefix}UPDATE_NEWS_ERROR`)\nexport const updateNewsStart = createAction(`${prefix}UPDATE_NEWS_START`)\nexport const updateNewsSuccess = createAction(`${prefix}UPDATE_NEWS_SUCCESS`)\n\nexport const createNewsError = createAction(`${prefix}CREATE_NEWS_ERROR`)\nexport const createNewsStart = createAction(`${prefix}CREATE_NEWS_START`)\nexport const createNewsSuccess = createAction(`${prefix}CREATE_NEWS_SUCCESS`)\n\nexport const deleteNewsError = createAction(`${prefix}DELETE_NEWS_ERROR`)\nexport const deleteNewsStart = createAction(`${prefix}DELETE_NEWS_START`)\nexport const deleteNewsSuccess = createAction(`${prefix}DELETE_NEWS_SUCCESS`)\n\nexport const getNewsError = createAction(`${prefix}GET_NEWS_ERROR`)\nexport const getNewsStart = createAction(`${prefix}GET_NEWS_START`)\nexport const getNewsSuccess = createAction(`${prefix}GET_NEWS_SUCCESS`)\n\nexport const uploadFileError = createAction(`${prefix}UPLOAD_FILE_ERROR`)\nexport const uploadFileStart = createAction(`${prefix}UPLOAD_FILE_START`)\nexport const uploadFileSuccess = createAction(`${prefix}UPLOAD_FILE_SUCCESS`)\nexport const removeUploadedFile = createAction(`${prefix}REMOVE_UPLOADED_FILE`)\n\nexport const extractTextFromPdfStart = createAction(`${prefix}EXTRACT_TEXT_FROM_PDF_START`)\nexport const extractTextFromPdfSuccess = createAction(`${prefix}EXTRACT_TEXT_FROM_PDF_SUCCESS`)\nexport const extractTextFromPdfError = createAction(`${prefix}EXTRACT_TEXT_FROM_PDF_ERROR`)\n\nexport const uploadVideoFileError = createAction(`${prefix}UPLOAD_VIDEO_FILE_ERROR`)\nexport const uploadVideoFileStart = createAction(`${prefix}UPLOAD_VIDEO_FILE_START`)\nexport const uploadVideoFileSuccess = createAction(`${prefix}UPLOAD_VIDEO_FILE_SUCCESS`)\nexport const removeUploadedVideoFile = createAction(`${prefix}REMOVE_UPLOADED_VIDEO_FILE`)\n\nexport const updateSelectedNews = createAction(`${prefix}UPDATE_SELECTED_NEWS`)\nexport const updateFieldOfSelectedNews = createAction(`${prefix}UPDATE_FIELD_OF_SELECTED_NEWS`)\nexport const showEditNewsDialog = createAction(`${prefix}SHOW_EDIT_NEWS_DIALOG`)\nexport const hideEditNewsDialog = createAction(`${prefix}HIDE_EDIT_NEWS_DIALOG`)\nexport const showNewsPageRemoveNewsDialog = createAction(`${prefix}SHOW_REMOVE_NEWS_DIALOG`)\nexport const hideNewsPageRemoveNewsDialog = createAction(`${prefix}HIDE_REMOVE_NEWS_DIALOG`)\n\nexport const searchPublicationsError = createAction(`${prefix}SEARCH_PUBLICATIONS_ERROR`)\nexport const searchPublicationsStart = createAction(`${prefix}SEARCH_PUBLICATIONS_START`)\nexport const searchPublicationsSuccess = createAction(`${prefix}SEARCH_PUBLICATIONS_SUCCESS`)\nexport const setPublicationsLoading = createAction(`${prefix}SET_PUBLICATIONS_LOADING`)\n\nexport const setSummaryOption = createAction(`${prefix}SET_SUMMARY_OPTION`)\nexport const automaticSummaryStart = createAction(`${prefix}AUTOMATIC_SUMMARY_START`)\nexport const automaticSummarySuccess = createAction(`${prefix}AUTOMATIC_SUMMARY_SUCCESS`)\nexport const automaticSummaryError = createAction(`${prefix}AUTOMATIC_SUMMARY_ERROR`)\n\nexport const invalidSearch = createAction(`${prefix}INVALID_SEARCH`)\n\nprefix = `${defaultPrefix}SHOPPING/`\nexport const submitShoppingStart = createAction(`${prefix}SUBMIT_SHOPPING_START`)\nexport const submitShoppingSuccess = createAction(`${prefix}SUBMIT_SHOPPING_SUCCESS`)\nexport const submitShoppingError = createAction(`${prefix}SUBMIT_SHOPPING_ERROR`)\n\nexport const showShoppingNewsDialog = createAction(`${prefix}SHOW_SHOPPING_NEWS_DIALOG`)\nexport const hideShoppingNewsDialog = createAction(`${prefix}HIDE_SHOPPING_NEWS_DIALOG`)\n\nprefix = `${defaultPrefix}SELECTED/`\nexport const selectNews = createAction(`${prefix}SELECT_NEWS`)\nexport const resetNewsSelection = createAction(`${prefix}RESET_NEWS_SELECTION`)\n\nprefix = `${defaultPrefix}FILTER_TIMELINE/`\nexport const fetchFilterTimelineStart = createAction(`${prefix}FETCH_FILTER_TIMELINE_START`)\nexport const fetchFilterTimelineSuccess = createAction(`${prefix}FETCH_FILTER_TIMELINE_SUCCESS`)\nexport const fetchFilterTimelineError = createAction(`${prefix}FETCH_FILTER_TIMELINE_ERROR`)\n\nprefix = `${defaultPrefix}GROUPS/`\nexport const updateGroupsStart = createAction(`${prefix}UPDATE_GROUPS_START`)\nexport const updateGroups = createAction(`${prefix}UPDATE_GROUPS`)\nexport const updateGroupStats = createAction(`${prefix}UPDATE_GROUP_STATS`)\n","import { createAction } from 'redux-actions'\n\nlet prefix = 'NOTIFICATIONS'\nconst defaultPrefix = prefix\n\nprefix = `${defaultPrefix}/UI/`\nexport const openDrawer = createAction(`${prefix}OPEN_DRAWER`)\nexport const closeDrawer = createAction(`${prefix}CLOSE_DRAWER`)\n\nprefix = `${defaultPrefix}/DATA/`\nexport const setNotifications = createAction(`${prefix}SET_NOTIFICATIONS`)\nexport const updateNotifications = createAction(`${prefix}UPDATE_NOTIFICATIONS`)\nexport const markAsReadStart = createAction(`${prefix}MARK_AS_READ_START`)\nexport const markAsReadSuccess = createAction(`${prefix}MARK_AS_READ_SUCCESS`)\nexport const markAsReadError = createAction(`${prefix}MARK_AS_READ_ERROR`)\nexport const fetchNotificationsStart = createAction(`${prefix}FETCH_NOTIFICATIONS_START`)\nexport const fetchNotificationsSuccess = createAction(`${prefix}FETCH_NOTIFICATIONS_SUCCESS`)\nexport const fetchNotificationsError = createAction(`${prefix}FETCH_NOTIFICATIONS_ERROR`)\n\nprefix = `${defaultPrefix}/FILTER/`\nexport const setNotificationsPage = createAction(`${prefix}SET_NOTIFICATIONS_PAGE`)\nexport const setLastPage = createAction(`${prefix}SET_LAST_PAGE`)\n","import { createAction } from 'redux-actions'\n\nlet prefix = 'PAGE_IDENTITIES/'\nconst defaultPrefix = prefix\n\nexport const pageIdentitiesRequestError = createAction(`${prefix}PAGE_IDENTITIES_REQUEST_ERROR`)\nexport const pageIdentitiesRequestStart = createAction(`${prefix}PAGE_IDENTITIES_REQUEST_START`)\nexport const pageIdentitiesRequestSuccess = createAction(`${prefix}PAGE_IDENTITIES_REQUEST_SUCCESS`)\n\nexport const pageIdentitiesStatisticsRequestError = createAction(`${prefix}PAGE_IDENTITIES_STATISTICS_REQUEST_ERROR`)\nexport const pageIdentitiesStatisticsRequestStart = createAction(`${prefix}PAGE_IDENTITIES_STATISTICS_REQUEST_START`)\nexport const pageIdentitiesStatisticsRequestSuccess = createAction(`${prefix}PAGE_IDENTITIES_STATISTICS_REQUEST_SUCCESS`)\n\nexport const pageIdentityPostsRequestError = createAction(`${prefix}PAGE_IDENTITY_POSTS_REQUEST_ERROR`)\nexport const pageIdentityPostsRequestStart = createAction(`${prefix}PAGE_IDENTITY_POSTS_REQUEST_START`)\nexport const pageIdentityPostsRequestSuccess = createAction(`${prefix}PAGE_IDENTITY_POSTS_REQUEST_SUCCESS`)\n\nexport const selectPageIdentity = createAction(`${prefix}SELECT_PAGE_IDENTITY`)\nexport const resetPageIdentitySelection = createAction(`${prefix}RESET_PAGE_IDENTITY_SELECTION`)\n\nexport const exportPageIdentitiesAsExcelStart = createAction(`${prefix}EXPORT_PAGE_IDENTITIES_AS_EXCEL_START`)\nexport const exportPageIdentitiesAsExcelSuccess = createAction(`${prefix}EXPORT_PAGE_IDENTITIES_AS_EXCEL_SUCCESS`)\nexport const exportPageIdentitiesAsExcelError = createAction(`${prefix}EXPORT_PAGE_IDENTITIES_AS_EXCEL_ERROR`)\n\nexport const toggleSelectedInteractionsChart = createAction(`${prefix}TOGGLE_SELECTED_INTERACTIONS_CHART`)\n\nprefix = `${defaultPrefix}/UI/`\nexport const setSortBy = createAction(`${prefix}SET_SORT_BY`)\nexport const toggleShowInactive = createAction(`${prefix}TOGGLE_SHOW_INACTIVE`)\nexport const toggleGrouped = createAction(`${prefix}TOGGLE_GROUPED`)\n\nprefix = `${defaultPrefix}/DATA/`\nexport const setChartData = createAction(`${prefix}SET_CHART_DATA`)\nexport const setChartLoading = createAction(`${prefix}SET_CHART_LOADING`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'PERSONAL_SETTINGS/'\n\nexport const uiSetPreviewUrl = createAction(`${prefix}UI_SET_PREVIEW_URL`)\nexport const uiSetUserImage = createAction(`${prefix}UI_SET_USER_IMAGE`)\n","import { createAction } from 'redux-actions'\n\nlet prefix = 'PUBLICATIONS/'\n\nexport const publicationsRequestError = createAction(`${prefix}PUBLICATIONS_REQUEST_ERROR`)\nexport const publicationsRequestStart = createAction(`${prefix}PUBLICATIONS_REQUEST_START`)\nexport const publicationsRequestSuccess = createAction(`${prefix}PUBLICATIONS_REQUEST_SUCCESS`)\nexport const morePublicationsRequestError = createAction(`${prefix}MORE_PUBLICATIONS_REQUEST_ERROR`)\nexport const morePublicationsRequestStart = createAction(`${prefix}MORE_PUBLICATIONS_REQUEST_START`)\nexport const morePublicationsRequestSuccess = createAction(`${prefix}MORE_PUBLICATIONS_REQUEST_SUCCESS`)\nexport const searchForPublication = createAction(`${prefix}SEARCH_FOR_PUBLICATION`)\nexport const searchForSelectedPublications = createAction(`${prefix}SEARCH_FOR_SELECTED_PUBLICATIONS`)\nexport const openPublicationForm = createAction(`${prefix}OPEN_PUBLICATION_FORM`)\nexport const hidePublicationForm = createAction(`${prefix}HIDE_PUBLICATION_FORM`)\nexport const resetCreatedPublication = createAction(`${prefix}RESET_CREATED_PUBLICATION`)\n\nprefix = `${prefix}SAVE/`\n\nexport const createPublicationError = createAction(`${prefix}CREATE_PUBLICATION_ERROR`)\nexport const createPublicationStart = createAction(`${prefix}CREATE_PUBLICATION_START`)\nexport const createPublicationSuccess = createAction(`${prefix}CREATE_PUBLICATION_SUCCESS`)\n\nexport const setSortBy = createAction(`${prefix}SET_SORT_BY`)\n\nexport const selectPublication = createAction(`${prefix}SELECT_PUBLICATION`)\nexport const resetPublicationSelection = createAction(`${prefix}RESET_PUBLICATION_SELECTION`)\n","import { createAction } from 'redux-actions'\nimport createLoadingAction from 'utils/createLoadingAction'\n\nconst prefix = 'SAVED_CHARTS/'\n\nexport const fetchSavedChartStart = createAction(`${prefix}FETCH_SAVED_CHART_START`)\nexport const fetchSavedChartSuccess = createAction(`${prefix}FETCH_SAVED_CHART_SUCCESS`)\nexport const fetchSavedChartError = createAction(`${prefix}FETCH_SAVED_CHART_ERROR`)\n\nexport const createSavedChartStart = createLoadingAction(`${prefix}CREATE_SAVED_CHART_START`, true)\nexport const createSavedChartSuccess = createLoadingAction(`${prefix}CREATE_SAVED_CHART_SUCCESS`, false)\nexport const createSavedChartError = createLoadingAction(`${prefix}CREATE_SAVED_CHART_ERROR`, false)\n\nexport const deleteSavedChartStart = createAction(`${prefix}DELETE_SAVED_CHART_START`)\nexport const deleteSavedChartSuccess = createAction(`${prefix}DELETE_SAVED_CHART_SUCCESS`)\nexport const deleteSavedChartError = createAction(`${prefix}DELETE_SAVED_CHART_ERROR`)\n\nexport const discardSavedChartStart = createAction(`${prefix}DISCARD_SAVED_CHART_START`)\nexport const discardSavedChartSuccess = createAction(`${prefix}DISCARD_SAVED_CHART_SUCCESS`)\nexport const discardSavedChartError = createAction(`${prefix}DISCARD_SAVED_CHART_ERROR`)\n\nexport const updateSavedChartStart = createAction(`${prefix}UPDATE_SAVED_CHART_START`)\nexport const updateSavedChartSuccess = createAction(`${prefix}UPDATE_SAVED_CHART_SUCCESS`)\nexport const updateSavedChartError = createAction(`${prefix}UPDATE_SAVED_CHART_ERROR`)\n\nexport const goToAdministration = createAction(`${prefix}GO_TO_ADMINISTRATION`)\n\nexport const showDialog = createAction(`${prefix}SHOW_DIALOG`)\nexport const hideDialog = createAction(`${prefix}HIDE_DIALOG`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'SAVED_DASHBOARD/'\n\nexport const saveSavedDashboardStart = createAction(`${prefix}SAVE_SAVED_DASHBOARD_START`)\nexport const saveSavedDashboardSuccess = createAction(`${prefix}SAVE_SAVED_DASHBOARD_SUCCESS`)\nexport const saveSavedDashboardError = createAction(`${prefix}SAVE_SAVED_DASHBOARD_ERROR`)\n\nexport const checkUrlNameStart = createAction(`${prefix}CHECK_URL_NAME_START`)\nexport const checkUrlNameSuccess = createAction(`${prefix}CHECK_URL_NAME_SUCCESS`)\nexport const checkUrlNameError = createAction(`${prefix}CHECK_URL_NAME_ERROR`)\n\nexport const fetchSavedDashboardStart = createAction(`${prefix}FETCH_SAVED_DASHBOARD_START`)\nexport const fetchSavedDashboardSuccess = createAction(`${prefix}FETCH_SAVED_DASHBOARD_SUCCESS`)\nexport const fetchSavedDashboardError = createAction(`${prefix}FETCH_SAVED_DASHBOARD_ERROR`)\n\nexport const fetchSavedDashboardInfoStart = createAction(`${prefix}FETCH_SAVED_DASHBOARD_INFO_START`)\nexport const fetchSavedDashboardInfoSuccess = createAction(`${prefix}FETCH_SAVED_DASHBOARD_INFO_SUCCESS`)\nexport const fetchSavedDashboardInfoError = createAction(`${prefix}FETCH_SAVED_DASHBOARD_INFO_ERROR`)\n\nexport const deleteSavedDashboardStart = createAction(`${prefix}DELETE_SAVED_DASHBOARD_START`)\nexport const deleteSavedDashboardSuccess = createAction(`${prefix}DELETE_SAVED_DASHBOARD_SUCCESS`)\nexport const deleteSavedDashboardError = createAction(`${prefix}DELETE_SAVED_DASHBOARD_ERROR`)\n\nexport const showSavedDashboardDialog = createAction(`${prefix}SHOW_SAVED_DASHBOARD_DIALOG`)\nexport const hideSavedDashboardDialog = createAction(`${prefix}HIDE_SAVED_DASHBOARD_DIALOG`)\nexport const startAutoReload = createAction(`${prefix}START_AUTO_RELOAD`)\nexport const setSavedDashboardValue = createAction(`${prefix}SET_SAVED_DASHBOARD_VALUE`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'SAVED_SEARCHES/'\nlet prefix = defaultPrefix\n\nexport const setSavedSearches = createAction(`${prefix}SET_SAVED_SEARCHES`)\nexport const updateSelectedSavedSearch = createAction(`${prefix}UPDATE_SELECTED_SAVED_SEARCH`)\n\nexport const saveSavedSearchStart = createAction(`${prefix}SAVE_SAVED_SEARCH_START`)\nexport const saveSavedSearchSuccess = createAction(`${prefix}SAVE_SAVED_SEARCH_SUCCESS`)\nexport const saveSavedSearchError = createAction(`${prefix}SAVE_SAVED_SEARCH_ERROR`)\n\nexport const checkAffectedDashboards = createAction(`${prefix}CHECK_AFFECTED_DASHBOARDS`)\nexport const setAffectedDashboards = createAction(`${prefix}SET_AFFECTED_DASHBOARDS`)\nexport const showAffectedDashboardsDialog = createAction(`${prefix}SHOW_AFFECTED_DASHBOARDS_DIALOG`)\nexport const hideAffectedDashboardsDialog = createAction(`${prefix}HIDE_AFFECTED_DASHBOARDS_DIALOG`)\n\nexport const deleteSavedSearchStart = createAction(`${prefix}DELETE_SAVED_SEARCH_START`)\nexport const deleteSavedSearchSuccess = createAction(`${prefix}DELETE_SAVED_SEARCH_SUCCESS`)\nexport const deleteSavedSearchError = createAction(`${prefix}DELETE_SAVED_SEARCH_ERROR`)\n\nexport const resolveSavedSearchStart = createAction(`${prefix}RESOLVE_SAVED_SEARCH_START`)\nexport const resolveSavedSearchSuccess = createAction(`${prefix}RESOLVE_SAVED_SEARCH_SUCCESS`)\nexport const resolveSavedSearchError = createAction(`${prefix}RESOLVE_SAVED_SEARCH_ERROR`)\n\nexport const replaceSavedSearchStart = createAction(`${prefix}REPLACE_SAVED_SEARCH_START`)\nexport const replaceSavedSearchSuccess = createAction(`${prefix}REPLACE_SAVED_SEARCH_SUCCESS`)\nexport const replaceSavedSearchError = createAction(`${prefix}REPLACE_SAVED_SEARCH_ERROR`)\n\nexport const fetchSavedSearchesTimelinesStart = createAction(`${prefix}FETCH_SAVED_SEARCHES_TIMELINES_START`)\nexport const fetchSavedSearchesTimelinesSuccess = createAction(`${prefix}FETCH_SAVED_SEARCHES_TIMELINES_SUCCESS`)\nexport const fetchSavedSearchesTimelinesError = createAction(`${prefix}FETCH_SAVED_SEARCHES_TIMELINES_ERROR`)\n\nexport const fetchSavedSearchDispatchesStart = createAction(`${prefix}FETCH_SAVED_SEARCH_DISPATCHES_START`)\nexport const fetchSavedSearchDispatchesSuccess = createAction(`${prefix}FETCH_SAVED_SEARCH_DISPATCHES_SUCCESS`)\nexport const fetchSavedSearchDispatchesError = createAction(`${prefix}FETCH_SAVED_SEARCH_DISPATCHES_ERROR`)\n\nexport const showEditSavedSearchDialog = createAction(`${prefix}SHOW_EDIT_SAVED_SEARCH_DIALOG`)\nexport const hideEditSavedSearchDialog = createAction(`${prefix}HIDE_EDIT_SAVED_SEARCH_DIALOG`)\n\nexport const showRemoveSavedSearchDialog = createAction(`${prefix}SHOW_REMOVE_SAVED_SEARCH_DIALOG`)\nexport const hideRemoveSavedSearchDialog = createAction(`${prefix}HIDE_REMOVE_SAVED_SEARCH_DIALOG`)\n\nexport const showUpdateSavedSearchDialog = createAction(`${prefix}SHOW_UPDATE_SAVED_SEARCH_DIALOG`)\nexport const hideUpdateSavedSearchDialog = createAction(`${prefix}HIDE_UPDATE_SAVED_SEARCH_DIALOG`)\n\nexport const showSavedSearchDispatchesDialog = createAction(`${prefix}SHOW_SAVED_SEARCH_DISPATCH_DIALOG`)\nexport const hideSavedSearchDispatchesDialog = createAction(`${prefix}HIDE_SAVED_SEARCH_DISPATCH_DIALOG`)\n\nexport const toggleFavorite = createAction(`${prefix}TOGGLE_FAVORITE`)\n\nexport const loadInitialSearch = createAction(`${prefix}LOAD_INITIAL_SEARCH`)\nexport const setInitialSearchLoaded = createAction(`${prefix}SET_INITIAL_SEARCH_LOADED`)\n\nexport const executeSavedSearch = createAction(`${prefix}EXECUTE_SAVED_SEARCH`)\nexport const setExecutedSavedSearch = createAction(`${prefix}SET_EXECUTED_SAVED_SEARCH`)\n\nexport const setUploadedPhoto = createAction(`${prefix}SET_UPLOADED_PHOTO`)\n\nexport const setViewType = createAction(`${prefix}SET_VIEW_TYPE`)\nexport const setTab = createAction(`${prefix}SET_TAB`)\n\nprefix = `${defaultPrefix}FEEDS/`\n\nexport const saveSavedSearchFeedStart = createAction(`${prefix}SAVE_SAVED_SEARCH_FEED_START`)\nexport const saveSavedSearchFeedSuccess = createAction(`${prefix}SAVE_SAVED_SEARCH_FEED_SUCCESS`)\nexport const saveSavedSearchFeedError = createAction(`${prefix}SAVE_SAVED_SEARCH_FEED_ERROR`)\n\nexport const deleteSavedSearchFeedStart = createAction(`${prefix}DELETE_SAVED_SEARCH_FEED_START`)\nexport const deleteSavedSearchFeedSuccess = createAction(`${prefix}DELETE_SAVED_SEARCH_FEED_SUCCESS`)\nexport const deleteSavedSearchFeedError = createAction(`${prefix}DELETE_SAVED_SEARCH_FEED_ERROR`)\n\nexport const expandSavedSearchFeed = createAction(`${prefix}EXPAND_SAVED_SEARCH_FEED`)\n","import { createAction } from 'redux-actions'\nimport createLoadingAction from 'utils/createLoadingAction'\n\nconst defaultPrefix = 'NEWS/SHOPPING_CART/'\nlet prefix = defaultPrefix\n\nexport const addAllNewsToShoppingCartError = createAction(`${prefix}ADD_ALL_NEWS_TO_SHOPPING_CART_ERROR`)\nexport const addAllNewsToShoppingCartStart = createAction(`${prefix}ADD_ALL_NEWS_TO_SHOPPING_CART_START`)\nexport const addAllNewsToShoppingCartSuccess = createAction(`${prefix}ADD_ALL_NEWS_TO_SHOPPING_CART_SUCCESS`)\n\nexport const addNewsToShoppingCart = createAction(`${prefix}ADD_NEWS_TO_SHOPPING_CART`)\nexport const collapseAllNewsLists = createAction(`${prefix}COLLAPSE_ALL_NEWS_LISTS`)\nexport const expandAllNewsLists = createAction(`${prefix}EXPAND_ALL_NEWS_LISTS`)\nexport const fetchNewsError = createLoadingAction(`${prefix}FETCH_NEWS_ERROR`, false)\nexport const fetchNewsStart = createLoadingAction(`${prefix}FETCH_NEWS_START`, true)\nexport const fetchNewsSuccess = createLoadingAction(`${prefix}FETCH_NEWS_SUCCESS`, false)\nexport const moveCodeInShoppingCart = createAction(`${prefix}MOVE_CODE_IN_SHOPPING_CART`)\nexport const moveNewsInShoppingCart = createAction(`${prefix}MOVE_NEWS_IN_SHOPPING_CART`)\nexport const moveNewsInShoppingCartSublist = createAction(`${prefix}MOVE_NEWS_IN_SHOPPING_CART_SUBLIST`)\nexport const removeNewsFromShoppingCart = createAction(`${prefix}REMOVE_NEWS_FROM_SHOPPING_CART`)\nexport const resetShoppingCart = createAction(`${prefix}RESET_SHOPPING_CART`)\nexport const sortBy = createAction(`${prefix}SORT_BY`)\nexport const sortByUngrouped = createAction(`${prefix}SORT_BY_UNGROUPED`)\nexport const toggleHighlight = createAction(`${prefix}TOGGLE_HIGHLIGHT`)\nexport const toggleNewsList = createAction(`${prefix}TOGGLE_NEWS_LIST`)\nexport const updateTabIndex = createAction(`${prefix}UPDATE_TAB_INDEX`)\nexport const setCustomTagId = createAction(`${prefix}SET_CUSTOM_TAG_ID`)\nexport const setRunning = createAction(`${prefix}SET_RUNNING`)\nexport const pinAllStart = createAction(`${prefix}PIN_ALL_START`)\nexport const pinAllError = createAction(`${prefix}PIN_ALL_ERROR`)\nexport const pinAllSuccess = createAction(`${prefix}PIN_ALL_SUCCESS`)\nexport const unpinAll = createAction(`${prefix}UNPIN_ALL`)\nexport const showCustomTagDialog = createAction(`${prefix}SHOW_CUSTOM_TAG_DIALOG`)\nexport const hideCustomTagDialog = createAction(`${prefix}HIDE_CUSTOM_TAG_DIALOG`)\nexport const showRemoveCustomTagDialog = createAction(`${prefix}SHOW_REMOVE_CUSTOM_TAG_DIALOG`)\nexport const hideRemoveCustomTagDialog = createAction(`${prefix}HIDE_REMOVE_CUSTOM_TAG_DIALOG`)\nexport const toggleSnippets = createAction(`${prefix}TOGGLE_SNIPPETS`)\nexport const checkShoppingCartSize = createAction(`${prefix}CHECK_SHOPPING_CART_SIZE`)\nexport const setCodes = createAction(`${prefix}SET_CODES`)\nexport const setNews = createAction(`${prefix}SET_NEWS`)\nexport const recalculateGroupedSorting = createAction(`${prefix}RECALCULATE_GROUPED_SORTING`)\nexport const setAutoAddShoppingCartNews = createAction(`${prefix}SET_AUTO_ADD_SHOPPING_CART_NEWS`)\n\nexport const fetchClusterForShoppingCartError = createAction(`${prefix}FETCH_CLUSTER_FOR_SHOPPING_CART_ERROR`)\nexport const fetchClusterForShoppingCartStart = createAction(`${prefix}FETCH_CLUSTER_FOR_SHOPPING_CART_START`)\nexport const fetchClusterForShoppingCartSuccess = createAction(`${prefix}FETCH_CLUSTER_FOR_SHOPPING_CART_SUCCESS`)\n\nprefix = `${defaultPrefix}SELECTED/`\nexport const selectNews = createAction(`${prefix}SELECT_NEWS`)\nexport const resetNewsSelection = createAction(`${prefix}RESET_NEWS_SELECTION`)\nexport const invertNewsSelection = createAction(`${prefix}INVERT_NEWS_SELECTION`)\nexport const setSelectedNews = createAction(`${prefix}SET_SELECTED_NEWS`)\n\nprefix = `${defaultPrefix}SORTING/`\nexport const selectNewsForSorting = createAction(`${prefix}SELECT_NEWS_FOR_SORTING`)\nexport const shiftSelectNewsForSorting = createAction(`${prefix}SHIFT_SELECT_NEWS_FOR_SORTING`)\nexport const resetSortingSelection = createAction(`${prefix}RESET_SORTING_SELECTION`)\n\nprefix = `${defaultPrefix}CLUSTER/`\nexport const showClusterDialog = createAction(`${prefix}SHOW_CLUSTER_DIALOG`)\nexport const hideClusterDialog = createAction(`${prefix}HIDE_CLUSTER_DIALOG`)\nexport const fetchReorderClusteredNewsError = createAction(`${prefix}FETCH_REORDER_CLUSTERED_NEWS_ERROR`)\nexport const fetchReorderClusteredNewsStart = createAction(`${prefix}FETCH_REORDER_CLUSTERED_NEWS_START`)\nexport const fetchReorderClusteredNewsSuccess = createAction(`${prefix}FETCH_REORDER_CLUSTERED_NEWS_SUCCESS`)\nexport const moveNewsInCluster = createAction(`${prefix}MOVE_NEWS_IN_CLUSTER`)\nexport const replaceCluster = createAction(`${prefix}REPLACE_CLUSTER`)\nexport const setActiveNewsIdsInCluster = createAction(`${prefix}SET_ACTIVE_NEWS_IDS_IN_CLUSTER`)\nexport const setHoveredNewsIdsInCluster = createAction(`${prefix}SET_HOVERED_NEWS_IDS_IN_CLUSTER`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'SUBSCRIPTIONS/'\n\nexport const saveSubscriptionsError = createAction(`${prefix}SAVE_SUBSCRIPTIONS_ERROR`)\nexport const saveSubscriptionsStart = createAction(`${prefix}SAVE_SUBSCRIPTIONS_START`)\nexport const saveSubscriptionsSuccess = createAction(`${prefix}SAVE_SUBSCRIPTIONS_SUCCESS`)\nexport const selectAllTopics = createAction(`${prefix}SELECT_ALL_TOPICS`)\nexport const deselectAllTopics = createAction(`${prefix}DESELECT_ALL_TOPICS`)\nexport const setSubscriptions = createAction(`${prefix}SET_SUBSCRIPTIONS`)\nexport const setTopics = createAction(`${prefix}SET_TOPICS`)\nexport const updateEditionSelection = createAction(`${prefix}UPDATE_EDITION_SELECTION`)\nexport const updateTopicSelection = createAction(`${prefix}UPDATE_TOPIC_SELECTION`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'SURVEY/'\n\nexport const submitSurveyStart = createAction(`${prefix}SUBMIT_SURVEY_START`)\nexport const submitSurveySuccess = createAction(`${prefix}SUBMIT_SURVEY_SUCCESS`)\nexport const submitSurveyError = createAction(`${prefix}SUBMIT_SURVEY_ERROR`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'THEMAX/'\nlet prefix = defaultPrefix\n\nexport const onMount = createAction(`${prefix}ON_MOUNT`)\nexport const onUnmount = createAction(`${prefix}ON_UNMOUNT`)\n\n// DATA\nprefix = `${defaultPrefix}DATA/`\n\nexport const setSelectedEditorialPlan = createAction(`${prefix}SET_SELECTED_EDITORIAL_PLAN`)\n\n// UI\nprefix = `${defaultPrefix}UI/`\nexport const setThemaxModuleInitialized = createAction(`${prefix}SET_THEMAX_MODULE_INITIALIZED`)\n\nexport const setSelectedQueryType = createAction(`${prefix}SET_SELECTED_QUERY_TYPE`)\nexport const changeTabView = createAction(`${prefix}CHANGE_TAB_VIEW`)\nexport const toggleAdvancedSearch = createAction(`${prefix}TOGGLE_ADVANCED_SEARCH`)\nexport const toggleDateForm = createAction(`${prefix}TOGGLE_DATE_FORM`)\n\nexport const uiRemoveFilter = createAction(`${prefix}REMOVE_FILTER`)\nexport const uiInvertFilter = createAction(`${prefix}INVERT_FILTER`)\nexport const uiUpdateFilter = createAction(`${prefix}UPDATE_FILTER`)\nexport const toggleActiveFilters = createAction(`${prefix}TOGGLE_ACTIVE_FILTERS`)\nexport const uiEnteredQuery = createAction(`${prefix}ENTERED_QUERY`)\n\nexport const openDetailedViewDialog = createAction(`${prefix}OPEN_DETAILED_VIEW_DIALOG`)\nexport const closeDetailedViewDialog = createAction(`${prefix}CLOSE_DETAILED_VIEW_DIALOG`)\n\nexport const openWelcomeDialog = createAction(`${prefix}OPEN_WELCOME_DIALOG`)\nexport const closeWelcomeDialog = createAction(`${prefix}CLOSE_WELCOME_DIALOG`)\n\nexport const openOrderDialog = createAction(`${prefix}OPEN_ORDER_DIALOG`)\nexport const closeOrderDialog = createAction(`${prefix}CLOSE_ORDER_DIALOG`)\n\nexport const closeOrderSuccessDialog = createAction(`${prefix}CLOSE_ORDER_SUCCESS_DIALOG`)\n\n// FILTER\nprefix = `${defaultPrefix}FILTER/`\nexport const setSelectedThemaxFilters = createAction(`${prefix}SET_SELECTED_THEMAX_FILTERS`)\nexport const applyThemaxFilters = createAction(`${prefix}APPLY_THEMAX_FILTERS`)\nexport const resetThemaxFilters = createAction(`${prefix}RESET_THEMAX_FILTERS`)\nexport const removeFilter = createAction(`${prefix}REMOVE_FILTER`)\nexport const invertFilter = createAction(`${prefix}INVERT_FILTER`)\nexport const updateFilter = createAction(`${prefix}UPDATE_FILTER`)\nexport const uiApplyDateFilter = createAction(`${prefix}UI_APPLY_DATE_FILTER`)\nexport const uiChooseQuickSelect = createAction(`${prefix}UI_CHOOSE_QUICK_SELECT`)\nexport const changeDate = createAction(`${prefix}CHANGE_DATE`)\nexport const addQuery = createAction(`${prefix}ADD_QUERY`)\nexport const setThemaxPage = createAction(`${prefix}SET_THEMAX_PAGE`)\nexport const setThemaxLimit = createAction(`${prefix}SET_THEMAX_LIMIT`)\nexport const setThemaxSort = createAction(`${prefix}SET_THEMAX_SORT`)\nexport const updateThemaxSort = createAction(`${prefix}UPDATE_THEMAX_SORT`)\nexport const setSelectedPublicationIds = createAction(`${prefix}SET_SELECTED_PUBLICATION_IDS`)\n\n// SEARCH\nprefix = `${defaultPrefix}SEARCH/`\nexport const themaxSearchRequestStart = createAction(`${prefix}THEMAX_SEARCH_REQUEST_START`)\nexport const themaxSearchRequestSuccess = createAction(`${prefix}THEMAX_SEARCH_REQUEST_SUCCESS`)\nexport const themaxSearchRequestError = createAction(`${prefix}THEMAX_SEARCH_REQUEST_ERROR`)\n\nexport const themaxSearchEditorialPlans = createAction(`${prefix}THEMAX_SEARCH_EDITORIAL_PLANS`)\nexport const themaxSearchEditorialPlansSuccess = createAction(`${prefix}THEMAX_SEARCH_EDITORIAL_PLANS_SUCCESS`)\nexport const themaxSearchEditorialPlansError = createAction(`${prefix}THEMAX_SEARCH_EDITORIAL_PLANS_ERROR`)\n\nexport const themaxFetchRelatedEditorialPlansStart = createAction(`${prefix}THEMAX_FETCH_RELATED_EDITORIAL_PLANS_START`)\nexport const themaxFetchRelatedEditorialPlansSuccess = createAction(`${prefix}THEMAX_FETCH_RELATED_EDITORIAL_PLANS_SUCCESS`)\nexport const themaxFetchRelatedEditorialPlansError = createAction(`${prefix}THEMAX_FETCH_RELATED_EDITORIAL_PLANS_ERROR`)\n\nexport const themaxSearchPublications = createAction(`${prefix}THEMAX_SEARCH_PUBLICATIONS`)\nexport const themaxSearchPublicationsSuccess = createAction(`${prefix}THEMAX_SEARCH_PUBLICATIONS_SUCCESS`)\nexport const themaxSearchPublicationsError = createAction(`${prefix}THEMAX_SEARCH_PUBLICATIONS_ERROR`)\n\nexport const themaxFetchMorePublicationsStart = createAction(`${prefix}THEMAX_FETCH_MORE_PUBLICATIONS`)\nexport const themaxFetchMorePublicationsSuccess = createAction(`${prefix}THEMAX_FETCH_MORE_PUBLICATIONS_SUCCESS`)\nexport const themaxFetchMorePublicationsError = createAction(`${prefix}THEMAX_FETCH_MORE_PUBLICATIONS_ERROR`)\n\nexport const themaxFetchMoreEditorialPlansStart = createAction(`${prefix}THEMAX_FETCH_MORE_EDITORIAL_PLANS_START`)\nexport const themaxFetchMoreEditorialPlansSuccess = createAction(`${prefix}THEMAX_FETCH_MORE_EDITORIAL_PLANS_SUCCESS`)\nexport const themaxFetchMoreEditorialPlansError = createAction(`${prefix}THEMAX_FETCH_MORE_EDITORIAL_PLANS_ERROR`)\n\nexport const themaxFetchMoreRelatedEditorialPlansStart = createAction(`${prefix}THEMAX_FETCH_MORE_RELATED_EDITORIAL_PLANS_START`)\nexport const themaxFetchMoreRelatedEditorialPlansSuccess = createAction(`${prefix}THEMAX_FETCH_MORE_RELATED_EDITORIAL_PLANS_SUCCESS`)\nexport const themaxFetchMoreRelatedEditorialPlansError = createAction(`${prefix}THEMAX_FETCH_MORE_RELATED_EDITORIAL_PLANS_ERROR`)\n\n// BOOKMARKING\nexport const themaxSaveBookmarkStart = createAction(`${prefix}THEMAX_SAVE_BOOKMARK_START`)\nexport const themaxSaveBookmarkSuccess = createAction(`${prefix}THEMAX_SAVE_BOOKMARK_SUCCESS`)\nexport const themaxSaveBookmarkError = createAction(`${prefix}THEMAX_SAVE_BOOKMARK_ERROR`)\n\nexport const themaxDeleteBookmarkStart = createAction(`${prefix}THEMAX_DELETE_BOOKMARK_START`)\nexport const themaxDeleteBookmarkSuccess = createAction(`${prefix}THEMAX_DELETE_BOOKMARK_SUCCESS`)\nexport const themaxDeleteBookmarkError = createAction(`${prefix}THEMAX_DELETE_BOOKMARK_ERROR`)\n\n// SAVED SEARCHES\nprefix = `${defaultPrefix}SAVED_SEARCHES/`\n\nexport const saveThemaxSavedSearchStart = createAction(`${prefix}SAVE_THEMAX_SAVED_SEARCH_START`)\nexport const saveThemaxSavedSearchSuccess = createAction(`${prefix}SAVE_THEMAX_SAVED_SEARCH_SUCCESS`)\nexport const saveThemaxSavedSearchError = createAction(`${prefix}SAVE_THEMAX_SAVED_SEARCH_ERROR`)\n\nexport const deleteThemaxSavedSearchStart = createAction(`${prefix}DELETE_THEMAX_SAVED_SEARCH_START`)\nexport const deleteThemaxSavedSearchSuccess = createAction(`${prefix}DELETE_THEMAX_SAVED_SEARCH_SUCCESS`)\nexport const deleteThemaxSavedSearchError = createAction(`${prefix}DELETE_THEMAX_SAVED_SEARCH_ERROR`)\n\nexport const searchThemaxSavedSearchesStart = createAction(`${prefix}SEARCH_THEMAX_SAVED_SEARCHES_START`)\nexport const searchThemaxSavedSearchesSuccess = createAction(`${prefix}SEARCH_THEMAX_SAVED_SEARCHES_SUCCESS`)\nexport const searchThemaxSavedSearchesError = createAction(`${prefix}SEARCH_THEMAX_SAVED_SEARCHES_ERROR`)\n\nexport const fetchThemaxSavedSearchFiltersStart = createAction(`${prefix}FETCH_THEMAX_SAVED_SEARCH_FILTERS_START`)\nexport const fetchThemaxSavedSearchFiltersSuccess = createAction(`${prefix}FETCH_THEMAX_SAVED_SEARCH_FILTERS_SUCCESS`)\nexport const fetchThemaxSavedSearchFiltersError = createAction(`${prefix}FETCH_THEMAX_SAVED_SEARCH_FILTERS_ERROR`)\n\nexport const favoriteThemaxSavedSearchStart = createAction(`${prefix}FAVORITE_THEMAX_SAVED_SEARCH_START`)\nexport const favoriteThemaxSavedSearchSuccess = createAction(`${prefix}FAVORITE_THEMAX_SAVED_SEARCH_SUCCESS`)\nexport const favoriteThemaxSavedSearchError = createAction(`${prefix}FAVORITE_THEMAX_SAVED_SEARCH_ERROR`)\n\nexport const initializeThemaxSavedSearches = createAction(`${prefix}INITIALIZE_THEMAX_SAVED_SEARCHES`)\nexport const executeThemaxSavedSearch = createAction(`${prefix}EXECUTE_THEMAX_SAVED_SEARCH`)\nexport const resetThemaxSavedSearches = createAction(`${prefix}RESET_THEMAX_SAVED_SEARCHES`)\nexport const setThemaxSavedSearchFilters = createAction(`${prefix}SET_THEMAX_SAVED_SEARCH_FILTERS`)\n\n// EXPORT\nprefix = `${defaultPrefix}EXPORT/`\nexport const exportEditorialPlansStart = createAction(`${prefix}EXPORT_EDITORIAL_PLANS_START`)\nexport const exportEditorialPlansSuccess = createAction(`${prefix}EXPORT_EDITORIAL_PLANS_SUCCESS`)\nexport const exportEditorialPlansError = createAction(`${prefix}EXPORT_EDITORIAL_PLANS_ERROR`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'UI/'\n\nexport const uiApplyDateFilter = createAction(`${prefix}APPLY_DATE_FILTER`)\nexport const uiApplyFilters = createAction(`${prefix}APPLY_FILTERS`)\nexport const uiChooseQuickSelect = createAction(`${prefix}CHOOSE_QUICK_SELECT`)\nexport const uiEnteredQuery = createAction(`${prefix}ENTERED_QUERY`)\nexport const uiRemoveFilter = createAction(`${prefix}REMOVE_FILTER`)\nexport const uiInvertFilter = createAction(`${prefix}INVERT_FILTER`)\nexport const uiAddFilters = createAction(`${prefix}ADD_FILTERS`)\nexport const uiReplaceFilters = createAction(`${prefix}REPLACE_FILTERS`)\nexport const uiResetFilters = createAction(`${prefix}RESET_FILTERS`)\nexport const uiSetBoolean = createAction(`${prefix}SET_BOOLEAN`)\nexport const uiUpdateFilter = createAction(`${prefix}UPDATE_FILTER`)\nexport const uiSetAnalysisFilter = createAction(`${prefix}SET_ANALYSIS_FILTER`)\nexport const uiResetFilterFields = createAction(`${prefix}RESET_FILTER_FIELDS`)\nexport const uiSwapAnalysisCodeSelectionAndGrouping = createAction(`${prefix}SWAP_ANALYSIS_CODE_SELECTION_AND_GROUPING`)\nexport const uiSetSortBy = createAction(`${prefix}SET_SORT_BY`)\nexport const uiSetSortDirection = createAction(`${prefix}SET_SORT_DIRECTION`)\n","import { createAction } from 'redux-actions'\n\nconst defaultPrefix = 'UNSPLASH/'\nlet prefix = 'UNSPLASH/'\n\n// DATA\nprefix = `${defaultPrefix}DATA/`\nexport const searchUnsplashPhotosStart = createAction(`${prefix}SEARCH_UNSPLASH_PHOTOS_START`)\nexport const searchUnsplashPhotosSuccess = createAction(`${prefix}SEARCH_UNSPLASH_PHOTOS_SUCCESS`)\nexport const searchUnsplashPhotosError = createAction(`${prefix}SEARCH_UNSPLASH_PHOTOS_ERROR`)\nexport const addImageToLibraryStart = createAction(`${prefix}ADD_IMAGE_TO_LIBRARY_START`)\nexport const addImageToLibrarySuccess = createAction(`${prefix}ADD_IMAGE_TO_LIBRARY_SUCCESS`)\nexport const addImageToLibraryError = createAction(`${prefix}ADD_IMAGE_TO_LIBRARY_ERROR`)\nexport const fetchRandomUnsplashPhotosStart = createAction(`${prefix}FETCH_RANDOM_UNSPLASH_PHOTOS_START`)\nexport const setUnsplashPhotos = createAction(`${prefix}SET_UNSPLASH_PHOTOS`)\nexport const setUnsplashFormData = createAction(`${prefix}SET_UNSPLASH_FORM_DATA`)\nexport const resetUnsplashPhotos = createAction(`${prefix}RESET_UNSPLASH_PHOTOS`)\n\n// UI\nprefix = `${defaultPrefix}UI/`\nexport const toggleUnsplashComponent = createAction(`${prefix}TOGGLE_UNSPLASH_COMPONENT`)\n\n// FILTER\nprefix = `${defaultPrefix}FILTER/`\nexport const incrementPage = createAction(`${prefix}INCREMENT_PAGE`)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'USER/'\n\nexport const setUser = createAction(`${prefix}SET_USER`)\nexport const setLocale = createAction(`${prefix}SET_LOCALE`)\n\nexport const updateUserRequestError = createAction(`${prefix}UPDATE_USER_REQUEST_ERROR`)\nexport const updateUserRequestStart = createAction(`${prefix}UPDATE_USER_REQUEST_START`)\nexport const updateUserRequestSuccess = createAction(`${prefix}UPDATE_USER_SUCCESS`)\n\nexport const forgotPasswordRequestError = createAction(`${prefix}FORGOT_PASSWORD_REQUEST_ERROR`)\nexport const forgotPasswordRequestStart = createAction(`${prefix}FORGOT_PASSWORD_REQUEST_START`)\nexport const forgotPasswordRequestSuccess = createAction(`${prefix}FORGOT_PASSWORD_REQUEST_SUCCESS`)\n\nexport const resetPasswordRequestError = createAction(`${prefix}RESET_PASSWORD_REQUEST_ERROR`)\nexport const resetPasswordRequestStart = createAction(`${prefix}RESET_PASSWORD_REQUEST_START`)\nexport const resetPasswordRequestSuccess = createAction(`${prefix}RESET_PASSWORD_REQUEST_SUCCESS`)\n\nexport const registerUserRequestError = createAction(`${prefix}REGISTER_USER_REQUEST_ERROR`)\nexport const registerUserRequestStart = createAction(`${prefix}REGISTER_USER_REQUEST_START`)\nexport const registerUserRequestSuccess = createAction(`${prefix}REGISTER_USER_REQUEST_SUCCESS`)\n\nexport const activateUserStart = createAction(`${prefix}ACTIVATE_USER_START`)\nexport const activateUserError = createAction(`${prefix}ACTIVATE_USER_ERROR`)\n\nexport const reset = createAction(`${prefix}RESET`)\n\nexport const setCookieOption = createAction(`${prefix}SET_COOKIE_OPTION`)\n\nexport const setDarkMode = createAction(`${prefix}SET_DARK_MODE`)\nexport const setPrefersDarkMode = createAction(`${prefix}SET_PREFERS_DARK_MODE`)\nexport const setField = createAction(`${prefix}SET_FIELD`)\n","/* global FormData */\nimport { getBffUrl as bffUrlSelector } from 'selectors'\nimport store from '../store'\n\nimport * as Api from '../utils/api'\n\nconst getBffUrl = () => bffUrlSelector(store.getState())\n\nexport const registerUser = body => Api.post(\n `${getBffUrl()}/users/register`,\n body\n)\n\nexport const fetchConfig = timezone => Api.post(\n `${getBffUrl()}/config?timezone=${timezone}`\n)\n\nexport const updateConfig = (body, newsradarId) => Api.patch(\n `${getBffUrl()}/groot_configs/${newsradarId}`,\n body\n)\n\nexport const updateUserConfig = body => Api.post(\n `${getBffUrl()}/groot_user_configs`,\n body\n)\n\nexport const fetchContentDeskConfig = () => Api.get(\n `${getBffUrl()}/groot_ccd_configs`\n)\n\nexport const updateContentDeskConfig = (id, body) => Api.patch(\n `${getBffUrl()}/groot_ccd_configs/${id}`,\n body\n)\n\nexport const verifyContentDeskDomain = body => Api.post(\n `${getBffUrl()}/groot_ccd_configs/domain/verify`,\n body\n)\n\nexport const searchAllowedDomains = body => Api.post(\n `${getBffUrl()}/groot_ccd_configs/domain/allowed/search`,\n body\n)\n\nexport const createAllowedDomain = body => Api.post(\n `${getBffUrl()}/groot_ccd_configs/domain/allowed`,\n body\n)\n\nexport const updateAllowedDomainSenderDomains = (id, body) => Api.patch(\n `${getBffUrl()}/groot_ccd_configs/domain/allowed/${id}/sender_domains`,\n body\n)\n\nexport const updateAllowedDomainOpenTracking = (id, body) => Api.patch(\n `${getBffUrl()}/groot_ccd_configs/domain/allowed/${id}/tracking/open`,\n body\n)\n\nexport const updateAllowedDomainClickTracking = (id, body) => Api.patch(\n `${getBffUrl()}/groot_ccd_configs/domain/allowed/${id}/tracking/click`,\n body\n)\n\nexport const deleteAllowedDomain = id => Api.destroy(\n `${getBffUrl()}/groot_ccd_configs/domain/allowed/${id}`\n)\n\nexport const refreshStatusAllowedDomain = body => Api.post(\n `${getBffUrl()}/groot_ccd_configs/domain/allowed/status/refresh`,\n body\n)\n\nexport const fetchAllowedDomainStatus = body => Api.post(\n `${getBffUrl()}/groot_ccd_configs/domain/allowed/status`,\n body\n)\n\nexport const startExport = body => Api.post(\n `${getBffUrl()}/export`,\n body\n)\n\nexport const logout = body => Api.post(\n `${getBffUrl()}/logout`,\n body\n)\n\nexport const login = body => Api.post(\n `${getBffUrl()}/login`,\n body\n)\n\nexport const search = body => Api.post(\n `${getBffUrl()}/search`,\n body\n)\n\nexport const searchByIds = body => Api.post(\n `${getBffUrl()}/search/by_ids`,\n body\n)\n\nexport const validate = body => Api.post(\n `${getBffUrl()}/search/validate`,\n body\n)\n\nexport const fetchNewsIds = body => Api.post(\n `${getBffUrl()}/search/news_ids`,\n body\n)\n\nexport const searchInfluencers = body => Api.post(\n `${getBffUrl()}/search/influencers`,\n body\n)\n\nexport const searchPublications = body => Api.post(\n `${getBffUrl()}/search/publications`,\n body\n)\n\nexport const searchPageIdentities = body => Api.post(\n `${getBffUrl()}/search/page_identities`,\n body\n)\n\nexport const searchAllPublications = body => Api.post(\n `${getBffUrl()}/publications/search`,\n body\n)\n\nexport const searchPageIdentityPosts = body => Api.post(\n `${getBffUrl()}/search/page_identities/posts`,\n body\n)\n\nexport const getMediaReview = mediaReviewId => Api.get(\n `${getBffUrl()}/media_reviews/${mediaReviewId}`\n)\n\nexport const reorderMediaReview = body => Api.post(\n `${getBffUrl()}/media_reviews/reorder`,\n body\n)\n\nexport const removeNewsFromMediaReview = body => Api.post(\n `${getBffUrl()}/media_reviews/remove_news`,\n body\n)\n\nexport const loadFullText = id => Api.get(\n `${getBffUrl()}/media_reviews/full_text/${id}`\n)\n\nexport const filterMediaReviews = body => Api.post(\n `${getBffUrl()}/media_reviews/filter`,\n body\n)\n\nexport const replaceMediaReviewReaction = (id, body) => Api.post(\n `${getBffUrl()}/media_reviews/${id}/replace_reaction`,\n body\n)\n\nexport const getMediaReviewReactions = id => Api.get(\n `${getBffUrl()}/media_reviews/${id}/reactions`\n)\n\nexport const getMediaReviewSnapshot = id => Api.get(\n `${getBffUrl()}/media_reviews/${id}/snapshot`\n)\n\nexport const addNewsToMediaReview = (id, newsId) => Api.post(\n `${getBffUrl()}/media_reviews/${id}/news/${newsId}`\n)\n\nexport const getNews = id => Api.get(\n `${getBffUrl()}/news/${id}`\n)\n\nexport const getNewsAiAnalysis = body => Api.post(\n `${getBffUrl()}/news/ai_analysis`,\n body\n)\n\nexport const createPublication = body => Api.post(\n `${getBffUrl()}/publications`,\n body\n)\n\nexport const submitShopping = (id, type) => Api.get(\n `${getBffUrl()}/submit_shopping/${id}/?type=${type}`\n)\n\nexport const sendMail = body => Api.post(\n `${getBffUrl()}/send_mail`,\n body\n)\n\nexport const createDispatch = body => Api.post(\n `${getBffUrl()}/dispatches`,\n body\n)\n\nexport const cancelDispatch = id => Api.post(\n `${getBffUrl()}/dispatches/${id}/cancel`\n)\n\nexport const fetchDispatchLog = () => Api.get(\n `${getBffUrl()}/dispatches/log`\n)\n\nexport const saveSubscriptions = body => Api.post(\n `${getBffUrl()}/subscriptions`,\n body\n)\n\nexport const updateUser = (body, userId) => Api.patch(\n `${getBffUrl()}/users/${userId}`,\n body\n)\n\nexport const forgotPassword = body => Api.post(\n `${getBffUrl()}/users/forgot_password`,\n body\n)\n\nexport const resetPassword = body => Api.post(\n `${getBffUrl()}/users/reset_password`,\n body\n)\n\nexport const activateUser = body => Api.post(\n `${getBffUrl()}/users/activate`,\n body\n)\n\nexport const createCustomTag = body => Api.post(\n `${getBffUrl()}/custom_tags`,\n body\n)\n\nexport const updateCustomTag = (id, body) => Api.patch(\n `${getBffUrl()}/custom_tags/${id}`,\n body\n)\n\nexport const deleteCustomTag = (id, body) => Api.post(\n `${getBffUrl()}/custom_tags/${id}`,\n body\n)\n\nexport const emptyCustomTag = body => Api.post(\n `${getBffUrl()}/empty_custom_tag`,\n body\n)\n\nexport const fetchNewsForCustomTag = (id, body) => Api.post(\n `${getBffUrl()}/custom_tags/${id}/news`,\n body\n)\n\nexport const assignCustomTagToNews = body => Api.post(\n `${getBffUrl()}/assign_custom_tag`,\n body\n)\n\nexport const createCustomTagGroup = body => Api.post(\n `${getBffUrl()}/custom_tag_groups`,\n body\n)\n\nexport const updateCustomTagGroup = (id, body) => Api.patch(\n `${getBffUrl()}/custom_tag_groups/${id}`,\n body\n)\n\nexport const deleteCustomTagGroup = id => Api.destroy(\n `${getBffUrl()}/custom_tag_groups/${id}`\n)\n\nexport const assignCustomTagToGroup = (groupId, customTagId) => Api.post(\n `${getBffUrl()}/custom_tag_groups/${groupId}/custom_tags/${customTagId}`\n)\n\nexport const removeCustomTagFromGroup = (groupId, customTagId) => Api.destroy(\n `${getBffUrl()}/custom_tag_groups/${groupId}/custom_tags/${customTagId}`\n)\n\nexport const uploadFile = data => {\n const formData = new FormData()\n data.forEach(({ key, value, filename }) => {\n if (filename) {\n formData.append(key, value, filename)\n } else {\n formData.append(key, value)\n }\n })\n\n return Api.form(\n `${getBffUrl()}/upload_file`,\n formData\n )\n}\n\nexport const updateCharts = body => Api.post(\n `${getBffUrl()}/charts`,\n body\n)\n\nexport const exportExcel = body => Api.post(\n `${getBffUrl()}/charts/excel`,\n body,\n 'blob'\n)\n\nexport const exportPowerpoint = body => Api.post(\n `${getBffUrl()}/charts/powerpoint`,\n body,\n 'blob'\n)\n\nexport const exportPowerpointBatch = body => Api.post(\n `${getBffUrl()}/charts/powerpoint_batch`,\n body,\n 'blob'\n)\n\nexport const aiChartAnalysis = body => Api.post(\n `${getBffUrl()}/charts/ai_analysis`,\n body\n)\n\nexport const aiChartDescription = body => Api.post(\n `${getBffUrl()}/charts/ai_description`,\n body\n)\n\nexport const updateNews = (id, body) => Api.patch(\n `${getBffUrl()}/news/${id}`,\n body\n)\n\nexport const summarizeNews = body => Api.post(\n `${getBffUrl()}/news/summarize`,\n body\n)\n\nexport const updateBackwardsNews = (id, body) => Api.patch(\n `${getBffUrl()}/backwards_news/${id}`,\n body\n)\n\nexport const createNews = body => Api.post(\n `${getBffUrl()}/news`,\n body\n)\n\nexport const deleteNews = newsIds => Api.destroy(\n `${getBffUrl()}/news/delete?ids=${newsIds}`\n)\n\nexport const deleteBackwardsNews = newsIds => Api.destroy(\n `${getBffUrl()}/backwards_news/delete?ids=${newsIds}`\n)\n\nexport const fetchInfluencer = id => Api.get(\n `${getBffUrl()}/influencers/${id}`\n)\n\nexport const addInfluencerToContacts = (id, body) => Api.post(\n `${getBffUrl()}/influencers/${id}/add_to_contacts`,\n body\n)\nexport const updateMailingList = (id, body) => Api.patch(\n `${getBffUrl()}/mailing_lists/${id}`,\n body\n)\n\nexport const deleteMailingList = id => Api.destroy(\n `${getBffUrl()}/mailing_lists/${id}`\n)\n\nexport const createMailingList = body => Api.post(\n `${getBffUrl()}/mailing_lists`,\n body\n)\n\nexport const createSavedSearch = body => Api.post(\n `${getBffUrl()}/saved_searches`,\n body\n)\n\nexport const updateSavedSearch = (id, body) => Api.patch(\n `${getBffUrl()}/saved_searches/${id}`,\n body\n)\n\nexport const deleteSavedSearch = id => Api.destroy(\n `${getBffUrl()}/saved_searches/${id}`\n)\n\nexport const resolveSavedSearch = (id, body) => Api.post(\n `${getBffUrl()}/saved_searches/${id}/resolve`,\n body\n)\n\nexport const fetchSavedSearchesTimelines = moduleName => Api.get(\n `${getBffUrl()}/saved_searches/timelines?module_name=${moduleName}`\n)\n\nexport const fetchSavedSearchNewsFeed = (id, body) => Api.post(\n `${getBffUrl()}/saved_searches/${id}/news_feed`,\n body\n)\n\nexport const fetchSavedSearchNewsFeedAiAnalysis = (id, body) => Api.post(\n `${getBffUrl()}/saved_searches/${id}/news_feed/ai_analysis`,\n body\n)\n\nexport const fetchSavedSearchDispatches = (id, limit = 10, page = 1) => Api.get(\n `${getBffUrl()}/saved_searches/${id}/dispatches?limit=${limit}&page=${page}`\n)\n\nexport const createSavedSearchFeed = body => Api.post(\n `${getBffUrl()}/saved_searches/feeds`,\n body\n)\n\nexport const updateSavedSearchFeed = (id, body) => Api.patch(\n `${getBffUrl()}/saved_searches/feeds/${id}`,\n body\n)\n\nexport const deleteSavedSearchFeed = id => Api.destroy(\n `${getBffUrl()}/saved_searches/feeds/${id}`\n)\n\nexport const fetchDashboardConfig = id => Api.get(\n `${getBffUrl()}/dashboards/${id}/config`\n)\n\nexport const updateDashboard = (id, body) => Api.patch(\n `${getBffUrl()}/dashboards/${id}`,\n body\n)\n\nexport const createDashboard = body => Api.post(\n `${getBffUrl()}/dashboards`,\n body\n)\n\nexport const deleteDashboard = (id, userConfigId) => {\n let destroyRoute = `${getBffUrl()}/dashboards/${id}`\n\n if (userConfigId) {\n destroyRoute = `${destroyRoute}?user_config_id=${userConfigId}`\n }\n\n return Api.destroy(destroyRoute)\n}\n\nexport const fetchSavedDashboard = urlName => Api.get(\n `${getBffUrl()}/saved_dashboards/by_url_name?url_name=${urlName}`\n)\n\nexport const fetchSavedDashboardInfo = id => Api.get(\n `${getBffUrl()}/saved_dashboards/${id}`\n)\n\nexport const deleteSavedDashboard = id => Api.destroy(\n `${getBffUrl()}/saved_dashboards/${id}`\n)\n\nexport const createSavedDashboard = body => Api.post(\n `${getBffUrl()}/saved_dashboards`,\n body\n)\n\nexport const checkSavedDashboardUrlName = body => Api.post(\n `${getBffUrl()}/saved_dashboards/check_url_name`,\n body\n)\n\nexport const validateSpf = body => Api.post(\n `${getBffUrl()}/validation/spf`,\n body\n)\n\nexport const authenticateGoogleAnalytics = body => Api.post(\n `${getBffUrl()}/auth/external/google_analytics`,\n body\n)\n\nexport const revokeGoogleAnalytics = body => Api.post(\n `${getBffUrl()}/auth/external/google_analytics/revoke`,\n body\n)\n\nexport const authenticateYoutubeAnalytics = body => Api.post(\n `${getBffUrl()}/auth/external/youtube_analytics`,\n body\n)\n\nexport const revokeYoutubeAnalytics = body => Api.post(\n `${getBffUrl()}/auth/external/youtube_analytics/revoke`,\n body\n)\n\nexport const authenticateLinkedIn = body => Api.post(\n `${getBffUrl()}/auth/external/linked_in`,\n body\n)\n\nexport const revokeLinkedIn = body => Api.post(\n `${getBffUrl()}/auth/external/linked_in/revoke`,\n body\n)\n\nexport const revokeFacebook = body => Api.post(\n `${getBffUrl()}/auth/external/facebook_analytics/revoke`,\n body\n)\n\nexport const revokeTwitter = body => Api.post(\n `${getBffUrl()}/auth/external/twitter_analytics/revoke`,\n body\n)\n\nexport const authenticateFacebook = body => Api.post(\n `${getBffUrl()}/auth/external/facebook_analytics`,\n body\n)\n\nexport const fetchChartData = body => Api.post(\n `${getBffUrl()}/charts/data`,\n body\n)\n\nexport const addIdentityToIdentitySet = (id, identityId) => Api.post(\n `${getBffUrl()}/identity_sets/${id}/identities/${identityId}`\n)\n\nexport const removeIdentityFromIdentitySet = (id, identityId) => Api.destroy(\n `${getBffUrl()}/identity_sets/${id}/identities/${identityId}`\n)\n\nexport const createIdentitySet = body => Api.post(\n `${getBffUrl()}/identity_sets`,\n body\n)\n\nexport const updateIdentitySet = (id, body) => Api.patch(\n `${getBffUrl()}/identity_sets/${id}`,\n body\n)\n\nexport const deleteIdentitySet = id => Api.destroy(\n `${getBffUrl()}/identity_sets/${id}`\n)\n\nexport const getDarknetSearchResults = () => Api.get(\n `${getBffUrl()}/darknet/search_results/`\n)\n\nexport const createDarknetScores = body => Api.post(\n `${getBffUrl()}/darknet/scores/request`,\n body\n)\n\nexport const getDarknetScoresStatus = id => Api.get(\n `${getBffUrl()}/darknet/scores/status/${id}`\n)\n\nexport const getDarknetScoreResults = (ids, dateFrom, dateTo) => Api.get(\n `${getBffUrl()}/darknet/scores/results?ids=${ids}&dateFrom=${dateFrom}&dateTo=${dateTo}`\n)\n\nexport const getDarknetDemoScoreResults = () => Api.get(\n `${getBffUrl()}/plotlights/demo/chart`\n)\n\nexport const searchDarknetEntries = body => Api.post(\n `${getBffUrl()}/darknet/search/`,\n body\n)\n\nexport const createDarknetSearchQuery = body => Api.post(\n `${getBffUrl()}/darknet/search/create`,\n body\n)\n\nexport const updateDarknetSearchQuery = (id, body) => Api.patch(\n `${getBffUrl()}/darknet/search/update/${id}`,\n body\n)\n\nexport const deleteDarknetSearchQuery = id => Api.patch(\n `${getBffUrl()}/darknet/search/delete/${id}`\n)\n\nexport const createDarknetScoreQuery = body => Api.post(\n `${getBffUrl()}/darknet/scores/create`,\n body\n)\n\nexport const updateDarknetScoreQuery = (id, body) => Api.patch(\n `${getBffUrl()}/darknet/score_queries/${id}`,\n body\n)\n\nexport const deleteDarknetScoreQuery = id => Api.destroy(\n `${getBffUrl()}/darknet/score_queries/${id}`\n)\n\nexport const fetchAllDarknetQueries = () => Api.get(\n `${getBffUrl()}/darknet/queries`\n)\n\nexport const deactivateDarknetQuery = (id, body) => Api.post(\n `${getBffUrl()}/darknet/queries/${id}/deactivate`,\n body\n)\n\nexport const activateDarknetQuery = (id, body) => Api.post(\n `${getBffUrl()}/darknet/queries/${id}/activate`,\n body\n)\n\nexport const testSearchQuery = body => Api.post(\n `${getBffUrl()}/darknet/queries/test_search`,\n body\n)\n\nexport const translate = body => Api.post(\n `${getBffUrl()}/translate`,\n body\n)\n\nexport const buildExternalWidgetUrl = content => {\n const queryParams = new URLSearchParams({\n widget_content: content\n })\n\n return `${getBffUrl()}/charts/render_widget?${queryParams.toString()}`\n}\n\nexport const sso = body => Api.post(\n `${getBffUrl()}/sso`,\n body\n)\n\nexport const logSso = body => Api.post(\n `${getBffUrl()}/sso/log`,\n body\n)\n\nexport const fetchSavedChart = (id, timezone, locale) => Api.get(\n `${getBffUrl()}/saved_charts/${id}/data?timezone=${encodeURIComponent(timezone)}&locale=${locale}`\n)\n\nexport const createSavedChart = body => Api.post(\n `${getBffUrl()}/saved_charts`,\n body\n)\n\nexport const deleteSavedChart = id => Api.destroy(\n `${getBffUrl()}/saved_charts/${id}`\n)\n\nexport const updateSavedChart = (id, body) => Api.patch(\n `${getBffUrl()}/saved_charts/${id}`,\n body\n)\n\nexport const submitApiKey = body => Api.post(\n `${getBffUrl()}/api_keys/`, body\n)\n\nexport const deleteApiKey = id => Api.destroy(\n `${getBffUrl()}/api_keys/${id}`\n)\n\nexport const extractTextFromPdf = file => {\n const formData = new FormData()\n formData.append('file', file)\n\n return Api.form(\n `${getBffUrl()}/extract`,\n formData\n )\n}\n\nexport const markNotificationAsRead = body => Api.post(\n `${getBffUrl()}/notifications/mark_as_read`, body\n)\n\nexport const fetchNotifications = (page, limit, sortBy, sortOrder) => Api.get(\n `${getBffUrl()}/notifications?page=${page}&limit=${limit}&sort_by=${sortBy}&sort_order=${sortOrder}`\n)\n\nexport const submitSurvey = () => Api.post(`${getBffUrl()}/submit_survey`)\n\nexport const searchUnsplashPhotos = body => Api.post(\n `${getBffUrl()}/unsplash/photos/search`, body\n)\n\nexport const fetchRandomUnsplashPhotos = body => Api.post(\n `${getBffUrl()}/unsplash/photos/random`, body\n)\n\nexport const downloadUnsplashImage = body => Api.post(\n `${getBffUrl()}/unsplash/photos/download`, body\n)\n\nexport const fetchOpenGraphMetadata = body => Api.post(\n `${getBffUrl()}/open_graph/metadata`, body\n)\n\nexport const uploadFileFromUrl = body => Api.post(\n `${getBffUrl()}/upload_from_url`, body\n)\n\nexport const searchThemaxEditorialPlans = body => Api.post(\n `${getBffUrl()}/themax/search/editorial_plans`, body\n)\n\nexport const searchThemaxPublications = body => Api.post(\n `${getBffUrl()}/themax/search/publications`, body\n)\n\nexport const exportThemaxEditorialPlans = body => Api.post(\n `${getBffUrl()}/themax/export/excel/editorial_plans`,\n body,\n 'blob'\n)\n\nexport const searchThemaxSavedSearches = body => Api.post(\n `${getBffUrl()}/themax/saved_searches/search`,\n body\n)\n\nexport const fetchThemaxSavedSearch = id => Api.get(\n `${getBffUrl()}/themax/saved_searches/${id}`\n)\n\nexport const createThemaxSavedSearch = body => Api.post(\n `${getBffUrl()}/themax/saved_searches`,\n body\n)\n\nexport const updateThemaxSavedSearch = (id, body) => Api.patch(\n `${getBffUrl()}/themax/saved_searches/${id}`,\n body\n)\n\nexport const deleteThemaxSavedSearch = id => Api.destroy(\n `${getBffUrl()}/themax/saved_searches/${id}`\n)\n\nexport const favoriteThemaxSavedSearch = id => Api.post(\n `${getBffUrl()}/themax/saved_searches/${id}/favorite`\n)\n\nexport const createOrder = body => Api.post(\n `${getBffUrl()}/orders`,\n body\n)\n\nexport const createGrootEditorialPlan = body => Api.post(\n `${getBffUrl()}/themax/groot_editorial_plans`,\n body\n)\n\nexport const deleteGrootEditorialPlan = id => Api.destroy(\n `${getBffUrl()}/themax/groot_editorial_plans/${id}`\n)\n\nexport const clickTrace = body => Api.post(\n `${getBffUrl()}/click_trace`,\n body\n)\n","/* eslint-disable */\nconst React = require('react')\nconst PropTypes = require('prop-types')\n\nconst ALL_INITIALIZERS = []\nconst READY_INITIALIZERS = []\n\nfunction isWebpackReady(getModuleIds) {\n if (typeof __webpack_modules__ !== 'object') {\n return false\n }\n\n return getModuleIds().every(moduleId => (\n typeof moduleId !== 'undefined'\n && typeof __webpack_modules__[moduleId] !== 'undefined'\n ))\n}\n\nfunction load(loader) {\n const promise = loader()\n\n const state = {\n loading: true,\n loaded: null,\n error: null\n }\n\n state.promise = promise\n .then((loaded) => {\n state.loading = false\n state.loaded = loaded\n return loaded\n })\n .catch((err) => {\n state.loading = false\n state.error = err\n throw err\n })\n\n return state\n}\n\nfunction loadMap(obj) {\n const state = {\n loading: false,\n loaded: {},\n error: null\n }\n\n const promises = []\n\n try {\n Object.keys(obj).forEach((key) => {\n const result = load(obj[key])\n\n if (!result.loading) {\n state.loaded[key] = result.loaded\n state.error = result.error\n } else {\n state.loading = true\n }\n\n promises.push(result.promise)\n\n result.promise\n .then((res) => {\n state.loaded[key] = res\n })\n .catch((err) => {\n state.error = err\n })\n })\n } catch (err) {\n state.error = err\n }\n\n state.promise = Promise.all(promises)\n .then((res) => {\n state.loading = false\n return res\n })\n .catch((err) => {\n state.loading = false\n throw err\n })\n\n return state\n}\n\nfunction resolve(obj) {\n return obj && obj.__esModule ? obj.default : obj\n}\n\nfunction render(loaded, props) {\n return React.createElement(resolve(loaded), props)\n}\n\nfunction createLoadableComponent(loadFn, options) {\n if (!options.loading) {\n throw new Error('react-loadable requires a `loading` component')\n }\n\n const opts = Object.assign(\n {\n loader: null,\n loading: null,\n delay: 200,\n timeout: null,\n render,\n webpack: null,\n modules: null\n },\n options\n )\n\n let res = null\n\n function init() {\n if (!res) {\n res = loadFn(opts.loader)\n }\n return res.promise\n }\n\n ALL_INITIALIZERS.push(init)\n\n if (typeof opts.webpack === 'function') {\n READY_INITIALIZERS.push(() => {\n if (isWebpackReady(opts.webpack)) {\n return init()\n }\n })\n }\n\n return class LoadableComponent extends React.Component {\n constructor(props) {\n super(props)\n init()\n\n this.state = {\n error: res.error,\n pastDelay: false,\n timedOut: false,\n loading: res.loading,\n loaded: res.loaded\n }\n }\n\n static contextTypes = {\n loadable: PropTypes.shape({\n report: PropTypes.func.isRequired\n })\n };\n\n static preload() {\n return init()\n }\n\n UNSAFE_componentWillMount() {\n this._mounted = true\n this._loadModule()\n }\n\n _loadModule() {\n if (this.context.loadable && Array.isArray(opts.modules)) {\n opts.modules.forEach((moduleName) => {\n this.context.loadable.report(moduleName)\n })\n }\n\n if (!res.loading) {\n return\n }\n\n if (typeof opts.delay === 'number') {\n if (opts.delay === 0) {\n this.setState({ pastDelay: true })\n } else {\n this._delay = setTimeout(() => {\n this.setState({ pastDelay: true })\n }, opts.delay)\n }\n }\n\n if (typeof opts.timeout === 'number') {\n this._timeout = setTimeout(() => {\n this.setState({ timedOut: true })\n }, opts.timeout)\n }\n\n const update = () => {\n if (!this._mounted) {\n return\n }\n\n this.setState({\n error: res.error,\n loaded: res.loaded,\n loading: res.loading\n })\n\n this._clearTimeouts()\n }\n\n res.promise\n .then(() => {\n update()\n })\n .catch((err) => {\n update()\n })\n }\n\n UNSAFE_componentWillUnmount() {\n this._mounted = false\n this._clearTimeouts()\n }\n\n _clearTimeouts() {\n clearTimeout(this._delay)\n clearTimeout(this._timeout)\n }\n\n retry = () => {\n this.setState({ error: null, loading: true, timedOut: false })\n res = loadFn(opts.loader)\n this._loadModule()\n };\n\n render() {\n if (this.state.loading || this.state.error) {\n return React.createElement(opts.loading, {\n isLoading: this.state.loading,\n pastDelay: this.state.pastDelay,\n timedOut: this.state.timedOut,\n error: this.state.error,\n retry: this.retry\n })\n }\n\n if (this.state.loaded) {\n return opts.render(this.state.loaded, this.props)\n }\n return null\n }\n }\n}\n\nfunction Loadable(opts) {\n return createLoadableComponent(load, opts)\n}\n\nfunction LoadableMap(opts) {\n if (typeof opts.render !== 'function') {\n throw new Error('LoadableMap requires a `render(loaded, props)` function')\n }\n\n return createLoadableComponent(loadMap, opts)\n}\n\nLoadable.Map = LoadableMap\n\nclass Capture extends React.Component {\n static propTypes = {\n report: PropTypes.func.isRequired\n };\n\n static childContextTypes = {\n loadable: PropTypes.shape({\n report: PropTypes.func.isRequired\n }).isRequired\n };\n\n getChildContext() {\n return {\n loadable: {\n report: this.props.report\n }\n }\n }\n\n render() {\n return React.Children.only(this.props.children)\n }\n}\n\nLoadable.Capture = Capture\n\nfunction flushInitializers(initializers) {\n const promises = []\n\n while (initializers.length) {\n const init = initializers.pop()\n promises.push(init())\n }\n\n return Promise.all(promises).then(() => {\n if (initializers.length) {\n return flushInitializers(initializers)\n }\n })\n}\n\nLoadable.preloadAll = () => new Promise((resolve, reject) => {\n flushInitializers(ALL_INITIALIZERS).then(resolve, reject)\n})\n\nLoadable.preloadReady = () => new Promise((resolve, reject) => {\n // We always will resolve, errors should be handled within loading UIs.\n flushInitializers(READY_INITIALIZERS).then(resolve, resolve)\n})\n\nmodule.exports = Loadable\n","/* global window */\n\nconst IP_FILTER = [\n '192.168',\n '84.133.192.205',\n '91.26.142.106',\n '217.113.43',\n '92.247.50.185',\n '78.83.69.79',\n '109.199.129.41',\n '24.134.122.173',\n '84.241.96.98'\n]\n\nexport const checkIp = () => {\n if (process.env.NODE_ENV !== 'production') {\n return true\n }\n\n const ip = window.ust_myIP\n const allowed = IP_FILTER.some(filter => ip.startsWith(filter))\n\n return allowed\n}\n\nexport const disableRecording = () => {\n window.UST.settings.enableSessionRecordings = false\n window.UST.fullRec = false\n window.UST.nativeSessionRecording = false\n console.log('Recording disabled') // eslint-disable-line\n}\n\nexport const enableRecording = () => {\n window.UST.settings.enableSessionRecordings = true\n window.UST.fullRec = true\n window.UST.nativeSessionRecording = true\n console.log('Recording enabled') // eslint-disable-line\n}\n","/* global document, window */\nimport 'core-js/stable'\nimport 'regenerator-runtime/runtime'\nimport React from 'react'\nimport { createRoot } from 'react-dom/client'\n\nimport { createLoadable } from 'utils/loadable'\nimport { isEmbeddedChartView } from 'utils/embedded_charts'\nimport { checkViewVersion } from 'actions/app'\nimport { changeWidthAndHeight } from 'actions/environment'\n\nimport { checkIp, enableRecording, disableRecording } from 'utils/tracking'\nimport store from './store'\n\nimport 'moment/locale/de'\nimport 'moment/locale/fr'\nimport 'moment/locale/en-gb' // default language if no configs are fetched\nimport 'material-design-icons-iconfont/dist/material-design-icons.css'\nimport '@fortawesome/fontawesome-pro/css/all.css'\nimport '@fortawesome/fontawesome-pro/css/v4-shims.css'\nimport 'flag-icons/css/flag-icons.min.css'\nimport 'typeface-roboto/index.css'\nimport 'stylesheets/react-grid-layout.css'\n\nconst Root = createLoadable(() => import(/* webpackChunkName: \"Root\" */ 'containers/Root'))\nconst RootEmbed = createLoadable(() => import(/* webpackChunkName: \"RootEmbed\" */ 'containers/RootEmbed'))\n\nstore.dispatch(checkViewVersion())\n\nwindow.onresize = () => store.dispatch(changeWidthAndHeight({\n width: window.innerWidth,\n height: window.innerHeight\n}))\n\nglobal.mouseX = 0\nglobal.mouseY = 0\n\nwindow.onmousemove = e => {\n try {\n global.mouseX = e.clientX\n global.mouseY = e.clientY\n } catch (e) { // eslint-disable-line\n }\n}\n\nif (Object.prototype.hasOwnProperty.call(window, 'UST')) {\n // eslint-disable-next-line\n window.UST.onTrackingStarted = function() {\n console.log('Wizard started') // eslint-disable-line\n window.UST.currentIP = window.ust_myIP\n window.UST.trackingAllowed = checkIp(window.UST.currentIP)\n window.UST.trackingAllowed ? enableRecording() : disableRecording() // eslint-disable-line\n }\n}\n\nconst allowedDomains = [\n 'http://www.scompler.com',\n 'https://www.scompler.com',\n 'http://scompler.com',\n 'https://scompler.com',\n 'http://test.pressrelations.de',\n 'https://test.pressrelations.de',\n 'http://customers.pressrelations.de',\n 'https://customers.pressrelations.de'\n]\n\nwindow.addEventListener('message', evt => {\n if (allowedDomains.indexOf(evt.origin) !== -1) {\n if (evt.data.type === 'injectStyle') {\n const styleEl = document.createElement('style')\n styleEl.setAttribute('type', 'text/css')\n\n if (styleEl.styleSheet) {\n styleEl.styleSheet.cssText = evt.data.data\n } else {\n styleEl.appendChild(document.createTextNode(evt.data.data))\n }\n\n document.head.appendChild(styleEl)\n\n console.info(`Processed message ${evt.data.type} from ${evt.origin}`) // eslint-disable-line\n }\n }\n})\n\nconst container = document.getElementById('root')\nconst root = createRoot(container)\n\nif (isEmbeddedChartView()) {\n root.render()\n} else {\n root.render()\n}\n\nif (module.hot) {\n module.hot.accept()\n}\n","/* global window */\n\nexport const isEmbeddedChartView = () => window.location.hash.indexOf('embed') !== -1\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\nimport { mergeDeepKeepLists } from 'utils/immutable'\n\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\nimport {\n NewsPageViews,\n DateTypes,\n DefaultExportFormats,\n SearchFields,\n SearchFieldGroups,\n IndexTypes,\n GroupingTypes,\n Capabilities,\n NewsPageModules,\n AllowedKeyFigures\n} from 'static/constants'\n\nimport masterConfig from 'static/master_config'\n\nconst searchFieldsNotInDefault = [\n SearchFields.IDENTITY_SETS,\n SearchFields.SIMILARITY_CCD_CONTENTS,\n SearchFields.SIMILARITY_CCD_CAMPAIGNS\n]\n\nexport const defaultFilterFields = Set(Object.values(SearchFields))\n .subtract(searchFieldsNotInDefault)\n .toList()\n .toJS()\n\nexport const searchPoolFilterFields = [\n SearchFields.CHANNELS,\n SearchFields.COUNTRIES,\n SearchFields.DISTRIBUTION_AREAS,\n SearchFields.EXCLUDE_COMMENTS,\n SearchFields.EXCLUDE_RETWEETS,\n SearchFields.EXCLUDE_VISITOR_POSTS,\n SearchFields.FILTER_GROUPS,\n SearchFields.GEO_BOUNDING_BOX,\n SearchFields.GLOBAL_CLUSTERS,\n SearchFields.LANGUAGES,\n SearchFields.MEDIA_TYPES,\n SearchFields.OUTLINK_DOMAINS,\n SearchFields.OUTLINK_URLS,\n SearchFields.WITH_OUTLINKS_ONLY,\n SearchFields.WITHOUT_OUTLINKS_ONLY,\n SearchFields.EXCLUDE_RETWEETS,\n SearchFields.CUSTOM_TAGS,\n SearchFields.NEWSGUARD_RANKS,\n SearchFields.NEWSGUARD_ORIENTATIONS,\n SearchFields.SIMILARITY_CCD_CONTENTS,\n SearchFields.SIMILARITY_CCD_CAMPAIGNS,\n SearchFields.INTERFACES,\n SearchFields.SUPPLIERS\n]\n\nconst defaultConfig = fromJS({\n indexType: IndexTypes.DEFAULT,\n moduleName: NewsPageModules.NEWS,\n groupingType: GroupingTypes.CHANNEL,\n defaultDateType: null,\n hasDateRestriction: false,\n hasSavedSearchesLimit: false,\n appBarTitleKey: 'news_board',\n allowedViews: [\n NewsPageViews.NEWS,\n NewsPageViews.INFLUENCERS,\n NewsPageViews.PUBLICATIONS,\n NewsPageViews.CHARTS,\n NewsPageViews.PIN_BOARDS,\n NewsPageViews.SAVED_SEARCHES\n ],\n allowedKeyFigures: AllowedKeyFigures.DEFAULT,\n allowedDateTypes: [\n DateTypes.MEDIA_REVIEW,\n DateTypes.ARTICLE\n ],\n allowedFilterFields: defaultFilterFields,\n allowedFilterFieldGroups: Object.values(SearchFieldGroups),\n requiredFilters: [],\n exportFormats: DefaultExportFormats,\n newsPage: {\n moreOptions: [\n 'select_all',\n 'xlsx',\n 'new_article',\n 'hide_clusters'\n ],\n showGroupingSelection: true\n },\n newsGroupWidget: {\n headerFilterField: SearchFields.CHANNELS,\n showAllKeyFiguresInHeader: false,\n icon: {\n mode: 'channel',\n icon: null\n },\n paging: {\n entity: 'publication',\n field: 'channel_id'\n }\n },\n newsWidget: {\n showChannel: false,\n showCodes: true,\n showSentiment: false,\n sentimentEditable: false,\n showTonality: true,\n showActions: true,\n showSelectButton: true,\n showPinButton: true,\n showPdfButton: true,\n showEditButton: true,\n showNewIndicator: true,\n availableCodesOnly: true,\n showStatementTonality: false\n },\n influencerWidget: {\n },\n publicationWidget: {\n },\n capabilities: {\n influencers: [Capabilities.HAS_INFLUENCERS_MODULE],\n publications: [Capabilities.HAS_PUBLICATIONS_MODULE],\n influencerDetails: [Capabilities.HAS_INFLUENCER_DETAILS_FEATURE],\n savedSearches: [Capabilities.HAS_NEWS_SAVED_SEARCHES],\n savedSearchesEditing: [Capabilities.HAS_NEWS_SAVED_SEARCHES_EDITING_FEATURE],\n savedSearchesFeeds: [Capabilities.HAS_NEWS_SAVED_SEARCHES_FEEDS],\n export: [Capabilities.HAS_SHOPPING_CART],\n editing: [Capabilities.HAS_EDITING_FEATURE],\n deleting: [Capabilities.HAS_DELETE_NEWS_FEATURE],\n moreOptions: [\n Capabilities.HAS_SHOPPING_CART,\n Capabilities.HAS_EDITING_FEATURE\n ]\n },\n charts: {\n useAggregationValue: false\n },\n loadNewsOnEnter: true,\n lastSeenNewsIdCookieName: 'groot_last_seen_news_id_news'\n})\n\nconst buildConfig = overrides => defaultConfig.mergeWith(mergeDeepKeepLists, fromJS(overrides))\n\nconst defaultAnalysisConfig = buildConfig({\n moduleName: NewsPageModules.ANALYSIS,\n appBarTitleKey: 'analysis',\n defaultDateType: DateTypes.ARTICLE,\n allowedViews: [\n NewsPageViews.ANALYSIS_QUERIES,\n NewsPageViews.NEWS,\n NewsPageViews.INFLUENCERS,\n NewsPageViews.PUBLICATIONS,\n NewsPageViews.SAVED_SEARCHES,\n NewsPageViews.PIN_BOARDS\n ],\n newsWidget: {\n showPdfButton: false,\n showTonality: false,\n showStatementTonality: true\n },\n capabilities: {\n influencers: [Capabilities.HAS_ANALYSIS_INFLUENCERS_MODULE],\n publications: [Capabilities.HAS_ANALYSIS_PUBLICATIONS_MODULE],\n influencerDetails: [Capabilities.HAS_ANALYSIS_INFLUENCER_DETAILS_FEATURE],\n savedSearches: [Capabilities.HAS_ANALYSIS_SAVED_SEARCHES],\n savedSearchesEditing: [Capabilities.HAS_ANALYSIS_SAVED_SEARCHES_EDITING_FEATURE],\n savedSearchesFeeds: [Capabilities.HAS_ANALYSIS_SAVED_SEARCHES_FEEDS],\n moreOptions: [\n Capabilities.HAS_SHOPPING_CART,\n Capabilities.HAS_EDITING_FEATURE\n ]\n },\n newsPage: {\n moreOptions: [\n 'select_all',\n 'xlsx',\n 'new_article',\n 'hide_clusters'\n ]\n },\n lastSeenNewsIdCookieName: 'groot_last_seen_news_id_analysis'\n})\n\nconst buildAnalysisConfigConfig = overrides => defaultAnalysisConfig.mergeWith(mergeDeepKeepLists, fromJS(overrides))\n\nconst defaultSearchPoolConfig = buildConfig({\n moduleName: NewsPageModules.NEWS_POOL,\n indexType: IndexTypes.BACKWARDS_NEWS,\n groupingType: GroupingTypes.CHANNEL,\n defaultDateType: DateTypes.ARTICLE,\n hasDateRestriction: true,\n hasSavedSearchesLimit: true,\n appBarTitleKey: 'search_pool',\n allowedViews: [\n NewsPageViews.BACKWARDS_NEWS,\n NewsPageViews.INFLUENCERS,\n NewsPageViews.PUBLICATIONS,\n NewsPageViews.PIN_BOARDS,\n NewsPageViews.SAVED_SEARCHES,\n NewsPageViews.STATIC_CHARTS\n ],\n allowedKeyFigures: AllowedKeyFigures.BACKWARDS_NEWS,\n allowedDateTypes: [\n DateTypes.ARTICLE\n ],\n allowedFilterFields: searchPoolFilterFields,\n allowedFilterFieldGroups: [\n SearchFieldGroups.NEWS,\n SearchFieldGroups.PUBLICATIONS\n ],\n requiredFilters: [\n SearchFields.OUTLINK_DOMAINS,\n SearchFields.OUTLINK_URLS,\n SearchFields.NEWS_QUERIES,\n SearchFields.AUTHOR_QUERIES,\n SearchFields.PUBLICATION_QUERIES,\n SearchFields.CUSTOM_TAGS,\n SearchFields.SIMILARITY_CCD_CONTENTS,\n SearchFields.SIMILARITY_CCD_CAMPAIGNS\n ],\n exportFormats: [\n 'backwards_news_xlsx',\n 'backwards_news_html'\n ],\n newsPage: {\n moreOptions: [\n 'select_all',\n 'backwards_news_xlsx',\n 'backwards_news_html'\n ],\n showGroupingSelection: true\n },\n newsGroupWidget: {\n headerFilterField: SearchFields.CHANNELS,\n showAllKeyFiguresInHeader: false,\n icon: {\n mode: 'channel',\n icon: null\n },\n paging: {\n entity: 'publication',\n field: 'channel_id'\n }\n },\n newsWidget: {\n showSentiment: true,\n sentimentEditable: true,\n showActions: true,\n showCodes: true,\n showTonality: false,\n showSelectButton: true,\n showPinButton: true,\n showPdfButton: false,\n showEditButton: false,\n showNewIndicator: true,\n availableCodesOnly: false\n },\n influencerWidget: {\n },\n publicationWidget: {\n },\n capabilities: {\n influencers: [Capabilities.HAS_NEWS_POOL_INFLUENCERS_MODULE],\n publications: [Capabilities.HAS_NEWS_POOL_PUBLICATIONS_MODULE],\n influencerDetails: [Capabilities.HAS_NEWS_POOL_INFLUENCER_DETAILS_FEATURE],\n savedSearches: [Capabilities.HAS_NEWS_POOL_SAVED_SEARCHES],\n savedSearchesEditing: [Capabilities.HAS_NEWS_POOL_SAVED_SEARCHES_EDITING_FEATURE],\n savedSearchesFeeds: [Capabilities.HAS_NEWS_POOL_SAVED_SEARCHES_FEEDS],\n export: [Capabilities.HAS_NEWS_POOL_EXPORT],\n editing: ['DUMMY_DUMMY_DUMMY_HAS_NEWS_POOL_EDITING_FEATURE'], // not available yet\n deleting: [Capabilities.HAS_NEWS_POOL_DELETE_NEWS_FEATURE],\n moreOptions: [\n Capabilities.HAS_NEWS_POOL_EXPORT\n ]\n },\n charts: {\n useAggregationValue: true\n },\n loadNewsOnEnter: false,\n lastSeenNewsIdCookieName: 'groot_last_seen_news_id_news_pool'\n})\n\nconst buildSearchPoolConfigConfig = overrides => defaultSearchPoolConfig.mergeWith(mergeDeepKeepLists, fromJS(overrides))\n\nconst byCodeConfigOverrides = {\n groupingType: GroupingTypes.MEDIA_REVIEW_CODE,\n newsGroupWidget: {\n headerFilterField: SearchFields.MEDIA_REVIEW_CODES,\n showAllKeyFiguresInHeader: true,\n icon: {\n mode: 'full',\n icon: masterConfig.getIn(['icons', 'codes'])\n },\n paging: {\n entity: 'news',\n field: 'mediareview_code_id'\n }\n },\n newsWidget: {\n showChannel: true\n }\n}\n\nconst byCustomTagConfigOverrides = {\n groupingType: GroupingTypes.CUSTOM_TAG,\n newsGroupWidget: {\n headerFilterField: SearchFields.CUSTOM_TAGS,\n showAllKeyFiguresInHeader: true,\n icon: {\n mode: 'full',\n icon: masterConfig.getIn(['icons', 'customTags'])\n },\n paging: {\n entity: 'news',\n field: 'custom_tag_id'\n }\n },\n newsWidget: {\n showChannel: true\n }\n}\n\nconst byNewsguardRankConfigOverrides = {\n groupingType: GroupingTypes.NEWSGUARD_RANK,\n newsGroupWidget: {\n headerFilterField: SearchFields.NEWSGUARD_RANKS,\n showAllKeyFiguresInHeader: true,\n icon: {\n mode: 'newsguard',\n icon: null\n },\n paging: {\n entity: 'publication',\n field: 'newsguard_rank'\n }\n },\n newsWidget: {\n showChannel: true\n }\n}\n\nexport const configPresets = fromJS({\n earned: buildConfig({}),\n earnedByCode: buildConfig(byCodeConfigOverrides),\n earnedByCustomTag: buildConfig(byCustomTagConfigOverrides),\n analysis: defaultAnalysisConfig,\n analysisByCode: buildAnalysisConfigConfig(byCodeConfigOverrides),\n analysisByCustomTag: buildAnalysisConfigConfig(byCustomTagConfigOverrides),\n\n profileMonitoring: buildConfig({\n moduleName: NewsPageModules.PROFILE_MONITORING,\n groupingType: GroupingTypes.PAGE_IDENTITY,\n defaultDateType: DateTypes.ARTICLE,\n appBarTitleKey: 'profile_monitoring',\n allowedFilterFields: defaultFilterFields.concat([SearchFields.IDENTITY_SETS]),\n allowedViews: [\n NewsPageViews.STATISTICS,\n NewsPageViews.PROFILES,\n NewsPageViews.POSTS,\n NewsPageViews.PIN_BOARDS,\n NewsPageViews.SAVED_SEARCHES\n ],\n newsPage: {\n moreOptions: [\n 'select_all',\n 'xlsx',\n 'new_article'\n ],\n showGroupingSelection: false\n },\n newsGroupWidget: {\n headerFilterField: SearchFields.PAGE_IDENTITIES,\n icon: {\n mode: 'channel',\n icon: null\n },\n paging: {\n entity: 'news',\n field: 'page_identity_id'\n }\n },\n newsWidget: {\n showActions: true,\n showCodes: true,\n showTonality: false,\n showNewIndicator: false,\n availableCodesOnly: false\n },\n capabilities: {\n savedSearches: [Capabilities.HAS_PROFILE_MONITORING_SAVED_SEARCHES],\n savedSearchesEditing: [Capabilities.HAS_PROFILE_MONITORING_SAVED_SEARCHES_EDITING_FEATURE],\n savedSearchesFeeds: [Capabilities.HAS_PROFILE_MONITORING_SAVED_SEARCHES_FEEDS]\n },\n lastSeenNewsIdCookieName: 'groot_last_seen_news_id_pm'\n }),\n\n searchPool: defaultSearchPoolConfig,\n searchPoolByNewsguardRank: buildSearchPoolConfigConfig(byNewsguardRankConfigOverrides)\n})\n\nexport const initialState = fromJS({\n indexType: IndexTypes.DEFAULT,\n moduleName: '',\n allowedViews: [],\n allowedKeyFigures: [],\n allowedDateTypes: [],\n requiredFilters: [],\n capabilities: {\n influencers: [],\n publications: [],\n influencerDetails: [],\n savedSearches: [],\n savedSearchesEditing: [],\n savedSearchesFeeds: [],\n export: [],\n editing: [],\n deleting: [],\n moreOptions: []\n },\n charts: {},\n newsPage: {\n moreOptions: []\n },\n newsGroupWidget: {},\n newsWidget: {},\n influencerWidget: {},\n publicationWidget: {}\n})\n\nexport default handleActions({\n [NewsActions.setViewConfigPreset]: (state, { payload: name }) => {\n const config = configPresets.get(name)\n\n if (config) {\n return config\n }\n\n return state\n },\n [AppActions.resetState]: () => initialState\n}, initialState)\n","// UI\nexport const getAnewstipUi = state => state.anewstip.get('ui')\nexport const getAnewstipStaticsRequestRunning = state => getAnewstipUi(state).get('staticsRequestRunning')\nexport const getAnewstipHasStatics = state => getAnewstipUi(state).get('hasStatics')\nexport const getAnewstipIsSimpleSearch = state => getAnewstipUi(state).get('isSimpleSearch')\nexport const getAnewstipSearchRequestRunning = state => getAnewstipUi(state).get('searchRequestRunning')\nexport const getJournalistsSearchRequestRunning = state => getAnewstipUi(state).get('journalistsSearchRequestRunning')\nexport const getOutletsSearchRequestRunning = state => getAnewstipUi(state).get('outletsSearchRequestRunning')\nexport const getArticlesSearchRequestRunning = state => getAnewstipUi(state).get('articlesSearchRequestRunning')\nexport const getAnewstipCombinedSearchRequestRunning = state => getAnewstipUi(state).get('combinedSearchRequestRunning')\nexport const getIsInitialSearch = state => getAnewstipUi(state).get('isInitialSearch')\nexport const getResultsTab = state => getAnewstipUi(state).get('resultsTab')\nexport const getAnewstipImportRequestRunning = state => getAnewstipUi(state).get('importRequestRunning')\nexport const getAnewstipReplaceRequestRunning = state => getAnewstipUi(state).get('replaceRequestRunning')\nexport const getDuplicateContactsDialogOpen = state => getAnewstipUi(state).get('duplicateContactsDialogOpen')\nexport const getAnewstipDistributionListContactDialogOpen = state => getAnewstipUi(state).get('distributionListCreateDialogOpen')\nexport const getShowDrillDownDialog = state => getAnewstipUi(state).get('showDrillDownDialog')\nexport const getDrillDownTab = state => getAnewstipUi(state).get('drillDownTab')\nexport const getDrillDownEntity = state => getAnewstipUi(state).get('drillDownEntity')\nexport const getJournalistsDrillDownRequestRunning = state => getAnewstipUi(state).get('journalistsDrillDownRequestRunning')\nexport const getOutletsDrillDownRequestRunning = state => getAnewstipUi(state).get('outletsDrillDownRequestRunning')\nexport const getArticlesDrillDownRequestRunning = state => getAnewstipUi(state).get('articlesDrillDownRequestRunning')\nexport const getIsNavigationLocked = state => getAnewstipUi(state).get('isNavigationLocked')\nexport const getIsLimitedFunctionality = state => getAnewstipUi(state).get('isLimitedFunctionality')\nexport const getAnewstipImportWithDistributionLists = state => getAnewstipUi(state).get('importWithDistributionLists')\n\n// STATICS\nexport const getAnewstipStatics = state => state.anewstip.get('statics')\nexport const getAnewstipSuggest = state => getAnewstipStatics(state).get('suggest')\n\n// SEARCH\nexport const getAnewstipSearchData = state => state.anewstip.get('search')\n\n// FILTER\nexport const getAnewstipFiltersData = state => state.anewstip.get('filters')\n\n// SELECTED\nexport const getAnewstipSelectedData = state => state.anewstip.get('selected')\n\n// DATA\nexport const getAnewstipData = state => state.anewstip.get('data')\nexport const getAnewstipJournalists = state => getAnewstipData(state).get('journalists')\nexport const getAnewstipOutlets = state => getAnewstipData(state).get('outlets')\nexport const getAnewstipArticles = state => getAnewstipData(state).get('articles')\n\n// IMPORTS\nexport const getAnewstipImports = state => state.anewstip.get('imports')\nexport const getAnewstipImportResult = state => getAnewstipImports(state).get('importResult')\nexport const getAnewstipImporContactsForDistributionLists = state => getAnewstipImports(state).get('importContactsForDistributionLists')\n\n// DRILL DOWN DATA\nexport const getAnewstipDrillDownData = state => state.anewstip.get('drillDownData')\n\n// DRILL DOWN FILTERS\nexport const getAnewstipDrillDownFilters = state => state.anewstip.get('drillDownFilters')\nexport const getAnewstipDrillDownTopics = state => state.anewstip.getIn(['drillDownFilters', 'topics'])\n\n// DRILL DOWN HISTORY\nexport const getAnewstipDrillDownHistory = state => state.anewstip.get('drillDownHistory')\n","import camelcase from 'camelcase'\nimport { getViewConfigModuleName } from './news/view_config'\nimport { getSavedSearchById } from './saved_searches'\nimport { getWhitelabelEmailAddress } from './whitelabel'\n\nexport const getConfig = state => state.config\nexport const getColors = state => getConfig(state).get('colors')\nexport const getThemes = state => getConfig(state).get('themes')\nexport const getGroupingSettingId = state => getConfig(state).get('grootGroupingSettingId')\nexport const getRandomThemes = state => getConfig(state).get('randomThemes')\nexport const getCurrency = state => getConfig(state).get('currency')\nexport const getConfigSenderMail = state => (\n getConfig(state).get('senderMail') || getWhitelabelEmailAddress(state) || 'customerservice@pressrelations.de'\n)\nexport const getPdfCoverTitle = state => getConfig(state).get('pdfCoverTitle')\nexport const getExportLimit = state => getConfig(state).get('exportLimit')\nexport const getXlsxExportLimit = state => getConfig(state).get('xlsxExportLimit')\nexport const getBackwardsNewsHtmlLimit = state => getConfig(state).get('backwardsNewsHtmlLimit')\nexport const getBackwardsNewsXlsxLimit = state => getConfig(state).get('backwardsNewsXlsxLimit')\nexport const getSavedSearchFeedLimit = state => getConfig(state).get('savedSearchFeedLimit')\nexport const getConfigDefaultDateType = state => getConfig(state).get('defaultDateType')\nexport const getInitialRoute = state => getConfig(state).get('initialRoute')\nexport const getGoogleAnalyticsEnabled = state => getConfig(state).get('googleAnalyticsEnabled')\nexport const getYoutubeAnalyticsEnabled = state => getConfig(state).get('youtubeAnalyticsEnabled')\nexport const getFacebookAnalyticsEnabled = state => getConfig(state).get('facebookAnalyticsEnabled')\nexport const getFacebookAccountConnected = state => getConfig(state).get('facebookAccountConnected')\nexport const getTwitterAnalyticsEnabled = state => getConfig(state).get('twitterAnalyticsEnabled')\nexport const getIsSuper = state => getConfig(state).get('isSuper')\nexport const getLinkedInAnalyticsEnabled = state => getConfig(state).get('linkedInAnalyticsEnabled')\nexport const getLinkedInPermissions = state => getConfig(state).get('linkedInPermissions')\nexport const getLinkedInProfile = state => getConfig(state).get('linkedInProfile')\nexport const getApiKeyRequestRunning = state => getConfig(state).get('apiKeyRequestRunning')\nexport const getNewsPoolAllowedSavedSearchesCount = state => getConfig(state).getIn(['newsPoolConfig', 'savedSearchCount'])\nexport const getNewsPoolTimeLimit = state => getConfig(state).getIn(['newsPoolConfig', 'timeLimit'])\nexport const getNewsPoolTimeUnit = state => getConfig(state).getIn(['newsPoolConfig', 'timeUnit'])\nexport const getNewsPoolAllowedChannels = state => getConfig(state).getIn(['newsPoolConfig', 'channels'])\nexport const getNewsAllowedCodeIds = state => getConfig(state).getIn(['newsConfig', 'allowedCodeIds'])\nexport const getNewsAllowedChannelIds = state => getConfig(state).getIn(['newsConfig', 'allowedChannelIds'])\nexport const getNewsAllowedCountryIds = state => getConfig(state).getIn(['newsConfig', 'allowedCountryIds'])\nexport const getDashboardAllowedDashboardsCount = state => getConfig(state).getIn(['dashboardConfig', 'savedDashboardsCount'])\nexport const getDashboardAllowedChartsCount = state => getConfig(state).getIn(['dashboardConfig', 'savedChartsCount'])\nexport const getGoogleAnalyticsClientId = state => getConfig(state).get('googleAnalyticsClientId')\nexport const getFacebookAnalyticsClientId = state => getConfig(state).get('facebookAnalyticsClientId')\nexport const getLinkedInClientId = state => getConfig(state).get('linkedInClientId')\nexport const getDeeplApiKey = state => getConfig(state).get('deeplApiKey')\nexport const getConfigSeparateCoding = state => getConfig(state).get('separateCoding')\nexport const getEvaluationSteps = state => getConfig(state).get('evaluationSteps')\nexport const getStatementEvaluationSteps = state => getConfig(state).get('statementEvaluationSteps')\nexport const getStatementBasedCoding = state => getConfig(state).get('statementBasedCoding')\nexport const getFirstConfigLoaded = state => getConfig(state).get('firstConfigLoaded')\nexport const getStartedWithDeepLink = state => getConfig(state).get('startedWithDeepLink')\nexport const getStartedWithDeepLinkSet = state => getConfig(state).get('startedWithDeepLinkSet')\nexport const getDarkowlSearchQueries = state => getConfig(state).get('darkowlSearchQueries')\nexport const getDarkowlScoreQueries = state => getConfig(state).get('darkowlScoreQueries')\nexport const getDarkowlScoreQueriesById = state => getDarkowlScoreQueries(state).map(q => q.get('id'))\nexport const getAnewstipApiKey = state => getConfig(state).get('anewstipApiKey')\nexport const getPaidFeatures = state => getConfig(state).get('paidFeatures') || {}\nexport const getThemaxPaidFeatureStatus = state => getPaidFeatures(state).get('themax')\nexport const getHasThemaxPaidVersion = state => getThemaxPaidFeatureStatus(state) === 'completed'\nexport const getAiSummariesPaidFeatureStatus = state => getPaidFeatures(state).get('aiSummaries')\nexport const getHasAiSummariesPaidVersion = state => getAiSummariesPaidFeatureStatus(state) === 'completed'\nexport const getConfigOrderRequestRunning = state => getConfig(state).get('orderRequestRunning')\nexport const getHasAiPowerpointAnalysisTestVersion = () => false\n\nexport const getUserConfig = state => getConfig(state).get('userConfig')\nexport const getCDeskConfig = state => getConfig(state).get('contentDeskConfig')\nexport const getCDeskUpdateRequestRunning = state => getConfig(state).get('updateConfigRequestStarted')\nexport const getCDeskPlan = state => getCDeskConfig(state).get('ccdPlan')\nexport const getCDeskPlanUsage = state => getCDeskConfig(state).get('ccdPlanUsage')\nexport const getCDeskIsDistributionListsLocked = state => getCDeskConfig(state).get('distListsLocked')\n\nexport const getFavoritedSavedSearchId = state => {\n const moduleName = camelcase(getViewConfigModuleName(state))\n\n return getConfig(state).getIn(['userConfig', `${moduleName}SavedSearchId`])\n}\nexport const getFavoritedSavedSearch = state => {\n const savedSearchId = getFavoritedSavedSearchId(state)\n\n return getSavedSearchById(state, savedSearchId)\n}\n\nexport const getFavoritedDashboardId = state => getUserConfig(state).get('dashboardId')\n","/* eslint-disable max-len */\nimport { createImmutableSelector } from 'utils/reselect'\nimport { List as ImmutableList, Map as ImmutableMap } from 'immutable'\n\n// DATA\nexport const getCmData = state => state.contactManagement.get('data')\nexport const getCmFormData = state => getCmData(state).get('contactFormData')\nexport const getCmContacts = state => getCmData(state).get('contacts')\nexport const getCmContactsToDelete = state => getCmData(state).get('contactsToDelete')\nexport const getCmDistributionLists = state => getCmData(state).get('distributionLists')\nexport const getCmListData = state => getCmData(state).get('listData')\nexport const getCmSelectedContact = state => getCmContacts(state).find(c => c.get('id') === getCmData(state).get('selectedContactId'), null, ImmutableMap())\nexport const getCmContactsTotal = state => getCmData(state).get('contactsTotal')\nexport const getCmListsTotal = state => getCmData(state).get('distributionListsTotal')\nexport const getCmUploadResult = state => getCmData(state).get('uploadResult')\nexport const getCmSelectedLists = state => getCmData(state).get('selectedLists')\nexport const getCmDistributionListsSearch = state => getCmData(state).get('distributionListsSearch')\n\n// TAGS\nexport const getCmTags = state => getCmData(state).get('tags')\nexport const getCmHasTags = state => !getCmTags(state).isEmpty()\n\n// UI\nexport const getCmUi = state => state.contactManagement.get('ui')\nexport const getCmSortBy = state => getCmUi(state).get('sortBy')\nexport const getCmSortOrder = state => getCmUi(state).get('sortOrder')\n\nexport const getCmListsSortBy = state => getCmUi(state).get('listSortBy')\nexport const getCmListsSortOrder = state => getCmUi(state).get('listSortOrder')\n\nexport const getCmTagsSortBy = state => getCmUi(state).get('tagsSortBy')\nexport const getCmTagsSortOrder = state => getCmUi(state).get('tagsSortOrder')\n\nexport const getCmAutoCreateDistributionList = state => getCmUi(state).get('autoCreateDistributionList')\nexport const getCmAutoAddToExistingList = state => getCmUi(state).get('autoAddToExistingList')\n// Dialogs\nexport const getCmContactEditDialogOpen = state => getCmUi(state).get('contactEditDialogOpen')\nexport const getCmContactDialogOpen = state => getCmUi(state).get('contactDialogOpen')\nexport const getCmContactDeleteDialogOpen = state => getCmUi(state).get('contactDeleteDialogOpen')\nexport const getCmTagsDialogOpen = state => getCmUi(state).get('tagsDialogOpen')\nexport const getCmTagRenameDialogOpen = state => getCmUi(state).get('tagRenameDialogOpen')\nexport const getCmTagDeleteDialogOpen = state => getCmUi(state).get('tagDeleteDialogOpen')\nexport const getCmDistributionListCreateDialogOpen = state => getCmUi(state).get('distributionListCreateDialogOpen')\nexport const getCmDistributionListEditDialogOpen = state => getCmUi(state).get('distributionListEditDialogOpen')\nexport const getCmDistributionListViewDialogOpen = state => getCmUi(state).get('distributionListViewDialogOpen')\nexport const getCmContactsUploadDialogOpen = state => getCmUi(state).get('contactsUploadDialogOpen')\nexport const getCmImportHelpDialogOpen = state => getCmUi(state).get('importHelpDialogOpen')\nexport const getCmEmailExistingDialogOpen = state => getCmUi(state).get('emailExistingDialogOpen')\nexport const getCmContactDialogsOpen = state => getCmContactEditDialogOpen(state) || getCmDistributionListEditDialogOpen(state) || getCmContactDialogOpen(state) || getCmDistributionListCreateDialogOpen(state)\nexport const getCmUploadResultDialogOpen = state => getCmUi(state).get('uploadResultDialogOpen')\nexport const getCmDistributionListMergeDialogOpen = state => getCmUi(state).get('distributionListMergeDialogOpen')\nexport const getCmContactEditDialogMode = state => getCmUi(state).get('contactEditDialogMode')\n\n// Selected\nexport const getCmSelectedTagType = state => getCmUi(state).get('selectedTagType')\nexport const getCmSelectedQueryType = state => getCmUi(state).get('selectedQueryType')\n\n// Running\nexport const getCmRequestRunning = state => getCmUi(state).get('requestRunning')\nexport const getCmSearchRunning = state => getCmUi(state).get('searchRunning')\nexport const getCmContactsSearchRunning = state => getCmUi(state).get('searchContactsRunning')\nexport const getCmDistributionListsSearchRunning = state => getCmUi(state).get('searchDistributionListsRunning')\nexport const getCmDistributionListSearchRunning = state => getCmUi(state).get('searchDistributionListRunning')\n\nexport const getCmSearchBarLabel = state => getCmUi(state).get('searchBarLabel')\n\nexport const getCmUploadedPhoto = state => getCmUi(state).get('uploadedPhoto')\n\nexport const getCmFiltersCollapsed = state => getCmUi(state).get('activeFiltersCollapsed')\n\n// FILTERS\nexport const getCmFilters = state => state.contactManagement.get('filter')\nexport const getCmActiveFilters = createImmutableSelector(\n getCmFilters,\n filters => filters.filter(value => ImmutableList.isList(value))\n)\nexport const getCmContactSearchQueries = state => getCmFilters(state).get('contactSearchQueries')\nexport const getCmDistributionListSearchQueries = state => getCmFilters(state).get('distributionListSearchQueries')\nexport const getCmDistributionListContactsSearchQueries = state => getCmFilters(state).get('distributionListContactsSearchQueries')\nexport const getCmContactPage = state => getCmFilters(state).get('contactPage')\nexport const getCmContactLimit = state => getCmFilters(state).get('contactLimit')\nexport const getCmShowUnsubscribed = state => getCmFilters(state).get('showUnsubscribed')\nexport const getCmDistributionListPage = state => getCmFilters(state).get('distributionListPage')\nexport const getCmDistributionListLimit = state => getCmFilters(state).get('distributionListLimit')\nexport const getCmTagsPage = state => getCmFilters(state).get('tagsPage')\nexport const getCmTagsLimit = state => getCmFilters(state).get('tagsLimit')\n","import { createImmutableSelector } from 'utils/reselect'\nimport { List, fromJS } from 'immutable'\nimport moment from 'moment-timezone'\n\n// CAMPAIGN_FORM\n\n// DATA\nexport const getCDeskData = state => state.contentDesk.get('data')\nexport const getCDeskCampaigns = state => getCDeskData(state).get('ccdCampaigns')\nexport const getCDeskCampaignsContents = state => getCDeskCampaigns(state)\n .get('items')\n .reduce((acc, campaign) => acc.concat(campaign.get('ccdContents').toJS()), [])\nexport const getCDeskContents = state => getCDeskData(state).get('ccdContents')\nexport const getCDeskAssignees = state => getCDeskData(state).get('ccdAssignees')\nexport const getCDeskContentFormData = state => getCDeskData(state).get('contentFormData')\nexport const getCDeskContentFormDataRecipients = state => getCDeskData(state).get('contentFormData').get('recipients')\nexport const getCDeskCampaignFormData = state => getCDeskData(state).get('campaignFormData')\nexport const getCDeskCampaignDropdownOptions = state => getCDeskData(state).get('campaignDropdownOptions')\nexport const getCDeskContentDropdownOptions = state => getCDeskData(state).get('contentDropdownOptions')\nexport const getCDeskContactDropdownOptions = state => getCDeskData(state).get('contactDropdownOptions')\nexport const getCDeskDistributionListDropdownOptions = state => getCDeskData(state).get('distributionListDropdownOptions')\nexport const getCDeskStatistics = state => getCDeskData(state).get('ccdStatistics')\nexport const getCDeskKpiStatistics = state => getCDeskData(state).get('ccdKpiStatistics')\nexport const getCDeskSelectedContent = state => getCDeskData(state).get('selectedContent')\nexport const getCDeskHasContents = state => !getCDeskContents(state).get('items').isEmpty()\nexport const getCDeskHasCampaigns = state => !getCDeskCampaigns(state).get('items').isEmpty()\nexport const getCDeskUploadedMediaFiles = state => getCDeskData(state).get('uploadedMediaFiles')\nexport const getCDeskUploadedMediaFilesTotal = state => getCDeskData(state).get('uploadedMediaFilesTotal')\nexport const getCDeskAiSelectedText = state => getCDeskData(state).get('aiSelectedText')\nexport const getCDeskAiRequestResults = state => getCDeskData(state).get('aiRequestResults')\nexport const getCDeskUploadedMediaFilesTotalSize = state => getCDeskData(state).get('uploadedMediaFilesTotalSize')\nexport const getCDeskDistributionListSearchQuery = state => getCDeskData(state).get('distributionListSearchQuery')\n\n// UI\nexport const getCDeskUi = state => state.contentDesk.get('ui')\n\nexport const getCDeskRequestRunning = state => getCDeskUi(state).get('requestRunning')\nexport const getCDeskShowNewContentDialog = state => getCDeskUi(state).get('showNewContentDialog')\nexport const getCDeskNewContentDialogSocialOnly = state => getCDeskUi(state).get('newContentDialogSocialOnly')\nexport const getCDeskShowEditContentDialog = state => getCDeskUi(state).get('showEditContentDialog')\nexport const getCDeskShowOldEditContentDialog = state => getCDeskUi(state).get('showOldEditContentDialog')\nexport const getCDeskShowViewContentDialog = state => getCDeskUi(state).get('showViewContentDialog')\nexport const getCDeskShowDeleteDialog = state => getCDeskUi(state).get('showDeleteDialog')\nexport const getCDeskShowBlockedContentEditDialog = state => getCDeskUi(state).get('showBlockedContentEditDialog')\nexport const getCDeskDeleteData = state => getCDeskUi(state).get('deleteData')\nexport const getCDeskShowNewCampaignDialog = state => getCDeskUi(state).get('showNewCampaignDialog')\nexport const getCDeskCampaignDialogEditMode = state => getCDeskUi(state).get('campaignDialogEditMode')\nexport const getCDeskNewDialogView = state => getCDeskUi(state).get('newDialogView')\nexport const getCDeskEmailEditorLoadingStatus = state => getCDeskUi(state).get('emailEditorLoading')\nexport const getCDeskContactDropdownOptionsLoading = state => getCDeskUi(state).get('contactDropdownOptionsLoading')\nexport const getCDeskCampaignDropdownOptionsLoading = state => getCDeskUi(state).get('campaignDropdownOptionsLoading')\nexport const getCDeskDistributionListDropdownOptionsLoading = state => getCDeskUi(state).get('distributionListDropdownOptionsLoading')\nexport const getCDeskContentIsLoading = state => getCDeskUi(state).get('isContentLoading')\nexport const getCDeskContentDialogEditMode = state => getCDeskUi(state).get('contentDialogEditMode')\nexport const getCDeskContentDialogCloneMode = state => getCDeskUi(state).get('contentDialogCloneMode')\nexport const getCDeskSelectedQueryType = state => getCDeskUi(state).get('selectedQueryType')\nexport const getCDesksearchBarLabel = state => getCDeskUi(state).get('searchBarLabel')\nexport const getCDeskSearchContentsRunning = state => getCDeskUi(state).get('searchContentsRunning')\nexport const getCDeskSearchCampaignsRunning = state => getCDeskUi(state).get('searchCampaignsRunning')\nexport const getCDeskContentUploadedImageUrl = state => getCDeskUi(state).get('uploadedImageUrl')\nexport const getCDeskActiveFiltersCollapsed = state => getCDeskUi(state).get('activeFiltersCollapsed')\nexport const getCDeskStatisticsRequestRunning = state => getCDeskUi(state).get('statisticsLoading')\nexport const getCDeskDuplicateError = state => getCDeskUi(state).get('duplicateError')\nexport const getCDeskShowScheduleDialog = state => getCDeskUi(state).get('showScheduleDialog')\nexport const getCDeskShowOldScheduleDialog = state => getCDeskUi(state).get('showOldScheduleDialog')\nexport const getCDeskShowPlanDialog = state => getCDeskUi(state).get('showPlanDialog')\nexport const getCDeskMediaFileUploading = state => getCDeskUi(state).get('mediaFileUploading')\nexport const getCDeskMediaFilesInitialFetch = state => getCDeskUi(state).get('mediaFilesInitialFetch')\nexport const getCDeskMediaFilesLoading = state => getCDeskUi(state).get('mediaFilesLoading')\nexport const getCDeskEditorAiMode = state => getCDeskUi(state).get('editorAiMode')\nexport const getCDeskEditorAiRequestRunning = state => getCDeskUi(state).get('editorAiRequestRunning')\nexport const getCDeskShowSaveTemplateDialog = state => getCDeskUi(state).get('showSaveTemplateDialog')\nexport const getSocialMediaLinkLoading = state => getCDeskUi(state).get('socialMediaLinkLoading')\nexport const getSocialMediaLinkBuildFailed = state => getCDeskUi(state).get('socialMediaLinkBuildFailed')\nexport const getCDeskShowTestMailDialog = state => getCDeskUi(state).get('showTestMailDialog')\nexport const getCDeskDownloadEmailEventsLoading = state => getCDeskUi(state).get('downloadEmailEventsLoading')\nexport const getCDeskLinkedInCompanySearchResults = state => getCDeskUi(state).get('linkedInCompanySearchResults')\nexport const getCDeskShowContentNotesDialog = state => getCDeskUi(state).get('showContentNotesDialog')\nexport const getCDeskContentTabView = state => getCDeskUi(state).get('contentTabView')\nexport const getCDeskContentEditTabView = state => getCDeskUi(state).get('contentEditTabView')\nexport const getCDeskContentsCampaignsTabView = state => getCDeskUi(state).get('contentsCampaignsTabView')\nexport const getCDeskLoadingKpiStatistics = state => getCDeskUi(state).get('loadingKpiStatistics')\nexport const getCDeskShowClosedCampaignDialog = state => getCDeskUi(state).get('showClosedCampaignDialog')\nexport const getCDeskAttachmentsMediaType = state => getCDeskUi(state).get('attachmentsMediaType')\nexport const getCDeskAttachmentsDeleteDialogOpen = state => getCDeskUi(state).get('attachmentsDeleteDialogOpen')\nexport const getCDeskAttachmentsDeleteMediaFileId = state => getCDeskUi(state).get('attachmentsDeleteMediaFileId')\nexport const getCDeskAttachmentsImagePreviewOpen = state => getCDeskUi(state).get('attachmentsImagePreviewDialogOpen')\nexport const getCDeskAttachmentsImagePreviewSrc = state => getCDeskUi(state).get('attachmentsImagePreviewSrc')\nexport const getCDeskRecipientBrowserOpen = state => getCDeskUi(state).get('recipientBrowserOpen')\nexport const getCDeskRecipientBrowserQuery = state => getCDeskUi(state).get('recipientBrowserQuery')\nexport const getCDeskContentIsPublishable = state => getCDeskUi(state).get('contentIsPublishable')\nexport const getCDeskTemplateConfirmDialogOpen = state => getCDeskUi(state).get('templateConfirmDialogOpen')\nexport const getCDeskTemplatePreviewDialogOpen = state => getCDeskUi(state).get('templatePreviewDialogOpen')\nexport const getCDeskTemplateDesign = state => getCDeskUi(state).get('templateDesign')\nexport const getCDeskEmailEditorForceLoadDesign = state => getCDeskUi(state).get('emailEditorForceLoadDesign')\nexport const getCDeskShowOtsWelcomeDialog = state => getCDeskUi(state).get('showOtsWelcomeDialog')\nexport const getCDeskShowOtsSuccessDialog = state => getCDeskUi(state).get('showOtsSuccessDialog')\nexport const getCDeskShowOtsErrorDialog = state => getCDeskUi(state).get('showOtsErrorDialog')\nexport const getCDeskShowRecipientsClearAllConfirmDialog = state => getCDeskUi(state).get('showRecipientsClearAllConfirmDialog')\n\n// FILTERS\nexport const getCDeskFilters = state => state.contentDesk.get('filter')\nexport const getCDeskActiveFilters = createImmutableSelector(\n getCDeskFilters,\n filters => filters.filter((value, key) => List.isList(value) && key !== 'contentFilters')\n)\nexport const getCDeskContentSearchQueries = state => getCDeskFilters(state).get('contentSearchQueries')\nexport const getCDeskCampaignSearchQueries = state => getCDeskFilters(state).get('campaignSearchQueries')\nexport const getCDeskCampaignPage = state => getCDeskFilters(state).get('campaignPage')\nexport const getCDeskCampaignLimit = state => getCDeskFilters(state).get('campaignLimit')\nexport const getCDeskCampaignSortBy = state => getCDeskFilters(state).get('campaignSortBy')\nexport const getCDeskCampaignSortOrder = state => getCDeskFilters(state).get('campaignSortOrder')\nexport const getCDeskContentPage = state => getCDeskFilters(state).get('contentPage')\nexport const getCDeskContentLimit = state => getCDeskFilters(state).get('contentLimit')\nexport const getCDeskContentSortBy = state => getCDeskFilters(state).get('contentSortBy')\nexport const getCDeskContentSortOrder = state => getCDeskFilters(state).get('contentSortOrder')\nexport const getCDeskMediaFilesPage = state => getCDeskFilters(state).get('mediaFilesPage')\nexport const getCDeskMediaFilesLimit = state => getCDeskFilters(state).get('mediaFilesLimit')\nexport const getCDeskCampaignFilters = state => getCDeskFilters(state).get('campaignFilters')\nexport const getCDeskContentFilters = state => getCDeskFilters(state).get('contentFilters')\nexport const getCDeskKpiStatisticsFilters = state => getCDeskFilters(state).get('kpiStatisticsFilters')\n\n// CALENDAR\nexport const getCDeskCalendar = state => state.contentDesk.get('calendar')\n\n// DATA\nexport const getCDeskCalendarData = state => getCDeskCalendar(state).get('data')\nexport const getCDeskCalendarContents = state => getCDeskCalendarData(state).get('contents')\nexport const getCDeskCalendarCampaigns = state => getCDeskCalendarData(state).get('campaigns')\nexport const getCDeskCalendarCampaignsContents = state => getCDeskCalendarCampaigns(state)\n .get('items')\n .reduce((acc, campaign) => acc.concat(campaign.get('ccdContents').toJS()), [])\nexport const getCDeskCalendarDate = state => getCDeskCalendarData(state).get('date')\nexport const getCDeskCalendarSelectedCampaignId = state => getCDeskCalendarData(state).get('selectedCampaignId')\nexport const getCDeskCalendarSelectedDay = state => getCDeskCalendarData(state).get('selectedDay')\nexport const getCDeskCalendarContentsSorting = state => getCDeskCalendarData(state).get('contentsSorting')\nexport const getCDeskCalendarCampaignsSorting = state => getCDeskCalendarData(state).get('campaignsSorting')\n\n// UI\nexport const getCDeskCalendarUi = state => getCDeskCalendar(state).get('ui')\nexport const getCDeskShowCalendarDialog = state => getCDeskCalendarUi(state).get('showDialog')\nexport const getCDeskCalendarLoadingCampaignIds = state => getCDeskCalendarUi(state).get('loadingCampaignIds')\nexport const getCDeskCalendarLoadingContentIds = state => getCDeskCalendarUi(state).get('loadingContentIds')\n\n// CALCULATED\n\nexport const getCDeskCalendarEvents = createImmutableSelector(\n getCDeskCalendarContents,\n getCDeskCalendarCampaigns,\n (contents, campaigns) => fromJS({\n total: contents.get('total') + campaigns.get('total'),\n items: contents.get('items').concat(\n campaigns.get('items')\n )\n })\n)\n\nexport const getCDeskSelectedCalendarEvents = createImmutableSelector(\n getCDeskCalendarContents,\n getCDeskCalendarCampaigns,\n getCDeskCalendarSelectedDay,\n getCDeskCalendarSelectedCampaignId,\n (allContents, allCampaigns, selectedDay, selectedCampaignId) => {\n let contents = List()\n let campaigns = List()\n\n if (!selectedDay) {\n return fromJS({ contents, campaigns })\n }\n\n contents = allContents.get('items')\n .filter(event => {\n const scheduledForDate = event.get('scheduledFor')\n const plannedForDate = event.get('plannedFor')\n\n let date\n\n if (!scheduledForDate && plannedForDate) {\n date = moment(plannedForDate).toDate()\n } else {\n date = moment(scheduledForDate).toDate()\n }\n\n return moment(selectedDay).isSame(moment(date), 'day')\n })\n\n if (selectedCampaignId) {\n contents = contents.filter(event => event.getIn(['ccdCampaign', 'id']) === selectedCampaignId)\n }\n\n campaigns = allCampaigns.get('items')\n .filter(event => {\n const startDate = event.get('startDate')\n const endDate = event.get('endDate')\n\n return moment(selectedDay).isBetween(moment(startDate), moment(endDate), 'day', '[]')\n })\n\n return fromJS({\n contents,\n campaigns\n })\n }\n)\n\nexport const getCDeskContentFormFilteredDistributionLists = createImmutableSelector(\n getCDeskDistributionListDropdownOptions,\n getCDeskDistributionListSearchQuery,\n (distributionLists, query) => {\n if (!query) {\n return distributionLists\n }\n\n return distributionLists.filter(dlist => dlist.get('name').toLowerCase().includes(query.toLowerCase()))\n }\n)\n\nexport const getCDeskContentFormSelectedDistributionLists = createImmutableSelector(\n getCDeskContentFormDataRecipients,\n getCDeskDistributionListDropdownOptions,\n (allRecipients, distributionLists) => distributionLists.map(dlist => {\n const recipients = allRecipients.filter(r => r.get('distributionLists').some(dl => dl.get('id') === dlist.get('id')))\n\n return (fromJS({\n id: dlist.get('id'),\n name: dlist.get('name'),\n recipients,\n contacts: dlist.get('contacts'),\n partiallySelected: dlist.get('contacts').size > recipients.size\n }))\n })\n // for now we only want to show lists with all recipients\n .filter(dlist => !dlist.get('partiallySelected'))\n .filter(dlist => !dlist.get('recipients').isEmpty())\n // sorting is a bit hacky but it slightly prefers lists with less contacts (which are more 'fully' selected)\n .sortBy(dlist => -(dlist.get('recipients').size + dlist.get('recipients').size) / dlist.get('contacts').size)\n)\n\nexport const getCDeskContentFormDataFilteredRecipients = createImmutableSelector(\n getCDeskContentFormDataRecipients,\n getCDeskRecipientBrowserQuery,\n (recipients, query) => {\n if (!query) {\n return recipients\n }\n\n return recipients.filter(recipient => {\n const contact = recipient.get('contact')\n\n const searchFields = fromJS([\n (contact.get('searchable') || ''),\n (contact.get('externalPublication') || ''),\n recipient.get('mail')\n ]).concat(recipient.get('distributionLists').map(dl => dl.get('name')))\n .map(value => value.toLowerCase()).toJS()\n\n return searchFields.some(value => value.includes(query.toLowerCase()))\n })\n }\n)\n\nexport const getCDeskCampaignNameValid = createImmutableSelector(\n getCDeskCampaigns,\n getCDeskCampaignFormData,\n (campaigns, formData) => (\n campaigns.get('allNames').every(e => e.get('name') !== formData.get('name') || e.get('id') === formData.get('id'))\n )\n)\n","export const getEnvironment = state => state.environment\nexport const getStage = state => getEnvironment(state).get('stage')\nexport const getWidth = state => getEnvironment(state).get('width')\nexport const getHeight = state => getEnvironment(state).get('height')\n","export const getUser = state => state.user\nexport const getUserId = state => getUser(state).get('id')\nexport const getSid = state => getUser(state).get('sid')\nexport const getUserFirstName = state => getUser(state).get('firstName')\nexport const getUserLastName = state => getUser(state).get('lastName')\nexport const getAccessToken = state => getUser(state).get('accessToken')\nexport const getCapabilities = state => getUser(state).get('capabilities')\nexport const getRegistrationException = state => getUser(state).get('registrationException')\nexport const getUserCreated = state => getUser(state).get('created')\nexport const getRequestRunning = state => getUser(state).get('requestRunning')\nexport const getUserLocale = state => getUser(state).get('languageShort')\nexport const getLocale = state => getUser(state).get('locale')\nexport const getIsAuthenticated = state => getUser(state).get('isAuthenticated')\nexport const getCookieOption = state => getUser(state).get('cookieOption')\nexport const getGlobalClusterDefault = state => getUser(state).get('globalClusterDefault')\nexport const isYouTubeReview = state => getUser(state).get('id') === 53042\nexport const hasCapability = (state, cap) => getCapabilities(state).get(cap)\nexport const getIsEmployee = state => getUser(state).get('isEmployee')\n\nexport const getPrefersDarkMode = state => getUser(state).get('prefersDarkMode')\nexport const getDarkMode = state => {\n const isAuthenticated = getIsAuthenticated(state)\n const darkMode = getUser(state).get('darkMode')\n\n return isAuthenticated && (darkMode === null ? getPrefersDarkMode(state) : darkMode)\n}\n","import { parse } from 'query-string-es5'\nimport { getFirstValidRoute } from 'utils/routing'\nimport { getCapabilities } from './user'\nimport { getInitialRoute } from './config'\n\nexport const getCurrentPath = state => {\n if (state.router && state.router.location && state.router.location.pathname) {\n return state.router.location.pathname.replace(/\\/$/, '')\n }\n\n return ''\n}\n\nexport const isShoppingCart = state => getCurrentPath(state).match(/shopping/) !== null\nexport const isSavedSearchesOverview = state => getCurrentPath(state).match(/saved_searches/) !== null\nexport const isMediaReviewDetail = state => getCurrentPath(state).match(/media_reviews\\/\\d+/) !== null\nexport const isProfileMonitoring = state => getCurrentPath(state).match(/profile_monitoring/) !== null\nexport const isDashboard = state => getCurrentPath(state).match(/dashboard/) !== null\nexport const isSelectedDashboard = state => getCurrentPath(state).match(/dashboard\\/.*?/) !== null\nexport const isNewsBoard = state => getCurrentPath(state).match(/\\/news(\\/|$)/) !== null\nexport const isSearchPool = state => getCurrentPath(state).match(/\\/(search_pool|media_monitoring)(\\/|$)/) !== null\nexport const isDarknetQueryManager = state => getCurrentPath(state).match(/\\/dashboard\\/query_manager(\\/|$)/) !== null\nexport const isExternalChart = state => getCurrentPath(state).match(/\\/external_chart(\\/|$)/) !== null\nexport const isSavedChart = state => getCurrentPath(state).match(/\\/charts\\/.*?\\/(embed|image).*/) !== null\nexport const getMainModule = state => getCurrentPath(state).split('/')[2]\nexport const isAdministrationSubmodule = state => getCurrentPath(state).match(/\\/administration(\\/|$)/) !== null\nexport const isContentDeskContentsAndCampaigns = state => getCurrentPath(state)\n .match(/.*\\/content_desk\\/.*contents_and_campaigns\\/?$/) !== null\nexport const isContentDeskSubmodule = state => getCurrentPath(state).match(/.*\\/content_desk\\/.*?$/) !== null\nexport const isContactManagementSubmodule = state => getCurrentPath(state).match(/\\/contact_management(\\/|$)/) !== null\nexport const isInfoboard = state => getCurrentPath(state).match(/\\/infoboard\\/.*?/) !== null\nexport const getSearchFromUrl = state => {\n if (state.router && state.router.location) {\n return state.router.location.search\n }\n\n return ''\n}\nexport const getQueryParamsFromUrl = state => {\n if (state.router && state.router.location && state.router.location.search) {\n return parse(state.router.location.search)\n }\n\n return {}\n}\n\nexport const getRedirectParam = state => getQueryParamsFromUrl(state).redirect\n\nexport const getFallbackRoute = state => {\n const redirect = getRedirectParam(state)\n\n if (redirect) {\n return redirect\n }\n\n const initialRoute = getInitialRoute(state)\n\n if (initialRoute) {\n return initialRoute\n }\n\n const capabilities = getCapabilities(state)\n\n return getFirstValidRoute(capabilities)\n}\n","export const getApp = state => state.app\nexport const getLoginMsg = state => getApp(state).get('loginMsg')\nexport const getLoginError = state => getApp(state).get('loginError')\nexport const getLoginRunning = state => getApp(state).get('loginRunning')\nexport const appIsReady = state => getApp(state).get('appIsReady')\nexport const getNewsradarId = state => getApp(state).get('activeNewsradarId')\nexport const getAppBarMessage = state => getApp(state).get('appBarMessage')\nexport const getAppMessage = state => getApp(state).get('appMessage')\nexport const getShowUndo = state => getApp(state).get('showUndo')\nexport const getAppLoading = state => getApp(state).get('loading')\nexport const getTimezone = state => getApp(state).get('timezone')\nexport const getBffVersion = state => getApp(state).get('bffVersion')\nexport const getForceReload = state => getApp(state).get('forceReload')\nexport const getViewVersion = state => getApp(state).get('viewVersion')\nexport const getGenericSuccess = state => getApp(state).get('success')\nexport const getShowAppMessage = state => getApp(state).get('showAppMessage')\nexport const getAppGeneratedFile = state => getApp(state).get('generatedFile')\nexport const getSnackbarMessageInfo = state => getApp(state).get('appSnackbarMessage')\n","export const getDevice = state => state.device // eslint-disable-line import/prefer-default-export\nexport const getBreakpoint = state => {\n const device = getDevice(state)\n\n if (device.get('gt-md')) {\n return 'lg'\n }\n\n if (device.get('md')) {\n return 'md'\n }\n\n if (device.get('sm')) {\n return 'sm'\n }\n\n return 'xs'\n}\n","import { fromJS } from 'immutable'\n\nexport const getNewsData = state => state.news.get('data')\nexport const getNewsById = (state, id) => getNewsData(state).getIn(['news', id.toString()])\nexport const getClusterNewsIdsById = (state, id) => {\n const n = getNewsById(state, id)\n\n return (n.get('clusteredNews') || fromJS([])).map(cn => cn.get('id')).unshift(n.get('id'))\n}\nexport const getNewsByIds = (state, ids) => ids.map(id => getNewsById(state, id)).filter(n => n)\n","export const getNewsExport = state => state.news.get('export')\n\n// UI\nexport const getExportOptions = state => getNewsExport(state).get('ui')\nexport const getCurrentDocumentUrl = state => getExportOptions(state).getIn(['currentDocument', 'url'])\nexport const getCurrentDocumentFilename = state => getExportOptions(state).getIn(['currentDocument', 'filename'])\nexport const getCurrentDocumentSize = state => getExportOptions(state).getIn(['currentDocument', 'size'])\nexport const getCurrentDocumentMimeType = state => getExportOptions(state).getIn(['currentDocument', 'mimeType'])\nexport const getCurrentDocumentAttachments = state => getExportOptions(state).getIn(['currentDocument', 'attachments'])\nexport const getSendingMail = state => getExportOptions(state).get('sendingMail')\nexport const getExportValidatingSpf = state => getExportOptions(state).get('validatingSpf')\nexport const getExportValidSpf = state => getExportOptions(state).get('validSpf')\nexport const getExportSelectedFormat = state => getExportOptions(state).get('selectedFormat')\nexport const getExportShowExportDialog = state => getExportOptions(state).get('showExportDialog')\n\nexport const getExportProgress = state => getNewsExport(state).get('progress')\nexport const getCurrentExportProgress = state => getExportProgress(state).get('current')\nexport const getEstimatedExportDuration = state => getExportProgress(state).get('estimatedDuration')\nexport const getElapsedExportTime = state => getExportProgress(state).get('elapsedTime')\n\n// SETTINGS\nexport const getExportSettings = state => getNewsExport(state).get('settings')\nexport const getExportSettingsStartDate = state => getExportSettings(state).get('startDate')\nexport const getExportSettingsEndDate = state => getExportSettings(state).get('endDate')\n\nexport const getExportSelectedDispatchConfig = state => getExportSettings(state).get('dispatchConfig')\nexport const getExportSelectedDispatchConfigId = state => getExportSelectedDispatchConfig(state).get('id')\nexport const getExportSelectedDispatchConfigFilename = state => getExportSelectedDispatchConfig(state).get('filename')\nexport const getExportMediaReviewHtmlConfig = state => getExportSelectedDispatchConfig(state).get('mediaReviewHtmlConfig')\nexport const getUploadedHeaderLogoFilename = state => getExportMediaReviewHtmlConfig(state).get('headerLogoFilename')\nexport const getUploadedAdvertisingBannerFilename = state => getExportMediaReviewHtmlConfig(state).get('advertisingBannerFilename')\n\nexport const getExportSelectedPdfDispatchConfig = state => getExportSettings(state).get('pdfDispatchConfig')\nexport const getExportSelectedPdfDispatchConfigId = state => getExportSelectedPdfDispatchConfig(state).get('id')\nexport const getExportSelectedPdfDispatchConfigFilename = state => getExportSelectedPdfDispatchConfig(state).get('filename')\nexport const getExportMediaReviewPdfConfig = state => getExportSelectedPdfDispatchConfig(state).get('mediaReviewPdfConfig')\n\nexport const getExportSettingsAutomaticTranslationEnabled = state => getExportSettings(state).get('automaticTranslationEnabled')\nexport const getExportSettingsContentLanguage = state => getExportSettings(state).get('contentLanguage')\nexport const getExportSettingsTemplateLanguage = state => getExportSettings(state).get('templateLanguage')\n\nexport const getExportSettingsAiSummaryEnabled = state => getExportSettings(state).get('aiSummaryEnabled')\n\n// LAST EXPORT\nexport const getLastExport = state => getNewsExport(state).get('lastExport')\n\n// DISPATCH LOG\nexport const getDispatchLog = state => getNewsExport(state).get('dispatchLog')\nexport const getDispatchLogData = state => getDispatchLog(state).get('data')\n\nexport const getDispatchLogUi = state => getDispatchLog(state).get('ui')\nexport const getDispatchLogLoading = state => getDispatchLogUi(state).get('loading')\n","import { fromJS, Map } from 'immutable'\n\nimport { sort } from 'utils/normalizr'\nimport { createImmutableSelector } from 'utils/reselect'\nimport { getNewsById } from './news/data'\nimport { getViewConfigIndexType } from './news/view_config'\n\nexport const getCustomTagsData = createImmutableSelector(\n getViewConfigIndexType,\n state => state.customTags.getIn(['data', 'entities']),\n state => state.customTags.getIn(['data', 'result']),\n (indexType, allEntities, allResults) => {\n const entities = allEntities.filter(\n e => e.get('newsType') === indexType\n )\n const entityIds = entities.map(e => e.get('id'))\n const result = allResults.filter(r => entityIds.get(`${r}`) === r)\n\n return Map({ result, entities })\n }\n)\n\nexport const getCustomTags = createImmutableSelector(\n state => getCustomTagsData(state).get('result').toList(),\n state => getCustomTagsData(state).get('entities'),\n sort\n)\n\nexport const getCustomtagsToShoppingCartLoading = state => state.customTags.getIn(['ui', 'loading'])\n\nexport const getCustomTagsAssignCustomTagsToNews = state => state.customTags.get('assignCustomTagsToNews')\nexport const getCustomTagsAssignCustomTagsToNewsSelectedNews = state => (\n getNewsById(state, getCustomTagsAssignCustomTagsToNews(state).get('selectedNewsId'))\n)\nexport const getShowAssignCustomTagsToNewsDialog = state => getCustomTagsAssignCustomTagsToNews(state).get('show')\n\nexport const getCustomTagIds = state => getCustomTagsData(state).get('result')\nexport const getCustomTagById = (state, id) => getCustomTagsData(state).getIn(['entities', id.toString()])\n\nexport const getCustomTagsUi = state => state.customTags.get('ui')\nexport const getSelectedCustomTag = state => getCustomTagsUi(state).get('selectedCustomTag')\nexport const getShowCustomTagDialog = state => getCustomTagsUi(state).get('showCustomTagDialog')\nexport const getLastUsedCustomTagIds = state => getCustomTagsUi(state).get('lastUsedCustomTagIds')\nexport const getUploadedCustomTagPhoto = state => getCustomTagsUi(state).get('uploadedPhoto')\nexport const getCustomTagsSortBy = state => getCustomTagsUi(state).get('sortBy')\nexport const getShowRemoveCustomTagDialog = state => getCustomTagsUi(state).get('showRemoveCustomTagDialog')\nexport const getShowEmptyCustomTagDialog = state => getCustomTagsUi(state).get('showEmptyCustomTagDialog')\nexport const getFilteredCustomTagGroupId = state => getCustomTagsUi(state).get('filteredGroupId')\nexport const getGroupedAssignableCustomTags = state => getCustomTagsUi(state).get('groupedAssignableCustomTags')\nexport const getCustomTagsViewType = state => getCustomTagsUi(state).get('viewType')\nexport const getCustomTagsTab = state => getCustomTagsUi(state).get('customTagsTab')\n\nexport const getCustomTagsDetailData = state => state.customTags.getIn(['detail', 'data'])\nexport const getNewsForCustomTag = state => getCustomTagsDetailData(state).get('news')\nexport const getNewsIdsForCustomTag = state => getCustomTagsDetailData(state).get('news').map(n => n.get('id'))\n\nexport const getCustomTagsDetailUi = state => state.customTags.getIn(['detail', 'ui'])\nexport const getNewsForCustomTagLoading = state => getCustomTagsDetailUi(state).get('newsLoading')\nexport const getNewsForCustomTagFrom = state => getCustomTagsDetailUi(state).get('from')\nexport const getLoadingCustomTagIds = state => getCustomTagsUi(state).get('loadingCustomTagIds')\n\n// groups\nexport const getCustomTagGroupsData = state => state.customTags.getIn(['groups', 'data'])\nexport const getGroupById = (state, id) => state.customTags.getIn(['groups', 'data']).find(g => g.get('id') === id)\n\nconst groupsSelector = state => (\n getCustomTagGroupsData(state).map(\n group => group.update(\n 'customTagsCustomTagGroups',\n cgs => cgs\n .map(c => c.set('customTag', getCustomTagById(state, c.get('customTagId'))))\n .filter(c => c.get('customTag'))\n .sortBy(c => c.getIn(['customTag', 'name']).toLowerCase())\n )\n )\n)\n\nexport const getRssCustomTags = createImmutableSelector(\n getCustomTags,\n customTags => customTags.filter(c => c.get('rssEnabled'))\n)\n\nexport const getStructuredFormatCustomTags = createImmutableSelector(\n getCustomTags,\n customTags => customTags.filter(c => c.get('rssEnabled') || c.get('xmlEnabled') || c.get('jsonEnabled'))\n)\n\nexport const getXmlCustomTags = createImmutableSelector(\n getCustomTags,\n customTags => customTags.filter(c => c.get('xmlEnabled'))\n)\n\nexport const getJsonCustomTags = createImmutableSelector(\n getCustomTags,\n customTags => customTags.filter(c => c.get('jsonEnabled'))\n)\n\nexport const getRssCustomTagGroup = createImmutableSelector(\n getRssCustomTags,\n customTags => {\n if (customTags.isEmpty()) {\n return null\n }\n\n return fromJS({\n id: 'RSS',\n name: 'RSS',\n auto: true,\n customTagsCustomTagGroups: customTags.map(customTag => fromJS({\n customTag\n }))\n })\n }\n)\n\nexport const getXmlCustomTagGroup = createImmutableSelector(\n getXmlCustomTags,\n customTags => {\n if (customTags.isEmpty()) {\n return null\n }\n\n return fromJS({\n id: 'XML',\n name: 'XML',\n auto: true,\n customTagsCustomTagGroups: customTags.map(customTag => fromJS({\n customTag\n }))\n })\n }\n)\n\nexport const getJsonCustomTagGroup = createImmutableSelector(\n getJsonCustomTags,\n customTags => {\n if (customTags.isEmpty()) {\n return null\n }\n\n return fromJS({\n id: 'JSON',\n name: 'JSON',\n auto: true,\n customTagsCustomTagGroups: customTags.map(customTag => fromJS({\n customTag\n }))\n })\n }\n)\n\nexport const getCustomTagGroups = createImmutableSelector(\n groupsSelector,\n getRssCustomTagGroup,\n getXmlCustomTagGroup,\n getJsonCustomTagGroup,\n (groups, rssGroup, xmlGroup, jsonGroup) => groups\n .sortBy(g => g.get('name').toLowerCase())\n .push(rssGroup, xmlGroup, jsonGroup)\n .filter(g => g)\n)\n\nexport const getCustomTagGroupsUi = state => state.customTags.getIn(['groups', 'ui'])\nexport const getCustomTagsShowEditGroupDialog = state => getCustomTagGroupsUi(state).get('showGroupDialog')\nexport const getCustomTagsShowDeleteGroupDialog = state => getCustomTagGroupsUi(state).get('showDeleteGroupDialog')\nexport const getSelectedCustomTagGroup = state => getCustomTagGroupsUi(state).get('selectedGroup')\nexport const getCustomTagGroupSaving = state => getCustomTagGroupsUi(state).get('saving')\nexport const getCustomTagGroupDeleting = state => getCustomTagGroupsUi(state).get('deleting')\nexport const getCustomTagGroupsHeaderId = state => getCustomTagGroupsUi(state).get('headerId')\n\nexport const getCustomTagsAssignCustomTagsToGroup = state => state.customTags.get('assignCustomTagsToGroup')\nexport const getCustomTagsAssignCustomTagsToGroupSelectedGroup = state => (\n getGroupById(state, getCustomTagsAssignCustomTagsToGroup(state).get('selectedGroupId'))\n)\nexport const getCustomTagsAssignCustomTagsToGroupSelectedGroupId = state => (\n getCustomTagsAssignCustomTagsToGroup(state).get('selectedGroupId')\n)\nexport const getShowAssignCustomTagsToGroupDialog = state => getCustomTagsAssignCustomTagsToGroup(state).get('show')\n\nexport const getFilteredCustomTags = createImmutableSelector(\n getFilteredCustomTagGroupId,\n getCustomTags,\n getCustomTagGroups,\n getRssCustomTags,\n getXmlCustomTags,\n getJsonCustomTags,\n (id, customTags, groups, rssCustomTags, xmlCustomTags, jsonCustomTags) => {\n const group = groups.find(g => g.get('id') === id)\n\n if (!group) {\n return customTags\n }\n\n if (group.get('id') === 'RSS') {\n return rssCustomTags\n }\n\n if (group.get('id') === 'XML') {\n return xmlCustomTags\n }\n\n if (group.get('id') === 'JSON') {\n return jsonCustomTags\n }\n\n const ids = group.get('customTagsCustomTagGroups').map(c => c.get('customTagId')).toSet()\n\n return customTags.filter(c => ids.has(c.get('id')))\n }\n)\n\nexport const getFilteredCustomTagGroup = createImmutableSelector(\n getFilteredCustomTagGroupId,\n getCustomTagGroups,\n (id, groups) => groups.find(g => g.get('id') === id) || fromJS({})\n)\n","import { Set, List, Map } from 'immutable'\n\nimport { NewsPageModules } from 'static/constants'\n\nimport { createImmutableSelector } from 'utils/reselect'\nimport { getNewsByIds } from './data'\nimport { getViewConfigModuleName } from './view_config'\nimport { getCustomTagById } from '../custom_tags'\n\nexport const getShoppingCart = state => state.news.get('shoppingCart')\nexport const getShoppingCartData = state => getShoppingCart(state).get('data')\nexport const getShoppingCartMainNewsIds = state => getShoppingCartData(state).get('news').map(n => n.first())\nexport const getShoppingCartFlatNewsIds = state => getShoppingCartData(state).get('news').flatten()\nexport const getShoppingCartCodesSize = state => getShoppingCartData(state).get('codes').size\nexport const getShoppingCartCode = (state, id) => getShoppingCartData(state).get('codes').find(code => code.get('id') === id)\nexport const getShoppingCartCodesRaw = state => getShoppingCartData(state).get('codes')\nexport const getShoppingCartCodes = createImmutableSelector(\n state => getShoppingCartData(state).get('codes').map(\n code => code.update('news', news => getNewsByIds(state, news).filter(n => n))\n ).filter(code => code.get('news') && !code.get('news').isEmpty()),\n codes => codes\n)\nexport const getShoppingCartNewsByCodeId = (state, codeId) => (\n getShoppingCartCodes(state).find(g => g.get('id') === codeId).get('news')\n)\nexport const getShoppingCartNews = createImmutableSelector(\n state => getNewsByIds(state, getShoppingCartMainNewsIds(state)),\n news => news.filter(n => n)\n)\nexport const getAllShoppingCartNews = createImmutableSelector(\n state => getNewsByIds(state, getShoppingCartFlatNewsIds(state)),\n news => news.filter(n => n)\n)\n\nexport const getShoppingCartNewsIds = state => getShoppingCartData(state).get('news')\nexport const getShoppingCartNewsCount = state => getShoppingCartFlatNewsIds(state).size\nexport const getShoppingCartNewsClusterCount = state => getShoppingCartData(state).get('news').size\nexport const isInShoppingCart = (state, id) => getShoppingCartMainNewsIds(state).includes(id)\nexport const getNewsClusterIdsOfNewsInShoppingCart = (state, id) => (\n getShoppingCartData(state).get('news').find(ids => ids.first() === id) || List([])\n)\n\nexport const getNewsClusterIdsOfCodeInShoppingCart = (state, code) => getShoppingCartData(state)\n .get('news')\n .filter(ids => code.get('news').map(n => n.get('id')).includes(ids.first()))\n .flatten(true)\n\nexport const getNewsClusterIdsOfAllCodesInShoppingCart = state => (\n getShoppingCartCodes(state)\n .map(code => Map({\n codeId: code.get('id'),\n newsIds: getNewsClusterIdsOfCodeInShoppingCart(state, code)\n }))\n)\n\nexport const getShoppingCartUi = state => getShoppingCart(state).get('ui')\nexport const getShoppingCartCustomTag = state => (\n getCustomTagById(state, `${getShoppingCartUi(state).get('customTagId')}`) || Map({})\n)\nexport const getShoppingCartIsStructuredExport = state => {\n const customTag = getShoppingCartCustomTag(state)\n\n return Boolean(customTag.get('rssEnabled') || customTag.get('xmlEnabled') || customTag.get('jsonEnabled'))\n}\n\nexport const getShoppingCartUngroupedOnly = state => (\n getShoppingCartIsStructuredExport(state)\n || getShoppingCartCodesSize(state) === 0\n || [NewsPageModules.NEWS_POOL].indexOf(getViewConfigModuleName(state)) > -1\n)\n\nexport const getShoppingCartTabIndex = state => (getShoppingCartUngroupedOnly(state) ? 1 : getShoppingCartUi(state).get('tabIndex'))\nexport const getShowShoppingCartCustomTagDialog = state => getShoppingCartUi(state).get('showCustomTagDialog')\nexport const getShowShoppingCartRemoveCustomTagDialog = state => getShoppingCartUi(state).get('showRemoveCustomTagDialog')\nexport const getShoppingCartPinAllProgress = state => getShoppingCartUi(state).get('pinAllProgress')\nexport const getShowSnippetsInShoppingCart = state => getShoppingCartUi(state).get('showSnippets')\nexport const getShoppingCartRunning = state => getShoppingCartUi(state).get('running')\n\nexport const getShoppingCartSelectedNews = state => getShoppingCart(state).get('selectedNews') || Set([])\nexport const getShoppingCartSelectedNewsIds = state => getShoppingCartSelectedNews(state).map(n => {\n const a = n.split('_')\n\n return parseInt(a[a.length - 1], 10)\n})\nexport const getShoppingCartSelectedNewsObjects = createImmutableSelector(\n state => getNewsByIds(state, getShoppingCartSelectedNewsIds(state)),\n news => news.filter(n => n)\n)\n\nexport const isShoppingCartNewsSelected = (state, newsId, codeId) => {\n if (codeId === undefined) {\n return getShoppingCartSelectedNews(state).includes(`${newsId}`)\n }\n\n return getShoppingCartSelectedNews(state).includes(`${codeId}_${newsId}`)\n}\nexport const isShoppingCartGroupedNewsListSelected = (state, id) => (\n getShoppingCartCode(state, id).get('news').every(n => getShoppingCartSelectedNews(state).includes(`${id}_${n}`))\n)\nexport const isAllExpanded = state => !getShoppingCartData(state).get('codes').map(c => c.get('showNews')).includes(false)\n\nexport const getShoppingCartSorting = state => getShoppingCart(state).get('sorting')\nexport const getShoppingCartSelectedNewsForSorting = state => getShoppingCartSorting(state).get('selectedNews')\n\nexport const getShowShoppingCartClusterDialog = state => getShoppingCartUi(state).get('showClusterDialog')\nexport const getAutoAddShoppingCartNews = state => getShoppingCartUi(state).get('autoAddShoppingCartNews')\nexport const getShoppingCartCluster = state => getShoppingCart(state).get('cluster')\nexport const getShoppingCartClusterNewsIds = state => getShoppingCartCluster(state).get('newsIds')\nexport const getShoppingCartClusterNews = state => getShoppingCartCluster(state).get('news')\nexport const getShoppingCartClusterLoading = state => getShoppingCartCluster(state).get('loading')\nexport const getShoppingActiveNewsIdFirst = state => getShoppingCartCluster(state).get('activeNewsIdFirst')\nexport const getShoppingActiveNewsIdSecond = state => getShoppingCartCluster(state).get('activeNewsIdSecond')\nexport const getShoppingHoveredNewsIdFirst = state => getShoppingCartCluster(state).get('hoveredNewsIdFirst')\nexport const getShoppingHoveredNewsIdSecond = state => getShoppingCartCluster(state).get('hoveredNewsIdSecond')\n","import { Set } from 'immutable'\n\nimport { createImmutableSelector } from 'utils/reselect'\nimport { getNewsByIds } from './data'\n\nconst getMediaReviewsDetail = state => state.mediaReviews.get('detail')\n\nexport const getMediaReviewsSelectedNews = state => getMediaReviewsDetail(state).get('selectedNews') || Set([])\nexport const getMediaReviewsSelectedNewsIds = state => getMediaReviewsSelectedNews(state).map(n => {\n const a = n.split('_')\n\n return parseInt(a[a.length - 1], 10)\n})\nexport const getMediaReviewsSelectedNewsObjects = createImmutableSelector(\n state => getNewsByIds(state, getMediaReviewsSelectedNewsIds(state)),\n news => news.filter(n => n)\n)\n","import { getNewsById } from './data'\n\nexport const getNewsUi = state => state.news.get('ui')\nexport const getSelectedQueryType = state => getNewsUi(state).get('selectedQueryType')\nexport const getSearchBarLabel = state => getNewsUi(state).get('searchBarLabel')\nexport const getShowAdvancedSearch = state => getNewsUi(state).get('showAdvancedSearch')\nexport const getNewsPageShowRemoveNewsDialog = state => getNewsUi(state).get('displayRemoveDialog')\nexport const getRemoveNewsPageNewsDeleting = state => getNewsUi(state).get('deletingNews')\nexport const getSelectedNewsToRemove = state => getNewsUi(state).get('selectedNewsToRemove')\nexport const getNewsRequestIsRunning = state => getNewsUi(state).get('newsRequestIsRunning')\nexport const getNewsView = state => getNewsUi(state).get('newsView')\nexport const isCurrentView = (state, ...names) => names.some(name => getNewsView(state) === name)\nexport const getShoppingCartSortBy = state => getNewsUi(state).get('sortBy')\nexport const getShoppingCartSortByUngrouped = state => getNewsUi(state).get('sortByUngrouped')\nexport const getActiveFiltersCollapsed = state => getNewsUi(state).get('activeFiltersCollapsed')\nexport const getLastSeenNewsId = state => getNewsUi(state).get('lastSeenNewsId')\nexport const getLastNewsIdClickedOnMorePublications = state => getNewsUi(state).get('lastNewsIdClickedOnMorePublications')\nexport const getSelectedNewsIdForAiAnalysis = state => getNewsUi(state).get('selectedNewsIdForAiAnalysis')\n\nexport const getShowNewsList = state => getNewsUi(state).get('showNewsList')\nexport const getShowNewsListDrawer = state => getNewsUi(state).get('showNewsListDrawer')\n\nexport const getSelectedNewsIdToShowInDrawer = state => getNewsUi(state).get('selectedNewsIdToShowInDrawer')\nexport const getSelectedNewsToShowInDrawer = state => getNewsById(state, getSelectedNewsIdToShowInDrawer(state))\nexport const getNewsToShowInDrawerSelected = state => Boolean(getSelectedNewsToShowInDrawer(state))\nexport const getNewsRequestBlocked = state => getNewsUi(state).get('newsRequestBlocked')\nexport const getYoutubePlayerActiveNewsId = state => getNewsUi(state).get('youtubePlayerActiveNewsId')\nexport const getTiktokPlayerActiveNewsId = state => getNewsUi(state).get('tiktokPlayerActiveNewsId')\nexport const getTranslateRunningRequestForNewsId = state => getNewsUi(state).get('translateRunningRequestForNewsId')\n","// DATA\nexport const getNewsEditNewsData = state => state.news.getIn(['editNews', 'data'])\nexport const getSelectedNews = state => getNewsEditNewsData(state).get('selectedNews')\nexport const getEditNewsPublications = state => getNewsEditNewsData(state).get('publications')\nexport const getEditNewsUploadedFiles = state => getNewsEditNewsData(state).get('uploadedFiles')\nexport const getEditNewsUploadedVideoFile = state => getNewsEditNewsData(state).get('uploadedVideoFile')\n\n// UI\nexport const getNewsEditNewsUi = state => state.news.getIn(['editNews', 'ui'])\nexport const getEditNewsUploadRunning = state => getNewsEditNewsUi(state).get('uploadRunning')\nexport const getEditNewsUploadVideoRunning = state => getNewsEditNewsUi(state).get('uploadVideoRunning')\nexport const getShowEditNewsDialog = state => getNewsEditNewsUi(state).get('active')\nexport const getEditNewsSaving = state => !getNewsEditNewsUi(state).get('savingNewsIds').isEmpty()\nexport const getEditNewsSavingNewsIds = state => getNewsEditNewsUi(state).get('savingNewsIds')\nexport const getEditNewsCreating = state => getNewsEditNewsUi(state).get('creatingNews')\nexport const getEditNewsLoading = state => getNewsEditNewsUi(state).get('loadingNews')\nexport const getEditNewsPublicationsLoading = state => getNewsEditNewsUi(state).get('loadingPublications')\nexport const getEditNewsExtractingText = state => getNewsEditNewsUi(state).get('extractingText')\nexport const getSummaryOptions = state => getNewsEditNewsUi(state).get('summaryOptions')\n","// DATA\nexport const getNewsShoppingNewsData = state => state.news.getIn(['shoppingNews', 'data'])\nexport const getSelectedShoppingNews = state => getNewsShoppingNewsData(state).get('selectedNews')\n\n// UI\nexport const getNewsShoppingNewsUi = state => state.news.getIn(['shoppingNews', 'ui'])\nexport const getShowShoppingDialog = state => getNewsShoppingNewsUi(state).get('active')\nexport const getShoppingNewsLoading = state => getNewsShoppingNewsUi(state).get('loadingNews')\nexport const isShoppingNewsSuccess = state => getNewsShoppingNewsUi(state).get('shoppingSuccess')\n","// DATA\nexport const getNewsAggregations = state => state.news.getIn(['aggregations', 'data'])\nexport const getNewsAggregationsTimeline = state => getNewsAggregations(state).get('timeline')\nexport const getNewsAggregationsTimelineInterval = state => getNewsAggregations(state).getIn(['timeline', 0, 'interval'])\n\n// UI\nexport const getNewsAggregationsUi = state => state.news.getIn(['aggregations', 'ui'])\nexport const getNewsAggregationsAggregationValue = state => getNewsAggregationsUi(state).get('aggregationValue')\n","import { fromJS } from 'immutable'\nimport { getDevice } from 'selectors/device'\nimport { getNewsUi } from './ui'\nimport { getNewsGroups, getNewsGroupsSortOrder } from './index'\n\nconst calculateNumberOfVisibleGroups = state => {\n const device = getDevice(state)\n\n if (device.get('gt-md')) {\n return 4\n }\n\n if (device.get('gt-sm')) {\n return 3\n }\n\n if (device.get('gt-xs')) {\n return 2\n }\n\n return 1\n}\n\nconst isVisible = (start, end, i) => (i >= start) && (i <= end)\n\nexport const getGroupStatus = state => {\n const newsGroups = getNewsGroups(state)\n const groupSortOrder = getNewsGroupsSortOrder(state)\n const currentIndex = getNewsUi(state).get('currentIndex')\n\n const single = newsGroups.size === 1\n let i = 0\n\n let existingGroups = groupSortOrder.map((id, index) => (\n fromJS({\n id,\n index,\n single,\n channelId: newsGroups.getIn([id, 'channelId']),\n name: newsGroups.getIn([id, 'name']),\n showSpinner: newsGroups.getIn([id, 'loadingMore']) || false,\n total: newsGroups.getIn([id, 'stats', 'total']),\n count: newsGroups.getIn([id, 'stats', 'count']),\n reach: newsGroups.getIn([id, 'stats', 'reach']),\n photo: newsGroups.getIn([id, 'photo']),\n interactions: newsGroups.getIn([id, 'stats', 'interactions']),\n newsList: newsGroups.getIn([id, 'news'])\n })\n )).filter(g => g.get('newsList'))\n\n // add a visibilty info to each channel\n const numberOfVisibleGroups = calculateNumberOfVisibleGroups(state)\n const start = Math.min(currentIndex, existingGroups.size - numberOfVisibleGroups)\n const end = (start + numberOfVisibleGroups) - 1\n for (i = 0; i < existingGroups.size; i += 1) {\n existingGroups = existingGroups.setIn([i, 'visible'], isVisible(start, end, i))\n }\n\n return existingGroups\n}\n","import moment from 'moment-timezone'\nimport { List, fromJS } from 'immutable'\nimport { createImmutableSelector } from 'utils/reselect'\nimport { datesToRange } from 'utils/date'\nimport decamelize from 'decamelize'\nimport camelcase from 'camelcase'\n\nimport { FilterNameMapping } from 'static/constants'\nimport { getDeletedNewsIds } from './news'\n\nexport const getNewsFilters = state => state.news.get('filter')\n\nexport const getSelectedChannels = state => getNewsFilters(state).get('channels')\nexport const getSelectedCountries = state => getNewsFilters(state).get('countries')\nexport const getSelectedCustomTagGroups = state => getNewsFilters(state).get('customTagGroups')\nexport const getSelectedCustomTags = state => getNewsFilters(state).get('customTags')\nexport const getSelectedDistributionAreas = state => getNewsFilters(state).get('distributionAreas')\nexport const getSelectedFilterGroups = state => getNewsFilters(state).get('filterGroups')\nexport const getSelectedIdentitySets = state => getNewsFilters(state).get('identitySets')\nexport const getSelectedLanguages = state => getNewsFilters(state).get('languages')\nexport const getSelectedMediaReviewCodes = state => getNewsFilters(state).get('mediaReviewCodes')\nexport const getSelectedMediaReviewTypes = state => getNewsFilters(state).get('mediaReviewTypes')\nexport const getSelectedMediaTypes = state => getNewsFilters(state).get('mediaTypes')\nexport const getSelectedNewsguardOrientations = state => getNewsFilters(state).get('newsguardOrientations')\nexport const getSelectedNewsguardRanks = state => getNewsFilters(state).get('newsguardRanks')\nexport const getSelectedOutlinkDomains = state => getNewsFilters(state).get('outlinkDomains')\nexport const getSelectedOutlinkUrls = state => getNewsFilters(state).get('outlinkUrls')\nexport const getSelectedCDCampaigns = state => getNewsFilters(state).getIn(['similarity', 'ccdCampaigns'])\nexport const getSelectedInterfaces = state => getNewsFilters(state).get('interfaces')\nexport const getSelectedSuppliers = state => getNewsFilters(state).get('suppliers')\n\nexport const getNewsFiltersAnalysis = state => getNewsFilters(state).get('analysis')\nexport const getNewsFiltersStatementCodes = state => getNewsFilters(state).get('statementCodes')\nexport const getNewsFiltersGroupedStatementCodes = state => getNewsFilters(state).get('groupedStatementCodes')\nexport const getNewsFiltersNewsQueries = state => getNewsFilters(state).get('newsQueries')\nexport const getNewsFiltersAnalysisSelectedCodeIds = createImmutableSelector(\n getNewsFiltersAnalysis,\n analysis => analysis.get('selectedCodes').map(c => c.get('id')).toSet()\n)\nexport const getNewsFiltersAnalysisSelectedCodeIdsForExport = createImmutableSelector(\n getNewsFiltersAnalysis,\n getNewsFiltersStatementCodes,\n (analysis, statementCodes) => (statementCodes.isEmpty() ? analysis.get('selectedCodes') : statementCodes).map(c => c.get('id')).toSet()\n)\nexport const getNewsFiltersAnalysisRestrictedCodeIds = createImmutableSelector(\n getNewsFiltersAnalysis,\n analysis => analysis.get('restrictedCodes').map(c => c.get('id')).toSet()\n)\nexport const getNewsFiltersAnalysisExcludedCodeIds = createImmutableSelector(\n getNewsFiltersAnalysis,\n analysis => analysis.get('excludedCodes').map(c => c.get('id')).toSet()\n)\nexport const getNewsFiltersAnalysisGroupedCodeIds = createImmutableSelector(\n getNewsFiltersAnalysis,\n analysis => analysis.get('groupedCodes').map(c => c.get('id')).toSet()\n)\nexport const getNewsFiltersAnalysisGroupedCodeIdsForExport = createImmutableSelector(\n getNewsFiltersAnalysis,\n getNewsFiltersGroupedStatementCodes,\n (analysis, statementCodes) => (statementCodes.isEmpty() ? analysis.get('groupedCodes') : statementCodes).map(c => c.get('id')).toSet()\n)\nexport const getNewsFiltersAnalysisArticleLevel = state => getNewsFiltersAnalysis(state).get('articleLevel')\nexport const getNewsFiltersAnalysisUseMediaReviewCodes = state => getNewsFiltersAnalysis(state).get('useMediaReviewCodes')\nexport const getNewsFiltersAnalysisStatementTonalities = state => getNewsFiltersAnalysis(state).get('statementTonalities')\nexport const getNewsFiltersAnalysisNewsStatementTonalities = state => getNewsFilters(state).get('newsStatementTonalities')\nexport const getNewsFiltersAnalysisStatementTonalityValues = createImmutableSelector(\n getNewsFiltersAnalysisStatementTonalities,\n getNewsFiltersAnalysisNewsStatementTonalities,\n (tonalities, newsTonalities) => (newsTonalities.isEmpty() ? tonalities : newsTonalities).map(t => t.get('value'))\n)\n\nexport const getSelectedTonalities = state => getNewsFilters(state).get('tonalities')\nexport const getSelectedBooleans = state => getNewsFilters(state).get('booleans')\nexport const getSelectedGeoBoundingBox = state => getNewsFilters(state).get('geoBoundingBox')\n\nexport const getActiveSelectedBooleans = createImmutableSelector(\n state => getNewsFilters(state).get('booleans'),\n booleans => booleans.delete('globalClusters')\n)\n\nexport const getActiveGeoFilter = createImmutableSelector(\n state => getNewsFilters(state).get('geoBoundingBox'),\n value => {\n const topLeftLat = value.getIn(['topLeft', 'lat'])\n const topLeftLon = value.getIn(['topLeft', 'lon'])\n const bottomRightLat = value.getIn(['bottomRight', 'lat'])\n const bottomRightLon = value.getIn(['bottomRight', 'lon'])\n\n if (topLeftLat && topLeftLon && bottomRightLat && bottomRightLon) {\n return value\n }\n\n return null\n }\n)\n\nexport const getGlobalClusters = state => getNewsFilters(state).getIn(['booleans', 'globalClusters'])\n\nexport const getSelectedDateFrom = state => getNewsFilters(state).get('dateFrom')\nexport const getSelectedDateTo = state => getNewsFilters(state).get('dateTo')\nexport const getSelectedDateRange = state => getNewsFilters(state).get('dateRange')\nexport const getSelectedDateType = state => getNewsFilters(state).get('dateType')\nexport const getSelectedDateInterval = state => getNewsFilters(state).get('dateInterval')\nexport const getAllowedDateIntervals = state => getNewsFilters(state).get('allowedDateIntervals')\nexport const getAllDateIntervals = state => getNewsFilters(state).get('allDateIntervals')\n\nexport const getActiveFilters = createImmutableSelector(\n getNewsFilters,\n filters => {\n const similarityFilters = filters\n .get('similarity')\n .filter(value => List.isList(value))\n .reduce((acc, value, key) => acc.set(camelcase(`similarity_${key}`), value), fromJS({}))\n\n return filters.merge(similarityFilters).filter(value => List.isList(value) && !value.isEmpty())\n }\n)\n\nconst addFilters = (data, filters, sourceKey, targetKey) => {\n const isExcludeFilter = f => (\n f.get('inverted') || (f.get('id') === -1 && f.get('excludeIds'))\n )\n const allEntities = filters.get(sourceKey) ? filters.get(sourceKey) : fromJS([])\n const entities = allEntities.filter(f => !(isExcludeFilter(f))).toJS()\n const excludedEntities = allEntities.filter(f => isExcludeFilter(f)).toJS()\n\n let result = data\n\n if (entities.length) {\n result = { ...result, [targetKey]: entities.map(el => el.id) }\n }\n\n if (excludedEntities.length) {\n result = { ...result, [`exclude_${targetKey}`]: excludedEntities.map(el => (el.excludeIds ? el.excludeIds : [el.id])).flat() }\n }\n\n return result\n}\n\nconst addQueries = (data, filters, sourceKey, targetKey) => {\n const queries = filters.get(sourceKey).filter(f => !f.get('inverted')).toJS()\n const excludedQueries = filters.get(sourceKey).filter(f => f.get('inverted')).toJS()\n\n let result = data\n\n if (queries.length) {\n result = { ...result, [targetKey]: queries.map(el => el.value) }\n }\n\n if (excludedQueries.length) {\n result = { ...result, [`exclude_${targetKey}`]: excludedQueries.map(el => el.value) }\n }\n\n return result\n}\n\nexport const getSelectedNewsFilters = (state, dateFrom, dateTo) => {\n let filters = getNewsFilters(state)\n const dateType = getSelectedDateType(state)\n\n if (dateFrom !== undefined && dateTo !== undefined) {\n filters = filters.merge({\n dateFrom,\n dateTo\n })\n }\n\n let news = {}\n\n news = addQueries(news, filters, 'newsQueries', 'queries')\n\n Object.keys(FilterNameMapping.news).filter(key => ['analysis', 'similarity'].indexOf(key) === -1).forEach(key => {\n news = addFilters(news, filters, key, FilterNameMapping.news[key])\n })\n\n const influencers = filters.get('influencers').filter(i => !i.get('inverted'))\n\n if (!influencers.isEmpty()) {\n news.identity_id = news.identity_id || []\n news.identity_id = news.identity_id.concat(influencers.flatMap(influencer => influencer.get('identityIds')).toJS())\n }\n\n const excludedInfluencers = filters.get('influencers').filter(i => i.get('inverted'))\n\n if (!excludedInfluencers.isEmpty()) {\n news.exclude_identity_id = news.exclude_identity_id || []\n news.exclude_identity_id = news.exclude_identity_id.concat(\n excludedInfluencers.flatMap(influencer => influencer.get('identityIds')).toJS()\n )\n }\n\n const deletedNewsIds = getDeletedNewsIds(state).toJS()\n\n if (deletedNewsIds.length) {\n news.exclude_ids = deletedNewsIds\n }\n\n if (filters.get('dateFrom')) {\n if (dateType === 'mediareview') {\n news[`${dateType}_date_from`] = moment(filters.get('dateFrom'))\n .startOf('day')\n .format()\n } else {\n news[`${dateType}_date_from`] = moment(filters.get('dateFrom'))\n .format()\n }\n }\n\n if (filters.get('dateTo')) {\n if (dateType === 'mediareview') {\n news[`${dateType}_date_to`] = moment(filters.get('dateTo'))\n .endOf('day')\n .format()\n } else {\n news[`${dateType}_date_to`] = moment(filters.get('dateTo'))\n .format()\n }\n }\n\n news.date_range = datesToRange(news[`${dateType}_date_from`], news[`${dateType}_date_to`])\n\n news.booleans = filters.get('booleans')\n .reduce((acc, value, key) => acc.set(decamelize(key), value), fromJS({}))\n .toJS()\n\n const geoBoundingBox = filters.get('geoBoundingBox')\n\n if (geoBoundingBox) {\n news.geo_bounding_box = {\n top_left: {\n lat: geoBoundingBox.getIn(['topLeft', 'lat']),\n lon: geoBoundingBox.getIn(['topLeft', 'lon'])\n },\n bottom_right: {\n lat: geoBoundingBox.getIn(['bottomRight', 'lat']),\n lon: geoBoundingBox.getIn(['bottomRight', 'lon'])\n }\n }\n }\n\n const analysisFilters = filters.get('analysis')\n\n if (analysisFilters) {\n news.analysis = {}\n\n Object.keys(FilterNameMapping.news.analysis).forEach(key => {\n news.analysis = addFilters(news.analysis, analysisFilters, key, FilterNameMapping.news.analysis[key])\n })\n\n news.analysis.article_level = analysisFilters.get('articleLevel')\n news.analysis.use_media_review_codes = analysisFilters.get('useMediaReviewCodes')\n }\n\n const similarityFilters = filters.get('similarity')\n\n if (similarityFilters) {\n news.similarity = {}\n\n Object.keys(FilterNameMapping.news.similarity).forEach(key => {\n news.similarity = addFilters(news.similarity, similarityFilters, key, FilterNameMapping.news.similarity[key])\n })\n }\n\n return news\n}\n\nexport const getSelectedPublicationFilters = state => {\n const filters = getNewsFilters(state)\n\n let publication = {}\n\n publication = addQueries(publication, filters, 'publicationQueries', 'queries')\n\n Object.keys(FilterNameMapping.publication).forEach(key => {\n publication = addFilters(publication, filters, key, FilterNameMapping.publication[key])\n })\n\n return publication\n}\n\nexport const getSelectedOutlinkFilters = state => {\n const filters = getNewsFilters(state)\n\n let outlink = {}\n\n Object.keys(FilterNameMapping.outlink).forEach(key => {\n outlink = addFilters(outlink, filters, key, FilterNameMapping.outlink[key])\n })\n\n return outlink\n}\n\nexport const getSelectedAuthorFilters = state => {\n if (state.news.getIn(['filter', 'authorQueries']).isEmpty()) {\n return null\n }\n\n return {\n queries: state.news.get('filter').get('authorQueries').toJS().map(el => el.value)\n }\n}\n\nexport const getSelectedPageIdentityFilters = state => {\n const filters = getNewsFilters(state)\n let result = {}\n\n Object.keys(FilterNameMapping.pageIdentity).forEach(key => {\n result = addFilters(result, filters, key, FilterNameMapping.pageIdentity[key])\n })\n\n return result\n}\n\nexport const getFilterCount = createImmutableSelector(\n getActiveFilters,\n getActiveSelectedBooleans,\n getActiveGeoFilter,\n (activeFilters, activeBooleanFilters, activeGeoFilter) => {\n const filterCount = activeFilters.valueSeq().toList().concat(activeBooleanFilters.valueSeq().filter(v => v)).flatten(true).size\n\n if (activeGeoFilter) {\n return filterCount + 1\n }\n\n return filterCount\n }\n)\n\nexport const hasFilters = state => getFilterCount(state) > 0\n","export const getSubscriptions = state => state.subscriptions\nexport const getAllSelectedTopicIds = state => getSubscriptions(state).getIn(['topics', 'selectedTopicIds'])\nexport const getSelectedEditionIds = state => getSubscriptions(state).getIn(['editions', 'selectedEditionIds'])\n","// DATA\nexport const getInfluencersData = state => state.influencers.get('data')\nexport const getInfluencers = state => getInfluencersData(state).get('influencers')\nexport const getInfluencersTotal = state => getInfluencersData(state).get('total')\n\n// UI\nexport const getInfluencersUi = state => state.influencers.get('ui')\nexport const getInfluencersFrom = state => getInfluencersUi(state).get('from')\nexport const getInfluencersSortBy = state => getInfluencersUi(state).get('sortBy')\nexport const getInfluencersRunning = state => getInfluencersUi(state).get('running')\nexport const getSelectedInfluencerIds = state => getInfluencersUi(state).get('selectedIds')\nexport const getSelectedInfluencers = state => (\n getInfluencersUi(state)\n .get('selectedIds').map(\n id => getInfluencers(state).find(p => p.get('id') === id)\n )\n .filter(p => p)\n .toList()\n)\n\n// ADD_TO_CONTACTS/DATA\nexport const getInfluencersAddToContactsData = state => state.influencers.getIn(['addToContacts', 'data'])\nexport const getAddInfluencerToContactsDialogInfluencer = state => getInfluencersAddToContactsData(state).get('influencer')\nexport const getAddInfluencerToContactsDialogContactData = state => getInfluencersAddToContactsData(state).get('contactData')\nexport const getInfluencerImportContactsForDistributionLists = state => getInfluencersAddToContactsData(state)\n .get('importContactsForDistributionLists')\nexport const getAddToContactsAlreadyImportedContacts = state => getInfluencersAddToContactsData(state).get('alreadyImportedContacts')\n\n// ADD_TO_CONTACTS/UI\nexport const getInfluencersAddToContactsUi = state => state.influencers.getIn(['addToContacts', 'ui'])\nexport const getShowAddInfluencerToContactsDialog = state => getInfluencersAddToContactsUi(state).get('show')\nexport const getAddInfluencerToContactsDialogLoading = state => getInfluencersAddToContactsUi(state).get('loading')\nexport const getInfluencerDistributionListContactDialogOpen = state => getInfluencersAddToContactsUi(state)\n .get('distributionListCreateDialogOpen')\nexport const getAddToContactsContactsLoading = state => getInfluencersAddToContactsUi(state).get('contactsLoading')\n\n// DETAILS/DATA\nexport const getInfluencersDetailsData = state => state.influencers.getIn(['details', 'data'])\nexport const getInfluencersDetailsInfluencer = state => getInfluencersDetailsData(state).get('influencer')\nexport const getInfluencersDetailsContacts = state => getInfluencersDetailsData(state).get('contacts')\nexport const getInfluencersDetailsReachChart = state => getInfluencersDetailsData(state).get('reachChart')\nexport const getInfluencersDetailsGroupedIdentities = state => getInfluencersDetailsData(state).get('groupedIdentities')\nexport const getInfluencersDetailsChannels = state => getInfluencersDetailsData(state).get('channels')\nexport const getInfluencersDetailsTotalReach = state => getInfluencersDetailsData(state).get('totalReach')\nexport const getInfluencersDetailsHasContacts = state => (\n getInfluencersDetailsContacts(state).valueSeq().find(c => !c.isEmpty()) !== undefined\n)\n\n// DETAILS/UI\nexport const getInfluencersDetailsUi = state => state.influencers.getIn(['details', 'ui'])\nexport const getShowInfluencerDetails = state => getInfluencersDetailsUi(state).get('show')\nexport const getInfluencersDetailsRunning = state => getInfluencersDetailsUi(state).get('running')\nexport const getInfluencersDetailsSelectedChannelId = state => getInfluencersDetailsUi(state).get('selectedChannelId')\n","// DATA\nexport const getPublicationsData = state => state.publications.get('data')\nexport const getPublications = state => getPublicationsData(state).get('publications')\nexport const getPublicationsTotal = state => getPublicationsData(state).get('total')\nexport const getNewPublication = state => getPublicationsData(state).get('newPublication')\n\n// UI\nexport const getPublicationsUi = state => state.publications.get('ui')\nexport const getPublicationsFrom = state => getPublicationsUi(state).get('from')\nexport const getPublicationsSortBy = state => getPublicationsUi(state).get('sortBy')\nexport const getPublicationsRunning = state => getPublicationsUi(state).get('running')\nexport const getSelectedPublicationIds = state => getPublicationsUi(state).get('selectedIds')\nexport const isPublicationFormActive = state => getPublicationsUi(state).get('isFormActive')\nexport const getSelectedPublications = state => (\n getPublicationsUi(state)\n .get('selectedIds').map(\n id => getPublications(state).find(p => p.get('id') === id)\n )\n .filter(p => p)\n .toList()\n)\n","import { fromJS, Map } from 'immutable'\n\nimport { getNewsByIds } from 'selectors'\nimport { listUniqueById } from 'utils/immutable'\nimport { createImmutableSelector } from 'utils/reselect'\n\nexport const getMediaReviews = state => state.mediaReviews\n\n// DATA\nexport const getMediaReviewsData = state => getMediaReviews(state).get('data')\nexport const getMediaReviewIds = createImmutableSelector(\n getMediaReviewsData,\n data => data.map(d => d.get('id'))\n)\nexport const getMediaReviewById = (state, id) => getMediaReviewsData(state).find(o => o.get('id') === parseInt(id, 10))\nexport const getMediaReviewNewsIds = (state, id) => getMediaReviewById(state, id).get('mediaReviewsNews').map(n => n.get('newsId'))\n\n// DETAIL/DATA\nexport const getMediaReviewDetailData = state => getMediaReviews(state).getIn(['detail', 'data'])\nexport const getFullTextById = (state, newsId) => (\n getMediaReviewDetailData(state).get('loadedFullTexts').find(t => t.get('newsId') === newsId)\n)\nexport const getMediaReviewGroupedNews = state => getMediaReviewDetailData(state).get('groupedNews')\n\nexport const getMediaReviewNews = createImmutableSelector(\n state => getMediaReviewGroupedNews(state).map(g => g.update('news', news => getNewsByIds(state, news))),\n groupedNews => groupedNews\n)\n\nexport const getMediaReviewNewsUngrouped = state => listUniqueById(getMediaReviewNews(state).flatMap(g => g.get('news')))\nexport const getMediaReviewSorting = state => (\n getMediaReviewGroupedNews(state).map(g => (fromJS({ news_ids: g.get('news'), code_id: g.getIn(['code', 'id']) })))\n)\nexport const getMediaReviewCodes = createImmutableSelector(\n getMediaReviewNews,\n groupedNews => groupedNews.map(g => g.get('code').set('news', g.get('news')))\n)\n\nexport const getMediaReviewCodeIds = state => getMediaReviewCodes(state).map(c => c.get('id'))\nexport const getMediaReviewNewsByCodeId = (state, codeId) => (\n getMediaReviewNews(state).find(g => g.getIn(['code', 'id']) === codeId).get('news')\n)\nexport const getSelectedMediaReviewNewsIds = state => (\n getMediaReviewGroupedNews(state)\n .map(g => g.get('news'))\n .flatten()\n .toSet()\n)\nexport const getSelectedMediaReviewNewsIdsForExport = createImmutableSelector(\n getMediaReviewNewsUngrouped,\n news => (\n news.map(n => n.get('clusteredNews').map(cn => cn.get('id')).unshift(n.get('id')))\n )\n)\nexport const getMediaReviewTotalNewsCount = state => getMediaReviewDetailData(state).get('totalCount')\nexport const getMediaReviewNewsCount = state => getMediaReviewDetailData(state).get('count')\nexport const getMediaReviewSummary = state => getMediaReviewDetailData(state).get('summary')\nexport const getMediaReviewReactions = state => getMediaReviewDetailData(state).get('reactions')\n\n// DETAIL/UI\nexport const getMediaReviewDetailUi = state => getMediaReviews(state).getIn(['detail', 'ui'])\nexport const getSelectedMediaReviewNewsItem = state => getMediaReviewDetailUi(state).get('selectedMediaReviewNewsItem')\nexport const getSelectedMediaReviewId = state => getMediaReviewDetailUi(state).get('selectedMediaReviewId')\nexport const getSelectedMediaReview = state => getMediaReviewById(state, getSelectedMediaReviewId(state))\nexport const getShowRemoveNewsDialog = state => getMediaReviewDetailUi(state).get('showRemoveNewsDialog')\nexport const getMediaReviewDetailRunning = state => getMediaReviewDetailUi(state).get('running')\nexport const getRemoveMediaReviewNewsDeleting = state => getMediaReviewDetailUi(state).get('deletingNews')\nexport const isExpanded = (state, topicId) => !getMediaReviewDetailUi(state).get('collapsedTopics').has(topicId)\nexport const getExpandedNewsIds = state => getMediaReviewDetailUi(state).get('expandedNews')\nexport const isExpandedMediaReviewNewsAll = (state, newsId) => getMediaReviewDetailUi(state).get('expandedNews').has(newsId)\nexport const getMediaReviewDetialShowDiffWarning = state => getMediaReviewDetailUi(state).get('showDiffWarning')\nexport const isExpandedMediaReviewNewsByCode = (state, newsId, codeId) => getMediaReviewDetailUi(state).get('expandedNews')\n .some(expanded => (\n expanded.get('newsId') === newsId && expanded.get('codeId') === codeId\n ))\nexport const isSummaryExpandedMediaReviewNewsByCode = (state, newsId, codeId) => getMediaReviewDetailUi(state).get('expandedSummaries')\n .some(expanded => (\n expanded.get('newsId') === newsId && expanded.get('codeId') === codeId\n ))\nexport const isMediaReviewSelectedNewsForSorting = (state, newsId, codeId) => (\n getMediaReviewDetailUi(state).get('selectedNewsForSorting').some(selected => (\n selected.get('newsId') === newsId && selected.get('codeId') === codeId\n ))\n)\nexport const getMediaReviewSelectedNewsForSorting = state => getMediaReviewDetailUi(state).get('selectedNewsForSorting')\nexport const getMediaReviewCheckMediaReviewReactionsBlocked = state => getMediaReviewDetailUi(state).get('checkMediaReviewReactionsBlocked')\n\n// SELECTED\nexport const getMediaReviewSelectedNews = state => getMediaReviews(state).getIn(['detail', 'selectedNews'])\nexport const getMediaReviewSelectedNewsIds = state => getMediaReviewSelectedNews(state).map(n => {\n const a = n.split('_')\n\n return parseInt(a[a.length - 1], 10)\n})\n\nexport const isMediaReviewNewsSelected = (state, newsId, codeId) => getMediaReviewSelectedNews(state).includes(`${codeId}_${newsId}`)\n\nexport const isMediaReviewGroupedNewsListSelected = (state, id) => (\n getMediaReviewNewsByCodeId(state, id).every(n => getMediaReviewSelectedNews(state).includes(`${id}_${n.get('id')}`))\n)\n\nexport const getNewsClusterIdsOfAllCodesInMediaReview = state => (\n getMediaReviewGroupedNews(state)\n .map(group => Map({\n codeId: group.getIn(['code', 'id']),\n newsIds: getMediaReviewNewsByCodeId(state, group.getIn(['code', 'id']))\n .map(n => n.get('clusteredNews').map(c => c.get('id')).unshift(n.get('id')))\n .flatten(true)\n }))\n)\n\nexport const getMediaReviewDetailSnapshot = state => getMediaReviews(state).getIn(['detail', 'snapshot'])\n\n// FILTER\nexport const getMediaReviewsFilter = state => getMediaReviews(state).get('filter')\nexport const getMediaReviewsFilterRequestRunning = state => getMediaReviewsFilter(state).get('filterRequestRunning')\n\n// PIN\nexport const getAutoAddMediaReviewsNews = state => getMediaReviewDetailUi(state).get('autoAddMediaReviewsNews')\nexport const getShowMediaReviewsRemoveCustomTagDialog = state => getMediaReviewDetailUi(state).get('showRemoveCustomTagDialog')\nexport const getShowMediaReviewsCustomTagDialog = state => getMediaReviewDetailUi(state).get('showCustomTagDialog')\n","export const getI18n = state => state.i18n.translations // eslint-disable-line import/prefer-default-export\n","import { sort } from 'utils/normalizr'\nimport { createImmutableSelector } from 'utils/reselect'\n\n// DATA\nexport const getIdentitySetsData = state => state.identitySets.get('data')\n\nexport const getIdentitySets = createImmutableSelector(\n state => getIdentitySetsData(state).get('result').toList(),\n state => getIdentitySetsData(state).get('entities'),\n sort\n)\n\n// SELECTED_IDENTITY_SET\nexport const getSelectedIdentitySet = state => state.identitySets.get('selectedIdentitySet')\n\n// SELECTED_IDENTITY\nexport const getIdentitySetsSelectedIdentity = state => state.identitySets.get('selectedIdentity')\n\n// UI\nexport const getIdentitySetsUi = state => state.identitySets.get('ui')\nexport const getShowAddIdentityToIdentitySetDialog = state => getIdentitySetsUi(state).get('showAddIdentityToIdentitySetDialog')\nexport const getShowIdentitySetDialog = state => getIdentitySetsUi(state).get('showIdentitySetDialog')\nexport const getShowDeleteIdentitySetDialog = state => getIdentitySetsUi(state).get('showDeleteIdentitySetDialog')\nexport const getIdentitySetsUploadedPhoto = state => getIdentitySetsUi(state).get('uploadedPhoto')\nexport const getIdentitySetIsLoading = (state, id) => getIdentitySetsUi(state).get('loadingIdentitySetIds').has(id)\nexport const getIdentitySetSaving = state => getIdentitySetsUi(state).get('savingIdentitySet')\nexport const getIdentitySetIsAdded = (state, identitySetId) => (\n getIdentitySetsSelectedIdentity(state).get('identitySetIds').some(id => id === identitySetId)\n)\n","import { fromJS } from 'immutable'\n\nimport { getNewsByIds } from 'selectors/news/data'\nimport camelcase from 'camelcase'\nimport { createImmutableSelector } from 'utils/reselect'\nimport { listUniqueById } from 'utils/immutable'\nimport { getIdentitySets } from './identity_sets'\nimport { getI18n } from './i18n'\n\nexport const getPageIdentitiesUi = state => state.pageIdentities.get('ui')\nexport const getPageIdentitiesSortBy = state => getPageIdentitiesUi(state).get('sortBy')\n\nconst sortPageIdentity = (p, sortBy) => {\n if (sortBy === 'name') {\n return p.getIn(['pageIdentity', sortBy]).toLowerCase()\n }\n\n if (sortBy === 'channel') {\n return p.getIn(['pageIdentity', 'channel_id'])\n }\n\n return -p.getIn(['pageIdentity', 'stats', sortBy])\n}\n\nconst sortedPageIdentities = (pageIdentities, identitySets, sortBy) => pageIdentities\n .map(pageIdentity => pageIdentity.setIn(\n ['pageIdentity', 'identitySets'],\n pageIdentity.getIn(['pageIdentity', 'identitySetIds'])\n .map(id => identitySets.find(set => set.get('id') === id))\n .filter(set => set)\n ))\n .sortBy(p => sortPageIdentity(p, sortBy))\n\nconst sortedPageIdentitiesSelector = selector => (\n createImmutableSelector(selector, getIdentitySets, getPageIdentitiesSortBy, sortedPageIdentities)\n)\n\n// DATA\nexport const getPageIdentitiesData = state => state.pageIdentities.get('data')\nconst pageIdenititiesSelector = state => getPageIdentitiesData(state).get('pageIdentities')\nconst inactivePageIdenititiesSelector = state => getPageIdentitiesData(state).get('inactivePageIdentities')\nconst allPageIdentitiesSelector = state => pageIdenititiesSelector(state).concat(inactivePageIdenititiesSelector(state))\n\nexport const getPageIdentities = sortedPageIdentitiesSelector(pageIdenititiesSelector)\nexport const getInactivePageIdentities = sortedPageIdentitiesSelector(inactivePageIdenititiesSelector)\nexport const getAllPageIdentities = sortedPageIdentitiesSelector(allPageIdentitiesSelector)\n\nexport const getPageIdentitiesTotal = state => getPageIdentitiesData(state).get('total')\nexport const getGroupedPageIdentities = createImmutableSelector(\n getAllPageIdentities,\n getPageIdentitiesSortBy,\n getI18n,\n (pageIdentities, sortBy, i18n) => {\n const allSets = listUniqueById(pageIdentities.map(p => p.getIn(['pageIdentity', 'identitySets'])).flatten(true))\n const allSetIds = allSets.map(a => a.get('id'))\n\n const ungroupedPageIdentities = (\n pageIdentities.filter(p => !p.getIn(['pageIdentity', 'identitySetIds']).some(i => allSetIds.includes(i)))\n )\n\n let result = allSets.map(\n set => set.set(\n 'pageIdentities',\n set.get('identitySetsIdentities')\n .map(isi => pageIdentities.find(p => p.getIn(['pageIdentity', 'id']) === isi.get('identityId')))\n .filter(p => p)\n .sortBy(p => sortPageIdentity(p, sortBy))\n .map(p => p.updateIn(['pageIdentity', 'identitySets'], sets => sets.map(s => s.delete('identitySetsIdentities'))))\n )\n .delete('identitySetsIdentities')\n )\n\n if (!ungroupedPageIdentities.isEmpty()) {\n result = result.push(fromJS({\n id: null,\n name: i18n.get('ungrouped'),\n pageIdentities: ungroupedPageIdentities\n }))\n }\n\n return result\n .map(set => set.set('stats', set.get('pageIdentities').map(p => p.getIn(['pageIdentity', 'stats'])).reduce(\n (acc, stats) => (\n acc\n .update('buzz', buzz => buzz + stats.get('buzz'))\n .update('avgReach', avgReach => avgReach + stats.get('avgReach'))\n .update('interactions', interactions => interactions + stats.get('interactions'))\n .update('interactionRate', interactionRate => interactionRate + stats.get('interactionRate'))\n ),\n fromJS({\n buzz: 0,\n avgReach: 0,\n interactions: 0,\n interactionRate: 0.0\n })\n )))\n .sortBy(set => {\n if (set.get('id') === null) {\n return 'zzzzzzzzzzzzzzzzzzzzzzz'\n }\n\n if (sortBy === 'name') {\n return set.get(sortBy).toLowerCase()\n }\n\n return -set.getIn(['stats', sortBy])\n })\n }\n)\n\n// UI\nexport const getPageIdentitiesShowInactive = state => getPageIdentitiesUi(state).get('showInactive')\nexport const getPageIdentitiesGrouped = state => getPageIdentitiesUi(state).get('grouped')\nexport const getPageIdentitiesRunning = state => getPageIdentitiesUi(state).get('running')\nexport const getSelectedPageIdentityIds = state => getPageIdentitiesUi(state).get('selectedIds')\nexport const getSelectedPageIdentities = state => (\n getPageIdentitiesUi(state)\n .get('selectedIds').map(\n id => getAllPageIdentities(state)\n .find(p => p.getIn(['pageIdentity', 'id']) === id)\n )\n .filter(p => p)\n .toList()\n)\nexport const getShowChartSubMenu = state => getPageIdentitiesUi(state).get('showChartSubMenu')\n\n// STATISTICS/UI\nexport const getPageIdentitiesStatisticsUi = state => state.pageIdentities.getIn(['statistics', 'ui'])\nexport const getPageIdentitiesStatisticsSelectedInteractionCharts = state => (\n getPageIdentitiesStatisticsUi(state).get('selectedInteractionCharts')\n)\n\n// STATISTICS/DATA\nexport const getPageIdentitiesStatisticsData = state => state.pageIdentities.getIn(['statistics', 'data'])\nexport const getPageIdentitiesStatisticsBuzzChart = state => getPageIdentitiesStatisticsData(state).get(0)\nexport const getPageIdentitiesStatisticsInteractionRatesChart = state => getPageIdentitiesStatisticsData(state).get(1)\nexport const getPageIdentitiesStatisticsFollowersChart = state => getPageIdentitiesStatisticsData(state).get(3)\nexport const getPageIdentitiesStatisticsInteractionsChart = state => {\n const selectedInteractionCharts = getPageIdentitiesStatisticsSelectedInteractionCharts(state).toList().sort()\n const label = selectedInteractionCharts.join(' / ').toUpperCase()\n const thirdLevel = camelcase(selectedInteractionCharts.join('_'))\n\n return getPageIdentitiesStatisticsData(state).get(2).merge({ label, thirdLevel })\n}\n\nexport const getPageIdentitiesStatisticsEmojisChart = state => getPageIdentitiesStatisticsData(state).get(4)\nexport const getPageIdentitiesStatisticsHashtagsChart = state => getPageIdentitiesStatisticsData(state).get(5)\nexport const getPageIdentitiesStatisticsMentionsChart = state => getPageIdentitiesStatisticsData(state).get(6)\n\nexport const getPageIdentitiesStatisticsTimelineInterval = state => (\n getPageIdentitiesStatisticsData(state).getIn(['0', 'data', 0, 'interval'])\n)\n\n// POSTS/DATA\nexport const getPageIdentitiesPostsData = state => state.pageIdentities.getIn(['posts', 'data'])\nexport const getBestPageIdentityPosts = state => getNewsByIds(state, getPageIdentitiesPostsData(state).get('best'))\nexport const getWorstPageIdentityPosts = state => getNewsByIds(state, getPageIdentitiesPostsData(state).get('worst'))\nexport const getBestPageIdentityPostIds = state => getPageIdentitiesPostsData(state).get('best')\nexport const getWorstPageIdentityPostIds = state => getPageIdentitiesPostsData(state).get('worst')\n","import { fromJS } from 'immutable'\nimport { IndexTypes, NewsPageModules } from 'static/constants'\nimport { createImmutableSelector } from 'utils/reselect'\nimport { getViewConfigIndexType, getViewConfigModuleName } from './news/view_config'\nimport { isMediaReviewDetail as getIsMediaReviewModule } from './routing'\nimport {\n getNewsPoolAllowedChannels,\n getNewsAllowedCodeIds,\n getNewsAllowedChannelIds,\n getNewsAllowedCountryIds,\n getEvaluationSteps,\n getStatementBasedCoding,\n getStatementEvaluationSteps\n} from './config'\n\nconst createFilterByModuleNameSelector = selector => createImmutableSelector(\n selector,\n getViewConfigModuleName,\n getIsMediaReviewModule, // this is not nice but we need to know if we are in media review detail\n (items, moduleName, isMediaReviewDetail) => {\n if ([NewsPageModules.NEWS, NewsPageModules.ANALYSIS].indexOf(moduleName) !== -1 || isMediaReviewDetail) {\n return items.filter(e => e.get('available'))\n }\n\n if (moduleName === NewsPageModules.PROFILE_MONITORING) {\n return items.filter(e => e.get('availableInProfileMonitoring'))\n }\n\n return items\n }\n)\n\nexport const getStatics = state => state.statics\nexport const getStaticMediaReviewCodes = createFilterByModuleNameSelector(state => getStatics(state).getIn(['sorted', 'mediaReviewCodes']))\nexport const getAllStaticMediaReviewCodes = state => getStatics(state).getIn(['sorted', 'mediaReviewCodes'])\nexport const getStaticMediaReviewTopNewsCodes = state => getStaticMediaReviewCodes(state).filter(c => c.get('topnews'))\nexport const getStaticCountries = createFilterByModuleNameSelector(state => getStatics(state).getIn(['sorted', 'countries']))\nexport const getStaticStates = state => getStatics(state).getIn(['sorted', 'states'])\nexport const getAllStaticCountries = createImmutableSelector(state => getStatics(state).getIn(['sorted', 'countries']), c => c)\nexport const getStaticLanguages = createFilterByModuleNameSelector(state => getStatics(state).getIn(['sorted', 'languages']))\nexport const getAllStaticLanguages = state => getStatics(state).getIn(['sorted', 'languages'])\nexport const getStaticMediaTypes = createFilterByModuleNameSelector(state => getStatics(state).getIn(['sorted', 'mediaTypes']))\nexport const getAllStaticMediaTypes = state => getStatics(state).getIn(['sorted', 'mediaTypes'])\nexport const getAllStaticMediaTopics = state => getStatics(state).getIn(['sorted', 'mediaTopics'])\nexport const getStaticDarkowlLanguages = createFilterByModuleNameSelector(state => getStatics(state).getIn(['sorted', 'darkowlLanguages']))\nexport const getAllStaticDarkowlLanguages = state => getStatics(state).getIn(['sorted', 'darkowlLanguages'])\nexport const getThemaxCountries = createImmutableSelector(state => getStatics(state).getIn(['result', 'themaxCountryIds']),\n getAllStaticCountries,\n (ids, countries) => (\n countries.filter(c => ids.includes(c.get('id')))\n ))\n\nexport const getStaticChannels = createImmutableSelector(\n state => getStatics(state).getIn(['sorted', 'channels']),\n getViewConfigIndexType,\n getViewConfigModuleName,\n getNewsPoolAllowedChannels,\n createFilterByModuleNameSelector(state => getStatics(state).getIn(['sorted', 'channels'])),\n (channels, indexType, moduleName, allowedChannels, filteredChannels) => {\n if (indexType === IndexTypes.DEFAULT) {\n return filteredChannels\n }\n\n const allowedChannelIds = allowedChannels.map(c => c.get('id'))\n\n return (\n (channels || fromJS([]))\n .filter(\n c => c.get('newsPoolEnabled') && (allowedChannelIds.isEmpty() || allowedChannelIds.includes(c.get('id')))\n )\n )\n }\n)\nexport const getAllStaticChannels = state => getStatics(state).getIn(['sorted', 'channels'])\n\nexport const getStaticFilterGroups = state => getStatics(state).getIn(['sorted', 'filterGroups'])\nexport const getStaticDistributionAreas = state => getStatics(state).getIn(['sorted', 'distributionAreas'])\nexport const getStaticMediaReviewTypes = state => getStatics(state).getIn(['sorted', 'mediaReviewTypes'])\nexport const getStaticMediaReviewTypesForSubscription = state => getStaticMediaReviewTypes(state).filter(mrt => mrt.get('subscription'))\nexport const getStaticMediaReviewTypesForFiltering = state => getStaticMediaReviewTypes(state).filter(mrt => mrt.get('visibleForNrx'))\nexport const getStaticMediaSources = state => getStatics(state).getIn(['sorted', 'mediaSources'])\nexport const getStaticDispatchConfigs = state => getStatics(state).getIn(['sorted', 'htmlDispatchConfigs'])\nexport const getStaticPdfDispatchConfigs = state => getStatics(state).getIn(['sorted', 'pdfDispatchConfigs'])\nexport const getStaticGoogleAnalyticsWebsites = state => getStatics(state).getIn(['sorted', 'googleAnalyticsWebsites'])\nexport const getStaticFacebookAnalyticsPages = state => getStatics(state).getIn(['sorted', 'facebookAnalyticsPages'])\nexport const getStaticFacebookAnalyticsPageById = (state, id) => (\n getStatics(state).getIn(['entities', 'facebookAnalyticsPages', id.toString()])\n)\nexport const getStaticLinkedInAnalyticsOrganizations = state => getStatics(state).getIn(['sorted', 'linkedInAnalyticsOrganizations'])\nexport const getStaticAnalysisCodes = state => getStatics(state).getIn(['sorted', 'analysisCodes'])\nexport const getStaticAnalysisCodesMap = state => getStatics(state).getIn(['entities', 'analysisCodes'])\nexport const getStaticAnalysisCodesNodeIds = state => getStatics(state).getIn(['entities', 'analysisCodes']).keySeq().toList()\nexport const getStaticAnalysisCodeById = (state, id) => getStaticAnalysisCodesMap(state).get(id.toString())\nexport const getStaticAnalysisCodesByIds = (state, ids) => ids.map(id => getStaticAnalysisCodeById(state, id)).filter(c => c).toList()\nexport const getStaticTonalities = state => getStatics(state).getIn(['sorted', 'tonalities'])\nexport const getStaticCdContentTypes = state => getStatics(state).getIn(['sorted', 'ccdContentTypes'])\nexport const getStaticSsoLinks = state => getStatics(state).getIn(['sorted', 'ssoLinks'])\nexport const getStaticNewsguardRanks = state => getStatics(state).getIn(['sorted', 'newsguardRanks'])\nexport const getStaticNewsguardOrientations = state => getStatics(state).getIn(['sorted', 'newsguardOrientations'])\nexport const getStaticInterfaces = state => getStatics(state).getIn(['sorted', 'interfaces'])\nexport const getStaticSuppliers = state => getStatics(state).getIn(['sorted', 'suppliers'])\nexport const getStaticReactionTypes = state => getStatics(state).getIn(['sorted', 'reactionTypes'])\nexport const getStaticTonalitiesByEvaluationSteps = createImmutableSelector(\n getStaticTonalities,\n getEvaluationSteps,\n getStatementEvaluationSteps,\n getStatementBasedCoding,\n (tonalities, evaluationSteps, statementEvaluationSteps, statementBasedCoding) => (\n tonalities\n .sortBy(t => Math.abs(t.get('value')))\n .slice(0, statementBasedCoding ? statementEvaluationSteps : evaluationSteps)\n .concat(tonalities.filter(t => t.get('id') === 'unknown'))\n .sortBy(t => t.get('value'))\n )\n)\n\nexport const getStaticExternalAccounts = createImmutableSelector(\n state => getStatics(state).getIn(['sorted', 'externalAccounts']),\n externalAccounts => externalAccounts.groupBy(a => a.get('grootExternalAccountTypeId'))\n)\n\nexport const getStaticMediaReviewCodeIds = state => getStatics(state).getIn(['result', 'mediaReviewCodes'])\nexport const getStaticMediaReviewTopNewsCodeIds = state => getStaticMediaReviewTopNewsCodes(state).map(c => c.get('id'))\nexport const getStaticCountryIds = state => getStatics(state).getIn(['result', 'countries'])\nexport const getStaticLanguagesIds = state => getStatics(state).getIn(['result', 'languages'])\nexport const getStaticMediaTypeIds = state => getStatics(state).getIn(['result', 'mediaTypes'])\nexport const getStaticChannelIds = state => getStatics(state).getIn(['result', 'channels'])\nexport const getStaticFilterGroupIds = state => getStatics(state).getIn(['result', 'filterGroups'])\nexport const getStaticMediaReviewTypeIds = state => getStatics(state).getIn(['result', 'mediaReviewTypes'])\nexport const getStaticDispatchConfigIds = state => getStatics(state).getIn(['result', 'htmlDispatchConfigs'])\nexport const getStaticAnalysisCodeIds = state => getStatics(state).getIn(['result', 'analysisCodes'])\n\nexport const getStaticDispatchConfigById = (state, id) => (\n getStatics(state).getIn(['entities', 'htmlDispatchConfigs', (id || '').toString()], fromJS({}))\n)\n\nexport const getCreatableChannels = state => getStaticChannels(state).filter(c => c.get('creatable')).sortBy(c => c.get('id'))\nexport const getCreatableMediaSources = state => (\n getStatics(state).getIn(['sorted', 'mediaSources']).filter(c => c.get('creatable')).sortBy(c => c.get('id'))\n)\nexport const getAllCreatableChannels = state => (\n getStatics(state).getIn(['sorted', 'channels']).filter(c => c.get('creatable')).sortBy(c => c.get('id'))\n)\n\nexport const getRestrictedStaticMediaReviewCodes = createImmutableSelector(\n getAllStaticMediaReviewCodes,\n getNewsAllowedCodeIds,\n (all, allowed) => all.filter(c => allowed.includes(c.get('id')))\n)\n\nexport const getAllowedStaticMediaReviewCodes = createImmutableSelector(\n getAllStaticMediaReviewCodes,\n getNewsAllowedCodeIds,\n (all, allowed) => {\n if (allowed.isEmpty()) {\n return all\n }\n\n return all.filter(c => allowed.includes(c.get('id')))\n }\n)\nexport const getRestrictedStaticChannels = createImmutableSelector(\n getAllStaticChannels,\n getNewsAllowedChannelIds,\n (all, allowed) => all.filter(c => allowed.includes(c.get('id')))\n)\nexport const getRestrictedStaticCountries = createImmutableSelector(\n getAllStaticCountries,\n getNewsAllowedCountryIds,\n (all, allowed) => all.filter(c => allowed.includes(c.get('id')))\n)\n\nexport const getStaticPaidFeatures = state => getStatics(state).getIn(['sorted', 'paidFeatures'])\nexport const getStaticPaidFeatureById = (state, id) => getStatics(state).getIn(['entities', 'paidFeatures', id.toString()])\n\n","import { createImmutableSelector } from 'utils/reselect'\nimport { List } from 'immutable'\n\n// DATA\nexport const getDarknetData = state => state.darknet.get('data')\n\nexport const getDarknetResults = state => getDarknetData(state).get('hits')\nexport const getDarknetCharts = state => getDarknetData(state)\n .getIn(['charts', 'search'])\n .concat(getDarknetData(state).getIn(['charts', 'scores']))\nexport const getDarknetStats = state => getDarknetData(state).get('stats')\nexport const getDarknetScores = state => getDarknetData(state).get('scores')\nexport const getDarknetTotalCount = state => getDarknetStats(state).get('total')\n\n// UI\nexport const getDarknetUi = state => state.darknet.get('ui')\nexport const getDarknetRequestRunning = state => getDarknetUi(state).get('requestRunning')\nexport const getDarknetSortBy = state => getDarknetUi(state).get('sortBy')\nexport const getDarknetSortDirection = state => getDarknetUi(state).get('sortDirection')\nexport const getDarknetView = state => getDarknetUi(state).get('view')\nexport const getDarknetShowAdvancedSearch = state => getDarknetUi(state).get('showAdvancedSearch')\nexport const getActiveDarknetFiltersCollapsed = state => getDarknetUi(state).get('activeFiltersCollapsed')\nexport const getDarknetEditForm = state => getDarknetUi(state).get('editForm')\nexport const getDarknetLoadingMore = state => getDarknetUi(state).get('loadingMore')\n\nexport const getScoreQueryDialogOpen = state => getDarknetUi(state).get('scoreQueryDialogOpen')\nexport const getSearchQueryDialogOpen = state => getDarknetUi(state).get('searchQueryDialogOpen')\n\n// FILTER\nexport const getDarknetSearchFilters = state => state.darknet.get('filter')\n\nexport const getActiveDarknetFilters = createImmutableSelector(\n getDarknetSearchFilters,\n filters => filters.filter(value => List.isList(value))\n)\n\nexport const getActiveDarknetNumberFilters = createImmutableSelector(\n getDarknetSearchFilters,\n filters => filters.filter(value => typeof (value) === 'number')\n)\n\n// SCORE_QUERY_FORM\n\nexport const getDarknetScoreQueryForm = state => state.darknet.get('scoreQueryForm')\nexport const getDarknetScoreQueryFormData = state => getDarknetScoreQueryForm(state).get('formData')\n\n// SEARCH_QUERY_FORM\n\nexport const getDarknetSearchQueryForm = state => state.darknet.get('searchQueryForm')\nexport const getDarknetSearchQueryFormData = state => getDarknetSearchQueryForm(state).get('formData')\nexport const getDarknetTestSearchQueryRunning = state => getDarknetSearchQueryForm(state).get('testSearchQueryRunning')\nexport const getDarknetTestSearchQueryDisabled = state => getDarknetSearchQueryForm(state).get('testSearchQueryDisabled')\nexport const getDarknetSearchQueryFormTestResult = state => getDarknetSearchQueryForm(state).get('testResult')\n","import isURL from 'validator/lib/isURL'\nimport { fromJS } from 'immutable'\n\nimport {\n isPressrelationsNewsChart,\n isGoogleAnalyticsChart,\n isMozChart,\n isYoutubeAnalyticsChart,\n isLinkedInAnalyticsChart,\n isFacebookAnalyticsChart,\n isTwitterAnalyticsChart,\n isImageChart,\n isTextChart,\n isExternalWidgetChart,\n isSocialMediaAnalyticsFeed\n} from 'utils/chart'\n\nimport { createImmutableSelector } from 'utils/reselect'\nimport { fillDashboard } from 'utils/charts'\nimport { NewsPageModules, GroupingTypes, DateTypes, StepTypes, SortingOptions } from 'static/constants'\nimport { getAllSavedSearches } from './saved_searches'\nimport { getDashboardAllowedDashboardsCount } from './config'\nimport { getUser } from './user'\n\n// DATA\nexport const getDashboardsData = state => state.dashboard.get('data')\nexport const getDashboards = state => getDashboardsData(state).get('dashboards')\nexport const getDashboardAllowedDateRanges = state => getDashboardsData(state).get('allowedDateRanges')\nexport const getDashboardById = (state, id) => getDashboards(state).find(d => d.get('id') === id)\n\nexport const getDashboardLimitReached = state => getDashboards(state).size >= getDashboardAllowedDashboardsCount(state)\n\n// UI\nexport const getDashboardsUI = state => state.dashboard.get('ui')\nexport const getDashboardIsEditing = state => getDashboardsUI(state).get('editing')\nexport const getDashboardAutoRefresh = state => getDashboardsUI(state).get('autoRefresh')\nexport const getDashboardRowHeight = state => getDashboardsUI(state).get('rowHeight')\nexport const getDashboardMaxRowCount = state => getDashboardsUI(state).get('maxRowCount')\nexport const getDashboardGridHeight = state => getDashboardsUI(state).get('gridHeight')\nexport const getDashboardShowChartDialog = state => getDashboardsUI(state).get('showChartDialog')\nexport const getDashboardShowMultiChartsDialog = state => getDashboardsUI(state).get('showMultiChartsDialog')\nexport const getDashboardShowEditDialog = state => getDashboardsUI(state).get('showEditDialog')\nexport const getDashboardShowDeleteDialog = state => getDashboardsUI(state).get('showDeleteDialog')\nexport const getDashboardSaving = state => getDashboardsUI(state).get('saving')\nexport const getDashboardDeleting = state => getDashboardsUI(state).get('deleting')\nexport const getDashboardExecuting = state => getDashboardsUI(state).get('executing')\nexport const getDashboardChartLimitReached = state => getDashboardsUI(state).get('chartLimitReached')\nexport const getDashboardPowerpointExporting = state => getDashboardsUI(state).get('powerpointExporting')\nexport const getDashboardImageDownloading = state => getDashboardsUI(state).get('imageDownloading')\nexport const getDashboardPdfDownloading = state => getDashboardsUI(state).get('pdfDownloading')\n\n// SELECTED CHART\nconst getSelectedChartUi = state => state.dashboard.getIn(['selectedChart', 'ui'])\nexport const getDashboardSelectedChartIndex = state => getSelectedChartUi(state).get('index')\nexport const getDashboardSelectedChartDateMode = state => getSelectedChartUi(state).get('dateMode')\nexport const getDashboardSelectedChartStepType = state => getSelectedChartUi(state).get('stepType')\nexport const getDashboardSelectedChartAggregations = state => getSelectedChartUi(state).get('aggregations')\nexport const getDashboardSelectedChartAllowedDateIntervals = state => getSelectedChartUi(state).get('allowedDateIntervals')\nexport const getDashboardSelectedChartLoading = state => getSelectedChartUi(state).get('loading')\nexport const getDashboardSelectedChartGoogleAnalyticsChart = state => getSelectedChartUi(state).get('selectedGoogleAnalyticsChart')\nexport const getDashboardSelectedChartMozChart = state => getSelectedChartUi(state).get('selectedMozChart')\nexport const getDashboardSelectedChartLinkedInAnalyticsChart = state => getSelectedChartUi(state).get('selectedLinkedInAnalyticsChart')\nexport const getDashboardSelectedChartFacebookAnalyticsChart = state => getSelectedChartUi(state).get('selectedFacebookAnalyticsChart')\nexport const getDashboardSelectedChartTwitterAnalyticsChart = state => getSelectedChartUi(state).get('selectedTwitterAnalyticsChart')\nexport const getDashboardSelectedChartUploadedPhoto = state => getSelectedChartUi(state).get('uploadedPhoto')\nexport const getDashboardSelectedChartMultipleSavedSearchesMode = state => getSelectedChartUi(state).get('multipleSavedSearchesMode')\n\nexport const getSelectedChartData = state => state.dashboard.getIn(['selectedChart', 'data'])\nexport const getDashboardSelectedChartFirstLevel = state => getSelectedChartData(state).get('firstLevel')\nexport const getDashboardSelectedChartThirdLevel = state => getSelectedChartData(state).get('thirdLevel')\n\nexport const getDashboardSelectedChartGoogleAnalyticsViewId = state => (\n getSelectedChartData(state).getIn(['opts', 'googleAnalytics', 'viewId'])\n)\nexport const getDashboardSelectedChartGoogleAnalyticsSegmentId = state => (\n getSelectedChartData(state).getIn(['opts', 'googleAnalytics', 'segmentId'])\n)\nexport const getDashboardSelectedChartMozTargets = state => (\n getSelectedChartData(state).getIn(['opts', 'moz', 'targets']) || fromJS([])\n)\nexport const getDashboardSelectedChartLinkedInAnalyticsOrganizationId = state => (\n getSelectedChartData(state).getIn(['opts', 'linkedInAnalytics', 'organizationId'])\n)\nexport const getDashboardSelectedChartFacebookAnalyticsPageId = state => (\n getSelectedChartData(state).getIn(['opts', 'facebookAnalytics', 'pageId'])\n)\nexport const getDashboardSelectedChartImageUrl = state => getSelectedChartData(state).getIn(['opts', 'imageUrl'])\nexport const getDashboardSelectedChartLabel = state => getSelectedChartData(state).get('label')\nexport const getDashboardSelectedChartTopLabel = state => getSelectedChartData(state).get('topLabel')\nexport const getDashboardSelectedChartSavedSearchModuleName = state => getSelectedChartData(state).getIn(['savedSearch', 'moduleName'])\n\nexport const getDashboardSelectedChart = createImmutableSelector(\n getDashboardSelectedChartAggregations,\n getSelectedChartData,\n (aggregations, chart) => chart.set('data', aggregations.get(chart.get('firstLevel'), null))\n)\n\nexport const getDashboardHideSecondLevelsInDialog = createImmutableSelector(\n getDashboardSelectedChart,\n getDashboardSelectedChartMultipleSavedSearchesMode,\n (chart, isMulti) => chart.get('firstLevel') !== 'savedSearches' && isMulti\n)\n\nexport const getDashboardSelectedChartSavedSearchId = state => getSelectedChartData(state).get('savedSearchId')\nexport const getDashboardSelectedChartAdditionalSavedSearchIds = state => (\n getSelectedChartData(state).get('additionalSavedSearchIds') || fromJS([])\n)\n\nexport const getDashboardSelectedChartAvailableAdditonalSavedSearches = createImmutableSelector(\n getAllSavedSearches,\n getDashboardSelectedChartSavedSearchModuleName,\n getDashboardSelectedChartSavedSearchId,\n (savedSearches, moduleName, savedSearchId) => (\n savedSearches.filter(s => s.get('moduleName') === moduleName && s.get('id') !== savedSearchId)\n )\n)\n\nexport const getDashboardSelectedChartGroupingType = state => {\n const chart = getSelectedChartData(state)\n\n return chart.get('groupingType', chart.getIn(['savedSearch', 'groupingType']))\n}\n\nexport const getDashboardSelectedChartSortBy = state => {\n const chart = getSelectedChartData(state)\n\n return chart.get('sortBy', chart.getIn(['savedSearch', 'sortBy']))\n}\n\nexport const getDashboardSelectedChartDateType = state => {\n const chart = getSelectedChartData(state)\n\n return chart.get('dateType', chart.getIn(['savedSearch', 'dateType'], DateTypes.MEDIA_REVIEW))\n}\n\nconst groupingTypesByModuleName = moduleName => {\n if ([NewsPageModules.ANALYSIS, NewsPageModules.NEWS].indexOf(moduleName) !== -1) {\n return [\n GroupingTypes.CHANNEL,\n GroupingTypes.MEDIA_REVIEW_CODE,\n GroupingTypes.CUSTOM_TAG,\n GroupingTypes.UNGROUPED\n ]\n }\n\n if (moduleName === NewsPageModules.PROFILE_MONITORING) {\n return [\n GroupingTypes.PAGE_IDENTITY,\n GroupingTypes.UNGROUPED_PAGE_IDENTITY\n ]\n }\n\n return [\n GroupingTypes.CHANNEL,\n GroupingTypes.UNGROUPED\n ]\n}\n\nexport const getDashboardSelectedChartGroupingOptions = createImmutableSelector(\n getSelectedChartData,\n getDashboardSelectedChartSavedSearchModuleName,\n (chart, moduleName) => {\n if (['topInfluencers', 'topPublications', 'imageFeed'].indexOf(chart.get('firstLevel')) !== -1) {\n return []\n }\n\n return groupingTypesByModuleName(moduleName)\n }\n)\n\nexport const getDashboardSelectedChartDateRange = state => getSelectedChartData(state).get('dateRange')\nexport const getDashboardSelectedChartDateFrom = state => getSelectedChartData(state).get('dateFrom')\nexport const getDashboardSelectedChartDateTo = state => getSelectedChartData(state).get('dateTo')\nexport const getDashboardSelectedChartDateInterval = state => getSelectedChartData(state).get('dateInterval')\nexport const getDashboardSelectedChartGoogleAnalyticsViewSelected = state => (\n Boolean(getSelectedChartData(state).getIn(['opts', 'googleAnalytics', 'viewId']))\n)\nexport const getDashboardSelectedChartLinkedInAnalyticsOrganizationSelected = state => (\n Boolean(getSelectedChartData(state).getIn(['opts', 'linkedInAnalytics', 'organizationId']))\n)\nexport const getDashboardSelectedChartFacebookAnalyticsPageSelected = state => (\n Boolean(getSelectedChartData(state).getIn(['opts', 'facebookAnalytics', 'pageId']))\n)\n\nexport const getDashboardDateSelected = createImmutableSelector(\n getSelectedChartData,\n getDashboardSelectedChartDateMode,\n (chart, dateMode) => {\n let isDateValid = false\n\n if (dateMode === 'date_range') {\n isDateValid = Boolean(chart.get('dateRange'))\n } else if (dateMode === 'relative') {\n isDateValid = Boolean(chart.get('dateRange') && chart.get('dateRange').startsWith('relative_range'))\n } else {\n isDateValid = Boolean(chart.get('dateFrom') && chart.get('dateTo'))\n }\n\n return isDateValid\n }\n)\n\nexport const getDashboardPreviewLoadable = createImmutableSelector(\n getSelectedChartData,\n getDashboardDateSelected,\n getDashboardSelectedChartGoogleAnalyticsChart,\n getDashboardSelectedChartGoogleAnalyticsViewId,\n getDashboardSelectedChartMozChart,\n getDashboardSelectedChartMozTargets,\n getDashboardSelectedChartFacebookAnalyticsChart,\n getDashboardSelectedChartFacebookAnalyticsPageId,\n getDashboardSelectedChartTwitterAnalyticsChart,\n getDashboardSelectedChartLinkedInAnalyticsChart,\n getDashboardSelectedChartLinkedInAnalyticsOrganizationId,\n (chart, isDateValid, gaChart, viewId, mozChart, mozTargets, fbChart, pageId, twChart, liChart, organizationId) => {\n if (isPressrelationsNewsChart(chart)) {\n return Boolean(chart.get('savedSearchId')) && isDateValid\n }\n\n if (isGoogleAnalyticsChart(chart)) {\n return Boolean(gaChart && viewId) && isDateValid\n }\n\n if (isYoutubeAnalyticsChart(chart)) {\n return isDateValid\n }\n\n if (isMozChart(chart)) {\n return Boolean(mozChart) && isDateValid && !mozTargets.isEmpty()\n }\n\n if (isLinkedInAnalyticsChart(chart)) {\n if (isSocialMediaAnalyticsFeed(chart)) {\n return Boolean(organizationId)\n }\n\n return Boolean(liChart && organizationId) && isDateValid\n }\n\n if (isFacebookAnalyticsChart(chart)) {\n return Boolean(fbChart && pageId) && isDateValid\n }\n\n if (isTwitterAnalyticsChart(chart)) {\n return Boolean(twChart) && isDateValid\n }\n\n if (isTextChart(chart)) {\n return Boolean(chart.getIn(['opts', 'html']))\n }\n\n if (isExternalWidgetChart(chart)) {\n return Boolean(isURL((chart.getIn(['opts', 'customWidgetUrl']) || '').trim()) || chart.getIn(['opts', 'widgetContent']))\n }\n\n return false\n }\n)\n\nexport const getDashboardChartDialogChartValid = createImmutableSelector(\n getSelectedChartData,\n getDashboardPreviewLoadable,\n getDashboardSelectedChartUploadedPhoto,\n (chart, loadable, uploadedPhoto) => {\n if (isImageChart(chart)) {\n const hasLabel = chart.get('label') || chart.get('topLabel')\n\n return Boolean(uploadedPhoto || hasLabel)\n }\n\n return loadable\n }\n)\n\n// SELECTED\nexport const getSelectedDashboard = state => state.dashboard.get('selected')\n\nexport const getSelectedDashboardFilled = createImmutableSelector(\n getSelectedDashboard,\n getDashboardIsEditing,\n (selectedDashboard, isEditing) => {\n if (isEditing) {\n return selectedDashboard\n }\n\n return fillDashboard(selectedDashboard)\n }\n)\nexport const getSelectedDashboardCharts = state => getSelectedDashboard(state).get('charts')\nexport const getSelectedDashboardLayouts = state => getSelectedDashboard(state).get('layouts')\nexport const getSelectedDashboardChartsFilled = state => getSelectedDashboardFilled(state).get('charts')\nexport const getSelectedDashboardLayoutsFilled = state => getSelectedDashboardFilled(state).get('layouts')\nexport const getSelectedDashboardName = state => getSelectedDashboard(state).get('name')\nexport const getSelectedDashboardBackgroundColor = state => getSelectedDashboard(state).getIn(['config', 'colors', 'background'])\nexport const getSelectedDashboardBackgroundImageUrl = state => getSelectedDashboard(state).getIn(['config', 'backgroundImageUrl'])\nexport const getSelectedDashboardConfig = state => getSelectedDashboard(state).get('config')\nexport const getSelectedDashboardCardColor = state => getSelectedDashboard(state).getIn(['config', 'colors', 'card'])\nexport const getSelectedDashboardChartByIndexAndBreakpoint = (state, index, breakpoint) => (\n getSelectedDashboardCharts(state).getIn([breakpoint, index])\n)\n\nexport const getSelectedDashboardBreakpoints = createImmutableSelector(\n getSelectedDashboardLayouts,\n layouts => layouts.reduce((acc, value, key) => (value.isEmpty() ? acc : acc.push(key)), fromJS([]))\n)\n\n// PREVIOUS\nexport const getPreviousDashboard = state => state.dashboard.get('previous')\n\n// EDIT\nexport const getEditDashboard = state => state.dashboard.get('edit')\n\n// DRILLDOWN\nexport const getDashboardDrilldown = state => state.dashboard.get('drilldown')\nexport const getDashboardDrilldownData = state => state.dashboard.getIn(['drilldown', 'data'])\nexport const getDashboardDrilldownDataGroups = createImmutableSelector(\n getDashboardDrilldownData,\n data => data.get('groups')\n)\nexport const getDashboardDrilldownDataNewsById = (state, id) => {\n const news = getDashboardDrilldownData(state)\n .get('groups')\n .map(group => group.get('news').find(n => n.get('id') === id))\n .filter(n => n !== undefined)\n .first()\n\n return news\n}\n\nexport const getDashboardDrilldownUi = state => state.dashboard.getIn(['drilldown', 'ui'])\nexport const getDashboardSelectedDrilldownChart = state => getDashboardDrilldownUi(state).get('chart')\nexport const getDashboardSelectedDrilldownFilterData = state => getDashboardDrilldownUi(state).get('filterData')\nexport const getDashboardSelectedDrilldownSecondFilter = state => getDashboardDrilldownUi(state).get('secondFilter')\nexport const getDashboardSelectedDrilldownSavedSearchId = state => getDashboardDrilldownUi(state).get('savedSearchId')\nexport const getDashboardSelectedDrilldownTitle = createImmutableSelector(\n getDashboardSelectedDrilldownFilterData,\n getDashboardSelectedDrilldownSecondFilter,\n (filterData, secondFilter) => [\n filterData ? filterData.get('name') : null,\n secondFilter ? secondFilter.get('name') : null\n ].filter(Boolean).join(' / ')\n)\n\nexport const getDashboardSelectedDrilldownChartSavedSearch = state => {\n const savedSearches = getAllSavedSearches(state)\n const id = getDashboardSelectedDrilldownSavedSearchId(state)\n const found = savedSearches.find(s => s.get('id') === id)\n\n if (found) {\n return found\n }\n\n return getDashboardSelectedDrilldownChart(state).get('savedSearch')\n}\n\nexport const getDashboardShowDrilldownDialog = state => getDashboardDrilldownUi(state).get('show')\nexport const getDashboardDrilldownLoading = state => getDashboardDrilldownUi(state).get('loading')\nexport const getDashboardDrilldownSearchParams = state => getDashboardDrilldownUi(state).get('searchParams')\nexport const getDashboardDrilldownDateFrom = state => getDashboardDrilldownUi(state).get('dateFrom')\nexport const getDashboardDrilldownDateTo = state => getDashboardDrilldownUi(state).get('dateTo')\nexport const getDashboardDrilldownDateRange = state => getDashboardDrilldownUi(state).get('dateRange')\nexport const getDashboardDrilldownDateType = state => getDashboardDrilldownUi(state).get('dateType')\nexport const getDashboardDrilldownGroupingType = state => getDashboardDrilldownUi(state).get('groupingType')\nexport const getDashboardDrilldownSortBy = state => getDashboardDrilldownUi(state).get('sortBy')\n\nexport const getDashboardDrilldownChartSavedSearchModuleName = state => (\n getDashboardDrilldownUi(state).getIn(['chart', 'savedSearch', 'moduleName'])\n)\n\nexport const getDashboardDrilldownGroupingOptions = createImmutableSelector(\n getDashboardDrilldownChartSavedSearchModuleName,\n moduleName => groupingTypesByModuleName(moduleName).filter(g => g !== GroupingTypes.UNGROUPED)\n)\n\nexport const getDashboardDrilldownSortingOptions = () => SortingOptions\n\nexport const getDashboardDrilldownChartShowSentiment = createImmutableSelector(\n getDashboardSelectedDrilldownChart,\n getDashboardDrilldownChartSavedSearchModuleName,\n (chart, moduleName) => (\n ['sentiment', 'sentiments'].some(s => chart.get('firstLevel') === s || chart.get('secondLevel') === s)\n || moduleName === NewsPageModules.NEWS_POOL\n )\n)\n\nexport const getDashboardDrilldownChartShowStatementTonality = createImmutableSelector(\n getDashboardSelectedDrilldownChart,\n getDashboardDrilldownChartSavedSearchModuleName,\n (chart, moduleName) => (\n ['statementTonality', 'statementTonalities'].some(s => chart.get('firstLevel') === s || chart.get('secondLevel') === s)\n || moduleName === NewsPageModules.ANALYSIS\n )\n)\n\nexport const getDashboardDrilldownAiAnalysisLoading = state => getDashboardDrilldownUi(state).get('aiAnalysisLoading')\nexport const getDashboardDrilldownAiAnalysis = state => getDashboardDrilldownData(state).get('aiAnalysis')\n\nexport const getDashboardChartDialogDefaultFormCategories = state => {\n const moduleName = getDashboardSelectedChartSavedSearchModuleName(state)\n const isMulti = getDashboardSelectedChartMultipleSavedSearchesMode(state)\n const userId = getUser(state).get('id')\n\n if (userId === 56558 || userId === 57869) {\n return [\n StepTypes.CHARTS,\n StepTypes.TIMELINE\n ]\n }\n\n if (moduleName === NewsPageModules.PROFILE_MONITORING) {\n if (isMulti) {\n return [\n StepTypes.CHARTS\n ]\n }\n\n return [\n StepTypes.NEWS_FEED,\n StepTypes.KPI,\n StepTypes.PAGE_IDENTITIES_TIMELINE,\n StepTypes.PAGE_IDENTITIES,\n StepTypes.IMAGE_FEED\n ]\n }\n\n if (isMulti) {\n return [\n StepTypes.CHARTS,\n StepTypes.SAVED_SEARCHES_TIMELINE\n ]\n }\n\n return [\n StepTypes.CHARTS,\n StepTypes.TIMELINE,\n StepTypes.KPI,\n StepTypes.NEWS_FEED,\n StepTypes.TOP_INFLUENCERS,\n StepTypes.TOP_PUBLICATIONS,\n StepTypes.IMAGE_FEED\n ]\n}\n","import { fillDashboard } from 'utils/charts'\n\nexport const getSavedDashboardData = state => state.savedDashboard.get('data')\nexport const getSavedDashboard = state => fillDashboard(getSavedDashboardData(state))\n\nexport const getSavedDashboardUi = state => state.savedDashboard.get('ui')\nexport const getSavedDashboardFooterType = state => getSavedDashboardUi(state).get('searchProfileGroupId')\nexport const getSavedDashboardShowDialog = state => getSavedDashboardUi(state).get('showDialog')\nexport const getSavedDashboardUrlName = state => getSavedDashboardUi(state).get('urlName')\nexport const getSavedDashboardBaseUrl = state => getSavedDashboardUi(state).get('baseUrl')\nexport const getSavedDashboardTimezone = state => getSavedDashboardUi(state).get('timezone')\nexport const getSavedDashboardDarkMode = state => getSavedDashboardUi(state).get('darkMode')\nexport const getSavedDashboardAutoScroll = state => getSavedDashboardUi(state).get('autoScroll')\nexport const getSavedDashboardHideShareMenu = state => getSavedDashboardUi(state).get('hideShareMenu')\nexport const getSavedDashboardHideFooter = state => getSavedDashboardUi(state).get('hideFooter')\nexport const getSavedDashboardLocale = state => getSavedDashboardUi(state).get('locale')\nexport const getSavedDashboardId = state => getSavedDashboardUi(state).get('id')\nexport const getSavedDashboardSaving = state => getSavedDashboardUi(state).get('saving')\nexport const getSavedDashboardCheckingUrlName = state => getSavedDashboardUi(state).get('checkingUrlName')\nexport const getSavedDashboardUrlNameAvailable = state => getSavedDashboardUi(state).get('urlNameAvailable')\nexport const getSavedDashboardAutoReload = state => getSavedDashboardUi(state).get('autoReload')\nexport const getSavedDashboardHeaderLogoLeftUrl = state => getSavedDashboardUi(state).get('headerLogoLeftUrl')\nexport const getSavedDashboardHeaderLogoLeftLink = state => getSavedDashboardUi(state).get('headerLogoLeftLink')\nexport const getSavedDashboardHeaderLogoRightUrl = state => getSavedDashboardUi(state).get('headerLogoRightUrl')\nexport const getSavedDashboardHeaderLogoRightLink = state => getSavedDashboardUi(state).get('headerLogoRightLink')\nexport const getSavedDashboardHeaderTitle = state => getSavedDashboardUi(state).get('headerTitle')\nexport const getSavedDashboardHeaderSubtitle = state => getSavedDashboardUi(state).get('headerSubtitle')\nexport const getSavedDashboardHeaderBackgroundColor = state => getSavedDashboardUi(state).get('headerBackgroundColor')\nexport const getSavedDashboardFetchRequestRunning = state => getSavedDashboardUi(state).get('fetchRequestRunning')\nexport const getSavedDashboardDisableCookies = state => getSavedDashboardUi(state).get('disableCookies')\n\nexport const getSavedDashboardIsValid = state => Boolean(\n getSavedDashboardUrlName(state)\n && getSavedDashboardUrlNameAvailable(state)\n && getSavedDashboardTimezone(state)\n && getSavedDashboardLocale(state)\n && !getSavedDashboardCheckingUrlName(state)\n)\n","export const getAi = state => state.ai\n\n// SETTINGS\nexport const getAiSettings = state => getAi(state).get('settings')\nexport const getAiSettingsLocale = state => getAiSettings(state).get('locale')\n\n// ANALYSIS\nexport const getAiAnalysis = state => getAi(state).get('analysis')\nexport const getAiAnalysisLoading = state => getAiAnalysis(state).get('loading')\nexport const getAiAnalysisAnalysis = state => getAiAnalysis(state).get('analysis')\nexport const getAiAnalysisShowDialog = state => getAiAnalysis(state).get('showDialog')\n\n// UI\nexport const getAiUi = state => getAi(state).get('ui')\nexport const getAiUiShowOrderSummariesDialog = state => getAiUi(state).get('showOrderSummariesDialog')\n","import decamelizeKeysDeep from 'decamelize-keys-deep'\nimport { fromJS, Map, List } from 'immutable'\nimport { NewsPageSize, ChartDataSources, ChartTypes, Capabilities, SortingOptions } from 'static/constants'\nimport moment from 'moment-timezone'\nimport { createImmutableSelector } from 'utils/reselect'\nimport decamelize from 'decamelize'\n\nimport {\n isPressrelationsNewsChart,\n isGoogleAnalyticsChart,\n isMozChart,\n isYoutubeAnalyticsChart,\n isLinkedInAnalyticsChart,\n isFacebookAnalyticsChart,\n isTwitterAnalyticsChart,\n isImageChart,\n isTextChart,\n isExternalWidgetChart,\n generateChartLabel,\n generateChartTopLabel\n} from 'utils/chart'\n\nimport {\n getSelectedNewsFilters,\n getSelectedPageIdentityFilters,\n getSelectedPublicationFilters,\n getSelectedOutlinkFilters,\n getSelectedAuthorFilters,\n getSelectedDateType,\n getSelectedDateInterval,\n getActiveFilters,\n getNewsFiltersAnalysisSelectedCodeIdsForExport,\n getNewsFiltersAnalysisGroupedCodeIdsForExport,\n getNewsFiltersAnalysisRestrictedCodeIds,\n getNewsFiltersAnalysisStatementTonalityValues,\n getNewsFiltersAnalysisArticleLevel,\n getSelectedDateFrom,\n getSelectedDateTo,\n getNewsFiltersAnalysisUseMediaReviewCodes\n} from './filters'\nimport { getTimezone } from './app'\nimport {\n getShoppingCartCodesSize,\n getShoppingCartTabIndex,\n getShoppingCartCodes,\n getShoppingCartNewsIds,\n getShoppingCartNews,\n getShoppingCartSelectedNewsIds,\n getShoppingCartSelectedNews,\n getShoppingCartIsStructuredExport\n} from './news/shopping_cart'\nimport { getConfig, getExportLimit, getXlsxExportLimit, getBackwardsNewsXlsxLimit } from './config'\nimport { getAllSelectedTopicIds, getSelectedEditionIds } from './subscriptions'\nimport { getCapabilities, getUser, getCookieOption } from './user'\nimport {\n getExportOptions,\n getExportSettings,\n getCurrentDocumentUrl,\n getCurrentDocumentFilename,\n getCurrentDocumentMimeType,\n getCurrentDocumentSize,\n getCurrentDocumentAttachments,\n getLastExport\n} from './news/export'\nimport { getPagingByGroupId, getSortBy, getSortDirection, getNewsGroups, getNewsGroupingType } from './news'\nimport {\n getCurrentPath,\n isShoppingCart,\n isMediaReviewDetail,\n isNewsBoard,\n isDashboard,\n isAdministrationSubmodule,\n isContentDeskSubmodule,\n isContentDeskContentsAndCampaigns,\n isContactManagementSubmodule,\n isDarknetQueryManager,\n isSearchPool,\n isInfoboard,\n isExternalChart,\n isSavedChart\n} from './routing'\nimport { getInfluencersSortBy } from './influencers'\nimport { getPublicationsSortBy } from './publications'\nimport { getAllowedChartConfigs } from './news/charts'\nimport { getWhitelabelEmailAddress, getLogo, getBffUrl } from './whitelabel'\nimport {\n getSelectedMediaReviewNewsIdsForExport,\n getMediaReviewSorting,\n getSelectedMediaReview,\n getMediaReviewSummary,\n getMediaReviewSelectedNews,\n getMediaReviewSelectedNewsIds,\n getSelectedMediaReviewId,\n getMediaReviewNewsUngrouped\n} from './media_reviews'\nimport {\n getViewConfigNewsGroupPagingEntity,\n getViewConfigNewsGroupPagingField,\n getViewConfigIndexType,\n getViewConfigModuleName,\n getRequiredFilters\n} from './news/view_config'\nimport { getI18n } from './i18n'\nimport { getPageIdentitiesShowInactive } from './page_identities'\nimport { getAllowedStaticMediaReviewCodes, getStaticMediaReviewTypesForSubscription } from './statics'\nimport { getDarknetSortDirection, getDarknetSortBy, getActiveDarknetFilters, getActiveDarknetNumberFilters } from './darknet'\nimport { getSelectedChartData, getDashboardSelectedChartSavedSearchModuleName } from './dashboard'\nimport {\n getSavedDashboardFetchRequestRunning,\n getSavedDashboardDisableCookies,\n getSavedDashboard\n} from './saved_dashboard'\nimport { getCDeskContentSearchQueries, getCDeskCampaignSearchQueries } from './content_desk'\nimport {\n getCmContactSearchQueries,\n getCmDistributionListSearchQueries,\n getCmDistributionListContactsSearchQueries\n} from './contact_management'\nimport { getAiAnalysisAnalysis } from './ai'\n\nexport const getSelectedTopicIds = createImmutableSelector(\n getAllSelectedTopicIds,\n getAllowedStaticMediaReviewCodes,\n (topicIds, allowed) => {\n const allowedIds = allowed.map(a => a.get('id'))\n\n return topicIds.filter(t => allowedIds.includes(t))\n }\n)\n\nexport const isGroupedShoppingCart = state => (\n isShoppingCart(state) && getShoppingCartTabIndex(state) === 0\n && getShoppingCartCodes(state).size > 0 && !getShoppingCartIsStructuredExport(state)\n)\n\nexport const isUngroupedShoppingCart = state => (\n isShoppingCart(state) && (\n getShoppingCartTabIndex(state) === 1\n || !getShoppingCartCodesSize(state)\n || getShoppingCartIsStructuredExport(state)\n )\n)\n\nexport const getNewsIdsForExport = (state, isPdfPreview) => {\n let newsIds = getShoppingCartNewsIds(state)\n\n if (isPdfPreview) {\n return fromJS([])\n }\n\n if (isMediaReviewDetail(state)) {\n newsIds = getSelectedMediaReviewNewsIdsForExport(state)\n\n const mediaReviewSelectedNewsIds = getMediaReviewSelectedNewsIds(state)\n\n if (!mediaReviewSelectedNewsIds.isEmpty()) {\n return newsIds.filter(id => mediaReviewSelectedNewsIds.includes(id.first()))\n }\n\n return newsIds\n }\n\n const shoppingCartSelectedNewsIds = getShoppingCartSelectedNewsIds(state)\n\n if (!shoppingCartSelectedNewsIds.isEmpty()) {\n return newsIds.filter(id => shoppingCartSelectedNewsIds.includes(id.first()))\n }\n\n return newsIds\n}\n\nexport const getNewsForAiAnalysis = state => {\n let news = getShoppingCartNews(state)\n let selectedIds = getShoppingCartSelectedNewsIds(state)\n\n if (isMediaReviewDetail(state)) {\n news = getMediaReviewNewsUngrouped(state)\n\n selectedIds = getMediaReviewSelectedNewsIds(state)\n }\n\n if (!selectedIds.isEmpty()) {\n news = news.filter(n => selectedIds.includes(n.get('id')))\n }\n\n return news\n}\n\nconst filterNewsByGroupedSelection = (news, groupedSelection) => {\n const selectedCodes = groupedSelection.reduce((acc, value) => {\n const [codeId, newsId] = value.split('_')\n\n if (acc.has(codeId)) {\n return acc.update(codeId, ids => ids.push(parseInt(newsId, 10)))\n }\n\n return acc.set(codeId, fromJS([parseInt(newsId, 10)]))\n }, Map({}))\n\n return news\n .filter(n => selectedCodes.has(n.get('code_id') === null ? 'null' : n.get('code_id').toString()))\n .map(n => n.update('news_ids', ids => ids.filter(\n id => selectedCodes.get(n.get('code_id') === null ? 'null' : n.get('code_id').toString()).includes(id)\n )))\n .filter(n => !n.get('news_ids').isEmpty())\n}\n\nexport const getMainNewsIdsOrSortingForExport = (state, isPdfPreview) => {\n let news = fromJS([])\n\n if (isPdfPreview) {\n return news\n }\n\n if (isMediaReviewDetail(state)) {\n news = getMediaReviewSorting(state)\n\n const mediaReviewSelectedNews = getMediaReviewSelectedNews(state)\n\n if (!mediaReviewSelectedNews.isEmpty()) {\n news = filterNewsByGroupedSelection(news, mediaReviewSelectedNews)\n }\n } else if (isGroupedShoppingCart(state)) {\n news = getShoppingCartCodes(state).map(code => (fromJS({\n code_id: code.get('id'),\n news_ids: code.get('news').map(n => n.get('id'))\n })))\n const shoppingCartSelectedNews = getShoppingCartSelectedNews(state)\n\n if (!shoppingCartSelectedNews.isEmpty()) {\n news = filterNewsByGroupedSelection(news, shoppingCartSelectedNews)\n }\n } else if (isUngroupedShoppingCart(state)) {\n news = getShoppingCartNewsIds(state)\n\n const shoppingCartSelectedNewsIds = getShoppingCartSelectedNewsIds(state)\n\n if (!shoppingCartSelectedNewsIds.isEmpty()) {\n news = news.filter(n => shoppingCartSelectedNewsIds.toList().includes(n.first()))\n }\n\n news = news.map(n => n.first())\n }\n\n return news\n}\n\nconst getSelectedNewsFromShoppingCart = state => {\n const shoppingCartSelectedNewsIds = getShoppingCartSelectedNewsIds(state)\n let news = getShoppingCartNews(state)\n\n if (!shoppingCartSelectedNewsIds.isEmpty()) {\n news = news.filter(n => shoppingCartSelectedNewsIds.includes(n.get('id')))\n }\n\n return news\n}\n\nexport const getNewsForRssExport = state => {\n const news = getSelectedNewsFromShoppingCart(state)\n\n return news.map(n => ({\n id: n.get('id'),\n headline: n.get('headline'),\n text: n.get('snippet'),\n article_date: n.get('articleDate'),\n url: n.get('originalUrl'),\n publication: {\n id: n.get('publication').get('id'),\n name: n.get('publication').get('name'),\n reach: n.get('keyFigures').get('reach')\n },\n codes: n.get('codes').map(c => c.get('name'))\n })).toJS()\n}\n\nexport const getExportBody = (state, type, preview, mode) => {\n const settings = getExportSettings(state)\n const config = getConfig(state)\n const hasTonality = config.get('hasTonality')\n const timezone = getTimezone(state)\n const user = getUser(state)\n const addAllowedCodeIds = isNewsBoard(state)\n const useMediaReviewCodesAsAnalysisCodes = getNewsFiltersAnalysisUseMediaReviewCodes(state)\n\n const i18n = getI18n(state)\n const dispatchConfig = settings.get(type === 'pdf' ? 'pdfDispatchConfig' : 'dispatchConfig').toJS()\n const dispatchConfigId = dispatchConfig.id\n const { mediaReviewHtmlConfig: { contactMail, contactName, customGreeting, customText } } = dispatchConfig\n dispatchConfig.mediaReviewHtmlConfig.customGreeting = (\n (customGreeting === null && !dispatchConfigId) ? i18n.get('custom_greeting_placeholder') : (customGreeting || '')\n )\n dispatchConfig.mediaReviewHtmlConfig.customText = (\n (customText === null && !dispatchConfigId) ? i18n.get('custom_text_placeholder') : (customText || '')\n )\n\n if (contactMail === '') {\n delete dispatchConfig.mediaReviewHtmlConfig.contactMail\n }\n\n if (contactName === '') {\n delete dispatchConfig.mediaReviewHtmlConfig.contactName\n }\n\n let startDate = settings.get('startDate')\n let endDate = settings.get('endDate')\n\n if (type.startsWith('backwards')) {\n startDate = startDate ? moment(getSelectedDateFrom(state)).format('YYYY-MM-DDTHH:mm:ss.SSS[Z]') : null\n endDate = endDate ? moment(getSelectedDateTo(state)).format('YYYY-MM-DDTHH:mm:ss.SSS[Z]') : null\n } else {\n startDate = startDate ? moment(startDate).format('YYYY-MM-DD') : null\n endDate = endDate ? moment(endDate).format('YYYY-MM-DD') : null\n }\n\n let mediaReviewName = ''\n let mediaReviewSummary\n let mediaReviewId\n\n if (isMediaReviewDetail(state)) {\n mediaReviewName = getSelectedMediaReview(state).get('name')\n mediaReviewSummary = getMediaReviewSummary(state)\n mediaReviewId = getSelectedMediaReview(state).get('id')\n }\n\n const isCoverPreview = Boolean(type === 'pdf' && preview && mode === 'cover')\n const isEndPagePreview = Boolean(type === 'pdf' && mode === 'endPage')\n const isPdfPreview = isCoverPreview || isEndPagePreview\n\n return {\n news: getMainNewsIdsOrSortingForExport(state, isPdfPreview).toJS(),\n news_ids: getNewsIdsForExport(state, isPdfPreview).toJS(),\n cover_only: isCoverPreview,\n end_page_only: isEndPagePreview,\n type,\n settings: {\n attach_summaries: settings.get('attachSummaries'),\n automatic_translation_enabled: settings.get('automaticTranslationEnabled'),\n ai_summary_enabled: settings.get('aiSummaryEnabled'),\n ai_summary: getAiAnalysisAnalysis(state),\n content_language: settings.get('contentLanguage'),\n template_language: settings.get('templateLanguage'),\n show_cover: settings.get('showCover'),\n show_end_page: settings.get('showEndPage'),\n show_table_of_contents: settings.get('showTableOfContents'),\n cover_id: settings.get('coverId'),\n dispatch_config: decamelizeKeysDeep(dispatchConfig),\n show_article_text: settings.get('showArticleText'),\n pdf_cover_title: settings.get('pdfCoverTitle'),\n export_filename: settings.get('exportFilename'),\n columns: settings.get('columns'),\n has_tonality: hasTonality,\n start_date: startDate,\n end_date: endDate,\n media_review_name: mediaReviewName,\n media_review_summary: mediaReviewSummary,\n media_review_id: mediaReviewId,\n news_limit: preview ? 5 : null,\n allowed_code_ids: addAllowedCodeIds ? user.get('allowedNewsCodeIds').toJS() : [],\n selected_analysis_code_ids: getNewsFiltersAnalysisSelectedCodeIdsForExport(state).toJS(),\n grouped_analysis_code_ids: getNewsFiltersAnalysisGroupedCodeIdsForExport(state).toJS(),\n restricted_analysis_code_ids: getNewsFiltersAnalysisRestrictedCodeIds(state).toJS(),\n selected_statement_tonalities: getNewsFiltersAnalysisStatementTonalityValues(state).toJS(),\n article_level: getNewsFiltersAnalysisArticleLevel(state),\n use_media_review_codes_as_analysis_codes: useMediaReviewCodesAsAnalysisCodes,\n timezone\n }\n }\n}\n\nexport const getRssExportBody = state => {\n const newsIds = getNewsIdsForExport(state, false)\n let news = newsIds.flatten()\n\n if (isSearchPool(state)) {\n news = getNewsForRssExport(state)\n }\n\n return {\n type: 'rss',\n news,\n news_ids: newsIds\n }\n}\n\nconst getStructuredFormatBody = (state, type) => {\n const newsIds = getNewsIdsForExport(state, false)\n let news = newsIds.flatten()\n\n if (isSearchPool(state)) {\n news = getSelectedNewsFromShoppingCart(state)\n }\n\n return ({\n type,\n news,\n news_ids: newsIds\n })\n}\n\nexport const getXmlExportBody = state => getStructuredFormatBody(state, 'xml')\nexport const getJsonExportBody = state => getStructuredFormatBody(state, 'json')\n\nexport const getMailBody = (state, to, subject, text, from, scheduledFor) => {\n const result = {\n to,\n subject,\n from: from || getWhitelabelEmailAddress(state)\n }\n\n if (['html', 'txt', 'backwards_news_html'].includes(getExportOptions(state).get('selectedFormat'))) {\n result.body_url = getCurrentDocumentUrl(state)\n result.attachments = getCurrentDocumentAttachments(state).map(a => ({\n mime_type: a.get('mimeType'),\n name: a.get('filename'),\n url: a.get('url'),\n size: a.get('size')\n }))\n } else {\n result.text = text.replace(/\\n/g, '
')\n result.attachments = [\n {\n name: getCurrentDocumentFilename(state),\n url: getCurrentDocumentUrl(state),\n mime_type: getCurrentDocumentMimeType(state),\n size: getCurrentDocumentSize(state)\n }\n ]\n }\n\n const lastExport = getLastExport(state)\n\n let exportConfig = {\n type: lastExport.get('type'),\n timezone: getTimezone(state)\n }\n\n if (scheduledFor) {\n exportConfig = { ...exportConfig, scheduled_for: scheduledFor }\n }\n\n if (isMediaReviewDetail(state)) {\n exportConfig = { ...exportConfig, media_review_id: getSelectedMediaReviewId(state), module_name: 'media_reviews' }\n } else {\n exportConfig = { ...exportConfig, module_name: getViewConfigModuleName(state) }\n }\n\n return { ...result, export_config: exportConfig }\n}\n\nexport const getSearchBody = (state, dateFrom, dateTo) => ({\n author: getSelectedAuthorFilters(state),\n date_type: getSelectedDateType(state),\n date_interval: getSelectedDateInterval(state),\n grouping_type: getNewsGroupingType(state),\n index_type: getViewConfigIndexType(state),\n news: getSelectedNewsFilters(state, dateFrom, dateTo),\n page_identity: getSelectedPageIdentityFilters(state),\n publication: getSelectedPublicationFilters(state),\n outlink: getSelectedOutlinkFilters(state),\n size: NewsPageSize,\n sort_by: getSortBy(state),\n sort_direction: getSortDirection(state),\n timezone: getTimezone(state),\n module_name: getViewConfigModuleName(state)\n})\n\nconst addQueries = (data, filters, sourceKey, targetKey) => {\n const queries = filters.get(sourceKey).filter(f => !f.get('inverted')).toJS()\n const excludedQueries = filters.get(sourceKey).filter(f => f.get('inverted')).toJS()\n\n let result = data\n\n if (queries.length) {\n result = { ...result, [targetKey]: queries.map(el => (el.id || el.value)) }\n }\n\n if (excludedQueries.length) {\n result = { ...result, [`exclude_${targetKey}`]: excludedQueries.map(el => (el.id || el.value)) }\n }\n\n return result\n}\n\nexport const getCDeskSearchBody = state => {\n const contentSearchQueries = getCDeskContentSearchQueries(state)\n const campaignSearchQueries = getCDeskCampaignSearchQueries(state)\n\n const contentIncludes = contentSearchQueries.filter(f => !f.get('inverted')).toJS()\n const contentExcludes = contentSearchQueries.filter(f => f.get('inverted')).toJS()\n\n const campaignIncludes = campaignSearchQueries.filter(f => !f.get('inverted')).toJS()\n const campaignExcludes = campaignSearchQueries.filter(f => f.get('inverted')).toJS()\n\n return {\n contents: {\n includes: contentIncludes.map(c => ({\n field: c.field.replace('content_', ''),\n value: c.value\n })),\n excludes: contentExcludes.map(c => ({\n field: c.field.replace('content_', ''),\n value: c.value\n }))\n },\n campaigns: {\n includes: campaignIncludes.map(c => ({\n field: c.field.replace('campaign_', ''),\n value: c.value\n })),\n excludes: campaignExcludes.map(c => ({\n field: c.field.replace('campaign_', ''),\n value: c.value\n }))\n }\n }\n}\n\nexport const getCdSearchBody = state => {\n const contactSearchQueries = getCmContactSearchQueries(state)\n const distributionListSearchQueries = getCmDistributionListSearchQueries(state)\n const distributionListContactSearchQueries = getCmDistributionListContactsSearchQueries((state))\n\n let contactIncludes = contactSearchQueries.filter(f => !f.get('inverted')).toJS()\n let distributionListIncludes = distributionListSearchQueries.filter(f => !f.get('inverted')).toJS()\n let distributionListContactsIncludes = distributionListContactSearchQueries.filter(f => !f.get('inverted')).toJS()\n\n if (contactIncludes.length) {\n const nameFilter = contactIncludes.filter(c => c.field === 'contact_name')\n const topicTagFilter = contactIncludes.filter(c => c.field === 'contact_tag')\n const result = []\n nameFilter.forEach(filter => {\n result.push([\n { field: 'searchable', value: filter.value }\n ])\n })\n topicTagFilter.forEach(filter => {\n result.push([\n { field: 'tags', value: filter.value }\n ])\n })\n contactIncludes = result.flat()\n }\n\n if (distributionListIncludes.length) {\n const nameFilter = distributionListIncludes.filter(c => c.field === 'distribution_list_name')\n const result = []\n nameFilter.forEach(filter => {\n result.push([\n { field: 'name', value: filter.value, comparison: 'contains' }\n ])\n result.push([\n { field: 'description', value: filter.value, comparison: 'contains' }\n ])\n })\n distributionListIncludes = result.flat()\n }\n\n if (distributionListContactsIncludes.length) {\n const nameFilter = distributionListContactsIncludes.filter(c => c.field === 'distribution_list_contacts')\n const result = []\n nameFilter.forEach(filter => {\n result.push([\n { field: 'distribution_lists', value: filter.value }\n ])\n })\n distributionListContactsIncludes = result.flat()\n }\n\n return {\n contacts: {\n includes: [...contactIncludes, ...distributionListContactsIncludes]\n },\n distributionLists: {\n includes: distributionListIncludes\n }\n }\n}\n\nexport const getDarknetSearchBody = state => {\n const activeDarknetFilters = getActiveDarknetFilters(state)\n const activeDarknetNumberFilters = getActiveDarknetNumberFilters(state)\n\n let filters = {}\n filters = addQueries(filters, activeDarknetFilters, 'networks', 'network')\n filters = addQueries(filters, activeDarknetFilters, 'languages', 'language')\n filters = addQueries(filters, activeDarknetFilters, 'darknetSearchQueries', 'queries')\n filters = addQueries(filters, activeDarknetFilters, 'searchQueries', 'darkowlSearchQueryId')\n filters.minHackishness = activeDarknetNumberFilters.get('minHackishness')\n\n return {\n filters,\n dateFrom: getSelectedDateFrom(state),\n dateTo: getSelectedDateTo(state),\n sortBy: getDarknetSortBy(state),\n sortDirection: getDarknetSortDirection(state)\n }\n}\n\nexport const getSearchBodyMaxSize = (state, type) => {\n const searchBody = getSearchBody(state)\n let size = getExportLimit(state)\n let { news } = searchBody\n\n if (type.match('xlsx')) {\n size = getXlsxExportLimit(state)\n\n if (type === 'backwards_news_xlsx') {\n size = getBackwardsNewsXlsxLimit(state)\n }\n\n news = {\n ...searchBody.news,\n booleans: {\n ...searchBody.news.booleans,\n global_clusters: false\n }\n }\n }\n\n return {\n ...searchBody,\n from: 0,\n size,\n news\n }\n}\n\nexport const getInfluencersSearchBody = state => {\n const body = getSearchBody(state)\n const sortBy = getInfluencersSortBy(state)\n\n return {\n ...body,\n size: 20,\n sort_by: sortBy\n }\n}\n\nexport const getPublicationsSearchBody = state => {\n const body = getSearchBody(state)\n const sortBy = getPublicationsSortBy(state)\n\n // always add newsguard ranks as upper- and lowercase,\n // because the groot_publications does only understand lowercase and groot_news only uppercase\n if (body.publication.newsguard_rank) {\n body.publication.newsguard_rank = body.publication.newsguard_rank.map(x => [x, x.toLowerCase()]).flat()\n }\n\n return {\n ...body,\n size: 30,\n sort_by: sortBy\n }\n}\n\nexport const getPageIdentitiesSearchBody = state => {\n const body = getSearchBody(state)\n const sortBy = 'reach'\n\n return {\n ...body,\n show_inactive: getPageIdentitiesShowInactive(state),\n size: 30,\n sort_by: sortBy\n }\n}\n\nexport const getPageIdentityPostsSearchBody = state => {\n const body = getSearchBody(state)\n\n return { ...body, size: 4 }\n}\n\nexport const getFetchMoreNewsBody = (state, id) => {\n let result = getSearchBody(state)\n const paging = getPagingByGroupId(state, id)\n\n if (paging) {\n result = {\n ...result,\n size: paging.get('size'),\n from: paging.get('from')\n }\n } else {\n result = {\n ...result,\n size: 50,\n from: 10\n }\n }\n\n const entity = getViewConfigNewsGroupPagingEntity(state)\n\n // In a drill down there is no view config for news groups or filters\n if (!entity) {\n return result\n }\n\n const field = getViewConfigNewsGroupPagingField(state)\n\n let filters = getSelectedNewsFilters(state)\n\n if (entity === 'publication') {\n filters = getSelectedPublicationFilters(state)\n }\n\n // Prevent from paging in categories that came from clustered news\n if (filters[field] && filters[field].length && filters[field].indexOf(id) === -1) {\n filters[field] = [-99999999999]\n } else {\n filters[field] = [id]\n }\n\n return { ...result, [entity]: filters }\n}\n\nexport const getFetchClusterStatsBody = (state, groupId, newsId, clusterId) => {\n const result = getFetchMoreNewsBody(state, groupId)\n\n return {\n ...result,\n from: 0,\n size: 10000,\n sort_by: 'reach',\n news: {\n ...result.news,\n cluster_id: [clusterId],\n exclude_ids: [newsId],\n booleans: {\n ...result.news.booleans,\n global_clusters: false\n }\n }\n }\n}\n\nexport const getIsRunningByGroupId = (state, id) => {\n const groups = getNewsGroups(state)\n\n return groups && groups.getIn([id.toString(), 'loadingMore'])\n}\n\nexport const getConfigUpdateBody = state => {\n const config = getConfig(state)\n\n return {\n data: {\n date_filter_setting_id: config.get('dateFilterSettingId'),\n default_date_type: config.get('defaultDateType'),\n default_news_page_view: config.get('defaultNewsPageView'),\n groot_grouping_setting_id: config.get('grootGroupingSettingId'),\n default_sorting_id: config.get('defaultSortingId'),\n colors: decamelizeKeysDeep(config.get('colors').toJS()),\n export_filename: config.get('exportFilename'),\n default_pdf_dispatch_config_id: config.get('defaultPdfDispatchConfigId'),\n pdf_cover_title: config.get('pdfCoverTitle'),\n show_flags: config.get('showFlags'),\n expand_topics: config.get('expandTopics'),\n show_summaries: config.get('showSummaries'),\n show_snippets: config.get('showSnippets'),\n saved_search_id: config.get('savedSearchId'),\n initial_route: config.get('initialRoute') === '' ? null : config.get('initialRoute')\n }\n }\n}\n\nexport const getSaveSubscriptionsBody = state => ({\n topic_ids: getSelectedTopicIds(state),\n edition_ids: getSelectedEditionIds(state)\n})\n\nexport const isBackButtonPage = state => {\n if (isDarknetQueryManager(state)) {\n return true\n }\n\n if (isDashboard(state)) {\n return false\n }\n\n if (isAdministrationSubmodule(state)) {\n return false\n }\n\n if (isContentDeskContentsAndCampaigns(state)) {\n return true\n }\n\n if (isContentDeskSubmodule(state)) {\n return false\n }\n\n if (isContactManagementSubmodule(state)) {\n return false\n }\n\n const matches = getCurrentPath(state).match(/\\/[^/]+/g)\n\n return Boolean(matches && matches.length >= 3)\n}\n\nconst removeKeysFromConfig = (oldConfigs, keys) => {\n let configs = oldConfigs\n configs = configs.deleteAll(keys)\n\n configs = configs.map(value => {\n if (Map.isMap(value) && value.has('chartTypes')) {\n return value.update(\n 'chartTypes',\n chartTypes => chartTypes.map(\n v => (\n v\n .update('secondLevels', sL => (List.isList(sL) ? sL.filter(s => keys.indexOf(s.get('name')) === -1) : sL))\n .update('thirdLevels', tL => (List.isList(tL) ? tL.filter(s => keys.indexOf(s.get('name')) === -1) : tL))\n )\n )\n )\n }\n\n return value\n })\n\n return configs\n}\n\nexport const getChartConfigs = state => {\n const hasTonality = getConfig(state).get('hasTonality')\n const isSuper = getConfig(state).get('isSuper')\n const capabilities = getCapabilities(state)\n const userId = getUser(state).get('id')\n let configs = getAllowedChartConfigs(state)\n\n if (!capabilities.get(Capabilities.HAS_CUSTOM_TAGS)) {\n configs = removeKeysFromConfig(configs, ['customTags'])\n }\n\n if (!capabilities.get(Capabilities.HAS_NEWSGUARD)) {\n configs = removeKeysFromConfig(configs, ['newsguardScoreRanges', 'newsguardRanks', 'newsguardScore', 'newsguardOrientations'])\n }\n\n if (!capabilities.get(Capabilities.HAS_MOZ)) {\n configs = removeKeysFromConfig(configs, ['mozDomainAuthority', 'mozPageAuthority', 'mozSpamScore'])\n }\n\n if (!hasTonality) {\n configs = removeKeysFromConfig(configs, ['tonality', 'tonalities'])\n }\n\n if (!isSuper) {\n configs = removeKeysFromConfig(configs, ['interfaces', 'suppliers'])\n }\n\n if (!isDashboard(state)) {\n configs = removeKeysFromConfig(configs, ['savedSearches'])\n }\n\n if (userId === 56558 || userId === 57869) {\n configs = removeKeysFromConfig(\n configs,\n [\n 'influencers',\n 'authorSexes',\n 'authorCities',\n 'authorCountries',\n 'authorBirthdateRanges',\n 'identityCount',\n 'karma',\n 'visits',\n 'ave',\n 'circulation'\n ]\n )\n }\n\n return configs\n}\n\nexport const getDashboardSelectedChartSortingOptions = createImmutableSelector(\n getSelectedChartData,\n getDashboardSelectedChartSavedSearchModuleName,\n getCapabilities,\n chart => {\n if (['topInfluencers', 'topPublications'].indexOf(chart.get('firstLevel')) !== -1) {\n const sortOptions = [\n 'buzz',\n 'reach',\n 'interactions',\n 'name'\n ]\n\n return sortOptions\n }\n\n return SortingOptions\n }\n)\n\nconst forbiddenQueryPatterns = [\n {\n pattern: /^\\*+$/,\n allowedCount: 0\n },\n {\n pattern: /^-\\S+$/,\n allowedCount: 0\n },\n {\n pattern: /^NOT \\S+$/,\n allowedCount: 0\n }\n]\n\nexport const isValidSearch = state => {\n const requiredFilters = getRequiredFilters(state)\n\n if (requiredFilters.isEmpty()) {\n return true\n }\n\n const activeFilters = getActiveFilters(state)\n\n const isFilterActive = filter => activeFilters.get(filter) && !activeFilters.get(filter).isEmpty()\n\n const requiredFiltersSet = requiredFilters.isEmpty() || requiredFilters.some(isFilterActive)\n const atLeastOneMust = activeFilters.valueSeq().toList().flatten(true).some(f => !f.get('inverted'))\n\n const newsQueries = activeFilters.get('newsQueries') || fromJS([])\n const authorQueries = activeFilters.get('authorQueries') || fromJS([])\n const publicationQueries = activeFilters.get('publicationQueries') || fromJS([])\n const queries = newsQueries.concat(authorQueries, publicationQueries)\n\n const validQueries = !queries.some(q => forbiddenQueryPatterns.some(f => (q.get('value').match(f.pattern) || []).length > f.allowedCount))\n\n return validQueries && requiredFiltersSet && atLeastOneMust\n}\n\nconst defaultChartBodySize = 10\n\nexport const getChartBodySize = chart => {\n if ([ChartTypes.TREEMAP, ChartTypes.TAG_CLOUD].indexOf(chart.get('type')) !== -1) {\n return defaultChartBodySize * 3\n }\n\n return defaultChartBodySize\n}\n\nconst fixLegacySecondLevels = secondLevel => {\n if (secondLevel === 'tonality') {\n return 'tonalities'\n }\n\n if (secondLevel === 'sentiment') {\n return 'sentiments'\n }\n\n return secondLevel\n}\n\nconst defaultChartBodySizeForExport = 100\n\nexport const getChartBodySizeForExport = (chart, type) => {\n if (type === 'xlsx') {\n return 10000\n }\n\n if (['emojis', 'hashtags', 'entities', 'analysisCodes'].indexOf(chart.get('firstLevel')) !== -1) {\n return defaultChartBodySizeForExport * 3\n }\n\n if (['entitiesPerson', 'entitiesOrganization', 'entitiesTopic', 'entitiesProduct'].indexOf(chart.get('firstLevel')) !== -1) {\n return defaultChartBodySizeForExport * 10\n }\n\n if (type === 'xlsx' && ['publications'].indexOf(chart.get('firstLevel')) !== -1 && ['reach'].indexOf(chart.get('thirdLevel')) !== -1) {\n return defaultChartBodySizeForExport * 5\n }\n\n return defaultChartBodySizeForExport\n}\n\nexport const getChartBody = (state, chart, searchBody, size) => {\n const timezone = getTimezone(state)\n const i18n = getI18n(state)\n const logo = getLogo(state)\n const autoLabel = !!chart.getIn(['opts', 'autoLabel'], true)\n\n const newSize = size || chart.getIn(['opts', 'size']) || getChartBodySize(chart)\n const label = generateChartLabel(chart, i18n, autoLabel)\n const topLabel = generateChartTopLabel(chart, i18n, autoLabel)\n const chartOpts = decamelizeKeysDeep((chart.get('opts') || fromJS({})).deleteAll(\n ['googleAnalytics', 'facebookAnalytics', 'linkedInAnalytics', 'moz', 'twitterAnalytics']\n ).toJS())\n\n const defaultBody = {\n data_source: chart.get('dataSource', ChartDataSources.PRESSRELATIONS_NEWS),\n bucket: chart.get('firstLevel'),\n metric: chart.get('thirdLevel'),\n group_by: chart.get('secondLevel'),\n date_from: chart.get('dateFrom'),\n date_to: chart.get('dateTo'),\n date_range: chart.get('dateRange'),\n date_interval: chart.get('dateInterval'),\n type: decamelize(chart.get('type')),\n ai_enabled: chart.get('aiEnabled'),\n chart_opts: chartOpts,\n label,\n top_label: topLabel,\n logo,\n timezone\n }\n\n let body\n\n if (isPressrelationsNewsChart(chart)) {\n const savedSearchId = chart.get('savedSearchId')\n\n if (savedSearchId || searchBody) {\n const opts = {\n date_type: chart.get('dateType'),\n saved_search_id: savedSearchId,\n additional_saved_search_ids: chart.get('additionalSavedSearchIds'),\n grouping_type: chart.get('groupingType'),\n sort_by: chart.get('sortBy'),\n // Need this in Opts as well for now, because of legacy\n date_range: chart.get('dateRange'),\n size: newSize\n }\n\n // Charts Module\n if (searchBody) {\n opts.search_params = searchBody\n\n // Dashboard\n } else {\n opts.saved_search_id = savedSearchId\n }\n\n body = {\n ...defaultBody,\n data_source_opts: opts,\n bucket: decamelize(chart.get('firstLevel')),\n metric: chart.get('thirdLevel') ? decamelize(chart.get('thirdLevel')) : null,\n group_by: chart.get('secondLevel') ? decamelize(fixLegacySecondLevels(chart.get('secondLevel'))) : null\n }\n }\n } else if (isGoogleAnalyticsChart(chart)) {\n body = {\n ...defaultBody,\n data_source_opts: decamelizeKeysDeep((chart.getIn(['opts', 'googleAnalytics']) || fromJS({})).toJS())\n }\n } else if (isMozChart(chart)) {\n body = {\n ...defaultBody,\n data_source_opts: decamelizeKeysDeep((chart.getIn(['opts', 'moz']) || fromJS({})).toJS())\n }\n } else if (isYoutubeAnalyticsChart(chart)) {\n body = {\n ...defaultBody,\n data_source_opts: {}\n }\n } else if (isLinkedInAnalyticsChart(chart)) {\n body = {\n ...defaultBody,\n data_source_opts: decamelizeKeysDeep((chart.getIn(['opts', 'linkedInAnalytics']) || fromJS({})).toJS())\n }\n } else if (isFacebookAnalyticsChart(chart)) {\n body = {\n ...defaultBody,\n data_source_opts: decamelizeKeysDeep((chart.getIn(['opts', 'facebookAnalytics']) || fromJS({})).toJS()),\n bucket: decamelize(chart.get('firstLevel'))\n }\n } else if (isTwitterAnalyticsChart(chart)) {\n body = {\n ...defaultBody,\n data_source_opts: decamelizeKeysDeep((chart.getIn(['opts', 'twitterAnalytics']) || fromJS({})).toJS()),\n bucket: decamelize(chart.get('firstLevel'))\n }\n } else if (isImageChart(chart)) {\n body = {\n ...defaultBody,\n data_source_opts: {},\n bucket: 'image'\n }\n } else if (isTextChart(chart)) {\n body = {\n ...defaultBody,\n data_source_opts: {},\n bucket: 'text'\n }\n } else if (isExternalWidgetChart(chart)) {\n body = {\n ...defaultBody,\n data_source_opts: {},\n bucket: 'external_widget'\n }\n }\n\n return body\n}\n\nexport const getDarknetQueries = state => {\n const config = getConfig(state)\n\n return config.get('darkowlScoreQueries', List())\n .map(q => q.set('type', 'score'))\n .concat(\n config.get('darkowlSearchQueries', List()).map(q => q.set('type', 'search'))\n )\n .sortBy(q => q.get('name'))\n}\n\nexport const getShowCookieDialog = state => {\n if (getCookieOption(state) && getCookieOption(state) !== '') {\n return false\n }\n\n if (isInfoboard(state)) {\n const savedDashboard = getSavedDashboard(state)\n\n return (\n !getSavedDashboardDisableCookies(state)\n && !getSavedDashboardFetchRequestRunning(state)\n && !(!savedDashboard || savedDashboard.isEmpty())\n )\n }\n\n return !isExternalChart(state) && !isSavedChart(state)\n}\n\nexport const getChartExternalWidgetUrl = (state, chart) => {\n if (chart.getIn(['opts', 'customWidgetUrl'])) {\n return chart.getIn(['opts', 'customWidgetUrl'])\n }\n\n const queryParams = new URLSearchParams({\n widget_content: chart.getIn(['opts', 'widgetContent'])\n })\n\n return `${getBffUrl(state)}/charts/render_widget?${queryParams.toString()}`\n}\n\nexport const getSelectedCodeFilters = state => {\n const types = getStaticMediaReviewTypesForSubscription(state)\n const selectedTypeIds = getSelectedEditionIds(state)\n const codeFilters = types\n .filter(t => selectedTypeIds.includes(t.get('id')))\n .map(t => t.get('codeFilter'))\n\n if (codeFilters.some(f => f.isEmpty())) {\n return List()\n }\n\n return codeFilters.flatten()\n}\n","import decamelize from 'decamelize'\nimport { fromJS, Set } from 'immutable'\n\nimport { ChartDataSources } from 'static/constants'\nimport { getChartConfigs } from '../../calculated'\nimport { getViewConfigModuleName } from '../view_config'\n\nimport { getI18n } from '../../i18n'\n\nconst popularFirstLevels = Set(['mediaReviewCodes', 'channels', 'customTags'])\nconst specialConfigs = fromJS([\n 'isNumber',\n 'isTimeline',\n 'isSavedSearchesTimeline',\n 'isNewsFeed',\n 'isTopInfluencers',\n 'isTopPublications',\n 'isPageIdentities',\n 'isPageIdentitiesTimeline',\n 'isImageFeed'\n])\n\nconst emptyList = fromJS([])\nconst emptyMap = fromJS({})\n\nconst filterByModuleNameAndDataSource = (chart, entities, state) => {\n const moduleName = chart.getIn(['savedSearch', 'moduleName']) || getViewConfigModuleName(state)\n const dataSource = chart.get('dataSource', ChartDataSources.PRESSRELATIONS_NEWS)\n\n return entities\n .filter(entity => {\n if (!moduleName || !entity.get('moduleNames')) {\n return true\n }\n\n return entity.get('moduleNames').includes(moduleName)\n })\n .filter(entity => {\n if (!entity.get('dataSources')) {\n return true\n }\n\n return entity.get('dataSources').includes(dataSource)\n })\n}\n\nconst getLabel = (state, label) => getI18n(state).get(decamelize(label))\n\nexport const getChartDialogNumberFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => value.get('isNumber')),\n state\n)\n .keySeq()\n .toList()\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogOtherFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => specialConfigs.every(key => !value.get(key))),\n state\n)\n .keySeq()\n .toList()\n .filterNot(value => popularFirstLevels.has(value))\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogPopularFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => specialConfigs.every(key => !value.get(key))),\n state\n)\n .keySeq()\n .toList()\n .filter(value => popularFirstLevels.has(value))\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogTimelineFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => value.get('isTimeline')),\n state\n)\n .keySeq()\n .toList()\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogSavedSearchesTimelineFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => value.get('isSavedSearchesTimeline')),\n state\n)\n .keySeq()\n .toList()\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogNewsFeedFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => value.get('isNewsFeed')),\n state\n)\n .keySeq()\n .toList()\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogTopInfluencersFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => value.get('isTopInfluencers')),\n state\n)\n .keySeq()\n .toList()\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogTopPublicationsFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => value.get('isTopPublications')),\n state\n)\n .keySeq()\n .toList()\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogPageIdentitiesTimelineFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => value.get('isPageIdentitiesTimeline')),\n state\n)\n .keySeq()\n .toList()\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogPageIdentitiesFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => value.get('isPageIdentities')),\n state\n)\n .keySeq()\n .toList()\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogImageFeedFirstLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).filter(value => value.get('isImageFeed')),\n state\n)\n .keySeq()\n .toList()\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogChartTypes = (state, chart) => (\n getChartConfigs(state).getIn([chart.get('firstLevel'), 'chartTypes'], emptyMap).keySeq().toList()\n .sortBy(item => getLabel(state, `chart_type_${item}`))\n)\n\nexport const getChartDialogSecondLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).getIn([chart.get('firstLevel'), 'chartTypes', chart.get('type'), 'secondLevels'], emptyList),\n state\n)\n .map(item => item.get('name'))\n .sortBy(item => getLabel(state, item))\n\nexport const getChartDialogThirdLevels = (state, chart) => filterByModuleNameAndDataSource(\n chart,\n getChartConfigs(state).getIn([chart.get('firstLevel'), 'chartTypes', chart.get('type'), 'thirdLevels'], emptyList),\n state\n)\n .map(item => item.get('name'))\n .sortBy(item => getLabel(state, item))\n","import { fromJS } from 'immutable'\nimport { createImmutableSelector } from 'utils/reselect'\n\nexport * from './chart_dialog'\n\nexport const getChartsData = state => state.news.getIn(['charts', 'data'])\nexport const getChartsPrevious = state => state.news.getIn(['charts', 'previous'])\n\nexport const getRawCharts = state => getChartsData(state).get('charts')\nexport const getChartsCharts = state => getRawCharts(state)\n\nexport const getChartsLayouts = state => getChartsData(state).get('layouts')\nexport const getChartsPreviousCharts = state => getChartsPrevious(state).get('charts')\nexport const getChartsPreviousLayouts = state => getChartsPrevious(state).get('layouts')\n\nexport const getChartsUi = state => state.news.getIn(['charts', 'ui'])\nexport const getChartsIsEditing = state => getChartsUi(state).get('isEditing')\nexport const getChartsIsRunning = state => getChartsUi(state).get('isRunning')\n\nexport const getChartsSelectedChart = state => getChartsUi(state).get('selectedChart')\nexport const getChartsSelectedChartIndex = state => getChartsUi(state).get('selectedChartIndex')\nexport const getChartsSelectedChartStepType = state => getChartsUi(state).get('selectedChartStepType')\nexport const getChartsShowChartDialog = state => getChartsUi(state).get('showChartDialog')\nexport const getAllowedChartConfigs = state => getChartsUi(state).get('allowedChartConfigs')\n\nexport const getChartsBreakpoints = createImmutableSelector(\n getChartsLayouts,\n layouts => layouts.reduce((acc, value, key) => (value.isEmpty() ? acc : acc.push(key)), fromJS([]))\n)\n\nexport const getChartsAiChartAnalysis = state => state.news.getIn(['charts', 'aiChartAnalysis'])\nexport const getChartsAiChartAnalysisShowDialog = state => getChartsAiChartAnalysis(state).get('showDialog')\nexport const getChartsAiChartAnalysisLoading = state => getChartsAiChartAnalysis(state).get('loading')\nexport const getChartsAiChartAnalysisChart = state => getChartsAiChartAnalysis(state).get('chart')\nexport const getChartsAiChartAnalysisAnalysis = state => getChartsAiChartAnalysis(state).get('analysis')\n\n// STATIC_CHARTS\nexport const getStaticChartsRawCharts = state => state.news.getIn(['staticCharts', 'charts'])\nexport const getStaticChartsLayouts = state => state.news.getIn(['staticCharts', 'layouts'])\nexport const getStaticChartsCharts = state => getStaticChartsRawCharts(state)\n","import { createImmutableSelector } from 'utils/reselect'\nimport { getStaticAnalysisCodesMap } from '../statics'\n\nexport const getNewsAnalysis = state => state.news.get('analysis')\nexport const getNewsAnalysisData = state => getNewsAnalysis(state).get('data')\n\nconst mapToCode = codes => code => (\n code\n .merge(codes.get(code.get('id').toString()))\n .update('subcodes', subcodes => subcodes.map(mapToCode(codes)))\n)\n\nconst groupedAnalysisCodesSelector = state => getNewsAnalysisData(state).get('groupedAnalysisCodes')\nconst groupedMediaReviewCodesSelector = state => getNewsAnalysisData(state).get('groupedMediaReviewCodes')\n\nexport const getGroupedAnalysisCodes = createImmutableSelector(\n state => state.news.getIn(['filter', 'analysis']),\n getStaticAnalysisCodesMap,\n groupedAnalysisCodesSelector,\n groupedMediaReviewCodesSelector,\n (analysis, codes, analysisGroups, mediaReviewGroups) => {\n if (analysis.get('useMediaReviewCodes')) {\n return mediaReviewGroups.map(group => group.update('nodes', nodes => nodes.map(mapToCode(codes))))\n }\n\n return analysisGroups.map(group => group.update('nodes', nodes => nodes.map(mapToCode(codes))))\n }\n)\n\nexport const getNewsAnalysisUi = state => getNewsAnalysis(state).get('ui')\nexport const getNewsAnalysisExpandedNodes = state => getNewsAnalysisUi(state).get('expandedNodes')\nexport const getNewsAnalysisExpandedNodesByType = (state, type) => getNewsAnalysisExpandedNodes(state).get(type)\nexport const getNewsAnalysisExpandedPanels = state => getNewsAnalysisUi(state).get('expandedPanels')\nexport const getNewsAnalysisExpandedPanelsByType = (state, type) => getNewsAnalysisExpandedPanels(state).get(type)\nexport const getNewsAnalysisShowPushChartToDashboardDialog = state => getNewsAnalysisUi(state).get('showPushChartToDashboardDialog')\nexport const getNewsAnalysisChartPushRunning = state => getNewsAnalysisUi(state).get('chartPushRunning')\n\nconst chartSelector = state => getNewsAnalysis(state).get('chart')\n\nexport const getNewsAnalysisChart = createImmutableSelector(\n chartSelector,\n state => state.news.getIn(['filter', 'analysis']),\n (chart, analysis) => {\n const codeIds = analysis.get('groupedCodes').map(c => c.get('id')).toSet()\n\n if (chart.get('firstLevel') === 'analysisCodes' && chart.get('secondLevel') === 'analysisCodes' && codeIds.isEmpty()) {\n return chart.delete('secondLevel')\n }\n\n return chart\n }\n)\n\nexport const getNewsAnalysisMetrics = state => getNewsAnalysis(state).get('metrics')\n","export const getFilterTimeline = state => state.news.get('filterTimeline')\nexport const getShowFilterTimeline = state => {\n const loading = getFilterTimeline(state).get('loading')\n const data = getFilterTimeline(state).get('data')\n\n return Boolean(data && data.size > 0) || loading\n}\n","import { getNewsByIds } from './data'\n\nexport * from './export'\nexport * from './shopping_cart'\nexport * from './media_review_detail'\nexport * from './ui'\nexport * from './edit_news'\nexport * from './shopping_news'\nexport * from './data'\nexport * from './aggregations'\nexport * from './view_config'\nexport * from './channel_status'\nexport * from './charts'\nexport * from './analysis'\nexport * from './filter_timeline'\n\nexport const getNews = state => state.news\nexport const getNewsGroupsSortOrder = state => getNews(state).get('groupSortOrder')\nexport const getNewsGroups = state => getNews(state).get('groups').map(group => (\n group.update('news', newsIds => getNewsByIds(state, newsIds))\n)).filter(group => !group.get('news').isEmpty())\nexport const getRawNewsGroups = state => getNews(state).get('groups')\nexport const getNewsGroupIds = state => getNews(state).get('groups').keySeq().toList()\nexport const getNewsGroupNewsIds = state => getNews(state).get('groups').valueSeq().flatMap(group => group.get('news'))\n .toList()\nexport const getPagingByGroupId = (state, id) => getNews(state).getIn(['paging', id.toString()])\nexport const getTotalNewsCount = state => getNews(state).get('total')\nexport const getUnclusteredNewsCount = state => getNews(state).get('count')\nexport const getSortBy = state => getNews(state).get('sortBy')\nexport const getSortDirection = state => getNews(state).get('sortDirection')\n\nexport const getDeletedNewsIds = state => getNews(state).get('deletedNewsIds')\n\nexport const getSelectedNewsIds = state => getNews(state).get('selectedNewsIds')\nexport const isNewsSelected = (state, id) => getSelectedNewsIds(state).has(id)\n","export const getMailingLists = state => state.mailingLists\nexport const getMailingListsDialog = state => getMailingLists(state).get('dialogs')\n\n// UI\nexport const getShowRemoveMailingListDialog = state => getMailingListsDialog(state).getIn(['ui', 'removeActive'])\nexport const getShowMailingListDialog = state => getMailingListsDialog(state).getIn(['ui', 'active'])\nexport const getSaveMailingListRunning = state => getMailingListsDialog(state).getIn(['ui', 'running'])\n\n// DATA\nexport const getSelectedMailingList = state => getMailingListsDialog(state).getIn(['data', 'selectedMailingList'])\n","import { createImmutableSelector } from 'utils/reselect'\nimport { getSavedSearchesData } from './saved_searches'\n\nexport const getSavedCharts = createImmutableSelector(\n state => state.savedCharts.get('data'),\n getSavedSearchesData,\n (savedCharts, savedSearches) => (\n savedCharts.map(savedChart => (\n savedChart.setIn(['chart', 'savedSearch'], savedSearches.getIn(['entities', savedChart.getIn(['chart', 'savedSearchId'])]))\n ))\n )\n)\n\nexport const getSavedChartsChart = state => state.savedCharts.getIn(['chart', 'data'])\nexport const getSavedChartsChartData = (state, id) => {\n const savedChart = getSavedChartsChart(state)\n\n if (savedChart.get('id') === id) {\n return savedChart.getIn(['chart', 'data'])\n }\n\n return null\n}\n\nexport const getSavedChartsUi = state => state.savedCharts.get('ui')\nexport const getSavedChartsSaving = state => getSavedChartsUi(state).get('saving')\nexport const getSavedChartsShowDialog = state => getSavedChartsUi(state).get('showDialog')\n","// UI\nexport const getPersonalSettingsUi = state => state.personalSettings.get('ui')\nexport const getPreviewUrl = state => getPersonalSettingsUi(state).get('previewUrl')\nexport const getUserImage = state => getPersonalSettingsUi(state).get('uploadedPhoto')\n","// UI\nexport const getNotificationsUi = state => state.notifications.get('ui')\nexport const getNotificationsDrawerOpen = state => getNotificationsUi(state).get('isDrawerOpen')\nexport const getIsReadRequestRunning = state => getNotificationsUi(state).get('readRequestRunning')\nexport const getIsFetchRequestRunning = state => getNotificationsUi(state).get('fetchRequestRunning')\nexport const getSelectedIds = state => getNotificationsUi(state).get('selectedIds')\n\n// DATA\nexport const getNotificationsData = state => state.notifications.get('data')\nexport const getNotifications = state => getNotificationsData(state).get('notifications')\n\n// FILTER\nexport const getNotificationsFilter = state => state.notifications.get('filter')\nexport const getNotificationsLastPage = state => getNotificationsFilter(state).get('lastPage')\n","// DATA\nexport const getETLibraryData = state => state.emailTemplatesLibrary.get('data')\nexport const getETLibraryPublicTemplates = state => getETLibraryData(state).get('publicTemplates')\nexport const getETLibraryPrivateTemplates = state => getETLibraryData(state).get('privateTemplates')\nexport const getETLibraryTemplateFormData = state => getETLibraryData(state).get('templateFormData')\n\n// UI\nexport const getETLibraryUi = state => state.emailTemplatesLibrary.get('ui')\nexport const getETLibraryShowEditorDialog = state => getETLibraryUi(state).get('showEditorDialog')\nexport const getETLibraryShowSaveDialog = state => getETLibraryUi(state).get('showSaveDialog')\nexport const getETLibraryShowPickerDialog = state => getETLibraryUi(state).get('showPickerDialog')\nexport const getETLibraryFetchRequestRunning = state => getETLibraryUi(state).get('fetchRequestRunning')\nexport const getETLibraryFetchAllRequestRunning = state => getETLibraryUi(state).get('fetchReleasedRequestRunning')\nexport const getETLibrarySaveRequestRunning = state => getETLibraryUi(state).get('saveRequestRunning')\nexport const getETLibraryDeleteRequestRunning = state => getETLibraryUi(state).get('deleteRequestRunning')\nexport const getETLibraryShowPublic = state => getETLibraryUi(state).get('showPublic')\nexport const getETLibraryReadMode = state => getETLibraryUi(state).get('readMode')\n\n// FILTERS\nexport const getETLibraryFilter = state => state.emailTemplatesLibrary.get('filter')\n\n// ADDITIONAL\nexport const getETLibraryTemplates = state => {\n const showPublic = getETLibraryShowPublic(state)\n\n return showPublic ? getETLibraryPublicTemplates(state) : getETLibraryPrivateTemplates(state)\n}\n","// DATA\nexport const getUnsplashData = state => state.unsplash.get('data')\nexport const getUnsplashFormData = state => getUnsplashData(state)\nexport const getUnsplashPhotos = state => getUnsplashData(state).get('photos')\n\n// UI\nexport const getUnsplashUi = state => state.unsplash.get('ui')\nexport const getShowUnsplashComponent = state => getUnsplashUi(state).get('showUnsplashComponent')\nexport const getUnsplashRequestRunning = state => getUnsplashUi(state).get('requestRunning')\nexport const getUnsplashDownloadRequestRunning = state => getUnsplashUi(state).get('downloadRequestRunning')\nexport const getUnsplashSelectedImageId = state => getUnsplashUi(state).get('selectedImageId')\nexport const getIsRandomSearch = state => getUnsplashUi(state).get('isRandomSearch')\n\n// FILTER\nexport const getUnsplashFilter = state => state.unsplash.get('filter')\nexport const getUnsplashPage = state => getUnsplashFilter(state).get('page')\nexport const getUnsplashPerPage = state => getUnsplashFilter(state).get('perPage')\nexport const getUnsplashOrderBy = state => getUnsplashFilter(state).get('orderBy')\n","// ADMINISTRATION\nexport const getAdministration = state => state.administration\nexport const getAdministrationData = state => getAdministration(state).get('data')\nexport const getAdministrationUi = state => getAdministration(state).get('ui')\nexport const getAdministrationFilter = state => getAdministration(state).get('filter')\n\n// CONTENT DESK SETTINGS ALLOWED DOMAINS DATA\nexport const getAllowedDomains = state => getAdministrationData(state).get('ccdAllowedDomains')\nexport const getAllowedDomainFormData = state => getAdministrationData(state).get('ccdAllowedDomainFormData')\nexport const getAllowedDomainStatus = state => getAdministrationData(state).get('ccdAllowedDomainStatus')\n\n// CONTENT DESK SETTINGS ALLOWED DOMAINS UI\nexport const getAllowedDomainsUi = state => getAdministrationUi(state).get('ccdAllowedDomains')\nexport const getAllowedDomainsRequestRunning = state => getAllowedDomainsUi(state).get('requestRunning')\nexport const getAllowedDomainsQuickSearchQuery = state => getAllowedDomainsUi(state).get('quickSearchQuery')\nexport const getAllowedDomainsNewAllowedDomain = state => getAllowedDomainsUi(state).get('newAllowedDomain')\nexport const getAllowedDomainsNewAllowedDomainRegion = state => getAllowedDomainsUi(state).get('newAllowedDomainRegion')\nexport const getAllowedDomainsNewAllowedSenderDomain = state => getAllowedDomainsUi(state).get('newAllowedSenderDomain')\nexport const getAllowedDomainsDeleteMode = state => getAllowedDomainsUi(state).get('deleteMode')\nexport const getAllowedDomainsInfoDialogOpen = state => getAllowedDomainsUi(state).get('infoDialogOpen')\nexport const getAllowedDomainsStatusDialogOpen = state => getAllowedDomainsUi(state).get('statusDialogOpen')\nexport const getDefaultAllowedDomainIds = state => getAllowedDomainsUi(state).get('defaultAllowedDomainIds')\n\n// CONTENT DESK SETTINGS ALLOWED DOMAINS FILTERS\nexport const getAllowedDomainsFilters = state => getAdministrationFilter(state).get('ccdAllowedDomains')\nexport const getAllowedDomainsPage = state => getAllowedDomainsFilters(state).get('page')\nexport const getAllowedDomainsLimit = state => getAllowedDomainsFilters(state).get('limit')\n\n","import { createImmutableSelector } from 'utils/reselect'\n\nimport { Map } from 'immutable'\nimport { configPresets } from 'reducers/news/view_config'\n\nexport const getNewsViewConfig = state => state.news.get('viewConfig')\nexport const getNewsGroupingType = state => getNewsViewConfig(state).get('groupingType')\nexport const getNewsWidgetConfig = state => getNewsViewConfig(state).get('newsWidget')\nexport const getInfluencerWidgetConfig = state => getNewsViewConfig(state).get('influencerWidget')\nexport const getPublicationWidgetConfig = state => getNewsViewConfig(state).get('publicationWidget')\nexport const getAllowedNewsViews = state => getNewsViewConfig(state).get('allowedViews')\nexport const getAllowedKeyFigures = state => getNewsViewConfig(state).get('allowedKeyFigures')\nexport const getAllowedDateTypes = state => getNewsViewConfig(state).get('allowedDateTypes')\nexport const getAllowedFilterFields = state => getNewsViewConfig(state).get('allowedFilterFields')\nexport const getAllowedFilterFieldGroups = state => getNewsViewConfig(state).get('allowedFilterFieldGroups')\nexport const getViewConfigAppBarTitleKey = state => getNewsViewConfig(state).get('appBarTitleKey')\nexport const getRequiredFilters = state => getNewsViewConfig(state).get('requiredFilters')\nexport const getViewConfigCapabilities = state => getNewsViewConfig(state).get('capabilities')\nexport const isAllowedNewsView = (state, ...names) => names.some(name => getNewsViewConfig(state).get('allowedViews').indexOf(name) !== -1)\nexport const getViewConfigDefaultDateType = state => getNewsViewConfig(state).get('defaultDateType')\nexport const getViewConfigNewsGroupHeaderFilterField = state => getNewsViewConfig(state).getIn(['newsGroupWidget', 'headerFilterField'])\nexport const getShowAllKeyFiguresInNewsGroupHeader = state => (\n getNewsViewConfig(state).getIn(['newsGroupWidget', 'showAllKeyFiguresInHeader'])\n)\nexport const getViewConfigNewsGroupIconMode = state => getNewsViewConfig(state).getIn(['newsGroupWidget', 'icon', 'mode'])\nexport const getViewConfigNewsGroupIcon = state => getNewsViewConfig(state).getIn(['newsGroupWidget', 'icon', 'icon'])\nexport const getViewConfigHasDateRestriction = state => getNewsViewConfig(state).get('hasDateRestriction')\nexport const getViewConfigHasSavedSearchesLimit = state => getNewsViewConfig(state).get('hasSavedSearchesLimit')\nexport const getViewConfigExportFormats = state => getNewsViewConfig(state).get('exportFormats')\n\nexport const getViewConfigNewsGroupPaging = state => getNewsViewConfig(state).getIn(['newsGroupWidget', 'paging'], Map())\nexport const getViewConfigNewsGroupPagingEntity = state => getViewConfigNewsGroupPaging(state).get('entity')\nexport const getViewConfigNewsGroupPagingField = state => getViewConfigNewsGroupPaging(state).get('field')\n\nexport const getViewConfigNewsPage = state => getNewsViewConfig(state).get('newsPage')\n\nexport const getViewConfigIndexType = state => getNewsViewConfig(state).get('indexType')\nexport const getViewConfigModuleName = state => getNewsViewConfig(state).get('moduleName')\nexport const getViewConfigSwitchableConfigs = createImmutableSelector(\n getViewConfigModuleName,\n moduleName => configPresets.keySeq().toList().filter(p => configPresets.getIn([p, 'moduleName']) === moduleName)\n)\n\nexport const getLastSeenNewsIdCookieName = state => getNewsViewConfig(state).get('lastSeenNewsIdCookieName')\n\nexport const getViewConfigUseAggregationValue = state => getNewsViewConfig(state).get('useAggregationValue')\n","import { createImmutableSelector } from 'utils/reselect'\nimport { getViewConfigModuleName } from './news/view_config'\n\n// DATA\nexport const getSavedSearchesData = state => state.savedSearches.get('data')\nexport const getAllSavedSearches = state => getSavedSearchesData(state).get('sorted')\nexport const getSavedSearchById = (state, id) => getSavedSearchesData(state).getIn(['entities', id])\nexport const getSavedSearchesDataSorted = state => getSavedSearchesData(state).get('sorted')\n\nexport const getSavedSearchesByModule = (state, moduleName) => (\n getSavedSearchesData(state).get('sorted').filter(s => s.get('moduleName') === moduleName)\n)\n\nexport const getSavedSearches = createImmutableSelector(\n getViewConfigModuleName,\n getSavedSearchesDataSorted,\n (moduleName, savedSearches) => savedSearches.filter(s => s.get('moduleName') === moduleName)\n)\n\n// UI\nexport const getSavedSearchesUi = state => state.savedSearches.get('ui')\nexport const getSavedSearchesLoading = state => getSavedSearchesUi(state).get('loading')\nexport const getInitialSearchLoaded = state => getSavedSearchesUi(state).get('initialSearchLoaded')\nexport const getSavedSearchDispatchesLoading = state => getSavedSearchesUi(state).get('dispatchesLoading')\nexport const getSavedSearchResolving = state => getSavedSearchesUi(state).get('resolving')\nexport const getSavedSearchViewType = state => getSavedSearchesUi(state).get('viewType')\nexport const getSavedSearchesTab = state => getSavedSearchesUi(state).get('tab')\n\n// DIALOGS\nexport const getSavedSearchesDialogs = state => state.savedSearches.get('dialogs')\n\n// DATA\nexport const getSelectedSavedSearch = state => getSavedSearchesDialogs(state).get('data').get('selectedSavedSearch')\nexport const getExecutedSavedSearch = state => getSavedSearchesDialogs(state).get('data').get('executedSavedSearch')\n\n// UI\nexport const getSavedSearchesDialogsUi = state => getSavedSearchesDialogs(state).get('ui')\nexport const getShowRemoveSavedSearchDialog = state => getSavedSearchesDialogsUi(state).get('removeActive')\nexport const getShowAffectedDashboardsDialog = state => getSavedSearchesDialogsUi(state).get('affectedDashboardsActive')\nexport const getShowUpdateSavedSearchDialog = state => getSavedSearchesDialogsUi(state).get('updateActive')\nexport const getShowEditSavedSearchDialog = state => getSavedSearchesDialogsUi(state).get('editActive')\nexport const getSavedSearchesUploadedPhoto = state => getSavedSearchesDialogsUi(state).get('uploadedPhoto')\nexport const getShowSavedSearchDispatchesDialog = state => getSavedSearchesDialogsUi(state).get('dispatchesActive')\nexport const getAffectedDashboards = state => getSavedSearchesDialogsUi(state).get('affectedDashboards')\n\n// TIMELINES\nexport const getSavedSearchesTimelines = state => state.savedSearches.get('timelines')\n\n// DISPATCHES\nexport const getSavedSearchDispatches = state => state.savedSearches.get('dispatches')\n\n// FEEDS\nexport const getSavedSearchesFeedsData = state => state.savedSearches.getIn(['feeds', 'data'])\nexport const getSavedSearchesFeedsDataSorted = state => state.savedSearches.getIn(['feeds', 'data', 'sorted'])\n\nexport const getSavedSearchesFeeds = createImmutableSelector(\n getViewConfigModuleName,\n getSavedSearchesFeedsDataSorted,\n getSavedSearchesData,\n (moduleName, feeds, savedSearches) => feeds\n .map(feed => feed.set('savedSearch', savedSearches.getIn(['entities', feed.get('savedSearchId')])))\n .filter(feed => feed.getIn(['savedSearch', 'moduleName']) === moduleName)\n)\n\nexport const getSavedSearchesFeedsTotalCount = state => getSavedSearchesFeedsData(state).get('entities').size\nexport const getSavedSearchesFeedsUi = state => state.savedSearches.getIn(['feeds', 'ui'])\nexport const getSavedSearchesFeedsUiExpandedId = state => getSavedSearchesFeedsUi(state).get('expandedId')\nexport const getSavedSearchesFeedsUiSaving = state => getSavedSearchesFeedsUi(state).get('saving')\nexport const getSavedSearchesFeedsUiDeleting = state => getSavedSearchesFeedsUi(state).get('deleting')\nexport const getSavedSearchesFeedsUiCreating = state => getSavedSearchesFeedsUi(state).get('creating')\n","/* eslint-disable max-len */\nimport { createImmutableSelector } from 'utils/reselect'\nimport { List, Map } from 'immutable'\n\n// DATA\nexport const getThemaxData = state => state.themax.get('data')\n\nexport const getThemaxSavedSearches = state => getThemaxData(state).get('savedSearches')\nexport const getSelectedEditorialPlan = state => getThemaxData(state).get('selectedEditorialPlan')\n\n// UI\nexport const getThemaxUi = state => state.themax.get('ui')\nexport const getThemaxQueryType = state => getThemaxUi(state).get('queryType')\nexport const getThemaxSearchBarLabel = state => getThemaxUi(state).get('searchBarLabel')\nexport const getThemaxSearchRequestRunning = state => getThemaxUi(state).get('searchRequestRunning')\nexport const getThemaxSearchEditorialPlansRunning = state => getThemaxUi(state).get('searchEditorialPlansRunning')\nexport const getThemaxSearchPublicationsRunning = state => getThemaxUi(state).get('searchPublicationsRunning')\nexport const getThemaxTabView = state => getThemaxUi(state).get('tabView')\nexport const getThemaxShowAdvancedSearch = state => getThemaxUi(state).get('showAdvancedSearch')\nexport const getThemaxShowDateForm = state => getThemaxUi(state).get('showDateForm')\nexport const getActiveThemaxFiltersCollapsed = state => getThemaxUi(state).get('activeFiltersCollapsed')\nexport const getThemaxSavedSearchesRequestRunning = state => getThemaxUi(state).get('requestRunning')\nexport const getThemaxModuleInitialized = state => getThemaxUi(state).get('moduleInitialized')\nexport const getThemaxShowDetailedViewDialog = state => getThemaxUi(state).get('showDetailedViewDialog')\nexport const getThemaxFetchMoreRequestRunning = state => getThemaxUi(state).get('fetchMoreRequestRunning')\nexport const getThemaxBookmarkRequestRunningFor = state => getThemaxUi(state).get('bookmarkRequestRunningFor')\nexport const getThemaxExcelExportRequestRunning = state => getThemaxUi(state).get('excelExportRequestRunning')\nexport const getShowWelcomeDialog = state => getThemaxUi(state).get('showWelcomeDialog')\nexport const getShowOrderDialog = state => getThemaxUi(state).get('showOrderDialog')\nexport const getShowOrderSuccessDialog = state => getThemaxUi(state).get('showOrderSuccessDialog')\nexport const getOrderRequestRunning = state => getThemaxUi(state).get('orderRequestRunning')\n\n// FILTERS\nexport const getThemaxFilters = state => state.themax.get('filter')\nexport const getActiveThemaxFilters = createImmutableSelector(\n getThemaxFilters,\n filters => filters.filter(value => List.isList(value))\n)\nexport const getActiveThemaxNumberFilters = createImmutableSelector(\n getThemaxFilters,\n filters => {\n let result = Map()\n\n if (filters.getIn(['reachFilter', 'filtered'])) {\n const reachMin = filters.getIn(['reachFilter', 'min'])\n\n if (reachMin) {\n result = result.set('reachMin', reachMin)\n }\n\n const reachMax = filters.getIn(['reachFilter', 'max'])\n\n if (reachMax) {\n result = result.set('reachMax', reachMax)\n }\n }\n\n if (filters.getIn(['pageAveFilter', 'filtered'])) {\n const pageAveMin = filters.getIn(['pageAveFilter', 'min'])\n\n if (pageAveMin) {\n result = result.set('pageAveMin', pageAveMin)\n }\n\n const pageAveMax = filters.getIn(['pageAveFilter', 'max'])\n\n if (pageAveMax) {\n result = result.set('pageAveMax', pageAveMax)\n }\n }\n\n return result\n }\n)\nexport const getActiveSelectedThemaxBooleans = createImmutableSelector(\n state => {\n const booleanFilters = getThemaxFilters(state).get('booleans')\n\n if (getThemaxTabView(state) === 'calendar') {\n return booleanFilters.delete('bookmarkedOnly')\n }\n\n return booleanFilters\n },\n booleans => booleans\n)\n\nexport const getThemaxSelectedDate = state => getThemaxFilters(state).get('selectedDate')\nexport const getThemaxEditorialPlansSortBy = state => getThemaxFilters(state).getIn(['editorialPlansSorting', 'sortBy'])\nexport const getThemaxEditorialPlansSortOrder = state => getThemaxFilters(state).getIn(['editorialPlansSorting', 'sortOrder'])\nexport const getThemaxPublicationsSortBy = state => getThemaxFilters(state).getIn(['publicationsSorting', 'sortBy'])\nexport const getThemaxPublicationsSortOrder = state => getThemaxFilters(state).getIn(['publicationsSorting', 'sortOrder'])\n\nconst queryFilters = queries => ({\n queries: queries.filter(tp => !tp.get('inverted')).map(q => ({ field: q.get('field'), value: q.get('value') })).toJS(),\n exclude_queries: queries.filter(tp => tp.get('inverted')).map(q => ({ field: q.get('field'), value: q.get('value') })).toJS()\n})\n\nexport const getThemaxEditorialPlansFilter = createImmutableSelector(\n getThemaxFilters,\n filters => ({\n bookmarked: filters.getIn(['booleans', 'bookmarkedOnly']),\n editorial_deadline_range: filters.getIn(['selectedDate', 'range']),\n editorial_deadline_from: filters.getIn(['selectedDate', 'from']),\n editorial_deadline_to: filters.getIn(['selectedDate', 'to']),\n ...queryFilters(filters.get('topicPlanQueries'))\n })\n)\n\nexport const getThemaxPublicationsFilter = createImmutableSelector(\n getThemaxFilters,\n filters => {\n const result = {}\n\n if (filters.get('mediaTypes').size > 0) {\n result.media_type_ids = filters.get('mediaTypes')\n .filter(mt => !mt.get('inverted'))\n .map(mt => mt.get('id')).toJS()\n\n result.exclude_media_type_ids = filters.get('mediaTypes')\n .filter(mt => mt.get('inverted'))\n .map(mt => mt.get('id')).toJS()\n }\n\n if (filters.get('mediaTopics').size > 0) {\n result.media_topic_ids = filters.get('mediaTopics')\n .filter(mt => !mt.get('inverted'))\n .map(mt => mt.get('id')).toJS()\n\n result.exclude_media_topic_ids = filters.get('mediaTopics')\n .filter(mt => mt.get('inverted'))\n .map(mt => mt.get('id')).toJS()\n }\n\n if (filters.get('countries').size > 0) {\n result.country_ids = filters.get('countries')\n .filter(c => !c.get('inverted'))\n .map(c => c.get('id')).toJS()\n\n result.exclude_country_ids = filters.get('countries')\n .filter(c => c.get('inverted'))\n .map(c => c.get('id')).toJS()\n }\n\n if (filters.getIn(['pageAveFilter', 'filtered'])) {\n const pageAveMin = filters.getIn(['pageAveFilter', 'min'])\n\n if (pageAveMin) {\n result.page_ave_min = pageAveMin\n }\n\n const pageAveMax = filters.getIn(['pageAveFilter', 'max'])\n\n if (pageAveMax) {\n result.page_ave_max = pageAveMax\n }\n }\n\n if (filters.getIn(['reachFilter', 'filtered'])) {\n const reachMin = filters.getIn(['reachFilter', 'min'])\n\n if (reachMin) {\n result.reach_min = reachMin\n }\n\n const reachMax = filters.getIn(['reachFilter', 'max'])\n\n if (reachMax) {\n result.reach_max = reachMax\n }\n }\n\n if (filters.get('publication').size > 0) {\n result.ids = filters.get('publication')\n .filter(p => !p.get('inverted'))\n .map(p => p.get('id')).toJS()\n\n result.exclude_ids = filters.get('publication')\n .filter(p => p.get('inverted'))\n .map(p => p.get('id')).toJS()\n }\n\n return { ...result, ...queryFilters(filters.get('publicationQueries')) }\n }\n)\n","/* global window */\nimport { fromJS } from 'immutable'\n\nimport { getStage } from './environment'\n\nconst { protocol, host, pathname } = window.location\n\nexport const getWhiteLabelConfig = state => state.whitelabel\nexport const getWhitelabelColors = state => getWhiteLabelConfig(state).get('colors')\nexport const getLogo = state => getWhiteLabelConfig(state).get('logo')\nexport const getEmailLogo = state => getWhiteLabelConfig(state).get('emailLogo') || getLogo(state)\nexport const getWhitelabelEmailAddress = state => getWhiteLabelConfig(state).get('emailAddress')\nexport const getWhitelabelFavicon = state => getWhiteLabelConfig(state).get('favicon')\nexport const getWhitelabelTitle = state => getWhiteLabelConfig(state).get('title')\nexport const getWhitelabelEmotionals = state => getWhiteLabelConfig(state).get('emotionals') || fromJS([])\nexport const getHasMyNews = state => getWhiteLabelConfig(state).get('hasMyNews')\nexport const getLoginTypes = state => getWhiteLabelConfig(state).get('loginTypes')\nexport const getAzureSsoConfig = state => getWhiteLabelConfig(state).getIn(['sso', 'azure'])\nexport const getBaseUrl = () => `${protocol}//${host}${pathname}`.replace(/\\/$/, '')\nexport const getBffUrl = state => {\n const url = getWhiteLabelConfig(state).getIn(['bffUrl', getStage(state)])\n\n if (url === '{DEFAULT}') {\n return `${getBaseUrl()}/bff`\n }\n\n return url\n}\n\nexport const getWhitelabelLoginLinks = state => getWhiteLabelConfig(state).get('loginLinks')\nexport const getWhitelabelLegalNoticeLink = state => getWhitelabelLoginLinks(state).get('legalNotice')\nexport const getWhitelabelPrivacyLink = state => getWhitelabelLoginLinks(state).get('privacy')\nexport const getWhitelabelTermsAndConditionsLink = state => getWhitelabelLoginLinks(state).get('termsAndConditions')\nexport const getWhitelabelHomepageName = state => getWhitelabelLoginLinks(state).getIn(['homepage', 'name'])\nexport const getWhitelabelHomepageLink = state => getWhitelabelLoginLinks(state).getIn(['homepage', 'link'])\nexport const getWhitelabelProgressLetters = state => getWhiteLabelConfig(state).get('progressLetters')\nexport const getWhitelabelTheme = state => getWhiteLabelConfig(state).get('theme')\nexport const isPlotlights = state => getWhitelabelTheme(state) === 'plotlights'\n","export const FilterNameMapping = {\n news: {\n aiEntities: 'ai_entity_id',\n customTagGroups: 'custom_tag_group_id',\n customTags: 'custom_tag_id',\n emojis: 'emoji',\n entities: 'entity_name',\n entitiesPerson: 'entity_person_name',\n entitiesOrganization: 'entity_organization_name',\n entitiesTopic: 'entity_topic_name',\n entitiesProduct: 'entity_product_name',\n entitiesLocation: 'entity_location_name',\n groupedStatementCodes: 'grouped_statement_code_id',\n hashtags: 'hashtag',\n identities: 'identity_id',\n languages: 'language_id',\n mediaReviewCodes: 'mediareview_code_id',\n mediaReviewTypes: 'media_review_type_id',\n mediaTopics: 'media_topic_id',\n mentions: 'mention',\n newsStatementTonalities: 'news_statement_tonality',\n pageIdentities: 'page_identity_id',\n publications: 'publication_id',\n sentiments: 'sentiment',\n statementCodes: 'statement_code_id',\n tonalities: 'tonality',\n outlinks: 'outlink_id',\n domains: 'domain',\n interfaces: 'interface_id',\n suppliers: 'supplier_id',\n analysis: {\n selectedCodes: 'selected_code_ids',\n restrictedCodes: 'restricted_code_ids',\n excludedCodes: 'excluded_code_ids',\n groupedCodes: 'grouped_code_ids',\n statementTonalities: 'statement_tonalities'\n },\n similarity: {\n ccdContents: 'ccd_content_ids',\n ccdCampaigns: 'ccd_campaign_ids'\n }\n },\n publication: {\n channels: 'channel_id',\n countries: 'country_id',\n distributionAreas: 'distribution_area_ids',\n filterGroups: 'filter_group_ids',\n mediaTypes: 'media_type_id',\n newsguardRanks: 'newsguard_rank',\n newsguardOrientations: 'newsguard_orientation_id',\n newsguardScoreRanges: 'newsguard_score_range',\n states: 'state_id'\n },\n pageIdentity: {\n identitySets: 'identity_set_ids'\n },\n outlink: {\n outlinkDomains: 'domain',\n outlinkUrls: 'url'\n }\n}\n\nexport const NewsPageViews = {\n NEWS: 'news',\n BACKWARDS_NEWS: 'backwards_news',\n INFLUENCERS: 'influencers',\n PUBLICATIONS: 'publications',\n CHARTS: 'charts',\n PIN_BOARDS: 'pin_boards',\n STATISTICS: 'statistics',\n PROFILES: 'profiles',\n POSTS: 'posts',\n SAVED_SEARCHES: 'saved_searches',\n STATIC_CHARTS: 'static_charts',\n ANALYSIS_QUERIES: 'analysis_queries'\n}\n\nexport const NewsPageModules = {\n NEWS: 'news',\n ANALYSIS: 'analysis',\n PROFILE_MONITORING: 'profile_monitoring',\n NEWS_POOL: 'news_pool'\n}\n\nexport const CustomTagsNewsTypes = {\n [NewsPageModules.NEWS_POOL]: 'backwards_news',\n [NewsPageModules.NEWS]: 'default',\n [NewsPageModules.ANALYSIS]: 'default',\n [NewsPageModules.PROFILE_MONITORING]: 'default'\n}\n\nexport const NewsPageViewTypes = {\n LISTVIEW: 'list_view',\n CARDVIEW: 'card_view'\n}\n\nexport const DefaultExportFormats = ['pdf', 'xlsx', 'html', 'txt', 'xml', 'xml_pure', 'json', 'json_pure']\n\nexport const InitialRoutes = {\n DASHBOARD: '/app/dashboard',\n NEWSBOARD: '/app/news',\n PROFILE_MONITORING: '/app/profile_monitoring',\n SEARCH_POOL: '/app/search_pool',\n MEDIA_MONITORING: '/app/media_monitoring',\n MEDIA_REVIEWS: '/app/media_reviews',\n CONTENT_DESK: '/app/content_desk/content_management',\n CONTACT_DATABASE_MODULE: '/app/contact_management/my_contacts',\n ANEWSTIP: '/app/contact_management/journalist_search',\n THEMAX: '/app/themax'\n}\n\nexport const DateTypes = {\n ARTICLE: 'article',\n MEDIA_REVIEW: 'mediareview'\n}\n\nexport const KeyFigures = {\n BUZZ: 'buzz',\n INTERACTIONS: 'interactions',\n REACH: 'reach',\n CHANNEL_KEY_FIGURES: 'channelKeyFigures',\n TOP_NEGATIVE_SENTIMENT: 'top_negative_sentiment',\n TOP_POSITIVE_SENTIMENT: 'top_positive_sentiment'\n}\n\nexport const AllowedKeyFigures = {\n DEFAULT: [\n KeyFigures.BUZZ,\n KeyFigures.REACH,\n KeyFigures.INTERACTIONS,\n KeyFigures.CHANNEL_KEY_FIGURES\n ],\n BACKWARDS_NEWS: [\n KeyFigures.BUZZ,\n KeyFigures.REACH,\n KeyFigures.INTERACTIONS,\n KeyFigures.CHANNEL_KEY_FIGURES,\n KeyFigures.TOP_NEGATIVE_SENTIMENT,\n KeyFigures.TOP_POSITIVE_SENTIMENT\n ]\n\n}\n\nexport const SearchFields = {\n AI_ENTITIES: 'aiEntities',\n AUTHOR_QUERIES: 'authorQueries',\n BOOLEANS: 'booleans',\n CHANNELS: 'channels',\n COUNTRIES: 'countries',\n CUSTOM_TAGS: 'customTags',\n CUSTOM_TAG_GROUPS: 'customTagGroups',\n DISTRIBUTION_AREAS: 'distributionAreas',\n DOMAINS: 'domains',\n OUTLINKS: 'outlinks',\n OUTLINK_DOMAINS: 'outlinkDomains',\n OUTLINK_URLS: 'outlinkUrls',\n EMOJIS: 'emojis',\n ENTITIES: 'entities',\n ENTITIES_PERSON: 'entitiesPerson',\n ENTITIES_ORGANIZATION: 'entitiesOrganization',\n ENTITIES_TOPIC: 'entitiesTopic',\n ENTITIES_PRODUCT: 'entitiesProduct',\n ENTITIES_LOCATION: 'entitiesLocation',\n EXCLUDE_RETWEETS: 'excludeRetweets',\n EXCLUDE_VISITOR_POSTS: 'excludeVisitorPosts',\n EXCLUDE_COMMENTS: 'excludeComments',\n FILTER_GROUPS: 'filterGroups',\n GEO_BOUNDING_BOX: 'geoBoundingBox',\n GLOBAL_CLUSTERS: 'globalClusters',\n HASHTAGS: 'hashtags',\n MENTIONS: 'mentions',\n IDENTITIES: 'identities',\n IDENTITY_SETS: 'identitySets',\n INFLUENCERS: 'influencers',\n INTERFACES: 'interfaces',\n SUPPLIERS: 'suppliers',\n LANGUAGES: 'languages',\n MEDIA_REVIEW_CODES: 'mediaReviewCodes',\n MEDIA_REVIEW_TYPES: 'mediaReviewTypes',\n MEDIA_TOPICS: 'mediaTopics',\n MEDIA_TYPES: 'mediaTypes',\n NEWS_QUERIES: 'newsQueries',\n PAGE_IDENTITIES: 'pageIdentities',\n PUBLICATION_QUERIES: 'publicationQueries',\n PUBLICATIONS: 'publications',\n SENTIMENTS: 'sentiments',\n SIMILARITY_CCD_CONTENTS: 'similarityCcdContents',\n SIMILARITY_CCD_CAMPAIGNS: 'similarityCcdCampaigns',\n SUMMARIZED_ONLY: 'summarizedOnly',\n TONALITIES: 'tonalities',\n ANALYSIS: 'analysis',\n STATEMENT_CODES: 'statementCodes',\n GROUPED_STATEMENT_CODES: 'groupedStatementCodes',\n NEWS_STATEMENT_TONALITIES: 'newsStatementTonalities',\n NEWSGUARD_RANKS: 'newsguardRanks',\n NEWSGUARD_ORIENTATIONS: 'newsguardOrientations',\n WITH_OUTLINKS_ONLY: 'withOutlinksOnly',\n WITHOUT_OUTLINKS_ONLY: 'withoutOutlinksOnly',\n STATES: 'states'\n}\n\nexport const DarknetSearchFields = {\n DARKNET_SEARCH_QUERIES: 'darknetSearchQueries',\n MIN_HACKISHNESS: 'minHackishness',\n NETWORKS: 'networks'\n}\n\nexport const SearchFieldGroups = {\n NEWS: 'news',\n INFLUENCERS: 'influencers',\n PUBLICATIONS: 'publications'\n}\n\nexport const IndexTypes = {\n DEFAULT: 'default',\n BACKWARDS_NEWS: 'backwards_news'\n}\n\nexport const GroupingTypes = {\n CHANNEL: 'channel',\n MEDIA_REVIEW_CODE: 'media_review_code',\n CUSTOM_TAG: 'custom_tag',\n PAGE_IDENTITY: 'page_identity',\n UNGROUPED: 'ungrouped',\n UNGROUPED_PAGE_IDENTITY: 'ungrouped_page_identity',\n NEWSGUARD_RANK: 'newsguard_rank'\n}\n\nexport const Capabilities = {\n HAS_28_DAYS_EXPIRY: 'HAS_28_DAYS_EXPIRY',\n HAS_ADMINISTRATION_MODULE: 'HAS_ADMINISTRATION_MODULE',\n HAS_ADVERTISING_BANNER_FEATURE: 'HAS_ADVERTISING_BANNER_FEATURE',\n HAS_ANALYSIS_INFLUENCER_DETAILS_FEATURE: 'HAS_ANALYSIS_INFLUENCER_DETAILS_FEATURE',\n HAS_ANALYSIS_INFLUENCERS_MODULE: 'HAS_ANALYSIS_INFLUENCERS_MODULE',\n HAS_ANALYSIS_MODULE: 'HAS_ANALYSIS_MODULE',\n HAS_ANALYSIS_PUBLICATIONS_MODULE: 'HAS_ANALYSIS_PUBLICATIONS_MODULE',\n HAS_ANALYSIS_SAVED_SEARCHES_EDITING_FEATURE: 'HAS_ANALYSIS_SAVED_SEARCHES_EDITING_FEATURE',\n HAS_ANALYSIS_SAVED_SEARCHES: 'HAS_ANALYSIS_SAVED_SEARCHES',\n HAS_ANALYSIS_SAVED_SEARCHES_FEEDS: 'HAS_ANALYSIS_SAVED_SEARCHES_FEEDS',\n HAS_CONTACTS_MANAGEMENT_ANEWSTIP_API_KEY_EDITING_FEATURE: 'HAS_CONTACTS_MANAGEMENT_ANEWSTIP_API_KEY_EDITING_FEATURE',\n HAS_CONTACTS_MANAGEMENT_ANEWSTIP: 'HAS_CONTACTS_MANAGEMENT_ANEWSTIP',\n HAS_AUTOMATIC_SEARCH_RESULT_TRANSLATIONS: 'HAS_AUTOMATIC_SEARCH_RESULT_TRANSLATIONS',\n HAS_CHARTS_MODULE: 'HAS_CHARTS_MODULE',\n HAS_CUSTOM_TAG_ASSISTANT: 'HAS_CUSTOM_TAG_ASSISTANT',\n HAS_CUSTOM_TAG_RSS_EXPORT: 'HAS_CUSTOM_TAG_RSS_EXPORT',\n HAS_CUSTOM_TAGS: 'HAS_CUSTOM_TAGS',\n HAS_CUSTOM_TAGS_MODULE: 'HAS_CUSTOM_TAGS_MODULE',\n HAS_CUSTOM_TAG_XML_EXPORT: 'HAS_CUSTOM_TAG_XML_EXPORT',\n HAS_CUSTOM_TAG_JSON_EXPORT: 'HAS_CUSTOM_TAG_JSON_EXPORT',\n HAS_DASHBOARD_EDITING_FEATURE: 'HAS_DASHBOARD_EDITING_FEATURE',\n HAS_DASHBOARD_MODULE: 'HAS_DASHBOARD_MODULE',\n HAS_DASHBOARD_PUBLISHING_FEATURE: 'HAS_DASHBOARD_PUBLISHING_FEATURE',\n HAS_DELETE_NEWS_FEATURE: 'HAS_DELETE_NEWS_FEATURE',\n HAS_EDITING_DUMMY_MODULE: 'HAS_EDITING_DUMMY_MODULE',\n HAS_EDITING_FEATURE: 'HAS_EDITING_FEATURE',\n HAS_EDITING_FULLTEXT_FEATURE: 'HAS_EDITING_FULLTEXT_FEATURE',\n HAS_EXTERNAL_ACCOUNT_SETTINGS: 'HAS_EXTERNAL_ACCOUNT_SETTINGS',\n HAS_EXTERNAL_ANALYTICS: 'HAS_EXTERNAL_ANALYTICS',\n HAS_GLOBAL_SETTINGS: 'HAS_GLOBAL_SETTINGS',\n HAS_INFLUENCER_DETAILS_FEATURE: 'HAS_INFLUENCER_DETAILS_FEATURE',\n HAS_INFLUENCERS_MODULE: 'HAS_INFLUENCERS_MODULE',\n HAS_MAILING_LISTS: 'HAS_MAILING_LISTS',\n HAS_MEDIA_REVIEW_DISPATCH_FEATURE: 'HAS_MEDIA_REVIEW_DISPATCH_FEATURE',\n HAS_MEDIA_REVIEW_EDITING_FEATURE: 'HAS_MEDIA_REVIEW_EDITING_FEATURE',\n HAS_MEDIA_REVIEW_MODULE: 'HAS_MEDIA_REVIEW_MODULE',\n HAS_NEWS_MODULE: 'HAS_NEWS_MODULE',\n HAS_NEWS_POOL_DELETE_NEWS_FEATURE: 'HAS_NEWS_POOL_DELETE_NEWS_FEATURE',\n HAS_NEWS_POOL_EDITING_FEATURE: 'HAS_NEWS_POOL_EDITING_FEATURE',\n HAS_NEWS_POOL_EXPORT: 'HAS_NEWS_POOL_EXPORT',\n HAS_NEWS_POOL_INFLUENCER_DETAILS_FEATURE: 'HAS_NEWS_POOL_INFLUENCER_DETAILS_FEATURE',\n HAS_NEWS_POOL_INFLUENCERS_MODULE: 'HAS_NEWS_POOL_INFLUENCERS_MODULE',\n HAS_NEWS_POOL_MODULE: 'HAS_NEWS_POOL_MODULE',\n HAS_NEWS_POOL_PUBLICATIONS_MODULE: 'HAS_NEWS_POOL_PUBLICATIONS_MODULE',\n HAS_NEWS_POOL_SAVED_SEARCHES_EDITING_FEATURE: 'HAS_NEWS_POOL_SAVED_SEARCHES_EDITING_FEATURE',\n HAS_NEWS_POOL_SAVED_SEARCHES: 'HAS_NEWS_POOL_SAVED_SEARCHES',\n HAS_NEWS_POOL_SAVED_SEARCHES_SMS_ALERTING_FEATURE: 'HAS_NEWS_POOL_SAVED_SEARCHES_SMS_ALERTING_FEATURE',\n HAS_NEWS_POOL_SAVED_SEARCHES_FEEDS: 'HAS_NEWS_POOL_SAVED_SEARCHES_FEEDS',\n HAS_NEWS_SAVED_SEARCHES_EDITING_FEATURE: 'HAS_NEWS_SAVED_SEARCHES_EDITING_FEATURE',\n HAS_NEWS_SAVED_SEARCHES: 'HAS_NEWS_SAVED_SEARCHES',\n HAS_NEWS_SAVED_SEARCHES_FEEDS: 'HAS_NEWS_SAVED_SEARCHES_FEEDS',\n HAS_MOZ: 'HAS_MOZ',\n HAS_PROFILE_MONITORING_MODULE: 'HAS_PROFILE_MONITORING_MODULE',\n HAS_PROFILE_MONITORING_SAVED_SEARCHES_EDITING_FEATURE: 'HAS_PROFILE_MONITORING_SAVED_SEARCHES_EDITING_FEATURE',\n HAS_PROFILE_MONITORING_SAVED_SEARCHES: 'HAS_PROFILE_MONITORING_SAVED_SEARCHES',\n HAS_PROFILE_MONITORING_SAVED_SEARCHES_FEEDS: 'HAS_PROFILE_MONITORING_SAVED_SEARCHES_FEEDS',\n HAS_PUBLICATIONS_MODULE: 'HAS_PUBLICATIONS_MODULE',\n HAS_RTV_ORDER_FEATURE: 'HAS_RTV_ORDER_FEATURE',\n HAS_SHOPPING_CART: 'HAS_SHOPPING_CART',\n HAS_SUBSCRIPTIONS_MODULE: 'HAS_SUBSCRIPTIONS_MODULE',\n HAS_US_TUTORIALS: 'HAS_US_TUTORIALS',\n HAS_XML_EXPORT: 'HAS_XML_EXPORT',\n HAS_JSON_EXPORT: 'HAS_JSON_EXPORT',\n HAS_NEWSGUARD: 'HAS_NEWSGUARD',\n HAS_DARKNET_MODULE: 'HAS_DARKNET_MODULE',\n HAS_DARKNET_DASHBOARD: 'HAS_DARKNET_DASHBOARD',\n HAS_DARKNET_QUERY_MANAGER: 'HAS_DARKNET_QUERY_MANAGER',\n HAS_EXTERNAL_CONVENTO_LINK: 'HAS_EXTERNAL_CONVENTO_LINK',\n HAS_DISABLED_USER_SETTINGS: 'HAS_DISABLED_USER_SETTINGS',\n HAS_CONTENT_DESK_MODULE: 'HAS_CONTENT_DESK_MODULE',\n HAS_CONTENT_DESK_LINKED_IN: 'HAS_CONTENT_DESK_LINKED_IN',\n HAS_CONTENT_DESK_FACEBOOK: 'HAS_CONTENT_DESK_FACEBOOK',\n HAS_CONTENT_DESK_OTS_PR: 'HAS_CONTENT_DESK_OTS_PR',\n HAS_CONTACTS_MANAGEMENT_MODULE: 'HAS_CONTACTS_MANAGEMENT_MODULE',\n HAS_SAVED_CHARTS: 'HAS_SAVED_CHARTS',\n HAS_TRANSLATION_FEATURE: 'HAS_TRANSLATION_FEATURE',\n HAS_DISPATCH_LOG: 'HAS_DISPATCH_LOG',\n HAS_CONTENT_DESK_PUBLIC_TEMPLATES_READ_RIGHTS: 'HAS_CONTENT_DESK_PUBLIC_TEMPLATES_READ_RIGHTS',\n HAS_CONTENT_DESK_PUBLIC_TEMPLATES_WRITE_RIGHTS: 'HAS_CONTENT_DESK_PUBLIC_TEMPLATES_WRITE_RIGHTS',\n HAS_CONTENT_DESK_ALLOWED_DOMAINS_SETTINGS: 'HAS_CONTENT_DESK_ALLOWED_DOMAINS_SETTINGS',\n HAS_AI_SUMMARY_FEATURE: 'HAS_AI_SUMMARY_FEATURE',\n HAS_THE_MAX_MODULE: 'HAS_THE_MAX_MODULE',\n HAS_THE_MAX_PAID_VERSION: 'HAS_THE_MAX_PAID_VERSION'\n}\n\nexport const AlertTypes = {\n NONE: 'none',\n INSTANTLY: 'instantly',\n HOURLY: 'hourly',\n DAILY: 'daily',\n DAILY_THRESHOLD: 'daily_threshold'\n}\n\nexport const CustomTagAfterExportActions = {\n NONE: 'none',\n PURGE: 'purge',\n SUBSTITUTE: 'substitute'\n}\n\nexport const NewsPageSize = 10\nexport const NewsPageMoreNewsSize = 50\nexport const ChartGridRowHeight = 95\nexport const ChartLimits = [3, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]\n\nexport const StepTypes = {\n KPI: 'kpi',\n CHARTS: 'charts',\n TIMELINE: 'timeline',\n SAVED_SEARCHES_TIMELINE: 'saved_searches_timeline',\n NEWS_FEED: 'news_feed',\n TOP_INFLUENCERS: 'top_influencers',\n TOP_PUBLICATIONS: 'top_publications',\n PAGE_IDENTITIES_TIMELINE: 'page_identities_timeline',\n PAGE_IDENTITIES: 'page_identities',\n IMAGE_FEED: 'image_feed'\n}\n\nexport const ChartDataSources = {\n PRESSRELATIONS_NEWS: 'pressrelations_news',\n GOOGLE_ANALYTICS: 'google_analytics',\n MOZ: 'moz',\n YOUTUBE_ANALYTICS: 'youtube_analytics',\n LINKED_IN_ANALYTICS: 'linked_in_analytics',\n FACEBOOK_ANALYTICS: 'facebook_analytics',\n TWITTER_ANALYTICS: 'twitter_analytics',\n IMAGE: 'image',\n TEXT: 'text',\n EXTERNAL_WIDGET: 'external_widget'\n}\n\nexport const ChartTypes = {\n AREA: 'area',\n BAR: 'bar',\n BUBBLE: 'bubble',\n EXTERNAL_WIDGET: 'externalWidget',\n FUNNEL: 'funnel',\n GAUGE: 'gauge',\n HEATMAP: 'heatmap',\n HORIZONTAL_BAR: 'horizontalBar',\n IMAGE: 'image',\n IMAGE_FEED: 'imageFeed',\n INFLUENCER_FEED: 'influencerFeed',\n LINE: 'line',\n NEWS_FEED: 'newsFeed',\n NEWS_TICKER: 'newsTicker',\n PAGE_IDENTITY_FEED: 'pageIdentityFeed',\n PIE: 'pie',\n PUBLICATION_FEED: 'publicationFeed',\n RADAR: 'radar',\n RADIAL_BAR: 'radialBar',\n RECTANGLE: 'rectangle',\n SOCIAL_MEDIA_ANALYTICS_FEED: 'socialMediaAnalyticsFeed',\n SOCIAL_MEDIA_ANALYTICS_STORIES_FEED: 'socialMediaAnalyticsStoriesFeed',\n STATE_MAP: 'stateMap',\n TAG_CLOUD: 'tagCloud',\n TEXT: 'text',\n TREEMAP: 'treemap',\n WORLD_MAP: 'worldMap'\n}\n\nexport const CookieNames = {\n NEWSRADAR: 'groot_newsradar',\n INITIAL_ROUTE: 'groot_initial_route',\n SESSION: 'groot_session',\n ACCESS_TOKEN: 'groot_access_token',\n COOKIES_ACCEPTED: 'groot_cookies_accepted'\n}\n\nexport const DateModes = {\n DATE_RANGE: 'date_range',\n DATE: 'date',\n RELATIVE: 'relative'\n}\n\nexport const Networks = [\n { name: 'Onion', id: 'onion', forDarkowlSearchQuery: true },\n { name: 'Telegram', id: 'telegram', forDarkowlSearchQuery: true },\n { name: 'I2P', id: 'i2p', forDarkowlSearchQuery: true },\n { name: 'Discord', id: 'discord', forDarkowlSearchQuery: true },\n { name: 'Zeronet', id: 'zeronet', forDarkowlSearchQuery: true },\n { name: 'FTP', id: 'ftp', forDarkowlSearchQuery: true },\n { name: 'IRC', id: 'irc', forDarkowlSearchQuery: true },\n { name: 'OpenNIC', id: 'openNIC', forDarkowlSearchQuery: true },\n { name: 'Unclassified', id: 'unclassified', forDarkowlSearchQuery: false }\n]\n\nexport const Intervals = {\n hourly: 60,\n twice_a_day: 720,\n daily: 1440,\n twice_a_week: 5040,\n weekly: 10080,\n monthly: 40320\n}\n\nexport const DateRanges = [\n 'today',\n 'yesterday',\n 'this_week',\n 'last_week',\n 'this_month',\n 'last_month',\n 'this_quarter',\n 'last_quarter',\n 'this_half_year',\n 'last_half_year',\n 'this_year',\n 'last_year',\n 'last_6_months',\n 'last_12_months',\n 'last_7_days',\n 'last_30_days',\n 'last_60_days',\n 'last_90_days',\n 'last_12_hours',\n 'last_24_hours'\n]\n\nexport const SortingOptions = [\n '',\n 'reach',\n 'interactions'\n]\n\nexport const StructuredExportFormatFlags = ['rssEnabled', 'xmlEnabled', 'jsonEnabled']\n\nexport const ContentDeskSearchFields = {\n CONTENT_PLAIN_TEXT: 'content_plain_text',\n CONTENT_TITLE: 'content_title',\n CAMPAIGN_NAME: 'campaign_name'\n}\n\nexport const ContactManagementSearchFields = {\n CONTACT_NAME: 'contact_name',\n CONTACT_TAG: 'contact_tag',\n DISTRIBUTION_LIST_NAME: 'distribution_list_name',\n DISTRIBUTION_LIST_CONTACTS: 'distribution_list_contacts'\n}\n\nexport const ThemaxSearchFields = {\n TOPIC_PLAN: 'topic_plan',\n PUBLICATION_NAME: 'publication_name',\n PUBLICATION_INFO: 'publication_info',\n REACH_MIN: 'reachMin',\n REACH_MAX: 'reachMax',\n PAGE_AVE_MIN: 'pageAveMin',\n PAGE_AVE_MAX: 'pageAveMax',\n BOOKMARKED_ONLY: 'bookmarkedOnly',\n PUBLICATION: 'publication'\n}\n\nexport const LicensersWithDisabledArticleDateEditing = [20]\nexport const LicensersWithDisabledMediaReviewDateEditing = [9]\n\nexport const Countries = {\n AUT: 40,\n CHE: 756,\n DEU: 276,\n IRL: 372,\n USA: 840\n}\n\nexport const CdEditorMoods = [\n { id: 1, label: 'optimistic but not exaggerated' },\n { id: 2, label: 'pessimistic but not exaggerated' },\n { id: 3, label: 'humorous' },\n { id: 4, label: 'inspiring' },\n { id: 5, label: 'casual' },\n { id: 6, label: 'dramatic' },\n { id: 7, label: 'romantic' },\n { id: 8, label: 'urgent' },\n { id: 9, label: 'nostalgic' },\n { id: 10, label: 'cautious' },\n { id: 11, label: 'apologetic' },\n { id: 12, label: 'reassuring' },\n { id: 13, label: 'provocative' },\n { id: 14, label: 'passionate' }\n]\n\nexport const CurrentTypeformSurveyId = 'LasNKD9q'\n\nexport const MediaReviewFilterSizes = [5, 10, 30, 50, 100]\n\nexport const UploadedMediaFilesSizeLimit = 524288000 // 500 MB\nexport const UploadedMediaSingleFileSizeLimit = 5000000 // 5 MB\n\nexport const LanguageOptions = [\n {\n languageId: 1,\n languageShort: 'de',\n countryCode: 'de',\n localeMapping: {}\n },\n {\n languageId: 2,\n languageShort: 'en',\n countryCode: 'us',\n localeMapping: {\n 'en-us': 'us',\n 'en-ca': 'ca',\n 'en-gb': 'gb',\n 'en-ie': 'ie'\n }\n },\n {\n languageId: 4,\n languageShort: 'fr',\n countryCode: 'fr',\n localeMapping: {}\n },\n {\n languageId: 5,\n languageShort: 'ru',\n countryCode: 'ru',\n localeMapping: {}\n },\n {\n languageId: 6,\n languageShort: 'zh',\n countryCode: 'cn',\n localeMapping: {}\n },\n {\n languageId: 7,\n languageShort: 'ja',\n countryCode: 'jp',\n localeMapping: {}\n }\n]\n\nexport const ThemaxReachFilterOptions = {\n min: 0,\n max: 30000000,\n marks: [\n {\n value: 0,\n scaledValue: 0,\n label: '0'\n },\n {\n value: 25,\n scaledValue: 100000,\n label: '100k'\n },\n {\n value: 50,\n scaledValue: 1000000,\n label: '1M'\n },\n {\n value: 75,\n scaledValue: 10000000,\n label: '10M'\n },\n {\n value: 100,\n scaledValue: 30000000,\n label: '30M'\n }\n ]\n}\n\nexport const ThemaxPageAveFilterOptions = {\n min: 0,\n max: 1000000,\n marks: [\n {\n value: 0,\n scaledValue: 0,\n label: '0'\n },\n {\n value: 25,\n scaledValue: 10000,\n label: '10k'\n },\n {\n value: 50,\n scaledValue: 50000,\n label: '50k'\n },\n {\n value: 75,\n scaledValue: 500000,\n label: '500k'\n },\n {\n value: 100,\n scaledValue: 1000000,\n label: '1M'\n }\n ]\n}\n\nexport const ExcelMimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\n// https://api.docs.analytics.dev.naplatform.de/#get-/integrationpartner/orders/-orderId-\nexport const OtsStatuses = {\n DRAFT: 'DRAFT',\n REVIEW: 'REVIEW',\n DECLINED: 'DECLINED',\n APPROVED: 'APPROVED',\n DISTRIBUTED: 'DISTRIBUTED'\n}\n\nexport const UnlayerEmailEditor = {\n version: '1.52.0',\n defaultProjectId: 162808,\n customProjectId: 156689,\n defaultScriptUrl: 'https://editor.unlayer.com/embed.js?2',\n customScriptUrl: 'https://public-api.pressrelations.de/funlayer/'\n}\n","import { fromJS } from 'immutable'\nimport decamelize from 'decamelize'\nimport { ChartDataSources, ChartTypes } from './constants'\n\nconst facebookMetrics = [\n 'pageViewsTotal',\n 'pageFans',\n 'pagePostsImpressionsOrganicUnique',\n 'pagePostsImpressionsPaidUnique',\n 'pagePostEngagements'\n]\n\nconst instagramMetrics = [\n 'impressions',\n 'reach',\n 'profileViews'\n]\n\nconst buildMetrics = (metrics, instagram) => fromJS(metrics.map(metric => ({\n value: `${decamelize(metric)}_total`,\n instagram,\n chart: {\n firstLevel: metric,\n secondLevel: null,\n thirdLevel: null,\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.RECTANGLE\n }\n})))\n\nconst kpis = buildMetrics(facebookMetrics, false).concat(buildMetrics(instagramMetrics, true))\n\nconst config = fromJS([\n {\n value: 'page_views',\n instagram: false,\n chart: {\n firstLevel: 'timeline',\n secondLevel: null,\n thirdLevel: 'pageViewsTotal',\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.AREA\n }\n },\n {\n value: 'page_fans',\n instagram: false,\n chart: {\n firstLevel: 'timeline',\n secondLevel: null,\n thirdLevel: 'pageFans',\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.AREA\n }\n },\n {\n value: 'page_posts_impressions',\n instagram: false,\n chart: {\n firstLevel: 'timeline',\n secondLevel: 'impressionTypes',\n thirdLevel: 'pagePostsImpressions',\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.AREA\n }\n },\n {\n value: 'page_post_engagements',\n instagram: false,\n chart: {\n firstLevel: 'timeline',\n secondLevel: null,\n thirdLevel: 'pagePostEngagements',\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.AREA\n }\n },\n {\n value: 'page_video_views_by_paid_non_paid',\n instagram: false,\n chart: {\n firstLevel: 'timeline',\n secondLevel: 'videoViewTypes',\n thirdLevel: 'pageVideoViewsByPaidNonPaid',\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.AREA\n }\n },\n {\n value: 'social_media_analytics_feed',\n instagram: false,\n chart: {\n firstLevel: 'socialMediaAnalyticsFeed',\n secondLevel: null,\n thirdLevel: null,\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.SOCIAL_MEDIA_ANALYTICS_FEED\n }\n },\n {\n value: 'social_media_analytics_feed',\n instagram: true,\n chart: {\n firstLevel: 'socialMediaAnalyticsFeed',\n secondLevel: null,\n thirdLevel: null,\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.SOCIAL_MEDIA_ANALYTICS_FEED\n }\n },\n {\n value: 'social_media_analytics_stories_feed',\n instagram: true,\n chart: {\n firstLevel: 'socialMediaAnalyticsStoriesFeed',\n secondLevel: null,\n thirdLevel: null,\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.SOCIAL_MEDIA_ANALYTICS_STORIES_FEED\n }\n },\n {\n value: 'impressions',\n instagram: true,\n chart: {\n firstLevel: 'timeline',\n secondLevel: null,\n thirdLevel: 'impressions',\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.AREA\n }\n },\n {\n value: 'reach',\n instagram: true,\n chart: {\n firstLevel: 'timeline',\n secondLevel: null,\n thirdLevel: 'reach',\n dataSource: ChartDataSources.FACEBOOK_ANALYTICS,\n type: ChartTypes.AREA\n }\n }\n]).concat(kpis)\n\nexport default config\n\nexport const findFirstChart = (instagram = false) => {\n const found = config.find(c => c.get('instagram') === instagram)\n\n if (found) {\n return found.get('value')\n }\n\n return null\n}\n\nexport const findValueByChart = chart => {\n const found = config.find(c => fromJS({\n firstLevel: chart.get('firstLevel'),\n secondLevel: chart.get('secondLevel'),\n thirdLevel: chart.get('thirdLevel'),\n dataSource: chart.get('dataSource'),\n type: chart.get('type')\n }).equals(c.get('chart')))\n\n if (found) {\n return found.get('value')\n }\n\n return null\n}\n","export const facebookPost = {\n pageId: '',\n accessToken: '',\n type: 'text',\n message: 'Sample text...',\n mediaAttachments: [],\n link: '',\n linkMetadata: {}\n}\n","import { fromJS } from 'immutable'\nimport { ChartDataSources } from './constants'\n\nconst config = fromJS([\n {\n value: 'ga_chart_timeline',\n chart: {\n firstLevel: 'timeline',\n secondLevel: null,\n thirdLevel: 'ga:sessions',\n dataSource: ChartDataSources.GOOGLE_ANALYTICS,\n type: 'area'\n }\n },\n {\n value: 'ga_chart_timeline_countries',\n chart: {\n firstLevel: 'timeline',\n secondLevel: 'ga:countryIsoCode',\n thirdLevel: 'ga:sessions',\n dataSource: ChartDataSources.GOOGLE_ANALYTICS,\n type: 'horizontalBar'\n }\n },\n {\n value: 'ga_chart_countries',\n chart: {\n firstLevel: 'countries',\n secondLevel: null,\n thirdLevel: 'ga:sessions',\n dataSource: ChartDataSources.GOOGLE_ANALYTICS,\n type: 'worldMap'\n }\n },\n {\n value: 'ga_chart_devices',\n chart: {\n firstLevel: 'ga:deviceCategory',\n secondLevel: null,\n thirdLevel: 'ga:sessions',\n dataSource: ChartDataSources.GOOGLE_ANALYTICS,\n type: 'pie'\n }\n },\n {\n value: 'ga_chart_devices_browsers',\n chart: {\n firstLevel: 'ga:deviceCategory',\n secondLevel: 'ga:browser',\n thirdLevel: 'ga:sessions',\n dataSource: ChartDataSources.GOOGLE_ANALYTICS,\n type: 'bar'\n }\n },\n {\n value: 'ga_chart_referrers',\n chart: {\n firstLevel: 'ga:source',\n secondLevel: null,\n thirdLevel: 'ga:sessions',\n dataSource: ChartDataSources.GOOGLE_ANALYTICS,\n type: 'bar'\n }\n },\n {\n value: 'ga_chart_pages',\n chart: {\n firstLevel: 'ga:pagePath',\n secondLevel: null,\n thirdLevel: 'ga:pageviews',\n dataSource: ChartDataSources.GOOGLE_ANALYTICS,\n type: 'pie'\n }\n },\n {\n value: 'ga_chart_timeline_channel_grouping',\n chart: {\n firstLevel: 'timeline',\n secondLevel: 'ga:channelGrouping',\n thirdLevel: 'ga:sessions',\n dataSource: ChartDataSources.GOOGLE_ANALYTICS,\n type: 'horizontalBar'\n }\n }\n])\n\nexport default config\n\nexport const findValueByChart = chart => {\n const found = config.find(c => fromJS({\n firstLevel: chart.get('firstLevel'),\n secondLevel: chart.get('secondLevel'),\n dataSource: chart.get('dataSource')\n }).equals(c.get('chart').deleteAll(['thirdLevel', 'type'])))\n\n if (found) {\n return found.get('value')\n }\n\n return null\n}\n","const imageLinks = {\n GOOGLE_ANALYTICS_LOGO: 'https://static.pressrelations.de/pics/groot/logos/google_analytics_logo.svg',\n YOUTUBE_ANALYTICS_LOGO: 'https://static.pressrelations.de/pics/groot/logos/youtube_analytics_logo.png',\n LINKEDIN_ANALYTICS_LOGO: 'https://static.pressrelations.de/pics/groot/logos/linked_in_logo.png',\n FACEBOOK_ANALYTICS_LOGO: 'https://static.pressrelations.de/pics/groot/logos/facebook_analytics_logo.png',\n TWITTER_ANALYTICS_LOGO: 'https://static.pressrelations.de/pics/groot/logos/twitter_logo.png',\n MOZ_LOGO: 'https://static.pressrelations.de/pics/groot/moz/moz.png',\n MOZ_LOGO_WHITE: 'https://static.pressrelations.de/pics/groot/moz/moz_white.png',\n\n IMAGE_PLACEHOLDER: 'https://static.pressrelations.de/pics/groot/placeholder.png',\n PLAY_IMAGE: 'https://static.pressrelations.de/pics/clipping_play_icon.png',\n TIKTOK_DUMMY_IMAGE: 'https://static.pressrelations.de/pics/groot/tiktok_dummy.png',\n MAILING_LIST_IMAGE: 'https://static.pressrelations.de/pics/groot/mailing_list.png',\n WORLD_MAP_COLOR: 'https://static.pressrelations.de/pics/groot/world_map_color.png',\n WORLD_MAP_BW: 'https://static.pressrelations.de/pics/groot/world_map_bw.png',\n\n NRX_LOGO_TRANSPARENT: 'https://static.pressrelations.de/pics/groot/logos/nrx_logo_transparent.png',\n NRX_LOGO_COLOR: 'https://static.pressrelations.de/pics/groot/logos/nrx_logo_color.png'\n}\n\nexport default imageLinks\n","import { fromJS } from 'immutable'\nimport decamelize from 'decamelize'\nimport { ChartDataSources, ChartTypes } from './constants'\n\nexport const metrics = [\n // Page statistics\n 'aboutPageViews',\n 'allPageViews',\n 'careersPageViews',\n 'insightsPageViews',\n 'jobsPageViews',\n 'lifeAtPageViews',\n 'overviewPageViews',\n\n // Follower statistics\n 'organicFollowerGain',\n 'paidFollowerGain',\n\n // Share statistics\n 'clickCount',\n 'engagement',\n 'likeCount',\n 'commentCount',\n 'shareCount',\n 'impressionCount',\n 'uniqueImpressionsCount'\n]\n\nconst kpis = fromJS(metrics.map(metric => ({\n value: `${decamelize(metric)}_total`,\n chart: {\n firstLevel: metric,\n secondLevel: null,\n thirdLevel: null,\n dataSource: ChartDataSources.LINKED_IN_ANALYTICS,\n type: ChartTypes.RECTANGLE\n }\n})))\n\nconst config = fromJS([\n {\n value: 'li_chart_timeline',\n chart: {\n firstLevel: 'timeline',\n secondLevel: null,\n thirdLevel: 'allPageViews',\n dataSource: ChartDataSources.LINKED_IN_ANALYTICS,\n type: ChartTypes.AREA\n }\n },\n {\n value: 'social_media_analytics_feed',\n chart: {\n firstLevel: 'socialMediaAnalyticsFeed',\n secondLevel: null,\n thirdLevel: null,\n dataSource: ChartDataSources.LINKED_IN_ANALYTICS,\n type: ChartTypes.SOCIAL_MEDIA_ANALYTICS_FEED\n }\n }\n]).concat(kpis)\n\nexport default config\n\nexport const findValueByChart = chart => {\n const found = config.find(c => fromJS({\n firstLevel: chart.get('firstLevel'),\n secondLevel: chart.get('secondLevel'),\n dataSource: chart.get('dataSource')\n }).equals(c.get('chart').deleteAll(['thirdLevel', 'type'])))\n\n if (found) {\n return found.get('value')\n }\n\n return null\n}\n","\nexport const linkedInPost = {\n author: '',\n commentary: 'Sample text...',\n visibility: 'PUBLIC',\n lifecycleState: 'PUBLISHED',\n isReshareDisabledByAuthor: false,\n distribution: {\n feedDistribution: 'MAIN_FEED',\n targetEntities: []\n },\n type: 'text_only'\n}\n\nexport const linkedInRequiredPermissions = ['w_organization_social', 'r_organization_social', 'w_member_social']\n","import React from 'react'\nimport { Map } from 'immutable'\nimport LocalLibraryIcon from '@mui/icons-material/LocalLibrary'\n\nimport nrxTheme from 'stylesheets/theme.json'\nimport plotlightsTheme from 'stylesheets/plotlights.json'\n\nexport default Map({\n theme: Map({\n nrx: Map(nrxTheme),\n plotlights: Map(plotlightsTheme)\n }),\n icons: Map({\n publications: ,\n influencers: 'group',\n customTags: 'loyalty',\n savedSearches: 'all_inbox',\n codes: 'local_offer',\n profiles: 'contacts',\n channels: Map({\n 1: 'fa fa-newspaper-o',\n 2: 'fa fa-globe',\n 3: 'fa fa-television',\n 4: 'fa fa-headphones',\n 5: 'fab fa-blogger',\n 6: 'fab fa-facebook',\n 7: 'fab fa-x-twitter',\n 8: 'fa fa-youtube',\n 9: 'fa fa-instagram',\n 10: 'fa fa-google-plus',\n 11: 'fa fa-forumbee',\n 12: 'fa fa-briefcase',\n 13: 'fa fa-play',\n 14: 'fa fa-foursquare',\n 15: 'fa fa-mixcloud',\n 16: 'fa fa-soundcloud',\n 17: 'fa fa-vimeo',\n 18: 'fa fa-weibo',\n 19: 'fa fa-flickr',\n 20: 'fa fa-ellipsis-h',\n 21: 'fa fa-linkedin',\n 22: 'fas fa-star-half-alt',\n 23: 'fab fa-odnoklassniki',\n 24: 'fab fa-vk',\n 25: 'fab fa-telegram-plane',\n 26: 'fab fa-yandex',\n 27: 'fal fa-podcast',\n 28: 'fab fa-tiktok',\n 29: 'fab fa-reddit',\n 30: 'fas fa-envelope',\n 31: 'fas fa-comment-alt-lines',\n 32: 'fas fa-book',\n 33: 'fa fa-weixin',\n 34: 'fab fa-zhihu',\n 35: 'fab fa-tiktok',\n 36: 'fab fa-xing',\n 37: 'fab fa-threads',\n 38: 'fab fa-mastodon',\n 39: 'fab fa-bluesky'\n }),\n identityTypes: Map({\n print: 'fa fa-newspaper-o',\n internet: 'fa fa-globe',\n tv: 'fa fa-television',\n radio: 'fa fa-headphones',\n blog: 'fab fa-blogger',\n facebook: 'fab fa-facebook',\n twitter: 'fab fa-x-twitter',\n youtube: 'fa fa-youtube',\n instagram: 'fa fa-instagram',\n 'google-plus': 'fa fa-google-plus',\n forum: 'fa fa-forumbee',\n dailymotion: 'fa fa-play',\n foursquare: 'fa fa-foursquare',\n mixcloud: 'fa fa-mixcloud',\n soundcloud: 'fa fa-soundcloud',\n vimeo: 'fa fa-vimeo',\n weibo: 'fa fa-weibo',\n flickr: 'fa fa-flickr',\n linkedin: 'fa fa-linkedin-square',\n review: 'fas fa-star-half-alt',\n ok: 'fab fa-odnoklassniki',\n vkontakte: 'fab fa-vk',\n telegram: 'fab fa-telegram-plane',\n moikrug: 'fab fa-yandex',\n podcast: 'fal fa-podcast',\n tiktok: 'fab fa-tiktok',\n reddit: 'fab fa-reddit',\n newsletter: 'fas fa-envelope',\n readerComments: 'fas fa-comment-alt-lines',\n littleredbook: 'fas fa-book',\n wechat: 'fa fa-weixin',\n zhihu: 'fab fa-zhihu',\n douyin: 'fab fa-tiktok',\n xing: 'fab fa-xing',\n threads: 'fab fa-threads',\n mastodon: 'fab fa-mastodon',\n bluesky: 'fab fa-bluesky'\n })\n })\n})\n","import { fromJS } from 'immutable'\nimport { ChartDataSources } from './constants'\n\nconst config = fromJS([\n {\n value: 'moz_domain_authority',\n chart: {\n firstLevel: 'mozDomainAuthority',\n secondLevel: null,\n thirdLevel: null,\n dataSource: ChartDataSources.MOZ,\n type: 'rectangle'\n }\n },\n {\n value: 'moz_page_authority',\n chart: {\n firstLevel: 'mozPageAuthority',\n secondLevel: null,\n thirdLevel: null,\n dataSource: ChartDataSources.MOZ,\n type: 'rectangle'\n }\n },\n {\n value: 'moz_timeline_domain_authority',\n chart: {\n firstLevel: 'timeline',\n secondLevel: 'pages',\n thirdLevel: 'mozDomainAuthority',\n dataSource: ChartDataSources.MOZ,\n type: 'area',\n opts: {\n domain: [0, 100]\n }\n }\n },\n {\n value: 'moz_timeline_page_authority',\n chart: {\n firstLevel: 'timeline',\n secondLevel: 'pages',\n thirdLevel: 'mozPageAuthority',\n dataSource: ChartDataSources.MOZ,\n type: 'area',\n opts: {\n domain: [0, 100]\n }\n }\n }\n])\n\nexport default config\n\nexport const findValueByChart = chart => {\n const found = config.find(c => fromJS({\n firstLevel: chart.get('firstLevel'),\n secondLevel: chart.get('secondLevel'),\n dataSource: chart.get('dataSource')\n }).equals(c.get('chart').deleteAll(['thirdLevel', 'type'])))\n\n if (found) {\n return found.get('value')\n }\n\n return null\n}\n","export const otsBody = {\n content: {\n id: null,\n title: ''\n },\n location: '',\n text: '',\n contact: ''\n}\n","import moment from 'moment-timezone'\n\nexport default moment.tz.names()\n","import { fromJS } from 'immutable'\nimport camelcase from 'camelcase'\nimport { ChartDataSources, ChartTypes } from './constants'\n\nconst metrics = ['impression_count', 'engagements', 'interactions']\nconst timelines = fromJS(metrics.map(metric => ({\n value: metric,\n chart: {\n firstLevel: 'timeline',\n secondLevel: null,\n thirdLevel: camelcase(metric),\n dataSource: ChartDataSources.TWITTER_ANALYTICS,\n type: ChartTypes.AREA\n }\n})))\nconst kpis = fromJS(metrics.map(metric => ({\n value: `${metric}_total`,\n chart: {\n firstLevel: camelcase(metric),\n secondLevel: null,\n thirdLevel: null,\n dataSource: ChartDataSources.TWITTER_ANALYTICS,\n type: ChartTypes.RECTANGLE\n }\n})))\n\nconst config = fromJS([\n {\n value: 'social_media_analytics_feed',\n instagram: false,\n chart: {\n firstLevel: 'socialMediaAnalyticsFeed',\n secondLevel: null,\n thirdLevel: null,\n dataSource: ChartDataSources.TWITTER_ANALYTICS,\n type: ChartTypes.SOCIAL_MEDIA_ANALYTICS_FEED\n }\n }\n]).concat(timelines, kpis)\n\nexport default config\n\nexport const findValueByChart = chart => {\n const found = config.find(c => fromJS({\n firstLevel: chart.get('firstLevel'),\n secondLevel: chart.get('secondLevel'),\n thirdLevel: chart.get('thirdLevel'),\n dataSource: chart.get('dataSource'),\n type: chart.get('type')\n }).equals(c.get('chart')))\n\n if (found) {\n return found.get('value')\n }\n\n return null\n}\n","import { fromJS } from 'immutable'\nimport { ChartDataSources, ChartTypes } from './constants'\n\nexport const firstLevels = [\n 'timeline',\n 'youtubeAnalyticsVideos',\n 'countries',\n 'insightTrafficSourceType',\n 'deviceType',\n 'operatingSystem'\n]\n\nexport default fromJS([\n {\n chart: {\n firstLevel: 'timeline',\n secondLevel: null,\n thirdLevel: 'views',\n dataSource: ChartDataSources.YOUTUBE_ANALYTICS,\n type: ChartTypes.AREA\n }\n }\n])\n\nexport const thirdLevels = [\n 'views',\n 'comments',\n 'likes',\n 'shares',\n 'averageViewDuration',\n 'estimatedMinutesWatched',\n 'estimatedRevenue',\n 'subscribersGained',\n 'subscribersLost'\n]\n\nconst allowedThirdLevels = {\n operatingSystem: [\n 'views',\n 'estimatedMinutesWatched'\n ],\n deviceType: [\n 'views',\n 'estimatedMinutesWatched'\n ],\n insightTrafficSourceType: [\n 'views',\n 'estimatedMinutesWatched'\n ]\n}\n\nexport const getThirdLevelsByFirstLevel = firstLevel => allowedThirdLevels[firstLevel] || thirdLevels\n\nexport const getThirdLevelByFirstLevel = (firstLevel, thirdLevel) => {\n if (thirdLevels.indexOf(firstLevel) !== -1) {\n return null\n }\n\n const levels = getThirdLevelsByFirstLevel(firstLevel)\n\n if (levels.indexOf(thirdLevel) !== -1) {\n return thirdLevel\n }\n\n return levels[0]\n}\n\nexport const getTypeByFirstLevel = (firstLevel, type) => {\n if (thirdLevels.indexOf(firstLevel) !== -1) {\n return ChartTypes.RECTANGLE\n }\n\n return type === ChartTypes.RECTANGLE ? ChartTypes.AREA : type\n}\n\n","/* eslint-disable */\nmodule.exports = require('./configureStore.' + process.env.NODE_ENV)\n","import Cookies from 'js-cookie'\nimport moment from 'moment-timezone'\nimport { CookieNames } from 'static/constants'\n\nimport store from '../store'\nimport { getCookieOption } from '../selectors'\n\nexport function saveCookie(name, value, expires, allowSavingWithoutPermission = false) {\n if (allowSavingWithoutPermission || getCookieOption(store.getState())) {\n Cookies.set(name, value, { path: '/', expires: expires || moment().add(365, 'days').toDate() })\n }\n}\n\nexport function deleteCookie(name) {\n Cookies.remove(name, { path: '/' })\n}\n\nexport function readCookie(name) {\n return Cookies.get(name)\n}\n\nexport function deleteAllCookies() {\n deleteCookie(CookieNames.NEWSRADAR)\n deleteCookie(CookieNames.SESSION)\n deleteCookie(CookieNames.ACCESS_TOKEN)\n}\n\nexport function deleteSessionCookie() {\n deleteCookie(CookieNames.SESSION)\n deleteCookie(CookieNames.ACCESS_TOKEN)\n}\n","/* global window */\nimport { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport moment from 'moment-timezone'\nimport { parse } from 'query-string-es5'\nimport { CookieNames } from 'static/constants'\n\nimport { readCookie } from 'utils/cookieHelper'\n\nimport * as Actions from 'actions/app'\n\n/* istanbul ignore next */\nconst timezone = moment.tz.guess() || 'Europe/Berlin'\n\nmoment.tz.setDefault(timezone)\n\nconst nid = parseInt(parse(window.location.hash.split('?')[1] || '').nid, 10)\n\nexport const initialState = fromJS({\n bffVersion: null,\n viewVersion: null,\n forceReload: false,\n activeNewsradarId: nid || parseInt(readCookie(CookieNames.NEWSRADAR), 10) || null,\n appIsReady: false,\n loginMsg: '',\n loginError: false,\n snackbarText: '',\n showNavigation: false,\n showUndo: false,\n loading: false,\n loginRunning: false,\n appBarMessage: null,\n appMessage: null,\n success: false,\n showAppMessage: false,\n appSnackbarMessage: {\n show: false,\n variant: 'info',\n text: '',\n preventDuplicate: false\n },\n generatedFile: null,\n timezone\n})\n\nexport default handleActions({\n [combineActions(Actions.loginRequestStart, Actions.ssoRequestStart)]: state => (\n state.merge({ loginMsg: '', loginError: false, loginRunning: true })\n ),\n\n [Actions.loginRequestSuccess]: state => state.merge({ loginMsg: '', loginError: false, loginRunning: false }),\n\n [combineActions(Actions.loginRequestError, Actions.ssoRequestError)]: (state, { payload: msg }) => (\n state.merge({ loginMsg: msg, loginError: true, loginRunning: false })\n ),\n\n [Actions.loginRequestAborted]: (state, { payload: msg }) => state.merge({ loginMsg: msg, loginError: true, loginRunning: false }),\n\n [Actions.setLoginMessage]: (state, { payload: { loginMsg, loginError } }) => state\n .set('loginMsg', loginMsg)\n .set('loginError', loginError),\n [Actions.logoutRequestSuccess]: state => initialState.set('activeNewsradarId', state.get('activeNewsradarId')),\n [Actions.setActiveNewsradar]: (state, { payload: newsradarId }) => state.set('activeNewsradarId', newsradarId),\n [Actions.setAppBarMessage]: (state, { payload: message }) => state.set('appBarMessage', message),\n [Actions.setAppMessage]: (state, { payload: message }) => state.set('appMessage', message),\n [Actions.setAppReady]: state => state.set('appIsReady', true),\n [Actions.setAppBusy]: state => state.set('appIsReady', false),\n [Actions.toggleNavigation]: state => state.set('showNavigation', !state.get('showNavigation')),\n [Actions.showUndo]: state => state.set('showUndo', true),\n [Actions.hideUndo]: state => state.set('showUndo', false),\n [Actions.toggleLoading]: (state, { payload }) => {\n if (payload === undefined) {\n return state.update('loading', loading => !loading)\n }\n\n return state.set('loading', payload)\n },\n [Actions.setBffVersion]: (state, { payload: bffVersion }) => state.set('bffVersion', bffVersion),\n [Actions.setViewVersion]: (state, { payload: viewVersion }) => state.set('viewVersion', viewVersion),\n [Actions.forceReload]: state => state.set('forceReload', true),\n [Actions.toggleSuccess]: (state, { payload }) => state.update('success', success => (payload !== undefined ? payload : !success)),\n [Actions.toggleAppMessage]: (state, { payload }) => (\n state.update('showAppMessage', success => (payload !== undefined ? payload : !success))\n ),\n [Actions.triggerAppSnackbarMessage]: (state, { payload: { text, variant, preventDuplicate } }) => (\n state.set('appSnackbarMessage', fromJS({ text, variant, preventDuplicate, show: true }))\n ),\n [Actions.hideAppSnackbarMessage]: state => (\n state.set('appSnackbarMessage', initialState.get('appSnackbarMessage'))\n ),\n\n [Actions.uploadGeneratedFileStart]: state => state.set('generatedFile', null),\n [Actions.uploadGeneratedFileError]: state => state.set('generatedFile', null),\n [Actions.uploadGeneratedFileSuccess]: (state, { payload }) => (\n state.set('generatedFile', fromJS(payload).update('url', url => `files${url.split('files-api')[1]}/${payload.filename}`))\n ),\n\n [Actions.resetGeneratedFile]: state => state.set('generatedFile', null),\n\n [Actions.resetState]: state => state.set('showNavigation', false)\n}, initialState)\n","export function isValidFilename(input) {\n const minimalLength = input.length > 2\n const withoutWildCards = input.replace(/%[^%]+%/gm, '')\n const validChars = !withoutWildCards.match(/[\\s@$%&\\\\/:*?\"'<>|~`#^+={}[\\];!]/igm)\n\n return minimalLength && validChars\n}\n","import masterConfig from './master_config'\n\nconst theme = masterConfig.get('theme').toJS()\n\nexport const ChartBackgroundColors = {\n DARKMODE: '#424242',\n PLOTLIGHTS: '#1B465C',\n DEFAULT: '#FFFFFF'\n}\n\nexport default [\n {\n name: 'Default',\n labelKey: 'default_theme',\n colors: {\n light: {\n primary: theme.nrx.colors.primary,\n accent: theme.nrx.colors.accent,\n highlighting: theme.nrx.colors.highlighting,\n highlightingBackground: theme.nrx.colors.highlightingBackground,\n charts: {\n color01: '#2B7B87',\n color02: '#06A69B',\n color03: '#F95701',\n color04: '#616161',\n color05: '#C8C8C8',\n color06: '#80CBC4',\n color07: '#1EF0E2',\n color08: '#9B9B9B',\n color09: '#FF8F54',\n color10: '#4A4A4A'\n }\n },\n dark: {\n primary: theme.nrx.colors.primary,\n accent: theme.nrx.colors.accent,\n highlighting: theme.nrx.colors.highlighting,\n highlightingBackground: theme.nrx.colors.highlightingBackground,\n charts: {\n color01: '#2B7B87',\n color02: '#06A69B',\n color03: '#F95701',\n color04: '#616161',\n color05: '#C8C8C8',\n color06: '#80CBC4',\n color07: '#1EF0E2',\n color08: '#9B9B9B',\n color09: '#FF8F54',\n color10: '#4A4A4A'\n }\n }\n }\n },\n {\n name: 'Theme 2',\n labelKey: 'theme',\n colors: {\n light: {\n primary: theme.nrx.colors.primary,\n accent: theme.nrx.colors.accent,\n highlighting: theme.nrx.colors.highlighting,\n highlightingBackground: theme.nrx.colors.highlightingBackground,\n charts: {\n color01: '#4A90E2',\n color02: '#0254B5',\n color03: '#002755',\n color04: '#89BCF7',\n color05: '#FFC900',\n color06: '#F8E71C',\n color07: '#E2E0CE',\n color08: '#9B9B9B',\n color09: '#00577D',\n color10: '#4A4A4A'\n }\n },\n dark: {\n primary: theme.nrx.colors.primary,\n accent: theme.nrx.colors.accent,\n highlighting: theme.nrx.colors.highlighting,\n highlightingBackground: theme.nrx.colors.highlightingBackground,\n charts: {\n color01: '#4A90E2',\n color02: '#0254B5',\n color03: '#002755',\n color04: '#89BCF7',\n color05: '#FFC900',\n color06: '#F8E71C',\n color07: '#E2E0CE',\n color08: '#9B9B9B',\n color09: '#00577D',\n color10: '#4A4A4A'\n }\n }\n }\n },\n {\n name: 'Theme 3',\n labelKey: 'theme',\n colors: {\n light: {\n primary: theme.nrx.colors.primary,\n accent: theme.nrx.colors.accent,\n highlighting: theme.nrx.colors.highlighting,\n highlightingBackground: theme.nrx.colors.highlightingBackground,\n charts: {\n color01: '#4A90E2',\n color02: '#A3D000',\n color03: '#FFDB00',\n color04: '#F7A700',\n color05: '#D2000B',\n color06: '#FF005E',\n color07: '#FF7FB1',\n color08: '#9100FF',\n color09: '#1F00FF',\n color10: '#647E00'\n }\n },\n dark: {\n primary: theme.nrx.colors.primary,\n accent: theme.nrx.colors.accent,\n highlighting: theme.nrx.colors.highlighting,\n highlightingBackground: theme.nrx.colors.highlightingBackground,\n charts: {\n color01: '#4A90E2',\n color02: '#A3D000',\n color03: '#FFDB00',\n color04: '#F7A700',\n color05: '#D2000B',\n color06: '#FF005E',\n color07: '#FF7FB1',\n color08: '#9100FF',\n color09: '#1F00FF',\n color10: '#647E00'\n }\n }\n }\n },\n {\n name: 'Theme 4',\n labelKey: 'theme',\n colors: {\n light: {\n primary: '#68BAB4',\n accent: '#FF8F54',\n highlighting: theme.nrx.colors.highlighting,\n highlightingBackground: theme.nrx.colors.highlightingBackground,\n charts: {\n color01: '#68BAB4',\n color02: '#028981',\n color03: '#DF5D61',\n color04: '#616161',\n color05: '#C8C8C8',\n color06: '#80CBC4',\n color07: '#D0C8A2',\n color08: '#D38A5B',\n color09: '#FF8F54',\n color10: '#4A4A4A'\n }\n },\n dark: {\n primary: '#68BAB4',\n accent: '#FF8F54',\n highlighting: theme.nrx.colors.highlighting,\n highlightingBackground: theme.nrx.colors.highlightingBackground,\n charts: {\n color01: '#68BAB4',\n color02: '#028981',\n color03: '#DF5D61',\n color04: '#616161',\n color05: '#C8C8C8',\n color06: '#80CBC4',\n color07: '#D0C8A2',\n color08: '#D38A5B',\n color09: '#FF8F54',\n color10: '#4A4A4A'\n }\n }\n }\n },\n {\n name: 'Theme 5',\n labelKey: 'plotlights',\n theme: 'plotlights',\n colors: {\n dark: {\n primary: theme.plotlights.colors.primary,\n accent: theme.plotlights.colors.accent,\n highlighting: theme.plotlights.colors.highlighting,\n highlightingBackground: theme.plotlights.colors.highlightingBackground,\n charts: {\n color01: '#FF6E40',\n color02: '#BF7DFF',\n color03: '#07E89C',\n color04: '#FFE100',\n color05: '#5CB3FF',\n color06: '#FFA3C7',\n color07: '#8BFB19',\n color08: '#FFB764',\n color09: '#19F5FB',\n color10: '#EC008C'\n }\n },\n light: {\n primary: theme.plotlights.colors.primary,\n accent: theme.plotlights.colors.accent,\n highlighting: '#FF6E40',\n highlightingBackground: theme.plotlights.colors.highlightingBackground,\n charts: {\n color01: '#FF6E40',\n color02: '#9F41F7',\n color03: '#3FC985',\n color04: '#F6C703',\n color05: '#5CB4FF',\n color06: '#F67FB3',\n color07: '#403EFF',\n color08: '#65C800',\n color09: '#359B94',\n color10: '#EC008C'\n }\n }\n }\n }\n]\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport camelcase from 'camelcase'\n\nimport { deleteAllCookies, readCookie } from 'utils/cookieHelper'\nimport { isValidFilename } from 'utils/filename'\nimport { getDefaultDomains } from 'utils/mailgun'\nimport themes from 'static/themes'\nimport { CookieNames } from 'static/constants'\n\nimport * as Actions from 'actions/config'\nimport * as DarknetActions from 'actions/darknet'\nimport * as SavedDashboardActions from 'actions/saved_dashboard'\nimport * as SavedChartsActions from 'actions/saved_charts'\nimport * as AppActions from 'actions/app'\nimport * as UserActions from 'actions/user'\nimport * as ApiKeysActions from 'actions/api_keys'\n\nexport const initialState = fromJS({\n updateConfigRequestStarted: false,\n dateFilterSettingId: 1,\n defaultDateType: 'article',\n defaultNewsPageView: 'card_view',\n grootGroupingSettingId: 1,\n defaultSortingId: 1,\n exportFilename: 'media_review_%year%_%month%_%day%',\n pdfCoverTitle: '',\n pdfCovers: [],\n hasTonality: false,\n separateCoding: false,\n isValidFilename: true,\n isSuper: false,\n currency: 'EUR',\n currencyRate: 1.0,\n senderMail: 'customerservice@pressrelations.de',\n exportLimit: 0,\n evaluationSteps: 0,\n statementEvaluationSteps: 0,\n statementBasedCoding: false,\n xlsxExportLimit: 0,\n backwardsNewsHtmlExportLimit: 0,\n backwardsNewsXlsxExportLimit: 0,\n savedSearchFeedLimit: 0,\n googleAnalyticsClientId: null,\n googleAnalyticsEnabled: false,\n youtubeAnalyticsEnabled: false,\n facebookAnalyticsClientId: null,\n facebookAnalyticsEnabled: false,\n facebookAccountConnected: false,\n linkedInClientId: null,\n linkedInAnalyticsEnabled: false,\n linkedInPermissions: null,\n deeplApiKey: null,\n apiKeyRequestRunning: false,\n orderRequestRunning: false,\n initialRoute: readCookie(CookieNames.INITIAL_ROUTE) || null,\n firstConfigLoaded: false,\n startedWithDeepLink: true,\n startedWithDeepLinkSet: false,\n userConfig: {\n newsSavedSearchId: null,\n profileMonitoringSavedSearchId: null,\n newsPoolSavedSearchId: null,\n dashboardId: null\n },\n colors: themes[0].colors.light,\n themes,\n selectedTheme: null,\n newsPoolConfig: {\n savedSearchCount: 0,\n timeLimit: 0,\n timeUnit: 'months',\n channels: []\n },\n newsConfig: {\n allowedChannelIds: [],\n allowedCountryIds: [],\n allowedCodeIds: []\n },\n dashboardConfig: {\n savedDashboardsCount: 0,\n savedChartsCount: 0\n },\n showFlags: true,\n expandTopics: true,\n showSummaries: false,\n showSnippets: false,\n darkowlSearchQueries: [],\n darkowlScoreQueries: [],\n contentDeskConfig: {\n senderEmail: '',\n domain: '',\n domainRegion: '',\n ccdPlan: {},\n ccdPlanUsage: {},\n ccdAllowedDomains: [],\n showDefaultDomains: false\n },\n showSurvey: false,\n paidFeatures: {}\n})\n\nconst processAllowedDomains = (state, config) => {\n const { ccdAllowedDomains, showDefaultDomains } = config\n\n if (!ccdAllowedDomains) {\n return state\n }\n\n const filteredCcdAllowedDomains = ccdAllowedDomains.filter(d => d.sendingVerified)\n\n if (showDefaultDomains) {\n return state.set('contentDeskConfig', fromJS({ ...config, ccdAllowedDomains: filteredCcdAllowedDomains }))\n }\n\n const defaultDomains = getDefaultDomains()\n const ids = []\n\n defaultDomains.forEach(defaultDomain => {\n const found = ccdAllowedDomains.find(d => d.name === defaultDomain.get('domain'))\n\n if (found) {\n ids.push(found.id)\n }\n })\n\n return state.set(\n 'contentDeskConfig',\n fromJS({ ...config, ccdAllowedDomains: filteredCcdAllowedDomains.filter(d => !ids.includes(d.id)) })\n )\n}\n\nexport default handleActions({\n [Actions.setConfig]: (state, { payload }) => {\n const newConfig = { ...payload }\n\n newConfig.pdfCoverTitle = newConfig.pdfCoverTitle || ''\n newConfig.firstConfigLoaded = true\n\n return state.merge(fromJS(newConfig))\n },\n [Actions.updateConfig]: (state, { payload: config }) => state.merge(config),\n [Actions.updatePaidFeatures]: (state, { payload }) => (\n state.setIn(['paidFeatures', camelcase(payload.key)], payload.status)\n ),\n [combineActions(\n Actions.updateConfigRequestStart,\n Actions.updateCDeskConfigRequestStart,\n Actions.fetchCDeskConfigRequestStart\n )]: state => state.set('updateConfigRequestStarted', true),\n [combineActions(\n Actions.updateConfigRequestSuccess,\n Actions.updateCDeskConfigRequestSuccess,\n Actions.fetchCDeskConfigRequestSuccess\n )]: state => state.set('updateConfigRequestStarted', false),\n [combineActions(\n Actions.updateConfigRequestError,\n Actions.updateCDeskConfigRequestError,\n Actions.fetchCDeskConfigRequestError\n )]: state => {\n deleteAllCookies()\n\n return state.set('updateConfigRequestStarted', false)\n },\n [Actions.setCDeskConfig]: (state, { payload }) => processAllowedDomains(state, payload),\n [Actions.updateCDeskConfig]: (state, { payload }) => state.mergeIn(['contentDeskConfig'], fromJS(payload)),\n [Actions.validateFilenameInConfig]: (state, action) => (\n state.set('isValidFilename', isValidFilename(action.payload))\n ),\n [Actions.resetConfigToDefault]: () => initialState,\n [Actions.resetColors]: (state, { payload: { name, mode } }) => {\n const byName = t => name === t.get('name')\n const colors = state.get('themes').find(byName).getIn(['colors', mode])\n\n return state.set('selectedTheme', name).mergeIn(['colors'], colors)\n },\n [Actions.setTheme]: (state, { payload: { name, mode } }) => {\n const byName = t => name === t.get('name')\n\n return state.set('selectedTheme', name).mergeIn(['colors'], state.get('themes').find(byName).getIn(['colors', mode]))\n },\n\n [Actions.setNewsSavedSearchId]: (state, { payload: id }) => (\n state.updateIn(['userConfig', 'newsSavedSearchId'], oldId => (id === oldId ? null : id))\n ),\n [Actions.setAnalysisSavedSearchId]: (state, { payload: id }) => (\n state.updateIn(['userConfig', 'analysisSavedSearchId'], oldId => (id === oldId ? null : id))\n ),\n [Actions.setProfileMonitoringSavedSearchId]: (state, { payload: id }) => (\n state.updateIn(['userConfig', 'profileMonitoringSavedSearchId'], oldId => (id === oldId ? null : id))\n ),\n [Actions.setNewsPoolSavedSearchId]: (state, { payload: id }) => (\n state.updateIn(['userConfig', 'newsPoolSavedSearchId'], oldId => (id === oldId ? null : id))\n ),\n [Actions.setDashboardId]: (state, { payload: id }) => (\n state.updateIn(['userConfig', 'dashboardId'], oldId => (id === oldId ? null : id))\n ),\n [Actions.setUserConfigField]: (state, { payload: { field, value } }) => (\n state.setIn(['userConfig', field], value)\n ),\n [Actions.updateUserConfigRequestSuccess]: (state, { payload: id }) => state.setIn(['userConfig', 'id'], parseInt(id, 10)),\n\n [Actions.setGoogleAnalyticsEnabled]: state => state.set('googleAnalyticsEnabled', true),\n [Actions.setGoogleAnalyticsDisabled]: state => state.set('googleAnalyticsEnabled', false),\n [Actions.setYoutubeAnalyticsEnabled]: state => state.set('youtubeAnalyticsEnabled', true),\n [Actions.setYoutubeAnalyticsDisabled]: state => state.set('youtubeAnalyticsEnabled', false),\n [Actions.setFacebookAnalyticsEnabled]: state => state.merge({\n facebookAnalyticsEnabled: true,\n facebookAccountConnected: true\n }),\n [Actions.setFacebookAnalyticsDisabled]: state => state.merge({\n facebookAnalyticsEnabled: false,\n facebookAccountConnected: false\n }),\n [Actions.setLinkedInAnalyticsEnabled]: state => state.set('linkedInAnalyticsEnabled', true),\n [Actions.setLinkedInAnalyticsDisabled]: state => state.set('linkedInAnalyticsEnabled', false),\n\n [Actions.setStartedWithDeepLink]: (state, { payload }) => state.merge({\n startedWithDeepLink: payload,\n startedWithDeepLinkSet: true\n }),\n\n [Actions.orderPaidVersionStart]: state => state.set('orderRequestRunning', true),\n [Actions.orderPaidVersionSuccess]: state => state.set('orderRequestRunning', false),\n [Actions.orderPaidVersionError]: state => state.set('orderRequestRunning', false),\n\n [UserActions.setDarkMode]: (state, { payload }) => {\n const name = state.get('selectedTheme')\n const mode = payload ? 'dark' : 'light'\n\n const byName = t => name === t.get('name')\n const selectedTheme = state.get('themes').find(byName)\n\n if (!selectedTheme) {\n return state\n }\n\n return state.mergeIn(['colors'], selectedTheme.getIn(['colors', mode]))\n },\n\n [combineActions(\n SavedDashboardActions.fetchSavedDashboardSuccess,\n SavedChartsActions.fetchSavedChartSuccess\n )]: (state, { payload: { colors, currency, currencyRate } }) => {\n const newState = fromJS({ colors, currency, currencyRate })\n\n return state.merge(newState)\n },\n [DarknetActions.fetchAllQueriesSuccess]: (state, { payload: { darkowlSearchQueries, darkowlScoreQueries } }) => (\n state.merge({\n darkowlSearchQueries: fromJS(darkowlSearchQueries),\n darkowlScoreQueries: fromJS(darkowlScoreQueries)\n })),\n [combineActions(\n ApiKeysActions.submitApiKeyStart,\n ApiKeysActions.deleteApiKeyStart\n )]: state => state.set('apiKeyRequestRunning', true),\n [combineActions(\n ApiKeysActions.submitApiKeySuccess,\n ApiKeysActions.submitApiKeyError,\n ApiKeysActions.deleteApiKeySuccess,\n ApiKeysActions.deleteApiKeyError\n )]: state => state.set('apiKeyRequestRunning', false),\n [AppActions.resetState]: state => initialState.merge({\n colors: state.get('colors'),\n firstConfigLoaded: state.get('firstConfigLoaded')\n })\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set, List } from 'immutable'\n\nimport * as Actions from 'actions/custom_tags'\nimport * as ShoppingCartActions from 'actions/shopping_cart'\nimport * as MediaReviewsActions from 'actions/media_reviews'\nimport * as AppActions from 'actions/app'\n\nconst createNewCustomTag = () => fromJS({\n name: '',\n description: '',\n queries: Set([]),\n newsCount: 0,\n percolationEnabled: false,\n customTagGroupIds: List([])\n})\n\nexport const initialState = fromJS({\n loading: false,\n showCustomTagDialog: false,\n showRemoveCustomTagDialog: false,\n showEmptyCustomTagDialog: false,\n uploadedPhoto: null,\n selectedCustomTag: createNewCustomTag(),\n lastUsedCustomTagIds: List([]),\n afterStructuredFormatExportAction: 'none',\n sortBy: 'name',\n groupedAssignableCustomTags: false,\n filteredGroupId: null,\n loadingCustomTagIds: Set([]),\n viewType: 'list',\n customTagsTab: 'all'\n})\n\nexport default handleActions({\n [Actions.setSelectedCustomTag]: (state, { payload: customTag }) => state.set('selectedCustomTag', customTag),\n [Actions.hideAssignCustomTagsToNewsDialog]: state => state\n .set('selectedCustomTag', initialState.get('selectedCustomTag'))\n .set('showCustomTagDialog', false),\n [Actions.setUploadedPhoto]: (state, { payload: data }) => state.set('uploadedPhoto', data),\n\n [Actions.showCustomTagDialog]: (state, { payload }) => {\n let selectedCustomTag = createNewCustomTag()\n\n if (payload) {\n selectedCustomTag = payload.update('queries', queries => Set(queries))\n }\n\n return state.merge({\n showCustomTagDialog: true,\n uploadedPhoto: null,\n selectedCustomTag\n })\n },\n [Actions.hideCustomTagDialog]: state => state.set('showCustomTagDialog', false),\n [ShoppingCartActions.hideCustomTagDialog]: state => state.set('showCustomTagDialog', false),\n [MediaReviewsActions.hideCustomTagDialog]: state => state.set('showCustomTagDialog', false),\n\n [Actions.openCustomTagInShoppingCart]: state => state.set('loading', true),\n [ShoppingCartActions.fetchClusterForShoppingCartSuccess]: state => state.set('loading', false),\n\n [Actions.updateAfterStructuredFormatExportAction]: (state, { payload }) => state.merge({\n afterStructuredFormatExportAction: payload\n }),\n [Actions.hideEmptyCustomTagDialog]: state => state.set('showEmptyCustomTagDialog', false),\n [Actions.sortBy]: (state, { payload: sortBy }) => state.set('sortBy', sortBy),\n\n [Actions.showRemoveCustomTagDialog]: (state, { payload: customTag }) => state.merge({\n showRemoveCustomTagDialog: true,\n selectedCustomTag: customTag\n }),\n\n [Actions.showEmptyCustomTagDialog]: (state, { payload: customTag }) => state.merge({\n showEmptyCustomTagDialog: true,\n selectedCustomTag: customTag\n }),\n [Actions.hideRemoveCustomTagDialog]: state => state.set('showRemoveCustomTagDialog', false),\n\n [Actions.setFilteredGroupId]: (state, { payload: groupId }) => state.update('filteredGroupId', id => (id === groupId ? null : groupId)),\n [Actions.resetFilteredGroupId]: state => state.set('filteredGroupId', null),\n\n [Actions.setCustomTagsViewType]: (state, { payload }) => (\n state\n .set('sortBy', 'name')\n .set('filteredGroupId', null)\n .set('viewType', payload)\n ),\n [Actions.changeCustomTagsTab]: (state, { payload }) => state.set('customTagsTab', payload),\n\n [Actions.toggleGroupedAssignableCustomTags]: state => state.update('groupedAssignableCustomTags', v => !v),\n\n [Actions.assignCustomTagToNewsSuccess]: (state, { payload: { customTag } }) => (\n state\n .update('lastUsedCustomTagIds', l => (l || List([])).unshift(customTag.get('id')))\n .update('loadingCustomTagIds', l => (l || Set([])).remove(customTag.get('id')))\n .set('selectedCustomTag', initialState.get('selectedCustomTag'))\n ),\n [Actions.assignCustomTagToNewsStart]: (state, { payload: { customTag } }) => (\n state.update('loadingCustomTagIds', l => l.add(customTag.get('id')))\n ),\n [Actions.assignCustomTagToNewsError]: (state, { payload: { customTag } }) => (\n state.update('loadingCustomTagIds', l => l.remove(customTag.get('id')))\n ),\n\n [Actions.removeCustomTagFromNewsStart]: (state, { payload: { customTag } }) => (\n state.update('loadingCustomTagIds', l => l.add(customTag.get('id')))\n ),\n [Actions.removeCustomTagFromNewsError]: (state, { payload: { customTag } }) => (\n state.update('loadingCustomTagIds', l => l.remove(customTag.get('id')))\n ),\n [Actions.removeCustomTagFromNewsSuccess]: (state, { payload: { customTag } }) => (\n state.update('loadingCustomTagIds', l => l.remove(customTag.get('id')))\n ),\n\n [Actions.assignCustomTagToGroupSuccess]: (state, { payload: { customTagId } }) => (\n state.update('loadingCustomTagIds', l => l.remove(customTagId))\n ),\n [Actions.assignCustomTagToGroupStart]: (state, { payload: customTagId }) => (\n state.update('loadingCustomTagIds', l => l.add(customTagId))\n ),\n [Actions.assignCustomTagToGroupError]: (state, { payload: { customTagId } }) => (\n state.update('loadingCustomTagIds', l => l.remove(customTagId))\n ),\n\n [Actions.removeCustomTagFromGroupStart]: (state, { payload: customTagId }) => (\n state.update('loadingCustomTagIds', l => l.add(customTagId))\n ),\n [Actions.removeCustomTagFromGroupError]: (state, { payload: { customTagId } }) => (\n state.update('loadingCustomTagIds', l => l.remove(customTagId))\n ),\n [Actions.removeCustomTagFromGroupSuccess]: (state, { payload: { customTagId } }) => (\n state.update('loadingCustomTagIds', l => l.remove(customTagId))\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport { normalizeIt } from 'utils/normalizr'\n\nimport * as CustomTagActions from 'actions/custom_tags'\nimport * as ShoppingCartActions from 'actions/shopping_cart'\nimport * as MediaReviewsActions from 'actions/media_reviews'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n entities: {},\n result: []\n})\n\nexport const sortCustomTags = (state, sortBy) => {\n const entities = state.get('entities')\n\n let sortPath = [sortBy]\n\n if (sortBy === 'lastNewsAssigned') {\n sortPath = ['lastNewsCustomTag', 'createdAt']\n }\n\n return state.update('result', result => {\n const newResult = result.sortBy(id => {\n const value = entities.get(id.toString()).getIn(sortPath)\n\n if (typeof value === 'string') {\n return value.toLowerCase()\n }\n\n return value\n })\n\n if (sortBy !== 'name') {\n return newResult.reverse()\n }\n\n return newResult\n })\n}\n\nexport default handleActions({\n [CustomTagActions.setCustomTags]: (state, { payload: { customTags } }) => (\n state.merge(fromJS(normalizeIt({ customTags }, 'customTag')))\n ),\n [CustomTagActions.resetCustomTagNewNewsCount]: (state, { payload: customTagId }) => state\n .setIn(['entities', customTagId.toString(), 'newNewsCount'], 0),\n [CustomTagActions.saveCustomTagSuccess]: (state, { payload: { customTag, withNewsCount = false } }) => state\n .update('entities', entities => entities.update(customTag.id.toString(), c => {\n const newTag = fromJS(customTag)\n\n if (!withNewsCount && c) {\n return newTag.set('newsCount', c.get('newsCount'))\n }\n\n return newTag\n }))\n .update('result', result => {\n if (result.indexOf(customTag.id) === -1) {\n return result.push(customTag.id)\n }\n\n return result\n }),\n [CustomTagActions.deleteCustomTagSuccess]: (state, { payload: customTagId }) => state\n .update('entities', entities => entities.delete(customTagId.toString()))\n .update('result', result => result.filter(c => c !== customTagId)),\n [CustomTagActions.emptyCustomTagSuccess]: (state, { payload: customTag }) => state\n .setIn(['entities', String(customTag.get('id')), 'newsCount'], 0),\n [CustomTagActions.assignCustomTagToNewsSuccess]: (state, { payload: { customTag, news } }) => state\n .updateIn(['entities', String(customTag.get('id')), 'newsCount'], count => count + (news.get('clusterSize') || 1))\n .setIn(['entities', String(customTag.get('id')), 'lastNewsCustomTag'], fromJS({ createdAt: new Date() })),\n [CustomTagActions.removeCustomTagFromNewsSuccess]: (state, { payload: { customTag, removedCount } }) => {\n let newCustomTag = state.getIn(['entities', String(customTag.get('id'))]).update('newsCount', count => count - removedCount)\n\n if (!newCustomTag.get('newsCount')) {\n newCustomTag = newCustomTag.set('lastNewsCustomTag', null)\n }\n\n return state.setIn(['entities', String(customTag.get('id'))], newCustomTag)\n },\n\n [CustomTagActions.sortBy]: (state, { payload: sortBy }) => sortCustomTags(state, sortBy),\n\n [CustomTagActions.setCustomTagsViewType]: state => sortCustomTags(state, 'name'),\n\n [CustomTagActions.assignCustomTagToGroupSuccess]: (state, { payload: { groupId, result } }) => {\n const newCustomTag = state.getIn(['entities', String(result.customTagId)]).update('customTagGroupIds', ids => ids.push(groupId))\n\n return state.setIn(['entities', String(result.customTagId)], newCustomTag)\n },\n\n [CustomTagActions.removeCustomTagFromGroupSuccess]: (state, { payload: { groupId, _id, customTagId } }) => {\n const newCustomTag = state.getIn(['entities', String(customTagId)])\n .update('customTagGroupIds', ids => ids.filterNot(id => id === groupId))\n\n return state.setIn(['entities', String(customTagId)], newCustomTag)\n },\n\n [ShoppingCartActions.pinAllSuccess]: (state, { payload: { customTag, pinnedCount } }) => state\n .updateIn(['entities', String(customTag.get('id')), 'newsCount'], count => count + pinnedCount),\n\n [MediaReviewsActions.pinAllSuccess]: (state, { payload: { customTag, pinnedCount } }) => state\n .updateIn(['entities', String(customTag.get('id')), 'newsCount'], count => count + pinnedCount),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as CustomTagActions from 'actions/custom_tags'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n news: []\n})\n\nexport default handleActions({\n [CustomTagActions.fetchNewsForCustomTagSuccess]: (state, { payload: { news } }) => state.merge({\n news: fromJS(news)\n }),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\n\nexport default combineReducers({\n data\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as CustomTagActions from 'actions/custom_tags'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n show: false,\n selectedNewsId: 0\n})\n\nexport default handleActions({\n [CustomTagActions.showAssignCustomTagsToNewsDialog]: (state, { payload: newsId }) => state.merge({\n show: true,\n selectedNewsId: newsId\n }),\n [CustomTagActions.hideAssignCustomTagsToNewsDialog]: () => initialState,\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as CustomTagActions from 'actions/custom_tags'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n show: false,\n selectedGroupId: 0\n})\n\nexport default handleActions({\n [CustomTagActions.showAssignCustomTagsToGroupDialog]: (state, { payload: groupId }) => state.merge({\n show: true,\n selectedGroupId: groupId\n }),\n [CustomTagActions.hideAssignCustomTagsToGroupDialog]: () => initialState,\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport { v4 } from 'uuid'\n\nimport * as Actions from 'actions/custom_tags'\nimport * as AppActions from 'actions/app'\n\nconst createNewGroup = () => fromJS({\n name: '',\n customTagsCustomTagGroups: []\n})\n\nexport const initialState = fromJS({\n showGroupDialog: false,\n showDeleteGroupDialog: false,\n saving: false,\n deleting: false,\n selectedGroup: createNewGroup(),\n headerId: v4()\n})\n\nexport default handleActions({\n [Actions.setSelectedGroup]: (state, { payload: group }) => state.set('selectedGroup', group),\n [Actions.showGroupDialog]: (state, { payload }) => state.merge({\n showGroupDialog: true,\n selectedGroup: payload || createNewGroup()\n }),\n [Actions.hideGroupDialog]: state => state.set('showGroupDialog', false),\n [Actions.showDeleteGroupDialog]: (state, { payload }) => state.merge({\n showDeleteGroupDialog: true,\n selectedGroup: payload\n }),\n [Actions.hideDeleteGroupDialog]: state => state.set('showDeleteGroupDialog', false),\n\n [Actions.saveGroupStart]: state => state.set('saving', true),\n [Actions.saveGroupError]: state => state.set('saving', false),\n [Actions.saveGroupSuccess]: state => state.merge({\n saving: false,\n showGroupDialog: false\n }),\n\n [Actions.deleteGroupStart]: state => state.set('deleting', true),\n [Actions.deleteGroupError]: state => state.set('deleting', false),\n [Actions.deleteGroupSuccess]: state => state.merge({\n deleting: false,\n showDeleteGroupDialog: false\n }),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/custom_tags'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS([])\n\nexport default handleActions({\n [Actions.setCustomTags]: (state, { payload: { customTagGroups } }) => fromJS(customTagGroups),\n\n [Actions.saveGroupSuccess]: (state, { payload }) => {\n const group = fromJS(payload)\n const foundIndex = state.findIndex(g => g.get('id') === group.get('id'))\n\n if (foundIndex !== -1) {\n return state.set(foundIndex, group)\n }\n\n return state.push(group)\n },\n [Actions.deleteGroupSuccess]: (state, { payload: group }) => state.filter(g => g.get('id') !== group.get('id')),\n\n [Actions.assignCustomTagToGroupSuccess]: (state, { payload: { groupId, result } }) => state.map(g => {\n if (g.get('id') === groupId) {\n return g.update('customTagsCustomTagGroups', c => c.push(fromJS(result)))\n }\n\n return g\n }),\n\n [Actions.removeCustomTagFromGroupSuccess]: (state, { payload: { groupId, id, _customTagId } }) => state.map(g => {\n if (g.get('id') === groupId) {\n return g.update('customTagsCustomTagGroups', c => c.filterNot(cc => cc.get('id') === id))\n }\n\n return g\n }),\n\n [Actions.saveCustomTagSuccess]: (state, { payload: { customTag } }) => {\n const newCustomTag = fromJS(customTag)\n\n return state.map(g => g.update('customTagsCustomTagGroups', c => {\n const customTagIds = c.map(cc => cc.get('customTagId'))\n let customTagsCustomTagGroups = c\n\n if (newCustomTag.get('customTagGroupIds').includes(g.get('id')) && !customTagIds.includes(newCustomTag.get('id'))) {\n const customTagsCustomTagGroup = newCustomTag.get('customTagsCustomTagGroups')\n .find(nct => nct.get('customTagGroupId') === g.get('id'))\n\n customTagsCustomTagGroups = customTagsCustomTagGroups.push(customTagsCustomTagGroup)\n }\n\n return customTagsCustomTagGroups.filter(\n cc => cc.get('customTagId') !== newCustomTag.get('id') || newCustomTag.get('customTagGroupIds').includes(cc.get('customTagGroupId'))\n )\n }))\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport detail from './detail'\nimport assignCustomTagsToNews from './assign_custom_tags_to_news'\nimport assignCustomTagsToGroup from './assign_custom_tags_to_group'\nimport groups from './groups'\n\nexport default combineReducers({\n ui,\n data,\n detail,\n assignCustomTagsToNews,\n assignCustomTagsToGroup,\n groups\n})\n","/* global window */\nimport { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport { ChartGridRowHeight } from 'static/constants'\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/dashboard'\nimport * as EnvironmentActions from 'actions/environment'\n\nconst dashboardMargin = 40\nconst gridPadding = 10\n\nconst calculateRowHeight = state => {\n const height = window.screen.height || 1030\n let rowHeight = ChartGridRowHeight\n\n const innerHeight = height - (dashboardMargin * 2) + gridPadding\n const maxRowCount = Math.floor(innerHeight / rowHeight)\n rowHeight = innerHeight / maxRowCount\n const gridHeight = innerHeight + 2\n\n if (state.get('autoRefresh') && height) {\n return { rowHeight, gridHeight, maxRowCount }\n }\n\n return { rowHeight: ChartGridRowHeight, gridHeight: undefined, maxRowCount }\n}\n\nexport const initialState = fromJS({\n editing: false,\n saving: false,\n deleting: false,\n executing: false,\n showChartDialog: false,\n showEditDialog: false,\n showMultiChartsDialog: false,\n showDeleteDialog: false,\n chartLimitReached: false,\n powerpointExporting: false,\n imageDownloading: false,\n pdfDownloading: false,\n autoRefresh: false,\n gridHeight: undefined,\n rowHeight: ChartGridRowHeight,\n maxRowCount: 0\n})\n\nexport default handleActions({\n [Actions.toggleEditing]: state => state.set('editing', !state.get('editing')),\n\n [Actions.hideChartDialog]: state => state.set('showChartDialog', false),\n [Actions.showChartDialog]: state => state.set('showChartDialog', true),\n\n [Actions.hideMultiChartsDialog]: state => state.set('showMultiChartsDialog', false),\n [Actions.showMultiChartsDialog]: state => state.set('showMultiChartsDialog', true),\n\n [Actions.hideEditDialog]: state => state.set('showEditDialog', false),\n [Actions.showEditDialog]: state => state.set('showEditDialog', true),\n\n [Actions.hideDeleteDialog]: state => state.set('showDeleteDialog', false),\n [Actions.showDeleteDialog]: state => state.set('showDeleteDialog', true),\n\n [Actions.fetchDashboard]: state => state.set('editing', false),\n\n [Actions.saveDashboardStart]: state => state.set('saving', true),\n [Actions.saveDashboardError]: state => state.set('saving', false),\n [Actions.saveDashboardSuccess]: state => state.set('saving', false),\n\n [Actions.exportDashboardAsPowerpointStart]: state => state.set('powerpointExporting', true),\n [Actions.exportDashboardAsPowerpointError]: state => state.set('powerpointExporting', false),\n [Actions.exportDashboardAsPowerpointSuccess]: state => state.set('powerpointExporting', false),\n\n [Actions.downloadImageStart]: state => state.set('imageDownloading', true),\n [Actions.downloadImageError]: state => state.set('imageDownloading', false),\n [Actions.downloadImageSuccess]: state => state.set('imageDownloading', false),\n\n [Actions.downloadPdfStart]: state => state.set('pdfDownloading', true),\n [Actions.downloadPdfError]: state => state.set('pdfDownloading', false),\n [Actions.downloadPdfSuccess]: state => state.set('pdfDownloading', false),\n\n [Actions.deleteDashboardStart]: state => state.set('deleting', true),\n [Actions.deleteDashboardError]: state => state.set('deleting', false),\n [Actions.deleteDashboardSuccess]: state => state.set('deleting', false),\n\n [Actions.executeSavedSearch]: state => state.set('executing', true),\n [Actions.executedSavedSearch]: state => state.set('executing', false),\n\n [Actions.setChartLimitReached]: (state, { payload }) => state.set('chartLimitReached', payload),\n\n [Actions.toggleAutoRefresh]: state => {\n const newState = state\n .set('rowHeight', ChartGridRowHeight)\n .update('autoRefresh', v => !v)\n\n return newState.merge(calculateRowHeight(newState))\n },\n\n [EnvironmentActions.changeWidthAndHeight]: state => state.merge(calculateRowHeight(state)),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport { DateRanges } from 'static/constants'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/dashboard'\n\nexport const initialState = fromJS({\n dashboards: [],\n allowedDateRanges: DateRanges\n})\n\nconst sort = dashboards => dashboards.sortBy(d => d.get('name').toLowerCase())\nconst parseSavedSearchIds = charts => charts.reduce((acc, c) => acc.add(c.map(d => (d.get('savedSearchId')))), Set())\n\nexport default handleActions({\n [Actions.setDashboards]: (state, { payload: dashboards }) => state.set('dashboards', sort(fromJS(dashboards))),\n\n [Actions.saveDashboardSuccess]: (state, { payload }) => {\n const dashboard = fromJS(payload)\n const dashboards = state.get('dashboards')\n const found = dashboards.find(d => d.get('id') === dashboard.get('id'))\n\n let savedSearchIds\n\n if (dashboard.get('charts')) {\n savedSearchIds = parseSavedSearchIds(dashboard.get('charts')).flatten().toList()\n }\n\n if (found) {\n return state.set('dashboards', sort(dashboards.map(d => {\n if (d.get('id') === dashboard.get('id')) {\n return dashboard.set('savedSearchIds', savedSearchIds)\n }\n\n return d\n })))\n }\n\n return state.update('dashboards', d => sort(d.push(dashboard.set('savedSearchIds', savedSearchIds))))\n },\n\n [Actions.deleteDashboardSuccess]: (state, { payload: id }) => (\n state.update('dashboards', dashboards => dashboards.filter(d => d.get('id') !== id))\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Map } from 'immutable'\nimport { sortCharts, copyFromDisplaySize } from 'utils/charts'\nimport { isPressrelationsNewsChart } from 'utils/chart'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/dashboard'\n\nexport const initialState = fromJS({})\n\nconst newsFeedPageSize = 10\n\nconst updateFlagsInNewsFeedData = (chart, group, loading) => {\n if (group) {\n return chart.updateIn(['data', 'groups'], groups => groups.map(g => {\n if (g.get('id') === group.get('id')) {\n return g.set('loading', loading)\n }\n\n return g\n }))\n }\n\n return chart.setIn(['data', 'loading'], loading)\n}\n\nexport default handleActions({\n [Actions.setSelectedDashboard]: (state, { payload: dashboard }) => {\n const newDashboard = sortCharts(fromJS(dashboard))\n\n return newDashboard\n },\n\n [Actions.setChartData]: (state, { payload: { index, breakpoint, data, chartError } }) => {\n const chart = state.getIn(['charts', breakpoint, index])\n\n if (chart) {\n return state.setIn(['charts', breakpoint, index], chart.merge({\n data: fromJS(data),\n loading: false,\n chartError\n }))\n }\n\n return state\n },\n\n [Actions.setChartLoading]: (state, { payload: { index, breakpoint, loading } }) => {\n const realIndex = index === null ? state.getIn(['charts', breakpoint]).size - 1 : index\n\n const chart = state.getIn(['charts', breakpoint, realIndex])\n\n if (chart) {\n return state.setIn(['charts', breakpoint, realIndex], chart.set('loading', loading !== undefined ? loading : true))\n }\n\n return state\n },\n\n [Actions.setChartOpt]: (state, { payload: { index, breakpoint, key, value } }) => {\n const realIndex = index === null ? state.getIn(['charts', breakpoint]).size - 1 : index\n const chart = state.getIn(['charts', breakpoint, realIndex])\n\n if (chart) {\n return state.setIn(['charts', breakpoint, realIndex], chart.update('opts', opts => (opts || Map({})).set(key, value)))\n }\n\n return state\n },\n\n [Actions.setChart]: (state, { payload: { chart, index, breakpoint } }) => {\n if (index === null) {\n const newLayouts = state.getIn(['layouts', breakpoint]).map(layout => layout.update('y', y => y + 4))\n\n return state.updateIn(['charts', breakpoint], charts => charts.push(chart))\n .setIn(['layouts', breakpoint], newLayouts.push(fromJS({ w: 12, h: 4, x: 0, y: 0 })))\n }\n\n return state.setIn(['charts', breakpoint, index], chart)\n },\n\n [Actions.loadMoreNewsFeedNewsStart]: (state, { payload: { index, breakpoint, group } }) => (\n state.updateIn(['charts', breakpoint, index], chart => updateFlagsInNewsFeedData(chart, group, true))\n ),\n\n [Actions.loadMoreNewsFeedNewsError]: (state, { payload: { index, breakpoint, group } }) => (\n state.updateIn(['charts', breakpoint, index], chart => updateFlagsInNewsFeedData(chart, group, false))\n ),\n\n [Actions.loadMoreNewsFeedNewsSuccess]: (state, { payload: { index, breakpoint, group, result } }) => {\n let newChart = state.getIn(['charts', breakpoint, index])\n\n if (group) {\n const groupId = group.get('id')\n const newNews = fromJS(result.groups).getIn([0, 'news'])\n\n if (newNews) {\n newChart = newChart\n .updateIn(['data', 'groups'], groups => groups.map(g => {\n if (g.get('id') === groupId) {\n return g\n .update('news', news => news.concat(newNews))\n .update('from', newsFeedPageSize, from => from + newsFeedPageSize)\n }\n\n return g\n }))\n }\n } else {\n const newNews = fromJS(result.news)\n\n if (newNews) {\n newChart = newChart.update('data', data => (\n data\n .update('news', news => news.concat(newNews))\n .update('from', newsFeedPageSize, from => from + newsFeedPageSize)\n ))\n }\n }\n\n return state.setIn(['charts', breakpoint, index], updateFlagsInNewsFeedData(newChart, group, false))\n },\n\n [Actions.fetchNewsFeedClusterStatsSuccess]: (state, { payload: { index, breakpoint, group, newNews } }) => {\n let newChart = state.getIn(['charts', breakpoint, index])\n\n if (group) {\n const groupId = group.get('id')\n\n newChart = newChart\n .updateIn(['data', 'groups'], groups => groups.map(g => {\n if (g.get('id') === groupId) {\n return g\n .update('news', news => news.map(n => (n.get('id') === newNews.get('id') ? newNews : n)))\n }\n\n return g\n }))\n } else {\n newChart = newChart.update('data', data => (\n data\n .update('news', news => news.map(n => (n.get('id') === newNews.get('id') ? newNews : n)))\n ))\n }\n\n return state.setIn(['charts', breakpoint, index], newChart)\n },\n\n [Actions.loadMoreSocialMediaAnalyticsFeedPostsStart]: (state, { payload: { index, breakpoint } }) => (\n state.updateIn(['charts', breakpoint, index], chart => chart.setIn(['data', 'loading'], true))\n ),\n\n [Actions.loadMoreSocialMediaAnalyticsFeedPostsError]: (state, { payload: { index, breakpoint } }) => (\n state.updateIn(['charts', breakpoint, index], chart => chart.setIn(['data', 'loading'], false))\n ),\n\n [Actions.loadMoreSocialMediaAnalyticsFeedPostsSuccess]: (state, { payload: { index, breakpoint, result } }) => {\n const newChart = state\n .getIn(['charts', breakpoint, index])\n .updateIn(['data', 'posts'], posts => posts.concat(fromJS(result.posts)))\n .setIn(['data', 'paging'], fromJS(result.paging))\n .setIn(['data', 'loading'], false)\n\n return state.setIn(['charts', breakpoint, index], newChart)\n },\n\n [Actions.removeChart]: (state, { payload: { breakpoint, index } }) => (\n state\n .deleteIn(['charts', breakpoint, index])\n .deleteIn(['layouts', breakpoint, index])\n ),\n\n [Actions.setLayouts]: (state, { payload: { breakpoint, layout } }) => {\n const newLayouts = fromJS(layout).map(s => fromJS({\n x: s.get('x'),\n y: s.get('y'),\n w: s.get('w'),\n h: s.get('h')\n }))\n\n return state.setIn(['layouts', breakpoint], newLayouts)\n },\n\n [Actions.deleteDashboardSuccess]: () => initialState,\n\n [Actions.copyFromDisplaySize]: (state, { payload: { from, to } }) => copyFromDisplaySize(state, from, to),\n\n [Actions.updateDateRangeOfSelectedDashboard]: (state, { payload: dateRange }) => (\n state\n .update(\n 'charts',\n charts => charts.reduce(\n (acc, values, breakpoint) => acc.set(breakpoint, values.map(chart => chart.merge({\n dateRange,\n dateInterval: null\n }))), fromJS({})\n )\n )\n ),\n\n [Actions.updateKpisOfSelectedDashboard]: (state, { payload: kpi }) => (\n state\n .update(\n 'charts',\n charts => charts.reduce(\n (acc, values, breakpoint) => acc.set(breakpoint, values.map(chart => {\n if (isPressrelationsNewsChart(chart)) {\n if (chart.get('type') === 'rectangle') {\n return chart.set('firstLevel', kpi)\n }\n\n return chart.set('thirdLevel', kpi)\n }\n\n return chart\n })), fromJS({})\n )\n )\n ),\n\n [Actions.updateDatesOfSelectedDashboard]: (state, { payload: { dateFrom, dateTo } }) => (\n state\n .update(\n 'charts',\n charts => charts.reduce(\n (acc, values, breakpoint) => acc.set(breakpoint, values.map(chart => chart.merge({\n dateRange: null,\n dateInterval: null,\n dateFrom,\n dateTo\n }))),\n fromJS({})\n )\n )\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/dashboard'\n\nexport const initialState = fromJS({\n name: '',\n config: {},\n uploadedBackgroundImage: null\n})\n\nexport default handleActions({\n [Actions.showEditDialog]: (state, { payload }) => (payload || initialState),\n [Actions.setEditDashboard]: (state, { payload: dashboard }) => dashboard,\n\n [Actions.setEditDashboardColor]: (state, { payload: { key, value } }) => (\n state\n .update('config', config => (config || fromJS({})))\n .updateIn(['config', 'colors'], colors => (colors || fromJS({})).set(key, value))\n ),\n\n [Actions.setEditDashboardUploadedBackgroundImage]: (state, { payload }) => state.set('uploadedBackgroundImage', payload),\n [Actions.setEditDashboardBackgroundImageUrl]: (state, { payload }) => (\n state\n .update('config', config => (config || fromJS({})))\n .setIn(['config', 'backgroundImageUrl'], payload)\n ),\n\n [Actions.resetEditDashboardBackgroundImage]: state => (\n state\n .delete('uploadedBackgroundImage')\n .deleteIn(['config', 'backgroundImageUrl'])\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/dashboard'\n\nexport const initialState = null\n\nexport default handleActions({\n [Actions.setPrevious]: (state, { payload: dashboard }) => fromJS(dashboard),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport { isTimeline } from 'utils/chart'\nimport { isAiEntityKey } from 'utils/ai_entities'\n\nimport { FilterNameMapping, ChartTypes } from 'static/constants'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/dashboard'\n\nexport const initialState = fromJS({\n chart: {},\n loading: false,\n aiAnalysisLoading: false,\n show: false,\n dateFrom: null,\n dateTo: null,\n dateRange: null,\n dateType: null,\n searchParams: null,\n groupingType: 'channel',\n sortBy: '',\n filterData: null,\n secondFilter: null,\n savedSearchId: null\n})\n\nconst getFilterKV = (filterName, filterData) => {\n if (filterData.get('id') === -1) {\n return { key: `exclude_${filterName}`, value: filterData.get('excludeIds') }\n }\n\n return { key: filterName, value: [filterData.get('id')] }\n}\n\nconst addFilters = (searchParams, field, data, isSecondFilter) => {\n const result = { ...searchParams }\n const filterData = fromJS(data)\n\n let fieldName = field\n\n if (field === 'tonality') {\n fieldName = 'tonalities'\n } else if (field === 'sentiment') {\n fieldName = 'sentiments'\n } else if (isAiEntityKey(field)) {\n fieldName = 'aiEntities'\n }\n\n const newsFilterName = FilterNameMapping.news[fieldName]\n\n if (newsFilterName) {\n result.news = result.news || {}\n const { key, value } = getFilterKV(newsFilterName, filterData)\n result.news[key] = value\n }\n\n const publicationFilterName = FilterNameMapping.publication[fieldName]\n\n if (publicationFilterName) {\n result.publication = result.publication || {}\n const { key, value } = getFilterKV(publicationFilterName, filterData)\n result.publication[key] = value\n }\n\n const outlinkFilterName = FilterNameMapping.outlink[fieldName]\n\n if (outlinkFilterName) {\n result.outlink = result.outlink || {}\n const { key, value } = getFilterKV(outlinkFilterName, filterData)\n result.outlink[key] = value\n }\n\n if (fieldName === 'analysisCodes') {\n result.news = result.news || {}\n result.news.analysis = result.news.analysis || {}\n\n if (isSecondFilter) {\n const { key, value } = getFilterKV('grouped_code_ids', filterData)\n result.news.analysis[key] = value\n } else {\n const { key, value } = getFilterKV('selected_code_ids', filterData)\n result.news.analysis[key] = value\n }\n }\n\n if (fieldName === 'influencers') {\n result.news = result.news || { identity_id: [] }\n result.news.identity_id = result.news.identity_id.concat(filterData.get('identityIds').toJS())\n }\n\n if (fieldName === 'statementTonalities') {\n result.news = result.news || {}\n result.news.analysis = result.news.analysis || {}\n const { key, value } = getFilterKV('statement_tonalities', filterData)\n result.news.analysis[key] = value\n }\n\n return result\n}\n\nconst buildSearchParams = (chart, filterData, secondFilter) => {\n let searchParams = {}\n\n if (filterData) {\n searchParams = addFilters(searchParams, chart.get('firstLevel'), filterData)\n }\n\n if (secondFilter) {\n searchParams = addFilters(searchParams, chart.get('secondLevel'), secondFilter, true)\n }\n\n return fromJS(searchParams)\n}\n\nexport default handleActions({\n [Actions.showDrilldownDialog]: (state, { payload: { chart, d: { filterData }, secondFilter: sF } }) => {\n let searchParams = null\n let dateFrom = null\n let dateTo = null\n let dateRange = null\n let savedSearchId = null\n const dateType = chart.get('dateType') || chart.getIn(['savedSearch', 'dateType'])\n const secondFilter = sF ? fromJS(sF) : null\n\n if (!isTimeline(chart) || chart.get('type') === ChartTypes.GAUGE) {\n searchParams = buildSearchParams(chart, filterData, secondFilter)\n dateFrom = chart.get('dateFrom')\n dateTo = chart.get('dateTo')\n dateRange = chart.get('dateRange')\n } else {\n dateFrom = filterData.range.from\n dateTo = filterData.range.to\n searchParams = buildSearchParams(chart, null, secondFilter)\n }\n\n if (chart.get('firstLevel') === 'savedSearches') {\n savedSearchId = filterData.id\n } else if (chart.get('secondLevel') === 'savedSearches' && secondFilter) {\n savedSearchId = secondFilter.get('id')\n } else {\n savedSearchId = chart.getIn(['savedSearch', 'id'])\n }\n\n return state.merge({\n chart,\n show: true,\n dateFrom,\n dateTo,\n dateRange,\n dateType,\n savedSearchId,\n groupingType: chart.getIn(['savedSearch', 'groupingType']),\n sortBy: chart.getIn(['savedSearch', 'sortBy']),\n searchParams,\n filterData: fromJS(filterData || {}).delete('searchParams'),\n secondFilter\n })\n },\n [Actions.hideDrilldownDialog]: state => state.set('show', false),\n\n [Actions.loadDrilldownNewsFeedNewsStart]: state => state.set('loading', true),\n [Actions.loadDrilldownNewsFeedNewsError]: state => state.set('loading', false),\n [Actions.loadDrilldownNewsFeedNewsSuccess]: state => state.set('loading', false),\n\n [Actions.loadDrilldownNewsFeedAiAnalysisStart]: state => state.set('aiAnalysisLoading', true),\n [Actions.loadDrilldownNewsFeedAiAnalysisError]: state => state.set('aiAnalysisLoading', false),\n [Actions.loadDrilldownNewsFeedAiAnalysisSuccess]: state => state.set('aiAnalysisLoading', false),\n\n [Actions.selectDrilldownGroupingType]: (state, { payload: groupingType }) => state.set('groupingType', groupingType),\n [Actions.selectDrilldownSortBy]: (state, { payload: sortBy }) => state.set('sortBy', sortBy),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/dashboard'\nimport * as NewsActions from 'actions/news'\n\nconst newsFeedPageSize = 10\n\nconst updateFlagsInGroup = (state, groupId, loading) => (\n state.update('groups', groups => groups.map(group => {\n if (group.get('id') === groupId) {\n return group.merge({ loading })\n }\n\n return group\n }))\n)\n\nconst updateNewsInAllGroups = (state, newNews) => state\n .update('groups', groups => groups.map(g => g\n .update('news', news => news.map(n => {\n if (n.get('id') === newNews.get('id')) {\n return newNews\n }\n\n return n\n }))))\n\nconst updateNewsInGroup = (state, groupId, newNews) => state\n .update('groups', groups => groups.map(g => {\n if (g.get('id') === groupId) {\n return g\n .update('news', news => news.map(n => {\n if (n.get('id') === newNews.get('id')) {\n return newNews\n }\n\n return n\n }))\n }\n\n return g\n }))\n\nexport const initialState = fromJS({\n groups: [],\n aiAnalysis: null\n})\n\nexport default handleActions({\n [Actions.showDrilldownDialog]: () => initialState,\n\n [Actions.loadDrilldownNewsFeedNewsSuccess]: (state, { payload: { groups } }) => {\n const newGroups = fromJS(groups)\n let newState = state.set('groups', newGroups)\n\n newState = newGroups.reduce(\n (acc, group) => (\n updateFlagsInGroup(acc, group.get('id'), false)\n ),\n newState\n )\n\n return newState\n },\n\n [NewsActions.updateNews]: (state, { payload: news }) => {\n let newState = state\n\n newState = news.reduce((acc, n) => updateNewsInAllGroups(acc, n), newState)\n\n return newState\n },\n\n [Actions.loadMoreDrilldownNewsFeedNewsStart]: (state, { payload: { group } }) => (\n updateFlagsInGroup(state, group.get('id'), true)\n ),\n\n [Actions.loadMoreDrilldownNewsFeedNewsError]: (state, { payload: { group } }) => (\n updateFlagsInGroup(state, group.get('id'), false)\n ),\n\n [Actions.loadMoreDrilldownNewsFeedNewsSuccess]: (state, { payload: { group, result } }) => {\n const groupId = group.get('id')\n const newNews = fromJS(result.groups.filter(g => g.id === groupId)).getIn([0, 'news'])\n\n let newState = state\n\n if (newNews) {\n newState = newState\n .update('groups', groups => groups.map(g => {\n if (g.get('id') === groupId) {\n return g\n .update('news', news => news.concat(newNews))\n .update('from', newsFeedPageSize, from => from + newsFeedPageSize)\n }\n\n return g\n }))\n\n newState = updateFlagsInGroup(newState, groupId, false)\n } else {\n newState = updateFlagsInGroup(newState, groupId, false)\n }\n\n return newState\n },\n [Actions.fetchDrilldownNewsFeedClusterStatsSuccess]: (state, { payload: { group, newNews } }) => {\n let newState = state\n\n if (group && newNews) {\n const groupId = group.get('id')\n\n newState = updateNewsInGroup(state, groupId, newNews)\n }\n\n return newState\n },\n\n [Actions.loadDrilldownNewsFeedAiAnalysisStart]: state => state.set('aiAnalysis', null),\n [Actions.loadDrilldownNewsFeedAiAnalysisSuccess]: (state, { payload: { analysis } }) => state.set('aiAnalysis', fromJS(analysis)),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS, Map } from 'immutable'\n\nimport googleAnalyticsChartConfig from 'static/google_analytics_charts'\nimport mozChartConfig from 'static/moz_charts'\nimport youtubeAnalyticsChartConfig, { getThirdLevelByFirstLevel, getTypeByFirstLevel } from 'static/youtube_analytics_charts'\nimport linkedInAnalyticsChartConfig from 'static/linked_in_analytics_charts'\nimport facebookAnalyticsChartConfig from 'static/facebook_analytics_charts'\nimport twitterAnalyticsChartConfig from 'static/twitter_analytics_charts'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/dashboard'\nimport { NewsPageModules, ChartDataSources, ChartTypes } from 'static/constants'\nimport { updateInterval } from 'utils/charts'\nimport {\n isPressrelationsNewsChart,\n isGoogleAnalyticsChart,\n isMozChart,\n isYoutubeAnalyticsChart,\n isLinkedInAnalyticsChart,\n isFacebookAnalyticsChart,\n isTwitterAnalyticsChart,\n isImageChart,\n isTextChart,\n isExternalWidgetChart\n} from 'utils/data_source'\n\nconst createNewChart = () => fromJS({\n firstLevel: 'channels',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n dateRange: 'last_7_days',\n type: 'bar'\n})\n\nexport const initialState = createNewChart()\n\nexport default handleActions({\n [Actions.setSelectedChart]: (state, { payload: chart }) => {\n if (state.get('dataSource') !== chart.get('dataSource')) {\n if (isPressrelationsNewsChart(chart)) {\n return createNewChart()\n }\n\n if (isGoogleAnalyticsChart(chart)) {\n return googleAnalyticsChartConfig.getIn([0, 'chart'])\n }\n\n if (isMozChart(chart)) {\n return mozChartConfig.getIn([0, 'chart'])\n }\n\n if (isYoutubeAnalyticsChart(chart)) {\n return youtubeAnalyticsChartConfig.getIn([0, 'chart'])\n }\n\n if (isLinkedInAnalyticsChart(chart)) {\n return linkedInAnalyticsChartConfig.getIn([0, 'chart'])\n }\n\n if (isFacebookAnalyticsChart(chart)) {\n return facebookAnalyticsChartConfig.getIn([0, 'chart'])\n }\n\n if (isTwitterAnalyticsChart(chart)) {\n return twitterAnalyticsChartConfig.getIn([0, 'chart'])\n }\n\n if (isImageChart(chart)) {\n return fromJS({\n dataSource: ChartDataSources.IMAGE,\n imageUrl: chart.get('imageUrl'),\n type: ChartTypes.IMAGE,\n label: chart.get('label'),\n topLabel: chart.get('topLabel')\n })\n }\n\n if (isTextChart(chart)) {\n return chart.merge({\n dataSource: ChartDataSources.TEXT,\n type: ChartTypes.TEXT,\n loading: false\n })\n }\n\n if (isExternalWidgetChart(chart)) {\n return chart.merge({\n dataSource: ChartDataSources.EXTERNAL_WIDGET,\n type: ChartTypes.EXTERNAL_WIDGET,\n loading: false\n })\n }\n }\n\n return chart\n },\n [Actions.setSelectedChartOpt]: (state, { payload: { key, value } }) => state.update('opts', opts => (opts || Map({})).set(key, value)),\n\n [Actions.selectGoogleAnalyticsView]: (state, { payload: view }) => (\n state.update('opts', opts => (opts || Map({})).update('googleAnalytics', ga => (ga || Map({})).merge({\n viewId: view.get('id'),\n viewName: view.get('name')\n })))\n ),\n\n [Actions.selectMozTargets]: (state, { payload: targets }) => (\n state.update('opts', opts => (opts || Map({})).update('moz', ga => (ga || Map({})).set('targets', fromJS(targets))))\n ),\n\n [Actions.selectLinkedInAnalyticsOrganization]: (state, { payload: organization }) => (\n state.update('opts', opts => (opts || Map({})).update('linkedInAnalytics', ga => (ga || Map({})).merge({\n organizationId: organization.get('id'),\n organizationName: organization.get('name')\n })))\n ),\n\n [Actions.selectFacebookAnalyticsPage]: (state, { payload: page }) => (\n state.update('opts', opts => (opts || Map({})).update('facebookAnalytics', fba => (fba || Map({})).merge({\n pageId: page.get('id'),\n pageName: page.get('name')\n })))\n ),\n\n [Actions.selectSavedSearch]: (state, { payload: savedSearch }) => {\n const currentModule = state.getIn(['savedSearch', 'moduleName'])\n const newModule = savedSearch.get('moduleName')\n\n const newProps = {\n savedSearchId: savedSearch.get('id'),\n savedSearch\n }\n\n if (newModule === NewsPageModules.NEWS_POOL) {\n newProps.dateType = 'article'\n }\n\n if (state.get('additionalSavedSearchIds')) {\n newProps.additionalSavedSearchIds = state.get('additionalSavedSearchIds')\n\n if (currentModule !== newModule) {\n newProps.additionalSavedSearchIds = fromJS([])\n }\n\n newProps.additionalSavedSearchIds = newProps.additionalSavedSearchIds.filter(id => id !== savedSearch.get('id'))\n }\n\n return state\n .merge(fromJS(newProps))\n .delete('groupingType')\n },\n\n [Actions.selectAdditionalSavedSearches]: (state, { payload }) => state.set('additionalSavedSearchIds', fromJS(payload)),\n\n [Actions.selectDateRange]: (state, { payload: dateRange }) => updateInterval(state.merge({\n dateRange,\n dateFrom: null,\n dateTo: null\n })),\n [Actions.selectDate]: (state, { payload: { dateFrom, dateTo } }) => updateInterval(state.merge({\n dateRange: dateFrom && dateTo ? null : state.get('dateRange'),\n dateFrom,\n dateTo\n })),\n [Actions.selectDateMode]: (state, { payload: dateMode }) => {\n let dateRange = state.get('dateRange')\n let dateTo = state.get('dateTo')\n let dateFrom = state.get('dateFrom')\n\n if (dateMode === 'relative' && (!dateRange || !dateRange.startsWith('relative_range'))) {\n dateRange = 'relative_range_3_days'\n dateTo = null\n dateFrom = null\n } else if (dateMode === 'date_range' && (!dateRange || dateRange.startsWith('relative_range'))) {\n dateRange = 'today'\n dateTo = null\n dateFrom = null\n }\n\n return state.merge({\n dateRange,\n dateTo,\n dateFrom\n })\n },\n\n [Actions.selectDateType]: (state, { payload: dateType }) => state.set('dateType', dateType),\n [Actions.selectDateInterval]: (state, { payload: dateInterval }) => state.set('dateInterval', dateInterval),\n [Actions.selectThirdLevel]: (state, { payload: thirdLevel }) => state.set('thirdLevel', thirdLevel),\n [Actions.selectFirstLevel]: (state, { payload: firstLevel }) => {\n let thirdLevel = state.get('thirdLevel')\n let type = state.get('type')\n\n if (isYoutubeAnalyticsChart(state)) {\n thirdLevel = getThirdLevelByFirstLevel(firstLevel, thirdLevel)\n type = getTypeByFirstLevel(firstLevel, type)\n }\n\n return state.merge({\n firstLevel,\n type,\n thirdLevel\n })\n },\n\n [Actions.selectChartDialogGroupingType]: (state, { payload: groupingType }) => state.set('groupingType', groupingType),\n [Actions.selectChartDialogSortBy]: (state, { payload: sortBy }) => state.set('sortBy', sortBy),\n\n [Actions.selectGoogleAnalyticsChart]: (state, { payload: value }) => {\n const data = googleAnalyticsChartConfig.find(c => c.get('value') === value)\n\n if (data) {\n return state.mergeDeep(data.get('chart'))\n }\n\n return state\n },\n [Actions.selectMozChart]: (state, { payload: value }) => {\n const data = mozChartConfig.find(c => c.get('value') === value)\n\n if (data) {\n return state.mergeDeep(data.get('chart'))\n }\n\n return state\n },\n [Actions.selectLinkedInAnalyticsChart]: (state, { payload: value }) => {\n const data = linkedInAnalyticsChartConfig.find(c => c.get('value') === value)\n\n if (data) {\n return state.mergeDeep(data.get('chart'))\n }\n\n return state\n },\n [combineActions(Actions.selectFacebookAnalyticsChart, Actions.setFacebookAnalyticsChart)]: (state, { payload: value }) => {\n const data = facebookAnalyticsChartConfig.find(c => c.get('value') === value)\n\n if (data) {\n return state.mergeDeep(data.get('chart'))\n }\n\n return state\n },\n\n [Actions.selectTwitterAnalyticsChart]: (state, { payload: value }) => {\n const data = twitterAnalyticsChartConfig.find(c => c.get('value') === value)\n\n if (data) {\n return state.mergeDeep(data.get('chart'))\n }\n\n return state\n },\n\n [Actions.fetchSavedSearchAggregationsStart]: (state, { payload }) => {\n const chart = payload ? payload.chart : state\n\n if (!isImageChart(chart) && !isTextChart(chart) && !isExternalWidgetChart(chart)) {\n return chart.set('loading', true)\n }\n\n return chart\n },\n [Actions.fetchSavedSearchAggregationsError]: state => state.set('loading', false),\n [Actions.fetchSavedSearchAggregationsSuccess]: state => state.set('loading', false),\n\n [Actions.setSelectedChartMultipleSavedSearchesMode]: (state, { payload }) => state.merge(payload\n ? {\n firstLevel: 'savedSearches',\n secondLevel: null\n } : {\n firstLevel: 'channels',\n secondLevel: null,\n additionalSavedSearchIds: fromJS([])\n }),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport { findValueByChart as findGoogleAnalyticsValueByChart } from 'static/google_analytics_charts'\nimport { findValueByChart as findMozValueByChart } from 'static/moz_charts'\nimport { findValueByChart as findLinkedInValueByChart } from 'static/linked_in_analytics_charts'\nimport { findValueByChart as findFacebookValueByChart } from 'static/facebook_analytics_charts'\nimport { findValueByChart as findTwitterValueByChart } from 'static/twitter_analytics_charts'\nimport { StepTypes, DateModes } from 'static/constants'\nimport { rangeToDates, calculateIntervals } from 'utils/date'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/dashboard'\n\nconst { allowedDateIntervals: defaultAllowedDateIntervals } = calculateIntervals(null, new Date(), new Date())\n\nconst filterIntervalsForGoogleAnalytics = intervals => intervals.filter(i => i !== 'week')\n\nexport const initialState = fromJS({\n aggregations: {},\n index: null,\n stepType: StepTypes.CHARTS,\n dateMode: DateModes.DATE_RANGE,\n allowedDateIntervals: defaultAllowedDateIntervals,\n allowedGoogleAnalyticsIntervals: filterIntervalsForGoogleAnalytics(defaultAllowedDateIntervals),\n selectedGoogleAnalyticsChart: 'ga_chart_timeline',\n selectedMozChart: 'moz_page_authority',\n selectedGoogleAnalyticsViewId: null,\n selectedGoogleAnalyticsSegmentId: null,\n selectedLinkedInAnalyticsChart: 'li_chart_timeline',\n selectedFacebookAnalyticsChart: 'page_views',\n selectedTwitterAnalyticsChart: 'social_media_analytics_feed',\n multipleSavedSearchesMode: false,\n uploadedPhoto: null\n})\n\nconst updateIntervals = (state, dateFrom, dateTo, dateRange) => {\n if (dateFrom && dateTo) {\n const { allowedDateIntervals } = calculateIntervals(null, dateFrom, dateTo, dateRange)\n\n return state\n .set('allowedDateIntervals', allowedDateIntervals)\n .set('allowedGoogleAnalyticsIntervals', filterIntervalsForGoogleAnalytics(allowedDateIntervals))\n }\n\n const { from, to } = rangeToDates(dateRange)\n const { allowedDateIntervals } = calculateIntervals(null, from, to, dateRange)\n\n return state\n .set('allowedDateIntervals', allowedDateIntervals)\n .set('allowedGoogleAnalyticsIntervals', filterIntervalsForGoogleAnalytics(allowedDateIntervals))\n}\n\nexport default handleActions({\n [Actions.setSelectedChart]: (state, { payload: chart }) => updateIntervals(\n state,\n chart.get('dateFrom'),\n chart.get('dateTo'),\n chart.get('dateRange')\n ),\n\n [Actions.selectDateRange]: (state, { payload: dateRange }) => updateIntervals(state, null, null, dateRange),\n\n [Actions.selectDateMode]: (state, { payload: dateMode }) => state.set('dateMode', dateMode),\n\n [Actions.selectDate]: (state, { payload: { dateFrom, dateTo } }) => {\n if (dateFrom && dateTo) {\n return updateIntervals(state, dateFrom, dateTo, null)\n }\n\n return state\n },\n\n [Actions.showChartDialog]: state => state.set('uploadedPhoto', null),\n\n [Actions.setSelectedChartStepType]: (state, { payload: stepType }) => state.set('stepType', stepType),\n\n [Actions.fetchSavedSearchAggregationsStart]: (state, { payload }) => {\n let newState = state\n\n if (payload) {\n const { chart, index, isMulti } = payload\n\n let dateMode = DateModes.DATE_RANGE\n\n if (chart.get('dateFrom') && chart.get('dateTo')) {\n dateMode = DateModes.DATE\n } else if ((chart.get('dateRange') || '').startsWith('relative_range')) {\n dateMode = DateModes.RELATIVE\n }\n\n newState = newState.merge(fromJS({\n index,\n aggregations: {},\n multipleSavedSearchesMode: (\n Boolean(isMulti) || chart.get('firstLevel') === 'savedSearches' || chart.get('secondLevel') === 'savedSearches'\n ),\n dateMode,\n selectedGoogleAnalyticsChart: findGoogleAnalyticsValueByChart(chart) || state.get('selectedGoogleAnalyticsChart'),\n selectedMozChart: findMozValueByChart(chart) || state.get('selectedMozChart'),\n selectedLinkedInAnalyticsChart: findLinkedInValueByChart(chart) || state.get('selectedLinkedInAnalyticsChart'),\n selectedFacebookAnalyticsChart: findFacebookValueByChart(chart) || state.get('selectedFacebookAnalyticsChart'),\n selectedTwitterAnalyticsChart: findTwitterValueByChart(chart) || state.get('selectedTwitterAnalyticsChart')\n }))\n\n return updateIntervals(newState, chart.get('dateFrom'), chart.get('dateTo'), chart.get('dateRange'))\n }\n\n return newState.merge(fromJS({\n index: null,\n aggregations: {}\n }))\n },\n\n [Actions.fetchSavedSearchAggregationsSuccess]: (state, { payload: aggs }) => (\n state.set('aggregations', fromJS(aggs))\n ),\n\n [Actions.selectGoogleAnalyticsChart]: (state, { payload: chart }) => state.set('selectedGoogleAnalyticsChart', chart),\n [Actions.selectMozChart]: (state, { payload: chart }) => state.set('selectedMozChart', chart),\n [Actions.selectLinkedInAnalyticsChart]: (state, { payload: chart }) => state.set('selectedLinkedInAnalyticsChart', chart),\n [\n combineActions(\n Actions.selectFacebookAnalyticsChart,\n Actions.setFacebookAnalyticsChart\n )\n ]: (state, { payload: chart }) => state.set('selectedFacebookAnalyticsChart', chart),\n [Actions.selectTwitterAnalyticsChart]: (state, { payload: chart }) => state.set('selectedTwitterAnalyticsChart', chart),\n\n [Actions.setSelectedChartUploadedPhoto]: (state, { payload: data }) => state.set('uploadedPhoto', data),\n\n [Actions.setSelectedChartMultipleSavedSearchesMode]: (state, { payload }) => state.set('multipleSavedSearchesMode', payload),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\nimport ui from './ui'\n\nexport default combineReducers({\n data,\n ui\n})\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport selected from './selected'\nimport edit from './edit'\nimport previous from './previous'\nimport drilldown from './drilldown'\nimport selectedChart from './selected_chart'\n\nexport default combineReducers({\n data,\n drilldown,\n edit,\n previous,\n selected,\n selectedChart,\n ui\n})\n","/* global navigator */\nimport { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport MobileDetect from 'mobile-detect'\n\nimport * as Actions from 'actions/environment'\n\nconst initialState = fromJS({\n mobile: false,\n tablet: false,\n phone: false\n})\n\nconst { userAgent } = navigator\nconst ie = userAgent && (!!userAgent.match(/MSIE/) || !!userAgent.match(/Trident/))\n\nexport default handleActions({\n [Actions.changeWidthAndHeight]: (state, { payload: { width, height } }) => {\n const detect = new MobileDetect(navigator.userAgent) // Do not use global variable to reflect changes in DevTool\n\n return state.merge({\n mobile: !!detect.mobile(),\n tablet: !!detect.tablet(),\n phone: !!detect.phone(),\n ios: detect.os() === 'iOS',\n ie,\n xs: width < 600,\n 'gt-xs': width >= 600,\n 'lt-sm': width < 600,\n sm: width >= 600 && width < 960,\n 'gt-sm': width >= 960,\n 'lt-md': width < 960,\n md: width >= 960 && width < 1280,\n 'gt-md': width >= 1280,\n 'lt-lg': width < 1280,\n lg: width >= 1280 && width < 1920,\n 'gt-lg': width >= 1920,\n 'lt-xl': width < 1920,\n xl: width >= 1920,\n landscape: width > height\n })\n }\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from '../actions/environment'\n\nconst initialState = fromJS({\n width: null,\n height: null,\n stage: 'development',\n environmentIsLoaded: false\n})\n\nexport default handleActions({\n [Actions.changeWidthAndHeight]: (state, action) => state.merge({\n width: action.payload.width,\n height: action.payload.height\n }),\n [Actions.stageRequestSuccess]: (state, action) => state.merge({\n stage: action.payload,\n environmentIsLoaded: true\n })\n}, initialState)\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'WHITELABEL/'\n\nexport const whitelabelRequestSuccess = createAction(`${prefix}WHITELABEL_REQUEST_SUCCESS`)\nexport const whitelabelRequestError = createAction(`${prefix}WHITELABEL_REQUEST_ERROR`)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport translations from 'static/translations.json'\nimport translationsPlotlights from 'static/translations_plotlights.json'\n\nimport * as UserActions from 'actions/user'\nimport * as SavedDashboardActions from 'actions/saved_dashboard'\nimport * as SavedChartsActions from 'actions/saved_charts'\nimport * as WhitelabelActions from 'actions/whitelabel'\nimport { getLocale } from 'utils/locale'\n\nexport const getTranslationsByLocale = (language, config = translations) => (\n Object.keys(config).reduce((acc, element) => ({ ...acc, [element]: config[element][language] }), {})\n)\n\nconst locale = getLocale()\n\nconst englishTranslations = fromJS(getTranslationsByLocale('en', translations))\nconst englishTranslationsPlotlights = fromJS(getTranslationsByLocale('en', translationsPlotlights))\n\nconst buildI18n = (loc, isPlotlights) => {\n let newTranslations = fromJS(getTranslationsByLocale(loc, translations))\n let english = englishTranslations\n\n if (isPlotlights) {\n newTranslations = newTranslations.merge(fromJS(getTranslationsByLocale(loc, translationsPlotlights)))\n english = englishTranslations.merge(englishTranslationsPlotlights)\n }\n\n /* istanbul ignore next */\n return {\n get: (value, replacements = {}, forceEnglish = false) => {\n let translation = newTranslations.get(value) || english.get(value) || value || ''\n\n if (forceEnglish) {\n translation = english.get(value) || value || ''\n }\n\n return Object.keys(replacements)\n .reduce(\n (acc, key) => acc.replaceAll(`{${key}}`, replacements[key]),\n translation\n )\n .replace(/\\{.*?\\}/g, '')\n }\n }\n}\n\nexport const initialState = {\n translations: buildI18n(locale),\n isPlotlights: false\n}\n\nexport default handleActions({\n [UserActions.setUser]: (state, { payload: { languageShort } }) => (\n { ...state, translations: buildI18n(languageShort, state.isPlotlights) }\n ),\n\n [WhitelabelActions.whitelabelRequestSuccess]: (state, { payload }) => (\n { ...state, isPlotlights: payload.theme === 'plotlights' }\n ),\n\n [combineActions(\n SavedDashboardActions.fetchSavedDashboardSuccess,\n SavedChartsActions.fetchSavedChartSuccess\n )]: (state, { payload: { locale: loc } }) => (\n { ...state, translations: buildI18n(loc, state.isPlotlights) }\n )\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as Actions from 'actions/identity_sets'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n showAddIdentityToIdentitySetDialog: false,\n showIdentitySetDialog: false,\n showDeleteIdentitySetDialog: false,\n loadingIdentitySetIds: Set([]),\n uploadedPhoto: null,\n savingIdentitySet: false\n})\n\nexport default handleActions({\n [Actions.showIdentitySetDialog]: state => state.set('showIdentitySetDialog', true),\n [Actions.hideIdentitySetDialog]: state => state.set('showIdentitySetDialog', false),\n\n [Actions.showAddIdentityToIdentitySetDialog]: state => state.set('showAddIdentityToIdentitySetDialog', true),\n [Actions.hideAddIdentityToIdentitySetDialog]: state => state.set('showAddIdentityToIdentitySetDialog', false),\n\n [Actions.addIdentityToIdentitySetStart]: (state, { payload: { identitySet } }) => (\n state.update('loadingIdentitySetIds', l => l.add(identitySet.get('id')))\n ),\n [Actions.addIdentityToIdentitySetError]: (state, { payload: { identitySet } }) => (\n state.update('loadingIdentitySetIds', l => l.remove(identitySet.get('id')))\n ),\n [Actions.addIdentityToIdentitySetSuccess]: (state, { payload: { identitySet } }) => (\n state.update('loadingIdentitySetIds', l => l.remove(identitySet.get('id')))\n ),\n\n [Actions.removeIdentityFromIdentitySetStart]: (state, { payload: { identitySet } }) => (\n state.update('loadingIdentitySetIds', l => l.add(identitySet.get('id')))\n ),\n [Actions.removeIdentityFromIdentitySetError]: (state, { payload: { identitySet } }) => (\n state.update('loadingIdentitySetIds', l => l.remove(identitySet.get('id')))\n ),\n [Actions.removeIdentityFromIdentitySetSuccess]: (state, { payload: { identitySet } }) => (\n state.update('loadingIdentitySetIds', l => l.remove(identitySet.get('id')))\n ),\n\n [Actions.saveIdentitySetStart]: state => state.set('savingIdentitySet', true),\n [Actions.saveIdentitySetError]: state => state.set('savingIdentitySet', false),\n [Actions.saveIdentitySetSuccess]: state => state.set('savingIdentitySet', false),\n\n [Actions.setUploadedPhoto]: (state, { payload: data }) => state.set('uploadedPhoto', data),\n\n [Actions.showDeleteIdentitySetDialog]: state => state.set('showDeleteIdentitySetDialog', true),\n [Actions.hideDeleteIdentitySetDialog]: state => state.set('showDeleteIdentitySetDialog', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport { normalizeIt } from 'utils/normalizr'\n\nimport * as Actions from 'actions/identity_sets'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n entities: {},\n result: []\n})\n\nexport default handleActions({\n [Actions.setIdentitySets]: (state, { payload: identitySets }) => (\n state.merge(fromJS(normalizeIt({ identitySets }, 'identitySet')))\n ),\n\n [Actions.saveIdentitySetSuccess]: (state, { payload: { identitySet } }) => (\n state\n .update('entities', entities => entities.set(identitySet.id.toString(), fromJS(identitySet)))\n .update('result', result => (result.includes(identitySet.id) ? result : result.push(identitySet.id)))\n ),\n\n [Actions.deleteIdentitySetSuccess]: (state, { payload: id }) => (\n state\n .update('entities', entities => entities.delete(id.toString()))\n .update('result', result => result.filter(i => i !== id))\n ),\n\n [Actions.removeIdentityFromIdentitySetSuccess]: (state, { payload: { identitySet, identityId } }) => {\n const entity = state.getIn(['entities', identitySet.get('id').toString()])\n\n if (entity) {\n return state.setIn(\n ['entities', identitySet.get('id').toString()],\n entity.update('identitySetsIdentities', is => is.filter(i => i.get('identityId') !== identityId))\n )\n }\n\n return state\n },\n\n [Actions.addIdentityToIdentitySetSuccess]: (state, { payload: { identitySetsIdentities } }) => {\n const { identitySetId } = identitySetsIdentities\n const entity = state.getIn(['entities', identitySetId.toString()])\n\n if (entity) {\n return state.setIn(\n ['entities', identitySetId.toString()],\n entity.update('identitySetsIdentities', is => is.push(fromJS(identitySetsIdentities)))\n )\n }\n\n return state\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/identity_sets'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n identitySetIds: []\n})\n\nexport default handleActions({\n [Actions.showAddIdentityToIdentitySetDialog]: (state, { payload: identity }) => identity,\n\n [Actions.hideAddIdentityToIdentitySetDialog]: () => initialState,\n\n [Actions.addIdentityToIdentitySetSuccess]: (state, { payload: { identitySet, identityId } }) => {\n if (state.get('id') === identityId) {\n return state\n .update('identitySetIds', ids => ids.push(identitySet.get('id')))\n }\n\n return state\n },\n\n [Actions.removeIdentityFromIdentitySetSuccess]: (state, { payload: { identitySet, identityId } }) => {\n if (state.get('id') === identityId) {\n return state\n .update('identitySetIds', ids => ids.filter(id => id !== identitySet.get('id')))\n }\n\n return state\n },\n\n [Actions.deleteIdentitySetSuccess]: (state, { payload: identitySetId }) => (\n state\n .update('identitySetIds', ids => ids.filter(id => id !== identitySetId))\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/identity_sets'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n name: ''\n})\n\nexport default handleActions({\n [Actions.showIdentitySetDialog]: (state, { payload: identitySet }) => identitySet || initialState,\n\n [Actions.showDeleteIdentitySetDialog]: (state, { payload: identitySet }) => identitySet,\n\n [Actions.setSelectedIdentitySet]: (state, { payload: identitySet }) => identitySet,\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport selectedIdentity from './selected_identity'\nimport selectedIdentitySet from './selected_identity_set'\n\nexport default combineReducers({\n ui,\n data,\n selectedIdentity,\n selectedIdentitySet\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as Actions from 'actions/influencers'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n from: 0,\n sortBy: 'reach',\n running: false,\n selectedIds: Set([])\n})\n\nexport default handleActions({\n [Actions.influencersRequestSuccess]: state => state.update('from', from => from + 20).merge({\n running: false,\n selectedIds: Set([])\n }),\n [Actions.influencersRequestError]: state => state.set('running', false),\n [Actions.influencersRequestStart]: state => state.merge({\n from: 0,\n running: true\n }),\n [Actions.moreInfluencersRequestSuccess]: state => state.update('from', from => from + 20),\n\n [Actions.setSortBy]: (state, { payload: sortBy }) => state.set('sortBy', sortBy),\n\n [Actions.selectInfluencer]: (state, { payload: influencer }) => {\n if (state.get('selectedIds').has(influencer.get('id'))) {\n return state.update('selectedIds', selectedIds => selectedIds.delete(influencer.get('id')))\n }\n\n return state.update('selectedIds', selectedIds => selectedIds.add(influencer.get('id')))\n },\n [Actions.resetInfluencerSelection]: state => state.set('selectedIds', Set([])),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/influencers'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n total: 0,\n influencers: []\n})\n\nconst mapInfluencers = influencers => fromJS(influencers)\n\nexport default handleActions({\n [Actions.influencersRequestSuccess]: (state, { payload: { influencers, total } }) => state.merge({\n influencers: mapInfluencers(influencers),\n total\n }),\n [Actions.moreInfluencersRequestSuccess]: (state, { payload: { influencers } }) => (\n state.update('influencers', old => old.concat(mapInfluencers(influencers)))\n ),\n [Actions.addInfluencerToContactsSuccess]: (state, { payload: { influencer } }) => (\n state.update('influencers',\n influencers => influencers.map(\n i => (\n (i.get('id') === influencer.get('id')) ? (\n i.setIn(['flags', 'contactAdded'], true)\n .setIn(['flags', 'interestExpressed'], true)\n ) : i\n )\n ))\n ),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/influencers'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n show: false,\n running: false,\n selectedChannelId: null\n})\n\nexport default handleActions({\n [Actions.showInfluencerDetails]: state => state.set('show', true),\n [Actions.hideInfluencerDetails]: state => state.merge({\n selectedChannelId: null,\n show: false\n }),\n\n [Actions.fetchInfluencerRequestStart]: state => state.set('running', true),\n [Actions.fetchInfluencerRequestSuccess]: state => state.set('running', false),\n [Actions.fetchInfluencerRequestError]: state => state.set('running', false),\n\n [Actions.selectChannel]: (state, { payload: channelId }) => {\n if (channelId === state.get('selectedChannelId')) {\n return state.set('selectedChannelId', null)\n }\n\n return state.set('selectedChannelId', channelId)\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/influencers'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n influencer: {\n location: {}\n },\n groupedIdentities: {},\n channels: [],\n contacts: {\n links: [],\n emails: [],\n phones: [],\n faxes: [],\n xings: [],\n linkedins: [],\n networks: []\n },\n totalReach: 0,\n reachChart: {\n firstLevel: 'reach',\n type: 'pie',\n data: [],\n opts: {\n forcedTheme: 'nrx',\n innerRadius: 60,\n showPercent: true\n }\n }\n})\n\nexport default handleActions({\n [Actions.fetchInfluencerRequestSuccess]: (state, { payload }) => {\n const data = state.merge(fromJS(payload))\n\n return state.merge(data.delete('reach')).setIn(['reachChart', 'data'], data.get('reach'))\n },\n\n [Actions.highlightReachChart]: (state, { payload: channelId }) => {\n const chartData = state.getIn(['reachChart', 'data']).map(r => r.update('fill', () => {\n if (channelId === null || r.get('channelId') === channelId) {\n return r.get('color')\n }\n\n return '#e0e0e0'\n }))\n\n return state.setIn(['reachChart', 'data'], chartData)\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/influencers'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n show: false,\n loading: false,\n contactsLoading: false,\n distributionListCreateDialogOpen: false\n})\n\nexport default handleActions({\n [Actions.openAddInfluencerToContactsDialog]: state => state.set('show', true),\n [Actions.closeAddInfluencerToContactsDialog]: state => state.set('show', false),\n [Actions.setDistributionListCreateDialogOpen]: (state, { payload }) => state.set('distributionListCreateDialogOpen', payload),\n [Actions.addInfluencerToContactsStart]: state => state.set('loading', true),\n [Actions.addInfluencerToContactsError]: state => state.set('loading', false),\n [Actions.addInfluencerToContactsSuccess]: (state, { payload }) => (\n state.set('show', false)\n .set('distributionListCreateDialogOpen', payload.mail && payload.mail.length > 0)\n .set('loading', false)\n ),\n [Actions.searchContactsStart]: state => state.set('contactsLoading', true),\n [combineActions(\n Actions.searchContactsSuccess,\n Actions.searchContactsError\n )]: state => state.set('contactsLoading', false),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/influencers'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n influencer: null,\n contactData: {\n selectedEmail: 0\n },\n importContactsForDistributionLists: [],\n alreadyImportedContacts: []\n})\n\nexport default handleActions({\n [Actions.openAddInfluencerToContactsDialog]: (state, { payload }) => (\n state.set('influencer', fromJS(payload))\n ),\n\n [Actions.closeAddInfluencerToContactsDialog]: state => (\n state.set('influencer', null)\n ),\n [Actions.updateContactData]: (state, { payload }) => (\n state.setIn(['contactData', payload.key], fromJS(payload.value))\n ),\n [Actions.setImportContactsForDistributionLists]: (state, { payload }) => (\n state.set('importContactsForDistributionLists', fromJS([payload.contact]))\n ),\n\n [Actions.searchContactsSuccess]: (state, { payload }) => (\n state.set('alreadyImportedContacts', fromJS(payload.contacts))\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport details from './details'\nimport addToContacts from './add_to_contacts'\n\nexport default combineReducers({\n ui,\n data,\n details,\n addToContacts\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/mailing_lists'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({})\n\nconst addMailingListsToState = (state, mailingLists) => {\n const newState = fromJS({}).withMutations(ctx => {\n mailingLists.forEach(\n mailingList => ctx.set(mailingList.get('id').toString(), mailingList)\n )\n })\n\n return newState\n}\n\nexport default handleActions({\n [Actions.setMailingLists]: (state, { payload: mailingLists }) => addMailingListsToState(state, fromJS(mailingLists)),\n [Actions.saveMailingListSuccess]: (state, { payload: mailingList }) => state.set(mailingList.id.toString(), fromJS(mailingList)),\n [Actions.deleteMailingListSuccess]: (state, { payload: mailingListId }) => state.delete(mailingListId.toString()),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/mailing_lists'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n running: false,\n removeActive: false,\n active: false\n})\n\nexport default handleActions({\n [Actions.showMailingListDialog]: state => state.set('active', true),\n [Actions.hideMailingListDialog]: state => state.set('active', false),\n\n [Actions.showRemoveMailingListDialog]: state => state.set('removeActive', true),\n [Actions.hideRemoveMailingListDialog]: state => state.set('removeActive', false),\n\n [Actions.saveMailingListStart]: state => state.set('running', true),\n [Actions.saveMailingListSuccess]: state => state.set('running', false),\n [Actions.saveMailingListError]: state => state.set('running', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/mailing_lists'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n selectedMailingList: {\n name: '',\n recipients: []\n }\n})\n\nexport default handleActions({\n [Actions.showMailingListDialog]: (state, action) => {\n if (action.payload) {\n return state.set('selectedMailingList', action.payload)\n }\n\n return state\n },\n [Actions.updateSelectedMailingList]: (state, { payload: mailingList }) => state.set('selectedMailingList', mailingList),\n [Actions.hideMailingListDialog]: () => initialState,\n [Actions.showRemoveMailingListDialog]: (state, { payload: mailingList }) => state.set('selectedMailingList', mailingList),\n [Actions.hideRemoveMailingListDialog]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\nimport dialogs from './dialogs'\n\nexport default combineReducers({\n data,\n dialogs\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as MediaReviewsActions from 'actions/media_reviews'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS([])\n\nconst calculateStats = entities => (\n entities\n .reduce(\n (acc, entity) => acc.update(entity.get('id'), entity, e => e.update('count', 0, count => count + 1)),\n fromJS({})\n )\n .toList()\n .sortBy(e => -e.get('count'))\n)\n\nexport default handleActions({\n [MediaReviewsActions.setMediaReviews]: (state, { payload: data }) => fromJS(data),\n [MediaReviewsActions.filterMediaReviewsSuccess]: (state, { payload: data }) => fromJS(data),\n [MediaReviewsActions.recalculateMediaReviewStats]: (state, { payload: { mediaReviewId, news } }) => {\n const index = state.findIndex(m => m.get('id') === mediaReviewId)\n\n if (index !== -1) {\n const newsCount = news.flatMap(n => n.get('clusteredNews')).size + news.size\n\n const codes = news.flatMap(n => n.get('codes'))\n const codeStats = calculateStats(codes)\n const channels = news.flatMap(n => {\n const channel = n.getIn(['publication', 'channel'])\n\n const result = []\n for (let i = 0; i <= n.get('clusteredNews').size; i += 1) {\n result.push(channel)\n }\n\n return fromJS(result)\n })\n const channelStats = calculateStats(channels)\n\n return state.update(index, mediaReview => mediaReview.merge(fromJS({\n newsCount,\n stats: {\n codes: codeStats,\n channels: channelStats\n }\n })))\n }\n\n return state\n },\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as MediaReviewsActions from 'actions/media_reviews'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n running: false,\n checkMediaReviewReactionsBlocked: false,\n showRemoveNewsDialog: false,\n showDiffWarning: false,\n selectedMediaReviewNewsItem: {},\n selectedMediaReviewId: null,\n deletingNews: false,\n collapsedTopics: Set([]),\n expandedNews: Set([]),\n expandedSummaries: Set([]),\n selectedNewsForSorting: Set([]),\n showCustomTagDialog: false,\n showRemoveCustomTagDialog: false,\n autoAddMediaReviewsNews: false\n})\n\nexport default handleActions({\n [MediaReviewsActions.fetchNewsForMediaReviewStart]: () => initialState.set('running', true),\n [MediaReviewsActions.fetchNewsForMediaReviewSuccess]: state => state.set('running', false),\n [MediaReviewsActions.fetchNewsForMediaReviewError]: state => state.set('running', false),\n\n [MediaReviewsActions.removeNewsFromMediaReviewStart]: state => state.set('deletingNews', true),\n [MediaReviewsActions.removeNewsFromMediaReviewError]: state => state.set('deletingNews', false),\n\n [MediaReviewsActions.showCustomTagDialog]: state => state.set('showCustomTagDialog', true),\n [MediaReviewsActions.hideCustomTagDialog]: state => state\n .set('showCustomTagDialog', false)\n .set('autoAddMediaReviewsNews', false),\n [MediaReviewsActions.showRemoveCustomTagDialog]: state => state.set('showRemoveCustomTagDialog', true),\n [MediaReviewsActions.hideRemoveCustomTagDialog]: state => state.set('showRemoveCustomTagDialog', false),\n\n [MediaReviewsActions.selectMediaReview]: (state, { payload: mediaReviewId }) => state.merge({\n selectedMediaReviewId: mediaReviewId\n }),\n [MediaReviewsActions.showRemoveNewsDialog]: (state, { payload: news }) => state.merge({\n showRemoveNewsDialog: true, selectedMediaReviewNewsItem: news\n }),\n [MediaReviewsActions.hideRemoveNewsDialog]: state => state.merge({\n showRemoveNewsDialog: false\n }),\n [MediaReviewsActions.removeNewsFromMediaReviewSuccess]: state => state.merge({\n showRemoveNewsDialog: false,\n deletingNews: false\n }),\n [MediaReviewsActions.collapseTopics]: (state, { payload: topicIds }) => state.merge({\n collapsedTopics: state.get('collapsedTopics').union(topicIds)\n }),\n [MediaReviewsActions.expandTopics]: (state, { payload: topicIds }) => state.merge({\n collapsedTopics: state.get('collapsedTopics').subtract(topicIds)\n }),\n [MediaReviewsActions.showSnippet]: (state, { payload: newsIds }) => state.merge({\n expandedNews: state.get('expandedNews').union(newsIds)\n }),\n [MediaReviewsActions.hideSnippet]: (state, { payload: newsIds }) => state.merge({\n expandedNews: state.get('expandedNews').subtract(newsIds)\n }),\n [MediaReviewsActions.showSummary]: (state, { payload: newsIds }) => state.merge({\n expandedSummaries: state.get('expandedSummaries').union(newsIds)\n }),\n [MediaReviewsActions.hideSummary]: (state, { payload: newsIds }) => state.merge({\n expandedSummaries: state.get('expandedSummaries').subtract(newsIds)\n }),\n [MediaReviewsActions.selectNewsForSorting]: (state, { payload: { newsIds, isReplace, keyPress } }) => {\n const selectedNewsForSorting = state.get('selectedNewsForSorting')\n const deselect = (keyPress.ctrlKey || keyPress.metaKey)\n && (selectedNewsForSorting.some(n => n.get('newsId') === newsIds.first().get('newsId')))\n let replace = isReplace\n\n if (!replace) {\n replace = !selectedNewsForSorting.isEmpty() && selectedNewsForSorting.first().get('codeId') !== newsIds.first().get('codeId')\n }\n\n let result = Set([])\n\n if (replace) {\n result = Set(newsIds)\n } else if (deselect) {\n result = selectedNewsForSorting.subtract(newsIds)\n } else {\n result = selectedNewsForSorting.union(newsIds)\n }\n\n return state.merge({\n selectedNewsForSorting: result\n })\n },\n [MediaReviewsActions.deselectNewsForSorting]: (state, { payload: newsIds }) => state.merge({\n selectedNewsForSorting: state.get('selectedNewsForSorting').subtract(newsIds)\n }),\n\n [combineActions(\n MediaReviewsActions.moveNewsInMediaReviewStart,\n MediaReviewsActions.resetSortingSelection\n )]: state => (\n state.set('selectedNewsForSorting', initialState.get('selectedNewsForSorting'))\n ),\n\n [MediaReviewsActions.setAutoAddMediaReviewsNews]: (state, { payload }) => (\n state.set('autoAddMediaReviewsNews', payload)\n ),\n\n [combineActions(\n MediaReviewsActions.replaceMediaReviewReactionSuccess,\n MediaReviewsActions.replaceMediaReviewReactionError\n )]: state => state.set('checkMediaReviewReactionsBlocked', false),\n\n [MediaReviewsActions.replaceMediaReviewReactionStart]: state => state.set('checkMediaReviewReactionsBlocked', true),\n\n [MediaReviewsActions.showDiffWarning]: state => state.set('showDiffWarning', true),\n [MediaReviewsActions.hideDiffWarning]: state => state.set('showDiffWarning', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { listMove } from 'utils/immutable'\n\nexport const newsIdFromDraggableId = draggableId => (\n parseInt(draggableId.substr(draggableId.indexOf('_') + 1), 10)\n)\n\nexport const reorder = (list, startIndex, endIndex) => (\n listMove(list, startIndex, endIndex)\n)\n\nconst reorderSingleDrag = ({\n draggableIds,\n _selectedDraggableIds,\n sourceIndex,\n destinationIndex\n}) => (\n reorder(\n draggableIds,\n sourceIndex,\n destinationIndex\n )\n)\n\nconst reorderMultiDrag = ({\n draggableIds,\n selectedDraggableIds,\n destinationIndex\n}) => {\n const orderedSelectedDraggableIds = [...selectedDraggableIds]\n orderedSelectedDraggableIds.sort(\n (a, b) => {\n const indexOfA = draggableIds.indexOf(a)\n const indexOfB = draggableIds.indexOf(b)\n\n if (indexOfA !== indexOfB) {\n return indexOfA - indexOfB\n }\n\n return -1\n }\n )\n\n const remainingDraggableIds = draggableIds.filter(id => !selectedDraggableIds.includes(id))\n const withInserted = remainingDraggableIds.splice(destinationIndex, 0, ...orderedSelectedDraggableIds)\n\n return withInserted\n}\n\nexport const multiDragAwareReorder = args => {\n if (args.selectedDraggableIds.size > 1) {\n return reorderMultiDrag(args)\n }\n\n return reorderSingleDrag(args)\n}\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport { listMove } from 'utils/immutable'\nimport { multiDragAwareReorder } from 'utils/multidrag'\n\nimport * as MediaReviewsActions from 'actions/media_reviews'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n summary: null,\n summaryContainers: [],\n groupedNews: [],\n totalCount: 0,\n count: 0,\n loadedFullTexts: [],\n reactions: {}\n})\n\nconst removeUserReactionFromNewsAndCode = (state, codeId, newsId, userId) => state.updateIn(\n ['reactions', `${codeId || ''}||${newsId}`],\n reactions => (!reactions ? reactions : reactions.map(reaction => reaction.filter(user => user.get('id') !== userId)))\n)\n\nconst addUserReactionToNewsAndCode = (state, codeId, newsId, reactionTypeId, user) => state.updateIn(\n ['reactions', `${codeId || ''}||${newsId}`, reactionTypeId],\n reactions => {\n if (!reactions) {\n return fromJS([user])\n }\n\n return reactions.push(fromJS(user))\n }\n)\n\nconst cleanUpReactions = state => (\n state.update(\n 'reactions',\n reactions => (\n reactions\n .map(reaction => reaction.filter(r => !r.isEmpty()))\n .filter(r => !r.isEmpty())\n )\n )\n)\n\nconst moveCode = (state, oldIndex, newIndex) => (\n state.update('groupedNews', groupedNews => listMove(groupedNews, oldIndex, newIndex))\n)\n\nconst moveNews = (state, codeId, oldIndexes, newIndex) => {\n const groupIndex = state.get('groupedNews').findIndex(gn => gn.getIn(['code', 'id']) === codeId)\n const newNews = listMove(state.getIn(['groupedNews', groupIndex, 'news']), oldIndexes, newIndex)\n\n return state.setIn(['groupedNews', groupIndex, 'news'], newNews)\n}\n\nconst removeEmptyCodes = groupedNews => groupedNews.filter(g => !g.get('news').isEmpty())\n\nexport default handleActions({\n [MediaReviewsActions.loadFullTextSuccess]: (state, { payload }) => {\n const newsId = payload.get('newsId')\n const text = payload.get('text')\n const index = state.get('loadedFullTexts').findIndex(t => t.get('newsId') === newsId)\n\n if (index >= 0) {\n return state\n }\n\n const result = { newsId, text }\n\n return state.mergeIn(['loadedFullTexts'], fromJS([result]))\n },\n [MediaReviewsActions.fetchNewsForMediaReviewStart]: () => initialState,\n [MediaReviewsActions.fetchNewsForMediaReviewSuccess]: (\n state,\n { payload: { total, count, reactions, data, summary, summaryContainers } }\n ) => {\n const groupedNews = fromJS(data).map(group => group.update('news', news => news.map(n => n.get('id'))))\n\n return state.merge({\n groupedNews,\n summary,\n summaryContainers,\n totalCount: total,\n count,\n reactions: fromJS(reactions)\n })\n },\n\n [MediaReviewsActions.moveCodeInMediaReviewStart]: (state, { payload: { oldIndex, newIndex } }) => moveCode(state, oldIndex, newIndex),\n [MediaReviewsActions.moveCodeInMediaReviewError]: (state, { payload: { oldIndex, newIndex } }) => moveCode(state, newIndex, oldIndex),\n\n [MediaReviewsActions.moveNewsInMediaReviewStart]:\n (state, { payload: { codeId, oldIndex, newIndex, selectedNews } }) => {\n const selectedDraggableIds = selectedNews.filter(sn => sn.get('codeId') === codeId).map(sn => sn.get('newsId'))\n const newNews = multiDragAwareReorder({\n draggableIds: state.get('groupedNews').find(gn => gn.getIn(['code', 'id']) === codeId).get('news'),\n selectedDraggableIds,\n sourceIndex: oldIndex,\n destinationIndex: newIndex\n })\n\n return state.update('groupedNews', gn => gn.map(g => (g.getIn(['code', 'id']) === codeId ? g.set('news', newNews) : g)))\n },\n // moveNews(state, codeId, oldIndexes, newIndex),\n [MediaReviewsActions.moveNewsInMediaReviewError]:\n (state, { payload: { codeId, oldIndex, newIndex } }) => moveNews(state, codeId, newIndex, oldIndex),\n\n [MediaReviewsActions.removeNewsFromMediaReviewSuccess]: (state, { payload: { newsId } }) => (\n state.update('groupedNews', gN => gN.map(g => g.update('news', news => (news.filter(id => id !== newsId)))))\n .update('groupedNews', removeEmptyCodes)\n ),\n\n [MediaReviewsActions.regroupNews]: (state, { payload: news }) => {\n const newsCodeIds = news.get('codes').map(c => c.get('id')).toSet()\n\n let groupedNews = state.get('groupedNews').map(g => {\n if (!newsCodeIds.has(g.getIn(['code', 'id']))) {\n return g.update('news', n => n.filter(id => id !== news.get('id')))\n }\n\n if (!g.get('news').includes(news.get('id'))) {\n return g.update('news', n => n.push(news.get('id')))\n }\n\n return g\n })\n\n const stateCodeIds = state.get('groupedNews').map(g => g.getIn(['code', 'id'])).toSet()\n const newCodes = news.get('codes').filter(c => !stateCodeIds.has(c.get('id')))\n\n groupedNews = newCodes.reduce((acc, value) => acc.push(fromJS({\n news: [news.get('id')],\n code: value\n })), groupedNews)\n\n return state.set('groupedNews', removeEmptyCodes(groupedNews))\n },\n [MediaReviewsActions.setGroupedNews]: (state, { payload }) => state.set('groupedNews', payload),\n [MediaReviewsActions.recalculateMediaReviewStats]: (state, { payload: { news } }) => {\n const count = news.size\n const totalCount = news.flatMap(n => n.get('clusteredNews')).size + count\n\n return state.merge({\n count,\n totalCount\n })\n },\n\n [MediaReviewsActions.replaceMediaReviewReactionSuccess]: (state, { payload }) => {\n let newState = removeUserReactionFromNewsAndCode(state, payload.codeId, payload.newsId, payload.user.id)\n\n if (payload.id) {\n newState = addUserReactionToNewsAndCode(newState, payload.codeId, payload.newsId, payload.reactionType.id.toString(), payload.user)\n }\n\n return cleanUpReactions(newState)\n },\n\n [MediaReviewsActions.fetchMediaReviewReactionsSuccess]: (state, { payload }) => state.set('reactions', fromJS(payload)),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as Actions from 'actions/media_reviews'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = Set([])\n\nexport default handleActions({\n [Actions.setSelectedNews]: (state, { payload: { codeNewsIdPairs, omitIntersection } }) => {\n let newPairs = fromJS([codeNewsIdPairs]).flatten().toSet()\n\n if (omitIntersection) {\n return state.union(newPairs)\n }\n\n const intersection = state.intersect(newPairs)\n newPairs = newPairs.subtract(intersection)\n\n return state.subtract(intersection).union(newPairs)\n },\n\n [Actions.resetNewsSelection]: () => initialState,\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport camelcaseKeysDeep from 'camelcase-keys-deep'\n\nimport * as Actions from 'actions/media_reviews'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS([])\n\nexport default handleActions({\n [Actions.fetchNewsForMediaReviewStart]: () => initialState,\n [Actions.fetchNewsForMediaReviewSuccess]: (_state, { payload: { snapshot } }) => fromJS(snapshot),\n\n [Actions.setSnapshot]: (_state, { payload: snapshot }) => fromJS(camelcaseKeysDeep(fromJS(snapshot).toJS())),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport selectedNews from './selected_news'\nimport snapshot from './snapshot'\n\nexport default combineReducers({\n ui,\n data,\n selectedNews,\n snapshot\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/media_reviews'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n filter: [],\n size: 30,\n filterRequestRunning: false\n})\n\nexport default handleActions({\n [Actions.setMediaReviewFilter]: (state, { payload }) => state.set('filter', fromJS(payload)),\n [Actions.setMediaReviewFilterSize]: (state, { payload }) => state.set('size', fromJS(payload)),\n [Actions.filterMediaReviewsStart]: state => state.set('filterRequestRunning', true),\n [combineActions(\n Actions.filterMediaReviewsSuccess,\n Actions.filterMediaReviewsError\n )]: state => state.set('filterRequestRunning', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\nimport detail from './detail'\nimport filter from './filter'\n\nexport default combineReducers({\n data,\n detail,\n filter\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/charts'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n aggregationValue: 'buzz'\n})\n\nexport default handleActions({\n [Actions.setAggregationValue]: (state, { payload: value }) => state.set('aggregationValue', value),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/charts'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n authorBirthDateRanges: [],\n authorCities: [],\n authorCountries: [],\n authorSexes: [],\n ave: {},\n buzz: {},\n channels: [],\n circulation: {},\n countries: [],\n customTags: [],\n emojis: [],\n entities: [],\n hashtags: [],\n interactions: {},\n languages: [],\n mediaReviewCodes: [],\n mediaTopics: [],\n mediaTypes: [],\n reach: {},\n sentiment: {},\n sentiments: [],\n timeline: [],\n tonalities: [],\n tonality: {},\n visits: {}\n})\n\nexport default handleActions({\n [Actions.aggregationsRequestSuccess]: (state, { payload: aggregations }) => (\n aggregations ? initialState.merge(fromJS((aggregations))) : initialState\n ),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/analysis'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n showPushChartToDashboardDialog: false,\n chartPushRunning: false,\n\n expandedNodes: {\n selected: [],\n restricted: [],\n excluded: [],\n grouped: []\n },\n\n expandedPanels: {\n selected: false,\n restricted: false,\n excluded: false,\n grouped: false\n }\n})\n\nexport default handleActions({\n [Actions.showPushChartToDashboardDialog]: state => state.set('showPushChartToDashboardDialog', true),\n [Actions.hidePushChartToDashboardDialog]: state => state.set('showPushChartToDashboardDialog', false),\n\n [Actions.pushChartToDashboardStart]: state => state.set('chartPushRunning', true),\n [Actions.pushChartToDashboardSuccess]: state => state.set('chartPushRunning', false),\n [Actions.pushChartToDashboardError]: state => state.set('chartPushRunning', false),\n\n [Actions.toggleExpandedPanel]: (state, { payload }) => {\n const current = state.getIn(['expandedPanels', payload])\n\n return state.updateIn(['expandedPanels'], panels => panels.map((value, key) => {\n if (key === payload) {\n return !value\n }\n\n return current ? value : false\n }))\n },\n\n [Actions.setExpandedNodes]: (state, { payload: { type, nodes } }) => (\n state.setIn(['expandedNodes', type], (\n fromJS(nodes)\n .map(id => id.toString())\n .toSet()\n .toList()))\n ),\n\n [Actions.addExpandedNodes]: (state, { payload: { type, nodes } }) => (\n state.updateIn(['expandedNodes', type], oldNodes => (\n oldNodes.toSet().union(fromJS(nodes).map(id => id.toString()))\n ).toList())\n ),\n\n [Actions.removeExpandedNodes]: (state, { payload: { type, nodes } }) => (\n state.updateIn(['expandedNodes', type], oldNodes => (\n oldNodes.toSet().subtract(fromJS(nodes).map(id => id.toString()))\n ).toList())\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as ConfigActions from 'actions/config'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n groupedAnalysisCodes: [],\n groupedMediaReviewCodes: []\n})\n\nexport const findAncestors = (code, codes) => {\n let collector = ''\n\n const sortcodes = Set(\n code.get('sortcode')\n .split('.')\n .filter(Boolean)\n .slice(0, -1)\n .map(p => {\n const prev = collector\n collector += `${p}.`\n\n return `${prev}${p}.`\n })\n )\n\n return codes.filter(c => sortcodes.has(c.get('sortcode')))\n}\n\nconst isExpandable = code => !code.get('subcodes').isEmpty()\nconst countDots = c => {\n if (c.get('sortcode').match(/\\./g)) {\n return c.get('sortcode').match(/\\./g).length\n }\n\n return 0\n}\nconst hasParent = (code, codes) => (\n codes.some(c => code.get('sortcode').startsWith(c.get('sortcode')) && countDots(c) < countDots(code))\n)\nconst getCodesByMatcher = (codes, matcher) => {\n let result = fromJS([])\n const expandableCodes = codes.filter(matcher)\n\n expandableCodes.forEach(c => {\n result = result.concat(getCodesByMatcher(c.get('subcodes'), matcher))\n })\n\n return expandableCodes.concat(result)\n}\n\nconst getNodeIdsByMatcher = (codes, matcher) => (\n getCodesByMatcher(codes, matcher).map(c => c.get('id')).sortBy(id => id).map(id => id.toString())\n)\n\nconst findNodes = codes => codes.filter(c => !hasParent(c, codes))\n\nconst isChild = parentCode => childCode => (\n childCode.get('sortcode').startsWith(parentCode.get('sortcode')) && countDots(childCode) > countDots(parentCode)\n && childCode.get('searchProfileId') === parentCode.get('searchProfileId')\n)\n\nconst filterUselessCodes = codes => codes.filterNot(c => c.get('selectableIds').isEmpty() && !c.get('selectable'))\n\nconst addSubcodes = codes => code => {\n const children = codes.filter(isChild(code))\n const ancestors = findAncestors(code, codes)\n const subcodes = findNodes(children).map(addSubcodes(codes))\n\n return fromJS({\n id: code.get('id'),\n selectable: code.get('selectable'),\n decendantIds: children.map(c => c.get('id')).toSet(),\n ancestorIds: ancestors.map(c => c.get('id')).toSet(),\n expandableNodeIds: getNodeIdsByMatcher(subcodes, isExpandable),\n isExpandable: !subcodes.isEmpty(),\n selectableIds: children.filter(c => c.get('selectable')).map(c => c.get('id')).toSet(),\n subcodes\n })\n}\n\nconst groupCodesByType = (codes, type) => {\n const codesByType = codes.filter(c => c.get(type)).sortBy(c => c.get('sortcode'))\n\n return codesByType\n .groupBy(c => c.get('searchProfileId'))\n .map((group, searchProfileId) => {\n const nodes = filterUselessCodes(findNodes(group).map(addSubcodes(group)))\n const nodeIds = getNodeIdsByMatcher(nodes, () => true)\n const code = codes.find(c => c.get('id') === nodes.getIn([0, 'id']))\n const inherited = code ? code.get('inherited', false) : false\n\n const expandableNodeIds = getNodeIdsByMatcher(nodes, isExpandable)\n\n return fromJS({\n inherited,\n nodeIds,\n expandableNodeIds,\n searchProfileId,\n nodes\n })\n })\n .valueSeq()\n .toList()\n .sortBy(s => (s.get('inherited') ? 1 : 0))\n}\n\nexport default handleActions({\n [ConfigActions.setStatics]: (state, { payload }) => {\n const codes = fromJS(payload.analysisCodes || [])\n\n return state.merge({\n groupedAnalysisCodes: groupCodesByType(codes, 'analysis'),\n groupedMediaReviewCodes: groupCodesByType(codes, 'mediaReview')\n })\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport { ChartDataSources } from 'static/constants'\nimport * as Actions from 'actions/analysis'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS([\n {\n firstLevel: 'buzz',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: 'rectangle',\n opts: {\n showFullNumbers: true\n }\n },\n {\n firstLevel: 'mentionsCount',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: 'rectangle',\n opts: {\n showFullNumbers: true\n }\n },\n {\n firstLevel: 'statementsCount',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: 'rectangle',\n opts: {\n showFullNumbers: true\n }\n }\n])\n\nexport default handleActions({\n [Actions.setMetricsChartLoading]: (state, { payload: index }) => state.setIn([index, 'loading'], true),\n [Actions.setMetricsChartData]: (state, { payload: { data, index } }) => state.mergeIn([index], {\n loading: false,\n data: fromJS(data)\n }),\n\n [Actions.setChartFields]: (state, { payload }) => (\n state.updateIn([0, 'firstLevel'], f => ((payload.thirdLevel && payload.thirdLevel !== 'mentionsCount') ? payload.thirdLevel : f))\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { fromJS } from 'immutable'\nimport camelcase from 'camelcase'\nimport { NewsPageModules, ChartDataSources, ChartTypes } from 'static/constants'\n\nconst enrichedNewsModules = fromJS([NewsPageModules.NEWS, NewsPageModules.ANALYSIS, NewsPageModules.PROFILE_MONITORING])\nconst newsOnly = fromJS([NewsPageModules.NEWS])\nconst profileMonitoringOnly = fromJS([NewsPageModules.PROFILE_MONITORING])\nconst noProfileMonitoring = fromJS([NewsPageModules.NEWS, NewsPageModules.ANALYSIS, NewsPageModules.NEWS_POOL])\nconst analysisOnly = fromJS([NewsPageModules.ANALYSIS])\n\nconst defaultThirdLevels = [\n {\n name: 'buzz'\n },\n {\n name: 'ave',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'reach'\n },\n {\n name: 'karma'\n },\n {\n name: 'interactions'\n },\n {\n name: 'interactionRate'\n },\n {\n name: 'visits',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'uniqueUsers',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'mozDomainAuthority',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'mozPageAuthority',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'mozSpamScore',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'circulation',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'mentionsCount',\n moduleNames: analysisOnly\n },\n {\n name: 'identityCount'\n },\n {\n name: 'newsguardScore',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'views'\n },\n {\n name: 'statementTonality',\n moduleNames: analysisOnly\n }\n]\n\nconst defaultSecondLevels = [\n {\n name: 'tonalities',\n moduleNames: newsOnly\n },\n {\n name: 'sentiments'\n },\n {\n name: 'statementTonalities',\n moduleNames: analysisOnly\n }\n]\n\nconst defaultBarChartSecondLevels = [\n {\n name: 'tonalities',\n moduleNames: newsOnly\n },\n {\n name: 'sentiments'\n },\n {\n name: 'mediaReviewCodes',\n moduleNames: newsOnly\n },\n {\n name: 'customTags',\n moduleNames: enrichedNewsModules\n },\n {\n name: 'channels'\n },\n {\n name: 'domains'\n },\n {\n name: 'countries'\n },\n {\n name: 'languages'\n },\n {\n name: 'hashtags'\n },\n {\n name: 'states'\n },\n {\n name: 'mediaTypes'\n },\n {\n name: 'analysisCodes',\n moduleNames: analysisOnly\n },\n {\n name: 'statementTonalities',\n moduleNames: analysisOnly\n },\n {\n name: 'newsguardScoreRanges',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'newsguardRanks',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'newsguardOrientations',\n moduleNames: noProfileMonitoring\n },\n {\n name: 'interfaces'\n },\n {\n name: 'suppliers'\n }\n]\n\nconst timelineSecondLevels = defaultBarChartSecondLevels\n\nconst defaultBarChartSecondLevelsNoTonality = defaultBarChartSecondLevels.filter(s => !s.name.match(/onalit|entiment/))\n\nconst defaultChartConfig = fromJS({\n secondLevels: defaultSecondLevels,\n thirdLevels: defaultThirdLevels\n})\n\nconst defaultBarChartConfig = fromJS({\n secondLevels: defaultBarChartSecondLevels,\n thirdLevels: defaultThirdLevels\n})\n\nconst defaultChartConfigNoTonality = {\n secondLevels: [],\n thirdLevels: defaultThirdLevels\n}\n\nconst defaultBarChartConfigNoTonality = {\n secondLevels: defaultBarChartSecondLevelsNoTonality,\n thirdLevels: defaultThirdLevels\n}\n\nexport const defaultBucketConfig = fromJS({\n chartTypes: {\n [ChartTypes.BAR]: defaultBarChartConfig,\n [ChartTypes.RADIAL_BAR]: defaultBarChartConfig,\n [ChartTypes.HORIZONTAL_BAR]: defaultBarChartConfig,\n [ChartTypes.BUBBLE]: defaultBarChartConfig,\n [ChartTypes.PIE]: defaultChartConfig,\n [ChartTypes.FUNNEL]: defaultChartConfig,\n [ChartTypes.TAG_CLOUD]: defaultChartConfig,\n [ChartTypes.TREEMAP]: defaultChartConfig,\n [ChartTypes.RADAR]: defaultChartConfig,\n [ChartTypes.LINE]: defaultChartConfig,\n [ChartTypes.AREA]: defaultChartConfig,\n [ChartTypes.HEATMAP]: defaultBarChartConfig\n }\n})\n\nconst defaultGaBucketConfig = defaultBucketConfig.set('dataSources', ChartDataSources.GOOGLE_ANALYTICS)\nconst defaultYoutubeAnalyticsBucketConfig = defaultBucketConfig.set('dataSources', ChartDataSources.YOUTUBE_ANALYTICS)\n\nconst noDeeperLevels = {\n secondLevels: [],\n thirdLevels: []\n}\n\nconst createDefaultBucketConfig = moduleNames => defaultBucketConfig.set('moduleNames', moduleNames)\n\nconst defaultNumberConfig = fromJS({\n isNumber: true,\n chartTypes: {\n rectangle: noDeeperLevels\n }\n})\n\nconst createDefaultNumberConfig = moduleNames => defaultNumberConfig.set('moduleNames', moduleNames)\n\nconst defaultTonalityConfig = fromJS({\n isNumber: true,\n chartTypes: {\n rectangle: noDeeperLevels,\n gauge: noDeeperLevels\n }\n})\n\nconst createDefaultTonalityConfig = moduleNames => defaultTonalityConfig.set('moduleNames', moduleNames)\n\nconst countriesConfig = createDefaultBucketConfig(noProfileMonitoring).setIn(['chartTypes', ChartTypes.WORLD_MAP], defaultChartConfig)\nconst statesConfig = createDefaultBucketConfig(noProfileMonitoring).setIn(['chartTypes', ChartTypes.STATE_MAP], defaultChartConfig)\n\nexport const addCustomKpis = (configs, customKpis) => {\n if (!customKpis || !customKpis.length) {\n return configs\n }\n\n const numberConfigs = fromJS(customKpis.reduce((acc, kpi) => acc.set(camelcase(kpi.key), defaultNumberConfig), fromJS({})))\n const thirdLevels = fromJS(customKpis.map(c => ({ name: camelcase(c.key) })))\n\n return configs.merge(numberConfigs).map(value => {\n if (value.get('chartTypes')) {\n return value.update('chartTypes', chartTypes => chartTypes.map(v => {\n if (v.get('thirdLevels') && !v.get('thirdLevels').isEmpty()) {\n return v.update('thirdLevels', t => t.concat(thirdLevels))\n }\n\n return v\n }))\n }\n\n return value\n })\n}\n\nexport const addAiEntities = (configs, aiEntities) => {\n if (!aiEntities || !aiEntities.length) {\n return configs\n }\n\n const firstLevels = fromJS(\n aiEntities.reduce((acc, kpi) => acc.set(camelcase(kpi.key), createDefaultBucketConfig(enrichedNewsModules)), fromJS({}))\n )\n\n const secondLevels = fromJS(aiEntities.map(c => ({\n name: camelcase(c.key),\n moduleNames: enrichedNewsModules\n })))\n\n return configs.merge(firstLevels).map(value => {\n if (value.get('chartTypes')) {\n return value.update('chartTypes', chartTypes => chartTypes.map(v => {\n if (v.get('secondLevels') && !v.get('secondLevels').isEmpty()) {\n return v.update('secondLevels', t => t.concat(secondLevels))\n }\n\n return v\n }))\n }\n\n return value\n })\n}\n\nexport default fromJS({\n buzz: defaultNumberConfig,\n reach: defaultNumberConfig,\n karma: defaultNumberConfig,\n views: defaultNumberConfig,\n\n sentiment: defaultTonalityConfig,\n\n interactions: defaultNumberConfig,\n interactionRate: defaultNumberConfig,\n\n ave: createDefaultNumberConfig(noProfileMonitoring),\n circulation: createDefaultNumberConfig(noProfileMonitoring),\n visits: createDefaultNumberConfig(noProfileMonitoring),\n uniqueUsers: createDefaultNumberConfig(noProfileMonitoring),\n mozDomainAuthority: createDefaultNumberConfig(noProfileMonitoring),\n mozPageAuthority: createDefaultNumberConfig(noProfileMonitoring),\n mozSpamScore: createDefaultNumberConfig(noProfileMonitoring),\n ownerBuzz: createDefaultNumberConfig(profileMonitoringOnly),\n audienceBuzz: createDefaultNumberConfig(profileMonitoringOnly),\n newsguardScore: createDefaultNumberConfig(noProfileMonitoring),\n mentionsCount: createDefaultNumberConfig(analysisOnly),\n\n statementTonality: createDefaultTonalityConfig(analysisOnly),\n statementTonalities: createDefaultBucketConfig(analysisOnly),\n\n tonality: createDefaultTonalityConfig(newsOnly),\n\n timeline: {\n isTimeline: true,\n chartTypes: {\n [ChartTypes.HORIZONTAL_BAR]: {\n secondLevels: timelineSecondLevels,\n thirdLevels: defaultThirdLevels\n },\n [ChartTypes.LINE]: {\n secondLevels: timelineSecondLevels,\n thirdLevels: defaultThirdLevels\n },\n [ChartTypes.AREA]: {\n secondLevels: timelineSecondLevels,\n thirdLevels: defaultThirdLevels\n },\n [ChartTypes.HEATMAP]: {\n secondLevels: timelineSecondLevels,\n thirdLevels: defaultThirdLevels\n }\n }\n },\n\n savedSearchesTimeline: {\n isSavedSearchesTimeline: true,\n chartTypes: {\n [ChartTypes.HORIZONTAL_BAR]: {\n secondLevels: [\n {\n name: 'savedSearches'\n }\n ],\n thirdLevels: defaultThirdLevels\n },\n [ChartTypes.LINE]: {\n secondLevels: [\n {\n name: 'savedSearches'\n }\n ],\n thirdLevels: defaultThirdLevels\n },\n [ChartTypes.AREA]: {\n secondLevels: [\n {\n name: 'savedSearches'\n }\n ],\n thirdLevels: defaultThirdLevels\n }\n }\n },\n\n tonalities: {\n moduleNames: newsOnly,\n chartTypes: {\n [ChartTypes.BAR]: defaultBarChartConfigNoTonality,\n [ChartTypes.BUBBLE]: defaultBarChartConfigNoTonality,\n [ChartTypes.PIE]: defaultChartConfigNoTonality,\n [ChartTypes.FUNNEL]: defaultChartConfigNoTonality,\n [ChartTypes.TREEMAP]: defaultChartConfigNoTonality,\n [ChartTypes.RADAR]: defaultChartConfigNoTonality,\n [ChartTypes.HEATMAP]: defaultChartConfigNoTonality\n }\n },\n\n sentiments: {\n moduleNames: noProfileMonitoring,\n chartTypes: {\n [ChartTypes.BAR]: defaultBarChartConfigNoTonality,\n [ChartTypes.BUBBLE]: defaultBarChartConfigNoTonality,\n [ChartTypes.PIE]: defaultChartConfigNoTonality,\n [ChartTypes.FUNNEL]: defaultChartConfigNoTonality,\n [ChartTypes.TREEMAP]: defaultChartConfigNoTonality,\n [ChartTypes.RADAR]: defaultChartConfigNoTonality,\n [ChartTypes.HEATMAP]: defaultChartConfigNoTonality\n }\n },\n\n countries: countriesConfig,\n\n publications: defaultBucketConfig,\n channels: defaultBucketConfig,\n languages: createDefaultBucketConfig(noProfileMonitoring),\n mediaTopics: createDefaultBucketConfig(noProfileMonitoring),\n mediaTypes: createDefaultBucketConfig(noProfileMonitoring),\n analysisCodes: createDefaultBucketConfig(analysisOnly),\n hashtags: defaultBucketConfig,\n mentions: defaultBucketConfig,\n emojis: defaultBucketConfig,\n influencers: defaultBucketConfig,\n states: statesConfig,\n outlinks: defaultBucketConfig,\n outlinkDomains: defaultBucketConfig,\n domains: defaultBucketConfig,\n savedSearches: defaultBucketConfig,\n interfaces: defaultBucketConfig,\n suppliers: defaultBucketConfig,\n\n customTags: createDefaultBucketConfig(enrichedNewsModules),\n mediaReviewCodes: createDefaultBucketConfig(newsOnly),\n\n authorSexes: createDefaultBucketConfig(noProfileMonitoring),\n authorCountries: createDefaultBucketConfig(noProfileMonitoring),\n authorCities: createDefaultBucketConfig(noProfileMonitoring),\n authorBirthdateRanges: createDefaultBucketConfig(noProfileMonitoring),\n\n entities: createDefaultBucketConfig(enrichedNewsModules),\n entitiesPerson: createDefaultBucketConfig(enrichedNewsModules),\n entitiesLocation: createDefaultBucketConfig(enrichedNewsModules),\n entitiesOrganization: createDefaultBucketConfig(enrichedNewsModules),\n entitiesProduct: createDefaultBucketConfig(enrichedNewsModules),\n entitiesTopic: createDefaultBucketConfig(enrichedNewsModules),\n\n newsguardScoreRanges: createDefaultBucketConfig(noProfileMonitoring),\n newsguardRanks: createDefaultBucketConfig(noProfileMonitoring),\n newsguardOrientations: createDefaultBucketConfig(noProfileMonitoring),\n\n newsFeed: {\n isNewsFeed: true,\n chartTypes: {\n [ChartTypes.NEWS_FEED]: noDeeperLevels,\n [ChartTypes.NEWS_TICKER]: noDeeperLevels\n }\n },\n\n topInfluencers: {\n isTopInfluencers: true,\n chartTypes: {\n [ChartTypes.INFLUENCER_FEED]: noDeeperLevels\n }\n },\n\n topPublications: {\n isTopPublications: true,\n chartTypes: {\n [ChartTypes.PUBLICATION_FEED]: noDeeperLevels\n }\n },\n\n pageIdentitiesTimeline: {\n isPageIdentitiesTimeline: true,\n moduleNames: profileMonitoringOnly,\n chartTypes: {\n [ChartTypes.LINE]: {\n secondLevels: [\n {\n name: 'pageIdentities'\n }\n ],\n thirdLevels: [\n {\n name: 'buzz'\n },\n {\n name: 'interactionRates'\n },\n {\n name: 'interactions'\n },\n {\n name: 'comments'\n },\n {\n name: 'reactions'\n },\n {\n name: 'shares'\n },\n {\n name: 'commentsReactions'\n },\n {\n name: 'commentsShares'\n },\n {\n name: 'reactionsShares'\n },\n {\n name: 'followers'\n }\n ]\n }\n }\n },\n\n pageIdentities: {\n isPageIdentities: true,\n chartTypes: {\n [ChartTypes.PAGE_IDENTITY_FEED]: noDeeperLevels\n },\n moduleNames: profileMonitoringOnly\n },\n\n imageFeed: {\n isImageFeed: true,\n chartTypes: {\n [ChartTypes.IMAGE_FEED]: noDeeperLevels\n }\n },\n\n // GOOGLE ANALYTICS; ONLY USED FOR CHART TYPES\n 'ga:deviceCategory': defaultGaBucketConfig,\n 'ga:source': defaultGaBucketConfig,\n 'ga:pagePath': defaultGaBucketConfig,\n\n // YOUTUBE ANALYTICS; ONLY USED FOR CHART TYPES\n youtubeAnalyticsVideos: defaultYoutubeAnalyticsBucketConfig,\n operatingSystem: defaultYoutubeAnalyticsBucketConfig,\n insightTrafficSourceType: defaultYoutubeAnalyticsBucketConfig,\n deviceType: defaultYoutubeAnalyticsBucketConfig\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport { ChartDataSources, ChartTypes } from 'static/constants'\nimport * as Actions from 'actions/analysis'\nimport * as AppActions from 'actions/app'\nimport allowedChartConfigs, { defaultBucketConfig } from 'static/allowed_chart_configs'\n\nexport const initialState = fromJS({\n firstLevel: 'analysisCodes',\n secondLevel: 'analysisCodes',\n thirdLevel: 'mentionsCount',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: ChartTypes.BAR\n})\n\nconst updateOpt = (state, key, value) => state.update('opts', opts => (opts || fromJS({})).set(key, value))\n\nexport default handleActions({\n [Actions.fetchChartDataStart]: state => state.set('loading', true),\n [Actions.fetchChartDataError]: state => state.set('loading', false),\n [Actions.fetchChartDataSuccess]: (state, { payload }) => state.merge({\n loading: false,\n data: fromJS(payload)\n }),\n\n [Actions.setChartFields]: (state, { payload }) => {\n const data = { ...payload }\n let chartTypes\n\n if (data.firstLevel) {\n if (data.allowedChartConfigs) {\n chartTypes = data.allowedChartConfigs.get(data.firstLevel).get('chartTypes').keySeq().toList()\n } else {\n chartTypes = (allowedChartConfigs.get(data.firstLevel) || defaultBucketConfig).get('chartTypes').keySeq().toList()\n }\n\n if (!chartTypes.includes(state.get('type'))) {\n if (chartTypes.includes(ChartTypes.BAR)) {\n data.type = ChartTypes.BAR\n } else {\n data.type = chartTypes.first()\n }\n }\n }\n\n if (data.secondLevel && data.secondLevel === 'ungrouped') {\n data.secondLevel = null\n }\n\n return state.merge(fromJS(data))\n },\n\n [Actions.setChartOpt]: (state, { payload: { key, value } }) => updateOpt(state, key, value),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport metrics from './metrics'\nimport chart from './chart'\n\nexport default combineReducers({\n ui,\n data,\n metrics,\n chart\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Map } from 'immutable'\n\nimport { StepTypes } from 'static/constants'\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/charts'\nimport * as ConfigActions from 'actions/config'\n\nimport allowedChartConfigs, { addCustomKpis, addAiEntities } from 'static/allowed_chart_configs'\n\nconst createNewChart = () => fromJS({\n firstLevel: 'mediaReviewCodes',\n type: 'bar'\n})\n\nexport const initialState = fromJS({\n allowedChartConfigs,\n isRunning: false,\n isEditing: false,\n selectedChart: createNewChart(),\n selectedChartIndex: null,\n selectedChartStepType: StepTypes.CHARTS,\n showChartDialog: false\n})\n\nexport default handleActions({\n [Actions.setSelectedChart]: (state, { payload: chart }) => (\n state.set('selectedChart', chart.update('data', data => data || state.getIn(['selectedChart', 'data'])))\n ),\n [Actions.setSelectedChartOpt]: (state, { payload: { key, value } }) => (\n state.updateIn(['selectedChart', 'opts'], opts => (opts || Map({})).set(key, value))\n ),\n\n [Actions.setSelectedChartStepType]: (state, { payload: stepType }) => state.set('selectedChartStepType', stepType),\n [Actions.setSelectedChartData]: (state, { payload: data }) => state.setIn(['selectedChart', 'data'], fromJS(data)),\n [Actions.setSelectedChartLoading]: (state, { payload }) => state.setIn(['selectedChart', 'loading'], payload),\n\n [Actions.showChartDialog]: (state, { payload }) => {\n let selectedChart = state.get('selectedChart')\n let selectedChartIndex = null\n\n if (payload) {\n const { chart, index } = payload\n selectedChart = chart\n selectedChartIndex = index\n }\n\n return state.merge({\n showChartDialog: true,\n selectedChart,\n selectedChartIndex,\n selectedChartStepType: StepTypes.CHARTS\n })\n },\n [Actions.hideChartDialog]: state => state.set('showChartDialog', false),\n\n [Actions.aggregationsRequestStart]: state => state.set('isRunning', true),\n [Actions.aggregationsRequestSuccess]: state => state.set('isRunning', false),\n [Actions.aggregationsRequestError]: state => state.set('isRunning', false),\n\n [Actions.toggleEditing]: state => state.set('isEditing', !state.get('isEditing')),\n [Actions.setNormalMode]: state => state.set('isEditing', false),\n\n [ConfigActions.setStatics]: (state, { payload }) => (\n state.update('allowedChartConfigs', configs => addAiEntities(addCustomKpis(configs, payload.customKpis), payload.aiEntities))\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport { sortCharts, recalculateLayout } from 'utils/charts'\nimport completePreset from 'static/chart_presets/complete.json'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/charts'\n\nexport const initialState = fromJS(completePreset)\n\nconst updateFieldInCharts = (state, field, value) => state.update(\n 'charts',\n charts => charts.reduce((acc, values, key) => acc.set(key, values.map(c => c.set(field, value))), fromJS({}))\n)\n\nexport default handleActions({\n [Actions.setCharts]: (state, { payload: { charts, layouts } }) => {\n if (charts && layouts) {\n const newCharts = fromJS(charts)\n const newLayouts = fromJS(layouts)\n\n if (!newCharts.isEmpty() && !newLayouts.isEmpty()) {\n let newState = state\n newState = newState.set('charts', newCharts)\n newState = newState.set('layouts', newLayouts)\n newState = sortCharts(newState)\n\n return newState\n }\n }\n\n return state\n },\n [Actions.setPreviousToData]: (state, { payload: { charts, layouts } }) => state.set('charts', charts).set('layouts', layouts),\n [Actions.setLayouts]: (state, { payload: { breakpoint, layout } }) => {\n const newLayouts = fromJS(layout).map(s => fromJS({\n x: s.get('x'),\n y: s.get('y'),\n w: s.get('w'),\n h: s.get('h')\n }))\n\n return state.setIn(['layouts', breakpoint], newLayouts)\n },\n [Actions.setChart]: (state, { payload: { chart, index, breakpoint } }) => {\n if (index === null) {\n const newLayouts = state.getIn(['layouts', breakpoint]).map(layout => layout.update('y', y => y + 2))\n\n return state.updateIn(['charts', breakpoint], charts => charts.push(chart))\n .setIn(['layouts', breakpoint], newLayouts.push(fromJS({ w: 12, h: 4, x: 0, y: 0 })))\n }\n\n return state.setIn(['charts', breakpoint, index], chart)\n },\n [Actions.removeChart]: (state, { payload: { breakpoint, index } }) => (\n state\n .deleteIn(['charts', breakpoint, index])\n .deleteIn(['layouts', breakpoint, index])\n ),\n\n [Actions.copyFromDisplaySize]: (state, { payload: { from, to } }) => {\n const newState = sortCharts(state, v => `${v.getIn(['layout', 'y'])}${v.getIn(['layout', 'x'])}`, false)\n\n return state\n .setIn(['layouts', to], recalculateLayout(newState.getIn(['charts', from]), to))\n .setIn(['charts', to], newState.getIn(['charts', from]))\n },\n [Actions.setChartData]: (state, { payload: { index, breakpoint, data } }) => {\n const chart = state.getIn(['charts', breakpoint, index])\n\n if (chart) {\n return state.setIn(['charts', breakpoint, index], chart.merge({\n data: fromJS(data),\n loading: false\n }))\n }\n\n return state\n },\n [Actions.aggregationsRequestStart]: state => updateFieldInCharts(state, 'loading', true),\n [Actions.aggregationsRequestError]: state => updateFieldInCharts(state, 'loading', false),\n [Actions.aggregationsRequestSuccess]: state => updateFieldInCharts(state, 'loading', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as AppActions from 'actions/app'\nimport * as ChartsActions from 'actions/charts'\n\nexport const initialState = fromJS({\n charts: {},\n layouts: {}\n})\n\nexport default handleActions({\n [ChartsActions.setPrevious]: (state, { payload: { charts, layouts } }) => state.set('charts', charts).set('layouts', layouts),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/charts'\n\nexport const initialState = fromJS({\n showDialog: false,\n loading: false,\n analysis: null,\n chart: null\n})\n\nexport default handleActions({\n [Actions.showAiChartAnalysisDialog]: (state, { payload: { chart } }) => state.merge({\n showDialog: true,\n analysis: null,\n chart\n }),\n [Actions.hideAiChartAnalysisDialog]: state => state.set('showDialog', false),\n\n [Actions.aiChartAnalysisStart]: state => state.set('loading', true),\n [Actions.aiChartAnalysisSuccess]: (state, { payload: { analysis } }) => state.merge({\n loading: false,\n analysis\n }),\n [Actions.aiChartAnalysisError]: state => state.set('loading', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport previous from './previous'\nimport aiChartAnalysis from './ai_chart_analysis'\n\nexport default combineReducers({\n ui,\n data,\n previous,\n aiChartAnalysis\n})\n","import { handleActions } from 'redux-actions'\n\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = 0\n\nexport default handleActions({\n [NewsActions.newsRequestSuccess]: (state, { payload: { count } }) => count,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as NewsActions from 'actions/news'\nimport * as DashboardActions from 'actions/dashboard'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n news: {},\n references: {}\n})\n\nconst addNewsToState = (state, news) => {\n const newNews = fromJS({}).withMutations(ctx => {\n news.forEach(n => ctx.set(n.get('id').toString(), n))\n })\n\n const references = news.reduce(\n (acc, n) => acc.update(n.get('id').toString(), 0, count => count + 1), state.get('references')\n )\n\n return state.update('news', n => n.merge(newNews))\n .update('references', r => r.merge(references))\n}\n\nconst collectGarbage = state => {\n const unreferencedNewsIds = state.get('references').filter(v => v <= 0).keySeq().toList()\n const news = state.get('news').filter((v, k) => !unreferencedNewsIds.includes(k))\n const references = state.get('references').filter((v, k) => !unreferencedNewsIds.includes(k))\n\n return state.merge({\n news,\n references\n })\n}\n\nexport default handleActions({\n [NewsActions.addNews]: (state, { payload: news }) => addNewsToState(state, fromJS(news)),\n [NewsActions.updateNews]: (state, { payload: news }) => news.reduce((acc, n) => acc.setIn(['news', n.get('id').toString()], n), state),\n [NewsActions.translateRequestSuccess]: (state, { payload: { translations, newsId, targetLang } }) => (\n state.setIn(['news', newsId.toString(), 'translations'], fromJS(translations).set('language', targetLang))\n ),\n [NewsActions.removeTranslations]: (state, { payload: newsId }) => state.deleteIn(['news', newsId.toString(), 'translations']),\n [NewsActions.decrementReferences]: (state, { payload: newsIds }) => (\n collectGarbage(\n newsIds.reduce((acc, id) => acc.updateIn(['references', id.toString()], 0, count => count - 1), state)\n )\n ),\n\n [DashboardActions.loadDrilldownNewsFeedNewsSuccess]: (state, { payload: { groups } }) => {\n const news = fromJS(groups.flatMap(g => g.news))\n\n return addNewsToState(state, news)\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { Set } from 'immutable'\n\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = Set([])\n\nexport default handleActions({\n [NewsActions.deleteNewsSuccess]: (state, { payload: newsId }) => state.concat(newsId),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n uploadRunning: false,\n uploadVideoRunning: false,\n loadingNews: false,\n savingNews: false,\n creatingNews: false,\n loadingPublications: false,\n savingNewsIds: [],\n active: false,\n extractingText: false,\n summaryOptions: {\n generating: false,\n mode: 'sentences_5',\n wordCount: 50,\n bulletPointsCount: 3,\n targetLang: 'n/a'\n }\n})\n\nconst removeSavingNewsId = (state, news) => state.update('savingNewsIds', ids => ids.remove(ids.indexOf(news.get('id'))))\n\nexport default handleActions({\n [NewsActions.uploadFileStart]: state => state.set('uploadRunning', true),\n [NewsActions.uploadFileSuccess]: state => state.set('uploadRunning', false),\n [NewsActions.uploadFileError]: state => state.set('uploadRunning', false),\n\n [NewsActions.uploadVideoFileStart]: state => state.set('uploadVideoRunning', true),\n [NewsActions.uploadVideoFileSuccess]: state => state.set('uploadVideoRunning', false),\n [NewsActions.uploadVideoFileError]: state => state.set('uploadVideoRunning', false),\n\n [NewsActions.getNewsStart]: state => state.set('loadingNews', true),\n [NewsActions.getNewsError]: state => state.set('loadingNews', false),\n [NewsActions.getNewsSuccess]: state => state.set('loadingNews', false),\n\n [NewsActions.updateNewsStart]: (state, { payload: news }) => state.update('savingNewsIds', ids => ids.push(news.get('id'))),\n [NewsActions.updateNewsError]: (state, { payload: { news } }) => removeSavingNewsId(state, news),\n [NewsActions.updateNewsSuccess]: (state, { payload: news }) => removeSavingNewsId(state, news),\n\n [NewsActions.createNewsStart]: state => state.set('creatingNews', true),\n [NewsActions.createNewsError]: state => state.set('creatingNews', false),\n [NewsActions.createNewsSuccess]: state => state.set('creatingNews', false),\n\n [NewsActions.showEditNewsDialog]: state => state.set('active', true),\n [NewsActions.hideEditNewsDialog]: state => state.set('active', false),\n\n [NewsActions.setPublicationsLoading]: state => state.set('loadingPublications', true),\n [NewsActions.searchPublicationsError]: state => state.set('loadingPublications', false),\n [NewsActions.searchPublicationsSuccess]: state => state.set('loadingPublications', false),\n\n [NewsActions.extractTextFromPdfStart]: state => state.set('extractingText', true),\n [combineActions(\n NewsActions.extractTextFromPdfSuccess,\n NewsActions.extractTextFromPdfError\n )]: state => state.set('extractingText', false),\n\n [NewsActions.setSummaryOption]: (state, { payload: { key, value } }) => (\n state.setIn(['summaryOptions', key], value)\n ),\n [NewsActions.automaticSummaryStart]: state => (\n state.setIn(['summaryOptions', 'generating'], true)\n ),\n [combineActions(\n NewsActions.automaticSummarySuccess,\n NewsActions.automaticSummaryError\n )]: state => state.setIn(['summaryOptions', 'generating'], false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport moment from 'moment-timezone'\n\nimport * as NewsActions from 'actions/news'\nimport * as PublicationsActions from 'actions/publications'\nimport * as AppActions from 'actions/app'\n\nconst defaultSelectedNews = fromJS({\n articleDate: new Date(),\n mediareviewDate: moment().startOf('day').hours(12).toDate(),\n codes: [],\n customTags: [],\n images: [],\n clusterSize: 1,\n clusteredNews: [],\n imageAsIllustration: false,\n extractTextFromPdf: true\n})\n\nexport const initialState = fromJS({\n selectedNews: defaultSelectedNews,\n publications: [],\n uploadedFiles: [],\n uploadedVideoFile: null\n})\n\nexport default handleActions({\n [NewsActions.showEditNewsDialog]: () => initialState,\n [NewsActions.getNewsStart]: (state, { payload }) => state.set('selectedNews', payload),\n [NewsActions.getNewsSuccess]: (state, { payload: { newNews: news, oldNews } }) => {\n const selectedNews = state.get('selectedNews')\n\n let mergedNews = fromJS(news)\n\n mergedNews = mergedNews.merge({\n clusteredNews: selectedNews.get('clusteredNews'),\n clusterSize: selectedNews.get('clusterSize'),\n flags: mergedNews.get('flags').set('clusteredNews', oldNews.getIn(['flags', 'clusteredNews']))\n })\n\n return state.set('selectedNews', mergedNews)\n },\n\n [NewsActions.updateSelectedNews]: (state, { payload: news }) => state.set('selectedNews', news),\n [NewsActions.updateFieldOfSelectedNews]: (state, { payload: { field, value } }) => state.setIn(['selectedNews', field], value),\n\n [NewsActions.searchPublicationsSuccess]: (state, { payload: publications }) => (\n state.set('publications', fromJS(publications))\n ),\n\n [PublicationsActions.createPublicationSuccess]: (state, { payload: publication }) => (\n state.set('publications', fromJS([publication]))\n ),\n\n [NewsActions.uploadFileSuccess]: (state, { payload: file }) => (\n state.update('uploadedFiles', files => files.push(fromJS(file)))\n ),\n [NewsActions.removeUploadedFile]: (state, { payload: fileId }) => (\n state.update('uploadedFiles', files => files.filter(file => file.get('id') !== fileId))\n ),\n\n [NewsActions.uploadVideoFileSuccess]: (state, { payload: file }) => (\n state.set('uploadedVideoFile', fromJS(file))\n ),\n [NewsActions.removeUploadedVideoFile]: state => (\n state.set('uploadedVideoFile', null)\n ),\n\n [NewsActions.setImageAsIllustration]: (state, { payload }) => (\n state.setIn(['selectedNews', 'imageAsIllustration'], payload)\n ),\n [NewsActions.setExtractTextFromPdf]: (state, { payload }) => (\n state.setIn(['selectedNews', 'extractTextFromPdf'], payload)\n ),\n [NewsActions.mergeExtractedText]: (state, { payload: text }) => (\n state.setIn(['selectedNews', 'text'], (state.getIn(['selectedNews', 'text']) || '') + text)\n ),\n\n [NewsActions.resetNews]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport { isValidFilename } from 'utils/filename'\n\nimport * as ExportActions from 'actions/export'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n coverIsGenerating: false,\n coverPreviewUrl: null,\n currentDocument: null,\n htmlPreviewIsGenerating: false,\n htmlPreviewUrl: null,\n isRunning: false,\n isValidFilename: true,\n selectedFormat: 'pdf',\n sendingMail: false,\n showDocumentDownloadDialog: false,\n showExportDialog: false,\n showSendMailDialog: false,\n txtPreviewIsGenerating: false,\n txtPreviewUrl: null,\n xmlPreviewIsGenerating: false,\n xmlPreviewUrl: null,\n jsonPreviewIsGenerating: false,\n jsonPreviewUrl: null,\n validatingSpf: false,\n validSpf: true\n})\n\nexport default handleActions({\n [ExportActions.exportStart]: state => state.merge({\n isRunning: true,\n showDocumentDownloadDialog: true,\n currentDocument: null\n }),\n [ExportActions.exportStructuredFormatStart]: state => state.merge({\n isRunning: true,\n showDocumentDownloadDialog: true,\n currentDocument: null\n }),\n [ExportActions.exportBackwardsNewsHtmlStart]: state => state.merge({\n isRunning: true,\n showDocumentDownloadDialog: true,\n currentDocument: null\n }),\n [ExportActions.exportSuccess]: (state, { payload: { url, filename, mimeType, size, attachments } }) => state.merge(fromJS({\n isRunning: false,\n showDocumentDownloadDialog: true,\n currentDocument: {\n attachments: attachments || [],\n url,\n filename,\n size,\n mimeType\n }\n })),\n [ExportActions.exportError]: state => state.merge({\n isRunning: false,\n showDocumentDownloadDialog: false,\n currentDocument: null\n }),\n [ExportActions.sendMail]: state => state.merge({\n sendingMail: true\n }),\n [combineActions(ExportActions.sendMailSuccess, ExportActions.sendMailError)]: state => state.merge({\n sendingMail: false\n }),\n [ExportActions.exportCoverStart]: state => state.set('coverIsGenerating', true),\n [ExportActions.exportCoverSuccess]: (state, { payload: { url } }) => state.merge({\n coverPreviewUrl: url,\n coverIsGenerating: false\n }),\n [ExportActions.exportCoverError]: state => state.set('coverIsGenerating', false),\n\n [ExportActions.exportHtmlPreviewError]: state => state.set('htmlPreviewIsGenerating', false),\n [ExportActions.exportHtmlPreviewStart]: state => state.set('htmlPreviewIsGenerating', true),\n [ExportActions.exportHtmlPreviewSuccess]: (state, { payload: { url } }) => state.merge({\n htmlPreviewUrl: url,\n htmlPreviewIsGenerating: false\n }),\n\n [ExportActions.exportTxtPreviewError]: state => state.set('txtPreviewIsGenerating', false),\n [ExportActions.exportTxtPreviewStart]: state => state.set('txtPreviewIsGenerating', true),\n [ExportActions.exportTxtPreviewSuccess]: (state, { payload: { url } }) => state.merge({\n txtPreviewUrl: url,\n txtPreviewIsGenerating: false\n }),\n\n [ExportActions.exportXmlPreviewError]: state => state.set('xmlPreviewIsGenerating', false),\n [ExportActions.exportXmlPreviewStart]: state => state.set('xmlPreviewIsGenerating', true),\n [ExportActions.exportXmlPreviewSuccess]: (state, { payload: { url } }) => state.merge({\n xmlPreviewUrl: url,\n xmlPreviewIsGenerating: false\n }),\n\n [ExportActions.exportJsonPreviewError]: state => state.set('jsonPreviewIsGenerating', false),\n [ExportActions.exportJsonPreviewStart]: state => state.set('jsonPreviewIsGenerating', true),\n [ExportActions.exportJsonPreviewSuccess]: (state, { payload: { url } }) => state.merge({\n jsonPreviewUrl: url,\n jsonPreviewIsGenerating: false\n }),\n\n [ExportActions.changeExportFormatSelection]: (state, action) => state.set('selectedFormat', action.payload),\n [ExportActions.hideDocumentDownloadDialog]: state => state.set('showDocumentDownloadDialog', false),\n [ExportActions.showExportDialog]: (state, { payload }) => state.merge({\n coverPreviewUrl: null,\n htmlPreviewUrl: null,\n txtPreviewUrl: null,\n xmlPreviewUrl: null,\n jsonPreviewUrl: null,\n showExportDialog: true,\n selectedFormat: payload || state.get('selectedFormat')\n }),\n [ExportActions.showSendMailDialog]: state => state.merge({\n showSendMailDialog: true\n }),\n [ExportActions.hideSendMailDialog]: state => state.merge({\n showSendMailDialog: false\n }),\n [ExportActions.hideExportDialog]: state => state.merge({\n coverPreviewUrl: null,\n htmlPreviewUrl: null,\n txtPreviewUrl: null,\n xmlPreviewUrl: null,\n jsonPreviewUrl: null,\n showExportDialog: false\n }),\n [ExportActions.validateFilenameInExportSettings]: (state, action) => (\n state.set('isValidFilename', isValidFilename(action.payload))\n ),\n\n [ExportActions.validateSpfStart]: state => state.set('validSpf', true),\n [ExportActions.validateSpfStarted]: state => state.set('validatingSpf', true),\n [ExportActions.validateSpfError]: state => state.set('validatingSpf', false),\n [ExportActions.validateSpfSuccess]: (state, { payload: { status } }) => state.merge({\n validatingSpf: false,\n validSpf: status === 'ok'\n }),\n\n [ExportActions.resetExportUiState]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/export'\nimport * as AppActions from 'actions/app'\nimport * as ConfigActions from 'actions/config'\n\nexport const initialState = fromJS({\n attachSummaries: false,\n automaticTranslationEnabled: false,\n contentLanguage: undefined,\n templateLanguage: undefined,\n columns: ['group_key_figures'],\n coverId: null,\n dispatchConfig: null,\n pdfDispatchConfig: null,\n endDate: null,\n exportFilename: '',\n pdfCoverTitle: '',\n showArticleText: true,\n showCover: true,\n showEndPage: false,\n showTableOfContents: true,\n startDate: null,\n aiSummaryEnabled: false\n})\n\nexport default handleActions({\n [Actions.updateExportSettings]: (state, action) => {\n if (!action.payload.get('attachSummaries')) {\n return state.merge(action.payload.set('showArticleText', true))\n }\n\n return state.merge(action.payload)\n },\n [Actions.updateTranslationOptions]: (state, action) => state.merge(fromJS(action.payload)),\n [Actions.setValueInSettings]: (state, { payload: { name, value } }) => state.set(name, value),\n [Actions.setExportFilename]: (state, { payload: value }) => state.set('exportFilename', value),\n [Actions.updateExportMediaReviewHtmlConfig]: (state, action) => (\n state.setIn(['dispatchConfig', 'mediaReviewHtmlConfig'], action.payload)\n ),\n [Actions.updateExportDispatchConfig]: (state, action) => state.set('dispatchConfig', action.payload),\n\n [Actions.updateExportPdfDispatchConfig]: (state, action) => state.set('pdfDispatchConfig', fromJS(action.payload)),\n [Actions.updateExportMediaReviewPdfConfig]: (state, action) => (\n state.setIn(['pdfDispatchConfig', 'mediaReviewPdfConfig'], action.payload)\n ),\n [Actions.updateExportMediaReviewPdfCoverPageElement]: (state, { payload: element }) => (\n state.updateIn(\n ['pdfDispatchConfig', 'mediaReviewPdfConfig', 'mediaReviewPdfCoverPage', 'mediaReviewPdfCoverPageElements'],\n elements => elements.map(el => {\n if (el.get('id') === element.get('id')) {\n return element\n }\n\n return el\n })\n )\n ),\n\n [Actions.updateExportMediaReviewPdfEndPageElement]: (state, { payload: element }) => (\n state.updateIn(\n ['pdfDispatchConfig', 'mediaReviewPdfConfig', 'mediaReviewPdfEndPage', 'mediaReviewPdfEndPageElements'],\n elements => elements.map(el => {\n if (el.get('id') === element.get('id')) {\n return element\n }\n\n return el\n })\n )\n ),\n\n [Actions.setExportConfig]: (state, action) => state.merge(fromJS({\n pdfCoverTitle: action.payload.pdfCoverTitle || '',\n exportFilename: action.payload.exportFilename || '',\n coverId: (action.payload.pdfCovers.find(p => p.default) || { id: null }).id,\n columns: state.get('columns') || []\n })),\n\n [Actions.resetExportConfig]: state => state.merge(fromJS({\n columns: initialState.get('columns')\n })),\n\n [Actions.changeStartEndDate]: (state, { payload: { startDate, endDate } }) => state.merge({\n startDate,\n endDate\n }),\n\n [Actions.setUploadedHeaderLogoUrl]: (state, { payload: { url, filename } }) => (\n state.mergeIn(['dispatchConfig', 'mediaReviewHtmlConfig'], { headerLogo: url, headerLogoFilename: filename })\n ),\n [Actions.resetUploadedHeaderLogoUrl]: state => (\n state.mergeIn(['dispatchConfig', 'mediaReviewHtmlConfig'], { headerLogo: null, headerLogoFilename: null })\n ),\n\n [Actions.setUploadedAdvertisingBannerUrl]: (state, { payload: { url, filename } }) => (\n state.mergeIn(['dispatchConfig', 'mediaReviewHtmlConfig'], { advertisingBanner: url, advertisingBannerFilename: filename })\n ),\n [Actions.resetUploadedAdvertisingBannerUrl]: state => (\n state.mergeIn(['dispatchConfig', 'mediaReviewHtmlConfig'], { advertisingBanner: null, advertisingBannerFilename: null })\n ),\n\n [ConfigActions.setStatics]: (state, { payload: {\n htmlDispatchConfigs: [htmlDispatchConfig],\n pdfDispatchConfigs: [pdfDispatchConfig]\n } }) => (\n state.set('dispatchConfig', fromJS(htmlDispatchConfig))\n .set('pdfDispatchConfig', fromJS(pdfDispatchConfig))\n ),\n\n [Actions.showExportDialog]: state => state.set('aiSummaryEnabled', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as ExportActions from 'actions/export'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n current: 0,\n estimatedDuration: 0,\n elapsedTime: 0\n})\n\nexport default handleActions({\n [ExportActions.exportProgressIncreaseStep]: (state, { payload: { step, elapsedTime } }) => {\n const current = state.get('current') + step\n\n if (current >= 100) {\n return state.merge({\n current: 99.99,\n elapsedTime\n })\n }\n\n return state.merge({\n current,\n elapsedTime\n })\n },\n [ExportActions.exportProgressFinish]: state => state.merge({\n current: 100,\n estimatedDuration: 0,\n elapsedTime: 0\n }),\n [ExportActions.exportProgressStop]: () => initialState,\n [ExportActions.exportProgressStart]: (state, { payload: estimatedDuration }) => state.set('estimatedDuration', estimatedDuration),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport camelcaseKeysDeep from 'camelcase-keys-deep'\n\nimport * as Actions from 'actions/export'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n})\n\nexport default handleActions({\n [Actions.setLastExport]: (state, { payload }) => state.merge(fromJS(camelcaseKeysDeep(payload))),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as ExportActions from 'actions/export'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS([])\n\nexport default handleActions({\n [ExportActions.fetchDispatchLogSuccess]: (_state, { payload }) => fromJS(payload),\n [ExportActions.cancelDispatchSuccess]: (state, { payload: id }) => (\n state\n .updateIn([state.findIndex(d => d.get('id') === id), 'dispatchStatus'], () => 'CANCELLED')\n .updateIn([state.findIndex(d => d.get('id') === id), 'scheduledJob', 'state'], () => 'CANCELLED')\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/export'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n loading: false\n})\n\nexport default handleActions({\n [Actions.fetchDispatchLogStart]: state => state.set('loading', true),\n [Actions.fetchDispatchLogSuccess]: state => state.set('loading', false),\n [Actions.fetchDispatchLogError]: state => state.set('loading', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\nimport ui from './ui'\n\nexport default combineReducers({\n data,\n ui\n})\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport settings from './settings'\nimport progress from './progress'\nimport lastExport from './last_export'\nimport dispatchLog from './dispatch_log'\n\nexport default combineReducers({\n ui,\n settings,\n progress,\n lastExport,\n dispatchLog\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS, List } from 'immutable'\nimport moment from 'moment-timezone'\nimport camelcase from 'camelcase'\n\nimport { datesToRange, calculateIntervals } from 'utils/date'\nimport { isAiEntityKey } from 'utils/ai_entities'\nimport { SearchFields, FilterNameMapping } from 'static/constants'\n\nimport * as FilterActions from 'actions/filter'\nimport * as AppActions from 'actions/app'\nimport * as ConfigActions from 'actions/config'\nimport * as UserActions from 'actions/user'\n\nconst defaultFilterMapping = fromJS(FilterNameMapping)\n\nconst defaultFilters = defaultFilterMapping\n .valueSeq()\n .flatMap(v => v.keySeq())\n .reduce((acc, key) => acc.set(key, List([])), fromJS({}))\n\nconst analysisFilters = defaultFilterMapping\n .getIn(['news', 'analysis'])\n .keySeq()\n .reduce((acc, key) => acc.set(key, List([])), fromJS({}))\n\nconst similarityFilters = defaultFilterMapping\n .getIn(['news', 'similarity'])\n .keySeq()\n .reduce((acc, key) => acc.set(key, List([])), fromJS({}))\n\nconst defaultGeoBoundingBox = fromJS({\n topLeft: {\n lat: null,\n lon: null\n },\n bottomRight: {\n lat: null,\n lon: null\n }\n})\n\nconst resettableFilters = defaultFilters.merge(fromJS({\n influencers: [],\n\n newsQueries: [],\n authorQueries: [],\n publicationQueries: [],\n\n analysis: analysisFilters.merge({\n articleLevel: false,\n useMediaReviewCodes: false\n }),\n\n similarity: similarityFilters,\n\n geoBoundingBox: defaultGeoBoundingBox,\n\n booleans: {\n summarizedOnly: false,\n globalClusters: true,\n realPeopleOnly: false,\n excludeVisitorPosts: false,\n excludeComments: false,\n excludeRetweets: false,\n withOutlinksOnly: false,\n withoutOutlinksOnly: false\n }\n}))\n\nconst { allowedDateIntervals: defaultAllowedDateIntervals } = calculateIntervals(null, new Date(), new Date())\n\nexport const initialState = resettableFilters.merge({\n dateFrom: new Date(),\n dateTo: new Date(),\n dateRange: null,\n dateType: null,\n dateInterval: null,\n allowedDateIntervals: defaultAllowedDateIntervals,\n allDateIntervals: defaultAllowedDateIntervals\n})\n\nconst mapAddedItem = (item, field) => item.merge({\n id: item.get('id'),\n label: item.get('label') || item.get('name'),\n inverted: item.get('inverted') || false,\n field\n})\n\nconst mapQueryStringQuery = (value, type, label, prefix) => (fromJS({\n label,\n prefix,\n field: SearchFields[`${type.toUpperCase()}_QUERIES`],\n value\n}))\n\nconst mapSelectedItem = (item, field) => (fromJS(item).merge({\n id: item.id,\n label: item.label || item.name,\n field\n}))\nconst mapSelectedItems = (items, state, field, fieldNameOverride) => {\n if (!items) {\n return fromJS([])\n }\n\n const currentFilters = state.get(field, fromJS([]))\n\n // Do not replace existing filters to keep flags like inverted\n return fromJS(items.map(item => {\n const found = currentFilters.find(f => f.get('id') === item.id)\n\n return found || mapSelectedItem(item, fieldNameOverride || field)\n }))\n}\n\nconst tonalityKeys = ['negative', 'neutral', 'positive', 'unknown']\nconst specialFilters = ['booleans', 'geoBoundingBox', 'tonalities', 'similarity']\n\nconst mapTonalities = tonalities => {\n const result = []\n\n tonalityKeys.forEach(tonality => {\n if (tonalities[tonality]) {\n result.push({\n id: tonality,\n name: tonality,\n field: SearchFields.TONALITIES\n })\n }\n })\n\n return fromJS(result)\n}\n\nconst addNewsQuery = (state, { query, type, prefix }) => {\n const toAdd = mapQueryStringQuery(query, type, query, prefix)\n\n if (!state.get(`${type}Queries`).find(q => q.get('value') === toAdd.get('value'))) {\n return state.set(`${type}Queries`, state.get(`${type}Queries`).push(toAdd))\n }\n\n return state\n}\n\nconst buildSearchPath = (field, index = null) => {\n let searchPath = [field, index]\n\n if (field.startsWith('similarity')) {\n searchPath = ['similarity', camelcase(field.replace('similarity', '')), index]\n }\n\n if (isAiEntityKey(field)) {\n searchPath = ['aiEntities', index]\n }\n\n return searchPath.filter(f => f !== null)\n}\n\nexport default handleActions({\n [UserActions.setUser]: (state, { payload: user }) => state.setIn(['booleans', 'globalClusters'], user.globalClusterDefault),\n [UserActions.setField]: (state, { payload: { field, value } }) => {\n if (field === 'globalClusterDefault') {\n return state.setIn(['booleans', 'globalClusters'], value)\n }\n\n return state\n },\n [FilterActions.addNewsQuery]: (state, { payload }) => addNewsQuery(state, payload),\n [FilterActions.addNewsQueries]: (state, { payload: queries }) => {\n let newState = state\n\n queries.forEach(query => {\n newState = addNewsQuery(newState, query)\n })\n\n return newState\n },\n\n [FilterActions.setSelectedFilters]: (state, { payload }) => {\n const {\n tonalities,\n booleans,\n geoBoundingBox,\n similarity\n } = payload\n\n const newFilters = Object.keys(payload)\n .filter(key => specialFilters.indexOf(key) === -1)\n .reduce((acc, key) => ({ ...acc, [key]: mapSelectedItems(payload[key], state, key) }), {})\n\n return state\n .merge(newFilters)\n .merge({\n tonalities: mapTonalities(tonalities, state),\n booleans: fromJS(booleans),\n geoBoundingBox: geoBoundingBox || defaultGeoBoundingBox,\n\n similarity: state.get('similarity').merge({\n ccdCampaigns: mapSelectedItems(similarity.ccdCampaigns, state.get('similarity'), 'ccdCampaigns', 'similarityCcdCampaigns')\n })\n })\n },\n [FilterActions.addFilters]: (state, { payload: filters }) => {\n let newState = state\n filters.forEach(({ filter, field }) => {\n if (!filter) {\n return\n }\n\n const toAdd = mapAddedItem(filter, field)\n\n const searchPath = buildSearchPath(field)\n\n if (newState.getIn(searchPath) && !newState.getIn(searchPath).find(item => item.get('id') === toAdd.get('id'))) {\n newState = newState.updateIn(searchPath, values => values.push(toAdd))\n }\n })\n\n return newState\n },\n [FilterActions.replaceFilters]: (state, { payload: filters }) => {\n let newState = filters.reduce((acc, { field }) => {\n const searchPath = buildSearchPath(field)\n\n if (state.getIn(searchPath)) {\n return acc.setIn(searchPath, initialState.getIn(searchPath))\n }\n\n return acc\n }, state)\n\n filters.forEach(({ filter, field }) => {\n if (!filter) {\n return\n }\n\n const toAdd = mapAddedItem(filter, field)\n\n const searchPath = buildSearchPath(field)\n\n if (newState.getIn(searchPath) && !newState.getIn(searchPath).find(item => item.get('id') === toAdd.get('id'))) {\n newState = newState.updateIn(searchPath, values => values.push(toAdd))\n }\n })\n\n return newState\n },\n [FilterActions.resetFilterFields]: (state, { payload: fields }) => {\n let newState = state\n fields.forEach(field => {\n newState = newState.set(field, initialState.get(field))\n })\n\n return newState\n },\n [FilterActions.setFilter]: (state, { payload: { field, values } }) => state.set(field, values),\n [FilterActions.setBoolean]: (state, { payload: { field, value } }) => state.setIn(['booleans', field], value),\n [FilterActions.changeDate]: (state, { payload: { dateFrom, dateTo, dateRange } }) => {\n const { dateInterval, allowedDateIntervals } = calculateIntervals(state.get('dateInterval'), dateFrom, dateTo)\n const dateType = state.get('dateType')\n\n let newDateFrom = dateFrom\n\n if (newDateFrom && dateType === 'mediareview') {\n newDateFrom = moment(newDateFrom).startOf('day').toDate()\n }\n\n let newDateTo = dateTo\n\n if (newDateTo && dateType === 'mediareview') {\n newDateTo = moment(newDateTo).endOf('day').toDate()\n }\n\n return state.merge({\n dateFrom: newDateFrom,\n dateTo: newDateTo,\n dateRange: dateRange || datesToRange(dateFrom, dateTo),\n dateInterval,\n allowedDateIntervals\n })\n },\n [FilterActions.changeDateType]: (state, { payload: dateType }) => state.set('dateType', dateType),\n [FilterActions.changeDateInterval]: (state, { payload: interval }) => state.set('dateInterval', interval),\n [FilterActions.removeFilter]: (state, { payload: { field, index } }) => {\n if (List.isList(state.get(field))) {\n return state.update(field, list => list.delete(index))\n }\n\n if (field === 'booleans') {\n return state.setIn([field, index], false)\n }\n\n if (field === 'geoBoundingBox') {\n return state.set(field, initialState.get('geoBoundingBox'))\n }\n\n if (field.startsWith('similarity')) {\n return state.deleteIn(['similarity', camelcase(field.replace('similarity', '')), index])\n }\n\n if (isAiEntityKey(field)) {\n return state.deleteIn(['aiEntities', index])\n }\n\n return state.delete(field)\n },\n [FilterActions.invertFilter]: (state, { payload: { field, index } }) => {\n if (isAiEntityKey(field)) {\n return state.updateIn(['aiEntities', index, 'inverted'], inverted => !inverted)\n }\n\n if (List.isList(state.get(field))) {\n return state.updateIn([field, index, 'inverted'], inverted => !inverted)\n }\n\n return state\n },\n\n [FilterActions.updateFilter]: (state, { payload: { filter, index } }) => {\n if (List.isList(state.get(filter.get('field')))) {\n return state.setIn([filter.get('field'), index], filter.set('updated', true))\n }\n\n return state\n },\n\n [FilterActions.setAnalysisFilter]: (state, { payload: { field, value } }) => state.setIn(['analysis', field], value),\n\n [FilterActions.setSimilarityFilter]: (state, { payload: { field, value } }) => {\n const newValue = value.map(v => mapAddedItem(v, camelcase(`similarity_${field}`)))\n\n return state.setIn(['similarity', field], newValue)\n },\n\n [FilterActions.toggleStatementTonality]: (state, { payload: tonality }) => (\n state.updateIn(['analysis', 'statementTonalities'], tonalities => {\n if (tonalities.some(t => t.get('id') === tonality.get('id'))) {\n return tonalities.filter(t => t.get('id') !== tonality.get('id'))\n }\n\n return tonalities.push(tonality)\n })\n ),\n\n [FilterActions.resetAnalysisCodesFilter]: state => (\n state.update('analysis', analysis => analysis.merge(fromJS({\n selectedCodes: [],\n restrictedCodes: [],\n excludedCodes: [],\n groupedCodes: []\n })))\n ),\n\n [FilterActions.swapAnalysisCodeSelectionAndGrouping]: state => (\n state.update('analysis', analysis => analysis.merge(fromJS({\n selectedCodes: analysis.get('groupedCodes'),\n groupedCodes: analysis.get('selectedCodes')\n })))\n ),\n\n [FilterActions.resetFilters]: (state, { payload: globalClusterDefault }) => (\n state.merge(resettableFilters)\n .setIn(['analysis', 'useMediaReviewCodes'], state.getIn(['analysis', 'useMediaReviewCodes']))\n .setIn(['booleans', 'globalClusters'], globalClusterDefault)\n ),\n\n [ConfigActions.setStatics]: (state, { payload }) => (\n state.setIn(['analysis', 'useMediaReviewCodes'], !(payload.analysisCodes || []).some(c => c.analysis))\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport { ChartDataSources, ChartTypes } from 'static/constants'\nimport * as Actions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n firstLevel: 'timeline',\n secondLevel: null,\n thirdLevel: 'buzz',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: ChartTypes.HORIZONTAL_BAR,\n opts: {\n hideAxes: true,\n hideLabels: true,\n minBarHeight: 1\n }\n})\n\nexport default handleActions({\n [Actions.fetchFilterTimelineStart]: state => state.set('loading', true),\n [Actions.fetchFilterTimelineError]: state => state.set('loading', false),\n [Actions.fetchFilterTimelineSuccess]: (state, { payload }) => state.merge({\n loading: false,\n data: fromJS(payload)\n }),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({})\n\nexport default handleActions({\n [NewsActions.newsRequestSuccess]: (_state, { payload: { groups } }) => fromJS({}).withMutations(ctx => {\n groups.forEach(group => (\n ctx.set(\n group.id,\n fromJS(group).update('news', news => news.map(n => n.get('id')))\n )\n ))\n }),\n [NewsActions.moreNewsRequestStart]: (state, { payload: id }) => {\n const group = state.get(id).set('loadingMore', true)\n\n return state.set(id, group)\n },\n [NewsActions.moreNewsRequestSuccess]: (state, { payload: { data: { groups }, id } }) => {\n const groupData = groups.filter(c => c.id === id)[0]\n\n if (!groupData) {\n if (state.get(id)) {\n return state.set(id, state.get(id).withMutations(\n ctx => ctx.merge({ loadingMore: false })\n ))\n }\n\n return state\n }\n\n if (state.get(id)) {\n const oldNewsIds = state.getIn([id, 'news'])\n const news = groupData.news.filter(n => !oldNewsIds.includes(n.id))\n\n return state.set(id, state.get(id).withMutations(\n ctx => ctx\n .set('news', state.getIn([id, 'news']).concat(fromJS(news.map(n => n.id))))\n .set('loadingMore', false)\n ))\n }\n\n return state\n },\n [NewsActions.updateGroups]: (state, { payload: { newGroupIds, updatedGroups, newsId } }) => {\n const filteredState = state.map(s => s\n .set('news', s.get('news').filter(n => n !== newsId)))\n\n return filteredState.map(s => {\n if (newGroupIds.includes(s.get('id'))) {\n return s.set('news', s.get('news').insert(0, newsId))\n }\n\n return s\n }).merge(updatedGroups)\n },\n [NewsActions.updateGroupStats]: (state, { payload: { groups } }) => groups.reduce((newState, group) => {\n if (newState.get(group.id)) {\n return newState.setIn([group.id, 'stats'], fromJS(group.stats))\n }\n\n return newState\n }, state),\n\n [NewsActions.resetNews]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS([])\n\nexport default handleActions({\n [NewsActions.newsRequestSuccess]: (state, { payload: { groups } }) => fromJS(groups.map(({ id }) => id)),\n [NewsActions.updateGroups]: (state, { payload: { updatedGroups } }) => {\n const groupsIds = updatedGroups.keySeq()\n\n if (state.has(-1)) {\n return state.insert(-1, groupsIds).flatten()\n }\n\n return state.insert(state.size, groupsIds).flatten()\n },\n [NewsActions.resetNews]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\nimport { NewsPageSize, NewsPageMoreNewsSize } from 'static/constants'\n\nexport const initialState = fromJS({})\n\nexport default handleActions({\n [NewsActions.increasePaging]: (state, { payload: { groups, groupId } }) => {\n let ids = []\n\n if (groupId) {\n ids = [groupId]\n } else {\n ids = groups.map(({ id }) => id)\n }\n\n const updates = {}\n\n ids.forEach(id => {\n if (state.has(id.toString())) {\n const size = state.getIn([id.toString(), 'size'])\n\n Object.assign(updates, {\n [id]: {\n size,\n from: state.getIn([id.toString(), 'from']) + size\n }\n })\n } else {\n Object.assign(updates, {\n [id]: {\n size: NewsPageMoreNewsSize,\n from: NewsPageSize\n }\n })\n }\n })\n\n return state.merge(fromJS(updates))\n },\n [NewsActions.newsRequestStart]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as Actions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = Set([])\n\nexport default handleActions({\n [Actions.selectNews]: (state, { payload: newsIds }) => {\n let newNewsIds = fromJS([newsIds]).flatten().toSet()\n const intersection = state.intersect(newNewsIds)\n newNewsIds = newNewsIds.subtract(intersection)\n\n return state.subtract(intersection).union(newNewsIds)\n },\n\n [Actions.resetNewsSelection]: () => initialState,\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as ShoppingCartActions from 'actions/shopping_cart'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n running: false,\n tabIndex: 0,\n showCustomTagDialog: false,\n showClusterDialog: false,\n showRemoveCustomTagDialog: false,\n showSnippets: false,\n customTagId: null,\n autoAddShoppingCartNews: false\n})\n\nexport default handleActions({\n [ShoppingCartActions.updateTabIndex]: (state, { payload: tabIndex }) => state.set('tabIndex', tabIndex),\n [ShoppingCartActions.setCustomTagId]: (state, { payload: customTagId }) => state.set('customTagId', customTagId || null),\n [ShoppingCartActions.showCustomTagDialog]: state => state.set('showCustomTagDialog', true),\n [ShoppingCartActions.hideCustomTagDialog]: state => state\n .set('showCustomTagDialog', false)\n .set('autoAddShoppingCartNews', false),\n [ShoppingCartActions.showRemoveCustomTagDialog]: state => state.set('showRemoveCustomTagDialog', true),\n [ShoppingCartActions.hideRemoveCustomTagDialog]: state => state.set('showRemoveCustomTagDialog', false),\n [ShoppingCartActions.toggleSnippets]: state => state.update('showSnippets', value => !value),\n [ShoppingCartActions.fetchNewsStart]: state => state.set('running', true),\n [ShoppingCartActions.fetchNewsSuccess]: state => state.set('running', false),\n [ShoppingCartActions.fetchNewsError]: state => state.set('running', false),\n [ShoppingCartActions.addAllNewsToShoppingCartStart]: state => state.set('running', true),\n [ShoppingCartActions.addAllNewsToShoppingCartSuccess]: state => state.set('running', false),\n [ShoppingCartActions.addAllNewsToShoppingCartError]: state => state.set('running', false),\n [ShoppingCartActions.fetchClusterForShoppingCartStart]: state => state.set('running', true),\n [ShoppingCartActions.fetchClusterForShoppingCartSuccess]: state => state.set('running', false),\n [ShoppingCartActions.fetchClusterForShoppingCartError]: state => state.set('running', false),\n [ShoppingCartActions.showClusterDialog]: state => state.set('showClusterDialog', true),\n [ShoppingCartActions.hideClusterDialog]: state => state.set('showClusterDialog', false),\n [ShoppingCartActions.setRunning]: (state, { payload: running }) => state.set('running', running),\n [ShoppingCartActions.setAutoAddShoppingCartNews]: (state, { payload }) => (\n state.set('autoAddShoppingCartNews', payload)\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, List } from 'immutable'\n\nimport { listMove } from 'utils/immutable'\nimport { multiDragAwareReorder } from 'utils/multidrag'\n\nimport * as ShoppingCartActions from 'actions/shopping_cart'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n news: [],\n codes: []\n})\n\nconst getCodes = state => state.get('codes')\nconst findCodeIndexById = (state, id) => getCodes(state).findIndex(c => c.get('id') === id)\n\nconst addNewsToNewsState = (state, news) => {\n let newNewsState = state.get('news')\n let newElements = fromJS([])\n news.forEach(n => {\n const clusteredNewsIds = n.get('clusteredNews').map(cn => cn.get('id'))\n let alreadyInState = false\n newNewsState = newNewsState.map(nns => {\n if (nns.first() === n.get('id')) {\n alreadyInState = true\n\n return nns.concat(clusteredNewsIds).toOrderedSet().toList()\n }\n\n return nns\n })\n\n if (!alreadyInState) {\n newElements = newElements.push(clusteredNewsIds.unshift(n.get('id')))\n }\n })\n\n return newNewsState.concat(newElements)\n}\nexport default handleActions({\n [ShoppingCartActions.fetchNewsSuccess]: (state, { payload: news }) => {\n const newNews = fromJS(news).map(n => n.get('clusteredNews').map(c => c.get('id')).unshift(n.get('id')))\n\n return state.set('news', newNews)\n },\n [ShoppingCartActions.fetchClusterForShoppingCartSuccess]: (state, { payload: news }) => (\n state.set('news', addNewsToNewsState(state, news))\n ),\n [ShoppingCartActions.addAllNewsToShoppingCartSuccess]: (state, { payload: news }) => state.set('news', addNewsToNewsState(state, news)),\n [ShoppingCartActions.removeNewsFromShoppingCart]: (state, { payload }) => {\n const newPayload = fromJS(payload)\n\n const newsIds = List.isList(newPayload) ? newPayload : newPayload.get('newsIds')\n const codeIds = newPayload.get('codeIds') || state.get('codes').map(c => c.get('id'))\n\n const codes = state.get('codes')\n .map(code => code.update('news', news => (codeIds.includes(code.get('id')) ? news.filter(n => !newsIds.includes(n)) : news)))\n .filter(code => !code.get('news').isEmpty())\n\n const news = state.get('news').filter(n => codes.find(code => code.get('news').includes(n.first())))\n\n return state.merge({\n codes,\n news\n })\n },\n [ShoppingCartActions.moveNewsInShoppingCart]: (state, { payload: { codeId, oldIndex, newIndex, selectedNews } }) => {\n const selectedDraggableIds = selectedNews.filter(sn => sn.get('codeId') === codeId).map(sn => sn.get('newsId'))\n\n const newNews = multiDragAwareReorder({\n draggableIds: state.get('news').map(n => n.first()),\n selectedDraggableIds,\n sourceIndex: oldIndex,\n destinationIndex: newIndex\n })\n\n return state.update('news', news => news.sortBy(n => newNews.indexOf(n.first())))\n },\n [ShoppingCartActions.moveNewsInShoppingCartSublist]: (state, { payload: { codeId, oldIndex, newIndex, selectedNews } }) => {\n const codeIndex = findCodeIndexById(state, codeId)\n\n const selectedDraggableIds = selectedNews.filter(sn => sn.get('codeId') === codeId).map(sn => sn.get('newsId'))\n const newNews = multiDragAwareReorder({\n draggableIds: state.getIn(['codes', codeIndex, 'news']),\n selectedDraggableIds,\n sourceIndex: oldIndex,\n destinationIndex: newIndex\n })\n\n return state.setIn(['codes', codeIndex, 'news'], newNews)\n },\n [ShoppingCartActions.moveCodeInShoppingCart]: (state, { payload: { oldIndex, newIndex } }) => {\n const nextCodes = listMove(getCodes(state), oldIndex, newIndex)\n\n return state.set('codes', nextCodes)\n },\n [ShoppingCartActions.toggleNewsList]: (state, { payload: codeId }) => {\n const codeIndex = findCodeIndexById(state, codeId)\n const nextCodes = getCodes(state).update(codeIndex, code => code.set('showNews', !code.get('showNews')))\n\n return state.set('codes', nextCodes)\n },\n [ShoppingCartActions.expandAllNewsLists]: state => state.set('codes', getCodes(state).map(c => c.set('showNews', true))),\n [ShoppingCartActions.collapseAllNewsLists]: state => state.set('codes', getCodes(state).map(c => c.set('showNews', false))),\n [ShoppingCartActions.setCodes]: (state, { payload: codes }) => state.set('codes', codes),\n [ShoppingCartActions.setNews]: (state, { payload: news }) => state.set('news', news),\n\n [ShoppingCartActions.replaceCluster]: (state, { payload: { oldIds, news } }) => {\n const newIds = news.map(n => n.get('id'))\n const oldMainNewsId = oldIds.first()\n const newMainNewsId = newIds.first()\n\n const newNews = state.get('news').map(ids => (ids.equals(oldIds) ? newIds : ids))\n const codes = state.get('codes').map(code => code.update('news', ids => ids.map(id => (id === oldMainNewsId ? newMainNewsId : id))))\n\n return state.merge({ news: newNews, codes })\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as Actions from 'actions/shopping_cart'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = Set([])\n\nexport default handleActions({\n [Actions.setSelectedNews]: (state, { payload: { codeNewsIdPairs, omitIntersection } }) => {\n let newPairs = fromJS([codeNewsIdPairs]).flatten().toSet()\n\n if (omitIntersection) {\n return state.union(newPairs)\n }\n\n const intersection = state.intersect(newPairs)\n newPairs = newPairs.subtract(intersection)\n\n return state.subtract(intersection).union(newPairs)\n },\n\n [Actions.resetNewsSelection]: () => initialState,\n\n [Actions.updateTabIndex]: () => initialState,\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as Actions from 'actions/shopping_cart'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n selectedNews: Set([])\n})\n\nexport default handleActions({\n [Actions.selectNewsForSorting]: (state, { payload: { news, isReplace, keyPress } }) => {\n const selectedNews = state.get('selectedNews')\n const deselect = (\n Boolean(keyPress.ctrlKey || keyPress.metaKey)\n && (selectedNews.some(n => n.get('newsId') === news.first().get('newsId')))\n )\n let replace = isReplace\n\n if (!replace) {\n replace = !selectedNews.isEmpty() && selectedNews.first().get('codeId') !== news.first().get('codeId')\n }\n\n let result = Set([])\n\n if (replace) {\n result = Set(news)\n } else if (deselect) {\n result = selectedNews.subtract(news)\n } else {\n result = selectedNews.union(news)\n }\n\n return state.merge({\n selectedNews: result\n })\n },\n\n [\n combineActions(\n Actions.moveNewsInShoppingCart,\n Actions.moveNewsInShoppingCartSublist,\n Actions.resetSortingSelection\n )\n ]: () => initialState,\n\n [Actions.updateTabIndex]: () => initialState,\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport { listMove } from 'utils/immutable'\n\nimport * as Actions from 'actions/shopping_cart'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n loading: false,\n activeNewsIdFirst: null,\n activeNewsIdSecond: null,\n hoveredNewsIdFirst: null,\n hoveredNewsIdSecond: null,\n newsIds: [],\n news: []\n})\n\nexport default handleActions({\n [Actions.showClusterDialog]: (state, { payload }) => state.set('newsIds', payload),\n [Actions.hideClusterDialog]: () => initialState,\n\n [Actions.fetchReorderClusteredNewsStart]: state => state.set('loading', true),\n [Actions.fetchReorderClusteredNewsError]: state => state.set('loading', false),\n [Actions.fetchReorderClusteredNewsSuccess]: (state, { payload: news }) => state.merge({\n loading: false,\n news: fromJS(news)\n }),\n\n [Actions.moveNewsInCluster]: (state, { payload: { id, newIndex } }) => {\n const index = state.get('news').findIndex(n => id === n.get('id'))\n\n return state.update('news', news => listMove(news, index, newIndex))\n },\n\n [Actions.setActiveNewsIdsInCluster]: (state, { payload: { first, second } }) => state.merge({\n activeNewsIdFirst: first,\n activeNewsIdSecond: second\n }),\n\n [Actions.setHoveredNewsIdsInCluster]: (state, { payload: { first, second } }) => state.merge({\n hoveredNewsIdFirst: first,\n hoveredNewsIdSecond: second\n }),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport selectedNews from './selected_news'\nimport sorting from './sorting'\nimport cluster from './cluster'\n\nexport default combineReducers({\n ui,\n data,\n selectedNews,\n sorting,\n cluster\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n active: false,\n loadingNews: false,\n shoppingSuccess: false\n})\n\nexport default handleActions({\n [NewsActions.showShoppingNewsDialog]: state => state.set('active', true),\n [NewsActions.hideShoppingNewsDialog]: state => state.set('active', false).set('shoppingSuccess', false),\n [NewsActions.submitShoppingSuccess]: state => state.set('shoppingSuccess', true),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n selectedNews: {\n articleDate: new Date(),\n codes: [],\n images: []\n }\n})\n\nexport default handleActions({\n [NewsActions.showShoppingNewsDialog]: (state, { payload: news }) => state.set('selectedNews', news),\n\n [NewsActions.resetNews]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/charts'\nimport * as AppActions from 'actions/app'\n\n/*\nlg >= 1280px\nmd >= 960px\nsm >= 600px\n*/\nexport const initialState = fromJS({\n charts: {\n lg: [\n { type: 'rectangle', firstLevel: 'reach' },\n { type: 'rectangle', firstLevel: 'buzz' },\n { type: 'rectangle', firstLevel: 'visits' },\n { type: 'area', firstLevel: 'timeline' },\n { type: 'bar', firstLevel: 'languages' },\n { type: 'worldMap', firstLevel: 'countries' },\n { type: 'tagCloud', firstLevel: 'hashtags' },\n { type: 'bar', firstLevel: 'channels' },\n { type: 'bar', firstLevel: 'mediaTypes' },\n { type: 'tagCloud', firstLevel: 'emojis' }\n ],\n md: [\n { type: 'rectangle', firstLevel: 'reach' },\n { type: 'rectangle', firstLevel: 'buzz' },\n { type: 'rectangle', firstLevel: 'visits' },\n { type: 'area', firstLevel: 'timeline' },\n { type: 'worldMap', firstLevel: 'countries' },\n { type: 'bar', firstLevel: 'languages' },\n { type: 'bar', firstLevel: 'mediaTypes' },\n { type: 'bar', firstLevel: 'channels' },\n { type: 'tagCloud', firstLevel: 'hashtags' },\n { type: 'tagCloud', firstLevel: 'emojis' }\n ],\n sm: [\n { type: 'rectangle', firstLevel: 'reach' },\n { type: 'rectangle', firstLevel: 'buzz' },\n { type: 'rectangle', firstLevel: 'visits' },\n { type: 'area', firstLevel: 'timeline' },\n { type: 'worldMap', firstLevel: 'countries' },\n { type: 'bar', firstLevel: 'languages' },\n { type: 'bar', firstLevel: 'mediaTypes' },\n { type: 'bar', firstLevel: 'channels' },\n { type: 'tagCloud', firstLevel: 'hashtags' },\n { type: 'tagCloud', firstLevel: 'emojis' }\n ],\n xs: [\n { type: 'rectangle', firstLevel: 'reach' },\n { type: 'rectangle', firstLevel: 'buzz' },\n { type: 'rectangle', firstLevel: 'visits' },\n { type: 'area', firstLevel: 'timeline' },\n { type: 'worldMap', firstLevel: 'countries' },\n { type: 'bar', firstLevel: 'languages' },\n { type: 'bar', firstLevel: 'mediaTypes' },\n { type: 'bar', firstLevel: 'channels' },\n { type: 'tagCloud', firstLevel: 'hashtags' },\n { type: 'tagCloud', firstLevel: 'emojis' }\n ]\n },\n layouts: {\n lg: [\n { y: 0, x: 0, w: 4, h: 2 },\n { y: 2, x: 0, w: 2, h: 2 },\n { y: 2, x: 2, w: 2, h: 2 },\n { y: 0, x: 4, w: 8, h: 4 },\n { y: 4, x: 0, w: 4, h: 4 },\n { y: 4, x: 4, w: 4, h: 4 },\n { y: 4, x: 8, w: 4, h: 4 },\n { y: 8, x: 0, w: 4, h: 4 },\n { y: 8, x: 4, w: 4, h: 4 },\n { y: 8, x: 8, w: 4, h: 4 }\n ],\n md: [\n { y: 0, x: 0, w: 4, h: 1 },\n { y: 0, x: 4, w: 4, h: 1 },\n { y: 0, x: 8, w: 4, h: 1 },\n { y: 1, x: 0, w: 12, h: 3 },\n { y: 4, x: 0, w: 6, h: 3 },\n { y: 4, x: 6, w: 6, h: 3 },\n { y: 7, x: 0, w: 6, h: 3 },\n { y: 7, x: 6, w: 6, h: 3 },\n { y: 10, x: 0, w: 6, h: 3 },\n { y: 10, x: 6, w: 6, h: 3 }\n ],\n sm: [\n { y: 0, x: 0, w: 12, h: 1 },\n { y: 1, x: 0, w: 6, h: 1 },\n { y: 1, x: 6, w: 6, h: 1 },\n { y: 2, x: 0, w: 12, h: 3 },\n { y: 5, x: 0, w: 12, h: 3 },\n { y: 8, x: 0, w: 12, h: 3 },\n { y: 11, x: 0, w: 12, h: 3 },\n { y: 14, x: 0, w: 12, h: 3 },\n { y: 17, x: 0, w: 12, h: 3 },\n { y: 20, x: 0, w: 12, h: 3 }\n ],\n xs: [\n { y: 0, x: 0, w: 12, h: 1 },\n { y: 1, x: 0, w: 12, h: 1 },\n { y: 2, x: 0, w: 12, h: 1 },\n { y: 3, x: 0, w: 12, h: 3 },\n { y: 6, x: 0, w: 12, h: 3 },\n { y: 9, x: 0, w: 12, h: 3 },\n { y: 12, x: 0, w: 12, h: 3 },\n { y: 15, x: 0, w: 12, h: 3 },\n { y: 18, x: 0, w: 12, h: 3 },\n { y: 21, x: 0, w: 12, h: 3 }\n ]\n }\n})\n\nconst updateFieldInCharts = (state, field, value) => state.update(\n 'charts',\n charts => charts.reduce((acc, values, key) => acc.set(key, values.map(c => c.set(field, value))), fromJS({}))\n)\n\nexport default handleActions({\n [Actions.aggregationsRequestStart]: state => updateFieldInCharts(state, 'loading', true),\n [Actions.aggregationsRequestError]: state => updateFieldInCharts(state, 'loading', false),\n [Actions.aggregationsRequestSuccess]: state => updateFieldInCharts(state, 'loading', false),\n\n [Actions.setAggregationValue]: (state, { payload: value }) => (value ? updateFieldInCharts(state, 'thirdLevel', value) : initialState),\n [Actions.setStaticChartData]: (state, { payload: { index, breakpoint, data } }) => {\n const chart = state.getIn(['charts', breakpoint, index])\n\n if (chart) {\n return state.setIn(['charts', breakpoint, index], chart.merge({\n data: fromJS(data),\n loading: false\n }))\n }\n\n return state\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\n\nimport * as Actions from 'actions/news'\nimport * as ConfigActions from 'actions/config'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = ''\n\nconst sortingOptions = {\n 1: '',\n 2: 'reach',\n 3: 'interactions'\n}\n\nexport default handleActions({\n [Actions.setSortBy]: (state, action) => action.payload,\n\n [ConfigActions.setConfig]: (state, { payload: { defaultSortingId } }) => sortingOptions[`${defaultSortingId}`] || '',\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\n\nimport * as Actions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = 'desc'\n\nexport default handleActions({\n [Actions.setSortDirection]: state => (state === 'desc' ? 'asc' : 'desc'),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\n\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = 0\n\nexport default handleActions({\n [NewsActions.newsRequestSuccess]: (state, { payload: { total } }) => total,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport { NewsPageViews } from 'static/constants'\n\nimport * as ConfigActions from 'actions/config'\nimport * as NewsActions from 'actions/news'\nimport * as FilterActions from 'actions/filter'\nimport * as AppActions from 'actions/app'\n\nconst queryTypeMapping = {\n post: 'news',\n profile: 'author'\n}\n\nconst queryTypeLabelMapping = {\n news: 'search_for_news',\n author: 'search_for_authors',\n profile: 'search_for_profiles',\n publication: 'search_for_publications',\n post: 'search_for_posts'\n}\n\nconst newsViewMapping = {\n [NewsPageViews.INFLUENCERS]: {\n selectedQueryType: 'author',\n searchBarLabel: 'search_for_authors'\n },\n [NewsPageViews.PROFILES]: {\n selectedQueryType: 'author',\n searchBarLabel: 'search_for_profiles'\n },\n [NewsPageViews.POSTS]: {\n selectedQueryType: 'news',\n searchBarLabel: 'search_for_posts'\n },\n [NewsPageViews.STATISTICS]: {\n selectedQueryType: 'news',\n searchBarLabel: 'search_for_posts'\n },\n [NewsPageViews.PUBLICATIONS]: {\n selectedQueryType: 'publication',\n searchBarLabel: 'search_for_publications'\n },\n default: {\n selectedQueryType: 'news',\n searchBarLabel: 'search_for_news'\n }\n}\n\nexport const initialState = fromJS({\n currentIndex: 0,\n showAdvancedSearch: false,\n showDateForm: false,\n displayRemoveDialog: false,\n deletingNews: false,\n selectedNewsToRemove: {\n id: null,\n headline: null\n },\n showHelpDialog: false,\n selectedQueryType: 'news',\n searchBarLabel: 'search_for_news',\n newsRequestIsRunning: false,\n newsView: 'news',\n previousNewsView: 'news',\n activeFiltersCollapsed: false,\n lastSeenNewsId: 0,\n showNewsList: false,\n selectedNewsIdToShowInDrawer: 0,\n selectedNewsIdForAiAnalysis: 0,\n newsRequestBlocked: false,\n lastNewsIdClickedOnMorePublications: 0,\n youtubePlayerActiveNewsId: null,\n tiktokPlayerActiveNewsId: null,\n translateRunningRequestForNewsId: null\n})\n\nexport default handleActions({\n [NewsActions.currentIndexChange]: (state, { payload: index }) => state.set('currentIndex', index),\n [NewsActions.toggleAdvancedSearch]: state => {\n const show = state.get('showAdvancedSearch')\n let result = state.set('showAdvancedSearch', !show)\n\n if (show === false) {\n result = result.set('showDateForm', false)\n result = result.set('showHelpDialog', false)\n }\n\n return result\n },\n [NewsActions.showNewsPageRemoveNewsDialog]: (state, { payload: news }) => (\n state.merge({ displayRemoveDialog: true, selectedNewsToRemove: news })\n ),\n [NewsActions.hideNewsPageRemoveNewsDialog]: state => state.set('displayRemoveDialog', false),\n\n [NewsActions.deleteNewsStart]: state => state.set('deletingNews', true),\n [NewsActions.deleteNewsError]: state => state.set('deletingNews', false),\n [NewsActions.deleteNewsSuccess]: state => state.merge({ deletingNews: false, displayRemoveDialog: false }),\n\n [NewsActions.toggleHelpDialog]: state => state.set('showHelpDialog', !state.get('showHelpDialog')),\n [NewsActions.toggleDateForm]: (state, { payload }) => {\n let show = !state.get('showDateForm')\n\n if (payload !== undefined) {\n show = payload === true\n }\n\n let result = state.set('showDateForm', show)\n\n if (show) {\n result = result.set('showAdvancedSearch', false)\n result = result.set('showHelpDialog', false)\n }\n\n return result\n },\n [NewsActions.setLastNewsIdClickedOnMorePublications]: (state, { payload: id }) => {\n if (id === state.get('lastNewsIdClickedOnMorePublications')) {\n return state.set('lastNewsIdClickedOnMorePublications', 0)\n }\n\n return state.set('lastNewsIdClickedOnMorePublications', id)\n },\n [FilterActions.setSelectedQueryType]: (state, { payload: queryType }) => {\n const newState = state.set('selectedQueryType', queryTypeMapping[queryType] || queryType)\n\n if (queryTypeLabelMapping[queryType]) {\n return newState.set('searchBarLabel', queryTypeLabelMapping[queryType])\n }\n\n return state\n },\n [NewsActions.newsRequestStart]: state => {\n if (state.get('newsRequestBlocked')) {\n return state\n }\n\n return state.set('newsRequestIsRunning', true)\n },\n [NewsActions.setNewsRequestIsRunning]: (state, { payload: running }) => state.set('newsRequestIsRunning', running),\n [NewsActions.invalidSearch]: state => state.set('newsRequestIsRunning', false),\n [NewsActions.setNewsView]: (state, { payload: view }) => {\n let newsView = view\n\n if (newsView === NewsPageViews.CHARTS && state.get('newsView') === NewsPageViews.CHARTS) {\n newsView = state.get('previousNewsView')\n }\n\n const newState = state.merge({\n previousNewsView: state.get('newsView', initialState.get('newsView')),\n newsView,\n youtubePlayerActiveNewsId: null,\n tiktokPlayerActiveNewsId: null\n })\n\n return newState.merge(newsViewMapping[newsView] || newsViewMapping.default)\n },\n [combineActions(NewsActions.newsRequestError, NewsActions.newsRequestSuccess)]: state => state.set('newsRequestIsRunning', false),\n [NewsActions.resetNews]: state => initialState.merge({\n newsView: state.get('newsView'),\n previousNewsView: state.get('previousNewsView'),\n lastSeenNewsId: state.get('lastSeenNewsId'),\n showNewsList: state.get('showNewsList'),\n newsRequestBlocked: state.get('newsRequestBlocked')\n }),\n\n [NewsActions.toggleActiveFilters]: state => state.update('activeFiltersCollapsed', v => !v),\n\n [combineActions(\n FilterActions.addNewsQuery,\n FilterActions.setSelectedFilters,\n FilterActions.addFilters,\n FilterActions.setFilter\n )]: state => state.set('activeFiltersCollapsed', false),\n\n [NewsActions.setLastSeenNewsId]: (state, { payload: id }) => state.set('lastSeenNewsId', id),\n\n [NewsActions.setShowNewsList]: (state, { payload: showNewsList }) => state.set('showNewsList', showNewsList),\n [NewsActions.setSelectedNewsIdToShowInDrawer]: (state, { payload: id }) => state.set('selectedNewsIdToShowInDrawer', id || 0),\n\n [NewsActions.blockNewsRequest]: state => state.set('newsRequestBlocked', true),\n [NewsActions.unblockNewsRequest]: state => state.set('newsRequestBlocked', false),\n\n [NewsActions.setYoutubePlayerActiveNewsId]: (state, { payload }) => state.set('youtubePlayerActiveNewsId', payload),\n [NewsActions.setTiktokPlayerActiveNewsId]: (state, { payload }) => state.set('tiktokPlayerActiveNewsId', payload),\n\n [NewsActions.translateRequestStart]: (state, { payload: { news } }) => state.set('translateRunningRequestForNewsId', news.get('id')),\n [NewsActions.translateRequestSuccess]: state => state.set('translateRunningRequestForNewsId', null),\n\n [NewsActions.showAiAnalysisDialog]: (state, { payload: newsId }) => state.set('selectedNewsIdForAiAnalysis', newsId),\n\n [ConfigActions.setConfig]: (state, { payload: config }) => {\n if (config.defaultNewsPageView === 'list_view') {\n return state.set('showNewsList', true)\n }\n\n return state\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport aggregations from './aggregations'\nimport analysis from './analysis'\nimport charts from './charts'\nimport count from './count'\nimport data from './data'\nimport deletedNewsIds from './deleted_news_ids'\nimport editNews from './edit_news'\nimport exportReducer from './export'\nimport filter from './filter'\nimport filterTimeline from './filter_timeline'\nimport groups from './groups'\nimport groupSortOrder from './group_sort_order'\nimport paging from './paging'\nimport selectedNewsIds from './selected_news_ids'\nimport shoppingCart from './shopping_cart'\nimport shoppingNews from './shopping_news'\nimport staticCharts from './static_charts'\nimport sortBy from './sort_by'\nimport sortDirection from './sort_direction'\nimport total from './total'\nimport ui from './ui'\nimport viewConfig from './view_config'\n\nexport default combineReducers({\n aggregations,\n analysis,\n charts,\n count,\n data,\n deletedNewsIds,\n editNews,\n export: exportReducer,\n filter,\n filterTimeline,\n groups,\n groupSortOrder,\n paging,\n selectedNewsIds,\n shoppingCart,\n shoppingNews,\n staticCharts,\n sortBy,\n sortDirection,\n total,\n ui,\n viewConfig\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as Actions from 'actions/page_identities'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n running: false,\n sortBy: 'name',\n showInactive: false,\n grouped: true,\n selectedIds: Set([])\n})\n\nexport default handleActions({\n [Actions.pageIdentitiesRequestSuccess]: state => state.set('running', false),\n [Actions.pageIdentitiesRequestError]: state => state.set('running', false),\n [Actions.pageIdentitiesRequestStart]: state => state.merge({\n running: true,\n selectedIds: Set([])\n }),\n\n [Actions.selectPageIdentity]: (state, { payload: pageIdentity }) => {\n if (state.get('selectedIds').has(pageIdentity.get('id'))) {\n return state.update('selectedIds', selectedIds => selectedIds.delete(pageIdentity.get('id')))\n }\n\n return state.update('selectedIds', selectedIds => selectedIds.add(pageIdentity.get('id')))\n },\n [Actions.resetPageIdentitySelection]: state => state.set('selectedIds', Set([])),\n\n [Actions.setSortBy]: (state, { payload: sortBy }) => state.set('sortBy', sortBy),\n\n [Actions.toggleShowInactive]: state => state.update('showInactive', value => !value),\n\n [Actions.toggleGrouped]: state => state.update('grouped', value => !value),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/page_identities'\nimport * as IdentitySetActions from 'actions/identity_sets'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n total: 0,\n pageIdentities: [],\n inactivePageIdentities: []\n})\n\nexport default handleActions({\n [Actions.pageIdentitiesRequestSuccess]: (state, { payload }) => {\n const { pageIdentities, inactivePageIdentities, total } = payload\n\n return state.merge({\n pageIdentities: fromJS(pageIdentities),\n inactivePageIdentities: fromJS(inactivePageIdentities),\n total\n })\n },\n\n [IdentitySetActions.addIdentityToIdentitySetSuccess]: (state, { payload: { identitySet, identityId } }) => (\n state.update('pageIdentities', pageIdentities => pageIdentities.map(pageIdentity => {\n if (pageIdentity.getIn(['pageIdentity', 'id']) === identityId) {\n return pageIdentity\n .updateIn(['pageIdentity', 'identitySetIds'], ids => ids.push(identitySet.get('id')))\n }\n\n return pageIdentity\n }))\n ),\n\n [IdentitySetActions.removeIdentityFromIdentitySetSuccess]: (state, { payload: { identitySet, identityId } }) => (\n state.update('pageIdentities', pageIdentities => pageIdentities.map(pageIdentity => {\n if (pageIdentity.getIn(['pageIdentity', 'id']) === identityId) {\n return pageIdentity\n .updateIn(['pageIdentity', 'identitySetIds'], ids => ids.filter(id => id !== identitySet.get('id')))\n }\n\n return pageIdentity\n }))\n ),\n\n [IdentitySetActions.deleteIdentitySetSuccess]: (state, { payload: identitySetId }) => (\n state.update('pageIdentities', pageIdentities => pageIdentities.map(pageIdentity => (\n pageIdentity\n .updateIn(['pageIdentity', 'identitySetIds'], ids => ids.filter(id => id !== identitySetId))\n )))\n ),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport { ChartDataSources, SearchFields } from 'static/constants'\nimport * as Actions from 'actions/page_identities'\nimport * as AppActions from 'actions/app'\nimport { defaultChartOpts } from 'utils/page_identities'\n\nconst hashtagsChartOpts = {\n minSize: 20\n}\n\nconst mentionsChartOpts = {\n minSize: 20\n}\n\nexport const initialState = fromJS([\n {\n firstLevel: 'pageIdentitiesTimeline',\n secondLevel: 'pageIdentities',\n thirdLevel: 'buzz',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: 'area',\n label: 'BUZZ',\n opts: defaultChartOpts,\n\n searchField: SearchFields.IDENTITIES,\n isPageIdentitiesChart: true\n },\n {\n firstLevel: 'pageIdentitiesTimeline',\n secondLevel: 'pageIdentities',\n thirdLevel: 'interactionRates',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: 'area',\n label: 'INTERACTION RATES',\n opts: { ...defaultChartOpts, addPercentSign: true, allowDecimals: true },\n\n searchField: SearchFields.IDENTITIES,\n isPageIdentitiesChart: true\n },\n {\n firstLevel: 'pageIdentitiesTimeline',\n secondLevel: 'pageIdentities',\n thirdLevel: 'interactions',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: 'area',\n label: 'INTERACTIONS',\n opts: defaultChartOpts,\n\n searchField: SearchFields.IDENTITIES,\n renderInteractionsOptions: true,\n isPageIdentitiesChart: true\n },\n {\n firstLevel: 'pageIdentitiesTimeline',\n secondLevel: 'pageIdentities',\n thirdLevel: 'followers',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: 'area',\n label: 'FOLLOWERS',\n opts: defaultChartOpts,\n\n searchField: SearchFields.IDENTITIES,\n isPageIdentitiesChart: true\n },\n {\n firstLevel: 'emojis',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: 'tagCloud',\n label: 'EMOJIS',\n opts: defaultChartOpts,\n\n searchField: SearchFields.EMOJIS\n },\n {\n firstLevel: 'hashtags',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: 'tagCloud',\n label: 'HASHTAGS',\n opts: { ...defaultChartOpts, ...hashtagsChartOpts },\n\n searchField: SearchFields.HASHTAGS\n },\n {\n firstLevel: 'mentions',\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n type: 'tagCloud',\n label: 'MENTIONS',\n opts: { ...defaultChartOpts, ...mentionsChartOpts },\n\n searchField: SearchFields.MENTIONS\n }\n])\n\nexport default handleActions({\n [Actions.setChartData]: (state, { payload: { index, data } }) => state.mergeIn([index], {\n loading: false,\n data: fromJS(data)\n }),\n\n [Actions.setChartLoading]: (state, { payload: index }) => state.setIn([index, 'loading'], true),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as Actions from 'actions/page_identities'\nimport * as AppActions from 'actions/app'\n\nconst defaultCharts = Set(['comments', 'shares', 'reactions'])\n\nexport const initialState = fromJS({\n selectedInteractionCharts: defaultCharts\n})\n\nexport default handleActions({\n [Actions.toggleSelectedInteractionsChart]: (state, { payload: chart }) => state.update('selectedInteractionCharts', charts => {\n let newCharts = charts\n\n if (charts.has(chart)) {\n newCharts = newCharts.remove(chart)\n } else {\n newCharts = newCharts.add(chart)\n }\n\n if (newCharts.isEmpty()) {\n return defaultCharts\n }\n\n return newCharts\n }),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\nimport ui from './ui'\n\nexport default combineReducers({\n data,\n ui\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/page_identities'\nimport * as NewsActions from 'actions/news'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n best: [],\n worst: []\n})\n\nexport default handleActions({\n [Actions.pageIdentityPostsRequestSuccess]: (state, { payload: { best, worst } }) => state.merge({\n best: fromJS(best.map(post => post.id)),\n worst: fromJS(worst.map(post => post.id))\n }),\n [NewsActions.resetNews]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\n\nexport default combineReducers({\n data\n})\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport statistics from './statistics'\nimport posts from './posts'\n\nexport default combineReducers({\n data,\n posts,\n statistics,\n ui\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as Actions from 'actions/publications'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n from: 0,\n sortBy: 'reach',\n running: false,\n isFormActive: false,\n selectedIds: Set([])\n})\n\nexport default handleActions({\n [Actions.publicationsRequestSuccess]: state => state.update('from', from => from + 30).merge({\n running: false,\n selectedIds: Set([])\n }),\n [Actions.publicationsRequestError]: state => state.set('running', false),\n [Actions.publicationsRequestStart]: state => state.merge({\n from: 0,\n running: true\n }),\n [Actions.morePublicationsRequestSuccess]: state => state.update('from', from => from + 30),\n\n [Actions.setSortBy]: (state, { payload: sortBy }) => state.set('sortBy', sortBy),\n\n [Actions.selectPublication]: (state, { payload: publication }) => {\n if (state.get('selectedIds').has(publication.get('id'))) {\n return state.update('selectedIds', selectedIds => selectedIds.delete(publication.get('id')))\n }\n\n return state.update('selectedIds', selectedIds => selectedIds.add(publication.get('id')))\n },\n [Actions.resetPublicationSelection]: state => state.set('selectedIds', Set([])),\n [Actions.createPublicationSuccess]: state => state.set('isFormActive', false),\n [Actions.createPublicationError]: state => state.set('isFormActive', false),\n [Actions.openPublicationForm]: state => state.set('isFormActive', true),\n [Actions.hidePublicationForm]: state => state.set('isFormActive', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/publications'\nimport * as AppActions from 'actions/app'\nimport * as NewsActions from 'actions/news'\n\nexport const initialState = fromJS({\n total: 0,\n publications: [],\n newPublication: null\n})\n\nconst mapPublications = publications => fromJS(publications)\n\nexport default handleActions({\n [Actions.publicationsRequestSuccess]: (state, { payload: { publications, total } }) => state.merge({\n publications: mapPublications(publications),\n total\n }),\n [Actions.morePublicationsRequestSuccess]: (state, { payload: { publications } }) => (\n state.update('publications', old => old.concat(mapPublications(publications)))\n ),\n [Actions.createPublicationSuccess]: (state, { payload: publication }) => state.set('newPublication', fromJS(publication)),\n [Actions.openPublicationForm]: state => state.set('newPublication', null),\n [NewsActions.hideEditNewsDialog]: state => state.set('newPublication', null),\n [Actions.resetCreatedPublication]: state => state.set('newPublication', null),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport { normalizeIt, sort } from 'utils/normalizr'\n\nimport * as Actions from 'actions/saved_searches'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n entities: {},\n result: [],\n sorted: []\n})\n\nexport const addSorted = state => state.set('sorted', sort(\n state.get('result'),\n state.get('entities')\n))\n\nexport default handleActions({\n [Actions.setSavedSearches]: (state, { payload: { savedSearches } }) => (\n addSorted(state.merge(fromJS(normalizeIt({ savedSearches }, 'savedSearch', 'savedSearches'))))\n ),\n\n [Actions.saveSavedSearchSuccess]: (state, { payload: savedSearch }) => addSorted(state\n .update('entities', entities => entities.set(savedSearch.id, fromJS(savedSearch)))\n .update('result', result => (result.includes(savedSearch.id) ? result : result.push(savedSearch.id)))),\n\n [Actions.deleteSavedSearchSuccess]: (state, { payload: id }) => addSorted(state\n .update('entities', entities => entities.delete(id))\n .update('result', result => result.filter(i => i !== id))),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_searches'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS([])\n\nexport default handleActions({\n [Actions.fetchSavedSearchesTimelinesSuccess]: (state, { payload: timelines }) => fromJS(timelines),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_searches'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS([])\n\nexport default handleActions({\n [Actions.fetchSavedSearchDispatchesStart]: () => initialState,\n [Actions.fetchSavedSearchDispatchesSuccess]: (state, { payload: dispatches }) => fromJS(dispatches),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_searches'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n loading: false,\n dispatchesLoading: false,\n resolving: false,\n initialSearchLoaded: false,\n viewType: 'list',\n tab: 'saved_searches'\n})\n\nexport default handleActions({\n [Actions.fetchSavedSearchesTimelinesStart]: state => state.set('loading', true),\n [Actions.fetchSavedSearchesTimelinesError]: state => state.set('loading', false),\n [Actions.fetchSavedSearchesTimelinesSuccess]: state => state.set('loading', false),\n\n [Actions.fetchSavedSearchDispatchesStart]: state => state.set('dispatchesLoading', true),\n [Actions.fetchSavedSearchDispatchesError]: state => state.set('dispatchesLoading', false),\n [Actions.fetchSavedSearchDispatchesSuccess]: state => state.set('dispatchesLoading', false),\n\n [Actions.resolveSavedSearchStart]: state => state.set('resolving', true),\n [Actions.resolveSavedSearchError]: state => state.set('resolving', false),\n [Actions.resolveSavedSearchSuccess]: state => state.set('resolving', false),\n\n [Actions.setInitialSearchLoaded]: (state, { payload }) => state.set('initialSearchLoaded', payload),\n\n [Actions.setViewType]: (state, { payload }) => state.set('viewType', payload),\n\n [Actions.setTab]: (state, { payload }) => state.set('tab', payload),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_searches'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n removeActive: false,\n affectedDashboardsActive: false,\n updateActive: false,\n editActive: false,\n dispatchesActive: false,\n uploadedPhoto: null,\n affectedDashboards: []\n})\n\nexport default handleActions({\n [Actions.showEditSavedSearchDialog]: state => state.merge({\n editActive: true,\n uploadedPhoto: null\n }),\n [Actions.hideEditSavedSearchDialog]: state => state.set('editActive', false),\n\n [Actions.saveSavedSearchSuccess]: state => state.set('editActive', false),\n [Actions.deleteSavedSearchSuccess]: state => state.merge(fromJS({\n removeActive: false,\n affectedDashboards: []\n })),\n\n [Actions.showRemoveSavedSearchDialog]: state => state.set('removeActive', true),\n [Actions.hideRemoveSavedSearchDialog]: state => state.set('removeActive', false),\n\n [Actions.showAffectedDashboardsDialog]: state => state.set('affectedDashboardsActive', true),\n [Actions.hideAffectedDashboardsDialog]: state => state.set('affectedDashboardsActive', false),\n\n [Actions.showUpdateSavedSearchDialog]: state => state.set('updateActive', true),\n [Actions.hideUpdateSavedSearchDialog]: state => state.set('updateActive', false),\n\n [Actions.showSavedSearchDispatchesDialog]: state => state.set('dispatchesActive', true),\n [Actions.hideSavedSearchDispatchesDialog]: state => state.set('dispatchesActive', false),\n\n [Actions.setUploadedPhoto]: (state, { payload: data }) => state.set('uploadedPhoto', data),\n\n [Actions.setAffectedDashboards]: (state, { payload: data }) => state.set('affectedDashboards', data),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport moment from 'moment-timezone'\n\nimport TimeZones from 'static/time_zones'\n\nimport * as Actions from 'actions/saved_searches'\nimport * as FilterActions from 'actions/filter'\nimport * as AppActions from 'actions/app'\n\nconst defaultTimezone = 'Europe/Berlin'\n/* istanbul ignore next */\nlet timezone = moment.tz.guess() || defaultTimezone\n\n/* istanbul ignore next */\nif (TimeZones.indexOf(timezone) === -1) {\n timezone = defaultTimezone\n}\n\nexport const resetState = fromJS({\n selectedSavedSearch: {\n nameDe: '',\n nameEn: '',\n nameFr: '',\n nameRu: '',\n nameZh: '',\n nameJa: '',\n alertConfig: {\n type: 'none',\n threshold: 0,\n times: [],\n timezone,\n recipients: []\n }\n }\n})\n\nexport const initialState = resetState.merge({\n executedSavedSearch: null\n})\n\nexport default handleActions({\n [Actions.showEditSavedSearchDialog]: (state, action) => {\n if (action.payload) {\n return state.set('selectedSavedSearch', action.payload)\n }\n\n return state.merge(resetState)\n },\n\n [Actions.showSavedSearchDispatchesDialog]: (state, action) => state.set('selectedSavedSearch', action.payload),\n\n [Actions.updateSelectedSavedSearch]: (state, { payload: savedSearch }) => state.set('selectedSavedSearch', savedSearch),\n\n [Actions.showRemoveSavedSearchDialog]: (state, { payload: savedSearch }) => state.set('selectedSavedSearch', savedSearch),\n\n [Actions.setExecutedSavedSearch]: (state, { payload: savedSearch }) => state.set('executedSavedSearch', savedSearch),\n\n [Actions.saveSavedSearchSuccess]: (state, { payload: savedSearch }) => {\n if (state.get('executedSavedSearch') && savedSearch.id === state.getIn(['executedSavedSearch', 'id'])) {\n return state.set('executedSavedSearch', fromJS(savedSearch))\n }\n\n return state\n },\n\n [FilterActions.resetFilters]: () => initialState,\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport { normalizeIt, sort } from 'utils/normalizr'\n\nimport * as Actions from 'actions/saved_searches'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n entities: {},\n result: [],\n sorted: []\n})\n\nexport const addSorted = state => state.set('sorted', sort(\n state.get('result'),\n state.get('entities')\n))\n\nexport default handleActions({\n [Actions.setSavedSearches]: (state, { payload: { feeds } }) => (\n addSorted(state.merge(fromJS(normalizeIt({ feeds }, 'feed', 'feeds'))))\n ),\n\n [Actions.saveSavedSearchFeedSuccess]: (state, { payload: savedSearch }) => addSorted(state\n .update('entities', entities => entities.set(savedSearch.id, fromJS(savedSearch)))\n .update('result', result => (result.includes(savedSearch.id) ? result : result.push(savedSearch.id)))),\n\n [Actions.deleteSavedSearchFeedSuccess]: (state, { payload: id }) => addSorted(state\n .update('entities', entities => entities.delete(id))\n .update('result', result => result.filter(i => i !== id))),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_searches'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n expandedId: null,\n saving: false,\n deleting: false,\n creating: false\n})\n\nexport default handleActions({\n [Actions.expandSavedSearchFeed]: (state, { payload }) => (\n state.update('expandedId', id => (id === payload ? null : payload))\n ),\n\n [Actions.saveSavedSearchFeedStart]: (state, { payload }) => state.set(payload ? 'saving' : 'creating', true),\n [Actions.saveSavedSearchFeedSuccess]: state => (\n state.merge({\n saving: false,\n creating: false\n })\n ),\n [Actions.saveSavedSearchFeedError]: state => (\n state.merge({\n saving: false,\n creating: false\n })\n ),\n\n [Actions.deleteSavedSearchFeedStart]: state => state.set('deleting', true),\n [Actions.deleteSavedSearchFeedSuccess]: state => state.set('deleting', false),\n [Actions.deleteSavedSearchFeedError]: state => state.set('deleting', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\nimport ui from './ui'\n\nexport default combineReducers({\n data,\n ui\n})\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\nimport timelines from './timelines'\nimport dispatches from './dispatches'\nimport ui from './ui'\nimport dialogs from './dialogs'\nimport feeds from './feeds'\n\nexport default combineReducers({\n data,\n dialogs,\n dispatches,\n feeds,\n timelines,\n ui\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport { sort } from 'utils/normalizr'\n\nimport * as ConfigActions from 'actions/config'\nimport * as AppActions from 'actions/app'\nimport * as SavedDashboardActions from 'actions/saved_dashboard'\nimport * as SavedChartActions from 'actions/saved_charts'\n\nconst defaultValues = {\n channels: [],\n countries: [],\n states: [],\n darkowlLanguages: [],\n dispatchConfigs: [],\n distributionAreas: [],\n externalAccounts: [],\n filterGroups: [],\n languages: [],\n mediaReviewCodes: [],\n mediaReviewTypes: [],\n mediaSources: [],\n mediaTypes: [],\n mediaTopics: [],\n newsguardOrientations: [],\n newsguardRanks: [],\n tonalities: [],\n interfaces: [],\n suppliers: [],\n ccdContentTypes: [],\n ssoLinks: [],\n reactionTypes: [],\n paidFeatures: []\n}\n\nexport const initialState = fromJS({\n entities: defaultValues,\n result: defaultValues,\n sorted: defaultValues\n})\n\nconst mapStatics = payload => {\n const data = {\n ...payload,\n googleAnalyticsWebsites: (payload.googleAnalytics || {}).websites || [],\n linkedInAnalyticsOrganizations: (payload.linkedInAnalytics || {}).organizations || [],\n facebookAnalyticsPages: (payload.facebookAnalytics || {}).pages || []\n }\n\n const result = { entities: {}, result: {} }\n\n Object.keys(data).forEach(key => {\n if (Array.isArray(data[key])) {\n result.entities[key] = data[key].reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n result.result[key] = data[key].map(item => item.id)\n }\n })\n\n return result\n}\n\nconst addSorted = state => {\n const keys = state.get('entities').keySeq()\n\n return keys.reduce((acc, key) => acc.setIn(['sorted', key], sort(\n state.getIn(['result', key]),\n state.getIn(['entities', key])\n )), state)\n}\n\nexport default handleActions({\n [ConfigActions.setStatics]: (state, action) => addSorted(fromJS(mapStatics(action.payload))),\n\n [combineActions(\n SavedDashboardActions.fetchSavedDashboardSuccess,\n SavedChartActions.fetchSavedChartSuccess\n )]: (state, action) => {\n const newData = addSorted(fromJS(mapStatics(action.payload)))\n\n return state\n .mergeIn(['entities'], newData.get('entities'))\n .mergeIn(['result'], newData.get('result'))\n .mergeIn(['sorted'], newData.get('sorted'))\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as SubscriptionsActions from 'actions/subscriptions'\nimport * as AppActions from 'actions/app'\n\nconst initialState = fromJS({\n selectedTopicIds: Set([])\n})\n\nexport default handleActions({\n [SubscriptionsActions.setSubscriptions]: (state, { payload: { subscriptions, topics } }) => {\n const topTopicIds = Set(topics.filter(t => t.topnews).map(t => t.id))\n const selectableTopicIds = Set(topics.map(t => t.id))\n const topicIds = Set(fromJS(subscriptions)\n .map(s => s.get('codeIds')).flatten().filter(c => selectableTopicIds.has(c)))\n\n return state.set('selectedTopicIds', topicIds.union(topTopicIds))\n },\n [SubscriptionsActions.setTopics]: (state, { payload: topicIds }) => state.set('selectedTopicIds', Set(topicIds)),\n [SubscriptionsActions.updateTopicSelection]: (state, { payload: { topic, selected } }) => {\n if (selected) {\n return state.set('selectedTopicIds', state.get('selectedTopicIds').add(topic.get('id')))\n }\n\n return state.set('selectedTopicIds', state.get('selectedTopicIds').remove(topic.get('id')))\n },\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Set } from 'immutable'\n\nimport * as SubscriptionsActions from 'actions/subscriptions'\nimport * as AppActions from 'actions/app'\n\nconst initialState = fromJS({\n selectedEditionIds: Set([])\n})\n\nexport default handleActions({\n [SubscriptionsActions.setSubscriptions]: (state, { payload: { subscriptions } }) => {\n const editionIds = subscriptions.filter(s => !s.deactivated).map(s => s.mediaReviewTypeId)\n\n return state.set('selectedEditionIds', Set(editionIds))\n },\n [SubscriptionsActions.updateEditionSelection]: (state, { payload: { edition, selected } }) => {\n if (selected) {\n return state.set('selectedEditionIds', state.get('selectedEditionIds').add(edition.get('id')))\n }\n\n return state.set('selectedEditionIds', state.get('selectedEditionIds').remove(edition.get('id')))\n },\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport topics from './topics'\nimport editions from './editions'\n\nexport default combineReducers({\n topics,\n editions\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport decamelize from 'decamelize'\n\nimport * as Actions from 'actions/user'\nimport * as SurveyActions from 'actions/survey'\nimport * as AppActions from 'actions/app'\nimport { CookieNames } from 'static/constants'\n\nimport { readCookie } from 'utils/cookieHelper'\nimport { guessLocale } from 'utils/locale'\n\nconst sid = readCookie(CookieNames.SESSION) || ''\nconst accessToken = readCookie(CookieNames.ACCESS_TOKEN) || ''\nconst isAuthenticated = (accessToken !== '')\nconst registrationException = {\n statusCode: 200,\n status: '',\n message: '',\n exceptionCode: ''\n}\nconst locale = guessLocale()\nconst cookieOptionReadFromCookie = readCookie(CookieNames.COOKIES_ACCEPTED)\n\nconst initialState = fromJS({\n sid,\n accessToken,\n isAuthenticated,\n locale,\n cookieOption: cookieOptionReadFromCookie,\n created: false,\n registrationException,\n requestRunning: false,\n updating: false,\n darkMode: false,\n preferSummaries: false,\n globalClusterDefault: true,\n disableNotificationAlerts: false,\n prefersDarkMode: false,\n loginTypeId: 1,\n showSurvey: false,\n preferMedia: true\n})\n\nconst resetState = fromJS({\n sid: '',\n accessToken: '',\n created: false,\n isAuthenticated: false,\n locale,\n registrationException,\n requestRunning: false,\n updating: false\n})\n\nconst reset = state => resetState.merge({\n capabilities: state.get('capabilities'),\n cookieOption: state.get('cookieOption'),\n darkMode: state.get('darkMode'),\n preferSummaries: state.get('preferSummaries'),\n globalClusterDefault: state.get('globalClusterDefault'),\n disableNotificationAlerts: state.get('disableNotificationAlerts'),\n prefersDarkMode: state.get('prefersDarkMode'),\n loginTypeId: state.get('loginTypeId'),\n showSurvey: state.get('showSurvey'),\n preferMedia: state.get('preferMedia')\n})\n\nexport default handleActions({\n [Actions.setUser]: (state, { payload: user }) => {\n const newUser = fromJS(user)\n .update('capabilities', caps => caps.reduce(\n (acc, value, key) => acc.set(decamelize(key).toUpperCase(), value),\n fromJS({})\n ))\n .set('isAuthenticated', true)\n\n return state.merge(newUser)\n },\n\n [Actions.setCookieOption]: (state, { payload: { cookieOption } }) => state.set('cookieOption', cookieOption),\n\n [Actions.registerUserRequestSuccess]: (state, { payload: response }) => {\n if (response.statusCode === 201) {\n return state.set('created', true)\n }\n\n return state.merge({ registrationException: response, requestRunning: false })\n },\n [Actions.registerUserRequestError]: (state, { payload: response }) => state.set('registrationException', response),\n\n [Actions.setDarkMode]: (state, { payload }) => state.set('darkMode', payload),\n [Actions.setPrefersDarkMode]: (state, { payload }) => state.set('prefersDarkMode', payload),\n\n [Actions.setField]: (state, { payload: { field, value } }) => state.set(field, value),\n\n [Actions.reset]: reset,\n\n [SurveyActions.submitSurveySuccess]: state => state.set('showSurvey', false),\n\n [Actions.updateUserRequestStart]: state => state.set('updating', true),\n [Actions.updateUserRequestSuccess]: state => state.set('updating', false),\n [Actions.updateUserRequestError]: state => state.set('updating', false),\n\n [AppActions.loginRequestError]: reset,\n [AppActions.logoutRequestStart]: state => state.set('isAuthenticated', false),\n [AppActions.logoutRequestSuccess]: reset\n}, initialState)\n","/* global window */\nimport { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport { mergeDeepKeepLists } from 'utils/immutable'\nimport { parse } from 'query-string-es5'\n\nimport * as Actions from 'actions/whitelabel'\n\nimport masterConfig from 'static/master_config'\nimport imageLinks from 'static/image_links'\n\nimport bffConfig from '../../config/bff.json'\n\nconst { theme } = parse(window.location.hash.split('?')[1] || '')\n\nexport const initialState = fromJS({\n emailAddress: 'customerservice@pressrelations.de',\n logo: imageLinks.NRX_LOGO_TRANSPARENT,\n emailLogo: imageLinks.NRX_LOGO_COLOR,\n title: 'NRX - driven by data.',\n favicon: '',\n hasMyNews: false,\n emotionals: null,\n theme: theme || 'nrx',\n progressLetters: ['N', 'R', 'X'],\n loginTypes: [\n 'default',\n 'azure'\n ],\n colors: {\n primary: masterConfig.getIn(['theme', 'nrx', 'colors', 'primary']),\n accent: masterConfig.getIn(['theme', 'nrx', 'colors', 'accent'])\n },\n sso: {\n azure: {\n clientId: '13b6988c-70ec-44a2-b981-810e4ba68a31',\n authority: 'https://login.microsoftonline.com/common'\n }\n },\n loginLinks: {\n termsAndConditions: null,\n legalNotice: null,\n privacy: null,\n homepage: {\n name: null,\n link: null\n }\n },\n bffUrl: bffConfig\n})\n\nexport default handleActions({\n [Actions.whitelabelRequestSuccess]: (state, { payload }) => mergeDeepKeepLists(state, fromJS(payload))\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_dashboard'\nimport * as UserActions from 'actions/user'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n id: null,\n timezone: 'Europe/Berlin',\n locale: 'en',\n urlName: '',\n baseUrl: '',\n saving: false,\n autoReload: false,\n darkMode: false,\n autoScroll: false,\n hideShareMenu: false,\n hideFooter: false,\n checkingUrlName: false,\n urlNameAvailable: true,\n showDialog: false,\n fetchRequestRunning: false,\n disableCookies: false,\n searchProfileGroupId: null,\n headerLogoLeftUrl: null,\n headerLogoLeftLink: null,\n headerLogoRightUrl: null,\n headerLogoRightLink: null,\n headerTitle: null,\n headerSubtitle: null,\n headerBackgroundColor: null,\n uploadedHeaderLogoLeft: null,\n uploadedHeaderLogoRight: null\n})\n\nexport default handleActions({\n [Actions.setSavedDashboardValue]: (state, { payload: { key, value } }) => state.set(key, value),\n\n [Actions.saveSavedDashboardStart]: state => state.set('saving', true),\n [Actions.saveSavedDashboardSuccess]: (state, { payload }) => state.set('saving', false).merge(fromJS(payload)),\n [Actions.saveSavedDashboardError]: state => state.set('saving', false),\n\n [Actions.deleteSavedDashboardStart]: state => state.set('saving', true),\n [Actions.deleteSavedDashboardSuccess]: state => initialState.merge({\n locale: state.get('locale'),\n showDialog: state.get('showDialog')\n }),\n [Actions.deleteSavedDashboardError]: state => state.set('saving', false),\n\n [Actions.fetchSavedDashboardStart]: state => state.set('fetchRequestRunning', true),\n [Actions.fetchSavedDashboardSuccess]: (state, { payload: { _data, ...payload } }) => (\n state.merge(fromJS(payload)).set('fetchRequestRunning', false)\n ),\n [Actions.fetchSavedDashboardError]: state => state.set('fetchRequestRunning', false),\n\n [Actions.fetchSavedDashboardInfoSuccess]: (state, { payload }) => state.merge(fromJS(payload)),\n\n [Actions.checkUrlNameStart]: state => state.set('checkingUrlName', true),\n [Actions.checkUrlNameSuccess]: (state, { payload: { available } }) => state.merge({\n checkingUrlName: false,\n urlNameAvailable: available\n }),\n [Actions.checkUrlNameError]: state => state.set('checkingUrlName', false),\n\n [Actions.showSavedDashboardDialog]: state => state.set('showDialog', true),\n [Actions.hideSavedDashboardDialog]: state => state.set('showDialog', false),\n\n [Actions.startAutoReload]: state => state.set('autoReload', true),\n\n [UserActions.setUser]: (state, { payload: { languageShort } }) => state.set('locale', languageShort),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_dashboard'\nimport * as AppActions from 'actions/app'\nimport { sortCharts } from 'utils/charts'\n\nexport const initialState = null\n\nexport default handleActions({\n [Actions.fetchSavedDashboardSuccess]: (state, { payload: { data } }) => sortCharts(fromJS(data)),\n [Actions.fetchSavedDashboardError]: () => fromJS({ error: 'not_found' }),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_charts'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n saving: false,\n showDialog: false\n})\n\nexport default handleActions({\n [Actions.updateSavedChartStart]: state => state.set('saving', true),\n [Actions.updateSavedChartSuccess]: state => state.set('saving', false),\n [Actions.updateSavedChartError]: state => state.set('saving', false),\n\n [Actions.showDialog]: state => state.set('showDialog', true),\n [Actions.hideDialog]: state => state.set('showDialog', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_charts'\nimport * as AppActions from 'actions/app'\nimport * as ConfigActions from 'actions/config'\n\nexport const initialState = fromJS([])\n\nconst setLoading = (state, id, loading) => state.map(savedChart => {\n if (savedChart.get('id') === id || id === null) {\n return savedChart.setIn(['chart', 'loading'], loading)\n }\n\n return savedChart\n})\n\nexport default handleActions({\n [Actions.updateSavedChartSuccess]: (state, { payload: result }) => state.map(savedChart => {\n if (savedChart.get('id') === result.id) {\n return fromJS(result)\n }\n\n return savedChart\n }),\n\n [Actions.fetchSavedChartStart]: (state, { payload: { id } }) => setLoading(state, id, true),\n [Actions.fetchSavedChartSuccess]: state => setLoading(state, null, false),\n [Actions.fetchSavedChartError]: state => setLoading(state, null, false),\n\n [Actions.createSavedChartSuccess]: (state, { payload: result }) => state.push(fromJS(result)),\n\n [combineActions(\n Actions.deleteSavedChartSuccess,\n Actions.discardSavedChartSuccess\n )]: (state, { payload: id }) => state.filter(s => s.get('id') !== id),\n\n [ConfigActions.configRequestSuccess]: (state, { payload: { savedCharts } }) => fromJS(savedCharts),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_charts'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n loading: false\n})\n\nexport default handleActions({\n [Actions.fetchSavedChartStart]: state => state.set('loading', true),\n [Actions.fetchSavedChartSuccess]: state => state.set('loading', false),\n [Actions.fetchSavedChartError]: state => state.set('loading', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/saved_charts'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({})\n\nexport default handleActions({\n [Actions.fetchSavedChartSuccess]: (state, { payload: savedChart }) => fromJS(savedChart),\n [Actions.fetchSavedChartError]: () => fromJS({ chart: { chartError: { message: 'not found' } } }),\n\n [Actions.createSavedChartSuccess]: (state, { payload: savedChart }) => fromJS(savedChart),\n\n [combineActions(\n AppActions.resetState,\n Actions.fetchSavedChartStart,\n Actions.createSavedChartStart\n )]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport chart from './chart'\n\nexport default combineReducers({\n ui,\n data,\n chart\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport * as Actions from 'actions/darknet'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n searchQuery: null,\n requestRunning: false,\n sortBy: 'crawlDate',\n sortDirection: 'desc',\n view: 'statistics',\n showAdvancedSearch: false,\n activeFiltersCollapsed: true,\n scoreQueryDialogOpen: false,\n searchQueryDialogOpen: false,\n editForm: false,\n loadingMore: false\n})\n\nexport default handleActions({\n [Actions.searchRequestStart]: state => state.set('requestRunning', true),\n [Actions.searchRequestSuccess]: state => state.set('requestRunning', false),\n [Actions.searchRequestError]: state => state.set('requestRunning', false),\n\n [Actions.deleteQueryRequestStart]: state => state.set('requestRunning', true),\n [Actions.deleteQueryRequestSuccess]: state => state.set('requestRunning', false),\n [Actions.deleteQueryRequestError]: state => state.set('requestRunning', false),\n\n [Actions.uiOnSortByChange]: (state, { payload }) => state.set('sortBy', payload),\n [Actions.uiOnSortDirectionChange]: (state, { payload }) => state.set('sortDirection', payload),\n [Actions.changeDarknetView]: (state, { payload }) => state.set('view', payload),\n\n [Actions.toggleAdvancedSearch]: state => state.set('showAdvancedSearch', !state.get('showAdvancedSearch')),\n\n [Actions.closeScoreQueryDialog]: state => state.set('scoreQueryDialogOpen', false),\n [Actions.closeSearchQueryDialog]: state => state.set('searchQueryDialogOpen', false),\n\n [Actions.openScoreQueryDialog]: state => state.set('scoreQueryDialogOpen', true),\n [Actions.openSearchQueryDialog]: state => state.set('searchQueryDialogOpen', true),\n\n [Actions.deactivateQueryRequestStart]: state => state.set('requestRunning', true),\n [Actions.activateQueryRequestStart]: state => state.set('requestRunning', true),\n [Actions.saveScoreQueryRequestStart]: state => state.set('requestRunning', true),\n [Actions.saveScoreQueryRequestError]: state => state.set('requestRunning', false),\n [Actions.saveSearchQueryRequestStart]: state => state.set('requestRunning', true),\n [Actions.saveSearchQueryRequestError]: state => state.set('requestRunning', false),\n [Actions.fetchAllQueriesSuccess]: state => state.set('requestRunning', false),\n [Actions.loadMoreDarknetEntriesStart]: state => state.set('loadingMore', true),\n [Actions.loadMoreDarknetEntriesSuccess]: state => state.set('loadingMore', false),\n [Actions.loadMoreDarknetEntriesError]: state => state.set('loadingMore', false),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import moment from 'moment'\nimport { fromJS } from 'immutable'\nimport {\n darknetChartsConfigs,\n DarknetCharts,\n docCountSum,\n sortByDocCount,\n oneDayRange\n} from 'utils/darknet'\nimport { capitalize } from 'utils/string'\n\nconst round3 = number => Math.round(number * 1e3) / 1e3\nconst defaultIterator = n => (n.pairs ? {\n name: n.name ? capitalize(n.name) : n.key,\n id: n.key,\n pairs: n.pairs,\n count: n.docCount,\n stats: { buzz: n.docCount }\n} : {\n name: n.name ? capitalize(n.name) : n.key,\n id: n.key,\n count: n.docCount,\n stats: { buzz: n.docCount }\n})\n\nconst defaultTimelineElement = d => ({\n range: oneDayRange(d.keyAsString),\n name: moment(d.keyAsString).format('DD. MMM'),\n interval: 'day',\n id: d.key,\n count: d.docCount\n})\n\nconst defaultRectangleData = d => ({\n current: d.current,\n previous: d.previous\n})\n\nconst formatNetworksChartData = data => data.map(defaultIterator)\nconst formatLanguagesChartData = data => {\n const sum = docCountSum(data)\n const byLowerBound = d => d.docCount > ((0.33 / 100) * sum)\n const filteredData = data.filter(byLowerBound)\n\n const sortedData = sortByDocCount(filteredData)\n\n let resultData = sortedData\n\n if (sortedData.length > 6) {\n const visibleData = sortedData.slice(0, 6)\n const hiddenData = sortedData.slice(6)\n\n const docCount = docCountSum(hiddenData)\n visibleData.push({\n key: 'language_other',\n pairs: hiddenData.map(hd => ({\n name: capitalize(hd.name),\n key: hd.key\n })),\n docCount\n })\n\n resultData = visibleData\n }\n\n return resultData.map(defaultIterator)\n}\n\nconst formatAvgHackishnessNetworksChartData = data => (\n data.map(d => ({\n name: d.key,\n id: d.key,\n count: d.hackishness.value,\n stats: {\n buzz: Math.round(round3(d.hackishness.value) * 100)\n }\n }))\n)\n\nconst formatTotalChartData = data => defaultRectangleData(data)\n\nconst formatMentionsTimelineChartData = data => data.map(d => ({\n ...defaultTimelineElement(d),\n stats: {\n mentions: [\n {\n count: d.docCount,\n name: 'mentions',\n id: 'mentions',\n stats: {\n buzz: d.docCount\n }\n }\n ],\n buzz: d.docCount\n }\n}))\n\nconst formatNetworksTimelineChartData = data => (\n data.map(d => ({\n ...defaultTimelineElement(d),\n stats: {\n buzz: d.docCount,\n networks: d.networks.buckets.map(n => ({\n count: n.docCount,\n name: n.key,\n id: n.key,\n stats: {\n buzz: n.docCount\n }\n }))\n }\n }))\n)\n\nconst formatSearchQueriesTimelineChartData = data => (\n data.map(d => ({\n ...defaultTimelineElement(d),\n stats: {\n buzz: d.docCount,\n searchQueries: d.searchQueries.buckets.map(n => ({\n count: n.docCount,\n name: n.name,\n id: n.key,\n stats: {\n buzz: n.docCount\n }\n }))\n }\n }))\n)\n\nconst formatAvgHackishnessChartData = data => defaultRectangleData({\n current: Math.round(data.current * 100),\n previous: Math.round(data.previous * 100)\n})\n\nconst formatAvgHackishnessTimelineChartData = data => (\n data.map(d => ({\n ...defaultTimelineElement(d),\n count: round3(d.hackishness.value),\n stats: {\n buzz: round3(d.hackishness.value) * 100,\n hackishness: [{\n name: 'hackishness',\n count: round3(d.hackishness.value),\n id: 'hackishness',\n stats: {\n buzz: round3(d.hackishness.value) * 100\n }\n }]\n }\n }))\n)\n\nconst formatScoreResultTimelineChartData = data => (\n data.map(d => ({\n ...defaultTimelineElement({ ...d[0], key: d[0].date, keyAsString: d[0].date }),\n count: round3(d[0].score),\n stats: {\n buzz: round3(d[0].score),\n queries: d.map(q => ({\n name: q.scoreQueryName,\n id: q.scoreQueryName,\n count: round3(q.score),\n stats: {\n buzz: round3(q.score)\n }\n }))\n }\n }))\n)\n\nexport const getChartData = (chartId, rawData) => {\n let data\n\n switch (chartId) {\n case DarknetCharts.LANGUAGES: data = formatLanguagesChartData(rawData); break\n case DarknetCharts.NETWORKS: data = formatNetworksChartData(rawData); break\n case DarknetCharts.HACKISHNESS_NETWORKS: data = formatAvgHackishnessNetworksChartData(rawData); break\n case DarknetCharts.MENTIONS_TOTAL: data = formatTotalChartData(rawData); break\n case DarknetCharts.MENTIONS_TIMELINE: data = formatMentionsTimelineChartData(rawData); break\n case DarknetCharts.NETWORKS_TIMELINE: data = formatNetworksTimelineChartData(rawData); break\n case DarknetCharts.HACKISHNESS_TOTAL: data = formatAvgHackishnessChartData(rawData); break\n case DarknetCharts.HACKISHNESS_TIMELINE: data = formatAvgHackishnessTimelineChartData(rawData); break\n case DarknetCharts.SCORE_RESULT_TIMELINE: data = formatScoreResultTimelineChartData(rawData); break\n case DarknetCharts.SEARCH_QUERIES_TIMELINE: data = formatSearchQueriesTimelineChartData(rawData); break\n case DarknetCharts.EXTERNAL_SCORE_CHART: data = formatScoreResultTimelineChartData(rawData); break\n default: data = null\n }\n\n return darknetChartsConfigs.get(chartId).merge(fromJS({ data }))\n}\n","import { handleActions } from 'redux-actions'\nimport moment from 'moment-timezone'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/darknet'\nimport * as AppActions from 'actions/app'\n\nimport { getChartData } from 'utils/darknetCharts'\nimport { DarknetCharts } from 'utils/darknet'\n\nexport const initialState = fromJS({\n hits: [],\n stats: {\n total: 0,\n avgHackishness: 0\n },\n previous: {\n total: 0,\n avgHackishness: 0\n },\n scores: [],\n charts: {\n scores: [],\n search: []\n }\n})\n\nconst chartsFromStats = (stats, previous) => {\n const total = getChartData(DarknetCharts.MENTIONS_TOTAL, { current: stats.total, previous: previous.total })\n const networks = getChartData(DarknetCharts.NETWORKS, stats.networks)\n const avgHackishness = getChartData(DarknetCharts.HACKISHNESS_TOTAL, { current: stats.avgHackishness, previous: previous.avgHackishness })\n const avgHackishnessTimeline = getChartData(DarknetCharts.HACKISHNESS_TIMELINE, stats.timeline)\n const totalTimeline = getChartData(DarknetCharts.MENTIONS_TIMELINE, stats.timeline)\n const avgHackishnessNetworks = getChartData(DarknetCharts.HACKISHNESS_NETWORKS, stats.networks)\n const languages = getChartData(DarknetCharts.LANGUAGES, stats.languages)\n const networksTimeline = getChartData(DarknetCharts.NETWORKS_TIMELINE, stats.timeline)\n const searchQueriesTimeline = getChartData(DarknetCharts.SEARCH_QUERIES_TIMELINE, stats.timeline)\n\n return [\n avgHackishness,\n avgHackishnessNetworks,\n avgHackishnessTimeline,\n total,\n totalTimeline,\n networks,\n networksTimeline,\n searchQueriesTimeline,\n languages\n ]\n}\n\nconst chartsFromScores = (scores, demoRequest) => {\n const groupedScores = fromJS(scores)\n .map(el => el.set('day', moment(el.get('date')).format('DD. MMM')))\n .groupBy(x => x.get('day'))\n .valueSeq()\n .sortBy(s => s.get('date'))\n\n if (demoRequest) {\n return [getChartData(DarknetCharts.EXTERNAL_SCORE_CHART, groupedScores.toJS())]\n }\n\n return [getChartData(DarknetCharts.SCORE_RESULT_TIMELINE, groupedScores.toJS())]\n}\n\nexport default handleActions({\n [Actions.searchRequestSuccess]: (state, { payload: { stats, data, previous } }) => state\n .set('hits', fromJS(data))\n .set('stats', fromJS(stats))\n .set('previous', fromJS(previous))\n .setIn(['charts', 'search'], fromJS(chartsFromStats(stats, previous))),\n\n [Actions.scoresRequestSuccess]: (state, { payload: { scores, demoRequest } }) => {\n const scoresWithName = scores.data.map(d => ({ ...d, scoreQueryName: d.darkowlScoreQuery.name }))\n\n return state\n .set('scores', fromJS(scoresWithName))\n .setIn(['charts', 'scores'], fromJS(chartsFromScores(scoresWithName, demoRequest)))\n },\n\n [Actions.loadMoreDarknetEntriesSuccess]: (state, { payload: { data } }) => {\n const currentIds = state.get('hits').map(h => h.get('id'))\n\n return state\n .update('hits', hits => hits.concat(fromJS(data).filter(el => !currentIds.contains(el.get('id')))))\n },\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, List } from 'immutable'\nimport * as Actions from 'actions/darknet'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n networks: [],\n languages: [],\n searchQueries: [],\n darknetSearchQueries: [],\n minHackishness: 0\n})\n\nconst prefix = field => {\n if (field === 'networks') {\n return 'Network'\n }\n\n return ''\n}\nconst mapSelectedItem = (item, field) => (fromJS(item).merge({\n id: item.id,\n label: item.label || item.name,\n prefix: prefix(field),\n field\n}))\n\nconst mapSelectedItems = (items, state, field) => {\n const currentFilters = state.get(field, fromJS([]))\n\n // Do not replace existing filters to keep flags like inverted\n return fromJS(items.map(item => {\n const found = currentFilters.find(f => f.get('id') === item.id)\n\n return found || mapSelectedItem(item, field)\n }))\n}\n\nexport default handleActions({\n [Actions.addSelectedFilter]: (state, { payload: { filterType, value, name } }) => (\n state.update(filterType, oldValue => (\n oldValue\n .concat(mapSelectedItems([{ id: value, name: name || value }], state, filterType))\n .groupBy(f => f.get('id'))\n .map(f => f.first())\n .toList()\n ))\n ),\n [Actions.setSelectedFilters]: (state, { payload }) => {\n const {\n networks,\n languages,\n searchQueries,\n minHackishness\n } = payload\n\n return state.merge({\n networks: mapSelectedItems(networks, state, 'networks'),\n languages: mapSelectedItems(languages, state, 'languages'),\n searchQueries: mapSelectedItems(searchQueries, state, 'searchQueries'),\n minHackishness\n })\n },\n [Actions.addDarknetSearchQuery]: (state, { payload: { query } }) => (\n state.update('darknetSearchQueries', queries => queries.push(fromJS({\n label: query,\n value: query,\n field: 'darknetSearchQueries'\n })))\n ),\n [Actions.removeFilter]: (state, { payload: { field, index } }) => {\n if (List.isList(state.get(field))) {\n return state.update(field, list => list.delete(index))\n }\n\n // If field is a number\n return state.set(field, 0)\n },\n [Actions.invertFilter]: (state, { payload: { field, index } }) => {\n if (List.isList(state.get(field))) {\n return state.updateIn([field, index, 'inverted'], inverted => !inverted)\n }\n\n return state\n },\n [Actions.updateFilter]: (state, { payload: { filter, index } }) => {\n if (List.isList(state.get(filter.get('field')))) {\n return state.setIn([filter.get('field'), index], filter.set('updated', true))\n }\n\n return state\n },\n [Actions.resetFilters]: state => (\n state.merge(initialState)\n ),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport * as Actions from 'actions/darknet'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n formData: {\n id: null,\n name: '',\n webDomains: [],\n emailDomains: []\n }\n})\n\nexport default handleActions({\n [Actions.updateScoreQueryFormData]: (state, { payload }) => (\n state.update('formData', oldValue => oldValue.merge(payload))\n ),\n [Actions.resetScoreQueryFormData]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport * as Actions from 'actions/darknet'\nimport * as AppActions from 'actions/app'\n\nimport { Networks } from 'static/constants'\n\nexport const initialState = fromJS({\n formData: {\n id: null,\n name: '',\n searchQuery: '',\n emails: [],\n emailDomains: [],\n networks: Object.assign({}, ...Networks.map(el => ({ [el.id]: false }))),\n minHackishness: 0\n },\n testSearchQueryRunning: false,\n testSearchQueryDisabled: false,\n testResult: null\n})\n\nexport default handleActions({\n [Actions.updateSearchQueryFormData]: (state, { payload }) => (\n state.update('formData', oldValue => (\n oldValue.merge(payload)\n ))\n ),\n [Actions.testSearchQueryStart]: state => state.set('testSearchQueryRunning', true),\n [Actions.testSearchQuerySuccess]: state => (\n state.merge({\n testSearchQueryRunning: false,\n testResult: null,\n testSearchQueryDisabled: false\n })\n ),\n [Actions.testSearchQueryError]: state => (\n state.merge({\n testSearchQueryRunning: false,\n testResult: fromJS({ success: false, message: 'Error! Invalid Search Query' }),\n testSearchQueryDisabled: false\n })\n ),\n [Actions.setSearchQueryFormTestResult]: (state, { payload }) => (\n state.merge({\n testResult: fromJS(payload),\n testSearchQueryRunning: false,\n testSearchQueryDisabled: true\n })\n ),\n [Actions.resetSearchQueryFormData]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport filter from './filter'\nimport scoreQueryForm from './score_query_form'\nimport searchQueryForm from './search_query_form'\n\nexport default combineReducers({\n ui,\n data,\n filter,\n scoreQueryForm,\n searchQueryForm\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport * as Actions from 'actions/personal_settings'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n previewUrl: '',\n uploadedPhoto: null\n})\n\nexport default handleActions({\n [Actions.uiSetPreviewUrl]: (state, { payload }) => state.set('previewUrl', payload),\n [Actions.uiSetUserImage]: (state, { payload }) => state.set('uploadedPhoto', payload),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\n\nexport default combineReducers({\n ui\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\n\nconst queryTypeLabelMapping = {\n content_plain_text: 'search_for_content_plain_text',\n content_title: 'search_for_content_title',\n campaign_name: 'search_for_campaign_name'\n}\n\nexport const initialState = fromJS({\n activeFiltersCollapsed: true,\n showNewContentDialog: false,\n newContentDialogSocialOnly: false,\n showOldEditContentDialog: false,\n showEditContentDialog: false,\n showViewContentDialog: false,\n showDeleteDialog: false,\n showBlockedContentEditDialog: false,\n showNewCampaignDialog: false,\n showScheduleDialog: false,\n showOldScheduleDialog: false,\n showPlanDialog: false,\n showSaveTemplateDialog: false,\n showTestMailDialog: false,\n showContentNotesDialog: false,\n showRecipientsClearAllConfirmDialog: false,\n newDialogView: 'create_content',\n emailEditorLoading: false,\n campaignDropdownOptionsLoading: false,\n contactDropdownOptionsLoading: false,\n distributionListDropdownOptionsLoading: false,\n isContentLoading: false,\n contentDialogCloneMode: false,\n campaignDialogEditMode: false,\n requestRunning: false,\n deleteData: { id: 0 },\n selectedQueryType: 'content_plain_text',\n searchBarLabel: 'search_for_content_plain_text',\n searchCampaignsRunning: false,\n searchContentsRunning: false,\n uploadedImageUrl: null,\n statisticsLoading: false,\n duplicateError: false,\n mediaFilesLoading: false,\n mediaFileUploading: false,\n mediaFilesInitialFetch: false,\n editorAiMode: false,\n editorAiRequestRunning: false,\n socialMediaLinkLoading: false,\n socialMediaLinkBuildFailed: false,\n downloadEmailEventsLoading: false,\n linkedInCompanySearchResults: fromJS([]),\n contentTabView: 'all',\n contentEditTabView: null,\n contentsCampaignsTabView: 'contents',\n loadingKpiStatistics: false,\n showClosedCampaignDialog: false,\n attachmentsMediaType: 'all',\n attachmentsDeleteDialogOpen: false,\n attachmentsDeleteMediaFileId: null,\n attachmentsImagePreviewDialogOpen: false,\n attachmentsImagePreviewSrc: null,\n recipientBrowserOpen: false,\n recipientBrowserQuery: '',\n contentIsPublishable: false,\n templateConfirmDialogOpen: false,\n templatePreviewDialogOpen: false,\n templateDesign: null,\n emailEditorForceLoadDesign: false,\n showOtsWelcomeDialog: false,\n showOtsSuccessDialog: false,\n showOtsErrorDialog: false\n})\n\nexport default handleActions({\n [Actions.linkedInCompanySearchSuccess]: (state, { payload }) => state.set('linkedInCompanySearchResults', fromJS(payload)),\n [Actions.linkedInCompanySearchError]: state => state.set(\n 'linkedInCompanySearchResults',\n fromJS([{ id: 0, vanityName: 'LinkedIn API-Error', logoUrl: 'https://static.pressrelations.de/pics/remove-24x24.png' }])\n ),\n [Actions.openNewContentDialog]: (state, { payload }) => (\n state\n .set('showNewContentDialog', true)\n .set('contentDialogCloneMode', false)\n .set('newContentDialogSocialOnly', !!(payload && payload.socialOnly))\n ),\n [Actions.closeNewContentDialog]: state => (\n state\n .set('showNewContentDialog', false)\n .set('newDialogView', 'create_content')\n .set('duplicateError', false)\n ),\n [Actions.openViewContentDialog]: state => state.set('showViewContentDialog', true),\n [Actions.closeViewContentDialog]: state => state.set('showViewContentDialog', false),\n [Actions.openDeleteDialog]: (state, { payload }) => state.set('showDeleteDialog', payload),\n [Actions.closeDeleteDialog]: state => state.set('showDeleteDialog', false),\n [Actions.openBlockedContentEditDialog]: state => state.set('showBlockedContentEditDialog', true),\n [Actions.closeBlockedContentEditDialog]: state => state.set('showBlockedContentEditDialog', false),\n [Actions.openSaveTemplateDialog]: state => state.set('showSaveTemplateDialog', true),\n [Actions.closeSaveTemplateDialog]: state => state.set('showSaveTemplateDialog', false),\n [Actions.setDeleteContentData]: (state, { payload }) => state.set('deleteData', payload),\n [Actions.openCampaignForm]: state => state.set('showNewCampaignDialog', true),\n [Actions.closeCampaignForm]: state => state.set('showNewCampaignDialog', false).set('campaignDialogEditMode', false),\n [Actions.setCampaignDialogEditMode]: state => state.set('campaignDialogEditMode', true),\n [Actions.openScheduleDialog]: state => state.set('showScheduleDialog', true),\n [Actions.openOldScheduleDialog]: state => state.set('showOldScheduleDialog', true),\n [Actions.closeScheduleDialog]: state => state.set('showScheduleDialog', false),\n [Actions.closeOldScheduleDialog]: state => state.set('showOldScheduleDialog', false),\n [Actions.openPlanDialog]: state => state.set('showPlanDialog', true),\n [Actions.closePlanDialog]: state => state.set('showPlanDialog', false),\n [Actions.openTestMailDialog]: state => state.set('showTestMailDialog', true),\n [Actions.closeTestMailDialog]: state => state.set('showTestMailDialog', false),\n [Actions.changeNewContentDialogView]: (state, { payload }) => state.set('newDialogView', payload),\n [Actions.emailEditorLoadingStart]: state => state.set('emailEditorLoading', true),\n [Actions.emailEditorLoadingStop]: state => state.set('emailEditorLoading', false),\n [Actions.fetchCampaignDropdownOptionsStart]: state => state.set('campaignDropdownOptionsLoading', true),\n [Actions.fetchDistributionListDropdownOptionsStart]: state => state.set('distributionListDropdownOptionsLoading', true),\n [combineActions(\n Actions.fetchContactDropdownOptionsSuccess,\n Actions.fetchContactDropdownOptionsError\n )]: state => state.set('contactDropdownOptionsLoading', false),\n [combineActions(\n Actions.fetchDistributionListDropdownOptionsSuccess,\n Actions.fetchDistributionListDropdownOptionsError\n )]: state => state.set('distributionListDropdownOptionsLoading', false),\n [combineActions(\n Actions.fetchCampaignDropdownOptionsSuccess,\n Actions.fetchCampaignDropdownOptionsError\n )]: state => state.set('campaignDropdownOptionsLoading', false),\n [combineActions(Actions.fetchMediaFilesStart, Actions.fetchMoreMediaFilesStart)]: state => state.set('mediaFilesLoading', true),\n [combineActions(\n Actions.fetchMediaFilesSuccess,\n Actions.fetchMediaFilesError,\n Actions.fetchMoreMediaFilesSuccess,\n Actions.fetchMoreMediaFilesError\n )]: state => state.set('mediaFilesLoading', false),\n [combineActions(\n Actions.saveContentStart,\n Actions.getContentStart,\n Actions.dispatchContentRequestStart,\n Actions.createOtsDraftStart\n )]: state => state.set('isContentLoading', true),\n [combineActions(\n Actions.getContentSuccess,\n Actions.getContentError,\n Actions.dispatchContentRequestSuccess,\n Actions.dispatchContentRequestError,\n Actions.createOtsDraftSuccess,\n Actions.createOtsDraftError\n )]: state => state.set('isContentLoading', false),\n [Actions.saveContentSuccess]: state => state.set('isContentLoading', false).set('duplicateError', false),\n [Actions.saveContentError]: (state, { payload }) => {\n let dupError = false\n\n if (payload.response) {\n if (payload.response.statusCode === 409) {\n dupError = true\n }\n }\n\n return state\n .set('duplicateError', dupError)\n .set('isContentLoading', false)\n },\n [Actions.openEditContentDialog]: state => state.set('showEditContentDialog', true),\n [Actions.openOldEditContentDialog]: state => state.set('showOldEditContentDialog', true),\n [Actions.closeEditContentDialog]: state => (\n state\n .set('showEditContentDialog', false)\n .set('contentDialogCloneMode', false)\n .set('duplicateError', false)\n .set('contentEditTabView', null)\n ),\n [Actions.closeOldEditContentDialog]: state => (\n state\n .set('showOldEditContentDialog', false)\n .set('contentDialogCloneMode', false)\n .set('duplicateError', false)\n ),\n [Actions.cloneContentsFormData]: state => (\n state\n .set('contentDialogCloneMode', true)\n ),\n [combineActions(\n Actions.saveCampaignStart,\n Actions.saveContentFormlessStart\n )]: state => state.set('requestRunning', true),\n [combineActions(\n Actions.saveCampaignSuccess,\n Actions.saveCampaignError,\n Actions.saveContentFormlessSuccess,\n Actions.saveContentFormlessError\n )]: state => state.set('requestRunning', false).set('showClosedCampaignDialog', false),\n [combineActions(Actions.deleteContentStart, Actions.deleteCampaignStart)]: state => state.set('requestRunning', true),\n [combineActions(\n Actions.deleteContentSuccess,\n Actions.deleteContentError,\n Actions.deleteCampaignSuccess,\n Actions.deleteCampaignError\n )]: state => state.set('requestRunning', false),\n [combineActions(Actions.deleteContentSuccess, Actions.deleteCampaignSuccess)]: state => state.set('showDeleteDialog', false),\n\n [Actions.setSelectedQueryType]: (state, { payload }) => {\n const newState = state.set('selectedQueryType', payload)\n\n if (queryTypeLabelMapping[payload]) {\n return newState.set('searchBarLabel', queryTypeLabelMapping[payload])\n }\n\n return state\n },\n [Actions.toggleActiveFilters]: state => state.update('activeFiltersCollapsed', v => !v),\n\n [Actions.searchCampaignsStart]: state => state.set('searchCampaignsRunning', true),\n [Actions.searchContentsStart]: state => state.set('searchContentsRunning', true),\n [combineActions(\n Actions.searchCampaignsSuccess,\n Actions.searchCampaignsError\n )]: state => state.set('searchCampaignsRunning', false),\n [combineActions(\n Actions.searchContentsSuccess,\n Actions.searchContentsError\n )]: state => state.set('searchContentsRunning', false),\n\n [Actions.uploadEditorImageSuccess]: (state, { payload: { url } }) => state.set('uploadedImageUrl', url),\n [Actions.toggleEditorAiMode]: state => state.update('editorAiMode', value => !value),\n [combineActions(\n Actions.resetUploadedImageUrl,\n Actions.uploadEditorImageError\n )]: state => state.set('uploadedImageUrl', null),\n [Actions.fetchStatisticsStart]: state => state.set('statisticsLoading', true),\n [combineActions(\n Actions.fetchStatisticsSuccess,\n Actions.fetchStatisticsError\n )]: state => state.set('statisticsLoading', false),\n [Actions.fetchCalendarEventsStart]: state => state.set('requestRunning', true),\n [combineActions(\n Actions.fetchCalendarEventsSuccess,\n Actions.fetchCalendarEventsError\n )]: state => state.set('requestRunning', false),\n [Actions.uploadFacebookMediaFileStart]: state => state.set('mediaFileUploading', true),\n [combineActions(\n Actions.uploadFacebookMediaFileSuccess,\n Actions.uploadFacebookMediaFileError\n )]: state => state.set('mediaFileUploading', false),\n [Actions.editorAiRequestStart]: state => state.set('editorAiRequestRunning', true),\n [combineActions(\n Actions.editorAiRequestSuccess,\n Actions.editorAiRequestError\n )]: state => state.set('editorAiRequestRunning', false),\n [Actions.uploadLinkedInMediaFileStart]: state => state.set('mediaFileUploading', true),\n [combineActions(\n Actions.uploadLinkedInMediaFileSuccess,\n Actions.uploadLinkedInMediaFileError\n )]: state => state.set('mediaFileUploading', false),\n [Actions.setMediaFilesInitialFetch]: (state, { payload }) => state.set('mediaFilesInitialFetch', payload),\n [Actions.buildSocialMediaLinkStart]: state => state\n .set('socialMediaLinkLoading', true)\n .set('socialMediaLinkBuildFailed', false),\n [Actions.buildSocialMediaLinkLinkedInSuccess]: state => state.set('socialMediaLinkLoading', false),\n [Actions.buildSocialMediaLinkFacebookSuccess]: state => state.set('socialMediaLinkLoading', false),\n [Actions.buildSocialMediaLinkLinkedInError]: state => state\n .set('socialMediaLinkLoading', false)\n .set('socialMediaLinkBuildFailed', true),\n [Actions.buildSocialMediaLinkFacebookError]: state => state\n .set('socialMediaLinkLoading', false)\n .set('socialMediaLinkBuildFailed', true),\n [Actions.downloadEmailEventsStart]: state => state.set('downloadEmailEventsLoading', true),\n [combineActions(\n Actions.downloadEmailEventsSuccess,\n Actions.downloadEmailEventsError\n )]: state => state.set('downloadEmailEventsLoading', false),\n\n [Actions.openContentNotesDialog]: state => state.set('showContentNotesDialog', true),\n [Actions.closeContentNotesDialog]: state => state.set('showContentNotesDialog', false),\n [Actions.changeContentTabView]: (state, { payload }) => state.set('contentTabView', payload),\n [Actions.changeContentEditTabView]: (state, { payload }) => state.set('contentEditTabView', payload),\n [Actions.changeContentsCampaignsTabView]: (state, { payload }) => state.set('contentsCampaignsTabView', payload),\n [Actions.fetchKpiStatisticsStart]: state => state.set('loadingKpiStatistics', true),\n [combineActions(\n Actions.fetchKpiStatisticsSuccess,\n Actions.fetchKpiStatisticsError\n )]: state => state.set('loadingKpiStatistics', false),\n [Actions.openClosedCampaignDialog]: state => state.set('showClosedCampaignDialog', true),\n [Actions.closeClosedCampaignDialog]: state => state.set('showClosedCampaignDialog', false),\n [Actions.changeAttachmentsMediaType]: (state, { payload }) => state.set('attachmentsMediaType', payload),\n [Actions.openAttachmentsDeleteDialog]: (state, { payload }) => state\n .set('attachmentsDeleteDialogOpen', true)\n .set('attachmentsDeleteMediaFileId', payload),\n [Actions.closeAttachmentsDeleteDialog]: state => state\n .set('attachmentsDeleteDialogOpen', false)\n .set('attachmentsDeleteMediaFileId', null),\n [Actions.openAttachmentsImagePreviewDialog]: (state, { payload }) => state\n .set('attachmentsImagePreviewDialogOpen', true)\n .set('attachmentsImagePreviewSrc', payload),\n [Actions.closeAttachmentsImagePreviewDialog]: state => state\n .set('attachmentsImagePreviewDialogOpen', false)\n .set('attachmentsImagePreviewSrc', null),\n [Actions.setRecipientBrowserOpen]: (state, { payload }) => state.set('recipientBrowserOpen', payload)\n .set('recipientBrowserQuery', initialState.get('recipientBrowserQuery')),\n [Actions.setRecipientBrowserQuery]: (state, { payload }) => state.set('recipientBrowserQuery', payload),\n [Actions.setContentIsPublishable]: (state, { payload }) => state.set('contentIsPublishable', payload),\n [Actions.openTemplateConfirmDialog]: (state, { payload }) => state\n .set('templateConfirmDialogOpen', true)\n .set('templateDesign', payload),\n [Actions.closeTemplateConfirmDialog]: state => state\n .set('templateConfirmDialogOpen', false)\n .set('templateDesign', null),\n [Actions.openTemplatePreviewDialog]: (state, { payload }) => state\n .set('templatePreviewDialogOpen', true)\n .set('templateDesign', payload),\n [Actions.closeTemplatePreviewDialog]: state => state\n .set('templatePreviewDialogOpen', false)\n .set('templateDesign', null),\n [Actions.emailEditorForceLoadDesignStart]: state => state.set('emailEditorForceLoadDesign', true),\n [Actions.emailEditorForceLoadDesignStop]: state => state.set('emailEditorForceLoadDesign', false),\n [Actions.openOtsWelcomeDialog]: state => state.set('showOtsWelcomeDialog', true),\n [Actions.closeOtsWelcomeDialog]: state => state.set('showOtsWelcomeDialog', false),\n [Actions.createOtsDraftSuccess]: state => state\n .set('showOtsSuccessDialog', true)\n .set('showOtsErrorDialog', false),\n [Actions.createOtsDraftError]: (state, { payload }) => {\n if (payload.response && payload.response.statusCode === 424) {\n return state.set('showOtsErrorDialog', true).set('showOtsSuccessDialog', false)\n }\n\n return state.set('showOtsSuccessDialog', false)\n },\n [Actions.closeOtsSuccessDialog]: state => state.set('showOtsSuccessDialog', false),\n [Actions.closeOtsErrorDialog]: state => state.set('showOtsErrorDialog', false),\n [Actions.openRecipientsClearAllConfirmDialog]: state => state.set('showRecipientsClearAllConfirmDialog', true),\n [Actions.closeRecipientsClearAllConfirmDialog]: state => state.set('showRecipientsClearAllConfirmDialog', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport * as Actions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\n\nimport { ContentDeskSearchFields } from 'static/constants'\n\nconst ccdSearchFieldsMapping = {\n [ContentDeskSearchFields.CONTENT_PLAIN_TEXT]: {\n stateKeyName: 'contentSearchQueries'\n },\n [ContentDeskSearchFields.CONTENT_TITLE]: {\n stateKeyName: 'contentSearchQueries'\n },\n [ContentDeskSearchFields.CAMPAIGN_NAME]: {\n stateKeyName: 'campaignSearchQueries'\n }\n}\n\nexport const initialState = fromJS({\n campaignPage: 1,\n campaignLimit: 10,\n campaignSortBy: '',\n campaignSortOrder: '',\n contentPage: 1,\n contentLimit: 10,\n contentSortBy: '',\n contentSortOrder: '',\n contentSearchQueries: [],\n campaignSearchQueries: [],\n mediaFilesPage: 1,\n mediaFilesLimit: 10,\n campaignFilters: {\n operator: 'and',\n conditions: []\n },\n contentFilters: {\n operator: 'and',\n conditions: []\n },\n kpiStatisticsFilters: {\n type: 'all',\n dateRange: 'last_30_days'\n }\n})\n\nexport default handleActions({\n [Actions.addSearchQuery]: (state, { payload: { query, selectedQueryType } }) => (\n state.update(ccdSearchFieldsMapping[selectedQueryType].stateKeyName, queries => queries.push(fromJS({\n label: query,\n value: query,\n field: selectedQueryType\n })))),\n [Actions.removeFilter]: (state, { payload: { field, index } }) => (\n state.update(ccdSearchFieldsMapping[field].stateKeyName, list => list.delete(index))\n ),\n [Actions.invertFilter]: (state, { payload: { field, index } }) => (\n state.updateIn([ccdSearchFieldsMapping[field].stateKeyName, index, 'inverted'], inverted => !inverted)\n ),\n [Actions.updateFilter]: (state, { payload: { filter, index } }) => {\n const { stateKeyName } = ccdSearchFieldsMapping[filter.get('field')]\n\n return state.setIn([stateKeyName, index], filter.set('updated', true))\n },\n [Actions.setLimit]: (state, { payload: { key, value } }) => state.set(key, value),\n [Actions.setPage]: (state, { payload: { key, value } }) => state.set(key, value),\n [Actions.setSortBy]: (state, { payload: { type, sortBy, sortOrder } }) => {\n if (type === 'campaigns') {\n return state.merge({\n campaignSortBy: sortBy,\n campaignSortOrder: sortOrder\n })\n }\n\n if (type === 'contents') {\n return state.merge({\n contentSortBy: sortBy,\n contentSortOrder: sortOrder\n })\n }\n\n return state\n },\n [Actions.setContentFilters]: (state, { payload }) => state.set('contentFilters', fromJS(payload)),\n [Actions.setCampaignFilters]: (state, { payload }) => state.set('campaignFilters', fromJS(payload)),\n [Actions.resetFilters]: state => (\n state.merge(initialState)\n ),\n [Actions.incrementMediaFilesPage]: state => state.set('mediaFilesPage', state.get('mediaFilesPage') + 1),\n [Actions.setKpiStatisticsFilters]: (state, { payload: { key, value } }) => state.setIn(['kpiStatisticsFilters', key], value),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport camelcaseKeysDeep from 'camelcase-keys-deep'\n\nimport * as Actions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\n\nimport { linkedInPost } from 'static/linked_in_post_config'\nimport { facebookPost } from 'static/facebook_post_config'\n\nconst updateOrAddCampaignName = (allNames, campaign) => {\n if (allNames.some(e => e.get('id') === campaign.get('id'))) {\n return allNames.map(e => ((e.get('id') === campaign.get('id')) ? (\n e.set('name', campaign.get('name'))) : e))\n }\n\n return allNames.push(fromJS({ id: campaign.get('id'), name: campaign.get('name') }))\n}\n\nexport const initialState = fromJS({\n ccdCampaigns: {\n total: null,\n items: [],\n allNames: []\n },\n ccdContents: {\n total: null,\n items: []\n },\n ccdStatistics: {\n total: null,\n events: [],\n earned: {\n news: [],\n stats: {\n total: 0,\n reach: 0\n }\n }\n },\n ccdKpiStatistics: {\n email: {},\n socialMedia: {}\n },\n uploadedMediaFiles: [],\n uploadedMediaFilesTotal: null,\n uploadedMediaFilesTotalSize: 0,\n ccdAssignees: [],\n contentFormData: {\n id: null,\n title: '',\n subject: '',\n preHeader: '',\n body: '',\n linkedInPost,\n facebookPost,\n type: null,\n plannedFor: null,\n scheduledFor: null,\n ccdCampaign: null,\n recipients: [],\n editorDesign: null,\n senderMail: '',\n senderName: '',\n domain: '',\n domainRegion: '',\n ccdMediaFiles: [],\n isDirty: false,\n lockedAt: null,\n lockedBy: null,\n approvalStatus: 'draft',\n status: null,\n notes: [],\n otsContent: null\n },\n campaignFormData: {\n assignedUserId: null,\n id: null,\n name: '',\n startDate: '',\n endDate: '',\n summary: '',\n active: true\n },\n selectedContent: {},\n campaignDropdownOptions: [],\n contentDropdownOptions: [],\n contactDropdownOptions: [],\n distributionListDropdownOptions: [],\n distributionListSearchQuery: '',\n aiSelectedText: '',\n aiRequestResults: []\n})\n\nconst updateNestedContentsCampaigns = (state, contentId, campaignId, updated) => {\n let newState = state\n\n if (newState.getIn(['ccdContents', 'items']).filter(c => c.get('id') === contentId).size) {\n newState = newState\n .updateIn(['ccdContents', 'items'], contents => (\n contents.map(content => {\n if (content.get('id') === contentId) {\n return updated\n }\n\n return content\n })\n ))\n } else {\n newState = newState\n .setIn(['ccdContents', 'items'], state.getIn(['ccdContents', 'items']).unshift(updated))\n .setIn(['ccdContents', 'total'], state.getIn(['ccdContents', 'total']) + 1)\n }\n\n if (newState.getIn(['ccdCampaigns', 'items']).filter(c => c.get('id') === campaignId).size) {\n newState = newState.updateIn(['ccdCampaigns', 'items'], campaigns => (\n campaigns.map(campaign => {\n if (campaign.get('id') === campaignId) {\n if (campaign.get('ccdContents').filter(c => c.get('id') === contentId).size) {\n return campaign.update('ccdContents', contents => (\n contents.map(content => {\n if (content.get('id') === contentId) {\n return updated\n }\n\n return content\n })\n ))\n }\n\n return campaign.merge({\n ccdContentsCount: campaign.get('ccdContentsCount') + 1,\n ccdContents: campaign.get('ccdContents').unshift(updated)\n })\n }\n\n return campaign\n })\n ))\n }\n\n return newState\n}\n\nexport default handleActions({\n [Actions.fetchCampaignDropdownOptionsSuccess]: (state, { payload: { ccdCampaigns } }) => (\n state.set('campaignDropdownOptions', fromJS(ccdCampaigns))),\n [Actions.fetchContentDropdownOptionsSuccess]: (state, { payload: { ccdContents } }) => (\n state.set('contentDropdownOptions', fromJS(ccdContents))),\n [Actions.fetchContactDropdownOptionsSuccess]: (state, { payload: { contacts } }) => (\n state.set('contactDropdownOptions', fromJS(contacts))),\n [Actions.fetchDistributionListDropdownOptionsSuccess]: (state, { payload: { distributionLists } }) => (\n state.set('distributionListDropdownOptions', fromJS(distributionLists))),\n [Actions.deleteContentSuccess]: (state, { payload }) => {\n const oldContent = state.getIn(['ccdContents', 'items']).find(content => content.get('id') === payload.id)\n\n let newContentsTotal = state.getIn(['ccdContents', 'total'])\n\n if (oldContent) {\n const oldContentsTotal = state.getIn(['ccdContents', 'total'])\n newContentsTotal = oldContentsTotal ? (oldContentsTotal - 1) : oldContentsTotal\n }\n\n const newContents = state.getIn(['ccdContents', 'items']).filter(content => content.get('id') !== payload.id)\n\n const newCampaigns = state\n .getIn(['ccdCampaigns', 'items'])\n .map(campaign => {\n const newInnerContents = campaign\n .get('ccdContents')\n .filter(content => content.get('id') !== payload.id)\n const oldInnerContents = campaign\n .get('ccdContents')\n .find(content => content.get('id') === payload.id)\n\n let newInnerContentsCount = campaign.get('ccdContentsCount')\n\n if (oldInnerContents) {\n newInnerContentsCount = newInnerContentsCount === 0 ? 0 : campaign.get('ccdContentsCount') - 1\n }\n\n return campaign\n .set('ccdContents', newInnerContents)\n .set('ccdContentsCount', newInnerContentsCount)\n })\n\n return state\n .setIn(['ccdCampaigns', 'items'], newCampaigns)\n .setIn(['ccdContents', 'items'], newContents)\n .setIn(['ccdContents', 'total'], newContentsTotal)\n },\n [Actions.deleteCampaignSuccess]: (state, { payload }) => {\n const oldCampaign = state.getIn(['ccdCampaigns', 'items']).find(campaign => campaign.get('id') === payload.id)\n\n let newCampaignsTotal = state.getIn(['ccdCampaigns', 'total'])\n let newContentsTotal = state.getIn(['ccdContents', 'total'])\n\n if (oldCampaign) {\n const oldCampaignsTotal = state.getIn(['ccdCampaigns', 'total'])\n newCampaignsTotal = oldCampaignsTotal ? (oldCampaignsTotal - 1) : oldCampaignsTotal\n newContentsTotal = newContentsTotal ? newContentsTotal - oldCampaign.get('ccdContentsCount') : newContentsTotal\n }\n\n const newCampaigns = state.getIn(['ccdCampaigns', 'items']).filter(campaign => campaign.get('id') !== payload.id)\n const newContents = state.getIn(['ccdContents', 'items']).filter(content => content.get('ccdCampaign').get('id') !== payload.id)\n\n return state\n .setIn(['ccdCampaigns', 'items'], newCampaigns)\n .setIn(['ccdCampaigns', 'total'], newCampaignsTotal)\n .updateIn(['ccdCampaigns', 'allNames'], allNames => allNames.filter(e => e.get('id') !== payload.id))\n .setIn(['ccdContents', 'items'], newContents)\n .setIn(['ccdContents', 'total'], newContentsTotal)\n },\n [Actions.setAssignees]: (state, { payload }) => state.merge({ ccdAssignees: fromJS(payload) }),\n\n [Actions.setCampaigns]: (state, { payload: { total, ccdCampaigns, allNames } }) => state\n .setIn(['ccdCampaigns', 'items'], fromJS(ccdCampaigns))\n .setIn(['ccdCampaigns', 'total'], total)\n .setIn(['ccdCampaigns', 'allNames'], fromJS(allNames)),\n [Actions.resetCampaigns]: state => state.set('ccdCampaigns', initialState.get('ccdCampaigns')),\n\n // contentFormData\n [Actions.setContentFormData]: (state, { payload: { key, value } }) => (\n state\n .setIn(['contentFormData', 'isDirty'], true)\n .setIn(['contentFormData', key], value)\n ),\n [Actions.removeRecipient]: (state, { payload }) => (\n state.updateIn(['contentFormData', 'recipients'], recipients => (\n recipients.filter(recipient => recipient.get('id') !== payload)\n ))\n ),\n [Actions.updateContent]: (state, { payload }) => (\n state\n .setIn(['contentFormData', 'isDirty'], true)\n .update('contentFormData', oldValue => oldValue.merge(payload))\n ),\n [Actions.openNewContentDialog]: (state, { payload }) => (\n state.set('contentFormData', initialState.get('contentFormData').merge(payload || {}))\n ),\n [Actions.openEditContentDialog]: (state, { payload }) => (\n state\n .update('contentFormData', oldValue => oldValue.merge(payload))\n .update('selectedContent', oldValue => oldValue.merge(payload))\n ),\n [Actions.openOldEditContentDialog]: (state, { payload }) => (\n state\n .update('contentFormData', oldValue => oldValue.merge(payload))\n .update('selectedContent', oldValue => oldValue.merge(payload))\n ),\n [Actions.closeEditContentDialog]: state => (\n state\n .set('contentFormData', initialState.get('contentFormData'))\n .set('selectedContent', initialState.get('selectedContent'))\n .set('aiSelectedText', initialState.get('aiSelectedText'))\n .set('aiRequestResults', initialState.get('aiRequestResults'))\n ),\n [Actions.closeOldEditContentDialog]: state => (\n state\n .set('contentFormData', initialState.get('contentFormData'))\n .set('selectedContent', initialState.get('selectedContent'))\n .set('aiSelectedText', initialState.get('aiSelectedText'))\n .set('aiRequestResults', initialState.get('aiRequestResults'))\n ),\n [Actions.cloneContentsFormData]: (state, { payload }) => (\n state.update('contentFormData', oldValue => (oldValue.merge(payload)))\n ),\n\n [Actions.openContentNotesDialog]: (state, { payload }) => state.update('contentFormData', oldValue => (oldValue.merge(payload))),\n [Actions.closeContentNotesDialog]: state => state.set('contentFormData', initialState.get('contentFormData')),\n\n // selectedContent\n [combineActions(\n Actions.lockContentSuccess,\n Actions.unlockContentSuccess\n )]: (state, { payload }) => state.set('selectedContent', payload),\n [Actions.closeViewContentDialog]: state => state.set('selectedContent', initialState.get('selectedContent')),\n\n // ccdCampaigns\n [combineActions(\n Actions.saveCampaignSuccess,\n Actions.saveCampaignFormlessSuccess\n )]: (state, { payload }) => {\n const campaignId = payload.id\n const updated = fromJS(payload)\n const allNames = updateOrAddCampaignName(state.getIn(['ccdCampaigns', 'allNames']), updated)\n\n if (state.getIn(['ccdCampaigns', 'items']).filter(c => c.get('id') === campaignId).size) {\n return state.updateIn(['ccdCampaigns', 'items'], campaigns => (\n campaigns.map(campaign => {\n if (campaign.get('id') === campaignId) {\n return updated\n }\n\n return campaign\n })\n )).setIn(['ccdCampaigns', 'allNames'], allNames)\n }\n\n return state\n .setIn(['ccdCampaigns', 'items'], state.getIn(['ccdCampaigns', 'items']).unshift(updated))\n .setIn(['ccdCampaigns', 'total'], state.getIn(['ccdCampaigns', 'total']) + 1)\n .setIn(['ccdCampaigns', 'allNames'], allNames)\n },\n\n // ccdContents\n [Actions.setContents]: (state, { payload: { total, ccdContents } }) => state\n .setIn(['ccdContents', 'items'], fromJS(ccdContents))\n .setIn(['ccdContents', 'total'], total),\n [Actions.setUpdatedContents]: (state, { payload }) => {\n let newState = state\n\n payload.forEach(p => {\n const contentId = p.id\n const updated = fromJS(p)\n\n if (newState.getIn(['ccdContents', 'items']).filter(c => c.get('id') === contentId).size) {\n newState = newState\n .updateIn(['ccdContents', 'items'], contents => (\n contents.map(content => {\n if (content.get('id') === contentId) {\n return updated\n }\n\n return content\n })\n ))\n }\n })\n\n return newState\n },\n [Actions.setUpdatedCampaignsContents]: (state, { payload }) => {\n let newState = state\n\n payload.forEach(p => {\n const contentId = p.id\n const updated = fromJS(p)\n\n newState = newState.updateIn(['ccdCampaigns', 'items'], campaigns => (\n campaigns.map(campaign => (\n campaign.updateIn(['ccdContents'], contents => (\n contents.map(content => (\n content.get('id') === contentId ? updated : content\n ))\n ))\n ))\n ))\n })\n\n return newState\n },\n [combineActions(\n Actions.saveContentSuccess,\n Actions.saveDeletedExternallyForContentSuccess,\n Actions.saveContentFormlessSuccess\n )]: (state, { payload }) => {\n const contentId = payload.id\n const campaignId = payload.ccdCampaign.id\n const updated = fromJS(payload)\n const newState = updateNestedContentsCampaigns(state, contentId, campaignId, updated)\n\n return newState\n .setIn(['contentFormData', 'id'], contentId)\n .setIn(['contentFormData', 'isDirty'], false)\n .setIn(['contentFormData', 'title'], updated.get('title') || newState.getIn(['contentFormData', 'title']))\n .setIn(['contentFormData', 'approvalStatus'], updated.get('approvalStatus') || newState.getIn(['contentFormData', 'approvalStatus']))\n .set('selectedContent', updated)\n },\n [combineActions(\n Actions.createOtsDraftSuccess,\n Actions.getContentSuccess\n )]: (state, { payload }) => {\n const contentId = payload.id\n const campaignId = payload.ccdCampaign.id\n const updated = fromJS(payload)\n const newState = updateNestedContentsCampaigns(state, contentId, campaignId, updated)\n\n return newState.set('selectedContent', updated)\n },\n [Actions.resetContents]: state => state.set('ccdContents', initialState.get('ccdContents')),\n\n // campaignFormData\n [Actions.updateCampaignFormData]: (state, { payload }) => (\n state.update('campaignFormData', oldValue => (oldValue.merge(payload)))\n ),\n [Actions.openCampaignForm]: (state, { payload }) => (\n payload ? state.set('campaignFormData', initialState.get('campaignFormData').merge(payload)) : state\n ),\n [Actions.resetCampaignForm]: state => state.set('campaignFormData', initialState.get('campaignFormData')),\n\n // ccdStatistics\n [Actions.fetchStatisticsSuccess]: (state, { payload: { total, events, earned, owned } }) => (\n state\n .setIn(['ccdStatistics', 'events'], fromJS(events || []))\n .setIn(['ccdStatistics', 'total'], total)\n .setIn(['ccdStatistics', 'earned'], fromJS(earned))\n .setIn(['ccdStatistics', 'owned'], fromJS(owned || {}))\n ),\n [Actions.resetEvents]: state => state.set('ccdStatistics', initialState.get('ccdStatistics')),\n [Actions.fetchMediaFilesSuccess]: (state, { payload: { mediaFiles, total } }) => (\n state.set('uploadedMediaFiles', fromJS(mediaFiles)).set('uploadedMediaFilesTotal', total)\n ),\n [Actions.appendMediaFiles]: (state, { payload: { mediaFiles, total } }) => (\n state.set('uploadedMediaFiles', state.get('uploadedMediaFiles').concat(fromJS(mediaFiles))).set('uploadedMediaFilesTotal', total)\n ),\n [combineActions(\n Actions.uploadLinkedInMediaFileSuccess,\n Actions.uploadFacebookMediaFileSuccess,\n Actions.uploadEditorImageSuccess\n )]: (state, { payload }) => {\n const files = state.get('uploadedMediaFiles').unshift(fromJS(camelcaseKeysDeep(payload)))\n const uniqueFiles = files.groupBy(file => file.get('id')).map(group => group.first()).toList()\n\n return state.set('uploadedMediaFiles', uniqueFiles)\n },\n [Actions.deleteMediaFileSuccess]: (state, { payload: { ccdMediaFile, total } }) => {\n const updatedMediaFiles = state.get('uploadedMediaFiles').filter(mediaFile => mediaFile.get('id') !== ccdMediaFile.id)\n\n return state\n .set('uploadedMediaFiles', updatedMediaFiles)\n .set('uploadedMediaFilesTotal', total)\n },\n [Actions.editorAiRequestSuccess]: (state, { payload }) => (\n state.set('aiRequestResults', state.get('aiRequestResults').unshift(fromJS(payload)))\n ),\n [Actions.setAiSelectedText]: (state, { payload }) => (\n state.set('aiSelectedText', payload)\n ),\n [Actions.resetSocialMediaPostsAndUploads]: state => (\n state\n .setIn(['contentFormData', 'ccdMediaFiles'], fromJS([]))\n .setIn(['contentFormData', 'linkedInPost'], null)\n .setIn(['contentFormData', 'facebookPost'], null)\n ),\n [Actions.setUploadedMediaFilesTotalSize]: (state, { payload }) => state.set('uploadedMediaFilesTotalSize', payload),\n [Actions.buildSocialMediaLinkLinkedInSuccess]: (state, { payload }) => {\n const { title, url, description, id, host, imageUrl } = payload\n const content = fromJS({\n article: {\n title: title || '',\n source: url,\n description: description || '',\n id,\n host,\n imageUrl: imageUrl || ''\n }\n })\n\n return state\n .setIn(['contentFormData', 'linkedInPost', 'type'], 'link')\n .setIn(['contentFormData', 'linkedInPost', 'content'], content)\n },\n [Actions.buildSocialMediaLinkFacebookSuccess]: (state, { payload }) => {\n const { title, url, description, host, image } = payload\n\n const linkMetadata = fromJS(\n {\n title,\n source: url,\n description,\n host,\n imageUrl: image\n }\n )\n\n return state\n .setIn(['contentFormData', 'facebookPost', 'link'], url)\n .setIn(['contentFormData', 'facebookPost', 'linkMetadata'], linkMetadata)\n },\n [Actions.buildSocialMediaLinkLinkedInError]: (state, { payload }) => {\n const rawUrl = payload.url\n const url = new URL(rawUrl)\n\n const content = fromJS({\n article: {\n title: url.hostname,\n source: rawUrl,\n host: url.hostname\n }\n })\n\n return state\n .setIn(['contentFormData', 'linkedInPost', 'type'], 'link')\n .setIn(['contentFormData', 'linkedInPost', 'content'], content)\n },\n [Actions.buildSocialMediaLinkFacebookError]: (state, { payload }) => {\n const rawUrl = payload.url\n const url = new URL(rawUrl)\n\n const linkMetadata = fromJS(\n {\n title: url.hostname,\n source: rawUrl,\n host: url.hostname\n }\n )\n\n return state\n .setIn(['contentFormData', 'facebookPost', 'link'], rawUrl)\n .setIn(['contentFormData', 'facebookPost', 'linkMetadata'], linkMetadata)\n },\n [Actions.fetchKpiStatisticsSuccess]: (state, { payload }) => (\n state.set('ccdKpiStatistics', fromJS(payload))\n ),\n [Actions.setDistributionListSearchQuery]: (state, { payload }) => (\n state.set('distributionListSearchQuery', payload)\n ),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS, Map } from 'immutable'\n\nimport * as Actions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n showDialog: false,\n loadingCampaignIds: Map(),\n loadingContentIds: Map()\n})\n\nexport default handleActions({\n [Actions.openCalendarDialog]: state => state.set('showDialog', true),\n [Actions.closeCalendarDialog]: state => state.set('showDialog', false),\n [Actions.saveCampaignFormlessStart]: (state, { payload: { id } }) => state.setIn(['loadingCampaignIds', id], true),\n [combineActions(\n Actions.saveCampaignFormlessSuccess,\n Actions.saveCampaignFormlessError\n )]: (state, { payload: { id } }) => state.setIn(['loadingCampaignIds', id], false),\n [Actions.saveContentFormlessStart]: (state, { payload: { id } }) => state.setIn(['loadingContentIds', id], true),\n [combineActions(\n Actions.saveContentFormlessSuccess,\n Actions.saveContentFormlessError\n )]: (state, { payload: { id } }) => state.setIn(['loadingContentIds', id], false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport moment from 'moment-timezone'\n\nimport * as Actions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n date: moment().startOf('month').format('YYYY-MM-DD'),\n contents: {\n total: null,\n items: []\n },\n campaigns: {\n total: null,\n items: []\n },\n selectedCampaignId: null,\n selectedDay: moment().format('YYYY-MM-DD'),\n contentsSorting: {\n field: 'updatedAt',\n order: 'desc'\n },\n campaignsSorting: {\n field: 'startDate',\n order: 'desc'\n }\n})\n\nconst sortItems = (items, field, order) => (\n items.sortBy(item => item.get(field)).update(thingies => (\n order === 'desc' ? thingies.reverse() : thingies\n ))\n)\n\nconst updateEntitiy = (state, entity, payload) => (\n state.updateIn([entity, 'items'], items => (\n items.map(item => (\n (item.get('id') === payload.id) ? fromJS(payload) : item\n ))\n ))\n)\n\nexport default handleActions({\n [Actions.setCalendarDate]: (state, { payload }) => state.set('date', payload),\n [Actions.fetchCalendarEventsStart]: state => (\n state.set('contents', initialState.get('contents'))\n .set('campaigns', initialState.get('campaigns'))\n ),\n [Actions.fetchCalendarEventsSuccess]: (state, { payload: { campaigns, contents } }) => (\n state.set('contents', fromJS({\n total: contents.total,\n items: sortItems(\n fromJS(contents.items).map(c => c.set('eventType', 'content')),\n state.getIn(['contentsSorting', 'field']),\n state.getIn(['contentsSorting', 'order'])\n )\n }))\n .set('campaigns', fromJS({\n total: campaigns.total,\n items: sortItems(\n fromJS(campaigns.items).map(c => c.set('eventType', 'campaign')),\n state.getIn(['campaignsSorting', 'field']),\n state.getIn(['campaignsSorting', 'order'])\n )\n }))\n ),\n [Actions.setCalendarSelectedCampaignId]: (state, { payload }) => state.set('selectedCampaignId', payload),\n [Actions.setCalendarSelectedDay]: (state, { payload }) => state\n .set('selectedDay', payload)\n .set('selectedCampaignId', null),\n [combineActions(\n Actions.saveCampaignSuccess,\n Actions.saveCampaignFormlessSuccess\n )]: (state, { payload }) => (\n updateEntitiy(state, 'campaigns', payload)\n ),\n [combineActions(\n Actions.saveContentSuccess,\n Actions.saveContentFormlessSuccess\n )]: (state, { payload }) => (\n updateEntitiy(state, 'contents', payload)\n ),\n [Actions.sortContents]: (state, { payload: { field, order } }) => (\n state\n .set('contentsSorting', fromJS({ field, order }))\n .updateIn(['contents', 'items'], items => (\n sortItems(items, field, order)\n ))\n ),\n [Actions.sortCampaigns]: (state, { payload: { field, order } }) => (\n state\n .set('campaignsSorting', fromJS({ field, order }))\n .updateIn(['campaigns', 'items'], items => (\n sortItems(items, field, order)\n ))\n ),\n [Actions.setUpdatedContents]: (state, { payload }) => {\n let newState = state\n\n payload.forEach(p => {\n const contentId = p.id\n const updated = fromJS(p)\n\n if (newState.getIn(['contents', 'items']).filter(c => c.get('id') === contentId).size) {\n newState = newState\n .updateIn(['contents', 'items'], contents => (\n contents.map(content => {\n if (content.get('id') === contentId) {\n return content.merge(updated)\n }\n\n return content\n })\n ))\n }\n })\n\n return newState\n },\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n data\n})\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport filter from './filter'\nimport data from './data'\nimport calendar from './calendar'\n\nexport default combineReducers({\n calendar,\n ui,\n filter,\n data\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/contact_management'\nimport * as AppActions from 'actions/app'\n\nconst queryTypeLabelMapping = {\n contact_name: 'search_for_contact',\n contact_tag: 'search_for_contact',\n distribution_list_name: 'search_for_distribution_list'\n}\n\nexport const initialState = fromJS({\n sortBy: '',\n sortOrder: '',\n listSortBy: '',\n listSortOrder: '',\n tagsSortBy: '',\n tagsSortOrder: '',\n contactsPage: 1,\n distributionListsPage: 1,\n contactEditDialogOpen: false,\n contactDialogOpen: false,\n contactDeleteDialogOpen: false,\n tagsDialogOpen: false,\n tagRenameDialogOpen: false,\n tagDeleteDialogOpen: false,\n distributionListCreateDialogOpen: false,\n distributionListEditDialogOpen: false,\n distributionListViewDialogOpen: false,\n distributionListMergeDialogOpen: false,\n importHelpDialogOpen: false,\n uploadResultDialogOpen: false,\n emailExistingDialogOpen: false,\n contactsUploadDialogOpen: false,\n contactEditDialogMode: false,\n contactDialogView: 'overview',\n requestRunning: false,\n uploadedPhoto: null,\n selectedQueryType: 'contact_name',\n searchBarLabel: 'search_for_contact',\n searchRunning: false,\n searchContactsRunning: false,\n searchDistributionListsRunning: false,\n searchDistributionListRunning: false,\n activeFiltersCollapsed: true,\n autoCreateDistributionList: false,\n autoAddToExistingList: false\n})\n\nexport default handleActions(\n {\n [Actions.sortBy]: (state, { payload: { sortBy, sortOrder } }) => state.merge({ sortBy, sortOrder }),\n [Actions.listSortBy]: (state, { payload: { sortBy, sortOrder } }) => state.merge({ listSortBy: sortBy, listSortOrder: sortOrder }),\n [Actions.tagsSortBy]: (state, { payload: { sortBy, sortOrder } }) => state.merge({ tagsSortBy: sortBy, tagsSortOrder: sortOrder }),\n [Actions.setContactsPage]: (state, { payload: page }) => state.set('contactsPage', page),\n [Actions.setDistributionListsPage]: (state, { payload: page }) => state.set('distributionListsPage', page),\n\n [Actions.openContactEditDialog]: (state, { payload: { isEditMode } }) => state\n .set('contactEditDialogOpen', true)\n .set('contactEditDialogMode', isEditMode),\n [Actions.closeContactEditDialog]: state => state.set('contactEditDialogOpen', false),\n\n [Actions.openContactViewDialog]: state => state.set('contactDialogOpen', true),\n [Actions.closeContactViewDialog]: state => state.set('contactDialogOpen', false),\n\n [Actions.openContactDeleteDialog]: state => state.set('contactDeleteDialogOpen', true),\n [Actions.closeContactDeleteDialog]: state => state.set('contactDeleteDialogOpen', false),\n\n [Actions.openTagDeleteDialog]: state => state.set('tagDeleteDialogOpen', true),\n [Actions.closeTagDeleteDialog]: state => state.set('tagDeleteDialogOpen', false),\n\n [Actions.openTagRenameDialog]: state => state.set('tagRenameDialogOpen', true),\n [Actions.closeTagRenameDialog]: state => state.set('tagRenameDialogOpen', false),\n\n [Actions.openTagsDialog]: state => state.set('tagsDialogOpen', true),\n [Actions.closeTagsDialog]: state => state.set('tagsDialogOpen', false),\n\n [combineActions(\n Actions.renameTagStart,\n Actions.deleteTagStart,\n Actions.createDistributionListStart,\n Actions.updateDistributionListStart,\n Actions.uploadContactsStart,\n Actions.deleteContactsStart,\n Actions.downloadContactsExcelStart,\n Actions.downloadDistributionListStart\n )]: state => state.set('requestRunning', true),\n\n [combineActions(\n Actions.createDistributionListSuccess,\n Actions.createDistributionListError,\n Actions.renameTagSuccess,\n Actions.renameTagError,\n Actions.deleteTagSuccess,\n Actions.deleteTagError,\n Actions.deleteContactsSuccess,\n Actions.deleteContactsError,\n Actions.downloadContactsExcelSuccess,\n Actions.downloadContactsExcelError,\n Actions.downloadDistributionListSuccess,\n Actions.downloadDistributionListError\n )]: state => state.set('requestRunning', false),\n\n [combineActions(\n Actions.deleteContactsSuccess,\n Actions.deleteContactsError\n )]: state => state.set('contactDeleteDialogOpen', false).set('contactEditDialogOpen', false),\n\n [Actions.openContactsUploadDialog]: state => state.set('contactsUploadDialogOpen', true),\n [Actions.closeContactsUploadDialog]: state => state.set('contactsUploadDialogOpen', false)\n .set('autoCreateDistributionList', false)\n .set('autoAddToExistingList', false),\n [Actions.uploadContactsSuccess]: state => state.set('contactsUploadDialogOpen', false).set('requestRunning', false),\n\n [Actions.saveContactsStart]: state => state.set('requestRunning', true),\n [Actions.saveContactsSuccess]: state => state.set('contactEditDialogOpen', false).set('requestRunning', false),\n [Actions.saveContactsError]: state => state.set('requestRunning', false),\n\n [Actions.openDistributionListCreateDialog]: state => state.set('distributionListCreateDialogOpen', true),\n [Actions.closeDistributionListCreateDialog]: state => state.set('distributionListCreateDialogOpen', false),\n\n [Actions.openImportHelpDialog]: state => state.set('importHelpDialogOpen', true),\n [Actions.closeImportHelpDialog]: state => state.set('importHelpDialogOpen', false),\n\n [Actions.openDistributionListEditDialog]: state => state.set('distributionListEditDialogOpen', true),\n [Actions.closeDistributionListEditDialog]: state => state.set('distributionListEditDialogOpen', false),\n [Actions.updateDistributionListSuccess]: state => state.set('distributionListEditDialogOpen', false),\n\n [Actions.openDistributionListViewDialog]: state => state.set('distributionListViewDialogOpen', true),\n [Actions.closeDistributionListViewDialog]: state => state.set('distributionListViewDialogOpen', false),\n\n [combineActions(\n Actions.addContactsToDistributionListStart,\n Actions.removeContactFromListStart\n )]: state => state.set('requestRunning', true),\n\n [Actions.toggleActiveFilters]: state => state.update('activeFiltersCollapsed', v => !v),\n\n [Actions.setSelectedQueryType]: (state, { payload }) => {\n const newState = state.set('selectedQueryType', payload)\n\n if (queryTypeLabelMapping[payload]) {\n return newState.set('searchBarLabel', queryTypeLabelMapping[payload])\n }\n\n return state\n },\n\n [combineActions(\n Actions.addContactsToDistributionListSuccess,\n Actions.uploadContactsError,\n Actions.removeContactFromListSuccess,\n Actions.removeContactFromListError\n )]: state => state.set('distributionListCreateDialogOpen', false).set('requestRunning', false),\n [(Actions.addContactsToDistributionListError)]: state => state.set('requestRunning', false),\n\n [combineActions(\n Actions.updateDistributionListSuccess,\n Actions.updateDistributionListError\n )]: state => state.set('distributionListCreateDialogOpen', false).set('requestRunning', false),\n\n [Actions.setUploadedPhoto]: (state, { payload: data }) => state.set('uploadedPhoto', data),\n\n [Actions.fetchContactsStart]: state => state.set('searchContactsRunning', true),\n [Actions.fetchDistributionListsStart]: state => state.set('searchDistributionListsRunning', true),\n [Actions.searchDistributionListStart]: state => state.set('searchDistributionListRunning', true),\n\n [combineActions(\n Actions.fetchContactsSuccess,\n Actions.fetchContactsError\n )]: state => state.set('searchContactsRunning', false),\n\n [combineActions(\n Actions.fetchDistributionListsSuccess,\n Actions.fetchDistributionListsError\n )]: state => state.set('searchDistributionListsRunning', false),\n\n [combineActions(\n Actions.searchDistributionListSuccess,\n Actions.searchDistributionListError\n )]: state => state.set('searchDistributionListRunning', false),\n\n [combineActions(\n Actions.fetchContactsStart,\n Actions.fetchDistributionListsStart,\n Actions.fetchTagsStart\n )]: state => state.set('searchRunning', true),\n [combineActions(\n Actions.fetchDistributionListsSuccess,\n Actions.fetchDistributionListsError,\n Actions.fetchContactsSuccess,\n Actions.fetchContactsError,\n Actions.fetchTagsSuccess,\n Actions.fetchTagsError\n )]: state => state.set('searchRunning', false),\n\n [Actions.showEmailExistingDialog]: state => state.set('emailExistingDialogOpen', true),\n [Actions.closeEmailExistingDialog]: state => state.set('emailExistingDialogOpen', false),\n\n [Actions.showUploadResultDialog]: state => state.set('uploadResultDialogOpen', true),\n [Actions.closeUploadResultDialog]: state => state.set('uploadResultDialogOpen', false),\n\n [Actions.openDistributionListMergeDialog]: state => state.set('distributionListMergeDialogOpen', true),\n [Actions.closeDistributionListMergeDialog]: state => state.set('distributionListMergeDialogOpen', false),\n\n [Actions.mergeDistributionListsStart]: state => state.set('requestRunning', true),\n [Actions.mergeDistributionListsSuccess]: state => state\n .set('requestRunning', false)\n .set('distributionListMergeDialogOpen', false),\n [Actions.mergeDistributionListsError]: state => state.set('requestRunning', false),\n\n [Actions.setAutoCreateDistributionList]: (state, { payload }) => state.set('autoCreateDistributionList', payload),\n [Actions.setAutoAddToExistingList]: (state, { payload }) => state.set('autoAddToExistingList', payload),\n [AppActions.resetState]: () => initialState\n },\n initialState\n)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport * as Actions from 'actions/contact_management'\nimport * as AppActions from 'actions/app'\n\nimport { ContactManagementSearchFields } from 'static/constants'\n\nconst cmSearchFieldsMapping = {\n [ContactManagementSearchFields.CONTACT_NAME]: {\n stateKeyName: 'contactSearchQueries'\n },\n [ContactManagementSearchFields.CONTACT_TAG]: {\n stateKeyName: 'contactSearchQueries'\n },\n [ContactManagementSearchFields.DISTRIBUTION_LIST_NAME]: {\n stateKeyName: 'distributionListSearchQueries'\n },\n [ContactManagementSearchFields.DISTRIBUTION_LIST_CONTACTS]: {\n stateKeyName: 'distributionListContactsSearchQueries'\n }\n}\n\nexport const initialState = fromJS({\n distributionListPage: 1,\n distributionListLimit: 10,\n contactPage: 1,\n contactLimit: 10,\n showUnsubscribed: false,\n tagsPage: 1,\n tagsLimit: 100,\n contactSearchQueries: [],\n distributionListSearchQueries: [],\n distributionListContactsSearchQueries: []\n})\n\nexport default handleActions({\n [Actions.addSearchQuery]: (state, { payload: { query, selectedQueryType } }) => (\n state.update(cmSearchFieldsMapping[selectedQueryType].stateKeyName, queries => queries.push(fromJS({\n label: query,\n value: query,\n field: selectedQueryType\n })))),\n [Actions.addDistributionListContactsSearchQuery]: (state, { payload: { query, selectedQueryType } }) => (\n state.set(cmSearchFieldsMapping[selectedQueryType].stateKeyName, fromJS([{\n label: query.label,\n value: query.value,\n field: selectedQueryType\n }]))),\n [Actions.removeFilter]: (state, { payload: { field, index } }) => (\n state.update(cmSearchFieldsMapping[field].stateKeyName, list => list.delete(index))\n ),\n [Actions.removeDistributionListContactFilter]: state => state\n .set('distributionListContactsSearchQueries', initialState.get('distributionListContactsSearchQueries')),\n [Actions.updateFilter]: (state, { payload: { filter, index } }) => {\n const { stateKeyName } = cmSearchFieldsMapping[filter.get('field')]\n\n return state.setIn([stateKeyName, index], filter.set('updated', true))\n },\n [Actions.setContactsPage]: (state, { payload: page }) => state.set('contactPage', page),\n [Actions.setDistributionListsPage]: (state, { payload: page }) => state.set('distributionListPage', page),\n [Actions.toggleContactsShowUnsubscribed]: state => {\n let newState = state.set('showUnsubscribed', !state.get('showUnsubscribed'))\n\n if (newState.get('showUnsubscribed')) {\n newState = newState.set('contactPage', 1)\n }\n\n return newState\n },\n [Actions.resetFilters]: state => (\n state.merge(initialState)\n ),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/contact_management'\nimport * as ContentDeskActions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n contactsTotal: 0,\n distributionListsTotal: 0,\n contactFormData: {\n id: null,\n firstName: '',\n lastName: '',\n mail: '',\n title: '',\n jobTitle: '',\n dossier: '',\n picture: '',\n address: '',\n phone: '',\n fax: '',\n externalPublication: '',\n country: null,\n state: null,\n linkedinUrl: '',\n twitterUrl: '',\n facebookUrl: '',\n threadsUrl: '',\n tiktokUrl: '',\n instagramUrl: '',\n youtubeUrl: '',\n otherUrl: '',\n distributionLists: [],\n customTags: [],\n mediaTopics: [],\n languages: [],\n mediaTypes: []\n },\n contacts: [],\n selectedContactId: null,\n contactsToDelete: [],\n tags: [],\n distributionLists: [],\n distributionListsSearch: [],\n listData: {\n id: null,\n name: '',\n description: null,\n contacts: []\n },\n selectedLists: {\n lists: [],\n newListName: '',\n deleteMergedLists: false\n },\n uploadResult: {\n uploaded: [],\n failed: [],\n total_uploaded: 0,\n total_failed: 0\n }\n})\n\nexport default handleActions(\n {\n [Actions.changeContactFormData]: (state, { payload: { key, value } }) => {\n let contactFormData = state.get('contactFormData').set(key, value)\n\n if (key === 'country') {\n contactFormData = contactFormData.set('state', null)\n }\n\n return state.set('contactFormData', contactFormData)\n },\n [Actions.setContactTags]: (state, { payload }) => state.merge({ tags: fromJS(payload) }),\n [Actions.changeTagSuccess]: (state, { payload }) => state.setIn(['contactFormData', 'customTags'], fromJS(payload)),\n [Actions.createTag]: (state, { payload }) => state.mergeIn(['tags'], fromJS(payload)),\n [Actions.renameTagSuccess]: (state, { payload }) => {\n const { id } = payload\n const newTags = state.get('tags').filter(t => t.get('id') !== id).push(fromJS(payload))\n const newContacts = state.get('contacts').map(c => {\n const newContactTags = c.get('customTags').filter(t => t.get('id') !== id).push(fromJS(payload))\n\n return c.set('customTags', newContactTags)\n })\n\n return state\n .set('tags', newTags)\n .set('contacts', newContacts)\n },\n [Actions.deleteTagSuccess]: (state, { payload }) => {\n const { id } = payload\n const newTags = state.get('tags').filter(t => t.get('id') !== id)\n const newContacts = state.get('contacts').map(c => {\n const newContactTags = c.get('customTags').filter(t => t.get('id') !== id)\n\n return c.set('customTags', newContactTags)\n })\n\n return state\n .set('tags', newTags)\n .set('contacts', newContacts)\n },\n\n [Actions.changeContactMediaTopics]: (state, { payload }) => {\n const mediaTopicIds = payload.map(t => ({ id: t }))\n\n return state.setIn(['contactFormData', 'mediaTopics'], fromJS(mediaTopicIds))\n },\n\n [Actions.changeContactLanguages]: (state, { payload }) => {\n const languageIds = payload.map(t => ({ id: t }))\n\n return state.setIn(['contactFormData', 'languages'], fromJS(languageIds))\n },\n\n [Actions.changeContactMediaTypes]: (state, { payload }) => {\n const mediaTypeIds = payload.map(t => ({ id: t }))\n\n return state.setIn(['contactFormData', 'mediaTypes'], fromJS(mediaTypeIds))\n },\n\n [Actions.openContactEditDialog]: (state, { payload: { contact } }) => state\n .mergeIn(['contactFormData'], contact)\n .set('selectedContactId', contact.get('id')),\n\n [Actions.closeContactEditDialog]: state => state.set('contactFormData', initialState.get('contactFormData')),\n [Actions.openContactViewDialog]: (state, { payload }) => state.set('selectedContactId', payload.get('id')),\n [Actions.closeContactViewDialog]: state => state.set('selectedContactId', initialState.get('selectedContactId')),\n\n [Actions.openContactDeleteDialog]: (state, { payload }) => state.set('contactsToDelete', fromJS(payload)),\n\n [combineActions(\n Actions.closeContactDeleteDialog,\n Actions.deleteContactsSuccess,\n Actions.deleteContactsError\n )]: state => state.set('contactsToDelete', initialState.get('contactsToDelete')),\n\n [Actions.updateDistributionListFormData]: (state, { payload: { key, value } }) => state.setIn(['listData', key], value),\n [Actions.selectContact]: (state, { payload: contactData }) => {\n const contactIds = state.getIn(['listData', 'contacts']).map(contact => contact.get('id'))\n\n if (contactIds.includes(contactData.get('id'))) {\n return state.updateIn(['listData', 'contacts'], contacts => contacts.filter(contact => contact.get('id') !== contactData.get('id')))\n }\n\n return state.updateIn(['listData', 'contacts'], contacts => contacts.push(contactData))\n },\n [Actions.selectAllContacts]: state => {\n const allContacts = state.get('contacts')\n const selectedContacts = state.getIn(['listData', 'contacts'])\n\n const newSelectedContacts = allContacts\n .filter(contact => !selectedContacts.map(c => c.get('id')).includes(contact.get('id')) && !contact.get('unsubscribed'))\n\n return state.updateIn(['listData', 'contacts'], contacts => contacts.concat(newSelectedContacts))\n },\n [Actions.selectDistributionList]: (state, { payload: dl }) => {\n const listIds = state.getIn(['selectedLists', 'lists']).map(l => l.get('id'))\n\n if (listIds.includes(dl.get('id'))) {\n return state.updateIn(['selectedLists', 'lists'], lists => lists.filter(l => l.get('id') !== dl.get('id')))\n }\n\n return state.updateIn(['selectedLists', 'lists'], lists => lists.push(dl))\n },\n [Actions.clearSelectedLists]: state => state.set('selectedLists', initialState.get('selectedLists')),\n [Actions.openDistributionListEditDialog]: (state, { payload }) => state.set('listData', payload),\n [Actions.closeDistributionListEditDialog]: state => state.set('listData', initialState.get('listData')),\n [Actions.closeDistributionListCreateDialog]: state => state.set('listData', initialState.get('listData')),\n [combineActions(\n Actions.deleteContactsSuccess,\n Actions.deleteContactsError,\n Actions.clearListData\n )]: state => state.set('listData', initialState.get('listData')),\n\n [Actions.openDistributionListViewDialog]: (state, { payload }) => state.set('selectedContactId', payload.get('id')),\n\n [Actions.setDistributionList]: (state, { payload }) => state.setIn(['listData', 'id'], payload),\n [Actions.fetchDistributionListsSuccess]: (state, { payload: { distributionLists, total } }) => (\n state.set('distributionLists', fromJS(distributionLists))).set('distributionListsTotal', fromJS(total)),\n [Actions.searchDistributionListSuccess]: (state, { payload: { distributionLists } }) => (\n state.set('distributionListsSearch', fromJS(distributionLists))),\n [Actions.createDistributionListSuccess]: (state, { payload }) => {\n const distLists = state.get('distributionLists')\n const newDistList = fromJS({ ...payload, contacts: fromJS([]) })\n\n return state\n .set('distributionLists', distLists.unshift(newDistList))\n .set('distributionListsTotal', state.get('distributionListsTotal') + 1)\n },\n [Actions.updateDistributionListSuccess]: (state, { payload }) => {\n const elemIndex = state\n .get('distributionLists')\n .findIndex(dl => dl.get('id') === payload.id)\n\n return state.setIn(['distributionLists', elemIndex], fromJS(payload))\n },\n [Actions.deleteDistributionListSuccess]: (state, { payload }) => {\n const filteredList = state.get('distributionLists').filter(dl => dl.get('id') !== payload.id)\n const selectedLists = state.get('selectedLists').get('lists').filter(l => l.get('id') !== payload.id)\n const distListTotal = state.get('distributionListsTotal')\n\n return state\n .set('distributionLists', filteredList)\n .setIn(['selectedLists', 'lists'], selectedLists)\n .set('distributionListsTotal', distListTotal !== 0 ? distListTotal - 1 : 0)\n },\n [Actions.removeContactFromListSuccess]: (state, { payload }) => {\n const elemIndex = state\n .get('distributionLists')\n .findIndex(dl => dl.get('id') === payload.id)\n\n if (state.get('selectedContactId') !== null) {\n const contact = state.get('contacts').find(c => c.get('id') === state.get('selectedContactId'))\n const updatedDistributionLists = contact.get('distributionLists').filter(dl => dl.get('id') !== payload.id)\n const contactIndex = state.get('contacts').findIndex(c => c.get('id') === state.get('selectedContactId'))\n\n return state\n .setIn(['distributionLists', elemIndex], fromJS(payload))\n .setIn(['contacts', contactIndex, 'distributionLists'], updatedDistributionLists)\n }\n\n return state\n .setIn(['distributionLists', elemIndex], fromJS(payload))\n },\n [Actions.addContactsToDistributionListSuccess]: (state, { payload }) => {\n const elemIndex = state\n .get('distributionLists')\n .findIndex(dl => dl.get('id') === payload.id)\n\n const updatedContacts = state.get('contacts').map(contact => {\n const updatedContactIndex = payload.contacts.findIndex(\n updatedContact => updatedContact.id === contact.get('id')\n )\n const isNewList = !contact.get('distributionLists').map(l => l.get('id')).contains(payload.id)\n\n if (updatedContactIndex !== -1 && isNewList) {\n return contact.set(\n 'distributionLists',\n contact.get('distributionLists').unshift(fromJS({ id: payload.id, name: payload.name }))\n )\n }\n\n return contact\n })\n\n return state\n .set('contacts', updatedContacts)\n .setIn(['distributionLists', elemIndex], fromJS(payload))\n .set('listData', initialState.get('listData'))\n },\n [Actions.fetchContactsSuccess]: (state, { payload: { contacts, total } }) => (\n state.set('contacts', fromJS(contacts))).set('contactsTotal', fromJS(total)),\n\n // Contacts need to be reset on setRecipientBrowserOpen, because this state is shared between ContentDesk and ContactManagement\n [ContentDeskActions.setRecipientBrowserOpen]: state => state.set('contacts', initialState.get('contacts'))\n .set('contactsTotal', initialState.get('contactsTotal')),\n\n [Actions.saveContactsSuccess]: (state, { payload }) => {\n const newContact = fromJS(payload)\n const index = state.get('contacts').findIndex(c => c.get('id') === newContact.get('id'))\n let newState\n\n if (index > -1) {\n newState = state.setIn(['contacts', index], newContact)\n } else {\n newState = state\n .set('contacts', state.get('contacts').unshift(newContact))\n .set('contactsTotal', state.get('contactsTotal') + 1)\n }\n\n return newState.set('contactFormData', initialState.get('contactFormData'))\n },\n [Actions.uploadContactsSuccess]: (state, { payload }) => state.set('uploadResult', fromJS(payload)),\n [Actions.closeUploadResultDialog]: state => state\n .set('uploadResult', initialState.get('uploadResult'))\n .set('listData', initialState.get('listData')),\n [Actions.closeContactsUploadDialog]: state => state.set('listData', initialState.get('listData')),\n [Actions.closeUploadResultDialog]: state => state.set('uploadResult', initialState.get('uploadResult')),\n [Actions.setMergedDistributionListData]: (state, { payload: { key, value } }) => state\n .update('selectedLists', data => data.set(key, value)),\n [Actions.mergeDistributionListsSuccess]: (state, { payload: { mergedList, deletedLists } }) => {\n const distLists = state.get('distributionLists').filter(l => !deletedLists.includes(l.get('id')))\n\n return state\n .set('distributionLists', distLists.unshift(fromJS(mergedList)))\n .set('selectedLists', initialState.get('selectedLists'))\n .set('distributionListsTotal', state.get('distributionListsTotal') + 1 - deletedLists.length)\n },\n [AppActions.resetState]: () => initialState\n }, initialState\n)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport filter from './filter'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n filter,\n data\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/email_templates_library'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n showEditorDialog: false,\n showSaveDialog: false,\n showPickerDialog: false,\n fetchRequestRunning: false,\n fetchReleasedRequestRunning: false,\n saveRequestRunning: false,\n deleteRequestRunning: false,\n showPublic: false,\n readMode: false\n})\n\nexport default handleActions({\n [Actions.openEditorDialog]: state => state.set('showEditorDialog', true),\n [Actions.closeEditorDialog]: state => state.set('showEditorDialog', false),\n [Actions.openPickerDialog]: state => state.set('showPickerDialog', true),\n [Actions.closePickerDialog]: state => state.set('showPickerDialog', false),\n [Actions.openSaveDialog]: state => state.set('showSaveDialog', true),\n [Actions.closeSaveDialog]: state => state.set('showSaveDialog', false),\n [Actions.fetchTemplatesStart]: state => state.set('fetchRequestRunning', true),\n [combineActions(Actions.fetchTemplatesSuccess, Actions.fetchTemplatesError)]: state => (\n state.set('fetchRequestRunning', false)\n ),\n [Actions.saveTemplateStart]: state => state.set('saveRequestRunning', true),\n [combineActions(Actions.saveTemplateSuccess, Actions.saveTemplateError)]: state => (\n state.set('saveRequestRunning', false)\n ),\n [Actions.togglePublicTemplates]: state => state.set('showPublic', !state.get('showPublic')),\n [Actions.deleteTemplateStart]: state => state.set('deleteRequestRunning', true),\n [combineActions(Actions.deleteTemplateSuccess, Actions.deleteTemplateError)]: state => (\n state.set('deleteRequestRunning', false)\n ),\n [Actions.setReadMode]: (state, { payload }) => state.set('readMode', payload),\n [Actions.fetchReleasedTemplatesStart]: state => state.set('fetchReleasedRequestRunning', true),\n [combineActions(Actions.fetchReleasedTemplatesSuccess, Actions.fetchReleasedTemplatesError)]: state => (\n state.set('fetchReleasedRequestRunning', false)\n ),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/email_templates_library'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n privateTemplates: {\n hasMore: false,\n items: []\n },\n publicTemplates: {\n hasMore: false,\n items: []\n },\n templateFormData: {\n id: null,\n name: null,\n shared: false,\n released: false,\n json: null,\n html: null,\n isDirty: false\n }\n})\n\nexport default handleActions({\n [Actions.setTemplateFormData]: (state, { payload: { key, value } }) => (\n state.setIn(['templateFormData', key], value).setIn(['templateFormData', 'isDirty'], true)\n ),\n [Actions.loadSelectedTemplate]: (state, { payload }) => (\n state.set('templateFormData', payload)\n ),\n [Actions.closeEditorDialog]: state => state.set('templateFormData', initialState.get('templateFormData')),\n [Actions.saveTemplateSuccess]: (state, { payload }) => {\n if (!payload) {\n return state\n }\n\n const { id, shared } = payload\n const key = shared ? 'publicTemplates' : 'privateTemplates'\n const currentTemplates = state.getIn([key, 'items'])\n\n if (currentTemplates.some(template => template.get('id') === id)) {\n const index = currentTemplates.findIndex(template => template.get('id') === id)\n\n return state.setIn([key, 'items', index], fromJS(payload))\n }\n\n return state.updateIn([key, 'items'], templatesList => templatesList.unshift(fromJS(payload)))\n },\n [Actions.fetchTemplatesSuccess]: (state, { payload: { shared, result: { templates, hasMore } } }) => {\n const key = shared ? 'publicTemplates' : 'privateTemplates'\n\n return state\n .updateIn([key, 'items'], templatesList => templatesList.push(...fromJS(templates)))\n .setIn([key, 'hasMore'], hasMore)\n },\n [Actions.deleteTemplateSuccess]: (state, { payload }) => {\n const key = payload.shared ? 'publicTemplates' : 'privateTemplates'\n\n return state.setIn([key, 'items'], state.getIn([key, 'items']).filter(template => template.get('id') !== payload))\n },\n [Actions.resetTemplatesModule]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport * as Actions from 'actions/email_templates_library'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n page: 1,\n limit: 20,\n sortBy: 'created_at',\n sortOrder: 'desc'\n})\n\nexport default handleActions({\n [Actions.increaseTemplatesPage]: state => state.set('page', state.get('page') + 1),\n [combineActions(Actions.resetTemplateFilters, Actions.resetTemplatesModule)]: _state => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport filter from './filter'\n\nexport default combineReducers({\n ui,\n data,\n filter\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/notifications'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n isDrawerOpen: false,\n readRequestRunning: false,\n fetchRequestRunning: false,\n selectedIds: null\n})\n\nexport default handleActions({\n [Actions.openDrawer]: state => state.set('isDrawerOpen', true),\n [Actions.closeDrawer]: state => state.set('isDrawerOpen', false),\n [Actions.markAsReadStart]: (state, { payload }) => state\n .set('readRequestRunning', true)\n .set('selectedIds', payload),\n [combineActions(\n Actions.markAsReadSuccess,\n Actions.markAsReadError\n )]: state => state\n .set('readRequestRunning', false)\n .set('selectedIds', null),\n [Actions.fetchNotificationsStart]: state => state.set('fetchRequestRunning', true),\n [combineActions(\n Actions.fetchNotificationsSuccess,\n Actions.fetchNotificationsError\n )]: state => state.set('fetchRequestRunning', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/notifications'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n notifications: []\n})\n\nexport default handleActions({\n [Actions.setNotifications]: (state, { payload }) => state.set('notifications', fromJS(payload)),\n [Actions.fetchNotificationsSuccess]: (state, { payload }) => state\n .update('notifications', notifications => notifications.push(...fromJS(payload))),\n [Actions.updateNotifications]: (state, { payload }) => (\n state.updateIn(['notifications'], notifications => (\n notifications.map(notification => {\n const match = payload.find(p => notification.get('id') === p.grootNotificationId)\n\n if (match) {\n return notification.set('seenAt', match.seenAt)\n }\n\n return notification\n })\n ))\n ),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\nimport * as Actions from 'actions/notifications'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n page: 1,\n lastPage: false,\n limit: 5,\n sortBy: 'released_at',\n sortOrder: 'desc'\n})\n\nexport default handleActions({\n [Actions.setNotificationsPage]: (state, { payload }) => state.set('page', payload),\n [Actions.setLastPage]: state => state.set('lastPage', true),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport data from './data'\nimport filter from './filter'\n\nexport default combineReducers({\n ui,\n data,\n filter\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/unsplash'\nimport * as CDActions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n showUnsplashComponent: false,\n requestRunning: false,\n downloadRequestRunning: false,\n selectedImageId: null,\n isRandomSearch: true\n})\n\nexport default handleActions({\n [Actions.toggleUnsplashComponent]: state => state.set('showUnsplashComponent', !state.get('showUnsplashComponent')),\n [Actions.fetchRandomUnsplashPhotosStart]: state => state.set('requestRunning', true).set('isRandomSearch', true),\n [Actions.searchUnsplashPhotosStart]: state => state.set('requestRunning', true).set('isRandomSearch', false),\n [combineActions(Actions.searchUnsplashPhotosSuccess, Actions.searchUnsplashPhotosError)]: state => state.set('requestRunning', false),\n [combineActions(\n CDActions.closeNewContentDialog,\n CDActions.closeEditContentDialog,\n CDActions.closeOldEditContentDialog\n )]: () => initialState,\n [Actions.addImageToLibraryStart]: (state, { payload: { id } }) => state.set('downloadRequestRunning', true).set('selectedImageId', id),\n [combineActions(Actions.addImageToLibrarySuccess, Actions.addImageToLibraryError)]: state => state\n .set('downloadRequestRunning', false)\n .set('selectedImageId', null),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/unsplash'\nimport * as CDActions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n page: 1,\n perPage: 20,\n orderBy: 'relevant'\n})\n\nexport default handleActions({\n [Actions.resetUnsplashPhotos]: state => state.set('page', initialState.get('page')),\n [Actions.incrementPage]: state => state.set('page', state.get('page') + 1),\n [combineActions(\n CDActions.closeNewContentDialog,\n CDActions.closeEditContentDialog,\n CDActions.closeOldEditContentDialog\n )]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/unsplash'\nimport * as CDActions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n photos: {\n total: null,\n totalPages: null,\n items: []\n },\n query: ''\n})\n\nexport default handleActions({\n [Actions.setUnsplashPhotos]: (state, { payload }) => state\n .updateIn(['photos', 'items'], items => items.push(...fromJS(payload.results)))\n .setIn(['photos', 'total'], payload.total)\n .setIn(['photos', 'totalPages'], payload.total_pages),\n [Actions.setUnsplashFormData]: (state, { payload: { name, value } }) => state.set(name, value),\n [Actions.resetUnsplashPhotos]: state => state.set('photos', initialState.get('photos')),\n [Actions.toggleUnsplashComponent]: () => initialState,\n [combineActions(\n CDActions.closeNewContentDialog,\n CDActions.closeEditContentDialog,\n CDActions.closeOldEditContentDialog\n )]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport filter from './filter'\nimport data from './data'\n\nexport default combineReducers({\n ui,\n filter,\n data\n})\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\nimport * as CmActions from 'actions/contact_management'\n\nexport const initialState = fromJS({\n staticsRequestRunning: false,\n hasStatics: false,\n isSimpleSearch: true,\n searchRequestRunning: false,\n importRequestRunning: false,\n replaceRequestRunning: false,\n combinedSearchRequestRunning: false,\n journalistsSearchRequestRunning: false,\n outletsSearchRequestRunning: false,\n articlesSearchRequestRunning: false,\n isInitialSearch: true,\n resultsTab: 'journalists',\n duplicateContactsDialogOpen: false,\n distributionListCreateDialogOpen: false,\n drillDownEntity: null,\n drillDownTab: 'journalists',\n showDrillDownDialog: false,\n journalistsDrillDownRequestRunning: false,\n outletsDrillDownRequestRunning: false,\n articlesDrillDownRequestRunning: false,\n isNavigationLocked: false,\n isLimitedFunctionality: false,\n importWithDistributionLists: false\n})\n\nexport default handleActions({\n [Actions.fetchStaticsStart]: state => state.set('staticsRequestRunning', true),\n [Actions.fetchStaticsSuccess]: state => state\n .set('staticsRequestRunning', false)\n .set('hasStatics', true),\n [Actions.fetchStaticsError]: state => state.set('staticsRequestRunning', false),\n [Actions.switchSearchType]: state => state.set('isSimpleSearch', !state.get('isSimpleSearch')),\n [combineActions(\n Actions.searchJournalistsStart,\n Actions.searchOutletsStart,\n Actions.searchArticlesStart\n )]: state => state.set('searchRequestRunning', true),\n [Actions.searchJournalistsStart]: state => state.set('journalistsSearchRequestRunning', true),\n [Actions.searchOutletsStart]: state => state.set('outletsSearchRequestRunning', true),\n [Actions.searchArticlesStart]: state => state.set('articlesSearchRequestRunning', true),\n [Actions.searchJournalistsSuccess]: state => state.set('isInitialSearch', false),\n [combineActions(\n Actions.searchJournalistsSuccess,\n Actions.searchJournalistsError\n )]: state => state\n .set('searchRequestRunning', false)\n .set('journalistsSearchRequestRunning', false),\n [combineActions(\n Actions.searchOutletsSuccess,\n Actions.searchOutletsError\n )]: state => state\n .set('searchRequestRunning', false)\n .set('outletsSearchRequestRunning', false),\n [combineActions(\n Actions.searchArticlesSuccess,\n Actions.searchArticlesError\n )]: state => state\n .set('searchRequestRunning', false)\n .set('articlesSearchRequestRunning', false),\n [Actions.combinedSearchStart]: state => state\n .set('combinedSearchRequestRunning', true)\n .set('journalistsSearchRequestRunning', true)\n .set('outletsSearchRequestRunning', true)\n .set('articlesSearchRequestRunning', true),\n [combineActions(\n Actions.combinedSearchSuccess,\n Actions.combinedSearchError\n )]: state => state.set('combinedSearchRequestRunning', false),\n [Actions.switchResultsTab]: (state, { payload }) => state.set('resultsTab', payload),\n [combineActions(\n Actions.importStart,\n Actions.addJournalistsToDistributionList\n )]: state => state.set('importRequestRunning', true),\n [combineActions(\n Actions.importSuccess,\n Actions.importError\n )]: state => state.set('importRequestRunning', false),\n [Actions.showDuplicateContactsDialog]: state => state.set('duplicateContactsDialogOpen', true),\n [combineActions(\n Actions.hideDuplicateContactsDialog,\n Actions.showDistributionListCreateDialog\n )]: state => state.set('duplicateContactsDialogOpen', false),\n [Actions.showDistributionListCreateDialog]: state => state.set('distributionListCreateDialogOpen', true),\n [Actions.hideDistributionListCreateDialog]: state => state.set('distributionListCreateDialogOpen', false),\n [Actions.replaceContactStart]: state => state.set('replaceRequestRunning', true),\n [combineActions(\n Actions.replaceContactSuccess,\n Actions.replaceContactError\n )]: state => state.set('replaceRequestRunning', false),\n [combineActions(\n CmActions.addContactsToDistributionListSuccess,\n CmActions.removeContactFromListSuccess\n )]: state => state.set('distributionListCreateDialogOpen', false).set('importRequestRunning', false),\n [combineActions(\n CmActions.addContactsToDistributionListError,\n CmActions.uploadContactsError,\n CmActions.removeContactFromListError\n )]: state => state.set('distributionListCreateDialogOpen', false).set('importRequestRunning', false),\n [Actions.openDrillDownDialog]: state => state.set('showDrillDownDialog', true),\n [Actions.openDrillDownDialog]: (state, { payload }) => {\n const { entity } = payload\n\n let tab\n\n if (entity === 'journalist') {\n tab = 'journalists'\n }\n\n if (entity === 'outlet') {\n tab = 'outlets'\n }\n\n return state.set('showDrillDownDialog', true).set('drillDownTab', tab)\n },\n [Actions.closeDrillDownDialog]: state => state.set('showDrillDownDialog', false).set('drillDownTab', 'journalists'),\n [Actions.setDrillDownEntity]: (state, { payload }) => state.set('drillDownEntity', payload),\n [Actions.switchDrillDownTab]: (state, { payload }) => state.set('drillDownTab', payload),\n [combineActions(\n Actions.drillDownRequestStart,\n Actions.drillDownHistorySearch\n )]: state => {\n let newState = state\n\n if (state.get('drillDownEntity') === 'journalist') {\n newState = newState\n .set('journalistsDrillDownRequestRunning', true)\n .set('articlesDrillDownRequestRunning', true)\n }\n\n if (state.get('drillDownEntity') === 'outlet') {\n newState = newState\n .set('outletsDrillDownRequestRunning', true)\n .set('journalistsDrillDownRequestRunning', true)\n }\n\n return newState\n },\n [Actions.searchDrillDownJournalistsStart]: state => state.set('journalistsDrillDownRequestRunning', true),\n [Actions.searchDrillDownOutletsStart]: state => state.set('outletsDrillDownRequestRunning', true),\n [Actions.searchDrillDownArticlesStart]: state => state.set('articlesDrillDownRequestRunning', true),\n [combineActions(\n Actions.searchDrillDownJournalistsSuccess,\n Actions.searchDrillDownJournalistsError\n )]: state => state.set('journalistsDrillDownRequestRunning', false),\n [combineActions(\n Actions.searchDrillDownOutletsSuccess,\n Actions.searchDrillDownOutletsError\n )]: state => state.set('outletsDrillDownRequestRunning', false),\n [combineActions(\n Actions.searchDrillDownArticlesSuccess,\n Actions.searchDrillDownArticlesError\n )]: state => state.set('articlesDrillDownRequestRunning', false),\n [Actions.addJournalistsToDistributionList]: state => state.set('importWithDistributionLists', true),\n [Actions.importStart]: state => state.set('importWithDistributionLists', false),\n [Actions.clearModuleData]: () => initialState.set('hasStatics', true),\n [Actions.lockNavigation]: state => state.set('isNavigationLocked', true),\n [Actions.setLimitedFunctionality]: state => state.set('isLimitedFunctionality', true),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n topics: null,\n countries: null,\n states: null,\n mediaTypes: null,\n languages: null,\n suggest: null\n})\n\nexport default handleActions({\n [Actions.setStatics]: (state, { payload }) => {\n const { topics, countries, states, mediaTypes, languages } = payload\n\n return state\n .set('topics', fromJS(topics))\n .set('countries', fromJS(countries))\n .set('states', fromJS(states))\n .set('mediaTypes', fromJS(mediaTypes))\n .set('languages', fromJS(languages))\n },\n [Actions.setSuggestions]: (state, { payload }) => state.set('suggest', fromJS(payload)),\n [Actions.clearModuleData]: state => state.set('suggest', null),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n query: '',\n name: '',\n jobTitle: '',\n outletName: ''\n})\n\nexport default handleActions({\n [Actions.setSearchForm]: (state, { payload: { key, value } }) => state.set(key, value),\n [Actions.switchSearchType]: state => state\n .set('name', '')\n .set('jobTitle', '')\n .set('outletName', ''),\n [Actions.clearModuleData]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n topic: null,\n mediaType: null,\n country: null,\n state: null,\n city: '',\n journalists: {\n facetFilters: {},\n pagination: {\n page: 1,\n pageSize: 20\n },\n sort: {\n by: 'influence_score',\n direction: 'desc'\n }\n },\n outlets: {\n facetFilters: {},\n pagination: {\n page: 1,\n pageSize: 20\n },\n sort: {\n by: 'influence_score',\n direction: 'desc'\n }\n },\n articles: {\n facetFilters: {},\n pagination: {\n cursor: '',\n pageSize: 20\n },\n sort: {\n by: 'influence_score',\n direction: 'desc'\n }\n }\n})\n\nexport default handleActions({\n [Actions.setFiltersForm]: (state, { payload: { key, value } }) => state.set(key, value),\n [Actions.resetEntityFilters]: state => state\n .set('journalists', initialState.get('journalists'))\n .set('outlets', initialState.get('outlets'))\n .set('articles', initialState.get('articles')),\n [Actions.resetPaginationFilter]: (state, { payload }) => state\n .setIn([payload, 'pagination'], initialState.getIn([payload, 'pagination'])),\n [Actions.switchSearchType]: state => state\n .set('topic', null)\n .set('mediaType', null)\n .set('country', null)\n .set('state', null)\n .set('city', ''),\n [Actions.clearModuleData]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n journalists: []\n})\n\nexport default handleActions({\n [Actions.setSelectedResults]: (state, { payload: { key, value } }) => state.set(key, value),\n [combineActions(\n Actions.searchJournalistsStart,\n Actions.clearModuleData\n )]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n journalists: {\n entities: [],\n paginator: {\n totalCount: 0,\n pageSize: 20,\n currentPage: 1\n },\n facets: {}\n },\n outlets: {\n entities: [],\n paginator: {\n totalCount: 0,\n pageSize: 20,\n currentPage: 1\n },\n facets: {}\n },\n articles: {\n entities: [],\n cursor: '',\n previousCursor: '',\n pageSize: 20,\n facets: {}\n }\n})\n\nexport default handleActions({\n [Actions.setEntity]: (state, { payload: { entity, value } }) => state.set(entity, fromJS(value)),\n [combineActions(\n Actions.combinedSearchStart,\n Actions.clearModuleData\n )]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineActions, handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n importResult: [],\n importContactsForDistributionLists: []\n})\n\n// TODO: make sure importResult does not corrupt importContactsForDistributionLists\n// check if importResult is acutally correct after replacing (merge wtf)\n// I think it should always replace the first element, which is clearly wrong (write a test)\nexport default handleActions({\n [combineActions(\n Actions.importStart,\n Actions.addJournalistsToDistributionList\n )]: state => state.set('importResult', fromJS([])),\n [Actions.importSuccess]: (state, { payload }) => state.update(\n 'importResult', oldValue => (oldValue.merge(fromJS(payload)))\n ),\n [Actions.removeContactFromDuplicateList]: (state, { payload }) => state.update(\n 'importResult',\n oldValue => oldValue.filter(v => v !== payload)\n ),\n [Actions.replaceContactSuccess]: (state, { payload: { existingContact, replaceContactResult } }) => state.update(\n 'importResult',\n oldValue => oldValue.filter(v => v.get('existingContact') !== existingContact)\n ).update(\n 'importContactsForDistributionLists',\n oldContacts => oldContacts.map(c => (\n (c.get('id') === existingContact.get('id')) ? (\n fromJS(replaceContactResult).getIn([0, 'contactImported'])\n ) : c\n ))\n ),\n [Actions.addJournalistsToDistributionList]: state => state.set('importContactsForDistributionLists', fromJS([])),\n [Actions.setImportContactsForDistributionLists]: (state, { payload }) => state.set(\n 'importContactsForDistributionLists',\n fromJS(payload).map(e => e.get('existingContact') || e.get('contactImported'))\n ),\n [Actions.clearModuleData]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n journalists: {\n entities: [],\n paginator: {\n totalCount: 0,\n pageSize: 10,\n currentPage: 1\n }\n },\n outlets: {\n entities: [],\n paginator: {\n totalCount: 0,\n pageSize: 10,\n currentPage: 1\n }\n },\n articles: {\n entities: [],\n cursor: '',\n previousCursor: '',\n pageSize: 10\n }\n})\n\nexport default handleActions({\n [Actions.setDrillDownResult]: (state, { payload: { entity, value } }) => state.set(entity, fromJS(value)),\n [combineActions(\n Actions.closeDrillDownDialog,\n Actions.clearModuleData\n )]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n topics: [],\n name: '',\n identityId: null,\n personId: null,\n topicIds: [],\n drillDownEntityId: null,\n outletId: null,\n journalists: {\n pagination: {\n page: 1,\n pageSize: 10\n }\n },\n outlets: {\n pagination: {\n page: 1,\n pageSize: 10\n }\n },\n articles: {\n pagination: {\n cursor: '',\n pageSize: 10\n },\n sortBy: ['-publish_date']\n }\n})\n\nexport default handleActions({\n [Actions.setDrillDownFiltersState]: (_state, { payload: filters }) => filters,\n [Actions.setDrillDownFiltersForm]: (state, { payload: { key, value } }) => state.set(key, value),\n [Actions.toggleDrillDownTopic]: (state, { payload: { name } }) => {\n const topics = state.get('topics').map(topic => {\n if (topic.get('name') === name) {\n return fromJS({ name, active: !topic.get('active') })\n }\n\n return topic\n })\n\n return state.set('topics', topics)\n },\n [Actions.drillDownRequestStart]: (state, { payload }) => {\n let newState = state.set('topics', payload.topics.map(topic => (fromJS({ name: topic, active: true }))))\n\n if (payload.entity === 'journalist') {\n const { contactId, identityId, name, personId, topicIds } = payload\n newState = newState.merge({\n contactId,\n identityId,\n name,\n personId,\n topicIds\n })\n }\n\n if (payload.entity === 'outlet') {\n newState = newState.set('outletId', payload.outletId).set('name', payload.name)\n }\n\n return newState\n },\n [combineActions(\n Actions.closeDrillDownDialog,\n Actions.clearModuleData\n )]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n filtersHistory: [],\n lastIndex: 0,\n currentIndex: 0\n})\n\nexport default handleActions({\n [Actions.addDrillDownFiltersToHistory]: (state, { payload: filters }) => {\n const history = state.get('filtersHistory')\n const lastIndex = state.get('lastIndex')\n\n const newIndex = lastIndex + 1\n const newHistory = history.push(fromJS({ filters, index: newIndex }))\n\n return state.set('filtersHistory', newHistory).set('currentIndex', newIndex).set('lastIndex', newIndex)\n },\n [Actions.setDrillDownHistoryIndex]: (state, { payload: index }) => state.set('currentIndex', index),\n [combineActions(\n Actions.closeDrillDownDialog,\n Actions.clearModuleData\n )]: () => initialState,\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport ui from './ui'\nimport statics from './statics'\nimport search from './search'\nimport filters from './filters'\nimport selected from './selected'\nimport data from './data'\nimport imports from './imports'\nimport drillDownData from './drill_down_data'\nimport drillDownFilters from './drill_down_filters'\nimport drillDownHistory from './drill_down_history'\n\nexport default combineReducers({\n ui,\n statics,\n search,\n filters,\n selected,\n data,\n imports,\n drillDownData,\n drillDownFilters,\n drillDownHistory\n})\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'UST/'\n\nexport const ustEventStarted = createAction(`${prefix}EVENT_STARTED`)\nexport const ustEventSuccess = createAction(`${prefix}EVENT_SUCCESS`)\nexport const ustEventError = createAction(`${prefix}EVENT_ERROR`)\n\nexport const ustTagStarted = createAction(`${prefix}TAG_STARTED`)\nexport const ustTagSuccess = createAction(`${prefix}TAG_SUCCESS`)\nexport const ustTagError = createAction(`${prefix}TAG_ERROR`)\n\nexport const ustPageEnter = createAction(`${prefix}PAGE_ENTER`)\nexport const ustPageLeave = createAction(`${prefix}PAGE_LEAVE`)\n\nexport const ustEnableRecording = createAction(`${prefix}ENABLE_RECORDING`)\nexport const ustInitialise = createAction(`${prefix}INITIALISE`)\n","import { handleActions } from 'redux-actions'\nimport { Map as ImmutableMap, List as ImmutableList, Set as ImmutableSet } from 'immutable'\n\nimport * as Actions from 'actions/ust'\n\nexport const initialState = ImmutableMap({\n tags: ImmutableSet(),\n events: ImmutableList()\n})\n\nexport default handleActions({\n [Actions.ustTagSuccess]: (state, { payload }) => state\n .update('tags', set => set.add({ tag: payload.tag, created: payload.created })),\n [Actions.ustEventSuccess]: (state, { payload }) => state\n .update('events', list => list.push({ event: payload.event, created: payload.created }))\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/administration'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n ccdAllowedDomains: {\n items: [],\n total: 0\n },\n ccdAllowedDomainFormData: {\n id: null,\n name: '',\n sendingVerified: false,\n receivingVerified: false,\n trackingVerified: false,\n region: '',\n openTracking: false,\n clickTracking: false,\n senderDomains: []\n },\n ccdAllowedDomainStatus: {\n sendingRecords: [],\n receivingRecords: [],\n trackingRecords: []\n }\n})\n\nexport default handleActions({\n [Actions.setAllowedDomains]: (state, { payload: { domains, total } }) => state\n .setIn(['ccdAllowedDomains', 'items'], fromJS(domains))\n .setIn(['ccdAllowedDomains', 'total'], total),\n [Actions.setAllowedDomainFormData]: (state, { payload }) => state.set('ccdAllowedDomainFormData', fromJS(payload)),\n [combineActions(\n Actions.searchAllowedDomainsSuccess,\n Actions.searchAllowedDomainsError,\n Actions.createAllowedDomainSuccess,\n Actions.createAllowedDomainError,\n Actions.updateAllowedDomainSuccess,\n Actions.updateAllowedDomainError,\n Actions.deleteAllowedDomainSuccess,\n Actions.deleteAllowedDomainError,\n Actions.refreshStatusAllowedDomainSuccess,\n Actions.refreshStatusAllowedDomainError,\n Actions.fetchAllowedDomainStatusError\n )]: state => state.set('ccdAllowedDomainFormData', initialState.get('ccdAllowedDomainFormData')),\n [Actions.fetchAllowedDomainStatusSuccess]: (state, { payload }) => state.set('ccdAllowedDomainStatus', fromJS(payload)),\n [Actions.closeAllowedDomainsStatusDialog]: state => state.set('ccdAllowedDomainStatus', initialState.get('ccdAllowedDomainStatus')),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/administration'\nimport * as AppActions from 'actions/app'\nimport * as ConfigActions from 'actions/config'\n\nimport { getDefaultDomains } from 'utils/mailgun'\n\nexport const initialState = fromJS({\n ccdAllowedDomains: {\n quickSearchQuery: '',\n newAllowedDomain: '',\n newAllowedDomainRegion: '',\n newAllowedSenderDomain: '',\n requestRunning: false,\n deleteMode: false,\n infoDialogOpen: false,\n statusDialogOpen: false,\n defaultAllowedDomainIds: []\n }\n})\n\nconst defaultDomainIds = (state, config) => {\n const { ccdAllowedDomains } = config\n\n if (!ccdAllowedDomains) {\n return state\n }\n\n const defaultDomains = getDefaultDomains()\n const ids = []\n\n defaultDomains.forEach(defaultDomain => {\n const found = ccdAllowedDomains.find(d => d.name === defaultDomain.get('domain'))\n\n if (found) {\n ids.push(found.id)\n }\n })\n\n return state.setIn(['ccdAllowedDomains', 'defaultAllowedDomainIds'], fromJS(ids))\n}\n\nexport default handleActions({\n [Actions.setAllowedDomainsQuickSearchQuery]: (state, { payload }) => state.setIn(['ccdAllowedDomains', 'quickSearchQuery'], payload),\n [Actions.setNewAllowedDomain]: (state, { payload }) => state.setIn(['ccdAllowedDomains', 'newAllowedDomain'], payload),\n [Actions.setNewAllowedDomainRegion]: (state, { payload }) => state.setIn(['ccdAllowedDomains', 'newAllowedDomainRegion'], payload),\n [Actions.setNewAllowedDomainSenderDomain]: (state, { payload }) => state.setIn(['ccdAllowedDomains', 'newAllowedSenderDomain'], payload),\n [Actions.toggleAllowedDomainsDeleteMode]: state => state\n .setIn(['ccdAllowedDomains', 'deleteMode'], !state.getIn(['ccdAllowedDomains', 'deleteMode'])),\n [combineActions(\n Actions.searchAllowedDomainsStart,\n Actions.createAllowedDomainStart,\n Actions.updateAllowedDomainStart,\n Actions.deleteAllowedDomainStart,\n Actions.refreshStatusAllowedDomainStart,\n Actions.fetchAllowedDomainStatusStart\n )]: state => state.setIn(['ccdAllowedDomains', 'requestRunning'], true),\n [Actions.createAllowedDomainSuccess]: state => state.setIn(['ccdAllowedDomains', 'newAllowedDomain'], ''),\n [combineActions(\n Actions.searchAllowedDomainsSuccess,\n Actions.searchAllowedDomainsError,\n Actions.createAllowedDomainSuccess,\n Actions.createAllowedDomainError,\n Actions.updateAllowedDomainSuccess,\n Actions.updateAllowedDomainError,\n Actions.deleteAllowedDomainSuccess,\n Actions.deleteAllowedDomainError,\n Actions.refreshStatusAllowedDomainSuccess,\n Actions.refreshStatusAllowedDomainError,\n Actions.fetchAllowedDomainStatusSuccess,\n Actions.fetchAllowedDomainStatusError\n )]: state => state\n .setIn(['ccdAllowedDomains', 'requestRunning'], false)\n .setIn(['ccdAllowedDomains', 'deleteMode'], false)\n .setIn(['ccdAllowedDomains', 'newAllowedDomain'], '')\n .setIn(['ccdAllowedDomains', 'newAllowedSenderDomain'], ''),\n [Actions.toggleAllowedDomainsInfoDialog]: state => state\n .setIn(['ccdAllowedDomains', 'infoDialogOpen'], !state.getIn(['ccdAllowedDomains', 'infoDialogOpen'])),\n [Actions.openAllowedDomainsStatusDialog]: state => state\n .setIn(['ccdAllowedDomains', 'statusDialogOpen'], true),\n [Actions.closeAllowedDomainsStatusDialog]: state => state\n .setIn(['ccdAllowedDomains', 'statusDialogOpen'], false),\n [combineActions(\n Actions.fetchAllowedDomainStatusSuccess,\n Actions.fetchAllowedDomainStatusError\n )]: state => state\n .setIn(['ccdAllowedDomains', 'requestRunning'], false),\n [ConfigActions.setCDeskConfig]: (state, { payload }) => defaultDomainIds(state, payload),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/administration'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n ccdAllowedDomains: {\n page: 1,\n limit: 5\n }\n})\n\nexport default handleActions({\n [Actions.setAllowedDomainsPage]: (state, { payload }) => state.setIn(['ccdAllowedDomains', 'page'], payload),\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\nimport ui from './ui'\nimport filter from './filter'\n\nexport default combineReducers({\n data,\n ui,\n filter\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS, Map, List } from 'immutable'\n\nimport * as Actions from 'actions/themax'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n editorialPlans: {\n items: [],\n total: 0\n },\n relatedEditorialPlans: {\n items: [],\n total: 0\n },\n publications: {\n items: [],\n total: 0\n },\n savedSearches: {\n items: []\n },\n selectedEditorialPlan: {}\n})\n\nexport default handleActions({\n [Actions.themaxSearchEditorialPlansSuccess]: (state, { payload: { response, page } }) => state.set('editorialPlans',\n fromJS({\n items: (page === 1) ? fromJS(response.editorialPlans) : state.getIn(['editorialPlans', 'items'])\n .concat(fromJS(response.editorialPlans)),\n total: response.total\n })),\n [Actions.themaxFetchRelatedEditorialPlansSuccess]: (state, { payload: { response, page } }) => state.set('relatedEditorialPlans',\n fromJS({\n items: (page === 1) ? fromJS(response.editorialPlans) : state.getIn(['relatedEditorialPlans', 'items'])\n .concat(fromJS(response.editorialPlans)),\n total: response.total\n })),\n [Actions.themaxSearchPublicationsSuccess]: (state, { payload: { response, page } }) => state.set('publications',\n fromJS({\n items: (page === 1) ? fromJS(response.publications) : state.getIn(['publications', 'items'])\n .concat(fromJS(response.publications)),\n total: response.total\n })),\n\n [Actions.searchThemaxSavedSearchesSuccess]: (state, { payload }) => state.setIn(['savedSearches', 'items'], fromJS(payload)),\n [Actions.saveThemaxSavedSearchSuccess]: (state, { payload }) => {\n const items = state.getIn(['savedSearches', 'items'])\n const index = items.findIndex(item => item.get('id') === payload.id)\n\n if (index !== -1) {\n return state.setIn(['savedSearches', 'items', index], fromJS(payload))\n }\n\n return state.updateIn(['savedSearches', 'items'], list => list.push(fromJS(payload)))\n },\n [Actions.deleteThemaxSavedSearchSuccess]: (state, { payload }) => {\n const items = state.getIn(['savedSearches', 'items'])\n const index = items.findIndex(item => item.get('id') === payload.id)\n\n if (index !== -1) {\n return state.deleteIn(['savedSearches', 'items', index])\n }\n\n return state\n },\n [Actions.favoriteThemaxSavedSearchSuccess]: (state, { payload }) => {\n let newState = state\n const items = state.getIn(['savedSearches', 'items'])\n\n const currentFavoriteIndex = items.findIndex(item => item.get('favorite') === true)\n\n if (currentFavoriteIndex !== -1) {\n newState = newState.setIn(['savedSearches', 'items', currentFavoriteIndex, 'favorite'], false)\n }\n\n const newFavoriteIndex = items.findIndex(item => item.get('id') === payload.id)\n\n if (newFavoriteIndex !== -1) {\n return newState.setIn(['savedSearches', 'items', newFavoriteIndex], fromJS(payload))\n }\n\n return newState\n },\n [Actions.setSelectedEditorialPlan]: (state, { payload }) => state.set('selectedEditorialPlan', payload),\n [Actions.themaxSaveBookmarkSuccess]: (state, { payload: { response, editorialPlanId } }) => {\n const grootEditorialPlans = fromJS([response.grootEditorialPlan])\n const editorialPlans = state.getIn(['editorialPlans', 'items'])\n const index = editorialPlans.findIndex(item => item.get('id') === editorialPlanId)\n\n let newState = state\n\n if (index !== -1) {\n const editorialPlan = editorialPlans.get(index).set('grootEditorialPlans', grootEditorialPlans)\n\n newState = newState.setIn(['editorialPlans', 'items', index], editorialPlan)\n }\n\n const relatedEditorialPlans = state.getIn(['relatedEditorialPlans', 'items'])\n const relatedIndex = relatedEditorialPlans.findIndex(item => item.get('id') === editorialPlanId)\n\n if (relatedIndex !== -1) {\n const editorialPlan = relatedEditorialPlans.get(relatedIndex).set('grootEditorialPlans', grootEditorialPlans)\n\n newState = newState.setIn(['relatedEditorialPlans', 'items', relatedIndex], editorialPlan)\n }\n\n if (state.getIn(['selectedEditorialPlan', 'id']) === editorialPlanId) {\n newState = newState.setIn(['selectedEditorialPlan', 'grootEditorialPlans'], grootEditorialPlans)\n }\n\n return newState\n },\n [Actions.themaxDeleteBookmarkSuccess]: (state, { payload: { editorialPlanId } }) => {\n const editorialPlans = state.getIn(['editorialPlans', 'items'])\n const index = editorialPlans.findIndex(item => item.get('id') === editorialPlanId)\n\n let newState = state\n\n if (index !== -1) {\n const editorialPlan = editorialPlans.get(index).set('grootEditorialPlans', fromJS([]))\n\n newState = newState.setIn(['editorialPlans', 'items', index], editorialPlan)\n }\n\n const relatedEditorialPlans = state.getIn(['relatedEditorialPlans', 'items'])\n const relatedIndex = relatedEditorialPlans.findIndex(item => item.get('id') === editorialPlanId)\n\n if (relatedIndex !== -1) {\n const editorialPlan = relatedEditorialPlans.get(relatedIndex).set('grootEditorialPlans', fromJS([]))\n\n newState = newState.setIn(['relatedEditorialPlans', 'items', relatedIndex], editorialPlan)\n }\n\n if (state.getIn(['selectedEditorialPlan', 'id']) === editorialPlanId) {\n newState = newState.setIn(['selectedEditorialPlan', 'grootEditorialPlans'], fromJS([]))\n }\n\n return newState\n },\n [Actions.closeDetailedViewDialog]: state => state\n .set('selectedEditorialPlan', Map())\n .setIn(['relatedEditorialPlans', 'items'], List())\n .setIn(['relatedEditorialPlans', 'total'], 0),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS, List } from 'immutable'\nimport moment from 'moment-timezone'\n\nimport { datesToRange, calculateIntervals } from 'utils/date'\nimport {\n ThemaxSearchFields,\n ThemaxReachFilterOptions as reachFilterOptions,\n ThemaxPageAveFilterOptions as pageAveFilterOptions\n} from 'static/constants'\n\nimport * as Actions from 'actions/themax'\nimport * as AppActions from 'actions/app'\n\nconst themaxSearchFieldsMapping = {\n [ThemaxSearchFields.TOPIC_PLAN]: 'topicPlanQueries',\n [ThemaxSearchFields.PUBLICATION_NAME]: 'publicationQueries',\n [ThemaxSearchFields.PUBLICATION_INFO]: 'publicationQueries',\n [ThemaxSearchFields.REACH_MIN]: 'reachMin',\n [ThemaxSearchFields.REACH_MAX]: 'reachMax',\n [ThemaxSearchFields.PAGE_AVE_MIN]: 'pageAveMin',\n [ThemaxSearchFields.PAGE_AVE_MAX]: 'pageAveMax'\n}\n\nexport const fromActiveFilterField = field => {\n if (field === ThemaxSearchFields.TOPIC_PLAN) {\n return 'topicPlanQueries'\n }\n\n if (field === ThemaxSearchFields.PUBLICATION_NAME) {\n return 'publicationQueries'\n }\n\n if (field === ThemaxSearchFields.PUBLICATION_INFO) {\n return 'publicationQueries'\n }\n\n return field\n}\n\nconst { allowedDateIntervals: defaultAllowedDateIntervals } = calculateIntervals(null, new Date(), new Date())\nexport const initialState = fromJS({\n allowedDateIntervals: defaultAllowedDateIntervals,\n allDateIntervals: defaultAllowedDateIntervals,\n booleans: {\n bookmarkedOnly: false\n },\n reachFilter: {\n filtered: false,\n min: reachFilterOptions.min,\n max: reachFilterOptions.max\n },\n pageAveFilter: {\n filtered: false,\n min: pageAveFilterOptions.min,\n max: pageAveFilterOptions.max\n },\n topicPlanQueries: [],\n publicationQueries: [],\n // has the possibility to add multiple publications but for now we only support one\n // so we can keep it as a list but with singular name\n publication: [],\n mediaTypes: [],\n mediaTopics: [],\n countries: [],\n selectedDate: {\n from: moment().startOf('month').toDate(),\n to: moment().endOf('month').toDate(),\n range: 'this_month',\n interval: null,\n type: 'editorialDeadline'\n },\n editorialPlansPage: 1,\n relatedEditorialPlansPage: 1,\n publicationsPage: 1,\n limit: 30,\n editorialPlansSorting: {\n sortBy: 'editorial_deadline',\n sortOrder: 'desc'\n },\n publicationsSorting: {\n sortBy: 'reach',\n sortOrder: 'desc'\n }\n})\n\nconst specialFilters = ['booleans', 'reachFilter', 'pageAveFilter']\n\nconst mapSelectedItem = (item, field) => (fromJS(item).merge({\n id: item.id,\n label: item.label || item.name,\n field\n}))\nconst mapSelectedItems = (items, state, field, fieldNameOverride) => {\n const currentFilters = state.get(field, fromJS([]))\n\n // Do not replace existing filters to keep flags like inverted\n return fromJS(items.map(item => {\n const found = currentFilters.find(f => f.get('id') === item.id)\n\n return found || mapSelectedItem(item, fieldNameOverride || field)\n }))\n}\n\nexport default handleActions({\n [Actions.setSelectedThemaxFilters]: (state, { payload }) => {\n const { booleans, reachFilter, pageAveFilter } = payload\n const newFilters = Object.keys(payload)\n .filter(key => specialFilters.indexOf(key) === -1)\n .reduce((acc, key) => ({ ...acc, [key]: mapSelectedItems(payload[key], state, key) }), {})\n\n return state\n .merge(newFilters)\n .merge({\n booleans: fromJS(booleans),\n reachFilter,\n pageAveFilter\n })\n },\n [Actions.setSelectedPublicationIds]: (state, { payload }) => state.set('publication', payload),\n [Actions.removeFilter]: (state, { payload: { field, index } }) => {\n const fieldName = fromActiveFilterField(field)\n\n if (List.isList(state.get(fieldName))) {\n return state.update(fieldName, list => list.delete(index))\n }\n\n if (field === ThemaxSearchFields.REACH_MIN) {\n return state.set('reachFilter', state.get('reachFilter').set('filtered', false))\n }\n\n if (field === ThemaxSearchFields.REACH_MAX) {\n return state.set('reachFilter', state.get('reachFilter').set('filtered', false))\n }\n\n if (field === ThemaxSearchFields.PAGE_AVE_MIN) {\n return state.set('pageAveFilter', state.get('pageAveFilter').set('filtered', false))\n }\n\n if (field === ThemaxSearchFields.PAGE_AVE_MAX) {\n return state.set('pageAveFilter', state.get('pageAveFilter').set('filtered', false))\n }\n\n // should always be the booleans case\n return state.setIn([fieldName, index], false)\n },\n\n [Actions.invertFilter]: (state, { payload: { field, index } }) => {\n const fieldName = fromActiveFilterField(field)\n\n if (List.isList(state.get(fieldName))) {\n return state.updateIn([fieldName, index, 'inverted'], inverted => !inverted)\n }\n\n return state\n },\n [Actions.updateFilter]: (state, { payload: { filter, index } }) => {\n const key = themaxSearchFieldsMapping[filter.get('field')]\n const queries = state.get(key)\n\n if (List.isList(queries)) {\n return state.setIn([key, index], filter.set('updated', true))\n }\n\n return state\n },\n [Actions.changeDate]: (state, { payload: { from, to, range } }) => {\n const { dateInterval, allowedDateIntervals } = calculateIntervals(state.getIn(['selectedDate', 'interval']), from, to)\n\n return state.update('selectedDate', selectedDate => selectedDate.merge({\n from,\n to,\n range: range || datesToRange(from, to),\n interval: dateInterval,\n allowedDateIntervals\n }))\n },\n [Actions.addQuery]: (state, { payload: { query, type, prefix } }) => {\n const key = themaxSearchFieldsMapping[type]\n const queries = state.get(key)\n\n if (!queries.find(q => q.get('value') === query)) {\n return state.set(key, queries.push(fromJS({\n prefix,\n label: query,\n value: query,\n field: type,\n inverted: false\n })))\n }\n\n return state\n },\n [Actions.setThemaxSavedSearchFilters]: (state, { payload: { filters } }) => state.merge(fromJS(filters)),\n\n [Actions.setThemaxPage]: (state, { payload: { pageType, pageValue } }) => state.set(pageType, pageValue),\n [Actions.setThemaxLimit]: (state, { payload }) => state.set('limit', payload),\n [Actions.setThemaxSort]: (state, { payload: { sortBy, sortOrder, sortType } }) => state.update(\n sortType,\n oldValue => oldValue.merge(fromJS({ sortBy, sortOrder }))\n ),\n\n [Actions.closeDetailedViewDialog]: state => state.set('relatedEditorialPlansPage', 1),\n\n [Actions.resetThemaxFilters]: () => initialState,\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/themax'\nimport * as AppActions from 'actions/app'\nimport * as ConfigActions from 'actions/config'\n\nconst queryTypeLabelMapping = {\n topic_plan: 'search_in_topic_plans',\n publication_name: 'search_by_publication_name',\n publication_info: 'search_in_publication_info'\n}\n\nexport const initialState = fromJS({\n moduleInitialized: false,\n activeFiltersCollapsed: true,\n showAdvancedSearch: false,\n showDateForm: false,\n queryType: 'topic_plan',\n searchBarLabel: 'search_in_topic_plans',\n searchRequestRunning: false,\n searchEditorialPlansRunning: false,\n searchPublicationsRunning: false,\n fetchMoreRequestRunning: false,\n tabView: 'editorial_plans',\n savedSearchRequestRunning: false,\n showDetailedViewDialog: false,\n bookmarkRequestRunningFor: null,\n excelExportRequestRunning: false,\n showWelcomeDialog: false,\n showOrderDialog: false,\n showOrderSuccessDialog: false,\n orderRequestRunning: false\n})\n\nexport default handleActions({\n [Actions.setSelectedQueryType]: (state, { payload }) => {\n const newState = state.set('queryType', payload)\n\n if (queryTypeLabelMapping[payload]) {\n return newState.set('searchBarLabel', queryTypeLabelMapping[payload])\n }\n\n return state\n },\n [Actions.changeTabView]: (state, { payload }) => state\n .set('tabView', payload)\n .set('queryType', payload === 'media_profiles' ? 'publication_name' : 'topic_plan')\n .set('searchBarLabel', payload === 'media_profiles' ? queryTypeLabelMapping.publication_name : queryTypeLabelMapping.topic_plan),\n [Actions.toggleAdvancedSearch]: state => state.update('showAdvancedSearch', showAdvancedSearch => !showAdvancedSearch),\n [Actions.toggleDateForm]: state => state.update('showDateForm', showDateForm => !showDateForm),\n [Actions.toggleActiveFilters]: state => state.update('activeFiltersCollapsed', v => !v),\n [Actions.applyThemaxFilters]: state => state.set('showAdvancedSearch', false),\n [Actions.resetThemaxFilters]: state => state.set('showAdvancedSearch', false),\n [Actions.themaxSearchRequestStart]: state => state.set('searchRequestRunning', true),\n [combineActions(\n Actions.themaxSearchRequestSuccess,\n Actions.themaxSearchRequestError\n )]: state => state.set('fetchMoreRequestRunning', false),\n [combineActions(\n Actions.themaxFetchRelatedEditorialPlansSuccess,\n Actions.themaxFetchRelatedEditorialPlansError\n )]: state => state.set('searchRequestRunning', false).set('fetchMoreRequestRunning', false),\n [Actions.themaxSearchEditorialPlans]: state => state.set('searchEditorialPlansRunning', true),\n [combineActions(\n Actions.themaxSearchEditorialPlansSuccess,\n Actions.themaxSearchEditorialPlansError\n )]: state => state.set('searchEditorialPlansRunning', false).set('searchRequestRunning', false),\n [Actions.themaxSearchPublications]: state => state.set('searchPublicationsRunning', true),\n [combineActions(\n Actions.themaxSearchPublicationsSuccess,\n Actions.themaxSearchPublicationsError\n )]: state => state.set('searchPublicationsRunning', false).set('searchRequestRunning', false),\n\n [combineActions(\n Actions.searchThemaxSavedSearchesStart,\n Actions.saveThemaxSavedSearchStart\n )]: state => state.set('savedSearchRequestRunning', true),\n [combineActions(\n Actions.themaxFetchMoreEditorialPlansStart,\n Actions.themaxFetchRelatedEditorialPlansStart,\n Actions.themaxFetchMorePublicationsStart\n )]: state => state.set('fetchMoreRequestRunning', true),\n\n [combineActions(\n Actions.searchThemaxSavedSearchesSuccess,\n Actions.searchThemaxSavedSearchesError,\n Actions.saveThemaxSavedSearchSuccess,\n Actions.saveThemaxSavedSearchError\n )]: state => state.set('savedSearchRequestRunning', false),\n\n [combineActions(\n Actions.themaxSaveBookmarkStart,\n Actions.themaxDeleteBookmarkStart\n )]: (state, { payload: { editorialPlanId } }) => state.set('bookmarkRequestRunningFor', editorialPlanId),\n\n [combineActions(\n Actions.themaxSaveBookmarkSuccess,\n Actions.themaxDeleteBookmarkSuccess,\n Actions.themaxSaveBookmarkError,\n Actions.themaxDeleteBookmarkError\n )]: state => state.set('bookmarkRequestRunningFor', null),\n\n [Actions.setThemaxModuleInitialized]: (state, { payload }) => state.set('moduleInitialized', payload),\n [Actions.openDetailedViewDialog]: state => state.set('showDetailedViewDialog', true),\n [Actions.closeDetailedViewDialog]: state => state.set('showDetailedViewDialog', false),\n [Actions.exportEditorialPlansStart]: state => state.set('excelExportRequestRunning', true),\n [combineActions(\n Actions.exportEditorialPlansSuccess,\n Actions.exportEditorialPlansError\n )]: state => state.set('excelExportRequestRunning', false),\n\n [Actions.openWelcomeDialog]: state => state.set('showWelcomeDialog', true),\n [Actions.closeWelcomeDialog]: state => state.set('showWelcomeDialog', false),\n\n [Actions.openOrderDialog]: state => state.set('showOrderDialog', true),\n [Actions.closeOrderDialog]: state => state.set('showOrderDialog', false),\n\n [Actions.closeOrderSuccessDialog]: state => state.set('showOrderSuccessDialog', false),\n\n [ConfigActions.orderPaidVersionStart]: state => state.set('orderRequestRunning', true),\n [combineActions(\n ConfigActions.orderPaidVersionSuccess,\n ConfigActions.orderPaidVersionError\n )]: state => state.set('orderRequestRunning', false),\n\n [ConfigActions.orderPaidVersionSuccess]: state => state.set('showOrderSuccessDialog', true),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport data from './data'\nimport filter from './filter'\nimport ui from './ui'\n\nexport default combineReducers({\n data,\n filter,\n ui\n})\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/ai'\nimport * as UserActions from 'actions/user'\nimport * as AppActions from 'actions/app'\n\nexport const initialState = fromJS({\n locale: 'en'\n})\n\nexport default handleActions({\n [Actions.setOption]: (state, { payload: { key, value } }) => state.set(key, value),\n\n [UserActions.setUser]: (state, { payload: { languageShort } }) => state.set('locale', languageShort),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions, combineActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as AppActions from 'actions/app'\nimport * as NewsActions from 'actions/news'\nimport * as ExportActions from 'actions/export'\nimport * as Actions from 'actions/ai'\n\nexport const initialState = fromJS({\n showDialog: false,\n loading: false,\n analysis: null\n})\n\nexport default handleActions({\n [combineActions(\n Actions.showAiAnalysisDialog,\n NewsActions.showAiAnalysisDialog\n )]: state => state.merge({\n showDialog: true,\n analysis: null\n }),\n [Actions.hideAiAnalysisDialog]: state => state.merge({\n showDialog: false,\n analysis: null\n }),\n\n [Actions.aiAnalysisStart]: state => state.set('loading', true),\n [Actions.aiAnalysisSuccess]: (state, { payload: { analysis } }) => state.merge({\n loading: false,\n analysis\n }),\n [Actions.aiAnalysisError]: state => state.set('loading', false),\n\n [Actions.setAiAnalysis]: (state, { payload: analysis }) => state.set('analysis', analysis),\n\n [ExportActions.showExportDialog]: state => state.set('analysis', null),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/ai'\n\nexport const initialState = fromJS({\n showOrderSummariesDialog: false\n})\n\nexport default handleActions({\n [Actions.showOrderSummariesDialog]: state => state.set('showOrderSummariesDialog', true),\n [Actions.hideOrderSummariesDialog]: state => state.set('showOrderSummariesDialog', false),\n\n [AppActions.resetState]: () => initialState\n}, initialState)\n","import { combineReducers } from 'redux-immutable'\n\nimport settings from './settings'\nimport analysis from './analysis'\nimport ui from './ui'\n\nexport default combineReducers({\n settings,\n analysis,\n ui\n})\n","import { combineReducers } from 'redux'\nimport { fromJS } from 'immutable'\n\nimport app from './app'\nimport config from './config'\nimport customTags from './custom_tags'\nimport dashboard from './dashboard'\nimport device from './device'\nimport environment from './environment'\nimport i18n from './i18n'\nimport identitySets from './identity_sets'\nimport influencers from './influencers'\nimport mailingLists from './mailing_lists'\nimport mediaReviews from './media_reviews'\nimport news from './news'\nimport pageIdentities from './page_identities'\nimport publications from './publications'\nimport savedSearches from './saved_searches'\nimport statics from './statics'\nimport subscriptions from './subscriptions'\nimport user from './user'\nimport whitelabel from './whitelabel'\nimport savedDashboard from './saved_dashboard'\nimport savedCharts from './saved_charts'\nimport darknet from './darknet'\nimport personalSettings from './personal_settings'\nimport contentDesk from './content_desk'\nimport contactManagement from './contact_management'\nimport emailTemplatesLibrary from './email_templates_library'\nimport notifications from './notifications'\nimport unsplash from './unsplash'\nimport anewstip from './anewstip'\nimport ust from './ust'\nimport administration from './administration'\nimport themax from './themax'\nimport ai from './ai'\n\nimport { logoutRequestSuccess } from '../actions/app'\n\nconst appReducer = routerReducer => combineReducers({\n app,\n ai,\n config,\n customTags,\n dashboard,\n device,\n environment,\n i18n,\n identitySets,\n influencers,\n mailingLists,\n mediaReviews,\n news,\n pageIdentities,\n publications,\n router: routerReducer,\n savedSearches,\n savedDashboard,\n savedCharts,\n statics,\n subscriptions,\n user,\n whitelabel,\n darknet,\n personalSettings,\n contentDesk,\n contactManagement,\n notifications,\n unsplash,\n anewstip,\n emailTemplatesLibrary,\n ust,\n administration,\n themax\n})\n\n// Pattern inspired by http://stackoverflow.com/questions/35622588/how-to-reset-the-state-of-a-redux-store\nconst rootReducer = routerReducer => (state, action) => {\n let newState = state\n\n if (action.type === logoutRequestSuccess().type) {\n // Keep width and height for login page\n newState = {\n environment: state.environment,\n whitelabel: state.whitelabel,\n i18n: state.i18n,\n app: fromJS({\n activeNewsradarId: state.app.get('activeNewsradarId')\n }),\n device: state.device\n }\n }\n\n return appReducer(routerReducer)(newState, action)\n}\n\n// This root reducer is used to create the store\nexport default rootReducer\n","export default function html2canvas(el, opts, callback) {\n import(/* webpackChunkName: \"html2canvas\" */ 'html2canvas').then(mod => {\n const func = mod.default\n func(el, opts).then(canvas => callback(canvas))\n })\n}\n","/* global document, window, XMLSerializer, Image, Blob */\nimport html2canvas from 'utils/html2canvas'\nimport { ChartBackgroundColors } from 'static/themes'\n\nconst viewBoxFactor = 3.3\nconst viewXYFactor = viewBoxFactor + ((viewBoxFactor / 3) * 2)\n\nconst resolveCanvas = (canvas, resolve, callback, opts = {}) => {\n const result = {\n dataUrl: canvas.toDataURL(opts.mimeType || 'image/png'),\n canvas\n }\n\n if (canvas.msToBlob) {\n resolve({ ...result, blob: canvas.msToBlob() })\n } else {\n canvas.toBlob(blob => resolve({ ...result, blob }))\n }\n\n if (callback) {\n callback()\n }\n}\nconst removeElements = elms => elms.forEach(el => el.remove())\n\nexport default (containerId, legendSelector, darkMode, whitelabelTheme) => {\n const container = document.getElementById(containerId)\n const svgEl = container.querySelector('svg').cloneNode(true)\n\n const elementsRemove = svgEl.querySelectorAll('.recharts-layer.recharts-line-dots, .recharts-layer.recharts-area-dots')\n removeElements(elementsRemove)\n\n let legendEl = null\n\n if (legendSelector) {\n legendEl = container.querySelector(legendSelector)\n }\n\n const width = svgEl.getAttribute('width') * 5\n const height = svgEl.getAttribute('height') * 5\n const viewBoxWidth = width / viewBoxFactor\n const viewBoxHeight = height / viewBoxFactor\n const viewBoxX = viewBoxWidth / viewXYFactor\n const viewBoxY = viewBoxHeight / viewXYFactor\n const viewBox = `-${viewBoxX} -${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}`\n\n let backgroundColor\n\n if (whitelabelTheme === 'plotlights') {\n backgroundColor = ChartBackgroundColors.PLOTLIGHTS\n } else {\n backgroundColor = darkMode ? ChartBackgroundColors.DARKMODE : ChartBackgroundColors.DEFAULT\n }\n\n svgEl.setAttribute('style', `background-color: ${backgroundColor}; font-family: Roboto, sans-serif`)\n svgEl.setAttribute('width', width)\n svgEl.setAttribute('height', height)\n svgEl.setAttribute('viewBox', viewBox)\n\n const svgString = new XMLSerializer().serializeToString(svgEl)\n const svg = new Blob([svgString], {\n type: 'image/svg+xml;charset=utf-8'\n })\n const DOMURL = window.URL || window.webkitURL || window\n const url = DOMURL.createObjectURL(svg)\n\n const canvas = document.createElement('canvas')\n canvas.width = width - (viewBoxX * viewBoxFactor)\n canvas.height = height - (viewBoxY * viewBoxFactor)\n const ctx = canvas.getContext('2d')\n\n return new Promise(resolve => {\n const img = new Image()\n\n img.onload = () => {\n ctx.drawImage(img, -(viewBoxX * 2), -(viewBoxY * 2))\n\n if (legendEl) {\n const newLegendEl = legendEl.cloneNode(true)\n newLegendEl.style.position = 'relative'\n newLegendEl.style.top = `${window.innerHeight}px`\n newLegendEl.style.left = 0\n newLegendEl.style.width = `${canvas.width * 0.8}px`\n newLegendEl.style['font-size'] = '40px'\n newLegendEl.style['background-color'] = backgroundColor\n const legendSvgs = newLegendEl.getElementsByTagName('svg')\n for (let i = 0; i < legendSvgs.length; i += 1) {\n if (legendSvgs[i]) {\n legendSvgs[i].setAttribute('width', 56)\n legendSvgs[i].setAttribute('height', 56)\n }\n }\n document.body.appendChild(newLegendEl)\n html2canvas(newLegendEl, { logging: false }, can => {\n ctx.drawImage(can, (canvas.width / 2) - (can.width / 2), canvas.height - (can.height + 5))\n resolveCanvas(canvas, resolve)\n newLegendEl.remove()\n })\n } else {\n resolveCanvas(canvas, resolve)\n }\n }\n img.src = url\n })\n}\n\nexport const downloadCanvas = (containerId, selector, opts = {}) => {\n const container = document.getElementById(containerId)\n let el = container.firstChild\n\n if (selector) {\n el = container.querySelector(selector)\n el.setAttribute('style', 'animation: none')\n }\n\n if (opts.backgroundImageUrl) {\n el.style.background = `url(${opts.backgroundImageUrl}) no-repeat center center fixed`\n el.style.backgroundSize = 'cover'\n }\n\n const buttons = Array.prototype.slice.call(el.getElementsByTagName('button'))\n const tooltips = Array.prototype.slice.call(el.getElementsByClassName('recharts-tooltip-wrapper'))\n\n buttons.forEach(button => {\n button.style.visibility = 'hidden' // eslint-disable-line\n })\n\n tooltips.forEach(tooltip => {\n tooltip.style.visibility = 'hidden' // eslint-disable-line\n })\n\n const options = { ...({ logging: false, scale: 5, allowTaint: true, useCORS: true }), ...(opts || {}) }\n\n return new Promise(resolve => {\n html2canvas(el, options, canvas => {\n resolveCanvas(canvas, resolve, null, options)\n\n if (opts.backgroundImageUrl) {\n el.style.removeProperty('background')\n el.style.removeProperty('background-size')\n }\n\n buttons.forEach(button => {\n button.style.visibility = 'visible' // eslint-disable-line\n })\n })\n })\n}\n\nexport const downloadDomToImage = containerId => {\n const container = document.getElementById(containerId)\n const el = container.firstChild\n const buttons = Array.prototype.slice.call(el.getElementsByTagName('button'))\n\n buttons.forEach(button => {\n button.style.visibility = 'hidden' // eslint-disable-line\n })\n\n const opts = {\n scale: 3\n }\n\n return new Promise(resolve => {\n import(/* webpackChunkName: \"dom-to-image\" */ 'dom-to-image-improved').then(({ default: domtoimage }) => {\n domtoimage.toCanvas(el, opts).then(canvas => {\n resolveCanvas(canvas, resolve)\n\n buttons.forEach(button => {\n button.style.visibility = 'visible' // eslint-disable-line\n })\n })\n })\n })\n}\n","import * as Api from '../utils/api'\n\nexport default () => Api.doJsonRequest(\n 'GET',\n 'version.json',\n Api.jsonHeaders,\n {},\n false\n)\n","export const canvasToPdf = (canvas, dataUrl, filename) => {\n import(/* webpackChunkName: \"jspdf\" */ 'jspdf').then(({ jsPDF }) => {\n const pdf = new jsPDF({\n unit: 'px',\n hotfixes: ['px_scaling'],\n orientation: canvas.width > canvas.height ? 'landscape' : 'portrait',\n format: [canvas.width, canvas.height]\n })\n\n pdf.addImage(dataUrl, 'JPEG', 0, 0)\n pdf.save(filename)\n })\n}\n\nexport const htmlToPdf = (element, filename) => {\n import(/* webpackChunkName: \"jspdf\" */ 'jspdf').then(({ jsPDF }) => {\n const pdf = new jsPDF({\n unit: 'px',\n hotfixes: ['px_scaling'],\n format: 'a4'\n })\n\n const padding = 20\n const width = 793\n\n pdf.html(\n element,\n {\n width: width - padding * 2,\n windowWidth: width - padding * 2,\n x: padding,\n y: padding,\n callback: doc => {\n doc.save(filename)\n }\n }\n )\n })\n}\n","/* global document */\nimport { put, call, select, takeEvery, takeLatest, all, delay } from 'redux-saga/effects'\nimport moment from 'moment-timezone'\nimport decamelizeKeysDeep from 'decamelize-keys-deep'\n\nimport * as Actions from 'actions/app'\nimport { configRequestStart } from 'actions/config'\n// import * as GaActions from 'actions/ga'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/bff'\nimport getNewViewVersion from 'api/version'\nimport * as UserActions from 'actions/user'\nimport { navigate, backToLogin, redirectAuthenticated } from 'actions/navigation'\nimport { logException } from 'utils/error'\nimport * as CookieHelper from 'utils/cookieHelper'\nimport { CookieNames } from 'static/constants'\nimport { uploadFile, downloadBlob } from 'utils/sagas'\nimport { downloadCanvas } from 'utils/downloadSvg'\nimport { canvasToPdf, htmlToPdf } from 'utils/jsPdf'\n\nexport function* appMessage(text, success) {\n yield put(Actions.toggleSuccess(success === undefined ? true : success))\n yield put(Actions.toggleAppMessage(true))\n yield delay(250)\n yield put(Actions.setAppMessage(text))\n yield delay(750)\n yield put(Actions.toggleAppMessage(false))\n yield put(Actions.setAppMessage(null))\n}\n\nexport function* appSnackbarMessage(text, variant, preventDuplicate) {\n const prevDuplicate = preventDuplicate || false\n yield put(Actions.triggerAppSnackbarMessage({ text, variant, preventDuplicate: prevDuplicate }))\n}\n\n// CAUTION: Also used in sagas/dashboard\nexport function* newsradarSwitch(id) {\n yield put(Actions.resetState())\n yield put(Actions.setActiveNewsradar(id))\n yield put(configRequestStart())\n}\n\nexport function* switchNewsradar(action) {\n const isSelectedDashboard = yield select(Selectors.isSelectedDashboard)\n\n if (isSelectedDashboard) {\n yield put(navigate('/app/dashboard'))\n }\n\n yield* newsradarSwitch(action.payload)\n}\n\nexport function* setActiveNewsradar({ payload: newsradarId }) {\n yield call(CookieHelper.saveCookie, CookieNames.NEWSRADAR, newsradarId)\n}\n\nexport function* genericSuccessMessage() {\n const i18n = yield select(Selectors.getI18n)\n yield call(appMessage, i18n.get('success'), true)\n}\n\nexport function* genericErrorMessage() {\n const i18n = yield select(Selectors.getI18n)\n yield call(appMessage, i18n.get('unknown_error'), false)\n}\n\nexport function* showAppMessage({ payload: { text, success } }) {\n yield call(appMessage, text, success)\n}\n\nexport function* showAppErrorMessage({ payload: text }) {\n yield call(appMessage, text, false)\n}\n\nexport function* showAppSuccessMessage({ payload: text }) {\n yield call(appMessage, text, true)\n}\n\nexport function* showAppSnackbarMessage({ payload: { text, variant, preventDuplicate } }) {\n yield call(appSnackbarMessage, text, variant, preventDuplicate)\n}\n\nexport function* logout() {\n try {\n const accessToken = yield select(Selectors.getAccessToken)\n const result = yield call(Api.logout, { access_token: accessToken })\n\n yield put(Actions.logoutRequestSuccess(result))\n yield call(CookieHelper.deleteSessionCookie)\n } catch (error) {\n yield put(Actions.logoutRequestError(error))\n yield put(Actions.exception(error))\n }\n}\n\nexport function* login({ payload: { username, password, secret } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const newsradarId = yield select(Selectors.getNewsradarId)\n\n if (!(username && password) && !secret) {\n yield put(Actions.loginRequestAborted(i18n.get('login_provide_both')))\n } else {\n const { user, newsradarId: newNewsradarId } = yield call(Api.login, { username, password, secret, newsradar_id: newsradarId })\n\n if (newNewsradarId !== newsradarId) {\n yield put(Actions.setActiveNewsradar(newNewsradarId))\n }\n\n yield put(Actions.loginRequestSuccess(user))\n yield call(CookieHelper.deleteSessionCookie)\n }\n } catch (error) {\n let msg = i18n.get('login_invalid')\n\n if (error.response) {\n if (error.response.statusCode === 422) {\n msg = i18n.get('login_no_newsradar')\n }\n\n if (error.response.statusCode === 405) {\n msg = i18n.get('login_method_not_allowed')\n }\n\n if ([401, 422, 405].indexOf(error.response.statusCode) === -1) {\n yield put(Actions.exception(error))\n }\n } else {\n msg = i18n.get('login_unknown_error')\n }\n\n yield call(CookieHelper.deleteSessionCookie)\n yield put(UserActions.reset())\n\n if (secret) {\n msg = i18n.get('login_link_invalid')\n yield put(backToLogin())\n }\n\n yield put(Actions.loginRequestError(msg))\n }\n}\n\nexport function* loginRequestSuccess({ payload: user }) {\n if (!user.newsradars.length) {\n const i18n = yield select(Selectors.getI18n)\n yield put(Actions.loginRequestError(i18n.get('login_no_newsradar')))\n } else {\n let newsradarId = user.newsradars[0].id\n const currentNewsradarId = yield select(Selectors.getNewsradarId)\n\n if (currentNewsradarId && user.newsradars.map(v => v.id).indexOf(parseInt(currentNewsradarId, 10)) !== -1) {\n newsradarId = currentNewsradarId\n }\n\n yield put(Actions.setActiveNewsradar(newsradarId))\n yield put(UserActions.setUser(user))\n yield put(redirectAuthenticated())\n }\n}\n\nexport function* checkBffVersion({ payload: newBffVersion }) {\n const bffVersion = yield select(Selectors.getBffVersion)\n const autoRefresh = yield select(Selectors.getDashboardAutoRefresh)\n\n if (!bffVersion) {\n yield put(Actions.setBffVersion(newBffVersion))\n } else if (bffVersion !== newBffVersion && !autoRefresh) {\n yield put(Actions.setBffVersion(newBffVersion))\n yield put(Actions.forceReload())\n }\n}\n\nexport function* checkViewVersion() {\n try {\n for (; ;) {\n const viewVersion = yield select(Selectors.getViewVersion)\n const { version: newViewVersion } = yield call(getNewViewVersion)\n const autoRefresh = yield select(Selectors.getDashboardAutoRefresh)\n\n if (!viewVersion) {\n yield put(Actions.setViewVersion(newViewVersion))\n } else if (viewVersion !== newViewVersion && !autoRefresh) {\n yield put(Actions.setViewVersion(newViewVersion))\n yield put(Actions.forceReload())\n }\n\n yield delay(60000)\n }\n } catch (e) { // eslint-disable-line\n } finally {\n yield delay(60000)\n yield put(Actions.checkViewVersion())\n }\n}\n\nexport function* exception({ payload: error }) {\n if (!error.response || (error.response && error.response.statusCode !== 401)) {\n yield call(logException, error)\n } else {\n const i18n = yield select(Selectors.getI18n)\n yield put(Actions.loginRequestError(i18n.get('not_logged_in')))\n yield put(UserActions.reset())\n }\n}\n\nexport function* uploadGeneratedFile(data, filename, mimeType) {\n try {\n yield put(Actions.uploadGeneratedFileStart())\n\n const result = yield call(uploadFile, data, filename, mimeType, moment().add(1, 'hours').format())\n\n yield put(Actions.uploadGeneratedFileSuccess(result))\n } catch (error) {\n yield put(Actions.uploadGeneratedFileError(error))\n yield put(Actions.genericErrorMessage())\n yield put(Actions.exception(error))\n }\n}\n\nexport function* sso({ payload: { type, data } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const result = yield call(Api.sso, { type, data: decamelizeKeysDeep(data) })\n\n if (result.status === 403) {\n yield put(Actions.loginRequestError(\n i18n.get(\n 'sso_user_does_not_exist',\n {\n email: `${result.email}`\n }\n )\n ))\n } else {\n yield put(Actions.loginRequestSuccess(result))\n }\n } catch (error) {\n yield put(Actions.ssoRequestError(i18n.get('unknown_error')))\n yield put(Actions.genericErrorMessage())\n yield put(Actions.exception(error))\n }\n}\n\nexport function* downloadElementAsImage({ payload: { id, filename, selector, opts } }) {\n try {\n const result = yield call(downloadCanvas, id, selector, opts)\n\n yield call(downloadBlob, result.blob, filename, 'image/png')\n } catch (error) {\n yield put(Actions.exception(error))\n yield put(Actions.genericErrorMessage())\n } finally {\n yield put(Actions.downloadElementAsImageDone())\n }\n}\n\nexport function* downloadElementAsPdf({ payload: { id, filename, selector, opts, asHtml } }) {\n try {\n if (asHtml) {\n const html = document.getElementById(id).innerHTML\n\n yield call(htmlToPdf, html, filename)\n } else {\n const options = { ...(opts || {}), ...{ mimeType: 'image/jpeg' } }\n\n const { canvas, dataUrl } = yield call(downloadCanvas, id, selector, options)\n\n yield call(canvasToPdf, canvas, dataUrl, filename)\n }\n } catch (error) {\n yield put(Actions.exception(error))\n yield put(Actions.genericErrorMessage())\n } finally {\n yield put(Actions.downloadElementAsPdfDone())\n }\n}\n\nexport function* clickTrace({ payload: { measurement, tags, values } }) {\n try {\n yield call(Api.clickTrace, {\n measurement,\n tags: tags || {},\n values: values || {}\n })\n } catch (e) {\n logException(e)\n }\n}\n\nexport function* watchSwitchNewsradar() {\n yield takeEvery(Actions.switchNewsradar, switchNewsradar)\n}\n\nexport function* watchSetActiveNewsradar() {\n yield takeEvery(Actions.setActiveNewsradar, setActiveNewsradar)\n}\n\nexport function* watchGenericSuccess() {\n yield takeEvery(Actions.genericSuccessMessage, genericSuccessMessage)\n}\n\nexport function* watchShowAppMessage() {\n yield takeLatest(Actions.showAppMessage, showAppMessage)\n}\n\nexport function* watchShowAppErrorMessage() {\n yield takeLatest(Actions.showAppErrorMessage, showAppErrorMessage)\n}\n\nexport function* watchShowAppSuccessMessage() {\n yield takeLatest(Actions.showAppSuccessMessage, showAppSuccessMessage)\n}\n\nexport function* watchShowAppSnackbarMessage() {\n yield takeLatest(Actions.showAppSnackbarMessage, showAppSnackbarMessage)\n}\n\nexport function* watchGenericError() {\n yield takeEvery(Actions.genericErrorMessage, genericErrorMessage)\n}\n\nexport function* watchLogout() {\n yield takeEvery(Actions.logoutRequestStart, logout)\n}\n\nexport function* watchLogin() {\n yield takeEvery(Actions.loginRequestStart, login)\n}\n\nexport function* watchLoginSuccess() {\n yield takeEvery(Actions.loginRequestSuccess, loginRequestSuccess)\n}\n\nexport function* watchCheckBffVersion() {\n yield takeEvery(Actions.checkBffVersion, checkBffVersion)\n}\n\nexport function* watchCheckViewVersion() {\n yield takeEvery(Actions.checkViewVersion, checkViewVersion)\n}\n\nexport function* watchException() {\n yield takeEvery(Actions.exception, exception)\n}\n\nexport function* watchSso() {\n yield takeEvery(Actions.ssoRequestStart, sso)\n}\n\nexport function* watchDownloadElementAsImage() {\n yield takeEvery(Actions.downloadElementAsImage, downloadElementAsImage)\n}\n\nexport function* watchDownloadElementAsPdf() {\n yield takeEvery(Actions.downloadElementAsPdf, downloadElementAsPdf)\n}\n\nexport function* watchClickTrace() {\n yield takeEvery(Actions.clickTrace, clickTrace)\n}\n\nexport default function* appSaga() {\n yield all([\n watchSwitchNewsradar(),\n watchSetActiveNewsradar(),\n watchGenericSuccess(),\n watchShowAppMessage(),\n watchShowAppErrorMessage(),\n watchShowAppSuccessMessage(),\n watchShowAppSnackbarMessage(),\n watchGenericError(),\n watchLogout(),\n watchLogin(),\n watchLoginSuccess(),\n watchCheckBffVersion(),\n watchCheckViewVersion(),\n watchException(),\n watchSso(),\n watchDownloadElementAsImage(),\n watchDownloadElementAsPdf(),\n watchClickTrace()\n ])\n}\n","import { delay, call, select } from 'redux-saga/effects'\nimport { fromJS } from 'immutable'\n\nimport { uploadGeneratedFile } from 'sagas/app'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport download from 'utils/download'\n\nconst defaultOptions = {\n retryCount: 5,\n retryFun: () => true\n}\n\nexport function* retriable(saga, failSaga, action, opts = {}) {\n const options = { ...defaultOptions, ...(opts || {}) }\n const { retryCount, retryFun } = options\n\n for (let i = 0; i <= retryCount; i += 1) {\n try {\n return yield* saga(action)\n } catch (error) {\n if (retryFun(error)) {\n if (i < retryCount) {\n yield delay(1000 * (i + 1))\n } else {\n return yield* failSaga(error, action)\n }\n } else {\n return yield* failSaga(error, action)\n }\n }\n }\n\n return null\n}\n\nexport function* uploadFile(data, filename = null, mimeType = null, keepUntil = null) {\n let result = {\n url: null\n }\n\n if (data) {\n const formData = [\n {\n key: 'file',\n value: data,\n filename: filename || undefined\n }\n ]\n\n if (keepUntil) {\n formData.push({\n key: 'keep_until',\n value: keepUntil\n })\n }\n\n if (mimeType) {\n formData.push({\n key: 'mime_type',\n value: mimeType\n })\n }\n\n result = yield call(Api.uploadFile, formData)\n }\n\n return result\n}\n\nexport function* uploadPhoto(data) {\n const { url } = yield* uploadFile(data)\n\n return url\n}\n\nexport function* downloadBlob(blob, filename, mimeType) {\n const device = yield select(Selectors.getDevice)\n\n if (!(device.get('ios') || device.get('ie'))) {\n yield call(download, blob, filename, mimeType)\n } else {\n yield call(uploadGeneratedFile, blob, filename, mimeType)\n }\n}\n\nexport function* getCluster(news, fun = Api.search) {\n if (news) {\n const groups = yield select(Selectors.getRawNewsGroups)\n const groupId = groups.find(g => g.get('news').includes(news.get('id'))).get('id')\n\n if (groupId) {\n const body = yield select(Selectors.getFetchClusterStatsBody, groupId, news.get('id'), news.get('clusterId'))\n let result = yield call(fun, body)\n\n if (result.groups !== undefined) {\n result = fromJS((result.groups.find(g => g.id === groupId) || { news: [] }).news)\n }\n\n return fromJS(result)\n }\n\n return fromJS([])\n }\n\n return fromJS([])\n}\n","import { call, put, select, takeEvery, all, delay, debounce } from 'redux-saga/effects'\nimport decamelizeKeysDeep from 'decamelize-keys-deep'\nimport decamelize from 'decamelize'\nimport { fromJS, List } from 'immutable'\nimport moment from 'moment-timezone'\n\nimport { NewsPageModules, ExcelMimeType } from 'static/constants'\n\nimport {\n generateChartLabel,\n isTimeline,\n isPressrelationsNewsChart,\n isImageChart,\n isTextChart,\n isExternalWidgetChart,\n isFeedChart,\n aiAnalysisId\n} from 'utils/chart'\nimport * as Actions from 'actions/charts'\nimport * as AppActions from 'actions/app'\nimport * as UiActions from 'actions/ui'\nimport * as FilterActions from 'actions/filter'\nimport * as NewsActions from 'actions/news'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport { downloadCanvas } from 'utils/downloadSvg'\nimport { rangeToDates } from 'utils/date'\nimport { retriable, downloadBlob, uploadFile } from 'utils/sagas'\n\nconst powerpointMimeType = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n\n// const legendSelectors = {\n// line: '.recharts-legend-wrapper>ul',\n// area: '.recharts-legend-wrapper>ul',\n// bar: '.recharts-legend-wrapper>ul',\n// horizontalBar: '.recharts-legend-wrapper>ul',\n// pie: '.recharts-legend-wrapper>ul'\n// }\n// const domToImageCharts = ['bubble', 'worldMap']\n\nconst allowedBreakpoints = ['xs', 'sm', 'md', 'lg']\n\nconst defaultFirstLevelChartsForNews = 'mediaReviewCodes'\n\nexport const generateFilename = (chart, i18n, ext) => {\n const result = `${chart.get('label') || chart.get('topLabel') || generateChartLabel(chart, i18n)}.${ext}`\n\n return result.replace(/(\\s|\\/)+/g, '_').replace(/_+/g, '_').toLowerCase()\n}\n\nexport function* fetchChartDataTry({ chart, searchBody }) {\n if (!isImageChart(chart) && !isTextChart(chart) && !isExternalWidgetChart(chart)) {\n const body = yield select(Selectors.getChartBody, chart, searchBody)\n\n return yield call(Api.fetchChartData, body)\n }\n\n return null\n}\n\nexport function* fetchChartDataFail(error) {\n yield put(AppActions.exception(error))\n}\n\nexport function* fetchChartData(chart, searchBody) {\n return yield call(retriable, fetchChartDataTry, fetchChartDataFail, {\n chart,\n searchBody\n })\n}\n\nexport function* updateCharts() {\n try {\n const charts = yield select(Selectors.getRawCharts)\n const layouts = yield select(Selectors.getChartsLayouts)\n\n const sanitizedCharts = charts.reduce(\n (acc, values, key) => acc.set(key, values.map(chart => chart.delete('data'))),\n fromJS({})\n ).toJS()\n\n const body = {\n charts: decamelizeKeysDeep(sanitizedCharts),\n layouts: layouts.toJS()\n }\n\n yield call(Api.updateCharts, body)\n yield put(Actions.updateChartsSuccess({ charts, layouts }))\n } catch (error) {\n yield put(Actions.updateChartsError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* updateChartsSuccess() {\n const charts = {}\n const layouts = {}\n\n yield put(Actions.setPrevious({ charts, layouts }))\n yield put(Actions.setNormalMode())\n}\n\nexport function* getChartExportBody(chart, searchBody, size, ext) {\n const i18n = yield select(Selectors.getI18n)\n const exportSize = yield call(Selectors.getChartBodySizeForExport, chart, ext)\n let body = yield select(Selectors.getChartBody, chart, searchBody, size || exportSize)\n\n body = {\n ...body,\n sheet_name: i18n.get(decamelize(chart.get('firstLevel') || chart.get('type')))\n }\n\n return body\n}\n\nexport function* chartExport(chart, searchBody, apiFunc, ext, mimeType, size) {\n const i18n = yield select(Selectors.getI18n)\n const body = yield* getChartExportBody(chart, searchBody, size, ext)\n const filename = generateFilename(chart, i18n, ext)\n const result = yield call(apiFunc, body)\n\n yield call(downloadBlob, result, filename, mimeType)\n}\n\n// Used in other sagas\nexport function* excelExport(chart, searchBody) {\n try {\n yield* chartExport(chart, searchBody, Api.exportExcel, 'xlsx', ExcelMimeType)\n\n yield put(Actions.exportExcelSuccess())\n } catch (error) {\n yield put(Actions.exportExcelError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* exportExcel({ payload: chart }) {\n const searchBody = yield select(Selectors.getSearchBody)\n yield* excelExport(chart, searchBody)\n}\n\n// Used in other sagas\nexport function* powerpointExport(chart, searchBody) {\n try {\n yield* chartExport(chart, searchBody, Api.exportPowerpoint, 'pptx', powerpointMimeType, chart.getIn(['opts', 'size'], 10))\n\n yield put(Actions.exportPowerpointSuccess())\n } catch (error) {\n yield put(Actions.exportPowerpointError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* exportPowerpoint({ payload: chart }) {\n const searchBody = yield select(Selectors.getSearchBody)\n yield* powerpointExport(chart, searchBody)\n}\n\n// Used in other sagas\nexport function* powerpointBatchExport(charts, searchBody, opts = {}) {\n try {\n const chartBodies = []\n charts.forEach(chart => chartBodies.push(call(getChartExportBody, chart, searchBody, chart.getIn(['opts', 'size'], 10), 'pptx')))\n\n let body = {\n charts: yield all(chartBodies)\n }\n\n body = { ...body, ...opts }\n\n const result = yield call(Api.exportPowerpointBatch, body)\n\n yield call(downloadBlob, result, opts.filename || 'charts.pptx', powerpointMimeType)\n\n yield put(Actions.exportPowerpointBatchSuccess())\n } catch (error) {\n yield put(Actions.exportPowerpointBatchError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* powerpointBatchExportStart({ payload }) {\n const breakpoint = yield select(Selectors.getBreakpoint)\n let charts = yield select(Selectors.getChartsCharts)\n const searchBody = yield select(Selectors.getSearchBody)\n const timezone = yield select(Selectors.getTimezone)\n const logo = yield select(Selectors.getLogo)\n\n charts = charts\n .get(breakpoint)\n .map(chart => {\n let newChart = chart.delete('data')\n\n if (payload && payload.aiEnabled) {\n newChart = newChart.set('aiEnabled', true)\n }\n\n return newChart\n })\n\n yield call(powerpointBatchExport, charts, searchBody, {\n timezone,\n logo\n })\n\n yield put(Actions.exportPowerpointBatchSuccess())\n}\n\nexport function* downloadImage({ payload: { chart, id } }) {\n try {\n const i18n = yield select(Selectors.getI18n)\n const filename = generateFilename(chart, i18n, 'png')\n\n const result = yield call(downloadCanvas, id)\n\n yield call(downloadBlob, result.blob, filename, 'image/png')\n } catch (error) {\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* setPrevious() {\n const isEditing = yield select(Selectors.getChartsIsEditing)\n let charts = yield select(Selectors.getChartsCharts)\n let layouts = yield select(Selectors.getChartsLayouts)\n\n if (!isEditing) {\n charts = yield select(Selectors.getChartsPreviousCharts)\n layouts = yield select(Selectors.getChartsPreviousLayouts)\n yield put(Actions.setPreviousToData({ charts, layouts }))\n\n charts = {}\n layouts = {}\n }\n\n yield put(Actions.setPrevious({ charts, layouts }))\n}\n\nexport function* drilldown({ payload: { chart, d: { filterData }, secondFilter, replace } }) {\n let secondLevelField = chart.get('secondLevel')\n\n if (secondLevelField === 'tonality') {\n secondLevelField = 'tonalities'\n }\n\n let firstLevelField = chart.get('firstLevel')\n\n if (firstLevelField === 'tonality') {\n firstLevelField = 'tonalities'\n }\n\n if (secondLevelField === 'sentiment') {\n secondLevelField = 'sentiments'\n }\n\n if (!isTimeline(chart)) {\n if (chart.get('dateRange')) {\n const { from: dateFrom, to: dateTo } = yield call(rangeToDates, chart.get('dateRange'))\n\n yield put(FilterActions.changeDate({\n dateFrom,\n dateTo\n }))\n } else if (chart.get('dateFrom') || chart.get('dateTo')) {\n const dateFrom = chart.get('dateFrom') ? new Date(chart.get('dateFrom')) : null\n const dateTo = chart.get('dateTo') ? new Date(chart.get('dateTo')) : null\n\n yield put(FilterActions.changeDate({\n dateFrom,\n dateTo\n }))\n }\n\n const filters = []\n\n if (firstLevelField === 'analysisCodes') {\n yield put(FilterActions.setAnalysisFilter({\n field: 'selectedCodes',\n value: fromJS([filterData])\n }))\n } else {\n filters.push({\n filter: fromJS(filterData),\n field: firstLevelField\n })\n }\n\n if (secondFilter) {\n if (secondLevelField === 'analysisCodes') {\n yield put(FilterActions.setAnalysisFilter({\n field: 'groupedCodes',\n value: fromJS([secondFilter])\n }))\n } else if (secondLevelField === 'statementTonalities') {\n yield put(FilterActions.setAnalysisFilter({\n field: 'statementTonalities',\n value: fromJS([secondFilter])\n }))\n } else {\n filters.push({\n filter: fromJS(secondFilter),\n field: secondLevelField\n })\n }\n }\n\n if (filters.length) {\n if (replace) {\n yield put(UiActions.uiReplaceFilters(filters))\n } else {\n yield put(UiActions.uiAddFilters(filters))\n }\n } else {\n yield put(NewsActions.newsRequestStart())\n }\n } else if (secondFilter) {\n yield put(FilterActions.changeDate({\n dateFrom: new Date(filterData.range.from),\n dateTo: new Date(filterData.range.to)\n }))\n\n if (secondLevelField === 'analysisCodes') {\n yield put(UiActions.uiSetAnalysisFilter({\n field: 'groupedCodes',\n value: fromJS([secondFilter])\n }))\n } else if (secondLevelField === 'statementTonalities') {\n yield put(UiActions.uiSetAnalysisFilter({\n field: 'statementTonalities',\n value: fromJS([secondFilter])\n }))\n } else if (replace) {\n yield put(UiActions.uiReplaceFilters([{\n filter: fromJS(secondFilter),\n field: secondLevelField\n }]))\n } else {\n yield put(UiActions.uiAddFilters([{\n filter: fromJS(secondFilter),\n field: secondLevelField\n }]))\n }\n } else {\n yield put(UiActions.uiApplyDateFilter({\n dateFrom: new Date(filterData.range.from),\n dateTo: new Date(filterData.range.to)\n }))\n }\n}\n\nfunction* calculatePressrelationsNewsChart(pChart, key, value) {\n let chart = pChart\n\n if (key === 'firstLevel') {\n if (value === '') {\n chart = chart.set(key, defaultFirstLevelChartsForNews)\n } else {\n chart = chart.set(key, value)\n }\n\n const chartTypes = yield select(Selectors.getChartDialogChartTypes, chart)\n\n if (!chartTypes.includes(chart.get('type'))) {\n chart = chart.set('type', chartTypes.first())\n }\n\n const thirdLevels = yield select(Selectors.getChartDialogThirdLevels, chart)\n\n if (value === 'pageIdentitiesTimeline') {\n chart = chart.set('secondLevel', 'pageIdentities')\n\n if (!thirdLevels.includes(chart.get('thirdLevel'))) {\n chart = chart.set('thirdLevel', thirdLevels.first())\n }\n } else if (value === 'savedSearchesTimeline') {\n chart = chart.set('secondLevel', 'savedSearches')\n\n if (!thirdLevels.includes(chart.get('thirdLevel'))) {\n chart = chart.set('thirdLevel', thirdLevels.first())\n }\n } else {\n const secondLevels = yield select(Selectors.getChartDialogSecondLevels, chart)\n\n if (!secondLevels.includes(chart.get('secondLevel'))) {\n chart = chart.delete('secondLevel')\n }\n }\n\n if (!thirdLevels.includes(chart.get('thirdLevel'))) {\n chart = chart.delete('thirdLevel')\n }\n } else if (key === 'secondLevel') {\n if (chart.get(key) === value) {\n chart = chart.delete(key)\n } else {\n chart = chart.set(key, value)\n }\n } else if (key === 'thirdLevel') {\n chart = chart.set(key, value)\n } else if (key === 'type') {\n chart = chart.set(key, value)\n\n const secondLevels = yield select(Selectors.getChartDialogSecondLevels, chart)\n\n if (!secondLevels.includes(chart.get('secondLevel'))) {\n chart = chart.delete('secondLevel')\n }\n\n const thirdLevels = yield select(Selectors.getChartDialogThirdLevels, chart)\n\n if (!thirdLevels.includes(chart.get('thirdLevel'))) {\n chart = chart.delete('thirdLevel')\n }\n } else {\n chart = chart.set(key, value)\n }\n\n return chart\n}\n\nexport function* calculateNewChart({ payload: { chart: pChart, key, value: v, onChange, afterChange } }) {\n const value = v || ''\n let chart\n\n if (isPressrelationsNewsChart(pChart)) {\n chart = yield* calculatePressrelationsNewsChart(pChart, key, value)\n } else {\n chart = pChart.set(key, value)\n\n if (isImageChart(chart)) {\n chart = chart.set('type', 'image')\n }\n\n if (isTextChart(chart)) {\n chart = chart.set('type', 'text')\n }\n\n if (isExternalWidgetChart(chart)) {\n chart = chart.set('type', 'externalWidget')\n }\n }\n\n onChange(chart.delete('data'))\n\n if (afterChange) {\n afterChange({\n chartBefore: pChart\n })\n }\n\n return chart\n}\n\nexport function* fetchChartAggregation(chart, searchBody, index, breakpoint) {\n try {\n const viewConfig = yield select(Selectors.getNewsViewConfig)\n\n yield put(Actions.setChartLoading({\n index,\n breakpoint\n }))\n const useAggregationValue = yield select(Selectors.getViewConfigUseAggregationValue)\n let newChart = chart\n\n if (useAggregationValue) {\n const aggregationValue = yield select(Selectors.getNewsAggregationsAggregationValue)\n newChart = newChart.set('thirdLevel', aggregationValue)\n }\n\n const result = yield call(fetchChartData, newChart, searchBody)\n\n const chartData = {\n index,\n breakpoint,\n data: result ? result[chart.get('firstLevel')] : null\n }\n\n if (viewConfig.get('moduleName') === NewsPageModules.NEWS_POOL) {\n yield put(Actions.setStaticChartData(chartData))\n } else {\n yield put(Actions.setChartData(chartData))\n }\n } catch (error) {\n yield put(Actions.setChartData({\n index,\n breakpoint,\n data: null\n }))\n }\n}\n\nexport function* fetchAggregations() {\n const viewConfig = yield select(Selectors.getNewsViewConfig)\n let charts\n\n if (viewConfig.get('moduleName') === 'news_pool') {\n charts = yield select(Selectors.getStaticChartsCharts)\n } else {\n charts = yield select(Selectors.getChartsCharts)\n }\n\n const searchBody = yield select(Selectors.getSearchBody)\n\n const currentBreakpoint = yield select(Selectors.getBreakpoint)\n const device = yield select(Selectors.getDevice)\n\n let breakpointsToLoad = allowedBreakpoints\n\n if (device.get('phone') || device.get('tablet')) {\n breakpointsToLoad = [currentBreakpoint]\n\n if (device.get('landscape')) {\n breakpointsToLoad.push(allowedBreakpoints[allowedBreakpoints.indexOf(currentBreakpoint) - 1])\n } else {\n breakpointsToLoad.push(allowedBreakpoints[allowedBreakpoints.indexOf(currentBreakpoint) + 1])\n }\n } else if (viewConfig.get('moduleName') === 'news_pool') {\n breakpointsToLoad = [currentBreakpoint]\n }\n\n const preferredEffects = []\n const effects = []\n\n charts.forEach((cs, breakpoint) => {\n cs.forEach((chart, index) => {\n if (breakpointsToLoad.indexOf(breakpoint) !== -1) {\n // Prefer current breakpoint to fake faster loading\n if (breakpoint === currentBreakpoint) {\n preferredEffects.push(call(fetchChartAggregation, chart, searchBody, index, breakpoint))\n } else {\n effects.push(call(fetchChartAggregation, chart, searchBody, index, breakpoint))\n }\n }\n })\n })\n\n yield all(preferredEffects)\n\n yield put(Actions.aggregationsRequestSuccess())\n\n yield delay(1000)\n yield all(effects)\n\n return null\n}\n\nexport function* setChart({ payload }) {\n const { chart, index, breakpoint } = payload\n const searchBody = yield select(Selectors.getSearchBody)\n yield put(Actions.setChart({\n index,\n breakpoint,\n chart: chart.delete('data')\n }))\n // Handle the case where the chart is new so we do not have an index yet\n let j = index\n\n if (j === null) {\n let charts\n const viewConfig = yield select(Selectors.getNewsViewConfig)\n\n if (viewConfig.get('moduleName') === 'news_pool') {\n charts = yield select(Selectors.getStaticChartsCharts)\n } else {\n charts = yield select(Selectors.getChartsCharts)\n }\n\n j = charts.get(breakpoint).size - 1\n }\n\n yield call(fetchChartAggregation, chart, searchBody, j, breakpoint)\n}\n\nexport function* setAggregationValue() {\n yield put(Actions.aggregationsRequestStart())\n}\n\nexport function* loadSelectedChartAggregations() {\n try {\n yield put(Actions.setSelectedChartLoading(true))\n const chart = yield select(Selectors.getChartsSelectedChart)\n const searchBody = yield select(Selectors.getSearchBody)\n\n const result = yield call(fetchChartData, chart, searchBody)\n\n if (result) {\n yield put(Actions.setSelectedChartData(result[chart.get('firstLevel')]))\n }\n\n yield put(Actions.setSelectedChartLoading(false))\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* checkChartChange({ payload: { chartBefore } }) {\n const chartAfter = yield select(Selectors.getChartsSelectedChart)\n const reload = ['firstLevel', 'secondLevel', 'thirdLevel', 'type'].some(level => chartBefore.get(level) !== chartAfter.get(level))\n\n if (reload) {\n yield call(loadSelectedChartAggregations)\n }\n}\n\nexport function* setSelectedChartOpt({ payload: { key } }) {\n const fields = [\n 'continentCode',\n 'size',\n 'aggregationExcludeBuckets',\n 'usePercentAsValue',\n 'replaceSnippetsWithSummaries',\n 'allowedEntityTypes'\n ]\n\n if (fields.indexOf(key) !== -1) {\n yield call(loadSelectedChartAggregations)\n }\n}\n\nexport function* aiChartAnalysis() {\n try {\n let url\n const i18n = yield select(Selectors.getI18n)\n const chart = yield select(Selectors.getChartsAiChartAnalysisChart)\n const locale = yield select(Selectors.getAiSettingsLocale)\n\n if (!List.isList(chart.get('data')) && !isFeedChart(chart)) {\n yield delay(500)\n\n const filename = generateFilename(chart, i18n, 'png')\n const imageResult = yield call(downloadCanvas, aiAnalysisId, null, { scale: 1 })\n const keepUntil = moment().add(1, 'hours').format()\n const fileResult = yield call(uploadFile, imageResult.blob, filename, 'image/png', keepUntil)\n\n url = fileResult.url\n }\n\n const serializedChart = JSON.stringify(chart.toJS())\n const result = yield call(Api.aiChartAnalysis, { url, chart: serializedChart, locale })\n\n yield put(Actions.aiChartAnalysisSuccess(result))\n } catch (error) {\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n yield put(Actions.aiChartAnalysisError(error))\n }\n}\n\nexport function* aiChartDescription({ payload: { breakpoint, index, chart } }) {\n try {\n yield put(Actions.setChart({\n index,\n breakpoint,\n chart: chart.set('aiDescriptionLoading', true)\n }))\n\n const { description } = yield call(Api.aiChartDescription, { chart: JSON.stringify(chart.toJS()) })\n\n yield put(Actions.setChart({\n index,\n breakpoint,\n chart: chart.merge({\n aiDescription: description,\n aiDescriptionLoading: false\n })\n }))\n\n yield put(Actions.aiChartDescriptionSuccess())\n } catch (error) {\n const i18n = yield select(Selectors.getI18n)\n\n yield put(Actions.setChart({\n index,\n breakpoint,\n chart: chart.merge({\n aiDescriptionLoading: false,\n aiDescription: i18n.get('unknown_error')\n })\n }))\n\n yield put(Actions.aiChartDescriptionError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* watchUpdateCharts() {\n yield takeEvery(Actions.updateChartsStart, updateCharts)\n}\n\nexport function* watchUpdateChartsSuccess() {\n yield takeEvery(Actions.updateChartsSuccess, updateChartsSuccess)\n}\n\nexport function* watchExportExcel() {\n yield takeEvery(Actions.exportExcelStart, exportExcel)\n}\n\nexport function* watchExportPowerpoint() {\n yield takeEvery(Actions.exportPowerpointStart, exportPowerpoint)\n}\n\nexport function* watchExportPowerpointBatch() {\n yield takeEvery(Actions.exportPowerpointBatchStart, powerpointBatchExportStart)\n}\n\nexport function* watchDownloadImage() {\n yield takeEvery(Actions.downloadImage, downloadImage)\n}\n\nexport function* watchToggleEditing() {\n yield takeEvery(Actions.toggleEditing, setPrevious)\n}\n\nexport function* watchDrilldown() {\n yield takeEvery(Actions.drilldown, drilldown)\n}\n\nexport function* watchCalculateNewChart() {\n yield takeEvery(Actions.calculateNewChart, calculateNewChart)\n}\n\nexport function* watchFetchAggregations() {\n yield takeEvery(Actions.aggregationsRequestStart, fetchAggregations)\n}\n\nexport function* watchSetAggregationValue() {\n yield takeEvery(Actions.setAggregationValue, setAggregationValue)\n}\n\nexport function* watchShowChartDialog() {\n yield takeEvery(Actions.showChartDialog, loadSelectedChartAggregations)\n}\n\nexport function* watchSetChart() {\n yield takeEvery(Actions.setChartStart, setChart)\n}\n\nexport function* watchCheckChartChange() {\n yield takeEvery(Actions.checkChartChange, checkChartChange)\n}\n\nexport function* watchSetSelectedChartOpt() {\n yield debounce(1000, Actions.setSelectedChartOpt, setSelectedChartOpt)\n}\n\nexport function* watchAiChartAnalysis() {\n yield takeEvery(Actions.aiChartAnalysisStart, aiChartAnalysis)\n}\n\nexport function* watchAiChartDescription() {\n yield takeEvery(Actions.aiChartDescriptionStart, aiChartDescription)\n}\n\nexport default function* saga() {\n yield all([\n watchUpdateCharts(),\n watchUpdateChartsSuccess(),\n watchExportExcel(),\n watchExportPowerpoint(),\n watchExportPowerpointBatch(),\n watchDownloadImage(),\n watchToggleEditing(),\n watchDrilldown(),\n watchCalculateNewChart(),\n watchFetchAggregations(),\n watchShowChartDialog(),\n watchSetChart(),\n watchSetAggregationValue(),\n watchCheckChartChange(),\n watchSetSelectedChartOpt(),\n watchAiChartAnalysis(),\n watchAiChartDescription()\n ])\n}\n","import { call, put, select, takeEvery, all, delay } from 'redux-saga/effects'\nimport { fromJS } from 'immutable'\nimport moment from 'moment-timezone'\nimport decamelizeKeysDeep from 'decamelize-keys-deep'\n\nimport { SearchFields, NewsPageModules, ChartDataSources, ChartTypes } from 'static/constants'\n\nimport { fetchChartData } from 'sagas/charts'\n\nimport * as Actions from 'actions/saved_searches'\nimport * as FilterActions from 'actions/filter'\nimport * as AppActions from 'actions/app'\nimport * as UiActions from 'actions/ui'\nimport * as NavigationActions from 'actions/navigation'\nimport * as NewsActions from 'actions/news'\nimport * as ConfigActions from 'actions/config'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\n\nfunction* getAlertConfigBody(savedSearch) {\n const sender = yield select(Selectors.getWhitelabelEmailAddress)\n const alertConfig = savedSearch.get('alertConfig', fromJS({}))\n\n return {\n type: alertConfig.get('type'),\n times: alertConfig.get('times'),\n days: alertConfig.get('days'),\n timezone: alertConfig.get('timezone'),\n threshold: alertConfig.get('threshold'),\n recipients: alertConfig.get('recipients'),\n recipients_sms: alertConfig.get('recipientsSms'),\n webhooks: alertConfig.get('webhooks'),\n mailing_list_ids: alertConfig.get('mailingListIds'),\n send_no_results_mail: alertConfig.get('sendNoResultsMail'),\n group_by: alertConfig.get('groupBy'),\n limit: alertConfig.get('limit'),\n prompt: alertConfig.get('prompt'),\n use_prompt: alertConfig.get('usePrompt'),\n show_reach: alertConfig.get('showReach'),\n show_ave: alertConfig.get('showAve'),\n show_visits: alertConfig.get('showVisits'),\n show_circulation: alertConfig.get('showCirculation'),\n show_duration: alertConfig.get('showDuration'),\n sender\n }\n}\n\n// CAUTION: This saga is also used in sagas/analysis\nexport function* createSavedSearch(savedSearch) {\n const locale = yield select(Selectors.getUserLocale)\n const alertConfigBody = yield* getAlertConfigBody(savedSearch)\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n\n const body = yield select(Selectors.getSearchBody)\n body.name_de = savedSearch.get('nameDe')\n body.name_en = savedSearch.get('nameEn')\n body.name_fr = savedSearch.get('nameFr')\n body.name_ru = savedSearch.get('nameRu')\n body.name_zh = savedSearch.get('nameZh')\n body.name_ja = savedSearch.get('nameJa')\n body.description = savedSearch.get('description') || ''\n body.color = savedSearch.get('color')\n body.photo = savedSearch.get('photo')\n body.locale = savedSearch.get('locale') || locale\n body.alert_config = alertConfigBody\n body.module_name = moduleName\n body.id = savedSearch.get('id')\n\n const result = yield call(Api.createSavedSearch, body)\n\n yield put(Actions.setExecutedSavedSearch(fromJS(result)))\n\n return result\n}\n\nexport function* saveSavedSearch({ payload }) {\n try {\n const i18n = yield select(Selectors.getI18n)\n let savedSearch = payload\n const id = savedSearch.get('id')\n const uploadedPhoto = yield select(Selectors.getSavedSearchesUploadedPhoto)\n\n let photo = savedSearch.get('photo')\n\n if (uploadedPhoto) {\n const formData = [\n {\n key: 'file',\n value: uploadedPhoto\n }\n ]\n\n const { url } = yield call(Api.uploadFile, formData)\n photo = url\n }\n\n savedSearch = savedSearch.update('photo', p => photo || p)\n\n let result\n let body\n let successMessage = i18n.get('created')\n\n if (id) {\n const locale = yield select(Selectors.getUserLocale)\n const alertConfigBody = yield* getAlertConfigBody(savedSearch)\n successMessage = i18n.get('updated')\n\n body = {\n name_de: savedSearch.get('nameDe'),\n name_en: savedSearch.get('nameEn'),\n name_fr: savedSearch.get('nameFr'),\n name_ru: savedSearch.get('nameRu'),\n name_zh: savedSearch.get('nameZh'),\n name_ja: savedSearch.get('nameJa'),\n description: savedSearch.get('description') || '',\n color: savedSearch.get('color'),\n module_name: savedSearch.get('moduleName'),\n locale: savedSearch.get('locale') || locale,\n alert_config: alertConfigBody,\n photo: savedSearch.get('photo')\n }\n\n result = yield call(Api.updateSavedSearch, id, body)\n } else {\n result = yield* createSavedSearch(savedSearch)\n }\n\n yield put(Actions.saveSavedSearchSuccess(result))\n yield put(AppActions.showAppMessage({ text: `${result.name} ${successMessage}` }))\n } catch (error) {\n yield put(Actions.saveSavedSearchError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* deleteSavedSearch() {\n try {\n const savedSearch = yield select(Selectors.getSelectedSavedSearch)\n const id = savedSearch.get('id')\n\n yield call(Api.deleteSavedSearch, id)\n\n yield put(Actions.deleteSavedSearchSuccess(id))\n yield put(Actions.fetchSavedSearchesTimelinesStart())\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(Actions.deleteSavedSearchError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* checkAffectedDashboards({ payload: savedSearch }) {\n const id = savedSearch.get('id')\n const dashboards = yield select(Selectors.getDashboards)\n const additionalAffectedDashboards = dashboards\n .filter(d => d.get('charts')\n .reduce((r, v) => v.map(chart => chart.get('additionalSavedSearchIds', [])\n .includes(id)), []).includes(true))\n const affectedDashboards = dashboards.filter(d => d.get('savedSearchIds').includes(id)).concat(additionalAffectedDashboards)\n\n if (affectedDashboards.isEmpty()) {\n yield put(Actions.deleteSavedSearchStart())\n } else {\n yield put(Actions.hideRemoveSavedSearchDialog())\n yield put(Actions.setAffectedDashboards(affectedDashboards))\n yield put(Actions.showAffectedDashboardsDialog())\n }\n}\n\nexport function* resolveSavedSearch({ payload: savedSearch }) {\n try {\n yield put(Actions.resolveSavedSearchStart())\n const dateFrom = yield select(Selectors.getSelectedDateFrom)\n const dateTo = yield select(Selectors.getSelectedDateTo)\n\n const id = savedSearch.get('id')\n\n const body = {\n date_from: dateFrom ? moment(dateFrom).format() : null,\n date_to: dateTo ? moment(dateTo).format() : null\n }\n\n const result = yield call(Api.resolveSavedSearch, id, body)\n\n let filters = fromJS(result)\n const booleans = filters.get(SearchFields.BOOLEANS)\n const geoBoundingBox = filters.get(SearchFields.GEO_BOUNDING_BOX)\n const analysis = filters.get(SearchFields.ANALYSIS)\n\n filters = filters.deleteAll([SearchFields.BOOLEANS, SearchFields.GEO_BOUNDING_BOX, SearchFields.ANALYSIS])\n filters = filters.reduce(\n (acc, values, key) => (\n acc.concat(values.map(value => ({\n filter: value,\n field: key\n })))\n ),\n fromJS([])\n )\n\n const globalClusterDefault = yield select(Selectors.getGlobalClusterDefault)\n yield put(FilterActions.resetFilters(globalClusterDefault))\n yield put(NewsActions.resetNews())\n\n yield put(FilterActions.setFilter({\n field: SearchFields.BOOLEANS,\n values: booleans\n }))\n\n if (geoBoundingBox) {\n yield put(FilterActions.setFilter({\n field: SearchFields.GEO_BOUNDING_BOX,\n values: geoBoundingBox\n }))\n }\n\n if (analysis) {\n const analysisKeys = analysis.keySeq()\n\n for (let i = 0; i < analysisKeys.size; i += 1) {\n const analysisKey = analysisKeys.get(i)\n\n yield put(FilterActions.setAnalysisFilter({\n field: analysisKey,\n value: analysis.get(analysisKey)\n }))\n }\n }\n\n yield put(UiActions.uiAddFilters(filters))\n yield put(Actions.resolveSavedSearchSuccess())\n } catch (error) {\n yield put(Actions.resolveSavedSearchError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* fetchSavedSearchesTimelines() {\n try {\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n\n if (moduleName) {\n const savedSearches = yield select(Selectors.getSavedSearchesByModule, moduleName)\n\n if (!savedSearches.isEmpty()) {\n const chart = fromJS({\n type: ChartTypes.LINE,\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS,\n dateRange: 'last_30_days',\n firstLevel: 'saved_searches_timeline',\n secondLevel: 'saved_searches',\n thirdLevel: 'buzz',\n savedSearchId: savedSearches.first().get('id'),\n additionalSavedSearchIds: savedSearches.slice(1).map(s => s.get('id'))\n })\n\n const result = yield call(fetchChartData, chart)\n\n yield put(Actions.fetchSavedSearchesTimelinesSuccess(result.savedSearchesTimeline))\n }\n } else {\n yield delay(500)\n yield put(Actions.fetchSavedSearchesTimelinesStart())\n }\n } catch (error) {\n yield put(Actions.fetchSavedSearchesTimelinesError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* fetchSavedSearchDispatches() {\n try {\n const savedSearch = yield select(Selectors.getSelectedSavedSearch)\n const result = yield call(Api.fetchSavedSearchDispatches, savedSearch.get('id'))\n yield put(Actions.fetchSavedSearchDispatchesSuccess(result))\n } catch (error) {\n yield put(Actions.fetchSavedSearchDispatchesError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* loadInitialSearch() {\n const savedSearch = yield select(Selectors.getFavoritedSavedSearch)\n\n if (savedSearch) {\n yield put(Actions.executeSavedSearch(savedSearch))\n }\n}\n\nexport function* toggleFavorite({ payload: savedSearch }) {\n const id = savedSearch.get('id')\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n\n if (moduleName === NewsPageModules.NEWS) {\n yield put(ConfigActions.setNewsSavedSearchId(id))\n } else if (moduleName === NewsPageModules.ANALYSIS) {\n yield put(ConfigActions.setAnalysisSavedSearchId(id))\n } else if (moduleName === NewsPageModules.PROFILE_MONITORING) {\n yield put(ConfigActions.setProfileMonitoringSavedSearchId(id))\n } else {\n yield put(ConfigActions.setNewsPoolSavedSearchId(id))\n }\n\n yield put(ConfigActions.updateUserConfigRequestStart())\n}\n\nexport function* executeSavedSearch(action) {\n yield put(Actions.setInitialSearchLoaded(true))\n yield call(resolveSavedSearch, action)\n yield put(Actions.setExecutedSavedSearch(action.payload))\n\n const isSavedSearchesOverview = yield select(Selectors.isSavedSearchesOverview)\n\n if (isSavedSearchesOverview) {\n yield put(NavigationActions.back())\n }\n}\n\nexport function* replaceSavedSearch({ payload: savedSearch }) {\n try {\n const result = yield call(createSavedSearch, savedSearch)\n\n yield put(Actions.replaceSavedSearchSuccess(result))\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(Actions.replaceSavedSearchError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* saveSavedSearchFeed({ payload: savedSearchFeed }) {\n try {\n let result\n let body\n\n if (savedSearchFeed) {\n body = decamelizeKeysDeep(savedSearchFeed.toJS())\n\n result = yield call(Api.updateSavedSearchFeed, savedSearchFeed.get('id'), body)\n } else {\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n const timezone = yield select(Selectors.getTimezone)\n\n body = {\n module_name: moduleName,\n timezone\n }\n\n result = yield call(Api.createSavedSearchFeed, body)\n }\n\n yield put(Actions.saveSavedSearchFeedSuccess(result))\n\n if (!savedSearchFeed) {\n yield put(AppActions.genericSuccessMessage())\n }\n } catch (error) {\n yield put(Actions.saveSavedSearchFeedError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* deleteSavedSearchFeed({ payload: savedSearchFeed }) {\n try {\n const id = savedSearchFeed.get('id')\n\n yield call(Api.deleteSavedSearchFeed, id)\n\n yield put(Actions.deleteSavedSearchFeedSuccess(id))\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(Actions.deleteSavedSearchFeedError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* watchSaveSavedSearch() {\n yield takeEvery(Actions.saveSavedSearchStart, saveSavedSearch)\n}\n\nexport function* watchDeleteSavedSearch() {\n yield takeEvery(Actions.deleteSavedSearchStart, deleteSavedSearch)\n}\n\nexport function* watchCheckAffectedDashboards() {\n yield takeEvery(Actions.checkAffectedDashboards, checkAffectedDashboards)\n}\n\nexport function* watchFetchSavedSearchesTimelines() {\n yield takeEvery(Actions.fetchSavedSearchesTimelinesStart, fetchSavedSearchesTimelines)\n}\n\nexport function* watchFetchSavedSearchDispatches() {\n yield takeEvery(Actions.fetchSavedSearchDispatchesStart, fetchSavedSearchDispatches)\n}\n\nexport function* watchToggleFavorite() {\n yield takeEvery(Actions.toggleFavorite, toggleFavorite)\n}\n\nexport function* watchLoadInitialSearch() {\n yield takeEvery(Actions.loadInitialSearch, loadInitialSearch)\n}\n\nexport function* watchExecuteSavedSearch() {\n yield takeEvery(Actions.executeSavedSearch, executeSavedSearch)\n}\n\nexport function* watchReplaceSavedSearch() {\n yield takeEvery(Actions.replaceSavedSearchStart, replaceSavedSearch)\n}\n\nexport function* watchSaveSavedSearchFeed() {\n yield takeEvery(Actions.saveSavedSearchFeedStart, saveSavedSearchFeed)\n}\n\nexport function* watchDeleteSavedSearchFeed() {\n yield takeEvery(Actions.deleteSavedSearchFeedStart, deleteSavedSearchFeed)\n}\n\nexport default function* saga() {\n yield all([\n watchSaveSavedSearch(),\n watchDeleteSavedSearch(),\n watchCheckAffectedDashboards(),\n watchFetchSavedSearchesTimelines(),\n watchFetchSavedSearchDispatches(),\n watchToggleFavorite(),\n watchLoadInitialSearch(),\n watchExecuteSavedSearch(),\n watchReplaceSavedSearch(),\n watchSaveSavedSearchFeed(),\n watchDeleteSavedSearchFeed()\n ])\n}\n","/* global window */\n\nimport screenfull from 'screenfull'\n\nexport const toggleFullscreen = () => {\n if (screenfull.isEnabled) {\n if (screenfull.isFullscreen) {\n screenfull.exit()\n } else {\n try {\n screenfull.request()\n } catch (_e) {\n console.warn('Couldn\\'t start fullscreen') // eslint-disable-line\n }\n }\n }\n}\n\nexport const startFullscreen = () => {\n if (screenfull.isEnabled) {\n if (!screenfull.isFullscreen) {\n try {\n screenfull.request()\n } catch (_e) {\n console.warn('Couldn\\'t start fullscreen') // eslint-disable-line\n }\n }\n }\n}\n\nexport const stopFullscreen = () => {\n if (screenfull.isEnabled) {\n if (screenfull.isFullscreen) {\n screenfull.exit()\n }\n }\n}\n\nexport const isFullscreen = () => (\n window.fullScreen || (window.innerWidth === window.screen.width && window.innerHeight === window.screen.height)\n)\n\nexport const redirect = url => {\n window.location.href = url\n}\n\nexport const reload = () => {\n window.location.reload()\n}\n","/* global document, window */\nimport { call, put, select, takeEvery, all, take, race, delay, takeLatest, debounce } from 'redux-saga/effects'\nimport decamelizeKeysDeep from 'decamelize-keys-deep'\nimport decamelize from 'decamelize'\nimport { fromJS } from 'immutable'\nimport { startFullscreen, stopFullscreen, isFullscreen } from 'utils/browser'\nimport {\n isPressrelationsNewsChart,\n isImageChart,\n isFacebookAnalyticsChart,\n isLinkedInAnalyticsChart,\n isTwitterAnalyticsChart,\n isSocialMediaAnalyticsFeed\n} from 'utils/chart'\nimport { replace } from 'redux-first-history'\n\nimport { DateTypes, NewsPageModules, NewsPageViews, Capabilities } from 'static/constants'\nimport { findFirstChart as findFirstFacebookChart } from 'static/facebook_analytics_charts'\n\nimport * as Actions from 'actions/dashboard'\nimport * as AppActions from 'actions/app'\nimport * as ConfigActions from 'actions/config'\nimport * as SavedSearchesActions from 'actions/saved_searches'\nimport * as NavigationActions from 'actions/navigation'\nimport * as NewsActions from 'actions/news'\nimport * as ChartsActions from 'actions/charts'\nimport * as FilterActions from 'actions/filter'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport { drilldown, fetchChartData, excelExport, powerpointExport, powerpointBatchExport } from 'sagas/charts'\nimport { uploadPhoto } from 'utils/sagas'\nimport { mergeDeepKeepLists } from 'utils/immutable'\nimport { resolveSavedSearch } from './saved_searches'\nimport { newsradarSwitch } from './app'\n\nconst allowedBreakpoints = ['xs', 'sm', 'md', 'lg']\n\nconst filterFieldMapping = {\n analysisCodes: 'analysis'\n}\n\nconst drilldownAutoViews = {\n [NewsPageModules.PROFILE_MONITORING]: NewsPageViews.POSTS\n}\n\nexport function* buildDrilldownNewsFeedBody() {\n const searchParams = yield select(Selectors.getDashboardDrilldownSearchParams)\n const dateFrom = yield select(Selectors.getDashboardDrilldownDateFrom)\n const dateTo = yield select(Selectors.getDashboardDrilldownDateTo)\n const dateRange = yield select(Selectors.getDashboardDrilldownDateRange)\n const dateType = yield select(Selectors.getDashboardDrilldownDateType)\n const groupingType = yield select(Selectors.getDashboardDrilldownGroupingType)\n const sortBy = yield select(Selectors.getDashboardDrilldownSortBy)\n\n return {\n date_from: dateFrom,\n date_to: dateTo,\n date_range: dateRange,\n date_type: dateType,\n grouping_type: groupingType,\n sort_by: sortBy,\n search_params: searchParams\n }\n}\n\nexport function* fetchChartAggregation(chart, index, breakpoint, showLoadingIndicator) {\n try {\n if (showLoadingIndicator) {\n yield put(Actions.setChartLoading({\n index,\n breakpoint\n }))\n }\n\n const result = yield call(fetchChartData, chart)\n\n let chartError\n\n if (result && result.error) {\n const isAnalyticsChart = !isPressrelationsNewsChart(chart)\n\n const payload = {\n message: result.error\n }\n\n if (isAnalyticsChart) {\n payload.icon = 'warning'\n const hasExternalAccounts = yield select(Selectors.hasCapability, Capabilities.HAS_EXTERNAL_ACCOUNT_SETTINGS)\n const i18n = yield select(Selectors.getI18n)\n\n if (hasExternalAccounts && payload.message.indexOf('setup') !== -1) {\n payload.moduleLink = '/app/administration/external_accounts'\n payload.info = i18n.get('click_here_to_reconnect_account')\n }\n\n payload.message = i18n.get(payload.message)\n }\n\n chartError = fromJS(payload)\n }\n\n yield put(Actions.setChartData({\n index,\n breakpoint,\n data: result ? result[chart.get('firstLevel')] : null,\n chartError\n }))\n } catch (error) {\n if (!(error.response && error.response.statusCode === 404)) {\n yield put(AppActions.exception(error))\n }\n\n yield put(Actions.setChartData({\n index,\n breakpoint,\n data: null\n }))\n }\n}\n\nexport function* fetchSelectedDashboardData(showLoadingIndicator = true) {\n const selectedDashboard = yield select(Selectors.getSelectedDashboard)\n\n if (selectedDashboard.get('id')) {\n let currentBreakpoint = yield select(Selectors.getBreakpoint)\n const device = yield select(Selectors.getDevice)\n\n let breakpointsToLoad = allowedBreakpoints\n\n if (device.get('phone') || device.get('tablet')) {\n breakpointsToLoad = [currentBreakpoint]\n\n if (device.get('landscape')) {\n breakpointsToLoad.push(allowedBreakpoints[allowedBreakpoints.indexOf(currentBreakpoint) - 1])\n } else {\n breakpointsToLoad.push(allowedBreakpoints[allowedBreakpoints.indexOf(currentBreakpoint) + 1])\n }\n\n if (breakpointsToLoad.every(breakpoint => selectedDashboard.getIn(['charts', breakpoint], fromJS([])).isEmpty())) {\n breakpointsToLoad = allowedBreakpoints\n .filter(breakpoint => breakpointsToLoad.indexOf(breakpoint) === -1)\n .filter(breakpoint => !selectedDashboard.getIn(['charts', breakpoint], fromJS([])).isEmpty())\n\n const [newBreakpoint] = breakpointsToLoad\n currentBreakpoint = newBreakpoint\n }\n }\n\n const preferredEffects = []\n const effects = []\n fromJS(selectedDashboard.get('charts'))\n .forEach((charts, breakpoint) => {\n charts.forEach((chart, index) => {\n if (breakpointsToLoad.indexOf(breakpoint) !== -1) {\n const effect = call(fetchChartAggregation, chart, index, breakpoint, showLoadingIndicator)\n\n // Prefer current breakpoint to fake faster loading\n if (breakpoint === currentBreakpoint) {\n preferredEffects.push(effect)\n } else {\n effects.push(effect)\n }\n }\n })\n })\n\n yield all(preferredEffects)\n yield delay(1000)\n yield all(effects)\n }\n}\n\nexport function* fetchDashboard({ payload: id }) {\n const dashboards = yield select(Selectors.getDashboards)\n const dashboard = dashboards.find(d => d.get('id') === id)\n\n if (dashboard) {\n yield put(Actions.setSelectedDashboard(dashboard))\n yield call(fetchSelectedDashboardData)\n } else {\n try {\n const result = yield call(Api.fetchDashboardConfig, id)\n\n yield call(newsradarSwitch, result.newsradarId)\n } catch (error) {\n const currentPath = yield select(Selectors.getCurrentPath)\n\n if (currentPath !== '/app/dashboard') {\n yield put(NavigationActions.navigate('/app/dashboard'))\n }\n }\n }\n}\n\nexport function* fetchSavedSearchAggregations(action) {\n try {\n if (action && action.payload && action.payload.withDelay) {\n yield (delay(1000))\n }\n\n const chartDialogVisible = yield select(Selectors.getDashboardShowChartDialog)\n\n if (!chartDialogVisible) {\n yield put(Actions.showChartDialog())\n }\n\n const chart = yield select(Selectors.getDashboardSelectedChart)\n const groupingType = yield select(Selectors.getDashboardSelectedChartGroupingType)\n const sortBy = yield select(Selectors.getDashboardSelectedChartSortBy)\n const chartAfter = chart.merge({\n groupingType,\n sortBy\n })\n\n const isLoadable = yield select(Selectors.getDashboardPreviewLoadable)\n\n if (isLoadable) {\n const result = yield call(fetchChartData, chartAfter)\n\n if (result) {\n yield put(Actions.fetchSavedSearchAggregationsSuccess(result))\n }\n }\n } catch (error) {\n yield put(Actions.fetchSavedSearchAggregationsError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* cancelEditing() {\n const previous = yield select(Selectors.getPreviousDashboard)\n yield put(Actions.setSelectedDashboard(previous))\n yield put(Actions.toggleEditing())\n}\n\n// CAUTION: This saga is also used in sagas/analysis\nexport function* saveDashboard(action) {\n try {\n let dashboard = action.payload ? action.payload.dashboard : null\n\n if (!dashboard) {\n dashboard = yield select(Selectors.getSelectedDashboard)\n }\n\n let result\n let body\n\n if (dashboard.get('id')) {\n const uploadedBackgroundImage = dashboard.get('uploadedBackgroundImage')\n const backgroundImageUrl = yield call(uploadPhoto, uploadedBackgroundImage)\n\n dashboard = dashboard.update(\n 'config',\n config => (config || fromJS({})).update('backgroundImageUrl', url => backgroundImageUrl || url || null)\n )\n\n const sanitizedData = dashboard.update(\n 'charts',\n charts => charts.reduce(\n (acc, values, key) => acc.set(key, values.map(chart => chart.deleteAll(['data', 'savedSearch']))),\n fromJS({})\n )\n ).toJS()\n\n body = {\n name_de: sanitizedData.nameDe,\n name_en: sanitizedData.nameEn,\n name_fr: sanitizedData.nameFr,\n name_ru: sanitizedData.nameRu,\n name_zh: sanitizedData.nameZh,\n name_ja: sanitizedData.nameJa,\n charts: decamelizeKeysDeep(sanitizedData.charts),\n layouts: decamelizeKeysDeep(sanitizedData.layouts),\n config: decamelizeKeysDeep(sanitizedData.config)\n }\n\n result = yield call(Api.updateDashboard, sanitizedData.id, body)\n } else {\n body = {\n name_de: dashboard.get('nameDe'),\n name_en: dashboard.get('nameEn'),\n name_fr: dashboard.get('nameFr'),\n name_ru: dashboard.get('nameRu'),\n name_zh: dashboard.get('nameZh'),\n name_ja: dashboard.get('nameJa')\n }\n\n result = yield call(Api.createDashboard, body)\n }\n\n yield put(Actions.saveDashboardSuccess(result))\n\n if (!action.payload || (action.payload && Boolean(action.payload.toggleEditing))) {\n yield put(Actions.toggleEditing())\n } else {\n yield put(NavigationActions.navigate(`/app/dashboard/${result.id}`))\n yield put(Actions.hideEditDialog())\n }\n\n yield put(Actions.setPrevious(dashboard))\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(Actions.saveDashboardError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* deleteDashboard() {\n try {\n const dashboard = yield select(Selectors.getSelectedDashboard)\n const userConfig = yield select(Selectors.getUserConfig)\n\n yield call(Api.deleteDashboard, dashboard.get('id'), userConfig.get('id'))\n\n yield put(Actions.hideDeleteDialog())\n yield put(Actions.deleteDashboardSuccess(dashboard.get('id')))\n yield put(ConfigActions.setDashboardId(null))\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(Actions.deleteDashboardError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* loadAggregations(payload) {\n const isLoadable = yield select(Selectors.getDashboardPreviewLoadable)\n\n if (isLoadable) {\n const chart = yield select(Selectors.getDashboardSelectedChart)\n const index = yield select(Selectors.getDashboardSelectedChartIndex)\n const multipleSavedSearchesMode = yield select(Selectors.getDashboardSelectedChartMultipleSavedSearchesMode)\n\n yield put(Actions.fetchSavedSearchAggregationsStart({\n chart,\n index,\n withDelay: payload && (payload.withDelay === true),\n isMulti: multipleSavedSearchesMode\n }))\n }\n}\n\nexport function* toggleFavorite({ payload: dashboard }) {\n const id = dashboard.get('id')\n\n yield put(ConfigActions.setDashboardId(id))\n\n yield put(ConfigActions.updateUserConfigRequestStart())\n}\n\nexport function* loadDashboard({ payload: id }) {\n const favoritedDashboardId = yield select(Selectors.getFavoritedDashboardId)\n const selectedDashboard = yield select(Selectors.getSelectedDashboard)\n const dashboards = yield select(Selectors.getDashboards)\n const dashboardFavoriteExists = dashboards.some(d => d.get('id') === favoritedDashboardId)\n\n let newId\n\n // ID from URL\n if (id) {\n newId = id\n\n // Already loaded, reloading selected dashboard\n } else if (selectedDashboard.get('id')) {\n newId = selectedDashboard.get('id')\n\n // Favorite as fallback\n } else if (dashboardFavoriteExists) {\n newId = favoritedDashboardId\n\n // No dashboards at all\n } else if (!dashboards.isEmpty()) {\n newId = dashboards.first().get('id')\n }\n\n const currentPath = yield select(Selectors.getCurrentPath)\n\n if (newId) {\n const newPath = `/app/dashboard/${newId}`\n\n if (currentPath !== newPath) {\n yield put(replace(`/app/dashboard/${newId}`))\n } else {\n yield put(Actions.fetchDashboard(newId))\n }\n } else if (currentPath !== '/app/dashboard') {\n yield put(NavigationActions.navigate('/app/dashboard'))\n }\n}\n\nexport function* loadMoreFeedChartItems({ payload }) {\n const { index, breakpoint } = payload\n const chart = yield select(Selectors.getSelectedDashboardChartByIndexAndBreakpoint, index, breakpoint)\n\n if (chart) {\n if (isSocialMediaAnalyticsFeed(chart)) {\n yield put(Actions.loadMoreSocialMediaAnalyticsFeedPostsStart(payload))\n } else {\n yield put(Actions.loadMoreNewsFeedNewsStart(payload))\n }\n }\n}\n\nexport function* loadMoreNewsFeedNews({ payload: { index, group, breakpoint } }) {\n try {\n const chart = yield select(Selectors.getSelectedDashboardChartByIndexAndBreakpoint, index, breakpoint)\n const from = group ? group.get('from', 10) : (chart.getIn(['data', 'from']) || 10)\n\n const body = {\n date_from: chart.get('dateFrom'),\n date_to: chart.get('dateTo'),\n date_range: chart.get('dateRange'),\n date_type: chart.get('dateType'),\n grouping_type: chart.get('groupingType'),\n sort_by: chart.get('sortBy'),\n group_id: group ? group.get('id') : undefined,\n from\n }\n\n const result = yield call(Api.fetchSavedSearchNewsFeed, chart.get('savedSearchId'), body)\n\n yield put(Actions.loadMoreNewsFeedNewsSuccess({ index, result, breakpoint, group }))\n } catch (error) {\n yield put(Actions.loadMoreNewsFeedNewsError({ error, index, breakpoint, group }))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* fetchNewsFeedClusterStats({ payload: { index, group, breakpoint, newsId } }) {\n try {\n const chart = yield select(Selectors.getSelectedDashboardChartByIndexAndBreakpoint, index, breakpoint)\n\n let news\n\n if (group) {\n news = chart.getIn(['data', 'groups'])\n .find(g => g.get('id') === group.get('id'))\n .get('news')\n .find(n => n.get('id') === newsId)\n } else {\n news = chart.getIn(['data', 'news'])\n .find(n => n.get('id') === newsId)\n }\n\n const body = {\n date_from: chart.get('dateFrom'),\n date_to: chart.get('dateTo'),\n date_range: chart.get('dateRange'),\n date_type: chart.get('dateType'),\n grouping_type: chart.get('groupingType'),\n sort_by: chart.get('sortBy'),\n group_id: group ? group.get('id') : undefined\n }\n\n if (news.get('clusterSize') > 1) {\n const groupId = group ? group.get('id') : undefined\n const overwrites = fromJS({\n from: 0,\n size: 10000,\n sort_by: 'reach',\n search_params: {\n news: {\n cluster_id: [news.get('clusterId')],\n exclude_ids: [news.get('id')],\n booleans: {\n global_clusters: false\n }\n }\n }\n })\n\n const searchBody = yield call(mergeDeepKeepLists, fromJS(body), overwrites)\n let result = yield call(Api.fetchSavedSearchNewsFeed, chart.get('savedSearchId'), searchBody)\n let newNews\n\n if (result.groups !== undefined) {\n result = fromJS((result.groups.find(g => g.id === groupId) || { news: [] }).news)\n newNews = news.set('clusteredNews', result)\n } else {\n newNews = news.set('clusteredNews', fromJS(result.news))\n }\n\n yield put(Actions.fetchNewsFeedClusterStatsSuccess({ index, breakpoint, group, newNews }))\n }\n } catch (error) {\n yield put(Actions.fetchNewsFeedClusterStatsError({ error, group, newsId, breakpoint, index }))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* loadMoreSocialMediaAnalyticsFeedPosts({ payload: { index, breakpoint } }) {\n try {\n let chart = yield select(Selectors.getSelectedDashboardChartByIndexAndBreakpoint, index, breakpoint)\n\n if (isFacebookAnalyticsChart(chart)) {\n chart = chart.setIn(['opts', 'facebookAnalytics', 'paging'], chart.getIn(['data', 'paging']))\n }\n\n if (isLinkedInAnalyticsChart(chart)) {\n chart = chart.setIn(['opts', 'linkedInAnalytics', 'paging'], chart.getIn(['data', 'paging']))\n }\n\n if (isTwitterAnalyticsChart(chart)) {\n chart = chart.setIn(['opts', 'twitterAnalytics', 'paging'], chart.getIn(['data', 'paging']))\n }\n\n const result = yield call(fetchChartData, chart)\n\n yield put(Actions.loadMoreSocialMediaAnalyticsFeedPostsSuccess({ index, result: result[chart.get('firstLevel')], breakpoint }))\n } catch (error) {\n yield put(Actions.loadMoreSocialMediaAnalyticsFeedPostsError({ index, error, breakpoint }))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* loadDrilldownNewsFeedNews() {\n try {\n const savedSearch = yield select(Selectors.getDashboardSelectedDrilldownChartSavedSearch)\n const body = yield call(buildDrilldownNewsFeedBody)\n\n const result = yield call(Api.fetchSavedSearchNewsFeed, savedSearch.get('id'), body)\n\n yield put(Actions.loadDrilldownNewsFeedNewsSuccess(result))\n } catch (error) {\n yield put(Actions.loadDrilldownNewsFeedNewsError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* loadDrilldownNewsFeedAiAnalysis() {\n try {\n const i18n = yield select(Selectors.getI18n)\n const chart = yield select(Selectors.getDashboardSelectedDrilldownChart)\n const filterData = yield select(Selectors.getDashboardSelectedDrilldownFilterData)\n const secondFilter = yield select(Selectors.getDashboardSelectedDrilldownSecondFilter)\n\n const savedSearch = yield select(Selectors.getDashboardSelectedDrilldownChartSavedSearch)\n let body = yield call(buildDrilldownNewsFeedBody)\n const locale = yield select(Selectors.getAiSettingsLocale)\n\n const metadata = [\n {\n name: filterData.get('name'),\n type: i18n.get(decamelize(chart.get('firstLevel')), {}, true)\n }\n ]\n\n if (secondFilter) {\n metadata.push({\n id: secondFilter.get('id'),\n name: secondFilter.get('name'),\n type: i18n.get(decamelize(chart.get('secondLevel')), {}, true)\n })\n }\n\n body = { ...body, locale, metadata }\n\n const result = yield call(Api.fetchSavedSearchNewsFeedAiAnalysis, savedSearch.get('id'), body)\n\n yield put(Actions.loadDrilldownNewsFeedAiAnalysisSuccess(result))\n } catch (error) {\n yield put(Actions.loadDrilldownNewsFeedAiAnalysisError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* loadMoreDrilldownNewsFeedNews({ payload: { group } }) {\n try {\n const savedSearch = yield select(Selectors.getDashboardSelectedDrilldownChartSavedSearch)\n const body = yield call(buildDrilldownNewsFeedBody)\n\n body.from = group.get('from', 10)\n\n const result = yield call(Api.fetchSavedSearchNewsFeed, savedSearch.get('id'), body)\n\n yield put(Actions.loadMoreDrilldownNewsFeedNewsSuccess({ result, group }))\n } catch (error) {\n yield put(Actions.loadMoreDrilldownNewsFeedNewsError({ error, group }))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* fetchDrilldownNewsFeedClusterStats({ payload: { group, newsId } }) {\n try {\n const news = yield select(Selectors.getDashboardDrilldownDataNewsById, newsId)\n\n if (news.get('clusterSize') > 1) {\n const savedSearch = yield select(Selectors.getDashboardSelectedDrilldownChartSavedSearch)\n const groupId = group ? group.get('id') : undefined\n const body = yield call(buildDrilldownNewsFeedBody)\n const overwrites = fromJS({\n from: 0,\n size: 10000,\n sort_by: 'reach',\n group_id: groupId,\n search_params: {\n news: {\n cluster_id: [news.get('clusterId')],\n exclude_ids: [newsId],\n booleans: {\n global_clusters: false\n }\n }\n }\n })\n\n const searchBody = yield call(mergeDeepKeepLists, fromJS(body), overwrites)\n let result = yield call(Api.fetchSavedSearchNewsFeed, savedSearch.get('id'), searchBody)\n let newNews\n\n if (result.groups !== undefined) {\n result = fromJS((result.groups.find(g => g.id === groupId) || { news: [] }).news)\n newNews = news.set('clusteredNews', result)\n }\n\n yield put(Actions.fetchDrilldownNewsFeedClusterStatsSuccess({ group, newNews }))\n }\n } catch (error) {\n yield put(Actions.fetchDrilldownNewsFeedClusterStatsError({ error, group, newsId }))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* executeSavedSearch() {\n try {\n yield put(NewsActions.blockNewsRequest())\n const savedSearch = yield select(Selectors.getDashboardSelectedDrilldownChartSavedSearch)\n const moduleName = savedSearch.get('moduleName')\n const isPlotlights = yield select(Selectors.isPlotlights)\n\n if (moduleName === NewsPageModules.NEWS_POOL) {\n yield put(NavigationActions.navigate(isPlotlights ? '/app/media_monitoring' : '/app/search_pool'))\n } else {\n yield put(NavigationActions.navigate(`/app/${moduleName}`))\n }\n\n const { timeout } = yield race({\n selected: take(NewsActions.viewConfigPresetSelected),\n timeout: delay(2000)\n })\n\n if (!timeout) {\n yield put(SavedSearchesActions.setInitialSearchLoaded(true))\n\n yield call(resolveSavedSearch, SavedSearchesActions.executeSavedSearch(savedSearch))\n\n const chart = yield select(Selectors.getDashboardSelectedDrilldownChart)\n const filterData = yield select(Selectors.getDashboardSelectedDrilldownFilterData)\n const secondFilter = yield select(Selectors.getDashboardSelectedDrilldownSecondFilter)\n\n const fields = [filterFieldMapping[filterData.get('field')] || filterData.get('field')]\n\n if (secondFilter) {\n fields.push(filterFieldMapping[secondFilter.get('field')] || secondFilter.get('field'))\n }\n\n const dateType = chart.get('dateType') || savedSearch.get('dateType') || DateTypes.MEDIA_REVIEW\n\n yield put(FilterActions.changeDateType(dateType))\n yield put(FilterActions.resetFilterFields(fields))\n\n yield call(drilldown, ChartsActions.drilldown({\n chart,\n replace: true,\n d: {\n filterData: filterData.toJS()\n },\n secondFilter: secondFilter ? secondFilter.toJS() : null\n }))\n\n yield put(Actions.hideDrilldownDialog())\n yield put(NewsActions.unblockNewsRequest())\n yield put(NewsActions.setNewsView(drilldownAutoViews[moduleName] ? drilldownAutoViews[moduleName] : NewsPageViews.NEWS))\n yield put(NewsActions.newsRequestStart())\n }\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n } finally {\n yield put(Actions.executedSavedSearch())\n yield put(NewsActions.unblockNewsRequest())\n }\n}\n\nexport function* showDrilldownDialog() {\n yield put(Actions.loadDrilldownNewsFeedNewsStart())\n}\n\nexport function* groupingAndSortingChange() {\n yield put(Actions.loadDrilldownNewsFeedNewsStart())\n}\n\nexport function* exportExcel({ payload: chart }) {\n yield call(excelExport, chart)\n}\n\nexport function* exportPowerpoint({ payload: chart }) {\n yield call(powerpointExport, chart)\n}\n\nexport function* exportDashboardAsPowerpoint({ payload }) {\n const breakpoint = yield select(Selectors.getBreakpoint)\n let layouts = yield select(Selectors.getSelectedDashboardLayouts)\n let charts = yield select(Selectors.getSelectedDashboardChartsFilled)\n const coverTitle = yield select(Selectors.getSelectedDashboardName)\n const timezone = yield select(Selectors.getTimezone)\n const logo = yield select(Selectors.getLogo)\n const filename = coverTitle.replace(/(\\s|\\/)+/g, '_').replace(/_+/g, '_').toLowerCase()\n\n layouts = layouts.get(breakpoint)\n charts = charts\n .get(breakpoint)\n .map(chart => {\n let newChart = chart.delete('data')\n\n if (payload && payload.aiEnabled) {\n newChart = newChart.set('aiEnabled', true)\n }\n\n return newChart\n })\n // Map the array to an indexed object so that both Chrome and Firefox result in same iteration over indexes and values.\n .reduce((acc, chart, index) => {\n acc.push({ index, chart })\n\n return acc\n }, [])\n .sort((a, b) => {\n const i = a.index\n const j = b.index\n\n if (layouts.getIn([i, 'y']) < layouts.getIn([j, 'y'])) {\n return -1\n }\n\n if (layouts.getIn([i, 'y']) > layouts.getIn([j, 'y'])) {\n return 1\n }\n\n if (layouts.getIn([i, 'x']) < layouts.getIn([j, 'x'])) {\n return -1\n }\n\n if (layouts.getIn([i, 'x']) > layouts.getIn([j, 'x'])) {\n return 1\n }\n\n return 0\n })\n .map(obj => obj.chart)\n\n yield call(powerpointBatchExport, fromJS(charts), null, {\n cover_title: coverTitle,\n timezone,\n logo,\n filename: `${filename}.pptx`\n })\n\n yield put(Actions.exportDashboardAsPowerpointSuccess())\n}\n\nexport function* toggleEditing() {\n const isEditing = yield select(Selectors.getDashboardIsEditing)\n\n if (isEditing) {\n const selectedDashboard = yield select(Selectors.getSelectedDashboard)\n yield put(Actions.setPrevious(selectedDashboard))\n }\n}\n\nexport function* checkManualFullscreen() {\n const device = yield select(Selectors.getDevice)\n\n if (!device.get('mobile')) {\n const autoRefresh = yield select(Selectors.getDashboardAutoRefresh)\n const isDashboard = yield select(Selectors.isDashboard)\n const fullscreen = yield call(isFullscreen)\n\n if (isDashboard && fullscreen && !autoRefresh) {\n yield put(Actions.toggleAutoRefresh())\n } else if (isDashboard && !fullscreen && autoRefresh) {\n yield put(Actions.toggleAutoRefresh())\n }\n }\n}\n\nexport function* startAutoRefresh() {\n for (;;) {\n const { stop } = yield race({\n stop: take(Actions.stopAutoRefresh),\n refresh: delay(300000)\n })\n\n if (stop) {\n break\n }\n\n const autoRefresh = yield select(Selectors.getDashboardAutoRefresh)\n const isDashboard = yield select(Selectors.isDashboard)\n\n if (autoRefresh && isDashboard) {\n yield call(fetchSelectedDashboardData, false)\n }\n }\n}\n\nexport function* toggleAutoRefresh() {\n try {\n const autoRefresh = yield select(Selectors.getDashboardAutoRefresh)\n\n if (autoRefresh) {\n yield call(startFullscreen)\n } else {\n yield call(stopFullscreen)\n }\n } catch (error) {\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* checkChartChange({ payload: { chartBefore } }) {\n const chartAfter = yield select(Selectors.getDashboardSelectedChart)\n\n let reload = ['firstLevel', 'secondLevel', 'thirdLevel', 'type'].some(level => chartBefore.get(level) !== chartAfter.get(level))\n const multipleSavedSearchesMode = yield select(Selectors.getDashboardSelectedChartMultipleSavedSearchesMode)\n\n if (multipleSavedSearchesMode && chartAfter.get('firstLevel') !== 'savedSearches') {\n reload = true\n yield put(Actions.setSelectedChart(chartAfter.set('secondLevel', 'savedSearches')))\n }\n\n if (reload) {\n yield call(loadAggregations)\n }\n}\n\nexport function* cloneDashboard() {\n try {\n const selectedDashboard = yield select(Selectors.getSelectedDashboard)\n const i18n = yield select(Selectors.getI18n)\n const name = `${selectedDashboard.get('name')} (${i18n.get('cloned_dashboard')})`\n\n const { id } = yield call(Api.createDashboard, { name_en: name })\n\n yield put(Actions.setSelectedDashboard(selectedDashboard.merge({\n name,\n id\n })))\n\n yield call(saveDashboard, {})\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* addNewChartShortcut() {\n yield put(Actions.toggleEditing())\n yield put(Actions.fetchSavedSearchAggregationsStart())\n}\n\nexport function* setSelectedChartOpt({ payload: { key } }) {\n const optsWithReload = [\n 'continentCode',\n 'countryId',\n 'size',\n 'usePercentAsValue',\n 'averageByTimespan',\n 'replaceSnippetsWithSummaries',\n 'widgetContent',\n 'customWidgetUrl'\n ]\n\n if (optsWithReload.indexOf(key) !== -1) {\n yield call(loadAggregations)\n }\n\n if (['aggregationExcludeBuckets', 'allowedEntityTypes'].indexOf(key) !== -1) {\n yield call(loadAggregations, { withDelay: true })\n }\n}\n\nexport function* setChart({ payload: { chart, index, breakpoint } }) {\n if (isImageChart(chart)) {\n yield put(Actions.setChartLoading({ index, breakpoint }))\n\n const uploadedPhoto = yield select(Selectors.getDashboardSelectedChartUploadedPhoto)\n const imageUrl = yield call(uploadPhoto, uploadedPhoto)\n\n if (uploadedPhoto) {\n yield put(Actions.setChartOpt({\n index,\n breakpoint,\n key: 'imageUrl',\n value: imageUrl\n }))\n\n yield put(Actions.setChartLoading({ index, breakpoint, loading: false }))\n }\n }\n\n if (chart.get('loading')) {\n if (index !== null) {\n yield call(fetchChartAggregation, chart, index, breakpoint, true)\n } else {\n const charts = yield select(Selectors.getSelectedDashboardCharts)\n\n yield call(fetchChartAggregation, chart, charts.get(breakpoint).size - 1, breakpoint, true)\n }\n }\n}\n\nexport function* changeFacebookAnalyticsPage({ payload: newPageId }) {\n const currentPageId = yield select(Selectors.getDashboardSelectedChartFacebookAnalyticsPageId)\n const currentPage = yield select(Selectors.getStaticFacebookAnalyticsPageById, currentPageId || '')\n const newPage = yield select(Selectors.getStaticFacebookAnalyticsPageById, newPageId)\n\n let newChart\n\n if (currentPage) {\n if (currentPage.get('instagram') && !newPage.get('instagram')) {\n newChart = yield call(findFirstFacebookChart)\n } else if (!currentPage.get('instagram') && newPage.get('instagram')) {\n newChart = yield call(findFirstFacebookChart, true)\n }\n } else if (newPage.get('instagram')) {\n newChart = yield call(findFirstFacebookChart, true)\n } else {\n newChart = yield call(findFirstFacebookChart)\n }\n\n if (newChart) {\n yield put(Actions.setFacebookAnalyticsChart(newChart))\n }\n\n yield put(Actions.selectFacebookAnalyticsPage(newPage))\n}\n\nexport function* downloadImage() {\n try {\n yield delay(250)\n const selectedDashboard = yield select(Selectors.getSelectedDashboard)\n const filename = `dashboard_${selectedDashboard.get('id')}.png`\n const bodyStyles = yield call(window.getComputedStyle, document.body)\n const backgroundColor = bodyStyles.getPropertyValue('background-color')\n\n yield put(AppActions.downloadElementAsImage({\n filename,\n id: `dashboard-${selectedDashboard.get('id')}`,\n opts: {\n backgroundColor,\n scale: 3\n }\n }))\n\n yield take(AppActions.downloadElementAsImageDone)\n\n yield put(Actions.downloadImageSuccess())\n } catch (error) {\n yield put(Actions.downloadImageError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* downloadPdf() {\n try {\n yield delay(250)\n const selectedDashboard = yield select(Selectors.getSelectedDashboard)\n const filename = `dashboard_${selectedDashboard.get('id')}.pdf`\n const bodyStyles = yield call(window.getComputedStyle, document.body)\n const backgroundColor = bodyStyles.getPropertyValue('background-color')\n\n yield put(AppActions.downloadElementAsPdf({\n filename,\n id: `dashboard-${selectedDashboard.get('id')}`,\n opts: {\n backgroundColor,\n backgroundImageUrl: selectedDashboard.getIn(['config', 'backgroundImageUrl']),\n scale: 1\n }\n }))\n\n yield take(AppActions.downloadElementAsPdfDone)\n\n yield put(Actions.downloadPdfSuccess())\n } catch (error) {\n yield put(Actions.downloadPdfError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* aiChartDescription({ payload: { breakpoint, index, chart } }) {\n try {\n yield put(Actions.setChart({\n index,\n breakpoint,\n chart: chart.set('aiDescriptionLoading', true)\n }))\n\n const { description } = yield call(Api.aiChartDescription, { chart: JSON.stringify(chart.toJS()) })\n\n yield put(Actions.setChart({\n index,\n breakpoint,\n chart: chart.merge({\n aiDescription: description,\n aiDescriptionLoading: false\n })\n }))\n\n yield put(Actions.aiChartDescriptionSuccess())\n } catch (error) {\n const i18n = yield select(Selectors.getI18n)\n\n yield put(Actions.setChart({\n index,\n breakpoint,\n chart: chart.merge({\n aiDescriptionLoading: false,\n aiDescription: i18n.get('unknown_error')\n })\n }))\n\n yield put(Actions.aiChartDescriptionError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* watchFetchDashboard() {\n yield takeLatest(Actions.fetchDashboard, fetchDashboard)\n}\n\nexport function* watchFetchSavedSearchAggregations() {\n yield takeLatest(Actions.fetchSavedSearchAggregationsStart, fetchSavedSearchAggregations)\n}\n\nexport function* watchCancelEditing() {\n yield takeEvery(Actions.cancelEditing, cancelEditing)\n}\n\nexport function* watchSaveDashboard() {\n yield takeEvery(Actions.saveDashboardStart, saveDashboard)\n}\n\nexport function* watchDeleteDashboard() {\n yield takeEvery(Actions.deleteDashboardStart, deleteDashboard)\n}\n\nexport function* watchSelectSavedSearch() {\n yield takeEvery(Actions.selectSavedSearch, loadAggregations)\n yield takeEvery(Actions.selectDateRange, loadAggregations)\n yield takeEvery(Actions.selectDate, loadAggregations)\n yield takeEvery(Actions.selectDateType, loadAggregations)\n yield takeEvery(Actions.selectDateInterval, loadAggregations)\n yield takeEvery(Actions.selectGoogleAnalyticsChart, loadAggregations)\n yield takeEvery(Actions.selectGoogleAnalyticsView, loadAggregations)\n yield takeEvery(Actions.selectMozChart, loadAggregations)\n yield takeEvery(Actions.selectMozTargets, loadAggregations)\n yield takeEvery(Actions.selectLinkedInAnalyticsChart, loadAggregations)\n yield takeEvery(Actions.selectLinkedInAnalyticsOrganization, loadAggregations)\n yield takeEvery(Actions.selectFacebookAnalyticsChart, loadAggregations)\n yield takeEvery(Actions.selectFacebookAnalyticsPage, loadAggregations)\n yield takeEvery(Actions.selectTwitterAnalyticsChart, loadAggregations)\n yield takeEvery(Actions.selectChartDialogGroupingType, loadAggregations)\n yield takeEvery(Actions.selectChartDialogSortBy, loadAggregations)\n yield takeEvery(Actions.selectThirdLevel, loadAggregations)\n yield takeEvery(Actions.selectFirstLevel, loadAggregations)\n yield takeEvery(Actions.selectDateMode, loadAggregations)\n yield takeEvery(Actions.setSelectedChartMultipleSavedSearchesMode, loadAggregations)\n yield takeEvery(Actions.selectAdditionalSavedSearches, loadAggregations)\n}\n\nexport function* watchToggleFavorite() {\n yield takeEvery(Actions.toggleFavorite, toggleFavorite)\n}\n\nexport function* watchLoadDashboard() {\n yield takeEvery(Actions.loadDashboard, loadDashboard)\n}\n\nexport function* watchLoadMoreFeedChartItems() {\n yield takeEvery(Actions.loadMoreFeedChartItems, loadMoreFeedChartItems)\n}\n\nexport function* watchLoadMoreNewsFeedNews() {\n yield takeEvery(Actions.loadMoreNewsFeedNewsStart, loadMoreNewsFeedNews)\n}\n\nexport function* watchFetchNewsFeedClusterStats() {\n yield takeEvery(Actions.fetchNewsFeedClusterStatsStart, fetchNewsFeedClusterStats)\n}\n\nexport function* watchShowDrilldownDialog() {\n yield takeEvery(Actions.showDrilldownDialog, showDrilldownDialog)\n}\n\nexport function* watchLoadDrilldownNewsFeedNews() {\n yield takeEvery(Actions.loadDrilldownNewsFeedNewsStart, loadDrilldownNewsFeedNews)\n}\n\nexport function* watchLoadDrilldownNewsFeedAiAnalysis() {\n yield takeEvery(Actions.loadDrilldownNewsFeedAiAnalysisStart, loadDrilldownNewsFeedAiAnalysis)\n}\n\nexport function* watchLoadMoreDrilldownNewsFeedNews() {\n yield takeEvery(Actions.loadMoreDrilldownNewsFeedNewsStart, loadMoreDrilldownNewsFeedNews)\n}\n\nexport function* watchFetchDrilldownNewsFeedClusterStats() {\n yield takeEvery(Actions.fetchDrilldownNewsFeedClusterStatsStart, fetchDrilldownNewsFeedClusterStats)\n}\n\nexport function* watchLoadMoreSocialMediaAnalyticsFeedPosts() {\n yield takeEvery(Actions.loadMoreSocialMediaAnalyticsFeedPostsStart, loadMoreSocialMediaAnalyticsFeedPosts)\n}\n\nexport function* watchGroupingAndSortingChange() {\n yield takeEvery(Actions.selectDrilldownGroupingType, groupingAndSortingChange)\n yield takeEvery(Actions.selectDrilldownSortBy, groupingAndSortingChange)\n}\n\nexport function* watchExecuteSavedSearch() {\n yield takeEvery(Actions.executeSavedSearch, executeSavedSearch)\n}\n\nexport function* watchExportExcel() {\n yield takeEvery(Actions.exportExcelStart, exportExcel)\n}\n\nexport function* watchExportPowerpoint() {\n yield takeLatest(Actions.exportPowerpointStart, exportPowerpoint)\n}\n\nexport function* watchExportDashboardAsPowerpoint() {\n yield takeLatest(Actions.exportDashboardAsPowerpointStart, exportDashboardAsPowerpoint)\n}\n\nexport function* watchToggleEditing() {\n yield takeEvery(Actions.toggleEditing, toggleEditing)\n}\n\nexport function* watchStartAutoRefresh() {\n yield takeEvery(Actions.startAutoRefresh, startAutoRefresh)\n yield takeEvery(Actions.startAutoRefresh, checkManualFullscreen)\n}\n\nexport function* watchToggleAutoRefresh() {\n yield takeEvery(Actions.toggleAutoRefresh, toggleAutoRefresh)\n}\n\nexport function* watchCheckChartChange() {\n yield takeEvery(Actions.checkChartChange, checkChartChange)\n}\n\nexport function* watchDateChanges() {\n yield takeEvery(Actions.updateDateRangeOfSelectedDashboard, fetchSelectedDashboardData)\n yield takeEvery(Actions.updateDatesOfSelectedDashboard, fetchSelectedDashboardData)\n yield takeEvery(Actions.updateKpisOfSelectedDashboard, fetchSelectedDashboardData)\n}\n\nexport function* watchCloneDashboard() {\n yield takeEvery(Actions.cloneDashboard, cloneDashboard)\n}\n\nexport function* watchAddNewChartShortcut() {\n yield takeEvery(Actions.addNewChartShortcut, addNewChartShortcut)\n}\n\nexport function* watchSetSelectedChartOpt() {\n yield debounce(500, Actions.setSelectedChartOpt, setSelectedChartOpt)\n}\n\nexport function* watchSetChart() {\n yield takeEvery(Actions.setChart, setChart)\n}\n\nexport function* watchChangeFacebookAnalyticsPage() {\n yield takeEvery(Actions.changeFacebookAnalyticsPage, changeFacebookAnalyticsPage)\n}\n\nexport function* watchDownloadImage() {\n yield takeEvery(Actions.downloadImageStart, downloadImage)\n}\n\nexport function* watchDownloadPdf() {\n yield takeEvery(Actions.downloadPdfStart, downloadPdf)\n}\n\nexport function* watchAiChartDescription() {\n yield takeEvery(Actions.aiChartDescriptionStart, aiChartDescription)\n}\n\nexport default function* saga() {\n yield all([\n watchFetchDashboard(),\n watchFetchSavedSearchAggregations(),\n watchCancelEditing(),\n watchSaveDashboard(),\n watchDeleteDashboard(),\n watchSelectSavedSearch(),\n watchToggleFavorite(),\n watchLoadDashboard(),\n watchLoadMoreFeedChartItems(),\n watchLoadMoreNewsFeedNews(),\n watchFetchNewsFeedClusterStats(),\n watchShowDrilldownDialog(),\n watchLoadDrilldownNewsFeedNews(),\n watchLoadDrilldownNewsFeedAiAnalysis(),\n watchLoadMoreDrilldownNewsFeedNews(),\n watchFetchDrilldownNewsFeedClusterStats(),\n watchLoadMoreSocialMediaAnalyticsFeedPosts(),\n watchGroupingAndSortingChange(),\n watchExecuteSavedSearch(),\n watchExportExcel(),\n watchExportPowerpoint(),\n watchExportDashboardAsPowerpoint(),\n watchToggleEditing(),\n watchStartAutoRefresh(),\n watchToggleAutoRefresh(),\n watchCheckChartChange(),\n watchDateChanges(),\n watchCloneDashboard(),\n watchAddNewChartShortcut(),\n watchSetSelectedChartOpt(),\n watchSetChart(),\n watchChangeFacebookAnalyticsPage(),\n watchDownloadImage(),\n watchDownloadPdf(),\n watchAiChartDescription()\n ])\n}\n","import { put, select, all, debounce, takeEvery, call, takeLatest } from 'redux-saga/effects'\nimport { fromJS } from 'immutable'\n\nimport { ChartDataSources } from 'static/constants'\n\nimport * as Actions from 'actions/analysis'\nimport * as AppActions from 'actions/app'\nimport * as FilterActions from 'actions/filter'\nimport * as NewsActions from 'actions/news'\nimport * as ChartsActions from 'actions/charts'\nimport * as DashboardActions from 'actions/dashboard'\nimport * as SavedSearchesActions from 'actions/saved_searches'\nimport * as Selectors from 'selectors'\nimport { fetchChartData as fetchChartDataSaga } from 'sagas/charts'\nimport { createSavedSearch } from 'sagas/saved_searches'\nimport { saveDashboard } from 'sagas/dashboard'\n\nexport function* applyAnalysisFilter() {\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* reloadChart(metricsToLoad) {\n yield put(Actions.fetchChartDataStart({ metricsToLoad }))\n}\n\nexport function* setAnalysisFilter({ payload: { field, value } }) {\n let newValue\n switch (field) {\n case 'selectedCodes': {\n newValue = yield select(Selectors.getStaticAnalysisCodesByIds, value)\n break\n }\n case 'restrictedCodes': {\n newValue = yield select(Selectors.getStaticAnalysisCodesByIds, value)\n break\n }\n case 'excludedCodes': {\n newValue = yield select(Selectors.getStaticAnalysisCodesByIds, value)\n break\n }\n case 'groupedCodes': {\n newValue = yield select(Selectors.getStaticAnalysisCodesByIds, value)\n break\n }\n default: {\n newValue = value\n }\n }\n\n yield put(FilterActions.setAnalysisFilter({ field, value: newValue }))\n yield put(Actions.applyAnalysisFilter())\n}\n\nexport function* fetchChartData({ payload }) {\n yield put(Actions.fetchMetricsChartsData(payload))\n\n const chart = yield select(Selectors.getNewsAnalysisChart)\n const searchBody = yield select(Selectors.getSearchBody)\n\n const result = yield call(fetchChartDataSaga, chart, searchBody)\n\n yield put(Actions.fetchChartDataSuccess(result ? result[chart.get('firstLevel')] : null))\n}\n\nexport function* fetchMetricsChartData(chart, index) {\n yield put(Actions.setMetricsChartLoading(index))\n const analysisChart = yield select(Selectors.getNewsAnalysisChart)\n const newChart = chart\n .set('secondLevel', analysisChart.get('secondLevel'))\n .update('opts', fromJS({}), opts => (\n chart.get('firstLevel') === 'mentionsCount' ? opts.set('targetBucket', analysisChart.get('firstLevel')) : opts\n ))\n\n const searchBody = yield select(Selectors.getSearchBody)\n const result = yield call(fetchChartDataSaga, newChart, searchBody)\n\n yield put(Actions.setMetricsChartData({\n data: result ? result[chart.get('firstLevel')] : null,\n index\n }))\n}\n\nexport function* fetchMetricsChartsData({ payload }) {\n let charts = yield select(Selectors.getNewsAnalysisMetrics)\n\n if (payload && payload.metricsToLoad) {\n charts = charts.filter((chart, index) => payload.metricsToLoad.indexOf(index) !== -1)\n }\n\n const effects = []\n charts.forEach((chart, index) => {\n effects.push(call(fetchMetricsChartData, chart, index))\n })\n\n yield all(effects)\n}\n\nexport function* setChartFields({ payload }) {\n yield call(reloadChart, (!payload || !payload.type) ? undefined : [])\n}\n\nexport function* setChartOpt() {\n yield call(setChartFields, {})\n}\n\nexport function* toggleUseMediaReviewCodes() {\n const value = yield select(Selectors.getNewsFiltersAnalysisUseMediaReviewCodes)\n\n yield put(FilterActions.resetAnalysisCodesFilter())\n\n yield put(FilterActions.setAnalysisFilter({\n field: 'useMediaReviewCodes',\n value: !value\n }))\n\n yield call(applyAnalysisFilter)\n}\n\nexport function* drilldown({ payload }) {\n const chart = yield select(Selectors.getNewsAnalysisChart)\n\n const newChart = chart\n .update('firstLevel', l => (l === 'analysisCodes' ? 'statementCodes' : l))\n .update('secondLevel', l => (l === 'analysisCodes' ? 'groupedStatementCodes' : l))\n .update('firstLevel', l => (l === 'statementTonalities' ? 'newsStatementTonalities' : l))\n .update('secondLevel', l => (l === 'statementTonalities' ? 'newsStatementTonalities' : l))\n\n yield put(ChartsActions.drilldown({ ...payload, chart: newChart }))\n}\n\nexport function* toggleStatementTonality({ payload }) {\n yield put(FilterActions.toggleStatementTonality(payload))\n yield put(Actions.applyAnalysisFilter())\n}\n\nexport function* pushChartToDashboard({ payload: { savedSearchId, name, dashboardId } }) {\n try {\n const dashboard = yield select(Selectors.getDashboardById, dashboardId)\n\n if (dashboard && (name || savedSearchId)) {\n yield put(DashboardActions.setSelectedDashboard(dashboard))\n\n let savedSearch\n\n if (!savedSearchId) {\n savedSearch = fromJS({\n nameDe: name,\n nameEn: name,\n nameFr: name,\n nameRu: name,\n nameZh: name,\n nameJa: name\n })\n savedSearch = yield call(createSavedSearch, savedSearch)\n\n yield put(SavedSearchesActions.saveSavedSearchSuccess(savedSearch))\n\n savedSearch = fromJS(savedSearch)\n } else {\n savedSearch = yield select(Selectors.getSavedSearchById, savedSearchId)\n }\n\n const dateRange = yield select(Selectors.getSelectedDateRange)\n const dateFrom = yield select(Selectors.getSelectedDateFrom)\n const dateTo = yield select(Selectors.getSelectedDateTo)\n const dateInterval = yield select(Selectors.getSelectedDateInterval)\n const dateType = yield select(Selectors.getSelectedDateType)\n\n let chart = yield select(Selectors.getNewsAnalysisChart)\n chart = chart.merge(fromJS({\n savedSearch,\n savedSearchId: savedSearch.get('id'),\n dateRange,\n dateFrom: dateRange ? null : dateFrom,\n dateTo: dateRange ? null : dateTo,\n dateInterval,\n dateType,\n dataSource: ChartDataSources.PRESSRELATIONS_NEWS\n }))\n\n const breakpoint = yield select(Selectors.getBreakpoint)\n\n yield put(DashboardActions.setChart({\n chart,\n index: null,\n breakpoint\n }))\n\n yield call(saveDashboard, DashboardActions.saveDashboardStart({\n toggleEditing: false\n }))\n\n yield put(Actions.hidePushChartToDashboardDialog())\n }\n\n yield put(Actions.pushChartToDashboardSuccess())\n } catch (error) {\n yield put(Actions.pushChartToDashboardError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* watchSetAnalysisFilter() {\n yield takeEvery(Actions.setAnalysisFilter, setAnalysisFilter)\n}\n\nexport function* watchApplyAnalysisFilter() {\n yield debounce(1000, Actions.applyAnalysisFilter, applyAnalysisFilter)\n}\n\nexport function* watchFetchChartData() {\n yield takeLatest(Actions.fetchChartDataStart, fetchChartData)\n}\n\nexport function* watchFetchMetricsChartsData() {\n yield takeLatest(Actions.fetchMetricsChartsData, fetchMetricsChartsData)\n}\n\nexport function* watchSetChartFields() {\n yield takeEvery(Actions.setChartFields, setChartFields)\n}\n\nexport function* watchSetChartOpt() {\n yield takeEvery(Actions.setChartOpt, setChartOpt)\n}\n\nexport function* watchToggleUseMediaReviewCodes() {\n yield takeEvery(Actions.toggleUseMediaReviewCodes, toggleUseMediaReviewCodes)\n}\n\nexport function* watchToggleStatementTonality() {\n yield takeEvery(Actions.toggleStatementTonality, toggleStatementTonality)\n}\n\nexport function* watchPushChartToDashboard() {\n yield takeEvery(Actions.pushChartToDashboardStart, pushChartToDashboard)\n}\n\nexport function* watchDrilldown() {\n yield takeEvery(Actions.drilldown, drilldown)\n}\n\nexport default function* saga() {\n yield all([\n watchSetAnalysisFilter(),\n watchApplyAnalysisFilter(),\n watchFetchChartData(),\n watchFetchMetricsChartsData(),\n watchSetChartFields(),\n watchSetChartOpt(),\n watchToggleUseMediaReviewCodes(),\n watchToggleStatementTonality(),\n watchPushChartToDashboard(),\n watchDrilldown()\n ])\n}\n","import { put, call, takeEvery, all, select } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/api_keys'\nimport * as AppActions from 'actions/app'\nimport * as ConfigActions from 'actions/config'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\n\nexport function* submitApiKey({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n yield call(Api.submitApiKey, {\n api_key: payload.name, groot_external_api_key_type_id: payload.typeId\n })\n yield put(Actions.submitApiKeySuccess())\n yield put(ConfigActions.configRequestStart())\n } catch (error) {\n yield put(Actions.submitApiKeyError())\n\n if (error.response.statusCode === 401) {\n yield put(AppActions.showAppMessage({ text: i18n.get('invalid_api_key'), success: false }))\n } else {\n yield put(AppActions.genericErrorMessage())\n }\n }\n}\n\nexport function* deleteApiKey({ payload: id }) {\n try {\n yield call(Api.deleteApiKey, id)\n yield put(Actions.deleteApiKeySuccess())\n yield put(ConfigActions.configRequestStart())\n } catch (error) {\n yield put(Actions.deleteApiKeyError())\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* watchSubmitApiKey() {\n yield takeEvery(Actions.submitApiKeyStart, submitApiKey)\n}\n\nexport function* watchDeleteApiKey() {\n yield takeEvery(Actions.deleteApiKeyStart, deleteApiKey)\n}\n\nexport default function* appSaga() {\n yield all([\n watchSubmitApiKey(),\n watchDeleteApiKey()\n ])\n}\n","import { put, call, takeEvery, all } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/auth'\nimport * as AppActions from 'actions/app'\nimport * as ConfigActions from 'actions/config'\nimport * as Api from 'api/bff'\n\nexport function* authenticateGoogleAnalytics({ payload: { code } }) {\n try {\n yield call(Api.authenticateGoogleAnalytics, {\n code\n })\n\n yield put(ConfigActions.setGoogleAnalyticsEnabled())\n yield put(AppActions.genericSuccessMessage())\n yield put(ConfigActions.configRequestStart())\n yield put(Actions.authenticateGoogleAnalyticsSuccess())\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n yield put(Actions.authenticateGoogleAnalyticsError())\n }\n}\n\nexport function* authenticateYoutubeAnalytics({ payload: { code } }) {\n try {\n yield call(Api.authenticateYoutubeAnalytics, {\n code\n })\n\n yield put(ConfigActions.setYoutubeAnalyticsEnabled())\n yield put(AppActions.genericSuccessMessage())\n yield put(ConfigActions.configRequestStart())\n yield put(Actions.authenticateYoutubeAnalyticsSuccess())\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n yield put(Actions.authenticateYoutubeAnalyticsError())\n }\n}\n\nexport function* authenticateLinkedIn({ payload: { code } }) {\n try {\n yield call(Api.authenticateLinkedIn, {\n code\n })\n\n yield put(ConfigActions.setLinkedInAnalyticsEnabled())\n yield put(AppActions.genericSuccessMessage())\n yield put(ConfigActions.configRequestStart())\n yield put(Actions.authenticateLinkedInSuccess())\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n yield put(Actions.authenticateLinkedInError())\n }\n}\n\nexport function* revokeGoogleAnalytics() {\n try {\n yield call(Api.revokeGoogleAnalytics)\n\n yield put(ConfigActions.setGoogleAnalyticsDisabled())\n yield put(AppActions.genericSuccessMessage())\n yield put(ConfigActions.configRequestStart())\n yield put(Actions.revokeGoogleAnalyticsSuccess())\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n yield put(Actions.revokeGoogleAnalyticsError())\n }\n}\n\nexport function* revokeYoutubeAnalytics() {\n try {\n yield call(Api.revokeYoutubeAnalytics)\n\n yield put(ConfigActions.setYoutubeAnalyticsDisabled())\n yield put(AppActions.genericSuccessMessage())\n yield put(ConfigActions.configRequestStart())\n yield put(Actions.revokeYoutubeAnalyticsSuccess())\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n yield put(Actions.revokeYoutubeAnalyticsError())\n }\n}\n\nexport function* revokeLinkedIn() {\n try {\n yield call(Api.revokeLinkedIn)\n\n yield put(ConfigActions.setLinkedInAnalyticsDisabled())\n yield put(AppActions.genericSuccessMessage())\n yield put(ConfigActions.configRequestStart())\n yield put(Actions.revokeLinkedInSuccess())\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n yield put(Actions.revokeLinkedInError())\n }\n}\n\nexport function* revokeTwitter() {\n try {\n yield call(Api.revokeTwitter)\n\n yield put(AppActions.genericSuccessMessage())\n yield put(ConfigActions.configRequestStart())\n yield put(Actions.revokeTwitterSuccess())\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n yield put(Actions.revokeTwitterError())\n }\n}\n\nexport function* revokeFacebook() {\n try {\n yield call(Api.revokeFacebook)\n\n yield put(ConfigActions.setFacebookAnalyticsDisabled())\n yield put(AppActions.genericSuccessMessage())\n yield put(ConfigActions.configRequestStart())\n yield put(Actions.revokeFacebookSuccess())\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n yield put(Actions.revokeFacebookError())\n }\n}\n\nexport function* authenticateFacebook({ payload }) {\n try {\n yield call(Api.authenticateFacebook, {\n at: payload.accessToken,\n user_id: payload.userID\n })\n\n yield put(ConfigActions.setFacebookAnalyticsEnabled())\n yield put(AppActions.genericSuccessMessage())\n yield put(ConfigActions.configRequestStart())\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* watchAuthenticateGoogleAnalytics() {\n yield takeEvery(Actions.authenticateGoogleAnalyticsStart, authenticateGoogleAnalytics)\n}\n\nexport function* watchRevokeGoogleAnalytics() {\n yield takeEvery(Actions.revokeGoogleAnalyticsStart, revokeGoogleAnalytics)\n}\n\nexport function* watchAuthenticateYoutubeAnalytics() {\n yield takeEvery(Actions.authenticateYoutubeAnalyticsStart, authenticateYoutubeAnalytics)\n}\n\nexport function* watchRevokeYoutubeAnalytics() {\n yield takeEvery(Actions.revokeYoutubeAnalyticsStart, revokeYoutubeAnalytics)\n}\n\nexport function* watchRevokeFacebook() {\n yield takeEvery(Actions.revokeFacebookStart, revokeFacebook)\n}\n\nexport function* watchRevokeLinkedIn() {\n yield takeEvery(Actions.revokeLinkedInStart, revokeLinkedIn)\n}\n\nexport function* watchRevokeTwitter() {\n yield takeEvery(Actions.revokeTwitterStart, revokeTwitter)\n}\n\nexport function* watchAuthenticateFacebook() {\n yield takeEvery(Actions.authenticateFacebookStart, authenticateFacebook)\n}\n\nexport function* watchAuthenticateLinkedIn() {\n yield takeEvery(Actions.authenticateLinkedInStart, authenticateLinkedIn)\n}\n\nexport default function* appSaga() {\n yield all([\n watchAuthenticateGoogleAnalytics(),\n watchRevokeGoogleAnalytics(),\n watchAuthenticateYoutubeAnalytics(),\n watchRevokeYoutubeAnalytics(),\n watchRevokeFacebook(),\n watchRevokeLinkedIn(),\n watchRevokeTwitter(),\n watchAuthenticateFacebook(),\n watchAuthenticateLinkedIn()\n ])\n}\n","import { call, put, select, takeEvery, all, take } from 'redux-saga/effects'\n\nimport { retriable } from 'utils/sagas'\nimport { updateColorInMeta } from 'utils/dom'\nimport { verifyTheme } from 'utils/themes'\n\nimport * as Actions from 'actions/config'\nimport * as AdministrationActions from 'actions/administration'\nimport * as Api from 'api/bff'\nimport { changeDate } from 'actions/filter'\nimport {\n genericErrorMessage,\n genericSuccessMessage,\n setAppReady,\n setAppBusy,\n loadFromLocalStorage,\n exception,\n showAppSnackbarMessage\n} from 'actions/app'\nimport * as Selectors from 'selectors'\nimport { setExportConfig } from 'actions/export'\nimport { setUser, reset as resetUser } from 'actions/user'\nimport { setSubscriptions } from 'actions/subscriptions'\nimport { setCustomTags } from 'actions/custom_tags'\nimport { setIdentitySets } from 'actions/identity_sets'\nimport { setCharts } from 'actions/charts'\nimport { setMediaReviews } from 'actions/media_reviews'\nimport { setMailingLists } from 'actions/mailing_lists'\nimport { setSavedSearches } from 'actions/saved_searches'\nimport { setDashboards } from 'actions/dashboard'\nimport { setAssignees, setUploadedMediaFilesTotalSize } from 'actions/content_desk'\nimport { setContactTags } from 'actions/contact_management'\n// import { setOption } from 'actions/ga'\nimport { navigate } from 'actions/navigation'\nimport { setNotifications, setLastPage } from 'actions/notifications'\nimport * as CookieHelper from 'utils/cookieHelper'\nimport { CookieNames } from 'static/constants'\n\nexport function* fetchConfigTry() {\n yield put(setAppBusy())\n const firstConfigLoaded = yield select(Selectors.getFirstConfigLoaded)\n const startedWithDeepLink = yield select(Selectors.getStartedWithDeepLink)\n const newsradarId = yield select(Selectors.getNewsradarId)\n const accessToken = yield select(Selectors.getAccessToken)\n const timezone = yield select(Selectors.getTimezone)\n const currentPath = yield select(Selectors.getCurrentPath)\n const themes = yield select(Selectors.getThemes)\n\n if (accessToken && newsradarId) {\n // yield put(setOption({ key: 'dimension3', value: newsradarId }))\n\n const result = yield call(Api.fetchConfig, timezone)\n\n const {\n ccdAssignees,\n ccdContactTags,\n ccdMediaFilesTotalSize,\n config,\n statics,\n user,\n subscriptions,\n customTags,\n identitySets,\n charts,\n mediaReviews,\n mailingLists,\n savedSearches,\n dashboards,\n notifications\n } = result\n\n const { contentDeskConfig, ...restConfig } = config\n\n const selectedTheme = verifyTheme(themes, (user.darkMode ? 'dark' : 'light'), restConfig.colors)\n\n yield put(Actions.configRequestSuccess(result))\n yield put(setUser(user))\n yield put(Actions.setStatics(statics))\n yield put(Actions.setConfig({ ...restConfig, selectedTheme }))\n yield put(Actions.setCDeskConfig(contentDeskConfig))\n yield put(setMailingLists(mailingLists))\n yield put(setSavedSearches(savedSearches))\n yield put(setDashboards(dashboards))\n yield put(setExportConfig(restConfig))\n yield put(setSubscriptions({\n subscriptions,\n topics: statics.subscriptionsSelectableCodes\n }))\n yield put(setCustomTags(customTags))\n yield put(setIdentitySets(identitySets))\n yield put(setCharts(charts))\n yield put(setMediaReviews(mediaReviews))\n yield put(setAssignees(ccdAssignees))\n yield put(setContactTags(ccdContactTags))\n yield put(setNotifications(notifications.notificationsList))\n yield put(setUploadedMediaFilesTotalSize(ccdMediaFilesTotalSize))\n\n if (!notifications.hasMoreResults) {\n yield put(setLastPage())\n }\n\n if (restConfig.initialMediareviewDate) {\n const { from, to } = restConfig.initialMediareviewDate\n\n if (from && to) {\n yield put(changeDate({\n dateFrom: new Date(from),\n dateTo: new Date(to)\n }))\n } else {\n yield put(changeDate({\n dateFrom: null,\n dateTo: null\n }))\n }\n }\n\n if (restConfig.initialRoute) {\n yield call(CookieHelper.saveCookie, CookieNames.INITIAL_ROUTE, restConfig.initialRoute)\n\n if (!firstConfigLoaded && !startedWithDeepLink && currentPath !== restConfig.initialRoute) {\n yield put(navigate(restConfig.initialRoute))\n }\n } else {\n yield call(CookieHelper.deleteCookie, CookieNames.INITIAL_ROUTE)\n }\n\n yield put(setAppReady())\n yield put(loadFromLocalStorage())\n } else {\n yield put(resetUser())\n }\n}\n\nexport function* fetchConfigFail(error) {\n yield put(Actions.configRequestError(error))\n yield put(resetUser())\n\n if (!error.response || (error.response && error.response.statusCode !== 401)) {\n yield put(genericErrorMessage())\n yield put(exception(error))\n }\n}\n\nexport const retryConfigFun = error => !(error.response && error.response.statusCode === 401)\n\nexport function* fetchConfig() {\n yield call(retriable, fetchConfigTry, fetchConfigFail, null, { retryCount: 1, retryFun: retryConfigFun })\n}\n\nexport function* updateConfig() {\n try {\n const body = yield select(Selectors.getConfigUpdateBody)\n const newsradarId = yield select(Selectors.getNewsradarId)\n\n yield call(Api.updateConfig, body, newsradarId)\n yield call(CookieHelper.deleteCookie, CookieNames.INITIAL_ROUTE)\n yield put(Actions.updateConfigRequestSuccess())\n yield put(genericSuccessMessage())\n } catch (error) {\n yield put(Actions.updateConfigRequestError(error))\n yield put(genericErrorMessage())\n yield put(exception(error))\n }\n}\n\nexport function* updateUserConfig() {\n try {\n const userConfig = yield select(Selectors.getUserConfig)\n\n const body = {\n id: userConfig.get('id'),\n data: {\n news_saved_search_id: userConfig.get('newsSavedSearchId'),\n profile_monitoring_saved_search_id: userConfig.get('profileMonitoringSavedSearchId'),\n news_pool_saved_search_id: userConfig.get('newsPoolSavedSearchId'),\n analysis_saved_search_id: userConfig.get('analysisSavedSearchId'),\n dashboard_id: userConfig.get('dashboardId'),\n translate_search_results: userConfig.get('translateSearchResults'),\n translate_search_results_target_lang: userConfig.get('translateSearchResultsTargetLang')\n }\n }\n\n const { id } = yield call(Api.updateUserConfig, body)\n yield put(Actions.updateUserConfigRequestSuccess(id))\n yield put(genericSuccessMessage())\n } catch (error) {\n yield put(Actions.updateUserConfigRequestError(error))\n yield put(genericErrorMessage())\n yield put(exception(error))\n }\n}\n\nexport function* refreshContentDeskPlanUsageAndLimits() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n yield put(Actions.fetchCDeskConfigRequestStart())\n yield take(Actions.fetchCDeskConfigRequestSuccess)\n\n yield put(showAppSnackbarMessage({\n text: i18n.get('ccd_config_plan_usage_and_limits_refresh_success'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(showAppSnackbarMessage({\n text: i18n.get('ccd_config_plan_usage_and_limits_refresh_error'),\n variant: 'error'\n }))\n }\n}\n\nexport function* fetchContentDeskConfig() {\n try {\n const result = yield call(Api.fetchContentDeskConfig)\n yield put(Actions.setCDeskConfig(result))\n yield put(Actions.fetchCDeskConfigRequestSuccess())\n } catch (error) {\n yield put(Actions.fetchCDeskConfigRequestError())\n }\n}\n\nexport function* updateContentDeskConfig() {\n try {\n const contentDeskConfig = yield select(Selectors.getCDeskConfig)\n\n const id = contentDeskConfig.get('id')\n\n const body = {\n sender_email: contentDeskConfig.get('senderEmail'),\n sender_name: contentDeskConfig.get('senderName'),\n domain: contentDeskConfig.get('domain'),\n domain_region: contentDeskConfig.get('domainRegion'),\n show_default_domains: contentDeskConfig.get('showDefaultDomains')\n }\n\n const result = yield call(Api.updateContentDeskConfig, id, body)\n\n yield put(Actions.updateCDeskConfigRequestSuccess())\n yield put(Actions.setCDeskConfig(result))\n yield put(AdministrationActions.searchAllowedDomainsStart())\n yield put(genericSuccessMessage())\n } catch (error) {\n yield put(Actions.updateCDeskConfigRequestError())\n yield put(genericErrorMessage())\n yield put(exception(error))\n }\n}\n\nexport function* colorChanges() {\n const colors = yield select(Selectors.getColors)\n\n yield call(updateColorInMeta, colors.get('primary'))\n}\n\nexport function* orderPaidVersion({ payload: id }) {\n try {\n const result = yield call(Api.createOrder, { paid_feature_id: id })\n\n yield put(Actions.orderPaidVersionSuccess())\n yield put(Actions.updatePaidFeatures(result))\n } catch (error) {\n yield put(Actions.orderPaidVersionError(error))\n yield put(genericErrorMessage())\n yield put(exception(error))\n }\n}\n\nexport function* watchConfigStart() {\n yield takeEvery(Actions.configRequestStart, fetchConfig)\n}\n\nexport function* watchConfigUpdateStart() {\n yield takeEvery(Actions.updateConfigRequestStart, updateConfig)\n}\n\nexport function* watchUpdateUserConfigStart() {\n yield takeEvery(Actions.updateUserConfigRequestStart, updateUserConfig)\n}\n\nexport function* watchRefreshContentDeskPlanUsageAndLimits() {\n yield takeEvery(Actions.refreshContentDeskPlanUsageAndLimits, refreshContentDeskPlanUsageAndLimits)\n}\n\nexport function* watchFetchCDeskConfigRequestStart() {\n yield takeEvery(Actions.fetchCDeskConfigRequestStart, fetchContentDeskConfig)\n}\n\nexport function* watchUpdateCDeskConfig() {\n yield takeEvery(Actions.updateCDeskConfigRequestStart, updateContentDeskConfig)\n}\n\nexport function* watchColorChanges() {\n yield takeEvery(Actions.setConfig, colorChanges)\n yield takeEvery(Actions.updateConfig, colorChanges)\n yield takeEvery(Actions.resetColors, colorChanges)\n}\n\nexport function* watchOrderPaidVersion() {\n yield takeEvery(Actions.orderPaidVersionStart, orderPaidVersion)\n}\n\nexport default function* configSaga() {\n yield all([\n watchConfigStart(),\n watchConfigUpdateStart(),\n watchUpdateUserConfigStart(),\n watchColorChanges(),\n watchRefreshContentDeskPlanUsageAndLimits(),\n watchFetchCDeskConfigRequestStart(),\n watchUpdateCDeskConfig(),\n watchOrderPaidVersion()\n ])\n}\n","import { isImmutable, fromJS } from 'immutable'\n\nexport const verifyTheme = (themes, mode, colors) => {\n const immutableColors = isImmutable(colors) ? colors : fromJS(colors)\n let verified = null\n\n themes.forEach(theme => {\n if (immutableColors.equals(theme.getIn(['colors', mode]))) {\n verified = theme.get('name')\n }\n })\n\n return verified\n}\n","import { call, put, select, takeEvery, race, take, all, delay } from 'redux-saga/effects'\nimport { fromJS } from 'immutable'\nimport { listChunk } from 'utils/immutable'\nimport { scrollIntoView } from 'utils/scroll'\n\nimport { SearchFields, CustomTagsNewsTypes } from 'static/constants'\n\nimport * as Actions from 'actions/custom_tags'\nimport * as Api from 'api/bff'\nimport * as AppActions from 'actions/app'\nimport * as FilterActions from 'actions/filter'\nimport * as UiActions from 'actions/ui'\nimport * as ShoppingCartActions from 'actions/shopping_cart'\nimport * as MediaReviewsActions from 'actions/media_reviews'\nimport * as NewsActions from 'actions/news'\nimport * as Selectors from 'selectors'\nimport { navigate } from 'actions/navigation'\nimport { getCluster } from 'utils/sagas'\n\nexport function* saveCustomTag() {\n try {\n const i18n = yield select(Selectors.getI18n)\n const customTag = yield select(Selectors.getSelectedCustomTag)\n const uploadedPhoto = yield select(Selectors.getUploadedCustomTagPhoto)\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n const newsToAdd = yield select(Selectors.getCustomTagsAssignCustomTagsToNewsSelectedNews)\n const shoppingCartNewsToAdd = yield select(Selectors.getShoppingCartNews)\n const autoAddShoppingCartNews = yield select(Selectors.getAutoAddShoppingCartNews)\n const mediaReviewsNewsToAdd = yield select(Selectors.getMediaReviewSelectedNews)\n const autoAddMediaReviewsNews = yield select(Selectors.getAutoAddMediaReviewsNews)\n\n let photo = customTag.get('photo')\n\n if (uploadedPhoto) {\n const formData = [\n {\n key: 'file',\n value: uploadedPhoto\n }\n ]\n\n const { url } = yield call(Api.uploadFile, formData)\n photo = url\n }\n\n const body = {\n name_de: customTag.get('nameDe'),\n name_en: customTag.get('nameEn'),\n name_fr: customTag.get('nameFr'),\n name_ru: customTag.get('nameRu'),\n name_zh: customTag.get('nameZh'),\n name_ja: customTag.get('nameJa'),\n description: customTag.get('description'),\n queries: customTag.get('queries'),\n percolation_enabled: customTag.get('percolationEnabled'),\n news_count: customTag.get('newsCount'),\n news_type: CustomTagsNewsTypes[moduleName],\n rss_enabled: customTag.get('rssEnabled'),\n xml_enabled: customTag.get('xmlEnabled'),\n json_enabled: customTag.get('jsonEnabled'),\n color: customTag.get('color'),\n custom_tag_group_ids: customTag.get('customTagGroupIds'),\n photo\n }\n\n let result\n let successMessage = i18n.get('created')\n\n if (customTag.get('id')) {\n successMessage = i18n.get('updated')\n result = yield call(Api.updateCustomTag, customTag.get('id'), body)\n } else {\n result = yield call(Api.createCustomTag, body)\n }\n\n yield put(Actions.saveCustomTagSuccess({ customTag: result }))\n\n if (newsToAdd) {\n yield put(Actions.assignCustomTagToNewsStart({ customTag: fromJS(result), news: newsToAdd }))\n }\n\n if (shoppingCartNewsToAdd && autoAddShoppingCartNews && !newsToAdd) {\n yield put(ShoppingCartActions.pinAllStart({ customTag: fromJS(result), action: 'pin' }))\n }\n\n if (mediaReviewsNewsToAdd && autoAddMediaReviewsNews && !newsToAdd) {\n yield put(MediaReviewsActions.pinAllStart({ customTag: fromJS(result), action: 'pin' }))\n }\n\n if (!autoAddMediaReviewsNews && !autoAddShoppingCartNews) {\n yield put(AppActions.showAppMessage({ text: `${result.name} ${successMessage}` }))\n }\n } catch (error) {\n yield put(Actions.saveCustomTagError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* emptyCustomTag() {\n try {\n const i18n = yield select(Selectors.getI18n)\n const customTag = yield select(Selectors.getSelectedCustomTag)\n\n yield put(Actions.hideEmptyCustomTagDialog())\n yield put(AppActions.showUndo())\n yield put(Actions.emptyCustomTagSuccess(customTag))\n yield put(AppActions.showAppMessage({ text: `${customTag.get('name')} ${i18n.get('emptied')}` }))\n\n const { undo, deleteIt } = yield race({\n undo: take(AppActions.undo),\n deleteIt: delay(5000)\n })\n\n yield put(AppActions.hideUndo())\n\n if (undo) {\n yield put(Actions.saveCustomTagSuccess({ customTag: customTag.toJS(), withNewsCount: true }))\n yield put(AppActions.showAppMessage({ text: i18n.get('undone') }))\n } else if (deleteIt) {\n const newsType = yield select(Selectors.getViewConfigIndexType)\n const body = {\n id: customTag.get('id'),\n news_type: newsType\n }\n\n yield call(Api.emptyCustomTag, body)\n }\n } catch (error) {\n yield put(Actions.emptyCustomTagError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* deleteCustomTag() {\n try {\n const i18n = yield select(Selectors.getI18n)\n const customTag = yield select(Selectors.getSelectedCustomTag)\n\n yield put(Actions.hideRemoveCustomTagDialog())\n yield put(AppActions.showUndo())\n yield put(Actions.deleteCustomTagSuccess(customTag.get('id')))\n yield put(AppActions.showAppMessage({ text: `${customTag.get('name')} ${i18n.get('deleted')}` }))\n\n const { undo, deleteIt } = yield race({\n undo: take(AppActions.undo),\n deleteIt: delay(5000)\n })\n\n yield put(AppActions.hideUndo())\n\n if (undo) {\n yield put(Actions.saveCustomTagSuccess({ customTag: customTag.toJS() }))\n yield put(AppActions.showAppMessage({ text: i18n.get('undone') }))\n } else if (deleteIt) {\n const newsType = yield select(Selectors.getViewConfigIndexType)\n const body = {\n id: customTag.get('id'),\n news_type: newsType,\n _method: 'DELETE'\n }\n yield call(Api.deleteCustomTag, customTag.get('id'), body)\n }\n } catch (error) {\n yield put(Actions.deleteCustomTagError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* assignCustomTagToNews({ payload: { customTag, news } }) {\n try {\n const clusterSize = news.get('clusterSize')\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n let newNews = news\n\n if (clusterSize > 1 && news.get('clusteredNews').size !== clusterSize - 1) {\n const clusteredNews = yield call(getCluster, news)\n\n newNews = newNews.set('clusteredNews', clusteredNews)\n }\n\n const clusterNewsIds = (newNews.get('clusteredNews') || fromJS([])).unshift(newNews)\n\n const body = fromJS({\n data: clusterNewsIds.map(cn => (\n fromJS({\n '+custom_tag_ids': [customTag.get('id')],\n news_id: cn.get('id'),\n article_date: cn.get('articleDate')\n })\n )),\n news_type: CustomTagsNewsTypes[moduleName]\n })\n\n yield call(Api.assignCustomTagToNews, body)\n\n const rlyNewNews = newNews.update('customTags', customTags => (customTags.push(customTag.update('newsCount', count => count + 1))))\n\n yield put(NewsActions.updateNews(fromJS([rlyNewNews])))\n yield put(Actions.assignCustomTagToNewsSuccess({ customTag, news: newNews }))\n } catch (error) {\n yield put(Actions.assignCustomTagToNewsError({ error, customTag }))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* removeCustomTagFromNews({ payload: { customTag, news } }) {\n try {\n let newNews = news\n\n const clusterSize = news.get('clusterSize')\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n\n if (clusterSize > 1 && news.get('clusteredNews').size !== clusterSize - 1) {\n const clusteredNews = yield call(getCluster, news)\n\n newNews = newNews.set('clusteredNews', clusteredNews)\n }\n\n const clusterNewsIds = (newNews.get('clusteredNews') || fromJS([])).unshift(newNews)\n const body = fromJS({\n data: clusterNewsIds.map(cn => (\n fromJS({\n '-custom_tag_ids': [customTag.get('id')],\n news_id: cn.get('id'),\n article_date: cn.get('articleDate')\n })\n )),\n news_type: CustomTagsNewsTypes[moduleName]\n })\n\n yield call(Api.assignCustomTagToNews, body)\n\n const rlyNewNews = newNews.update('customTags', customTags => (customTags.filter(tag => tag.get('id') !== customTag.get('id'))))\n\n yield put(NewsActions.updateNews(fromJS([rlyNewNews])))\n yield put(Actions.removeCustomTagFromNewsSuccess({\n customTag,\n newsId: newNews.get('id'),\n removedCount: newNews.get('clusterSize') || 1\n }))\n } catch (error) {\n yield put(Actions.removeCustomTagFromNewsError({ error, customTag }))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* assignCustomTagToGroup({ payload: customTagId }) {\n try {\n const groupId = yield select(Selectors.getCustomTagsAssignCustomTagsToGroupSelectedGroupId)\n\n const result = yield call(Api.assignCustomTagToGroup, groupId, customTagId)\n\n yield put(Actions.assignCustomTagToGroupSuccess({ groupId, result, customTagId }))\n } catch (error) {\n yield put(Actions.assignCustomTagToGroupError({ error, customTagId }))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* removeCustomTagFromGroup({ payload: customTagId }) {\n try {\n const groupId = yield select(Selectors.getCustomTagsAssignCustomTagsToGroupSelectedGroupId)\n\n const { id } = yield call(Api.removeCustomTagFromGroup, groupId, customTagId)\n\n yield put(Actions.removeCustomTagFromGroupSuccess({ groupId, id, customTagId }))\n } catch (error) {\n yield put(Actions.removeCustomTagFromGroupError({ error, customTagId }))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* fetchNewsForCustomTag({ payload: customTagId }) {\n try {\n const indexType = yield select(Selectors.getViewConfigIndexType)\n const body = {\n news: {\n booleans: {\n global_clusters: true,\n with_inner_hits: true\n }\n },\n size: 1000,\n index_type: indexType\n }\n\n const result = yield call(Api.fetchNewsForCustomTag, customTagId, body)\n\n yield put(NewsActions.addNews(result.news))\n\n yield put(Actions.fetchNewsForCustomTagSuccess(result))\n yield put(Actions.resetCustomTagNewNewsCount(customTagId))\n } catch (error) {\n yield put(Actions.fetchNewsForCustomTagError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* filterBySelectedCustomTag({ payload: customTag }) {\n const moduleNameName = yield select(Selectors.getMainModule)\n\n yield put(navigate(`/app/${moduleNameName}`))\n const globalClusterDefault = yield select(Selectors.getGlobalClusterDefault)\n yield put(FilterActions.resetFilters(globalClusterDefault))\n yield put(FilterActions.changeDate({\n dateFrom: null,\n dateTo: null\n }))\n yield put(UiActions.uiAddFilters([{\n filter: customTag,\n field: SearchFields.CUSTOM_TAGS\n }]))\n}\n\nexport function* filterBySelectedCustomTagGroup({ payload: group }) {\n const moduleNameName = yield select(Selectors.getMainModule)\n yield put(navigate(`/app/${moduleNameName}`))\n const globalClusterDefault = yield select(Selectors.getGlobalClusterDefault)\n yield put(FilterActions.resetFilters(globalClusterDefault))\n yield put(FilterActions.changeDate({\n dateFrom: null,\n dateTo: null\n }))\n yield put(UiActions.uiAddFilters([{\n filter: group,\n field: SearchFields.CUSTOM_TAG_GROUPS\n }]))\n}\n\nexport function* runCustomTagQueries({ payload: customTag }) {\n yield put(Actions.hideCustomTagDialog())\n\n const moduleNameName = yield select(Selectors.getMainModule)\n yield put(navigate(`/app/${moduleNameName}`))\n const globalClusterDefault = yield select(Selectors.getGlobalClusterDefault)\n yield put(FilterActions.resetFilters(globalClusterDefault))\n const i18n = yield select(Selectors.getI18n)\n\n yield put(FilterActions.changeDate({\n dateFrom: null,\n dateTo: null\n }))\n\n yield put(FilterActions.addFilters([{\n filter: customTag.set('inverted', true),\n field: SearchFields.CUSTOM_TAGS\n }]))\n\n const queries = customTag.get('queries').map(query => ({\n type: 'news',\n query,\n prefix: i18n.get('news')\n })).toJS()\n\n yield put(FilterActions.addNewsQueries(queries))\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* openCustomTagInShoppingCart({ payload: customTag }) {\n yield put(navigate(`${customTag.get('id')}/shopping_cart`))\n}\n\nexport function* removeCustomTagFromNewsChunked({ payload: { customTag, newsList, toBeRemovedIds } }) {\n try {\n const i18n = yield select(Selectors.getI18n)\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n const data = newsList.map(n => {\n const clusteredUpdates = (n.get('clusteredNews') || fromJS([]))\n .filter(cn => !toBeRemovedIds || toBeRemovedIds.has(cn.get('id')))\n .map(cn => (\n fromJS({\n news_id: cn.get('id'),\n article_date: cn.get('articleDate'),\n '-custom_tag_ids': [customTag.get('id')]\n })\n ))\n\n return clusteredUpdates.unshift(fromJS({\n news_id: n.get('id'),\n article_date: n.get('articleDate'),\n '-custom_tag_ids': [customTag.get('id')]\n }))\n }).flatten(true)\n\n const chunkCount = Math.ceil(data.size / 10)\n const chunks = listChunk(data, chunkCount)\n\n yield put(AppActions.setAppBarMessage(i18n.get('purging_progress', { progress: '0%' })))\n\n for (let i = 0; i < chunks.size; i += 1) {\n const body = {\n data: chunks.get(i),\n news_type: CustomTagsNewsTypes[moduleName]\n }\n\n yield call(Api.assignCustomTagToNews, body)\n\n let progress = Math.ceil(((i + 1) / chunks.size) * 100)\n progress = `${progress}%`\n yield put(AppActions.setAppBarMessage(i18n.get('purging_progress', { progress })))\n }\n const news = newsList.map(n => n.update('customTags', customTags => (customTags.filter(tag => tag.get('id') !== customTag.get('id')))))\n\n yield put(NewsActions.updateNews(news))\n yield put(AppActions.setAppBarMessage(null))\n yield put(Actions.removeCustomTagFromNewsSuccess({ customTag, removedCount: data.size }))\n } catch (error) {\n yield put(Actions.removeCustomTagFromNewsError({ customTag, error }))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* afterStructuredFormatExportAction() {\n try {\n const ui = yield select(Selectors.getCustomTagsUi)\n const action = ui.get('afterStructuredFormatExportAction')\n const customTag = yield select(Selectors.getShoppingCartCustomTag)\n\n switch (action) {\n case 'substitute': {\n const customTagNewsIds = yield select(Selectors.getNewsIdsForCustomTag)\n const customTagNews = yield select(Selectors.getNewsByIds, customTagNewsIds)\n const shoppingCartNews = yield select(Selectors.getShoppingCartNews)\n const newsToBeRemoved = customTagNews.filter(cN => shoppingCartNews.findIndex(sN => sN.get('id') === cN.get('id')) === -1)\n yield call(removeCustomTagFromNewsChunked, { payload: { customTag, newsList: newsToBeRemoved } })\n yield put(Actions.afterStructuredFormatExportActionSuccess())\n break\n }\n case 'purge': {\n const newsIds = yield select(Selectors.getNewsIdsForCustomTag)\n const news = yield select(Selectors.getNewsByIds, newsIds)\n yield call(removeCustomTagFromNewsChunked, { payload: { customTag, newsList: news } })\n yield put(ShoppingCartActions.removeNewsFromShoppingCart(newsIds))\n yield put(Actions.afterStructuredFormatExportActionSuccess())\n break\n }\n default:\n yield put(Actions.afterStructuredFormatExportActionSuccess())\n break\n }\n } catch (error) {\n yield put(Actions.afterStructuredFormatExportActionError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* saveGroup() {\n try {\n const group = yield select(Selectors.getSelectedCustomTagGroup)\n\n const body = {\n name: group.get('name')\n }\n\n let result\n\n if (group.get('id')) {\n result = yield call(Api.updateCustomTagGroup, group.get('id'), body)\n } else {\n result = yield call(Api.createCustomTagGroup, body)\n }\n\n yield put(Actions.saveGroupSuccess(result))\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(Actions.saveGroupError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* deleteGroup() {\n try {\n const group = yield select(Selectors.getSelectedCustomTagGroup)\n\n yield call(Api.deleteCustomTagGroup, group.get('id'))\n\n yield put(Actions.deleteGroupSuccess(group))\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(Actions.deleteGroupError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* setFilteredGroupId() {\n yield delay(200)\n const id = yield select(Selectors.getCustomTagGroupsHeaderId)\n yield call(scrollIntoView, id)\n}\n\nexport function* watchSaveCustomTag() {\n yield takeEvery(Actions.saveCustomTagStart, saveCustomTag)\n}\n\nexport function* watchDeleteCustomTag() {\n yield takeEvery(Actions.deleteCustomTagStart, deleteCustomTag)\n}\n\nexport function* watchEmptyCustomTag() {\n yield takeEvery(Actions.emptyCustomTagStart, emptyCustomTag)\n}\n\nexport function* watchAssignCustomTagToNews() {\n yield takeEvery(Actions.assignCustomTagToNewsStart, assignCustomTagToNews)\n}\n\nexport function* watchRemoveCustomTagFromNews() {\n yield takeEvery(Actions.removeCustomTagFromNewsStart, removeCustomTagFromNews)\n}\n\nexport function* watchAssignCustomTagToGroup() {\n yield takeEvery(Actions.assignCustomTagToGroupStart, assignCustomTagToGroup)\n}\n\nexport function* watchRemoveCustomTagFromGroup() {\n yield takeEvery(Actions.removeCustomTagFromGroupStart, removeCustomTagFromGroup)\n}\n\nexport function* watchFetchNewsForCustomTag() {\n yield takeEvery(Actions.fetchNewsForCustomTagStart, fetchNewsForCustomTag)\n}\n\nexport function* watchFilterBySelectedCustomTag() {\n yield takeEvery(Actions.filterBySelectedCustomTag, filterBySelectedCustomTag)\n}\n\nexport function* watchFilterBySelectedCustomTagGroup() {\n yield takeEvery(Actions.filterBySelectedCustomTagGroup, filterBySelectedCustomTagGroup)\n}\n\nexport function* watchRunCustomTagQueries() {\n yield takeEvery(Actions.runCustomTagQueries, runCustomTagQueries)\n}\n\nexport function* watchOpenCustomTagInShoppingCart() {\n yield takeEvery(Actions.openCustomTagInShoppingCart, openCustomTagInShoppingCart)\n}\n\nexport function* watchAfterStructuredFormatExportAction() {\n yield takeEvery(Actions.afterStructuredFormatExportActionStart, afterStructuredFormatExportAction)\n}\n\nexport function* watchSaveGroup() {\n yield takeEvery(Actions.saveGroupStart, saveGroup)\n}\n\nexport function* watchDeleteGroup() {\n yield takeEvery(Actions.deleteGroupStart, deleteGroup)\n}\n\nexport function* watchSetFilteredGroupId() {\n yield takeEvery(Actions.setFilteredGroupId, setFilteredGroupId)\n}\n\nexport default function* saga() {\n yield all([\n watchOpenCustomTagInShoppingCart(),\n watchAfterStructuredFormatExportAction(),\n watchDeleteCustomTag(),\n watchEmptyCustomTag(),\n watchFetchNewsForCustomTag(),\n watchFilterBySelectedCustomTag(),\n watchFilterBySelectedCustomTagGroup(),\n watchRunCustomTagQueries(),\n watchAssignCustomTagToNews(),\n watchRemoveCustomTagFromNews(),\n watchAssignCustomTagToGroup(),\n watchRemoveCustomTagFromGroup(),\n watchSaveCustomTag(),\n watchSaveGroup(),\n watchDeleteGroup(),\n watchSetFilteredGroupId()\n ])\n}\n","import { call, put, takeEvery, all } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/mailing_lists'\nimport * as Api from 'api/bff'\nimport { genericErrorMessage, genericSuccessMessage, exception } from 'actions/app'\n\nexport function* saveMailingList({ payload: mailingList }) {\n try {\n const body = {\n name: mailingList.get('name'),\n recipients: mailingList.get('recipients').toJS()\n }\n\n if (mailingList.get('id')) {\n const newMailingList = yield call(Api.updateMailingList, mailingList.get('id'), body)\n yield put(Actions.saveMailingListSuccess(newMailingList))\n yield put(Actions.hideMailingListDialog())\n } else {\n const newMailingList = yield call(Api.createMailingList, body)\n yield put(Actions.saveMailingListSuccess(newMailingList))\n yield put(Actions.hideMailingListDialog())\n }\n\n yield put(genericSuccessMessage())\n } catch (error) {\n yield put(Actions.saveMailingListError(error))\n yield put(exception(error))\n yield put(genericErrorMessage())\n }\n}\n\nexport function* deleteMailingList({ payload: mailingListId }) {\n try {\n yield call(Api.deleteMailingList, mailingListId)\n\n yield put(Actions.deleteMailingListSuccess(mailingListId))\n yield put(Actions.hideRemoveMailingListDialog())\n yield put(genericSuccessMessage())\n } catch (error) {\n yield put(Actions.deleteMailingListError(error))\n yield put(exception(error))\n yield put(genericErrorMessage())\n }\n}\n\nexport function* watchdeleteMailingList() {\n yield takeEvery(Actions.deleteMailingListStart, deleteMailingList)\n}\n\nexport function* watchSaveMailingList() {\n yield takeEvery(Actions.saveMailingListStart, saveMailingList)\n}\n\nexport default function* mailingListSaga() {\n yield all([\n watchSaveMailingList(),\n watchdeleteMailingList()\n ])\n}\n","import { call, put, select, takeEvery, takeLatest, all, debounce } from 'redux-saga/effects'\nimport { fromJS, Map } from 'immutable'\nimport moment from 'moment-timezone'\n\nimport * as Actions from 'actions/news'\nimport * as ShoppingCartActions from 'actions/shopping_cart'\nimport * as MediaReviewsActions from 'actions/media_reviews'\nimport * as AppActions from 'actions/app'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport { genericErrorMessage, exception, showAppErrorMessage } from 'actions/app'\nimport { getCluster } from 'utils/sagas'\n\nexport const groupingTypesWithNewStats = ['custom_tag', 'media_review_code']\n\nexport function* updateGroups({ payload: news }) {\n const groupingType = yield select(Selectors.getNewsGroupingType)\n\n if (groupingTypesWithNewStats.indexOf(groupingType) === -1) {\n return\n }\n\n const newCodeIds = news.get('codes').map(c => c.get('id'))\n const newCustomTagIds = news.get('customTags').map(c => c.get('id'))\n\n const oldNews = yield select(Selectors.getNewsById, news.get('id'))\n\n if (!oldNews) {\n return\n }\n\n const oldCodeIds = oldNews.get('codes').map(c => c.get('id'))\n const oldCustomTagIds = oldNews.get('customTags').map(c => c.get('id'))\n\n if (\n newCodeIds.sort().toSet().equals(oldCodeIds.sort().toSet())\n && newCustomTagIds.sort().toSet().equals(oldCustomTagIds.sort().toSet())\n ) {\n return\n }\n\n let newGroupIds = newCodeIds\n\n if (groupingType === 'custom_tag') {\n newGroupIds = newCustomTagIds\n }\n\n if (newGroupIds.isEmpty()) {\n newGroupIds = fromJS([-1])\n }\n\n const currentGroupIds = yield select(Selectors.getNewsGroupIds)\n const missingGroupIds = newGroupIds.filter(el => !currentGroupIds.includes(el))\n\n let updatedGroups = Map({})\n for (let i = 0; i < missingGroupIds.size; i += 1) {\n const fetchMoreNewsBody = yield select(Selectors.getFetchMoreNewsBody, missingGroupIds.get(i))\n delete fetchMoreNewsBody.from\n\n const result = yield call(Api.search, fetchMoreNewsBody)\n\n if (result.groups[0]) {\n updatedGroups = updatedGroups.set(result.groups[0].id, fromJS({ ...result.groups[0], news: result.groups[0].news.map(el => el.id) }))\n yield put(Actions.increasePaging(result))\n }\n }\n\n yield put(Actions.updateGroups({ newGroupIds, updatedGroups, newsId: news.get('id') }))\n\n const searchBody = yield select(Selectors.getSearchBody)\n const result = yield call(Api.search, { ...searchBody, size: 0 })\n yield put(Actions.updateGroupStats(result))\n}\n\nexport function* updateDefaultNews(news) {\n try {\n const isMediaReviewDetail = yield select(Selectors.isMediaReviewDetail)\n const drillDownNews = yield select(Selectors.getDashboardDrilldownDataNewsById, news.get('id'))\n const isDrillDown = drillDownNews && !drillDownNews.isEmpty()\n\n if (!isMediaReviewDetail) {\n yield put(Actions.hideEditNewsDialog())\n }\n\n const uploadedFiles = yield select(Selectors.getEditNewsUploadedFiles)\n const videoFile = yield select(Selectors.getEditNewsUploadedVideoFile)\n const isTopicalCluster = news.get('clusterType') === 'topical' && isMediaReviewDetail\n\n const newCodeIds = news.get('codes').map(c => c.get('id'))\n const newCustomTagIds = news.get('customTags').map(c => c.get('id'))\n\n const clusterSize = news.get('clusterSize')\n let clusteredNews = news.get('clusteredNews')\n\n if (\n clusterSize > 1\n && clusteredNews.size !== clusterSize - 1\n && !isTopicalCluster\n && !isDrillDown\n ) {\n clusteredNews = yield call(getCluster, news)\n } else if (isTopicalCluster || isDrillDown) {\n clusteredNews = fromJS([])\n }\n\n const body = {\n article_date: news.get('articleDate'),\n mediareview_date: news.get('mediareviewDate'),\n code_ids: newCodeIds,\n custom_tag_ids: newCustomTagIds,\n headline: news.get('headline'),\n images: news.get('images'),\n search_profile_id: news.get('searchProfileId'),\n snippet: news.get('snippet'),\n subtitle: news.get('subtitle'),\n summary_headline: news.get('summaryHeadline'),\n summary: news.get('summary'),\n text: news.get('text'),\n tonality: news.get('tonality'),\n url: news.get('originalUrl'),\n files: uploadedFiles,\n image_as_illustration: news.get('imageAsIllustration'),\n refresh: !isMediaReviewDetail,\n video_file: videoFile,\n clustered_news_ids: clusteredNews.map(n => n.get('id')).toJS()\n }\n\n if (news.get('licenseExpired')) {\n delete body.text\n }\n\n let { news: newNews } = yield call(Api.updateNews, news.get('id'), body)\n\n newNews = fromJS(newNews)\n\n // Keep cluster information\n newNews = newNews.merge({\n clusteredNews: news.get('clusteredNews'),\n clusterSize: news.get('clusterSize'),\n flags: newNews.get('flags').set('clusteredNews', news.getIn(['flags', 'clusteredNews']))\n })\n\n const isInShoppingCart = yield select(Selectors.isInShoppingCart, news.get('id'))\n\n if (isInShoppingCart) {\n yield put(ShoppingCartActions.recalculateGroupedSorting(fromJS([newNews])))\n }\n\n if (!isMediaReviewDetail) {\n yield put(Actions.updateGroupsStart(news))\n } else {\n if (!news.getIn(['flags', 'clusteredNews'])) {\n yield put(MediaReviewsActions.regroupNews(newNews))\n }\n\n yield put(Actions.hideEditNewsDialog())\n }\n\n if (isMediaReviewDetail && news.getIn(['flags', 'clusteredNews'])) {\n let mainNews = yield select(Selectors.getNewsById, newNews.get('mainNewsId'))\n\n mainNews = mainNews.update('clusteredNews', cn => cn.map(ccn => {\n if (ccn.get('id') === newNews.get('id')) {\n return ccn.set('tonality', newNews.get('tonality'))\n }\n\n return ccn\n }))\n\n yield put(Actions.updateNews(fromJS([mainNews])))\n } else {\n yield put(Actions.updateNews(fromJS([newNews])))\n }\n\n yield put(Actions.updateNewsSuccess(newNews))\n } catch (error) {\n yield put(Actions.updateNewsError({ error, news }))\n yield put(exception(error))\n yield put(genericErrorMessage())\n }\n}\n\nexport function* updateBackwardsNews(news) {\n try {\n yield put(Actions.updateNews(fromJS([news])))\n\n const body = {\n sentiment: news.get('sentiment')\n }\n\n yield call(Api.updateBackwardsNews, news.get('id'), body)\n\n yield put(Actions.updateNewsSuccess(news))\n } catch (error) {\n yield put(Actions.updateNewsError(error))\n yield put(exception(error))\n yield put(genericErrorMessage())\n }\n}\n\nexport function* updateNews({ payload: news }) {\n if (news.getIn(['flags', 'backwardsNews'])) {\n yield* updateBackwardsNews(news)\n } else {\n yield* updateDefaultNews(news)\n }\n}\n\nexport function* createNews({ payload: news }) {\n try {\n const uploadedFiles = yield select(Selectors.getEditNewsUploadedFiles)\n const videoFile = yield select(Selectors.getEditNewsUploadedVideoFile)\n\n const codeIds = news.get('codes').map(c => c.get('id'))\n const customTagIds = news.get('customTags').map(c => c.get('id'))\n\n let body = {\n article_date: news.get('articleDate'),\n mediareview_date: news.get('mediareviewDate'),\n code_ids: codeIds,\n custom_tag_ids: customTagIds,\n headline: news.get('headline'),\n page_count: news.get('pageCount'),\n page: news.get('page'),\n publication_id: news.getIn(['publication', 'id']),\n snippet: news.get('snippet'),\n subtitle: news.get('subtitle'),\n summary_headline: news.get('summaryHeadline'),\n summary: news.get('summary'),\n text: news.get('text'),\n tonality: news.get('tonality'),\n url: news.get('originalUrl'),\n files: uploadedFiles,\n video_file: videoFile\n }\n\n const isMediaReviewDetail = yield select(Selectors.isMediaReviewDetail)\n const isShoppingCart = yield select(Selectors.isShoppingCart)\n\n if (isMediaReviewDetail) {\n const mediaReview = yield select(Selectors.getSelectedMediaReview)\n\n body = {\n ...body,\n search_profile_id: mediaReview.get('searchProfileId'),\n media_review: {\n start_date: mediaReview.get('startDate'),\n end_date: mediaReview.get('endDate'),\n media_review_type_id: mediaReview.get('mediaReviewTypeId')\n }\n }\n } else if (news.get('codes').size) {\n body = { ...body, search_profile_id: news.get('codes').first().get('searchProfileId') }\n }\n\n let { news: newNews } = yield call(Api.createNews, body)\n\n yield put(Actions.addNews([newNews]))\n yield put(Actions.createNewsSuccess(newNews))\n newNews = yield select(Selectors.getNewsById, newNews.id)\n\n if (isMediaReviewDetail) {\n yield put(MediaReviewsActions.regroupNews(newNews))\n } else if (isShoppingCart) {\n yield put(ShoppingCartActions.addNewsToShoppingCart([newNews.get('id')]))\n } else {\n yield put(Actions.newsRequestStart())\n }\n\n yield put(Actions.hideEditNewsDialog())\n } catch (error) {\n yield put(Actions.createNewsError(error))\n yield put(exception(error))\n yield put(genericErrorMessage())\n }\n}\n\nexport function* saveNews() {\n const news = yield select(Selectors.getSelectedNews)\n\n if (news.get('id')) {\n yield put(Actions.updateNewsStart(news))\n } else {\n yield put(Actions.createNewsStart(news))\n }\n}\n\nexport function* searchPublications({ payload: { name, channelIds } }) {\n try {\n yield put(Actions.setPublicationsLoading())\n\n const body = {\n name: `*${name}*`,\n channel_ids: channelIds\n }\n\n const { result } = yield call(Api.searchAllPublications, body)\n\n yield put(Actions.searchPublicationsSuccess(result))\n } catch (error) { // eslint-disable-line\n yield put(Actions.searchPublicationsSuccess([]))\n }\n}\n\nexport function* uploadFile({ payload: file }) {\n const news = yield select(Selectors.getSelectedNews)\n try {\n const formData = [\n {\n key: 'file',\n value: file\n },\n {\n key: 'keep_until',\n value: moment().add(1, 'hour').toISOString()\n }\n ]\n\n const result = yield call(Api.uploadFile, formData)\n\n yield put(Actions.uploadFileSuccess(result))\n\n if (news.get('extractTextFromPdf') === true && file.type === 'application/pdf') {\n yield put(Actions.extractTextFromPdfStart(file))\n }\n } catch (error) {\n yield put(Actions.uploadFileError(error))\n yield put(exception(error))\n yield put(genericErrorMessage())\n }\n}\n\nexport function* uploadVideoFile({ payload: file }) {\n try {\n const formData = [\n {\n key: 'file',\n value: file\n },\n {\n key: 'keep_until',\n value: moment().add(1, 'hour').toISOString()\n }\n ]\n\n const result = yield call(Api.uploadFile, formData)\n\n yield put(Actions.uploadVideoFileSuccess(result))\n } catch (error) {\n yield put(Actions.uploadVideoFileError(error))\n yield put(exception(error))\n yield put(genericErrorMessage())\n }\n}\n\nexport function* showEditDialog({ payload: news }) {\n if (news) {\n yield put(Actions.getNewsStart(news))\n }\n}\n\nexport function* getNews({ payload: news }) {\n try {\n const result = yield call(Api.getNews, news.get('id'))\n yield put(Actions.getNewsSuccess({ oldNews: news, newNews: result.news }))\n } catch (error) {\n yield put(Actions.getNewsError(error))\n\n if (error.response && error.response.statusCode === 404) {\n const i18n = yield select(Selectors.getI18n)\n yield put(showAppErrorMessage(i18n.get('news_not_found')))\n } else {\n yield put(exception(error))\n yield put(genericErrorMessage())\n }\n\n yield put(Actions.hideEditNewsDialog())\n }\n}\n\nexport function* extractTextFromPdf({ payload: file }) {\n const i18n = yield select(Selectors.getI18n)\n try {\n const result = yield call(Api.extractTextFromPdf, file)\n yield put(Actions.extractTextFromPdfSuccess(result))\n\n if (result) {\n yield put(Actions.mergeExtractedText(result))\n } else {\n yield put(\n AppActions.showAppMessage({\n success: false,\n text: i18n.get('extract_text_fail')\n })\n )\n }\n } catch (error) {\n yield put(Actions.extractTextFromPdfError(error))\n yield put(\n AppActions.showAppMessage({\n success: false,\n text: i18n.get('extract_text_fail')\n })\n )\n }\n}\n\nexport function* automaticSummary() {\n try {\n const selectedNews = yield select(Selectors.getSelectedNews)\n const summaryOptions = yield select(Selectors.getSummaryOptions)\n\n const body = {\n headline: selectedNews.get('headline'),\n language_code: selectedNews.getIn(['language', 'iso6391']),\n news_id: selectedNews.get('id'),\n mode: summaryOptions.get('mode'),\n text: selectedNews.get('text'),\n target_lang: summaryOptions.get('targetLang'),\n word_count: summaryOptions.get('wordCount'),\n bullet_points_count: summaryOptions.get('bulletPointsCount')\n }\n\n const { summary, summaryHeadline } = yield call(Api.summarizeNews, body)\n yield put(Actions.updateFieldOfSelectedNews({ field: 'summaryHeadline', value: summaryHeadline }))\n yield put(Actions.updateFieldOfSelectedNews({ field: 'summary', value: summary }))\n\n yield put(Actions.automaticSummarySuccess())\n } catch (e) {\n yield put(Actions.automaticSummaryError(e))\n yield put(exception(e))\n yield put(genericErrorMessage())\n }\n}\nexport function* watchAutomaticSummary() {\n yield takeEvery(Actions.automaticSummaryStart, automaticSummary)\n}\n\nexport function* watchUpdateNews() {\n yield takeEvery(Actions.updateNewsStart, updateNews)\n}\n\nexport function* watchCreateNews() {\n yield takeEvery(Actions.createNewsStart, createNews)\n}\n\nexport function* watchSaveNews() {\n yield takeEvery(Actions.saveNews, saveNews)\n}\n\nexport function* watchSearchPublications() {\n yield debounce(500, Actions.searchPublicationsStart, searchPublications)\n}\n\nexport function* watchUploadFile() {\n yield takeEvery(Actions.uploadFileStart, uploadFile)\n}\n\nexport function* watchUploadVideoFile() {\n yield takeEvery(Actions.uploadVideoFileStart, uploadVideoFile)\n}\n\nexport function* watchShowEditDialog() {\n yield takeEvery(Actions.showEditNewsDialog, showEditDialog)\n}\n\nexport function* watchGetNews() {\n yield takeEvery(Actions.getNewsStart, getNews)\n}\n\nexport function* watchUpdateGroups() {\n yield takeLatest(Actions.updateGroupsStart, updateGroups)\n}\n\nexport function* watchExtractTextFromPdf() {\n yield takeEvery(Actions.extractTextFromPdfStart, extractTextFromPdf)\n}\n\nexport default function* newsSaga() {\n yield all([\n watchAutomaticSummary(),\n watchUpdateNews(),\n watchCreateNews(),\n watchSaveNews(),\n watchSearchPublications(),\n watchUploadFile(),\n watchUploadVideoFile(),\n watchShowEditDialog(),\n watchGetNews(),\n watchUpdateGroups(),\n watchExtractTextFromPdf()\n ])\n}\n","import * as Api from '../utils/api'\n\nexport default () => Api.doJsonRequest(\n 'GET',\n 'stage.json',\n Api.jsonHeaders,\n {},\n false\n)\n","import * as Api from 'utils/api'\nimport { v4 } from 'uuid'\n\nconst noCache = v4()\n\nexport default domain => {\n if (domain === 'cn.pressrelations.de') {\n return Api.camelize(\n {\n login_links: {\n terms_and_conditions: 'https://www.pressrelations.com/de/agb',\n legal_notice: 'https://www.pressrelations.com/de/impressum',\n privacy: 'https://www.pressrelations.com/de/datenschutz',\n homepage: {\n name: 'pressrelations',\n link: 'https://www.pressrelations.com/de/'\n }\n },\n bff_url: {\n production: 'https://china.pressrelations.de/newsradar-bff'\n }\n }\n )\n }\n\n return Api.doJsonRequest(\n 'GET',\n `https://customers.pressrelations.de/nrx_domains/${domain}/config.json?n=${noCache}`,\n Api.jsonHeaders,\n {},\n false\n ).then(Api.camelize)\n}\n","/* global window, document */\nimport { call, put, takeEvery, select, all } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/environment'\nimport * as Selectors from 'selectors'\nimport { whitelabelRequestSuccess } from 'actions/whitelabel'\nimport { setCookieOption } from 'actions/user'\nimport { updateColorInMeta } from 'utils/dom'\nimport getStage from 'api/stage'\nimport getWhiteLabelConfig from 'api/whitelabel'\n\nexport function* initEnvironment() {\n try {\n const config = yield call(getWhiteLabelConfig, window.location.hostname)\n yield put(whitelabelRequestSuccess(config))\n\n if (config.defaultCookieOption) {\n yield put(setCookieOption({ cookieOption: config.defaultCookieOption }))\n }\n } catch (e) { // eslint-disable-line\n }\n\n yield put(Actions.changeWidthAndHeight({\n width: window.innerWidth,\n height: window.innerHeight\n }))\n\n try {\n const { stage } = yield call(getStage)\n yield put(Actions.stageRequestSuccess(stage))\n } catch (e) { // eslint-disable-line\n yield put(Actions.stageRequestSuccess('staging'))\n }\n}\n\nexport function* whitelabel() {\n const favicon = yield select(Selectors.getWhitelabelFavicon)\n const title = yield select(Selectors.getWhitelabelTitle)\n const colors = yield select(Selectors.getWhitelabelColors)\n\n if (title) {\n document.title = title\n }\n\n if (favicon) {\n const faviconLink = document.getElementById('favicon-link')\n faviconLink.setAttribute('href', favicon)\n }\n\n yield call(updateColorInMeta, colors.get('primary'))\n}\n\nexport function* watchInitEnvironment() {\n yield takeEvery(Actions.initEnvironment, initEnvironment)\n}\n\nexport function* watchWhitelabel() {\n yield takeEvery(whitelabelRequestSuccess, whitelabel)\n}\n\nexport default function* environmentSaga() {\n yield all([\n watchInitEnvironment(),\n watchWhitelabel()\n ])\n}\n","import { call, put, race, take, select, takeEvery, takeLatest, all, delay, debounce } from 'redux-saga/effects'\nimport moment from 'moment-timezone'\n\nimport * as Actions from 'actions/export'\nimport * as CustomTagsActions from 'actions/custom_tags'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport * as AppActions from 'actions/app'\n\nconst calculateDuration = (news, type) => {\n let duration = news.reduce((a, n) => {\n let result\n\n if (type !== 'pdf') {\n result = a + 0.02\n result += n.get('clusteredNews').size * 0.02\n } else if (n.getIn(['publication', 'channelId']) === 1) {\n result = a + 1\n result += (n.get('clusteredNews').size * 0.5)\n } else {\n result = a + 0.3\n result += (n.get('clusteredNews').size * 0.15)\n }\n\n return result\n }, 0)\n\n duration = Math.round(duration)\n\n if (!duration) {\n return 1\n }\n\n return duration\n}\n\nconst exportSuccess = ({ type, preview, result }) => {\n if (preview) {\n if (['html', 'backwards_news_html'].indexOf(type) > -1) {\n return put(Actions.exportHtmlPreviewSuccess(result))\n }\n\n if (type === 'txt') {\n return put(Actions.exportTxtPreviewSuccess(result))\n }\n\n if (type === 'xml') {\n return put(Actions.exportXmlPreviewSuccess(result))\n }\n\n if (type === 'json') {\n return put(Actions.exportJsonPreviewSuccess(result))\n }\n\n if (type === 'pdf') {\n return put(Actions.exportCoverSuccess(result))\n }\n }\n\n return put(Actions.exportSuccess(result))\n}\n\nconst exportError = (isPdf, error) => {\n if (isPdf) {\n return put(Actions.exportCoverError(error))\n }\n\n return put(Actions.exportError(error))\n}\n\nexport function* doExport({ payload: { type, preview, fetchNewsIds, mode } }) {\n try {\n let exportBody = yield select(Selectors.getExportBody, type, preview, mode)\n\n if (fetchNewsIds) {\n const searchBody = yield select(Selectors.getSearchBodyMaxSize, type)\n const result = yield call(Api.fetchNewsIds, searchBody)\n const timezone = yield select(Selectors.getTimezone)\n exportBody = { ...exportBody, news: result, news_ids: result, timezone }\n }\n\n if (!preview) {\n yield put(Actions.setLastExport(exportBody))\n }\n\n const result = yield call(Api.startExport, exportBody)\n\n if (!preview) {\n yield put(Actions.exportProgressFinish())\n yield delay(500)\n }\n\n yield exportSuccess({ type, preview, result })\n } catch (error) {\n yield exportError(type === 'pdf' && preview, error)\n yield put(AppActions.genericErrorMessage(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* doStructuredFormatExport({ payload: { shoppingCartCustomTag } }) {\n try {\n let exportBody = { custom_tag_id: shoppingCartCustomTag.get('id') }\n\n if (shoppingCartCustomTag.get('rssEnabled')) {\n const rssFields = yield select(Selectors.getRssExportBody)\n exportBody = { ...exportBody, ...rssFields }\n } else if (shoppingCartCustomTag.get('xmlEnabled')) {\n const xmlFields = yield select(Selectors.getXmlExportBody)\n exportBody = { ...exportBody, ...xmlFields }\n } else if (shoppingCartCustomTag.get('jsonEnabled')) {\n const jsonFields = yield select(Selectors.getJsonExportBody)\n exportBody = { ...exportBody, ...jsonFields }\n }\n\n yield put(Actions.setLastExport(exportBody))\n\n const result = yield call(Api.startExport, exportBody)\n yield put(Actions.exportProgressFinish())\n yield delay(500)\n yield exportSuccess({ result })\n yield put(CustomTagsActions.afterStructuredFormatExportActionStart())\n } catch (error) {\n yield exportError(false, error)\n yield put(AppActions.genericErrorMessage(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* exportBackwardsNewsHtml() {\n try {\n yield put(Actions.changeExportFormatSelection('backwards_news_html'))\n const searchBody = yield select(Selectors.getSearchBody)\n const size = yield select(Selectors.getBackwardsNewsHtmlLimit)\n\n const body = {\n type: 'backwards_news_html',\n search_params: { ...searchBody, size }\n }\n\n yield put(Actions.setLastExport(body))\n\n const result = yield call(Api.startExport, body)\n yield put(Actions.exportProgressFinish())\n yield delay(500)\n yield exportSuccess({ result })\n } catch (error) {\n yield exportError(false, error)\n yield put(AppActions.genericErrorMessage(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* exportProgress({ payload }) {\n const options = yield select(Selectors.getExportOptions)\n\n let duration\n\n if (payload && !payload.fetchNewsIds) {\n const news = yield select(Selectors.getShoppingCartNews)\n duration = calculateDuration(news, options.get('selectedFormat'))\n } else {\n const totalCount = yield select(Selectors.getTotalNewsCount)\n const exportCount = totalCount > 10000 ? 10000 : totalCount\n duration = exportCount * 0.02\n }\n\n const step = 100 / duration\n yield put(Actions.exportProgressStart(duration))\n\n const startTime = moment()\n\n for (;;) {\n const elapsedTime = moment().diff(startTime, 'seconds')\n\n yield put(Actions.exportProgressIncreaseStep({\n step,\n elapsedTime\n }))\n\n const { eSuccess, mSuccess, eError, mError } = yield race({\n eSuccess: take(Actions.exportSuccess),\n mSuccess: take(Actions.sendMailSuccess),\n eError: take(Actions.exportError),\n mError: take(Actions.sendMailError),\n step: delay(1000)\n })\n\n if (eSuccess || mSuccess || eError || mError) {\n yield put(Actions.exportProgressStop())\n\n return null\n }\n }\n}\n\nexport function* generatePreview() {\n const open = yield select(Selectors.getExportShowExportDialog)\n const isStructuredExport = yield select(Selectors.getShoppingCartIsStructuredExport)\n\n if (!isStructuredExport && open) {\n const selectedFormat = yield select(Selectors.getExportSelectedFormat)\n\n if (selectedFormat === 'pdf') {\n yield put(Actions.exportCoverStart({\n type: 'pdf',\n preview: true\n }))\n }\n\n if (selectedFormat === 'html') {\n yield put(Actions.exportHtmlPreviewStart({\n type: 'html',\n preview: true\n }))\n }\n\n if (selectedFormat === 'backwards_news_html') {\n yield put(Actions.exportHtmlPreviewStart({\n type: 'backwards_news_html',\n preview: true\n }))\n }\n\n if (selectedFormat === 'txt') {\n yield put(Actions.exportTxtPreviewStart({\n type: 'txt',\n preview: true\n }))\n }\n\n if (selectedFormat === 'xml') {\n yield put(Actions.exportXmlPreviewStart({\n type: 'xml',\n preview: true\n }))\n }\n\n if (selectedFormat === 'json') {\n yield put(Actions.exportJsonPreviewStart({\n type: 'json',\n preview: true\n }))\n }\n }\n}\n\nexport function* showExportDialog() {\n yield call(generatePreview)\n}\n\nexport function* sendMail({ payload: { to, subject, text, senderName, senderMail } }) {\n try {\n let from = null\n\n if (senderName && senderMail) {\n from = `${senderName} <${senderMail}>`\n }\n\n const mailBody = yield select(Selectors.getMailBody, to, subject, text, from)\n const result = yield call(Api.sendMail, mailBody)\n\n yield put(Actions.hideSendMailDialog())\n yield put(AppActions.genericSuccessMessage())\n yield put(Actions.sendMailSuccess(result))\n } catch (error) {\n yield put(Actions.sendMailError(error))\n yield put(AppActions.genericErrorMessage(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* createDispatch({ payload: { to, subject, text, senderName, senderMail, scheduledFor } }) {\n try {\n let from = null\n\n if (senderName && senderMail) {\n from = `${senderName} <${senderMail}>`\n }\n\n const mailBody = yield select(Selectors.getMailBody, to, subject, text, from, scheduledFor)\n const result = yield call(Api.createDispatch, mailBody)\n\n yield put(Actions.hideSendMailDialog())\n yield put(AppActions.genericSuccessMessage())\n yield put(Actions.createDispatchSuccess(result))\n } catch (error) {\n yield put(Actions.createDispatchError(error))\n yield put(AppActions.genericErrorMessage(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* cancelDispatch({ payload: id }) {\n try {\n yield call(Api.cancelDispatch, id)\n yield put(Actions.cancelDispatchSuccess(id))\n } catch (error) {\n yield put(Actions.cancelDispatchError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* uploadHtmlHeaderLogo({ payload: file }) {\n try {\n if (file) {\n const formData = [\n {\n key: 'file',\n value: file\n },\n {\n key: 'keep_until',\n value: moment().add(28, 'days').format()\n }\n ]\n\n const { url, filename } = yield call(Api.uploadFile, formData)\n\n yield put(Actions.setUploadedHeaderLogoUrl({ url, filename }))\n yield put(Actions.exportHtmlPreviewStart({\n type: 'html',\n preview: true\n }))\n }\n } catch (error) {\n yield put(Actions.uploadHtmlHeaderLogoError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* uploadHtmlAdvertisingBanner({ payload: file }) {\n try {\n if (file) {\n const formData = [\n {\n key: 'file',\n value: file\n },\n {\n key: 'keep_until',\n value: moment().add(28, 'days').format()\n }\n ]\n\n const { url, filename } = yield call(Api.uploadFile, formData)\n\n yield put(Actions.setUploadedAdvertisingBannerUrl({ url, filename }))\n yield put(Actions.exportHtmlPreviewStart({\n type: 'html',\n preview: true\n }))\n }\n } catch (error) {\n yield put(Actions.uploadHtmlAdvertisingBannerError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* validateSpf({ payload: email }) {\n try {\n yield put(Actions.validateSpfStarted())\n const result = yield call(Api.validateSpf, { email })\n yield put(Actions.validateSpfSuccess(result))\n } catch (error) {\n yield put(Actions.validateSpfError(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* changeExportFormatSelection() {\n yield call(generatePreview)\n}\n\nexport function* fetchDispatchLog() {\n try {\n const result = yield call(Api.fetchDispatchLog)\n\n yield put(Actions.fetchDispatchLogSuccess(result))\n } catch (error) {\n yield put(Actions.fetchDispatchLogError(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* watchExportStart() {\n yield takeEvery(Actions.exportCoverStart, doExport)\n yield takeEvery(Actions.exportHtmlPreviewStart, doExport)\n yield takeEvery(Actions.exportTxtPreviewStart, doExport)\n yield takeEvery(Actions.exportXmlPreviewStart, doExport)\n yield takeEvery(Actions.exportJsonPreviewStart, doExport)\n yield takeEvery(Actions.exportStart, doExport)\n yield takeEvery(Actions.exportStart, exportProgress)\n yield takeEvery(Actions.exportStructuredFormatStart, doStructuredFormatExport)\n yield takeEvery(Actions.exportStructuredFormatStart, exportProgress)\n yield takeEvery(Actions.exportBackwardsNewsHtmlStart, exportBackwardsNewsHtml)\n yield takeEvery(Actions.exportBackwardsNewsHtmlStart, exportProgress)\n}\n\nexport function* watchShowExportDialog() {\n yield takeEvery(Actions.showExportDialog, showExportDialog)\n}\n\nexport function* watchSendMail() {\n yield takeEvery(Actions.sendMail, sendMail)\n}\n\nexport function* watchCreateDispatch() {\n yield takeEvery(Actions.createDispatchStart, createDispatch)\n}\n\nexport function* watchCancelDispatch() {\n yield takeEvery(Actions.cancelDispatchStart, cancelDispatch)\n}\n\nexport function* watchUploadHtmlHeaderLogo() {\n yield takeLatest(Actions.uploadHtmlHeaderLogoStart, uploadHtmlHeaderLogo)\n}\n\nexport function* watchUploadHtmlAdvertisingBanner() {\n yield takeLatest(Actions.uploadHtmlAdvertisingBannerStart, uploadHtmlAdvertisingBanner)\n}\n\nexport function* watchValidateSpf() {\n yield debounce(200, Actions.validateSpfStart, validateSpf)\n}\n\nexport function* watchChangeExportFormatSelection() {\n yield takeEvery(Actions.changeExportFormatSelection, changeExportFormatSelection)\n}\n\nexport function* watchFetchDispatchLog() {\n yield takeEvery(Actions.fetchDispatchLogStart, fetchDispatchLog)\n}\n\nexport default function* exportSaga() {\n yield all([\n watchExportStart(),\n watchShowExportDialog(),\n watchSendMail(),\n watchUploadHtmlHeaderLogo(),\n watchUploadHtmlAdvertisingBanner(),\n watchValidateSpf(),\n watchChangeExportFormatSelection(),\n watchFetchDispatchLog(),\n watchCreateDispatch(),\n watchCancelDispatch()\n ])\n}\n","import { all, call, put, select, takeLatest } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/news'\n\nimport * as Selectors from 'selectors'\nimport { fetchChartData } from 'sagas/charts'\n\nexport function* fetchFilterTimeline({ payload: { dateFrom, dateTo } }) {\n const chart = yield select(Selectors.getFilterTimeline)\n\n const searchBody = yield select(Selectors.getSearchBody, dateFrom, dateTo)\n\n const { timeline: result } = yield call(fetchChartData, chart, searchBody)\n\n yield put(Actions.fetchFilterTimelineSuccess(result))\n}\n\nexport function* watchFetchFilterTimeline() {\n yield takeLatest(Actions.fetchFilterTimelineStart, fetchFilterTimeline)\n}\n\nexport default function* newsSaga() {\n yield all([\n watchFetchFilterTimeline()\n ])\n}\n","import { createAction } from 'redux-actions'\n\nconst prefix = 'GA/'\n\nexport const event = createAction(`${prefix}EVENT`)\nexport const exception = createAction(`${prefix}EXCEPTION`)\nexport const init = createAction(`${prefix}INIT`)\nexport const pageView = createAction(`${prefix}PAGE_VIEW`)\nexport const setOption = createAction(`${prefix}SET_OPTION`)\n","/* global window */\nimport ReactGA from 'react-ga4'\n\nlet initialized = false\n\nconst action = callback => {\n if (process.env.NODE_ENV !== 'production') {\n return null\n }\n\n return initialized && callback()\n}\n\nexport const init = () => {\n initialized = true\n action(() => {\n ReactGA.initialize('G-Z4LHK60Y6B')\n })\n}\nexport const pageView = pathname => action(() => {\n ReactGA.send({ hitType: 'pageview', page: pathname || window.location.href })\n})\nexport const setGaOption = (key, value) => action(() => ReactGA.set({ [key]: value }))\nexport const event = args => action(() => ReactGA.event(args))\n","import { call, takeEvery, all } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/ga'\nimport * as GA from 'utils/ga'\n\nexport function* init() {\n yield call(GA.init)\n}\n\nexport function* event({ payload: eventData }) {\n yield call(GA.event, eventData)\n}\n\nexport function* pageView({ payload: page }) {\n const trackPage = page.replace(/reset_password.*/, 'reset_password')\n yield call(GA.pageView, trackPage)\n}\n\nexport function* setOption({ payload: { key, value } }) {\n yield call(GA.setGaOption, key, value)\n}\n\nexport function* watchInit() {\n yield takeEvery(Actions.init, init)\n}\n\nexport function* watchEvent() {\n yield takeEvery(Actions.event, event)\n}\n\nexport function* watchPageView() {\n yield takeEvery(Actions.pageView, pageView)\n}\n\nexport function* watchSetOption() {\n yield takeEvery(Actions.setOption, setOption)\n}\n\nexport default function* gaSaga() {\n yield all([\n watchInit(),\n watchEvent(),\n watchPageView(),\n watchSetOption()\n ])\n}\n","import { call, put, select, takeEvery, all } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/identity_sets'\nimport * as Api from 'api/bff'\nimport * as AppActions from 'actions/app'\nimport * as Selectors from 'selectors'\n\nexport function* saveIdentitySet() {\n try {\n const i18n = yield select(Selectors.getI18n)\n const identitySet = yield select(Selectors.getSelectedIdentitySet)\n const uploadedPhoto = yield select(Selectors.getIdentitySetsUploadedPhoto)\n\n let photo = null\n\n if (uploadedPhoto) {\n const formData = [\n {\n key: 'file',\n value: uploadedPhoto\n }\n ]\n\n const { url } = yield call(Api.uploadFile, formData)\n photo = url\n }\n\n const body = {\n name: identitySet.get('name'),\n photo\n }\n\n let result\n let successMessage = i18n.get('created')\n\n if (identitySet.get('id')) {\n successMessage = i18n.get('updated')\n result = yield call(Api.updateIdentitySet, identitySet.get('id'), body)\n } else {\n result = yield call(Api.createIdentitySet, body)\n }\n\n yield put(Actions.saveIdentitySetSuccess({ identitySet: result }))\n yield put(Actions.hideIdentitySetDialog())\n yield put(AppActions.showAppMessage({ text: `${result.name} ${successMessage}` }))\n } catch (error) {\n yield put(Actions.saveIdentitySetError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* deleteIdentitySet() {\n try {\n const i18n = yield select(Selectors.getI18n)\n const identitySet = yield select(Selectors.getSelectedIdentitySet)\n\n yield put(Actions.hideDeleteIdentitySetDialog())\n\n yield call(Api.deleteIdentitySet, identitySet.get('id'))\n\n yield put(Actions.deleteIdentitySetSuccess(identitySet.get('id')))\n yield put(AppActions.showAppMessage({ text: `${identitySet.get('name')} ${i18n.get('deleted')}` }))\n } catch (error) {\n yield put(Actions.deleteIdentitySetError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* addIdentityToIdentitySet({ payload: { identitySet } }) {\n try {\n const identity = yield select(Selectors.getIdentitySetsSelectedIdentity)\n\n const result = yield call(Api.addIdentityToIdentitySet, identitySet.get('id'), identity.get('id'))\n\n yield put(Actions.addIdentityToIdentitySetSuccess({ identitySet, identityId: identity.get('id'), identitySetsIdentities: result }))\n } catch (error) {\n yield put(Actions.addIdentityToIdentitySetError({ error, identitySet }))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* removeIdentityFromIdentitySet({ payload: { identitySet, identityId, showSuccess } }) {\n try {\n yield call(Api.removeIdentityFromIdentitySet, identitySet.get('id'), identityId)\n\n yield put(Actions.removeIdentityFromIdentitySetSuccess({ identitySet, identityId }))\n\n if (showSuccess) {\n const i18n = yield select(Selectors.getI18n)\n yield put(AppActions.showAppMessage({ text: `${identitySet.get('name')} ${i18n.get('removed')}` }))\n }\n } catch (error) {\n yield put(Actions.removeIdentityFromIdentitySetError({ error, identitySet }))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* watchSaveIdentitySet() {\n yield takeEvery(Actions.saveIdentitySetStart, saveIdentitySet)\n}\n\nexport function* watchDeleteIdentitySet() {\n yield takeEvery(Actions.deleteIdentitySetStart, deleteIdentitySet)\n}\n\nexport function* watchAddIdentityToIdentitySet() {\n yield takeEvery(Actions.addIdentityToIdentitySetStart, addIdentityToIdentitySet)\n}\n\nexport function* watchRemoveIdentityFromIdentitySet() {\n yield takeEvery(Actions.removeIdentityFromIdentitySetStart, removeIdentityFromIdentitySet)\n}\n\nexport default function* saga() {\n yield all([\n watchSaveIdentitySet(),\n watchDeleteIdentitySet(),\n watchAddIdentityToIdentitySet(),\n watchRemoveIdentityFromIdentitySet()\n ])\n}\n","/* global FormData */\nimport { getBffUrl as bffUrlSelector } from 'selectors'\nimport store from '../store'\n\nimport * as Api from '../utils/api'\n\nconst getBffUrl = () => bffUrlSelector(store.getState())\n\nexport const fetchContacts = body => Api.post(\n `${getBffUrl()}/contacts_management/contacts/search`,\n body\n)\n\nexport const searchContacts = body => Api.post(\n `${getBffUrl()}/contacts_management/contacts/search/global`,\n body\n)\n\nexport const createContacts = body => Api.post(\n `${getBffUrl()}/contacts_management/contacts`,\n body\n)\n\nexport const updateContacts = (id, body) => Api.patch(\n `${getBffUrl()}/contacts_management/contacts/${id}`,\n body\n)\n\nexport const deleteContacts = body => Api.post(\n `${getBffUrl()}/contacts_management/contacts/delete`,\n body\n)\n\nexport const fetchDistributionLists = body => Api.post(\n `${getBffUrl()}/contacts_management/distribution_lists/search`,\n body\n)\n\nexport const createDistributionList = body => Api.post(\n `${getBffUrl()}/contacts_management/distribution_lists`,\n body\n)\n\nexport const updateDistributionList = (id, body) => Api.patch(\n `${getBffUrl()}/contacts_management/distribution_lists/${id}`,\n body\n)\n\nexport const deleteDistributionList = id => Api.destroy(\n `${getBffUrl()}/contacts_management/distribution_lists/${id}`\n)\n\nexport const addContactsToDistributionList = (id, body) => Api.post(\n `${getBffUrl()}/contacts_management/distribution_lists/${id}/add_contacts`, body\n)\n\nexport const removeContactFromList = (id, contactId) => Api.destroy(\n `${getBffUrl()}/contacts_management/distribution_lists/${id}/remove_contact/${contactId}`\n)\n\nexport const uploadContacts = data => {\n const formData = new FormData()\n data.forEach(({ key, value }) => formData.append(key, value))\n\n return Api.form(\n `${getBffUrl()}/contacts_management/contacts/upload_contacts`, formData\n )\n}\n\nexport const downloadContactsExcel = data => (\n Api.post(\n `${getBffUrl()}/contacts_management/contacts/excel`, data, 'blob'\n )\n)\n\nexport const downloadDistributionList = data => (\n Api.post(\n `${getBffUrl()}/contacts_management/distribution_lists/excel`, data, 'blob'\n )\n)\n\nexport const createContactTag = body => Api.post(\n `${getBffUrl()}/contacts_management/tags`,\n body\n)\n\nexport const renameContactTag = (id, name) => Api.patch(\n `${getBffUrl()}/contacts_management/tags/${id}`,\n { name }\n)\n\nexport const deleteContactTag = id => Api.destroy(\n `${getBffUrl()}/contacts_management/tags/${id}`\n)\n\nexport const addTagToContact = (id, body) => Api.post(\n `${getBffUrl()}/contacts_management/contacts/${id}/add_tag`,\n body\n)\n\nexport const removeTagFromContact = (id, tagId) => Api.destroy(\n `${getBffUrl()}/contacts_management/contacts/${id}/remove_tag/${tagId}`\n)\n\nexport const searchTags = body => Api.post(\n `${getBffUrl()}/contacts_management/tags/search`,\n body\n)\n\nexport const searchAnewstipJournalists = body => Api.post(\n `${getBffUrl()}/contacts_management/anewstip/search/journalists`, body\n)\n\nexport const searchAnewstipOutlets = body => Api.post(\n `${getBffUrl()}/contacts_management/anewstip/search/outlets`, body\n)\n\nexport const searchAnewstipArticles = body => Api.post(\n `${getBffUrl()}/contacts_management/anewstip/search/articles`, body\n)\n\nexport const fetchAnewstipStatics = () => Api.get(\n `${getBffUrl()}/contacts_management/anewstip/statics`\n)\n\nexport const searchAnewstipSuggest = body => Api.post(\n `${getBffUrl()}/contacts_management/anewstip/suggest`, body\n)\n\nexport const importAnewstipContacts = body => Api.post(\n `${getBffUrl()}/contacts_management/import/anewstip`, body\n)\n\nexport const replaceContact = body => Api.post(\n `${getBffUrl()}/contacts_management/import/anewstip/replace`, body\n)\n\nexport const mergeDistributionLists = body => Api.post(\n `${getBffUrl()}/contacts_management/distribution_lists/merge`, body\n)\n","import { call, put, select, takeEvery, takeLatest, take, all } from 'redux-saga/effects'\nimport { fromJS } from 'immutable'\n\nimport { SearchFields } from 'static/constants'\n\nimport * as Actions from 'actions/influencers'\nimport * as AppActions from 'actions/app'\nimport * as Api from 'api/bff'\nimport * as ContactsManagementApi from 'api/contacts_management'\nimport * as Selectors from 'selectors'\nimport { exception } from 'actions/app'\nimport { uiAddFilters } from 'actions/ui'\nimport { setNewsView, newsRequestSuccess } from 'actions/news'\nimport { retriable } from 'utils/sagas'\n\nexport function* fetchInfluencersTry() {\n const body = yield select(Selectors.getInfluencersSearchBody)\n\n const result = yield call(Api.searchInfluencers, body)\n\n yield put(Actions.influencersRequestSuccess(result))\n}\n\nexport function* fetchInfluencersFail(error) {\n yield put(Actions.influencersRequestError(error))\n yield put(exception(error))\n}\n\nexport function* fetchInfluencers() {\n yield call(retriable, fetchInfluencersTry, fetchInfluencersFail)\n}\n\nexport function* fetchMoreInfluencersTry() {\n const from = yield select(Selectors.getInfluencersFrom)\n\n if (from) {\n const searchBody = yield select(Selectors.getInfluencersSearchBody)\n const body = { ...searchBody, from }\n const result = yield call(Api.searchInfluencers, body)\n yield put(Actions.moreInfluencersRequestSuccess(result))\n }\n}\n\nexport function* fetchMoreInfluencersFail(error) {\n yield put(Actions.moreInfluencersRequestError(error))\n yield put(exception(error))\n}\n\nexport function* fetchMoreInfluencers() {\n yield call(retriable, fetchMoreInfluencersTry, fetchMoreInfluencersFail)\n}\n\nexport function* fetchInfluencerTry({ payload: id }) {\n const result = yield call(Api.fetchInfluencer, id)\n\n yield put(Actions.fetchInfluencerRequestSuccess(result))\n}\n\nexport function* fetchInfluencerFail(error) {\n yield put(Actions.fetchInfluencerRequestError(error))\n yield put(exception(error))\n}\n\nexport function* fetchInfluencer(action) {\n yield call(retriable, fetchInfluencerTry, fetchInfluencerFail, action)\n}\n\nexport function* searchForInfluencer({ payload: { influencer, targetView, groupType = null } }) {\n const searchOptions = [{\n filter: influencer,\n field: SearchFields.INFLUENCERS\n }]\n\n if (groupType) {\n const groups = yield select(Selectors.getNewsGroups)\n searchOptions.push({\n filter: groups.find(gr => gr.get('name').toLowerCase() === groupType.toLowerCase()),\n field: SearchFields.CHANNELS\n })\n }\n\n yield put(uiAddFilters(searchOptions))\n yield take(newsRequestSuccess)\n yield put(setNewsView(targetView))\n}\n\nexport function* searchForSelectedInfluencers({ payload: { targetView } }) {\n const selectedInfluencerIds = yield select(Selectors.getSelectedInfluencerIds)\n const allInfluencer = yield select(Selectors.getInfluencers)\n const selectedInfluencer = selectedInfluencerIds\n .map(id => allInfluencer.find(influencer => influencer.get('id') === id))\n .toJS()\n .map(filter => ({ filter: fromJS(filter), field: SearchFields.INFLUENCERS }))\n\n yield put(uiAddFilters(selectedInfluencer))\n yield take(newsRequestSuccess)\n yield put(setNewsView(targetView))\n}\n\nexport function* setSortBy() {\n yield put(Actions.influencersRequestStart())\n}\n\nexport function* showInfluencerDetails({ payload: influencer }) {\n yield put(Actions.fetchInfluencerRequestStart(influencer.get('id')))\n}\n\nexport function* selectChannel() {\n const channelId = yield select(Selectors.getInfluencersDetailsSelectedChannelId)\n yield put(Actions.highlightReachChart(channelId))\n}\n\nexport function* addInfluencerToContacts({ payload: identityId }) {\n const i18n = yield select(Selectors.getI18n)\n const contactData = yield select(Selectors.getAddInfluencerToContactsDialogContactData)\n const selectedEmail = contactData.get('selectedEmail')\n const influencer = yield select(Selectors.getAddInfluencerToContactsDialogInfluencer)\n const mail = influencer.getIn(['flags', 'contactManagementAddable']) ? influencer.getIn(['contacts', 'emails', selectedEmail]) : null\n const isNewsBoard = yield select(Selectors.isNewsBoard)\n\n const body = {\n identity_id: identityId,\n contact_data: {\n first_name: influencer.get('firstName'),\n last_name: influencer.get('lastName'),\n mail,\n source: isNewsBoard ? 'news_board' : 'search_pool'\n }\n }\n\n try {\n const result = yield call(Api.addInfluencerToContacts, influencer.get('id'), body)\n yield put(Actions.setImportContactsForDistributionLists(result))\n yield put(Actions.addInfluencerToContactsSuccess({ influencer, mail }))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('contact_added'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.addInfluencerToContactsError(error))\n yield put(exception(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: error.response.message,\n variant: 'error'\n }))\n }\n}\n\nexport function* searchContacts({ payload: email }) {\n try {\n const body = {\n exact_filter: [\n { field: 'mail', value: email }\n ]\n }\n const result = yield call(ContactsManagementApi.searchContacts, body)\n yield put(Actions.searchContactsSuccess(result))\n } catch (error) {\n yield put(Actions.searchContactsError(error))\n yield put(exception(error))\n }\n}\n\nexport function* watchFetchInfluencers() {\n yield takeLatest(Actions.influencersRequestStart, fetchInfluencers)\n}\n\nexport function* watchFetchMoreInfluencers() {\n yield takeEvery(Actions.moreInfluencersRequestStart, fetchMoreInfluencers)\n}\n\nexport function* watchFetchInfluencer() {\n yield takeLatest(Actions.fetchInfluencerRequestStart, fetchInfluencer)\n}\n\nexport function* watchSetSortBy() {\n yield takeEvery(Actions.setSortBy, setSortBy)\n}\n\nexport function* watchSearchForInfluencer() {\n yield takeLatest(Actions.searchForInfluencer, searchForInfluencer)\n}\n\nexport function* watchSearchForSelectedInfluencers() {\n yield takeLatest(Actions.searchForSelectedInfluencers, searchForSelectedInfluencers)\n}\n\nexport function* watchShowDetails() {\n yield takeEvery(Actions.showInfluencerDetails, showInfluencerDetails)\n}\n\nexport function* watchSelectChannel() {\n yield takeEvery(Actions.selectChannel, selectChannel)\n}\n\nexport function* watchAddInfluencerToContacts() {\n yield takeLatest(Actions.addInfluencerToContactsStart, addInfluencerToContacts)\n}\n\nexport function* watchSearchContactsStart() {\n yield takeEvery(Actions.searchContactsStart, searchContacts)\n}\n\nexport default function* saga() {\n yield all([\n watchFetchInfluencers(),\n watchFetchMoreInfluencers(),\n watchFetchInfluencer(),\n watchSetSortBy(),\n watchSearchForInfluencer(),\n watchSearchForSelectedInfluencers(),\n watchShowDetails(),\n watchAddInfluencerToContacts(),\n watchSelectChannel(),\n watchSearchContactsStart()\n ])\n}\n","import { fromJS } from 'immutable'\n\nexport const multiSelect = (selectedNews, newsByCodeId, payload, ids) => {\n const lastSelectedNews = selectedNews.last().get('newsId')\n const codeId = payload.first().get('codeId')\n const newsIds = ids || newsByCodeId.map(n => n.get('id'))\n const indexOfLast = newsIds.indexOf(lastSelectedNews)\n const indexOfNew = newsIds.indexOf(payload.first().get('newsId'))\n\n if (indexOfNew !== indexOfLast) {\n const isSelectingForwards = indexOfNew > indexOfLast\n const start = isSelectingForwards ? indexOfLast : indexOfNew\n const end = isSelectingForwards ? indexOfNew : indexOfLast\n\n const inBetween = newsIds.slice(start, end + 1)\n const inBetweenWithCodeId = inBetween.map(newsId => (fromJS({\n newsId,\n codeId\n })))\n\n return inBetweenWithCodeId\n }\n\n return fromJS([{}])\n}\n","export const sortGroupedNews = (groupedNews, pathToSortingField, order, type = 'string') => (\n groupedNews.map(group => {\n const sortLast = type === 'string' ? 'zzzzzzzzzzzzz' : 0\n let news = group.get('news')\n\n const distinctElements = news.map(n => n.getIn(pathToSortingField) || sortLast).toSet()\n\n // check if we really need to sort anything\n if (distinctElements.size > 1) {\n news = news.sortBy(n => {\n if (type === 'number') {\n return n.getIn(pathToSortingField) || sortLast\n }\n\n return (n.getIn(pathToSortingField) || sortLast).toString().toLowerCase()\n })\n\n if (order === 'desc') {\n news = news.reverse()\n }\n }\n\n return group.set('news', news.map(n => n.get('id')))\n })\n)\n","import { put, select, call, takeEvery, all, takeLatest, race, take, delay, debounce } from 'redux-saga/effects'\nimport { fromJS, is, List } from 'immutable'\nimport camelcaseKeysDeep from 'camelcase-keys-deep'\nimport { CustomTagsNewsTypes } from 'static/constants'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/media_reviews'\nimport * as NewsActions from 'actions/news'\nimport { listUniqueById, listChunk } from 'utils/immutable'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport { multiSelect } from 'utils/multiselect'\nimport { sortGroupedNews } from 'utils/sorting'\nimport { reload } from 'utils/browser'\n\nexport function* loadFullTextStart({ payload: news }) {\n const newsId = news.get('id')\n\n try {\n const response = yield call(Api.loadFullText, newsId)\n\n const payload = fromJS({\n newsId,\n text: response.news.text\n })\n yield put(Actions.loadFullTextSuccess(payload))\n } catch (error) {\n yield put(Actions.loadFullTextError(error))\n }\n}\n\nexport function* checkDiff() {\n try {\n const mediaReviewId = yield select(Selectors.getSelectedMediaReviewId)\n let savedSnapshot = yield call(Api.getMediaReviewSnapshot, mediaReviewId)\n savedSnapshot = fromJS(savedSnapshot)\n const loadedSnapshot = yield select(Selectors.getMediaReviewDetailSnapshot)\n const sorting = yield select(Selectors.getMediaReviewSorting)\n const futureSnapshot = fromJS(camelcaseKeysDeep(sorting.toJS()))\n\n let callReorder = true\n\n if (!is(savedSnapshot, loadedSnapshot)) {\n if (is(savedSnapshot, futureSnapshot)) {\n callReorder = false\n } else {\n yield put(Actions.showDiffWarning())\n\n const decision = yield race({\n accept: take(Actions.acceptDiff),\n reject: take(Actions.rejectDiff),\n timeout: delay(120000)\n })\n\n if (decision.reject || decision.timeout) {\n callReorder = false\n yield call(reload)\n } else {\n yield put(Actions.hideDiffWarning())\n }\n }\n }\n\n if (callReorder) {\n yield put(Actions.reorderStart())\n }\n\n yield put(Actions.setSnapshot(sorting))\n } catch (error) {\n yield put(Actions.checkDiffError(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* reorder() {\n try {\n const mediaReviewId = yield select(Selectors.getSelectedMediaReviewId)\n const sorting = yield select(Selectors.getMediaReviewSorting)\n const body = {\n id: mediaReviewId,\n sorting\n }\n\n yield call(Api.reorderMediaReview, body)\n\n yield put(Actions.reorderSuccess())\n } catch (error) {\n yield put(Actions.reorderError(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* fetchNewsForMediaReview({ payload: mediaReviewId }) {\n try {\n yield put(Actions.selectMediaReview(mediaReviewId))\n\n const result = yield call(Api.getMediaReview, mediaReviewId)\n\n const news = listUniqueById(fromJS(result.data).flatMap(d => d.get('news')))\n\n yield put(NewsActions.addNews(news.toJS()))\n yield put(Actions.fetchNewsForMediaReviewSuccess(result))\n yield put(Actions.checkMediaReviewReactionsStart())\n } catch (error) {\n yield put(Actions.fetchNewsForMediaReviewError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* moveCodeInMediaReview() {\n yield put(Actions.checkDiffStart())\n yield put(Actions.moveCodeInMediaReviewSuccess())\n}\n\nexport function* moveNewsInMediaReview() {\n yield put(Actions.checkDiffStart())\n yield put(Actions.moveNewsInMediaReviewSuccess())\n}\n\nexport function* removeNews({ payload: newsId }) {\n try {\n const mediaReviewId = yield select(Selectors.getSelectedMediaReviewId)\n\n const body = {\n id: newsId,\n media_review_id: mediaReviewId\n }\n\n yield call(Api.removeNewsFromMediaReview, body)\n yield put(Actions.removeNewsFromMediaReviewSuccess({ newsId }))\n yield put(Actions.updateMediaReviewStats())\n } catch (error) {\n yield put(Actions.removeNewsFromMediaReviewError(error))\n }\n}\n\nexport function* regroupNews() {\n const isMediaReviewDetail = yield select(Selectors.isMediaReviewDetail)\n\n if (isMediaReviewDetail) {\n yield put(Actions.updateMediaReviewStats())\n }\n}\n\nexport function* showAllSnippets() {\n const groupedNews = yield select(Selectors.getMediaReviewGroupedNews)\n const newsIds = groupedNews.flatMap(index => index.get('news').map(newsItem => fromJS({\n newsId: newsItem,\n codeId: index.getIn(['code', 'id'])\n })))\n yield put(Actions.showSnippet(newsIds))\n}\n\nexport function* hideAllSnippets() {\n const groupedNews = yield select(Selectors.getMediaReviewGroupedNews)\n const newsIds = groupedNews.flatMap(index => index.get('news').map(newsItem => fromJS({\n newsId: newsItem,\n codeId: index.getIn(['code', 'id'])\n })))\n yield put(Actions.hideSnippet(newsIds))\n}\n\nexport function* showAllSummaries() {\n const groupedNews = yield select(Selectors.getMediaReviewGroupedNews)\n const newsIds = groupedNews.flatMap(index => index.get('news').map(newsItem => fromJS({\n newsId: newsItem,\n codeId: index.getIn(['code', 'id'])\n })))\n yield put(Actions.showSummary(newsIds))\n}\n\nexport function* hideAllSummaries() {\n const groupedNews = yield select(Selectors.getMediaReviewGroupedNews)\n const newsIds = groupedNews.flatMap(index => index.get('news').map(newsItem => fromJS({\n newsId: newsItem,\n codeId: index.getIn(['code', 'id'])\n })))\n yield put(Actions.hideSummary(newsIds))\n}\n\nexport function* updateMediaReviewStats() {\n const mediaReviewId = yield select(Selectors.getSelectedMediaReviewId)\n const news = yield select(Selectors.getMediaReviewNewsUngrouped)\n\n yield put(Actions.recalculateMediaReviewStats({\n mediaReviewId,\n news\n }))\n}\n\nexport function* shiftSelectNewsForSorting({ payload: { newsIds, isReplace, keyPress } }) {\n const codeId = newsIds.first().get('codeId')\n const newsByCodeId = yield select(Selectors.getMediaReviewNewsByCodeId, codeId)\n const selectedNewsForSorting = yield select(Selectors.getMediaReviewSelectedNewsForSorting)\n\n if (selectedNewsForSorting.isEmpty()) {\n yield put(Actions.selectNewsForSorting({ newsIds, isReplace, keyPress }))\n } else {\n const shiftSelection = yield call(multiSelect, selectedNewsForSorting, newsByCodeId, newsIds)\n yield put(Actions.selectNewsForSorting({ newsIds: shiftSelection, isReplace, keyPress }))\n }\n}\n\nexport function* collapseAllTopics() {\n const codeIds = yield select(Selectors.getMediaReviewCodeIds)\n\n yield put(Actions.collapseTopics(codeIds))\n}\n\nexport function* expandAllTopics() {\n const codeIds = yield select(Selectors.getMediaReviewCodeIds)\n\n yield put(Actions.expandTopics(codeIds))\n}\n\nexport function* sortBy({ payload: { field, order } }) {\n const sortLast = 'zzzzzzzzzzzzz'\n let newGroupedNews\n\n if (field === 'topic') {\n const groupedNews = yield select(Selectors.getMediaReviewGroupedNews)\n newGroupedNews = groupedNews.sortBy(groupIndex => groupIndex.getIn(['code', 'sortcode']) || sortLast)\n\n if (order === 'desc') {\n newGroupedNews = newGroupedNews.reverse()\n }\n } else {\n const groupedNews = yield select(Selectors.getMediaReviewNews)\n\n const isPublicationField = ['publicationName', 'channelId'].indexOf(field) !== -1\n let pathToSortingField = [field]\n\n if (isPublicationField) {\n pathToSortingField = ['publication', field === 'publicationName' ? 'name' : field]\n }\n\n newGroupedNews = sortGroupedNews(groupedNews, pathToSortingField, order)\n }\n\n yield put(Actions.setGroupedNews(newGroupedNews))\n}\n\nconst mapCodeNewsPairs = (codeId, newsIds) => newsIds.map(n => (codeId === undefined ? String(n) : `${codeId}_${n}`))\n\nexport function* selectNews({ payload: { codeId, newsIds, omitIntersection } }) {\n let codeNewsIdPairs = mapCodeNewsPairs(codeId, newsIds)\n let selectedNews = yield select(Selectors.getMediaReviewSelectedNews)\n const newsClusterIds = yield select(Selectors.getNewsClusterIdsOfAllCodesInMediaReview)\n\n const allCodeNewsIdPairs = newsClusterIds\n .map(pair => mapCodeNewsPairs(pair.get('codeId'), pair.get('newsIds')))\n .flatten(true)\n\n if (selectedNews.isEmpty()) {\n codeNewsIdPairs = allCodeNewsIdPairs\n .filterNot(c => codeNewsIdPairs.includes(c))\n }\n\n yield put(Actions.setSelectedNews({ codeNewsIdPairs, omitIntersection }))\n\n selectedNews = yield select(Selectors.getMediaReviewSelectedNews)\n\n if (selectedNews.size === allCodeNewsIdPairs.size) {\n yield put(Actions.resetNewsSelection())\n }\n}\n\nexport function* invertNewsSelection() {\n const selectedNews = yield select(Selectors.getMediaReviewSelectedNews)\n const newsClusterIds = yield select(Selectors.getNewsClusterIdsOfAllCodesInMediaReview)\n\n const allCodeNewsIdPairs = newsClusterIds\n .map(pair => mapCodeNewsPairs(pair.get('codeId'), pair.get('newsIds')))\n .flatten(true)\n\n const codeNewsIdPairs = allCodeNewsIdPairs.filterNot(c => selectedNews.includes(c))\n\n yield put(Actions.resetNewsSelection())\n yield put(Actions.setSelectedNews({ codeNewsIdPairs }))\n}\n\nexport function* filterMediaReviewsStart() {\n const filterData = yield select(Selectors.getMediaReviewsFilter)\n\n try {\n const body = {\n media_review_type_ids: filterData.get('filter'),\n size: filterData.get('size') + 1\n }\n\n const result = yield call(Api.filterMediaReviews, body)\n\n yield put(Actions.filterMediaReviewsSuccess(result))\n } catch (error) {\n yield put(Actions.filterMediaReviewsError(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* pinAll({ payload: { customTag, action } }) {\n try {\n const i18n = yield select(Selectors.getI18n)\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n let news = yield select(Selectors.getMediaReviewsSelectedNewsObjects)\n\n if (news.isEmpty()) {\n news = yield select(Selectors.getMediaReviewNewsUngrouped)\n }\n\n news = news.toList()\n\n const newsIncludingClusters = news.reduce((acc, n) => {\n const cn = n.get('clusteredNews') || fromJS([])\n\n return acc.concat(cn.push(n))\n }, List())\n\n const chunkCount = Math.ceil(newsIncludingClusters.size / 100)\n const chunks = listChunk(newsIncludingClusters, chunkCount)\n\n yield put(AppActions.setAppBarMessage(i18n.get('pinning_progress', { progress: '0%' })))\n\n let changedCount = 0\n for (let i = 0; i < chunks.size; i += 1) {\n const chunkNews = chunks.get(i)\n\n let progress = `${Math.ceil(((i + 1) / chunks.size) * 100)}%`\n yield put(AppActions.setAppBarMessage(i18n.get('pinning_progress', { progress })))\n\n const data = chunkNews.map(n => (fromJS({\n news_id: n.get('id'),\n article_date: n.get('articleDate'),\n [`${action === 'unpin' ? '-' : '+'}custom_tag_ids`]: [customTag.get('id')]\n })))\n\n yield call(Api.assignCustomTagToNews, { data, news_type: CustomTagsNewsTypes[moduleName] })\n\n changedCount += data.size\n\n progress = `${Math.ceil(((i + 1) / chunks.size) * 100)}%`\n yield put(AppActions.setAppBarMessage(i18n.get('pinning_progress', { progress })))\n }\n\n const newTag = customTag.update('newsCount', count => count + (action === 'unpin' ? -changedCount : changedCount))\n\n news = news.map(n => n.update('customTags', customTags => {\n if (action === 'unpin') {\n return customTags.filter(c => c.get('id') !== newTag.get('id'))\n }\n\n return customTags.push(newTag)\n }))\n\n yield put(NewsActions.updateNews(news))\n yield put(AppActions.setAppBarMessage(null))\n yield put(Actions.pinAllSuccess({ customTag, pinnedCount: news.size }))\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(AppActions.setAppBarMessage(null))\n yield put(Actions.pinAllError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* unpinAll({ payload: { customTag } }) {\n yield call(pinAll, { payload: { customTag, action: 'unpin' } })\n}\n\nexport function* replaceMediaReviewReaction({ payload: { newsId, codeId, reactionTypeId } }) {\n try {\n const mediaReviewId = yield select(Selectors.getSelectedMediaReviewId)\n\n const body = {\n news_id: newsId,\n code_id: codeId,\n reaction_type_id: reactionTypeId\n }\n\n const result = yield call(Api.replaceMediaReviewReaction, mediaReviewId, body)\n\n yield put(Actions.replaceMediaReviewReactionSuccess(result))\n } catch (error) {\n yield put(Actions.replaceMediaReviewReactionError(error))\n }\n}\n\nexport function* fetchMediaReviewReactions() {\n try {\n const blocked = yield select(Selectors.getMediaReviewCheckMediaReviewReactionsBlocked)\n\n if (!blocked) {\n const mediaReviewId = yield select(Selectors.getSelectedMediaReviewId)\n\n const result = yield call(Api.getMediaReviewReactions, mediaReviewId)\n\n yield put(Actions.fetchMediaReviewReactionsSuccess(result))\n }\n } catch (error) {\n yield put(Actions.fetchMediaReviewReactionsError(error))\n }\n}\n\nexport function* checkMediaReviewReactions() {\n for (; ;) {\n const { stop } = yield race({\n stop: take(Actions.checkMediaReviewReactionsStop),\n refresh: delay(10000)\n })\n\n if (stop) {\n break\n }\n\n yield put(Actions.fetchMediaReviewReactionsStart())\n }\n}\n\nexport function* watchFetchNewsForMediaReview() {\n yield takeEvery(Actions.fetchNewsForMediaReviewStart, fetchNewsForMediaReview)\n}\n\nexport function* watchMoveCode() {\n yield takeEvery(Actions.moveCodeInMediaReviewStart, moveCodeInMediaReview)\n}\n\nexport function* watchMoveNews() {\n yield takeEvery(Actions.moveNewsInMediaReviewStart, moveNewsInMediaReview)\n}\n\nexport function* watchRemoveNews() {\n yield takeEvery(Actions.removeNewsFromMediaReviewStart, removeNews)\n}\n\nexport function* watchRegroupNews() {\n yield takeEvery(Actions.regroupNews, regroupNews)\n}\n\nexport function* watchUpdateMediaReviewStats() {\n yield takeEvery(Actions.updateMediaReviewStats, updateMediaReviewStats)\n}\n\nexport function* watchCollapseAllTopics() {\n yield takeEvery(Actions.collapseAllTopics, collapseAllTopics)\n}\n\nexport function* watchExpandAllTopics() {\n yield takeEvery(Actions.expandAllTopics, expandAllTopics)\n}\n\nexport function* watchShowAllSnippets() {\n yield takeEvery(Actions.showAllSnippets, showAllSnippets)\n}\n\nexport function* watchHideAllSnippets() {\n yield takeEvery(Actions.hideAllSnippets, hideAllSnippets)\n}\n\nexport function* watchShowAllSummaries() {\n yield takeEvery(Actions.showAllSummaries, showAllSummaries)\n}\n\nexport function* watchHideAllSummaries() {\n yield takeEvery(Actions.hideAllSummaries, hideAllSummaries)\n}\n\nexport function* watchShiftSelectNewsForSorting() {\n yield takeEvery(Actions.shiftSelectNewsForSorting, shiftSelectNewsForSorting)\n}\n\nexport function* watchLoadFullTextStart() {\n yield takeEvery(Actions.loadFullTextStart, loadFullTextStart)\n}\n\nexport function* watchSortBy() {\n yield takeEvery(Actions.sortBy, sortBy)\n}\n\nexport function* watchSelectNews() {\n yield takeEvery(Actions.selectNews, selectNews)\n}\n\nexport function* watchInvertNewsSelection() {\n yield takeEvery(Actions.invertNewsSelection, invertNewsSelection)\n}\n\nexport function* watchFilterMediaReviewsStart() {\n yield takeEvery(Actions.filterMediaReviewsStart, filterMediaReviewsStart)\n}\n\nexport function* watchPinAll() {\n yield takeEvery(Actions.pinAllStart, pinAll)\n}\n\nexport function* watchUnpinAll() {\n yield takeEvery(Actions.unpinAll, unpinAll)\n}\n\nexport function* watchReplaceMediaReviewReaction() {\n yield takeEvery(Actions.replaceMediaReviewReactionStart, replaceMediaReviewReaction)\n}\n\nexport function* watchFetchMediaReviewReations() {\n yield takeLatest(Actions.fetchMediaReviewReactionsStart, fetchMediaReviewReactions)\n}\n\nexport function* watchCheckMediaReviewReactions() {\n yield takeEvery(Actions.checkMediaReviewReactionsStart, checkMediaReviewReactions)\n}\n\nexport function* watchReorder() {\n yield takeLatest(Actions.reorderStart, reorder)\n}\n\nexport function* watchCheckDiff() {\n yield debounce(1000, Actions.checkDiffStart, checkDiff)\n}\n\nexport default function* mediaReviewSaga() {\n yield all([\n watchFetchNewsForMediaReview(),\n watchMoveCode(),\n watchMoveNews(),\n watchRemoveNews(),\n watchRegroupNews(),\n watchUpdateMediaReviewStats(),\n watchCollapseAllTopics(),\n watchExpandAllTopics(),\n watchShowAllSnippets(),\n watchHideAllSnippets(),\n watchShowAllSummaries(),\n watchHideAllSummaries(),\n watchShiftSelectNewsForSorting(),\n watchLoadFullTextStart(),\n watchSortBy(),\n watchSelectNews(),\n watchInvertNewsSelection(),\n watchFilterMediaReviewsStart(),\n watchPinAll(),\n watchUnpinAll(),\n watchReplaceMediaReviewReaction(),\n watchFetchMediaReviewReations(),\n watchCheckMediaReviewReactions(),\n watchReorder(),\n watchCheckDiff()\n ])\n}\n","import { put, takeEvery, select, all, call, debounce, delay, take, race } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/navigation'\nimport * as EnvironmentActions from 'actions/environment'\nimport * as ConfigActions from 'actions/config'\nimport { pageView } from 'actions/ga'\nimport * as Selectors from 'selectors'\nimport { push, LOCATION_CHANGE } from 'redux-first-history'\n\nexport function* navigate({ payload: path }) {\n const search = yield select(Selectors.getSearchFromUrl)\n\n if (!path.startsWith('/')) {\n const currentPath = yield select(Selectors.getCurrentPath)\n yield put(push(`${currentPath}/${path}${search}`))\n } else {\n yield put(push(`${path}${search}`))\n }\n}\n\nexport function* backToLogin() {\n yield put(Actions.navigate('/'))\n}\n\nexport function* back({ payload: steps }) {\n const stepsBack = steps || 1\n const currentPath = yield select(Selectors.getCurrentPath)\n const parts = currentPath.split('/').filter(v => v).map(v => v.split('?'))\n const search = yield select(Selectors.getSearchFromUrl)\n\n for (let i = 0; i < stepsBack; i += 1) {\n parts.pop()\n }\n\n const newPath = [\n parts.map(v => v.join('')).join('/'),\n search.replace(/^\\?/, '')\n ].filter(v => v).join('?')\n\n yield put(Actions.navigate(`/${newPath}`))\n}\n\nexport function* redirectAuthenticated() {\n const isAuthenticated = yield select(Selectors.getIsAuthenticated)\n\n if (isAuthenticated) {\n const route = yield select(Selectors.getFallbackRoute)\n yield put(push(route))\n }\n}\n\nexport function* locationChange({ payload: { location: { pathname } } }) {\n const redirect = yield select(Selectors.getRedirectParam)\n\n if (pathname === '/') {\n if (!redirect) {\n yield put(ConfigActions.setStartedWithDeepLink(false))\n }\n\n const environment = yield select(Selectors.getEnvironment)\n\n if (!environment.get('environmentIsLoaded')) {\n yield race({\n success: take(EnvironmentActions.stageRequestSuccess),\n timeout: delay(5000)\n })\n }\n\n yield call(redirectAuthenticated)\n } else if (pathname.startsWith('/direct_login')) {\n if (!redirect) {\n yield put(ConfigActions.setStartedWithDeepLink(false))\n }\n }\n}\n\nexport function* trackLocationChange({ payload: { location: { pathname } } }) {\n let path = pathname\n\n if (path && path.startsWith('/direct_login')) {\n path = '/direct_login'\n }\n\n yield put(pageView(path))\n}\n\nexport function* watchNavigate() {\n yield takeEvery(Actions.navigate, navigate)\n}\n\nexport function* watchBackToLogin() {\n yield takeEvery(Actions.backToLogin, backToLogin)\n}\n\nexport function* watchBack() {\n yield takeEvery(Actions.back, back)\n}\n\nexport function* watchLocationChange() {\n yield takeEvery(LOCATION_CHANGE, locationChange)\n}\n\nexport function* watchTrackLocationChange() {\n yield debounce(50, LOCATION_CHANGE, trackLocationChange)\n}\n\nexport function* watchRedirectAuthenticated() {\n yield takeEvery(Actions.redirectAuthenticated, redirectAuthenticated)\n}\n\nexport default function* navigationSaga() {\n yield all([\n watchNavigate(),\n watchBackToLogin(),\n watchBack(),\n watchLocationChange(),\n watchTrackLocationChange(),\n watchRedirectAuthenticated()\n ])\n}\n","import { call, put, select, takeEvery, all, delay, race, take } from 'redux-saga/effects'\nimport { fromJS } from 'immutable'\nimport { listChunk } from 'utils/immutable'\nimport moment from 'moment-timezone'\n\nimport { Capabilities, NewsPageViews, NewsPageModules } from 'static/constants'\n\nimport * as Actions from 'actions/news'\nimport * as InfluencersActions from 'actions/influencers'\nimport * as PublicationsActions from 'actions/publications'\nimport * as PageIdentitiesActions from 'actions/page_identities'\nimport * as FilterActions from 'actions/filter'\nimport * as SavedSearchesActions from 'actions/saved_searches'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport * as AppActions from 'actions/app'\nimport * as ChartsActions from 'actions/charts'\nimport * as AnalysisActions from 'actions/analysis'\nimport * as ExportActions from 'actions/export'\nimport { retriable, getCluster } from 'utils/sagas'\nimport { rangeToDates } from 'utils/date'\nimport { saveCookie, readCookie } from 'utils/cookieHelper'\n\nexport function* fetchNewsTry() {\n const newsIds = yield select(Selectors.getNewsGroupNewsIds)\n const searchBody = yield select(Selectors.getSearchBody)\n const lastSeenNewsId = yield select(Selectors.getLastSeenNewsId)\n const lastSeenNewsIdCookieName = yield select(Selectors.getLastSeenNewsIdCookieName)\n\n const result = yield call(Api.search, searchBody)\n\n const news = fromJS(result.groups).flatMap(group => group.get('news')).toJS()\n const maxNewsId = Math.max(...news.map(({ id }) => id))\n\n if (maxNewsId > lastSeenNewsId) {\n yield call(saveCookie, lastSeenNewsIdCookieName, maxNewsId, moment().startOf('day').add(1, 'years').toDate())\n }\n\n yield put(Actions.addNews(news))\n yield put(Actions.newsRequestSuccess(result))\n yield put(Actions.increasePaging(result))\n yield put(Actions.decrementReferences(newsIds))\n}\n\nexport function* fetchNewsFail(error) {\n yield put(AppActions.genericErrorMessage())\n yield put(Actions.newsRequestError(error))\n yield put(AppActions.exception(error))\n}\n\nexport function* fetchNews() {\n const isValidSearch = yield select(Selectors.isValidSearch)\n const newsRequestBlocked = yield select(Selectors.getNewsRequestBlocked)\n\n if (isValidSearch && !newsRequestBlocked) {\n const effects = [put(Actions.startNewsRequest())]\n\n const capabilities = yield select(Selectors.getCapabilities)\n const viewConfigCapabilties = yield select(Selectors.getViewConfigCapabilities)\n\n const influencersViews = [NewsPageViews.INFLUENCERS]\n let influencersAllowed = yield select(Selectors.isAllowedNewsView, ...influencersViews)\n let capNames = viewConfigCapabilties.get('influencers')\n influencersAllowed = influencersAllowed && capNames.some(capName => capabilities.get(capName))\n\n if (influencersAllowed) {\n effects.push(put(InfluencersActions.influencersRequestStart()))\n }\n\n const publicationsViews = [NewsPageViews.PUBLICATIONS]\n let publicationsAllowed = yield select(Selectors.isAllowedNewsView, ...publicationsViews)\n capNames = viewConfigCapabilties.get('publications')\n publicationsAllowed = publicationsAllowed && capNames.some(capName => capabilities.get(capName))\n\n if (publicationsAllowed) {\n effects.push(put(PublicationsActions.publicationsRequestStart()))\n }\n\n const profilesViews = [NewsPageViews.PROFILES]\n const profilesAllowed = yield select(Selectors.isAllowedNewsView, ...profilesViews)\n\n if (capabilities.get(Capabilities.HAS_PROFILE_MONITORING_MODULE) && profilesAllowed) {\n effects.push(put(PageIdentitiesActions.pageIdentitiesRequestStart()))\n }\n\n const analysisViews = [NewsPageViews.ANALYSIS_QUERIES]\n const analysisAllowed = yield select(Selectors.isAllowedNewsView, ...analysisViews)\n\n if (capabilities.get(Capabilities.HAS_ANALYSIS_MODULE) && analysisAllowed) {\n effects.push(put(AnalysisActions.fetchChartDataStart()))\n }\n\n const aggregationsViews = [\n NewsPageViews.CHARTS,\n NewsPageViews.STATIC_CHARTS\n ]\n const aggregationsAllowed = yield select(\n Selectors.isAllowedNewsView,\n ...aggregationsViews\n )\n const hasAggregationsCap = [\n Capabilities.HAS_CHARTS_MODULE,\n Capabilities.HAS_NEWS_POOL_MODULE\n ].some(c => capabilities.get(c))\n const isAggregationsView = yield select(Selectors.isCurrentView, ...aggregationsViews)\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n\n if (hasAggregationsCap && aggregationsAllowed && !(moduleName === NewsPageModules.NEWS_POOL && !isAggregationsView)) {\n if (isAggregationsView) {\n if (moduleName === NewsPageModules.NEWS_POOL) {\n effects.unshift(delay(1000))\n }\n\n effects.unshift(put(ChartsActions.aggregationsRequestStart()))\n } else {\n effects.push(put(ChartsActions.aggregationsRequestStart()))\n }\n }\n\n for (let i = 0; i < effects.length; i += 1) {\n yield effects[i]\n }\n } else {\n yield put(Actions.setNewsRequestIsRunning(false))\n }\n}\n\nexport function* deleteNews({ payload: newsId }) {\n try {\n let newsIds = fromJS([newsId])\n const news = yield select(Selectors.getNewsById, newsId)\n\n if (news.get('clusterSize') > 1) {\n const result = yield call(getCluster, news, Api.fetchNewsIds)\n\n newsIds = newsIds.concat(result)\n }\n\n newsIds = fromJS(newsIds)\n\n const chunkCount = Math.ceil(newsIds.size / 50)\n const chunks = listChunk(newsIds, chunkCount)\n\n let fun = Api.deleteNews\n\n if (news.getIn(['flags', 'backwardsNews'])) {\n fun = Api.deleteBackwardsNews\n }\n\n for (let i = 0; i < chunks.size; i += 1) {\n yield call(fun, chunks.get(i).join(','))\n }\n\n yield put(Actions.deleteNewsSuccess(newsIds))\n yield put(Actions.newsRequestStart())\n } catch (error) {\n yield put(Actions.deleteNewsError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* changeDateInterval() {\n const isProfileMonitoring = yield select(Selectors.isAllowedNewsView, NewsPageViews.STATISTICS)\n const isAnalysis = yield select(Selectors.isAllowedNewsView, NewsPageViews.ANALYSIS_QUERIES)\n\n if (isProfileMonitoring) {\n yield put(PageIdentitiesActions.pageIdentitiesRequestStart())\n } else if (isAnalysis) {\n yield put(AnalysisActions.fetchChartDataStart())\n } else {\n yield put(ChartsActions.aggregationsRequestStart())\n }\n}\n\nexport function* fetchMoreNewsTry({ payload: id }) {\n const fetchMoreNewsBody = yield select(Selectors.getFetchMoreNewsBody, id)\n\n const result = yield call(Api.search, fetchMoreNewsBody)\n\n const groupData = result.groups.filter(c => c.id === id)[0]\n\n if (groupData) {\n yield put(Actions.addNews(groupData.news))\n }\n\n yield put(Actions.moreNewsRequestSuccess({\n data: result,\n id\n }))\n\n yield put(Actions.increasePaging({ groupId: id }))\n}\n\nexport function* fetchMoreNewsFail(error) {\n yield put(Actions.moreNewsRequestError(error))\n yield put(AppActions.exception(error))\n}\n\nexport function* fetchMoreNews(action) {\n yield call(retriable, fetchMoreNewsTry, fetchMoreNewsFail, action)\n}\n\nexport function* selectViewConfigPreset({ payload: { name, keepFilters, keepDateType } }) {\n const previousConfig = yield select(Selectors.getNewsViewConfig)\n\n yield put(Actions.setViewConfigPreset(name))\n\n const newConfig = yield select(Selectors.getNewsViewConfig)\n\n if (!previousConfig.equals(newConfig)) {\n const allowedViews = yield select(Selectors.getAllowedNewsViews)\n\n yield put(SavedSearchesActions.setInitialSearchLoaded(false))\n yield put(ExportActions.resetExportConfig())\n\n if (!keepDateType) {\n const dateType = yield select(Selectors.getViewConfigDefaultDateType)\n\n if (dateType == null) {\n const configDefaultDateType = yield select(Selectors.getConfigDefaultDateType)\n yield put(FilterActions.changeDateType(configDefaultDateType))\n } else {\n yield put(FilterActions.changeDateType(dateType))\n }\n }\n\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n\n if (moduleName === NewsPageModules.NEWS_POOL) {\n const { from, to } = yield call(rangeToDates, 'today')\n\n yield put(FilterActions.changeDate({\n dateFrom: from,\n dateTo: to,\n dateRange: 'today'\n }))\n }\n\n const groupNewsIds = yield select(Selectors.getNewsGroupNewsIds)\n const bestPostIds = yield select(Selectors.getBestPageIdentityPostIds)\n const worstPostIds = yield select(Selectors.getWorstPageIdentityPostIds)\n\n const newsIds = groupNewsIds.concat(bestPostIds, worstPostIds)\n\n const groupingTypeChanged = newConfig.get('groupingType') !== previousConfig.get('groupingType')\n const moduleNameChanged = moduleName !== previousConfig.get('moduleName')\n\n yield put(Actions.resetNews())\n\n if (!keepFilters) {\n const globalClusterDefault = yield select(Selectors.getGlobalClusterDefault)\n yield put(FilterActions.resetFilters(globalClusterDefault))\n yield put(AppActions.loadFromLocalStorage(false))\n }\n\n yield put(Actions.decrementReferences(newsIds))\n\n if (moduleNameChanged) {\n yield put(Actions.setNewsView(allowedViews.first()))\n }\n\n const lastSeenNewsIdCookieName = yield select(Selectors.getLastSeenNewsIdCookieName)\n let lastSeenNewsId = yield call(readCookie, lastSeenNewsIdCookieName)\n lastSeenNewsId = parseInt(lastSeenNewsId || 0, 10)\n yield put(Actions.setLastSeenNewsId(lastSeenNewsId))\n\n const savedSearch = yield select(Selectors.getFavoritedSavedSearch)\n\n // Prevent loading saved search when switching grouping (i.e.: Topics, Channels, Pin boards) in news module.\n // Only load saved search when the entire module changes.\n if (moduleNameChanged && savedSearch) {\n yield put(SavedSearchesActions.loadInitialSearch())\n } else if (newConfig.get('loadNewsOnEnter') || (!moduleNameChanged && groupingTypeChanged)) {\n yield put(Actions.newsRequestStart())\n }\n }\n\n yield put(Actions.viewConfigPresetSelected())\n}\n\nexport function* fetchClusterStats({ payload: newsId }) {\n try {\n const news = yield select(Selectors.getNewsById, newsId)\n\n if (news.get('clusterSize') > 1) {\n const clusteredNews = yield call(getCluster, news)\n\n yield put(Actions.updateNews([news.set('clusteredNews', clusteredNews)]))\n }\n } catch (error) {\n yield put(Actions.fetchClusterStatsError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* startNewsRequest() {\n yield race({\n task: call(retriable, fetchNewsTry, fetchNewsFail),\n cancel: take(Actions.startNewsRequest)\n })\n}\n\nexport function* startTranslateRequest({ payload: { news, targetLang } }) {\n try {\n const newsId = news.get('id')\n\n const body = {\n headline: news.get('headline'),\n snippet: news.get('snippet'),\n target_lang: targetLang,\n news_id: newsId\n }\n\n if (news.get('summary')) {\n body.summary = news.get('summary')\n }\n\n if (news.get('summaryHeadline')) {\n body.summary_headline = news.get('summaryHeadline')\n }\n\n const result = yield call(Api.translate, body)\n yield put(Actions.translateRequestSuccess({ translations: result.translations, newsId, targetLang }))\n } catch (error) {\n yield put(Actions.translateRequestError(error))\n }\n}\n\nexport function* watchDeleteNews() {\n yield takeEvery(Actions.deleteNewsStart, deleteNews)\n}\n\nexport function* watchFetchNews() {\n yield takeEvery(Actions.newsRequestStart, fetchNews)\n}\n\nexport function* watchFetchChangeDateInterval() {\n yield takeEvery(FilterActions.changeDateInterval, changeDateInterval)\n}\n\nexport function* watchFetchMoreNews() {\n yield takeEvery(Actions.moreNewsRequestStart, fetchMoreNews)\n}\n\nexport function* watchSelectViewConfigPreset() {\n yield takeEvery(Actions.selectViewConfigPreset, selectViewConfigPreset)\n}\n\nexport function* watchFetchClusterStats() {\n yield takeEvery(Actions.fetchClusterStatsStart, fetchClusterStats)\n}\n\nexport function* watchStartNewsRequest() {\n yield takeEvery(Actions.startNewsRequest, startNewsRequest)\n}\n\nexport function* watchTranslateRequestStart() {\n yield takeEvery(Actions.translateRequestStart, startTranslateRequest)\n}\n\nexport default function* newsSaga() {\n yield all([\n watchDeleteNews(),\n watchFetchNews(),\n watchFetchChangeDateInterval(),\n watchFetchMoreNews(),\n watchSelectViewConfigPreset(),\n watchFetchClusterStats(),\n watchStartNewsRequest(),\n watchTranslateRequestStart()\n ])\n}\n","import { call, put, select, takeEvery, takeLatest, all, delay } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/page_identities'\nimport * as NewsActions from 'actions/news'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport * as AppActions from 'actions/app'\nimport { retriable } from 'utils/sagas'\nimport { fetchChartData } from 'sagas/charts'\n\nexport function* fetchPageIdentitiesTry() {\n const body = yield select(Selectors.getPageIdentitiesSearchBody)\n\n const result = yield call(Api.searchPageIdentities, body)\n\n yield put(Actions.pageIdentitiesRequestSuccess(result))\n}\n\nexport function* fetchPageIdentitiesFail(error) {\n yield put(Actions.pageIdentitiesRequestError(error))\n yield put(AppActions.exception(error))\n}\n\nexport function* fetchPageIdentities() {\n yield put(Actions.pageIdentitiesStatisticsRequestStart())\n yield put(Actions.pageIdentityPostsRequestStart())\n\n yield call(retriable, fetchPageIdentitiesTry, fetchPageIdentitiesFail)\n}\n\nexport function* fetchChartAggregation(chart, index, data) {\n try {\n yield put(Actions.setChartLoading(index))\n let result\n\n if (!data) {\n const searchBody = yield select(Selectors.getSearchBody)\n result = yield call(fetchChartData, chart, searchBody)\n }\n\n if (data || result) {\n yield put(Actions.setChartData({\n index,\n data: (data || result)[chart.get('firstLevel')]\n }))\n } else {\n yield put(Actions.setChartData({\n index,\n data: null\n }))\n }\n\n return data || result\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n yield put(Actions.setChartData({\n index,\n data: null\n }))\n }\n\n return null\n}\n\nexport function* fetchPageIdentitiesStatistics() {\n const charts = yield select(Selectors.getPageIdentitiesStatisticsData)\n\n let effects = []\n charts.forEach((chart, index) => {\n effects.push(put(Actions.setChartLoading(index)))\n })\n yield all(effects)\n\n effects = []\n charts.forEach((chart, index) => {\n if (!chart.get('isPageIdentitiesChart')) {\n effects.push(call(fetchChartAggregation, chart, index))\n }\n })\n yield all(effects)\n\n const firstChartIndex = charts.findIndex(chart => chart.get('isPageIdentitiesChart'))\n const pageIdentityData = yield call(fetchChartAggregation, charts.get(firstChartIndex), firstChartIndex)\n\n effects = []\n charts.forEach((chart, index) => {\n if (chart.get('isPageIdentitiesChart')) {\n effects.push(call(fetchChartAggregation, chart, index, pageIdentityData))\n effects.push(delay(200))\n }\n })\n\n for (let i = 0; i < effects.length; i += 1) {\n yield effects[i]\n }\n}\n\nexport function* fetchPageIdentityPostsTry() {\n const body = yield select(Selectors.getPageIdentityPostsSearchBody)\n\n const { posts } = yield call(Api.searchPageIdentityPosts, body)\n\n yield put(NewsActions.addNews(posts.best))\n yield put(NewsActions.addNews(posts.worst))\n yield put(Actions.pageIdentityPostsRequestSuccess(posts))\n}\n\nexport function* fetchPageIdentityPostsFail(error) {\n yield put(Actions.pageIdentityPostsRequestError(error))\n yield put(AppActions.exception(error))\n}\n\nexport function* fetchPageIdentityPosts() {\n yield call(retriable, fetchPageIdentityPostsTry, fetchPageIdentityPostsFail)\n}\n\nexport function* toggleShowInactive() {\n yield put(Actions.pageIdentitiesRequestStart())\n}\n\nexport function* watchFetchPageIdentities() {\n yield takeLatest(Actions.pageIdentitiesRequestStart, fetchPageIdentities)\n}\n\nexport function* watchFetchPageIdentitiesStatistics() {\n yield takeLatest(Actions.pageIdentitiesStatisticsRequestStart, fetchPageIdentitiesStatistics)\n}\n\nexport function* watchFetchPageIdentityPosts() {\n yield takeLatest(Actions.pageIdentityPostsRequestStart, fetchPageIdentityPosts)\n}\n\nexport function* watchToggleShowInactive() {\n yield takeEvery(Actions.toggleShowInactive, toggleShowInactive)\n}\n\nexport default function* saga() {\n yield all([\n watchFetchPageIdentities(),\n watchFetchPageIdentitiesStatistics(),\n watchFetchPageIdentityPosts(),\n watchToggleShowInactive()\n ])\n}\n","import { call, put, select, takeEvery, takeLatest, take, all } from 'redux-saga/effects'\nimport { fromJS } from 'immutable'\n\nimport { SearchFields } from 'static/constants'\n\nimport * as Actions from 'actions/publications'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport { genericErrorMessage, exception } from 'actions/app'\nimport { uiAddFilters } from 'actions/ui'\nimport { setNewsView, newsRequestSuccess } from 'actions/news'\nimport { retriable } from 'utils/sagas'\n\nexport function* fetchPublicationsTry() {\n const body = yield select(Selectors.getPublicationsSearchBody)\n\n const result = yield call(Api.searchPublications, body)\n\n yield put(Actions.publicationsRequestSuccess(result))\n}\n\nexport function* createPublication({ payload: body }) {\n try {\n const result = yield call(Api.createPublication, body)\n\n yield put(Actions.createPublicationSuccess(result.publication))\n } catch (error) {\n yield put(Actions.createPublicationError(error))\n yield put(exception(error))\n yield put(genericErrorMessage())\n }\n}\n\nexport function* fetchPublicationsFail(error) {\n yield put(Actions.publicationsRequestError(error))\n yield put(exception(error))\n}\n\nexport function* fetchPublications() {\n yield call(retriable, fetchPublicationsTry, fetchPublicationsFail)\n}\n\nexport function* fetchMorePublicationsTry() {\n const from = yield select(Selectors.getPublicationsFrom)\n\n if (from) {\n const searchBody = yield select(Selectors.getPublicationsSearchBody)\n const body = { ...searchBody, from }\n const result = yield call(Api.searchPublications, body)\n yield put(Actions.morePublicationsRequestSuccess(result))\n }\n}\n\nexport function* fetchMorePublicationsFail(error) {\n yield put(Actions.morePublicationsRequestError(error))\n yield put(exception(error))\n}\n\nexport function* fetchMorePublications() {\n yield call(retriable, fetchMorePublicationsTry, fetchMorePublicationsFail)\n}\n\nexport function* searchForPublication({ payload: { publication, targetView } }) {\n yield put(uiAddFilters([{\n filter: publication,\n field: SearchFields.PUBLICATIONS\n }]))\n yield take(newsRequestSuccess)\n yield put(setNewsView(targetView))\n}\n\nexport function* searchForSelectedPublications({ payload: { targetView } }) {\n const selectedPublicationIds = yield select(Selectors.getSelectedPublicationIds)\n const allPublication = yield select(Selectors.getPublications)\n const selectedPublication = selectedPublicationIds\n .map(id => allPublication.find(publication => publication.get('id') === id))\n .toJS()\n .map(filter => ({ filter: fromJS(filter), field: SearchFields.PUBLICATIONS }))\n\n yield put(uiAddFilters(selectedPublication))\n yield take(newsRequestSuccess)\n yield put(setNewsView(targetView))\n}\n\nexport function* setSortBy() {\n yield put(Actions.publicationsRequestStart())\n}\n\nexport function* watchFetchPublications() {\n yield takeLatest(Actions.publicationsRequestStart, fetchPublications)\n}\n\nexport function* watchFetchMorePublications() {\n yield takeEvery(Actions.morePublicationsRequestStart, fetchMorePublications)\n}\n\nexport function* watchSetSortBy() {\n yield takeEvery(Actions.setSortBy, setSortBy)\n}\n\nexport function* watchSearchForPublication() {\n yield takeLatest(Actions.searchForPublication, searchForPublication)\n}\n\nexport function* watchSearchForSelectedPublications() {\n yield takeLatest(Actions.searchForSelectedPublications, searchForSelectedPublications)\n}\n\nexport function* watchCreatePublication() {\n yield takeEvery(Actions.createPublicationStart, createPublication)\n}\n\nexport default function* saga() {\n yield all([\n watchFetchPublications(),\n watchFetchMorePublications(),\n watchSetSortBy(),\n watchCreatePublication(),\n watchSearchForPublication(),\n watchSearchForSelectedPublications()\n ])\n}\n","import { call, put, takeEvery, takeLatest, all, select, debounce, delay } from 'redux-saga/effects'\nimport moment from 'moment-timezone'\n\nimport * as Actions from 'actions/saved_dashboard'\nimport * as AppActions from 'actions/app'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport { determineMomentLocale } from 'utils/locale'\nimport { uploadPhoto } from 'utils/sagas'\n\nexport function* fetchSavedDashboard({ payload: urlName }) {\n try {\n const result = yield call(Api.fetchSavedDashboard, encodeURI(urlName))\n\n yield put(Actions.fetchSavedDashboardSuccess(result))\n\n const autoReload = yield select(Selectors.getSavedDashboardAutoReload)\n\n if (!autoReload) {\n yield put(Actions.startAutoReload(urlName))\n }\n } catch (error) {\n yield put(Actions.fetchSavedDashboardError(error))\n\n if (!(error.response && error.response.statusCode === 404)) {\n yield put(AppActions.exception(error))\n }\n }\n}\n\nexport function* fetchSavedDashboardInfo() {\n try {\n const selectedDashboard = yield select(Selectors.getSelectedDashboard)\n const result = yield call(Api.fetchSavedDashboardInfo, selectedDashboard.get('id'))\n\n yield put(Actions.fetchSavedDashboardInfoSuccess(result))\n } catch (error) {\n yield put(Actions.fetchSavedDashboardInfoError(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* saveSavedDashboard() {\n try {\n const selectedDashboard = yield select(Selectors.getSelectedDashboard)\n const config = yield select(Selectors.getSavedDashboardUi)\n\n const uploadedHeaderLogoLeft = config.get('uploadedHeaderLogoLeft')\n const headerLogoLeftUrl = yield call(uploadPhoto, uploadedHeaderLogoLeft)\n\n const uploadedHeaderLogoRight = config.get('uploadedHeaderLogoRight')\n const headerLogoRightUrl = yield call(uploadPhoto, uploadedHeaderLogoRight)\n\n const body = {\n id: selectedDashboard.get('id'),\n url_name: config.get('urlName'),\n timezone: config.get('timezone'),\n dark_mode: config.get('darkMode'),\n auto_scroll: config.get('autoScroll'),\n hide_share_menu: config.get('hideShareMenu'),\n hide_footer: config.get('hideFooter'),\n disable_cookies: config.get('disableCookies'),\n locale: config.get('locale'),\n header_logo_left_url: headerLogoLeftUrl || config.get('headerLogoLeftUrl'),\n header_logo_left_link: config.get('headerLogoLeftLink'),\n header_logo_right_url: headerLogoRightUrl || config.get('headerLogoRightUrl'),\n header_logo_right_link: config.get('headerLogoRightLink'),\n header_title: config.get('headerTitle'),\n header_subtitle: config.get('headerSubtitle'),\n header_background_color: config.get('headerBackgroundColor')\n }\n\n const result = yield call(Api.createSavedDashboard, body)\n\n yield put(Actions.saveSavedDashboardSuccess(result))\n yield put(Actions.hideSavedDashboardDialog())\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(Actions.saveSavedDashboardError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* deleteSavedDashboard() {\n try {\n const selectedDashboard = yield select(Selectors.getSelectedDashboard)\n const result = yield call(Api.deleteSavedDashboard, selectedDashboard.get('id'))\n\n yield put(Actions.deleteSavedDashboardSuccess(result))\n } catch (error) {\n yield put(Actions.deleteSavedDashboardError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* checkUrlName() {\n try {\n const selectedDashboard = yield select(Selectors.getSelectedDashboard)\n const urlName = yield select(Selectors.getSavedDashboardUrlName)\n\n const body = {\n id: selectedDashboard.get('id'),\n url_name: urlName\n }\n\n const result = yield call(Api.checkSavedDashboardUrlName, body)\n\n yield put(Actions.checkUrlNameSuccess(result))\n } catch (error) {\n yield put(Actions.checkUrlNameError(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* showSavedDashboardDialog() {\n yield put(Actions.fetchSavedDashboardInfoStart())\n}\n\nexport function* startAutoReload({ payload: urlName }) {\n for (;;) {\n yield delay(300000)\n yield put(Actions.fetchSavedDashboardStart(urlName))\n }\n}\n\nexport function* setSavedDashboardValue({ payload: { key } }) {\n if (key === 'urlName') {\n yield put(Actions.checkUrlNameStart())\n }\n}\n\nexport function* fetchSavedDashboardSuccess({ payload: { locale, timezone } }) {\n const momentLocale = determineMomentLocale(locale, locale, timezone)\n\n yield call(moment.locale, momentLocale)\n}\n\nexport function* watchFetchSavedDashboard() {\n yield takeLatest(Actions.fetchSavedDashboardStart, fetchSavedDashboard)\n}\n\nexport function* watchFetchSavedDashboardInfo() {\n yield takeEvery(Actions.fetchSavedDashboardInfoStart, fetchSavedDashboardInfo)\n}\n\nexport function* watchShowSavedDashboardDialog() {\n yield takeEvery(Actions.showSavedDashboardDialog, showSavedDashboardDialog)\n}\n\nexport function* watchSaveSavedDashboard() {\n yield takeEvery(Actions.saveSavedDashboardStart, saveSavedDashboard)\n}\n\nexport function* watchDeleteSavedDashboard() {\n yield takeEvery(Actions.deleteSavedDashboardStart, deleteSavedDashboard)\n}\n\nexport function* watchCheckUrlName() {\n yield takeEvery(Actions.checkUrlNameStart, checkUrlName)\n}\n\nexport function* watchSetSavedDashboardValue() {\n yield debounce(500, Actions.setSavedDashboardValue, setSavedDashboardValue)\n}\n\nexport function* watchStartAutoReload() {\n yield takeEvery(Actions.startAutoReload, startAutoReload)\n}\n\nexport function* watchFetchSavedDashboardSuccess() {\n yield takeEvery(Actions.fetchSavedDashboardSuccess, fetchSavedDashboardSuccess)\n}\n\nexport default function* saga() {\n yield all([\n watchFetchSavedDashboard(),\n watchFetchSavedDashboardInfo(),\n watchShowSavedDashboardDialog(),\n watchSaveSavedDashboard(),\n watchDeleteSavedDashboard(),\n watchCheckUrlName(),\n watchSetSavedDashboardValue(),\n watchStartAutoReload(),\n watchFetchSavedDashboardSuccess()\n ])\n}\n","import { call, put, takeEvery, all, select, race, delay, take } from 'redux-saga/effects'\nimport moment from 'moment-timezone'\nimport decamelizeKeysDeep from 'decamelize-keys-deep'\n\nimport * as Actions from 'actions/saved_charts'\nimport * as AppActions from 'actions/app'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport { determineMomentLocale, getLocale } from 'utils/locale'\nimport { navigate } from 'actions/navigation'\n\nexport function* fetchSavedChart({ payload: { id, locale: localeFromParams, timezone: timezoneFromParams } }) {\n try {\n const timezone = yield select(Selectors.getTimezone)\n const locale = yield call(getLocale)\n const result = yield call(Api.fetchSavedChart, id, timezoneFromParams || timezone, localeFromParams || locale)\n\n yield put(Actions.fetchSavedChartSuccess(result))\n } catch (error) {\n yield put(Actions.fetchSavedChartError({ error, id }))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* createSavedChart({ payload: chart }) {\n try {\n const timezone = yield select(Selectors.getTimezone)\n\n const body = {\n chart: JSON.stringify(decamelizeKeysDeep(chart.delete('data').toJS())),\n expires_at: moment().add(1, 'years').toISOString(),\n timezone\n }\n\n const result = yield call(Api.createSavedChart, body)\n\n yield put(Actions.createSavedChartSuccess(result))\n yield put(Actions.showDialog())\n } catch (error) {\n yield put(Actions.createSavedChartError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* deleteSavedChart({ payload: savedChart }) {\n try {\n const id = savedChart.get('id')\n const i18n = yield select(Selectors.getI18n)\n\n yield put(Actions.deleteSavedChartSuccess(id))\n yield put(AppActions.showUndo())\n yield put(AppActions.genericSuccessMessage())\n\n const { undo } = yield race({\n undo: take(AppActions.undo),\n deleteIt: delay(10000)\n })\n\n yield put(AppActions.hideUndo())\n\n if (undo) {\n yield put(Actions.createSavedChartSuccess(savedChart))\n yield put(AppActions.showAppMessage({ text: i18n.get('undone') }))\n } else {\n yield call(Api.deleteSavedChart, id)\n\n yield put(Actions.deleteSavedChartSuccess(id))\n }\n } catch (error) {\n yield put(Actions.deleteSavedChartError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* updateSavedChart({ payload: savedChart }) {\n try {\n const body = {\n expires_at: savedChart.get('expiresAt')\n }\n\n const result = yield call(Api.updateSavedChart, savedChart.get('id'), body)\n\n yield put(Actions.updateSavedChartSuccess(result))\n yield put(Actions.hideDialog())\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(Actions.updateSavedChartError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* discardSavedChart({ payload: savedChart }) {\n try {\n yield call(Api.deleteSavedChart, savedChart.get('id'))\n\n yield put(Actions.discardSavedChartSuccess(savedChart.get('id')))\n yield put(Actions.hideDialog())\n } catch (error) {\n yield put(Actions.discardSavedChartError(error))\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* fetchSavedChartSuccess({ payload: { locale, timezone } }) {\n const momentLocale = determineMomentLocale(locale, locale, timezone)\n\n yield call(moment.locale, momentLocale)\n}\n\nexport function* goToAdministration() {\n yield put(navigate('/app/administration/saved_charts'))\n yield put(Actions.hideDialog())\n}\n\nexport function* watchFetchSavedChart() {\n yield takeEvery(Actions.fetchSavedChartStart, fetchSavedChart)\n}\n\nexport function* watchFetchSavedChartSuccess() {\n yield takeEvery(Actions.fetchSavedChartSuccess, fetchSavedChartSuccess)\n}\n\nexport function* watchCreateSavedChart() {\n yield takeEvery(Actions.createSavedChartStart, createSavedChart)\n}\n\nexport function* watchDeleteSavedChart() {\n yield takeEvery(Actions.deleteSavedChartStart, deleteSavedChart)\n}\n\nexport function* watchUpdateSavedChart() {\n yield takeEvery(Actions.updateSavedChartStart, updateSavedChart)\n}\n\nexport function* watchDiscardSavedChart() {\n yield takeEvery(Actions.discardSavedChartStart, discardSavedChart)\n}\n\nexport function* watchGoToAdministration() {\n yield takeEvery(Actions.goToAdministration, goToAdministration)\n}\n\nexport default function* saga() {\n yield all([\n watchFetchSavedChart(),\n watchFetchSavedChartSuccess(),\n watchCreateSavedChart(),\n watchDeleteSavedChart(),\n watchUpdateSavedChart(),\n watchDiscardSavedChart(),\n watchGoToAdministration()\n ])\n}\n","const action = fun => {\n try {\n return fun()\n } catch(e) { // eslint-disable-line\n return null\n }\n}\nexport const setItem = (key, value) => action(() => global.localStorage.setItem(key, value))\nexport const getItem = key => action(() => global.localStorage.getItem(key))\nexport const removeItem = key => action(() => global.localStorage.removeItem(key))\nexport const clear = () => action(() => global.localStorage.clear())\n","import { put, select, call, takeEvery, all } from 'redux-saga/effects'\nimport { fromJS, List, Set } from 'immutable'\nimport moment from 'moment-timezone'\nimport { CustomTagsNewsTypes } from 'static/constants'\n\nimport * as Actions from 'actions/shopping_cart'\nimport * as NewsActions from 'actions/news'\nimport * as CustomTagActions from 'actions/custom_tags'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/bff'\nimport * as LocalStorage from 'utils/localStorage'\nimport * as AppActions from 'actions/app'\nimport { back } from 'actions/navigation'\nimport { listChunk, listUniqueById } from 'utils/immutable'\nimport { getCluster } from 'utils/sagas'\nimport { sortGroupedNews } from 'utils/sorting'\nimport { multiSelect } from 'utils/multiselect'\n\nconst sortLast = 'zzzzzzzzzzzzz'\n\nexport function* buildLocalStorageKey(suffix = '') {\n const newsradarId = yield select(Selectors.getNewsradarId)\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n\n if (newsradarId && moduleName) {\n return [`shopping_cart:${moduleName}:${newsradarId}`, suffix].filter(s => s).join(':')\n }\n\n return null\n}\n\nexport function* fetchNews({ payload: recalculate }) {\n try {\n const newsIdsList = yield select(Selectors.getShoppingCartNewsIds)\n const indexType = yield select(Selectors.getViewConfigIndexType)\n const key = yield call(buildLocalStorageKey)\n const minDate = yield call(LocalStorage.getItem, `${key}:min_date`)\n const maxDate = yield call(LocalStorage.getItem, `${key}:max_date`)\n\n const body = {\n news_ids: newsIdsList.toJS(),\n index_type: indexType,\n article_date_from: minDate,\n article_date_to: maxDate\n }\n\n const result = yield call(Api.searchByIds, body)\n const news = fromJS(result)\n\n yield put(NewsActions.addNews(news))\n yield put(Actions.fetchNewsSuccess(news))\n\n if (recalculate !== false) {\n yield put(Actions.recalculateGroupedSorting())\n }\n } catch (error) {\n yield put(Actions.fetchNewsError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n } finally {\n yield put(AppActions.setAppReady())\n }\n}\n\nexport function* addAllNewsToShoppingCart() {\n try {\n let body = yield select(Selectors.getSearchBody)\n body = {\n ...body,\n from: 0,\n size: 1000,\n use_global_size: true,\n news: {\n ...body.news,\n booleans: {\n ...body.news.booleans,\n with_inner_hits: true\n }\n }\n }\n const result = yield call(Api.search, body)\n const news = fromJS(result.groups).reduce((acc, group) => acc.concat(group.get('news')), fromJS([]))\n yield put(NewsActions.addNews(news))\n const newsIds = Set(news.map(n => n.get('id'))).toJS()\n yield put(Actions.fetchClusterForShoppingCartStart(newsIds))\n yield put(Actions.recalculateGroupedSorting())\n } catch (error) {\n yield put(Actions.addAllNewsToShoppingCartError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* fetchClusterForShoppingCart({ payload: newsIds }) {\n try {\n const ids = fromJS(newsIds)\n let fetchedNews = fromJS([])\n for (let i = 0; i < ids.size; i += 1) {\n const newsId = ids.get(i)\n let news = yield select(Selectors.getNewsById, newsId)\n\n if (news.get('clusterSize') > 1 && news.get('clusteredNews').size === 0) {\n const clusteredNews = yield call(getCluster, news)\n\n news = news.set('clusteredNews', clusteredNews)\n }\n\n fetchedNews = fetchedNews.push(news)\n }\n\n yield put(NewsActions.addNews(fetchedNews))\n yield put(Actions.fetchClusterForShoppingCartSuccess(fetchedNews))\n yield put(Actions.recalculateGroupedSorting(fetchedNews))\n } catch (error) {\n yield put(Actions.fetchClusterForShoppingCartError(error))\n yield put(AppActions.exception(error))\n yield put(AppActions.genericErrorMessage())\n }\n}\n\nexport function* pinAll({ payload: { customTag, action } }) {\n try {\n const i18n = yield select(Selectors.getI18n)\n const moduleName = yield select(Selectors.getViewConfigModuleName)\n let news = yield select(Selectors.getShoppingCartSelectedNewsObjects)\n\n if (news.isEmpty()) {\n news = yield select(Selectors.getShoppingCartNews)\n }\n\n news = news.toList()\n\n const newsIncludingClusters = news.reduce((acc, n) => {\n const cn = n.get('clusteredNews') || fromJS([])\n\n return acc.concat(cn.push(n))\n }, List())\n\n const chunkCount = Math.ceil(newsIncludingClusters.size / 100)\n const chunks = listChunk(newsIncludingClusters, chunkCount)\n\n yield put(AppActions.setAppBarMessage(i18n.get('pinning_progress', { progress: '0%' })))\n\n let changedCount = 0\n for (let i = 0; i < chunks.size; i += 1) {\n const chunkNews = chunks.get(i)\n\n let progress = `${Math.ceil(((i + 1) / chunks.size) * 100)}%`\n yield put(AppActions.setAppBarMessage(i18n.get('pinning_progress', { progress })))\n\n const data = chunkNews.map(n => (fromJS({\n news_id: n.get('id'),\n article_date: n.get('articleDate'),\n [`${action === 'unpin' ? '-' : '+'}custom_tag_ids`]: [customTag.get('id')]\n })))\n\n yield call(Api.assignCustomTagToNews, { data, news_type: CustomTagsNewsTypes[moduleName] })\n\n changedCount += data.size\n\n progress = `${Math.ceil(((i + 1) / chunks.size) * 100)}%`\n yield put(AppActions.setAppBarMessage(i18n.get('pinning_progress', { progress })))\n }\n\n const newTag = customTag.update('newsCount', count => count + (action === 'unpin' ? -changedCount : changedCount))\n\n news = news.map(n => n.update('customTags', customTags => {\n if (action === 'unpin') {\n return customTags.filter(c => c.get('id') !== newTag.get('id'))\n }\n\n return customTags.push(newTag)\n }))\n\n yield put(NewsActions.updateNews(news))\n yield put(AppActions.setAppBarMessage(null))\n yield put(Actions.pinAllSuccess({ customTag, pinnedCount: news.size }))\n yield put(AppActions.genericSuccessMessage())\n } catch (error) {\n yield put(AppActions.setAppBarMessage(null))\n yield put(Actions.pinAllError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* unpinAll({ payload: { customTag } }) {\n yield call(pinAll, { payload: { customTag, action: 'unpin' } })\n}\n\nexport function* resetShoppingCart({ payload }) {\n const { navigateBack } = (payload || {})\n\n const mainNewsIds = yield select(Selectors.getShoppingCartMainNewsIds)\n yield put(Actions.removeNewsFromShoppingCart(mainNewsIds))\n\n if (navigateBack) {\n yield put(back())\n }\n}\n\nexport function* addNewsToShoppingCart({ payload }) {\n yield put(Actions.fetchClusterForShoppingCartStart(payload))\n}\n\nexport function* sortBy({ payload: { field, order } }) {\n let newCodes\n\n if (field === 'topic') {\n const codes = yield select(Selectors.getShoppingCartCodesRaw)\n newCodes = codes.sortBy(code => code.get('sortcode') || sortLast)\n\n if (order === 'desc') {\n newCodes = newCodes.reverse()\n }\n } else {\n const codes = yield select(Selectors.getShoppingCartCodes)\n\n const isPublicationField = ['publicationName', 'channelId'].indexOf(field) !== -1\n const isCountryField = field === 'country'\n const isKeyFiguresField = ['reach', 'interactions'].indexOf(field) !== -1\n\n let pathToSortingField = [field]\n let type = 'string'\n\n if (isPublicationField) {\n pathToSortingField = ['publication', field === 'publicationName' ? 'name' : field]\n }\n\n if (isCountryField) {\n pathToSortingField = ['publication', 'country', 'name']\n }\n\n if (isKeyFiguresField) {\n pathToSortingField = ['keyFigures', field]\n type = 'number'\n }\n\n newCodes = sortGroupedNews(codes, pathToSortingField, order, type)\n }\n\n yield put(Actions.setCodes(newCodes))\n}\n\nexport function* sortByUngrouped({ payload: { field, order } }) {\n const news = yield select(Selectors.getShoppingCartNews)\n const newsClusters = yield select(Selectors.getShoppingCartNewsIds)\n\n const newNews = news.sortBy(n => {\n if (['publicationName', 'channelId'].indexOf(field) !== -1) {\n return (n.getIn(['publication', field === 'publicationName' ? 'name' : field]) || sortLast).toString().toLowerCase()\n }\n\n if (field === 'country') {\n return (n.getIn(['publication', 'country', 'name']) || sortLast).toString().toLowerCase()\n }\n\n if (['reach', 'interactions'].indexOf(field) !== -1) {\n return n.getIn(['keyFigures', field]) || 0\n }\n\n return (n.get(field) || sortLast).toLowerCase()\n }).map(n => n.get('id'))\n\n let result = newsClusters.sortBy(cluster => newNews.indexOf(cluster.first()))\n\n if (order === 'desc') {\n result = result.reverse()\n }\n\n yield put(Actions.setNews(result))\n}\n\nexport function* recalculateGroupedSorting(action) {\n if (action && action.payload) {\n const codes = yield select(Selectors.getShoppingCartCodesRaw)\n let newCodes = codes\n\n action.payload.forEach(updatedNews => {\n const updatedNewsHasCode = code => updatedNews.get('codes').some(c => c.get('id') === code.get('id'))\n const codeHasUpdatedNews = code => code.get('news').includes(updatedNews.get('id'))\n\n let newNewCodes = newCodes.map(code => {\n if (codeHasUpdatedNews(code) && !updatedNewsHasCode(code)) {\n return code.update('news', news => news.filter(id => id !== updatedNews.get('id')))\n }\n\n if (!codeHasUpdatedNews(code) && updatedNewsHasCode(code)) {\n return code.update('news', news => news.push(updatedNews.get('id')))\n }\n\n return code\n })\n\n const codesToAdd = updatedNews\n .get('codes')\n .filter(code => !newNewCodes.some(c => c.get('id') === code.get('id')))\n .map(code => code.merge({\n showNews: true,\n news: fromJS([updatedNews.get('id')])\n }))\n\n let lastCode = newCodes.last()\n\n if (lastCode && lastCode.get('id') === null) {\n newNewCodes = newNewCodes\n .filter(code => code.get('id') !== null)\n .concat(codesToAdd)\n\n if (updatedNews.get('codes').isEmpty()) {\n lastCode = lastCode.update('news', news => news.push(updatedNews.get('id')))\n } else {\n lastCode = lastCode.update('news', news => news.filter(n => n !== updatedNews.get('id')))\n }\n\n newNewCodes = newNewCodes.push(lastCode)\n } else {\n newNewCodes = newNewCodes.concat(codesToAdd)\n\n if (updatedNews.get('codes').isEmpty()) {\n newNewCodes = newNewCodes.push(fromJS({\n id: null,\n showNews: true,\n news: [updatedNews.get('id')]\n }))\n }\n }\n\n newCodes = newNewCodes.filter(code => !code.get('news').isEmpty())\n })\n\n const isShoppingCart = yield select(Selectors.isShoppingCart)\n\n if (!isShoppingCart) {\n newCodes = newCodes.map(code => code.set('showNews', false))\n yield put(Actions.checkShoppingCartSize(newCodes))\n } else {\n yield put(Actions.setCodes(newCodes))\n }\n } else {\n const news = yield select(Selectors.getShoppingCartNews)\n\n const addNewsToCode = (n, code) => code.set('news', (\n n.filter(nn => nn.get('codes').find(c => c.get('id') === code.get('id'))).map(nn => nn.get('id'))\n ))\n const extractCodesFromNews = n => n.flatMap(nn => nn.get('codes')).sortBy(c => c.get('sortcode'))\n\n let codes = extractCodesFromNews(news)\n codes = listUniqueById(codes)\n .map(code => code.set('showNews', (!(news.size > 50))))\n .map(code => addNewsToCode(news, code))\n\n const ungroupedNews = news.filter(n => n.get('codes').isEmpty())\n\n if (!ungroupedNews.isEmpty()) {\n codes = codes.push(fromJS({\n id: null,\n showNews: (!(news.size > 50)),\n news: ungroupedNews.map(n => n.get('id'))\n }))\n }\n\n yield put(Actions.setCodes(codes))\n }\n}\n\nexport function* removeNews({ payload }) {\n const newPayload = fromJS(payload)\n const newsIds = List.isList(newPayload) ? newPayload : newPayload.get('newsIds')\n const shoppingCartNewsIds = yield select(Selectors.getShoppingCartFlatNewsIds)\n\n yield put(NewsActions.decrementReferences(newsIds.filter(id => !shoppingCartNewsIds.includes(id))))\n}\n\nexport function* saveToLocalStorage() {\n let data = yield select(Selectors.getShoppingCartData)\n const customTag = yield select(Selectors.getShoppingCartCustomTag)\n\n if (!customTag.get('id')) {\n data = JSON.stringify(data)\n const news = yield select(Selectors.getAllShoppingCartNews)\n const key = yield call(buildLocalStorageKey)\n\n const sorted = news.map(n => n.get('articleDate')).sort()\n const minDate = sorted.first()\n const maxDate = sorted.last()\n\n if (minDate) {\n yield call(LocalStorage.setItem, `${key}:min_date`, moment(minDate).startOf('day').format())\n }\n\n if (maxDate) {\n yield call(LocalStorage.setItem, `${key}:max_date`, moment(maxDate).endOf('day').format())\n }\n\n yield call(LocalStorage.setItem, key, data)\n }\n}\n\nexport function* removeFromLocalStorage() {\n const key = yield call(buildLocalStorageKey)\n\n yield call(LocalStorage.removeItem, key)\n}\n\nexport function* loadFromLocalStorage({ payload: setBusy }) {\n try {\n const key = yield call(buildLocalStorageKey)\n let data = yield call(LocalStorage.getItem, key)\n\n if (data) {\n data = fromJS(JSON.parse(data))\n\n if (data.get('news').size) {\n if (setBusy !== false) {\n yield put(AppActions.setAppBusy())\n }\n\n yield put(Actions.setCodes(data.get('codes')))\n yield put(Actions.setNews(data.get('news')))\n yield put(Actions.fetchNewsStart(false))\n } else {\n yield put(Actions.resetShoppingCart({ navigateBack: false }))\n }\n } else if (key) {\n yield put(Actions.resetShoppingCart({ navigateBack: false }))\n }\n } catch (error) {\n yield put(AppActions.exception(error))\n yield put(AppActions.setAppReady())\n }\n}\n\nexport function* shiftSelectNewsForSorting({ payload: { newsIds, isReplace, keyPress } }) {\n const codeId = newsIds.first().get('codeId')\n let newsByCodeId\n\n if (codeId === undefined) {\n newsByCodeId = yield select(Selectors.getShoppingCartNews)\n } else {\n newsByCodeId = yield select(Selectors.getShoppingCartNewsByCodeId, codeId)\n }\n\n const selectedNews = yield select(Selectors.getShoppingCartSelectedNewsForSorting)\n\n if (selectedNews.isEmpty()) {\n yield put(Actions.selectNewsForSorting({ news: newsIds, isReplace, keyPress }))\n } else {\n const shiftSelection = yield call(multiSelect, selectedNews, newsByCodeId, newsIds)\n yield put(Actions.selectNewsForSorting({ news: shiftSelection, isReplace, keyPress }))\n }\n}\n\nexport function* checkShoppingCartSize({ payload }) {\n const newsCount = payload.map(code => code.get('news')).flatten().size\n const newPayload = payload.map(code => code.set('showNews', (!(newsCount > 100)) || payload.size === 1))\n yield put(Actions.setCodes(newPayload))\n}\n\nexport function* showClusterDialog() {\n yield put(Actions.fetchReorderClusteredNewsStart())\n}\n\nexport function* fetchReorderClusteredNews() {\n try {\n const newsIds = yield select(Selectors.getShoppingCartClusterNewsIds)\n const indexType = yield select(Selectors.getViewConfigIndexType)\n const key = yield call(buildLocalStorageKey)\n const minDate = yield call(LocalStorage.getItem, `${key}:min_date`)\n const maxDate = yield call(LocalStorage.getItem, `${key}:max_date`)\n\n const body = {\n news_ids: newsIds.map(id => [id]).toJS(),\n index_type: indexType,\n article_date_from: minDate,\n article_date_to: maxDate\n }\n\n const result = yield call(Api.searchByIds, body)\n\n yield put(Actions.fetchReorderClusteredNewsSuccess(result))\n } catch (error) {\n yield put(Actions.fetchReorderClusteredNewsError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* replaceCluster({ payload: { news } }) {\n yield put(NewsActions.addNews(news))\n}\n\nconst mapCodeNewsPairs = (codeId, newsIds) => newsIds.map(n => (codeId === undefined ? String(n) : `${codeId}_${n}`))\n\nexport function* selectNews({ payload: { codeId, newsIds, omitIntersection } }) {\n let codeNewsIdPairs = mapCodeNewsPairs(codeId, newsIds)\n\n let selectedNews = yield select(Selectors.getShoppingCartSelectedNews)\n const tabIndex = yield select(Selectors.getShoppingCartTabIndex)\n\n let allCodeNewsIdPairs\n\n if (tabIndex === 0) {\n const newsClusterIds = yield select(Selectors.getNewsClusterIdsOfAllCodesInShoppingCart)\n\n allCodeNewsIdPairs = newsClusterIds\n .map(pair => mapCodeNewsPairs(pair.get('codeId'), pair.get('newsIds')))\n .flatten(true)\n } else {\n const newsClusterIds = yield select(Selectors.getShoppingCartFlatNewsIds)\n\n allCodeNewsIdPairs = mapCodeNewsPairs(undefined, newsClusterIds)\n }\n\n if (selectedNews.isEmpty()) {\n codeNewsIdPairs = allCodeNewsIdPairs.filterNot(c => codeNewsIdPairs.includes(c))\n }\n\n yield put(Actions.setSelectedNews({ codeNewsIdPairs, omitIntersection }))\n\n selectedNews = yield select(Selectors.getShoppingCartSelectedNews)\n\n if (selectedNews.size === allCodeNewsIdPairs.size) {\n yield put(Actions.resetNewsSelection())\n }\n}\n\nexport function* invertNewsSelection() {\n const selectedNews = yield select(Selectors.getShoppingCartSelectedNews)\n const tabIndex = yield select(Selectors.getShoppingCartTabIndex)\n\n let allCodeNewsIdPairs\n\n if (tabIndex === 0) {\n const newsClusterIds = yield select(Selectors.getNewsClusterIdsOfAllCodesInShoppingCart)\n\n allCodeNewsIdPairs = newsClusterIds\n .map(pair => mapCodeNewsPairs(pair.get('codeId'), pair.get('newsIds')))\n .flatten(true)\n } else {\n const newsClusterIds = yield select(Selectors.getShoppingCartFlatNewsIds)\n\n allCodeNewsIdPairs = mapCodeNewsPairs(undefined, newsClusterIds)\n }\n\n const codeNewsIdPairs = allCodeNewsIdPairs.filterNot(c => selectedNews.includes(c))\n\n yield put(Actions.resetNewsSelection())\n yield put(Actions.setSelectedNews({ codeNewsIdPairs }))\n}\n\nexport function* setCustomTagId({ payload: customTagId }) {\n try {\n if (customTagId) {\n yield put(Actions.setRunning(true))\n const customTag = yield select(Selectors.getShoppingCartCustomTag)\n const indexType = yield select(Selectors.getViewConfigIndexType)\n const body = {\n news: {\n booleans: {\n global_clusters: true,\n with_inner_hits: true\n }\n },\n size: 1000,\n index_type: indexType\n }\n\n const result = yield call(Api.fetchNewsForCustomTag, customTag.get('id'), body)\n\n yield put(NewsActions.addNews(result.news))\n\n const newsIds = result.news.map(n => n.id)\n\n yield put(Actions.resetShoppingCart())\n yield put(Actions.addNewsToShoppingCart(newsIds))\n yield put(CustomTagActions.fetchNewsForCustomTagSuccess(result))\n }\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n } finally {\n yield put(Actions.setRunning(false))\n }\n}\n\nexport function* watchFetchNews() {\n yield takeEvery(Actions.fetchNewsStart, fetchNews)\n}\n\nexport function* watchPinAll() {\n yield takeEvery(Actions.pinAllStart, pinAll)\n}\n\nexport function* watchUnpinAll() {\n yield takeEvery(Actions.unpinAll, unpinAll)\n}\n\nexport function* watchAddAllNewsToShoppingCart() {\n yield takeEvery(Actions.addAllNewsToShoppingCartStart, addAllNewsToShoppingCart)\n}\n\nexport function* watchResetShoppingCart() {\n yield takeEvery(Actions.resetShoppingCart, resetShoppingCart)\n}\n\nexport function* watchAddNewsToShoppingCart() {\n yield takeEvery(Actions.addNewsToShoppingCart, addNewsToShoppingCart)\n}\n\nexport function* watchSortBy() {\n yield takeEvery(Actions.sortBy, sortBy)\n}\n\nexport function* watchSortByUngrouped() {\n yield takeEvery(Actions.sortByUngrouped, sortByUngrouped)\n}\n\nexport function* watchRecalculateGroupedSorting() {\n yield takeEvery(Actions.recalculateGroupedSorting, recalculateGroupedSorting)\n}\n\nexport function* watchRemoveNews() {\n yield takeEvery(Actions.removeNewsFromShoppingCart, removeNews)\n}\n\nexport function* watchFetchClusterForShoppingCart() {\n yield takeEvery(Actions.fetchClusterForShoppingCartStart, fetchClusterForShoppingCart)\n}\n\nexport function* watchSaveToLocalStorage() {\n yield takeEvery(Actions.removeNewsFromShoppingCart, saveToLocalStorage)\n yield takeEvery(Actions.moveNewsInShoppingCart, saveToLocalStorage)\n yield takeEvery(Actions.moveNewsInShoppingCartSublist, saveToLocalStorage)\n yield takeEvery(Actions.moveCodeInShoppingCart, saveToLocalStorage)\n yield takeEvery(Actions.setCodes, saveToLocalStorage)\n yield takeEvery(Actions.setNews, saveToLocalStorage)\n yield takeEvery(Actions.toggleNewsList, saveToLocalStorage)\n yield takeEvery(Actions.expandAllNewsLists, saveToLocalStorage)\n yield takeEvery(Actions.collapseAllNewsLists, saveToLocalStorage)\n}\n\nexport function* watchLoadFromLocalStorage() {\n yield takeEvery(AppActions.loadFromLocalStorage, loadFromLocalStorage)\n}\n\nexport function* watchShiftSelectNewsForSorting() {\n yield takeEvery(Actions.shiftSelectNewsForSorting, shiftSelectNewsForSorting)\n}\n\nexport function* watchCheckShoppingCartSize() {\n yield takeEvery(Actions.checkShoppingCartSize, checkShoppingCartSize)\n}\n\nexport function* watchShowClusterDialog() {\n yield takeEvery(Actions.showClusterDialog, showClusterDialog)\n}\n\nexport function* watchFetchReorderClusteredNews() {\n yield takeEvery(Actions.fetchReorderClusteredNewsStart, fetchReorderClusteredNews)\n}\n\nexport function* watchReplaceCluster() {\n yield takeEvery(Actions.replaceCluster, replaceCluster)\n}\n\nexport function* watchSelectNews() {\n yield takeEvery(Actions.selectNews, selectNews)\n}\n\nexport function* watchInvertNewsSelection() {\n yield takeEvery(Actions.invertNewsSelection, invertNewsSelection)\n}\n\nexport function* watchSetCustomTagId() {\n yield takeEvery(Actions.setCustomTagId, setCustomTagId)\n}\n\nexport default function* shoppingCartSaga() {\n yield all([\n watchFetchNews(),\n watchFetchClusterForShoppingCart(),\n watchPinAll(),\n watchUnpinAll(),\n watchAddAllNewsToShoppingCart(),\n watchResetShoppingCart(),\n watchAddNewsToShoppingCart(),\n watchSortBy(),\n watchSortByUngrouped(),\n watchRecalculateGroupedSorting(),\n watchRemoveNews(),\n watchSaveToLocalStorage(),\n watchLoadFromLocalStorage(),\n watchShiftSelectNewsForSorting(),\n watchCheckShoppingCartSize(),\n watchShowClusterDialog(),\n watchFetchReorderClusteredNews(),\n watchReplaceCluster(),\n watchSelectNews(),\n watchInvertNewsSelection(),\n watchSetCustomTagId()\n ])\n}\n","import { call, put, takeEvery, all } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/news'\nimport * as Api from 'api/bff'\nimport { genericErrorMessage, exception } from 'actions/app'\n\nexport function* submitShopping({ payload: { news, shoppingOption } }) {\n try {\n const response = yield call(Api.submitShopping, news.get('id'), shoppingOption)\n\n if (response.acknowledged) {\n const newNews = news.set('orderStatus', 'ordered')\n yield put(Actions.updateNews([newNews]))\n yield put(Actions.submitShoppingSuccess())\n }\n } catch (error) {\n yield put(Actions.submitShoppingError(error))\n yield put(exception(error))\n yield put(genericErrorMessage())\n }\n}\n\nexport function* watchSubmitShopping() {\n yield takeEvery(Actions.submitShoppingStart, submitShopping)\n}\n\nexport default function* newsSaga() {\n yield all([\n watchSubmitShopping()\n ])\n}\n","import { call, put, select, takeEvery, throttle, all } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/subscriptions'\nimport * as Api from 'api/bff'\nimport { genericErrorMessage, showAppMessage, exception } from 'actions/app'\nimport {\n getSaveSubscriptionsBody,\n getAllowedStaticMediaReviewCodes,\n getStaticMediaReviewTopNewsCodeIds,\n getSelectedCodeFilters,\n getI18n\n} from 'selectors'\n\nexport function* saveSubscriptions() {\n try {\n const body = yield select(getSaveSubscriptionsBody)\n\n yield call(Api.saveSubscriptions, body)\n\n yield put(Actions.saveSubscriptionsSuccess())\n } catch (error) {\n yield put(Actions.saveSubscriptionsError(error))\n yield put(genericErrorMessage())\n yield put(exception(error))\n }\n}\n\nexport function* updateTopicSelection({ payload: { topic, selected } }) {\n yield put(Actions.saveSubscriptionsStart())\n const i18n = yield select(getI18n)\n\n if (selected) {\n yield put(showAppMessage({ text: `${topic.get('name')} ${i18n.get('added')}` }))\n } else {\n yield put(showAppMessage({ text: `${topic.get('name')} ${i18n.get('removed')}` }))\n }\n}\n\nexport function* updateEditionSelection({ payload: { edition, selected } }) {\n yield put(Actions.saveSubscriptionsStart())\n const i18n = yield select(getI18n)\n\n if (selected) {\n yield put(showAppMessage({ text: `${edition.get('name')} ${i18n.get('added')}` }))\n } else {\n yield put(showAppMessage({ text: `${edition.get('name')} ${i18n.get('removed')}` }))\n }\n}\n\nexport function* selectAllTopics() {\n const i18n = yield select(getI18n)\n const topics = yield select(getAllowedStaticMediaReviewCodes)\n const selectedCodeFilters = yield select(getSelectedCodeFilters)\n\n let filteredTopics = topics\n\n if (!selectedCodeFilters.isEmpty()) {\n filteredTopics = topics.filter(t => selectedCodeFilters.includes(t.get('id')) || t.get('topnews') === true)\n }\n\n const topicIds = filteredTopics.map(t => t.get('id'))\n yield put(Actions.setTopics(topicIds))\n yield put(Actions.saveSubscriptionsStart())\n yield put(showAppMessage({ text: i18n.get('all_topics_selected') }))\n}\n\nexport function* deselectAllTopics() {\n const i18n = yield select(getI18n)\n const topicIds = yield select(getStaticMediaReviewTopNewsCodeIds)\n yield put(Actions.setTopics(topicIds))\n yield put(Actions.saveSubscriptionsStart())\n yield put(showAppMessage({ text: i18n.get('all_topics_deselected') }))\n}\n\nexport function* watchSaveSubscriptions() {\n yield throttle(1000, Actions.saveSubscriptionsStart, saveSubscriptions)\n}\n\nexport function* watchUpdateTopicSelection() {\n yield takeEvery(Actions.updateTopicSelection, updateTopicSelection)\n}\n\nexport function* watchUpdateEditionSelection() {\n yield takeEvery(Actions.updateEditionSelection, updateEditionSelection)\n}\n\nexport function* watchSelectAllTopics() {\n yield takeEvery(Actions.selectAllTopics, selectAllTopics)\n}\n\nexport function* watchDeselectAllTopics() {\n yield takeEvery(Actions.deselectAllTopics, deselectAllTopics)\n}\n\nexport default function* subscriptionsSaga() {\n yield all([\n watchSaveSubscriptions(),\n watchUpdateTopicSelection(),\n watchUpdateEditionSelection(),\n watchSelectAllTopics(),\n watchDeselectAllTopics()\n ])\n}\n","/* global window */\nimport { put, call, takeEvery, select, all } from 'redux-saga/effects'\n\nimport * as FilterActions from 'actions/filter'\nimport * as NewsActions from 'actions/news'\nimport * as Actions from 'actions/ui'\nimport * as AppActions from 'actions/app'\nimport * as Selectors from 'selectors'\nimport { rangeToDates } from 'utils/date'\nimport { scrollToTop } from 'utils/scroll'\nimport * as Api from 'api/bff'\n\nexport function* uiSetSortBy({ payload }) {\n yield put(NewsActions.setSortBy(payload))\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* uiSetSortDirection({ payload }) {\n yield put(NewsActions.setSortDirection(payload))\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* uiEnteredQuery({ payload: query }) {\n if (query !== '') {\n let isValid = false\n let isTooComplex = false\n\n try {\n const indexType = yield select(Selectors.getViewConfigIndexType)\n let queries = yield select(Selectors.getNewsFiltersNewsQueries)\n queries = queries.map(q => q.get('value')).push(query)\n\n const body = {\n queries,\n index_type: indexType\n }\n\n const { valid, tooComplex } = yield call(Api.validate, body)\n\n isValid = valid\n isTooComplex = tooComplex || false\n } catch (e) {\n isValid = false\n }\n\n if (isValid) {\n const type = yield select(Selectors.getSelectedQueryType)\n const i18n = yield select(Selectors.getI18n)\n const prefix = yield call(i18n.get, type)\n\n const queries = query.split(',').map(q => q.trim()).filter(q => q)\n\n for (let i = 0; i < queries.length; i += 1) {\n yield put(FilterActions.addNewsQuery({\n query: queries[i],\n type,\n prefix\n }))\n }\n\n yield put(NewsActions.newsRequestStart())\n } else {\n const i18n = yield select(Selectors.getI18n)\n\n yield put(AppActions.showAppMessage({\n text: i18n.get(isTooComplex ? 'too_complex_query' : 'invalid_query'),\n success: false\n }))\n }\n } else {\n yield put(NewsActions.newsRequestStart())\n }\n}\n\nexport function* uiRemoveFilter({ payload: { index, field } }) {\n yield put(FilterActions.removeFilter({ index, field }))\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* uiInvertFilter({ payload: { index, field } }) {\n yield put(FilterActions.invertFilter({ index, field }))\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* uiAddFilters({ payload: filters }) {\n yield put(FilterActions.addFilters(filters))\n yield put(NewsActions.newsRequestStart())\n yield call(window.scrollTo, 0, 0)\n}\n\nexport function* uiReplaceFilters({ payload: filters }) {\n yield put(FilterActions.replaceFilters(filters))\n yield put(NewsActions.newsRequestStart())\n yield call(window.scrollTo, 0, 0)\n}\n\nexport function* uiApplyDateFilter({ payload: { dateFrom, dateTo, dateRange } }) {\n yield put(NewsActions.toggleDateForm(false))\n yield put(FilterActions.changeDate({ dateFrom, dateTo, dateRange }))\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* uiChooseQuickSelect({ payload: range }) {\n const { from, to } = yield call(rangeToDates, range)\n\n if (from || to) {\n yield put(Actions.uiApplyDateFilter({\n dateFrom: from,\n dateTo: to,\n dateRange: range\n }))\n }\n}\n\nexport function* uiApplyFilters() {\n yield put(NewsActions.toggleAdvancedSearch())\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* uiResetFilters({ payload: toggleForm }) {\n const globalClusterDefault = yield select(Selectors.getGlobalClusterDefault)\n yield put(FilterActions.resetFilters(globalClusterDefault))\n\n if (toggleForm === undefined || toggleForm) {\n yield put(NewsActions.toggleAdvancedSearch())\n }\n\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* uiResetFilterFields({ payload }) {\n yield put(FilterActions.resetFilterFields(payload))\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* toggleFilterForm() {\n const device = yield select(Selectors.getDevice)\n\n if (device.get('lt-lg')) {\n yield call(scrollToTop)\n }\n}\n\nexport function* uiSetBoolean(action) {\n yield put(FilterActions.setBoolean(action.payload))\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* uiUpdateFilter(action) {\n yield put(FilterActions.updateFilter(action.payload))\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* uiSetAnalysisFilter(action) {\n yield put(FilterActions.setAnalysisFilter(action.payload))\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* uiSwapAnalysisCodeSelectionAndGrouping() {\n yield put(FilterActions.swapAnalysisCodeSelectionAndGrouping())\n yield put(NewsActions.newsRequestStart())\n}\n\nexport function* watchUiSetSortBy() {\n yield takeEvery(Actions.uiSetSortBy, uiSetSortBy)\n}\n\nexport function* watchUiSetSortDirection() {\n yield takeEvery(Actions.uiSetSortDirection, uiSetSortDirection)\n}\n\nexport function* watchUiEnteredQuery() {\n yield takeEvery(Actions.uiEnteredQuery, uiEnteredQuery)\n}\n\nexport function* watchUiRemoveFilter() {\n yield takeEvery(Actions.uiRemoveFilter, uiRemoveFilter)\n}\n\nexport function* watchUiInvertFilter() {\n yield takeEvery(Actions.uiInvertFilter, uiInvertFilter)\n}\n\nexport function* watchUiAddFilters() {\n yield takeEvery(Actions.uiAddFilters, uiAddFilters)\n}\n\nexport function* watchUiReplaceFilters() {\n yield takeEvery(Actions.uiReplaceFilters, uiReplaceFilters)\n}\n\nexport function* watchUiApplyDateFilter() {\n yield takeEvery(Actions.uiApplyDateFilter, uiApplyDateFilter)\n}\n\nexport function* watchUiChooseQuickSelect() {\n yield takeEvery(Actions.uiChooseQuickSelect, uiChooseQuickSelect)\n}\n\nexport function* watchUiApplyFilters() {\n yield takeEvery(Actions.uiApplyFilters, uiApplyFilters)\n}\n\nexport function* watchUiResetFilters() {\n yield takeEvery(Actions.uiResetFilters, uiResetFilters)\n}\n\nexport function* watchUiResetFilterFields() {\n yield takeEvery(Actions.uiResetFilterFields, uiResetFilterFields)\n}\n\nexport function* watchToggleFilterForm() {\n yield takeEvery(NewsActions.toggleAdvancedSearch, toggleFilterForm)\n yield takeEvery(NewsActions.toggleDateForm, toggleFilterForm)\n}\n\nexport function* watchUiSetBoolean() {\n yield takeEvery(Actions.uiSetBoolean, uiSetBoolean)\n}\n\nexport function* watchUiUpdateFilter() {\n yield takeEvery(Actions.uiUpdateFilter, uiUpdateFilter)\n}\n\nexport function* watchUiSetAnalysisFilter() {\n yield takeEvery(Actions.uiSetAnalysisFilter, uiSetAnalysisFilter)\n}\n\nexport function* watchUiSwapAnalysisCodeSelectionAndGrouping() {\n yield takeEvery(Actions.uiSwapAnalysisCodeSelectionAndGrouping, uiSwapAnalysisCodeSelectionAndGrouping)\n}\n\nexport default function* appSaga() {\n yield all([\n watchUiSetSortBy(),\n watchUiSetSortDirection(),\n watchUiEnteredQuery(),\n watchUiRemoveFilter(),\n watchUiInvertFilter(),\n watchUiAddFilters(),\n watchUiReplaceFilters(),\n watchUiApplyDateFilter(),\n watchUiChooseQuickSelect(),\n watchUiApplyFilters(),\n watchUiResetFilters(),\n watchUiResetFilterFields(),\n watchToggleFilterForm(),\n watchUiSetBoolean(),\n watchUiUpdateFilter(),\n watchUiSetAnalysisFilter(),\n watchUiSwapAnalysisCodeSelectionAndGrouping()\n ])\n}\n","import { put, call, select, takeEvery, all, delay } from 'redux-saga/effects'\nimport moment from 'moment-timezone'\n\nimport * as Actions from 'actions/user'\nimport {\n showAppMessage,\n genericErrorMessage,\n genericSuccessMessage,\n setLoginMessage,\n loginRequestSuccess,\n exception\n} from 'actions/app'\nimport { navigate, backToLogin } from 'actions/navigation'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\n// import { setOption } from 'actions/ga'\nimport { saveCookie } from 'utils/cookieHelper'\nimport { determineMomentLocale } from 'utils/locale'\nimport * as ConfigActions from 'actions/config'\nimport { CookieNames } from 'static/constants'\n\nexport function* registerUser({ payload }) {\n try {\n const baseUrl = yield select(Selectors.getBaseUrl)\n const data = { ...payload, base_url: baseUrl }\n\n const result = yield call(Api.registerUser, data)\n yield put(Actions.registerUserRequestSuccess(result))\n } catch (error) {\n yield put(Actions.registerUserRequestError(error))\n\n yield put(exception(error))\n }\n}\n\nexport function* updateUser({ payload }) {\n const { oldPassword,\n newPassword,\n languageId,\n firstName,\n lastName,\n uploadedPhoto,\n darkMode,\n preferSummaries,\n globalClusterDefault,\n disableNotificationAlerts,\n preferMedia } = payload\n\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const user = yield select(Selectors.getUser)\n\n let photo = null\n\n if (uploadedPhoto) {\n const formData = [\n {\n key: 'file',\n value: uploadedPhoto\n }\n ]\n\n const { url } = yield call(Api.uploadFile, formData)\n photo = url\n }\n\n const body = {\n old_password: oldPassword,\n new_password: newPassword,\n language_id: languageId,\n first_name: firstName,\n last_name: lastName,\n dark_mode: darkMode,\n prefer_summaries: preferSummaries,\n global_cluster_default: globalClusterDefault,\n disable_notification_alerts: disableNotificationAlerts,\n prefer_media: preferMedia,\n photo\n }\n yield call(Api.updateUser, body, user.get('id'))\n\n yield put(Actions.updateUserRequestSuccess())\n\n if (languageId || darkMode !== undefined) {\n yield put(genericSuccessMessage())\n } else {\n yield put(showAppMessage({ text: i18n.get('password_change_success') }))\n }\n\n if (languageId) {\n yield put(ConfigActions.configRequestStart())\n }\n } catch (error) {\n yield put(Actions.updateUserRequestError(error))\n\n if (error.response.statusCode === 401) {\n yield put(showAppMessage({ text: i18n.get('password_old_wrong') }))\n } else {\n yield put(genericErrorMessage())\n }\n\n yield put(exception(error))\n }\n}\n\nexport function* forgotPassword({ payload: { email } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const search = yield select(Selectors.getSearchFromUrl)\n const baseUrl = yield select(Selectors.getBaseUrl)\n const from = yield select(Selectors.getWhitelabelEmailAddress)\n const logo = yield select(Selectors.getEmailLogo)\n const colors = yield select(Selectors.getWhitelabelColors)\n const body = {\n email,\n search,\n base_url: baseUrl,\n from,\n logo,\n color: colors.get('primary')\n }\n yield call(Api.forgotPassword, body)\n\n yield put(Actions.forgotPasswordRequestSuccess())\n yield put(setLoginMessage({\n loginMsg: i18n.get('success_forgot_password'),\n loginError: false\n }))\n } catch (error) {\n yield put(Actions.forgotPasswordRequestError(error))\n\n if (error.response && error.response.statusCode === 404) {\n yield put(setLoginMessage({\n loginMsg: i18n.get('error_forgot_password_user_not_found'),\n loginError: true\n }))\n } else {\n yield put(setLoginMessage({\n loginMsg: i18n.get('error_forgot_password'),\n loginError: true\n }))\n yield put(exception(error))\n }\n }\n\n yield put(backToLogin())\n}\n\nexport function* resetPassword({ payload: { accessToken, newPassword } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const search = yield select(Selectors.getSearchFromUrl)\n const baseUrl = yield select(Selectors.getBaseUrl)\n const from = yield select(Selectors.getWhitelabelEmailAddress)\n const logo = yield select(Selectors.getEmailLogo)\n const colors = yield select(Selectors.getWhitelabelColors)\n const body = {\n access_token: accessToken,\n new_password: newPassword,\n search,\n base_url: baseUrl,\n from,\n logo,\n color: colors.get('primary')\n }\n const { user } = yield call(Api.resetPassword, body)\n\n yield put(Actions.resetPasswordRequestSuccess())\n yield put(loginRequestSuccess(user))\n\n const queryParams = yield select(Selectors.getQueryParamsFromUrl)\n\n if (queryParams.redirect) {\n yield put(navigate(queryParams.redirect))\n }\n\n yield delay(5000)\n yield put(showAppMessage({ text: i18n.get('success_reset_password') }))\n } catch (error) {\n yield put(Actions.resetPasswordRequestError(error))\n yield put(setLoginMessage({\n loginMsg: i18n.get('error_reset_password'),\n loginError: true\n }))\n\n yield put(exception(error))\n }\n\n yield put(backToLogin())\n}\n\nexport function* setUser({ payload: user }) {\n yield call(saveCookie, CookieNames.SESSION, user.sid)\n yield call(saveCookie, CookieNames.ACCESS_TOKEN, user.accessToken)\n\n const locale = yield select(Selectors.getLocale)\n const timezone = yield select(Selectors.getTimezone)\n const momentLocale = determineMomentLocale(user.languageShort, locale, timezone)\n\n yield call(moment.locale, momentLocale)\n}\n\nexport function* activateUser({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n try {\n yield call(Api.activateUser, { aid: payload.aid })\n yield put(setLoginMessage({\n loginMsg: i18n.get('success_user_activation'),\n loginError: false\n }))\n } catch (error) {\n if (error.response.statusCode === 404) {\n yield put(setLoginMessage({\n loginMsg: '',\n loginError: false\n }))\n } else {\n yield put(Actions.activateUserError(error))\n yield put(setLoginMessage({\n loginMsg: i18n.get('error_user_activation'),\n loginError: true\n }))\n }\n }\n\n if (payload.module === 'subscriptions') {\n yield put(navigate('/app/subscriptions'))\n } else {\n yield put(backToLogin())\n }\n}\n\nexport function* setCookieOption({ payload: { cookieOption } }) {\n yield call(saveCookie, CookieNames.COOKIES_ACCEPTED, cookieOption, moment().add(1, 'years').toDate(), true)\n\n const sid = yield select(Selectors.getSid)\n const accessToken = yield select(Selectors.getAccessToken)\n const newsradarId = yield select(Selectors.getNewsradarId)\n\n if (sid) {\n yield call(saveCookie, CookieNames.SESSION, sid)\n }\n\n if (accessToken) {\n yield call(saveCookie, CookieNames.ACCESS_TOKEN, accessToken)\n }\n\n if (newsradarId) {\n yield call(saveCookie, CookieNames.NEWSRADAR, newsradarId)\n }\n}\n\nexport function* watchRegisterUser() {\n yield takeEvery(Actions.registerUserRequestStart, registerUser)\n}\n\nexport function* watchUpdateUser() {\n yield takeEvery(Actions.updateUserRequestStart, updateUser)\n}\n\nexport function* watchForgotPassword() {\n yield takeEvery(Actions.forgotPasswordRequestStart, forgotPassword)\n}\n\nexport function* watchResetPassword() {\n yield takeEvery(Actions.resetPasswordRequestStart, resetPassword)\n}\n\nexport function* watchSetUser() {\n yield takeEvery(Actions.setUser, setUser)\n}\n\nexport function* watchActivateUser() {\n yield takeEvery(Actions.activateUserStart, activateUser)\n}\n\nexport function* watchSetCookieOption() {\n yield takeEvery(Actions.setCookieOption, setCookieOption)\n}\n\nexport default function* userSaga() {\n yield all([\n watchRegisterUser(),\n watchUpdateUser(),\n watchForgotPassword(),\n watchResetPassword(),\n watchSetUser(),\n watchActivateUser(),\n watchSetCookieOption()\n ])\n}\n","/* istanbul ignore file */\nimport { put, takeEvery, all, call, select, delay } from 'redux-saga/effects'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport * as Actions from 'actions/darknet'\nimport * as AppActions from 'actions/app'\nimport { DarknetCharts, addTypeToDomains } from 'utils/darknet'\nimport { Networks } from 'static/constants'\nimport moment from 'moment-timezone'\n\nexport function* scoresRequestStart({ payload: demoRequest }) {\n const ids = yield select(Selectors.getDarkowlScoreQueriesById)\n const dateFrom = yield select(Selectors.getSelectedDateFrom)\n const dateTo = yield select(Selectors.getSelectedDateTo)\n\n const formattedDateFrom = moment(dateFrom).format('x')\n const formattedDateTo = moment(dateTo).format('x')\n\n try {\n let scores\n\n if (demoRequest) {\n scores = yield call(Api.getDarknetDemoScoreResults)\n } else {\n scores = yield call(Api.getDarknetScoreResults, ids.toJS(), formattedDateFrom, formattedDateTo)\n }\n\n yield put(Actions.scoresRequestSuccess({ scores, demoRequest }))\n } catch (err) {\n yield put(Actions.scoresRequestError(err))\n }\n}\n\nexport function* chartDrilldown({ payload: { data, chartId } }) {\n const i18n = yield select(Selectors.getI18n)\n const name = i18n.get(data.name)\n const value = data.keys || data.id\n\n if ([DarknetCharts.HACKISHNESS_NETWORKS, DarknetCharts.NETWORKS].indexOf(chartId) > -1) {\n yield put(Actions.addSelectedFilter({\n filterType: 'networks',\n value,\n name\n }))\n\n yield put(Actions.searchRequestStart())\n }\n\n if ([\n DarknetCharts.MENTIONS_TIMELINE,\n DarknetCharts.HACKISHNESS_TIMELINE,\n DarknetCharts.NETWORKS_TIMELINE\n ].indexOf(chartId) > -1) {\n const { from, to } = data.filterData.range\n const mfrom = moment(from)\n const mto = moment(to)\n const fromIsOlder = (mfrom.diff(mto) < 0)\n yield put(Actions.uiApplyDateFilter({\n dateFrom: fromIsOlder ? mfrom : mto.subtract(1, 'days'),\n dateTo: fromIsOlder ? mto : mfrom.add(1, 'days'),\n dateRange: ''\n }))\n }\n\n if ([DarknetCharts.LANGUAGES].indexOf(chartId) > -1) {\n if (data.pairs) {\n yield all(data.pairs.map(v => (\n put(Actions.addSelectedFilter({ filterType: 'languages', value: v.key, name: v.name }))\n )))\n } else {\n yield put(Actions.addSelectedFilter({ filterType: 'languages', value, name }))\n }\n\n yield put(Actions.searchRequestStart())\n }\n}\n\nexport function* searchResultDrilldown({ payload }) {\n yield put(Actions.addSelectedFilter(payload))\n\n yield put(Actions.searchRequestStart())\n}\n\nexport function* saveSearchQueryRequestStart() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const formData = yield select(Selectors.getDarknetSearchQueryFormData)\n const networks = formData.get('networks')\n\n const requestBody = {\n name: formData.get('name'),\n query: formData.get('searchQuery'),\n emails: formData.get('emails'),\n emailDomains: formData.get('emailDomains'),\n networks: Object.keys(networks).filter(key => networks[key] === true),\n hackMin: formData.get('minHackishness') / 100\n }\n\n let result\n\n if (formData.get('id')) {\n result = yield call(Api.updateDarknetSearchQuery, formData.get('id'), requestBody)\n } else {\n result = yield call(Api.createDarknetSearchQuery, requestBody)\n }\n\n yield put(Actions.fetchAllQueriesStart())\n\n yield put(Actions.saveSearchQueryRequestSuccess(result))\n yield put(AppActions.showAppMessage({\n text: i18n.get(result.message),\n success: true\n }))\n } catch (error) {\n yield put(Actions.saveSearchQueryRequestError(error))\n yield put(AppActions.showAppMessage({\n success: false\n }))\n }\n}\n\nexport function* openSearchQueryDialog({ payload }) {\n yield put(Actions.resetSearchQueryFormData())\n\n if (payload) {\n const emails = payload.get('filters').filter(e => e.get('type') === 'emails').map(e => e.get('value'))\n const emailDomains = payload.get('filters').filter(e => e.get('type') === 'email_domains').map(e => e.get('value'))\n const networks = Object.assign(\n {},\n ...Networks.map(el => ({\n [el.id]: payload\n .get('filters')\n .filter(e => e.get('type') === 'networks')\n .map(e => e.get('value'))\n .includes(el.id)\n }))\n )\n\n const data = {\n id: payload.get('id'),\n name: payload.get('name'),\n emails,\n emailDomains,\n networks,\n minHackishness: parseFloat(payload.get('hackMin')) * 100,\n searchQuery: payload.get('query')\n }\n\n yield put(Actions.updateSearchQueryFormData(data))\n }\n}\n\nexport function* saveScoreQueryRequestStart() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const formData = yield select(Selectors.getDarknetScoreQueryFormData)\n const requestBody = {\n name: formData.get('name'),\n domains: addTypeToDomains(formData.get('webDomains'), 'web').concat(addTypeToDomains(formData.get('emailDomains'), 'email'))\n }\n\n let result\n\n if (formData.get('id')) {\n result = yield call(Api.updateDarknetScoreQuery, formData.get('id'), requestBody)\n } else {\n result = yield call(Api.createDarknetScoreQuery, requestBody)\n }\n\n yield put(Actions.fetchAllQueriesStart())\n\n yield put(Actions.saveScoreQueryRequestSuccess(result))\n yield put(AppActions.showAppMessage({\n text: i18n.get(result.message),\n success: true\n }))\n } catch (error) {\n yield put(Actions.saveScoreQueryRequestError(error))\n yield put(AppActions.showAppMessage({\n success: false\n }))\n }\n}\n\nexport function* openScoreQueryDialog({ payload }) {\n yield put(Actions.resetScoreQueryFormData())\n\n if (payload) {\n const webDomains = payload.get('domains').filter(domain => domain.get('type') === 'web').map(domain => domain.get('domain'))\n const emailDomains = payload.get('domains').filter(domain => domain.get('type') === 'email').map(domain => domain.get('domain'))\n const data = {\n id: payload.get('id'),\n name: payload.get('name'),\n webDomains,\n emailDomains\n }\n\n try {\n yield put(Actions.updateScoreQueryFormData(data))\n } catch (error) {\n yield put(Actions.saveScoreQueryRequestError(error))\n }\n }\n}\n\nexport function* fetchAllQueriesStart() {\n try {\n const result = yield call(Api.fetchAllDarknetQueries)\n yield put(Actions.fetchAllQueriesSuccess(result))\n } catch (error) {\n yield put(Actions.fetchAllQueriesError(error))\n }\n}\n\nexport function* deleteQueryRequestStart({ payload: { type, id } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n let result\n\n if (type === 'search') {\n result = yield call(Api.deleteDarknetSearchQuery, id)\n } else if (type === 'score') {\n result = yield call(Api.deleteDarknetScoreQuery, id)\n }\n\n yield put(Actions.fetchAllQueriesStart())\n yield put(Actions.deleteQueryRequestSuccess())\n yield put(AppActions.showAppMessage({\n text: i18n.get(result.message),\n success: true\n }))\n } catch (error) {\n yield put(Actions.deleteQueryRequestError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('delete_query_error'),\n success: false\n }))\n }\n}\n\nexport function* deactivateQueryRequestStart({ payload: { type, id } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const result = yield call(Api.deactivateDarknetQuery, id, { type })\n\n yield put(Actions.fetchAllQueriesStart())\n yield put(Actions.deactivateQueryRequestSuccess(result))\n yield put(AppActions.showAppMessage({\n text: i18n.get(result.message),\n success: true\n }))\n } catch (error) {\n yield put(Actions.deactivateQueryRequestError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('deactivate_query_error'),\n success: false\n }))\n }\n}\n\nexport function* activateQueryRequestStart({ payload: { type, id } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const result = yield call(Api.activateDarknetQuery, id, { type })\n\n yield put(Actions.fetchAllQueriesStart())\n yield put(Actions.activateQueryRequestSuccess(result))\n yield put(AppActions.showAppMessage({\n text: i18n.get(result.message),\n success: true\n }))\n } catch (error) {\n yield put(Actions.activateQueryRequestError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('activate_query_error'),\n success: false\n }))\n }\n}\n\nexport function* testSearchQueryStart() {\n const i18n = yield select(Selectors.getI18n)\n try {\n const formData = yield select(Selectors.getDarknetSearchQueryFormData)\n const networks = formData.get('networks')\n\n const requestBody = {\n query: formData.get('searchQuery'),\n emails: formData.get('emails'),\n emailDomains: formData.get('emailDomains'),\n networks: Object.keys(networks).filter(key => networks[key] === true),\n hackMin: formData.get('minHackishness') / 100\n }\n\n const result = yield call(Api.testSearchQuery, requestBody)\n yield put(Actions.setSearchQueryFormTestResult({\n success: result.success,\n message: `${i18n.get('darknet_search_query_test_message')}: ${result.averageDailyHits.lastSevenDays}`\n }))\n yield delay(7000)\n yield put(Actions.testSearchQuerySuccess(result))\n } catch (error) {\n yield put(Actions.testSearchQueryError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('test_search_query_error'),\n success: false\n }))\n }\n}\n\nexport function* loadMoreDarknetEntriesStart() {\n const body = yield select(Selectors.getDarknetSearchBody)\n const searchResults = yield (select(Selectors.getDarknetResults))\n body.from = searchResults.size\n\n try {\n const result = yield call(Api.searchDarknetEntries, body)\n yield put(Actions.loadMoreDarknetEntriesSuccess(result))\n } catch (err) {\n yield put(Actions.loadMoreDarknetEntriesError(err))\n }\n}\n\nexport function* watchScoresRequestStart() {\n yield takeEvery(Actions.scoresRequestStart, scoresRequestStart)\n}\n\nexport function* watchChartDrilldown() {\n yield takeEvery(Actions.chartDrilldown, chartDrilldown)\n}\n\nexport function* watchSearchResultDrilldown() {\n yield takeEvery(Actions.searchResultDrilldown, searchResultDrilldown)\n}\n\nexport function* watchSaveSearchQueryRequestStart() {\n yield takeEvery(Actions.saveSearchQueryRequestStart, saveSearchQueryRequestStart)\n}\n\nexport function* watchOpenSearchQueryDialog() {\n yield takeEvery(Actions.openSearchQueryDialog, openSearchQueryDialog)\n}\n\nexport function* watchOpenScoreQueryDialog() {\n yield takeEvery(Actions.openScoreQueryDialog, openScoreQueryDialog)\n}\n\nexport function* watchSaveScoreQueryRequestStart() {\n yield takeEvery(Actions.saveScoreQueryRequestStart, saveScoreQueryRequestStart)\n}\n\nexport function* watchFetchAllQueriesStart() {\n yield takeEvery(Actions.fetchAllQueriesStart, fetchAllQueriesStart)\n}\n\nexport function* watchDeleteQuery() {\n yield takeEvery(Actions.deleteQueryRequestStart, deleteQueryRequestStart)\n}\n\nexport function* watchDeactivateQueryRequestStart() {\n yield takeEvery(Actions.deactivateQueryRequestStart, deactivateQueryRequestStart)\n}\n\nexport function* watchActivateQueryRequestStart() {\n yield takeEvery(Actions.activateQueryRequestStart, activateQueryRequestStart)\n}\n\nexport function* watchTestSearchQueryStart() {\n yield takeEvery(Actions.testSearchQueryStart, testSearchQueryStart)\n}\n\nexport function* watchLoadMoreDarknetEntriesStart() {\n yield takeEvery(Actions.loadMoreDarknetEntriesStart, loadMoreDarknetEntriesStart)\n}\n\nexport default function* mainSaga() {\n yield all([\n watchScoresRequestStart(),\n watchChartDrilldown(),\n watchSearchResultDrilldown(),\n watchSaveSearchQueryRequestStart(),\n watchSaveScoreQueryRequestStart(),\n watchFetchAllQueriesStart(),\n watchDeleteQuery(),\n watchDeactivateQueryRequestStart(),\n watchActivateQueryRequestStart(),\n watchOpenScoreQueryDialog(),\n watchOpenSearchQueryDialog(),\n watchTestSearchQueryStart(),\n watchLoadMoreDarknetEntriesStart()\n ])\n}\n","import { put, takeEvery, all, call, select } from 'redux-saga/effects'\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\n\nimport * as FilterActions from 'actions/filter'\nimport * as NewsActions from 'actions/news'\nimport * as Actions from 'actions/darknet'\nimport * as AppActions from 'actions/app'\n\nimport { rangeToDates } from 'utils/date'\n\nexport function* uiApplyDateFilter({ payload: { dateFrom, dateTo, dateRange } }) {\n yield put(NewsActions.toggleDateForm(false))\n yield put(FilterActions.changeDate({ dateFrom, dateTo, dateRange }))\n yield put(Actions.searchRequestStart())\n yield put(Actions.scoresRequestStart())\n}\n\nexport function* uiChooseQuickSelect({ payload: range }) {\n const { from, to } = yield call(rangeToDates, range)\n\n if (from || to) {\n yield put(Actions.uiApplyDateFilter({\n dateFrom: from,\n dateTo: to,\n dateRange: range\n }))\n }\n}\n\nexport function* uiEnteredQuery({ payload: query }) {\n if (query !== '') {\n let isValid = false\n\n try {\n const body = {\n query,\n index_type: 'Darknet_entries'\n }\n\n const { valid } = yield call(Api.validate, body)\n\n isValid = valid\n } catch (e) {\n isValid = false\n }\n\n if (isValid) {\n const queries = query.split(',').map(q => q.trim()).filter(q => q)\n\n for (let i = 0; i < queries.length; i += 1) {\n yield put(Actions.addDarknetSearchQuery({\n query: queries[i]\n }))\n }\n\n yield put(Actions.searchRequestStart())\n } else {\n const i18n = yield select(Selectors.getI18n)\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('invalid_query'),\n success: false\n }))\n }\n } else {\n yield put(Actions.searchRequestStart())\n }\n}\n\nexport function* uiApplyFilters() {\n yield put(Actions.toggleAdvancedSearch())\n yield put(Actions.searchRequestStart())\n}\n\nexport function* uiResetFilters() {\n yield put(Actions.resetFilters())\n yield put(Actions.toggleAdvancedSearch())\n yield put(Actions.searchRequestStart())\n}\n\nexport function* uiRemoveFilter({ payload: { index, field } }) {\n yield put(Actions.removeFilter({ index, field }))\n yield put(Actions.searchRequestStart())\n}\n\nexport function* uiInvertFilter({ payload: { index, field } }) {\n yield put(Actions.invertFilter({ index, field }))\n yield put(Actions.searchRequestStart())\n}\n\nexport function* uiUpdateFilter({ payload }) {\n yield put(Actions.updateFilter(payload))\n yield put(Actions.searchRequestStart())\n}\n\nexport function* watchUiApplyDateFilter() {\n yield takeEvery(Actions.uiApplyDateFilter, uiApplyDateFilter)\n}\n\nexport function* watchUiChooseQuickSelect() {\n yield takeEvery(Actions.uiChooseQuickSelect, uiChooseQuickSelect)\n}\n\nexport function* watchUiEnteredQuery() {\n yield takeEvery(Actions.uiEnteredQuery, uiEnteredQuery)\n}\n\nexport function* watchUiRemoveFilter() {\n yield takeEvery(Actions.uiRemoveFilter, uiRemoveFilter)\n}\n\nexport function* watchUiInvertFilter() {\n yield takeEvery(Actions.uiInvertFilter, uiInvertFilter)\n}\n\nexport function* watchUiApplyFilters() {\n yield takeEvery(Actions.uiApplyFilters, uiApplyFilters)\n}\n\nexport function* watchUiUpdateFilter() {\n yield takeEvery(Actions.uiUpdateFilter, uiUpdateFilter)\n}\n\nexport function* watchUiResetFilters() {\n yield takeEvery(Actions.uiResetFilters, uiResetFilters)\n}\n\nexport default function* filterSaga() {\n yield all([\n watchUiChooseQuickSelect(),\n watchUiEnteredQuery(),\n watchUiApplyFilters(),\n watchUiRemoveFilter(),\n watchUiInvertFilter(),\n watchUiUpdateFilter(),\n watchUiApplyDateFilter(),\n watchUiResetFilters()\n ])\n}\n","import { put, takeEvery, all, call, select } from 'redux-saga/effects'\nimport * as Actions from 'actions/darknet'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/bff'\n\nexport function* searchRequestStart() {\n const body = yield select(Selectors.getDarknetSearchBody)\n\n try {\n const result = yield call(Api.searchDarknetEntries, body)\n yield put(Actions.searchRequestSuccess(result))\n } catch (err) {\n yield put(Actions.searchRequestError(err))\n }\n}\n\nexport function* onSortByChange({ payload }) {\n yield put(Actions.uiOnSortByChange(payload))\n yield put(Actions.searchRequestStart())\n}\n\nexport function* onSortDirectionChange({ payload }) {\n yield put(Actions.uiOnSortDirectionChange(payload))\n yield put(Actions.searchRequestStart())\n}\n\nexport function* watchSearchRequestStart() {\n yield takeEvery(Actions.searchRequestStart, searchRequestStart)\n}\n\nexport function* watchOnSortByChange() {\n yield takeEvery(Actions.onSortByChange, onSortByChange)\n}\n\nexport function* watchOnSortDirectionChange() {\n yield takeEvery(Actions.onSortDirectionChange, onSortDirectionChange)\n}\n\nexport default function* searchSaga() {\n yield all([\n watchOnSortByChange(),\n watchOnSortDirectionChange(),\n watchSearchRequestStart()\n ])\n}\n","import { all } from 'redux-saga/effects'\nimport mainSaga from './main'\nimport filterSaga from './filter'\nimport searchSaga from './search'\n\nexport default function* darknetSaga() {\n yield all([\n mainSaga(),\n filterSaga(),\n searchSaga()\n ])\n}\n","/* global FormData */\nimport { getBffUrl as bffUrlSelector } from 'selectors'\nimport store from '../store'\n\nimport * as Api from '../utils/api'\n\nconst getBffUrl = () => bffUrlSelector(store.getState())\n\nexport const createCampaign = body => Api.post(\n `${getBffUrl()}/content_desk/campaigns`,\n body\n)\n\nexport const updateCampaign = (id, body) => Api.patch(\n `${getBffUrl()}/content_desk/campaigns/${id}`,\n body\n)\n\nexport const deleteCampaign = id => Api.destroy(\n `${getBffUrl()}/content_desk/campaigns/${id}`\n)\n\nexport const searchCampaigns = body => Api.post(\n `${getBffUrl()}/content_desk/campaigns/search`,\n body\n)\n\nexport const createContent = body => Api.post(\n `${getBffUrl()}/content_desk/contents`,\n body\n)\n\nexport const getContent = id => Api.get(\n `${getBffUrl()}/content_desk/contents/${id}`\n)\n\nexport const updateContent = (id, body) => Api.patch(\n `${getBffUrl()}/content_desk/contents/${id}`,\n body\n)\n\nexport const deleteContent = id => Api.destroy(\n `${getBffUrl()}/content_desk/contents/${id}`\n)\n\nexport const fetchContents = body => Api.post(\n `${getBffUrl()}/content_desk/contents/ids`,\n body\n)\n\nexport const searchContents = body => Api.post(\n `${getBffUrl()}/content_desk/contents/search`,\n body\n)\n\nexport const lockContent = id => Api.patch(\n `${getBffUrl()}/content_desk/contents/lock/${id}`\n)\n\nexport const unlockContent = id => Api.patch(\n `${getBffUrl()}/content_desk/contents/unlock/${id}`\n)\n\nexport const dispatchContent = (id, body) => Api.post(\n `${getBffUrl()}/content_desk/contents/${id}/dispatch`,\n body\n)\n\nexport const searchLinkedInCompany = body => Api.post(\n `${getBffUrl()}/content_desk/contents/social_media_statics/linked_in/company_search`,\n body\n)\n\nexport const fetchFacebookLinkMetadata = body => Api.post(\n `${getBffUrl()}/content_desk/fetch_facebook_link_metadata`, body\n)\n\nexport const downloadEmailEvents = data => (\n Api.post(\n `${getBffUrl()}/content_desk/contents/email_events/excel`, data, 'blob'\n )\n)\n\nexport const createEmailTemplate = body => Api.post(\n `${getBffUrl()}/content_desk/templates`,\n body\n)\n\nexport const updateEmailTemplate = (id, body) => Api.patch(\n `${getBffUrl()}/content_desk/templates/${id}`,\n body\n)\n\nexport const deleteEmailTemplate = id => Api.destroy(\n `${getBffUrl()}/content_desk/templates/${id}`\n)\n\nexport const fetchEmailTemplates = body => Api.post(\n `${getBffUrl()}/content_desk/templates/search`, body\n)\n\nexport const editorAiRequest = body => Api.post(\n `${getBffUrl()}/content_desk/ai_actions/exec`,\n body\n)\n\nexport const fetchStatistics = (id, earnedMediaAccuracy) => Api.get(\n `${getBffUrl()}/content_desk/contents/${id}/fetch_statistics?earned_media_accuracy=${earnedMediaAccuracy}`\n)\n\nexport const fetchContentDeskKpiStatistics = (type, dateRange, invalidateCache) => Api.get(\n `${getBffUrl()}/content_desk/kpi_statistics?type=${type}&date_range=${dateRange}&invalidate_cache=${invalidateCache}`\n)\n\nexport const searchMediaFiles = body => Api.post(\n `${getBffUrl()}/content_desk/media_files/search`,\n body\n)\n\nexport const deleteMediaFile = id => Api.destroy(\n `${getBffUrl()}/content_desk/media_files/delete/${id}`\n)\n\nexport const uploadEditorImage = file => {\n const formData = new FormData()\n formData.append('file', file.attachments[0], file.attachments[0].name)\n\n return Api.form(\n `${getBffUrl()}/content_desk/contents/upload_file`,\n formData\n )\n}\n\nexport const uploadMediaFile = data => {\n const formData = new FormData()\n data.forEach(({ key, value, filename }) => {\n if (filename) {\n formData.append(key, value, filename)\n } else {\n formData.append(key, value)\n }\n })\n\n return Api.form(\n `${getBffUrl()}/content_desk/contents/upload_file`,\n formData\n )\n}\n\nexport const createOtsDraft = (id, body) => Api.post(\n `${getBffUrl()}/content_desk/contents/${id}/ots`,\n body\n)\n\n","import { put, takeEvery, all, call, throttle, select, delay, race, take } from 'redux-saga/effects'\nimport { fromJS } from 'immutable'\nimport moment from 'moment-timezone'\n\nimport * as Api from 'api/content_desk'\nimport * as ContactsManagementApi from 'api/contacts_management'\nimport * as BffApi from 'api/bff'\nimport * as Selectors from 'selectors'\nimport * as Actions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\nimport * as EmailTemplatesLibraryActions from 'actions/email_templates_library'\nimport * as NewsActions from 'actions/news'\nimport * as SavedSearchesActions from 'actions/saved_searches'\nimport * as NavigationActions from 'actions/navigation'\nimport * as FilterActions from 'actions/filter'\nimport { navigate } from 'actions/navigation'\n\nimport * as LocalStorage from 'utils/localStorage'\nimport { removeInvalidTagsForOts } from 'utils/lexicalEditorHelper'\nimport { downloadBlob } from 'utils/sagas'\nimport { ExcelMimeType } from 'static/constants'\nimport { otsBody as initialOtsBody } from 'static/ots_body_config'\n\nexport function* getContentStart({ payload: { id } }) {\n try {\n const result = yield call(Api.getContent, id)\n yield put(Actions.getContentSuccess(result))\n yield put(Actions.fetchStatisticsStart({}))\n } catch (error) {\n yield put(Actions.getContentError(error))\n yield put(Actions.closeViewContentDialog())\n yield put(AppActions.showAppMessage({\n success: false\n }))\n }\n}\n\nexport function* saveCampaignStart() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const formData = yield select(Selectors.getCDeskCampaignFormData)\n const requestBody = {\n assigned_user_id: formData.get('assignedUserId'),\n end_date: formData.get('endDate'),\n id: formData.get('id'),\n name: formData.get('name'),\n start_date: formData.get('startDate'),\n summary: formData.get('summary'),\n active: formData.get('active')\n }\n\n let result\n let text\n\n if (formData.get('id')) {\n result = yield call(Api.updateCampaign, formData.get('id'), requestBody)\n text = i18n.get('ccd_campaign_updated')\n } else {\n result = yield call(Api.createCampaign, requestBody)\n text = i18n.get('ccd_campaign_created')\n }\n\n yield put(Actions.saveCampaignSuccess(result))\n\n const calendarDate = yield select(Selectors.getCDeskCalendarDate)\n yield put(Actions.fetchCalendarEventsStart(calendarDate))\n\n yield put(Actions.fetchCampaignDropdownOptionsStart())\n\n yield put(AppActions.showAppSnackbarMessage({\n text,\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.saveCampaignError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* saveContentFormlessStart({\n payload: {\n id,\n title,\n plannedFor,\n scheduledFor,\n scheduledForJobName,\n scheduledEventsJobName,\n approvalStatus,\n ccdCampaignId\n }\n}) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const requestBody = {\n id,\n title,\n planned_for: plannedFor,\n scheduled_for: scheduledFor,\n scheduled_for_job_name: scheduledForJobName,\n scheduled_events_job_name: scheduledEventsJobName,\n approval_status: approvalStatus,\n ccd_campaign_id: ccdCampaignId\n }\n const result = yield call(Api.updateContent, id, requestBody)\n yield put(Actions.saveContentFormlessSuccess(result))\n } catch (error) {\n let msg = i18n.get('failed')\n\n if (error.response && error.response.statusCode === 409) {\n msg = i18n.get('ccd_content_duplicate_error')\n }\n\n yield put(Actions.saveContentFormlessError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: msg,\n variant: 'error'\n }))\n }\n}\n\nexport function* saveContentStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const formData = yield select(Selectors.getCDeskContentFormData)\n const timezone = yield select(Selectors.getTimezone)\n const config = yield select(Selectors.getCDeskConfig)\n const ccdCampaign = formData.get('ccdCampaign')\n const type = formData.getIn(['type', 'id'])\n\n let ccdCampaignId = null\n\n if (ccdCampaign !== null) {\n ccdCampaignId = ccdCampaign.get('value')\n }\n\n const recipients = formData.get('recipients').map(r => ({\n content_id: r.get('contentId'),\n first_name: r.get('firstName'),\n last_name: r.get('lastName'),\n mail: r.get('mail'),\n contact_id: r.get('contactId'),\n distribution_list_id: r.get('distributionListId')\n }))\n\n const ccdMediaFiles = formData.get('ccdMediaFiles').map(f => ({\n id: f.get('id')\n }))\n\n const notes = formData.get('notes').map(n => ({\n text: n.get('text'),\n created_by: n.get('createdBy'),\n created_at: n.get('createdAt')\n }))\n\n const senderName = formData.get('senderName') || config.get('senderName')\n const senderMail = formData.get('senderMail') || config.get('senderEmail')\n const id = formData.get('id')\n\n const requestBody = {\n id,\n title: formData.get('title'),\n body: formData.get('body'),\n plain_text: formData.get('plainText'),\n editor_design: JSON.stringify(formData.get('editorDesign')),\n type,\n subject: formData.get('subject'),\n planned_for: formData.get('plannedFor'),\n scheduled_for: formData.get('scheduledFor'),\n ccd_campaign_id: ccdCampaignId,\n ccd_media_files: ccdMediaFiles,\n recipients,\n timezone,\n sender_mail: senderMail,\n sender_name: senderName,\n domain: formData.get('domain'),\n domain_region: formData.get('domainRegion'),\n approval_status: formData.get('approvalStatus'),\n notes\n }\n\n if (type === 'linkedin') {\n requestBody.linked_in_post = JSON.stringify(formData.get('linkedInPost'))\n requestBody.sender_mail = ''\n requestBody.sender_name = ''\n requestBody.domain = ''\n requestBody.domain_region = ''\n }\n\n if (type === 'facebook') {\n requestBody.facebook_post = JSON.stringify(formData.get('facebookPost'))\n requestBody.sender_mail = ''\n requestBody.sender_name = ''\n requestBody.domain = ''\n requestBody.domain_region = ''\n }\n\n if (type === 'ots_press_release') {\n requestBody.sender_mail = ''\n requestBody.sender_name = ''\n requestBody.domain = ''\n requestBody.domain_region = ''\n\n if (requestBody.body) {\n const parsedBody = JSON.parse(requestBody.body)\n let { text } = parsedBody\n let { contact } = parsedBody\n text = yield call(removeInvalidTagsForOts, text, ['P', 'I', 'B', 'U', 'A', 'UL', 'OL', 'LI'])\n contact = yield call(removeInvalidTagsForOts, contact, ['P', 'I', 'B', 'U', 'A', 'BR'])\n\n const plainStoryText = text.replace(/<\\/?p[^>]*>/g, '\\n').replace(/<[^>]*>/g, '')\n const plainContactText = contact.replace(/<\\/?p[^>]*>/g, '\\n').replace(/<[^>]*>/g, '')\n\n requestBody.plain_text = `${plainStoryText} ${plainContactText}`\n requestBody.body = JSON.stringify({ ...parsedBody, text, contact })\n }\n }\n\n let result\n let text\n\n if (id) {\n result = yield call(Api.updateContent, id, requestBody)\n text = i18n.get('ccd_content_updated')\n } else {\n result = yield call(Api.createContent, requestBody)\n text = i18n.get('ccd_content_created')\n }\n\n if (payload && payload.switchToContactManagement) {\n yield put(Actions.switchToContactManagement())\n }\n\n if (payload && payload.switchToEmailTemplatesLibrary) {\n yield put(Actions.switchToEmailTemplatesLibrary())\n }\n\n if (payload && payload.openEditContentDialog) {\n yield put(Actions.lockContentStart({ id: result.id, openEditContentDialog: true }))\n }\n\n if (payload && payload.openOldEditContentDialog) {\n yield put(Actions.lockContentStart({ id: result.id, openOldEditContentDialog: true }))\n }\n\n if (payload && payload.closeEditContentDialog) {\n yield put(Actions.unlockContentStart({ closeEditContentDialog: true }))\n }\n\n if (payload && payload.closeOldEditContentDialog) {\n yield put(Actions.unlockContentStart({ closeOldEditContentDialog: true }))\n }\n\n const calendarDate = yield select(Selectors.getCDeskCalendarDate)\n yield put(Actions.fetchCalendarEventsStart(calendarDate))\n\n yield put(Actions.saveContentSuccess(result))\n yield put(AppActions.showAppSnackbarMessage({\n text,\n variant: 'success'\n }))\n } catch (error) {\n let msg = i18n.get('failed')\n\n if (error.response && error.response.statusCode === 409) {\n msg = i18n.get('ccd_content_duplicate_error')\n }\n\n if (error.response && error.response.statusCode === 403) {\n msg = error.response.message\n }\n\n yield put(Actions.saveContentError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: msg,\n variant: 'error'\n }))\n }\n}\n\nexport function* deleteContentStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const result = yield call(Api.deleteContent, payload.id)\n yield put(Actions.deleteContentSuccess(result))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('content_deleted'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.deleteContentError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* deleteCampaignStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const result = yield call(Api.deleteCampaign, payload.id)\n yield put(Actions.deleteCampaignSuccess(result))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('ccd_campaign_deleted'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.deleteCampaignError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* cloneContentsFormData() {\n const uploadedMediaFiles = yield select(Selectors.getCDeskUploadedMediaFiles)\n\n yield put(Actions.fetchCampaignDropdownOptionsStart())\n\n if (uploadedMediaFiles.isEmpty()) {\n yield put(Actions.fetchMediaFilesStart())\n }\n}\n\nexport function* openViewContentDialog({ payload: selectedContent }) {\n yield put(Actions.getContentStart({ id: selectedContent.get('id') }))\n}\n\nexport function* openEditContentDialog() {\n const uploadedMediaFiles = yield select(Selectors.getCDeskUploadedMediaFiles)\n\n yield put(Actions.fetchCampaignDropdownOptionsStart())\n\n if (uploadedMediaFiles.isEmpty()) {\n yield put(Actions.fetchMediaFilesStart())\n }\n}\n\nexport function* openOldEditContentDialog() {\n const uploadedMediaFiles = yield select(Selectors.getCDeskUploadedMediaFiles)\n\n yield put(Actions.fetchCampaignDropdownOptionsStart())\n\n if (uploadedMediaFiles.isEmpty()) {\n yield put(Actions.fetchMediaFilesStart())\n }\n}\n\nexport function* fetchCampaignDropdownOptionsStart() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const body = {\n select_fields: ['id', 'name', 'assigned_user_id', 'active', 'start_date', 'end_date', 'summary'],\n page: 1,\n limit: 1000\n }\n\n const result = yield call(Api.searchCampaigns, body)\n yield put(Actions.fetchCampaignDropdownOptionsSuccess(result))\n } catch (error) {\n yield put(Actions.fetchCampaignDropdownOptionsError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* fetchContentDropdownOptionsStart({ payload: { title, type } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const body = {\n filter: [{ field: 'title', value: title || '' }, { field: 'type', value: type || 'email' }],\n page: 1,\n limit: 10\n }\n\n const result = yield call(Api.searchContents, body)\n yield put(Actions.fetchContentDropdownOptionsSuccess(result))\n } catch (error) {\n yield put(Actions.fetchContentDropdownOptionsError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* fetchMediaFilesStart() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const body = {\n page: 1,\n limit: 10\n }\n\n const result = yield call(Api.searchMediaFiles, body)\n yield put(Actions.fetchMediaFilesSuccess(result))\n yield put(Actions.setMediaFilesInitialFetch(true))\n yield put(Actions.incrementMediaFilesPage())\n } catch (error) {\n yield put(Actions.fetchMediaFilesError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* fetchMoreMediaFilesStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n const isInitialFetch = yield select(Selectors.getCDeskMediaFilesInitialFetch)\n const uploadedMediaFiles = yield select(Selectors.getCDeskUploadedMediaFiles)\n const uploadedMediaFilesTotal = yield select(Selectors.getCDeskUploadedMediaFilesTotal)\n const page = yield select(Selectors.getCDeskMediaFilesPage)\n const limit = yield select(Selectors.getCDeskMediaFilesLimit)\n\n const hasMore = uploadedMediaFilesTotal > page * limit\n const mediaFiles = uploadedMediaFiles\n .filter(mediaFile => mediaFile.get('mimeType') !== null)\n .filter(mediaFile => mediaFile.get('mimeType').includes('image'))\n .map(mediaFile => ({\n id: mediaFile.get('id'),\n location: mediaFile.get('url'),\n contentType: mediaFile.get('mimeType'),\n width: 500,\n height: 500,\n source: 'user'\n })).toJS()\n\n try {\n const body = {\n page,\n limit\n }\n\n if (isInitialFetch && payload.done) {\n yield put(Actions.setMediaFilesInitialFetch(false))\n yield call(payload.done, mediaFiles, { hasMore, page, limit, uploadedMediaFilesTotal })\n yield put(Actions.fetchMoreMediaFilesSuccess())\n\n return\n }\n\n const result = yield call(Api.searchMediaFiles, body)\n\n if (payload.done) {\n const newMediaFiles = mediaFiles.concat(result.mediaFiles\n .filter(mediaFile => mediaFile.mimeType.includes('image'))\n .map(mediaFile => ({\n id: mediaFile.id,\n location: mediaFile.url,\n contentType: mediaFile.mimeType,\n width: 500,\n height: 500,\n source: 'user'\n })))\n\n yield call(payload.done, newMediaFiles, { hasMore, page, limit, uploadedMediaFilesTotal })\n }\n\n yield put(Actions.appendMediaFiles(result))\n yield put(Actions.incrementMediaFilesPage())\n\n yield put(Actions.fetchMoreMediaFilesSuccess())\n } catch (error) {\n yield put(Actions.fetchMoreMediaFilesError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* deleteMediaFileStart({ payload }) {\n const uploadedMediaFiles = yield select(Selectors.getCDeskUploadedMediaFiles)\n const storedFileId = uploadedMediaFiles.find(mediaFile => mediaFile.get('id') === payload.id).get('storedFilesId')\n\n try {\n const { ccdMediaFile, total, totalSize } = yield call(Api.deleteMediaFile, storedFileId)\n yield put(Actions.deleteMediaFileSuccess({ ccdMediaFile, total }))\n yield put(Actions.setUploadedMediaFilesTotalSize(totalSize))\n } catch (_error) {\n yield put(Actions.deleteMediaFileError())\n }\n}\n\nexport function* fetchDistributionListDropdownOptionsStart() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const body = {\n filter: [{ field: 'name', value: '' }],\n page: 1,\n limit: 1000\n }\n\n // TODO: change to search route\n const result = yield call(ContactsManagementApi.fetchDistributionLists, body)\n yield put(Actions.fetchDistributionListDropdownOptionsSuccess(result))\n } catch (error) {\n yield put(Actions.fetchDistributionListDropdownOptionsError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* fetchContactDropdownOptionsStart({ payload: { searchString } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const body = {\n filter: [{ field: 'searchable', value: searchString }],\n page: 1,\n limit: 100\n }\n\n // TODO: change to search route\n const result = yield call(ContactsManagementApi.fetchContacts, body)\n yield put(Actions.fetchContactDropdownOptionsSuccess(result))\n } catch (error) {\n yield put(Actions.fetchContactDropdownOptionsError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* uploadEditorImageStart({ payload: { file } }) {\n try {\n /* eslint-disable camelcase */\n const { uploaded_file, ccd_media_files_total_size } = yield call(Api.uploadEditorImage, file)\n yield put(Actions.uploadEditorImageSuccess(uploaded_file))\n yield put(Actions.setUploadedMediaFilesTotalSize(ccd_media_files_total_size))\n } catch (_error) {\n yield put(Actions.uploadEditorImageError())\n }\n}\n\nexport function* fetchStatisticsStart({ payload }) {\n const content = yield select(Selectors.getCDeskSelectedContent)\n\n if (content.get('status') !== 'released') {\n return\n }\n\n const i18n = yield select(Selectors.getI18n)\n const id = content.get('id')\n const earnedMediaAccuracy = payload.earnedMediaAccuracy || '30%'\n\n try {\n const result = yield call(Api.fetchStatistics, id, earnedMediaAccuracy)\n yield put(Actions.fetchStatisticsSuccess(result))\n } catch (error) {\n // when post cannot be found on social media because it has been deleted there\n // then update the content\n if (error && error.response && error.response.statusCode === 404) {\n if (!content.get('deletedExternally')) {\n yield put(Actions.saveDeletedExternallyForContentStart({ content }))\n }\n } else {\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n\n yield put(Actions.fetchStatisticsError(error))\n }\n}\n\nexport function* saveDeletedExternallyForContentStart({ payload: { content } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const id = content.get('id')\n\n // Minimum required fields for patch although we only want to update deleted_externally\n const requestBody = {\n title: content.get('title'),\n planned_for: content.get('plannedFor'),\n scheduled_for: content.get('scheduledFor'),\n scheduled_for_job_name: content.get('scheduledForJobName'),\n scheduled_events_job_name: content.get('scheduledEventsJobName'),\n ccd_campaign_id: content.getIn(['ccdCampaign', 'id']),\n ccd_media_files: content.get('ccdMediaFiles').map(f => ({ id: f.get('id') })),\n deleted_externally: true\n }\n\n const result = yield call(Api.updateContent, id, requestBody)\n yield put(Actions.saveDeletedExternallyForContentSuccess(result))\n } catch (error) {\n yield put(Actions.saveDeletedExternallyForContentError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* lockContent({ payload }) {\n const { id } = payload || {}\n const lockOnly = (!payload\n || (payload && (!payload.openContentNotesDialog && (!payload.openEditContentDialog && !payload.openOldEditContentDialog)))\n )\n\n const i18n = yield select(Selectors.getI18n)\n const contentDeskContentTypes = yield select(Selectors.getStaticCdContentTypes)\n\n try {\n let contentId\n\n if (!id && lockOnly) {\n const content = yield select(Selectors.getCDeskSelectedContent)\n contentId = content.get('id')\n } else {\n contentId = id\n }\n\n if (contentId) {\n const result = yield call(Api.lockContent, contentId)\n const user = yield select(Selectors.getUser)\n\n yield put(Actions.lockContentSuccess(fromJS(result)))\n\n if (!lockOnly) {\n const lockedByCurrentUser = result.lockedBy === user.get('id')\n\n if (lockedByCurrentUser) {\n const ccdCampaign = { value: result.ccdCampaign.id, label: result.ccdCampaign.name }\n const filteredType = contentDeskContentTypes.filter(t => t.get('id') === result.type).first()\n\n let type = { value: contentDeskContentTypes.first().get('id'), label: contentDeskContentTypes.first().get('name') }\n\n if (filteredType) {\n type = { id: filteredType.get('id'), value: filteredType.get('id'), label: filteredType.get('name') }\n }\n\n const lockedContent = fromJS({\n ...result,\n ...{ ccdCampaign },\n ...{ type }\n })\n\n if (payload && payload.openContentNotesDialog) {\n yield put(Actions.openContentNotesDialog(lockedContent))\n }\n\n if (payload && payload.openEditContentDialog) {\n yield put(Actions.changeContentEditTabView(type.id === 'email' ? 'settings' : 'choose_content'))\n yield put(Actions.openEditContentDialog(lockedContent))\n }\n\n if (payload && payload.openOldEditContentDialog) {\n yield put(Actions.openOldEditContentDialog(lockedContent))\n }\n } else {\n yield put(Actions.openBlockedContentEditDialog())\n }\n }\n }\n } catch (error) {\n yield put(Actions.lockContentError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* unlockContent({ payload }) {\n const unlockOnly = (\n payload && (!payload.closeEditContentDialog && !payload.closeContentNotesDialog && !payload.closeOldEditContentDialog)\n )\n const content = yield select(Selectors.getCDeskSelectedContent)\n const i18n = yield select(Selectors.getI18n)\n const contentId = content.get('id')\n\n try {\n if (contentId) {\n const result = yield call(Api.unlockContent, contentId)\n yield put(Actions.unlockContentSuccess(fromJS(result)))\n }\n } catch (error) {\n yield put(Actions.unlockContentError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n } finally {\n if (!unlockOnly) {\n if (payload && payload.closeEditContentDialog) {\n yield put(Actions.closeEditContentDialog())\n }\n\n if (payload && payload.closeOldEditContentDialog) {\n yield put(Actions.closeOldEditContentDialog())\n }\n\n if (payload && payload.closeContentNotesDialog) {\n yield put(Actions.closeContentNotesDialog())\n }\n }\n }\n}\n\nexport function* dispatchContentRequestStart({ payload: { test = false, recipient } }) {\n const i18n = yield select(Selectors.getI18n)\n try {\n const formData = yield select(Selectors.getCDeskContentFormData)\n\n const requestBody = {\n test\n }\n\n if (recipient) {\n requestBody.recipient = recipient\n }\n\n yield call(Api.dispatchContent, formData.get('id'), requestBody)\n yield put(Actions.dispatchContentRequestSuccess())\n yield put(AppActions.showAppMessage({\n text: i18n.get('success'),\n success: true\n }))\n } catch (_error) {\n yield put(Actions.dispatchContentRequestError())\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* switchToContactManagement() {\n yield put(Actions.closeEditContentDialog())\n yield put(Actions.closeOldEditContentDialog())\n yield put(Actions.closeCalendarDialog())\n yield put(navigate('/app/contact_management/my_contacts'))\n}\n\nexport function* switchToEmailTemplatesLibrary() {\n yield put(EmailTemplatesLibraryActions.closePickerDialog())\n yield put(EmailTemplatesLibraryActions.setReadMode(false))\n yield put(Actions.closeEditContentDialog())\n yield put(Actions.closeOldEditContentDialog())\n yield put(navigate('/app/content_desk/template_library'))\n}\n\nexport function* switchToSearchPool({ payload: { field, value } }) {\n try {\n yield put(NewsActions.blockNewsRequest())\n\n const isPlotlights = yield select(Selectors.isPlotlights)\n\n yield put(NavigationActions.navigate(isPlotlights ? '/app/media_monitoring' : '/app/search_pool'))\n\n const { timeout } = yield race({\n selected: take(NewsActions.viewConfigPresetSelected),\n timeout: delay(2000)\n })\n\n if (!timeout) {\n yield put(NewsActions.resetNews())\n yield put(FilterActions.resetFilters())\n\n yield put(FilterActions.setSimilarityFilter({\n field,\n value: fromJS([value.delete('title')])\n }))\n\n if (field === 'ccdContents' && value.get('releasedAt')) {\n const dateFrom = value.get('releasedAt')\n const dateTo = moment(dateFrom).add(30, 'days').format()\n\n yield put(FilterActions.changeDate({\n dateFrom,\n dateTo\n }))\n }\n\n yield put(SavedSearchesActions.setInitialSearchLoaded(true))\n\n yield put(NewsActions.unblockNewsRequest())\n yield put(NewsActions.newsRequestStart())\n }\n } catch (error) {\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n } finally {\n yield put(NewsActions.unblockNewsRequest())\n }\n}\n\nexport function* uploadLinkedInMediaFileStart({ payload: { file } }) {\n try {\n if (file) {\n const formData = [\n {\n key: 'file',\n value: file\n }\n ]\n\n /* eslint-disable camelcase */\n const { uploaded_file, ccd_media_files_total_size } = yield call(Api.uploadMediaFile, formData)\n yield put(Actions.uploadLinkedInMediaFileSuccess(uploaded_file))\n yield put(Actions.setUploadedMediaFilesTotalSize(ccd_media_files_total_size))\n }\n } catch (_error) {\n yield put(Actions.uploadLinkedInMediaFileError())\n }\n}\n\nexport function* uploadFacebookMediaFileStart({ payload: { file } }) {\n try {\n if (file) {\n const formData = [\n {\n key: 'file',\n value: file\n }\n ]\n\n /* eslint-disable camelcase */\n const { uploaded_file, ccd_media_files_total_size } = yield call(Api.uploadMediaFile, formData)\n yield put(Actions.uploadFacebookMediaFileSuccess(uploaded_file))\n yield put(Actions.setUploadedMediaFilesTotalSize(ccd_media_files_total_size))\n }\n } catch (_error) {\n yield put(Actions.uploadFacebookMediaFileError())\n }\n}\n\nexport function* editorAiRequestStart({ payload: { contentType, actionType, language, mood } }) {\n try {\n const sourceText = yield select(Selectors.getCDeskAiSelectedText)\n const currentContentData = yield select(Selectors.getCDeskContentFormData)\n const totalEntries = yield select(Selectors.getCDeskAiRequestResults)\n\n let currentText = ''\n let result\n\n if (contentType === 'facebook') {\n currentText = currentContentData.getIn(['facebookPost', 'message'])\n }\n\n if (contentType === 'linkedIn') {\n currentText = currentContentData.getIn(['linkedInPost', 'commentary'])\n }\n\n const body = {\n action_type: actionType,\n source_text: sourceText || currentText,\n language,\n mood\n }\n\n const generatedText = yield call(Api.editorAiRequest, body)\n\n if (mood) {\n result = {\n resultId: totalEntries.size + 1,\n action: actionType.toLowerCase(),\n text: generatedText,\n mood,\n source: sourceText || currentText\n }\n }\n\n if (!mood) {\n result = {\n resultId: totalEntries.size + 1,\n action: actionType.toLowerCase(),\n text: generatedText,\n source: sourceText || currentText\n }\n }\n\n yield put(Actions.editorAiRequestSuccess(result))\n } catch (error) {\n yield put(Actions.editorAiRequestError(error))\n }\n}\n\nexport function* buildSocialMediaLinkStart({ payload }) {\n try {\n if (payload.socialMedia === 'linkedin') {\n const { title, url, image, host, description } = yield call(BffApi.fetchOpenGraphMetadata, { url: payload.url })\n\n let articleContent\n\n if (image) {\n const file = yield call(BffApi.uploadFileFromUrl, { url: image, keep_until: moment().add(30, 'days').format() })\n articleContent = { title, url, description, id: file.id, host, imageUrl: file.url }\n } else {\n articleContent = { title, url, description, host }\n }\n\n yield put(Actions.buildSocialMediaLinkLinkedInSuccess(articleContent))\n }\n\n if (payload.socialMedia === 'facebook') {\n const result = yield call(Api.fetchFacebookLinkMetadata, { url: payload.url })\n yield put(Actions.buildSocialMediaLinkFacebookSuccess(result))\n }\n } catch (error) {\n if (payload.socialMedia === 'linkedin') {\n yield put(Actions.buildSocialMediaLinkLinkedInError({ url: payload.url }))\n }\n\n if (payload.socialMedia === 'facebook') {\n yield put(Actions.buildSocialMediaLinkFacebookError({ url: payload.url }))\n }\n }\n}\n\nexport function* downloadEmailEvents({ payload }) {\n const { events } = payload\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const result = yield call(Api.downloadEmailEvents, { events })\n yield call(downloadBlob, result, 'recipients_events_log.xlsx', ExcelMimeType)\n yield put(Actions.downloadEmailEventsSuccess())\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('download_in_progress'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.downloadEmailEventsError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('download_failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* saveCampaignFormlessStart({ payload }) {\n const { id } = payload\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const requestBody = {\n id,\n assigned_user_id: payload.assignedUserId,\n active: payload.active,\n start_date: payload.startDate,\n end_date: payload.endDate,\n summary: payload.summary\n }\n\n const result = yield call(Api.updateCampaign, id, requestBody)\n\n yield put(Actions.saveCampaignFormlessSuccess(result))\n } catch (error) {\n yield put(Actions.saveCampaignFormlessError({ error, id }))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* openNewContent({ payload }) {\n const { type } = payload\n const i18n = yield select(Selectors.getI18n)\n const title = i18n.get('new_content_title', { type: i18n.get(type), timestamp: moment().format() })\n\n if (type === 'email') {\n const config = yield select(Selectors.getCDeskConfig)\n\n yield put(Actions.setContentFormData({\n key: 'domain',\n value: config.get('domain')\n }))\n\n yield put(Actions.setContentFormData({\n key: 'domainRegion',\n value: config.get('domainRegion')\n }))\n }\n\n if (type === 'ots_press_release') {\n const userId = yield select(Selectors.getUserId)\n const newsradarId = yield select(Selectors.getNewsradarId)\n const key = `ccd_ots_press_release_${newsradarId}_${userId}:show_welcome_message`\n const value = yield call(LocalStorage.getItem, key)\n\n if (value !== 'false') {\n yield put(Actions.openOtsWelcomeDialog())\n\n return\n }\n\n yield put(Actions.setContentFormData({\n key: 'body',\n value: JSON.stringify(initialOtsBody)\n }))\n }\n\n yield put(Actions.setContentFormData({\n key: 'title',\n value: title\n }))\n\n const tab = () => {\n if (type === 'ots_press_release') {\n return 'choose_content'\n }\n\n return 'settings'\n }\n\n yield put(Actions.changeContentEditTabView(tab()))\n\n if (type === 'email' || type === 'ots_press_release') {\n yield put(Actions.setContentFormData({\n key: 'type',\n value: { label: type, id: type }\n }))\n\n yield put(Actions.saveContentStart({ openEditContentDialog: true }))\n } else {\n // use old editor for social media content for now\n yield put(Actions.saveContentStart({ openOldEditContentDialog: true }))\n }\n}\n\nexport function* closeOtsWelcomeDialog() {\n const userId = yield select(Selectors.getUserId)\n const newsradarId = yield select(Selectors.getNewsradarId)\n const key = `ccd_ots_press_release_${newsradarId}_${userId}:show_welcome_message`\n yield call(LocalStorage.setItem, key, 'false')\n}\n\nexport function* fetchKpiStatistics({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const filters = yield select(Selectors.getCDeskKpiStatisticsFilters)\n const type = filters.get('type')\n const dateRange = filters.get('dateRange')\n const invalidateCache = payload?.invalidateCache || false\n\n let days = 30\n\n if (dateRange === 'last_7_days') {\n days = 7\n }\n\n if (dateRange === 'last_30_days') {\n days = 30\n }\n\n if (dateRange === 'last_3_months') {\n days = Math.abs(moment().subtract(3, 'months').diff(moment(), 'days'))\n }\n\n const result = yield call(Api.fetchContentDeskKpiStatistics, type, days, invalidateCache)\n yield put(Actions.fetchKpiStatisticsSuccess(result))\n } catch (error) {\n yield put(Actions.fetchKpiStatisticsError(error))\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* createOtsDraft({ payload: { id } }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const result = yield call(Api.createOtsDraft, id)\n yield put(Actions.createOtsDraftSuccess(result))\n } catch (error) {\n let msg = i18n.get('failed')\n\n if (error.response && error.response.statusCode === 424) {\n msg = error.response.message\n }\n\n yield put(Actions.createOtsDraftError(error))\n yield put(AppActions.showAppMessage({\n text: msg,\n success: false\n }))\n }\n}\n\nexport function* watchSaveCampaignStart() {\n yield takeEvery(Actions.saveCampaignStart, saveCampaignStart)\n}\n\nexport function* watchSaveCampaignFormlessStart() {\n yield takeEvery(Actions.saveCampaignFormlessStart, saveCampaignFormlessStart)\n}\n\nexport function* watchSaveContentFormlessStart() {\n yield takeEvery(Actions.saveContentFormlessStart, saveContentFormlessStart)\n}\n\nexport function* watchSaveContentStart() {\n yield takeEvery(Actions.saveContentStart, saveContentStart)\n}\n\nexport function* watchDeleteContentStart() {\n yield takeEvery(Actions.deleteContentStart, deleteContentStart)\n}\n\nexport function* watchDeleteCampaignStart() {\n yield takeEvery(Actions.deleteCampaignStart, deleteCampaignStart)\n}\n\nexport function* watchCloneContentsFormData() {\n yield takeEvery(Actions.cloneContentsFormData, cloneContentsFormData)\n}\n\nexport function* watchOpenViewContentDialog() {\n yield takeEvery(Actions.openViewContentDialog, openViewContentDialog)\n}\n\nexport function* watchOpenEditContentDialog() {\n yield takeEvery(Actions.openEditContentDialog, openEditContentDialog)\n}\n\nexport function* watchOpenOldEditContentDialog() {\n yield takeEvery(Actions.openOldEditContentDialog, openOldEditContentDialog)\n}\n\nexport function* watchFetchCampaignDropdownOptionsStart() {\n yield takeEvery(Actions.fetchCampaignDropdownOptionsStart, fetchCampaignDropdownOptionsStart)\n}\n\nexport function* watchFetchContentDropdownOptionsStart() {\n yield takeEvery(Actions.fetchContentDropdownOptionsStart, fetchContentDropdownOptionsStart)\n}\n\nexport function* watchFetchContactDropdownOptionsStart() {\n yield throttle(1000, Actions.fetchContactDropdownOptionsStart, fetchContactDropdownOptionsStart)\n}\n\nexport function* watchFetchDistributionListDropdownOptionsStart() {\n yield throttle(1000, Actions.fetchDistributionListDropdownOptionsStart, fetchDistributionListDropdownOptionsStart)\n}\n\nexport function* watchFetchMediaFilesStart() {\n yield throttle(1000, Actions.fetchMediaFilesStart, fetchMediaFilesStart)\n}\n\nexport function* watchFetchMoreMediaFilesStart() {\n yield throttle(1000, Actions.fetchMoreMediaFilesStart, fetchMoreMediaFilesStart)\n}\n\nexport function* watchUploadEditorImageStart() {\n yield takeEvery(Actions.uploadEditorImageStart, uploadEditorImageStart)\n}\n\nexport function* watchDeleteMediaFileStart() {\n yield takeEvery(Actions.deleteMediaFileStart, deleteMediaFileStart)\n}\n\nexport function* watchFetchStatisticsStart() {\n yield takeEvery(Actions.fetchStatisticsStart, fetchStatisticsStart)\n}\n\nexport function* watchGetContentStart() {\n yield takeEvery(Actions.getContentStart, getContentStart)\n}\n\nexport function* watchLockContentFormStart() {\n yield takeEvery(Actions.lockContentStart, lockContent)\n}\n\nexport function* watchUnlockContentFormStart() {\n yield takeEvery(Actions.unlockContentStart, unlockContent)\n}\n\nexport function* watchDispatchContentRequestStart() {\n yield takeEvery(Actions.dispatchContentRequestStart, dispatchContentRequestStart)\n}\n\nexport function* watchSwitchToContactManagement() {\n yield takeEvery(Actions.switchToContactManagement, switchToContactManagement)\n}\n\nexport function* watchSwitchToEmailTemplatesLibrary() {\n yield takeEvery(Actions.switchToEmailTemplatesLibrary, switchToEmailTemplatesLibrary)\n}\n\nexport function* watchSwitchToSearchPool() {\n yield takeEvery(Actions.switchToSearchPool, switchToSearchPool)\n}\n\nexport function* watchUploadLinkedInMediaFileStart() {\n yield takeEvery(Actions.uploadLinkedInMediaFileStart, uploadLinkedInMediaFileStart)\n}\n\nexport function* watchUploadFacebookMediaFileStart() {\n yield takeEvery(Actions.uploadFacebookMediaFileStart, uploadFacebookMediaFileStart)\n}\n\nexport function* watchSaveDeletedExternallyForContentStart() {\n yield takeEvery(Actions.saveDeletedExternallyForContentStart, saveDeletedExternallyForContentStart)\n}\n\nexport function* watchEditorAiRequestStart() {\n yield takeEvery(Actions.editorAiRequestStart, editorAiRequestStart)\n}\n\nexport function* watchBuildSocialMediaLinkStart() {\n yield takeEvery(Actions.buildSocialMediaLinkStart, buildSocialMediaLinkStart)\n}\n\nexport function* watchDownloadEmailEvents() {\n yield takeEvery(Actions.downloadEmailEventsStart, downloadEmailEvents)\n}\n\nexport function* watchOpenNewContent() {\n yield takeEvery(Actions.openNewContent, openNewContent)\n}\n\nexport function* watchCloseOtsWelcomeDialog() {\n yield takeEvery(Actions.closeOtsWelcomeDialog, closeOtsWelcomeDialog)\n}\n\nexport function* watchFetchKpiStatistics() {\n yield takeEvery(Actions.fetchKpiStatisticsStart, fetchKpiStatistics)\n}\n\nexport function* watchCreateOtsDraft() {\n yield takeEvery(Actions.createOtsDraftStart, createOtsDraft)\n}\n\nexport default function* mainSaga() {\n yield all([\n watchSaveCampaignStart(),\n watchSaveCampaignFormlessStart(),\n watchSaveContentFormlessStart(),\n watchSaveContentStart(),\n watchDeleteContentStart(),\n watchDeleteCampaignStart(),\n watchCloneContentsFormData(),\n watchOpenEditContentDialog(),\n watchOpenOldEditContentDialog(),\n watchFetchCampaignDropdownOptionsStart(),\n watchFetchContentDropdownOptionsStart(),\n watchFetchContactDropdownOptionsStart(),\n watchFetchDistributionListDropdownOptionsStart(),\n watchFetchMediaFilesStart(),\n watchFetchMoreMediaFilesStart(),\n watchDeleteMediaFileStart(),\n watchUploadEditorImageStart(),\n watchFetchStatisticsStart(),\n watchLockContentFormStart(),\n watchUnlockContentFormStart(),\n watchOpenViewContentDialog(),\n watchDispatchContentRequestStart(),\n watchSwitchToContactManagement(),\n watchSwitchToEmailTemplatesLibrary(),\n watchSwitchToSearchPool(),\n watchUploadLinkedInMediaFileStart(),\n watchUploadFacebookMediaFileStart(),\n watchSaveDeletedExternallyForContentStart(),\n watchEditorAiRequestStart(),\n watchBuildSocialMediaLinkStart(),\n watchDownloadEmailEvents(),\n watchOpenNewContent(),\n watchCloseOtsWelcomeDialog(),\n watchFetchKpiStatistics(),\n watchGetContentStart(),\n watchCreateOtsDraft()\n ])\n}\n","import { put, takeEvery, all, select } from 'redux-saga/effects'\nimport * as Selectors from 'selectors'\n\nimport * as Actions from 'actions/content_desk'\n\nexport function* uiEnteredQuery({ payload: query }) {\n const selectedQueryType = yield select(Selectors.getCDeskSelectedQueryType)\n\n if (query !== '') {\n const queries = query.split(',').map(q => q.trim()).filter(q => q)\n\n for (let i = 0; i < queries.length; i += 1) {\n yield put(Actions.addSearchQuery({\n query: queries[i],\n selectedQueryType\n }))\n }\n }\n\n yield put(Actions.search())\n}\n\nexport function* setSortBy({ payload: { type } }) {\n if (type === 'contents') {\n yield put(Actions.searchContentsStart())\n }\n\n if (type === 'campaigns') {\n yield put(Actions.searchCampaignsStart())\n }\n}\n\nexport function* uiRemoveFilter({ payload: { index, field } }) {\n yield put(Actions.removeFilter({ index, field }))\n yield put(Actions.search())\n}\n\nexport function* uiUpdateFilter({ payload }) {\n yield put(Actions.updateFilter(payload))\n yield put(Actions.search())\n}\n\nexport function* watchUiEnteredQuery() {\n yield takeEvery(Actions.uiEnteredQuery, uiEnteredQuery)\n}\n\nexport function* watchUiRemoveFilter() {\n yield takeEvery(Actions.uiRemoveFilter, uiRemoveFilter)\n}\n\nexport function* watchUiUpdateFilter() {\n yield takeEvery(Actions.uiUpdateFilter, uiUpdateFilter)\n}\n\nexport function* watchSetSortBy() {\n yield takeEvery(Actions.setSortBy, setSortBy)\n}\n\nexport default function* filterSaga() {\n yield all([\n watchUiEnteredQuery(),\n watchUiRemoveFilter(),\n watchUiUpdateFilter(),\n watchSetSortBy()\n ])\n}\n","import { put, takeEvery, all, call, select, take, race, delay } from 'redux-saga/effects'\nimport { fromJS } from 'immutable'\nimport moment from 'moment'\n\nimport * as Actions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\nimport * as ContactActions from 'actions/contact_management'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/content_desk'\nimport * as ContactsManagementApi from 'api/contacts_management'\n\nimport { OtsStatuses } from 'static/constants'\n\nexport function* search() {\n // reset page number\n yield put(Actions.setPage({ key: 'campaignPage', value: 1 }))\n yield put(Actions.setPage({ key: 'contentPage', value: 1 }))\n yield put(Actions.searchCampaignsStart())\n yield put(Actions.searchContentsStart())\n}\n\nexport function* searchCampaignsStart() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const { campaigns, contents } = yield select(Selectors.getCDeskSearchBody)\n const page = yield select(Selectors.getCDeskCampaignPage)\n const limit = yield select(Selectors.getCDeskCampaignLimit)\n const sortBy = yield select(Selectors.getCDeskCampaignSortBy)\n const sortOrder = yield select(Selectors.getCDeskCampaignSortOrder)\n const multiFilter = yield select(Selectors.getCDeskCampaignFilters)\n\n const body = {\n filter: campaigns.includes,\n multi_filter: multiFilter,\n content_filter: contents.includes,\n page,\n limit,\n sort_by: sortBy,\n sort_order: sortOrder\n }\n\n const result = yield call(Api.searchCampaigns, body)\n yield put(Actions.setCampaigns(result))\n\n yield put(Actions.searchCampaignsSuccess())\n } catch (error) {\n yield put(Actions.searchCampaignsError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* searchContentsStart() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const { contents, campaigns } = yield select(Selectors.getCDeskSearchBody)\n const page = yield select(Selectors.getCDeskContentPage)\n const limit = yield select(Selectors.getCDeskContentLimit)\n const sortBy = yield select(Selectors.getCDeskContentSortBy)\n const sortOrder = yield select(Selectors.getCDeskContentSortOrder)\n const multiFilter = yield select(Selectors.getCDeskContentFilters)\n\n const body = {\n filter: contents.includes,\n multi_filter: multiFilter,\n campaign_filter: campaigns.includes,\n page,\n limit,\n sort_by: sortBy,\n sort_order: sortOrder\n }\n\n const result = yield call(Api.searchContents, body)\n yield put(Actions.setContents(result))\n\n yield put(Actions.searchContentsSuccess())\n } catch (error) {\n yield put(Actions.searchContentsError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* fetchRecipientContact({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const body = {\n filter: [],\n page: 1,\n limit: 10,\n ids: [payload.id]\n }\n\n const result = yield call(ContactsManagementApi.fetchContacts, body)\n yield put(ContactActions.fetchContactsSuccess(result))\n yield put(ContactActions.openContactViewDialog(fromJS(result.contacts[0])))\n yield put(Actions.fetchRecipientContactSuccess())\n } catch (error) {\n yield put(Actions.fetchRecipientContactError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* refreshContentsStatusStart() {\n const i18n = yield select(Selectors.getI18n)\n const contentsData = yield select(Selectors.getCDeskContents)\n const campaignsContentsData = yield select(Selectors.getCDeskCampaignsContents)\n const calendarContents = yield select(Selectors.getCDeskCalendarContents)\n const calendarCampaignsContentsData = yield select(Selectors.getCDeskCalendarCampaignsContents)\n const { items } = contentsData.toJS()\n const { items: calendarContentsData } = calendarContents.toJS()\n\n const filterCond = c => {\n let notTooOld = true\n\n if (c.otsPressRelease && c.plannedFor) {\n const plannedFor = moment(c.plannedFor)\n const now = moment()\n notTooOld = now.diff(plannedFor, 'days') <= 7\n }\n\n return c.status === 'scheduled'\n || (\n c.otsPressRelease\n && c.otsPressRelease.status !== OtsStatuses.DISTRIBUTED\n && notTooOld\n )\n }\n\n const scheduledContents = [\n ...items.filter(c => filterCond(c)),\n ...campaignsContentsData.filter(c => filterCond(c)),\n ...calendarContentsData.filter(c => filterCond(c)),\n ...calendarCampaignsContentsData.filter(c => filterCond(c))\n ]\n\n const contentIds = [...new Set(scheduledContents.map(c => c.id))]\n\n try {\n if (contentIds.length !== 0) {\n while (true) {\n const { stop } = yield race({\n stop: take(Actions.stopRefreshContentsStatus),\n refresh: delay(30000)\n })\n\n if (stop) {\n break\n }\n\n const body = {\n ids: contentIds\n }\n\n const { contents } = yield call(Api.fetchContents, body)\n yield put(Actions.setUpdatedContents(contents))\n yield put(Actions.setUpdatedCampaignsContents(contents))\n yield put(Actions.refreshContentsStatusSuccess())\n }\n }\n } catch (error) {\n yield put(Actions.refreshContentsStatusError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* linkedInCompanySearchStart({ payload }) {\n try {\n const results = yield call(Api.searchLinkedInCompany, { query: payload })\n yield put(Actions.linkedInCompanySearchSuccess(results))\n } catch (error) {\n yield put(Actions.linkedInCompanySearchError(error))\n\n const i18n = yield select(Selectors.getI18n)\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* watchLinkedInCompnaySearchStart() {\n yield takeEvery(Actions.linkedInCompanySearchStart, linkedInCompanySearchStart)\n}\n\nexport function* watchSearch() {\n yield takeEvery(Actions.search, search)\n}\n\nexport function* watchSearchCampaignsStart() {\n yield takeEvery(Actions.searchCampaignsStart, searchCampaignsStart)\n}\n\nexport function* watchSearchContentsStart() {\n yield takeEvery(Actions.searchContentsStart, searchContentsStart)\n}\n\nexport function* watchRefreshContentsStatusStart() {\n yield takeEvery(Actions.refreshContentsStatusStart, refreshContentsStatusStart)\n}\n\nexport function* watchFetchRecipientContactStart() {\n yield takeEvery(Actions.fetchRecipientContactStart, fetchRecipientContact)\n}\n\nexport default function* searchSaga() {\n yield all([\n watchSearch(),\n watchLinkedInCompnaySearchStart(),\n watchSearchCampaignsStart(),\n watchSearchContentsStart(),\n watchRefreshContentsStatusStart(),\n watchFetchRecipientContactStart()\n ])\n}\n","/* global window */\nimport { put, takeEvery, all, call, select } from 'redux-saga/effects'\nimport * as Actions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/content_desk'\n\nimport moment from 'moment-timezone'\n\nexport function* fetchCalendarEvents({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const page = 1\n const limit = 300\n const dateFilter = [\n { field: 'scheduled_for_from', value: moment(payload).subtract(7, 'days') },\n { field: 'scheduled_for_to', value: moment(payload).endOf('month').add(7, 'days') },\n { field: 'planned_for_from', value: moment(payload).subtract(7, 'days') },\n { field: 'planned_for_to', value: moment(payload).endOf('month').add(7, 'days') }\n ]\n\n const body = {\n date_filter: dateFilter,\n page,\n limit\n }\n\n const contentsResult = yield call(Api.searchContents, body)\n\n const campaignDateFilter = [\n { field: 'start_date_to', value: moment(payload).endOf('month').add(7, 'days') },\n { field: 'end_date_from', value: moment(payload).subtract(7, 'days') }\n ]\n\n const campaignsResult = yield call(Api.searchCampaigns, {\n date_filter: campaignDateFilter,\n page,\n limit\n })\n\n yield put(Actions.fetchCalendarEventsSuccess({\n contents: {\n total: contentsResult.total,\n items: contentsResult.ccdContents\n },\n campaigns: {\n total: campaignsResult.total,\n items: campaignsResult.ccdCampaigns,\n allNames: campaignsResult.allNames\n }\n }))\n } catch (error) {\n yield put(Actions.fetchCalendarEventsError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* onCalendarContentClick({ payload }) {\n const type = payload.get('type')\n const status = payload.get('status')\n\n if (type === 'ots_press_release') {\n if (status === 'distributed' || status === 'declined') {\n yield put(Actions.openViewContentDialog(payload))\n } else {\n const otsPressRelease = payload.get('otsPressRelease')\n\n if (otsPressRelease) {\n yield call(window.open, 'https://go.newsaktuell.de', '_blank', 'noopener,noreferrer')\n } else {\n yield put(Actions.lockContentStart({ id: payload.get('id'), openEditContentDialog: true }))\n }\n }\n }\n\n if (type === 'email') {\n if (status === 'released' || status === 'failed') {\n yield put(Actions.openViewContentDialog(payload))\n } else {\n yield put(Actions.lockContentStart({ id: payload.get('id'), openEditContentDialog: true }))\n }\n }\n\n if (type === 'facebook' || type === 'linkedin') {\n if (status === 'released' || status === 'failed') {\n yield put(Actions.openViewContentDialog(payload))\n } else {\n yield put(Actions.lockContentStart({ id: payload.get('id'), openOldEditContentDialog: true }))\n }\n }\n}\n\nexport function* watchFetchCalendarContentsStart() {\n yield takeEvery(Actions.fetchCalendarEventsStart, fetchCalendarEvents)\n}\n\nexport function* watchOnCalendarContentClick() {\n yield takeEvery(Actions.onCalendarContentClick, onCalendarContentClick)\n}\n\nexport default function* calendarSaga() {\n yield all([\n watchFetchCalendarContentsStart(),\n watchOnCalendarContentClick()\n ])\n}\n","import { all } from 'redux-saga/effects'\nimport mainSaga from './main'\nimport filterSaga from './filter'\nimport searchSaga from './search'\nimport calendarSaga from './calendar'\n\nexport default function* contentDeskSaga() {\n yield all([\n mainSaga(),\n filterSaga(),\n searchSaga(),\n calendarSaga()\n ])\n}\n","import {\n put,\n takeEvery,\n all,\n call,\n select,\n take\n} from 'redux-saga/effects'\n\nimport * as Api from 'api/contacts_management'\nimport * as BffApi from 'api/bff'\nimport * as Actions from 'actions/contact_management'\nimport * as AppActions from 'actions/app'\nimport { fetchCDeskConfigRequestStart } from 'actions/config'\nimport * as Selectors from 'selectors'\nimport { downloadBlob } from 'utils/sagas'\nimport { is } from 'immutable'\n\nimport { ExcelMimeType } from 'static/constants'\n\nexport function* createDistributionListStart() {\n const i18n = yield select(Selectors.getI18n)\n const data = yield select(Selectors.getCmListData)\n try {\n const body = {\n name: data.get('name'),\n description: data.get('description')\n }\n const result = yield call(Api.createDistributionList, body)\n\n if (result.message) {\n yield put(Actions.createDistributionListError())\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('distribution_list_name_exists'),\n variant: 'error'\n }))\n\n return\n }\n\n yield put(Actions.createDistributionListSuccess(result))\n } catch (error) {\n yield put(Actions.createDistributionListError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: error.response.message,\n variant: 'error'\n }))\n }\n}\n\nexport function* addContactsToDistributionListStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n const ccdPlan = yield select(Selectors.getCDeskPlan)\n const data = yield select(Selectors.getCmListData)\n\n try {\n let contacts = data.get('contacts')\n\n if (payload) {\n if (payload.source === 'anewstip') {\n contacts = yield select(Selectors.getAnewstipImporContactsForDistributionLists)\n } else if (payload.source === 'influencer') {\n contacts = yield select(Selectors.getInfluencerImportContactsForDistributionLists)\n }\n }\n\n const body = {\n contact_ids: contacts.map(contact => contact.get('id'))\n }\n\n if (data.get('id') !== null) {\n const result = yield call(Api.addContactsToDistributionList, data.get('id'), body)\n yield put(Actions.addContactsToDistributionListSuccess(result))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('added_to_distribution_list'),\n variant: 'success'\n }))\n } else if (contacts.size <= ccdPlan.get('contactsPerDistListLimit')) {\n yield put(Actions.createDistributionListStart())\n yield take(Actions.createDistributionListSuccess)\n\n const allLists = yield select(Selectors.getCmDistributionLists)\n\n const result = yield call(\n Api.addContactsToDistributionList,\n allLists\n .find(list => list.get('name') === data.get('name'))\n .get('id'),\n body\n )\n yield put(Actions.addContactsToDistributionListSuccess(result))\n yield put(AppActions.showAppSnackbarMessage({\n text: `${i18n.get('new_distribution_list')} ${i18n.get('created')}`,\n variant: 'success'\n }))\n }\n\n if (contacts.size > ccdPlan.get('contactsPerDistListLimit')) {\n yield put(Actions.addContactsToDistributionListError())\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('contacts_per_dist_list_limit_reached'),\n variant: 'error'\n }))\n }\n } catch (error) {\n yield put(Actions.addContactsToDistributionListError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: error.response.message,\n variant: 'error'\n }))\n }\n}\n\nexport function* saveContactsStart() {\n const i18n = yield select(Selectors.getI18n)\n const formData = yield select(Selectors.getCmFormData)\n const prevData = yield select(Selectors.getCmSelectedContact)\n const contactId = formData.get('id')\n const contactsNewsradarsId = formData.get('contactsNewsradarsId')\n\n let tagsToAdd = []\n let tagsToDelete = []\n\n const uploadedPhoto = yield select(Selectors.getCmUploadedPhoto)\n\n const tagIds = formData.get('customTags').map(t => t.get('id'))\n\n if (contactId) {\n const oldTagIds = prevData.get('customTags').map(t => t.get('id'))\n\n tagsToAdd = tagIds.filter(id => !oldTagIds.includes(id)).toJS()\n tagsToDelete = oldTagIds.filter(id => !tagIds.includes(id)).toJS()\n } else {\n tagsToAdd = tagIds.toJS()\n }\n\n const languagesToAdd = formData.get('languages').map(t => t.get('id')).toJS()\n const mediaTypesToAdd = formData.get('mediaTypes').map(t => t.get('id')).toJS()\n const mediaTopicsToAdd = formData.get('mediaTopics').map(t => t.get('id')).toJS()\n\n let picture = formData.get('picture')\n\n if (uploadedPhoto) {\n const uploadFileForm = [\n {\n key: 'file',\n value: uploadedPhoto\n }\n ]\n\n const { url } = yield call(BffApi.uploadFile, uploadFileForm)\n picture = url\n }\n\n const isMainFieldChanged = (key, value) => (\n key !== 'preferredLanguageId'\n && key !== 'notes'\n && key !== 'customTags'\n && !is(value, prevData.get(key))\n )\n\n const mainFieldsChanged = formData.some((value, key) => isMainFieldChanged(key, value))\n const switchContact = (formData.get('supplier') !== null) && contactId && mainFieldsChanged\n\n const requestBody = {\n first_name: formData.get('firstName'),\n last_name: formData.get('lastName'),\n mail: formData.get('mail'),\n title: formData.get('title'),\n job_title: formData.get('jobTitle'),\n dossier: formData.get('dossier'),\n picture,\n address: formData.get('address'),\n phone: formData.get('phone'),\n fax: formData.get('fax'),\n external_publication: formData.get('externalPublication'),\n website: formData.get('website'),\n company: formData.get('company'),\n notes: formData.get('notes'),\n preferred_language_id: formData.get('preferredLanguageId'),\n country_id: formData.getIn(['country', 'id'], null),\n state_id: formData.getIn(['state', 'id'], null),\n linkedin_url: formData.get('linkedinUrl'),\n twitter_url: formData.get('twitterUrl'),\n facebook_url: formData.get('facebookUrl'),\n threads_url: formData.get('threadsUrl'),\n tiktok_url: formData.get('tiktokUrl'),\n instagram_url: formData.get('instagramUrl'),\n youtube_url: formData.get('youtubeUrl'),\n other_url: formData.get('otherUrl'),\n contacts_newsradars_id: contactsNewsradarsId,\n supplier: formData.get('supplier'),\n distribution_lists: formData.get('distributionLists').map(list => ({\n distribution_list_id: list.get('id')\n })).toJS(),\n contacts_languages: languagesToAdd.map(languageId => ({\n language_id: languageId\n })),\n contacts_media_types: mediaTypesToAdd.map(mediaTypeId => ({\n media_type_id: mediaTypeId\n })),\n contacts_media_topics: mediaTopicsToAdd.map(topicId => ({\n media_topic_id: topicId\n })),\n switch_contact: switchContact\n }\n\n try {\n let result\n let text\n\n if (contactId) {\n if (tagsToAdd.length) {\n yield call(Api.addTagToContact, contactsNewsradarsId, { custom_tag_ids: tagsToAdd })\n }\n\n if (tagsToDelete.length) {\n yield all(tagsToDelete.map(customTagId => call(Api.removeTagFromContact, contactsNewsradarsId, customTagId)))\n }\n\n result = yield call(Api.updateContacts, contactId, requestBody)\n\n if (result.message) {\n yield put(Actions.saveContactsError())\n yield put(Actions.showEmailExistingDialog())\n\n return\n }\n\n text = `${i18n.get('contact')} ${i18n.get('updated')}`\n } else {\n result = yield call(Api.createContacts, requestBody)\n\n if (result.message) {\n yield put(Actions.saveContactsError())\n yield put(Actions.showEmailExistingDialog())\n\n return\n }\n\n if (tagsToAdd.length) {\n yield call(Api.addTagToContact, result.contactsNewsradarsId, { custom_tag_ids: tagsToAdd })\n }\n\n if (tagsToAdd.length || mediaTopicsToAdd.length) {\n requestBody.contacts_newsradars_id = result.contactsNewsradarsId\n requestBody.contacts_media_topics = mediaTopicsToAdd.map(id => ({\n contact_id: result.id,\n media_topic_id: id\n }))\n\n result = yield call(Api.updateContacts, result.id, requestBody)\n }\n\n text = `${i18n.get('contact')} ${i18n.get('created')}`\n }\n\n yield put(Actions.saveContactsSuccess(result))\n\n yield put(\n AppActions.showAppMessage({\n text,\n success: true\n })\n )\n\n if (switchContact) {\n yield put(Actions.fetchContactsStart())\n }\n } catch (error) {\n yield put(Actions.saveContactsError())\n yield put(\n AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n })\n )\n }\n}\n\nexport function* deleteContactsStart() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const selectedContacts = yield select(Selectors.getCmContactsToDelete)\n const contactsToDelete = selectedContacts.map(c => ({\n id: c.get('id'),\n supplier: c.get('supplier')\n }))\n\n const body = {\n contacts: contactsToDelete\n }\n\n const result = yield call(Api.deleteContacts, body)\n\n yield put(Actions.deleteContactsSuccess(result))\n yield put(Actions.fetchContactsStart())\n yield put(\n AppActions.showAppMessage({\n text: `${i18n.get('contacts')} ${i18n.get('deleted')}`,\n success: true\n })\n )\n } catch (error) {\n yield put(Actions.deleteContactsError(error))\n yield put(\n AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n })\n )\n }\n}\n\nexport function* removeContactFromListStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n const listData = yield select(Selectors.getCmListData)\n const id = payload.get('listId') ? payload.get('listId') : listData.get('id')\n const contactId = payload.get('id')\n\n let result\n\n try {\n result = yield call(\n Api.removeContactFromList,\n id,\n contactId\n )\n yield put(Actions.removeContactFromListSuccess(result))\n } catch (error) {\n yield put(Actions.removeContactFromListError(error))\n yield put(\n AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n })\n )\n }\n}\n\nexport function* updateDistributionListStart() {\n const i18n = yield select(Selectors.getI18n)\n const data = yield select(Selectors.getCmListData)\n\n let result\n\n try {\n const body = {\n name: data.get('name'),\n description: data.get('description')\n }\n\n result = yield call(\n Api.updateDistributionList,\n data.get('id'),\n body\n )\n\n if (result.message) {\n yield put(Actions.updateDistributionListError())\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('distribution_list_name_exists'),\n variant: 'error'\n }))\n\n return\n }\n\n yield put(Actions.clearListData())\n yield put(Actions.updateDistributionListSuccess(result))\n yield put(\n AppActions.showAppMessage({\n text: `${i18n.get('distribution_list')} ${i18n.get('updated')}`,\n success: true\n })\n )\n } catch (error) {\n yield put(Actions.updateDistributionListError(error))\n yield put(\n AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n })\n )\n }\n}\n\nexport function* deleteDistributionListStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n const ccdPlan = yield select(Selectors.getCDeskPlan)\n const ccdPlanUsage = yield select(Selectors.getCDeskPlanUsage)\n\n try {\n const result = yield call(Api.deleteDistributionList, payload)\n\n if (ccdPlanUsage.get('distributionListsUsage') > ccdPlan.get('distributionListsLimit')) {\n yield put(fetchCDeskConfigRequestStart())\n }\n\n yield put(Actions.deleteDistributionListSuccess(result))\n yield put(AppActions.showAppSnackbarMessage({\n text: `${i18n.get('distribution_list')} ${i18n.get('deleted')}`,\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.deleteDistributionListError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* uploadContactsStart({ payload: file }) {\n const i18n = yield select(Selectors.getI18n)\n const autoCreateDistributionList = yield select(Selectors.getCmAutoCreateDistributionList)\n const autoAddToExistingList = yield select(Selectors.getCmAutoAddToExistingList)\n const listData = yield select(Selectors.getCmListData)\n const formData = [\n {\n key: 'file',\n value: file\n },\n {\n key: 'auto_create_distribution_list',\n value: autoCreateDistributionList\n },\n {\n key: 'new_list_name',\n value: listData.get('name')\n },\n {\n key: 'auto_add_to_existing_list',\n value: autoAddToExistingList\n },\n {\n key: 'existing_list_id',\n value: listData.get('id')\n }\n ]\n\n let result\n try {\n result = yield call(Api.uploadContacts, formData)\n\n if (autoCreateDistributionList || autoAddToExistingList) {\n yield put(Actions.fetchDistributionListsStart())\n }\n\n yield put(Actions.fetchContactsStart())\n\n yield put(Actions.uploadContactsSuccess(result))\n yield put(Actions.showUploadResultDialog())\n } catch (error) {\n yield put(Actions.uploadContactsError(error))\n\n let msg = i18n.get('failed')\n\n if (error.response && error.response.statusCode === 403) {\n msg = error.response.message\n }\n\n yield put(\n AppActions.showAppSnackbarMessage({\n text: msg,\n variant: 'error'\n })\n )\n }\n}\n\nexport function* changeContactTags({ payload }) {\n const existing = payload.newValues.filter(v => !v.isNew).map(t => ({ name: t.label, id: t.value, type: 'custom' }))\n const isNew = payload.newValues.filter(v => v.isNew).map(t => t.label)\n let successData\n let result = []\n try {\n if (isNew.length) {\n result = yield all(isNew.map(tag => call(Api.createContactTag, { name: tag })))\n yield put(Actions.createTag(result))\n }\n\n successData = [...existing, ...result]\n yield put(Actions.changeTagSuccess(successData))\n } catch (error) {\n yield put(Actions.changeTagError(error))\n yield put(\n AppActions.showAppMessage({\n success: false\n })\n )\n }\n}\n\nexport function* renameTag({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n const id = payload.tagId\n const { name } = payload\n\n try {\n const result = yield call(Api.renameContactTag, id, name)\n yield put(Actions.renameTagSuccess(result))\n yield put(Actions.closeTagRenameDialog())\n yield put(\n AppActions.showAppMessage({\n text: i18n.get('tag_renamed'),\n success: true\n })\n )\n } catch (error) {\n yield put(Actions.renameTagError(error))\n yield put(\n AppActions.showAppMessage({\n success: false\n })\n )\n }\n}\n\nexport function* deleteTag({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n const { id } = payload\n\n try {\n yield call(Api.deleteContactTag, id)\n yield put(Actions.deleteTagSuccess({ id }))\n yield put(Actions.closeTagDeleteDialog())\n yield put(\n AppActions.showAppMessage({\n text: i18n.get('tag_deleted'),\n success: true\n })\n )\n } catch (error) {\n yield put(Actions.deleteTagError(error))\n yield put(\n AppActions.showAppMessage({\n success: false\n })\n )\n }\n}\n\nexport function* downloadContactsExcelStart({ payload: { contacts, sheetName, isTemplate } }) {\n try {\n const body = {\n contacts,\n sheet_name: sheetName,\n is_template: isTemplate\n }\n const result = yield call(Api.downloadContactsExcel, body)\n yield call(downloadBlob, result, isTemplate ? 'import_contacts_template.xlsx' : 'contacts.xlsx', ExcelMimeType)\n yield put(Actions.downloadContactsExcelSuccess(result))\n } catch (error) {\n yield put(Actions.downloadContactsExcelError(error))\n yield put(\n AppActions.showAppMessage({\n success: false\n })\n )\n }\n}\n\nexport function* mergeDistributionListsStart() {\n const i18n = yield select(Selectors.getI18n)\n const data = yield select(Selectors.getCmSelectedLists)\n const ccdPlan = yield select(Selectors.getCDeskPlan)\n const ccdPlanUsage = yield select(Selectors.getCDeskPlanUsage)\n const lists = data.get('lists')\n const contactIds = lists.map(l => l.get('contacts').map(c => c.get('id'))).flatten().toSet()\n\n try {\n const body = {\n ids: lists.map(l => l.get('id')),\n contact_ids: contactIds,\n name: data.get('name'),\n delete_merged_lists: data.get('deleteMergedLists')\n }\n const result = yield call(Api.mergeDistributionLists, body)\n\n if (result.message) {\n yield put(Actions.mergeDistributionListsError())\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('distribution_list_name_exists'),\n variant: 'error'\n }))\n\n return\n }\n\n if (ccdPlanUsage.get('distributionListsUsage') > ccdPlan.get('distributionListsLimit')) {\n yield put(fetchCDeskConfigRequestStart())\n }\n\n yield put(Actions.mergeDistributionListsSuccess(result))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('distribution_lists_merged'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.mergeDistributionListsError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: error.response.message,\n variant: 'error'\n }))\n }\n}\n\nexport function* downloadDistributionListStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n try {\n const body = {\n id: payload.get('id'),\n sheet_name: i18n.get('contacts')\n }\n const result = yield call(Api.downloadDistributionList, body)\n yield call(downloadBlob, result, `${payload.get('name')}.xlsx`, ExcelMimeType)\n yield put(Actions.downloadDistributionListSuccess(result))\n } catch (error) {\n yield put(Actions.downloadDistributionListError(error))\n yield put(\n AppActions.showAppMessage({\n success: false\n })\n )\n }\n}\n\nexport function* watchCreateDistributionListStart() {\n yield takeEvery(\n Actions.createDistributionListStart,\n createDistributionListStart\n )\n}\n\nexport function* watchUpdateDistributionListStart() {\n yield takeEvery(\n Actions.updateDistributionListStart,\n updateDistributionListStart\n )\n}\n\nexport function* watchDeleteDistributionListStart() {\n yield takeEvery(\n Actions.deleteDistributionListStart,\n deleteDistributionListStart\n )\n}\n\nexport function* watchAddContactsToDistributionListStart() {\n yield takeEvery(\n Actions.addContactsToDistributionListStart,\n addContactsToDistributionListStart\n )\n}\n\nexport function* watchSaveContactStart() {\n yield takeEvery(Actions.saveContactsStart, saveContactsStart)\n}\n\nexport function* watchRemoveContactFromListStart() {\n yield takeEvery(\n Actions.removeContactFromListStart,\n removeContactFromListStart\n )\n}\n\nexport function* watchDeleteContactsStart() {\n yield takeEvery(Actions.deleteContactsStart, deleteContactsStart)\n}\n\nexport function* watchUploadContactsStart() {\n yield takeEvery(Actions.uploadContactsStart, uploadContactsStart)\n}\n\nexport function* watchChangeContactTagsStart() {\n yield takeEvery(Actions.changeTagStart, changeContactTags)\n}\n\nexport function* watchRenameTagStart() {\n yield takeEvery(Actions.renameTagStart, renameTag)\n}\n\nexport function* watchDeleteTagStart() {\n yield takeEvery(Actions.deleteTagStart, deleteTag)\n}\n\nexport function* watchDownloadContactsExcelStart() {\n yield takeEvery(Actions.downloadContactsExcelStart, downloadContactsExcelStart)\n}\n\nexport function* watchMergeDistributionListsStart() {\n yield takeEvery(Actions.mergeDistributionListsStart, mergeDistributionListsStart)\n}\n\nexport function* watchDownloadDistributionListStart() {\n yield takeEvery(Actions.downloadDistributionListStart, downloadDistributionListStart)\n}\n\nexport default function* mainSaga() {\n yield all([\n watchSaveContactStart(),\n watchDeleteContactsStart(),\n watchCreateDistributionListStart(),\n watchUpdateDistributionListStart(),\n watchDeleteDistributionListStart(),\n watchAddContactsToDistributionListStart(),\n watchRemoveContactFromListStart(),\n watchUploadContactsStart(),\n watchChangeContactTagsStart(),\n watchRenameTagStart(),\n watchDeleteTagStart(),\n watchDownloadContactsExcelStart(),\n watchMergeDistributionListsStart(),\n watchDownloadDistributionListStart()\n ])\n}\n","import { put, takeEvery, all, select } from 'redux-saga/effects'\nimport * as Selectors from 'selectors'\nimport * as Actions from 'actions/contact_management'\n\nexport function* uiEnteredQuery({ payload: query }) {\n const selectedQueryType = yield select(Selectors.getCmSelectedQueryType)\n\n if (query !== '') {\n const queries = query.split(',').map(q => q.trim()).filter(q => q)\n\n for (let i = 0; i < queries.length; i += 1) {\n yield put(Actions.addSearchQuery({\n query: queries[i],\n selectedQueryType\n }))\n }\n }\n\n yield put(Actions.fetchAll())\n}\n\nexport function* addDistributionListContactFilter({ payload }) {\n yield put(Actions.addDistributionListContactsSearchQuery({\n query: payload,\n selectedQueryType: 'distribution_list_contacts'\n }))\n\n yield put(Actions.fetchAll())\n}\n\nexport function* uiRemoveFilter({ payload: { index, field } }) {\n yield put(Actions.removeFilter({ index, field }))\n yield put(Actions.fetchAll())\n}\n\nexport function* uiRemoveDistributionListContactFilter() {\n yield put(Actions.fetchAll())\n}\n\nexport function* uiUpdateFilter({ payload }) {\n yield put(Actions.updateFilter(payload))\n yield put(Actions.fetchAll())\n}\n\nexport function* watchUiEnteredQuery() {\n yield takeEvery(Actions.uiEnteredQuery, uiEnteredQuery)\n}\n\nexport function* watchAddDistributionListContactFilter() {\n yield takeEvery(Actions.addDistributionListContactFilter, addDistributionListContactFilter)\n}\n\nexport function* watchUiRemoveFilter() {\n yield takeEvery(Actions.uiRemoveFilter, uiRemoveFilter)\n}\n\nexport function* watchUiRemoveDistributionListContactFilter() {\n yield takeEvery(Actions.removeDistributionListContactFilter, uiRemoveDistributionListContactFilter)\n}\n\nexport function* watchUiUpdateFilter() {\n yield takeEvery(Actions.uiUpdateFilter, uiUpdateFilter)\n}\n\nexport default function* filterSaga() {\n yield all([\n watchUiEnteredQuery(),\n watchAddDistributionListContactFilter(),\n watchUiRemoveFilter(),\n watchUiRemoveDistributionListContactFilter(),\n watchUiUpdateFilter()\n ])\n}\n","import { put, takeEvery, all, call, select } from 'redux-saga/effects'\nimport * as Actions from 'actions/contact_management'\nimport * as AppActions from 'actions/app'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/contacts_management'\n\nexport function* fetchContactsStart() {\n try {\n const { contacts } = yield select(Selectors.getCdSearchBody)\n const page = yield select(Selectors.getCmContactPage)\n const limit = yield select(Selectors.getCmContactLimit)\n const sortBy = yield select(Selectors.getCmSortBy)\n const sortOrder = yield select(Selectors.getCmSortOrder)\n const showUnsubscribed = yield select(Selectors.getCmShowUnsubscribed)\n\n const body = {\n filter: contacts.includes,\n page,\n limit,\n sort_by: sortBy,\n sort_order: sortOrder,\n ...(showUnsubscribed && { unsubscribed: true })\n }\n\n const result = yield call(Api.fetchContacts, body)\n yield put(Actions.fetchContactsSuccess(result))\n } catch (error) {\n yield put(Actions.fetchContactsError(error))\n yield put(\n AppActions.showAppMessage({\n success: false\n })\n )\n }\n}\n\nexport function* setSortBy() {\n yield put(Actions.fetchContactsStart())\n}\n\nexport function* setContactsPage() {\n yield put(Actions.fetchContactsStart())\n}\nexport function* setDistributionListsPage() {\n yield put(Actions.fetchDistributionListsStart())\n}\n\nexport function* fetchDistributionListsStart() {\n const a = yield select(Selectors.getCdSearchBody)\n const { distributionLists } = a\n const page = yield select(Selectors.getCmDistributionListPage)\n const limit = yield select(Selectors.getCmDistributionListLimit)\n const sortBy = yield select(Selectors.getCmListsSortBy)\n const sortOrder = yield select(Selectors.getCmListsSortOrder)\n\n const body = {\n // filter: distributionLists.includes,\n multi_filter: { operator: 'or', conditions: distributionLists.includes },\n page,\n limit,\n sort_by: sortBy,\n sort_order: sortOrder\n }\n try {\n const result = yield call(Api.fetchDistributionLists, body)\n yield put(Actions.fetchDistributionListsSuccess(result))\n } catch (error) {\n yield put(Actions.fetchDistributionListsError(error))\n yield put(\n AppActions.showAppMessage({\n success: false\n })\n )\n }\n}\n\nexport function* searchDistributionListStart({ payload }) {\n const page = yield select(Selectors.getCmDistributionListPage)\n const limit = yield select(Selectors.getCmDistributionListLimit)\n const sortBy = yield select(Selectors.getCmListsSortBy)\n const sortOrder = yield select(Selectors.getCmListsSortOrder)\n\n const body = {\n filter: payload.filter,\n page,\n limit,\n sort_by: sortBy,\n sort_order: sortOrder\n }\n try {\n const result = yield call(Api.fetchDistributionLists, body)\n yield put(Actions.searchDistributionListSuccess(result))\n } catch (error) {\n yield put(Actions.searchDistributionListError(error))\n }\n}\n\nexport function* setListSortBy() {\n yield put(Actions.fetchDistributionListsStart())\n}\n\nexport function* fetchTagsStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const page = yield select(Selectors.getCmTagsPage)\n const limit = yield select(Selectors.getCmTagsLimit)\n const sortBy = yield select(Selectors.getCmTagsSortBy)\n const sortOrder = yield select(Selectors.getCmTagsSortOrder)\n\n const body = {\n page,\n limit,\n sort_by: sortBy,\n sort_order: sortOrder,\n filter: payload.filter || []\n }\n\n const result = yield call(Api.searchTags, body)\n yield put(Actions.setContactTags(result))\n\n yield put(Actions.fetchTagsSuccess())\n } catch (error) {\n yield put(Actions.fetchTagsError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* setTagsSortBy() {\n yield put(Actions.fetchTagsStart({ filter: [] }))\n}\n\nexport function* fetchAll() {\n yield put(Actions.fetchContactsStart())\n yield put(Actions.fetchDistributionListsStart())\n}\n\nexport function* watchFetchDistributionListsStart() {\n yield takeEvery(\n Actions.fetchDistributionListsStart,\n fetchDistributionListsStart\n )\n}\n\nexport function* watchSearchDistributionListStart() {\n yield takeEvery(\n Actions.searchDistributionListStart,\n searchDistributionListStart\n )\n}\n\nexport function* watchfetchContactsStart() {\n yield takeEvery(Actions.fetchContactsStart, fetchContactsStart)\n}\n\nexport function* watchSetSortBy() {\n yield takeEvery(Actions.sortBy, setSortBy)\n}\n\nexport function* watchSetListSortBy() {\n yield takeEvery(Actions.listSortBy, setListSortBy)\n}\n\nexport function* watchSetTagsSortBy() {\n yield takeEvery(Actions.tagsSortBy, setTagsSortBy)\n}\n\nexport function* watchSetContactsPage() {\n yield takeEvery(Actions.setContactsPage, setContactsPage)\n}\nexport function* watchSetDistributionListsPage() {\n yield takeEvery(Actions.setDistributionListsPage, setDistributionListsPage)\n}\n\nexport function* watchContactDbRequestStart() {\n yield takeEvery(Actions.fetchAll, fetchAll)\n}\n\nexport function* watchFetchTagsStart() {\n yield takeEvery(Actions.fetchTagsStart, fetchTagsStart)\n}\n\nexport default function* searchSaga() {\n yield all([\n watchFetchDistributionListsStart(),\n watchSearchDistributionListStart(),\n watchfetchContactsStart(),\n watchSetSortBy(),\n watchSetListSortBy(),\n watchSetTagsSortBy(),\n watchSetContactsPage(),\n watchSetDistributionListsPage(),\n watchContactDbRequestStart(),\n watchFetchTagsStart()\n ])\n}\n","import { all } from 'redux-saga/effects'\nimport mainSaga from './main'\nimport filterSaga from './filter'\nimport searchSaga from './search'\n\nexport default function* contactManagementSaga() {\n yield all([\n mainSaga(),\n filterSaga(),\n searchSaga()\n ])\n}\n","import { put, call, takeEvery, all, select } from 'redux-saga/effects'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/notifications'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/bff'\n\nexport function* markAsReadStart({ payload: notificationIds }) {\n const body = {\n groot_notification_ids: notificationIds\n }\n\n try {\n const result = yield call(Api.markNotificationAsRead, body)\n\n yield put(Actions.updateNotifications(result))\n yield put(Actions.markAsReadSuccess())\n } catch (error) {\n yield put(Actions.markAsReadError())\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* fetchNotificationsStart() {\n const filters = yield select(Selectors.getNotificationsFilter)\n\n const page = filters.get('page') + 1\n const limit = filters.get('limit')\n const sortBy = filters.get('sortBy')\n const sortOrder = filters.get('sortOrder')\n\n try {\n const { hasMoreResults, notificationsList } = yield call(Api.fetchNotifications, page, limit, sortBy, sortOrder)\n\n yield put(Actions.setNotificationsPage(page))\n\n if (!hasMoreResults) {\n yield put(Actions.setLastPage())\n }\n\n yield put(Actions.fetchNotificationsSuccess(notificationsList))\n } catch (error) {\n yield put(Actions.fetchNotificationsError())\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* watchMarkNotificationAsRead() {\n yield takeEvery(Actions.markAsReadStart, markAsReadStart)\n}\n\nexport function* watchFetchNotifications() {\n yield takeEvery(Actions.fetchNotificationsStart, fetchNotificationsStart)\n}\n\nexport default function* notificationSaga() {\n yield all([\n watchMarkNotificationAsRead(),\n watchFetchNotifications()\n ])\n}\n","import { put, call, takeEvery, all, delay } from 'redux-saga/effects'\n\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/survey'\nimport * as Api from 'api/bff'\n\nexport function* submitSurvey() {\n try {\n const result = yield call(Api.submitSurvey)\n yield delay(1800)\n yield put(Actions.submitSurveySuccess(result))\n } catch (error) {\n yield put(Actions.submitSurveyError())\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* watchSubmitSurveyStart() {\n yield takeEvery(Actions.submitSurveyStart, submitSurvey)\n}\n\nexport default function* surveySaga() {\n yield all([\n watchSubmitSurveyStart()\n ])\n}\n","export const buildSort = (sortBy, sortDirection) => {\n if (sortDirection === 'asc') {\n return [sortBy]\n }\n\n return [`-${sortBy}`]\n}\n\nexport const buildFilter = (filterKey, allFilters, facetFilters) => {\n let finalFilter = []\n\n const filter = allFilters.get(filterKey)\n\n const facetFilter = facetFilters.get(filterKey)\n\n if (filter) {\n finalFilter.push(filter)\n }\n\n if (facetFilter && facetFilter.toJS().length > 0) {\n finalFilter = finalFilter.concat(facetFilter.toJS())\n }\n\n return finalFilter.filter((value, index, array) => array.indexOf(value) === index)\n}\n","import { put, takeEvery, all, call, select } from 'redux-saga/effects'\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\nimport * as CmActions from 'actions/contact_management'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/contacts_management'\n\nimport { buildSort, buildFilter } from 'utils/anewstip'\n\nexport function* searchJournalistsStart() {\n const search = yield select(Selectors.getAnewstipSearchData)\n const allFilters = yield select(Selectors.getAnewstipFiltersData)\n\n const facetFilters = allFilters.getIn(['journalists', 'facetFilters'])\n\n const filters = {\n topic: buildFilter('topic', allFilters, facetFilters),\n media_type: buildFilter('mediaType', allFilters, facetFilters),\n country: buildFilter('country', allFilters, facetFilters),\n state: buildFilter('state', allFilters, facetFilters),\n city: buildFilter('city', allFilters, facetFilters),\n title: buildFilter('title', allFilters, facetFilters),\n lang: buildFilter('lang', allFilters, facetFilters)\n }\n\n const page = allFilters.getIn(['journalists', 'pagination', 'page'])\n const pageSize = allFilters.getIn(['journalists', 'pagination', 'pageSize'])\n const sortBy = allFilters.getIn(['journalists', 'sort', 'by'])\n const sortDirection = allFilters.getIn(['journalists', 'sort', 'direction'])\n\n const body = {\n q: search.get('query'),\n name: search.get('name'),\n title: search.get('jobTitle'),\n outlet: search.get('outletName'),\n filters,\n page,\n page_size: pageSize,\n facets: Object.keys(filters),\n sort: buildSort(sortBy, sortDirection),\n must_has_email: true,\n collapse_email: true\n }\n\n try {\n const result = yield call(Api.searchAnewstipJournalists, body)\n const { journalists, paginator, facets, limitedResults } = result\n\n if (limitedResults) {\n yield put(Actions.setLimitedFunctionality())\n }\n\n yield put(Actions.setEntity({ entity: 'journalists', value: { entities: journalists, paginator, facets } }))\n yield put(Actions.searchJournalistsSuccess())\n } catch (error) {\n yield put(Actions.searchJournalistsError(error))\n\n if (error.response.statusCode === 403) {\n yield put(Actions.lockNavigation())\n yield put(Actions.setLimitedFunctionality())\n yield put(Actions.switchResultsTab('outlets'))\n }\n\n yield put(AppActions.showAppSnackbarMessage({\n text: error.response.message,\n variant: 'error'\n }))\n }\n}\n\nexport function* searchOutletsStart() {\n const i18n = yield select(Selectors.getI18n)\n const search = yield select(Selectors.getAnewstipSearchData)\n const allFilters = yield select(Selectors.getAnewstipFiltersData)\n\n const facetFilters = allFilters.getIn(['outlets', 'facetFilters'])\n\n const filters = {\n topic: buildFilter('topic', allFilters, facetFilters),\n media_type: buildFilter('mediaType', allFilters, facetFilters),\n country: buildFilter('country', allFilters, facetFilters),\n state: buildFilter('state', allFilters, facetFilters),\n city: buildFilter('city', allFilters, facetFilters),\n lang: buildFilter('lang', allFilters, facetFilters)\n }\n\n const page = allFilters.getIn(['outlets', 'pagination', 'page'])\n const pageSize = allFilters.getIn(['outlets', 'pagination', 'pageSize'])\n const sortBy = allFilters.getIn(['outlets', 'sort', 'by'])\n const sortDirection = allFilters.getIn(['outlets', 'sort', 'direction'])\n\n const q = [search.get('query'), search.get('name'), search.get('jobTitle')]\n\n const body = {\n q: q.join(' ').trim(),\n name: search.get('outletName'),\n filters,\n page,\n page_size: pageSize,\n facets: Object.keys(filters),\n sort: buildSort(sortBy, sortDirection),\n must_has_email: true,\n collapse_email: true\n }\n\n try {\n const result = yield call(Api.searchAnewstipOutlets, body)\n const { outlets, paginator, facets } = result\n\n yield put(Actions.setEntity({ entity: 'outlets', value: { entities: outlets, paginator, facets } }))\n yield put(Actions.searchOutletsSuccess())\n } catch (error) {\n yield put(Actions.searchOutletsError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* searchArticlesStart() {\n const search = yield select(Selectors.getAnewstipSearchData)\n const allFilters = yield select(Selectors.getAnewstipFiltersData)\n\n const facetFilters = allFilters.getIn(['articles', 'facetFilters'])\n\n const filters = {\n topic: buildFilter('topic', allFilters, facetFilters),\n media_type: buildFilter('mediaType', allFilters, facetFilters),\n country: buildFilter('country', allFilters, facetFilters),\n state: buildFilter('state', allFilters, facetFilters),\n city: buildFilter('city', allFilters, facetFilters),\n title: buildFilter('title', allFilters, facetFilters),\n lang: buildFilter('lang', allFilters, facetFilters),\n contact_type: buildFilter('contactType', allFilters, facetFilters)\n }\n\n const cursorToFetch = allFilters.getIn(['articles', 'pagination', 'cursor'])\n const pageSize = allFilters.getIn(['articles', 'pagination', 'pageSize'])\n const sortBy = allFilters.getIn(['articles', 'sort', 'by'])\n const sortDirection = allFilters.getIn(['articles', 'sort', 'direction'])\n\n const q = [search.get('query'), search.get('name'), search.get('jobTitle'), search.get('outletName')]\n\n const body = {\n q: q.join(' ').trim(),\n filters,\n cursor: cursorToFetch,\n page_size: pageSize,\n facets: Object.keys(filters),\n sort: buildSort(sortBy, sortDirection),\n must_has_email: true\n }\n\n try {\n const result = yield call(Api.searchAnewstipArticles, body)\n const { articles, cursor, previousCursor, facets } = result\n\n yield put(Actions.setEntity({ entity: 'articles', value: { entities: articles, cursor, previousCursor, facets } }))\n yield put(Actions.searchArticlesSuccess())\n } catch (error) {\n yield put(Actions.searchArticlesError(error))\n\n yield put(AppActions.showAppSnackbarMessage({\n text: error.response.message,\n variant: 'error'\n }))\n }\n}\n\nexport function* searchDrillDownJournalistsStart({ payload }) {\n const entity = payload\n const i18n = yield select(Selectors.getI18n)\n const drillDownFilters = yield select(Selectors.getAnewstipDrillDownFilters)\n const isLimitedFunctionality = yield select(Selectors.getIsLimitedFunctionality)\n\n if (isLimitedFunctionality) {\n return\n }\n\n const page = drillDownFilters.getIn(['journalists', 'pagination', 'page'])\n const pageSize = drillDownFilters.getIn(['journalists', 'pagination', 'pageSize'])\n\n const body = {\n page,\n page_size: pageSize,\n must_has_email: true,\n collapse_email: true\n }\n\n if (entity === 'journalist') {\n const contactId = drillDownFilters.get('contactId')\n body.filters = {\n topic_ids: drillDownFilters.get('topicIds'),\n topic: drillDownFilters\n .get('topics')\n .filter(topic => topic.get('active') === true)\n .map(topic => topic.get('name'))\n }\n\n if (contactId) {\n body.filters.exclude_contact_ids = [contactId]\n }\n }\n\n if (entity === 'outlet') {\n body.outlet_id = drillDownFilters.get('outletId')\n }\n\n try {\n // prevent empty search for journalists\n if (entity !== 'journalist' || body.filters.topic.size > 0) {\n const result = yield call(Api.searchAnewstipJournalists, body)\n const { journalists, paginator } = result\n const filteredJournalists = journalists.filter(journalist => journalist.id !== drillDownFilters.get('drillDownEntityId'))\n\n yield put(Actions.setDrillDownResult({ entity: 'journalists', value: { entities: filteredJournalists, paginator } }))\n }\n\n yield put(Actions.searchDrillDownJournalistsSuccess())\n } catch (error) {\n let msg = i18n.get('failed')\n yield put(Actions.searchDrillDownJournalistsError(error))\n\n if (error.response && error.response.statusCode === 403) {\n msg = error.response.message\n }\n\n yield put(AppActions.showAppSnackbarMessage({\n text: msg,\n variant: 'error'\n }))\n }\n}\n\nexport function* searchDrillDownOutletsStart() {\n const i18n = yield select(Selectors.getI18n)\n const drillDownFilters = yield select(Selectors.getAnewstipDrillDownFilters)\n\n const page = drillDownFilters.getIn(['outlets', 'pagination', 'page'])\n const pageSize = drillDownFilters.getIn(['outlets', 'pagination', 'pageSize'])\n\n const body = {\n filters: {\n topic: drillDownFilters\n .get('topics')\n .filter(topic => topic.get('active') === true)\n .map(topic => topic.get('name'))\n },\n page,\n page_size: pageSize,\n must_has_email: true,\n collapse_email: true\n }\n\n try {\n const result = yield call(Api.searchAnewstipOutlets, body)\n const { outlets, paginator } = result\n\n yield put(Actions.setDrillDownResult({ entity: 'outlets', value: { entities: outlets, paginator } }))\n yield put(Actions.searchDrillDownOutletsSuccess())\n } catch (error) {\n yield put(Actions.searchDrillDownOutletsError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* searchDrillDownArticlesStart() {\n const i18n = yield select(Selectors.getI18n)\n const drillDownFilters = yield select(Selectors.getAnewstipDrillDownFilters)\n const isLimitedFunctionality = yield select(Selectors.getIsLimitedFunctionality)\n\n if (isLimitedFunctionality) {\n return\n }\n\n const cursorToFetch = drillDownFilters.getIn(['articles', 'pagination', 'cursor'])\n const pageSize = drillDownFilters.getIn(['articles', 'pagination', 'pageSize'])\n const sortBy = drillDownFilters.getIn(['articles', 'sortBy'])\n\n const body = {\n phrase: [drillDownFilters.get('name')],\n cursor: cursorToFetch,\n sort: sortBy,\n page_size: pageSize,\n identity_id: drillDownFilters.get('identityId'),\n person_id: drillDownFilters.get('personId')\n }\n\n try {\n const result = yield call(Api.searchAnewstipArticles, body)\n const { articles, cursor, previousCursor } = result\n\n yield put(Actions.setDrillDownResult({ entity: 'articles', value: { entities: articles, cursor, previousCursor } }))\n yield put(Actions.searchDrillDownArticlesSuccess())\n } catch (error) {\n let msg = i18n.get('failed')\n yield put(Actions.searchDrillDownArticlesError(error))\n\n if (error.response && error.response.statusCode === 403) {\n msg = error.response.message\n }\n\n yield put(AppActions.showAppSnackbarMessage({\n text: msg,\n variant: 'error'\n }))\n }\n}\n\nexport function* fetchStaticsStart() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const result = yield call(Api.fetchAnewstipStatics)\n\n yield put(Actions.setStatics(result))\n yield put(CmActions.fetchDistributionListsStart())\n yield put(Actions.fetchStaticsSuccess())\n } catch (error) {\n yield put(Actions.fetchStaticsError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* searchSuggestStart({ payload: { keywords, source } }) {\n const i18n = yield select(Selectors.getI18n)\n\n const body = {\n keywords,\n source,\n count: 10\n }\n\n try {\n const { suggest } = yield call(Api.searchAnewstipSuggest, body)\n\n yield put(Actions.setSuggestions(suggest))\n yield put(Actions.searchSuggestSuccess())\n } catch (error) {\n yield put(Actions.searchSuggestError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* combinedSearchStart() {\n try {\n yield call(searchJournalistsStart)\n yield call(searchOutletsStart)\n yield call(searchArticlesStart)\n yield put(Actions.combinedSearchSuccess())\n } catch (error) {\n yield put(Actions.combinedSearchError(error))\n }\n}\n\nexport function* drillDownRequestStart({ payload }) {\n const { entity, isHistorySearch } = payload\n try {\n if (!isHistorySearch) {\n const drillDownFilters = yield select(Selectors.getAnewstipDrillDownFilters)\n const drillDownHistory = yield select(Selectors.getAnewstipDrillDownHistory)\n const drillDownHistoryFilters = drillDownHistory.get('filtersHistory')\n\n let entityId\n let filterFound\n\n if (entity === 'journalist') {\n entityId = drillDownFilters.get('drillDownEntityId')\n filterFound = drillDownHistoryFilters.find(filtersHistory => filtersHistory.getIn(['filters', 'drillDownEntityId']) === entityId)\n }\n\n if (entity === 'outlet') {\n entityId = drillDownFilters.get('outletId')\n filterFound = drillDownHistoryFilters.find(filtersHistory => filtersHistory.getIn(['filters', 'outletId']) === entityId)\n }\n\n if (filterFound) {\n yield put(Actions.setDrillDownHistoryIndex(filterFound.get('index')))\n } else {\n yield put(Actions.addDrillDownFiltersToHistory(drillDownFilters))\n }\n }\n\n if (entity === 'journalist') {\n yield call(searchDrillDownJournalistsStart, { payload: entity })\n yield call(searchDrillDownArticlesStart)\n }\n\n if (entity === 'outlet') {\n yield call(searchDrillDownJournalistsStart, { payload: entity })\n yield call(searchDrillDownOutletsStart)\n }\n\n yield put(Actions.drillDownRequestSuccess())\n } catch (error) {\n yield put(Actions.drillDownRequestError(error))\n }\n}\n\nexport function* drillDownHistorySearch({ payload }) {\n const { index, entity } = payload\n const drillDownHistory = yield select(Selectors.getAnewstipDrillDownHistory)\n\n yield put(Actions.setDrillDownHistoryIndex(index))\n\n const filtersFound = drillDownHistory.get('filtersHistory').find(filtersHistory => filtersHistory.get('index') === index)\n\n yield put(Actions.setDrillDownFiltersState(filtersFound.get('filters')))\n yield call(drillDownRequestStart, { payload: { entity, isHistorySearch: true } })\n}\n\nexport function* watchCombinedSearchStart() {\n yield takeEvery(Actions.combinedSearchStart, combinedSearchStart)\n}\n\nexport function* watchSearchJournalistsStart() {\n yield takeEvery(Actions.searchJournalistsStart, searchJournalistsStart)\n}\n\nexport function* watchSearchOutletsStart() {\n yield takeEvery(Actions.searchOutletsStart, searchOutletsStart)\n}\n\nexport function* watchSearchArticlesStart() {\n yield takeEvery(Actions.searchArticlesStart, searchArticlesStart)\n}\n\nexport function* watchFetchStaticsStart() {\n yield takeEvery(Actions.fetchStaticsStart, fetchStaticsStart)\n}\n\nexport function* watchSearchSuggestStart() {\n yield takeEvery(Actions.searchSuggestStart, searchSuggestStart)\n}\n\nexport function* watchDrillDownRequestStart() {\n yield takeEvery(Actions.drillDownRequestStart, drillDownRequestStart)\n}\n\nexport function* watchSearchDrillDownJournalistsStart() {\n yield takeEvery(Actions.searchDrillDownJournalistsStart, searchDrillDownJournalistsStart)\n}\n\nexport function* watchSearchDrillDownOutletsStart() {\n yield takeEvery(Actions.searchDrillDownOutletsStart, searchDrillDownOutletsStart)\n}\n\nexport function* watchSearchDrillDownArticlesStart() {\n yield takeEvery(Actions.searchDrillDownArticlesStart, searchDrillDownArticlesStart)\n}\n\nexport function* watchDrillDownHistorySearch() {\n yield takeEvery(Actions.drillDownHistorySearch, drillDownHistorySearch)\n}\n\nexport default function* searchSaga() {\n yield all([\n watchCombinedSearchStart(),\n watchSearchJournalistsStart(),\n watchSearchOutletsStart(),\n watchSearchArticlesStart(),\n watchFetchStaticsStart(),\n watchSearchSuggestStart(),\n watchDrillDownRequestStart(),\n watchSearchDrillDownJournalistsStart(),\n watchSearchDrillDownOutletsStart(),\n watchSearchDrillDownArticlesStart(),\n watchDrillDownHistorySearch()\n ])\n}\n","import { put, takeEvery, all, call, select } from 'redux-saga/effects'\nimport * as Actions from 'actions/anewstip'\nimport * as AppActions from 'actions/app'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/contacts_management'\n\nexport function* importStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n let body\n\n try {\n if (payload && payload.id) {\n body = {\n ids: [payload.id]\n\n }\n } else {\n const selected = yield select(Selectors.getAnewstipSelectedData)\n body = {\n ids: selected.get('journalists')\n }\n }\n\n const result = yield call(Api.importAnewstipContacts, body)\n\n const withDistributionList = yield select(Selectors.getAnewstipImportWithDistributionLists)\n\n if (withDistributionList) {\n yield put(Actions.setImportContactsForDistributionLists(result))\n }\n\n if (result.some(el => el.existingContact)) {\n yield put(Actions.importSuccess(result))\n yield put(Actions.showDuplicateContactsDialog())\n } else {\n yield put(Actions.importSuccess(result))\n\n if (withDistributionList) {\n yield put(Actions.showDistributionListCreateDialog())\n }\n\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('contact_added'),\n variant: 'success'\n }))\n }\n } catch (error) {\n yield put(Actions.importError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: error.response.message,\n variant: 'error'\n }))\n }\n}\n\nexport function* replaceContactStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const existingContact = payload.get('existingContact')\n const journalist = payload.get('journalist')\n const id = existingContact.get('id')\n const supplier = existingContact.get('supplier')\n\n const body = {\n id,\n supplier,\n contact: {\n first_name: journalist.get('firstName'),\n last_name: journalist.get('lastName'),\n mail: journalist.get('mail'),\n title: journalist.get('title'),\n job_title: journalist.get('jobTitle'),\n dossier: journalist.get('dossier'),\n picture: journalist.get('picture'),\n address: journalist.get('address'),\n phone: journalist.get('phone'),\n fax: journalist.get('fax'),\n website: journalist.get('website'),\n country_id: journalist.get('countryId'),\n state_id: journalist.get('stateId'),\n supplier: journalist.get('supplier'),\n external_id: journalist.get('externalId'),\n linkedin_url: journalist.get('linkedinUrl'),\n twitter_url: journalist.get('twitterUrl'),\n facebook_url: journalist.get('facebookUrl'),\n tiktok_url: journalist.get('tiktokUrl'),\n instagram_url: journalist.get('instagramUrl'),\n threads_url: journalist.get('threadsUrl'),\n youtube_url: journalist.get('youtubeUrl'),\n other_url: journalist.get('otherUrl'),\n contacts_languages: journalist.get('contactsLanguages'),\n contacts_media_types: journalist.get('contactsMediaTypes')\n },\n info: {\n outlet: journalist.get('outlet'),\n topic: journalist.get('topic')\n }\n }\n\n const replaceContactResult = yield call(Api.replaceContact, body)\n\n yield put(Actions.replaceContactSuccess({ existingContact, replaceContactResult }))\n yield put(Actions.importSuccess(replaceContactResult))\n\n const withDistributionList = yield select(Selectors.getAnewstipImportWithDistributionLists)\n\n if (withDistributionList) {\n const importResult = yield select(Selectors.getAnewstipImportResult)\n const duplicates = importResult.filter(el => el.get('existingContact'))\n\n if (duplicates.size < 2) {\n yield put(Actions.hideDuplicateContactsDialog())\n yield put(Actions.showDistributionListCreateDialog())\n }\n }\n\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('contact_added'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.replaceContactError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: error.response.message,\n variant: 'error'\n }))\n }\n}\n\nexport function* keepContact({ payload }) {\n const importResult = yield select(Selectors.getAnewstipImportResult)\n const duplicates = importResult.filter(el => el.get('existingContact'))\n\n const withDistributionList = yield select(Selectors.getAnewstipImportWithDistributionLists)\n\n if (withDistributionList && duplicates.size < 2) {\n yield put(Actions.hideDuplicateContactsDialog())\n yield put(Actions.showDistributionListCreateDialog())\n }\n\n yield put(Actions.removeContactFromDuplicateList(payload))\n}\n\nexport function* watchImportStart() {\n yield takeEvery(Actions.importStart, importStart)\n}\n\nexport function* watchReplaceContactStart() {\n yield takeEvery(Actions.replaceContactStart, replaceContactStart)\n}\n\nexport function* watchAddJournalistToDistributionListStart() {\n yield takeEvery(Actions.addJournalistsToDistributionList, importStart)\n}\n\nexport function* watchKeepContact() {\n yield takeEvery(Actions.keepContact, keepContact)\n}\n\nexport default function* importSaga() {\n yield all([\n watchImportStart(),\n watchAddJournalistToDistributionListStart(),\n watchKeepContact(),\n watchReplaceContactStart()\n ])\n}\n","import { all } from 'redux-saga/effects'\nimport searchSaga from './search'\nimport importSaga from './import'\n// import mainSaga from './main'\n// import filterSaga from './filter'\n\nexport default function* anewstipSaga() {\n yield all([\n searchSaga(),\n importSaga()\n // mainSaga(),\n // filterSaga()\n ])\n}\n","import {\n put,\n takeEvery,\n all,\n call,\n select\n} from 'redux-saga/effects'\n\nimport * as Api from 'api/content_desk'\nimport * as Actions from 'actions/email_templates_library'\nimport * as CdActions from 'actions/content_desk'\nimport * as Selectors from 'selectors'\nimport * as AppActions from 'actions/app'\n\nexport function* saveTemplateStart({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n const formData = yield select(Selectors.getETLibraryTemplateFormData)\n const emailEditorFormData = yield select(Selectors.getCDeskContentFormData)\n const templateId = formData.get('id')\n\n let requestBody\n\n if (payload) {\n requestBody = {\n name: formData.get('name'),\n json: JSON.stringify(emailEditorFormData.get('editorDesign').toJS()),\n html: emailEditorFormData.get('body'),\n shared: formData.get('shared'),\n released: formData.get('released')\n }\n } else {\n requestBody = {\n id: templateId,\n name: formData.get('name'),\n json: JSON.stringify(formData.get('json').toJS()),\n html: formData.get('html'),\n shared: formData.get('shared'),\n released: formData.get('released')\n }\n }\n\n try {\n let result\n let text\n\n if (templateId) {\n result = yield call(Api.updateEmailTemplate, templateId, requestBody)\n text = `${i18n.get('template')} ${i18n.get('updated')}`\n } else {\n result = yield call(Api.createEmailTemplate, requestBody)\n text = `${i18n.get('template')} ${i18n.get('created')}`\n }\n\n if (payload) {\n yield put(Actions.saveTemplateSuccess())\n yield put(CdActions.closeSaveTemplateDialog())\n } else {\n yield put(Actions.saveTemplateSuccess(result))\n yield put(Actions.closeEditorDialog())\n yield put(Actions.closeSaveDialog())\n }\n\n yield put(AppActions.showAppSnackbarMessage({\n text,\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.saveTemplateError())\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* deleteTemplateStart({ payload: { id } }) {\n const i18n = yield select(Selectors.getI18n)\n try {\n yield call(Api.deleteEmailTemplate, id)\n yield put(Actions.deleteTemplateSuccess(id))\n yield put(\n AppActions.showAppMessage({\n text: `${i18n.get('template')} ${i18n.get('deleted')}`,\n success: true\n })\n )\n } catch (error) {\n yield put(Actions.deleteTemplateError())\n yield put(\n AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n })\n )\n }\n}\n\nexport function* cloneTemplateStart({ payload }) {\n const { id } = payload\n const i18n = yield select(Selectors.getI18n)\n const templates = yield select(Selectors.getETLibraryTemplates)\n const template = templates.get('items').find(temp => temp.get('id') === id)\n\n const requestBody = {\n name: `${template.get('name')} ${i18n.get('duplicate')}`,\n json: JSON.stringify(template.get('json').toJS()),\n html: template.get('html'),\n shared: false,\n released: false\n }\n\n try {\n const result = yield call(Api.createEmailTemplate, requestBody)\n\n if (template.get('shared')) {\n yield put(Actions.togglePublicTemplates())\n } else {\n yield put(Actions.saveTemplateSuccess(result))\n }\n\n yield put(\n AppActions.showAppMessage({\n text: `${i18n.get('template')} ${i18n.get('duplicated')}`,\n success: true\n })\n )\n } catch (error) {\n yield put(Actions.saveTemplateError())\n yield put(\n AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n })\n )\n }\n}\n\nexport function* watchSaveTemplateStart() {\n yield takeEvery(Actions.saveTemplateStart, saveTemplateStart)\n}\n\nexport function* watchDeleteTemplateStart() {\n yield takeEvery(Actions.deleteTemplateStart, deleteTemplateStart)\n}\n\nexport function* watchCloneTemplateStart() {\n yield takeEvery(Actions.cloneTemplateStart, cloneTemplateStart)\n}\n\nexport default function* mainSaga() {\n yield all([\n watchSaveTemplateStart(),\n watchDeleteTemplateStart(),\n watchCloneTemplateStart()\n ])\n}\n","import {\n put,\n takeEvery,\n all,\n call,\n select,\n take\n} from 'redux-saga/effects'\n\nimport * as Api from 'api/content_desk'\nimport * as Actions from 'actions/email_templates_library'\nimport * as Selectors from 'selectors'\nimport * as AppActions from 'actions/app'\n\nexport function* togglePublicTemplates() {\n const showPublicTemplates = yield select(Selectors.getETLibraryShowPublic)\n\n yield put(Actions.resetTemplatesModule())\n yield put(Actions.resetTemplateFilters())\n yield put(Actions.fetchTemplatesStart({ shared: showPublicTemplates }))\n}\n\nexport function* fetchTemplatesStart({ payload: { shared, released } }) {\n const i18n = yield select(Selectors.getI18n)\n const filters = yield select(Selectors.getETLibraryFilter)\n\n const filter = [\n { field: 'shared', value: shared }\n ]\n\n if (released) {\n filter.push({ field: 'released', value: true })\n }\n\n const requestBody = {\n exact_filter: filter,\n page: filters.get('page'),\n limit: filters.get('limit'),\n sort_by: filters.get('sortBy'),\n sort_order: filters.get('sortOrder')\n }\n\n try {\n const result = yield call(Api.fetchEmailTemplates, requestBody)\n\n yield put(Actions.fetchTemplatesSuccess({ shared, result }))\n } catch (error) {\n yield put(Actions.fetchTemplatesError())\n yield put(\n AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n })\n )\n }\n}\n\nexport function* fetchReleasedTemplates() {\n try {\n yield put(Actions.fetchTemplatesStart({ shared: false, released: true }))\n yield take(Actions.fetchTemplatesSuccess)\n yield put(Actions.fetchTemplatesStart({ shared: true, released: true }))\n yield take(Actions.fetchTemplatesSuccess)\n yield put(Actions.fetchReleasedTemplatesSuccess())\n } catch (error) {\n yield put(Actions.fetchReleasedTemplatesError())\n }\n}\n\nexport function* watchfetchReleasedTemplates() {\n yield takeEvery(Actions.fetchReleasedTemplatesStart, fetchReleasedTemplates)\n}\n\nexport function* watchTogglePublicTemplates() {\n yield takeEvery(Actions.togglePublicTemplates, togglePublicTemplates)\n}\n\nexport function* watchFetchTemplateStart() {\n yield takeEvery(Actions.fetchTemplatesStart, fetchTemplatesStart)\n}\n\nexport default function* searchSaga() {\n yield all([\n watchFetchTemplateStart(),\n watchTogglePublicTemplates(),\n watchfetchReleasedTemplates()\n ])\n}\n","import {\n put,\n takeEvery,\n all,\n select\n} from 'redux-saga/effects'\n\nimport * as Actions from 'actions/email_templates_library'\nimport * as Selectors from 'selectors'\n\nexport function* fetchMoreTemplatesStart({ payload }) {\n let shared\n\n if (payload) {\n shared = payload.shared\n } else {\n shared = yield select(Selectors.getETLibraryShowPublic)\n }\n\n yield put(Actions.increaseTemplatesPage())\n yield put(Actions.fetchTemplatesStart({ shared }))\n}\n\nexport function* watchFetchMoreTemplatesStart() {\n yield takeEvery(Actions.fetchMoreTemplatesStart, fetchMoreTemplatesStart)\n}\n\nexport default function* filterSaga() {\n yield all([\n watchFetchMoreTemplatesStart()\n ])\n}\n","import { all } from 'redux-saga/effects'\nimport mainSaga from './main'\nimport searchSaga from './search'\nimport filterSaga from './filter'\n\nexport default function* emailTemplatesLibrarySaga() {\n yield all([\n mainSaga(),\n searchSaga(),\n filterSaga()\n ])\n}\n","import { put, takeEvery, all, call, select } from 'redux-saga/effects'\nimport * as Actions from 'actions/unsplash'\nimport * as AppActions from 'actions/app'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/bff'\n\nexport function* searchUnsplashPhotosStart() {\n try {\n const page = yield select(Selectors.getUnsplashPage)\n const perPage = yield select(Selectors.getUnsplashPerPage)\n const orderBy = yield select(Selectors.getUnsplashOrderBy)\n const formData = yield select(Selectors.getUnsplashFormData)\n\n const body = {\n query: formData.get('query'),\n page,\n per_page: perPage,\n order_by: orderBy\n }\n\n const result = yield call(Api.searchUnsplashPhotos, body)\n yield put(Actions.setUnsplashPhotos(result))\n yield put(Actions.incrementPage())\n yield put(Actions.searchUnsplashPhotosSuccess())\n } catch (_error) {\n yield put(Actions.searchUnsplashPhotosError())\n yield put(\n AppActions.showAppMessage({\n success: false\n })\n )\n }\n}\n\nexport function* fetchRandomUnsplashPhotosStart() {\n try {\n const body = {\n count: 20\n }\n\n const result = yield call(Api.fetchRandomUnsplashPhotos, body)\n yield put(Actions.setUnsplashPhotos(result))\n yield put(Actions.searchUnsplashPhotosSuccess())\n } catch (_error) {\n yield put(Actions.searchUnsplashPhotosError())\n yield put(\n AppActions.showAppMessage({\n success: false\n })\n )\n }\n}\n\nexport function* watchSearchUnsplashPhotosStart() {\n yield takeEvery(Actions.searchUnsplashPhotosStart, searchUnsplashPhotosStart)\n}\n\nexport function* watchFetchRandomUnsplashPhotos() {\n yield takeEvery(Actions.fetchRandomUnsplashPhotosStart, fetchRandomUnsplashPhotosStart)\n}\n\nexport default function* searchSaga() {\n yield all([\n watchSearchUnsplashPhotosStart(),\n watchFetchRandomUnsplashPhotos()\n ])\n}\n","import { put, takeEvery, all, call } from 'redux-saga/effects'\nimport * as Actions from 'actions/unsplash'\nimport * as CDActions from 'actions/content_desk'\nimport * as AppActions from 'actions/app'\nimport * as Api from 'api/bff'\n\nexport function* addImageToLibraryStart({ payload: { url, filename } }) {\n const body = {\n url,\n filename\n }\n\n try {\n yield call(Api.downloadUnsplashImage, body)\n yield put(CDActions.fetchMediaFilesStart())\n yield put(Actions.addImageToLibrarySuccess())\n } catch (error) {\n yield put(Actions.addImageToLibraryError(error))\n yield put(\n AppActions.showAppMessage({\n success: false\n })\n )\n }\n}\n\nexport function* watchAddImageToLibrary() {\n yield takeEvery(Actions.addImageToLibraryStart, addImageToLibraryStart)\n}\n\nexport default function* mainSaga() {\n yield all([\n watchAddImageToLibrary()\n ])\n}\n","import { all } from 'redux-saga/effects'\nimport searchSaga from './search'\nimport mainSaga from './main'\n\nexport default function* unsplashSaga() {\n yield all([\n searchSaga(),\n mainSaga()\n ])\n}\n","import moment from 'moment-timezone'\n\nexport const getMoment = () => moment().toISOString()\n\nexport const tag = _tagData => {\n if (process.env.NODE_ENV !== 'production') {\n return null\n }\n\n return null\n // return window.UST.tag(tagData)\n}\n\nexport const event = _eventData => {\n if (process.env.NODE_ENV !== 'production') {\n return null\n }\n\n return null\n // return window.UST.event(eventData)\n}\n","import { call, put, takeEvery, all } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/ust'\nimport * as UST from 'utils/ust'\n\nexport function* event({ payload: eventData }) {\n const created = yield call(UST.getMoment)\n\n try {\n yield call(UST.event, eventData)\n yield put(Actions.ustEventSuccess({ event: eventData, created }))\n } catch (error) {\n yield put(Actions.ustEventError({ event: eventData, error }))\n }\n}\n\nexport function* tag({ payload: tagData }) {\n const created = yield call(UST.getMoment)\n\n try {\n yield call(UST.tag, tagData)\n yield put(Actions.ustTagSuccess({ tag: tagData, created }))\n } catch (error) {\n yield put(Actions.ustTagError({ tag: tagData, error }))\n }\n}\n\nexport function* pageEnter({ payload: page }) {\n const eventData = {\n category: 'VISIT', // REQUIRED\n action: 'PAGE_ENTER', // REQUIRED\n label: 'page',\n value: page\n }\n\n yield put(Actions.ustEventStarted(eventData))\n}\n\nexport function* pageLeave({ payload: page }) {\n const eventData = {\n category: 'VISIT', // REQUIRED\n action: 'PAGE_LEAVE', // REQUIRED\n label: 'page',\n value: page\n }\n\n yield put(Actions.ustEventStarted(eventData))\n}\n\nexport function* watchUstEventStarted() {\n yield takeEvery(Actions.ustEventStarted, event)\n}\n\nexport function* watchUstTagStarted() {\n yield takeEvery(Actions.ustTagStarted, tag)\n}\n\nexport function* watchUstPageEnter() {\n yield takeEvery(Actions.ustPageEnter, pageEnter)\n}\n\nexport function* watchUstPageLeave() {\n yield takeEvery(Actions.ustPageLeave, pageLeave)\n}\n\nexport default function* ustSaga() {\n yield all([\n watchUstEventStarted(),\n watchUstTagStarted(),\n watchUstPageEnter(),\n watchUstPageLeave()\n ])\n}\n","import { put, takeEvery, all, call, select, take } from 'redux-saga/effects'\n\nimport * as Api from 'api/bff'\nimport * as Selectors from 'selectors'\nimport * as Actions from 'actions/administration'\nimport * as ConfigActions from 'actions/config'\nimport * as AppActions from 'actions/app'\n\nimport { getDefaultDomains } from 'utils/mailgun'\n\nexport function* createAllowedDomain() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const name = yield select(Selectors.getAllowedDomainsNewAllowedDomain)\n const region = yield select(Selectors.getAllowedDomainsNewAllowedDomainRegion)\n\n const requestBody = {\n name,\n region\n }\n\n const result = yield call(Api.createAllowedDomain, requestBody)\n\n yield put(Actions.createAllowedDomainSuccess(result))\n yield put(ConfigActions.fetchCDeskConfigRequestStart())\n yield put(Actions.searchAllowedDomainsStart())\n yield take(Actions.searchAllowedDomainsSuccess)\n\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('ccd_allowed_domain_created'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.createAllowedDomainError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* createDefaultAllowedDomains() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const defaultDomains = getDefaultDomains()\n\n for (let i = 0; i < defaultDomains.size; i += 1) {\n const name = defaultDomains.get(i).get('domain')\n const region = defaultDomains.get(i).get('domainRegion')\n yield call(Api.createAllowedDomain, { name, region })\n }\n\n yield put(Actions.createDefaultAllowedDomainsSuccess())\n yield put(ConfigActions.fetchCDeskConfigRequestStart())\n yield put(Actions.searchAllowedDomainsStart())\n yield take(Actions.searchAllowedDomainsSuccess)\n } catch (error) {\n yield put(Actions.createDefaultAllowedDomainsError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* updateAllowedDomain({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const { updateType } = payload\n const formData = yield select(Selectors.getAllowedDomainFormData)\n\n let requestBody\n let result\n\n if (updateType === 'openTracking') {\n requestBody = {\n name: formData.get('name'),\n region: formData.get('region'),\n active: !formData.get('openTracking')\n }\n\n result = yield call(Api.updateAllowedDomainOpenTracking, formData.get('id'), requestBody)\n }\n\n if (updateType === 'clickTracking') {\n requestBody = {\n name: formData.get('name'),\n region: formData.get('region'),\n active: !formData.get('clickTracking')\n }\n\n result = yield call(Api.updateAllowedDomainClickTracking, formData.get('id'), requestBody)\n }\n\n if (updateType === 'senderDomain') {\n requestBody = {\n sender_domains: formData.get('senderDomains')\n }\n\n result = yield call(Api.updateAllowedDomainSenderDomains, formData.get('id'), requestBody)\n }\n\n yield put(Actions.updateAllowedDomainSuccess(result))\n yield put(ConfigActions.fetchCDeskConfigRequestStart())\n yield put(Actions.searchAllowedDomainsStart())\n yield take(Actions.searchAllowedDomainsSuccess)\n\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('ccd_allowed_domain_updated'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.updateAllowedDomainError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* deleteAllowedDomain() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const formData = yield select(Selectors.getAllowedDomainFormData)\n\n const result = yield call(Api.deleteAllowedDomain, formData.get('id'))\n\n yield put(Actions.deleteAllowedDomainSuccess(result))\n yield put(ConfigActions.fetchCDeskConfigRequestStart())\n yield put(Actions.searchAllowedDomainsStart())\n yield take(Actions.searchAllowedDomainsSuccess)\n\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('ccd_allowed_domain_deleted'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.deleteAllowedDomainError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* refreshStatusAllowedDomain() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const formData = yield select(Selectors.getAllowedDomainFormData)\n\n const requestBody = {\n id: formData.get('id'),\n name: formData.get('name'),\n region: formData.get('region')\n }\n\n const result = yield call(Api.refreshStatusAllowedDomain, requestBody)\n\n yield put(Actions.refreshStatusAllowedDomainSuccess(result))\n yield put(ConfigActions.fetchCDeskConfigRequestStart())\n yield put(Actions.searchAllowedDomainsStart())\n yield take(Actions.searchAllowedDomainsSuccess)\n\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('ccd_allowed_domain_status_refreshed'),\n variant: 'success'\n }))\n } catch (error) {\n yield put(Actions.refreshStatusAllowedDomainError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* fetchAllowedDomainStatus() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const formData = yield select(Selectors.getAllowedDomainFormData)\n\n const requestBody = {\n name: formData.get('name'),\n region: formData.get('region')\n }\n\n const result = yield call(Api.fetchAllowedDomainStatus, requestBody)\n\n yield put(Actions.fetchAllowedDomainStatusSuccess(result))\n } catch (error) {\n yield put(Actions.fetchAllowedDomainStatusError(error))\n yield put(AppActions.showAppSnackbarMessage({\n text: i18n.get('failed'),\n variant: 'error'\n }))\n }\n}\n\nexport function* watchCreateAllowedDomainStart() {\n yield takeEvery(Actions.createAllowedDomainStart, createAllowedDomain)\n}\n\nexport function* watchCreateDefaultAllowedDomainsStart() {\n yield takeEvery(Actions.createDefaultAllowedDomainsStart, createDefaultAllowedDomains)\n}\n\nexport function* watchUpdateAllowedDomainStart() {\n yield takeEvery(Actions.updateAllowedDomainStart, updateAllowedDomain)\n}\n\nexport function* watchDeleteAllowedDomainStart() {\n yield takeEvery(Actions.deleteAllowedDomainStart, deleteAllowedDomain)\n}\n\nexport function* watchRefreshStatusAllowedDomainStart() {\n yield takeEvery(Actions.refreshStatusAllowedDomainStart, refreshStatusAllowedDomain)\n}\n\nexport function* watchFetchAllowedDomainStatusStart() {\n yield takeEvery(Actions.fetchAllowedDomainStatusStart, fetchAllowedDomainStatus)\n}\n\nexport default function* mainSaga() {\n yield all([\n watchCreateAllowedDomainStart(),\n watchCreateDefaultAllowedDomainsStart(),\n watchUpdateAllowedDomainStart(),\n watchDeleteAllowedDomainStart(),\n watchRefreshStatusAllowedDomainStart(),\n watchFetchAllowedDomainStatusStart()\n ])\n}\n","import { put, takeEvery, all, call, select } from 'redux-saga/effects'\n\nimport * as Actions from 'actions/administration'\nimport * as AppActions from 'actions/app'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/bff'\n\nexport function* searchAllowedDomains() {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const contentDeskConfig = yield select(Selectors.getCDeskConfig)\n const showDefaultDomains = contentDeskConfig.get('showDefaultDomains')\n const name = yield select(Selectors.getAllowedDomainsQuickSearchQuery)\n const page = yield select(Selectors.getAllowedDomainsPage)\n const limit = yield select(Selectors.getAllowedDomainsLimit)\n const defaultDomainIds = yield select(Selectors.getDefaultAllowedDomainIds)\n\n const body = {\n filter: { name },\n exclude_filter: { ids: showDefaultDomains ? [] : defaultDomainIds },\n page,\n limit\n }\n\n const result = yield call(Api.searchAllowedDomains, body)\n\n yield put(Actions.setAllowedDomains(result))\n yield put(Actions.searchAllowedDomainsSuccess())\n } catch (error) {\n yield put(Actions.searchAllowedDomainsError(error))\n\n yield put(AppActions.showAppMessage({\n text: i18n.get('failed'),\n success: false\n }))\n }\n}\n\nexport function* watchSearchAllowedDomainsStart() {\n yield takeEvery(Actions.searchAllowedDomainsStart, searchAllowedDomains)\n}\n\nexport default function* searchSaga() {\n yield all([\n watchSearchAllowedDomainsStart()\n ])\n}\n","import { all } from 'redux-saga/effects'\n\nimport mainSaga from './main'\nimport searchSaga from './search'\n\nexport default function* administrationSaga() {\n yield all([\n mainSaga(),\n searchSaga()\n ])\n}\n","import {\n all,\n call,\n put,\n select,\n takeEvery\n} from 'redux-saga/effects'\n\nimport * as Api from 'api/bff'\nimport * as AppActions from 'actions/app'\nimport * as Actions from 'actions/themax'\nimport * as Selectors from 'selectors'\nimport * as LocalStorage from 'utils/localStorage'\nimport { downloadBlob } from 'utils/sagas'\n\nimport { ExcelMimeType } from 'static/constants'\n\nexport function* onMount() {\n const moduleInitialized = yield select(Selectors.getThemaxModuleInitialized)\n\n if (!moduleInitialized) {\n yield put(Actions.themaxSearchRequestStart())\n yield put(Actions.initializeThemaxSavedSearches())\n yield put(Actions.setThemaxModuleInitialized(true))\n }\n}\n\nexport function* onUnmount() {\n const isSavedSearchesOverview = yield select(Selectors.isSavedSearchesOverview)\n\n if (!isSavedSearchesOverview) {\n yield put(Actions.setThemaxModuleInitialized(false))\n }\n}\n\nexport function* saveBookmark({ payload: { editorialPlanId } }) {\n try {\n const body = {\n editorial_plan_id: editorialPlanId\n }\n\n const response = yield call(Api.createGrootEditorialPlan, body)\n\n yield put(Actions.themaxSaveBookmarkSuccess({ response, editorialPlanId }))\n } catch (error) {\n yield put(Actions.themaxSaveBookmarkError(error))\n }\n}\n\nexport function* deleteBookmark({ payload: { editorialPlanId, grootEditorialPlanId } }) {\n try {\n yield call(Api.deleteGrootEditorialPlan, grootEditorialPlanId)\n\n yield put(Actions.themaxDeleteBookmarkSuccess({ editorialPlanId }))\n } catch (error) {\n yield put(Actions.themaxDeleteBookmarkError(error))\n }\n}\n\nexport function* exportEditorialPlans() {\n try {\n const themaxFilters = yield select(Selectors.getThemaxFilters)\n const timezone = yield select(Selectors.getTimezone)\n const publicationFilter = yield select(Selectors.getThemaxPublicationsFilter)\n const editorialPlanFilter = yield select(Selectors.getThemaxEditorialPlansFilter)\n\n const body = {\n publications: publicationFilter,\n editorial_plans: editorialPlanFilter,\n sort_by: themaxFilters.getIn(['editorialPlansSorting', 'sortBy']),\n sort_order: themaxFilters.getIn(['editorialPlansSorting', 'sortOrder']),\n timezone\n }\n const result = yield call(Api.exportThemaxEditorialPlans, body)\n yield call(downloadBlob, result, 'topic_plans.xlsx', ExcelMimeType)\n yield put(Actions.exportEditorialPlansSuccess())\n } catch (error) {\n yield put(Actions.exportEditorialPlansError(error))\n }\n}\n\nexport function* loadFromLocalStorage() {\n try {\n const hasThemaxPaidVersion = yield select(Selectors.getHasThemaxPaidVersion)\n const userId = yield select(Selectors.getUserId)\n const newsradarId = yield select(Selectors.getNewsradarId)\n const key = `themax_${newsradarId}_${userId}:show_welcome_message`\n const value = yield call(LocalStorage.getItem, key)\n\n if (value !== 'false' && !hasThemaxPaidVersion) {\n yield put(Actions.openWelcomeDialog())\n }\n } catch (error) {\n yield put(AppActions.exception(error))\n yield put(AppActions.setAppReady())\n }\n}\n\nexport function* closeWelcomeDialog() {\n try {\n const userId = yield select(Selectors.getUserId)\n const newsradarId = yield select(Selectors.getNewsradarId)\n const key = `themax_${newsradarId}_${userId}:show_welcome_message`\n yield call(LocalStorage.setItem, key, 'false')\n } catch (error) {\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* watchLoadFromLocalStorage() {\n yield takeEvery(AppActions.loadFromLocalStorage, loadFromLocalStorage)\n}\n\nexport function* watchCloseWelcomeDialog() {\n yield takeEvery(Actions.closeWelcomeDialog, closeWelcomeDialog)\n}\n\nexport function* watchOnMount() {\n yield takeEvery(Actions.onMount, onMount)\n}\n\nexport function* watchOnUnmount() {\n yield takeEvery(Actions.onUnmount, onUnmount)\n}\n\nexport function* watchThemaxSaveBookmarkStart() {\n yield takeEvery(Actions.themaxSaveBookmarkStart, saveBookmark)\n}\n\nexport function* watchThemaxDeleteBookmarkStart() {\n yield takeEvery(Actions.themaxDeleteBookmarkStart, deleteBookmark)\n}\n\nexport function* watchExportEditorialPlansStart() {\n yield takeEvery(Actions.exportEditorialPlansStart, exportEditorialPlans)\n}\n\nexport default function* mainSaga() {\n yield all([\n watchOnMount(),\n watchOnUnmount(),\n watchThemaxSaveBookmarkStart(),\n watchThemaxDeleteBookmarkStart(),\n watchExportEditorialPlansStart(),\n watchLoadFromLocalStorage(),\n watchCloseWelcomeDialog()\n ])\n}\n","import {\n put,\n takeEvery,\n all\n} from 'redux-saga/effects'\n\nimport * as Actions from 'actions/themax'\n\nexport function* applyThemaxFilters() {\n yield put(Actions.themaxSearchRequestStart())\n}\n\nexport function* uiInvertFilter({ payload }) {\n yield put(Actions.invertFilter(payload))\n yield put(Actions.themaxSearchRequestStart())\n}\n\nexport function* uiRemoveFilter({ payload: { index, field } }) {\n yield put(Actions.removeFilter({ index, field }))\n yield put(Actions.themaxSearchRequestStart())\n}\n\nexport function* uiUpdateFilter({ payload }) {\n yield put(Actions.updateFilter(payload))\n yield put(Actions.themaxSearchRequestStart())\n}\n\nexport function* resetThemaxFilters() {\n yield put(Actions.themaxSearchRequestStart())\n}\n\nexport function* watchApplyThemaxFilters() {\n yield takeEvery(Actions.applyThemaxFilters, applyThemaxFilters)\n}\n\nexport function* watchUiInvertFilter() {\n yield takeEvery(Actions.uiInvertFilter, uiInvertFilter)\n}\n\nexport function* watchUiRemoveFilter() {\n yield takeEvery(Actions.uiRemoveFilter, uiRemoveFilter)\n}\n\nexport function* watchUiUpdateFilter() {\n yield takeEvery(Actions.uiUpdateFilter, uiUpdateFilter)\n}\n\nexport function* watchResetThemaxFilters() {\n yield takeEvery(Actions.resetThemaxFilters, resetThemaxFilters)\n}\n\nexport default function* filterSaga() {\n yield all([\n watchApplyThemaxFilters(),\n watchUiInvertFilter(),\n watchUiRemoveFilter(),\n watchUiUpdateFilter(),\n watchResetThemaxFilters()\n ])\n}\n","import {\n put,\n takeEvery,\n all,\n call,\n take,\n select\n} from 'redux-saga/effects'\n\nimport moment from 'moment'\n\nimport * as Actions from 'actions/themax'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/bff'\n\nexport function* themaxSearchEditorialPlans() {\n try {\n const themaxFilters = yield select(Selectors.getThemaxFilters)\n const timezone = yield select(Selectors.getTimezone)\n const page = themaxFilters.get('editorialPlansPage')\n const publicationFilter = yield select(Selectors.getThemaxPublicationsFilter)\n const editorialPlanFilter = yield select(Selectors.getThemaxEditorialPlansFilter)\n\n const body = {\n publications: publicationFilter,\n editorial_plans: editorialPlanFilter,\n limit: themaxFilters.get('limit'),\n sort_by: themaxFilters.getIn(['editorialPlansSorting', 'sortBy']),\n sort_order: themaxFilters.getIn(['editorialPlansSorting', 'sortOrder']),\n page,\n timezone\n }\n const response = yield call(Api.searchThemaxEditorialPlans, body)\n yield put(Actions.themaxSearchEditorialPlansSuccess({ response, page }))\n yield put(Actions.themaxSearchRequestSuccess())\n } catch (error) {\n yield put(Actions.themaxSearchRequestError(error))\n }\n}\n\nexport function* themaxFetchRelatedEditorialPlans() {\n try {\n const selectedEditorialPlan = yield select(Selectors.getSelectedEditorialPlan)\n const themaxFilters = yield select(Selectors.getThemaxFilters)\n const timezone = yield select(Selectors.getTimezone)\n const page = themaxFilters.get('relatedEditorialPlansPage')\n\n const body = {\n publications: {\n ids: [selectedEditorialPlan.getIn(['publication', 'id'])]\n },\n editorial_plans: {\n editorial_deadline_from: moment().subtract(2, 'years').toDate()\n },\n limit: themaxFilters.get('limit'),\n sort_by: 'editorial_deadline',\n sort_order: 'desc',\n page,\n timezone\n }\n const response = yield call(Api.searchThemaxEditorialPlans, body)\n yield put(Actions.themaxFetchRelatedEditorialPlansSuccess({ response, page }))\n } catch (error) {\n yield put(Actions.themaxFetchRelatedEditorialPlansError(error))\n }\n}\n\nexport function* themaxSearchPublications() {\n try {\n const themaxFilters = yield select(Selectors.getThemaxFilters)\n const timezone = yield select(Selectors.getTimezone)\n const page = themaxFilters.get('publicationsPage')\n const publicationFilter = yield select(Selectors.getThemaxPublicationsFilter)\n const editorialPlanFilter = yield select(Selectors.getThemaxEditorialPlansFilter)\n\n const body = {\n publications: publicationFilter,\n editorial_plans: editorialPlanFilter,\n limit: themaxFilters.get('limit'),\n sort_by: themaxFilters.getIn(['publicationsSorting', 'sortBy']),\n sort_order: themaxFilters.getIn(['publicationsSorting', 'sortOrder']),\n page,\n timezone\n }\n\n const response = yield call(Api.searchThemaxPublications, body)\n take(Actions.themaxSearchRequestSuccess)\n yield put(Actions.themaxSearchPublicationsSuccess({ response, page }))\n take(Actions.themaxSearchEditorialPlansSuccess)\n yield put(Actions.themaxSearchRequestSuccess())\n } catch (error) {\n yield put(Actions.themaxSearchRequestError(error))\n }\n}\n\nexport function* themaxSearchRequestStart() {\n yield put(Actions.setThemaxPage({ pageValue: 1, pageType: 'editorialPlansPage' }))\n yield put(Actions.setThemaxPage({ pageValue: 1, pageType: 'publicationsPage' }))\n yield put(Actions.themaxSearchEditorialPlans())\n yield put(Actions.themaxSearchPublications())\n}\n\nexport function* fetchMoreEditorialPlans() {\n const themaxFilters = yield select(Selectors.getThemaxFilters)\n const page = themaxFilters.get('editorialPlansPage') + 1\n yield put(Actions.setThemaxPage({ pageValue: page, pageType: 'editorialPlansPage' }))\n yield put(Actions.themaxSearchEditorialPlans())\n}\n\nexport function* fetchMoreRelatedEditorialPlans() {\n const themaxFilters = yield select(Selectors.getThemaxFilters)\n const page = themaxFilters.get('relatedEditorialPlansPage') + 1\n yield put(Actions.setThemaxPage({ pageValue: page, pageType: 'relatedEditorialPlansPage' }))\n yield put(Actions.themaxFetchRelatedEditorialPlansStart())\n}\n\nexport function* fetchMorePublications() {\n const themaxFilters = yield select(Selectors.getThemaxFilters)\n const page = themaxFilters.get('publicationsPage') + 1\n yield put(Actions.setThemaxPage({ pageValue: page, pageType: 'publicationsPage' }))\n yield put(Actions.themaxSearchPublications())\n}\n\nexport function* updateThemaxSort({ payload }) {\n yield put(Actions.setThemaxSort(payload))\n yield put(Actions.themaxSearchRequestStart())\n}\n\nexport function* watchThemaxSearchRequestStart() {\n yield takeEvery(Actions.themaxSearchRequestStart, themaxSearchRequestStart)\n}\n\nexport function* watchThemaxSearchEditorialPlans() {\n yield takeEvery(Actions.themaxSearchEditorialPlans, themaxSearchEditorialPlans)\n}\n\nexport function* watchThemaxFetchRelatedEditorialPlans() {\n yield takeEvery(Actions.themaxFetchRelatedEditorialPlansStart, themaxFetchRelatedEditorialPlans)\n}\n\nexport function* watchThemaxSearchPublications() {\n yield takeEvery(Actions.themaxSearchPublications, themaxSearchPublications)\n}\n\nexport function* watchThemaxFetchMoreEditorialPlansStart() {\n yield takeEvery(Actions.themaxFetchMoreEditorialPlansStart, fetchMoreEditorialPlans)\n}\n\nexport function* watchThemaxFetchMoreRelatedEditorialPlansStart() {\n yield takeEvery(Actions.themaxFetchMoreRelatedEditorialPlansStart, fetchMoreRelatedEditorialPlans)\n}\n\nexport function* watchThemaxFetchMorePublicationsStart() {\n yield takeEvery(Actions.themaxFetchMorePublicationsStart, fetchMorePublications)\n}\n\nexport function* watchUpdateThemaxSort() {\n yield takeEvery(Actions.updateThemaxSort, updateThemaxSort)\n}\n\nexport default function* searchSaga() {\n yield all([\n watchThemaxSearchRequestStart(),\n watchThemaxSearchPublications(),\n watchThemaxSearchEditorialPlans(),\n watchThemaxFetchRelatedEditorialPlans(),\n watchThemaxFetchMoreEditorialPlansStart(),\n watchThemaxFetchMoreRelatedEditorialPlansStart(),\n watchThemaxFetchMorePublicationsStart(),\n watchUpdateThemaxSort()\n ])\n}\n","import {\n all,\n call,\n put,\n select,\n takeEvery\n} from 'redux-saga/effects'\n\nimport * as Actions from 'actions/themax'\nimport { rangeToDates } from 'utils/date'\nimport * as Selectors from 'selectors'\n\nexport function* uiApplyDateFilter({ payload: { dateFrom, dateTo, range } }) {\n yield put(Actions.toggleDateForm(false))\n yield put(Actions.changeDate({ from: dateFrom, to: dateTo, range }))\n yield put(Actions.themaxSearchRequestStart())\n}\n\nexport function* uiChooseQuickSelect({ payload: range }) {\n const { from, to } = yield call(rangeToDates, range)\n\n if (from || to) {\n yield put(Actions.uiApplyDateFilter({\n dateFrom: from,\n dateTo: to,\n range\n }))\n }\n}\n\nexport function* uiEnteredQuery({ payload: query }) {\n if (query !== '') {\n const i18n = yield select(Selectors.getI18n)\n const type = yield select(Selectors.getThemaxQueryType)\n const prefix = yield call(i18n.get, type)\n yield put(Actions.addQuery({ type, query, prefix }))\n }\n\n yield put(Actions.themaxSearchRequestStart())\n}\n\nexport function* watchUiApplyDateFilter() {\n yield takeEvery(Actions.uiApplyDateFilter, uiApplyDateFilter)\n}\n\nexport function* watchUiChooseQuickSelect() {\n yield takeEvery(Actions.uiChooseQuickSelect, uiChooseQuickSelect)\n}\n\nexport function* watchUiEnteredQuery() {\n yield takeEvery(Actions.uiEnteredQuery, uiEnteredQuery)\n}\n\nexport default function* uiSaga() {\n yield all([\n watchUiApplyDateFilter(),\n watchUiChooseQuickSelect(),\n watchUiEnteredQuery()\n ])\n}\n","export const isSavedSearchOutdated = (currentFilters, savedSearchFilters) => {\n // Helper function to compare value types\n const compareValues = (value1, value2) => {\n const type1 = Array.isArray(value1) ? 'array' : typeof value1\n const type2 = Array.isArray(value2) ? 'array' : typeof value2\n\n return type1 === type2 // Return true if both values are of the same type\n }\n\n // Recursive function to compare objects and arrays\n const compareStructures = (obj1, obj2) => {\n const keys = Object.keys(obj2) // Get all keys from obj2\n let isOutdated = false // Flag to determine if the saved search is outdated\n\n // Iterate over each key in obj2\n keys.forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(obj1, key)) {\n isOutdated = true // Key does not exist in obj1, mark as outdated\n\n return\n }\n\n if (!compareValues(obj1[key], obj2[key])) {\n isOutdated = true // Value types do not match, mark as outdated\n\n return\n }\n\n // Check if the value is an object (and not null) or an array\n const isObjectOrArray = value => (typeof value === 'object' && value !== null) || Array.isArray(value)\n // Check if the object or array is empty\n const isEmptyStructure = value => (Array.isArray(value) && value.length === 0)\n || (typeof value === 'object' && value !== null && Object.keys(value).length === 0)\n\n // If both values are objects or arrays, compare recursively\n if (isObjectOrArray(obj1[key]) && isObjectOrArray(obj2[key])) {\n // If the structure in obj1 is not empty, compare structures\n if (!isEmptyStructure(obj1[key])) {\n if (compareStructures(obj1[key], obj2[key])) {\n isOutdated = true // Nested structures are outdated, mark as outdated\n }\n }\n }\n })\n\n return isOutdated // Return the flag indicating if the saved search is outdated\n }\n\n // Initial type check for the root objects\n if (\n typeof currentFilters !== 'object'\n || currentFilters === null\n || typeof savedSearchFilters !== 'object'\n || savedSearchFilters === null\n ) {\n return true // If either object is not an object or is null, they are not comparable\n }\n\n return compareStructures(currentFilters, savedSearchFilters) // Compare the structures of currentFilters and savedSearchFilters\n}\n","import {\n put,\n takeEvery,\n call,\n all,\n take,\n select\n} from 'redux-saga/effects'\n\nimport { fromJS } from 'immutable'\n\nimport * as Api from 'api/bff'\nimport * as Actions from 'actions/themax'\nimport * as Selectors from 'selectors'\nimport * as AppActions from 'actions/app'\nimport * as SavedSearchesActions from 'actions/saved_searches'\nimport * as NavigationActions from 'actions/navigation'\nimport { initialState as themaxFilters } from 'reducers/themax/filter'\nimport { resetState as savedSearchesData } from 'reducers/saved_searches/dialogs/data'\n\nimport { isSavedSearchOutdated } from 'utils/themax'\n\nexport function* saveThemaxSavedSearch({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const filters = yield select(Selectors.getThemaxFilters)\n\n let text\n let result\n const savedSearch = payload\n const id = savedSearch.get('id')\n\n const requestBody = {\n name_de: savedSearch.get('nameDe'),\n name_en: savedSearch.get('nameEn'),\n name_fr: savedSearch.get('nameFr'),\n name_ru: savedSearch.get('nameRu'),\n name_zh: savedSearch.get('nameZh'),\n name_ja: savedSearch.get('nameJa'),\n description: savedSearch.get('description'),\n filters: {\n booleans: filters.get('booleans'),\n reachFilter: filters.get('reachFilter'),\n pageAveFilter: filters.get('pageAveFilter'),\n topicPlanQueries: filters.get('topicPlanQueries'),\n publicationQueries: filters.get('publicationQueries'),\n mediaTypes: filters.get('mediaTypes')\n }\n }\n\n if (id) {\n result = yield call(Api.updateThemaxSavedSearch, id, requestBody)\n text = i18n.get('saved_search_updated')\n } else {\n result = yield call(Api.createThemaxSavedSearch, requestBody)\n text = i18n.get('saved_search_created')\n }\n\n yield put(SavedSearchesActions.setExecutedSavedSearch(fromJS(result)))\n yield put(Actions.saveThemaxSavedSearchSuccess(result))\n yield put(AppActions.showAppMessage({\n text,\n success: true\n }))\n } catch (error) {\n yield put(Actions.saveThemaxSavedSearchError(error))\n yield put(AppActions.showAppMessage({\n success: false\n }))\n }\n}\n\nexport function* deleteThemaxSavedSearch({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const savedSearch = payload\n const id = savedSearch.get('id')\n\n const result = yield call(Api.deleteThemaxSavedSearch, id)\n\n yield put(Actions.deleteThemaxSavedSearchSuccess(result))\n yield put(AppActions.showAppMessage({\n text: i18n.get('saved_search_deleted'),\n success: true\n }))\n } catch (error) {\n yield put(Actions.deleteThemaxSavedSearchError(error))\n yield put(AppActions.showAppMessage({\n success: false\n }))\n }\n}\n\nexport function* searchThemaxSavedSearches() {\n try {\n const result = yield call(Api.searchThemaxSavedSearches, {})\n\n yield put(Actions.searchThemaxSavedSearchesSuccess(result))\n } catch (error) {\n yield put(Actions.searchThemaxSavedSearchesError(error))\n\n yield put(AppActions.showAppMessage({\n success: false\n }))\n }\n}\n\nexport function* resetThemaxSavedSearches() {\n yield put(SavedSearchesActions.setExecutedSavedSearch(null))\n yield put(Actions.resetThemaxFilters())\n yield put(Actions.themaxSearchRequestStart())\n}\n\nexport function* executeThemaxSavedSearch({ payload }) {\n try {\n const id = payload.get('id')\n const result = yield call(Api.fetchThemaxSavedSearch, id)\n\n if (isSavedSearchOutdated(themaxFilters.toJS(), result.filters)) {\n yield put(SavedSearchesActions.setExecutedSavedSearch(payload.set('outdated', true)))\n yield put(Actions.resetThemaxFilters())\n } else {\n yield put(SavedSearchesActions.setExecutedSavedSearch(payload))\n yield put(Actions.setThemaxSavedSearchFilters(result))\n yield put(Actions.themaxSearchRequestStart())\n }\n\n const isSavedSearchesOverview = yield select(Selectors.isSavedSearchesOverview)\n\n if (isSavedSearchesOverview) {\n yield put(NavigationActions.back())\n }\n } catch (error) {\n yield put(AppActions.showAppMessage({\n success: false\n }))\n }\n}\n\nexport function* favoriteThemaxSavedSearch({ payload }) {\n const i18n = yield select(Selectors.getI18n)\n\n try {\n const savedSearch = payload\n const id = savedSearch.get('id')\n\n const result = yield call(Api.favoriteThemaxSavedSearch, id)\n\n yield put(Actions.favoriteThemaxSavedSearchSuccess(result))\n yield put(AppActions.showAppMessage({\n text: i18n.get('saved_search_favorited'),\n success: true\n }))\n } catch (error) {\n yield put(Actions.favoriteThemaxSavedSearchError(error))\n yield put(AppActions.showAppMessage({\n success: false\n }))\n }\n}\n\nexport function* initializeThemaxSavedSearches() {\n yield put(SavedSearchesActions.setExecutedSavedSearch(null))\n yield put(SavedSearchesActions.updateSelectedSavedSearch(savedSearchesData.get('selectedSavedSearch')))\n yield put(Actions.searchThemaxSavedSearchesStart())\n yield take(Actions.searchThemaxSavedSearchesSuccess)\n\n const savedSearches = yield select(Selectors.getThemaxSavedSearches)\n\n const favoriteSavedSearch = savedSearches.get('items').find(ss => ss.get('favorite') === true)\n\n if (favoriteSavedSearch) {\n yield put(Actions.executeThemaxSavedSearch(favoriteSavedSearch))\n }\n}\n\nexport function* watchInitializeThemaxSavedSearches() {\n yield takeEvery(Actions.initializeThemaxSavedSearches, initializeThemaxSavedSearches)\n}\n\nexport function* watchSaveThemaxSavedSearch() {\n yield takeEvery(Actions.saveThemaxSavedSearchStart, saveThemaxSavedSearch)\n}\n\nexport function* watchSearchThemaxSavedSearches() {\n yield takeEvery(Actions.searchThemaxSavedSearchesStart, searchThemaxSavedSearches)\n}\n\nexport function* watchDeleteThemaxSavedSearch() {\n yield takeEvery(Actions.deleteThemaxSavedSearchStart, deleteThemaxSavedSearch)\n}\n\nexport function* watchExecuteThemaxSavedSearch() {\n yield takeEvery(Actions.executeThemaxSavedSearch, executeThemaxSavedSearch)\n}\n\nexport function* watchResetThemaxSavedSearches() {\n yield takeEvery(Actions.resetThemaxSavedSearches, resetThemaxSavedSearches)\n}\n\nexport function* watchFavoriteThemaxSavedSearch() {\n yield takeEvery(Actions.favoriteThemaxSavedSearchStart, favoriteThemaxSavedSearch)\n}\n\nexport default function* savedSearchesSaga() {\n yield all([\n watchInitializeThemaxSavedSearches(),\n watchSaveThemaxSavedSearch(),\n watchSearchThemaxSavedSearches(),\n watchDeleteThemaxSavedSearch(),\n watchExecuteThemaxSavedSearch(),\n watchResetThemaxSavedSearches(),\n watchFavoriteThemaxSavedSearch()\n ])\n}\n","import { all } from 'redux-saga/effects'\n\nimport mainSaga from './main'\nimport filterSaga from './filter'\nimport searchSaga from './search'\nimport uiSaga from './ui'\nimport savedSearchesSaga from './saved_searches'\n\nexport default function* themaxSaga() {\n yield all([\n mainSaga(),\n filterSaga(),\n searchSaga(),\n uiSaga(),\n savedSearchesSaga()\n ])\n}\n","import { put, select, call, takeLatest, all } from 'redux-saga/effects'\nimport { fromJS } from 'immutable'\n\nimport * as Actions from 'actions/ai'\nimport * as Selectors from 'selectors'\nimport * as Api from 'api/bff'\nimport * as AppActions from 'actions/app'\n\nexport function* aiAnalysis({ payload }) {\n try {\n let news = payload.news || fromJS([])\n\n const locale = yield select(Selectors.getAiSettingsLocale)\n\n news = news.map(n => ({\n id: n.get('id'),\n snippet: n.get('snippet'),\n headline: n.get('headline'),\n article_date: n.get('articleDate'),\n publication: {\n channel: {\n name: n.getIn(['publication', 'channel', 'name'])\n },\n name: n.getIn(['publication', 'name'])\n },\n key_figures: {\n reach: n.getIn(['keyFigures', 'reach']),\n interactions: n.getIn(['keyFigures', 'interactions'])\n }\n })).toJS()\n\n const body = { ...(payload || {}), locale, news }\n\n const result = yield call(Api.getNewsAiAnalysis, body)\n\n yield put(Actions.aiAnalysisSuccess(result))\n } catch (error) {\n yield put(Actions.aiAnalysisError(error))\n yield put(AppActions.genericErrorMessage())\n yield put(AppActions.exception(error))\n }\n}\n\nexport function* watchAiAnalysis() {\n yield takeLatest(Actions.aiAnalysisStart, aiAnalysis)\n}\n\nexport default function* shoppingCartSaga() {\n yield all([\n watchAiAnalysis()\n ])\n}\n","import { all } from 'redux-saga/effects'\n\nimport analysisSaga from './analysis'\nimport apiKeysSaga from './api_keys'\nimport appSaga from './app'\nimport authSaga from './auth'\nimport chartsSaga from './charts'\nimport configSaga from './config'\nimport customTagsSaga from './custom_tags'\nimport dashboardSaga from './dashboard'\nimport editMailingListSaga from './edit_mailing_list'\nimport editNewsSaga from './edit_news'\nimport environmentSaga from './environment'\nimport exportSaga from './export'\nimport filterTimelineSaga from './filter_timeline'\nimport gaSaga from './ga'\nimport identitySetsSaga from './identity_sets'\nimport influencersSaga from './influencers'\nimport mediaReviewSaga from './media_review'\nimport navigationSaga from './navigation'\nimport newsSaga from './news'\nimport pageIdentitiesSaga from './page_identities'\nimport publicationsSaga from './publications'\nimport savedDashboardSaga from './saved_dashboard'\nimport savedChartsSaga from './saved_charts'\nimport savedSearchesSaga from './saved_searches'\nimport shoppingCartSaga from './shopping_cart'\nimport shoppingNews from './shopping_news'\nimport subscriptionsSaga from './subscriptions'\nimport uiSaga from './ui'\nimport userSaga from './user'\nimport darknetSaga from './darknet'\nimport contentDeskSaga from './content_desk'\nimport contactManagementSaga from './contact_management'\nimport notificationsSaga from './notifications'\nimport surveySaga from './survey'\nimport anewstipSaga from './anewstip'\nimport emailTemplatesLibrarySaga from './email_templates_library'\nimport unsplashSaga from './unsplash'\nimport ustSaga from './ust'\nimport administrationSaga from './administration'\nimport themaxSaga from './themax'\nimport aiSaga from './ai'\n\nexport default function* rootSaga() {\n yield all([\n analysisSaga(),\n apiKeysSaga(),\n appSaga(),\n authSaga(),\n chartsSaga(),\n configSaga(),\n customTagsSaga(),\n dashboardSaga(),\n editMailingListSaga(),\n editNewsSaga(),\n environmentSaga(),\n exportSaga(),\n filterTimelineSaga(),\n gaSaga(),\n identitySetsSaga(),\n influencersSaga(),\n mediaReviewSaga(),\n navigationSaga(),\n newsSaga(),\n pageIdentitiesSaga(),\n publicationsSaga(),\n savedDashboardSaga(),\n savedChartsSaga(),\n savedSearchesSaga(),\n shoppingCartSaga(),\n shoppingNews(),\n subscriptionsSaga(),\n uiSaga(),\n userSaga(),\n darknetSaga(),\n contentDeskSaga(),\n contactManagementSaga(),\n notificationsSaga(),\n unsplashSaga(),\n surveySaga(),\n anewstipSaga(),\n emailTemplatesLibrarySaga(),\n ustSaga(),\n administrationSaga(),\n themaxSaga(),\n aiSaga()\n ])\n}\n","import * as GA from 'utils/ga'\nimport { toggleLoading } from 'actions/app'\nimport { logException } from 'utils/error'\n\nexport const trackExceptions = _store => next => action => {\n try {\n return next(action)\n } catch (error) {\n if (!error.response || (error.response && error.response.statusCode !== 401)) {\n logException(error)\n }\n\n throw error\n }\n}\n\nexport const trackActions = _store => next => action => {\n try {\n let category = 'AUTO_TRACKING'\n let act = action.type\n const parts = action.type.split('/')\n\n if (parts[0] !== 'GA') {\n if (parts.length > 1) {\n category = `${category}/${parts.slice(0, -1).join('/')}`\n act = parts[parts.length - 1]\n }\n\n GA.event({\n category,\n action: act,\n label: (typeof action.payload === 'string' ? action.payload : undefined)\n })\n }\n } catch (error) { // eslint-disable-line no-empty\n }\n\n return next(action)\n}\n\nexport const loadingIndicator = store => next => action => {\n if (action.meta && action.meta.indicator !== undefined) {\n store.dispatch(toggleLoading(action.meta.indicator))\n }\n\n return next(action)\n}\n","import { createHashHistory } from 'history'\n\nexport default createHashHistory()\n","import { compose, createStore, applyMiddleware } from 'redux'\nimport createSagaMiddleware from 'redux-saga'\nimport { createReduxHistoryContext } from 'redux-first-history'\n\nimport { logException } from 'utils/error'\nimport rootReducer from 'reducers/index'\nimport rootSaga from 'sagas'\nimport { trackExceptions, trackActions, loadingIndicator } from 'utils/middlewares'\n\nimport * as GA from 'utils/ga'\nimport history from './configureHistory'\nimport { getCookieOption } from '../selectors'\n\nconst { createReduxHistory, routerMiddleware, routerReducer } = createReduxHistoryContext({\n history\n})\n\nconst sagaMiddleware = createSagaMiddleware({\n onError: logException\n})\n\nlet gaInitialized = false\n\nexport default function configureStore(initialState = {}) {\n const enhancer = compose(\n applyMiddleware(\n sagaMiddleware,\n routerMiddleware,\n trackExceptions,\n trackActions,\n loadingIndicator\n )\n )\n\n const store = createStore(\n rootReducer(routerReducer),\n initialState,\n enhancer\n )\n\n store.subscribe(() => {\n if (!gaInitialized) {\n const cookieOptions = getCookieOption(store.getState())\n const accepted = (cookieOptions === 'accept_all' || cookieOptions === 'true')\n\n if (accepted) {\n GA.init()\n gaInitialized = true\n }\n }\n })\n\n sagaMiddleware.run(rootSaga)\n\n return {\n store,\n history: createReduxHistory(store)\n }\n}\n","import configureStore from './configureStore'\n\nconst { store, history } = configureStore()\n\nexport default store\nexport { history }\n","import { fromJS } from 'immutable'\nimport { createImmutableSelector } from 'utils/reselect'\nimport camelcase from 'camelcase'\n\nimport store from '../store'\n\nconst getKeyMap = createImmutableSelector(\n state => state.statics.getIn(['sorted', 'aiEntities']) || fromJS([]),\n aiEntities => (aiEntities || fromJS([])).reduce((acc, c) => acc.merge({\n [c.get('key')]: c,\n [camelcase(c.get('key'))]: c\n }), fromJS({}))\n)\n\nexport const isAiEntity = key => !!key && getKeyMap(store.getState()).has(key)\n\nexport const isAiEntityKey = key => camelcase(`${key}`).startsWith('aiEntityInstance')\n\nexport const getAiEntityName = key => getKeyMap(store.getState()).getIn([key, 'label'])\n","import fetch from 'cross-fetch'\nimport { checkBffVersion } from 'actions/app'\nimport camelcaseKeysDeep from 'camelcase-keys-deep'\nimport { getBaseUrl, getAccessToken, getNewsradarId } from 'selectors'\nimport store from '../store'\n\nconst maxRetries = 3\n\nconst buildError = (request, response, message, stackTrace) => {\n let error = new Error(`Fetch error ${request.method} ${request.url}: Network failure`)\n\n error.response = {\n message: 'Oops! Something went wrong. Please try again later.'\n }\n\n if (response) {\n error = new Error(`Fetch error for ${request.method} ${request.url}: ${response.status} (${response.statusText})`)\n const responseHeaders = {}\n response.headers.forEach((value, name) => {\n responseHeaders[name] = value\n })\n\n error.response = {\n statusCode: response.status,\n headers: responseHeaders,\n message\n }\n }\n\n if (stackTrace) {\n error.stack = stackTrace\n }\n\n error.request = request\n\n return error\n}\n\nconst retryRequest = (request, response, stackTrace) => {\n if ((request.config.retries || 0) < maxRetries) {\n return new Promise(resolve => {\n const newConfig = { ...request.config, retries: (request.config.retries || 0) + 1 }\n setTimeout(() => resolve(doRequest(request.method, request.url, request.headers, newConfig, request.addAuthHeaders)), 5000) // eslint-disable-line\n })\n }\n\n throw buildError(request, response, '', stackTrace)\n}\n\nconst networkError = request => error => retryRequest(request, null, error.stack)\n\nconst checkStatus = (request, stackTrace) => response => {\n if (process.env.NODE_ENV === 'production') {\n const bffVersion = response.headers.get('x-bff-version')\n\n if (bffVersion) {\n store.dispatch(checkBffVersion(bffVersion))\n }\n }\n\n if (response.status >= 200 && response.status < 300) {\n return response\n }\n\n if (response.status === 502 && (request.config.retries || 0) <= maxRetries) {\n return retryRequest(request, response, stackTrace)\n }\n\n return response.json().then(data => {\n throw buildError(request, response, data.message, stackTrace)\n })\n}\n\nconst parseJSON = response => response.json()\nconst parseBlob = response => response.blob()\nexport const camelize = response => camelcaseKeysDeep(response)\n\nexport const jsonHeaders = {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n}\n\nexport const defaultHeaders = { ...jsonHeaders, 'x-base-url': getBaseUrl(), 'x-response-case': 'camelcase' }\n\nexport const formHeaders = {\n Accept: 'application/json'\n}\n\nexport const doRequest = (method, url, headers = defaultHeaders, config = {}, addAuthHeaders = true) => {\n const stackTrace = (new Error()).stack\n const state = store.getState()\n const newHeaders = { ...headers }\n\n if (addAuthHeaders) {\n const accessToken = getAccessToken(state)\n\n if (accessToken) {\n newHeaders['x-access-token'] = accessToken\n }\n\n const newsradarId = getNewsradarId(state)\n\n if (accessToken) {\n newHeaders['x-newsradar-id'] = newsradarId\n }\n }\n\n const request = {\n url,\n method,\n headers: newHeaders,\n config,\n addAuthHeaders\n }\n\n return fetch(\n url, { ...config, method, headers: newHeaders }\n )\n .then(checkStatus(request, stackTrace), networkError(request))\n}\n\nexport const doJsonRequest = (method, url, headers = defaultHeaders, config = {}, addAuthHeaders = true) => (\n doRequest(method, url, headers, config, addAuthHeaders)\n .then(parseJSON)\n)\n\nexport const doBlobRequest = (method, url, headers = defaultHeaders, config = {}, addAuthHeaders = true) => (\n doRequest(method, url, headers, config, addAuthHeaders)\n .then(parseBlob)\n)\n\nexport const get = url => doJsonRequest('GET', url, defaultHeaders)\n\nexport const post = (url, body, accept = 'json') => {\n if (accept === 'json') {\n return doJsonRequest('POST', url, defaultHeaders, {\n body: JSON.stringify(body)\n })\n }\n\n if (accept === 'blob') {\n return doBlobRequest('POST', url, defaultHeaders, {\n body: JSON.stringify(body)\n })\n }\n\n return doRequest('POST', url, defaultHeaders, {\n body: JSON.stringify(body)\n })\n}\n\nexport const patch = (url, body) => doJsonRequest('POST', url, defaultHeaders, {\n body: JSON.stringify({ ...(body || {}), _method: 'PATCH' })\n})\n\nconst deleteConfig = { body: JSON.stringify({ _method: 'DELETE' }) }\nexport const destroy = url => doJsonRequest('POST', url, defaultHeaders, deleteConfig)\n\nexport const form = (url, formData) => doJsonRequest('POST', url, formHeaders, {\n body: formData\n})\n","import { fromJS, List, Map, Set } from 'immutable'\nimport decamelize from 'decamelize'\nimport moment from 'moment-timezone'\nimport tinycolor from 'tinycolor2'\nimport { v4 } from 'uuid'\n\nimport { NewsPageSize, ChartTypes } from '../static/constants'\nimport { getTonalityColor } from './tonality'\nimport { getCustomKpiName, isCustomKpi } from './custom_kpis'\nimport { getAiEntityName, isAiEntity } from './ai_entities'\n\nimport {\n isPressrelationsNewsChart,\n isGoogleAnalyticsChart,\n isMozChart,\n isYoutubeAnalyticsChart,\n isLinkedInAnalyticsChart,\n isFacebookAnalyticsChart,\n isTwitterAnalyticsChart,\n isImageChart,\n isTextChart,\n isExternalWidgetChart\n} from './data_source'\n\nexport {\n isPressrelationsNewsChart,\n isGoogleAnalyticsChart,\n isMozChart,\n isYoutubeAnalyticsChart,\n isLinkedInAnalyticsChart,\n isFacebookAnalyticsChart,\n isTwitterAnalyticsChart,\n isImageChart,\n isTextChart,\n isExternalWidgetChart\n}\n\nconst sortByByType = chart => {\n if (chart.get('type').startsWith('news') || chart.get('type').startsWith('image')) {\n return ''\n }\n\n return 'buzz'\n}\nconst stackableSecondLevels = fromJS({\n tonality: 'tonalities',\n statementTonality: 'statementTonalities',\n sentiment: 'sentiments'\n})\n\nconst getThirdLevel = chart => chart.get('thirdLevel') || 'buzz'\n\nconst levelsWithTonalityColor = ['tonality', 'tonalities', 'statementTonality', 'statementTonalities']\nexport const useTonalityColor = key => levelsWithTonalityColor.indexOf(key) !== -1\n\nconst levelsWithSentimentColor = ['sentiment', 'sentiments']\nexport const useSentimentColor = key => levelsWithSentimentColor.indexOf(key) !== -1\n\nconst chartTypesWithChangingColors = [ChartTypes.BAR, ChartTypes.PIE, ChartTypes.FUNNEL]\nconst useChangingColors = key => chartTypesWithChangingColors.indexOf(key) !== -1\n\nconst chartTypesWithFirstLevelOnly = [\n ChartTypes.RECTANGLE,\n ChartTypes.GAUGE,\n ChartTypes.NEWS_FEED,\n ChartTypes.NEWS_TICKER,\n ChartTypes.INFLUENCER_FEED,\n ChartTypes.PAGE_IDENTITY_FEED,\n ChartTypes.PUBLICATION_FEED,\n ChartTypes.SOCIAL_MEDIA_ANALYTICS_FEED,\n ChartTypes.SOCIAL_MEDIA_ANALYTICS_STORIES_FEED,\n ChartTypes.IMAGE_FEED\n]\nconst chartTypesWithThirdLevelOnly = [\n 'pageIdentitiesTimeline'\n]\nconst hasFirstLevelOnly = key => chartTypesWithFirstLevelOnly.indexOf(key) !== -1\nconst hasThirdLevelOnly = key => chartTypesWithThirdLevelOnly.indexOf(key) !== -1\n\nconst chartTypesWithSorting = [\n ChartTypes.NEWS_FEED,\n ChartTypes.NEWS_TICKER,\n ChartTypes.INFLUENCER_FEED,\n ChartTypes.PUBLICATION_FEED,\n ChartTypes.IMAGE_FEED\n]\nconst hasSorting = key => chartTypesWithSorting.indexOf(key) !== -1\n\nconst chartTypesWithoutLimit = [ChartTypes.TAG_CLOUD, ChartTypes.TREEMAP]\nconst hasLimit = key => chartTypesWithoutLimit.indexOf(key) === -1\n\nconst timelineFirstLevels = [\n 'timeline',\n 'savedSearchesTimeline',\n 'pageIdentitiesTimeline'\n]\nexport const isTimeline = chart => timelineFirstLevels.indexOf(chart.get('firstLevel')) !== -1\n\nconst socialMediaAnalyticsFeeds = [\n ChartTypes.SOCIAL_MEDIA_ANALYTICS_FEED,\n ChartTypes.SOCIAL_MEDIA_ANALYTICS_STORIES_FEED\n]\nexport const isSocialMediaAnalyticsFeed = chart => socialMediaAnalyticsFeeds.indexOf(chart.get('firstLevel')) !== -1\n\nexport const tonalityValues = {\n extremely_positive: 3,\n very_positive: 2,\n positive: 1,\n neutral: 0,\n negative: -1,\n very_negative: -2,\n extremely_negative: -3,\n unknown: null\n}\n\nexport const sentimentValues = tonalityValues\n\nconst feedChartTypes = Set([\n ChartTypes.NEWS_FEED,\n ChartTypes.NEWS_TICKER,\n ChartTypes.INFLUENCER_FEED,\n ChartTypes.PAGE_IDENTITY_FEED,\n ChartTypes.PUBLICATION_FEED,\n ChartTypes.SOCIAL_MEDIA_ANALYTICS_FEED,\n ChartTypes.SOCIAL_MEDIA_ANALYTICS_STORIES_FEED,\n ChartTypes.RECTANGLE,\n ChartTypes.IMAGE_FEED\n])\n\nexport const isFeedChart = chart => feedChartTypes.has(chart.get('type'))\n\nexport const isRectangleChart = chart => chart.get('type') === ChartTypes.RECTANGLE\n\nconst getLabel = (label, i18n) => i18n.get(decamelize((label || '')).toString())\n\nconst addAverageTimeSpan = (label, chart, i18n) => {\n const averageByTimespan = chart.getIn(['opts', 'averageByTimespan'])\n\n if (!averageByTimespan || isTimeline(chart)) {\n return label\n }\n\n return `${i18n.get(`${decamelize(averageByTimespan || '')}_average`, { measure: label })}`\n}\n\nconst formatDate = dateString => moment(dateString)\n .format('L')\n\nconst getTonalityFromAgg = agg => (\n agg.getIn(['stats', 'tonality']) !== undefined ? agg.getIn(['stats', 'tonality']) : agg.getIn(['stats', 'statementTonality'])\n)\n\nconst buildThirdLevelLabel = (chart, i18n) => {\n let label = getLabel(chart.get('thirdLevel'), i18n)\n\n if (isCustomKpi(decamelize(chart.get('thirdLevel')))) {\n label = getCustomKpiName(decamelize(chart.get('thirdLevel')))\n }\n\n return addAverageTimeSpan(label, chart, i18n)\n}\n\nconst buildFirstLevelLabel = (chart, i18n) => {\n let label = getLabel(chart.get('firstLevel'), i18n)\n\n if (!chart.get('firstLevel')) {\n return label\n }\n\n if (isCustomKpi(decamelize(chart.get('firstLevel')))) {\n label = getCustomKpiName(decamelize(chart.get('firstLevel')))\n }\n\n if (isAiEntity(decamelize(chart.get('firstLevel')))) {\n label = getAiEntityName(chart.get('firstLevel'))\n }\n\n return label\n}\n\nconst buildSecondLevelLabel = (chart, i18n) => {\n let label = getLabel(chart.get('secondLevel'), i18n)\n\n if (!chart.get('secondLevel')) {\n return label\n }\n\n if (isAiEntity(decamelize(chart.get('secondLevel')))) {\n label = getAiEntityName(chart.get('secondLevel'))\n }\n\n return label\n}\n\nexport const addDates = (chart, i18n, labels = []) => {\n if (isLinkedInAnalyticsChart(chart) && chart.get('type') === ChartTypes.SOCIAL_MEDIA_ANALYTICS_FEED) {\n labels.push(i18n.get('until_now'))\n } else if (chart.get('type') === ChartTypes.SOCIAL_MEDIA_ANALYTICS_STORIES_FEED) {\n labels.push(i18n.get('last_24_hours'))\n } else if (chart.get('dateRange')) {\n if (chart.get('dateRange').startsWith('relative_range')) {\n const [count, unit] = chart.get('dateRange').replace('relative_range_', '').split('_')\n labels.push(i18n.get('relative_date_range', { count, unit: i18n.get(unit) }))\n } else {\n labels.push(i18n.get(chart.get('dateRange')))\n }\n } else if (chart.get('dateFrom') && chart.get('dateTo')) {\n labels.push(`${formatDate(chart.get('dateFrom'))} - ${formatDate(chart.get('dateTo'))}`)\n }\n\n return labels\n}\n\nexport const generateChartLabel = (chart, i18n, autoLabel = true) => {\n if (autoLabel === false) {\n const labels = [chart.get('label')]\n\n if (chart.getIn(['opts', 'addDateToLabel'])) {\n addDates(chart, i18n, labels)\n }\n\n return labels.filter(l => l).join(' / ')\n }\n\n if (isImageChart(chart) || isTextChart(chart) || isExternalWidgetChart(chart)) {\n return ''\n }\n\n const labels = []\n\n if (!isPressrelationsNewsChart(chart)) {\n if (!isFacebookAnalyticsChart(chart)) {\n labels.push(i18n.get(chart.get('dataSource')))\n }\n\n if (isFacebookAnalyticsChart(chart)) {\n let pageName = chart.getIn(['opts', 'facebookAnalytics', 'pageName'])\n\n if (pageName) {\n const [type, ...rest] = pageName.split(' | ')\n let dataSource = i18n.get(chart.get('dataSource'))\n\n if (rest.length) {\n dataSource = dataSource.replace('Facebook', type)\n pageName = rest.join(' | ')\n }\n\n labels.push(dataSource)\n labels.push(pageName)\n }\n }\n\n if (isGoogleAnalyticsChart(chart)) {\n labels.push(chart.getIn(['opts', 'googleAnalytics', 'viewName']))\n }\n\n if (isLinkedInAnalyticsChart(chart)) {\n labels.push(chart.getIn(['opts', 'linkedInAnalytics', 'organizationName']))\n }\n }\n\n if (hasFirstLevelOnly(chart.get('type')) || hasFirstLevelOnly(chart.get('firstLevel'))) {\n labels.push(addAverageTimeSpan(buildFirstLevelLabel(chart, i18n), chart, i18n))\n\n if (hasSorting(chart.get('type'))) {\n const sortingLabel = i18n.get(`sorting_select_${(chart.get('sortBy', '') || sortByByType(chart))}`)\n labels.push(`${i18n.get('sort_by')}: ${sortingLabel}`)\n }\n\n return labels.filter(l => l).join(' / ')\n }\n\n if (hasThirdLevelOnly(chart.get('firstLevel'))) {\n return buildThirdLevelLabel(chart, i18n)\n }\n\n labels.push(buildFirstLevelLabel(chart, i18n))\n\n if (chart.get('secondLevel')) {\n if (chart.get('secondLevel') === 'analysisCodes') {\n labels.push(i18n.get('code_grouping'))\n } else {\n labels.push(buildSecondLevelLabel(chart, i18n))\n }\n }\n\n if (chart.get('thirdLevel')) {\n labels.push(buildThirdLevelLabel(chart, i18n))\n } else {\n labels.push(buildThirdLevelLabel(chart.set('thirdLevel', 'buzz'), i18n))\n }\n\n return labels.filter(l => l).join(' / ')\n}\n\nexport const generateChartTopLabel = (chart, i18n, autoLabel = true) => {\n if (autoLabel === false) {\n const labels = [chart.get('topLabel')]\n\n if (chart.getIn(['opts', 'addDateToTopLabel'])) {\n addDates(chart, i18n, labels)\n }\n\n return labels.filter(l => l).join(' / ')\n }\n\n if (isImageChart(chart) || isTextChart(chart) || isExternalWidgetChart(chart)) {\n return ''\n }\n\n const labels = []\n\n if (chart.getIn(['savedSearch', 'moduleName'])) {\n labels.push(i18n.get(`module_${chart.getIn(['savedSearch', 'moduleName'])}`))\n }\n\n if (chart.getIn(['savedSearch', 'name'])) {\n if (chart.get('additionalSavedSearchIds') && chart.get('additionalSavedSearchIds').size > 0) {\n labels.push(i18n.get('multi_search', { count: chart.get('additionalSavedSearchIds').size + 1 }))\n } else {\n labels.push(i18n.get(chart.getIn(['savedSearch', 'name'])))\n }\n }\n\n addDates(chart, i18n, labels)\n\n return labels.join(' / ')\n}\n\nexport const buildFirstLevelColorKey = (data, chart) => {\n if (isTimeline(chart)) {\n return 'timeline'\n }\n\n if (chart.get('type') === ChartTypes.LINE) {\n return 'line'\n }\n\n return `${chart.get('firstLevel')}_${Map.isMap(data) ? data.get('id') : data.id}`\n}\n\nexport const findConfiguredFirstLevelColor = (data, chart) => {\n const config = chart.getIn(['opts', 'colorConfig'])\n\n if (config) {\n const found = config.find(item => item.get('key') === buildFirstLevelColorKey(data, chart))\n\n if (found) {\n return found.get('value')\n }\n }\n\n return null\n}\n\nexport const buildSecondLevelColorKey = (data, chart) => `${chart.get('secondLevel')}_${Map.isMap(data) ? data.get('id') : data.id}`\n\nexport const findConfiguredSecondLevelColor = (data, chart) => {\n const config = chart.getIn(['opts', 'colorConfig'])\n\n if (config) {\n const found = config.find(item => item.get('key') === buildSecondLevelColorKey(data, chart))\n\n if (found) {\n return found.get('value')\n }\n }\n\n return null\n}\n\nconst updateFill = (entity, color, forcedColor) => entity.update('fill', fill => forcedColor || fill || entity.get('color') || color)\n\nconst buildStack = (chart, agg, colorScheme, domain) => {\n const secondLevel = stackableSecondLevels.get(chart.get('secondLevel'), chart.get('secondLevel'))\n const thirdLevel = getThirdLevel(chart)\n\n return agg.getIn(['stats', secondLevel], fromJS([])).map(item => {\n let newItem = item\n\n // Override colors with tonality colors when set in first or second level\n if (useTonalityColor(secondLevel)) {\n newItem = updateFill(item, null, findConfiguredSecondLevelColor(item, chart) || getTonalityColor(tonalityValues[item.get('id')]))\n\n // Override colors with sentiment colors when set in first or second level\n } else if (useSentimentColor(secondLevel)) {\n newItem = updateFill(item, null, findConfiguredSecondLevelColor(item, chart) || getTonalityColor(sentimentValues[item.get('id')]))\n\n // Round robin colors\n } else {\n const color = colorScheme[domain.indexOf(item.get('id'))]\n newItem = updateFill(item, color, findConfiguredSecondLevelColor(item, chart))\n }\n\n if (thirdLevel) {\n newItem = newItem.set('count', newItem.getIn(['stats', thirdLevel]))\n }\n\n return newItem.delete('stats')\n })\n}\n\nexport const formatData = (data, chart, colors) => {\n // Special news \"aggregation\"\n if (chart.get('firstLevel') === 'newsFeed') {\n if (data && data.has('groups') && !data.get('groups').size) {\n return null\n }\n\n if (data && data.has('news') && !data.get('news').size) {\n return null\n }\n\n return data\n }\n\n // Special posts \"aggregation\"\n if (isSocialMediaAnalyticsFeed(chart)) {\n if (data && data.has('posts') && !data.get('posts').size) {\n return null\n }\n\n return data\n }\n\n if (chart.get('firstLevel') === 'topInfluencers') {\n if (data && data.has('influencers') && !data.get('influencers').size) {\n return null\n }\n } else if (chart.get('firstLevel') === 'pageIdentities') {\n if (data && data.hasIn(['pageIdentities', 'pageIdentities']) && !data.getIn(['pageIdentities', 'pageIdentities']).size) {\n return null\n }\n } else if (chart.get('firstLevel') === 'topPublications') {\n if (data && data.has('publications') && !data.get('publications').size) {\n return null\n }\n }\n\n let aggregation = data\n\n const colorsArr = colors.get('charts')\n .sortBy((value, key) => key)\n .valueSeq()\n .toJS()\n\n const primary = colorsArr[0]\n\n if (aggregation === null || (List.isList(aggregation) && !aggregation.size)) {\n return null\n }\n\n // Simple aggregations like numbers do not need to be mapped\n if (!List.isList(aggregation)) {\n return aggregation\n }\n\n // We need all countries/states in world map charts only\n if (\n (!chart.get('type', '').startsWith('worldMap') && ['states', 'countries'].indexOf(chart.get('firstLevel')) !== -1)\n || (isGoogleAnalyticsChart(chart) && !isTimeline(chart) && hasLimit(chart.get('type')))\n ) {\n aggregation = aggregation.slice(0, chart.getIn(['opts', 'size']) || NewsPageSize)\n }\n\n // Set entire entity as filterData to be used for drilldown\n aggregation = aggregation.map(agg => agg.set('filterData', agg))\n\n const secondLevel = stackableSecondLevels.get(chart.get('secondLevel'), chart.get('secondLevel'))\n const thirdLevel = getThirdLevel(chart)\n\n // Switch values based on third level (i.e. buzz, reach, interactions)\n if (thirdLevel) {\n if (secondLevel) {\n if (!aggregation.getIn([0, 'stats', secondLevel])) {\n return null\n }\n\n aggregation = aggregation.map(agg => (\n agg.set('count', agg.getIn(['stats', secondLevel]).reduce((acc, s) => acc + s.getIn(['stats', thirdLevel]), 0))\n ))\n } else {\n aggregation = aggregation.map(agg => agg.set('count', agg.getIn(['stats', thirdLevel])))\n\n if (aggregation.every(agg => !agg.get('count'))) {\n return null\n }\n }\n\n // Count has to be the sum of second level counts\n } else if (secondLevel) {\n if (!aggregation.getIn([0, 'stats', secondLevel])) {\n return null\n }\n\n aggregation = aggregation.map(agg => (\n agg.set('count', agg.getIn(['stats', secondLevel]).reduce((acc, s) => acc + s.get('count'), 0))\n ))\n }\n\n // Do not sort values based on count for timeline charts because they have to be sorted by date\n if (!isTimeline(chart)) {\n const bucketSortBy = chart.getIn(['opts', 'bucketSortBy'])\n const bucketSortOrder = chart.getIn(['opts', 'bucketSortOrder'])\n\n aggregation = aggregation.sortBy(agg => {\n if (bucketSortBy === 'alphabetically') {\n return (agg.get('name') || '').toLowerCase()\n }\n\n if (bucketSortBy === 'sortcode') {\n return (agg.get('sortcode') || '').toLowerCase()\n }\n\n return -agg.get('count')\n })\n\n if (bucketSortBy === 'alphabetically' && bucketSortOrder === 'desc') {\n aggregation = aggregation.reverse()\n }\n }\n\n // Pie charts with a stack need to use changing colors in inner circle\n if (chart.get('type') === ChartTypes.PIE && chart.get('secondLevel') && chart.getIn(['opts', 'showGrouping'], true)) {\n aggregation = aggregation.map((agg, i) => updateFill(agg, colorsArr[i % 10], findConfiguredFirstLevelColor(agg, chart)))\n\n // Override colors with tonality colors when set in first or second level\n } else if (useTonalityColor(chart.get('secondLevel')) || useTonalityColor(chart.get('firstLevel'))) {\n aggregation = aggregation.map(agg => (\n updateFill(agg, primary, findConfiguredFirstLevelColor(agg, chart) || getTonalityColor(getTonalityFromAgg(agg)))\n ))\n\n // Override colors with sentiment colors when set in first or second level\n } else if (useSentimentColor(chart.get('secondLevel')) || useSentimentColor(chart.get('firstLevel'))) {\n aggregation = aggregation.map(\n agg => updateFill(agg, primary, findConfiguredFirstLevelColor(agg, chart) || getTonalityColor(agg.getIn(['stats', 'sentiment'])))\n )\n\n // Round robin colors\n } else if (useChangingColors(chart.get('type'))) {\n aggregation = aggregation.map((agg, i) => updateFill(agg, colorsArr[i % colorsArr.length], findConfiguredFirstLevelColor(agg, chart)))\n\n // Mono-color\n } else {\n aggregation = aggregation.map(agg => updateFill(agg, primary, findConfiguredFirstLevelColor(agg, chart)))\n }\n\n // Stack is used in chart components to group/stack by given second level (i.e. timeline stacked by topic)\n const domain = aggregation.map(agg => agg.getIn(['stats', secondLevel], fromJS([])).map(e => e.get('id')))\n .flatten(true)\n .toSet()\n .toList()\n .sortBy(id => id)\n .toJS()\n\n const colorScheme = domain.map((_d, i) => {\n let percent = (Math.floor(i / colorsArr.length) / 10) * 100\n\n if (percent > 20) {\n percent -= 20\n\n if (percent > 20) {\n return tinycolor.random().toString()\n }\n\n return tinycolor(colorsArr[i % colorsArr.length]).lighten(percent).toString()\n }\n\n return tinycolor(colorsArr[i % colorsArr.length]).darken(percent).toString()\n })\n aggregation = aggregation.map(agg => agg.set('stack', buildStack(chart, agg, colorScheme, domain)))\n\n // Do not filter 0 values for timelines\n if (!isTimeline(chart)) {\n aggregation = aggregation.filter(agg => !agg.has('count') || Boolean(agg.get('count')))\n }\n\n // Return nothing if data from second level is empty\n if (chart.get('secondLevel') && aggregation.every(agg => agg.get('stack').isEmpty())) {\n aggregation = null\n }\n\n return aggregation\n}\n\nexport const aiAnalysisId = `ai-analysis-${v4()}`\n","import { fromJS } from 'immutable'\nimport camelcase from 'camelcase'\nimport pixelWidth from 'string-pixel-width'\nimport { rangeToDates, calculateIntervals } from 'utils/date'\n\nexport const sortCharts = (dashboard, sorter, reverse = true) => {\n const charts = dashboard.get('charts')\n\n const result = charts.reduce((acc, value, key) => {\n const layouts = dashboard.getIn(['layouts', key])\n let sorted = value.reduce(\n (a, v, i) => a.push(fromJS({\n chart: v,\n layout: layouts.get(i)\n })),\n fromJS([])\n )\n .sortBy(sorter || (v => v.getIn(['layout', 'y'])))\n\n if (reverse) {\n sorted = sorted.reverse()\n }\n\n return acc\n .setIn(['charts', key], sorted.map(s => s.get('chart')))\n .setIn(['layouts', key], sorted.map(s => fromJS({\n x: s.getIn(['layout', 'x']),\n y: s.getIn(['layout', 'y']),\n w: s.getIn(['layout', 'w']),\n h: s.getIn(['layout', 'h'])\n })))\n }, dashboard)\n\n return result\n}\n\nexport const recalculateLayout = (layout, breakpoint) => {\n if (breakpoint === 'lg') {\n return fromJS(layout.map((l, i) => fromJS({\n x: (i % 3) * 4,\n y: Math.floor(i / 3) * 4,\n w: 4,\n h: 4\n })))\n }\n\n if (breakpoint === 'md') {\n return fromJS(layout.map((l, i) => fromJS({\n x: (i % 2) * 6,\n y: Math.floor(i / 2) * 4,\n w: 6,\n h: 4\n })))\n }\n\n return fromJS(layout.map((l, i) => fromJS({\n x: 0,\n y: i * 4,\n w: 12,\n h: 4\n })))\n}\n\nconst camelId = id => (\n id < 0 ? `minus${id}` : id\n)\n\nconst getDataKeySuffix = el => camelcase(`${camelId(el.get('id'))}_${el.get('name')}`)\nexport const getDataKey = el => camelcase(`count_${getDataKeySuffix(el)}`)\n\nexport const toStackedData = data => {\n const dataKeys = data.map(d => d.get('stack').map(getDataKey)).flatten(true).toSet()\n\n return data.map(d => {\n let newD = d\n\n newD.get('stack').forEach(s => {\n newD = newD\n .delete('fill')\n .set(getDataKey(s), s.get('count'))\n })\n\n dataKeys.forEach(dataKey => {\n if (!newD.has(dataKey)) {\n newD = newD.set(dataKey, 0)\n }\n })\n\n return newD\n })\n}\n\nexport const hasStack = data => data && data.some && data.some(d => d.stack !== undefined && d.stack !== null && d.stack.length > 0)\n\nexport const getAllStacks = data => (\n data.reduce(\n (acc, d) => (\n d.get('stack', fromJS([])).reduce(\n (a, s) => {\n if (!a.has(s.get('id').toString())) {\n return a.set(s.get('id').toString(), s)\n }\n\n return a\n },\n acc\n )\n ),\n fromJS({})\n )\n .valueSeq()\n .toList()\n)\n\nexport const copyFromDisplaySize = (dashboard, from, to) => {\n const sorted = sortCharts(dashboard, v => `${v.getIn(['layout', 'y'])}${v.getIn(['layout', 'x'])}`, false)\n\n return dashboard\n .setIn(['layouts', to], recalculateLayout(sorted.getIn(['charts', from]), to))\n .setIn(['charts', to], sorted.getIn(['charts', from]))\n}\n\nexport const fillDashboard = dashboard => {\n if (!dashboard) {\n return dashboard\n }\n\n const layouts = dashboard.get('layouts')\n\n if (!layouts) {\n return dashboard\n }\n\n const breakpoints = ['lg', 'md', 'sm', 'xs']\n let result = dashboard\n\n layouts.forEach(\n (values, breakpoint) => {\n if (values.isEmpty()) {\n const index = breakpoints.indexOf(breakpoint)\n let newBreakpoints = breakpoints\n\n if (index) {\n newBreakpoints = breakpoints.slice(0, index).reverse().concat(breakpoints.slice(index + 1, -1))\n }\n\n const firstNonEmptyBreakpoint = newBreakpoints.find(b => !(layouts.get(b) || fromJS([])).isEmpty())\n\n if (firstNonEmptyBreakpoint) {\n result = copyFromDisplaySize(result, firstNonEmptyBreakpoint, breakpoint)\n }\n }\n }\n )\n\n return result\n}\n\nconst maxTickWidthPercent = 0.85\nconst maxTickWidthAutoPercent = 1.2\nconst tickFontSizes = [14, 13, 12]\n\nexport const getAxesTickFontSizeAndInterval = (chartData, width) => {\n const allXAxisTicks = chartData.map(({ name }) => name).join(' ')\n\n let fontSize\n let lastPercent\n tickFontSizes.forEach(size => {\n const stringWidth = pixelWidth(allXAxisTicks, { size })\n lastPercent = stringWidth / width\n\n if (lastPercent < maxTickWidthPercent && !fontSize) {\n fontSize = size\n }\n })\n\n let interval = 0\n\n if (!fontSize) {\n interval = 1\n fontSize = 14\n }\n\n if (lastPercent >= maxTickWidthAutoPercent) {\n interval = undefined\n }\n\n return [interval, fontSize]\n}\n\nexport const getMaxLabelWidth = (data, size = 14) => {\n const allNames = data.map(d => [d.name].concat((d.stack || []).map(s => s.name))).flat()\n allNames.sort((a, b) => b.length - a.length)\n\n return pixelWidth(allNames[0], { size }) + 50\n}\n\nexport const updateInterval = chart => {\n const currentInterval = chart.get('dateInterval')\n\n if (!currentInterval) {\n return chart\n }\n\n const dateFrom = chart.get('dateFrom')\n const dateTo = chart.get('dateTo')\n\n if (dateFrom && dateTo) {\n const { dateInterval } = calculateIntervals(currentInterval, dateFrom, dateTo)\n\n return chart.set('dateInterval', dateInterval)\n }\n\n const { from, to } = rangeToDates(chart.get('dateRange'))\n const { dateInterval } = calculateIntervals(currentInterval, from, to, chart.get('dateRange'))\n\n return chart.set('dateInterval', dateInterval)\n}\n\nexport const sortStacksWithOthers = stacks => {\n if (stacks.size && stacks.first().has('sortKey')) {\n return stacks.sortBy(s => s.get('sortKey'))\n }\n\n return stacks.sort((a, b) => {\n if (a.get('id') === -1) {\n return 1\n }\n\n if (b.get('id') === -1) {\n return -1\n }\n\n return b.get('count') - a.get('count')\n })\n}\n\n// let's get dirty...\nexport const sortStacksWithOthersForTooltip = stacks => (\n stacks.sort((a, b) => {\n if (a.get('dataKey', '').includes('Minus1')) {\n return 1\n }\n\n if (b.get('dataKey', '').includes('Minus1')) {\n return -1\n }\n\n return b.get('value') - a.get('value')\n })\n)\n","import { createAction } from 'redux-actions'\n\nexport default function createLoadingAction(name, indicator) {\n return createAction(name, payload => payload, () => ({ indicator }))\n}\n","import { fromJS } from 'immutable'\nimport { createImmutableSelector } from 'utils/reselect'\n\nimport store from '../store'\n\nconst getKeyMap = createImmutableSelector(\n state => state.statics.getIn(['sorted', 'customKpis']),\n customKpis => (customKpis || fromJS([])).reduce((acc, c) => acc.set(c.get('key'), c), fromJS({}))\n)\n\nexport const isCustomKpi = key => getKeyMap(store.getState()).has(key)\n\nexport const getCustomKpiName = key => getKeyMap(store.getState()).getIn([key, 'label'])\n","import { fromJS, Map, List } from 'immutable'\nimport moment from 'moment'\n\nimport { ChartTypes } from 'static/constants'\n\nexport const DarknetCharts = {\n LANGUAGES: 'languagesChart',\n MENTIONS_TIMELINE: 'mentionsTimelineChart',\n MENTIONS_TOTAL: 'mentionsChart',\n HACKISHNESS_TOTAL: 'avgHackishnessChart',\n HACKISHNESS_TIMELINE: 'avgHackishnessTimelineChart',\n HACKISHNESS_NETWORKS: 'avgHackishnessNetworksChart',\n NETWORKS: 'networksChart',\n NETWORKS_TIMELINE: 'networksTimelineChart',\n SCORE_RESULT_TIMELINE: 'scoreResultTimelineChart',\n SEARCH_QUERIES_TIMELINE: 'searchQueriesTimelineChart',\n EXTERNAL_SCORE_CHART: 'externalScoreChart'\n}\n\nexport const byChartId = (chart, id) => chart.get('id') === id\nexport const getChartById = (charts, id) => charts.find(c => byChartId(c, id)) || Map()\nexport const getChartsById = (charts, id) => charts.filter(c => byChartId(c, id)) || List()\nexport const addStylesToChart = (chart, layout = Map(), opts = Map()) => chart\n .updateIn(['layout'], (c = Map()) => c.merge(layout))\n .updateIn(['opts'], (c = Map()) => c.merge(opts))\nexport const docCountSum = chart => chart.map(c => c.docCount).reduce((acc, value) => acc + value, 0)\nexport const oneDayRange = dateAsString => ({\n from: moment(dateAsString).toISOString(),\n to: moment(dateAsString).add(1, 'days').subtract(1, 'seconds').toISOString()\n})\nexport const sortByDocCount = data => data.sort((a, b) => {\n if (b.docCount > a.docCount) {\n return 1\n }\n\n if (a.docCount > b.docCount) {\n return -1\n }\n\n return 0\n})\n\nexport const darknetChartsConfigs = fromJS({\n languagesChart: {\n id: DarknetCharts.LANGUAGES,\n type: ChartTypes.PIE,\n label: 'languages',\n firstLevel: 'languages'\n },\n mentionsTimelineChart: {\n id: DarknetCharts.MENTIONS_TIMELINE,\n type: ChartTypes.LINE,\n label: 'mentions_over_time',\n firstLevel: 'timeline',\n secondLevel: 'mentions'\n },\n mentionsChart: {\n id: DarknetCharts.MENTIONS_TOTAL,\n type: ChartTypes.RECTANGLE,\n label: 'mentions',\n firstLevel: 'buzz',\n opts: {}\n },\n avgHackishnessChart: {\n id: DarknetCharts.HACKISHNESS_TOTAL,\n type: ChartTypes.RECTANGLE,\n label: 'avg_hackishness',\n firstLevel: 'hackishness',\n opts: {}\n },\n avgHackishnessTimelineChart: {\n id: DarknetCharts.HACKISHNESS_TIMELINE,\n type: ChartTypes.LINE,\n label: 'hackishness_over_time',\n secondLevel: 'hackishness',\n firstLevel: 'timeline'\n },\n avgHackishnessNetworksChart: {\n id: DarknetCharts.HACKISHNESS_NETWORKS,\n type: ChartTypes.BAR,\n label: 'hackishness_per_network',\n firstLevel: 'channels'\n },\n networksChart: {\n id: DarknetCharts.NETWORKS,\n type: ChartTypes.PIE,\n label: 'mentions_per_network',\n firstLevel: 'channels'\n },\n networksTimelineChart: {\n id: DarknetCharts.NETWORKS_TIMELINE,\n type: ChartTypes.LINE,\n label: 'mentions_per_network_over_time',\n firstLevel: 'timeline',\n secondLevel: 'networks'\n },\n scoreResultTimelineChart: {\n id: DarknetCharts.SCORE_RESULT_TIMELINE,\n type: ChartTypes.LINE,\n label: 'score_result_over_time',\n firstLevel: 'timeline',\n secondLevel: 'queries'\n },\n searchQueriesTimelineChart: {\n id: DarknetCharts.SEARCH_QUERIES_TIMELINE,\n type: ChartTypes.LINE,\n label: 'mentions_per_search_query_over_time',\n firstLevel: 'timeline',\n secondLevel: 'searchQueries'\n },\n externalScoreChart: {\n id: DarknetCharts.EXTERNAL_SCORE_CHART,\n type: ChartTypes.LINE,\n label: 'score_result_over_time',\n firstLevel: 'timeline',\n secondLevel: 'queries',\n opts: {\n disableAnimations: false,\n addPercentSign: false,\n showStatementTonality: false,\n showSentiment: false,\n zoomable: true,\n forcedTheme: 'plotlights',\n darkMode: true,\n axesLabelColor: '#ffffff',\n axesStrokeColor: '#789789',\n labelBackgroundColor: '#143D52',\n labelColor: '#ffffff',\n topLabelColor: '#ffffff',\n backgroundColor: '#143D52'\n }\n }\n})\n\n/* eslint-disable max-len, no-useless-escape */\nconst domainValidationRegex = /^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\\.[a-zA-Z]{2,3})$/g\nconst emailValidationRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/g\n/* eslint-enable max-len, no-useless-escape */\n\nexport const validDomain = domain => (!!domain.match(domainValidationRegex))\nexport const validEmail = email => (!!email.match(emailValidationRegex))\n\nexport const addTypeToDomains = (list, type) => (\n list.map(domain => {\n if (validDomain(domain)) {\n return { domain, type }\n }\n\n throw new Error('Invalid Domain')\n })\n)\n","import { ChartDataSources, ChartTypes } from '../static/constants'\n\nexport const isPressrelationsNewsChart = chart => (\n chart.get('dataSource', ChartDataSources.PRESSRELATIONS_NEWS) === ChartDataSources.PRESSRELATIONS_NEWS\n)\n\nexport const isGoogleAnalyticsChart = chart => (\n chart.get('dataSource') === ChartDataSources.GOOGLE_ANALYTICS\n)\n\nexport const isYoutubeAnalyticsChart = chart => (\n chart.get('dataSource') === ChartDataSources.YOUTUBE_ANALYTICS\n)\n\nexport const isLinkedInAnalyticsChart = chart => (\n chart.get('dataSource') === ChartDataSources.LINKED_IN_ANALYTICS\n)\n\nexport const isFacebookAnalyticsChart = chart => (\n chart.get('dataSource') === ChartDataSources.FACEBOOK_ANALYTICS\n)\n\nexport const isTwitterAnalyticsChart = chart => (\n chart.get('dataSource') === ChartDataSources.TWITTER_ANALYTICS\n)\n\nexport const isImageChart = chart => (\n chart.get('dataSource') === ChartTypes.IMAGE || chart.get('type') === ChartTypes.IMAGE\n)\n\nexport const isMozChart = chart => (\n chart.get('dataSource') === ChartDataSources.MOZ\n)\n\nexport const isTextChart = chart => (\n chart.get('dataSource') === ChartDataSources.TEXT || chart.get('type') === ChartTypes.TEXT\n)\n\nexport const isExternalWidgetChart = chart => (\n chart.get('dataSource') === ChartDataSources.EXTERNAL_WIDGET || chart.get('type') === ChartTypes.EXTERNAL_WIDGET\n)\n","import moment from 'moment-timezone'\nimport { Set } from 'immutable'\n\nconst halfYearFromDate = date => {\n let from\n let to\n\n if ((date.get('month') + 1) < 7) {\n from = date.startOf('year')\n to = moment(from).add(5, 'months').endOf('month').toDate()\n from = from.toDate()\n } else {\n to = date.endOf('year')\n from = moment(to).subtract(5, 'months').startOf('month').toDate()\n }\n\n return { from, to }\n}\n\nexport const rangeToDates = range => {\n let from\n let to\n\n switch (range) {\n case 'today': {\n from = moment().startOf('day').toDate()\n to = moment().endOf('day').toDate()\n break\n }\n case 'yesterday': {\n from = moment().add(-1, 'days').startOf('day').toDate()\n to = moment().add(-1, 'days').endOf('day').toDate()\n break\n }\n case 'this_week': {\n from = moment().startOf('week').toDate()\n to = moment().endOf('week').toDate()\n break\n }\n case 'last_week': {\n from = moment().subtract('1', 'week').startOf('week').toDate()\n to = moment().subtract('1', 'week').endOf('week').toDate()\n break\n }\n case 'this_year': {\n from = moment().startOf('year').toDate()\n to = moment().endOf('year').toDate()\n break\n }\n case 'this_month': {\n from = moment().startOf('month').toDate()\n to = moment().endOf('month').toDate()\n break\n }\n case 'last_year': {\n from = moment().subtract('1', 'year').startOf('year').toDate()\n to = moment().subtract('1', 'year').endOf('year').toDate()\n break\n }\n case 'last_month': {\n from = moment().subtract('1', 'month').startOf('month').toDate()\n to = moment().subtract('1', 'month').endOf('month').toDate()\n break\n }\n case 'this_quarter': {\n from = moment().startOf('quarter').toDate()\n to = moment().endOf('quarter').toDate()\n break\n }\n case 'last_quarter': {\n from = moment().subtract('1', 'quarter').startOf('quarter').toDate()\n to = moment().subtract('1', 'quarter').endOf('quarter').toDate()\n break\n }\n case 'this_half_year': {\n const date = moment()\n const result = halfYearFromDate(date)\n from = result.from\n to = result.to\n\n break\n }\n case 'last_half_year': {\n const date = moment().subtract(2, 'quarters')\n const result = halfYearFromDate(date)\n from = result.from\n to = result.to\n\n break\n }\n case 'last_7_days': {\n from = moment().subtract('6', 'days').startOf('day').toDate()\n to = moment().endOf('day').toDate()\n break\n }\n case 'last_30_days': {\n from = moment().subtract('29', 'days').startOf('day').toDate()\n to = moment().endOf('day').toDate()\n break\n }\n case 'last_60_days': {\n from = moment().subtract('59', 'days').startOf('day').toDate()\n to = moment().endOf('day').toDate()\n break\n }\n case 'last_90_days': {\n from = moment().subtract('89', 'days').startOf('day').toDate()\n to = moment().endOf('day').toDate()\n break\n }\n case 'last_12_hours': {\n from = moment().subtract('12', 'hours').toDate()\n to = moment().toDate()\n break\n }\n case 'last_24_hours': {\n from = moment().subtract('24', 'hours').toDate()\n to = moment().toDate()\n break\n }\n case 'last_6_months': {\n from = moment().subtract('6', 'months').startOf('day').toDate()\n to = moment().endOf('day').toDate()\n break\n }\n case 'last_12_months': {\n from = moment().subtract('12', 'months').startOf('day').toDate()\n to = moment().endOf('day').toDate()\n break\n }\n case 'next_half_year': {\n const thisHalfYear = halfYearFromDate(moment())\n from = moment(thisHalfYear.from).add(6, 'months').toDate()\n to = moment(thisHalfYear.to).add(6, 'months').toDate()\n break\n }\n case 'next_month': {\n from = moment().startOf('month').add(1, 'month').toDate()\n to = moment().endOf('month').add(1, 'month').toDate()\n break\n }\n case 'next_quarter': {\n from = moment().startOf('quarter').add(1, 'quarter').toDate()\n to = moment().endOf('quarter').add(1, 'quarter').toDate()\n break\n }\n case 'next_year': {\n from = moment().startOf('year').add(1, 'year').toDate()\n to = moment().endOf('year').add(1, 'year').toDate()\n break\n }\n default: {\n from = null\n to = null\n }\n }\n\n return { from, to }\n}\n\nexport const datesToRange = (from, to) => {\n let rangeResult\n const dateFrom = moment(from)\n const dateTo = moment(to)\n\n const now = moment()\n const yesterday = moment().add(-1, 'days')\n\n if (dateFrom.isSame(dateTo, 'day')) {\n if (dateFrom.isSame(now, 'day')) {\n return 'today'\n }\n\n if (dateFrom.isSame(yesterday, 'day')) {\n return 'yesterday'\n }\n }\n\n const startOfWeek = moment().startOf('week')\n const endOfWeek = moment().endOf('week')\n\n if (dateFrom.isSame(startOfWeek, 'minute') && dateTo.isSame(endOfWeek, 'minute')) {\n return 'this_week'\n }\n\n const startOfMonth = moment().startOf('month')\n const endOfMonth = moment().endOf('month')\n\n if (dateFrom.isSame(startOfMonth, 'minute') && dateTo.isSame(endOfMonth, 'minute')) {\n return 'this_month'\n }\n\n const startOfQuarter = moment().startOf('quarter')\n const endOfQuarter = moment().endOf('quarter')\n\n if (dateFrom.isSame(startOfQuarter, 'minute') && dateTo.isSame(endOfQuarter, 'minute')) {\n return 'this_quarter'\n }\n\n rangeResult = rangeToDates('this_half_year')\n\n if (dateFrom.isSame(rangeResult.from, 'minute') && dateTo.isSame(rangeResult.to, 'minute')) {\n return 'this_half_year'\n }\n\n const startOfYear = moment().startOf('year')\n const endOfYear = moment().endOf('year')\n\n if (dateFrom.isSame(startOfYear, 'minute') && dateTo.isSame(endOfYear, 'minute')) {\n return 'this_year'\n }\n\n const startOfLastWeek = moment().subtract('1', 'week').startOf('week')\n const endOfLastWeek = moment().subtract('1', 'week').endOf('week')\n\n if (dateFrom.isSame(startOfLastWeek, 'minute') && dateTo.isSame(endOfLastWeek, 'minute')) {\n return 'last_week'\n }\n\n const startOfLastMonth = moment().subtract('1', 'month').startOf('month')\n const endOfLastMonth = moment().subtract('1', 'month').endOf('month')\n\n if (dateFrom.isSame(startOfLastMonth, 'minute') && dateTo.isSame(endOfLastMonth, 'minute')) {\n return 'last_month'\n }\n\n const startOfLastQuarter = moment().subtract('1', 'quarter').startOf('quarter')\n const endOfLastQuarter = moment().subtract('1', 'quarter').endOf('quarter')\n\n if (dateFrom.isSame(startOfLastQuarter, 'minute') && dateTo.isSame(endOfLastQuarter, 'minute')) {\n return 'last_quarter'\n }\n\n rangeResult = rangeToDates('last_half_year')\n\n if (dateFrom.isSame(rangeResult.from, 'minute') && dateTo.isSame(rangeResult.to, 'minute')) {\n return 'last_half_year'\n }\n\n const startOfLastYear = moment().subtract('1', 'year').startOf('year')\n const endOfLastYear = moment().subtract('1', 'year').endOf('year')\n\n if (dateFrom.isSame(startOfLastYear, 'minute') && dateTo.isSame(endOfLastYear, 'minute')) {\n return 'last_year'\n }\n\n const before7Days = moment().subtract('6', 'days').startOf('day')\n\n if (dateFrom.isSame(before7Days, 'minute') && dateTo.isSame(now, 'day')) {\n return 'last_7_days'\n }\n\n const before30Days = moment().subtract('29', 'days').startOf('day')\n\n if (dateFrom.isSame(before30Days, 'minute') && dateTo.isSame(now, 'day')) {\n return 'last_30_days'\n }\n\n const before60Days = moment().subtract('59', 'days').startOf('day')\n\n if (dateFrom.isSame(before60Days, 'minute') && dateTo.isSame(now, 'day')) {\n return 'last_60_days'\n }\n\n const before90Days = moment().subtract('89', 'days').startOf('day')\n\n if (dateFrom.isSame(before90Days, 'minute') && dateTo.isSame(now, 'day')) {\n return 'last_90_days'\n }\n\n return null\n}\n\nconst calenderWeek = date => {\n let cw = 'CW'\n\n if (moment.locale() === 'de') {\n cw = 'KW'\n }\n\n return `${cw} ${moment(date).format('WW')}`\n}\n\nexport const formatDateByInterval = (date, interval) => {\n switch (interval) {\n case 'hour':\n return moment(date).format('LT')\n case 'week':\n return calenderWeek(date)\n case 'month':\n return moment(date).format('MMM YYYY')\n case 'year':\n return moment(date).format('YYYY')\n default:\n return moment(date).format('DD MMM')\n }\n}\n\nexport const defaultAllowedDateIntervals = Set(['hour', 'day', 'week', 'month', 'quarter', 'year'])\nexport const restrictedDateIntervals = Set(['day', 'week', 'month', 'quarter', 'year'])\nexport const moreRestrictedDateIntervals = Set(['week', 'month', 'quarter', 'year'])\nexport const superRestrictedDateIntervals = Set(['month', 'quarter', 'year'])\n\nexport const calculateIntervals = (currentInterval, from, to, range) => {\n let dateInterval = currentInterval\n let allowedDateIntervals = defaultAllowedDateIntervals\n const dateFrom = moment(from)\n const dateTo = to ? moment(to) : moment()\n\n if (range && range.startsWith('relative_range')) {\n const parts = range.split('_')\n\n const count = parseInt(parts[2], 10)\n const unit = parts[3]\n\n if (unit === 'days') {\n allowedDateIntervals = superRestrictedDateIntervals\n\n if (count <= 366) {\n allowedDateIntervals = restrictedDateIntervals\n }\n\n if (count <= 10) {\n allowedDateIntervals = defaultAllowedDateIntervals\n }\n } else if (unit === 'months' && count <= 12) {\n allowedDateIntervals = restrictedDateIntervals\n } else if (unit === 'months' && count <= 24) {\n allowedDateIntervals = moreRestrictedDateIntervals\n } else {\n allowedDateIntervals = superRestrictedDateIntervals\n }\n } else if (!from) {\n allowedDateIntervals = superRestrictedDateIntervals\n } else if (dateTo.diff(dateFrom, 'month') > 24) {\n allowedDateIntervals = moreRestrictedDateIntervals\n } else if (dateTo.diff(dateFrom, 'days') > 7) {\n allowedDateIntervals = restrictedDateIntervals\n }\n\n if (dateInterval && !allowedDateIntervals.includes(dateInterval)) {\n dateInterval = allowedDateIntervals.first()\n }\n\n return {\n dateInterval,\n allowedDateIntervals\n }\n}\n\nconst formatWithoutTime = 'll'\nconst formatWithTime = 'lll'\n\nconst isStart = from => {\n let dateFrom = from\n\n if (!dateFrom) {\n return false\n }\n\n dateFrom = moment(dateFrom)\n const dateFromStart = moment(dateFrom).startOf('day')\n\n return dateFrom.isSame(dateFromStart)\n}\n\nconst isEnd = to => {\n let dateTo = to\n\n if (!dateTo) {\n return false\n }\n\n dateTo = moment(dateTo)\n const dateToEnd = moment(dateTo).endOf('day')\n\n return dateTo.isSame(dateToEnd)\n}\n\nexport const getDateString = (dateRange, from, to, i18n, formatOverride) => {\n let dateFrom = from\n let dateTo = to\n\n const isStartEnd = isStart(dateFrom) && isEnd(dateTo)\n\n let format = formatWithoutTime\n\n if (!isStartEnd) {\n format = formatWithTime\n }\n\n if (formatOverride) {\n format = formatOverride\n }\n\n if (dateRange) {\n if (dateRange.startsWith('relative_range')) {\n const [count, unit] = dateRange.replace('relative_range_', '').split('_')\n\n return i18n.get('relative_date_range', { count, unit: i18n.get(unit) })\n }\n\n const dateRangeString = i18n.get(dateRange)\n\n if (isStartEnd || dateRange.match(/hours/)) {\n return dateRangeString\n }\n\n if (dateFrom && dateTo) {\n dateFrom = moment(dateFrom)\n dateTo = moment(dateTo)\n\n return `${dateRangeString} ${dateFrom.format('LT')} - ${dateTo.format('LT')}`\n }\n\n return dateRangeString\n }\n\n if (!dateFrom || !dateTo) {\n if (!dateFrom && dateTo) {\n if (isEnd(dateTo)) {\n format = formatWithoutTime\n }\n\n return `${i18n.get('till')} ${moment(dateTo).format(format)}`\n }\n\n if (dateFrom && !dateTo) {\n if (isStart(dateFrom)) {\n format = formatWithoutTime\n }\n\n return `${i18n.get('from')} ${moment(dateFrom).format(format)}`\n }\n\n return i18n.get('everything')\n }\n\n dateFrom = moment(dateFrom)\n dateTo = moment(dateTo)\n\n if (dateFrom.isSame(dateTo, 'day')) {\n if (isStart(dateFrom)) {\n return dateFrom.format(format)\n }\n\n return `${dateFrom.format(format)} - ${dateTo.format('LT')}`\n }\n\n return `${dateFrom.format(format)} - ${dateTo.format(format)}`\n}\n\nexport const getDateQuickselects = type => {\n if (type === 'editorialDeadline') {\n return [[\n 'this_month',\n 'this_quarter',\n 'this_half_year',\n 'this_year'\n ],\n [\n 'next_month',\n 'next_quarter',\n 'next_half_year',\n 'next_year'\n ]]\n }\n\n return [[\n 'today',\n 'this_week',\n 'this_month',\n 'this_quarter',\n 'this_half_year',\n 'this_year',\n 'last_7_days',\n 'last_30_days',\n 'last_6_months'\n ],\n [\n 'yesterday',\n 'last_week',\n 'last_month',\n 'last_quarter',\n 'last_half_year',\n 'last_year',\n 'last_60_days',\n 'last_90_days',\n 'last_12_months'\n ]]\n}\n\nexport const getLocale = () => (moment.locale() || 'de')\n","/* global document */\n\nconst updateMetaElement = (selector, value) => {\n const element = document.querySelector(selector)\n\n if (element) {\n element.content = value\n }\n}\n\n// For nice effects in mobile chrome\nexport const updateColorInMeta = value => updateMetaElement('meta[name=\"theme-color\"]', value)\nexport const updateTitleInMeta = value => updateMetaElement('meta[property=\"og:title\"]', value)\nexport const updateDescriptionInMeta = value => updateMetaElement('meta[property=\"og:description\"]', value)\n\nexport const getBodyBackgroundColor = () => document.body.style.backgroundColor\n","export default function download(data, filename) {\n import(/* webpackChunkName: \"downloadjs\" */ 'downloadjs').then(mod => {\n const func = mod.default\n func(data, filename)\n })\n}\n","export const isUnauthorized = error => error.response && error.response.statusCode === 401\nexport const logException = exception => {\n if (!isUnauthorized(exception)) {\n console.error(exception) // eslint-disable-line\n }\n}\n","import { fromJS, Range, List, Set } from 'immutable'\nimport arrayMove from './array_move'\n\nexport const listMove = (list, oldIndex, newIndex) => fromJS(arrayMove(list.toJS(), oldIndex, newIndex))\nexport const listUniqueById = list => {\n const ids = list.map(e => e.get('id'))\n\n return list.reduce((a, b) => a.set(b.get('id'), b), fromJS({})).toList().sortBy(e => ids.indexOf(e.get('id')))\n}\n\nexport const listUniqueByKeyName = (list, key) => {\n const keys = list.map(e => e.get(key))\n\n return list.reduce((a, b) => a.set(b.get(key), b), fromJS({})).toList().sortBy(e => keys.indexOf(e.get(key)))\n}\n\nexport const listChunk = (list, chunkCount, fill = false) => {\n if (list.isEmpty()) {\n return List()\n }\n\n const chunkSize = Math.ceil(list.count() / chunkCount)\n const range = Range(0, list.count(), chunkSize)\n let result = range.map(chunkStart => list.slice(chunkStart, chunkStart + chunkSize)).toList()\n\n if (fill) {\n result = result.concat(Range(0, chunkCount - result.count()).map(_a => List().toList()))\n }\n\n return result\n}\n\nexport const mergeDeepKeepLists = (a, b) => {\n if (a && a.mergeWith && !List.isList(a) && !List.isList(b)) {\n return a.mergeWith(mergeDeepKeepLists, b)\n }\n\n return b\n}\n\nexport const keyIn = (...keys) => {\n const keySet = Set(keys)\n\n return (v, k) => keySet.has(k)\n}\n","const arrayMoveMutate = (array, from, to) => {\n array.splice((to < 0 ? array.length + to : to), 0, array.splice(from, 1)[0])\n}\n\nexport default function arrayMove(array, from, to) {\n const a = array.slice()\n arrayMoveMutate(a, from, to)\n\n return a\n}\n","/* eslint-disable */\n/* global DOMParser */\nimport { $getRoot, $createTextNode, $createRangeSelection, $setSelection, $isRangeSelection, $getCharacterOffsets } from 'lexical'\nimport { $insertGeneratedNodes } from '@lexical/clipboard'\nimport { $isAtNodeEnd } from '@lexical/selection'\nimport { $generateNodesFromDOM, $generateHtmlFromNodes } from '@lexical/html'\n\nexport const clearAndInsertNodes = (editor, nodes, root, isUserInput = true) => {\n root.clear()\n $insertGeneratedNodes(\n editor,\n nodes,\n $createRangeSelection()\n )\n\n if (isUserInput) {\n $getRoot().selectStart()\n }\n else {\n $setSelection(null)\n }\n}\n\nexport const setFloatingElemPosition = (\n targetRect,\n floatingElem,\n anchorElem,\n verticalGap = 10,\n horizontalOffset = 5\n) => {\n const scrollerElem = anchorElem.parentElement\n\n if (targetRect === null || !scrollerElem) {\n floatingElem.style.opacity = '0'\n floatingElem.style.transform = 'translate(-10000px, -10000px)'\n\n return\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect()\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const editorScrollerRect = scrollerElem.getBoundingClientRect()\n\n let top = targetRect.top - floatingElemRect.height - verticalGap\n let left = targetRect.left - horizontalOffset\n\n if (top < editorScrollerRect.top) {\n top += floatingElemRect.height + targetRect.height + verticalGap * 2\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset\n }\n\n top -= anchorElementRect.top\n left -= anchorElementRect.left\n\n floatingElem.style.opacity = '1'\n floatingElem.style.transform = `translate(${left}px, ${top}px)`\n}\n\nexport const getDOMRangeRect = (\n nativeSelection,\n rootElement\n) => {\n const domRange = nativeSelection.getRangeAt(0)\n\n let rect\n\n if (nativeSelection.anchorNode === rootElement) {\n let inner = rootElement\n while (inner.firstElementChild != null) {\n inner = inner.firstElementChild\n }\n rect = inner.getBoundingClientRect()\n } else {\n rect = domRange.getBoundingClientRect()\n }\n\n return rect\n}\n\nexport const getSelectedNode = (\n selection\n) => {\n const { anchor } = selection\n const { focus } = selection\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n\n if (anchorNode === focusNode) {\n return anchorNode\n }\n\n const isBackward = selection.isBackward()\n\n if (isBackward) {\n return $isAtNodeEnd(focus) ? anchorNode : focusNode\n }\n\n return $isAtNodeEnd(anchor) ? anchorNode : focusNode\n}\n\nexport const removeRootParagraph = (html) => {\n const element = document.createElement('export');\n element.innerHTML = html\n\n if (element.childElementCount === 1) {\n const child = element.firstChild\n\n if (child.nodeName.toUpperCase() === 'P') {\n return child.innerHTML\n }\n }\n\n return html\n}\n\nexport const removeEmptyRootParagraph = (html) => {\n const element = document.createElement('export');\n element.innerHTML = html\n\n if (element.childElementCount === 1) {\n const child = element.firstChild\n\n if (child.nodeName.toUpperCase() === 'P' && child.innerHTML === '') {\n return ''\n }\n }\n\n return html\n}\n\nexport const replaceHTMLEntities = html => html\n .replace(/ /g, ' ')\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/&/g, \"&\")\n .replace(/"/g, '\"')\n .replace(/'/g, `'`)\n .replace(/¢/g, '¢')\n .replace(/£/g, '£')\n .replace(/¥/g, 'Â¥')\n .replace(/€/g, '€')\n .replace(/©/g, '©')\n .replace(/®/g, '®')\n\nexport const encodeHTMLEntities = html => html.replace(/[\\u00A0-\\u9999<>\\&]/g, i => `&#${i.charCodeAt(0)};`)\n\nexport const decodeHTMLEntities = html => {\n return (html + \"\").replace(/&#\\d+;/gm, function (s) {\n return String.fromCharCode(s.match(/\\d+/gm)[0])\n })\n}\n\nexport const replaceHTMLNewLineWIthLineBreak = html => html.replace(/\\n/gm, '
')\n\nexport const joinClasses = (...args) => args.filter(Boolean).join(' ')\n\nexport const sliceSelectedTextNodeContent = (selection, textNode) => {\n if (\n textNode.isSelected()\n && !textNode.isSegmented()\n && !textNode.isToken()\n && ($isRangeSelection(selection))\n ) {\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n const isAnchor = textNode.is(anchorNode)\n const isFocus = textNode.is(focusNode)\n\n if (isAnchor || isFocus) {\n const isBackward = selection.isBackward()\n const [anchorOffset, focusOffset] = $getCharacterOffsets(selection);\n const isSame = anchorNode.is(focusNode)\n const isFirst = textNode.is(isBackward ? focusNode : anchorNode)\n const isLast = textNode.is(isBackward ? anchorNode : focusNode)\n let startOffset = 0\n let endOffset\n\n if (isSame) {\n startOffset = anchorOffset > focusOffset ? focusOffset : anchorOffset\n endOffset = anchorOffset > focusOffset ? anchorOffset : focusOffset\n } else if (isFirst) {\n const offset = isBackward ? focusOffset : anchorOffset\n startOffset = offset\n endOffset = undefined\n } else if (isLast) {\n const offset = isBackward ? anchorOffset : focusOffset\n startOffset = 0\n endOffset = offset\n }\n\n return textNode.getTextContent().slice(startOffset, endOffset)\n }\n }\n\n return ''\n}\n\nexport const buildNodesFromHTML = (editor, htmlContent) => {\n const parser = new DOMParser()\n const dom = parser.parseFromString(htmlContent, 'text/html')\n\n return $generateNodesFromDOM(editor, dom)\n}\n\nexport const importNodesAsPlainText = (editor, state, isUserInput) => {\n const root = $getRoot()\n const textNode = $createTextNode(state)\n clearAndInsertNodes(editor, [textNode], root, isUserInput)\n}\n\nexport const importNodesAsHTML = (editor, state, isUserInput) => {\n const root = $getRoot()\n const parser = new DOMParser()\n const dom = parser.parseFromString(replaceHTMLNewLineWIthLineBreak(state), 'text/html')\n const nodes = $generateNodesFromDOM(editor, dom)\n clearAndInsertNodes(editor, nodes, root, isUserInput)\n}\n\nlet sleepSetTimeout\nfunction sleep(ms) {\n clearInterval(sleepSetTimeout)\n return new Promise(resolve => sleepSetTimeout = setTimeout(resolve, ms))\n}\n\nconst updateValue = editorInstance => {\n let newValue\n editorInstance.update(() => {\n newValue = $generateHtmlFromNodes(editorInstance, null)\n })\n\n return newValue\n}\n\nexport const reimportLexicalEditorNodes = async (editor, value) => {\n let updatedValue = value\n\n editor.update(() => {\n importNodesAsHTML(editor, value, false)\n })\n\n let msDelay = 1\n /* eslint-disable-next-line no-underscore-dangle */\n let dirtyElements = editor._dirtyElements\n\n // After rebuilding the editor content there are node transforms that need to happen.\n // Once there are no more dirty elements (node transforms are done) then we return the final editor state.\n // If dirty elements are not cleaned up within a maximum of 15ms we return the last state.\n for (let i = 0; i < 3 && dirtyElements.size > 0; i++) {\n await sleep(msDelay)\n msDelay = 7\n dirtyElements = editor._dirtyElements\n }\n\n if (dirtyElements.size === 0) {\n updatedValue = updateValue(editor)\n }\n\n return updatedValue\n}\n\nexport const removeInvalidTagsForOts = (text, allowedTags) => {\n // Create a new DOMParser instance\n const parser = new DOMParser()\n // Parse the input text as HTML\n const doc = parser.parseFromString(text, 'text/html')\n\n // Function to recursively remove invalid tags\n const removeInvalidTags = node => {\n // Get all child nodes\n const children = Array.from(node.childNodes)\n children.forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n if (!allowedTags.includes(child.nodeName)) {\n // Replace the invalid element with its children\n while (child.firstChild) {\n node.insertBefore(child.firstChild, child)\n }\n node.removeChild(child)\n } else {\n // Recursively process the child nodes\n removeInvalidTags(child)\n }\n }\n })\n }\n\n // Start the removal process from the body of the parsed document\n removeInvalidTags(doc.body)\n\n // Return the cleaned HTML as a string\n return doc.body.innerHTML\n};","import Loadable from 'components/loadable'\n\nconst Loading = () => null\nconst defaultLoaderProps = {\n loading: Loading,\n delay: 0\n}\n\nexport const createLoadable = (loader, propsOverrides = {}) => {\n const props = { ...defaultLoaderProps, ...propsOverrides }\n props.loader = loader\n\n return Loadable(props)\n}\n","/* global navigator */\n\nexport const guessLocale = () => {\n let lang\n\n if (navigator.languages && navigator.languages.length) {\n // latest versions of Chrome and Firefox set this correctly\n [lang] = navigator.languages\n } else if (navigator.userLanguage) {\n // IE only\n lang = navigator.userLanguage\n } else {\n // latest versions of Chrome, Firefox, and Safari set this correctly\n lang = navigator.language\n }\n\n return lang ? lang.toLowerCase() : lang\n}\n\nexport const getLocale = () => {\n const lang = guessLocale()\n\n let locale = 'en'\n\n /* istanbul ignore next */\n if (lang && lang.match(/de/)) {\n locale = 'de'\n /* istanbul ignore next */\n } else if (lang && lang.match(/ru/)) {\n locale = 'ru'\n /* istanbul ignore next */\n } else if (lang && lang.match(/fr/)) {\n locale = 'fr'\n }\n\n return locale\n}\n\nexport const determineMomentLocale = (languageShort, locale, timezone) => {\n if (languageShort !== 'en') {\n return languageShort\n }\n\n const isEurope = Boolean(timezone.match(/Europe/))\n\n if (!isEurope && ['en-us', 'en-ca', 'en-ie'].indexOf(locale) !== -1) {\n return locale\n }\n\n return 'en-gb'\n}\n","import { fromJS } from 'immutable'\n\nconst EU_DOMAIN = 'content-desk.eu'\nconst US_DOMAIN = 'content-desk.com'\nconst EU = 'eu'\nconst US = 'us'\n\nconst DOMAIN_REGION_OPTIONS = [\n { value: 'us', label: 'US' },\n { value: 'eu', label: 'EU' }\n]\n\nconst DEFAULT_DOMAINS = {\n us: US_DOMAIN,\n eu: EU_DOMAIN\n}\n\nconst getRegionByTld = tld => (tld === 'com' ? US : EU)\n\nexport const getDomainRegionOptions = () => DOMAIN_REGION_OPTIONS\nexport const getDomainByRegion = region => DEFAULT_DOMAINS[region]\nexport const getDefaultDomains = () => fromJS([\n { domain: US_DOMAIN, domainRegion: US },\n { domain: EU_DOMAIN, domainRegion: EU }\n])\nexport const getDefaultDomainByTld = tld => {\n const region = getRegionByTld(tld)\n\n return fromJS({\n domain: DEFAULT_DOMAINS[region],\n domainRegion: region\n })\n}\n\n","import { normalize, schema } from 'normalizr'\n\nexport const normalizeIt = (data, schemaName, oldKey) => {\n const oKey = oldKey || `${schemaName}s`\n let generatedSchema = null\n let normalizedResult = null\n\n generatedSchema = new schema.Entity(schemaName)\n normalizedResult = normalize(data, {\n [oKey]: new schema.Array(generatedSchema)\n })\n\n return {\n entities: normalizedResult.entities[schemaName] || {},\n result: normalizedResult.result[oKey] || []\n }\n}\n\nexport const sort = (result, entities) => result.map(id => entities.get(id.toString()))\n","export const defaultChartOpts = {\n allowDecimals: false,\n domain: [0, 'dataMax']\n}\n","import { createSelectorCreator, defaultMemoize } from 'reselect'\nimport { is } from 'immutable'\n\nexport const createImmutableSelector = createSelectorCreator(defaultMemoize, is)\n","import { fromJS } from 'immutable'\nimport { Capabilities } from 'static/constants'\n\nexport const capabilitiesWithRoutes = fromJS([\n {\n name: Capabilities.HAS_DASHBOARD_MODULE,\n route: '/app/dashboard'\n },\n {\n name: Capabilities.HAS_NEWS_MODULE,\n route: '/app/news'\n },\n {\n name: Capabilities.HAS_NEWS_POOL_MODULE,\n route: '/app/search_pool'\n },\n {\n name: Capabilities.HAS_NEWS_POOL_MODULE,\n route: '/app/media_monitoring'\n },\n {\n name: Capabilities.HAS_PROFILE_MONITORING_MODULE,\n route: '/app/profile_monitoring'\n },\n {\n name: Capabilities.HAS_SUBSCRIPTIONS_MODULE,\n route: '/app/subscriptions'\n },\n {\n name: Capabilities.HAS_MEDIA_REVIEW_MODULE,\n route: '/app/media_reviews'\n },\n {\n name: Capabilities.HAS_ANALYSIS_MODULE,\n route: '/app/analysis'\n },\n {\n name: Capabilities.HAS_DARKNET_MODULE,\n route: '/app/darknet/dashboard'\n },\n {\n name: Capabilities.HAS_CONTENT_DESK_MODULE,\n route: '/app/content_desk'\n },\n {\n name: Capabilities.HAS_CONTACTS_MANAGEMENT_MODULE,\n route: '/app/contact_management/my_contacts'\n },\n {\n name: Capabilities.HAS_CONTACTS_MANAGEMENT_ANEWSTIP,\n route: '/app/contact_management/journalist_search'\n },\n {\n name: Capabilities.HAS_THE_MAX_MODULE,\n route: '/app/themax'\n }\n])\n\nexport const defaultRoute = capabilitiesWithRoutes.first().get('route')\nexport const failPath = '/app/fail'\n\nexport const hasCapForPath = (capabilities, pathname) => {\n const cap = capabilitiesWithRoutes.find(c => c.get('route') === pathname)\n\n return capabilities.get(cap.get('name'))\n}\n\nexport const getFirstValidRoute = capabilities => {\n if (!capabilities) {\n return defaultRoute\n }\n\n const found = capabilitiesWithRoutes.find(cap => capabilities.get(cap.get('name')) === true)\n\n if (found) {\n return found.get('route')\n }\n\n return failPath\n}\n","/* global window, document */\nexport const scrollToTop = () => window.scrollTo(0, 0)\n\nexport const scrollIntoView = (id, behavior = 'smooth', block = 'start') => {\n const el = document.getElementById(id)\n\n if (el) {\n el.scrollIntoView({ behavior, block })\n }\n}\n\nconst easeInOutQuad = (t, b, c, d) => {\n let newT = t / (d / 2)\n\n if (newT < 1) {\n return (c / 2) * newT * newT + b // eslint-disable-line\n }\n\n newT -= 1\n return -c / 2 * (newT * (newT - 2) - 1) + b // eslint-disable-line\n}\n\nexport const scrollTo = (element, to, duration, direction = 'y') => {\n const newElement = element\n const start = direction === 'y' ? newElement.scrollTop : newElement.scrollLeft\n const change = to - start\n let currentTime = 0\n const increment = 20\n\n const animateScroll = () => {\n currentTime += increment\n const val = easeInOutQuad(currentTime, start, change, duration)\n\n if (direction === 'y') {\n newElement.scrollTop = val\n } else {\n newElement.scrollLeft = val\n }\n\n if (currentTime < duration) {\n setTimeout(animateScroll, increment)\n }\n }\n animateScroll()\n}\n\nexport const scrollElementToTop = elementId => {\n const element = document.getElementById(elementId)\n\n if (element) {\n element.scrollTop = 0\n }\n}\n\nexport const scrollElementToLeft = elementId => {\n const element = document.getElementById(elementId)\n element.scrollLeft = 0\n}\n\nexport const scrollElement = (elementId, offset) => {\n const element = document.getElementById(elementId)\n\n if (element) {\n element.scrollTop += offset\n\n return [element.scrollTop, element.scrollHeight, element.offsetHeight]\n }\n\n return []\n}\n\nexport const scrollElementX = (elementId, offset) => {\n const element = document.getElementById(elementId)\n\n if (element) {\n element.scrollLeft += offset\n\n return [element.scrollLeft, element.scrollWidth, element.offsetWidth]\n }\n\n return []\n}\n\nexport const scrollInsideContainer = (containerId, elementId, offset = 0) => {\n const container = document.getElementById(containerId)\n const element = document.getElementById(elementId)\n const topPos = element.offsetTop + offset\n scrollTo(container, topPos, 200)\n}\n\nexport const scrollToTopInsideContainer = containerId => {\n const container = document.getElementById(containerId)\n scrollTo(container, 0, 200)\n}\n","/* global navigator */\n\nexport const capitalize = (\n [first, ...rest],\n locale = navigator.language\n) => (first === undefined ? '' : first.toLocaleUpperCase(locale) + rest.join(''))\n\nexport const equals = (string1, string2) => `${string1}` === `${string2}`\n\nexport const shorten = (string, length) => (string.length > length ? `${string.slice(0, length - 3)}...` : string)\n\nexport const toSnakeCase = string => string.replace(/([A-Z])/g, $1 => `_${$1.toLowerCase()}`)\n","import { scaleLinear } from 'd3-scale'\n\nimport { NewsPageModules } from 'static/constants'\nimport store from '../store'\n\nconst getStaticTonalities = state => state.statics.getIn(['sorted', 'tonalities'])\nconst getStatementEvaluationSteps = state => state.config.get('statementEvaluationSteps')\nconst getEvaluationSteps = state => state.config.get('evaluationSteps')\n\nlet savedDomain\nlet savedRange\nlet savedUnknownColor\n\nconst getDomainAndRange = () => {\n if (savedDomain && savedRange) {\n return [savedDomain, savedRange]\n }\n\n const tonalities = getStaticTonalities(store.getState()).filter(t => t.get('value') !== 1000)\n\n savedDomain = tonalities.map(t => t.get('value')).toJS()\n savedRange = tonalities.map(t => t.get('color')).toJS()\n\n return [savedDomain, savedRange]\n}\n\nconst getUnknownColor = () => {\n if (savedUnknownColor) {\n return savedUnknownColor\n }\n\n savedUnknownColor = getStaticTonalities(store.getState()).find(t => t.get('value') === 1000).get('color')\n\n return savedUnknownColor\n}\n\nexport const getTonalityColor = value => {\n if (value === null) {\n return getUnknownColor()\n }\n\n const [domain, range] = getDomainAndRange()\n\n return scaleLinear().domain(domain).range(range)(value)\n}\n\nexport const getAverageTonalityOfNews = news => {\n const tonalitySum = news\n .get('clusteredNews')\n .map(n => n.get('tonality'))\n .filter(t => t !== null && t !== undefined && t !== 1000)\n .reduce((acc, t) => acc + t, 0)\n\n return tonalitySum / news.get('clusteredNews').size\n}\n\nexport const getAverageTonalityColorOfNews = news => getTonalityColor(getAverageTonalityOfNews(news))\n\nexport const getTonalititesByModule = module => {\n let scale = 3\n\n if (module === NewsPageModules.ANALYSIS) {\n scale = getStatementEvaluationSteps(store.getState()) || getEvaluationSteps(store.getState())\n } else {\n scale = getEvaluationSteps(store.getState())\n }\n\n scale = scale || 3\n\n const tonalities = getStaticTonalities(store.getState()).filter(t => t.get('value') !== 1000)\n\n const max = (scale - 1) / 2\n const min = max * -1\n\n return tonalities.filter(t => t.get('value') >= min && t.get('value') <= max)\n}\n\nexport const isTonalityDimension = dimension => `${dimension}`.includes('onalit')\n","var map = {\n\t\"./de\": 59740,\n\t\"./en-ca\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./fr\": 94470,\n\t\"./ru\": 21793\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 18910;"],"names":["defaultPrefix","prefix","setAllowedDomains","createAction","setAllowedDomainFormData","createAllowedDomainStart","createAllowedDomainSuccess","createAllowedDomainError","deleteAllowedDomainStart","deleteAllowedDomainSuccess","deleteAllowedDomainError","updateAllowedDomainStart","updateAllowedDomainSuccess","updateAllowedDomainError","searchAllowedDomainsStart","searchAllowedDomainsSuccess","searchAllowedDomainsError","refreshStatusAllowedDomainStart","refreshStatusAllowedDomainSuccess","refreshStatusAllowedDomainError","fetchAllowedDomainStatusStart","fetchAllowedDomainStatusSuccess","fetchAllowedDomainStatusError","createDefaultAllowedDomainsStart","createDefaultAllowedDomainsSuccess","createDefaultAllowedDomainsError","setAllowedDomainsQuickSearchQuery","setNewAllowedDomain","setNewAllowedDomainRegion","setNewAllowedDomainSenderDomain","toggleAllowedDomainsDeleteMode","toggleAllowedDomainsInfoDialog","openAllowedDomainsStatusDialog","closeAllowedDomainsStatusDialog","setAllowedDomainsPage","setOption","aiAnalysisStart","aiAnalysisError","aiAnalysisSuccess","showAiAnalysisDialog","hideAiAnalysisDialog","setAiAnalysis","showOrderSummariesDialog","hideOrderSummariesDialog","applyAnalysisFilter","setAnalysisFilter","toggleStatementTonality","pushChartToDashboardStart","pushChartToDashboardError","pushChartToDashboardSuccess","setExpandedNodes","addExpandedNodes","removeExpandedNodes","toggleExpandedPanel","toggleUseMediaReviewCodes","showPushChartToDashboardDialog","hidePushChartToDashboardDialog","fetchChartDataStart","fetchChartDataError","fetchChartDataSuccess","setChartFields","setChartOpt","drilldown","fetchMetricsChartsData","setMetricsChartLoading","setMetricsChartData","clearModuleData","fetchStaticsStart","fetchStaticsSuccess","fetchStaticsError","searchSuggestStart","searchSuggestSuccess","searchSuggestError","setStatics","setSuggestions","setSearchForm","combinedSearchStart","combinedSearchSuccess","combinedSearchError","searchJournalistsStart","searchJournalistsSuccess","searchJournalistsError","searchOutletsStart","searchOutletsSuccess","searchOutletsError","searchArticlesStart","searchArticlesSuccess","searchArticlesError","setFiltersForm","resetEntityFilters","resetPaginationFilter","setSelectedResults","switchSearchType","switchResultsTab","openDrillDownDialog","closeDrillDownDialog","setDrillDownEntity","switchDrillDownTab","showDuplicateContactsDialog","hideDuplicateContactsDialog","lockNavigation","setLimitedFunctionality","showDistributionListCreateDialog","hideDistributionListCreateDialog","setImportContactsForDistributionLists","setEntity","importStart","importSuccess","importError","addJournalistsToDistributionList","keepContact","removeContactFromDuplicateList","replaceContactStart","replaceContactSuccess","replaceContactError","setDrillDownFiltersState","setDrillDownFiltersForm","toggleDrillDownTopic","drillDownRequestStart","drillDownRequestSuccess","drillDownRequestError","searchDrillDownJournalistsStart","searchDrillDownJournalistsSuccess","searchDrillDownJournalistsError","searchDrillDownOutletsStart","searchDrillDownOutletsSuccess","searchDrillDownOutletsError","searchDrillDownArticlesStart","searchDrillDownArticlesSuccess","searchDrillDownArticlesError","setDrillDownResult","addDrillDownFiltersToHistory","drillDownHistorySearch","setDrillDownHistoryIndex","submitApiKeyStart","submitApiKeySuccess","submitApiKeyError","deleteApiKeyStart","deleteApiKeySuccess","deleteApiKeyError","genericErrorMessage","genericSuccessMessage","hideUndo","resetState","setActiveNewsradar","setAppBarMessage","setAppMessage","setAppBusy","setAppReady","toggleLoading","setLoginMessage","showAppMessage","showAppErrorMessage","showAppSuccessMessage","showAppSnackbarMessage","triggerAppSnackbarMessage","hideAppSnackbarMessage","showUndo","switchNewsradar","toggleNavigation","undo","loginRequestAborted","loginRequestError","loginRequestStart","loginRequestSuccess","logoutRequestError","logoutRequestStart","logoutRequestSuccess","ssoRequestError","ssoRequestStart","checkBffVersion","setBffVersion","forceReload","checkViewVersion","setViewVersion","loadFromLocalStorage","toggleSuccess","toggleAppMessage","exception","uploadGeneratedFileError","uploadGeneratedFileStart","uploadGeneratedFileSuccess","resetGeneratedFile","downloadElementAsImage","downloadElementAsImageDone","downloadElementAsPdf","downloadElementAsPdfDone","clickTrace","authenticateGoogleAnalyticsStart","authenticateGoogleAnalyticsSuccess","authenticateGoogleAnalyticsError","revokeGoogleAnalyticsStart","revokeGoogleAnalyticsSuccess","revokeGoogleAnalyticsError","authenticateYoutubeAnalyticsStart","authenticateYoutubeAnalyticsSuccess","authenticateYoutubeAnalyticsError","revokeYoutubeAnalyticsStart","revokeYoutubeAnalyticsSuccess","revokeYoutubeAnalyticsError","revokeFacebookStart","revokeFacebookSuccess","revokeFacebookError","authenticateFacebookStart","revokeLinkedInStart","revokeLinkedInSuccess","revokeLinkedInError","revokeTwitterStart","revokeTwitterSuccess","revokeTwitterError","authenticateLinkedInStart","authenticateLinkedInSuccess","authenticateLinkedInError","setChartStart","setChart","setChartData","setStaticChartData","setChartLoading","calculateNewChart","removeChart","setCharts","setLayouts","updateChartsStart","updateChartsSuccess","updateChartsError","toggleEditing","setNormalMode","setPrevious","setPreviousToData","downloadImage","showChartDialog","hideChartDialog","setSelectedChart","setSelectedChartOpt","setSelectedChartStepType","setSelectedChartData","setSelectedChartLoading","checkChartChange","exportExcelStart","createLoadingAction","exportExcelSuccess","exportExcelError","exportPowerpointStart","exportPowerpointSuccess","exportPowerpointError","exportPowerpointBatchStart","exportPowerpointBatchSuccess","exportPowerpointBatchError","copyFromDisplaySize","aggregationsRequestError","aggregationsRequestStart","aggregationsRequestSuccess","showAiChartAnalysisDialog","hideAiChartAnalysisDialog","aiChartAnalysisStart","aiChartAnalysisSuccess","aiChartAnalysisError","aiChartDescriptionStart","aiChartDescriptionSuccess","aiChartDescriptionError","setAggregationValue","configRequestError","configRequestStart","configRequestSuccess","resetConfigToDefault","resetColors","setConfig","updateConfig","validateFilenameInConfig","setTheme","setStartedWithDeepLink","updateConfigRequestError","updateConfigRequestStart","updateConfigRequestSuccess","updateUserConfigRequestError","updateUserConfigRequestStart","updateUserConfigRequestSuccess","fetchCDeskConfigRequestError","fetchCDeskConfigRequestStart","fetchCDeskConfigRequestSuccess","updateCDeskConfigRequestError","updateCDeskConfigRequestStart","updateCDeskConfigRequestSuccess","refreshContentDeskPlanUsageAndLimits","setCDeskConfig","updateCDeskConfig","setNewsSavedSearchId","setAnalysisSavedSearchId","setProfileMonitoringSavedSearchId","setNewsPoolSavedSearchId","setDashboardId","setUserConfigField","setGoogleAnalyticsEnabled","setGoogleAnalyticsDisabled","setYoutubeAnalyticsEnabled","setYoutubeAnalyticsDisabled","setFacebookAnalyticsEnabled","setFacebookAnalyticsDisabled","setLinkedInAnalyticsEnabled","setLinkedInAnalyticsDisabled","updatePaidFeatures","orderPaidVersionStart","orderPaidVersionSuccess","orderPaidVersionError","fetchAll","fetchContactsStart","fetchContactsSuccess","fetchContactsError","fetchDistributionListsStart","fetchDistributionListsSuccess","fetchDistributionListsError","fetchTagsStart","fetchTagsSuccess","fetchTagsError","saveContactsStart","saveContactsSuccess","saveContactsError","deleteContactsStart","deleteContactsSuccess","deleteContactsError","changeTagStart","changeTagSuccess","changeTagError","renameTagStart","renameTagSuccess","renameTagError","deleteTagStart","deleteTagSuccess","deleteTagError","createDistributionListStart","createDistributionListSuccess","createDistributionListError","addContactsToDistributionListStart","addContactsToDistributionListSuccess","addContactsToDistributionListError","removeContactFromListStart","removeContactFromListSuccess","removeContactFromListError","updateDistributionListStart","updateDistributionListSuccess","updateDistributionListError","deleteDistributionListStart","deleteDistributionListSuccess","deleteDistributionListError","uploadContactsStart","uploadContactsSuccess","uploadContactsError","setUploadedPhoto","setContactTags","setDistributionList","changeContactFormData","changeContactMediaTopics","changeContactLanguages","changeContactMediaTypes","createTag","updateDistributionListFormData","selectContact","selectAllContacts","clearListData","selectDistributionList","clearSelectedLists","setMergedDistributionListData","downloadContactsExcelStart","downloadContactsExcelSuccess","downloadContactsExcelError","mergeDistributionListsStart","mergeDistributionListsSuccess","mergeDistributionListsError","downloadDistributionListStart","downloadDistributionListSuccess","downloadDistributionListError","searchDistributionListStart","searchDistributionListSuccess","searchDistributionListError","openContactEditDialog","closeContactEditDialog","openContactViewDialog","closeContactViewDialog","openContactsUploadDialog","closeContactsUploadDialog","openContactDeleteDialog","closeContactDeleteDialog","openTagsDialog","closeTagsDialog","openTagRenameDialog","closeTagRenameDialog","openTagDeleteDialog","closeTagDeleteDialog","openDistributionListCreateDialog","closeDistributionListCreateDialog","openDistributionListEditDialog","closeDistributionListEditDialog","openDistributionListViewDialog","closeDistributionListViewDialog","sortBy","listSortBy","tagsSortBy","setSelectedQueryType","openImportHelpDialog","closeImportHelpDialog","uiEnteredQuery","uiRemoveFilter","uiUpdateFilter","toggleActiveFilters","showEmailExistingDialog","closeEmailExistingDialog","showUploadResultDialog","closeUploadResultDialog","setAutoCreateDistributionList","setAutoAddToExistingList","openDistributionListMergeDialog","closeDistributionListMergeDialog","addSearchQuery","removeFilter","updateFilter","addDistributionListContactFilter","removeDistributionListContactFilter","addDistributionListContactsSearchQuery","resetFilters","setContactsPage","setDistributionListsPage","toggleContactsShowUnsubscribed","setContents","setContentFormData","updateContent","cloneContentsFormData","updateCampaignFormData","openCampaignForm","resetCampaignForm","resetCampaigns","resetContents","getContentStart","getContentSuccess","getContentError","lockContentStart","lockContentSuccess","lockContentError","unlockContentStart","unlockContentSuccess","unlockContentError","search","searchCampaignsStart","searchCampaignsSuccess","searchCampaignsError","searchContentsStart","searchContentsSuccess","searchContentsError","fetchCampaignDropdownOptionsStart","fetchCampaignDropdownOptionsSuccess","fetchCampaignDropdownOptionsError","fetchContentDropdownOptionsStart","fetchContentDropdownOptionsSuccess","fetchContentDropdownOptionsError","fetchDistributionListDropdownOptionsStart","fetchDistributionListDropdownOptionsSuccess","fetchDistributionListDropdownOptionsError","fetchContactDropdownOptionsStart","fetchContactDropdownOptionsSuccess","fetchContactDropdownOptionsError","fetchStatisticsStart","fetchStatisticsSuccess","fetchStatisticsError","resetEvents","saveContentStart","saveContentSuccess","saveContentError","saveContentFormlessStart","saveContentFormlessSuccess","saveContentFormlessError","saveDeletedExternallyForContentStart","saveDeletedExternallyForContentSuccess","saveDeletedExternallyForContentError","dispatchContentRequestStart","dispatchContentRequestSuccess","dispatchContentRequestError","uploadLinkedInMediaFileStart","uploadLinkedInMediaFileSuccess","uploadLinkedInMediaFileError","uploadFacebookMediaFileStart","uploadFacebookMediaFileSuccess","uploadFacebookMediaFileError","fetchMediaFilesStart","fetchMediaFilesSuccess","fetchMediaFilesError","fetchMoreMediaFilesStart","fetchMoreMediaFilesSuccess","fetchMoreMediaFilesError","deleteMediaFileStart","deleteMediaFileSuccess","deleteMediaFileError","appendMediaFiles","refreshContentsStatusStart","refreshContentsStatusSuccess","refreshContentsStatusError","stopRefreshContentsStatus","editorAiRequestStart","editorAiRequestSuccess","editorAiRequestError","resetSocialMediaPostsAndUploads","setUploadedMediaFilesTotalSize","buildSocialMediaLinkStart","buildSocialMediaLinkLinkedInSuccess","buildSocialMediaLinkFacebookSuccess","buildSocialMediaLinkLinkedInError","buildSocialMediaLinkFacebookError","downloadEmailEventsStart","downloadEmailEventsSuccess","downloadEmailEventsError","saveCampaignFormlessStart","saveCampaignFormlessSuccess","saveCampaignFormlessError","fetchKpiStatisticsStart","fetchKpiStatisticsSuccess","fetchKpiStatisticsError","removeRecipient","fetchRecipientContactStart","fetchRecipientContactSuccess","fetchRecipientContactError","setDistributionListSearchQuery","createOtsDraftStart","createOtsDraftSuccess","createOtsDraftError","openEditContentDialog","closeEditContentDialog","openOldEditContentDialog","closeOldEditContentDialog","openNewContentDialog","closeNewContentDialog","openViewContentDialog","closeViewContentDialog","openDeleteDialog","closeDeleteDialog","openScheduleDialog","closeScheduleDialog","openOldScheduleDialog","closeOldScheduleDialog","openPlanDialog","closePlanDialog","openSaveTemplateDialog","closeSaveTemplateDialog","setDeleteContentData","closeCampaignForm","setCampaignDialogEditMode","changeNewContentDialogView","openBlockedContentEditDialog","closeBlockedContentEditDialog","emailEditorLoadingStart","emailEditorLoadingStop","uploadEditorImageStart","uploadEditorImageSuccess","uploadEditorImageError","resetUploadedImageUrl","saveCampaignStart","saveCampaignSuccess","saveCampaignError","deleteContentStart","deleteContentSuccess","deleteContentError","deleteCampaignStart","deleteCampaignSuccess","deleteCampaignError","setAssignees","setCampaigns","setUpdatedContents","setUpdatedCampaignsContents","uiInvertFilter","switchToContactManagement","switchToEmailTemplatesLibrary","switchToSearchPool","toggleEditorAiMode","setAiSelectedText","setMediaFilesInitialFetch","openTestMailDialog","closeTestMailDialog","linkedInCompanySearchStart","linkedInCompanySearchSuccess","linkedInCompanySearchError","openContentNotesDialog","closeContentNotesDialog","openNewContent","changeContentTabView","changeContentEditTabView","changeContentsCampaignsTabView","openClosedCampaignDialog","closeClosedCampaignDialog","setRecipientBrowserOpen","changeAttachmentsMediaType","openAttachmentsDeleteDialog","closeAttachmentsDeleteDialog","openAttachmentsImagePreviewDialog","closeAttachmentsImagePreviewDialog","setContentIsPublishable","openTemplateConfirmDialog","closeTemplateConfirmDialog","openTemplatePreviewDialog","closeTemplatePreviewDialog","emailEditorForceLoadDesignStart","emailEditorForceLoadDesignStop","openOtsWelcomeDialog","closeOtsWelcomeDialog","closeOtsSuccessDialog","closeOtsErrorDialog","openRecipientsClearAllConfirmDialog","closeRecipientsClearAllConfirmDialog","invertFilter","setPage","setLimit","setSortBy","incrementMediaFilesPage","setContentFilters","setCampaignFilters","setKpiStatisticsFilters","setRecipientBrowserQuery","setCalendarDate","setCalendarSelectedCampaignId","setCalendarSelectedDay","fetchCalendarEventsStart","fetchCalendarEventsSuccess","fetchCalendarEventsError","openCalendarDialog","closeCalendarDialog","sortContents","sortCampaigns","onCalendarContentClick","setCustomTags","resetCustomTagNewNewsCount","saveCustomTagStart","saveCustomTagSuccess","saveCustomTagError","deleteCustomTagStart","deleteCustomTagSuccess","deleteCustomTagError","emptyCustomTagStart","emptyCustomTagSuccess","emptyCustomTagError","assignCustomTagToNewsStart","assignCustomTagToNewsSuccess","assignCustomTagToNewsError","removeCustomTagFromNewsStart","removeCustomTagFromNewsSuccess","removeCustomTagFromNewsError","assignCustomTagToGroupStart","assignCustomTagToGroupSuccess","assignCustomTagToGroupError","removeCustomTagFromGroupStart","removeCustomTagFromGroupSuccess","removeCustomTagFromGroupError","fetchNewsForCustomTagStart","fetchNewsForCustomTagSuccess","fetchNewsForCustomTagError","afterStructuredFormatExportActionStart","afterStructuredFormatExportActionSuccess","afterStructuredFormatExportActionError","updateAfterStructuredFormatExportAction","setSelectedCustomTag","showCustomTagDialog","hideCustomTagDialog","showEmptyCustomTagDialog","hideEmptyCustomTagDialog","showAssignCustomTagsToNewsDialog","hideAssignCustomTagsToNewsDialog","showAssignCustomTagsToGroupDialog","hideAssignCustomTagsToGroupDialog","filterBySelectedCustomTag","filterBySelectedCustomTagGroup","openCustomTagInShoppingCart","showRemoveCustomTagDialog","hideRemoveCustomTagDialog","setCustomTagsViewType","changeCustomTagsTab","setFilteredGroupId","resetFilteredGroupId","showGroupDialog","hideGroupDialog","showDeleteGroupDialog","hideDeleteGroupDialog","setSelectedGroup","saveGroupStart","saveGroupSuccess","saveGroupError","deleteGroupStart","deleteGroupSuccess","deleteGroupError","toggleGroupedAssignableCustomTags","runCustomTagQueries","searchRequestStart","searchRequestError","searchRequestSuccess","scoresRequestStart","scoresRequestError","scoresRequestSuccess","saveSearchQueryRequestError","saveSearchQueryRequestStart","saveSearchQueryRequestSuccess","saveScoreQueryRequestError","saveScoreQueryRequestStart","saveScoreQueryRequestSuccess","fetchAllQueriesStart","fetchAllQueriesSuccess","fetchAllQueriesError","deleteQueryRequestStart","deleteQueryRequestSuccess","deleteQueryRequestError","deactivateQueryRequestStart","deactivateQueryRequestSuccess","deactivateQueryRequestError","activateQueryRequestStart","activateQueryRequestSuccess","activateQueryRequestError","addDarknetSearchQuery","chartDrilldown","searchResultDrilldown","uiApplyDateFilter","uiChooseQuickSelect","uiOnSortByChange","uiOnSortDirectionChange","changeDarknetView","toggleAdvancedSearch","uiResetFilters","uiApplyFilters","setSelectedFilters","addSelectedFilter","openScoreQueryDialog","openSearchQueryDialog","closeScoreQueryDialog","closeSearchQueryDialog","updateScoreQueryFormData","resetScoreQueryFormData","updateSearchQueryFormData","resetSearchQueryFormData","setSearchQueryFormTestResult","onSortByChange","onSortDirectionChange","testSearchQueryError","testSearchQueryStart","testSearchQuerySuccess","loadMoreDarknetEntriesStart","loadMoreDarknetEntriesError","loadMoreDarknetEntriesSuccess","setDashboards","setSelectedDashboard","cloneDashboard","setEditDashboard","setEditDashboardUploadedBackgroundImage","setEditDashboardBackgroundImageUrl","setEditDashboardColor","resetEditDashboardBackgroundImage","fetchDashboard","saveDashboardStart","saveDashboardSuccess","saveDashboardError","fetchSavedSearchAggregationsStart","fetchSavedSearchAggregationsSuccess","fetchSavedSearchAggregationsError","deleteDashboardStart","deleteDashboardSuccess","deleteDashboardError","showMultiChartsDialog","hideMultiChartsDialog","showEditDialog","hideEditDialog","showDeleteDialog","hideDeleteDialog","showDrilldownDialog","hideDrilldownDialog","cancelEditing","setChartLimitReached","selectSavedSearch","selectAdditionalSavedSearches","selectChartDialogGroupingType","selectChartDialogSortBy","selectDrilldownGroupingType","selectDrilldownSortBy","selectDateRange","selectDate","selectDateMode","selectDateType","selectDateInterval","selectThirdLevel","selectFirstLevel","updateDateRangeOfSelectedDashboard","updateKpisOfSelectedDashboard","updateDatesOfSelectedDashboard","toggleFavorite","loadDashboard","loadMoreFeedChartItems","loadMoreNewsFeedNewsStart","loadMoreNewsFeedNewsSuccess","loadMoreNewsFeedNewsError","fetchNewsFeedClusterStatsError","fetchNewsFeedClusterStatsStart","fetchNewsFeedClusterStatsSuccess","loadDrilldownNewsFeedNewsStart","loadDrilldownNewsFeedNewsSuccess","loadDrilldownNewsFeedNewsError","loadDrilldownNewsFeedAiAnalysisStart","loadDrilldownNewsFeedAiAnalysisSuccess","loadDrilldownNewsFeedAiAnalysisError","loadMoreDrilldownNewsFeedNewsStart","loadMoreDrilldownNewsFeedNewsSuccess","loadMoreDrilldownNewsFeedNewsError","fetchDrilldownNewsFeedClusterStatsError","fetchDrilldownNewsFeedClusterStatsStart","fetchDrilldownNewsFeedClusterStatsSuccess","loadMoreSocialMediaAnalyticsFeedPostsStart","loadMoreSocialMediaAnalyticsFeedPostsSuccess","loadMoreSocialMediaAnalyticsFeedPostsError","executeSavedSearch","executedSavedSearch","exportDashboardAsPowerpointStart","exportDashboardAsPowerpointSuccess","exportDashboardAsPowerpointError","downloadImageStart","downloadImageError","downloadImageSuccess","downloadPdfStart","downloadPdfError","downloadPdfSuccess","toggleAutoRefresh","startAutoRefresh","stopAutoRefresh","addNewChartShortcut","selectGoogleAnalyticsChart","selectGoogleAnalyticsView","selectMozChart","selectMozTargets","selectLinkedInAnalyticsChart","selectLinkedInAnalyticsOrganization","selectFacebookAnalyticsChart","setFacebookAnalyticsChart","selectFacebookAnalyticsPage","changeFacebookAnalyticsPage","selectTwitterAnalyticsChart","setSelectedChartUploadedPhoto","setSelectedChartMultipleSavedSearchesMode","setTemplateFormData","saveTemplateStart","saveTemplateSuccess","saveTemplateError","deleteTemplateStart","deleteTemplateSuccess","deleteTemplateError","fetchTemplatesStart","fetchTemplatesSuccess","fetchTemplatesError","resetTemplatesModule","loadSelectedTemplate","fetchMoreTemplatesStart","cloneTemplateStart","fetchReleasedTemplatesStart","fetchReleasedTemplatesSuccess","fetchReleasedTemplatesError","openEditorDialog","closeEditorDialog","openSaveDialog","closeSaveDialog","openPickerDialog","closePickerDialog","togglePublicTemplates","setReadMode","increaseTemplatesPage","resetTemplateFilters","initEnvironment","changeWidthAndHeight","stageRequestSuccess","changeExportFormatSelection","exportError","exportSuccess","exportStart","exportStructuredFormatStart","exportBackwardsNewsHtmlStart","exportCoverError","exportCoverSuccess","exportCoverStart","exportHtmlPreviewSuccess","exportHtmlPreviewStart","exportHtmlPreviewError","exportTxtPreviewSuccess","exportTxtPreviewStart","exportTxtPreviewError","exportXmlPreviewSuccess","exportXmlPreviewStart","exportXmlPreviewError","exportJsonPreviewSuccess","exportJsonPreviewStart","exportJsonPreviewError","uploadHtmlHeaderLogoStart","uploadHtmlHeaderLogoError","setUploadedHeaderLogoUrl","resetUploadedHeaderLogoUrl","uploadHtmlAdvertisingBannerStart","uploadHtmlAdvertisingBannerError","setUploadedAdvertisingBannerUrl","resetUploadedAdvertisingBannerUrl","resetExportUiState","hideDocumentDownloadDialog","hideExportDialog","hideSendMailDialog","setExportConfig","resetExportConfig","sendMail","sendMailSuccess","sendMailError","showExportDialog","showSendMailDialog","updateExportSettings","updateExportMediaReviewHtmlConfig","updateExportMediaReviewPdfConfig","updateExportDispatchConfig","updateExportPdfDispatchConfig","updateExportMediaReviewPdfCoverPageElement","updateExportMediaReviewPdfEndPageElement","updateTranslationOptions","validateFilenameInExportSettings","setValueInSettings","setExportFilename","exportProgressIncreaseStep","exportProgressStart","exportProgressFinish","exportProgressStop","validateSpfSuccess","validateSpfStart","validateSpfStarted","validateSpfError","changeStartEndDate","setLastExport","fetchDispatchLogStart","fetchDispatchLogSuccess","fetchDispatchLogError","createDispatchStart","createDispatchSuccess","createDispatchError","cancelDispatchStart","cancelDispatchSuccess","cancelDispatchError","addNewsQuery","addNewsQueries","addFilters","replaceFilters","resetFilterFields","changeDate","changeDateInterval","changeDateType","setFilter","setBoolean","setSimilarityFilter","resetAnalysisCodesFilter","swapAnalysisCodeSelectionAndGrouping","setIdentitySets","saveIdentitySetStart","saveIdentitySetSuccess","saveIdentitySetError","deleteIdentitySetStart","deleteIdentitySetSuccess","deleteIdentitySetError","addIdentityToIdentitySetStart","addIdentityToIdentitySetSuccess","addIdentityToIdentitySetError","removeIdentityFromIdentitySetStart","removeIdentityFromIdentitySetSuccess","removeIdentityFromIdentitySetError","showIdentitySetDialog","hideIdentitySetDialog","showAddIdentityToIdentitySetDialog","hideAddIdentityToIdentitySetDialog","showDeleteIdentitySetDialog","hideDeleteIdentitySetDialog","setSelectedIdentitySet","influencersRequestError","influencersRequestStart","influencersRequestSuccess","moreInfluencersRequestError","moreInfluencersRequestStart","moreInfluencersRequestSuccess","searchForInfluencer","searchForSelectedInfluencers","selectInfluencer","resetInfluencerSelection","openAddInfluencerToContactsDialog","closeAddInfluencerToContactsDialog","addInfluencerToContactsStart","addInfluencerToContactsSuccess","addInfluencerToContactsError","updateContactData","setDistributionListCreateDialogOpen","searchContactsStart","searchContactsSuccess","searchContactsError","showInfluencerDetails","hideInfluencerDetails","fetchInfluencerRequestError","fetchInfluencerRequestStart","fetchInfluencerRequestSuccess","selectChannel","highlightReachChart","setMailingLists","updateSelectedMailingList","saveMailingListStart","saveMailingListSuccess","saveMailingListError","deleteMailingListStart","deleteMailingListSuccess","deleteMailingListError","showMailingListDialog","hideMailingListDialog","showRemoveMailingListDialog","hideRemoveMailingListDialog","setMediaReviews","collapseAllTopics","expandAllTopics","collapseTopics","expandTopics","fetchNewsForMediaReviewStart","fetchNewsForMediaReviewError","fetchNewsForMediaReviewSuccess","selectMediaReview","loadFullTextStart","loadFullTextSuccess","loadFullTextError","moveNewsInMediaReviewStart","moveNewsInMediaReviewSuccess","moveNewsInMediaReviewError","moveCodeInMediaReviewStart","moveCodeInMediaReviewSuccess","moveCodeInMediaReviewError","removeNewsFromMediaReviewStart","removeNewsFromMediaReviewSuccess","removeNewsFromMediaReviewError","showRemoveNewsDialog","hideRemoveNewsDialog","showAllSnippets","showSnippet","hideAllSnippets","hideSnippet","pinAllStart","pinAllError","pinAllSuccess","unpinAll","setAutoAddMediaReviewsNews","showAllSummaries","showSummary","hideAllSummaries","hideSummary","regroupNews","updateMediaReviewStats","recalculateMediaReviewStats","selectNewsForSorting","shiftSelectNewsForSorting","deselectNewsForSorting","resetSortingSelection","setGroupedNews","setMediaReviewFilter","setMediaReviewFilterSize","filterMediaReviewsStart","filterMediaReviewsSuccess","filterMediaReviewsError","replaceMediaReviewReactionStart","replaceMediaReviewReactionSuccess","replaceMediaReviewReactionError","fetchMediaReviewReactionsStart","fetchMediaReviewReactionsSuccess","fetchMediaReviewReactionsError","checkMediaReviewReactionsStart","checkMediaReviewReactionsStop","setSnapshot","reorderStart","reorderSuccess","reorderError","checkDiffStart","checkDiffError","showDiffWarning","hideDiffWarning","acceptDiff","rejectDiff","selectNews","resetNewsSelection","invertNewsSelection","setSelectedNews","navigate","backToLogin","back","redirectAuthenticated","setSortDirection","currentIndexChange","increasePaging","moreNewsRequestError","moreNewsRequestStart","moreNewsRequestSuccess","newsRequestError","newsRequestStart","newsRequestSuccess","startNewsRequest","fetchClusterStatsError","fetchClusterStatsStart","setNewsView","toggleDateForm","toggleHelpDialog","selectViewConfigPreset","viewConfigPresetSelected","setViewConfigPreset","resetNews","setLastSeenNewsId","setShowNewsList","setSelectedNewsIdToShowInDrawer","blockNewsRequest","unblockNewsRequest","setNewsRequestIsRunning","setLastNewsIdClickedOnMorePublications","setYoutubePlayerActiveNewsId","setTiktokPlayerActiveNewsId","removeTranslations","addNews","updateNews","decrementReferences","translateRequestStart","translateRequestSuccess","translateRequestError","setImageAsIllustration","setExtractTextFromPdf","mergeExtractedText","saveNews","updateNewsError","updateNewsStart","updateNewsSuccess","createNewsError","createNewsStart","createNewsSuccess","deleteNewsError","deleteNewsStart","deleteNewsSuccess","getNewsError","getNewsStart","getNewsSuccess","uploadFileError","uploadFileStart","uploadFileSuccess","removeUploadedFile","extractTextFromPdfStart","extractTextFromPdfSuccess","extractTextFromPdfError","uploadVideoFileError","uploadVideoFileStart","uploadVideoFileSuccess","removeUploadedVideoFile","updateSelectedNews","updateFieldOfSelectedNews","showEditNewsDialog","hideEditNewsDialog","showNewsPageRemoveNewsDialog","hideNewsPageRemoveNewsDialog","searchPublicationsError","searchPublicationsStart","searchPublicationsSuccess","setPublicationsLoading","setSummaryOption","automaticSummaryStart","automaticSummarySuccess","automaticSummaryError","invalidSearch","submitShoppingStart","submitShoppingSuccess","submitShoppingError","showShoppingNewsDialog","hideShoppingNewsDialog","fetchFilterTimelineStart","fetchFilterTimelineSuccess","fetchFilterTimelineError","updateGroupsStart","updateGroups","updateGroupStats","openDrawer","closeDrawer","setNotifications","updateNotifications","markAsReadStart","markAsReadSuccess","markAsReadError","fetchNotificationsStart","fetchNotificationsSuccess","fetchNotificationsError","setNotificationsPage","setLastPage","pageIdentitiesRequestError","pageIdentitiesRequestStart","pageIdentitiesRequestSuccess","pageIdentitiesStatisticsRequestStart","pageIdentityPostsRequestError","pageIdentityPostsRequestStart","pageIdentityPostsRequestSuccess","selectPageIdentity","resetPageIdentitySelection","toggleSelectedInteractionsChart","toggleShowInactive","toggleGrouped","uiSetPreviewUrl","uiSetUserImage","publicationsRequestError","publicationsRequestStart","publicationsRequestSuccess","morePublicationsRequestError","morePublicationsRequestStart","morePublicationsRequestSuccess","searchForPublication","searchForSelectedPublications","openPublicationForm","hidePublicationForm","resetCreatedPublication","createPublicationError","createPublicationStart","createPublicationSuccess","selectPublication","resetPublicationSelection","fetchSavedChartStart","fetchSavedChartSuccess","fetchSavedChartError","createSavedChartStart","createSavedChartSuccess","createSavedChartError","deleteSavedChartStart","deleteSavedChartSuccess","deleteSavedChartError","discardSavedChartStart","discardSavedChartSuccess","discardSavedChartError","updateSavedChartStart","updateSavedChartSuccess","updateSavedChartError","goToAdministration","showDialog","hideDialog","saveSavedDashboardStart","saveSavedDashboardSuccess","saveSavedDashboardError","checkUrlNameStart","checkUrlNameSuccess","checkUrlNameError","fetchSavedDashboardStart","fetchSavedDashboardSuccess","fetchSavedDashboardError","fetchSavedDashboardInfoStart","fetchSavedDashboardInfoSuccess","fetchSavedDashboardInfoError","deleteSavedDashboardStart","deleteSavedDashboardSuccess","deleteSavedDashboardError","showSavedDashboardDialog","hideSavedDashboardDialog","startAutoReload","setSavedDashboardValue","setSavedSearches","updateSelectedSavedSearch","saveSavedSearchStart","saveSavedSearchSuccess","saveSavedSearchError","checkAffectedDashboards","setAffectedDashboards","showAffectedDashboardsDialog","hideAffectedDashboardsDialog","deleteSavedSearchStart","deleteSavedSearchSuccess","deleteSavedSearchError","resolveSavedSearchStart","resolveSavedSearchSuccess","resolveSavedSearchError","replaceSavedSearchStart","replaceSavedSearchSuccess","replaceSavedSearchError","fetchSavedSearchesTimelinesStart","fetchSavedSearchesTimelinesSuccess","fetchSavedSearchesTimelinesError","fetchSavedSearchDispatchesStart","fetchSavedSearchDispatchesSuccess","fetchSavedSearchDispatchesError","showEditSavedSearchDialog","hideEditSavedSearchDialog","showRemoveSavedSearchDialog","hideRemoveSavedSearchDialog","showUpdateSavedSearchDialog","hideUpdateSavedSearchDialog","showSavedSearchDispatchesDialog","hideSavedSearchDispatchesDialog","loadInitialSearch","setInitialSearchLoaded","setExecutedSavedSearch","setViewType","setTab","saveSavedSearchFeedStart","saveSavedSearchFeedSuccess","saveSavedSearchFeedError","deleteSavedSearchFeedStart","deleteSavedSearchFeedSuccess","deleteSavedSearchFeedError","expandSavedSearchFeed","addAllNewsToShoppingCartError","addAllNewsToShoppingCartStart","addAllNewsToShoppingCartSuccess","addNewsToShoppingCart","collapseAllNewsLists","expandAllNewsLists","fetchNewsError","fetchNewsStart","fetchNewsSuccess","moveCodeInShoppingCart","moveNewsInShoppingCart","moveNewsInShoppingCartSublist","removeNewsFromShoppingCart","resetShoppingCart","sortByUngrouped","toggleNewsList","updateTabIndex","setCustomTagId","setRunning","toggleSnippets","checkShoppingCartSize","setCodes","setNews","recalculateGroupedSorting","setAutoAddShoppingCartNews","fetchClusterForShoppingCartError","fetchClusterForShoppingCartStart","fetchClusterForShoppingCartSuccess","showClusterDialog","hideClusterDialog","fetchReorderClusteredNewsError","fetchReorderClusteredNewsStart","fetchReorderClusteredNewsSuccess","moveNewsInCluster","replaceCluster","setActiveNewsIdsInCluster","setHoveredNewsIdsInCluster","saveSubscriptionsError","saveSubscriptionsStart","saveSubscriptionsSuccess","selectAllTopics","deselectAllTopics","setSubscriptions","setTopics","updateEditionSelection","updateTopicSelection","submitSurveyStart","submitSurveySuccess","submitSurveyError","onMount","onUnmount","setSelectedEditorialPlan","setThemaxModuleInitialized","changeTabView","openDetailedViewDialog","closeDetailedViewDialog","openWelcomeDialog","closeWelcomeDialog","openOrderDialog","closeOrderDialog","closeOrderSuccessDialog","setSelectedThemaxFilters","applyThemaxFilters","resetThemaxFilters","addQuery","setThemaxPage","setThemaxLimit","setThemaxSort","updateThemaxSort","setSelectedPublicationIds","themaxSearchRequestStart","themaxSearchRequestSuccess","themaxSearchRequestError","themaxSearchEditorialPlans","themaxSearchEditorialPlansSuccess","themaxSearchEditorialPlansError","themaxFetchRelatedEditorialPlansStart","themaxFetchRelatedEditorialPlansSuccess","themaxFetchRelatedEditorialPlansError","themaxSearchPublications","themaxSearchPublicationsSuccess","themaxSearchPublicationsError","themaxFetchMorePublicationsStart","themaxFetchMoreEditorialPlansStart","themaxFetchMoreRelatedEditorialPlansStart","themaxSaveBookmarkStart","themaxSaveBookmarkSuccess","themaxSaveBookmarkError","themaxDeleteBookmarkStart","themaxDeleteBookmarkSuccess","themaxDeleteBookmarkError","saveThemaxSavedSearchStart","saveThemaxSavedSearchSuccess","saveThemaxSavedSearchError","deleteThemaxSavedSearchStart","deleteThemaxSavedSearchSuccess","deleteThemaxSavedSearchError","searchThemaxSavedSearchesStart","searchThemaxSavedSearchesSuccess","searchThemaxSavedSearchesError","favoriteThemaxSavedSearchStart","favoriteThemaxSavedSearchSuccess","favoriteThemaxSavedSearchError","initializeThemaxSavedSearches","executeThemaxSavedSearch","resetThemaxSavedSearches","setThemaxSavedSearchFilters","exportEditorialPlansStart","exportEditorialPlansSuccess","exportEditorialPlansError","uiAddFilters","uiReplaceFilters","uiSetBoolean","uiSetAnalysisFilter","uiResetFilterFields","uiSwapAnalysisCodeSelectionAndGrouping","uiSetSortBy","uiSetSortDirection","searchUnsplashPhotosStart","searchUnsplashPhotosSuccess","searchUnsplashPhotosError","addImageToLibraryStart","addImageToLibrarySuccess","addImageToLibraryError","fetchRandomUnsplashPhotosStart","setUnsplashPhotos","setUnsplashFormData","resetUnsplashPhotos","toggleUnsplashComponent","incrementPage","setUser","updateUserRequestError","updateUserRequestStart","updateUserRequestSuccess","forgotPasswordRequestError","forgotPasswordRequestStart","forgotPasswordRequestSuccess","resetPasswordRequestError","resetPasswordRequestStart","resetPasswordRequestSuccess","registerUserRequestError","registerUserRequestStart","registerUserRequestSuccess","activateUserStart","activateUserError","reset","setCookieOption","setDarkMode","setPrefersDarkMode","setField","getBffUrl","bffUrlSelector","store","registerUser","body","Api","fetchConfig","timezone","newsradarId","updateUserConfig","fetchContentDeskConfig","updateContentDeskConfig","id","searchAllowedDomains","createAllowedDomain","updateAllowedDomainSenderDomains","updateAllowedDomainOpenTracking","updateAllowedDomainClickTracking","deleteAllowedDomain","refreshStatusAllowedDomain","fetchAllowedDomainStatus","startExport","logout","login","searchByIds","validate","fetchNewsIds","searchInfluencers","searchPublications","searchPageIdentities","searchAllPublications","searchPageIdentityPosts","getMediaReview","mediaReviewId","reorderMediaReview","removeNewsFromMediaReview","loadFullText","filterMediaReviews","replaceMediaReviewReaction","getMediaReviewReactions","getMediaReviewSnapshot","getNews","getNewsAiAnalysis","createPublication","submitShopping","type","createDispatch","cancelDispatch","fetchDispatchLog","saveSubscriptions","updateUser","userId","forgotPassword","resetPassword","activateUser","createCustomTag","updateCustomTag","deleteCustomTag","emptyCustomTag","fetchNewsForCustomTag","assignCustomTagToNews","createCustomTagGroup","updateCustomTagGroup","deleteCustomTagGroup","assignCustomTagToGroup","groupId","customTagId","removeCustomTagFromGroup","uploadFile","data","formData","FormData","forEach","_ref","key","value","filename","append","updateCharts","exportExcel","exportPowerpoint","exportPowerpointBatch","aiChartAnalysis","aiChartDescription","summarizeNews","updateBackwardsNews","createNews","deleteNews","newsIds","deleteBackwardsNews","fetchInfluencer","addInfluencerToContacts","updateMailingList","deleteMailingList","createMailingList","createSavedSearch","updateSavedSearch","deleteSavedSearch","resolveSavedSearch","fetchSavedSearchNewsFeed","fetchSavedSearchNewsFeedAiAnalysis","fetchSavedSearchDispatches","limit","arguments","length","undefined","page","createSavedSearchFeed","updateSavedSearchFeed","deleteSavedSearchFeed","fetchDashboardConfig","updateDashboard","createDashboard","deleteDashboard","userConfigId","destroyRoute","fetchSavedDashboard","urlName","fetchSavedDashboardInfo","deleteSavedDashboard","createSavedDashboard","checkSavedDashboardUrlName","validateSpf","authenticateGoogleAnalytics","revokeGoogleAnalytics","authenticateYoutubeAnalytics","revokeYoutubeAnalytics","authenticateLinkedIn","revokeLinkedIn","revokeFacebook","revokeTwitter","authenticateFacebook","fetchChartData","addIdentityToIdentitySet","identityId","removeIdentityFromIdentitySet","createIdentitySet","updateIdentitySet","deleteIdentitySet","getDarknetScoreResults","ids","dateFrom","dateTo","getDarknetDemoScoreResults","searchDarknetEntries","createDarknetSearchQuery","updateDarknetSearchQuery","deleteDarknetSearchQuery","createDarknetScoreQuery","updateDarknetScoreQuery","deleteDarknetScoreQuery","fetchAllDarknetQueries","deactivateDarknetQuery","activateDarknetQuery","testSearchQuery","translate","buildExternalWidgetUrl","content","queryParams","URLSearchParams","widget_content","toString","sso","logSso","fetchSavedChart","locale","encodeURIComponent","createSavedChart","deleteSavedChart","updateSavedChart","submitApiKey","deleteApiKey","extractTextFromPdf","file","markNotificationAsRead","fetchNotifications","sortOrder","submitSurvey","searchUnsplashPhotos","fetchRandomUnsplashPhotos","downloadUnsplashImage","fetchOpenGraphMetadata","uploadFileFromUrl","searchThemaxEditorialPlans","searchThemaxPublications","exportThemaxEditorialPlans","searchThemaxSavedSearches","fetchThemaxSavedSearch","createThemaxSavedSearch","updateThemaxSavedSearch","deleteThemaxSavedSearch","favoriteThemaxSavedSearch","createOrder","createGrootEditorialPlan","deleteGrootEditorialPlan","React","require","PropTypes","ALL_INITIALIZERS","READY_INITIALIZERS","load","loader","promise","state","loading","loaded","error","then","catch","err","loadMap","obj","promises","Object","keys","result","push","res","Promise","all","render","props","createElement","__esModule","default","createLoadableComponent","loadFn","options","Error","opts","assign","delay","timeout","webpack","modules","init","isWebpackReady","every","moduleId","__webpack_modules__","Component","constructor","super","this","pastDelay","timedOut","static","loadable","shape","report","func","isRequired","UNSAFE_componentWillMount","_mounted","_loadModule","context","Array","isArray","moduleName","setState","_delay","setTimeout","_timeout","update","_clearTimeouts","UNSAFE_componentWillUnmount","clearTimeout","retry","isLoading","Loadable","Map","Capture","getChildContext","Children","only","children","flushInitializers","initializers","pop","preloadAll","resolve","reject","preloadReady","module","exports","IP_FILTER","Root","createLoadable","RootEmbed","window","onresize","width","innerWidth","height","innerHeight","global","mouseX","mouseY","onmousemove","e","clientX","clientY","prototype","hasOwnProperty","call","UST","onTrackingStarted","console","log","currentIP","ust_myIP","trackingAllowed","checkIp","ip","some","filter","startsWith","settings","enableSessionRecordings","fullRec","nativeSessionRecording","allowedDomains","addEventListener","evt","indexOf","origin","styleEl","document","setAttribute","styleSheet","cssText","appendChild","createTextNode","head","info","container","getElementById","root","createRoot","location","hash","searchFieldsNotInDefault","SearchFields","defaultFilterFields","Set","values","subtract","toList","toJS","searchPoolFilterFields","defaultConfig","fromJS","indexType","IndexTypes","NewsPageModules","groupingType","GroupingTypes","defaultDateType","hasDateRestriction","hasSavedSearchesLimit","appBarTitleKey","allowedViews","NewsPageViews","allowedKeyFigures","AllowedKeyFigures","allowedDateTypes","DateTypes","allowedFilterFields","allowedFilterFieldGroups","SearchFieldGroups","requiredFilters","exportFormats","DefaultExportFormats","newsPage","moreOptions","showGroupingSelection","newsGroupWidget","headerFilterField","showAllKeyFiguresInHeader","icon","mode","paging","entity","field","newsWidget","showChannel","showCodes","showSentiment","sentimentEditable","showTonality","showActions","showSelectButton","showPinButton","showPdfButton","showEditButton","showNewIndicator","availableCodesOnly","showStatementTonality","influencerWidget","publicationWidget","capabilities","influencers","Capabilities","publications","influencerDetails","savedSearches","savedSearchesEditing","savedSearchesFeeds","export","editing","deleting","charts","useAggregationValue","loadNewsOnEnter","lastSeenNewsIdCookieName","buildConfig","overrides","mergeWith","mergeDeepKeepLists","defaultAnalysisConfig","buildAnalysisConfigConfig","defaultSearchPoolConfig","byCodeConfigOverrides","masterConfig","byCustomTagConfigOverrides","byNewsguardRankConfigOverrides","configPresets","earned","earnedByCode","earnedByCustomTag","analysis","analysisByCode","analysisByCustomTag","profileMonitoring","concat","searchPool","searchPoolByNewsguardRank","initialState","handleActions","NewsActions","payload","name","config","get","AppActions","getAnewstipUi","anewstip","getAnewstipStaticsRequestRunning","getAnewstipHasStatics","getAnewstipIsSimpleSearch","getAnewstipSearchRequestRunning","getJournalistsSearchRequestRunning","getOutletsSearchRequestRunning","getArticlesSearchRequestRunning","getAnewstipCombinedSearchRequestRunning","getIsInitialSearch","getResultsTab","getAnewstipImportRequestRunning","getAnewstipReplaceRequestRunning","getDuplicateContactsDialogOpen","getAnewstipDistributionListContactDialogOpen","getShowDrillDownDialog","getDrillDownTab","getDrillDownEntity","getJournalistsDrillDownRequestRunning","getOutletsDrillDownRequestRunning","getArticlesDrillDownRequestRunning","getIsNavigationLocked","getIsLimitedFunctionality","getAnewstipImportWithDistributionLists","getAnewstipStatics","getAnewstipSuggest","getAnewstipSearchData","getAnewstipFiltersData","getAnewstipSelectedData","getAnewstipData","getAnewstipJournalists","getAnewstipOutlets","getAnewstipArticles","getAnewstipImports","getAnewstipImportResult","getAnewstipImporContactsForDistributionLists","getAnewstipDrillDownData","getAnewstipDrillDownFilters","getAnewstipDrillDownTopics","getIn","getAnewstipDrillDownHistory","getConfig","getColors","getThemes","getGroupingSettingId","getCurrency","getConfigSenderMail","getWhitelabelEmailAddress","getPdfCoverTitle","getExportLimit","getXlsxExportLimit","getBackwardsNewsHtmlLimit","getBackwardsNewsXlsxLimit","getSavedSearchFeedLimit","getConfigDefaultDateType","getInitialRoute","getGoogleAnalyticsEnabled","getYoutubeAnalyticsEnabled","getFacebookAccountConnected","getTwitterAnalyticsEnabled","getIsSuper","getLinkedInAnalyticsEnabled","getLinkedInPermissions","getLinkedInProfile","getApiKeyRequestRunning","getNewsPoolAllowedSavedSearchesCount","getNewsPoolTimeLimit","getNewsPoolTimeUnit","getNewsPoolAllowedChannels","getNewsAllowedCodeIds","getNewsAllowedChannelIds","getNewsAllowedCountryIds","getDashboardAllowedDashboardsCount","getDashboardAllowedChartsCount","getGoogleAnalyticsClientId","getFacebookAnalyticsClientId","getLinkedInClientId","getDeeplApiKey","getConfigSeparateCoding","getEvaluationSteps","getStatementEvaluationSteps","getStatementBasedCoding","getFirstConfigLoaded","getStartedWithDeepLink","getDarkowlSearchQueries","getDarkowlScoreQueriesById","getDarkowlScoreQueries","map","q","getAnewstipApiKey","getPaidFeatures","getThemaxPaidFeatureStatus","getHasThemaxPaidVersion","getAiSummariesPaidFeatureStatus","getHasAiSummariesPaidVersion","getConfigOrderRequestRunning","getHasAiPowerpointAnalysisTestVersion","getUserConfig","getCDeskConfig","getCDeskUpdateRequestRunning","getCDeskPlan","getCDeskPlanUsage","getCDeskIsDistributionListsLocked","getFavoritedSavedSearchId","camelcase","getViewConfigModuleName","getFavoritedSavedSearch","savedSearchId","getSavedSearchById","getFavoritedDashboardId","getCmData","contactManagement","getCmFormData","getCmContacts","getCmContactsToDelete","getCmDistributionLists","getCmListData","getCmSelectedContact","find","c","ImmutableMap","getCmContactsTotal","getCmListsTotal","getCmUploadResult","getCmSelectedLists","getCmDistributionListsSearch","getCmTags","getCmHasTags","isEmpty","getCmUi","getCmSortBy","getCmSortOrder","getCmListsSortBy","getCmListsSortOrder","getCmTagsSortBy","getCmTagsSortOrder","getCmAutoCreateDistributionList","getCmAutoAddToExistingList","getCmContactEditDialogOpen","getCmContactDialogOpen","getCmContactDeleteDialogOpen","getCmTagsDialogOpen","getCmTagRenameDialogOpen","getCmTagDeleteDialogOpen","getCmDistributionListCreateDialogOpen","getCmDistributionListEditDialogOpen","getCmDistributionListViewDialogOpen","getCmContactsUploadDialogOpen","getCmImportHelpDialogOpen","getCmEmailExistingDialogOpen","getCmContactDialogsOpen","getCmUploadResultDialogOpen","getCmDistributionListMergeDialogOpen","getCmContactEditDialogMode","getCmSelectedTagType","getCmSelectedQueryType","getCmRequestRunning","getCmSearchRunning","getCmContactsSearchRunning","getCmDistributionListsSearchRunning","getCmDistributionListSearchRunning","getCmSearchBarLabel","getCmUploadedPhoto","getCmFiltersCollapsed","getCmFilters","getCmActiveFilters","createImmutableSelector","filters","ImmutableList","getCmContactSearchQueries","getCmDistributionListSearchQueries","getCmDistributionListContactsSearchQueries","getCmContactPage","getCmContactLimit","getCmShowUnsubscribed","getCmDistributionListPage","getCmDistributionListLimit","getCmTagsPage","getCmTagsLimit","getCDeskData","contentDesk","getCDeskCampaigns","getCDeskCampaignsContents","reduce","acc","campaign","getCDeskContents","getCDeskAssignees","getCDeskContentFormData","getCDeskContentFormDataRecipients","getCDeskCampaignFormData","getCDeskCampaignDropdownOptions","getCDeskContentDropdownOptions","getCDeskContactDropdownOptions","getCDeskDistributionListDropdownOptions","getCDeskStatistics","getCDeskKpiStatistics","getCDeskSelectedContent","getCDeskUploadedMediaFiles","getCDeskUploadedMediaFilesTotal","getCDeskAiSelectedText","getCDeskAiRequestResults","getCDeskUploadedMediaFilesTotalSize","getCDeskDistributionListSearchQuery","getCDeskUi","getCDeskRequestRunning","getCDeskShowNewContentDialog","getCDeskNewContentDialogSocialOnly","getCDeskShowEditContentDialog","getCDeskShowOldEditContentDialog","getCDeskShowViewContentDialog","getCDeskShowDeleteDialog","getCDeskShowBlockedContentEditDialog","getCDeskDeleteData","getCDeskShowNewCampaignDialog","getCDeskCampaignDialogEditMode","getCDeskNewDialogView","getCDeskEmailEditorLoadingStatus","getCDeskContactDropdownOptionsLoading","getCDeskCampaignDropdownOptionsLoading","getCDeskDistributionListDropdownOptionsLoading","getCDeskContentIsLoading","getCDeskContentDialogCloneMode","getCDeskSelectedQueryType","getCDesksearchBarLabel","getCDeskSearchContentsRunning","getCDeskSearchCampaignsRunning","getCDeskContentUploadedImageUrl","getCDeskActiveFiltersCollapsed","getCDeskStatisticsRequestRunning","getCDeskDuplicateError","getCDeskShowScheduleDialog","getCDeskShowOldScheduleDialog","getCDeskShowPlanDialog","getCDeskMediaFileUploading","getCDeskMediaFilesInitialFetch","getCDeskMediaFilesLoading","getCDeskEditorAiMode","getCDeskEditorAiRequestRunning","getCDeskShowSaveTemplateDialog","getSocialMediaLinkLoading","getSocialMediaLinkBuildFailed","getCDeskShowTestMailDialog","getCDeskDownloadEmailEventsLoading","getCDeskLinkedInCompanySearchResults","getCDeskShowContentNotesDialog","getCDeskContentTabView","getCDeskContentEditTabView","getCDeskContentsCampaignsTabView","getCDeskLoadingKpiStatistics","getCDeskShowClosedCampaignDialog","getCDeskAttachmentsMediaType","getCDeskAttachmentsDeleteDialogOpen","getCDeskAttachmentsDeleteMediaFileId","getCDeskAttachmentsImagePreviewOpen","getCDeskAttachmentsImagePreviewSrc","getCDeskRecipientBrowserOpen","getCDeskRecipientBrowserQuery","getCDeskContentIsPublishable","getCDeskTemplateConfirmDialogOpen","getCDeskTemplatePreviewDialogOpen","getCDeskTemplateDesign","getCDeskEmailEditorForceLoadDesign","getCDeskShowOtsWelcomeDialog","getCDeskShowOtsSuccessDialog","getCDeskShowOtsErrorDialog","getCDeskShowRecipientsClearAllConfirmDialog","getCDeskFilters","getCDeskActiveFilters","List","getCDeskContentSearchQueries","getCDeskCampaignSearchQueries","getCDeskCampaignPage","getCDeskCampaignLimit","getCDeskCampaignSortBy","getCDeskCampaignSortOrder","getCDeskContentPage","getCDeskContentLimit","getCDeskContentSortBy","getCDeskContentSortOrder","getCDeskMediaFilesPage","getCDeskMediaFilesLimit","getCDeskCampaignFilters","getCDeskContentFilters","getCDeskKpiStatisticsFilters","getCDeskCalendar","getCDeskCalendarData","getCDeskCalendarContents","getCDeskCalendarCampaigns","getCDeskCalendarCampaignsContents","getCDeskCalendarDate","getCDeskCalendarSelectedCampaignId","getCDeskCalendarSelectedDay","getCDeskCalendarContentsSorting","getCDeskCalendarCampaignsSorting","getCDeskCalendarUi","getCDeskShowCalendarDialog","getCDeskCalendarLoadingCampaignIds","getCDeskCalendarLoadingContentIds","getCDeskCalendarEvents","contents","campaigns","total","items","getCDeskSelectedCalendarEvents","allContents","allCampaigns","selectedDay","selectedCampaignId","event","scheduledForDate","plannedForDate","date","moment","toDate","isSame","startDate","endDate","isBetween","getCDeskContentFormFilteredDistributionLists","distributionLists","query","dlist","toLowerCase","includes","getCDeskContentFormSelectedDistributionLists","allRecipients","recipients","r","dl","contacts","partiallySelected","size","getCDeskContentFormDataFilteredRecipients","recipient","contact","getCDeskCampaignNameValid","getEnvironment","environment","getStage","getWidth","getHeight","getUser","user","getUserId","getSid","getUserFirstName","getUserLastName","getAccessToken","getCapabilities","getRegistrationException","getUserCreated","getRequestRunning","getUserLocale","getLocale","getIsAuthenticated","getCookieOption","getGlobalClusterDefault","isYouTubeReview","hasCapability","cap","getIsEmployee","getDarkMode","isAuthenticated","darkMode","getPrefersDarkMode","getCurrentPath","router","pathname","replace","isShoppingCart","match","isSavedSearchesOverview","isMediaReviewDetail","isDashboard","isSelectedDashboard","isNewsBoard","isSearchPool","getMainModule","split","isContentDeskContentsAndCampaigns","isContentDeskSubmodule","isInfoboard","getSearchFromUrl","getQueryParamsFromUrl","parse","getRedirectParam","redirect","getFallbackRoute","initialRoute","getFirstValidRoute","getApp","app","getLoginMsg","getLoginError","getLoginRunning","getNewsradarId","getAppBarMessage","getAppMessage","getShowUndo","getAppLoading","getTimezone","getBffVersion","getForceReload","getViewVersion","getGenericSuccess","getShowAppMessage","getAppGeneratedFile","getSnackbarMessageInfo","getDevice","device","getBreakpoint","getNewsById","news","getNewsData","getNewsByIds","n","getNewsExport","getExportOptions","getCurrentDocumentUrl","getCurrentDocumentFilename","getCurrentDocumentSize","getCurrentDocumentMimeType","getCurrentDocumentAttachments","getSendingMail","getExportValidatingSpf","getExportValidSpf","getExportSelectedFormat","getExportShowExportDialog","getExportProgress","getCurrentExportProgress","getEstimatedExportDuration","getElapsedExportTime","getExportSettings","getExportSettingsStartDate","getExportSettingsEndDate","getExportSelectedDispatchConfig","getExportSelectedDispatchConfigId","getExportSelectedDispatchConfigFilename","getExportMediaReviewHtmlConfig","getUploadedHeaderLogoFilename","getUploadedAdvertisingBannerFilename","getExportSelectedPdfDispatchConfig","getExportSelectedPdfDispatchConfigId","getExportMediaReviewPdfConfig","getExportSettingsAutomaticTranslationEnabled","getExportSettingsContentLanguage","getExportSettingsTemplateLanguage","getExportSettingsAiSummaryEnabled","getDispatchLog","getDispatchLogData","getDispatchLogLoading","getDispatchLogUi","getCustomTagsData","getViewConfigIndexType","customTags","allEntities","allResults","entities","entityIds","getCustomTags","sort","getCustomtagsToShoppingCartLoading","getCustomTagsAssignCustomTagsToNews","getCustomTagsAssignCustomTagsToNewsSelectedNews","getShowAssignCustomTagsToNewsDialog","getCustomTagById","getCustomTagsUi","getSelectedCustomTag","getShowCustomTagDialog","getLastUsedCustomTagIds","getUploadedCustomTagPhoto","getCustomTagsSortBy","getShowRemoveCustomTagDialog","getShowEmptyCustomTagDialog","getFilteredCustomTagGroupId","getGroupedAssignableCustomTags","getCustomTagsViewType","getCustomTagsTab","getCustomTagsDetailData","getNewsIdsForCustomTag","getLoadingCustomTagIds","getCustomTagGroupsData","getRssCustomTags","getXmlCustomTags","getJsonCustomTags","getRssCustomTagGroup","auto","customTagsCustomTagGroups","customTag","getXmlCustomTagGroup","getJsonCustomTagGroup","getCustomTagGroups","group","cgs","set","groups","rssGroup","xmlGroup","jsonGroup","g","getCustomTagGroupsUi","getCustomTagsShowEditGroupDialog","getCustomTagsShowDeleteGroupDialog","getSelectedCustomTagGroup","getCustomTagGroupSaving","getCustomTagGroupDeleting","getCustomTagGroupsHeaderId","getCustomTagsAssignCustomTagsToGroup","getCustomTagsAssignCustomTagsToGroupSelectedGroup","getGroupById","getCustomTagsAssignCustomTagsToGroupSelectedGroupId","getShowAssignCustomTagsToGroupDialog","getFilteredCustomTags","rssCustomTags","xmlCustomTags","jsonCustomTags","toSet","has","getFilteredCustomTagGroup","getShoppingCart","getShoppingCartData","getShoppingCartMainNewsIds","first","getShoppingCartFlatNewsIds","flatten","getShoppingCartCodesSize","getShoppingCartCodesRaw","getShoppingCartCodes","code","codes","getShoppingCartNewsByCodeId","codeId","getShoppingCartNews","getAllShoppingCartNews","getShoppingCartNewsIds","getShoppingCartNewsCount","getShoppingCartNewsClusterCount","isInShoppingCart","getNewsClusterIdsOfNewsInShoppingCart","getNewsClusterIdsOfCodeInShoppingCart","getNewsClusterIdsOfAllCodesInShoppingCart","getShoppingCartUi","getShoppingCartCustomTag","getShoppingCartIsStructuredExport","Boolean","getShoppingCartUngroupedOnly","getShoppingCartTabIndex","getShowShoppingCartCustomTagDialog","getShowShoppingCartRemoveCustomTagDialog","getShoppingCartPinAllProgress","getShowSnippetsInShoppingCart","getShoppingCartRunning","getShoppingCartSelectedNews","getShoppingCartSelectedNewsIds","a","parseInt","getShoppingCartSelectedNewsObjects","isShoppingCartNewsSelected","newsId","isShoppingCartGroupedNewsListSelected","getShoppingCartCode","isAllExpanded","getShoppingCartSelectedNewsForSorting","getShoppingCartSorting","getShowShoppingCartClusterDialog","getAutoAddShoppingCartNews","getShoppingCartCluster","getShoppingCartClusterNewsIds","getShoppingCartClusterNews","getShoppingCartClusterLoading","getShoppingActiveNewsIdFirst","getShoppingActiveNewsIdSecond","getShoppingHoveredNewsIdFirst","getShoppingHoveredNewsIdSecond","getMediaReviewsSelectedNewsIds","mediaReviews","getMediaReviewsDetail","getMediaReviewsSelectedNews","getMediaReviewsSelectedNewsObjects","getNewsUi","getSelectedQueryType","getSearchBarLabel","getNewsPageShowRemoveNewsDialog","getRemoveNewsPageNewsDeleting","getSelectedNewsToRemove","getNewsRequestIsRunning","getNewsView","isCurrentView","_len","names","_key","getActiveFiltersCollapsed","getLastSeenNewsId","getLastNewsIdClickedOnMorePublications","getSelectedNewsIdForAiAnalysis","getShowNewsList","getSelectedNewsIdToShowInDrawer","getSelectedNewsToShowInDrawer","getNewsToShowInDrawerSelected","getNewsRequestBlocked","getYoutubePlayerActiveNewsId","getTiktokPlayerActiveNewsId","getTranslateRunningRequestForNewsId","getNewsEditNewsData","getSelectedNews","getEditNewsPublications","getEditNewsUploadedFiles","getEditNewsUploadedVideoFile","getNewsEditNewsUi","getEditNewsUploadRunning","getEditNewsUploadVideoRunning","getShowEditNewsDialog","getEditNewsSaving","getEditNewsCreating","getEditNewsLoading","getEditNewsPublicationsLoading","getEditNewsExtractingText","getSummaryOptions","getSelectedShoppingNews","getNewsShoppingNewsData","getNewsShoppingNewsUi","getShowShoppingDialog","getShoppingNewsLoading","isShoppingNewsSuccess","getNewsAggregations","getNewsAggregationsTimelineInterval","getNewsAggregationsAggregationValue","getNewsAggregationsUi","isVisible","start","end","i","getGroupStatus","newsGroups","getNewsGroups","groupSortOrder","getNewsGroupsSortOrder","currentIndex","single","existingGroups","index","channelId","showSpinner","count","reach","photo","interactions","newsList","numberOfVisibleGroups","calculateNumberOfVisibleGroups","Math","min","setIn","getNewsFilters","getSelectedChannels","getSelectedCountries","getSelectedCustomTagGroups","getSelectedCustomTags","getSelectedDistributionAreas","getSelectedFilterGroups","getSelectedIdentitySets","getSelectedLanguages","getSelectedMediaReviewCodes","getSelectedMediaReviewTypes","getSelectedMediaTypes","getSelectedNewsguardOrientations","getSelectedNewsguardRanks","getSelectedOutlinkDomains","getSelectedOutlinkUrls","getSelectedCDCampaigns","getSelectedInterfaces","getSelectedSuppliers","getNewsFiltersAnalysis","getNewsFiltersNewsQueries","getNewsFiltersAnalysisSelectedCodeIds","getNewsFiltersAnalysisSelectedCodeIdsForExport","statementCodes","getNewsFiltersAnalysisRestrictedCodeIds","getNewsFiltersAnalysisExcludedCodeIds","getNewsFiltersAnalysisGroupedCodeIds","getNewsFiltersAnalysisGroupedCodeIdsForExport","getNewsFiltersAnalysisArticleLevel","getNewsFiltersAnalysisUseMediaReviewCodes","getNewsFiltersAnalysisStatementTonalities","getNewsFiltersAnalysisStatementTonalityValues","tonalities","newsTonalities","t","getSelectedTonalities","getSelectedBooleans","getSelectedGeoBoundingBox","getActiveSelectedBooleans","booleans","delete","getActiveGeoFilter","topLeftLat","topLeftLon","bottomRightLat","bottomRightLon","getGlobalClusters","getSelectedDateFrom","getSelectedDateTo","getSelectedDateRange","getSelectedDateType","getSelectedDateInterval","getAllowedDateIntervals","getAllDateIntervals","getActiveFilters","similarityFilters","merge","sourceKey","targetKey","isExcludeFilter","f","excludedEntities","el","excludeIds","flat","addQueries","queries","excludedQueries","getSelectedNewsFilters","dateType","FilterNameMapping","identity_id","flatMap","influencer","excludedInfluencers","exclude_identity_id","deletedNewsIds","getDeletedNewsIds","exclude_ids","startOf","format","endOf","date_range","datesToRange","decamelize","geoBoundingBox","geo_bounding_box","top_left","lat","lon","bottom_right","analysisFilters","article_level","use_media_review_codes","similarity","getSelectedPublicationFilters","publication","getSelectedOutlinkFilters","outlink","getSelectedAuthorFilters","getSelectedPageIdentityFilters","getFilterCount","activeFilters","activeBooleanFilters","activeGeoFilter","filterCount","valueSeq","v","hasFilters","getSubscriptions","subscriptions","getSelectedEditionIds","getInfluencersData","getInfluencers","getInfluencersTotal","getInfluencersUi","getInfluencersFrom","getInfluencersSortBy","getInfluencersRunning","getSelectedInfluencerIds","getSelectedInfluencers","p","getInfluencersAddToContactsData","getAddInfluencerToContactsDialogInfluencer","getAddInfluencerToContactsDialogContactData","getInfluencerImportContactsForDistributionLists","getAddToContactsAlreadyImportedContacts","getInfluencersAddToContactsUi","getShowAddInfluencerToContactsDialog","getAddInfluencerToContactsDialogLoading","getInfluencerDistributionListContactDialogOpen","getAddToContactsContactsLoading","getInfluencersDetailsData","getInfluencersDetailsInfluencer","getInfluencersDetailsContacts","getInfluencersDetailsReachChart","getInfluencersDetailsGroupedIdentities","getInfluencersDetailsChannels","getInfluencersDetailsTotalReach","getInfluencersDetailsHasContacts","getInfluencersDetailsUi","getShowInfluencerDetails","getInfluencersDetailsRunning","getInfluencersDetailsSelectedChannelId","getPublicationsData","getPublications","getPublicationsTotal","getNewPublication","getPublicationsUi","getPublicationsFrom","getPublicationsSortBy","getPublicationsRunning","getSelectedPublicationIds","isPublicationFormActive","getSelectedPublications","getMediaReviews","getMediaReviewsData","getMediaReviewIds","d","getMediaReviewById","o","getMediaReviewDetailData","getFullTextById","getMediaReviewGroupedNews","getMediaReviewNews","groupedNews","getMediaReviewNewsUngrouped","listUniqueById","getMediaReviewSorting","news_ids","code_id","getMediaReviewCodes","getMediaReviewCodeIds","getMediaReviewNewsByCodeId","getSelectedMediaReviewNewsIdsForExport","cn","unshift","getMediaReviewTotalNewsCount","getMediaReviewNewsCount","getMediaReviewSummary","getMediaReviewDetailUi","getSelectedMediaReviewNewsItem","getSelectedMediaReviewId","getSelectedMediaReview","getShowRemoveNewsDialog","getMediaReviewDetailRunning","getRemoveMediaReviewNewsDeleting","isExpanded","topicId","getMediaReviewDetialShowDiffWarning","isExpandedMediaReviewNewsByCode","expanded","isSummaryExpandedMediaReviewNewsByCode","isMediaReviewSelectedNewsForSorting","selected","getMediaReviewSelectedNewsForSorting","getMediaReviewCheckMediaReviewReactionsBlocked","getMediaReviewSelectedNews","getMediaReviewSelectedNewsIds","isMediaReviewNewsSelected","isMediaReviewGroupedNewsListSelected","getNewsClusterIdsOfAllCodesInMediaReview","getMediaReviewDetailSnapshot","getMediaReviewsFilter","getMediaReviewsFilterRequestRunning","getAutoAddMediaReviewsNews","getShowMediaReviewsRemoveCustomTagDialog","getShowMediaReviewsCustomTagDialog","getI18n","i18n","translations","getIdentitySetsData","identitySets","getIdentitySets","getSelectedIdentitySet","getIdentitySetsSelectedIdentity","getIdentitySetsUi","getShowAddIdentityToIdentitySetDialog","getShowIdentitySetDialog","getShowDeleteIdentitySetDialog","getIdentitySetsUploadedPhoto","getIdentitySetIsLoading","getIdentitySetSaving","getIdentitySetIsAdded","identitySetId","getPageIdentitiesUi","pageIdentities","getPageIdentitiesSortBy","sortPageIdentity","sortedPageIdentities","pageIdentity","sortedPageIdentitiesSelector","selector","getPageIdentitiesData","pageIdenititiesSelector","inactivePageIdenititiesSelector","getPageIdentities","getInactivePageIdentities","getAllPageIdentities","getPageIdentitiesTotal","getGroupedPageIdentities","allSets","allSetIds","ungroupedPageIdentities","isi","updateIn","sets","s","stats","buzz","avgReach","interactionRate","getPageIdentitiesShowInactive","getPageIdentitiesGrouped","getPageIdentitiesRunning","getSelectedPageIdentityIds","getSelectedPageIdentities","getPageIdentitiesStatisticsSelectedInteractionCharts","getPageIdentitiesStatisticsUi","getPageIdentitiesStatisticsData","getPageIdentitiesStatisticsBuzzChart","getPageIdentitiesStatisticsInteractionRatesChart","getPageIdentitiesStatisticsFollowersChart","getPageIdentitiesStatisticsInteractionsChart","selectedInteractionCharts","label","join","toUpperCase","thirdLevel","getPageIdentitiesStatisticsEmojisChart","getPageIdentitiesStatisticsHashtagsChart","getPageIdentitiesStatisticsMentionsChart","getPageIdentitiesStatisticsTimelineInterval","getPageIdentitiesPostsData","getBestPageIdentityPosts","getWorstPageIdentityPosts","getBestPageIdentityPostIds","getWorstPageIdentityPostIds","createFilterByModuleNameSelector","getIsMediaReviewModule","getStatics","statics","getStaticMediaReviewCodes","getAllStaticMediaReviewCodes","getStaticCountries","getStaticStates","getAllStaticCountries","getStaticLanguages","getAllStaticLanguages","getStaticMediaTypes","getAllStaticMediaTypes","getAllStaticMediaTopics","getStaticDarkowlLanguages","getThemaxCountries","countries","getStaticChannels","channels","allowedChannels","filteredChannels","allowedChannelIds","getAllStaticChannels","getStaticFilterGroups","getStaticDistributionAreas","getStaticMediaReviewTypes","getStaticMediaReviewTypesForSubscription","mrt","getStaticMediaReviewTypesForFiltering","getStaticDispatchConfigs","getStaticPdfDispatchConfigs","getStaticGoogleAnalyticsWebsites","getStaticFacebookAnalyticsPages","getStaticFacebookAnalyticsPageById","getStaticLinkedInAnalyticsOrganizations","getStaticAnalysisCodesMap","getStaticAnalysisCodesNodeIds","keySeq","getStaticAnalysisCodesByIds","getStaticAnalysisCodeById","getStaticTonalities","getStaticCdContentTypes","getStaticSsoLinks","getStaticNewsguardRanks","getStaticNewsguardOrientations","getStaticInterfaces","getStaticSuppliers","getStaticReactionTypes","getStaticTonalitiesByEvaluationSteps","evaluationSteps","statementEvaluationSteps","statementBasedCoding","abs","slice","getStaticExternalAccounts","externalAccounts","groupBy","getStaticMediaReviewTopNewsCodeIds","getStaticMediaReviewTopNewsCodes","getCreatableMediaSources","getAllCreatableChannels","getRestrictedStaticMediaReviewCodes","allowed","getAllowedStaticMediaReviewCodes","getRestrictedStaticChannels","getRestrictedStaticCountries","getStaticPaidFeatureById","getDarknetData","darknet","getDarknetResults","getDarknetCharts","getDarknetStats","getDarknetTotalCount","getDarknetUi","getDarknetRequestRunning","getDarknetSortBy","getDarknetSortDirection","getDarknetView","getDarknetShowAdvancedSearch","getActiveDarknetFiltersCollapsed","getDarknetLoadingMore","getScoreQueryDialogOpen","getSearchQueryDialogOpen","getDarknetSearchFilters","getActiveDarknetFilters","getActiveDarknetNumberFilters","getDarknetScoreQueryFormData","getDarknetScoreQueryForm","getDarknetSearchQueryForm","getDarknetSearchQueryFormData","getDarknetTestSearchQueryRunning","getDarknetTestSearchQueryDisabled","getDarknetSearchQueryFormTestResult","getDashboardsData","dashboard","getDashboards","getDashboardAllowedDateRanges","getDashboardById","getDashboardLimitReached","getDashboardsUI","getDashboardIsEditing","getDashboardAutoRefresh","getDashboardRowHeight","getDashboardMaxRowCount","getDashboardGridHeight","getDashboardShowChartDialog","getDashboardShowMultiChartsDialog","getDashboardShowEditDialog","getDashboardShowDeleteDialog","getDashboardSaving","getDashboardDeleting","getDashboardExecuting","getDashboardChartLimitReached","getDashboardPowerpointExporting","getDashboardImageDownloading","getDashboardPdfDownloading","getSelectedChartUi","getDashboardSelectedChartIndex","getDashboardSelectedChartDateMode","getDashboardSelectedChartStepType","getDashboardSelectedChartAllowedDateIntervals","getDashboardSelectedChartGoogleAnalyticsChart","getDashboardSelectedChartMozChart","getDashboardSelectedChartLinkedInAnalyticsChart","getDashboardSelectedChartFacebookAnalyticsChart","getDashboardSelectedChartTwitterAnalyticsChart","getDashboardSelectedChartUploadedPhoto","getDashboardSelectedChartMultipleSavedSearchesMode","getSelectedChartData","getDashboardSelectedChartFirstLevel","getDashboardSelectedChartThirdLevel","getDashboardSelectedChartGoogleAnalyticsViewId","getDashboardSelectedChartMozTargets","getDashboardSelectedChartLinkedInAnalyticsOrganizationId","getDashboardSelectedChartFacebookAnalyticsPageId","getDashboardSelectedChartImageUrl","getDashboardSelectedChartLabel","getDashboardSelectedChartTopLabel","getDashboardSelectedChartSavedSearchModuleName","getDashboardSelectedChart","aggregations","chart","getDashboardHideSecondLevelsInDialog","isMulti","getDashboardSelectedChartSavedSearchId","getDashboardSelectedChartAdditionalSavedSearchIds","getDashboardSelectedChartAvailableAdditonalSavedSearches","getAllSavedSearches","getDashboardSelectedChartGroupingType","getDashboardSelectedChartSortBy","getDashboardSelectedChartDateType","groupingTypesByModuleName","getDashboardSelectedChartGroupingOptions","getDashboardSelectedChartDateRange","getDashboardSelectedChartDateFrom","getDashboardSelectedChartDateTo","getDashboardSelectedChartDateInterval","getDashboardSelectedChartFacebookAnalyticsPageSelected","getDashboardDateSelected","dateMode","isDateValid","getDashboardPreviewLoadable","gaChart","viewId","mozChart","mozTargets","fbChart","pageId","twChart","liChart","organizationId","isPressrelationsNewsChart","isGoogleAnalyticsChart","isYoutubeAnalyticsChart","isMozChart","isLinkedInAnalyticsChart","isSocialMediaAnalyticsFeed","isFacebookAnalyticsChart","isTwitterAnalyticsChart","isTextChart","isExternalWidgetChart","isURL","trim","getDashboardChartDialogChartValid","uploadedPhoto","isImageChart","hasLabel","getSelectedDashboard","getSelectedDashboardFilled","selectedDashboard","isEditing","fillDashboard","getSelectedDashboardCharts","getSelectedDashboardLayouts","getSelectedDashboardChartsFilled","getSelectedDashboardLayoutsFilled","getSelectedDashboardName","getSelectedDashboardBackgroundColor","getSelectedDashboardBackgroundImageUrl","getSelectedDashboardConfig","getSelectedDashboardCardColor","getSelectedDashboardChartByIndexAndBreakpoint","breakpoint","getSelectedDashboardBreakpoints","layouts","getPreviousDashboard","getEditDashboard","getDashboardDrilldownData","getDashboardDrilldownDataNewsById","getDashboardDrilldownUi","getDashboardSelectedDrilldownChart","getDashboardSelectedDrilldownFilterData","getDashboardSelectedDrilldownSecondFilter","getDashboardSelectedDrilldownTitle","filterData","secondFilter","getDashboardSelectedDrilldownChartSavedSearch","getDashboardSelectedDrilldownSavedSearchId","found","getDashboardShowDrilldownDialog","getDashboardDrilldownLoading","getDashboardDrilldownSearchParams","getDashboardDrilldownDateFrom","getDashboardDrilldownDateTo","getDashboardDrilldownDateRange","getDashboardDrilldownDateType","getDashboardDrilldownGroupingType","getDashboardDrilldownSortBy","getDashboardDrilldownChartSavedSearchModuleName","getDashboardDrilldownGroupingOptions","getDashboardDrilldownSortingOptions","SortingOptions","getDashboardDrilldownChartShowSentiment","getDashboardDrilldownChartShowStatementTonality","getDashboardDrilldownAiAnalysisLoading","getDashboardDrilldownAiAnalysis","getDashboardChartDialogDefaultFormCategories","StepTypes","getSavedDashboard","savedDashboard","getSavedDashboardData","getSavedDashboardUi","getSavedDashboardFooterType","getSavedDashboardShowDialog","getSavedDashboardUrlName","getSavedDashboardBaseUrl","getSavedDashboardTimezone","getSavedDashboardDarkMode","getSavedDashboardAutoScroll","getSavedDashboardHideShareMenu","getSavedDashboardHideFooter","getSavedDashboardLocale","getSavedDashboardId","getSavedDashboardSaving","getSavedDashboardUrlNameAvailable","getSavedDashboardAutoReload","getSavedDashboardHeaderLogoLeftUrl","getSavedDashboardHeaderLogoLeftLink","getSavedDashboardHeaderLogoRightUrl","getSavedDashboardHeaderLogoRightLink","getSavedDashboardHeaderTitle","getSavedDashboardHeaderSubtitle","getSavedDashboardHeaderBackgroundColor","getSavedDashboardFetchRequestRunning","getSavedDashboardDisableCookies","getSavedDashboardIsValid","getSavedDashboardCheckingUrlName","getAi","ai","getAiSettingsLocale","getAiSettings","getAiAnalysis","getAiAnalysisLoading","getAiAnalysisAnalysis","getAiAnalysisShowDialog","getAiUiShowOrderSummariesDialog","getAiUi","getSelectedTopicIds","topicIds","allowedIds","getNewsIdsForExport","isPdfPreview","mediaReviewSelectedNewsIds","shoppingCartSelectedNewsIds","getNewsForAiAnalysis","selectedIds","filterNewsByGroupedSelection","groupedSelection","selectedCodes","getMainNewsIdsOrSortingForExport","mediaReviewSelectedNews","isGroupedShoppingCart","shoppingCartSelectedNews","isUngroupedShoppingCart","getSelectedNewsFromShoppingCart","getExportBody","preview","hasTonality","addAllowedCodeIds","useMediaReviewCodesAsAnalysisCodes","dispatchConfig","dispatchConfigId","mediaReviewHtmlConfig","contactMail","contactName","customGreeting","customText","mediaReviewSummary","mediaReviewName","isCoverPreview","isEndPagePreview","cover_only","end_page_only","attach_summaries","automatic_translation_enabled","ai_summary_enabled","ai_summary","content_language","template_language","show_cover","show_end_page","show_table_of_contents","cover_id","dispatch_config","decamelizeKeysDeep","show_article_text","pdf_cover_title","export_filename","columns","has_tonality","start_date","end_date","media_review_name","media_review_summary","media_review_id","news_limit","allowed_code_ids","selected_analysis_code_ids","grouped_analysis_code_ids","restricted_analysis_code_ids","selected_statement_tonalities","use_media_review_codes_as_analysis_codes","getRssExportBody","headline","text","article_date","url","getNewsForRssExport","getStructuredFormatBody","getXmlExportBody","getJsonExportBody","getMailBody","to","subject","from","scheduledFor","body_url","attachments","mime_type","lastExport","getLastExport","exportConfig","scheduled_for","module_name","export_config","getSearchBody","author","date_type","date_interval","grouping_type","getNewsGroupingType","index_type","page_identity","NewsPageSize","sort_by","getSortBy","sort_direction","getSortDirection","getCDeskSearchBody","contentSearchQueries","campaignSearchQueries","contentIncludes","contentExcludes","campaignIncludes","campaignExcludes","excludes","getCdSearchBody","contactSearchQueries","distributionListSearchQueries","distributionListContactSearchQueries","contactIncludes","distributionListIncludes","distributionListContactsIncludes","nameFilter","topicTagFilter","comparison","getDarknetSearchBody","activeDarknetFilters","activeDarknetNumberFilters","minHackishness","sortDirection","getSearchBodyMaxSize","searchBody","global_clusters","getInfluencersSearchBody","getPublicationsSearchBody","newsguard_rank","x","getPageIdentitiesSearchBody","show_inactive","getPageIdentityPostsSearchBody","getFetchMoreNewsBody","getPagingByGroupId","getViewConfigNewsGroupPagingEntity","getViewConfigNewsGroupPagingField","getFetchClusterStatsBody","clusterId","cluster_id","getConfigUpdateBody","date_filter_setting_id","default_date_type","default_news_page_view","groot_grouping_setting_id","default_sorting_id","colors","default_pdf_dispatch_config_id","show_flags","expand_topics","show_summaries","show_snippets","saved_search_id","initial_route","getSaveSubscriptionsBody","topic_ids","edition_ids","isBackButtonPage","isDarknetQueryManager","isAdministrationSubmodule","isContactManagementSubmodule","matches","removeKeysFromConfig","oldConfigs","configs","deleteAll","chartTypes","sL","tL","getChartConfigs","isSuper","getAllowedChartConfigs","getDashboardSelectedChartSortingOptions","forbiddenQueryPatterns","pattern","allowedCount","isValidSearch","getRequiredFilters","requiredFiltersSet","atLeastOneMust","newsQueries","authorQueries","publicationQueries","defaultChartBodySizeForExport","getChartBodySizeForExport","getChartBody","logo","getLogo","autoLabel","newSize","ChartTypes","defaultChartBodySize","getChartBodySize","generateChartLabel","topLabel","generateChartTopLabel","chartOpts","defaultBody","data_source","ChartDataSources","bucket","metric","group_by","date_from","date_to","ai_enabled","chart_opts","top_label","additional_saved_search_ids","search_params","data_source_opts","secondLevel","getDarknetQueries","getShowCookieDialog","isExternalChart","isSavedChart","getSelectedCodeFilters","types","selectedTypeIds","codeFilters","popularFirstLevels","specialConfigs","emptyList","emptyMap","filterByModuleNameAndDataSource","dataSource","getLabel","getChartDialogNumberFirstLevels","item","getChartDialogOtherFirstLevels","filterNot","getChartDialogPopularFirstLevels","getChartDialogTimelineFirstLevels","getChartDialogSavedSearchesTimelineFirstLevels","getChartDialogNewsFeedFirstLevels","getChartDialogTopInfluencersFirstLevels","getChartDialogTopPublicationsFirstLevels","getChartDialogPageIdentitiesTimelineFirstLevels","getChartDialogPageIdentitiesFirstLevels","getChartDialogImageFeedFirstLevels","getChartDialogChartTypes","getChartDialogSecondLevels","getChartDialogThirdLevels","getChartsData","getChartsPrevious","getRawCharts","getChartsCharts","getChartsLayouts","getChartsPreviousCharts","getChartsPreviousLayouts","getChartsUi","getChartsIsEditing","getChartsIsRunning","getChartsSelectedChart","getChartsSelectedChartIndex","getChartsSelectedChartStepType","getChartsShowChartDialog","getChartsBreakpoints","getChartsAiChartAnalysis","getChartsAiChartAnalysisShowDialog","getChartsAiChartAnalysisLoading","getChartsAiChartAnalysisChart","getChartsAiChartAnalysisAnalysis","getStaticChartsLayouts","getStaticChartsCharts","getStaticChartsRawCharts","getNewsAnalysis","getNewsAnalysisData","mapToCode","subcodes","getGroupedAnalysisCodes","analysisGroups","mediaReviewGroups","nodes","getNewsAnalysisUi","getNewsAnalysisExpandedNodesByType","getNewsAnalysisExpandedNodes","getNewsAnalysisExpandedPanelsByType","getNewsAnalysisExpandedPanels","getNewsAnalysisShowPushChartToDashboardDialog","getNewsAnalysisChartPushRunning","getNewsAnalysisChart","codeIds","getNewsAnalysisMetrics","getFilterTimeline","getShowFilterTimeline","getRawNewsGroups","getNewsGroupIds","getNewsGroupNewsIds","getTotalNewsCount","getUnclusteredNewsCount","getSelectedNewsIds","getMailingLists","mailingLists","getMailingListsDialog","getShowRemoveMailingListDialog","getShowMailingListDialog","getSaveMailingListRunning","getSelectedMailingList","getSavedCharts","savedCharts","getSavedSearchesData","savedChart","getSavedChartsChart","getSavedChartsChartData","getSavedChartsUi","getSavedChartsSaving","getSavedChartsShowDialog","getPersonalSettingsUi","personalSettings","getPreviewUrl","getUserImage","getNotificationsUi","notifications","getNotificationsDrawerOpen","getIsReadRequestRunning","getIsFetchRequestRunning","getSelectedIds","getNotifications","getNotificationsData","getNotificationsFilter","getNotificationsLastPage","getETLibraryData","emailTemplatesLibrary","getETLibraryPublicTemplates","getETLibraryPrivateTemplates","getETLibraryTemplateFormData","getETLibraryUi","getETLibraryShowEditorDialog","getETLibraryShowSaveDialog","getETLibraryShowPickerDialog","getETLibraryFetchRequestRunning","getETLibraryFetchAllRequestRunning","getETLibrarySaveRequestRunning","getETLibraryDeleteRequestRunning","getETLibraryShowPublic","getETLibraryReadMode","getETLibraryFilter","getETLibraryTemplates","getUnsplashData","unsplash","getUnsplashFormData","getUnsplashPhotos","getUnsplashUi","getShowUnsplashComponent","getUnsplashRequestRunning","getUnsplashDownloadRequestRunning","getUnsplashSelectedImageId","getIsRandomSearch","getUnsplashFilter","getUnsplashPage","getUnsplashPerPage","getUnsplashOrderBy","getAdministration","administration","getAdministrationData","getAllowedDomains","getAllowedDomainFormData","getAllowedDomainStatus","getAllowedDomainsUi","getAdministrationUi","getAllowedDomainsRequestRunning","getAllowedDomainsQuickSearchQuery","getAllowedDomainsNewAllowedDomain","getAllowedDomainsNewAllowedDomainRegion","getAllowedDomainsNewAllowedSenderDomain","getAllowedDomainsDeleteMode","getAllowedDomainsInfoDialogOpen","getAllowedDomainsStatusDialogOpen","getDefaultAllowedDomainIds","getAllowedDomainsFilters","getAdministrationFilter","getAllowedDomainsPage","getAllowedDomainsLimit","getNewsViewConfig","getNewsWidgetConfig","getAllowedNewsViews","getAllowedKeyFigures","getAllowedDateTypes","getAllowedFilterFields","getViewConfigAppBarTitleKey","getViewConfigCapabilities","isAllowedNewsView","getViewConfigDefaultDateType","getViewConfigNewsGroupHeaderFilterField","getShowAllKeyFiguresInNewsGroupHeader","getViewConfigNewsGroupIconMode","getViewConfigNewsGroupIcon","getViewConfigHasDateRestriction","getViewConfigHasSavedSearchesLimit","getViewConfigExportFormats","getViewConfigNewsGroupPaging","getViewConfigNewsPage","getViewConfigSwitchableConfigs","getLastSeenNewsIdCookieName","getViewConfigUseAggregationValue","getSavedSearchesByModule","getSavedSearches","getSavedSearchesUi","getSavedSearchesLoading","getSavedSearchDispatchesLoading","getSavedSearchResolving","getSavedSearchViewType","getSavedSearchesTab","getSavedSearchesDialogs","getSelectedSavedSearch","getExecutedSavedSearch","getSavedSearchesDialogsUi","getShowRemoveSavedSearchDialog","getShowAffectedDashboardsDialog","getShowUpdateSavedSearchDialog","getShowEditSavedSearchDialog","getSavedSearchesUploadedPhoto","getShowSavedSearchDispatchesDialog","getAffectedDashboards","getSavedSearchesTimelines","getSavedSearchDispatches","getSavedSearchesFeeds","feeds","feed","getSavedSearchesFeedsTotalCount","getSavedSearchesFeedsData","getSavedSearchesFeedsUi","getSavedSearchesFeedsUiExpandedId","getSavedSearchesFeedsUiSaving","getSavedSearchesFeedsUiDeleting","getSavedSearchesFeedsUiCreating","getThemaxData","themax","getThemaxSavedSearches","getSelectedEditorialPlan","getThemaxUi","getThemaxQueryType","getThemaxSearchBarLabel","getThemaxSearchRequestRunning","getThemaxSearchEditorialPlansRunning","getThemaxSearchPublicationsRunning","getThemaxTabView","getThemaxShowAdvancedSearch","getThemaxShowDateForm","getActiveThemaxFiltersCollapsed","getThemaxSavedSearchesRequestRunning","getThemaxModuleInitialized","getThemaxShowDetailedViewDialog","getThemaxFetchMoreRequestRunning","getThemaxBookmarkRequestRunningFor","getThemaxExcelExportRequestRunning","getShowWelcomeDialog","getShowOrderDialog","getShowOrderSuccessDialog","getOrderRequestRunning","getThemaxFilters","getActiveThemaxFilters","getActiveThemaxNumberFilters","reachMin","reachMax","pageAveMin","pageAveMax","getActiveSelectedThemaxBooleans","booleanFilters","getThemaxSelectedDate","getThemaxEditorialPlansSortBy","getThemaxEditorialPlansSortOrder","getThemaxPublicationsSortBy","getThemaxPublicationsSortOrder","queryFilters","tp","exclude_queries","getThemaxEditorialPlansFilter","bookmarked","editorial_deadline_range","editorial_deadline_from","editorial_deadline_to","getThemaxPublicationsFilter","media_type_ids","mt","exclude_media_type_ids","media_topic_ids","exclude_media_topic_ids","country_ids","exclude_country_ids","page_ave_min","page_ave_max","reach_min","reach_max","protocol","host","getWhiteLabelConfig","whitelabel","getWhitelabelColors","getEmailLogo","getWhitelabelFavicon","getWhitelabelTitle","getWhitelabelEmotionals","getHasMyNews","getLoginTypes","getAzureSsoConfig","getBaseUrl","getWhitelabelLoginLinks","getWhitelabelLegalNoticeLink","getWhitelabelPrivacyLink","getWhitelabelTermsAndConditionsLink","getWhitelabelHomepageName","getWhitelabelHomepageLink","getWhitelabelProgressLetters","getWhitelabelTheme","isPlotlights","aiEntities","customTagGroups","emojis","entitiesPerson","entitiesOrganization","entitiesTopic","entitiesProduct","entitiesLocation","groupedStatementCodes","hashtags","identities","languages","mediaReviewCodes","mediaReviewTypes","mediaTopics","mentions","newsStatementTonalities","sentiments","outlinks","domains","interfaces","suppliers","restrictedCodes","excludedCodes","groupedCodes","statementTonalities","ccdContents","ccdCampaigns","distributionAreas","filterGroups","mediaTypes","newsguardRanks","newsguardOrientations","newsguardScoreRanges","states","outlinkDomains","outlinkUrls","NEWS","BACKWARDS_NEWS","INFLUENCERS","PUBLICATIONS","CHARTS","PIN_BOARDS","STATISTICS","PROFILES","POSTS","SAVED_SEARCHES","STATIC_CHARTS","ANALYSIS_QUERIES","ANALYSIS","PROFILE_MONITORING","NEWS_POOL","CustomTagsNewsTypes","NewsPageViewTypes","LISTVIEW","CARDVIEW","InitialRoutes","DASHBOARD","NEWSBOARD","SEARCH_POOL","MEDIA_MONITORING","MEDIA_REVIEWS","CONTENT_DESK","CONTACT_DATABASE_MODULE","ANEWSTIP","THEMAX","ARTICLE","MEDIA_REVIEW","KeyFigures","BUZZ","INTERACTIONS","REACH","CHANNEL_KEY_FIGURES","TOP_NEGATIVE_SENTIMENT","TOP_POSITIVE_SENTIMENT","DEFAULT","AI_ENTITIES","AUTHOR_QUERIES","BOOLEANS","CHANNELS","COUNTRIES","CUSTOM_TAGS","CUSTOM_TAG_GROUPS","DISTRIBUTION_AREAS","DOMAINS","OUTLINKS","OUTLINK_DOMAINS","OUTLINK_URLS","EMOJIS","ENTITIES","ENTITIES_PERSON","ENTITIES_ORGANIZATION","ENTITIES_TOPIC","ENTITIES_PRODUCT","ENTITIES_LOCATION","EXCLUDE_RETWEETS","EXCLUDE_VISITOR_POSTS","EXCLUDE_COMMENTS","FILTER_GROUPS","GEO_BOUNDING_BOX","GLOBAL_CLUSTERS","HASHTAGS","MENTIONS","IDENTITIES","IDENTITY_SETS","INTERFACES","SUPPLIERS","LANGUAGES","MEDIA_REVIEW_CODES","MEDIA_REVIEW_TYPES","MEDIA_TOPICS","MEDIA_TYPES","NEWS_QUERIES","PAGE_IDENTITIES","PUBLICATION_QUERIES","SENTIMENTS","SIMILARITY_CCD_CONTENTS","SIMILARITY_CCD_CAMPAIGNS","SUMMARIZED_ONLY","TONALITIES","STATEMENT_CODES","GROUPED_STATEMENT_CODES","NEWS_STATEMENT_TONALITIES","NEWSGUARD_RANKS","NEWSGUARD_ORIENTATIONS","WITH_OUTLINKS_ONLY","WITHOUT_OUTLINKS_ONLY","STATES","DarknetSearchFields","DARKNET_SEARCH_QUERIES","MIN_HACKISHNESS","NETWORKS","CHANNEL","MEDIA_REVIEW_CODE","CUSTOM_TAG","PAGE_IDENTITY","UNGROUPED","UNGROUPED_PAGE_IDENTITY","NEWSGUARD_RANK","HAS_28_DAYS_EXPIRY","HAS_ADMINISTRATION_MODULE","HAS_ADVERTISING_BANNER_FEATURE","HAS_ANALYSIS_INFLUENCER_DETAILS_FEATURE","HAS_ANALYSIS_INFLUENCERS_MODULE","HAS_ANALYSIS_MODULE","HAS_ANALYSIS_PUBLICATIONS_MODULE","HAS_ANALYSIS_SAVED_SEARCHES_EDITING_FEATURE","HAS_ANALYSIS_SAVED_SEARCHES","HAS_ANALYSIS_SAVED_SEARCHES_FEEDS","HAS_CONTACTS_MANAGEMENT_ANEWSTIP_API_KEY_EDITING_FEATURE","HAS_CONTACTS_MANAGEMENT_ANEWSTIP","HAS_AUTOMATIC_SEARCH_RESULT_TRANSLATIONS","HAS_CHARTS_MODULE","HAS_CUSTOM_TAG_ASSISTANT","HAS_CUSTOM_TAG_RSS_EXPORT","HAS_CUSTOM_TAGS","HAS_CUSTOM_TAGS_MODULE","HAS_CUSTOM_TAG_XML_EXPORT","HAS_CUSTOM_TAG_JSON_EXPORT","HAS_DASHBOARD_EDITING_FEATURE","HAS_DASHBOARD_MODULE","HAS_DASHBOARD_PUBLISHING_FEATURE","HAS_DELETE_NEWS_FEATURE","HAS_EDITING_DUMMY_MODULE","HAS_EDITING_FEATURE","HAS_EDITING_FULLTEXT_FEATURE","HAS_EXTERNAL_ACCOUNT_SETTINGS","HAS_EXTERNAL_ANALYTICS","HAS_GLOBAL_SETTINGS","HAS_INFLUENCER_DETAILS_FEATURE","HAS_INFLUENCERS_MODULE","HAS_MAILING_LISTS","HAS_MEDIA_REVIEW_DISPATCH_FEATURE","HAS_MEDIA_REVIEW_EDITING_FEATURE","HAS_MEDIA_REVIEW_MODULE","HAS_NEWS_MODULE","HAS_NEWS_POOL_DELETE_NEWS_FEATURE","HAS_NEWS_POOL_EDITING_FEATURE","HAS_NEWS_POOL_EXPORT","HAS_NEWS_POOL_INFLUENCER_DETAILS_FEATURE","HAS_NEWS_POOL_INFLUENCERS_MODULE","HAS_NEWS_POOL_MODULE","HAS_NEWS_POOL_PUBLICATIONS_MODULE","HAS_NEWS_POOL_SAVED_SEARCHES_EDITING_FEATURE","HAS_NEWS_POOL_SAVED_SEARCHES","HAS_NEWS_POOL_SAVED_SEARCHES_SMS_ALERTING_FEATURE","HAS_NEWS_POOL_SAVED_SEARCHES_FEEDS","HAS_NEWS_SAVED_SEARCHES_EDITING_FEATURE","HAS_NEWS_SAVED_SEARCHES","HAS_NEWS_SAVED_SEARCHES_FEEDS","HAS_MOZ","HAS_PROFILE_MONITORING_MODULE","HAS_PROFILE_MONITORING_SAVED_SEARCHES_EDITING_FEATURE","HAS_PROFILE_MONITORING_SAVED_SEARCHES","HAS_PROFILE_MONITORING_SAVED_SEARCHES_FEEDS","HAS_PUBLICATIONS_MODULE","HAS_RTV_ORDER_FEATURE","HAS_SHOPPING_CART","HAS_SUBSCRIPTIONS_MODULE","HAS_US_TUTORIALS","HAS_XML_EXPORT","HAS_JSON_EXPORT","HAS_NEWSGUARD","HAS_DARKNET_MODULE","HAS_DARKNET_DASHBOARD","HAS_DARKNET_QUERY_MANAGER","HAS_EXTERNAL_CONVENTO_LINK","HAS_DISABLED_USER_SETTINGS","HAS_CONTENT_DESK_MODULE","HAS_CONTENT_DESK_LINKED_IN","HAS_CONTENT_DESK_FACEBOOK","HAS_CONTENT_DESK_OTS_PR","HAS_CONTACTS_MANAGEMENT_MODULE","HAS_SAVED_CHARTS","HAS_TRANSLATION_FEATURE","HAS_DISPATCH_LOG","HAS_CONTENT_DESK_PUBLIC_TEMPLATES_READ_RIGHTS","HAS_CONTENT_DESK_PUBLIC_TEMPLATES_WRITE_RIGHTS","HAS_CONTENT_DESK_ALLOWED_DOMAINS_SETTINGS","HAS_AI_SUMMARY_FEATURE","HAS_THE_MAX_MODULE","HAS_THE_MAX_PAID_VERSION","AlertTypes","NONE","INSTANTLY","HOURLY","DAILY","DAILY_THRESHOLD","CustomTagAfterExportActions","PURGE","SUBSTITUTE","NewsPageMoreNewsSize","ChartGridRowHeight","ChartLimits","KPI","TIMELINE","SAVED_SEARCHES_TIMELINE","NEWS_FEED","TOP_INFLUENCERS","TOP_PUBLICATIONS","PAGE_IDENTITIES_TIMELINE","IMAGE_FEED","PRESSRELATIONS_NEWS","GOOGLE_ANALYTICS","MOZ","YOUTUBE_ANALYTICS","LINKED_IN_ANALYTICS","FACEBOOK_ANALYTICS","TWITTER_ANALYTICS","IMAGE","TEXT","EXTERNAL_WIDGET","AREA","BAR","BUBBLE","FUNNEL","GAUGE","HEATMAP","HORIZONTAL_BAR","INFLUENCER_FEED","LINE","NEWS_TICKER","PAGE_IDENTITY_FEED","PIE","PUBLICATION_FEED","RADAR","RADIAL_BAR","RECTANGLE","SOCIAL_MEDIA_ANALYTICS_FEED","SOCIAL_MEDIA_ANALYTICS_STORIES_FEED","STATE_MAP","TAG_CLOUD","TREEMAP","WORLD_MAP","CookieNames","NEWSRADAR","INITIAL_ROUTE","SESSION","ACCESS_TOKEN","COOKIES_ACCEPTED","DateModes","DATE_RANGE","DATE","RELATIVE","Networks","forDarkowlSearchQuery","Intervals","hourly","twice_a_day","daily","twice_a_week","weekly","monthly","DateRanges","StructuredExportFormatFlags","ContentDeskSearchFields","CONTENT_PLAIN_TEXT","CONTENT_TITLE","CAMPAIGN_NAME","ContactManagementSearchFields","CONTACT_NAME","CONTACT_TAG","DISTRIBUTION_LIST_NAME","DISTRIBUTION_LIST_CONTACTS","ThemaxSearchFields","TOPIC_PLAN","PUBLICATION_NAME","PUBLICATION_INFO","REACH_MIN","REACH_MAX","PAGE_AVE_MIN","PAGE_AVE_MAX","BOOKMARKED_ONLY","PUBLICATION","LicensersWithDisabledArticleDateEditing","LicensersWithDisabledMediaReviewDateEditing","Countries","AUT","CHE","DEU","IRL","USA","CdEditorMoods","CurrentTypeformSurveyId","MediaReviewFilterSizes","UploadedMediaFilesSizeLimit","UploadedMediaSingleFileSizeLimit","LanguageOptions","languageId","languageShort","countryCode","localeMapping","ThemaxReachFilterOptions","max","marks","scaledValue","ThemaxPageAveFilterOptions","ExcelMimeType","OtsStatuses","DRAFT","REVIEW","DECLINED","APPROVED","DISTRIBUTED","UnlayerEmailEditor","version","defaultProjectId","customProjectId","defaultScriptUrl","customScriptUrl","buildMetrics","metrics","instagram","firstLevel","kpis","findFirstChart","findValueByChart","equals","facebookPost","accessToken","message","mediaAttachments","link","linkMetadata","GOOGLE_ANALYTICS_LOGO","YOUTUBE_ANALYTICS_LOGO","LINKEDIN_ANALYTICS_LOGO","FACEBOOK_ANALYTICS_LOGO","TWITTER_ANALYTICS_LOGO","MOZ_LOGO","MOZ_LOGO_WHITE","IMAGE_PLACEHOLDER","PLAY_IMAGE","TIKTOK_DUMMY_IMAGE","MAILING_LIST_IMAGE","WORLD_MAP_COLOR","WORLD_MAP_BW","NRX_LOGO_TRANSPARENT","NRX_LOGO_COLOR","linkedInPost","commentary","visibility","lifecycleState","isReshareDisabledByAuthor","distribution","feedDistribution","targetEntities","linkedInRequiredPermissions","theme","nrx","nrxTheme","plotlights","plotlightsTheme","icons","LocalLibraryIcon","profiles","identityTypes","print","internet","tv","radio","blog","facebook","twitter","youtube","forum","dailymotion","foursquare","mixcloud","soundcloud","vimeo","weibo","flickr","linkedin","review","ok","vkontakte","telegram","moikrug","podcast","tiktok","reddit","newsletter","readerComments","littleredbook","wechat","zhihu","douyin","xing","threads","mastodon","bluesky","domain","otsBody","title","timelines","firstLevels","thirdLevels","allowedThirdLevels","operatingSystem","deviceType","insightTrafficSourceType","getThirdLevelsByFirstLevel","getThirdLevelByFirstLevel","levels","getTypeByFirstLevel","saveCookie","expires","allowSavingWithoutPermission","Cookies","path","add","deleteCookie","readCookie","deleteSessionCookie","nid","bffVersion","viewVersion","activeNewsradarId","appIsReady","loginMsg","loginError","snackbarText","showNavigation","loginRunning","appBarMessage","appMessage","success","appSnackbarMessage","show","variant","preventDuplicate","generatedFile","combineActions","Actions","msg","_ref2","_ref3","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","_ref13","isValidFilename","input","minimalLength","validChars","labelKey","light","primary","accent","highlighting","highlightingBackground","color01","color02","color03","color04","color05","color06","color07","color08","color09","color10","dark","updateConfigRequestStarted","dateFilterSettingId","defaultNewsPageView","grootGroupingSettingId","defaultSortingId","exportFilename","pdfCoverTitle","pdfCovers","separateCoding","currency","currencyRate","senderMail","exportLimit","xlsxExportLimit","backwardsNewsHtmlExportLimit","backwardsNewsXlsxExportLimit","savedSearchFeedLimit","googleAnalyticsClientId","googleAnalyticsEnabled","youtubeAnalyticsEnabled","facebookAnalyticsClientId","facebookAnalyticsEnabled","facebookAccountConnected","linkedInClientId","linkedInAnalyticsEnabled","linkedInPermissions","deeplApiKey","apiKeyRequestRunning","orderRequestRunning","firstConfigLoaded","startedWithDeepLink","startedWithDeepLinkSet","userConfig","newsSavedSearchId","profileMonitoringSavedSearchId","newsPoolSavedSearchId","dashboardId","themes","selectedTheme","newsPoolConfig","savedSearchCount","timeLimit","timeUnit","newsConfig","allowedCountryIds","allowedCodeIds","dashboardConfig","savedDashboardsCount","savedChartsCount","showFlags","showSummaries","showSnippets","darkowlSearchQueries","darkowlScoreQueries","contentDeskConfig","senderEmail","domainRegion","ccdPlan","ccdPlanUsage","ccdAllowedDomains","showDefaultDomains","showSurvey","paidFeatures","newConfig","status","processAllowedDomains","filteredCcdAllowedDomains","sendingVerified","defaultDomains","getDefaultDomains","defaultDomain","mergeIn","action","oldId","_ref14","_ref15","UserActions","_ref16","SavedDashboardActions","SavedChartsActions","_ref17","newState","DarknetActions","_ref18","ApiKeysActions","createNewCustomTag","description","newsCount","percolationEnabled","customTagGroupIds","selectedCustomTag","lastUsedCustomTagIds","afterStructuredFormatExportAction","groupedAssignableCustomTags","filteredGroupId","loadingCustomTagIds","viewType","customTagsTab","ShoppingCartActions","MediaReviewsActions","l","remove","_ref19","_ref20","_ref21","_ref22","sortCustomTags","sortPath","newResult","reverse","CustomTagActions","normalizeIt","withNewsCount","newTag","String","createdAt","Date","removedCount","newCustomTag","_id","pinnedCount","combineReducers","selectedNewsId","selectedGroupId","createNewGroup","saving","selectedGroup","headerId","v4","foundIndex","findIndex","_customTagId","cc","customTagIds","customTagsCustomTagGroup","nct","ui","detail","assignCustomTagsToNews","assignCustomTagsToGroup","calculateRowHeight","screen","rowHeight","dashboardMargin","maxRowCount","floor","gridHeight","executing","chartLimitReached","powerpointExporting","imageDownloading","pdfDownloading","autoRefresh","EnvironmentActions","dashboards","allowedDateRanges","savedSearchIds","parseSavedSearchIds","updateFlagsInNewsFeedData","sortCharts","chartError","realIndex","newLayouts","layout","y","w","h","newChart","newNews","posts","deleteIn","dateRange","dateInterval","kpi","uploadedBackgroundImage","aiAnalysisLoading","searchParams","getFilterKV","filterName","isSecondFilter","fieldName","isAiEntityKey","newsFilterName","publicationFilterName","outlinkFilterName","buildSearchParams","sF","isTimeline","range","updateFlagsInGroup","aiAnalysis","newGroups","updateNewsInAllGroups","updateNewsInGroup","createNewChart","googleAnalyticsChartConfig","mozChartConfig","youtubeAnalyticsChartConfig","linkedInAnalyticsChartConfig","facebookAnalyticsChartConfig","twitterAnalyticsChartConfig","imageUrl","view","ga","viewName","targets","organization","organizationName","fba","pageName","savedSearch","currentModule","newModule","newProps","additionalSavedSearchIds","updateInterval","mergeDeep","_ref23","_ref24","allowedDateIntervals","defaultAllowedDateIntervals","calculateIntervals","filterIntervalsForGoogleAnalytics","intervals","stepType","allowedGoogleAnalyticsIntervals","selectedGoogleAnalyticsChart","selectedMozChart","selectedGoogleAnalyticsViewId","selectedGoogleAnalyticsSegmentId","selectedLinkedInAnalyticsChart","selectedFacebookAnalyticsChart","selectedTwitterAnalyticsChart","multipleSavedSearchesMode","updateIntervals","rangeToDates","findGoogleAnalyticsValueByChart","findMozValueByChart","findLinkedInValueByChart","findFacebookValueByChart","findTwitterValueByChart","aggs","edit","previous","selectedChart","mobile","tablet","phone","userAgent","navigator","ie","detect","MobileDetect","ios","os","xs","sm","md","lg","xl","landscape","stage","environmentIsLoaded","whitelabelRequestSuccess","getTranslationsByLocale","language","element","englishTranslations","englishTranslationsPlotlights","translationsPlotlights","buildI18n","loc","newTranslations","english","replacements","forceEnglish","translation","replaceAll","WhitelabelActions","loadingIdentitySetIds","savingIdentitySet","identitySet","is","identitySetsIdentities","identitySetIds","identity","selectedIdentity","selectedIdentitySet","running","mapInfluencers","old","selectedChannelId","groupedIdentities","links","emails","phones","faxes","xings","linkedins","networks","totalReach","reachChart","forcedTheme","innerRadius","showPercent","chartData","contactsLoading","distributionListCreateDialogOpen","mail","contactData","selectedEmail","importContactsForDistributionLists","alreadyImportedContacts","details","addToContacts","addMailingListsToState","withMutations","ctx","mailingList","mailingListId","removeActive","active","selectedMailingList","dialogs","calculateStats","m","codeStats","channel","channelStats","mediaReview","checkMediaReviewReactionsBlocked","selectedMediaReviewNewsItem","selectedMediaReviewId","deletingNews","collapsedTopics","expandedNews","expandedSummaries","selectedNewsForSorting","autoAddMediaReviewsNews","union","isReplace","keyPress","deselect","ctrlKey","metaKey","reorderSingleDrag","draggableIds","_selectedDraggableIds","sourceIndex","destinationIndex","list","startIndex","endIndex","listMove","reorder","multiDragAwareReorder","args","selectedDraggableIds","orderedSelectedDraggableIds","b","indexOfA","indexOfB","splice","reorderMultiDrag","summary","summaryContainers","totalCount","loadedFullTexts","reactions","moveCode","oldIndex","newIndex","removeEmptyCodes","selectedNews","sn","gn","moveNews","oldIndexes","groupIndex","gN","newsCodeIds","stateCodeIds","removeUserReactionFromNewsAndCode","reaction","addUserReactionToNewsAndCode","reactionTypeId","reactionType","cleanUpReactions","codeNewsIdPairs","omitIntersection","newPairs","intersection","intersect","_state","snapshot","camelcaseKeysDeep","filterRequestRunning","aggregationValue","authorBirthDateRanges","authorCities","authorCountries","authorSexes","ave","circulation","sentiment","timeline","tonality","visits","chartPushRunning","expandedNodes","restricted","excluded","grouped","expandedPanels","current","panels","oldNodes","groupedAnalysisCodes","groupedMediaReviewCodes","isExpandable","countDots","getCodesByMatcher","matcher","expandableCodes","getNodeIdsByMatcher","findNodes","hasParent","addSubcodes","parentCode","childCode","ancestors","findAncestors","collector","sortcodes","prev","selectable","decendantIds","ancestorIds","expandableNodeIds","selectableIds","groupCodesByType","searchProfileId","filterUselessCodes","nodeIds","inherited","ConfigActions","analysisCodes","showFullNumbers","enrichedNewsModules","newsOnly","profileMonitoringOnly","noProfileMonitoring","analysisOnly","defaultThirdLevels","moduleNames","defaultSecondLevels","defaultBarChartSecondLevels","timelineSecondLevels","defaultBarChartSecondLevelsNoTonality","defaultChartConfig","secondLevels","defaultBarChartConfig","defaultChartConfigNoTonality","defaultBarChartConfigNoTonality","defaultBucketConfig","defaultGaBucketConfig","defaultYoutubeAnalyticsBucketConfig","noDeeperLevels","createDefaultBucketConfig","defaultNumberConfig","isNumber","rectangle","createDefaultNumberConfig","defaultTonalityConfig","gauge","createDefaultTonalityConfig","countriesConfig","statesConfig","karma","views","uniqueUsers","mozDomainAuthority","mozPageAuthority","mozSpamScore","ownerBuzz","audienceBuzz","newsguardScore","mentionsCount","statementTonality","savedSearchesTimeline","isSavedSearchesTimeline","authorBirthdateRanges","newsFeed","isNewsFeed","topInfluencers","isTopInfluencers","topPublications","isTopPublications","pageIdentitiesTimeline","isPageIdentitiesTimeline","isPageIdentities","imageFeed","isImageFeed","youtubeAnalyticsVideos","allowedChartConfigs","updateOpt","isRunning","selectedChartIndex","selectedChartStepType","addAiEntities","addCustomKpis","customKpis","numberConfigs","completePreset","updateFieldInCharts","newCharts","recalculateLayout","ChartsActions","references","addNewsToState","targetLang","unreferencedNewsIds","k","collectGarbage","DashboardActions","uploadRunning","uploadVideoRunning","loadingNews","savingNews","creatingNews","loadingPublications","savingNewsIds","extractingText","summaryOptions","generating","wordCount","bulletPointsCount","removeSavingNewsId","defaultSelectedNews","articleDate","mediareviewDate","hours","images","clusterSize","clusteredNews","imageAsIllustration","uploadedFiles","uploadedVideoFile","oldNews","mergedNews","flags","PublicationsActions","files","fileId","coverIsGenerating","coverPreviewUrl","currentDocument","htmlPreviewIsGenerating","htmlPreviewUrl","selectedFormat","sendingMail","showDocumentDownloadDialog","txtPreviewIsGenerating","txtPreviewUrl","xmlPreviewIsGenerating","xmlPreviewUrl","jsonPreviewIsGenerating","jsonPreviewUrl","validatingSpf","validSpf","ExportActions","mimeType","attachSummaries","automaticTranslationEnabled","contentLanguage","templateLanguage","coverId","pdfDispatchConfig","showArticleText","showCover","showEndPage","showTableOfContents","aiSummaryEnabled","elements","headerLogo","headerLogoFilename","advertisingBanner","advertisingBannerFilename","htmlDispatchConfigs","htmlDispatchConfig","pdfDispatchConfigs","estimatedDuration","elapsedTime","step","progress","dispatchLog","defaultFilterMapping","defaultFilters","defaultGeoBoundingBox","topLeft","bottomRight","resettableFilters","articleLevel","useMediaReviewCodes","summarizedOnly","globalClusters","realPeopleOnly","excludeVisitorPosts","excludeComments","excludeRetweets","withOutlinksOnly","withoutOutlinksOnly","allDateIntervals","mapAddedItem","inverted","mapSelectedItems","fieldNameOverride","currentFilters","mapSelectedItem","tonalityKeys","specialFilters","mapTonalities","toAdd","mapQueryStringQuery","buildSearchPath","searchPath","globalClusterDefault","FilterActions","newFilters","fields","newDateFrom","newDateTo","interval","newValue","_ref25","hideAxes","hideLabels","minBarHeight","groupData","loadingMore","oldNewsIds","newGroupIds","updatedGroups","insert","groupsIds","updates","newNewsIds","tabIndex","autoAddShoppingCartNews","getCodes","findCodeIndexById","addNewsToNewsState","newNewsState","newElements","clusteredNewsIds","alreadyInState","nns","toOrderedSet","newPayload","codeIndex","nextCodes","oldIds","newIds","oldMainNewsId","newMainNewsId","activeNewsIdFirst","activeNewsIdSecond","hoveredNewsIdFirst","hoveredNewsIdSecond","second","sorting","cluster","shoppingSuccess","sortingOptions","queryTypeMapping","post","profile","queryTypeLabelMapping","newsViewMapping","selectedQueryType","searchBarLabel","showAdvancedSearch","showDateForm","displayRemoveDialog","selectedNewsToRemove","showHelpDialog","newsRequestIsRunning","newsView","previousNewsView","activeFiltersCollapsed","lastSeenNewsId","showNewsList","selectedNewsIdToShowInDrawer","selectedNewsIdForAiAnalysis","newsRequestBlocked","lastNewsIdClickedOnMorePublications","youtubePlayerActiveNewsId","tiktokPlayerActiveNewsId","translateRunningRequestForNewsId","queryType","editNews","exportReducer","filterTimeline","selectedNewsIds","shoppingCart","shoppingNews","staticCharts","viewConfig","showInactive","inactivePageIdentities","IdentitySetActions","defaultChartOpts","searchField","isPageIdentitiesChart","addPercentSign","allowDecimals","renderInteractionsOptions","minSize","defaultCharts","best","worst","statistics","isFormActive","newPublication","mapPublications","sorted","addSorted","dispatches","dispatchesLoading","resolving","initialSearchLoaded","tab","affectedDashboardsActive","updateActive","editActive","dispatchesActive","affectedDashboards","defaultTimezone","TimeZones","selectedSavedSearch","nameDe","nameEn","nameFr","nameRu","nameZh","nameJa","alertConfig","threshold","times","expandedId","creating","defaultValues","darkowlLanguages","dispatchConfigs","mediaSources","ccdContentTypes","ssoLinks","reactionTypes","mapStatics","googleAnalyticsWebsites","googleAnalytics","websites","linkedInAnalyticsOrganizations","linkedInAnalytics","organizations","facebookAnalyticsPages","facebookAnalytics","pages","SavedChartActions","newData","selectedTopicIds","SubscriptionsActions","topics","topTopicIds","topnews","selectableTopicIds","topic","selectedEditionIds","editionIds","deactivated","mediaReviewTypeId","edition","editions","sid","registrationException","statusCode","exceptionCode","guessLocale","cookieOptionReadFromCookie","cookieOption","created","requestRunning","updating","preferSummaries","disableNotificationAlerts","prefersDarkMode","loginTypeId","preferMedia","newUser","caps","response","SurveyActions","emailAddress","imageLinks","emailLogo","favicon","hasMyNews","emotionals","progressLetters","loginTypes","azure","clientId","authority","loginLinks","termsAndConditions","legalNotice","privacy","homepage","bffUrl","bffConfig","baseUrl","autoReload","autoScroll","hideShareMenu","hideFooter","checkingUrlName","urlNameAvailable","fetchRequestRunning","disableCookies","searchProfileGroupId","headerLogoLeftUrl","headerLogoLeftLink","headerLogoRightUrl","headerLogoRightLink","headerTitle","headerSubtitle","headerBackgroundColor","uploadedHeaderLogoLeft","uploadedHeaderLogoRight","_data","available","setLoading","searchQuery","scoreQueryDialogOpen","searchQueryDialogOpen","editForm","round3","number","round","defaultIterator","pairs","capitalize","docCount","defaultTimelineElement","oneDayRange","keyAsString","defaultRectangleData","formatScoreResultTimelineChartData","score","scoreQueryName","getChartData","chartId","rawData","DarknetCharts","sum","docCountSum","filteredData","sortedData","sortByDocCount","resultData","visibleData","hiddenData","hd","formatLanguagesChartData","formatNetworksChartData","hackishness","formatAvgHackishnessNetworksChartData","formatTotalChartData","formatMentionsTimelineChartData","buckets","formatNetworksTimelineChartData","formatAvgHackishnessChartData","formatAvgHackishnessTimelineChartData","searchQueries","formatSearchQueriesTimelineChartData","darknetChartsConfigs","hits","avgHackishness","scores","chartsFromStats","avgHackishnessTimeline","totalTimeline","avgHackishnessNetworks","demoRequest","scoresWithName","darkowlScoreQuery","chartsFromScores","groupedScores","currentIds","contains","darknetSearchQueries","filterType","oldValue","webDomains","emailDomains","testSearchQueryRunning","testSearchQueryDisabled","testResult","scoreQueryForm","searchQueryForm","previewUrl","content_plain_text","content_title","campaign_name","showNewContentDialog","newContentDialogSocialOnly","showOldEditContentDialog","showEditContentDialog","showViewContentDialog","showBlockedContentEditDialog","showNewCampaignDialog","showScheduleDialog","showOldScheduleDialog","showPlanDialog","showSaveTemplateDialog","showTestMailDialog","showContentNotesDialog","showRecipientsClearAllConfirmDialog","newDialogView","emailEditorLoading","campaignDropdownOptionsLoading","contactDropdownOptionsLoading","distributionListDropdownOptionsLoading","isContentLoading","contentDialogCloneMode","campaignDialogEditMode","deleteData","searchCampaignsRunning","searchContentsRunning","uploadedImageUrl","statisticsLoading","duplicateError","mediaFilesLoading","mediaFileUploading","mediaFilesInitialFetch","editorAiMode","editorAiRequestRunning","socialMediaLinkLoading","socialMediaLinkBuildFailed","downloadEmailEventsLoading","linkedInCompanySearchResults","contentTabView","contentEditTabView","contentsCampaignsTabView","loadingKpiStatistics","showClosedCampaignDialog","attachmentsMediaType","attachmentsDeleteDialogOpen","attachmentsDeleteMediaFileId","attachmentsImagePreviewDialogOpen","attachmentsImagePreviewSrc","recipientBrowserOpen","recipientBrowserQuery","contentIsPublishable","templateConfirmDialogOpen","templatePreviewDialogOpen","templateDesign","emailEditorForceLoadDesign","showOtsWelcomeDialog","showOtsSuccessDialog","showOtsErrorDialog","vanityName","logoUrl","socialOnly","dupError","ccdSearchFieldsMapping","stateKeyName","campaignPage","campaignLimit","campaignSortBy","campaignSortOrder","contentPage","contentLimit","contentSortBy","contentSortOrder","mediaFilesPage","mediaFilesLimit","campaignFilters","operator","conditions","contentFilters","kpiStatisticsFilters","allNames","ccdStatistics","events","ccdKpiStatistics","email","socialMedia","uploadedMediaFiles","uploadedMediaFilesTotal","uploadedMediaFilesTotalSize","ccdAssignees","contentFormData","preHeader","plannedFor","ccdCampaign","editorDesign","senderName","ccdMediaFiles","isDirty","lockedAt","lockedBy","approvalStatus","notes","otsContent","campaignFormData","assignedUserId","selectedContent","campaignDropdownOptions","contentDropdownOptions","contactDropdownOptions","distributionListDropdownOptions","distributionListSearchQuery","aiSelectedText","aiRequestResults","updateNestedContentsCampaigns","contentId","campaignId","updated","ccdContentsCount","oldContent","newContentsTotal","oldContentsTotal","newContents","newCampaigns","newInnerContents","oldInnerContents","newInnerContentsCount","oldCampaign","newCampaignsTotal","oldCampaignsTotal","updateOrAddCampaignName","_ref26","owned","_ref27","mediaFiles","_ref28","_ref29","uniqueFiles","_ref30","ccdMediaFile","updatedMediaFiles","mediaFile","_ref31","_ref32","_ref33","_ref34","article","source","_ref35","image","_ref36","rawUrl","URL","hostname","_ref37","_ref38","_ref39","loadingCampaignIds","loadingContentIds","contentsSorting","order","campaignsSorting","sortItems","thingies","updateEntitiy","calendar","contact_name","contact_tag","distribution_list_name","listSortOrder","tagsSortOrder","contactsPage","distributionListsPage","contactEditDialogOpen","contactDialogOpen","contactDeleteDialogOpen","tagsDialogOpen","tagRenameDialogOpen","tagDeleteDialogOpen","distributionListEditDialogOpen","distributionListViewDialogOpen","distributionListMergeDialogOpen","importHelpDialogOpen","uploadResultDialogOpen","emailExistingDialogOpen","contactsUploadDialogOpen","contactEditDialogMode","contactDialogView","searchRunning","searchContactsRunning","searchDistributionListsRunning","searchDistributionListRunning","autoCreateDistributionList","autoAddToExistingList","isEditMode","cmSearchFieldsMapping","distributionListPage","distributionListLimit","contactPage","contactLimit","showUnsubscribed","tagsPage","tagsLimit","distributionListContactsSearchQueries","contactsTotal","distributionListsTotal","contactFormData","firstName","lastName","jobTitle","dossier","picture","address","fax","externalPublication","country","linkedinUrl","twitterUrl","facebookUrl","threadsUrl","tiktokUrl","instagramUrl","youtubeUrl","otherUrl","selectedContactId","contactsToDelete","tags","distributionListsSearch","listData","selectedLists","lists","newListName","deleteMergedLists","uploadResult","uploaded","failed","total_uploaded","total_failed","newTags","newContacts","newContactTags","mediaTopicIds","languageIds","mediaTypeIds","allContacts","selectedContacts","newSelectedContacts","distLists","newDistList","elemIndex","filteredList","distListTotal","updatedDistributionLists","contactIndex","updatedContacts","updatedContactIndex","updatedContact","isNewList","ContentDeskActions","newContact","mergedList","deletedLists","showEditorDialog","showSaveDialog","showPickerDialog","fetchReleasedRequestRunning","saveRequestRunning","deleteRequestRunning","showPublic","readMode","privateTemplates","hasMore","publicTemplates","templateFormData","shared","released","json","html","currentTemplates","template","templatesList","templates","isDrawerOpen","readRequestRunning","notification","grootNotificationId","seenAt","lastPage","showUnsplashComponent","downloadRequestRunning","selectedImageId","isRandomSearch","CDActions","perPage","orderBy","photos","totalPages","results","total_pages","staticsRequestRunning","hasStatics","isSimpleSearch","searchRequestRunning","importRequestRunning","replaceRequestRunning","combinedSearchRequestRunning","journalistsSearchRequestRunning","outletsSearchRequestRunning","articlesSearchRequestRunning","isInitialSearch","resultsTab","duplicateContactsDialogOpen","drillDownEntity","drillDownTab","showDrillDownDialog","journalistsDrillDownRequestRunning","outletsDrillDownRequestRunning","articlesDrillDownRequestRunning","isNavigationLocked","isLimitedFunctionality","importWithDistributionLists","CmActions","suggest","outletName","mediaType","city","journalists","facetFilters","pagination","pageSize","by","direction","outlets","articles","cursor","paginator","currentPage","facets","previousCursor","importResult","existingContact","replaceContactResult","oldContacts","personId","drillDownEntityId","outletId","contactId","filtersHistory","lastIndex","history","newHistory","imports","drillDownData","drillDownFilters","drillDownHistory","ustEventStarted","ustEventSuccess","ustEventError","ustTagStarted","ustTagSuccess","ustTagError","ustPageEnter","ustPageLeave","ImmutableSet","tag","ccdAllowedDomainFormData","receivingVerified","trackingVerified","region","openTracking","clickTracking","senderDomains","ccdAllowedDomainStatus","sendingRecords","receivingRecords","trackingRecords","quickSearchQuery","newAllowedDomain","newAllowedDomainRegion","newAllowedSenderDomain","deleteMode","infoDialogOpen","statusDialogOpen","defaultAllowedDomainIds","defaultDomainIds","editorialPlans","relatedEditorialPlans","selectedEditorialPlan","currentFavoriteIndex","newFavoriteIndex","editorialPlanId","grootEditorialPlans","grootEditorialPlan","editorialPlan","relatedIndex","themaxSearchFieldsMapping","fromActiveFilterField","bookmarkedOnly","reachFilter","filtered","reachFilterOptions","pageAveFilter","pageAveFilterOptions","topicPlanQueries","selectedDate","editorialPlansPage","relatedEditorialPlansPage","publicationsPage","editorialPlansSorting","publicationsSorting","pageType","pageValue","sortType","topic_plan","publication_name","publication_info","moduleInitialized","searchEditorialPlansRunning","searchPublicationsRunning","fetchMoreRequestRunning","tabView","savedSearchRequestRunning","showDetailedViewDialog","bookmarkRequestRunningFor","excelExportRequestRunning","showWelcomeDialog","showOrderDialog","showOrderSuccessDialog","routerReducer","ust","appReducer","html2canvas","callback","mod","canvas","resolveCanvas","dataUrl","toDataURL","msToBlob","blob","toBlob","downloadCanvas","containerId","firstChild","querySelector","backgroundImageUrl","style","background","backgroundSize","buttons","getElementsByTagName","tooltips","getElementsByClassName","button","tooltip","logging","scale","allowTaint","useCORS","removeProperty","canvasToPdf","jsPDF","pdf","unit","hotfixes","orientation","addImage","save","htmlToPdf","windowWidth","doc","put","prevDuplicate","newsradarSwitch","select","Selectors","CookieHelper","access_token","username","password","secret","newNewsradarId","newsradar_id","newsradars","currentNewsradarId","newBffVersion","newViewVersion","getNewViewVersion","logException","uploadGeneratedFile","downloadBlob","asHtml","innerHTML","measurement","watchSwitchNewsradar","takeEvery","watchSetActiveNewsradar","watchGenericSuccess","watchShowAppMessage","takeLatest","watchShowAppErrorMessage","watchShowAppSuccessMessage","watchShowAppSnackbarMessage","watchGenericError","watchLogout","watchLogin","watchLoginSuccess","watchCheckBffVersion","watchCheckViewVersion","watchException","watchSso","watchDownloadElementAsImage","watchDownloadElementAsPdf","watchClickTrace","appSaga","defaultOptions","retryCount","retryFun","retriable","saga","failSaga","keepUntil","uploadPhoto","download","getCluster","fun","powerpointMimeType","allowedBreakpoints","generateFilename","ext","fetchChartDataTry","fetchChartDataFail","sanitizedCharts","getChartExportBody","exportSize","sheet_name","chartExport","apiFunc","excelExport","powerpointExport","powerpointBatchExport","chartBodies","powerpointBatchExportStart","aiEnabled","secondLevelField","firstLevelField","UiActions","pChart","onChange","afterChange","calculatePressrelationsNewsChart","chartBefore","fetchChartAggregation","fetchAggregations","currentBreakpoint","breakpointsToLoad","preferredEffects","effects","cs","j","loadSelectedChartAggregations","chartAfter","level","isFeedChart","imageResult","aiAnalysisId","serializedChart","JSON","stringify","aiDescription","aiDescriptionLoading","watchUpdateCharts","watchUpdateChartsSuccess","watchExportExcel","watchExportPowerpoint","watchExportPowerpointBatch","watchDownloadImage","watchToggleEditing","watchDrilldown","watchCalculateNewChart","watchFetchAggregations","watchSetAggregationValue","watchShowChartDialog","watchSetChart","watchCheckChartChange","watchSetSelectedChartOpt","debounce","watchAiChartAnalysis","watchAiChartDescription","getAlertConfigBody","sender","days","recipients_sms","webhooks","mailing_list_ids","send_no_results_mail","prompt","use_prompt","show_reach","show_ave","show_visits","show_circulation","show_duration","alertConfigBody","name_de","name_en","name_fr","name_ru","name_zh","name_ja","color","alert_config","saveSavedSearch","successMessage","additionalAffectedDashboards","analysisKeys","analysisKey","fetchSavedSearchesTimelines","NavigationActions","replaceSavedSearch","saveSavedSearchFeed","savedSearchFeed","watchSaveSavedSearch","watchDeleteSavedSearch","watchCheckAffectedDashboards","watchFetchSavedSearchesTimelines","watchFetchSavedSearchDispatches","watchToggleFavorite","watchLoadInitialSearch","watchExecuteSavedSearch","watchReplaceSavedSearch","watchSaveSavedSearchFeed","watchDeleteSavedSearchFeed","startFullscreen","screenfull","_e","warn","stopFullscreen","isFullscreen","fullScreen","reload","filterFieldMapping","drilldownAutoViews","buildDrilldownNewsFeedBody","showLoadingIndicator","isAnalyticsChart","hasExternalAccounts","moduleLink","fetchSelectedDashboardData","newBreakpoint","effect","fetchSavedSearchAggregations","withDelay","saveDashboard","sanitizedData","loadAggregations","favoritedDashboardId","dashboardFavoriteExists","newId","currentPath","loadMoreNewsFeedNews","group_id","fetchNewsFeedClusterStats","overwrites","loadMoreSocialMediaAnalyticsFeedPosts","loadDrilldownNewsFeedNews","loadDrilldownNewsFeedAiAnalysis","metadata","loadMoreDrilldownNewsFeedNews","fetchDrilldownNewsFeedClusterStats","race","take","SavedSearchesActions","groupingAndSortingChange","exportDashboardAsPowerpoint","coverTitle","cover_title","checkManualFullscreen","fullscreen","stop","refresh","newPageId","currentPageId","newPage","findFirstFacebookChart","backgroundColor","getComputedStyle","getPropertyValue","downloadPdf","watchFetchDashboard","watchFetchSavedSearchAggregations","watchCancelEditing","watchSaveDashboard","watchDeleteDashboard","watchSelectSavedSearch","watchLoadDashboard","watchLoadMoreFeedChartItems","watchLoadMoreNewsFeedNews","watchFetchNewsFeedClusterStats","watchShowDrilldownDialog","watchLoadDrilldownNewsFeedNews","watchLoadDrilldownNewsFeedAiAnalysis","watchLoadMoreDrilldownNewsFeedNews","watchFetchDrilldownNewsFeedClusterStats","watchLoadMoreSocialMediaAnalyticsFeedPosts","watchGroupingAndSortingChange","watchExportDashboardAsPowerpoint","watchStartAutoRefresh","watchToggleAutoRefresh","watchDateChanges","watchCloneDashboard","watchAddNewChartShortcut","watchChangeFacebookAnalyticsPage","watchDownloadPdf","reloadChart","metricsToLoad","fetchChartDataSaga","fetchMetricsChartData","analysisChart","pushChartToDashboard","watchSetAnalysisFilter","watchApplyAnalysisFilter","watchFetchChartData","watchFetchMetricsChartsData","watchSetChartFields","watchSetChartOpt","watchToggleUseMediaReviewCodes","watchToggleStatementTonality","watchPushChartToDashboard","api_key","groot_external_api_key_type_id","typeId","watchSubmitApiKey","watchDeleteApiKey","at","user_id","userID","watchAuthenticateGoogleAnalytics","watchRevokeGoogleAnalytics","watchAuthenticateYoutubeAnalytics","watchRevokeYoutubeAnalytics","watchRevokeFacebook","watchRevokeLinkedIn","watchRevokeTwitter","watchAuthenticateFacebook","watchAuthenticateLinkedIn","fetchConfigTry","ccdContactTags","ccdMediaFilesTotalSize","restConfig","verifyTheme","immutableColors","isImmutable","verified","subscriptionsSelectableCodes","notificationsList","hasMoreResults","initialMediareviewDate","resetUser","fetchConfigFail","retryConfigFun","news_saved_search_id","profile_monitoring_saved_search_id","news_pool_saved_search_id","analysis_saved_search_id","dashboard_id","translate_search_results","translate_search_results_target_lang","sender_email","sender_name","domain_region","show_default_domains","AdministrationActions","colorChanges","updateColorInMeta","orderPaidVersion","paid_feature_id","watchConfigStart","watchConfigUpdateStart","watchUpdateUserConfigStart","watchRefreshContentDeskPlanUsageAndLimits","watchFetchCDeskConfigRequestStart","watchUpdateCDeskConfig","watchColorChanges","watchOrderPaidVersion","configSaga","saveCustomTag","newsToAdd","shoppingCartNewsToAdd","mediaReviewsNewsToAdd","percolation_enabled","news_count","news_type","rss_enabled","xml_enabled","json_enabled","custom_tag_group_ids","deleteIt","newsType","_method","clusterNewsIds","news_id","rlyNewNews","removeCustomTagFromNews","with_inner_hits","moduleNameName","removeCustomTagFromNewsChunked","toBeRemovedIds","chunkCount","ceil","chunks","listChunk","customTagNewsIds","customTagNews","shoppingCartNews","newsToBeRemoved","cN","sN","saveGroup","deleteGroup","scrollIntoView","watchSaveCustomTag","watchDeleteCustomTag","watchEmptyCustomTag","watchAssignCustomTagToNews","watchRemoveCustomTagFromNews","watchAssignCustomTagToGroup","watchRemoveCustomTagFromGroup","watchFetchNewsForCustomTag","watchFilterBySelectedCustomTag","watchFilterBySelectedCustomTagGroup","watchRunCustomTagQueries","watchOpenCustomTagInShoppingCart","watchAfterStructuredFormatExportAction","watchSaveGroup","watchDeleteGroup","watchSetFilteredGroupId","saveMailingList","newMailingList","watchdeleteMailingList","watchSaveMailingList","mailingListSaga","groupingTypesWithNewStats","newCodeIds","newCustomTagIds","oldCodeIds","oldCustomTagIds","currentGroupIds","missingGroupIds","fetchMoreNewsBody","drillDownNews","isDrillDown","videoFile","isTopicalCluster","mediareview_date","code_ids","custom_tag_ids","search_profile_id","snippet","subtitle","summary_headline","image_as_illustration","video_file","clustered_news_ids","mainNews","ccn","updateDefaultNews","page_count","publication_id","media_review","media_review_type_id","channelIds","channel_ids","toISOString","uploadVideoFile","automaticSummary","language_code","target_lang","word_count","bullet_points_count","summaryHeadline","watchAutomaticSummary","watchUpdateNews","watchCreateNews","watchSaveNews","watchSearchPublications","watchUploadFile","watchUploadVideoFile","watchShowEditDialog","watchGetNews","watchUpdateGroups","watchExtractTextFromPdf","newsSaga","noCache","login_links","terms_and_conditions","legal_notice","bff_url","production","defaultCookieOption","watchInitEnvironment","watchWhitelabel","environmentSaga","isPdf","doExport","exportBody","doStructuredFormatExport","shoppingCartCustomTag","custom_tag_id","rssFields","xmlFields","jsonFields","CustomTagsActions","exportBackwardsNewsHtml","exportProgress","duration","calculateDuration","startTime","diff","eSuccess","mSuccess","eError","mError","generatePreview","open","mailBody","uploadHtmlHeaderLogo","uploadHtmlAdvertisingBanner","watchExportStart","watchShowExportDialog","watchSendMail","watchCreateDispatch","watchCancelDispatch","watchUploadHtmlHeaderLogo","watchUploadHtmlAdvertisingBanner","watchValidateSpf","watchChangeExportFormatSelection","watchFetchDispatchLog","exportSaga","fetchFilterTimeline","watchFetchFilterTimeline","pageView","initialized","ReactGA","hitType","href","setGaOption","GA","eventData","trackPage","watchInit","watchEvent","watchPageView","watchSetOption","gaSaga","saveIdentitySet","showSuccess","watchSaveIdentitySet","watchDeleteIdentitySet","watchAddIdentityToIdentitySet","watchRemoveIdentityFromIdentitySet","fetchContacts","searchContacts","createContacts","updateContacts","deleteContacts","fetchDistributionLists","createDistributionList","updateDistributionList","deleteDistributionList","addContactsToDistributionList","removeContactFromList","uploadContacts","downloadContactsExcel","downloadDistributionList","createContactTag","renameContactTag","deleteContactTag","addTagToContact","removeTagFromContact","tagId","searchTags","searchAnewstipJournalists","searchAnewstipOutlets","searchAnewstipArticles","fetchAnewstipStatics","searchAnewstipSuggest","importAnewstipContacts","replaceContact","mergeDistributionLists","fetchInfluencersTry","fetchInfluencersFail","fetchInfluencers","fetchMoreInfluencersTry","fetchMoreInfluencersFail","fetchMoreInfluencers","fetchInfluencerTry","fetchInfluencerFail","targetView","groupType","searchOptions","gr","selectedInfluencerIds","allInfluencer","selectedInfluencer","contact_data","first_name","last_name","exact_filter","ContactsManagementApi","watchFetchInfluencers","watchFetchMoreInfluencers","watchFetchInfluencer","watchSetSortBy","watchSearchForInfluencer","watchSearchForSelectedInfluencers","watchShowDetails","watchSelectChannel","watchAddInfluencerToContacts","watchSearchContactsStart","multiSelect","newsByCodeId","lastSelectedNews","last","indexOfLast","indexOfNew","isSelectingForwards","sortGroupedNews","pathToSortingField","sortLast","checkDiff","savedSnapshot","loadedSnapshot","futureSnapshot","callReorder","decision","accept","fetchNewsForMediaReview","moveCodeInMediaReview","moveNewsInMediaReview","removeNews","newsItem","shiftSelection","newGroupedNews","isPublicationField","mapCodeNewsPairs","allCodeNewsIdPairs","pair","media_review_type_ids","pinAll","newsIncludingClusters","changedCount","chunkNews","reaction_type_id","fetchMediaReviewReactions","checkMediaReviewReactions","watchFetchNewsForMediaReview","watchMoveCode","watchMoveNews","watchRemoveNews","watchRegroupNews","watchUpdateMediaReviewStats","watchCollapseAllTopics","watchExpandAllTopics","watchShowAllSnippets","watchHideAllSnippets","watchShowAllSummaries","watchHideAllSummaries","watchShiftSelectNewsForSorting","watchLoadFullTextStart","watchSortBy","watchSelectNews","watchInvertNewsSelection","watchFilterMediaReviewsStart","watchPinAll","watchUnpinAll","watchReplaceMediaReviewReaction","watchFetchMediaReviewReations","watchCheckMediaReviewReactions","watchReorder","watchCheckDiff","mediaReviewSaga","steps","stepsBack","parts","newPath","route","locationChange","trackLocationChange","watchNavigate","watchBackToLogin","watchBack","watchLocationChange","LOCATION_CHANGE","watchTrackLocationChange","watchRedirectAuthenticated","navigationSaga","fetchNewsTry","maxNewsId","fetchNewsFail","fetchNews","viewConfigCapabilties","influencersViews","influencersAllowed","capNames","capName","InfluencersActions","publicationsViews","publicationsAllowed","profilesViews","profilesAllowed","PageIdentitiesActions","analysisViews","analysisAllowed","AnalysisActions","aggregationsViews","aggregationsAllowed","hasAggregationsCap","isAggregationsView","isProfileMonitoring","isAnalysis","fetchMoreNewsTry","fetchMoreNewsFail","fetchMoreNews","keepFilters","keepDateType","previousConfig","configDefaultDateType","groupNewsIds","bestPostIds","worstPostIds","groupingTypeChanged","moduleNameChanged","fetchClusterStats","task","cancel","startTranslateRequest","watchDeleteNews","watchFetchNews","watchFetchChangeDateInterval","watchFetchMoreNews","watchSelectViewConfigPreset","watchFetchClusterStats","watchStartNewsRequest","watchTranslateRequestStart","fetchPageIdentitiesTry","fetchPageIdentitiesFail","fetchPageIdentities","fetchPageIdentitiesStatistics","firstChartIndex","pageIdentityData","fetchPageIdentityPostsTry","fetchPageIdentityPostsFail","fetchPageIdentityPosts","watchFetchPageIdentities","watchFetchPageIdentitiesStatistics","watchFetchPageIdentityPosts","watchToggleShowInactive","fetchPublicationsTry","fetchPublicationsFail","fetchPublications","fetchMorePublicationsTry","fetchMorePublicationsFail","fetchMorePublications","selectedPublicationIds","allPublication","selectedPublication","watchFetchPublications","watchFetchMorePublications","watchSearchForPublication","watchSearchForSelectedPublications","watchCreatePublication","encodeURI","saveSavedDashboard","url_name","dark_mode","auto_scroll","hide_share_menu","hide_footer","disable_cookies","header_logo_left_url","header_logo_left_link","header_logo_right_url","header_logo_right_link","header_title","header_subtitle","header_background_color","checkUrlName","momentLocale","determineMomentLocale","watchFetchSavedDashboard","watchFetchSavedDashboardInfo","watchShowSavedDashboardDialog","watchSaveSavedDashboard","watchDeleteSavedDashboard","watchCheckUrlName","watchSetSavedDashboardValue","watchStartAutoReload","watchFetchSavedDashboardSuccess","localeFromParams","timezoneFromParams","expires_at","discardSavedChart","watchFetchSavedChart","watchFetchSavedChartSuccess","watchCreateSavedChart","watchDeleteSavedChart","watchUpdateSavedChart","watchDiscardSavedChart","watchGoToAdministration","setItem","localStorage","getItem","buildLocalStorageKey","suffix","recalculate","newsIdsList","minDate","LocalStorage","maxDate","article_date_from","article_date_to","addAllNewsToShoppingCart","use_global_size","fetchClusterForShoppingCart","fetchedNews","navigateBack","mainNewsIds","newCodes","isCountryField","isKeyFiguresField","newsClusters","updatedNews","updatedNewsHasCode","codeHasUpdatedNews","newNewCodes","codesToAdd","showNews","lastCode","addNewsToCode","nn","extractCodesFromNews","ungroupedNews","shoppingCartNewsIds","saveToLocalStorage","setBusy","fetchReorderClusteredNews","newsClusterIds","watchAddAllNewsToShoppingCart","watchResetShoppingCart","watchAddNewsToShoppingCart","watchSortByUngrouped","watchRecalculateGroupedSorting","watchFetchClusterForShoppingCart","watchSaveToLocalStorage","watchLoadFromLocalStorage","watchCheckShoppingCartSize","watchShowClusterDialog","watchFetchReorderClusteredNews","watchReplaceCluster","watchSetCustomTagId","shoppingCartSaga","shoppingOption","acknowledged","watchSubmitShopping","selectedCodeFilters","filteredTopics","watchSaveSubscriptions","throttle","watchUpdateTopicSelection","watchUpdateEditionSelection","watchSelectAllTopics","watchDeselectAllTopics","subscriptionsSaga","isValid","isTooComplex","valid","tooComplex","scrollTo","toggleForm","toggleFilterForm","scrollToTop","watchUiSetSortBy","watchUiSetSortDirection","watchUiEnteredQuery","watchUiRemoveFilter","watchUiInvertFilter","watchUiAddFilters","watchUiReplaceFilters","watchUiApplyDateFilter","watchUiChooseQuickSelect","watchUiApplyFilters","watchUiResetFilters","watchUiResetFilterFields","watchToggleFilterForm","watchUiSetBoolean","watchUiUpdateFilter","watchUiSetAnalysisFilter","watchUiSwapAnalysisCodeSelectionAndGrouping","base_url","oldPassword","newPassword","old_password","new_password","language_id","prefer_summaries","global_cluster_default","disable_notification_alerts","prefer_media","aid","watchRegisterUser","watchUpdateUser","watchForgotPassword","watchResetPassword","watchSetUser","watchActivateUser","watchSetCookieOption","userSaga","formattedDateFrom","formattedDateTo","mfrom","mto","fromIsOlder","requestBody","hackMin","parseFloat","addTypeToDomains","averageDailyHits","lastSevenDays","searchResults","watchScoresRequestStart","watchChartDrilldown","watchSearchResultDrilldown","watchSaveSearchQueryRequestStart","watchOpenSearchQueryDialog","watchOpenScoreQueryDialog","watchSaveScoreQueryRequestStart","watchFetchAllQueriesStart","watchDeleteQuery","watchDeactivateQueryRequestStart","watchActivateQueryRequestStart","watchTestSearchQueryStart","watchLoadMoreDarknetEntriesStart","mainSaga","filterSaga","watchSearchRequestStart","watchOnSortByChange","watchOnSortDirectionChange","searchSaga","darknetSaga","createCampaign","updateCampaign","deleteCampaign","searchCampaigns","createContent","getContent","deleteContent","fetchContents","searchContents","lockContent","unlockContent","dispatchContent","searchLinkedInCompany","fetchFacebookLinkMetadata","downloadEmailEvents","createEmailTemplate","updateEmailTemplate","deleteEmailTemplate","fetchEmailTemplates","editorAiRequest","fetchStatistics","earnedMediaAccuracy","fetchContentDeskKpiStatistics","invalidateCache","searchMediaFiles","deleteMediaFile","uploadEditorImage","uploadMediaFile","createOtsDraft","assigned_user_id","calendarDate","scheduledForJobName","scheduledEventsJobName","ccdCampaignId","planned_for","scheduled_for_job_name","scheduled_events_job_name","approval_status","ccd_campaign_id","content_id","contact_id","distribution_list_id","created_by","created_at","plain_text","editor_design","ccd_media_files","sender_mail","linked_in_post","facebook_post","parsedBody","removeInvalidTagsForOts","plainStoryText","plainContactText","select_fields","isInitialFetch","contentType","done","newMediaFiles","storedFileId","totalSize","_error","searchString","uploaded_file","ccd_media_files_total_size","deleted_externally","lockOnly","contentDeskContentTypes","filteredType","lockedContent","unlockOnly","test","EmailTemplatesLibraryActions","actionType","mood","sourceText","currentContentData","totalEntries","currentText","action_type","source_text","generatedText","resultId","BffApi","articleContent","keep_until","timestamp","initialOtsBody","fetchKpiStatistics","watchSaveCampaignStart","watchSaveCampaignFormlessStart","watchSaveContentFormlessStart","watchSaveContentStart","watchDeleteContentStart","watchDeleteCampaignStart","watchCloneContentsFormData","watchOpenViewContentDialog","watchOpenEditContentDialog","watchOpenOldEditContentDialog","watchFetchCampaignDropdownOptionsStart","watchFetchContentDropdownOptionsStart","watchFetchContactDropdownOptionsStart","watchFetchDistributionListDropdownOptionsStart","watchFetchMediaFilesStart","watchFetchMoreMediaFilesStart","watchUploadEditorImageStart","watchDeleteMediaFileStart","watchFetchStatisticsStart","watchGetContentStart","watchLockContentFormStart","watchUnlockContentFormStart","watchDispatchContentRequestStart","watchSwitchToContactManagement","watchSwitchToEmailTemplatesLibrary","watchSwitchToSearchPool","watchUploadLinkedInMediaFileStart","watchUploadFacebookMediaFileStart","watchSaveDeletedExternallyForContentStart","watchEditorAiRequestStart","watchBuildSocialMediaLinkStart","watchDownloadEmailEvents","watchOpenNewContent","watchCloseOtsWelcomeDialog","watchFetchKpiStatistics","watchCreateOtsDraft","multiFilter","multi_filter","content_filter","sort_order","campaign_filter","fetchRecipientContact","ContactActions","contentsData","campaignsContentsData","calendarContents","calendarCampaignsContentsData","calendarContentsData","filterCond","notTooOld","otsPressRelease","scheduledContents","contentIds","watchLinkedInCompnaySearchStart","watchSearch","watchSearchCampaignsStart","watchSearchContentsStart","watchRefreshContentsStatusStart","watchFetchRecipientContactStart","fetchCalendarEvents","date_filter","contentsResult","campaignDateFilter","campaignsResult","watchFetchCalendarContentsStart","watchOnCalendarContentClick","calendarSaga","contentDeskSaga","contact_ids","allLists","prevData","contactsNewsradarsId","tagsToAdd","tagsToDelete","tagIds","oldTagIds","languagesToAdd","mediaTypesToAdd","mediaTopicsToAdd","uploadFileForm","mainFieldsChanged","isMainFieldChanged","switchContact","job_title","external_publication","website","company","preferred_language_id","country_id","state_id","linkedin_url","twitter_url","facebook_url","threads_url","tiktok_url","instagram_url","youtube_url","other_url","contacts_newsradars_id","supplier","distribution_lists","contacts_languages","contacts_media_types","mediaTypeId","media_type_id","contacts_media_topics","media_topic_id","switch_contact","changeContactTags","existing","newValues","isNew","successData","renameTag","deleteTag","sheetName","isTemplate","is_template","contactIds","delete_merged_lists","watchCreateDistributionListStart","watchUpdateDistributionListStart","watchDeleteDistributionListStart","watchAddContactsToDistributionListStart","watchSaveContactStart","watchRemoveContactFromListStart","watchDeleteContactsStart","watchUploadContactsStart","watchChangeContactTagsStart","watchRenameTagStart","watchDeleteTagStart","watchDownloadContactsExcelStart","watchMergeDistributionListsStart","watchDownloadDistributionListStart","uiRemoveDistributionListContactFilter","watchAddDistributionListContactFilter","watchUiRemoveDistributionListContactFilter","unsubscribed","setListSortBy","setTagsSortBy","watchFetchDistributionListsStart","watchSearchDistributionListStart","watchfetchContactsStart","watchSetListSortBy","watchSetTagsSortBy","watchSetContactsPage","watchSetDistributionListsPage","watchContactDbRequestStart","watchFetchTagsStart","contactManagementSaga","notificationIds","groot_notification_ids","watchMarkNotificationAsRead","watchFetchNotifications","notificationSaga","watchSubmitSurveyStart","surveySaga","buildSort","buildFilter","filterKey","allFilters","finalFilter","facetFilter","array","media_type","lang","outlet","page_size","must_has_email","collapse_email","limitedResults","contact_type","cursorToFetch","exclude_contact_ids","outlet_id","filteredJournalists","journalist","phrase","person_id","keywords","isHistorySearch","drillDownHistoryFilters","entityId","filterFound","filtersFound","watchCombinedSearchStart","watchSearchJournalistsStart","watchSearchOutletsStart","watchSearchArticlesStart","watchFetchStaticsStart","watchSearchSuggestStart","watchDrillDownRequestStart","watchSearchDrillDownJournalistsStart","watchSearchDrillDownOutletsStart","watchSearchDrillDownArticlesStart","watchDrillDownHistorySearch","withDistributionList","external_id","duplicates","watchImportStart","watchReplaceContactStart","watchAddJournalistToDistributionListStart","watchKeepContact","importSaga","anewstipSaga","emailEditorFormData","templateId","CdActions","temp","watchSaveTemplateStart","watchDeleteTemplateStart","watchCloneTemplateStart","showPublicTemplates","fetchReleasedTemplates","watchfetchReleasedTemplates","watchTogglePublicTemplates","watchFetchTemplateStart","watchFetchMoreTemplatesStart","emailTemplatesLibrarySaga","per_page","order_by","watchSearchUnsplashPhotosStart","watchFetchRandomUnsplashPhotos","watchAddImageToLibrary","unsplashSaga","getMoment","_tagData","_eventData","tagData","pageEnter","category","pageLeave","watchUstEventStarted","watchUstTagStarted","watchUstPageEnter","watchUstPageLeave","ustSaga","createDefaultAllowedDomains","updateAllowedDomain","updateType","sender_domains","watchCreateAllowedDomainStart","watchCreateDefaultAllowedDomainsStart","watchUpdateAllowedDomainStart","watchDeleteAllowedDomainStart","watchRefreshStatusAllowedDomainStart","watchFetchAllowedDomainStatusStart","exclude_filter","watchSearchAllowedDomainsStart","administrationSaga","saveBookmark","editorial_plan_id","deleteBookmark","grootEditorialPlanId","exportEditorialPlans","themaxFilters","publicationFilter","editorial_plans","hasThemaxPaidVersion","watchCloseWelcomeDialog","watchOnMount","watchOnUnmount","watchThemaxSaveBookmarkStart","watchThemaxDeleteBookmarkStart","watchExportEditorialPlansStart","watchApplyThemaxFilters","watchResetThemaxFilters","themaxFetchRelatedEditorialPlans","fetchMoreEditorialPlans","fetchMoreRelatedEditorialPlans","watchThemaxSearchRequestStart","watchThemaxSearchEditorialPlans","watchThemaxFetchRelatedEditorialPlans","watchThemaxSearchPublications","watchThemaxFetchMoreEditorialPlansStart","watchThemaxFetchMoreRelatedEditorialPlansStart","watchThemaxFetchMorePublicationsStart","watchUpdateThemaxSort","uiSaga","isSavedSearchOutdated","savedSearchFilters","compareStructures","obj1","obj2","isOutdated","value1","value2","compareValues","isObjectOrArray","saveThemaxSavedSearch","savedSearchesData","favoriteSavedSearch","ss","watchInitializeThemaxSavedSearches","watchSaveThemaxSavedSearch","watchSearchThemaxSavedSearches","watchDeleteThemaxSavedSearch","watchExecuteThemaxSavedSearch","watchResetThemaxSavedSearches","watchFavoriteThemaxSavedSearch","savedSearchesSaga","themaxSaga","key_figures","watchAiAnalysis","rootSaga","analysisSaga","apiKeysSaga","authSaga","chartsSaga","customTagsSaga","dashboardSaga","editMailingListSaga","editNewsSaga","filterTimelineSaga","identitySetsSaga","influencersSaga","pageIdentitiesSaga","publicationsSaga","savedDashboardSaga","savedChartsSaga","notificationsSaga","aiSaga","trackExceptions","_store","next","trackActions","act","loadingIndicator","meta","indicator","dispatch","createHashHistory","createReduxHistory","routerMiddleware","createReduxHistoryContext","sagaMiddleware","createSagaMiddleware","onError","gaInitialized","configureStore","enhancer","compose","applyMiddleware","createStore","rootReducer","subscribe","cookieOptions","getState","run","getKeyMap","isAiEntity","getAiEntityName","buildError","request","stackTrace","method","statusText","responseHeaders","headers","stack","retryRequest","retries","doRequest","addAuthHeaders","networkError","checkStatus","parseJSON","parseBlob","camelize","jsonHeaders","Accept","defaultHeaders","formHeaders","newHeaders","fetch","doJsonRequest","doBlobRequest","patch","deleteConfig","destroy","form","sortByByType","stackableSecondLevels","getThirdLevel","levelsWithTonalityColor","useTonalityColor","levelsWithSentimentColor","useSentimentColor","chartTypesWithChangingColors","chartTypesWithFirstLevelOnly","chartTypesWithThirdLevelOnly","hasFirstLevelOnly","hasThirdLevelOnly","chartTypesWithSorting","hasSorting","chartTypesWithoutLimit","timelineFirstLevels","socialMediaAnalyticsFeeds","tonalityValues","extremely_positive","very_positive","positive","neutral","negative","very_negative","extremely_negative","unknown","sentimentValues","feedChartTypes","isRectangleChart","addAverageTimeSpan","averageByTimespan","measure","formatDate","dateString","buildThirdLevelLabel","isCustomKpi","getCustomKpiName","buildFirstLevelLabel","buildSecondLevelLabel","addDates","labels","rest","sortingLabel","buildFirstLevelColorKey","findConfiguredFirstLevelColor","buildSecondLevelColorKey","findConfiguredSecondLevelColor","updateFill","forcedColor","fill","formatData","hasIn","aggregation","colorsArr","agg","bucketSortBy","bucketSortOrder","getTonalityColor","getTonalityFromAgg","useChangingColors","colorScheme","_d","percent","tinycolor","lighten","darken","buildStack","newItem","sorter","getDataKey","getDataKeySuffix","toStackedData","dataKeys","newD","dataKey","hasStack","getAllStacks","breakpoints","newBreakpoints","firstNonEmptyBreakpoint","tickFontSizes","getAxesTickFontSizeAndInterval","allXAxisTicks","fontSize","lastPercent","stringWidth","pixelWidth","getMaxLabelWidth","currentInterval","sortStacksWithOthers","stacks","sortStacksWithOthersForTooltip","MENTIONS_TIMELINE","MENTIONS_TOTAL","HACKISHNESS_TOTAL","HACKISHNESS_TIMELINE","HACKISHNESS_NETWORKS","NETWORKS_TIMELINE","SCORE_RESULT_TIMELINE","SEARCH_QUERIES_TIMELINE","EXTERNAL_SCORE_CHART","byChartId","getChartById","getChartsById","addStylesToChart","dateAsString","languagesChart","mentionsTimelineChart","mentionsChart","avgHackishnessChart","avgHackishnessTimelineChart","avgHackishnessNetworksChart","networksChart","networksTimelineChart","scoreResultTimelineChart","searchQueriesTimelineChart","externalScoreChart","disableAnimations","zoomable","axesLabelColor","axesStrokeColor","labelBackgroundColor","labelColor","topLabelColor","domainValidationRegex","emailValidationRegex","validDomain","validEmail","halfYearFromDate","thisHalfYear","rangeResult","now","yesterday","startOfWeek","endOfWeek","startOfMonth","endOfMonth","startOfQuarter","endOfQuarter","startOfYear","endOfYear","startOfLastWeek","endOfLastWeek","startOfLastMonth","endOfLastMonth","startOfLastQuarter","endOfLastQuarter","startOfLastYear","endOfLastYear","before7Days","before30Days","before60Days","before90Days","restrictedDateIntervals","moreRestrictedDateIntervals","superRestrictedDateIntervals","formatWithoutTime","isStart","dateFromStart","isEnd","dateToEnd","getDateString","formatOverride","isStartEnd","dateRangeString","getDateQuickselects","updateMetaElement","updateTitleInMeta","updateDescriptionInMeta","getBodyBackgroundColor","arrayMoveMutate","arrayMove","listUniqueByKeyName","chunkSize","Range","chunkStart","_a","keyIn","keySet","clearAndInsertNodes","editor","isUserInput","clear","$insertGeneratedNodes","$createRangeSelection","$getRoot","selectStart","$setSelection","setFloatingElemPosition","targetRect","floatingElem","anchorElem","verticalGap","horizontalOffset","scrollerElem","parentElement","opacity","transform","floatingElemRect","getBoundingClientRect","anchorElementRect","editorScrollerRect","top","left","right","getSelectedNode","selection","anchor","focus","anchorNode","getNode","focusNode","isBackward","$isAtNodeEnd","removeEmptyRootParagraph","childElementCount","child","nodeName","replaceHTMLEntities","importNodesAsPlainText","textNode","$createTextNode","importNodesAsHTML","dom","DOMParser","parseFromString","$generateNodesFromDOM","allowedTags","removeInvalidTags","node","childNodes","nodeType","Node","ELEMENT_NODE","insertBefore","removeChild","defaultLoaderProps","Loading","propsOverrides","userLanguage","EU_DOMAIN","US_DOMAIN","DOMAIN_REGION_OPTIONS","DEFAULT_DOMAINS","us","eu","getDomainRegionOptions","getDefaultDomainByTld","tld","getRegionByTld","schemaName","oldKey","oKey","generatedSchema","normalizedResult","schema","normalize","createSelectorCreator","defaultMemoize","capabilitiesWithRoutes","defaultRoute","behavior","block","scrollElementToTop","elementId","scrollTop","scrollElementToLeft","scrollLeft","scrollElement","offset","scrollHeight","offsetHeight","scrollElementX","scrollWidth","offsetWidth","toLocaleUpperCase","string1","string2","shorten","string","toSnakeCase","$1","savedDomain","savedRange","savedUnknownColor","getDomainAndRange","scaleLinear","getAverageTonalityOfNews","getAverageTonalityColorOfNews","getTonalititesByModule","isTonalityDimension","dimension","webpackContext","req","webpackContextResolve","__webpack_require__"],"sourceRoot":""}