diff --git a/1/ecolyo.d3e9c10e920959977a51.js b/1/ecolyo.f15680e455b4e15a687d.js
similarity index 99%
rename from 1/ecolyo.d3e9c10e920959977a51.js
rename to 1/ecolyo.f15680e455b4e15a687d.js
index 73a6ad8aba497c946608b9ce37cb587b21eb3334..ce13011e75a6ca50e4a2c0c5d14147d7890e74cb 100644
--- a/1/ecolyo.d3e9c10e920959977a51.js
+++ b/1/ecolyo.f15680e455b4e15a687d.js
@@ -4551,9 +4551,9 @@ var KonnectorViewerList = function KonnectorViewerList() {
 
   return /*#__PURE__*/_react.default.createElement("div", {
     className: "konnectorsList"
-  }, fluidStatus.map(function (fluidStatusItem, key) {
+  }, fluidStatus.map(function (fluidStatusItem) {
     return /*#__PURE__*/_react.default.createElement(_StyledCard.default, {
-      key: key,
+      key: fluidStatusItem.fluidType,
       className: "connection-card",
       onClick: function onClick() {
         return goToFluid(fluidStatusItem.fluidType);
@@ -5671,6 +5671,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
 function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
 
 var FluidChart = function FluidChart(_ref) {
+  var _currentFluidStatus$l;
+
   var fluidType = _ref.fluidType,
       setActive = _ref.setActive;
 
@@ -5831,25 +5833,21 @@ var FluidChart = function FluidChart(_ref) {
     }
   };
 
-  var LastDataValid = function LastDataValid() {
-    var _currentFluidStatus$l;
-
-    return /*#__PURE__*/_react.default.createElement("div", {
-      className: "lastValidData"
-    }, /*#__PURE__*/_react.default.createElement("span", {
-      className: "text-16-bold date",
-      onClick: moveToDate
-    }, t('consumption_visualizer.last_valid_data', {
-      date: (currentFluidStatus === null || currentFluidStatus === void 0 ? void 0 : (_currentFluidStatus$l = currentFluidStatus.lastDataDate) === null || _currentFluidStatus$l === void 0 ? void 0 : _currentFluidStatus$l.toFormat('dd/MM/yy')) || '-'
-    })), /*#__PURE__*/_react.default.createElement("p", null, t('auth.warningOfflineData')), /*#__PURE__*/_react.default.createElement(_core.Button, {
-      className: "btnSecondary",
-      onClick: toggleModalConnection
-    }, t("auth.".concat((0, _utils.getKonnectorSlug)(fluidType), ".connect"))));
-  };
+  var LastDataValid = fluidType !== _enums.FluidType.MULTIFLUID && /*#__PURE__*/_react.default.createElement("div", {
+    className: "lastValidData"
+  }, /*#__PURE__*/_react.default.createElement("span", {
+    className: "text-16-bold date",
+    onClick: moveToDate
+  }, t('consumption_visualizer.last_valid_data', {
+    date: (currentFluidStatus === null || currentFluidStatus === void 0 ? void 0 : (_currentFluidStatus$l = currentFluidStatus.lastDataDate) === null || _currentFluidStatus$l === void 0 ? void 0 : _currentFluidStatus$l.toFormat('dd/MM/yy')) || '-'
+  })), /*#__PURE__*/_react.default.createElement("p", null, t('auth.warningOfflineData')), /*#__PURE__*/_react.default.createElement(_core.Button, {
+    className: "btnSecondary",
+    onClick: toggleModalConnection
+  }, t("auth.".concat((0, _utils.getKonnectorSlug)(fluidType), ".connect"))));
 
   return /*#__PURE__*/_react.default.createElement("div", {
     className: "fluidchart-root"
-  }, !isFluidConnected && /*#__PURE__*/_react.default.createElement(LastDataValid, null), currentTimeStep === _enums.TimeStep.HALF_AN_HOUR && !containsHalfHourData ? /*#__PURE__*/_react.default.createElement(_HalfHourNoData.default, null) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
+  }, !isFluidConnected && LastDataValid, currentTimeStep === _enums.TimeStep.HALF_AN_HOUR && !containsHalfHourData ? /*#__PURE__*/_react.default.createElement(_HalfHourNoData.default, null) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
     className: "fluidchart-content"
   }, /*#__PURE__*/_react.default.createElement(_FluidChartSwipe.default, {
     fluidType: fluidType,
diff --git a/4/ecolyo.e44f681829f74b9ff80d.js b/4/ecolyo.3ca224bca62d18545b61.js
similarity index 99%
rename from 4/ecolyo.e44f681829f74b9ff80d.js
rename to 4/ecolyo.3ca224bca62d18545b61.js
index 3d7ee0f94679d9fedb2ee53bcad9e71750de073e..0dc7498870113f404c344a30fc92f0dd1127106d 100644
--- a/4/ecolyo.e44f681829f74b9ff80d.js
+++ b/4/ecolyo.3ca224bca62d18545b61.js
@@ -928,19 +928,15 @@ var EcogestureList = function EcogestureList(_ref) {
       anchorEl = _useState4[0],
       setAnchorEl = _useState4[1];
 
-  var toggleDropDown = function toggleDropDown() {
-    setOpenDropDown(function (prev) {
-      return !prev;
-    });
-  };
-
   var toggleMenu = function toggleMenu(event) {
     setAnchorEl(event.currentTarget);
+    setOpenDropDown(true);
   };
 
   var closeMenu = function closeMenu(usage) {
     usage !== undefined && dispatch((0, _global.updateEcogestureFilter)(usage));
     setAnchorEl(null);
+    setOpenDropDown(false);
   };
 
   var renderEcogestureContent = function renderEcogestureContent() {
@@ -994,13 +990,13 @@ var EcogestureList = function EcogestureList(_ref) {
       MenuListProps: {
         className: 'filter-menu-list'
       }
-    }, Object.values(_enums.Usage).map(function (usage, key) {
+    }, Object.values(_enums.Usage).map(function (usage) {
       var active = usage === ecogestureFilter;
       return typeof usage === 'number' && /*#__PURE__*/_react.default.createElement(_core.MenuItem, {
+        key: usage,
         classes: {
           root: "".concat(active ? 'item-active' : '')
         },
-        key: key,
         selected: active,
         onClick: function onClick() {
           return closeMenu(usage);
diff --git a/5/ecolyo.41a3c918854f721cafd9.js b/5/ecolyo.fff507e0c240c9687f07.js
similarity index 99%
rename from 5/ecolyo.41a3c918854f721cafd9.js
rename to 5/ecolyo.fff507e0c240c9687f07.js
index 5a255ead5f7948bf3fa9a4b1377754508ba58ab0..b47ecfe8ba3870b0b3b7c77588faba71d53a7d9a 100644
--- a/5/ecolyo.41a3c918854f721cafd9.js
+++ b/5/ecolyo.fff507e0c240c9687f07.js
@@ -505,9 +505,9 @@ var ExportData = function ExportData() {
   }, [consumptionService]);
 
   var fluidCheckbox = function fluidCheckbox() {
-    return exportableFluids.map(function (fluidType, key) {
+    return exportableFluids.map(function (fluidType) {
       return /*#__PURE__*/_react.default.createElement("label", {
-        key: key
+        key: fluidType
       }, /*#__PURE__*/_react.default.createElement("input", {
         type: "checkbox",
         className: "inputCheckbox",
diff --git a/6/ecolyo.95dfb23bc54787c93a79.js b/6/ecolyo.f76c729977c86016121a.js
similarity index 99%
rename from 6/ecolyo.95dfb23bc54787c93a79.js
rename to 6/ecolyo.f76c729977c86016121a.js
index b3e1b217987e53d4f70106b3418720376a718a81..36dfdac965da7f32c03040c73b24c2d7805c14e5 100644
--- a/6/ecolyo.95dfb23bc54787c93a79.js
+++ b/6/ecolyo.f76c729977c86016121a.js
@@ -2132,7 +2132,7 @@ var ProfileComparator = function ProfileComparator(_ref) {
     noData: false
   }), performanceIndicators.map(function (indicator, index) {
     return indicator.value && /*#__PURE__*/_react.default.createElement(_ProfileComparatorRow.default, {
-      key: index,
+      key: _enums.FluidType[index],
       fluid: index,
       userPriceConsumption: userPriceConsumption,
       homePriceConsumption: homePriceConsumption,
@@ -2428,7 +2428,7 @@ var ElecHalfHourChart = function ElecHalfHourChart(_ref) {
     transform: "translate(".concat(10, ",", 0, ")")
   }, dataLoad.map(function (value, index) {
     return /*#__PURE__*/_react.default.createElement(_Bar.default, {
-      key: index,
+      key: value.date.toISO(),
       index: index,
       dataload: value,
       compareDataload: null,
diff --git a/8/ecolyo.c8806f27bb75cdd881dd.js b/8/ecolyo.2e9e8423896e91d85c64.js
similarity index 99%
rename from 8/ecolyo.c8806f27bb75cdd881dd.js
rename to 8/ecolyo.2e9e8423896e91d85c64.js
index 617807e5e4b6b8db71469a7f64f7f9870a5af34d..f43c04473ff215d2a9f0e7bc3c48db455f6b366e 100644
--- a/8/ecolyo.c8806f27bb75cdd881dd.js
+++ b/8/ecolyo.2e9e8423896e91d85c64.js
@@ -424,7 +424,7 @@ var DataloadSectionDetail = function DataloadSectionDetail(_ref) {
       var isHole = value.state === _enums.DataloadState.HOLE;
       var isMissing = value.state === _enums.DataloadState.MISSING;
       return /*#__PURE__*/_react.default.createElement(_reactRouterDom.NavLink, {
-        key: index,
+        key: _enums.FluidType[index],
         to: "/consumption/".concat(_enums.FluidType[index].toLowerCase()),
         className: "dataloadvisualizer-euro-link",
         onClick: function onClick() {
diff --git a/app/ecolyo.dc426e68ebaa4f99460c.js b/app/ecolyo.c814247b236a32d483a4.js
similarity index 99%
rename from app/ecolyo.dc426e68ebaa4f99460c.js
rename to app/ecolyo.c814247b236a32d483a4.js
index 98a1f0afd5c4d6ef9d18388ed22cbb9730dcd650..057b08d64d4b957a2697e2d131c632c817d7eb23 100644
--- a/app/ecolyo.dc426e68ebaa4f99460c.js
+++ b/app/ecolyo.c814247b236a32d483a4.js
@@ -64,7 +64,7 @@
 /******/
 /******/ 	// script path function
 /******/ 	function jsonpScriptSrc(chunkId) {
-/******/ 		return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"1":"d3e9c10e920959977a51","2":"62e5292a592368584bc8","4":"e44f681829f74b9ff80d","5":"41a3c918854f721cafd9","6":"95dfb23bc54787c93a79","7":"9376e18b72a7a8ccfe8c","8":"c8806f27bb75cdd881dd","9":"559d36d928c393428876","10":"2946952809565809b75b"}[chunkId] + ".js"
+/******/ 		return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"1":"f15680e455b4e15a687d","2":"62e5292a592368584bc8","4":"3ca224bca62d18545b61","5":"fff507e0c240c9687f07","6":"f76c729977c86016121a","7":"9376e18b72a7a8ccfe8c","8":"2e9e8423896e91d85c64","9":"559d36d928c393428876","10":"2946952809565809b75b"}[chunkId] + ".js"
 /******/ 	}
 /******/
 /******/ 	// The require function
@@ -2224,13 +2224,27 @@ var AxisRight = function AxisRight(_ref) {
       t = _useI18n.t;
 
   var fluidStyle = fluidType === _enums.FluidType.MULTIFLUID ? 'MULTIFLUID' : _enums.FluidType[fluidType];
+  var isMultiFluid = fluidStyle !== 'MULTIFLUID';
   var yAxisRef = (0, _react.useRef)(null);
   var newMarginRight = fluidType === _enums.FluidType.MULTIFLUID ? marginRight - 10 : marginRight;
 
+  var formatFluidValue = function formatFluidValue(value, unit) {
+    var fluidUnit = t("FLUID.".concat(fluidStyle, ".").concat(unit));
+    return "".concat(value.valueOf(), " ").concat(fluidUnit);
+  };
+
+  var formatSingleFluidValue = function formatSingleFluidValue(value) {
+    return value === 0 ? '0' : formatFluidValue(value, 'UNIT');
+  };
+
+  var formatMultiFluidValue = function formatMultiFluidValue(value) {
+    return typeof value === 'number' ? formatFluidValue(value / 1000, 'MEGAUNIT') : formatFluidValue(value.valueOf() / 1000, 'MEGAUNIT');
+  };
+
   var drawYAxis = function drawYAxis() {
     // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
     (0, _d3Selection.select)(yAxisRef.current).call((0, _d3Axis.axisRight)(yScale).ticks(isAnalysis ? 2 : 4).tickSize(-width).tickSizeOuter(0).tickFormat(function (d) {
-      return Number(d) >= 1000 && fluidStyle !== 'MULTIFLUID' ? typeof d === 'number' ? "".concat(d / 1000, " ").concat(t("FLUID.".concat(fluidStyle, ".MEGAUNIT"))) : "".concat(d.valueOf() / 1000, " ").concat(t("FLUID.".concat(fluidStyle, ".MEGAUNIT"))) : d === 0 ? "".concat(d) : "".concat(d, " ").concat(t("FLUID.".concat(fluidStyle, ".UNIT")));
+      return Number(d) >= 1000 && isMultiFluid ? formatMultiFluidValue(d) : formatSingleFluidValue(d);
     }));
     (0, _d3Selection.selectAll)('.tick text').attr('class', 'chart-ticks-y-text');
     (0, _d3Selection.select)('.domain').remove();
@@ -20713,14 +20727,13 @@ var EcogestureModal = function EcogestureModal(_ref) {
     result: Math.round(ecogesture.efficiency)
   })), /*#__PURE__*/_react.default.createElement("div", {
     className: "em-picto-flow"
-  }, ecogesture.fluidTypes.map(function (fluid, index) {
-    return /*#__PURE__*/_react.default.createElement("div", {
-      key: index
-    }, /*#__PURE__*/_react.default.createElement(_StyledIcon.default, {
+  }, ecogesture.fluidTypes.map(function (fluid) {
+    return /*#__PURE__*/_react.default.createElement(_StyledIcon.default, {
+      key: fluid,
       className: "em-pic-content",
       icon: (0, _picto.getPicto)(fluid),
       size: 25
-    }));
+    });
   }))), /*#__PURE__*/_react.default.createElement("div", {
     className: "text-16-bold long-name"
   }, ecogesture.longName), isAction ? /*#__PURE__*/_react.default.createElement(_Button.default, {
@@ -21423,7 +21436,7 @@ var AxisBottom = function AxisBottom(_ref2) {
     transform: "translate(".concat(marginLeft, ", ").concat(height - marginBottom, ")")
   }, data.map(function (d, index) {
     return /*#__PURE__*/_react.default.createElement("g", {
-      key: index,
+      key: d.date.toISO(),
       className: "tick",
       opacity: "1",
       transform: "translate(".concat(xScale(d.date.toLocaleString(_luxon.DateTime.DATETIME_SHORT)), ", 0)")
@@ -22719,7 +22732,7 @@ var DuelBar = function DuelBar(_ref) {
   }, dataload.map(function (d, index) {
     if (!isUpcoming(d)) {
       return /*#__PURE__*/_react.default.createElement(_Bar.default, {
-        key: index,
+        key: d.date.toISO(),
         index: index,
         dataload: d,
         compareDataload: null,
@@ -22734,7 +22747,7 @@ var DuelBar = function DuelBar(_ref) {
       });
     } else {
       return /*#__PURE__*/_react.default.createElement(_UncomingBar.default, {
-        key: index,
+        key: d.date.toISO(),
         index: index,
         dataload: d,
         xScale: xScale,
@@ -31308,11 +31321,14 @@ var UncomingBar = function UncomingBar(_ref) {
     setAnimationEnded(true);
   };
 
-  var barClass = "bar-UNCOMING ".concat(animationEnded ? '' : "bounce-".concat((browser === null || browser === void 0 ? void 0 : browser.name) !== 'edge' ? '1' : '3', " delay--").concat(index % 13));
+  var animationClass = '';
 
-  var getBandWidth = function getBandWidth() {
-    return xScale.bandwidth();
-  };
+  if (!animationEnded) {
+    animationClass = (browser === null || browser === void 0 ? void 0 : browser.name) !== 'edge' ? 'bounce-1' : 'bounce-3';
+    animationClass += " delay--".concat(index % 13);
+  }
+
+  var barClass = "bar-UNCOMING ".concat(animationClass);
 
   var topRoundedRectDashedLine = function topRoundedRectDashedLine(x, y, width, height) {
     var radius = height > 4 ? 4 : height / 4;
@@ -31324,14 +31340,14 @@ var UncomingBar = function UncomingBar(_ref) {
   }, /*#__PURE__*/_react.default.createElement("rect", {
     x: "0",
     y: "0",
-    width: getBandWidth(),
+    width: xScale.bandwidth(),
     height: height + 40,
     className: "background-false",
     fill: "#E0E0E0"
   })), height > 0 && average >= 0 && /*#__PURE__*/_react.default.createElement("g", {
     transform: "translate(".concat(xScale(dataload.date.toLocaleString(_luxon.DateTime.DATETIME_SHORT)), ", ").concat(yScale(average), ")")
   }, /*#__PURE__*/_react.default.createElement("path", {
-    d: topRoundedRectDashedLine(0, 0, getBandWidth(), height - yScale(average)),
+    d: topRoundedRectDashedLine(0, 0, xScale.bandwidth(), height - yScale(average)),
     fill: "url(#gradient)",
     strokeDasharray: "5",
     stroke: "#61f0f2",
@@ -37608,6 +37624,8 @@ var _konnector = _interopRequireDefault(__webpack_require__("kFhK"));
 
 var _triggers = _interopRequireDefault(__webpack_require__("7d5P"));
 
+var _utils = __webpack_require__("c+yx");
+
 function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
 function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -37688,12 +37706,12 @@ var FluidService = /*#__PURE__*/function () {
                 waterStatus = _yield$Promise$all8[1];
                 gasStatus = _yield$Promise$all8[2];
                 _context.next = 35;
-                return consumptionService.fetchAllFirstDateData([_enums.FluidType.ELECTRICITY, _enums.FluidType.WATER, _enums.FluidType.GAS]);
+                return consumptionService.fetchAllFirstDateData(_utils.allFluids);
 
               case 35:
                 firstDataDates = _context.sent;
                 _context.next = 38;
-                return consumptionService.fetchAllLastDateData([_enums.FluidType.ELECTRICITY, _enums.FluidType.WATER, _enums.FluidType.GAS]);
+                return consumptionService.fetchAllLastDateData(_utils.allFluids);
 
               case 38:
                 lastDataDates = _context.sent;
@@ -39515,7 +39533,7 @@ var InitializationService = /*#__PURE__*/function () {
     key: "initFluidTypes",
     value: function () {
       var _initFluidTypes = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
-        var startTime, kss, fluidtypes, errorMessage;
+        var startTime, kss, fluidTypes, errorMessage;
         return _regenerator.default.wrap(function _callee10$(_context10) {
           while (1) {
             switch (_context10.prev = _context10.next) {
@@ -39527,15 +39545,15 @@ var InitializationService = /*#__PURE__*/function () {
                 return kss.getKonnectorAccountStatus();
 
               case 5:
-                fluidtypes = _context10.sent;
+                fluidTypes = _context10.sent;
 
-                if (!fluidtypes) {
+                if (!fluidTypes) {
                   _context10.next = 11;
                   break;
                 }
 
                 (0, _duration.logDuration)('[Initialization] Fluid Types loaded', startTime);
-                return _context10.abrupt("return", fluidtypes);
+                return _context10.abrupt("return", fluidTypes);
 
               case 11:
                 this._setInitStepError(_models.InitStepsErrors.CONSOS_ERROR);
diff --git a/index.html b/index.html
index 1fdbb6e580f060468ef7fb9a0200e2fae99bb0b2..a0e94fbecbf26b778e91f3ba7c5a9967bc61b651 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.9ee7ecded9ec82c2cedd.js"></script><script src="app/ecolyo.dc426e68ebaa4f99460c.js"></script></div></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.9ee7ecded9ec82c2cedd.js"></script><script src="app/ecolyo.c814247b236a32d483a4.js"></script></div></body></html>
\ No newline at end of file
diff --git a/services/aggregatorUsageEvents/ecolyo.js b/services/aggregatorUsageEvents/ecolyo.js
index 4fe580b3ed18cc3f501a257a718fbe4bce51664f..9d32013dbb9415898a5254c0fef5c11bdda8daf2 100644
--- a/services/aggregatorUsageEvents/ecolyo.js
+++ b/services/aggregatorUsageEvents/ecolyo.js
@@ -104553,6 +104553,8 @@ var _konnector = _interopRequireDefault(__webpack_require__(1182));
 
 var _triggers = _interopRequireDefault(__webpack_require__(1129));
 
+var _utils = __webpack_require__(755);
+
 class FluidService {
   constructor(_client) {
     (0, _defineProperty2.default)(this, "_client", void 0);
@@ -104584,8 +104586,8 @@ class FluidService {
       const [elecTrigger, waterTrigger, gasTrigger] = await Promise.all([elecAccount && elecKonnector ? triggerService.getTrigger(elecAccount, elecKonnector) : null, waterAccount && waterKonnector ? triggerService.getTrigger(waterAccount, waterKonnector) : null, gasAccount && gasKonnector ? triggerService.getTrigger(gasAccount, gasKonnector) : null]);
       const consumptionService = new _consumption.default(this._client);
       const [elecStatus, waterStatus, gasStatus] = await Promise.all([elecTrigger ? triggerService.fetchTriggerState(elecTrigger) : null, waterTrigger ? triggerService.fetchTriggerState(waterTrigger) : null, gasTrigger ? triggerService.fetchTriggerState(gasTrigger) : null]);
-      const firstDataDates = await consumptionService.fetchAllFirstDateData([_enums.FluidType.ELECTRICITY, _enums.FluidType.WATER, _enums.FluidType.GAS]);
-      const lastDataDates = await consumptionService.fetchAllLastDateData([_enums.FluidType.ELECTRICITY, _enums.FluidType.WATER, _enums.FluidType.GAS]);
+      const firstDataDates = await consumptionService.fetchAllFirstDateData(_utils.allFluids);
+      const lastDataDates = await consumptionService.fetchAllLastDateData(_utils.allFluids);
       const result = [{
         fluidType: _enums.FluidType.ELECTRICITY,
         status: this.parseFluidStatus(elecKonnector, elecStatus),