{"version":3,"sources":["./src/app/main/main-routing.module.ts","./node_modules/highcharts/highcharts.js","./src/app/main/wind-atmosphere/wind-atmosphere.component.ts","./src/app/main/wind-atmosphere/wind-atmosphere.component.html","./src/app/main/map-dialog/map-dialog.component.ts","./src/app/main/map-dialog/map-dialog.component.html","./src/app/main/waves/waves.component.ts","./src/app/main/waves/waves.component.html","./src/app/main/about-dialog/about-dialog.component.ts","./src/assets/apsssetubal/about.html","./src/app/main/hydrography/hydrography-info/hydrography-info.component.ts","./src/assets/apsssetubal/info_hydrography.html","./node_modules/ngx-lottie/__ivy_ngcc__/fesm2015/ngx-lottie.js","./src/app/main/side-layout/side-layout.component.ts","./src/app/main/side-layout/side-layout.component.html","./src/app/animations.ts","./node_modules/leaflet.markercluster/dist/leaflet.markercluster-src.js","./node_modules/ngx-perfect-scrollbar/__ivy_ngcc__/fesm2015/ngx-perfect-scrollbar.js","./src/app/main/wind-atmosphere/wind-info/wind-info.component.ts","./src/assets/apsssetubal/info_wind.html","./src/app/main/main.module.ts","./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","./src/app/main/widgets-layout/widgets-layout.component.ts","./src/app/main/widgets-layout/widgets-layout.component.html","./src/app/main/hydrography/hydrography.component.ts","./src/app/main/hydrography/hydrography.component.html","./src/app/shared/models/seriesInfo.interfaces.ts","./node_modules/tslib/tslib.es6.js","./src/app/helperModules/chart.helpers.ts","./src/app/main/waves/waves-info/waves-info.component.ts","./src/assets/apsssetubal/info_waves.html","./node_modules/leaflet.awesome-markers/dist/leaflet.awesome-markers.js","./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js","./src/app/core/services/data-service.service.ts","./src/app/main/main.component.ts","./src/app/main/main.component.html"],"names":[],"mappings":"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,YAAY;AACZ;AACA;AACA,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,eAAe,EAAE;AACjB,uCAAuC,EAAE;AACzC;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,eAAe,EAAE;AACjB;AACA;AACA,eAAe,iDAAI,sBAAsB,0DAAG;AAC5C,mBAAmB,EAAE;AACrB,oBAAoB;AACpB;AACA,8CAA8C,iEAAU;AACxD,mBAAmB,EAAE;AACrB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wBAAwB;AACxD;AACA,mBAAmB,uDAAU;AAC7B,SAAS,IAAI,kEAAW;AACxB;AACA,WAAW,+CAAE;AACb;;AAEA;AACA;AACA;AACA,cAAc,wGAAwG;AACtH;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,WAAW,EASV;AACD;AACA;AACA;AACA,gCAAgC;AAChC,WAAW,EASV;AACD;AACA;AACA;AACA,4BAA4B;AAC5B,WAAW,EAKV;AACD;AACA;AACA;AACA,gCAAgC;AAChC,WAAW,EAOV;AACD;AACA;AACA;AACA,2BAA2B;AAC3B,WAAW,EAKV;AACD;AACA;AACA;AACA,oCAAoC;AACpC,WAAW,EAOV;AACD;AACA;AACA;AACA,+BAA+B;AAC/B,WAAW,EAKV;AACD;AACA;AACA;AACA,0BAA0B;AAC1B,WAAW,EAKV;AACD,WAAW,EAAE;AACb,sBAAsB,4DAAc;AACpC,WAAW,EAAE;AACb,2BAA2B,4DAAc;AACzC,WAAW,EAAE;AACb,4BAA4B,4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;AACA;AACA,mBAAmB,EAAE;AACrB,kCAAkC,EAAE;AACpC;AACA,gCAAgC,EAAE;AAClC,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,mCAAmC,EAAE;AACrC;AACA;AACA,WAAW,EAMV;;AAED;AACA;AACA;AACA,cAAc,wGAAwG;AACtH;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA,6CAA6C,0DAAY;AACzD;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,oBAAoB,qBAAqB;AACzC,wBAAwB,EAAE;AAC1B,uBAAuB,EAAE;AACzB,wBAAwB;AACxB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,kEAAkE,sCAAsC,sDAAe,CAAC,oDAAa,GAAG,sDAAe,CAAC,yDAAW,GAAG;AACtK,2BAA2B,gEAAyB,EAAE,8DAA8D;A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ACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;;AAEA;AACA;AACA,+BAA+B,sCAAsC;AACrE;AACA,8BAA8B,eAAe;AAC7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,eAAe;;AAE5C;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,WAAW;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,MAAM;AACN;AACA;AACA,KAAK;;AAEL;AACA,IAAI;AACJ;;AAEA,UAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;;AAEA;AACA,8BAA8B,WAAW;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iDAAiD,QAAQ;AACzD;AACA;;AAEA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B,QAAQ;AACvC;;AAEA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B;AAC/B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,kCAAkC;AAClC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,cAAc;AACvB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,I;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,+DAA+D;AACpE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA,yBAAyB,qHAAqH;AAC9I,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS,iBAAiB;AAC1B,6DAA6D;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA,uGAAuG;AACvG;AACA;AACA;;AAEA;;AAEA,IAAI,iCAAiC;AACrC;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA,gEAAgE;AAChE,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,mBAAmB;AAC5B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yEAAyE;AACzE;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA,KAAK;AACL,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA,sCAAsC;;AAEtC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP,MAAM,OAAO;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,cAAc,8CAA8C;;AAE5D;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,+CAA+C,QAAQ;AACvD;AACA;;AAEA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,0BAA0B;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,kCAAkC;AACtC;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;;AAGH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,oBAAoB;AAClC;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc,0BAA0B;AACxC;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iFAAiF;AACjF,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,IAAI;AACJ,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,QAAQ;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA,IAAI;AACJ,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,uBAAuB;AACvB;;AAEA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;;AAEA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;;AAEA;;AAEA,iCAAiC,SAAS;AAC1C;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,YAAY;AAC9B;AACA;;AAEA,oBAAoB,YAAY;AAChC;AACA;;AAEA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,cAAc,MAAM;AACpB;AACA,cAAc,MAAM;AACpB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC,QAAQ;AACxC;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,YAAY;AACZ,IAAI;;;AAGJ;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,OAAO;AACZ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,QAAQ;AAC5C;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ,mBAAmB;AACnB;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;;AAEvC;;AAEA,cAAc,WAAW,OAAO;AAChC;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc,yBAAyB;AACvC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;;AAEH;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,yBAAyB;AACvC;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oCAAoC,QAAQ;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;;AAEA;;AAEA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;;;AAGA,qCAAqC,QAAQ;AAC7C;;AAEA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA,EAAE;;;AAGF;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA,+CAA+C,cAAc;;AAE7D,CAAC;AACD;;;;;;;;;;;;;AClpFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACK;AACkC;AAC2J;AAC5K;AACjB;AACK;;AAEd;AACE;;AAE1C,4DAA4D;AAC5D,IAAI,4DAAqB;AACzB,IAAI,uDAAgB;AACpB,IAAI,uDAAgB;AACpB,IAAI,uDAAgB;AACpB,IAAI,uDAAgB;AACpB,IAAI,0DAAmB;AACvB,CAAC;AACD,mBAAmB,2DAAoB;AACvC,IAAI,yDAAkB;AACtB,IAAI,uDAAgB;AACpB,IAAI,yDAAkB;AACtB,IAAI,uDAAgB;AACpB,IAAI,yDAAkB;AACtB,IAAI,uDAAgB;AACpB,IAAI,yDAAkB;AACtB,IAAI,uDAAgB;AACpB,IAAI,yDAAkB;AACtB,CAAC;AACD;AACA,qCAAqC,4DAAc;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4CAAO;AACpC;AACA,6BAA6B,0DAAY;AACzC,6BAA6B,0DAAY;AACzC,8BAA8B,0DAAY;AAC1C,gCAAgC,0DAAY;AAC5C,gCAAgC,0DAAY;AAC5C,iCAAiC,0DAAY;AAC7C,+BAA+B,0DAAY;AAC3C,iCAAiC,0DAAY;AAC7C,+BAA+B,0DAAY;AAC3C,iCAAiC,0DAAY;AAC7C;AACA;AACA,8BAA8B,yEAAiB;AAC/C;AACA,uCAAuC;AACvC;AACA,oCAAoC,yDAAgB;AACpD,aAAa;AACb;AACA,qEAAqE;AACrE,sDAAsD;AACtD;AACA;AACA,8BAA8B,gEAAc;AAC5C;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+EAA+E,gBAAgB;AAC/F,oBAAoB,sDAAS;AAC7B,8BAA8B,gEAAS,MAAM,gEAAS;AACtD;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iDAAiD,yEAAiB;AAClE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,yEAAiB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,6CAA6C,+DAAwB,CAAC,oDAAa,GAAG,+DAAwB,CAAC,6DAAsB,GAAG,+DAAwB,CAAC,wDAAiB,GAAG,+DAAwB,CAAC,yDAAW,GAAG,+DAAwB,+BAA+B;AACnW,iCAAiC,+DAAwB,EAAE,sFAAsF,+DAA+D,YAAY,+RAA+R,gDAAgD,kEAA2B,GAAG;AACzkB;AACA,KAAK,OAAO,oDAAM,EAAE;AACpB,KAAK,OAAO,6DAAe,EAAE;AAC7B,KAAK,OAAO,wDAAU,EAAE;AACxB,KAAK,6BAA6B,OAAO,oDAAM,SAAS,yDAAW,IAAI,GAAG;AAC1E,KAAK,gCAAgC,OAAO,sDAAQ,EAAE,GAAG,OAAO,oDAAM,qCAAqC;AAC3G;AACA,wDAAU;AACV,IAAI,2DAAK;AACT;AACA,wDAAU;AACV,IAAI,2DAAK;AACT;AACA,wDAAU;AACV,IAAI,4DAAM;AACV;AACA,wDAAU;AACV,IAAI,4DAAM;AACV;AACA,wDAAU;AACV,IAAI,4DAAM;AACV;AACA,wDAAU;AACV,IAAI,4DAAM;AACV;AACA,wDAAU;AACV,IAAI,4DAAM;AACV;AACA,wDAAU;AACV,IAAI,4DAAM;AACV;AACA,wDAAU;AACV,IAAI,4DAAM;AACV;AACA,wDAAU;AACV,IAAI,4DAAM;AACV;AACA,wDAAU;AACV,IAAI,4DAAM;AACV;AACA,wDAAU;AACV,IAAI,4DAAM;AACV;AACA,4BAA4B,wDAAU,GAAG,qDAAO,IAAI,4DAAM,CAAC,yDAAW;AACtE,IAAI,qDAAO,IAAI,8DAAQ,KAAK,qDAAO,IAAI,4DAAM;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4CAAO;AACpC,+BAA+B,4CAAO;AACtC;AACA;AACA;AACA;AACA,6BAA6B,0DAAY;AACzC,6BAA6B,0DAAY;AACzC,8BAA8B,0DAAY;AAC1C,gCAAgC,0DAAY;AAC5C,gCAAgC,0DAAY;AAC5C,iCAAiC,0DAAY;AAC7C,+BAA+B,0DAAY;AAC3C,iCAAiC,0DAAY;AAC7C,+BAA+B,0DAAY;AAC3C,iCAAiC,0DAAY;AAC7C;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA,sBAAsB,gEAAS,kBAAkB,2EAAoB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB,sDAAS;AAC7B,8BAA8B,gEAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,oBAAoB,sDAAS;AAC7B,8BAA8B,gEAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,oBAAoB,kDAAK,CAAC,sDAAS;AACnC,8BAA8B,4DAAK,QAAQ,sDAAS;AACpD,8BAA8B,4DAAK,QAAQ,sDAAS;AACpD,8BAA8B,4DAAK,YAAY,sDAAS;AACxD,8BAA8B,4DAAK,aAAa,sDAAS;AACzD,8BAA8B,4DAAK,WAAW,sDAAS;AACvD,8BAA8B,4DAAK;AACnC,8BAA8B,gEAAS;AACvC;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,6CAA6C,+DAAwB,CAAC,oDAAa,GAAG,+DAAwB,CAAC,+DAAwB,GAAG,+DAAwB,CAAC,yDAAW,GAAG;AACjQ,iCAAiC,+DAAwB,EAAE,oIAAoI;AAC/L,QAAQ,yDAAkB;AAC1B,KAAK;AACL;AACA,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,KAAK,EAAE,uFAAuF;AAC9F,QAAQ,yDAAkB;AAC1B,KAAK,EAAE,WAAW,6IAA6I,YAAY,+RAA+R,0cAA0c;AACp5B,QAAQ,6DAAsB;AAC9B,QAAQ,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nB;gBACD,SAAS,EAAE;oBACT;wBACE,OAAO,EAAE,8EAAwB;wBACjC,QAAQ,EAAE,gCAAgC;qBAC3C;iBACF;aACF;;;;;;;;;;;;;;AClCD;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,EAAE;AACjB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA,iCAAiC,YAAY;AAC7C,mDAAmD,gBAAgB;AACnE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gCAAgC,6BAA6B,EAAE,aAAa;AAC5G,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qDAAqD,mCAAmC,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA,6CAA6C,gBAAgB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,WAAW,UAAU;AACrB,aAAa;AACb;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,6CAA6C,yBAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,kCAAkC,iEAAiE;AACnG;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,8CAA8C;AAC9C,CAAC;AACD;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,2CAA2C;AAC7E;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,eAAe,uBAAuB;AACtC;AACA,eAAe,yBAAyB;AACxC;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc,oEAAK,EAAC;;;;;;;;;;;;;AC/5BrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAiD;;;;;;;;;ICE/C,iFAEuB;;;IACvB,6EAEmB;;;IACnB,uEAEa;;ADFR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QACF;QAAA,4DAAI;QAEJ,mEAAmB;QACnB,gEAAO;QACP,qEAAG;QAAA,qEAAG;QAAA,uFAAsB;QAAA,4DAAI;QAAA,4DAAI;QACpC,sEAAI;QACF,sEAAI;QAAA,6FAAiC;QAAA,4DAAK;QAC1C,sEAAI;QAAA,2FAA0B;QAAA,4DAAK;QACnC,sEAAI;QAAA,yGAAyB;QAAA,4DAAK;QAClC,sEAAI;QAAA,kGAA4B;QAAA,4DAAK;QACrC,sEAAI;QAAA,+FAA8B;QAAA,4DAAK;QAEzC,4DAAK;QACP,4DAAO;QACP,4DAAO;;kID7BM,kBAAkB;cAJ9B,uDAAS;eAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,WAAW,EAAE,sBAAsB,wEAAW,CAAC,OAAO,kBAAkB;aACzE;;;;;;;;;;;;;AEND;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;;;;;ACzHD;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,yEAAyE,iCAAiC;AAC1G;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB,2BAA2B,EAAE;AACtD,wBAAwB,0BAA0B,EAAE;AACpD;AACA,GAAG;AACH;AACA;AACA;AACA,0BAA0B,4BAA4B,EAAE;AACxD,6BAA6B,+BAA+B,EAAE;AAC9D,GAAG;AACH;;AAEA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,wEAAwE,EAAE;AAC3F;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B,WAAW,qBAAqB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,0CAA0C;AAC9D;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,oDAAoD,+BAA+B,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,sBAAsB,EAAE;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yEAAyE,mBAAmB;AAC5F;AACA;AACA;AACA;AACA;AACA,yEAAyE,mBAAmB;AAC5F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,wDAAwD,4BAA4B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH,wDAAwD,4BAA4B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,oCAAoC,mCAAmC;AACvE,sCAAsC,2EAA2E;;AAEjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,+CAA+C;AAC1E,0BAA0B,kDAAkD;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA,4BAA4B,cAAc;AAC1C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","file":"src-app-main-main-module-es2015.js","sourcesContent":["import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { MainComponent } from './main.component';\nimport { SideLayoutComponent } from './side-layout/side-layout.component';\nimport { WidgetsLayoutComponent } from './widgets-layout/widgets-layout.component';\nimport { WindAtmosphereComponent } from './wind-atmosphere/wind-atmosphere.component';\nimport { HydrographyComponent } from './hydrography/hydrography.component';\nimport { WavesComponent } from './waves/waves.component';\nimport { MapDialogComponent } from './map-dialog/map-dialog.component';\nimport { AboutDialogComponent } from './about-dialog/about-dialog.component';\nimport { WindInfoComponent } from './wind-atmosphere/wind-info/wind-info.component';\nimport { HydrographyInfoComponent } from './hydrography/hydrography-info/hydrography-info.component';\nimport { WavesInfoComponent } from './waves/waves-info/waves-info.component';\n\nconst routes: Routes = [\n { path: '', component: MainComponent },\n { path: 'ondas', component: MainComponent, data: { blockToShow: 'waves' } },\n {\n path: 'hidrografia',\n component: MainComponent,\n data: { blockToShow: 'hydrography' },\n },\n {\n path: 'meteorologia',\n component: MainComponent,\n data: { blockToShow: 'windAtmosphere' },\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class MainRoutingModule {\n static components = [\n MainComponent,\n SideLayoutComponent,\n WidgetsLayoutComponent,\n WindAtmosphereComponent,\n HydrographyComponent,\n WavesComponent,\n MapDialogComponent,\n AboutDialogComponent,\n WindInfoComponent,\n WavesInfoComponent,\n HydrographyInfoComponent,\n ];\n}\n","/*\n Highcharts JS v8.2.2 (2020-10-22)\n\n (c) 2009-2018 Torstein Honsi\n\n License: www.highcharts.com/license\n*/\n(function(X,N){\"object\"===typeof module&&module.exports?(N[\"default\"]=N,module.exports=X.document?N(X):N):\"function\"===typeof define&&define.amd?define(\"highcharts/highcharts\",function(){return N(X)}):(X.Highcharts&&X.Highcharts.error(16,!0),X.Highcharts=N(X))})(\"undefined\"!==typeof window?window:this,function(X){function N(f,h,m,z){f.hasOwnProperty(h)||(f[h]=z.apply(null,m))}var m={};N(m,\"Core/Globals.js\",[],function(){var f=\"undefined\"!==typeof X?X:\"undefined\"!==typeof window?window:{},h=f.document,\nm=f.navigator&&f.navigator.userAgent||\"\",z=h&&h.createElementNS&&!!h.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\").createSVGRect,F=/(edge|msie|trident)/i.test(m)&&!f.opera,L=-1!==m.indexOf(\"Firefox\"),K=-1!==m.indexOf(\"Chrome\"),C=L&&4>parseInt(m.split(\"Firefox/\")[1],10);return{product:\"Highcharts\",version:\"8.2.2\",deg2rad:2*Math.PI/360,doc:h,hasBidiBug:C,hasTouch:!!f.TouchEvent,isMS:F,isWebKit:-1!==m.indexOf(\"AppleWebKit\"),isFirefox:L,isChrome:K,isSafari:!K&&-1!==m.indexOf(\"Safari\"),isTouchDevice:/(Mobile|Android|Windows Phone)/.test(m),\nSVG_NS:\"http://www.w3.org/2000/svg\",chartCount:0,seriesTypes:{},symbolSizes:{},svg:z,win:f,marginNames:[\"plotTop\",\"marginRight\",\"marginBottom\",\"plotLeft\"],noop:function(){},charts:[],dateFormats:{}}});N(m,\"Core/Utilities.js\",[m[\"Core/Globals.js\"]],function(f){function h(b,k,t,a){var u=k?\"Highcharts error\":\"Highcharts warning\";32===b&&(b=u+\": Deprecated member\");var c=l(b),H=c?u+\" #\"+b+\": www.highcharts.com/errors/\"+b+\"/\":b.toString();u=function(){if(k)throw Error(H);e.console&&-1===h.messages.indexOf(H)&&\nconsole.log(H)};if(\"undefined\"!==typeof a){var d=\"\";c&&(H+=\"?\");S(a,function(b,k){d+=\"\\n - \"+k+\": \"+b;c&&(H+=encodeURI(k)+\"=\"+encodeURI(b))});H+=d}t?ca(t,\"displayError\",{code:b,message:H,params:a},u):u();h.messages.push(H)}function m(){var b,k=arguments,t={},a=function(b,k){\"object\"!==typeof b&&(b={});S(k,function(t,u){!z(t,!0)||n(t)||D(t)?b[u]=k[u]:b[u]=a(b[u]||{},t)});return b};!0===k[0]&&(t=k[1],k=Array.prototype.slice.call(k,2));var u=k.length;for(b=0;bb&&-Infinity=a&&(k=[1/a])));for(u=0;u=b||!H&&d<=(k[u]+(k[u+1]||k[u]))/2);u++);return c=t(c*a,-Math.round(Math.log(.001)/Math.LN10))},O=f.stableSort=function(b,k){var t=b.length,a,u;for(u=0;ut&&(t=b[k]);return t},b=f.destroyObjectProperties=function(b,k){S(b,function(t,a){t&&t!==k&&t.destroy&&t.destroy();delete b[a]})},k=f.discardElement=function(b){var k=f.garbageBin;k||(k=q(\"div\"));b&&k.appendChild(b);k.innerHTML=\"\"},t=f.correctFloat=function(b,k){return parseFloat(b.toPrecision(k||14))},H=f.timeUnits={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5},R=\nf.numberFormat=function(b,k,t,a){b=+b||0;k=+k;var u=f.defaultOptions.lang,H=(b.toString().split(\".\")[1]||\"\").split(\"e\")[0].length,c=b.toString().split(\"e\");if(-1===k)k=Math.min(H,20);else if(!l(k))k=2;else if(k&&c[1]&&0>c[1]){var d=k+ +c[1];0<=d?(c[0]=(+c[0]).toExponential(d).split(\"e\")[0],k=d):(c[0]=c[0].split(\".\")[0]||0,b=20>k?(c[0]*Math.pow(10,c[1])).toFixed(k):0,c[1]=0)}var g=(Math.abs(c[1]?c[0]:b)+Math.pow(10,-Math.max(k,H)-1)).toFixed(k);H=String(I(g));d=3b?\"-\":\"\")+(d?H.substr(0,d)+a:\"\");b+=H.substr(d).replace(/(\\d{3})(?=\\d)/g,\"$1\"+a);k&&(b+=t+g.slice(-k));c[1]&&0!==+b&&(b+=\"e\"+c[1]);return b};Math.easeInOutSine=function(b){return-.5*(Math.cos(Math.PI*b)-1)};var U=f.getStyle=function(b,k,t){if(\"width\"===k)return k=Math.min(b.offsetWidth,b.scrollWidth),t=b.getBoundingClientRect&&b.getBoundingClientRect().width,t=k-1&&(k=Math.floor(t)),Math.max(0,k-f.getStyle(b,\"padding-left\")-f.getStyle(b,\"padding-right\"));if(\"height\"===\nk)return Math.max(0,Math.min(b.offsetHeight,b.scrollHeight)-f.getStyle(b,\"padding-top\")-f.getStyle(b,\"padding-bottom\"));e.getComputedStyle||h(27,!0);if(b=e.getComputedStyle(b,void 0))b=b.getPropertyValue(k),L(t,\"opacity\"!==k)&&(b=I(b));return b},Z=f.inArray=function(b,k,t){h(32,!1,void 0,{\"Highcharts.inArray\":\"use Array.indexOf\"});return k.indexOf(b,t)},aa=f.find=Array.prototype.find?function(b,k){return b.find(k)}:function(b,k){var t,a=b.length;for(t=0;tk?b>16,(f&65280)>>8,f&255,1]:4===e&&(C=[(f&3840)>>4|(f&3840)>>8,(f&240)>>4|f&240,(f&15)<<4|f&15,1])}if(!C)for(y=this.parsers.length;y--&&!C;){var I=\nthis.parsers[y];(e=I.regex.exec(f))&&(C=I.parse(e))}}this.rgba=C||[]};h.prototype.get=function(f){var h=this.input,y=this.rgba;if(\"undefined\"!==typeof this.stops){var e=z(h);e.stops=[].concat(e.stops);this.stops.forEach(function(I,v){e.stops[v]=[e.stops[v][0],I.get(f)]})}else e=y&&m(y[0])?\"rgb\"===f||!f&&1===y[3]?\"rgb(\"+y[0]+\",\"+y[1]+\",\"+y[2]+\")\":\"a\"===f?y[3]:\"rgba(\"+y.join(\",\")+\")\":h;return e};h.prototype.brighten=function(f){var h,y=this.rgba;if(this.stops)this.stops.forEach(function(e){e.brighten(f)});\nelse if(m(f)&&0!==f)for(h=0;3>h;h++)y[h]+=F(255*f),0>y[h]&&(y[h]=0),255e)for(var I=0;I=v+this.startTime){this.now=this.end;this.pos=1;this.update();var D=x[this.prop]=!0;F(x,function(n){!0!==n&&(D=!1)});D&&I&&I.call(e);f=!1}else this.pos=y.easing((h-this.startTime)/v),this.now=this.start+(this.end-this.start)*this.pos,this.update(),f=!0;return f};h.prototype.initPath=function(f,h,y){function e(r,d){for(;r.lengthk.width)k={width:0,height:0}}else k=this.htmlGetBBox();t.isSVG&&(a=k.width,t=k.height,A&&(k.height=t={\"11px,17\":14,\"13px,20\":16}[d&&d.fontSize+\",\"+Math.round(t)]||t),b&&(d=b*C,k.width=Math.abs(t*Math.sin(d))+Math.abs(a*Math.cos(d)),k.height=Math.abs(t*Math.cos(d))+\nMath.abs(a*Math.sin(d))));if(n&&0]*>/g,\"\").replace(/</g,\n\"<\").replace(/>/g,\">\")))};E.prototype.toFront=function(){var a=this.element;a.parentNode.appendChild(a);return this};E.prototype.translate=function(a,b){return this.attr({translateX:a,translateY:b})};E.prototype.updateShadows=function(a,b,k){var t=this.shadows;if(t)for(var c=t.length;c--;)k.call(t[c],\"height\"===a?Math.max(b-(t[c].cutHeight||0),0):\"d\"===a?this.d:b,a,t[c])};E.prototype.updateTransform=function(){var a=this.translateX||0,b=this.translateY||0,k=this.scaleX,t=this.scaleY,c=this.inverted,\nd=this.rotation,g=this.matrix,p=this.element;c&&(a+=this.width,b+=this.height);a=[\"translate(\"+a+\",\"+b+\")\"];r(g)&&a.push(\"matrix(\"+g.join(\",\")+\")\");c?a.push(\"rotate(90) scale(-1,1)\"):d&&a.push(\"rotate(\"+d+\" \"+M(this.rotationOriginX,p.getAttribute(\"x\"),0)+\" \"+M(this.rotationOriginY,p.getAttribute(\"y\")||0)+\")\");(r(k)||r(t))&&a.push(\"scale(\"+M(k,1)+\" \"+M(t,1)+\")\");a.length&&p.setAttribute(\"transform\",a.join(\" \"))};E.prototype.visibilitySetter=function(a,b,k){\"inherit\"===a?k.removeAttribute(b):this[b]!==\na&&k.setAttribute(b,a);this[b]=a};E.prototype.xGetter=function(a){\"circle\"===this.element.nodeName&&(\"x\"===a?a=\"cx\":\"y\"===a&&(a=\"cy\"));return this._defaultGetter(a)};E.prototype.zIndexSetter=function(a,b){var k=this.renderer,t=this.parentGroup,c=(t||k).element||k.box,d=this.element,g=!1;k=c===k.box;var p=this.added;var q;r(a)?(d.setAttribute(\"data-z-index\",a),a=+a,this[b]===a&&(p=!1)):r(this[b])&&d.removeAttribute(\"data-z-index\");this[b]=a;if(p){(a=this.zIndex)&&t&&(t.handleZ=!0);b=c.childNodes;for(q=\nb.length-1;0<=q&&!g;q--){t=b[q];p=t.getAttribute(\"data-z-index\");var u=!r(p);if(t!==d)if(0>a&&u&&!k&&!q)c.insertBefore(d,b[q]),g=!0;else if(T(p)<=a||u&&(!r(a)||0<=a))c.insertBefore(d,b[q+1]||null),g=!0}g||(c.insertBefore(d,b[k?3:0]||null),g=!0)}return g};return E}();f.prototype[\"stroke-widthSetter\"]=f.prototype.strokeSetter;f.prototype.yGetter=f.prototype.xGetter;f.prototype.matrixSetter=f.prototype.rotationOriginXSetter=f.prototype.rotationOriginYSetter=f.prototype.rotationSetter=f.prototype.scaleXSetter=\nf.prototype.scaleYSetter=f.prototype.translateXSetter=f.prototype.translateYSetter=f.prototype.verticalAlignSetter=function(a,c){this[c]=a;this.doTransform=!0};m.SVGElement=f;return m.SVGElement});N(m,\"Core/Renderer/SVG/SVGLabel.js\",[m[\"Core/Renderer/SVG/SVGElement.js\"],m[\"Core/Utilities.js\"]],function(f,h){var m=this&&this.__extends||function(){var f=function(e,I){f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,e){v.__proto__=e}||function(v,e){for(var f in e)e.hasOwnProperty(f)&&\n(v[f]=e[f])};return f(e,I)};return function(e,I){function v(){this.constructor=e}f(e,I);e.prototype=null===I?Object.create(I):(v.prototype=I.prototype,new v)}}(),z=h.defined,F=h.extend,L=h.isNumber,K=h.merge,C=h.removeEvent;return function(h){function e(f,v,x,D,n,l,J,w,r,d){var g=h.call(this)||this;g.init(f,\"g\");g.textStr=v;g.x=x;g.y=D;g.anchorX=l;g.anchorY=J;g.baseline=r;g.className=d;\"button\"!==d&&g.addClass(\"highcharts-label\");d&&g.addClass(\"highcharts-\"+d);g.text=f.text(\"\",0,0,w).attr({zIndex:1});\nif(\"string\"===typeof n){var c=/^url\\((.*?)\\)$/.test(n);if(g.renderer.symbols[n]||c)g.symbolKey=n}g.bBox=e.emptyBBox;g.padding=3;g.paddingLeft=0;g.baselineOffset=0;g.needsBox=f.styledMode||c;g.deferredAttr={};g.alignFactor=0;return g}m(e,h);e.prototype.alignSetter=function(e){e={left:0,center:.5,right:1}[e];e!==this.alignFactor&&(this.alignFactor=e,this.bBox&&L(this.xSetting)&&this.attr({x:this.xSetting}))};e.prototype.anchorXSetter=function(e,v){this.anchorX=e;this.boxAttr(v,Math.round(e)-this.getCrispAdjust()-\nthis.xSetting)};e.prototype.anchorYSetter=function(e,v){this.anchorY=e;this.boxAttr(v,e-this.ySetting)};e.prototype.boxAttr=function(e,v){this.box?this.box.attr(e,v):this.deferredAttr[e]=v};e.prototype.css=function(h){if(h){var v={};h=K(h);e.textProps.forEach(function(e){\"undefined\"!==typeof h[e]&&(v[e]=h[e],delete h[e])});this.text.css(v);var I=\"fontSize\"in v||\"fontWeight\"in v;if(\"width\"in v||I)this.updateBoxSize(),I&&this.updateTextPadding()}return f.prototype.css.call(this,h)};e.prototype.destroy=\nfunction(){C(this.element,\"mouseenter\");C(this.element,\"mouseleave\");this.text&&this.text.destroy();this.box&&(this.box=this.box.destroy());f.prototype.destroy.call(this)};e.prototype.fillSetter=function(e,v){e&&(this.needsBox=!0);this.fill=e;this.boxAttr(v,e)};e.prototype.getBBox=function(){var e=this.bBox,v=this.padding;return{width:e.width+2*v,height:e.height+2*v,x:e.x-v,y:e.y-v}};e.prototype.getCrispAdjust=function(){return this.renderer.styledMode&&this.box?this.box.strokeWidth()%2/2:(this[\"stroke-width\"]?\nparseInt(this[\"stroke-width\"],10):0)%2/2};e.prototype.heightSetter=function(e){this.heightSetting=e};e.prototype.on=function(e,v){var h=this,D=h.text,n=D&&\"SPAN\"===D.element.tagName?D:void 0;if(n){var l=function(l){(\"mouseenter\"===e||\"mouseleave\"===e)&&l.relatedTarget instanceof Element&&(h.element.contains(l.relatedTarget)||n.element.contains(l.relatedTarget))||v.call(h.element,l)};n.on(e,l)}f.prototype.on.call(h,e,l||v);return h};e.prototype.onAdd=function(){var e=this.textStr;this.text.add(this);\nthis.attr({text:z(e)?e:\"\",x:this.x,y:this.y});this.box&&z(this.anchorX)&&this.attr({anchorX:this.anchorX,anchorY:this.anchorY})};e.prototype.paddingSetter=function(e){z(e)&&e!==this.padding&&(this.padding=e,this.updateTextPadding())};e.prototype.paddingLeftSetter=function(e){z(e)&&e!==this.paddingLeft&&(this.paddingLeft=e,this.updateTextPadding())};e.prototype.rSetter=function(e,v){this.boxAttr(v,e)};e.prototype.shadow=function(e){e&&!this.renderer.styledMode&&(this.updateBoxSize(),this.box&&this.box.shadow(e));\nreturn this};e.prototype.strokeSetter=function(e,v){this.stroke=e;this.boxAttr(v,e)};e.prototype[\"stroke-widthSetter\"]=function(e,v){e&&(this.needsBox=!0);this[\"stroke-width\"]=e;this.boxAttr(v,e)};e.prototype[\"text-alignSetter\"]=function(e){this.textAlign=e};e.prototype.textSetter=function(e){\"undefined\"!==typeof e&&this.text.attr({text:e});this.updateBoxSize();this.updateTextPadding()};e.prototype.updateBoxSize=function(){var f=this.text.element.style,v={},h=this.padding,D=this.paddingLeft,n=L(this.widthSetting)&&\nL(this.heightSetting)&&!this.textAlign||!z(this.text.textStr)?e.emptyBBox:this.text.getBBox();this.width=(this.widthSetting||n.width||0)+2*h+D;this.height=(this.heightSetting||n.height||0)+2*h;this.baselineOffset=h+Math.min(this.renderer.fontMetrics(f&&f.fontSize,this.text).b,n.height||Infinity);this.needsBox&&(this.box||(f=this.box=this.symbolKey?this.renderer.symbol(this.symbolKey):this.renderer.rect(),f.addClass((\"button\"===this.className?\"\":\"highcharts-label-box\")+(this.className?\" highcharts-\"+\nthis.className+\"-box\":\"\")),f.add(this),f=this.getCrispAdjust(),v.x=f,v.y=(this.baseline?-this.baselineOffset:0)+f),v.width=Math.round(this.width),v.height=Math.round(this.height),this.box.attr(F(v,this.deferredAttr)),this.deferredAttr={});this.bBox=n};e.prototype.updateTextPadding=function(){var e=this.text,f=this.baseline?0:this.baselineOffset,h=this.paddingLeft+this.padding;z(this.widthSetting)&&this.bBox&&(\"center\"===this.textAlign||\"right\"===this.textAlign)&&(h+={center:.5,right:1}[this.textAlign]*\n(this.widthSetting-this.bBox.width));if(h!==e.x||f!==e.y)e.attr(\"x\",h),e.hasBoxWidthChanged&&(this.bBox=e.getBBox(!0),this.updateBoxSize()),\"undefined\"!==typeof f&&e.attr(\"y\",f);e.x=h;e.y=f};e.prototype.widthSetter=function(e){this.widthSetting=L(e)?e:void 0};e.prototype.xSetter=function(e){this.x=e;this.alignFactor&&(e-=this.alignFactor*((this.widthSetting||this.bBox.width)+2*this.padding),this[\"forceAnimate:x\"]=!0);this.xSetting=Math.round(e);this.attr(\"translateX\",this.xSetting)};e.prototype.ySetter=\nfunction(e){this.ySetting=this.y=Math.round(e);this.attr(\"translateY\",this.ySetting)};e.emptyBBox={width:0,height:0,x:0,y:0};e.textProps=\"color cursor direction fontFamily fontSize fontStyle fontWeight lineHeight textAlign textDecoration textOutline textOverflow width\".split(\" \");return e}(f)});N(m,\"Core/Renderer/SVG/SVGRenderer.js\",[m[\"Core/Color/Color.js\"],m[\"Core/Globals.js\"],m[\"Core/Renderer/SVG/SVGElement.js\"],m[\"Core/Renderer/SVG/SVGLabel.js\"],m[\"Core/Utilities.js\"]],function(f,h,m,z,F){var P=\nF.addEvent,K=F.attr,C=F.createElement,y=F.css,e=F.defined,I=F.destroyObjectProperties,v=F.extend,x=F.isArray,D=F.isNumber,n=F.isObject,l=F.isString,J=F.merge,w=F.objectEach,r=F.pick,d=F.pInt,g=F.splat,c=F.uniqueKey,a=h.charts,q=h.deg2rad,p=h.doc,B=h.isFirefox,A=h.isMS,G=h.isWebKit;F=h.noop;var M=h.svg,T=h.SVG_NS,Q=h.symbolSizes,O=h.win,E=function(){function u(b,k,a,c,d,g,p){this.width=this.url=this.style=this.isSVG=this.imgCount=this.height=this.gradients=this.globalAnimation=this.defs=this.chartIndex=\nthis.cacheKeys=this.cache=this.boxWrapper=this.box=this.alignedObjects=void 0;this.init(b,k,a,c,d,g,p)}u.prototype.init=function(b,k,a,c,d,g,q){var t=this.createElement(\"svg\").attr({version:\"1.1\",\"class\":\"highcharts-root\"});q||t.css(this.getStyle(c));c=t.element;b.appendChild(c);K(b,\"dir\",\"ltr\");-1===b.innerHTML.indexOf(\"xmlns\")&&K(c,\"xmlns\",this.SVG_NS);this.isSVG=!0;this.box=c;this.boxWrapper=t;this.alignedObjects=[];this.url=(B||G)&&p.getElementsByTagName(\"base\").length?O.location.href.split(\"#\")[0].replace(/<[^>]*>/g,\n\"\").replace(/([\\('\\)])/g,\"\\\\$1\").replace(/ /g,\"%20\"):\"\";this.createElement(\"desc\").add().element.appendChild(p.createTextNode(\"Created with Highcharts 8.2.2\"));this.defs=this.createElement(\"defs\").add();this.allowHTML=g;this.forExport=d;this.styledMode=q;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(k,a,!1);var H;B&&b.getBoundingClientRect&&(k=function(){y(b,{left:0,top:0});H=b.getBoundingClientRect();y(b,{left:Math.ceil(H.left)-H.left+\"px\",top:Math.ceil(H.top)-H.top+\n\"px\"})},k(),this.unSubPixelFix=P(O,\"resize\",k))};u.prototype.definition=function(b){function k(b,t){var c;g(b).forEach(function(b){var d=a.createElement(b.tagName),g={};w(b,function(b,k){\"tagName\"!==k&&\"children\"!==k&&\"textContent\"!==k&&(g[k]=b)});d.attr(g);d.add(t||a.defs);b.textContent&&d.element.appendChild(p.createTextNode(b.textContent));k(b.children||[],d);c=d});return c}var a=this;return k(b)};u.prototype.getStyle=function(b){return this.style=v({fontFamily:'\"Lucida Grande\", \"Lucida Sans Unicode\", Arial, Helvetica, sans-serif',\nfontSize:\"12px\"},b)};u.prototype.setStyle=function(b){this.boxWrapper.css(this.getStyle(b))};u.prototype.isHidden=function(){return!this.boxWrapper.getBBox().width};u.prototype.destroy=function(){var b=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();I(this.gradients||{});this.gradients=null;b&&(this.defs=b.destroy());this.unSubPixelFix&&this.unSubPixelFix();return this.alignedObjects=null};u.prototype.createElement=function(b){var k=new this.Element;k.init(this,b);return k};u.prototype.getRadialAttr=\nfunction(b,k){return{cx:b[0]-b[2]/2+k.cx*b[2],cy:b[1]-b[2]/2+k.cy*b[2],r:k.r*b[2]}};u.prototype.truncate=function(b,k,a,c,d,g,q){var t=this,H=b.rotation,R,u=c?1:0,A=(a||c).length,r=A,B=[],n=function(b){k.firstChild&&k.removeChild(k.firstChild);b&&k.appendChild(p.createTextNode(b))},l=function(g,p){p=p||g;if(\"undefined\"===typeof B[p])if(k.getSubStringLength)try{B[p]=d+k.getSubStringLength(0,c?p+1:p)}catch(ja){\"\"}else t.getSpanWidth&&(n(q(a||c,g)),B[p]=d+t.getSpanWidth(b,k));return B[p]},e;b.rotation=\n0;var w=l(k.textContent.length);if(e=d+w>g){for(;u<=A;)r=Math.ceil((u+A)/2),c&&(R=q(c,r)),w=l(r,R&&R.length-1),u===A?u=A+1:w>g?A=r-1:u=r;0===A?n(\"\"):a&&A===a.length-1||n(R||q(a||c,r))}c&&c.splice(0,r);b.actualWidth=w;b.rotation=H;return e};u.prototype.buildText=function(b){var k=b.element,a=this,c=a.forExport,g=r(b.textStr,\"\").toString(),q=-1!==g.indexOf(\"<\"),u=k.childNodes,A,B=K(k,\"x\"),n=b.styles,e=b.textWidth,G=n&&n.lineHeight,f=n&&n.textOutline,V=n&&\"ellipsis\"===n.textOverflow,E=n&&\"nowrap\"===\nn.whiteSpace,h=n&&n.fontSize,v,D=u.length;n=e&&!b.added&&this.box;var O=function(b){var t;a.styledMode||(t=/(px|em)$/.test(b&&b.style.fontSize)?b.style.fontSize:h||a.style.fontSize||12);return G?d(G):a.fontMetrics(t,b.getAttribute(\"style\")?b:k).h},J=function(b,k){w(a.escapes,function(a,t){k&&-1!==k.indexOf(a)||(b=b.toString().replace(new RegExp(a,\"g\"),t))});return b},x=function(b,k){var a=b.indexOf(\"<\");b=b.substring(a,b.indexOf(\">\")-a);a=b.indexOf(k+\"=\");if(-1!==a&&(a=a+k.length+1,k=b.charAt(a),\n'\"'===k||\"'\"===k))return b=b.substring(a+1),b.substring(0,b.indexOf(k))},I=//g;var m=[g,V,E,G,f,h,e].join();if(m!==b.textCache){for(b.textCache=m;D--;)k.removeChild(u[D]);q||f||V||e||-1!==g.indexOf(\" \")&&(!E||I.test(g))?(n&&n.appendChild(k),q?(g=a.styledMode?g.replace(/<(b|strong)>/g,'').replace(/<(i|em)>/g,''):g.replace(/<(b|strong)>/g,'').replace(/<(i|em)>/g,''),\ng=g.replace(//g,\"\").split(I)):g=[g],g=g.filter(function(b){return\"\"!==b}),g.forEach(function(t,d){var g=0,H=0;t=t.replace(/^\\s+|\\s+$/g,\"\").replace(//g,\"|||\");var q=t.split(\"|||\");q.forEach(function(t){if(\"\"!==t||1===q.length){var R={},u=p.createElementNS(a.SVG_NS,\"tspan\"),n,r;(n=x(t,\"class\"))&&K(u,\"class\",n);if(n=x(t,\"style\"))n=n.replace(/(;| |^)color([ :])/,\"$1fill$2\"),K(u,\"style\",n);if((r=x(t,\"href\"))&&\n!c&&-1===r.split(\":\")[0].toLowerCase().indexOf(\"javascript\")){var l=p.createElementNS(a.SVG_NS,\"a\");K(l,\"href\",r);K(u,\"class\",\"highcharts-anchor\");l.appendChild(u);a.styledMode||y(u,{cursor:\"pointer\"})}t=J(t.replace(/<[a-zA-Z\\/](.|\\n)*?>/g,\"\")||\" \");if(\" \"!==t){u.appendChild(p.createTextNode(t));g?R.dx=0:d&&null!==B&&(R.x=B);K(u,R);k.appendChild(l||u);!g&&v&&(!M&&c&&y(u,{display:\"block\"}),K(u,\"dy\",O(u)));if(e){var w=t.replace(/([^\\^])-/g,\"$1- \").split(\" \");R=!E&&(1b?b+3:Math.round(1.2*b);return{h:k,b:Math.round(.8*k),f:b}};u.prototype.rotCorr=function(b,k,a){var t=b;k&&a&&(t=Math.max(t*Math.cos(k*q),4));\nreturn{x:-b/3*Math.sin(k*q),y:t}};u.prototype.pathToSegments=function(b){for(var k=[],a=[],c={A:8,C:7,H:2,L:3,M:3,Q:5,S:5,T:3,V:2},d=0;d\":\">\",\"'\":\"'\",'\"':\""\"};E.prototype.symbols={circle:function(a,b,k,t){return this.arc(a+k/2,b+t/2,k/2,t/2,{start:.5*Math.PI,end:2.5*Math.PI,open:!1})},square:function(a,b,k,t){return[[\"M\",a,b],[\"L\",a+k,b],[\"L\",a+k,b+t],[\"L\",a,b+t],[\"Z\"]]},triangle:function(a,b,k,t){return[[\"M\",a+k/2,b],[\"L\",a+k,b+t],[\"L\",a,b+t],[\"Z\"]]},\"triangle-down\":function(a,b,k,t){return[[\"M\",a,b],[\"L\",a+k,b],[\"L\",a+k/2,b+t],[\"Z\"]]},diamond:function(a,\nb,k,t){return[[\"M\",a+k/2,b],[\"L\",a+k,b+t/2],[\"L\",a+k/2,b+t],[\"L\",a,b+t/2],[\"Z\"]]},arc:function(a,b,k,t,c){var d=[];if(c){var g=c.start||0,p=c.end||0,q=c.r||k;k=c.r||t||k;var H=.001>Math.abs(p-g-2*Math.PI);p-=.001;t=c.innerR;H=r(c.open,H);var u=Math.cos(g),B=Math.sin(g),n=Math.cos(p),A=Math.sin(p);g=r(c.longArc,.001>p-g-Math.PI?0:1);d.push([\"M\",a+q*u,b+k*B],[\"A\",q,k,0,g,r(c.clockwise,1),a+q*n,b+k*A]);e(t)&&d.push(H?[\"M\",a+t*n,b+t*A]:[\"L\",a+t*n,b+t*A],[\"A\",t,t,0,g,e(c.clockwise)?1-c.clockwise:0,a+t*\nu,b+t*B]);H||d.push([\"Z\"])}return d},callout:function(a,b,k,t,c){var d=Math.min(c&&c.r||0,k,t),g=d+6,p=c&&c.anchorX||0;c=c&&c.anchorY||0;var q=[[\"M\",a+d,b],[\"L\",a+k-d,b],[\"C\",a+k,b,a+k,b,a+k,b+d],[\"L\",a+k,b+t-d],[\"C\",a+k,b+t,a+k,b+t,a+k-d,b+t],[\"L\",a+d,b+t],[\"C\",a,b+t,a,b+t,a,b+t-d],[\"L\",a,b+d],[\"C\",a,b,a,b,a+d,b]];p&&p>k?c>b+g&&cp?c>b+g&&ct&&p>a+g&&pc&&p>a+g&&pthis.oldTextWidth)&&((c=this.textPxLength)||(z(f,{width:\"\",whiteSpace:r||\"nowrap\"}),c=f.offsetWidth),c=c>d);c&&(/[ \\-]/.test(f.textContent||f.innerText)||\"ellipsis\"===f.style.textOverflow)?(z(f,{width:d+\"px\",display:\"block\",whiteSpace:r||\"normal\"}),this.oldTextWidth=d,this.hasBoxWidthChanged=!0):this.hasBoxWidthChanged=!1;g!==this.cTT&&(r=e.fontMetrics(f.style.fontSize,f).b,!F(w)||w===(this.oldRotation||\n0)&&l===this.oldAlign||this.setSpanRotation(w,J,r),this.getSpanCorrection(!F(w)&&this.textPxLength||f.offsetWidth,r,J,w,l));z(f,{left:D+(this.xCorr||0)+\"px\",top:n+(this.yCorr||0)+\"px\"});this.cTT=g;this.oldRotation=w;this.oldAlign=l}}else this.alignOnAdd=!0},setSpanRotation:function(e,f,h){var v={},D=this.renderer.getTransformKey();v[D]=v.transform=\"rotate(\"+e+\"deg)\";v[D+(y?\"Origin\":\"-origin\")]=v.transformOrigin=100*f+\"% \"+h+\"px\";z(this.element,v)},getSpanCorrection:function(e,f,h){this.xCorr=-e*h;\nthis.yCorr=-f}});return h});N(m,\"Core/Renderer/HTML/HTMLRenderer.js\",[m[\"Core/Globals.js\"],m[\"Core/Renderer/SVG/SVGElement.js\"],m[\"Core/Renderer/SVG/SVGRenderer.js\"],m[\"Core/Utilities.js\"]],function(f,h,m,z){var F=f.isFirefox,P=f.isMS,K=f.isWebKit,C=f.win,y=z.attr,e=z.createElement,I=z.extend,v=z.pick;I(m.prototype,{getTransformKey:function(){return P&&!/Edge/.test(C.navigator.userAgent)?\"-ms-transform\":K?\"-webkit-transform\":F?\"MozTransform\":C.opera?\"-o-transform\":\"\"},html:function(f,D,n){var l=this.createElement(\"span\"),\nJ=l.element,w=l.renderer,r=w.isSVG,d=function(d,c){[\"opacity\",\"visibility\"].forEach(function(a){d[a+\"Setter\"]=function(g,p,B){var q=d.div?d.div.style:c;h.prototype[a+\"Setter\"].call(this,g,p,B);q&&(q[p]=g)}});d.addedSetters=!0};l.textSetter=function(d){d!==J.innerHTML&&(delete this.bBox,delete this.oldTextWidth);this.textStr=d;J.innerHTML=v(d,\"\");l.doTransform=!0};r&&d(l,l.element.style);l.xSetter=l.ySetter=l.alignSetter=l.rotationSetter=function(d,c){\"align\"===c?l.alignValue=l.textAlign=d:l[c]=d;\nl.doTransform=!0};l.afterSetters=function(){this.doTransform&&(this.htmlUpdateTransform(),this.doTransform=!1)};l.attr({text:f,x:Math.round(D),y:Math.round(n)}).css({position:\"absolute\"});w.styledMode||l.css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});J.style.whiteSpace=\"nowrap\";l.css=l.htmlCss;r&&(l.add=function(g){var c=w.box.parentNode,a=[];if(this.parentGroup=g){var q=g.div;if(!q){for(;g;)a.push(g),g=g.parentGroup;a.reverse().forEach(function(g){function p(a,c){g[c]=a;\"translateX\"===\nc?r.left=a+\"px\":r.top=a+\"px\";g.doTransform=!0}var n=y(g.element,\"class\");q=g.div=g.div||e(\"div\",n?{className:n}:void 0,{position:\"absolute\",left:(g.translateX||0)+\"px\",top:(g.translateY||0)+\"px\",display:g.display,opacity:g.opacity,pointerEvents:g.styles&&g.styles.pointerEvents},q||c);var r=q.style;I(g,{classSetter:function(a){return function(c){this.element.setAttribute(\"class\",c);a.className=c}}(q),on:function(){a[0].div&&l.on.apply({element:a[0].div},arguments);return g},translateXSetter:p,translateYSetter:p});\ng.addedSetters||d(g)})}}else q=c;q.appendChild(J);l.added=!0;l.alignOnAdd&&l.htmlUpdateTransform();return l});return l}});return m});N(m,\"Core/Axis/Tick.js\",[m[\"Core/Globals.js\"],m[\"Core/Utilities.js\"]],function(f,h){var m=h.clamp,z=h.correctFloat,F=h.defined,L=h.destroyObjectProperties,K=h.extend,C=h.fireEvent,y=h.isNumber,e=h.merge,I=h.objectEach,v=h.pick,x=f.deg2rad;h=function(){function f(n,l,e,w,r){this.isNewLabel=this.isNew=!0;this.axis=n;this.pos=l;this.type=e||\"\";this.parameters=r||{};this.tickmarkOffset=\nthis.parameters.tickmarkOffset;this.options=this.parameters.options;C(this,\"init\");e||w||this.addLabel()}f.prototype.addLabel=function(){var n=this,l=n.axis,e=l.options,w=l.chart,r=l.categories,d=l.logarithmic,g=l.names,c=n.pos,a=v(n.options&&n.options.labels,e.labels),q=l.tickPositions,p=c===q[0],B=c===q[q.length-1];g=this.parameters.category||(r?v(r[c],g[c],c):c);var A=n.label;r=(!a.step||1===a.step)&&1===l.tickInterval;q=q.info;var f,h;if(l.dateTime&&q){var D=w.time.resolveDTLFormat(e.dateTimeLabelFormats[!e.grid&&\nq.higherRanks[c]||q.unitName]);var x=D.main}n.isFirst=p;n.isLast=B;n.formatCtx={axis:l,chart:w,isFirst:p,isLast:B,dateTimeLabelFormat:x,tickPositionInfo:q,value:d?z(d.lin2log(g)):g,pos:c};e=l.labelFormatter.call(n.formatCtx,this.formatCtx);if(h=D&&D.list)n.shortenLabel=function(){for(f=0;fa&&w-q*pd&&(h=Math.round((r-w)/Math.cos(a*x)));else if(r=w+(1-q)*p,w-q*pd&&(A=d-n.x+A*q,G=-1),A=Math.min(B,A),AA||e.autoRotation&&(c.styles||{}).width)h=A;h&&(this.shortenLabel?this.shortenLabel():(D.width=Math.floor(h)+\"px\",(f.style||{}).textOverflow||(D.textOverflow=\n\"ellipsis\"),c.css(D)))};f.prototype.moveLabel=function(n,e){var l=this,w=l.label,r=!1,d=l.axis,g=d.reversed;w&&w.textStr===n?(l.movedLabel=w,r=!0,delete l.label):I(d.ticks,function(a){r||a.isNew||a===l||!a.label||a.label.textStr!==n||(l.movedLabel=a.label,r=!0,a.labelPos=l.movedLabel.xy,delete a.label)});if(!r&&(l.labelPos||w)){var c=l.labelPos||w.xy;w=d.horiz?g?0:d.width+d.left:c.x;d=d.horiz?c.y:g?d.width+d.left:0;l.movedLabel=l.createLabel({x:w,y:d},n,e);l.movedLabel&&l.movedLabel.attr({opacity:0})}};\nf.prototype.render=function(e,l,f){var n=this.axis,r=n.horiz,d=this.pos,g=v(this.tickmarkOffset,n.tickmarkOffset);d=this.getPosition(r,d,g,l);g=d.x;var c=d.y;n=r&&g===n.pos+n.len||!r&&c===n.pos?-1:1;f=v(f,1);this.isActive=!0;this.renderGridLine(l,f,n);this.renderMark(d,f,n);this.renderLabel(d,l,f,e);this.isNew=!1;C(this,\"afterRender\")};f.prototype.renderGridLine=function(n,e,f){var l=this.axis,r=l.options,d=this.gridLine,g={},c=this.pos,a=this.type,q=v(this.tickmarkOffset,l.tickmarkOffset),p=l.chart.renderer,\nB=a?a+\"Grid\":\"grid\",A=r[B+\"LineWidth\"],G=r[B+\"LineColor\"];r=r[B+\"LineDashStyle\"];d||(l.chart.styledMode||(g.stroke=G,g[\"stroke-width\"]=A,r&&(g.dashstyle=r)),a||(g.zIndex=1),n&&(e=0),this.gridLine=d=p.path().attr(g).addClass(\"highcharts-\"+(a?a+\"-\":\"\")+\"grid-line\").add(l.gridGroup));if(d&&(f=l.getPlotLinePath({value:c+q,lineWidth:d.strokeWidth()*f,force:\"pass\",old:n})))d[n||this.isNew?\"attr\":\"animate\"]({d:f,opacity:e})};f.prototype.renderMark=function(n,e,f){var l=this.axis,r=l.options,d=l.chart.renderer,\ng=this.type,c=g?g+\"Tick\":\"tick\",a=l.tickSize(c),q=this.mark,p=!q,B=n.x;n=n.y;var A=v(r[c+\"Width\"],!g&&l.isXAxis?1:0);r=r[c+\"Color\"];a&&(l.opposite&&(a[0]=-a[0]),p&&(this.mark=q=d.path().addClass(\"highcharts-\"+(g?g+\"-\":\"\")+\"tick\").add(l.axisGroup),l.chart.styledMode||q.attr({stroke:r,\"stroke-width\":A})),q[p?\"attr\":\"animate\"]({d:this.getMarkPath(B,n,a[0],q.strokeWidth()*f,l.horiz,d),opacity:e}))};f.prototype.renderLabel=function(e,l,f,w){var n=this.axis,d=n.horiz,g=n.options,c=this.label,a=g.labels,\nq=a.step;n=v(this.tickmarkOffset,n.tickmarkOffset);var p=!0,B=e.x;e=e.y;c&&y(B)&&(c.xy=e=this.getLabelPosition(B,e,c,d,a,n,w,q),this.isFirst&&!this.isLast&&!v(g.showFirstLabel,1)||this.isLast&&!this.isFirst&&!v(g.showLastLabel,1)?p=!1:!d||a.step||a.rotation||l||0===f||this.handleOverflow(e),q&&w%q&&(p=!1),p&&y(e.y)?(e.opacity=f,c[this.isNewLabel?\"attr\":\"animate\"](e),this.isNewLabel=!1):(c.attr(\"y\",-9999),this.isNewLabel=!0))};f.prototype.replaceMovedLabel=function(){var e=this.label,l=this.axis,f=\nl.reversed;if(e&&!this.isNew){var w=l.horiz?f?l.left:l.width+l.left:e.xy.x;f=l.horiz?e.xy.y:f?l.width+l.top:l.top;e.animate({x:w,y:f,opacity:0},void 0,e.destroy);delete this.label}l.isDirty=!0;this.label=this.movedLabel;delete this.movedLabel};return f}();f.Tick=h;return f.Tick});N(m,\"Core/Time.js\",[m[\"Core/Globals.js\"],m[\"Core/Utilities.js\"]],function(f,h){var m=h.defined,z=h.error,F=h.extend,L=h.isObject,K=h.merge,C=h.objectEach,y=h.pad,e=h.pick,I=h.splat,v=h.timeUnits,x=f.win;h=function(){function h(e){this.options=\n{};this.variableTimezone=this.useUTC=!1;this.Date=x.Date;this.getTimezoneOffset=this.timezoneOffsetFunction();this.update(e)}h.prototype.get=function(e,l){if(this.variableTimezone||this.timezoneOffset){var n=l.getTime(),f=n-this.getTimezoneOffset(l);l.setTime(f);e=l[\"getUTC\"+e]();l.setTime(n);return e}return this.useUTC?l[\"getUTC\"+e]():l[\"get\"+e]()};h.prototype.set=function(e,l,f){if(this.variableTimezone||this.timezoneOffset){if(\"Milliseconds\"===e||\"Seconds\"===e||\"Minutes\"===e)return l[\"setUTC\"+\ne](f);var n=this.getTimezoneOffset(l);n=l.getTime()-n;l.setTime(n);l[\"setUTC\"+e](f);e=this.getTimezoneOffset(l);n=l.getTime()+e;return l.setTime(n)}return this.useUTC?l[\"setUTC\"+e](f):l[\"set\"+e](f)};h.prototype.update=function(n){var l=e(n&&n.useUTC,!0);this.options=n=K(!0,this.options||{},n);this.Date=n.Date||x.Date||Date;this.timezoneOffset=(this.useUTC=l)&&n.timezoneOffset;this.getTimezoneOffset=this.timezoneOffsetFunction();this.variableTimezone=!(l&&!n.getTimezoneOffset&&!n.timezone)};h.prototype.makeTime=\nfunction(n,l,h,w,r,d){if(this.useUTC){var g=this.Date.UTC.apply(0,arguments);var c=this.getTimezoneOffset(g);g+=c;var a=this.getTimezoneOffset(g);c!==a?g+=a-c:c-36E5!==this.getTimezoneOffset(g-36E5)||f.isSafari||(g-=36E5)}else g=(new this.Date(n,l,e(h,1),e(w,0),e(r,0),e(d,0))).getTime();return g};h.prototype.timezoneOffsetFunction=function(){var e=this,l=this.options,f=l.moment||x.moment;if(!this.useUTC)return function(e){return 6E4*(new Date(e.toString())).getTimezoneOffset()};if(l.timezone){if(f)return function(e){return 6E4*\n-f.tz(e,l.timezone).utcOffset()};z(25)}return this.useUTC&&l.getTimezoneOffset?function(e){return 6E4*l.getTimezoneOffset(e.valueOf())}:function(){return 6E4*(e.timezoneOffset||0)}};h.prototype.dateFormat=function(n,l,h){var w;if(!m(l)||isNaN(l))return(null===(w=f.defaultOptions.lang)||void 0===w?void 0:w.invalidDate)||\"\";n=e(n,\"%Y-%m-%d %H:%M:%S\");var r=this;w=new this.Date(l);var d=this.get(\"Hours\",w),g=this.get(\"Day\",w),c=this.get(\"Date\",w),a=this.get(\"Month\",w),q=this.get(\"FullYear\",w),p=f.defaultOptions.lang,\nB=null===p||void 0===p?void 0:p.weekdays,A=null===p||void 0===p?void 0:p.shortWeekdays;w=F({a:A?A[g]:B[g].substr(0,3),A:B[g],d:y(c),e:y(c,2,\" \"),w:g,b:p.shortMonths[a],B:p.months[a],m:y(a+1),o:a+1,y:q.toString().substr(2,2),Y:q,H:y(d),k:d,I:y(d%12||12),l:d%12||12,M:y(this.get(\"Minutes\",w)),p:12>d?\"AM\":\"PM\",P:12>d?\"am\":\"pm\",S:y(w.getSeconds()),L:y(Math.floor(l%1E3),3)},f.dateFormats);C(w,function(a,c){for(;-1!==n.indexOf(\"%\"+c);)n=n.replace(\"%\"+c,\"function\"===typeof a?a.call(r,l):a)});return h?n.substr(0,\n1).toUpperCase()+n.substr(1):n};h.prototype.resolveDTLFormat=function(e){return L(e,!0)?e:(e=I(e),{main:e[0],from:e[1],to:e[2]})};h.prototype.getTimeTicks=function(n,l,f,h){var r=this,d=[],g={};var c=new r.Date(l);var a=n.unitRange,q=n.count||1,p;h=e(h,1);if(m(l)){r.set(\"Milliseconds\",c,a>=v.second?0:q*Math.floor(r.get(\"Milliseconds\",c)/q));a>=v.second&&r.set(\"Seconds\",c,a>=v.minute?0:q*Math.floor(r.get(\"Seconds\",c)/q));a>=v.minute&&r.set(\"Minutes\",c,a>=v.hour?0:q*Math.floor(r.get(\"Minutes\",c)/q));\na>=v.hour&&r.set(\"Hours\",c,a>=v.day?0:q*Math.floor(r.get(\"Hours\",c)/q));a>=v.day&&r.set(\"Date\",c,a>=v.month?1:Math.max(1,q*Math.floor(r.get(\"Date\",c)/q)));if(a>=v.month){r.set(\"Month\",c,a>=v.year?0:q*Math.floor(r.get(\"Month\",c)/q));var B=r.get(\"FullYear\",c)}a>=v.year&&r.set(\"FullYear\",c,B-B%q);a===v.week&&(B=r.get(\"Day\",c),r.set(\"Date\",c,r.get(\"Date\",c)-B+h+(B4*v.month||\nr.getTimezoneOffset(l)!==r.getTimezoneOffset(f));l=c.getTime();for(c=1;ld.length&&d.forEach(function(a){0===a%18E5&&\"000000000\"===r.dateFormat(\"%H%M%S%L\",a)&&(g[a]=\"day\")})}d.info=F(n,{higherRanks:g,totalRange:a*q});return d};return h}();f.Time=h;return f.Time});N(m,\"Core/Options.js\",\n[m[\"Core/Globals.js\"],m[\"Core/Color/Color.js\"],m[\"Core/Time.js\"],m[\"Core/Utilities.js\"]],function(f,h,m,z){var F=f.isTouchDevice,P=f.svg;h=h.parse;z=z.merge;\"\";f.defaultOptions={colors:\"#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1\".split(\" \"),symbols:[\"circle\",\"diamond\",\"square\",\"triangle\",\"triangle-down\"],lang:{loading:\"Loading...\",months:\"January February March April May June July August September October November December\".split(\" \"),shortMonths:\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\".split(\" \"),\nweekdays:\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),decimalPoint:\".\",numericSymbols:\"kMGTPE\".split(\"\"),resetZoom:\"Reset zoom\",resetZoomTitle:\"Reset zoom level 1:1\",thousandsSep:\" \"},global:{},time:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},chart:{styledMode:!1,borderRadius:0,colorCount:10,defaultSeriesType:\"line\",ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{zIndex:6},position:{align:\"right\",x:-10,y:10}},width:null,\nheight:null,borderColor:\"#335cad\",backgroundColor:\"#ffffff\",plotBorderColor:\"#cccccc\"},title:{text:\"Chart title\",align:\"center\",margin:15,widthAdjust:-44},subtitle:{text:\"\",align:\"center\",widthAdjust:-44},caption:{margin:15,text:\"\",align:\"left\",verticalAlign:\"bottom\"},plotOptions:{},labels:{style:{position:\"absolute\",color:\"#333333\"}},legend:{enabled:!0,align:\"center\",alignColumns:!0,layout:\"horizontal\",labelFormatter:function(){return this.name},borderColor:\"#999999\",borderRadius:0,navigation:{activeColor:\"#003399\",\ninactiveColor:\"#cccccc\"},itemStyle:{color:\"#333333\",cursor:\"pointer\",fontSize:\"12px\",fontWeight:\"bold\",textOverflow:\"ellipsis\"},itemHoverStyle:{color:\"#000000\"},itemHiddenStyle:{color:\"#cccccc\"},shadow:!1,itemCheckboxStyle:{position:\"absolute\",width:\"13px\",height:\"13px\"},squareSymbol:!0,symbolPadding:5,verticalAlign:\"bottom\",x:0,y:0,title:{style:{fontWeight:\"bold\"}}},loading:{labelStyle:{fontWeight:\"bold\",position:\"relative\",top:\"45%\"},style:{position:\"absolute\",backgroundColor:\"#ffffff\",opacity:.5,\ntextAlign:\"center\"}},tooltip:{enabled:!0,animation:P,borderRadius:3,dateTimeLabelFormats:{millisecond:\"%A, %b %e, %H:%M:%S.%L\",second:\"%A, %b %e, %H:%M:%S\",minute:\"%A, %b %e, %H:%M\",hour:\"%A, %b %e, %H:%M\",day:\"%A, %b %e, %Y\",week:\"Week from %A, %b %e, %Y\",month:\"%B %Y\",year:\"%Y\"},footerFormat:\"\",padding:8,snap:F?25:10,headerFormat:'{point.key}
',pointFormat:'\\u25cf {series.name}: {point.y}
',backgroundColor:h(\"#f7f7f7\").setOpacity(.85).get(),\nborderWidth:1,shadow:!0,style:{color:\"#333333\",cursor:\"default\",fontSize:\"12px\",whiteSpace:\"nowrap\"}},credits:{enabled:!0,href:\"https://www.highcharts.com?credits\",position:{align:\"right\",x:-10,verticalAlign:\"bottom\",y:-5},style:{cursor:\"pointer\",color:\"#999999\",fontSize:\"9px\"},text:\"Highcharts.com\"}};\"\";f.time=new m(z(f.defaultOptions.global,f.defaultOptions.time));f.dateFormat=function(h,m,y){return f.time.dateFormat(h,m,y)};return{dateFormat:f.dateFormat,defaultOptions:f.defaultOptions,time:f.time}});\nN(m,\"Core/Axis/Axis.js\",[m[\"Core/Animation/AnimationUtilities.js\"],m[\"Core/Color/Color.js\"],m[\"Core/Globals.js\"],m[\"Core/Axis/Tick.js\"],m[\"Core/Utilities.js\"],m[\"Core/Options.js\"]],function(f,h,m,z,F,L){var K=f.animObject,C=F.addEvent,y=F.arrayMax,e=F.arrayMin,I=F.clamp,v=F.correctFloat,x=F.defined,D=F.destroyObjectProperties,n=F.error,l=F.extend,J=F.fireEvent,w=F.format,r=F.getMagnitude,d=F.isArray,g=F.isFunction,c=F.isNumber,a=F.isString,q=F.merge,p=F.normalizeTickInterval,B=F.objectEach,A=F.pick,\nG=F.relativeLength,M=F.removeEvent,T=F.splat,Q=F.syncTimeout,O=L.defaultOptions,E=m.deg2rad;f=function(){function u(b,k){this.zoomEnabled=this.width=this.visible=this.userOptions=this.translationSlope=this.transB=this.transA=this.top=this.ticks=this.tickRotCorr=this.tickPositions=this.tickmarkOffset=this.tickInterval=this.tickAmount=this.side=this.series=this.right=this.positiveValuesOnly=this.pos=this.pointRangePadding=this.pointRange=this.plotLinesAndBandsGroups=this.plotLinesAndBands=this.paddedTicks=\nthis.overlap=this.options=this.oldMin=this.oldMax=this.offset=this.names=this.minPixelPadding=this.minorTicks=this.minorTickInterval=this.min=this.maxLabelLength=this.max=this.len=this.left=this.labelFormatter=this.labelEdge=this.isLinked=this.height=this.hasVisibleSeries=this.hasNames=this.coll=this.closestPointRange=this.chart=this.categories=this.bottom=this.alternateBands=void 0;this.init(b,k)}u.prototype.init=function(b,k){var a=k.isX,c=this;c.chart=b;c.horiz=b.inverted&&!c.isZAxis?!a:a;c.isXAxis=\na;c.coll=c.coll||(a?\"xAxis\":\"yAxis\");J(this,\"init\",{userOptions:k});c.opposite=k.opposite;c.side=k.side||(c.horiz?c.opposite?0:2:c.opposite?1:3);c.setOptions(k);var d=this.options,p=d.type;c.labelFormatter=d.labels.formatter||c.defaultLabelFormatter;c.userOptions=k;c.minPixelPadding=0;c.reversed=d.reversed;c.visible=!1!==d.visible;c.zoomEnabled=!1!==d.zoomEnabled;c.hasNames=\"category\"===p||!0===d.categories;c.categories=d.categories||c.hasNames;c.names||(c.names=[],c.names.keys={});c.plotLinesAndBandsGroups=\n{};c.positiveValuesOnly=!!c.logarithmic;c.isLinked=x(d.linkedTo);c.ticks={};c.labelEdge=[];c.minorTicks={};c.plotLinesAndBands=[];c.alternateBands={};c.len=0;c.minRange=c.userMinRange=d.minRange||d.maxZoom;c.range=d.range;c.offset=d.offset||0;c.max=null;c.min=null;c.crosshair=A(d.crosshair,T(b.options.tooltip.crosshairs)[a?0:1],!1);k=c.options.events;-1===b.axes.indexOf(c)&&(a?b.axes.splice(b.xAxis.length,0,c):b.axes.push(c),b[c.coll].push(c));c.series=c.series||[];b.inverted&&!c.isZAxis&&a&&\"undefined\"===\ntypeof c.reversed&&(c.reversed=!0);c.labelRotation=c.options.labels.rotation;B(k,function(b,k){g(b)&&C(c,k,b)});J(this,\"afterInit\")};u.prototype.setOptions=function(b){this.options=q(u.defaultOptions,\"yAxis\"===this.coll&&u.defaultYAxisOptions,[u.defaultTopAxisOptions,u.defaultRightAxisOptions,u.defaultBottomAxisOptions,u.defaultLeftAxisOptions][this.side],q(O[this.coll],b));J(this,\"afterSetOptions\",{userOptions:b})};u.prototype.defaultLabelFormatter=function(){var b=this.axis,k=c(this.value)?this.value:\nNaN,a=b.chart.time,d=b.categories,g=this.dateTimeLabelFormat,p=O.lang,q=p.numericSymbols;p=p.numericSymbolMagnitude||1E3;var e=q&&q.length,u=b.options.labels.format;b=b.logarithmic?Math.abs(k):b.tickInterval;var B=this.chart,l=B.numberFormatter;if(u)var A=w(u,this,B);else if(d)A=\"\"+this.value;else if(g)A=a.dateFormat(g,k);else if(e&&1E3<=b)for(;e--&&\"undefined\"===typeof A;)a=Math.pow(p,e+1),b>=a&&0===10*k%a&&null!==q[e]&&0!==k&&(A=l(k/a,-1)+q[e]);\"undefined\"===typeof A&&(A=1E4<=Math.abs(k)?l(k,-1):\nl(k,-1,void 0,\"\"));return A};u.prototype.getSeriesExtremes=function(){var b=this,k=b.chart,a;J(this,\"getSeriesExtremes\",null,function(){b.hasVisibleSeries=!1;b.dataMin=b.dataMax=b.threshold=null;b.softThreshold=!b.isXAxis;b.stacking&&b.stacking.buildStacks();b.series.forEach(function(t){if(t.visible||!k.options.chart.ignoreHiddenSeries){var d=t.options,g=d.threshold;b.hasVisibleSeries=!0;b.positiveValuesOnly&&0>=g&&(g=null);if(b.isXAxis){if(d=t.xData,d.length){d=b.logarithmic?d.filter(b.validatePositiveValue):\nd;a=t.getXExtremes(d);var p=a.min;var q=a.max;c(p)||p instanceof Date||(d=d.filter(c),a=t.getXExtremes(d),p=a.min,q=a.max);d.length&&(b.dataMin=Math.min(A(b.dataMin,p),p),b.dataMax=Math.max(A(b.dataMax,q),q))}}else if(t=t.applyExtremes(),c(t.dataMin)&&(p=t.dataMin,b.dataMin=Math.min(A(b.dataMin,p),p)),c(t.dataMax)&&(q=t.dataMax,b.dataMax=Math.max(A(b.dataMax,q),q)),x(g)&&(b.threshold=g),!d.softThreshold||b.positiveValuesOnly)b.softThreshold=!1}})});J(this,\"afterGetSeriesExtremes\")};u.prototype.translate=\nfunction(b,a,t,d,g,p){var k=this.linkedParent||this,q=1,e=0,H=d?k.oldTransA:k.transA;d=d?k.oldMin:k.min;var u=k.minPixelPadding;g=(k.isOrdinal||k.brokenAxis&&k.brokenAxis.hasBreaks||k.logarithmic&&g)&&k.lin2val;H||(H=k.transA);t&&(q*=-1,e=k.len);k.reversed&&(q*=-1,e-=q*(k.sector||k.len));a?(b=(b*q+e-u)/H+d,g&&(b=k.lin2val(b))):(g&&(b=k.val2lin(b)),b=c(d)?q*(b-d)*H+e+q*u+(c(p)?H*p:0):void 0);return b};u.prototype.toPixels=function(b,k){return this.translate(b,!1,!this.horiz,null,!0)+(k?0:this.pos)};\nu.prototype.toValue=function(b,k){return this.translate(b-(k?0:this.pos),!0,!this.horiz,null,!0)};u.prototype.getPlotLinePath=function(b){function k(b,a,k){if(\"pass\"!==l&&bk)l?b=I(b,a,k):E=!0;return b}var a=this,d=a.chart,g=a.left,p=a.top,q=b.old,e=b.value,u=b.translatedValue,B=b.lineWidth,l=b.force,r,n,f,h,w=q&&d.oldChartHeight||d.chartHeight,G=q&&d.oldChartWidth||d.chartWidth,E,v=a.transB;b={value:e,lineWidth:B,old:q,force:l,acrossPanes:b.acrossPanes,translatedValue:u};J(this,\"getPlotLinePath\",\nb,function(b){u=A(u,a.translate(e,null,null,q));u=I(u,-1E5,1E5);r=f=Math.round(u+v);n=h=Math.round(w-u-v);c(u)?a.horiz?(n=p,h=w-a.bottom,r=f=k(r,g,g+a.width)):(r=g,f=G-a.right,n=h=k(n,p,p+a.height)):(E=!0,l=!1);b.path=E&&!l?null:d.renderer.crispLine([[\"M\",r,n],[\"L\",f,h]],B||1)});return b.path};u.prototype.getLinearTickPositions=function(b,a,c){var k=v(Math.floor(a/b)*b);c=v(Math.ceil(c/b)*b);var t=[],d;v(k+b)===k&&(d=20);if(this.single)return[a];for(a=k;a<=c;){t.push(a);a=v(a+b,d);if(a===g)break;\nvar g=a}return t};u.prototype.getMinorTickInterval=function(){var b=this.options;return!0===b.minorTicks?A(b.minorTickInterval,\"auto\"):!1===b.minorTicks?null:b.minorTickInterval};u.prototype.getMinorTickPositions=function(){var b=this.options,a=this.tickPositions,c=this.minorTickInterval,d=[],g=this.pointRangePadding||0,p=this.min-g;g=this.max+g;var q=g-p;if(q&&q/c=this.minRange;var r=this.minRange;var n=(r-c+a)/2;n=[a-n,A(b.min,a-n)];l&&(n[2]=this.logarithmic?this.logarithmic.log2lin(this.dataMin):this.dataMin);a=y(n);c=[a+r,A(b.max,a+r)];l&&(c[2]=d?d.log2lin(this.dataMax):this.dataMax);c=e(c);c-a=G)M=G,l=0;else if(a.dataMax<=G){var m=G;B=0}a.min=\nA(O,M,a.dataMin);a.max=A(D,m,a.dataMax)}g&&(a.positiveValuesOnly&&!b&&0>=Math.min(a.min,A(a.dataMin,a.min))&&n(10,1,d),a.min=v(g.log2lin(a.min),16),a.max=v(g.log2lin(a.max),16));a.range&&x(a.max)&&(a.userMin=a.min=O=Math.max(a.dataMin,a.minFromRange()),a.userMax=D=a.max,a.range=null);J(a,\"foundExtremes\");a.beforePadding&&a.beforePadding();a.adjustForMinRange();!(w||a.axisPointRange||a.stacking&&a.stacking.usePercentage||u)&&x(a.min)&&x(a.max)&&(d=a.max-a.min)&&(!x(O)&&l&&(a.min-=d*l),!x(D)&&B&&(a.max+=\nd*B));c(a.userMin)||(c(q.softMin)&&q.softMina.max&&(a.max=D=q.softMax),c(q.ceiling)&&(a.max=Math.min(a.max,q.ceiling)));E&&x(a.dataMin)&&(G=G||0,!x(O)&&a.min=G?a.min=a.options.minRange?Math.min(G,a.max-a.minRange):G:!x(D)&&a.max>G&&a.dataMax<=G&&(a.max=a.options.minRange?Math.max(G,a.min+a.minRange):G));a.tickInterval=a.min===a.max||\"undefined\"===typeof a.min||\"undefined\"===\ntypeof a.max?1:u&&!f&&h===a.linkedParent.options.tickPixelInterval?f=a.linkedParent.tickInterval:A(f,this.tickAmount?(a.max-a.min)/Math.max(this.tickAmount-1,1):void 0,w?1:(a.max-a.min)*h/Math.max(a.len,h));e&&!b&&a.series.forEach(function(b){b.processData(a.min!==a.oldMin||a.max!==a.oldMax)});a.setAxisTranslation(!0);J(this,\"initialAxisTranslation\");a.pointRange&&!f&&(a.tickInterval=Math.max(a.pointRange,a.tickInterval));b=A(q.minTickInterval,a.dateTime&&!a.series.some(function(b){return b.noSharedTooltip})?\na.closestPointRange:0);!f&&a.tickIntervala.tickInterval||void 0!==this.tickAmount),!!this.tickAmount));this.tickAmount||(a.tickInterval=a.unsquish());this.setTickPositions()};u.prototype.setTickPositions=function(){var b=this.options,a=b.tickPositions;var c=this.getMinorTickInterval();var d=b.tickPositioner,g=this.hasVerticalPanning(),p=\"colorAxis\"===this.coll,q=(p||\n!g)&&b.startOnTick;g=(p||!g)&&b.endOnTick;this.tickmarkOffset=this.categories&&\"between\"===b.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval=\"auto\"===c&&this.tickInterval?this.tickInterval/5:c;this.single=this.min===this.max&&x(this.min)&&!this.tickAmount&&(parseInt(this.min,10)===this.min||!1!==b.allowDecimals);this.tickPositions=c=a&&a.slice();!c&&(this.ordinal&&this.ordinal.positions||!((this.max-this.min)/this.tickInterval>Math.max(2*this.len,200))?c=this.dateTime?this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval,\nb.units),this.min,this.max,b.startOfWeek,this.ordinal&&this.ordinal.positions,this.closestPointRange,!0):this.logarithmic?this.logarithmic.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max):(c=[this.min,this.max],n(19,!1,this.chart)),c.length>this.len&&(c=[c[0],c.pop()],c[0]===c[1]&&(c.length=1)),this.tickPositions=c,d&&(d=d.apply(this,[this.min,this.max])))&&(this.tickPositions=c=d);this.paddedTicks=c.slice(0);this.trimTicks(c,\nq,g);this.isLinked||(this.single&&2>c.length&&!this.categories&&!this.series.some(function(b){return b.is(\"heatmap\")&&\"between\"===b.options.pointPlacement})&&(this.min-=.5,this.max+=.5),a||d||this.adjustTickAmount());J(this,\"afterSetTickPositions\")};u.prototype.trimTicks=function(b,a,c){var k=b[0],d=b[b.length-1],t=!this.isOrdinal&&this.minPointOffset||0;J(this,\"trimTicks\");if(!this.isLinked){if(a&&-Infinity!==k)this.min=k;else for(;this.min-t>b[0];)b.shift();if(c)this.max=d;else for(;this.max+t<\nb[b.length-1];)b.pop();0===b.length&&x(k)&&!this.options.tickPositions&&b.push((d+k)/2)}};u.prototype.alignToOthers=function(){var b={},a,c=this.options;!1===this.chart.options.chart.alignTicks||!1===c.alignTicks||!1===c.startOnTick||!1===c.endOnTick||this.logarithmic||this.chart[this.coll].forEach(function(k){var c=k.options;c=[k.horiz?c.left:c.top,c.width,c.height,c.pane].join();k.series.length&&(b[c]?a=!0:b[c]=1)});return a};u.prototype.getTickAmount=function(){var b=this.options,a=b.tickAmount,\nc=b.tickPixelInterval;!x(b.tickInterval)&&!a&&this.lena&&(this.finalTickAmt=a,a=5);this.tickAmount=a};u.prototype.adjustTickAmount=function(){var b=this.options,a=this.tickInterval,c=this.tickPositions,d=this.tickAmount,g=this.finalTickAmt,p=c&&c.length,q=A(this.threshold,this.softThreshold?0:null),e;if(this.hasData()){if(pd&&(this.tickInterval*=2,this.setTickPositions());if(x(g)){for(a=b=c.length;a--;)(3===g&&1===a%2||2>=g&&0q&&(a=q)),x(d)&&(gq&&(g=q))),k.displayBtn=\"undefined\"!==typeof a||\"undefined\"!==typeof g,k.setExtremes(a,g,!1,void 0,{trigger:\"zoom\"});b.zoomed=!0});return b.zoomed};u.prototype.setAxisSize=function(){var b=this.chart,a=this.options,c=a.offsets||[0,0,0,0],d=this.horiz,g=this.width=Math.round(G(A(a.width,b.plotWidth-c[3]+c[1]),b.plotWidth)),\np=this.height=Math.round(G(A(a.height,b.plotHeight-c[0]+c[2]),b.plotHeight)),q=this.top=Math.round(G(A(a.top,b.plotTop+c[0]),b.plotHeight,b.plotTop));a=this.left=Math.round(G(A(a.left,b.plotLeft+c[3]),b.plotWidth,b.plotLeft));this.bottom=b.chartHeight-p-q;this.right=b.chartWidth-g-a;this.len=Math.max(d?g:p,0);this.pos=d?a:q};u.prototype.getExtremes=function(){var b=this.logarithmic;return{min:b?v(b.lin2log(this.min)):this.min,max:b?v(b.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,\nuserMin:this.userMin,userMax:this.userMax}};u.prototype.getThreshold=function(b){var a=this.logarithmic,c=a?a.lin2log(this.min):this.min;a=a?a.lin2log(this.max):this.max;null===b||-Infinity===b?b=c:Infinity===b?b=a:c>b?b=c:aa?b.align=\"right\":195a&&(b.align=\"left\")});return b.align};u.prototype.tickSize=function(b){var a=\nthis.options,c=a[\"tick\"===b?\"tickLength\":\"minorTickLength\"],d=A(a[\"tick\"===b?\"tickWidth\":\"minorTickWidth\"],\"tick\"===b&&this.isXAxis&&!this.categories?1:0);if(d&&c){\"inside\"===a[b+\"Position\"]&&(c=-c);var g=[c,d]}b={tickSize:g};J(this,\"afterTickSize\",b);return b.tickSize};u.prototype.labelMetrics=function(){var b=this.tickPositions&&this.tickPositions[0]||0;return this.chart.renderer.fontMetrics(this.options.labels.style&&this.options.labels.style.fontSize,this.ticks[b]&&this.ticks[b].label)};u.prototype.unsquish=\nfunction(){var b=this.options.labels,a=this.horiz,c=this.tickInterval,d=c,g=this.len/(((this.categories?1:0)+this.max-this.min)/c),p,q=b.rotation,e=this.labelMetrics(),u,B=Number.MAX_VALUE,l,r=this.max-this.min,n=function(b){var a=b/(g||1);a=1r&&Infinity!==b&&Infinity!==g&&r&&(a=Math.ceil(r/c));return v(a*c)};a?(l=!b.staggerLines&&!b.step&&(x(q)?[q]:g=b){u=n(Math.abs(e.h/Math.sin(E*b)));\nvar a=u+Math.abs(b/360);a(p.step||0))return p.rotation?0:(this.staggerLines||1)*this.len/q;if(!g){b=null===(a=null===p||void 0===p?void 0:p.style)||void 0===a?void 0:a.width;if(void 0!==b)return parseInt(b,\n10);if(e)return e-d.spacing[3]}return.33*d.chartWidth};u.prototype.renderUnsquish=function(){var b=this.chart,k=b.renderer,c=this.tickPositions,d=this.ticks,g=this.options.labels,p=g&&g.style||{},q=this.horiz,e=this.getSlotWidth(),u=Math.max(1,Math.round(e-2*(g.padding||5))),B={},l=this.labelMetrics(),r=g.style&&g.style.textOverflow,n=0;a(g.rotation)||(B.rotation=g.rotation||0);c.forEach(function(b){b=d[b];b.movedLabel&&b.replaceMovedLabel();b&&b.label&&b.label.textPxLength>n&&(n=b.label.textPxLength)});\nthis.maxLabelLength=n;if(this.autoRotation)n>u&&n>l.h?B.rotation=this.labelRotation:this.labelRotation=0;else if(e){var A=u;if(!r){var f=\"clip\";for(u=c.length;!q&&u--;){var h=c[u];if(h=d[h].label)h.styles&&\"ellipsis\"===h.styles.textOverflow?h.css({textOverflow:\"clip\"}):h.textPxLength>e&&h.css({width:e+\"px\"}),h.getBBox().height>this.len/c.length-(l.h-l.f)&&(h.specificTextOverflow=\"ellipsis\")}}}B.rotation&&(A=n>.5*b.chartHeight?.33*b.chartHeight:n,r||(f=\"ellipsis\"));if(this.labelAlign=g.align||this.autoLabelAlign(this.labelRotation))B.align=\nthis.labelAlign;c.forEach(function(b){var a=(b=d[b])&&b.label,k=p.width,c={};a&&(a.attr(B),b.shortenLabel?b.shortenLabel():A&&!k&&\"nowrap\"!==p.whiteSpace&&(A=\nthis.min&&b<=this.max||(null===(k=this.grid)||void 0===k?0:k.isColumn))g[b]||(g[b]=new z(this,b)),p&&g[b].isNew&&g[b].render(a,!0,-1),g[b].render(a)};u.prototype.render=function(){var b=this,a=b.chart,d=b.logarithmic,g=b.options,p=b.isLinked,q=b.tickPositions,e=b.axisTitle,u=b.ticks,l=b.minorTicks,r=b.alternateBands,n=g.stackLabels,f=g.alternateGridColor,A=b.tickmarkOffset,h=b.axisLine,G=b.showAxis,w=K(a.renderer.globalAnimation),E,v;b.labelEdge.length=0;b.overlap=!1;[u,l,r].forEach(function(b){B(b,\nfunction(b){b.isActive=!1})});if(b.hasData()||p)b.minorTickInterval&&!b.categories&&b.getMinorTickPositions().forEach(function(a){b.renderMinorTick(a)}),q.length&&(q.forEach(function(a,c){b.renderTick(a,c)}),A&&(0===b.min||b.single)&&(u[-1]||(u[-1]=new z(b,-1,null,!0)),u[-1].render(-1))),f&&q.forEach(function(c,k){v=\"undefined\"!==typeof q[k+1]?q[k+1]+A:b.max-A;0===k%2&&ce&&(!v||g<=h)&&\"undefined\"!==typeof g&&l.push(g);g>h&&(w=!0);var g=d}}}else e=this.lin2log(e),h=this.lin2log(h),f=v?x.getMinorTickInterval():n.tickInterval,f=L(\"auto\"===f?null:f,this.minorAutoInterval,n.tickPixelInterval/(v?5:1)*(h-e)/((v?D/x.tickPositions.length:D)||1)),f=F(f,void 0,z(f)),l=x.getLinearTickPositions(f,e,h).map(this.log2lin),\nv||(this.minorAutoInterval=f/5);v||(x.tickInterval=f);return l};f.prototype.lin2log=function(f){return Math.pow(10,f)};f.prototype.log2lin=function(f){return Math.log(f)/Math.LN10};return f}();h=function(){function f(){}f.compose=function(f){f.keepProps.push(\"logarithmic\");var e=f.prototype,h=K.prototype;e.log2lin=h.log2lin;e.lin2log=h.lin2log;m(f,\"init\",function(e){var f=this.logarithmic;\"logarithmic\"!==e.userOptions.type?this.logarithmic=void 0:(f||(f=this.logarithmic=new K(this)),this.log2lin!==\nf.log2lin&&(f.log2lin=this.log2lin.bind(this)),this.lin2log!==f.lin2log&&(f.lin2log=this.lin2log.bind(this)))});m(f,\"afterInit\",function(){var e=this.logarithmic;e&&(this.lin2val=function(f){return e.lin2log(f)},this.val2lin=function(f){return e.log2lin(f)})})};return f}();h.compose(f);return h});N(m,\"Core/Axis/PlotLineOrBand.js\",[m[\"Core/Axis/Axis.js\"],m[\"Core/Globals.js\"],m[\"Core/Utilities.js\"]],function(f,h,m){var z=m.arrayMax,F=m.arrayMin,P=m.defined,K=m.destroyObjectProperties,C=m.erase,y=m.extend,\ne=m.merge,I=m.objectEach,v=m.pick;m=function(){function f(e,f){this.axis=e;f&&(this.options=f,this.id=f.id)}f.prototype.render=function(){h.fireEvent(this,\"render\");var f=this,n=f.axis,l=n.horiz,m=n.logarithmic,w=f.options,r=w.label,d=f.label,g=w.to,c=w.from,a=w.value,q=P(c)&&P(g),p=P(a),B=f.svgElem,A=!B,G=[],M=w.color,x=v(w.zIndex,0),Q=w.events;G={\"class\":\"highcharts-plot-\"+(q?\"band \":\"line \")+(w.className||\"\")};var O={},E=n.chart.renderer,u=q?\"bands\":\"lines\";m&&(c=m.log2lin(c),g=m.log2lin(g),a=\nm.log2lin(a));n.chart.styledMode||(p?(G.stroke=M||\"#999999\",G[\"stroke-width\"]=v(w.width,1),w.dashStyle&&(G.dashstyle=w.dashStyle)):q&&(G.fill=M||\"#e6ebf5\",w.borderWidth&&(G.stroke=w.borderColor,G[\"stroke-width\"]=w.borderWidth)));O.zIndex=x;u+=\"-\"+x;(m=n.plotLinesAndBandsGroups[u])||(n.plotLinesAndBandsGroups[u]=m=E.g(\"plot-\"+u).attr(O).add());A&&(f.svgElem=B=E.path().attr(G).add(m));if(p)G=n.getPlotLinePath({value:a,lineWidth:B.strokeWidth(),acrossPanes:w.acrossPanes});else if(q)G=n.getPlotBandPath(c,\ng,w);else return;!f.eventsAdded&&Q&&(I(Q,function(b,a){B.on(a,function(b){Q[a].apply(f,[b])})}),f.eventsAdded=!0);(A||!B.d)&&G&&G.length?B.attr({d:G}):B&&(G?(B.show(!0),B.animate({d:G})):B.d&&(B.hide(),d&&(f.label=d=d.destroy())));r&&(P(r.text)||P(r.formatter))&&G&&G.length&&0this.max&&f>this.max;if(n&&l){if(e){var d=n.toString()===l.toString();\nr=0}for(e=0;ed){l=f;break}if(e[l]&&p.substr(e[l])!==\"01-01 00:00:00.000\".substr(e[l]))break;\"week\"!==l&&(f=l)}if(l)var r=q.resolveDTLFormat(a[l]).main;return r};r.prototype.getLabel=function(){var d,g,c=this,a=this.chart.renderer,q=this.chart.styledMode,p=this.options,\ne=\"tooltip\"+(L(p.className)?\" \"+p.className:\"\"),l=(null===(d=p.style)||void 0===d?void 0:d.pointerEvents)||(!this.followPointer&&p.stickOnContact?\"auto\":\"none\"),r;d=function(){c.inContact=!0};var n=function(){var a=c.chart.hoverSeries;c.inContact=!1;if(a&&a.onMouseOut)a.onMouseOut()};if(!this.label){this.outside&&(this.container=r=f.doc.createElement(\"div\"),r.className=\"highcharts-tooltip-container\",F(r,{position:\"absolute\",top:\"1px\",pointerEvents:l,zIndex:3}),f.doc.body.appendChild(r),this.renderer=\na=new f.Renderer(r,0,0,null===(g=this.chart.options.chart)||void 0===g?void 0:g.style,void 0,void 0,a.styledMode));this.split?this.label=a.g(e):(this.label=a.label(\"\",0,0,p.shape||\"callout\",null,null,p.useHTML,null,e).attr({padding:p.padding,r:p.borderRadius}),q||this.label.attr({fill:p.backgroundColor,\"stroke-width\":p.borderWidth}).css(p.style).css({pointerEvents:l}).shadow(p.shadow));q&&(this.applyFilter(),this.label.addClass(\"highcharts-tooltip-\"+this.chart.index));if(c.outside&&!c.split){var h=\nthis.label,w=h.xSetter,v=h.ySetter;h.xSetter=function(a){w.call(h,c.distance);r.style.left=a+\"px\"};h.ySetter=function(a){v.call(h,c.distance);r.style.top=a+\"px\"}}this.label.on(\"mouseenter\",d).on(\"mouseleave\",n).attr({zIndex:8}).add()}return this.label};r.prototype.getPosition=function(d,g,c){var a=this.chart,q=this.distance,p={},e=a.inverted&&c.h||0,f,l=this.outside,r=l?m.documentElement.clientWidth-2*q:a.chartWidth,n=l?Math.max(m.body.scrollHeight,m.documentElement.scrollHeight,m.body.offsetHeight,\nm.documentElement.offsetHeight,m.documentElement.clientHeight):a.chartHeight,h=a.pointer.getChartPosition(),w=a.containerScaling,E=function(b){return w?b*w.scaleX:b},u=function(b){return w?b*w.scaleY:b},b=function(b){var k=\"x\"===b;return[b,k?r:n,k?d:g].concat(l?[k?E(d):u(g),k?h.left-q+E(c.plotX+a.plotLeft):h.top-q+u(c.plotY+a.plotTop),0,k?r:n]:[k?d:g,k?c.plotX+a.plotLeft:c.plotY+a.plotTop,k?a.plotLeft:a.plotTop,k?a.plotLeft+a.plotWidth:a.plotTop+a.plotHeight])},k=b(\"y\"),t=b(\"x\"),H=!this.followPointer&&\nD(c.ttBelow,!a.inverted===!!c.negative),v=function(b,a,c,k,d,g,t){var f=\"y\"===b?u(q):E(q),l=(c-k)/2,r=kn-e?n:n-e);else if(B)p[b]=Math.max(g,d+e+c>a?d:d+e);else return!1},U=function(b,a,c,k,d){var g;da-q?g=!1:p[b]=da-k/2?a-k-2:d-c/2;return g},x=function(b){var a=k;k=t;t=a;f=b},I=function(){!1!==v.apply(0,k)?!1!==U.apply(0,t)||f||(x(!0),I()):f?p.x=p.y=0:(x(!0),I())};(a.inverted||1=u+r&&v.pos+E<=u+r+e-O&&(G=v.pos+E);w=z(w,m.left-k,m.right+k);\"number\"===typeof G?(A=A.height+1,E=H?H.call(a,n,A,q):c(w,G,f,n),d.push({align:H?0:void 0,anchorX:w,anchorY:G,boxWidth:n,point:q,rank:D(E.rank,f?1:0),size:A,target:E.y,tt:p,\nx:E.x})):p.isActive=!1}return d},[]);!H&&d.some(function(b){return b.xc[0]?Math.max(Math.abs(c[0]),q.width-c[0]):Math.max(Math.abs(c[0]),q.width);a.height=0>c[1]?Math.max(Math.abs(c[1]),\nq.height-Math.abs(c[1])):Math.max(Math.abs(c[1]),q.height);this.tracker?this.tracker.attr(a):(this.tracker=g.renderer.rect(a).addClass(\"highcharts-tracker\").add(g),d.styledMode||this.tracker.attr({fill:\"rgba(0,0,0,0)\"}))}}};r.prototype.styledModeFormat=function(d){return d.replace('style=\"font-size: 10px\"','class=\"highcharts-header\"').replace(/style=\"color:{(point|series)\\.color}\"/g,'class=\"highcharts-color-{$1.colorIndex}\"')};r.prototype.tooltipFooterHeaderFormatter=function(d,g){var c=g?\"footer\":\n\"header\",a=d.series,q=a.tooltipOptions,p=q.xDateFormat,f=a.xAxis,l=f&&\"datetime\"===f.options.type&&I(d.key),r=q[c+\"Format\"];g={isFooter:g,labelConfig:d};y(this,\"headerFormatter\",g,function(c){l&&!p&&(p=this.getXDateFormat(d,q,f));l&&p&&(d.point&&d.point.tooltipDateKeys||[\"key\"]).forEach(function(a){r=r.replace(\"{point.\"+a+\"}\",\"{point.\"+a+\":\"+p+\"}\")});a.chart.styledMode&&(r=this.styledModeFormat(r));c.text=e(r,{point:d,series:a},this.chart)});return g.text};r.prototype.update=function(d){this.destroy();\nx(!0,this.chart.options.tooltip.userOptions,d);this.init(this.chart,x(!0,this.options,d))};r.prototype.updatePosition=function(d){var g=this.chart,c=g.pointer,a=this.getLabel(),q=d.plotX+g.plotLeft,p=d.plotY+g.plotTop;c=c.getChartPosition();d=(this.options.positioner||this.getPosition).call(this,a.width,a.height,d);if(this.outside){var e=(this.options.borderWidth||0)+2*this.distance;this.renderer.setSize(a.width+e,a.height+e,!1);if(g=g.containerScaling)F(this.container,{transform:\"scale(\"+g.scaleX+\n\", \"+g.scaleY+\")\"}),q*=g.scaleX,p*=g.scaleY;q+=c.left-d.x;p+=c.top-d.y}this.move(Math.round(d.x),Math.round(d.y||0),q,p)};return r}();f.Tooltip=w;return f.Tooltip});N(m,\"Core/Pointer.js\",[m[\"Core/Color/Color.js\"],m[\"Core/Globals.js\"],m[\"Core/Tooltip.js\"],m[\"Core/Utilities.js\"]],function(f,h,m,z){var F=f.parse,P=h.charts,K=h.noop,C=z.addEvent,y=z.attr,e=z.css,I=z.defined,v=z.extend,x=z.find,D=z.fireEvent,n=z.isNumber,l=z.isObject,J=z.objectEach,w=z.offset,r=z.pick,d=z.splat;\"\";f=function(){function g(c,\na){this.lastValidTouch={};this.pinchDown=[];this.runChartClick=!1;this.chart=c;this.hasDragged=!1;this.options=a;this.unbindContainerMouseLeave=function(){};this.unbindContainerMouseEnter=function(){};this.init(c,a)}g.prototype.applyInactiveState=function(c){var a=[],d;(c||[]).forEach(function(c){d=c.series;a.push(d);d.linkedParent&&a.push(d.linkedParent);d.linkedSeries&&(a=a.concat(d.linkedSeries));d.navigatorSeries&&a.push(d.navigatorSeries)});this.chart.series.forEach(function(c){-1===a.indexOf(c)?\nc.setState(\"inactive\",!0):c.options.inactiveOtherPoints&&c.setAllPointsToState(\"inactive\")})};g.prototype.destroy=function(){var c=this;\"undefined\"!==typeof c.unDocMouseMove&&c.unDocMouseMove();this.unbindContainerMouseLeave();h.chartCount||(h.unbindDocumentMouseUp&&(h.unbindDocumentMouseUp=h.unbindDocumentMouseUp()),h.unbindDocumentTouchEnd&&(h.unbindDocumentTouchEnd=h.unbindDocumentTouchEnd()));clearInterval(c.tooltipTimeout);J(c,function(a,d){c[d]=void 0})};g.prototype.drag=function(c){var a=this.chart,\nd=a.options.chart,g=c.chartX,e=c.chartY,f=this.zoomHor,r=this.zoomVert,n=a.plotLeft,h=a.plotTop,w=a.plotWidth,v=a.plotHeight,E=this.selectionMarker,u=this.mouseDownX||0,b=this.mouseDownY||0,k=l(d.panning)?d.panning&&d.panning.enabled:d.panning,t=d.panKey&&c[d.panKey+\"Key\"];if(!E||!E.touch)if(gn+w&&(g=n+w),eh+v&&(e=h+v),this.hasDragged=Math.sqrt(Math.pow(u-g,2)+Math.pow(b-e,2)),10c.options.findNearestPointBy.indexOf(\"y\");c=c.searchPoint(d,g);if((g=l(c,!0))&&!(g=!l(e,!0))){g=e.distX-c.distX;var p=e.dist-c.dist,q=(c.series.group&&c.series.group.zIndex)-(e.series.group&&e.series.group.zIndex);g=0<(0!==g&&a?g:0!==p?p:0!==q?q:e.series.index>c.series.index?-1:1)}g&&(e=c)});return e};g.prototype.getChartCoordinatesFromPoint=function(c,a){var d=c.series,g=d.xAxis;d=d.yAxis;var e=r(c.clientX,\nc.plotX),f=c.shapeArgs;if(g&&d)return a?{chartX:g.len+g.pos-e,chartY:d.len+d.pos-c.plotY}:{chartX:e+g.pos,chartY:c.plotY+d.pos};if(f&&f.x&&f.y)return{chartX:f.x,chartY:f.y}};g.prototype.getChartPosition=function(){return this.chartPosition||(this.chartPosition=w(this.chart.container))};g.prototype.getCoordinates=function(c){var a={xAxis:[],yAxis:[]};this.chart.axes.forEach(function(d){a[d.isXAxis?\"xAxis\":\"yAxis\"].push({axis:d,value:d.toValue(c[d.horiz?\"chartX\":\"chartY\"])})});return a};g.prototype.getHoverData=\nfunction(c,a,d,g,e,f){var p,q=[];g=!(!g||!c);var n=a&&!a.stickyTracking,h={chartX:f?f.chartX:void 0,chartY:f?f.chartY:void 0,shared:e};D(this,\"beforeGetHoverData\",h);n=n?[a]:d.filter(function(a){return h.filter?h.filter(a):a.visible&&!(!e&&a.directTouch)&&r(a.options.enableMouseTracking,!0)&&a.stickyTracking});a=(p=g||!f?c:this.findNearestKDPoint(n,e,f))&&p.series;p&&(e&&!a.noSharedTooltip?(n=d.filter(function(a){return h.filter?h.filter(a):a.visible&&!(!e&&a.directTouch)&&r(a.options.enableMouseTracking,\n!0)&&!a.noSharedTooltip}),n.forEach(function(a){var c=x(a.points,function(a){return a.x===p.x&&!a.isNull});l(c)&&(a.chart.isBoosting&&(c=a.getPoint(c)),q.push(c))})):q.push(p));h={hoverPoint:p};D(this,\"afterGetHoverData\",h);return{hoverPoint:h.hoverPoint,hoverSeries:a,hoverPoints:q}};g.prototype.getPointFromEvent=function(c){c=c.target;for(var a;c&&!a;)a=c.point,c=c.parentNode;return a};g.prototype.onTrackerMouseOut=function(c){c=c.relatedTarget||c.toElement;var a=this.chart.hoverSeries;this.isDirectTouch=\n!1;if(!(!a||!c||a.stickyTracking||this.inClass(c,\"highcharts-tooltip\")||this.inClass(c,\"highcharts-series-\"+a.index)&&this.inClass(c,\"highcharts-tracker\")))a.onMouseOut()};g.prototype.inClass=function(c,a){for(var d;c;){if(d=y(c,\"class\")){if(-1!==d.indexOf(a))return!0;if(-1!==d.indexOf(\"highcharts-container\"))return!1}c=c.parentNode}};g.prototype.init=function(c,a){this.options=a;this.chart=c;this.runChartClick=a.chart.events&&!!a.chart.events.click;this.pinchDown=[];this.lastValidTouch={};m&&(c.tooltip=\nnew m(c,a.tooltip),this.followTouchMove=r(a.tooltip.followTouchMove,!0));this.setDOMEvents()};g.prototype.normalize=function(c,a){var d=c.touches,g=d?d.length?d.item(0):r(d.changedTouches,c.changedTouches)[0]:c;a||(a=this.getChartPosition());d=g.pageX-a.left;a=g.pageY-a.top;if(g=this.chart.containerScaling)d/=g.scaleX,a/=g.scaleY;return v(c,{chartX:Math.round(d),chartY:Math.round(a)})};g.prototype.onContainerClick=function(c){var a=this.chart,d=a.hoverPoint;c=this.normalize(c);var g=a.plotLeft,e=\na.plotTop;a.cancelClick||(d&&this.inClass(c.target,\"highcharts-tracker\")?(D(d.series,\"click\",v(c,{point:d})),a.hoverPoint&&d.firePointEvent(\"click\",c)):(v(c,this.getCoordinates(c)),a.isInsidePlot(c.chartX-g,c.chartY-e)&&D(a,\"click\",c)))};g.prototype.onContainerMouseDown=function(c){var a=1===((c.buttons||c.button)&1);c=this.normalize(c);if(h.isFirefox&&0!==c.button)this.onContainerMouseMove(c);if(\"undefined\"===typeof c.button||a)this.zoomOption(c),a&&c.preventDefault&&c.preventDefault(),this.dragStart(c)};\ng.prototype.onContainerMouseLeave=function(c){var a=P[r(h.hoverChartIndex,-1)],d=this.chart.tooltip;c=this.normalize(c);a&&(c.relatedTarget||c.toElement)&&(a.pointer.reset(),a.pointer.chartPosition=void 0);d&&!d.isHidden&&this.reset()};g.prototype.onContainerMouseEnter=function(c){delete this.chartPosition};g.prototype.onContainerMouseMove=function(c){var a=this.chart;c=this.normalize(c);this.setHoverChartIndex();c.preventDefault||(c.returnValue=!1);\"mousedown\"===a.mouseIsDown&&this.drag(c);a.openMenu||\n!this.inClass(c.target,\"highcharts-tracker\")&&!a.isInsidePlot(c.chartX-a.plotLeft,c.chartY-a.plotTop)||this.runPointActions(c)};g.prototype.onDocumentTouchEnd=function(c){P[h.hoverChartIndex]&&P[h.hoverChartIndex].pointer.drop(c)};g.prototype.onContainerTouchMove=function(c){this.touch(c)};g.prototype.onContainerTouchStart=function(c){this.zoomOption(c);this.touch(c,!0)};g.prototype.onDocumentMouseMove=function(c){var a=this.chart,d=this.chartPosition;c=this.normalize(c,d);var g=a.tooltip;!d||g&&\ng.isStickyOnContact()||a.isInsidePlot(c.chartX-a.plotLeft,c.chartY-a.plotTop)||this.inClass(c.target,\"highcharts-tracker\")||this.reset()};g.prototype.onDocumentMouseUp=function(c){var a=P[r(h.hoverChartIndex,-1)];a&&a.pointer.drop(c)};g.prototype.pinch=function(c){var a=this,d=a.chart,g=a.pinchDown,e=c.touches||[],f=e.length,l=a.lastValidTouch,n=a.hasZoom,h=a.selectionMarker,w={},m=1===f&&(a.inClass(c.target,\"highcharts-tracker\")&&d.runTrackerClick||a.runChartClick),E={};1A.max&&(a=A.max-k,x=!0);x?(m-=.8*(m-l[q][0]),\"number\"===typeof M&&(M-=.8*(M-l[q][1])),\nd()):l[q]=[m,M];w||(f[q]=t-b,f[u]=k);f=w?1/B:B;e[u]=k;e[q]=a;g[w?c?\"scaleY\":\"scaleX\":\"scale\"+n]=B;g[\"translate\"+n]=f*b+(m-f*G)};g.prototype.reset=function(c,a){var g=this.chart,p=g.hoverSeries,e=g.hoverPoint,f=g.hoverPoints,l=g.tooltip,r=l&&l.shared?f:e;c&&r&&d(r).forEach(function(a){a.series.isCartesian&&\"undefined\"===typeof a.plotX&&(c=!1)});if(c)l&&r&&d(r).length&&(l.refresh(r),l.shared&&f?f.forEach(function(a){a.setState(a.state,!0);a.series.isCartesian&&(a.series.xAxis.crosshair&&a.series.xAxis.drawCrosshair(null,\na),a.series.yAxis.crosshair&&a.series.yAxis.drawCrosshair(null,a))}):e&&(e.setState(e.state,!0),g.axes.forEach(function(a){a.crosshair&&e.series[a.coll]===a&&a.drawCrosshair(null,e)})));else{if(e)e.onMouseOut();f&&f.forEach(function(a){a.setState()});if(p)p.onMouseOut();l&&l.hide(a);this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove());g.axes.forEach(function(a){a.hideCrosshair()});this.hoverX=g.hoverPoints=g.hoverPoint=null}};g.prototype.runPointActions=function(c,a){var d=this.chart,\ng=d.tooltip&&d.tooltip.options.enabled?d.tooltip:void 0,e=g?g.shared:!1,f=a||d.hoverPoint,l=f&&f.series||d.hoverSeries;l=this.getHoverData(f,l,d.series,(!c||\"touchmove\"!==c.type)&&(!!a||l&&l.directTouch&&this.isDirectTouch),e,c);f=l.hoverPoint;var n=l.hoverPoints;a=(l=l.hoverSeries)&&l.tooltipOptions.followPointer;e=e&&l&&!l.noSharedTooltip;if(f&&(f!==d.hoverPoint||g&&g.isHidden)){(d.hoverPoints||[]).forEach(function(a){-1===n.indexOf(a)&&a.setState()});if(d.hoverSeries!==l)l.onMouseOver();this.applyInactiveState(n);\n(n||[]).forEach(function(a){a.setState(\"hover\")});d.hoverPoint&&d.hoverPoint.firePointEvent(\"mouseOut\");if(!f.series)return;d.hoverPoints=n;d.hoverPoint=f;f.firePointEvent(\"mouseOver\");g&&g.refresh(e?n:f,c)}else a&&g&&!g.isHidden&&(f=g.getAnchor([{}],c),g.updatePosition({plotX:f[0],plotY:f[1]}));this.unDocMouseMove||(this.unDocMouseMove=C(d.container.ownerDocument,\"mousemove\",function(a){var c=P[h.hoverChartIndex];if(c)c.pointer.onDocumentMouseMove(a)}));d.axes.forEach(function(a){var g=r((a.crosshair||\n{}).snap,!0),p;g&&((p=d.hoverPoint)&&p.series[a.coll]===a||(p=x(n,function(c){return c.series[a.coll]===a})));p||!g?a.drawCrosshair(c,p):a.hideCrosshair()})};g.prototype.scaleGroups=function(c,a){var d=this.chart,g;d.series.forEach(function(p){g=c||p.getPlotBox();p.xAxis&&p.xAxis.zoomEnabled&&p.group&&(p.group.attr(g),p.markerGroup&&(p.markerGroup.attr(g),p.markerGroup.clip(a?d.clipRect:null)),p.dataLabelsGroup&&p.dataLabelsGroup.attr(g))});d.clipRect.attr(a||d.clipBox)};g.prototype.setDOMEvents=\nfunction(){var c=this.chart.container,a=c.ownerDocument;c.onmousedown=this.onContainerMouseDown.bind(this);c.onmousemove=this.onContainerMouseMove.bind(this);c.onclick=this.onContainerClick.bind(this);this.unbindContainerMouseEnter=C(c,\"mouseenter\",this.onContainerMouseEnter.bind(this));this.unbindContainerMouseLeave=C(c,\"mouseleave\",this.onContainerMouseLeave.bind(this));h.unbindDocumentMouseUp||(h.unbindDocumentMouseUp=C(a,\"mouseup\",this.onDocumentMouseUp.bind(this)));h.hasTouch&&(C(c,\"touchstart\",\nthis.onContainerTouchStart.bind(this)),C(c,\"touchmove\",this.onContainerTouchMove.bind(this)),h.unbindDocumentTouchEnd||(h.unbindDocumentTouchEnd=C(a,\"touchend\",this.onDocumentTouchEnd.bind(this))))};g.prototype.setHoverChartIndex=function(){var c=this.chart,a=h.charts[r(h.hoverChartIndex,-1)];if(a&&a!==c)a.pointer.onContainerMouseLeave({relatedTarget:!0});a&&a.mouseIsDown||(h.hoverChartIndex=c.index)};g.prototype.touch=function(c,a){var d=this.chart,g;this.setHoverChartIndex();if(1===c.touches.length)if(c=\nthis.normalize(c),(g=d.isInsidePlot(c.chartX-d.plotLeft,c.chartY-d.plotTop))&&!d.openMenu){a&&this.runPointActions(c);if(\"touchmove\"===c.type){a=this.pinchDown;var e=a[0]?4<=Math.sqrt(Math.pow(a[0].chartX-c.chartX,2)+Math.pow(a[0].chartY-c.chartY,2)):!1}r(e,!0)&&this.pinch(c)}else a&&this.reset();else 2===c.touches.length&&this.pinch(c)};g.prototype.zoomOption=function(c){var a=this.chart,d=a.options.chart,g=d.zoomType||\"\";a=a.inverted;/touch/.test(c.type)&&(g=r(d.pinchType,g));this.zoomX=c=/x/.test(g);\nthis.zoomY=g=/y/.test(g);this.zoomHor=c&&!a||g&&a;this.zoomVert=g&&!a||c&&a;this.hasZoom=c||g};return g}();return h.Pointer=f});N(m,\"Core/MSPointer.js\",[m[\"Core/Globals.js\"],m[\"Core/Pointer.js\"],m[\"Core/Utilities.js\"]],function(f,h,m){function z(){var e=[];e.item=function(e){return this[e]};v(D,function(f){e.push({pageX:f.pageX,pageY:f.pageY,target:f.target})});return e}function F(e,n,h,r){\"touch\"!==e.pointerType&&e.pointerType!==e.MSPOINTER_TYPE_TOUCH||!K[f.hoverChartIndex]||(r(e),r=K[f.hoverChartIndex].pointer,\nr[n]({type:h,target:e.currentTarget,preventDefault:y,touches:z()}))}var P=this&&this.__extends||function(){var e=function(f,l){e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,d){e.__proto__=d}||function(e,d){for(var g in d)d.hasOwnProperty(g)&&(e[g]=d[g])};return e(f,l)};return function(f,l){function r(){this.constructor=f}e(f,l);f.prototype=null===l?Object.create(l):(r.prototype=l.prototype,new r)}}(),K=f.charts,C=f.doc,y=f.noop,e=m.addEvent,I=m.css,v=m.objectEach,x=m.removeEvent,\nD={},n=!!f.win.PointerEvent;return function(f){function l(){return null!==f&&f.apply(this,arguments)||this}P(l,f);l.prototype.batchMSEvents=function(e){e(this.chart.container,n?\"pointerdown\":\"MSPointerDown\",this.onContainerPointerDown);e(this.chart.container,n?\"pointermove\":\"MSPointerMove\",this.onContainerPointerMove);e(C,n?\"pointerup\":\"MSPointerUp\",this.onDocumentPointerUp)};l.prototype.destroy=function(){this.batchMSEvents(x);f.prototype.destroy.call(this)};l.prototype.init=function(e,l){f.prototype.init.call(this,\ne,l);this.hasZoom&&I(e.container,{\"-ms-touch-action\":\"none\",\"touch-action\":\"none\"})};l.prototype.onContainerPointerDown=function(e){F(e,\"onContainerTouchStart\",\"touchstart\",function(e){D[e.pointerId]={pageX:e.pageX,pageY:e.pageY,target:e.currentTarget}})};l.prototype.onContainerPointerMove=function(e){F(e,\"onContainerTouchMove\",\"touchmove\",function(e){D[e.pointerId]={pageX:e.pageX,pageY:e.pageY};D[e.pointerId].target||(D[e.pointerId].target=e.currentTarget)})};l.prototype.onDocumentPointerUp=function(e){F(e,\n\"onDocumentTouchEnd\",\"touchend\",function(e){delete D[e.pointerId]})};l.prototype.setDOMEvents=function(){f.prototype.setDOMEvents.call(this);(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(e)};return l}(h)});N(m,\"Core/Legend.js\",[m[\"Core/Animation/AnimationUtilities.js\"],m[\"Core/Globals.js\"],m[\"Core/Utilities.js\"]],function(f,h,m){var z=f.animObject,F=f.setAnimation,L=m.addEvent,K=m.css,C=m.defined,y=m.discardElement,e=m.find,I=m.fireEvent,v=m.format,x=m.isNumber,D=m.merge,n=m.pick,l=m.relativeLength,\nJ=m.stableSort,w=m.syncTimeout;f=m.wrap;m=h.isFirefox;var r=h.marginNames,d=h.win,g=function(){function c(a,c){this.allItems=[];this.contentGroup=this.box=void 0;this.display=!1;this.group=void 0;this.offsetWidth=this.maxLegendWidth=this.maxItemWidth=this.legendWidth=this.legendHeight=this.lastLineHeight=this.lastItemY=this.itemY=this.itemX=this.itemMarginTop=this.itemMarginBottom=this.itemHeight=this.initialItemY=0;this.options={};this.padding=0;this.pages=[];this.proximate=!1;this.scrollGroup=void 0;\nthis.widthOption=this.totalItemWidth=this.titleHeight=this.symbolWidth=this.symbolHeight=0;this.chart=a;this.init(a,c)}c.prototype.init=function(a,c){this.chart=a;this.setOptions(c);c.enabled&&(this.render(),L(this.chart,\"endResize\",function(){this.legend.positionCheckboxes()}),this.proximate?this.unchartrender=L(this.chart,\"render\",function(){this.legend.proximatePositions();this.legend.positionItems()}):this.unchartrender&&this.unchartrender())};c.prototype.setOptions=function(a){var c=n(a.padding,\n8);this.options=a;this.chart.styledMode||(this.itemStyle=a.itemStyle,this.itemHiddenStyle=D(this.itemStyle,a.itemHiddenStyle));this.itemMarginTop=a.itemMarginTop||0;this.itemMarginBottom=a.itemMarginBottom||0;this.padding=c;this.initialItemY=c-5;this.symbolWidth=n(a.symbolWidth,16);this.pages=[];this.proximate=\"proximate\"===a.layout&&!this.chart.inverted;this.baseline=void 0};c.prototype.update=function(a,c){var d=this.chart;this.setOptions(D(!0,this.options,a));this.destroy();d.isDirtyLegend=d.isDirtyBox=\n!0;n(c,!0)&&d.redraw();I(this,\"afterUpdate\")};c.prototype.colorizeItem=function(a,c){a.legendGroup[c?\"removeClass\":\"addClass\"](\"highcharts-legend-item-hidden\");if(!this.chart.styledMode){var d=this.options,g=a.legendItem,e=a.legendLine,f=a.legendSymbol,q=this.itemHiddenStyle.color;d=c?d.itemStyle.color:q;var l=c?a.color||q:q,r=a.options&&a.options.marker,n={fill:l};g&&g.css({fill:d,color:d});e&&e.attr({stroke:l});f&&(r&&f.isMarker&&(n=a.pointAttribs(),c||(n.stroke=n.fill=q)),f.attr(n))}I(this,\"afterColorizeItem\",\n{item:a,visible:c})};c.prototype.positionItems=function(){this.allItems.forEach(this.positionItem,this);this.chart.isResizing||this.positionCheckboxes()};c.prototype.positionItem=function(a){var c=this,d=this.options,g=d.symbolPadding,e=!d.rtl,f=a._legendItemPos;d=f[0];f=f[1];var l=a.checkbox,n=a.legendGroup;n&&n.element&&(g={translateX:e?d:this.legendWidth-d-2*g-4,translateY:f},e=function(){I(c,\"afterPositionItem\",{item:a})},C(n.translateY)?n.animate(g,void 0,e):(n.attr(g),e()));l&&(l.x=d,l.y=f)};\nc.prototype.destroyItem=function(a){var c=a.checkbox;[\"legendItem\",\"legendLine\",\"legendSymbol\",\"legendGroup\"].forEach(function(c){a[c]&&(a[c]=a[c].destroy())});c&&y(a.checkbox)};c.prototype.destroy=function(){function a(a){this[a]&&(this[a]=this[a].destroy())}this.getAllItems().forEach(function(c){[\"legendItem\",\"legendGroup\"].forEach(a,c)});\"clipRect up down pager nav box title group\".split(\" \").forEach(a,this);this.display=null};c.prototype.positionCheckboxes=function(){var a=this.group&&this.group.alignAttr,\nc=this.clipHeight||this.legendHeight,d=this.titleHeight;if(a){var g=a.translateY;this.allItems.forEach(function(e){var p=e.checkbox;if(p){var f=g+d+p.y+(this.scrollOffset||0)+3;K(p,{left:a.translateX+e.checkboxOffset+p.x-20+\"px\",top:f+\"px\",display:this.proximate||f>g-6&&fh?this.maxItemWidth:a.itemWidth;g&&this.itemX-d+c>h&&(this.itemX=d,this.lastLineHeight&&(this.itemY+=l+this.lastLineHeight+f),this.lastLineHeight=0);this.lastItemY=l+this.itemY+f;this.lastLineHeight=Math.max(e,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];g?this.itemX+=c:(this.itemY+=l+e+f,this.lastLineHeight=e);this.offsetWidth=this.widthOption||Math.max((g?\nthis.itemX-d-(a.checkbox?0:r):c)+d,this.offsetWidth)};c.prototype.getAllItems=function(){var a=[];this.chart.series.forEach(function(c){var d=c&&c.options;c&&n(d.showInLegend,C(d.linkedTo)?!1:void 0,!0)&&(a=a.concat(c.legendItems||(\"point\"===d.legendType?c.data:c)))});I(this,\"afterGetAllItems\",{allItems:a});return a};c.prototype.getAlignment=function(){var a=this.options;return this.proximate?a.align.charAt(0)+\"tv\":a.floating?\"\":a.align.charAt(0)+a.verticalAlign.charAt(0)+a.layout.charAt(0)};c.prototype.adjustMargins=\nfunction(a,c){var d=this.chart,g=this.options,e=this.getAlignment();e&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach(function(f,p){f.test(e)&&!C(a[p])&&(d[r[p]]=Math.max(d[r[p]],d.legend[(p+1)%2?\"legendHeight\":\"legendWidth\"]+[1,-1,-1,1][p]*g[p%2?\"x\":\"y\"]+n(g.margin,12)+c[p]+(d.titleOffset[p]||0)))})};c.prototype.proximatePositions=function(){var a=this.chart,c=[],d=\"left\"===this.options.align;this.allItems.forEach(function(g){var f;var p=d;if(g.yAxis){g.xAxis.options.reversed&&\n(p=!p);g.points&&(f=e(p?g.points:g.points.slice(0).reverse(),function(a){return x(a.plotY)}));p=this.itemMarginTop+g.legendItem.getBBox().height+this.itemMarginBottom;var q=g.yAxis.top-a.plotTop;g.visible?(f=f?f.plotY:g.yAxis.height,f+=q-.3*p):f=q+g.yAxis.height;c.push({target:f,size:p,item:g})}},this);h.distribute(c,a.plotHeight);c.forEach(function(c){c.item._legendItemPos[1]=a.plotTop-a.spacing[0]+c.pos})};c.prototype.render=function(){var a=this.chart,c=a.renderer,d=this.group,g=this.box,e=this.options,\nf=this.padding;this.itemX=f;this.itemY=this.initialItemY;this.lastItemY=this.offsetWidth=0;this.widthOption=l(e.width,a.spacingBox.width-f);var n=a.spacingBox.width-2*f-e.x;-1<[\"rm\",\"lm\"].indexOf(this.getAlignment().substring(0,2))&&(n/=2);this.maxLegendWidth=this.widthOption||n;d||(this.group=d=c.g(\"legend\").attr({zIndex:7}).add(),this.contentGroup=c.g().attr({zIndex:1}).add(d),this.scrollGroup=c.g().add(this.contentGroup));this.renderTitle();var r=this.getAllItems();J(r,function(a,c){return(a.options&&\na.options.legendIndex||0)-(c.options&&c.options.legendIndex||0)});e.reversed&&r.reverse();this.allItems=r;this.display=n=!!r.length;this.itemHeight=this.totalItemWidth=this.maxItemWidth=this.lastLineHeight=0;r.forEach(this.renderItem,this);r.forEach(this.layoutItem,this);r=(this.widthOption||this.offsetWidth)+f;var h=this.lastItemY+this.lastLineHeight+this.titleHeight;h=this.handleOverflow(h);h+=f;g||(this.box=g=c.rect().addClass(\"highcharts-legend-box\").attr({r:e.borderRadius}).add(d),g.isNew=!0);\na.styledMode||g.attr({stroke:e.borderColor,\"stroke-width\":e.borderWidth||0,fill:e.backgroundColor||\"none\"}).shadow(e.shadow);0f&&!1!==v.enabled?(this.clipHeight=h=Math.max(f-20-this.titleHeight-l,0),this.currentPage=n(this.currentPage,1),this.fullHeight=a,m.forEach(function(a,b){var c=a._legendItemPos[1],d=Math.round(a.legendItem.getBBox().height),g=t.length;if(!g||c-t[g-1]>h&&(H||c)!==t[g-1])t.push(H||c),g++;a.pageIx=g-1;H&&(m[b-1].pageIx=g-1);b===m.length-1&&c+d-t[g-1]>h&&c!==H&&(t.push(c),a.pageIx=g);c!==H&&(H=c)}),w||(w=c.clipRect=g.clipRect(0,l,9999,\n0),c.contentGroup.clip(w)),D(h),k||(this.nav=k=g.g().attr({zIndex:1}).add(this.group),this.up=g.symbol(\"triangle\",0,0,b,b).add(k),x(\"upTracker\").on(\"click\",function(){c.scroll(-1,u)}),this.pager=g.text(\"\",15,10).addClass(\"highcharts-legend-navigation\"),d.styledMode||this.pager.css(v.style),this.pager.add(k),this.down=g.symbol(\"triangle-down\",0,0,b,b).add(k),x(\"downTracker\").on(\"click\",function(){c.scroll(1,u)})),c.scroll(0),a=f):k&&(D(),this.nav=k.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=\n0);return a};c.prototype.scroll=function(a,c){var d=this,g=this.chart,e=this.pages,f=e.length,l=this.currentPage+a;a=this.clipHeight;var q=this.options.navigation,r=this.pager,h=this.padding;l>f&&(l=f);0=c.value;)c=d[++g];this.nonZonedColor||(this.nonZonedColor=this.color);this.color=c&&c.color&&!this.options.color?c.color:this.nonZonedColor;return c};f.prototype.hasNewShapeType=function(){return(this.graphic&&(this.graphic.symbolName||this.graphic.element.nodeName))!==this.shapeType};f.prototype.init=function(e,d,g){this.series=e;this.applyOptions(d,g);this.id=F(this.id)?\nthis.id:J();this.resolveColor();e.chart.pointCount++;C(this,\"afterInit\");return this};f.prototype.optionsToObject=function(e){var d={},g=this.series,c=g.options.keys,a=c||g.pointArrayMap||[\"y\"],l=a.length,p=0,n=0;if(v(e)||null===e)d[a[0]]=e;else if(I(e))for(!c&&e.length>l&&(g=typeof e[0],\"string\"===g?d.name=e[0]:\"number\"===g&&(d.x=e[0]),p++);n=M(a[c].options.index,a[c]._i)){a.splice(c+1,0,this);break}-1===c&&a.unshift(this);c+=1}else a.push(this);return M(c,a.length-1)},bindAxes:function(){var a=\nthis,c=a.options,d=a.chart,e;g(this,\"bindAxes\",null,function(){(a.axisTypes||[]).forEach(function(b){d[b].forEach(function(d){e=d.options;if(c[b]===e.index||\"undefined\"!==typeof c[b]&&c[b]===e.id||\"undefined\"===typeof c[b]&&0===e.index)a.insert(d.series),a[b]=d,d.isDirty=!0});a[b]||a.optionalAxis===b||w(18,!0,d)})});g(this,\"afterBindAxes\")},updateParallelArrays:function(a,c){var b=a.series,d=arguments,g=p(c)?function(d){var g=\"y\"===d&&b.toYData?b.toYData(a):a[d];b[d+\"Data\"][c]=g}:function(a){Array.prototype[c].apply(b[a+\n\"Data\"],Array.prototype.slice.call(d,2))};b.parallelArrays.forEach(g)},hasData:function(){return this.visible&&\"undefined\"!==typeof this.dataMax&&\"undefined\"!==typeof this.dataMin||this.visible&&this.yData&&0=this.cropStart?q-this.cropStart:q);!e&&k[q]&&k[q].touched&&(q=void 0);return q},drawLegendSymbol:z.drawLineMarker,updateData:function(a,c){var b=this.options,d=b.dataSorting,g=this.points,k=[],e,f,h,q=this.requireSorting,n=a.length===g.length,u=!0;this.xIncrement=null;a.forEach(function(a,c){var f=l(a)&&this.pointClass.prototype.optionsToObject.call({series:this},a)||{};var t=f.x;if(f.id||p(t)){if(t=this.findPointIndex(f,h),-1===t||\"undefined\"===\ntypeof t?k.push(a):g[t]&&a!==b.data[t]?(g[t].update(a,!1,null,!1),g[t].touched=!0,q&&(h=t+1)):g[t]&&(g[t].touched=!0),!n||c!==t||d&&d.enabled||this.hasDerivedData)e=!0}else k.push(a)},this);if(e)for(a=g.length;a--;)(f=g[a])&&!f.touched&&f.remove&&f.remove(!1,c);else!n||d&&d.enabled?u=!1:(a.forEach(function(a,b){g[b].update&&a!==g[b].y&&g[b].update(a,!1,null,!1)}),k.length=0);g.forEach(function(a){a&&(a.touched=!1)});if(!u)return!1;k.forEach(function(a){this.addPoint(a,!1,null,null,!1)},this);null===\nthis.xIncrement&&this.xData&&this.xData.length&&(this.xIncrement=v(this.xData),this.autoIncrement());return!0},setData:function(b,c,d,g){var k=this,e=k.points,f=e&&e.length||0,t,l=k.options,h=k.chart,q=l.dataSorting,n=null,u=k.xAxis;n=l.turboThreshold;var r=this.xData,m=this.yData,A=(t=k.pointArrayMap)&&t.length,v=l.keys,E=0,H=1,O;b=b||[];t=b.length;c=M(c,!0);q&&q.enabled&&(b=this.sortData(b));!1!==g&&t&&f&&!k.cropped&&!k.hasGroupedData&&k.visible&&!k.isSeriesBoosting&&(O=this.updateData(b,d));if(!O){k.xIncrement=\nnull;k.colorCounter=0;this.parallelArrays.forEach(function(a){k[a+\"Data\"].length=0});if(n&&t>n)if(n=k.getFirstValidPoint(b),p(n))for(d=0;da?1:0}).forEach(function(a,b){a.x=b},this);b.linkedSeries&&b.linkedSeries.forEach(function(b){var c=b.options,d=c.data;c.dataSorting&&c.dataSorting.enabled||!d||(d.forEach(function(c,k){d[k]=g(b,c);a[k]&&(d[k].x=a[k].x,d[k].index=k)}),b.setData(d,!1))});return a},getProcessedData:function(a){var b=this.xData,c=this.yData,d=b.length;var g=0;var e=this.xAxis,f=this.options;var p=f.cropThreshold;var l=a||this.getExtremesFromAll||f.getExtremesFromAll,\nh=this.isCartesian;a=e&&e.val2lin;f=!(!e||!e.logarithmic);var q=this.requireSorting;if(e){e=e.getExtremes();var n=e.min;var u=e.max}if(h&&this.sorted&&!l&&(!p||d>p||this.forceCrop))if(b[d-1]u)b=[],c=[];else if(this.yData&&(b[0]u)){g=this.cropData(this.xData,this.yData,n,u);b=g.xData;c=g.yData;g=g.start;var r=!0}for(p=b.length||1;--p;)if(d=f?a(b[p])-a(b[p-1]):b[p]-b[p-1],0d&&q&&(w(15,!1,this.chart),q=!1);return{xData:b,yData:c,cropped:r,\ncropStart:g,closestPointRange:m}},processData:function(a){var b=this.xAxis;if(this.isCartesian&&!this.isDirty&&!b.isDirty&&!this.yAxis.isDirty&&!a)return!1;a=this.getProcessedData();this.cropped=a.cropped;this.cropStart=a.cropStart;this.processedXData=a.xData;this.processedYData=a.yData;this.closestPointRange=this.basePointRange=a.closestPointRange},cropData:function(a,c,d,g,e){var b=a.length,k=0,f=b,p;e=M(e,this.cropShoulder);for(p=0;p=d){k=Math.max(0,p-e);break}for(d=p;d\ng){f=d+e;break}return{xData:a.slice(k,f),yData:c.slice(k,f),start:k,end:f}},generatePoints:function(){var a=this.options,c=a.data,d=this.data,e,f=this.processedXData,p=this.processedYData,l=this.pointClass,h=f.length,q=this.cropStart||0,n=this.hasGroupedData;a=a.keys;var u=[],m;d||n||(d=[],d.length=c.length,d=this.data=d);a&&n&&(this.options.keys=!1);for(m=0;m=h&&(e[r-n]||m)<=q;if(A&&m)if(A=w.length)for(;A--;)p(w[A])&&(f[l++]=w[A]);else f[l++]=w}b={dataMin:x(f),dataMax:v(f)};g(this,\"afterGetExtremes\",{dataExtremes:b});\nreturn b},applyExtremes:function(){var a=this.getExtremes();this.dataMin=a.dataMin;this.dataMax=a.dataMax;return a},getFirstValidPoint:function(a){for(var b=null,c=a.length,d=0;null===b&&d=C&&(C=null),x.total=x.stackTotal=Q.total,x.percentage=Q.total&&x.y/Q.total*100,x.stackY=z,this.irregularWidths||Q.setOffset(this.pointXOffset||0,this.barW||0));x.yBottom=l(C)?D(h.translate(C,0,1,0,1),-1E5,1E5):null;r&&(z=this.modifyValue(z,x));x.plotY=\"number\"===typeof z&&Infinity!==z?D(h.translate(z,0,1,0,1),-1E5,1E5):void 0;x.isInside=this.isPointInside(x);x.clientX=v?n(d.translate(y,0,0,0,1,w)):E;x.negative=x[O]<(b[O+\n\"Threshold\"]||A||0);x.category=e&&\"undefined\"!==typeof e[x.x]?e[x.x]:x.x;if(!x.isNull&&!1!==x.visible){\"undefined\"!==typeof K&&(G=Math.min(G,Math.abs(E-K)));var K=E}x.zone=this.zones.length&&x.getZone();!x.graphic&&this.group&&f&&(x.isNew=!0)}this.closestPointRangePx=G;g(this,\"afterTranslate\")},getValidPoints:function(a,c,d){var b=this.chart;return(a||this.points||[]).filter(function(a){return c&&!b.isInsidePlot(a.plotX,a.plotY,b.inverted)?!1:!1!==a.visible&&(d||!a.isNull)})},getClipBox:function(a,\nc){var b=this.options,d=this.chart,g=d.inverted,k=this.xAxis,e=k&&this.yAxis,f=d.options.chart.scrollablePlotArea||{};a&&!1===b.clip&&e?a=g?{y:-d.chartWidth+e.len+e.pos,height:d.chartWidth,width:d.chartHeight,x:-d.chartHeight+k.len+k.pos}:{y:-e.pos,height:d.chartHeight,width:d.chartWidth,x:-k.pos}:(a=this.clipBox||d.clipBox,c&&(a.width=d.plotSizeX,a.x=(d.scrollablePixelsX||0)*(f.scrollPositionX||0)));return c?{width:a.width,x:a.x}:a},setClip:function(a){var b=this.chart,c=this.options,d=b.renderer,\ng=b.inverted,e=this.clipBox,f=this.getClipBox(a),p=this.sharedClipKey||[\"_sharedClip\",a&&a.duration,a&&a.easing,f.height,c.xAxis,c.yAxis].join(),l=b[p],h=b[p+\"m\"];a&&(f.width=0,g&&(f.x=b.plotHeight+(!1!==c.clip?0:b.plotTop)));l?b.hasLoaded||l.attr(f):(a&&(b[p+\"m\"]=h=d.clipRect(g?b.plotSizeX+99:-99,g?-b.plotLeft:-b.plotTop,99,g?b.chartWidth:b.chartHeight)),b[p]=l=d.clipRect(f),l.count={length:0});a&&!l.count[this.index]&&(l.count[this.index]=!0,l.count.length+=1);if(!1!==c.clip||a)this.group.clip(a||\ne?l:b.clipRect),this.markerGroup.clip(h),this.sharedClipKey=p;a||(l.count[this.index]&&(delete l.count[this.index],--l.count.length),0===l.count.length&&p&&b[p]&&(e||(b[p]=b[p].destroy()),b[p+\"m\"]&&(b[p+\"m\"]=b[p+\"m\"].destroy())))},animate:function(a){var b=this.chart,c=y(this.options.animation);if(!b.hasRendered)if(a)this.setClip(c);else{var d=this.sharedClipKey;a=b[d];var g=this.getClipBox(c,!0);a&&a.animate(g,c);b[d+\"m\"]&&b[d+\"m\"].animate({width:g.width+99,x:g.x-(b.inverted?0:99)},c)}},afterAnimate:function(){this.setClip();\ng(this,\"afterAnimate\");this.finishedAnimating=!0},drawPoints:function(){var a=this.points,c=this.chart,d,g,e=this.options.marker,f=this[this.specialGroup]||this.markerGroup,p=this.xAxis,l=M(e.enabled,!p||p.isRadial?!0:null,this.closestPointRangePx>=e.enabledThreshold*e.radius);if(!1!==e.enabled||this._hasPointMarkers)for(d=0;de&&c.shadow));f&&(f.startX=d.xMap,f.isArea=d.isArea)})},getZonesGraphs:function(a){this.zones.forEach(function(b,c){c=[\"zone-graph-\"+c,\"highcharts-graph highcharts-zone-graph-\"+\nc+\" \"+(b.className||\"\")];this.chart.styledMode||c.push(b.color||this.color,b.dashStyle||this.options.dashStyle);a.push(c)},this);return a},applyZones:function(){var a=this,c=this.chart,d=c.renderer,g=this.zones,e,f,p=this.clips||[],h,l=this.graph,q=this.area,n=Math.max(c.chartWidth,c.chartHeight),u=this[(this.zoneAxis||\"y\")+\"Axis\"],r=c.inverted,m,w,v,A=!1,B,E;if(g.length&&(l||q)&&u&&\"undefined\"!==typeof u.min){var O=u.reversed;var G=u.horiz;l&&!this.showLine&&l.hide();q&&q.hide();var x=u.getExtremes();\ng.forEach(function(b,g){e=O?G?c.plotWidth:0:G?0:u.toPixels(x.min)||0;e=D(M(f,e),0,n);f=D(Math.round(u.toPixels(M(b.value,x.max),!0)||0),0,n);A&&(e=f=u.toPixels(x.max));m=Math.abs(e-f);w=Math.min(e,f);v=Math.max(e,f);u.isXAxis?(h={x:r?v:w,y:0,width:m,height:n},G||(h.x=c.plotHeight-h.x)):(h={x:0,y:r?v:w,width:n,height:m},G&&(h.y=c.plotWidth-h.y));r&&d.isVML&&(h=u.isXAxis?{x:0,y:O?w:v,height:h.width,width:c.chartWidth}:{x:h.y-c.plotLeft-c.spacingBox.x,y:0,width:h.height,height:c.chartHeight});p[g]?p[g].animate(h):\np[g]=d.clipRect(h);B=a[\"zone-area-\"+g];E=a[\"zone-graph-\"+g];l&&E&&E.clip(p[g]);q&&B&&B.clip(p[g]);A=b.value>x.max;a.resetZones&&0===f&&(f=void 0)});this.clips=p}else a.visible&&(l&&l.show(!0),q&&q.show(!0))},invertGroups:function(a){function b(){[\"group\",\"markerGroup\"].forEach(function(b){c[b]&&(d.renderer.isVML&&c[b].attr({width:c.yAxis.len,height:c.xAxis.len}),c[b].width=c.yAxis.len,c[b].height=c.xAxis.len,c[b].invert(c.isRadialSeries?!1:a))})}var c=this,d=c.chart;c.xAxis&&(c.eventsToUnbind.push(I(d,\n\"resize\",b)),b(),c.invertGroups=b)},plotGroup:function(a,c,d,g,e){var b=this[a],k=!b;d={visibility:d,zIndex:g||.1};\"undefined\"===typeof this.opacity||this.chart.styledMode||\"inactive\"===this.state||(d.opacity=this.opacity);k&&(this[a]=b=this.chart.renderer.g().add(e));b.addClass(\"highcharts-\"+c+\" highcharts-series-\"+this.index+\" highcharts-\"+this.type+\"-series \"+(l(this.colorIndex)?\"highcharts-color-\"+this.colorIndex+\" \":\"\")+(this.options.className||\"\")+(b.hasClass(\"highcharts-tracker\")?\" highcharts-tracker\":\n\"\"),!0);b.attr(d)[k?\"attr\":\"animate\"](this.getPlotBox());return b},getPlotBox:function(){var a=this.chart,c=this.xAxis,d=this.yAxis;a.inverted&&(c=d,d=this.xAxis);return{translateX:c?c.left:a.plotLeft,translateY:d?d.top:a.plotTop,scaleX:1,scaleY:1}},removeEvents:function(a){a?this.eventsToUnbind.length&&(this.eventsToUnbind.forEach(function(a){a()}),this.eventsToUnbind.length=0):T(this)},render:function(){var a=this,c=a.chart,d=a.options,e=y(d.animation),f=!a.finishedAnimating&&c.renderer.isSVG&&\ne.duration,p=a.visible?\"inherit\":\"hidden\",h=d.zIndex,l=a.hasRendered,q=c.seriesGroup,n=c.inverted;g(this,\"render\");var u=a.plotGroup(\"group\",\"series\",p,h,q);a.markerGroup=a.plotGroup(\"markerGroup\",\"markers\",p,h,q);f&&a.animate&&a.animate(!0);u.inverted=a.isCartesian||a.invertable?n:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());a.visible&&a.drawPoints();a.drawDataLabels&&a.drawDataLabels();a.redrawPoints&&a.redrawPoints();a.drawTracker&&!1!==a.options.enableMouseTracking&&a.drawTracker();a.invertGroups(n);\n!1===d.clip||a.sharedClipKey||l||u.clip(c.clipRect);f&&a.animate&&a.animate();l||(f&&e.defer&&(f+=e.defer),a.animationTimeout=O(function(){a.afterAnimate()},f||0));a.isDirty=!1;a.hasRendered=!0;g(a,\"afterRender\")},redraw:function(){var a=this.chart,c=this.isDirty||this.isDirtyData,d=this.group,g=this.xAxis,e=this.yAxis;d&&(a.inverted&&d.attr({width:a.plotWidth,height:a.plotHeight}),d.animate({translateX:M(g&&g.left,a.plotLeft),translateY:M(e&&e.top,a.plotTop)}));this.translate();this.render();c&&\ndelete this.kdTree},kdAxisArray:[\"clientX\",\"plotY\"],searchPoint:function(a,c){var b=this.xAxis,d=this.yAxis,g=this.chart.inverted;return this.searchKDTree({clientX:g?b.len-a.chartY+b.pos:a.chartX-b.pos,plotY:g?d.len-a.chartX+d.pos:a.chartY-d.pos},c,a)},buildKDTree:function(a){function b(a,d,g){var e;if(e=a&&a.length){var f=c.kdAxisArray[d%g];a.sort(function(a,b){return a[f]-b[f]});e=Math.floor(e/2);return{point:a[e],left:b(a.slice(0,e),d+1,g),right:b(a.slice(e+1),d+1,g)}}}this.buildingKdTree=!0;var c=\nthis,d=-1q?\"left\":\"right\";u=0>q?\"right\":\"left\";c[t]&&(t=b(a,c[t],d+1,p),n=t[k]m;)r--;this.updateParallelArrays(u,\"splice\",r,0,0);this.updateParallelArrays(u,r);h&&u.name&&(h[m]=u.name);q.splice(r,0,a);n&&(this.data.splice(r,0,null),this.processData());\"point\"===f.legendType&&this.generatePoints();g&&(k[0]&&k[0].remove?k[0].remove(!1):(k.shift(),this.updateParallelArrays(u,\"shift\"),q.shift()));!1!==e&&c(this,\"addPoint\",{point:u});this.isDirtyData=this.isDirty=!0;d&&p.redraw(b)},removePoint:function(a,c,d){var b=this,g=b.data,\ne=g[a],f=b.points,p=b.chart,h=function(){f&&f.length===g.length&&f.splice(a,1);g.splice(a,1);b.options.data.splice(a,1);b.updateParallelArrays(e||{series:b},\"splice\",a,1);e&&e.destroy();b.isDirty=!0;b.isDirtyData=!0;c&&p.redraw()};v(d,p);c=M(c,!0);e?e.firePointEvent(\"remove\",null,h):h()},remove:function(a,d,g,b){function e(){f.destroy(b);f.remove=null;p.isDirtyLegend=p.isDirtyBox=!0;p.linkSeries();M(a,!0)&&p.redraw(d)}var f=this,p=f.chart;!1!==g?c(f,\"remove\",null,e):e()},update:function(a,e){a=F.cleanRecursively(a,\nthis.userOptions);c(this,\"update\",{options:a});var f=this,b=f.chart,k=f.userOptions,p=f.initialType||f.type,h=b.options.plotOptions,q=a.type||k.type||b.options.chart.type,l=!(this.hasDerivedData||q&&q!==this.type||\"undefined\"!==typeof a.pointStart||\"undefined\"!==typeof a.pointInterval||f.hasOptionChanged(\"dataGrouping\")||f.hasOptionChanged(\"pointStart\")||f.hasOptionChanged(\"pointInterval\")||f.hasOptionChanged(\"pointIntervalUnit\")||f.hasOptionChanged(\"keys\")),n=x[p].prototype,m,r=[\"eventOptions\",\"navigatorSeries\",\n\"baseSeries\"],w=f.finishedAnimating&&{animation:!1},v={};l&&(r.push(\"data\",\"isDirtyData\",\"points\",\"processedXData\",\"processedYData\",\"xIncrement\",\"cropped\",\"_hasPointMarkers\",\"_hasPointLabels\",\"mapMap\",\"mapData\",\"minY\",\"maxY\",\"minX\",\"maxX\"),!1!==a.visible&&r.push(\"area\",\"graph\"),f.parallelArrays.forEach(function(a){r.push(a+\"Data\")}),a.data&&(a.dataSorting&&g(f.options.dataSorting,a.dataSorting),this.setData(a.data,!1)));a=A(k,w,{index:\"undefined\"===typeof k.index?f.index:k.index,pointStart:M(h&&h.series&&\nh.series.pointStart,k.pointStart,f.xData[0])},!l&&{data:f.options.data},a);l&&a.data&&(a.data=f.options.data);r=[\"group\",\"markerGroup\",\"dataLabelsGroup\",\"transformGroup\"].concat(r);r.forEach(function(a){r[a]=f[a];delete f[a]});f.remove(!1,null,!1,!0);for(m in n)f[m]=void 0;x[q||p]?g(f,x[q||p].prototype):d(17,!0,b,{missingModuleFor:q||p});r.forEach(function(a){f[a]=r[a]});f.init(b,a);if(l&&this.points){var B=f.options;!1===B.visible?(v.graphic=1,v.dataLabel=1):f._hasPointLabels||(a=B.marker,k=B.dataLabels,\na&&(!1===a.enabled||\"symbol\"in a)&&(v.graphic=1),k&&!1===k.enabled&&(v.dataLabel=1));this.points.forEach(function(a){a&&a.series&&(a.resolveColor(),Object.keys(v).length&&a.destroyElements(v),!1===B.showInLegend&&a.legendItem&&b.legend.destroyItem(a))},this)}f.initialType=p;b.linkSeries();c(this,\"afterUpdate\");M(e,!0)&&b.redraw(l?void 0:!1)},setName:function(a){this.name=this.options.name=this.userOptions.name=a;this.chart.isDirtyLegend=!0},hasOptionChanged:function(a){var c=this.options[a],d=this.chart.options.plotOptions,\nb=this.userOptions[a];return b?c!==b:c!==M(d&&d[this.type]&&d[this.type][a],d&&d.series&&d.series[a],c)}});g(h.prototype,{update:function(a,c){var d=this.chart,b=a&&a.events||{};a=A(this.userOptions,a);d.options[this.coll].indexOf&&(d.options[this.coll][d.options[this.coll].indexOf(this.userOptions)]=a);G(d.options[this.coll].events,function(a,c){\"undefined\"===typeof b[c]&&(b[c]=void 0)});this.destroy(!0);this.init(d,g(a,{events:b}));d.isDirtyBox=!0;M(c,!0)&&d.redraw()},remove:function(c){for(var d=\nthis.chart,g=this.coll,b=this.series,e=b.length;e--;)b[e]&&b[e].remove(!1);r(d.axes,this);r(d[g],this);a(d.options[g])?d.options[g].splice(this.options.index,1):delete d.options[g];d[g].forEach(function(a,b){a.options.index=a.userOptions.index=b});this.destroy();d.isDirtyBox=!0;M(c,!0)&&d.redraw()},setTitle:function(a,c){this.update({title:a},c)},setCategories:function(a,c){this.update({categories:a},c)}})});N(m,\"Series/AreaSeries.js\",[m[\"Core/Series/Series.js\"],m[\"Core/Color/Color.js\"],m[\"Core/Globals.js\"],\nm[\"Mixins/LegendSymbol.js\"],m[\"Core/Utilities.js\"]],function(f,h,m,z,F){var L=h.parse,K=F.objectEach,C=F.pick,y=m.Series;f.seriesType(\"area\",\"line\",{threshold:0},{singleStacks:!1,getStackPoints:function(e){var f=[],h=[],m=this.xAxis,D=this.yAxis,n=D.stacking.stacks[this.stackKey],l={},y=this.index,w=D.series,r=w.length,d=C(D.options.reversedStacks,!0)?1:-1,g;e=e||this.points;if(this.options.stacking){for(g=0;gf&&x>C?(x=Math.max(f,C),D=2*C-x):xL&&D>C?(D=Math.max(L,C),x=2*C-D):D=Math.abs(f)&&.5f.closestPointRange*f.xAxis.transA;g=f.borderWidth=l(d.borderWidth,g?0:1);var c=f.xAxis,a=f.yAxis,q=d.threshold,p=f.translatedThreshold=a.getThreshold(q),n=l(d.minPointLength,5),m=f.getColumnMetrics(),v=m.width,x=f.barW=Math.max(v,1+2*g),y=f.pointXOffset=m.offset,z=f.dataMin,C=f.dataMax;h.inverted&&(p-=.5);d.pointPadding&&(x=Math.ceil(x));L.prototype.translate.apply(f);f.points.forEach(function(g){var u=\nl(g.yBottom,p),b=999+Math.abs(u),k=v,t=g.plotX||0;b=e(g.plotY,-b,a.len+b);var r=t+y,w=x,A=Math.min(b,u),B=Math.max(b,u)-A;if(n&&Math.abs(B)n?u-n:p-(E?n:0)}I(g.options.pointWidth)&&(k=w=Math.ceil(g.options.pointWidth),r-=Math.round((k-v)/2));d.centerInCategory&&(r=f.adjustForMissingColumns(r,k,g,m));g.barX=r;g.pointWidth=k;g.tooltipPos=h.inverted?[a.len+a.pos-h.plotLeft-\nb,c.len+c.pos-h.plotTop-(t||0)-y-w/2,B]:[r+w/2,b+a.pos-h.plotTop,B];g.shapeType=f.pointClass.prototype.shapeType||\"rect\";g.shapeArgs=f.crispCol.apply(f,g.isNull?[r,p,w,0]:[r,A,w,B])})},getSymbol:f,drawLegendSymbol:F.drawRectangle,drawGraph:function(){this.group[this.dense?\"addClass\":\"removeClass\"](\"highcharts-dense-data\")},pointAttribs:function(e,f){var d=this.options,g=this.pointAttrToOptions||{};var c=g.stroke||\"borderColor\";var a=g[\"stroke-width\"]||\"borderWidth\",h=e&&e.color||this.color,p=e&&e[c]||\nd[c]||this.color||h,m=e&&e[a]||d[a]||this[a]||0;g=e&&e.options.dashStyle||d.dashStyle;var r=l(e&&e.opacity,d.opacity,1);if(e&&this.zones.length){var v=e.getZone();h=e.options.color||v&&(v.color||e.nonZonedColor)||this.color;v&&(p=v.borderColor||p,g=v.dashStyle||g,m=v.borderWidth||m)}f&&e&&(e=n(d.states[f],e.options.states&&e.options.states[f]||{}),f=e.brightness,h=e.color||\"undefined\"!==typeof f&&y(h).brighten(e.brightness).get()||h,p=e[c]||p,m=e[a]||m,g=e.dashStyle||g,r=l(e.opacity,r));c={fill:h,\nstroke:p,\"stroke-width\":m,opacity:r};g&&(c.dashstyle=g);return c},drawPoints:function(){var e=this,f=this.chart,d=e.options,g=f.renderer,c=d.animationLimit||250,a;e.points.forEach(function(h){var p=h.graphic,l=!!p,q=p&&f.pointCount\\u25cf
{series.name}
',pointFormat:\"x: {point.x}
y: {point.y}
\"}},{sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:[\"group\",\n\"markerGroup\",\"dataLabelsGroup\"],takeOrdinalPosition:!1,drawGraph:function(){(this.options.lineWidth||0===this.options.lineWidth&&this.graph&&this.graph.strokeWidth())&&z.prototype.drawGraph.call(this)},applyJitter:function(){var f=this,h=this.options.jitter,m=this.points.length;h&&this.points.forEach(function(z,y){[\"x\",\"y\"].forEach(function(e,C){var v=\"plot\"+e.toUpperCase();if(h[e]&&!z.isNull){var x=f[e+\"Axis\"];var D=h[e]*x.transA;if(x&&!x.isLog){var n=Math.max(0,z[v]-D);x=Math.min(x.len,z[v]+D);\nC=1E4*Math.sin(y+C*m);z[v]=n+(x-n)*(C-Math.floor(C));\"x\"===e&&(z.clientX=z.plotX)}}})})}});m(z,\"afterTranslate\",function(){this.applyJitter&&this.applyJitter()});\"\"});N(m,\"Mixins/CenteredSeries.js\",[m[\"Core/Globals.js\"],m[\"Core/Utilities.js\"]],function(f,h){var m=h.isNumber,z=h.pick,F=h.relativeLength,L=f.deg2rad;return f.CenteredSeriesMixin={getCenter:function(){var h=this.options,m=this.chart,y=2*(h.slicedOffset||0),e=m.plotWidth-2*y,I=m.plotHeight-2*y,v=h.center,x=Math.min(e,I),D=h.size,n=h.innerSize||\n0;\"string\"===typeof D&&(D=parseFloat(D));\"string\"===typeof n&&(n=parseFloat(n));h=[z(v[0],\"50%\"),z(v[1],\"50%\"),z(D&&0>D?void 0:h.size,\"100%\"),z(n&&0>n?void 0:h.innerSize||0,\"0%\")];!m.angular||this instanceof f.Series||(h[3]=0);for(v=0;4>v;++v)D=h[v],m=2>v||2===v&&/%$/.test(D),h[v]=F(D,[e,I,x,h[2]][v])+(m?y:0);h[3]>h[2]&&(h[3]=h[2]);return h},getStartAndEndRadians:function(f,h){f=m(f)?f:0;h=m(h)&&h>f&&360>h-f?h:f+360;return{start:L*(f+-90),end:L*(h+-90)}}}});N(m,\"Series/PieSeries.js\",[m[\"Core/Animation/AnimationUtilities.js\"],\nm[\"Core/Series/Series.js\"],m[\"Mixins/CenteredSeries.js\"],m[\"Core/Globals.js\"],m[\"Mixins/LegendSymbol.js\"],m[\"Series/LineSeries.js\"],m[\"Core/Series/Point.js\"],m[\"Core/Renderer/SVG/SVGRenderer.js\"],m[\"Core/Utilities.js\"]],function(f,h,m,z,F,L,K,C,y){var e=f.setAnimation,I=m.getStartAndEndRadians;f=z.noop;var v=y.addEvent,x=y.clamp,D=y.defined,n=y.fireEvent,l=y.isNumber,J=y.merge,w=y.pick,r=y.relativeLength;h.seriesType(\"pie\",\"line\",{center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{allowOverlap:!0,\nconnectorPadding:5,connectorShape:\"fixedOffset\",crookDistance:\"70%\",distance:30,enabled:!0,formatter:function(){return this.point.isNull?void 0:this.point.name},softConnector:!0,x:0},fillColor:void 0,ignoreHiddenPoint:!0,inactiveOtherPoints:!0,legendType:\"point\",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:\"#ffffff\",borderWidth:1,lineWidth:void 0,states:{hover:{brightness:.1}}},{isCartesian:!1,requireSorting:!1,directTouch:!0,noSharedTooltip:!0,\ntrackerGroups:[\"group\",\"dataLabelsGroup\"],axisTypes:[],pointAttribs:h.seriesTypes.column.prototype.pointAttribs,animate:function(d){var g=this,c=g.points,a=g.startAngleRad;d||c.forEach(function(c){var d=c.graphic,e=c.shapeArgs;d&&e&&(d.attr({r:w(c.startR,g.center&&g.center[3]/2),start:a,end:a}),d.animate({r:e.r,start:e.start,end:e.end},g.options.animation))})},hasData:function(){return!!this.processedXData.length},updateTotals:function(){var d,g=0,c=this.points,a=c.length,e=this.options.ignoreHiddenPoint;\nfor(d=0;d1.5*Math.PI?E-=2*Math.PI:E<-Math.PI/2&&(E+=2*Math.PI);y.slicedTranslation={translateX:Math.round(Math.cos(E)*a),translateY:Math.round(Math.sin(E)*a)};var u=Math.cos(E)*d[2]/2;var b=Math.sin(E)*d[2]/2;y.tooltipPos=[d[0]+.7*u,d[1]+.7*b];y.half=E<-Math.PI/2||E>Math.PI/2?1:0;y.angle=E;z=Math.min(e,y.labelDistance/5);y.labelPosition={natural:{x:d[0]+\nu+Math.cos(E)*y.labelDistance,y:d[1]+b+Math.sin(E)*y.labelDistance},\"final\":{},alignment:0>y.labelDistance?\"center\":y.half?\"right\":\"left\",connectorPosition:{breakAt:{x:d[0]+u+Math.cos(E)*z,y:d[1]+b+Math.sin(E)*z},touchingSliceAt:{x:d[0]+u,y:d[1]+b}}}}n(this,\"afterTranslate\")},drawEmpty:function(){var d=this.startAngleRad,g=this.endAngleRad,c=this.options;if(0===this.total&&this.center){var a=this.center[0];var e=this.center[1];this.graph||(this.graph=this.chart.renderer.arc(a,e,this.center[1]/2,0,\nd,g).addClass(\"highcharts-empty-series\").add(this.group));this.graph.attr({d:C.prototype.symbols.arc(a,e,this.center[2]/2,0,{start:d,end:g,innerR:this.center[3]/2})});this.chart.styledMode||this.graph.attr({\"stroke-width\":c.borderWidth,fill:c.fillColor||\"none\",stroke:c.color||\"#cccccc\"})}else this.graph&&(this.graph=this.graph.destroy())},redrawPoints:function(){var d=this,e=d.chart,c=e.renderer,a,f,h,l,n=d.options.shadow;this.drawEmpty();!n||d.shadowGroup||e.styledMode||(d.shadowGroup=c.g(\"shadow\").attr({zIndex:-1}).add(d.group));\nd.points.forEach(function(g){var p={};f=g.graphic;if(!g.isNull&&f){l=g.shapeArgs;a=g.getTranslate();if(!e.styledMode){var q=g.shadowGroup;n&&!q&&(q=g.shadowGroup=c.g(\"shadow\").add(d.shadowGroup));q&&q.attr(a);h=d.pointAttribs(g,g.selected&&\"select\")}g.delayedRendering?(f.setRadialReference(d.center).attr(l).attr(a),e.styledMode||f.attr(h).attr({\"stroke-linejoin\":\"round\"}).shadow(n,q),g.delayedRendering=!1):(f.setRadialReference(d.center),e.styledMode||J(!0,p,h),J(!0,p,l,a),f.animate(p));f.attr({visibility:g.visible?\n\"inherit\":\"hidden\"});f.addClass(g.getClassName())}else f&&(g.graphic=f.destroy())})},drawPoints:function(){var d=this.chart.renderer;this.points.forEach(function(e){e.graphic&&e.hasNewShapeType()&&(e.graphic=e.graphic.destroy());e.graphic||(e.graphic=d[e.shapeType](e.shapeArgs).add(e.series.group),e.delayedRendering=!0)})},searchPoint:f,sortByAngle:function(d,e){d.sort(function(c,a){return\"undefined\"!==typeof c.angle&&(a.angle-c.angle)*e})},drawLegendSymbol:F.drawRectangle,getCenter:m.getCenter,getSymbol:f,\ndrawGraph:null},{init:function(){K.prototype.init.apply(this,arguments);var d=this;d.name=w(d.name,\"Slice\");var e=function(c){d.slice(\"select\"===c.type)};v(d,\"select\",e);v(d,\"unselect\",e);return d},isValid:function(){return l(this.y)&&0<=this.y},setVisible:function(d,e){var c=this,a=c.series,g=a.chart,f=a.options.ignoreHiddenPoint;e=w(e,f);d!==c.visible&&(c.visible=c.options.visible=d=\"undefined\"===typeof d?!c.visible:d,a.options.data[a.data.indexOf(c)]=c.options,[\"graphic\",\"dataLabel\",\"connector\",\n\"shadowGroup\"].forEach(function(a){if(c[a])c[a][d?\"show\":\"hide\"](!0)}),c.legendItem&&g.legend.colorizeItem(c,d),d||\"hover\"!==c.state||c.setState(\"\"),f&&(a.isDirty=!0),e&&g.redraw())},slice:function(d,g,c){var a=this.series;e(c,a.chart);w(g,!0);this.sliced=this.options.sliced=D(d)?d:!this.sliced;a.options.data[a.data.indexOf(this)]=this.options;this.graphic&&this.graphic.animate(this.getTranslate());this.shadowGroup&&this.shadowGroup.animate(this.getTranslate())},getTranslate:function(){return this.sliced?\nthis.slicedTranslation:{translateX:0,translateY:0}},haloPath:function(d){var e=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(e.x,e.y,e.r+d,e.r+d,{innerR:e.r-1,start:e.start,end:e.end})},connectorShapes:{fixedOffset:function(d,e,c){var a=e.breakAt;e=e.touchingSliceAt;return[[\"M\",d.x,d.y],c.softConnector?[\"C\",d.x+(\"left\"===d.alignment?-5:5),d.y,2*a.x-e.x,2*a.y-e.y,a.x,a.y]:[\"L\",a.x,a.y],[\"L\",e.x,e.y]]},straight:function(d,e){e=e.touchingSliceAt;return[[\"M\",\nd.x,d.y],[\"L\",e.x,e.y]]},crookedLine:function(d,e,c){e=e.touchingSliceAt;var a=this.series,g=a.center[0],f=a.chart.plotWidth,h=a.chart.plotLeft;a=d.alignment;var l=this.shapeArgs.r;c=r(c.crookDistance,1);f=\"left\"===a?g+l+(f+h-g-l)*(1-c):h+(g-l)*c;c=[\"L\",f,d.y];g=!0;if(\"left\"===a?f>d.x||fe.x)g=!1;d=[[\"M\",d.x,d.y]];g&&d.push(c);d.push([\"L\",e.x,e.y]);return d}},getConnectorPath:function(){var d=this.labelPosition,e=this.series.options.dataLabels,c=e.connectorShape,a=this.connectorShapes;\na[c]&&(c=a[c]);return c.call(this,{x:d.final.x,y:d.final.y,alignment:d.alignment},d.connectorPosition,e)}});\"\"});N(m,\"Core/Series/DataLabels.js\",[m[\"Core/Animation/AnimationUtilities.js\"],m[\"Core/Globals.js\"],m[\"Core/Series/CartesianSeries.js\"],m[\"Core/Utilities.js\"]],function(f,h,m,z){var F=f.getDeferredAnimation;f=h.noop;var L=h.seriesTypes,K=z.arrayMax,C=z.clamp,y=z.defined,e=z.extend,I=z.fireEvent,v=z.format,x=z.isArray,D=z.merge,n=z.objectEach,l=z.pick,J=z.relativeLength,w=z.splat,r=z.stableSort;\n\"\";h.distribute=function(d,e,c){function a(a,c){return a.target-c.target}var f,g=!0,n=d,m=[];var v=0;var w=n.reducedLen||e;for(f=d.length;f--;)v+=d[f].size;if(v>w){r(d,function(a,c){return(c.rank||0)-(a.rank||0)});for(v=f=0;v<=w;)v+=d[f].size,f++;m=d.splice(f-1,d.length)}r(d,a);for(d=d.map(function(a){return{size:a.size,targets:[a.target],align:l(a.align,.5)}});g;){for(f=d.length;f--;)g=d[f],v=(Math.min.apply(0,g.targets)+Math.max.apply(0,g.targets))/2,g.pos=C(v-g.size*g.align,0,e-g.size);f=d.length;\nfor(g=!1;f--;)0d[f].pos&&(d[f-1].size+=d[f].size,d[f-1].targets=d[f-1].targets.concat(d[f].targets),d[f-1].align=.5,d[f-1].pos+d[f-1].size>e&&(d[f-1].pos=e-d[f-1].size),d.splice(f,1),g=!0)}n.push.apply(n,m);f=0;d.some(function(a){var d=0;if(a.targets.some(function(){n[f].pos=a.pos+d;if(\"undefined\"!==typeof c&&Math.abs(n[f].pos-n[f].target)>c)return n.slice(0,f+1).forEach(function(a){delete a.pos}),n.reducedLen=(n.reducedLen||e)-.1*e,n.reducedLen>.1*e&&h.distribute(n,e,c),\n!0;d+=n[f].size;f++}))return!0});r(n,a)};m.prototype.drawDataLabels=function(){function d(a,c){var d=c.filter;return d?(c=d.operator,a=a[d.property],d=d.value,\">\"===c&&a>d||\"<\"===c&&a=\"===c&&a>=d||\"<=\"===c&&a<=d||\"==\"===c&&a==d||\"===\"===c&&a===d?!0:!1):!0}function e(a,c){var d=[],b;if(x(a)&&!x(c))d=a.map(function(a){return D(a,c)});else if(x(c)&&!x(a))d=c.map(function(b){return D(a,b)});else if(x(a)||x(c))for(b=Math.max(a.length,c.length);b--;)d[b]=D(a[b],c[b]);else d=D(a,c);return d}var c=\nthis,a=c.chart,f=c.options,h=f.dataLabels,m=c.points,r,G=c.hasRendered||0,z=h.animation;z=h.defer?F(a,z,c):{defer:0,duration:0};var C=a.renderer;h=e(e(a.options.plotOptions&&a.options.plotOptions.series&&a.options.plotOptions.series.dataLabels,a.options.plotOptions&&a.options.plotOptions[c.type]&&a.options.plotOptions[c.type].dataLabels),h);I(this,\"drawDataLabels\");if(x(h)||h.enabled||c._hasPointLabels){var J=c.plotGroup(\"dataLabelsGroup\",\"data-labels\",G?\"inherit\":\"hidden\",h.zIndex||6);J.attr({opacity:+G});\n!G&&(G=c.dataLabelsGroup)&&(c.visible&&J.show(!0),G[f.animation?\"animate\":\"attr\"]({opacity:1},z));m.forEach(function(g){r=w(e(h,g.dlOptions||g.options&&g.options.dataLabels));r.forEach(function(e,h){var b=e.enabled&&(!g.isNull||g.dataLabelOnNull)&&d(g,e),k=g.dataLabels?g.dataLabels[h]:g.dataLabel,p=g.connectors?g.connectors[h]:g.connector,m=l(e.distance,g.labelDistance),q=!k;if(b){var u=g.getLabelConfig();var r=l(e[g.formatPrefix+\"Format\"],e.format);u=y(r)?v(r,u,a):(e[g.formatPrefix+\"Formatter\"]||\ne.formatter).call(u,e);r=e.style;var A=e.rotation;a.styledMode||(r.color=l(e.color,r.color,c.color,\"#000000\"),\"contrast\"===r.color?(g.contrastColor=C.getContrast(g.color||c.color),r.color=!y(m)&&e.inside||0>m||f.stacking?g.contrastColor:\"#000000\"):delete g.contrastColor,f.cursor&&(r.cursor=f.cursor));var w={r:e.borderRadius||0,rotation:A,padding:e.padding,zIndex:1};a.styledMode||(w.fill=e.backgroundColor,w.stroke=e.borderColor,w[\"stroke-width\"]=e.borderWidth);n(w,function(a,b){\"undefined\"===typeof a&&\ndelete w[b]})}!k||b&&y(u)?b&&y(u)&&(k?w.text=u:(g.dataLabels=g.dataLabels||[],k=g.dataLabels[h]=A?C.text(u,0,-9999,e.useHTML).addClass(\"highcharts-data-label\"):C.label(u,0,-9999,e.shape,null,null,e.useHTML,null,\"data-label\"),h||(g.dataLabel=k),k.addClass(\" highcharts-data-label-color-\"+g.colorIndex+\" \"+(e.className||\"\")+(e.useHTML?\" highcharts-tracker\":\"\"))),k.options=e,k.attr(w),a.styledMode||k.css(r).shadow(e.shadow),k.added||k.add(J),e.textPath&&!e.useHTML&&(k.setTextPath(g.getDataLabelPath&&g.getDataLabelPath(k)||\ng.graphic,e.textPath),g.dataLabelPath&&!e.textPath.enabled&&(g.dataLabelPath=g.dataLabelPath.destroy())),c.alignDataLabel(g,k,e,null,q)):(g.dataLabel=g.dataLabel&&g.dataLabel.destroy(),g.dataLabels&&(1===g.dataLabels.length?delete g.dataLabels:delete g.dataLabels[h]),h||delete g.dataLabel,p&&(g.connector=g.connector.destroy(),g.connectors&&(1===g.connectors.length?delete g.connectors:delete g.connectors[h])))})})}I(this,\"afterDrawDataLabels\")};m.prototype.alignDataLabel=function(d,g,c,a,f){var h=\nthis,n=this.chart,m=this.isCartesian&&n.inverted,q=this.enabledDataSorting,r=l(d.dlBox&&d.dlBox.centerX,d.plotX,-9999),v=l(d.plotY,-9999),w=g.getBBox(),x=c.rotation,y=c.align,u=n.isInsidePlot(r,Math.round(v),m),b=\"justify\"===l(c.overflow,q?\"none\":\"justify\"),k=this.visible&&!1!==d.visible&&(d.series.forceDL||q&&!b||u||c.inside&&a&&n.isInsidePlot(r,m?a.x+1:a.y+a.height-1,m));var t=function(a){q&&h.xAxis&&!b&&h.setDataLabelStartPos(d,g,f,u,a)};if(k){var z=n.renderer.fontMetrics(n.styledMode?void 0:c.style.fontSize,\ng).b;a=e({x:m?this.yAxis.len-v:r,y:Math.round(m?this.xAxis.len-r:v),width:0,height:0},a);e(c,{width:w.width,height:w.height});x?(b=!1,r=n.renderer.rotCorr(z,x),r={x:a.x+(c.x||0)+a.width/2+r.x,y:a.y+(c.y||0)+{top:0,middle:.5,bottom:1}[c.verticalAlign]*a.height},t(r),g[f?\"attr\":\"animate\"](r).attr({align:y}),t=(x+720)%360,t=180t,\"left\"===y?r.y-=t?w.height:0:\"center\"===y?(r.x-=w.width/2,r.y-=w.height/2):\"right\"===y&&(r.x-=w.width,r.y-=t?0:w.height),g.placed=!0,g.alignAttr=r):(t(a),g.align(c,null,\na),r=g.alignAttr);b&&0<=a.height?this.justifyDataLabel(g,c,r,w,a,f):l(c.crop,!0)&&(k=n.isInsidePlot(r.x,r.y)&&n.isInsidePlot(r.x+w.width,r.y+w.height));if(c.shape&&!x)g[f?\"attr\":\"animate\"]({anchorX:m?n.plotWidth-d.plotY:d.plotX,anchorY:m?n.plotHeight-d.plotX:d.plotY})}f&&q&&(g.placed=!1);k||q&&!b||(g.hide(!0),g.placed=!1)};m.prototype.setDataLabelStartPos=function(d,e,c,a,f){var g=this.chart,h=g.inverted,l=this.xAxis,n=l.reversed,m=h?e.height/2:e.width/2;d=(d=d.pointWidth)?d/2:0;l=h?f.x:n?-m-d:l.width-\nm+d;f=h?n?this.yAxis.height-m+d:-m-d:f.y;e.startXPos=l;e.startYPos=f;a?\"hidden\"===e.visibility&&(e.show(),e.attr({opacity:0}).animate({opacity:1})):e.attr({opacity:1}).animate({opacity:0},void 0,e.hide);g.hasRendered&&(c&&e.attr({x:e.startXPos,y:e.startYPos}),e.placed=!0)};m.prototype.justifyDataLabel=function(d,e,c,a,f,h){var g=this.chart,p=e.align,l=e.verticalAlign,n=d.box?0:d.padding||0,m=e.x;m=void 0===m?0:m;var q=e.y;var r=void 0===q?0:q;q=c.x+n;if(0>q){\"right\"===p&&0<=m?(e.align=\"left\",e.inside=\n!0):m-=q;var v=!0}q=c.x+a.width-n;q>g.plotWidth&&(\"left\"===p&&0>=m?(e.align=\"right\",e.inside=!0):m+=g.plotWidth-q,v=!0);q=c.y+n;0>q&&(\"bottom\"===l&&0<=r?(e.verticalAlign=\"top\",e.inside=!0):r-=q,v=!0);q=c.y+a.height-n;q>g.plotHeight&&(\"top\"===l&&0>=r?(e.verticalAlign=\"bottom\",e.inside=!0):r+=g.plotHeight-q,v=!0);v&&(e.x=m,e.y=r,d.placed=!h,d.align(e,void 0,f));return v};L.pie&&(L.pie.prototype.dataLabelPositioners={radialDistributionY:function(d){return d.top+d.distributeBox.pos},radialDistributionX:function(d,\ne,c,a){return d.getX(ce.bottom-2?a:c,e.half,e)},justify:function(d,e,c){return c[0]+(d.half?-1:1)*(e+d.labelDistance)},alignToPlotEdges:function(d,e,c,a){d=d.getBBox().width;return e?d+a:c-d-a},alignToConnectors:function(d,e,c,a){var f=0,g;d.forEach(function(a){g=a.dataLabel.getBBox().width;g>f&&(f=g)});return e?f+a:c-f-a}},L.pie.prototype.drawDataLabels=function(){var d=this,e=d.data,c,a=d.chart,f=d.options.dataLabels||{},p=f.connectorPadding,n,r=a.plotWidth,v=a.plotHeight,w=a.plotLeft,\nx=Math.round(a.chartWidth/3),z,C=d.center,E=C[2]/2,u=C[1],b,k,t,F,I=[[],[]],J,L,N,P,S=[0,0,0,0],Y=d.dataLabelPositioners,W;d.visible&&(f.enabled||d._hasPointLabels)&&(e.forEach(function(a){a.dataLabel&&a.visible&&a.dataLabel.shortened&&(a.dataLabel.attr({width:\"auto\"}).css({width:\"auto\",textOverflow:\"clip\"}),a.dataLabel.shortened=!1)}),m.prototype.drawDataLabels.apply(d),e.forEach(function(a){a.dataLabel&&(a.visible?(I[a.half].push(a),a.dataLabel._pos=null,!y(f.style.width)&&!y(a.options.dataLabels&&\na.options.dataLabels.style&&a.options.dataLabels.style.width)&&a.dataLabel.getBBox().width>x&&(a.dataLabel.css({width:Math.round(.7*x)+\"px\"}),a.dataLabel.shortened=!0)):(a.dataLabel=a.dataLabel.destroy(),a.dataLabels&&1===a.dataLabels.length&&delete a.dataLabels))}),I.forEach(function(e,g){var n=e.length,m=[],q;if(n){d.sortByAngle(e,g-.5);if(0r-p&&0===g&&(A=Math.round(J+\nk-r+p),S[1]=Math.max(A,S[1])),0>L-F/2?S[0]=Math.max(Math.round(-L+F/2),S[0]):L+F/2>v&&(S[2]=Math.max(Math.round(L+F/2-v),S[2])),b.sideOverflow=A)}}}),0===K(S)||this.verifyDataLabelOverflow(S))&&(this.placeDataLabels(),this.points.forEach(function(c){W=D(f,c.options.dataLabels);if(n=l(W.connectorWidth,1)){var e;z=c.connector;if((b=c.dataLabel)&&b._pos&&c.visible&&0l(this.translatedThreshold,h.yAxis.len)),r=l(c.inside,!!this.options.stacking);n&&(a=D(n),0>a.y&&(a.height+=a.y,a.y=0),n=a.y+a.height-h.yAxis.len,0=w.x+w.width||r.x+r.width<=w.x||r.y>=w.y+w.height||r.y+r.height<=w.y||((C.labelrank=p&&h<=b||k||!n(h))l=!0;e[k?\"zoomX\":\"zoomY\"]&&l&&(d=g.zoom(a.min,a.max),g.displayBtn&&(f=!0))});var p=c.resetZoomButton;f&&!p?c.showResetZoom():!f&&g(p)&&(c.resetZoomButton=p.destroy());d&&c.redraw(q(c.options.chart.animation,\na&&a.animation,100>c.pointCount))},pan:function(a,c){var e=this,f=e.hoverPoints,g=e.options.chart,h=e.options.mapNavigation&&e.options.mapNavigation.enabled,p;c=\"object\"===typeof c?c:{enabled:c,type:\"x\"};g&&g.panning&&(g.panning=c);var l=c.type;J(this,\"pan\",{originalEvent:a},function(){f&&f.forEach(function(a){a.setState()});var c=[1];\"xy\"===l?c=[1,0]:\"y\"===l&&(c=[0]);c.forEach(function(c){var b=e[c?\"xAxis\":\"yAxis\"][0],f=b.horiz,g=a[f?\"chartX\":\"chartY\"];f=f?\"mouseDownX\":\"mouseDownY\";var n=e[f],m=\n(b.pointRange||0)/2,r=b.reversed&&!e.inverted||!b.reversed&&e.inverted?-1:1,u=b.getExtremes(),v=b.toValue(n-g,!0)+m*r;r=b.toValue(n+b.len-g,!0)-m*r;var w=r=r&&v<=m&&(b.setExtremes(n,v,!1,!1,{trigger:\"pan\"}),e.resetZoomButton||h||n===r||v===m||!l.match(\"y\")||(e.showResetZoom(),b.displayBtn=!1),p=!0),e[f]=\ng)});p&&e.redraw(!1);D(e.container,{cursor:\"move\"})})}});l(K.prototype,{select:function(a,c){var d=this,e=d.series,f=e.chart;this.selectedStaging=a=q(a,!d.selected);d.firePointEvent(a?\"select\":\"unselect\",{accumulate:c},function(){d.selected=d.options.selected=a;e.options.data[e.data.indexOf(d)]=d.options;d.setState(a&&\"select\");c||f.getSelectedPoints().forEach(function(a){var c=a.series;a.selected&&a!==d&&(a.selected=a.options.selected=!1,c.options.data[c.data.indexOf(a)]=a.options,a.setState(f.hoverPoints&&\nc.options.inactiveOtherPoints?\"inactive\":\"\"),a.firePointEvent(\"unselect\"))})});delete this.selectedStaging},onMouseOver:function(a){var c=this.series.chart,d=c.pointer;a=a?d.normalize(a):d.getChartCoordinatesFromPoint(this,c.inverted);d.runPointActions(a,this)},onMouseOut:function(){var a=this.series.chart;this.firePointEvent(\"mouseOut\");this.series.options.inactiveOtherPoints||(a.hoverPoints||[]).forEach(function(a){a.setState()});a.hoverPoints=a.hoverPoint=null},importEvents:function(){if(!this.hasImportedEvents){var d=\nthis,e=c(d.series.options.point,d.options).events;d.events=e;a(e,function(a,c){r(a)&&v(d,c,a)});this.hasImportedEvents=!0}},setState:function(a,c){var d=this.series,e=this.state,f=d.options.states[a||\"normal\"]||{},g=I.plotOptions[d.type].marker&&d.options.marker,h=g&&!1===g.enabled,p=g&&g.states&&g.states[a||\"normal\"]||{},n=!1===p.enabled,m=d.stateMarkerGraphic,b=this.marker||{},k=d.chart,r=d.halo,v,w=g&&d.markerAttribs;a=a||\"\";if(!(a===this.state&&!c||this.selected&&\"select\"!==a||!1===f.enabled||\na&&(n||h&&!1===p.enabled)||a&&b.states&&b.states[a]&&!1===b.states[a].enabled)){this.state=a;w&&(v=d.markerAttribs(this,a));if(this.graphic){e&&this.graphic.removeClass(\"highcharts-point-\"+e);a&&this.graphic.addClass(\"highcharts-point-\"+a);if(!k.styledMode){var x=d.pointAttribs(this,a);var y=q(k.options.chart.animation,f.animation);d.options.inactiveOtherPoints&&x.opacity&&((this.dataLabels||[]).forEach(function(a){a&&a.animate({opacity:x.opacity},y)}),this.connector&&this.connector.animate({opacity:x.opacity},\ny));this.graphic.animate(x,y)}v&&this.graphic.animate(v,q(k.options.chart.animation,p.animation,g.animation));m&&m.hide()}else{if(a&&p){e=b.symbol||d.symbol;m&&m.currentSymbol!==e&&(m=m.destroy());if(v)if(m)m[c?\"animate\":\"attr\"]({x:v.x,y:v.y});else e&&(d.stateMarkerGraphic=m=k.renderer.symbol(e,v.x,v.y,v.width,v.height).add(d.markerGroup),m.currentSymbol=e);!k.styledMode&&m&&m.attr(d.pointAttribs(this,a))}m&&(m[a&&this.isInside?\"show\":\"hide\"](),m.element.point=this)}a=f.halo;f=(m=this.graphic||m)&&\nm.visibility||\"inherit\";a&&a.size&&m&&\"hidden\"!==f&&!this.isCluster?(r||(d.halo=r=k.renderer.path().add(m.parentGroup)),r.show()[c?\"animate\":\"attr\"]({d:this.haloPath(a.size)}),r.attr({\"class\":\"highcharts-halo highcharts-color-\"+q(this.colorIndex,d.colorIndex)+(this.className?\" \"+this.className:\"\"),visibility:f,zIndex:-1}),r.point=this,k.styledMode||r.attr(l({fill:this.color||d.color,\"fill-opacity\":a.opacity},a.attributes))):r&&r.point&&r.point.haloPath&&r.animate({d:r.point.haloPath(0)},null,r.hide);\nJ(this,\"afterSetState\")}},haloPath:function(a){return this.series.chart.renderer.symbols.circle(Math.floor(this.plotX)-a,this.plotY-a,2*a,2*a)}});l(F.prototype,{onMouseOver:function(){var a=this.chart,c=a.hoverSeries;a.pointer.setHoverChartIndex();if(c&&c!==this)c.onMouseOut();this.options.events.mouseOver&&J(this,\"mouseOver\");this.setState(\"hover\");a.hoverSeries=this},onMouseOut:function(){var a=this.options,c=this.chart,d=c.tooltip,e=c.hoverPoint;c.hoverSeries=null;if(e)e.onMouseOut();this&&a.events.mouseOut&&\nJ(this,\"mouseOut\");!d||this.stickyTracking||d.shared&&!this.noSharedTooltip||d.hide();c.series.forEach(function(a){a.setState(\"\",!0)})},setState:function(a,c){var d=this,e=d.options,f=d.graph,g=e.inactiveOtherPoints,h=e.states,l=e.lineWidth,m=e.opacity,n=q(h[a||\"normal\"]&&h[a||\"normal\"].animation,d.chart.options.chart.animation);e=0;a=a||\"\";if(d.state!==a&&([d.group,d.markerGroup,d.dataLabelsGroup].forEach(function(b){b&&(d.state&&b.removeClass(\"highcharts-series-\"+d.state),a&&b.addClass(\"highcharts-series-\"+\na))}),d.state=a,!d.chart.styledMode)){if(h[a]&&!1===h[a].enabled)return;a&&(l=h[a].lineWidth||l+(h[a].lineWidthPlus||0),m=q(h[a].opacity,m));if(f&&!f.dashstyle)for(h={\"stroke-width\":l},f.animate(h,n);d[\"zone-graph-\"+e];)d[\"zone-graph-\"+e].attr(h),e+=1;g||[d.group,d.markerGroup,d.dataLabelsGroup,d.labelBySeries].forEach(function(a){a&&a.animate({opacity:m},n)})}c&&g&&d.points&&d.setAllPointsToState(a)},setAllPointsToState:function(a){this.points.forEach(function(c){c.setState&&c.setState(a)})},setVisible:function(a,\nc){var d=this,e=d.chart,f=d.legendItem,g=e.options.chart.ignoreHiddenSeries,h=d.visible;var l=(d.visible=a=d.options.visible=d.userOptions.visible=\"undefined\"===typeof a?!h:a)?\"show\":\"hide\";[\"group\",\"dataLabelsGroup\",\"markerGroup\",\"tracker\",\"tt\"].forEach(function(a){if(d[a])d[a][l]()});if(e.hoverSeries===d||(e.hoverPoint&&e.hoverPoint.series)===d)d.onMouseOut();f&&e.legend.colorizeItem(d,a);d.isDirty=!0;d.options.stacking&&e.series.forEach(function(a){a.options.stacking&&a.visible&&(a.isDirty=!0)});\nd.linkedSeries.forEach(function(c){c.setVisible(a,!1)});g&&(e.isDirtyBox=!0);J(d,l);!1!==c&&e.redraw()},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=this.options.selected=\"undefined\"===typeof a?!this.selected:a;this.checkbox&&(this.checkbox.checked=a);J(this,a?\"select\":\"unselect\")},drawTracker:m.drawTrackerGraph})});N(m,\"Core/Responsive.js\",[m[\"Core/Chart/Chart.js\"],m[\"Core/Utilities.js\"]],function(f,h){var m=h.find,z=h.isArray,F=h.isObject,\nL=h.merge,K=h.objectEach,C=h.pick,y=h.splat,e=h.uniqueKey;f.prototype.setResponsive=function(f,h){var v=this.options.responsive,y=[],n=this.currentResponsive;!h&&v&&v.rules&&v.rules.forEach(function(f){\"undefined\"===typeof f._id&&(f._id=e());this.matchResponsiveRule(f,y)},this);h=L.apply(0,y.map(function(e){return m(v.rules,function(f){return f._id===e}).chartOptions}));h.isResponsiveOptions=!0;y=y.toString()||void 0;y!==(n&&n.ruleIds)&&(n&&this.update(n.undoOptions,f,!0),y?(n=this.currentOptions(h),\nn.isResponsiveOptions=!0,this.currentResponsive={ruleIds:y,mergedOptions:h,undoOptions:n},this.update(h,f,!0)):this.currentResponsive=void 0)};f.prototype.matchResponsiveRule=function(e,f){var h=e.condition;(h.callback||function(){return this.chartWidth<=C(h.maxWidth,Number.MAX_VALUE)&&this.chartHeight<=C(h.maxHeight,Number.MAX_VALUE)&&this.chartWidth>=C(h.minWidth,0)&&this.chartHeight>=C(h.minHeight,0)}).call(this)&&f.push(e._id)};f.prototype.currentOptions=function(e){function f(e,l,m,v){var n;\nK(e,function(d,e){if(!v&&-1 = {\n maxWidth: '500px',\n margin: '-50px 0 0 20px',\n };\n \n lastValuesDate: Date;\n weatherValues: IWeather[] = [];\n \n chart: Highcharts.Chart;\n createChart;\n chartSettings;\n seriesSettings = [];\n \n dataSubscription: Subscription;\n widgetData: IWidget;\n mappedData: Map = new Map();\n\n constructor(private dataService: DataService, private dialog: MatDialog) {}\n\n ngOnInit(): void {\n this.dataService.getChartSettings().subscribe((settings: any) => {\n this.chartSettings = settings;\n });\n \n this.dataSubscription = this.dataService.windAtmosphereData$.subscribe(widget => {\n if (widget.charts.yAxis.length > 0 && widget.lastValues.length > 0) {\n this.widgetData = widget;\n this.mappedData = getMappedData(this.widgetData);\n this.isDataUnderTolerance();\n \n this.selectedWindUnit = localStorage.getItem('velocityUnit') || this.dataService.initialVelocityUnit;\n this.baseWindUnit = this.mappedData.get(IndexFrontend.WindIntensityLastValue)[0].unit;\n this.baseWindUnitChart = this.mappedData.get(IndexFrontend.WindIntensityChartAndTable)[0].unit\n\n this.isLastValuesModeled = this.dataService.isWindAtmosphereModeled;\n this.lastValuesDate = this.widgetData.lastValues[0].date;\n\n this.createWeatherTable();\n this.drawChart();\n if (this.selectedWindUnit !== this.baseWindUnit && this.selectedWindUnit !== this.baseWindUnitChart) {\n this.windUnitChanged(this.selectedWindUnit);\n }\n }\n })\n }\n\n ngOnDestroy(): void { this.dataSubscription?.unsubscribe(); }\n\n drawChart() {\n this.createChart = createChart.bind(this);\n this.createChart(this.widgetData.charts, this.seriesSettings, this.chartSettings, 'nós', 'm/s');\n\n if (this.seriesSettings.length > 0) {\n this.chartSettings.series = this.seriesSettings;\n if (this.chart === undefined) {\n this.chart = Highcharts.chart('windChart', this.chartSettings);\n }\n else {\n this.chart.update(this.chartSettings);\n }\n }\n\n console.log(this.chart);\n }\n\n getDifferenceBetweenDateValues(values: IChartValue[], daysAhead: number) {\n let targetDate = moment().add(daysAhead, 'days').startOf('day');\n let noonTime = targetDate.clone().add(12, 'hours').toDate().getTime();\n\n // Filter to include only the values from the specific day (starting from midnight to midnight next day)\n return values\n .filter(v => {\n let vDate = new Date(v.date).getTime();\n return vDate >= targetDate.toDate().getTime() && vDate < targetDate.clone().add(1, 'day').toDate().getTime();\n })\n .map(v => ({\n difference: Math.abs(noonTime - new Date(v.date).getTime()),\n value: v.value,\n date: v.date\n }));\n }\n\n createWeatherTable() {\n this.weatherValues = [];\n let temperatureValues = this.mappedData.get(IndexFrontend.TemperatureChart).filter(s => !s.isMeasure)[0];\n let windDirectionValues = this.mappedData.get(IndexFrontend.WindDirectionTable).filter(s => !s.isMeasure)[0];\n let windIntensityValues = this.mappedData.get(IndexFrontend.WindIntensityChartAndTable).filter(s => !s.isMeasure)[0];\n let weatherStateValues = this.mappedData.get(IndexFrontend.WeatherStateTable).filter(s => !s.isMeasure)[0];\n\n for (let day = 1; day < 5; day++) {\n // Filter values to find those closest to noon\n const getClosestValueToNoon = (values: IChartValue[]) => {\n let noonValues = this.getDifferenceBetweenDateValues(values, day);\n if (noonValues.length === 0) return null;\n return noonValues.reduce((a, b) => a.difference < b.difference ? a : b).value;\n };\n\n let temperatureNoonValues = this.getDifferenceBetweenDateValues(temperatureValues.chartValues, day);\n let maxTemp = Math.max(...temperatureNoonValues.map(v => v.value));\n let minTemp = Math.min(...temperatureNoonValues.map(v => v.value));\n\n this.weatherValues.push({\n weatherState: getClosestValueToNoon(weatherStateValues.chartValues),\n maxTemp: maxTemp,\n minTemp: minTemp,\n windDir: getClosestValueToNoon(windDirectionValues.chartValues),\n windSpeed: getClosestValueToNoon(windIntensityValues.chartValues)\n });\n }\n }\n\n getWeatherStateIcon = (stateValue: number) => getWeatherStateIcon(stateValue);\n\n checkExists(indexFrontend: IndexFrontend) : boolean { return this.mappedData.has(indexFrontend); }\n\n windUnitChanged(newUnit: string) : void {\n localStorage.setItem('velocityUnit', newUnit);\n if (this.baseWindUnit !== newUnit) {\n let convertConstant = getConversionRate(this.baseWindUnit, newUnit);\n\n // Converting last values\n this.mappedData.get(IndexFrontend.WindIntensityLastValue)[0].lastValue *= convertConstant;\n if (this.checkExists(IndexFrontend.WindGustLastValue)){\n this.mappedData.get(IndexFrontend.WindGustLastValue)[0].lastValue *= convertConstant;\n }\n this.mappedData.get(IndexFrontend.WindIntensityChartAndTable).filter(s => !s.isMeasure)[0]\n .chartValues.forEach((v : IChartValue) => { v.value *= convertConstant });\n \n this.createWeatherTable();\n this.updateChart(newUnit, convertConstant);\n\n this.selectedWindUnit = newUnit;\n this.baseWindUnit = newUnit;\n this.baseWindUnitChart = newUnit;\n }\n }\n\n updateChart(newUnit: string, convertConstant: number) : void {\n // Update wind chart values\n let windChartSeries = this.mappedData.get(IndexFrontend.WindIntensityChartAndTable);\n windChartSeries.forEach(s => {\n this.chartSettings.series.forEach((serie: any) => {\n if (serie.id === s.id) {\n serie.data.forEach((d: any) => d[1] = parseFloat((d[1] * convertConstant).toFixed(2)));\n serie.tooltip = { valueSuffix: ` ${newUnit}` };\n }\n });\n });\n\n let yAxis = this.chartSettings.yAxis.find(y => y.unit === this.baseWindUnit || y.unit === this.baseWindUnitChart);\n if (yAxis) {\n if (yAxis.max) yAxis.max *= convertConstant;\n yAxis.unit = newUnit;\n yAxis.title.text = replaceUnitPlaceholder(yAxis.title.text, newUnit, /\\[(.*?)\\]/);\n }\n \n this.chart.update(this.chartSettings);\n }\n\n openMap() {\n this.dialog.open(MapDialogComponent, {\n minWidth: '50%', maxWidth: '95%',\n minHeight: '50%', maxHeight: '95%',\n data: {\n allData: Array.from(this.mappedData.values()).reduce((acc, series) => acc.concat(series)),\n },\n panelClass: 'custom-dialog-container',\n });\n }\n\n isDataUnderTolerance() : boolean {\n const flattenedAndFiltered = Array.from(this.mappedData.values())\n .reduce((acc, curr) => acc.concat(curr), [])\n .filter(serie => serie.lastValue !== undefined && serie.lastValue !== null);\n\n let isUnderTolerance: boolean = true;\n for (let i = 0; i < flattenedAndFiltered.length; i++) {\n let serie = flattenedAndFiltered[i];\n let tolerance = moment().subtract(serie.communicationTolerance ?? 86400, 'seconds');\n \n isUnderTolerance = !moment(serie.date).isBefore(tolerance)\n }\n\n return isUnderTolerance;\n }\n\n getRotation(indexFrontend: number): string {\n return this.checkExists(indexFrontend) != null \n ? `${-45 + this.mappedData.get(indexFrontend)[0].lastValue + 180}deg` \n : '0deg';\n }\n\n add180 = (windDirection: number) => windDirection - 45 + 180;\n}\n","
\n
\n \n \n
\n
Meteorologia
\n
\n \n nós\n m/s\n km/h\n \n \n \n
\n
\n
\n \n
\n \n \n
\n \n \n Valores medidos \n a {{ lastValuesDate | date : \"d LLL 'às' HH:mm\" : \"en\" }}\n \n \n \n
\n \n Valores previstos \n para {{ lastValuesDate | date : \"d LLL 'às' HH:mm\" : \"en\" }}\n \n \n
\n \n
\n Intensidade do vento:\n \n \n {{\n mappedData.get(1.7)[0] | getSerieValue : 1 : selectedWindUnit\n }}\n
\n \n
\n Precipitação:\n
\n \n {{ mappedData.get(1.3)[0] | getSerieValue }}\n \n
\n
\n \n
\n \n
\n Rajada do vento:\n
\n \n \n {{\n mappedData.get(1.6)[0] | getSerieValue : 1 : selectedWindUnit\n }}\n \n
\n
\n\n
\n Humidade relativa:\n
\n \n {{ mappedData.get(1.4)[0] | getSerieValue }}\n \n
\n
\n
\n
\n
\n Direção do vento:\n
\n \n \n {{ mappedData.get(1.5)[0] | getSerieValue : 0 }}\n {{ mappedData.get(1.5)[0] | directionCompassRose }}\n
\n
\n
\n Pressão atmosférica:\n
\n {{ mappedData.get(1.2)[0] | getSerieValue }} \n
\n
\n
\n \n
\n
\n \n
\n

{{ i + 1 | dayOfWeek }}

\n
\n

\n {{ item.maxTemp | number : \"1.1-1\" : \"en\" }} ºC\n

\n \n {{ item.minTemp | number : \"1.1-1\" : \"en\" }} ºC\n

\n
\n

\n {{ item.windDir | number : \"0.0-0\" : \"en\" }}º\n {{ item.windDir | directionCompassRose }}\n

\n

\n {{ item.windSpeed | number : \"1.1-1\" : \"en\"\n }}{{\n selectedWindUnit\n }}\n

\n
\n
\n
\n Valores previstos da intensidade e direção do vento às 12h de\n cada dia\n \n \n\n

Previsão

\n
\n \n
\n \n \n \n\n \n
\n
Meteorologia
\n
\n \n \n
\n
\n
\n
\n \n\n","import { Component, Inject } from '@angular/core';\nimport { LatLng, TileLayer, Marker } from 'leaflet';\nimport * as L from 'leaflet';\nimport 'leaflet.markercluster';\nimport 'leaflet.awesome-markers';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ISerie } from 'src/app/shared/models/seriesInfo.interfaces';\n\n@Component({\n selector: 'app-map-dialog',\n templateUrl: './map-dialog.component.html',\n styleUrls: ['./map-dialog.component.scss'],\n})\nexport class MapDialogComponent {\n map;\n markers: any;\n\n Satellite: string =\n 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}';\n satelliteLayer = new TileLayer(this.Satellite, {\n zIndex: 1,\n maxZoom: 21,\n attribution:\n 'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community',\n });\n\n osmLayer = new TileLayer(\n 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n { zIndex: 1, maxZoom: 21, attribution: '...' }\n );\n\n options = {\n maxZoom: 19,\n minZoom: 2,\n fullscreenControl: true,\n layers: [this.satelliteLayer],\n };\n\n zoom: number = 7;\n center: L.LatLng = new LatLng(40.650097, -8.753211);\n\n layersControl = {\n // overlays: {\n // },\n baseLayers: {\n 'Open Street Map': this.osmLayer,\n Satellite: this.satelliteLayer,\n },\n };\n\n allData: ISerie[];\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any) {\n this.allData = data.allData;\n }\n\n onMapReady(map) {\n this.map = map;\n this.markers = L.markerClusterGroup();\n\n var listOfCoordinates: ISerie[] = [];\n this.allData\n .filter(d => d.locationCoords) // Filter the series that have location coordinates\n .forEach(d => { // Aggregate the location coordinates\n let coordinate = listOfCoordinates\n .find(c => c.locationCoords.lat === d.locationCoords.lat && c.locationCoords.lng === d.locationCoords.lng);\n \n if (!coordinate) listOfCoordinates.push(d);\n });\n\n this.setMarker(listOfCoordinates);\n this.map.addLayer(this.markers);\n this.map.flyToBounds(this.markers.getBounds(), { maxZoom: 14 });\n }\n\n public setMarker(data: ISerie[]) {\n var stringParameters = '';\n data.forEach((element) => {\n if (element.parameterName !== 'Meteo Icons')\n stringParameters += element.description + '
';\n });\n\n var customPopup = `
${data[0].locationName}
${stringParameters}`;\n var customOptions = { maxWidth: 500 };\n\n // https://stackoverflow.com/questions/55898409/leaflet-js-dynamic-generated-popup-html-loads-partially-if-previously-opened-p\n\n var layer = new Marker(data[0].locationCoords, {\n icon: L.AwesomeMarkers.icon({\n icon: 'ship',\n prefix: 'fa',\n markerColor: 'lightblue',\n iconColor: 'black',\n }),\n title: data[0].locationName,\n riseOnHover: true,\n })\n .bindTooltip(data[0].locationName, {\n permanent: false,\n zoomAnimation: true,\n direction: 'top',\n })\n .bindPopup(customPopup, customOptions);\n this.markers.addLayer(layer);\n }\n}\n","\n \n Mapa\n \n \n \n \n \n \n Ok\n \n \n\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport * as Highcharts from 'highcharts';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MapDialogComponent } from '../map-dialog/map-dialog.component';\nimport { DataService } from 'src/app/core/services/data-service.service';\nimport { Subscription } from 'rxjs';\nimport { createChart, getMappedData } from 'src/app/helperModules/chart.helpers';\nimport { ISerie, IWidget, IndexFrontend } from 'src/app/shared/models/seriesInfo.interfaces';\nimport * as moment from 'moment';\n\n@Component({\n selector: 'app-waves',\n templateUrl: './waves.component.html',\n styleUrls: ['./waves.component.scss'],\n})\nexport class WavesComponent implements OnInit, OnDestroy {\n flipped: boolean = false;\n isLastValuesModeled: boolean;\n lastValuesDate: Date;\n\n chart: Highcharts.Chart;\n chartSettings;\n createChart;\n seriesSettings = [];\n \n dataSubscription: Subscription;\n widgetData: IWidget;\n mappedData: Map = new Map();\n\n constructor(private dataService: DataService, private dialog: MatDialog) {}\n\n ngOnInit(): void {\n this.dataService.getChartSettings().subscribe((settings: any) => {\n this.chartSettings = settings;\n });\n\n this.dataSubscription = this.dataService.wavesData$.subscribe(widget => {\n if (widget.charts.yAxis.length > 0 && widget.lastValues.length > 0) {\n this.widgetData = widget;\n this.isLastValuesModeled = this.dataService.isWavesModeled;\n this.lastValuesDate = this.widgetData.lastValues\n .find(s => s.indexFrontend === IndexFrontend.MeanWaveDirectionLastValue).date;\n\n this.mappedData = getMappedData(this.widgetData);\n this.drawChart();\n }\n })\n }\n\n ngOnDestroy(): void { this.dataSubscription?.unsubscribe() }\n\n drawChart() {\n this.createChart = createChart.bind(this);\n this.createChart(this.widgetData.charts, this.seriesSettings, this.chartSettings, 's');\n\n if (this.seriesSettings.length > 0) {\n this.chartSettings.series = this.seriesSettings;\n if (this.chart === undefined) {\n this.chart = Highcharts.chart('wavesChart', this.chartSettings);\n }\n else {\n this.chart.update(this.chartSettings);\n }\n }\n }\n\n openMap() {\n this.dialog.open(MapDialogComponent, {\n minWidth: '50%',\n maxWidth: '95%',\n minHeight: '50%',\n maxHeight: '95%',\n data: {\n allData: Array.from(this.mappedData.values()).reduce((acc, series) => acc.concat(series)),\n },\n panelClass: 'custom-dialog-container',\n });\n }\n\n getRotation(indexFrontend: number): string {\n return this.checkExists(indexFrontend) != null \n ? `${-45 + this.mappedData.get(indexFrontend)[0].lastValue + 180}deg` \n : '0deg';\n }\n\n isDataUnderTolerance() : boolean {\n const flattenedAndFiltered = Array.from(this.mappedData.values())\n .reduce((acc, curr) => acc.concat(curr), [])\n .filter(serie => serie.lastValue !== undefined && serie.lastValue !== null);\n\n let isUnderTolerance: boolean = true;\n for (let i = 0; i < flattenedAndFiltered.length; i++) {\n let serie = flattenedAndFiltered[i];\n let tolerance = moment().subtract(serie.communicationTolerance ?? 86400, 'seconds');\n \n isUnderTolerance = !moment(serie.date).isBefore(tolerance)\n }\n\n return isUnderTolerance;\n }\n\n checkExists(indexFrontend: IndexFrontend) : boolean { return this.mappedData.has(indexFrontend); }\n}\n","
\n
\n \n \n
\n
Agitação Marítima
\n
\n \n \n
\n
\n
\n \n \n \n Valores medidos \n a {{ lastValuesDate | date : \"d LLL 'às' HH:mm\" : \"en\" }}\n \n
\n \n
\n \n Valores previstos \n para {{ lastValuesDate | date: \"d LLL 'às' HH:mm\":\"en\" }}\n \n \n
\n
\n
\n
\n Direção média:\n
\n \n \n {{ mappedData.get(3.1)[0] | getSerieValue : 0 }}\n {{ mappedData.get(3.1)[0] | directionCompassRose }}\n \n
\n
\n
\n
\n
\n Altura significativa:\n
\n {{ mappedData.get(3.4)[0] | getSerieValue : 1 }}\n
\n
\n
\n
\n
\n Altura máxima:\n
\n {{ mappedData.get(3.6)[0] | getSerieValue : 1 }}\n
\n
\n
\n
\n
\n Período médio:\n
\n {{ mappedData.get(3.2)[0] | getSerieValue }}\n
\n
\n
\n
\n
\n Período de pico:\n
\n {{ mappedData.get(3.5)[0] | getSerieValue }}\n
\n
\n
\n
\n
\n Temperatura da água:\n
\n {{ mappedData.get(3.7)[0] | getSerieValue }}\n
\n
\n
\n
\n \n

Previsão

\n
\n \n
\n \n \n \n \n
\n
Agitação Marítima
\n
\n \n \n
\n
\n
\n
\n \n\n","import { Component } from '@angular/core';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'app-about-dialog',\n templateUrl: `../../../assets/${environment.project}/about.html`,\n})\nexport class AboutDialogComponent {}\n","\n \n AQUASAFE\n \n \n \n

AQUASAFE é um produto da HIDROMOD.

\n
\n

O serviço AQUASAFE utiliza informação gerada por:

\n
\n
\n \n \n
\n \n \n
\n \n \n \n
\n
\n

\n Windmill animation by @Erick Daniel Juarez Gil / LottieFiles.\n

\n\n

 

\n\n As previsões obtidas a partir do sistema AQUASAFE devem ser utilizadas com extrema prudência. Nenhuma previsão constitui uma garantia dos valores que efetivamente ocorrerão. A HIDROMOD ou a APSS não poderão ser responsabilizadas pelo uso de quaisquer valores aqui publicados.\n\n \n \n \n Ok\n \n \n\n","import { Component } from '@angular/core';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'app-hydrography-info',\n templateUrl: `../../../../assets/${environment.project}/info_hydrography.html`,\n})\nexport class HydrographyInfoComponent {}\n","\n\n\n \n\n\n

Tabela de maré:

\n

Os valores apresentados na tabela de marés referem-se à localização do marégrafo de Tróia (38°29.67'N;8°54.05'W - WGS84).

\n

\n O cálculo da tabela de marés é realizado pelo Instituto Hidrográfico com base em análises harmónicas de séries de observações maregráficas, em regra com a duração de um ano, do referido marégrafo. As alturas de maré estão referidas ao nível do zero hidrográfico (2.00 m abaixo do nível médio adotado em Cascais, 1938).\n

\n

\n Devido à variação do nível médio do mar, são de esperar alturas de água superiores em cerca de 0.1 m aos valores previstos indicados na tabela de marés.

\n

Para mais informações consultar www.hidrografico.pt.

\n\n

A sobre-elevação, indicada entre parênteses, refere-se ao aumento do nível do mar além do esperado pela maré astronómica, causado por condições meteorológicas. Estes resultados são gerados pelo modelo numérico de previsão hidrodinâmica MOHID para o Porto de Setúbal, na localização do marégrafo de Tróia, e são atualizados diariamente pela HIDROMOD.

\n\n

Medição:

\n

\n O valor medido corresponde à última leitura disponível para o marégrafo de Tróia, que é mantido pelo Instituto Hidrográfico.\n

\n\n

Previsão:

\n

\n As previsões, para o marégrafo da Tróia, provêm da implementação do modelo numérico de previsão hidrodinâmico MOHID para o Porto de Setúbal e é atualizado diariamente pela HIDROMOD.\n

\n\n

\n

Unidades das variáveis

\n
    \n
  • Nível do mar: metros [m].
  • \n
\n\n\n","import { InjectionToken, Injectable, NgZone, Inject, PLATFORM_ID, EventEmitter, Directive, Input, Output, ElementRef, Self, Component, ChangeDetectionStrategy, ViewChild, NgModule, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';\nimport { isPlatformServer, DOCUMENT, CommonModule } from '@angular/common';\nimport { from, throwError, of, Subject } from 'rxjs';\nimport { map, catchError, shareReplay, takeUntil } from 'rxjs/operators';\nimport { makeStateKey, TransferState } from '@angular/platform-browser';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/utils.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} animation\n * @return {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/platform-browser';\n\nconst _c0 = [\"container\"];\nfunction transformAnimationFilenameToKey(animation) {\n return `animation-${animation.split('.json')[0]}`;\n}\n/**\n * @param {?} player\n * @param {?} href\n * @param {?} isSafari\n * @return {?}\n */\nfunction setPlayerLocationHref(player, href, isSafari) {\n // This is a fix for the mask on Safari/iOS\n // https://github.com/airbnb/lottie-web/issues/1198\n if (isSafari) {\n ((/** @type {?} */ (((/** @type {?} */ (player)))))).setLocationHref(href);\n }\n}\n/**\n * @param {?} options\n * @param {?} container\n * @param {?} animationCache\n * @return {?}\n */\nfunction mergeOptionsWithDefault(options, container, animationCache) {\n /** @type {?} */\n const merged = Object.assign({\n container,\n renderer: 'svg',\n loop: true,\n autoplay: true\n }, options);\n if (animationCache !== null) {\n return animationCache.transformOptions(merged);\n }\n return merged;\n}\n/**\n * @return {?}\n */\nfunction isSafariFactory() {\n // This `try-catch` block will also handle server-side rendering\n // as `navigator` is not accessable there\n try {\n const { vendor, userAgent } = navigator;\n return (vendor.indexOf('Apple') > -1 &&\n userAgent.indexOf('CriOS') === -1 &&\n userAgent.indexOf('FxiOS') === -1);\n }\n catch (_a) {\n return false;\n }\n}\n/**\n * @param {?} options\n * @return {?}\n */\nfunction isAnimationConfigWithData(options) {\n /** @type {?} */\n const animationData = ((/** @type {?} */ (options))).animationData;\n return animationData !== null && typeof animationData === 'object';\n}\n/**\n * @param {?} animationCache\n * @param {?} options\n * @param {?} animationItem\n * @return {?}\n */\nfunction awaitConfigAndCache(animationCache, options, animationItem) {\n if (animationCache === null) {\n return;\n }\n animationItem.addEventListener('config_ready', (/**\n * @return {?}\n */\n () => {\n animationCache.set(options, animationItem);\n }));\n}\n/**\n * @param {?} player\n * @return {?}\n */\nfunction streamifyPlayerOrLoader(player) {\n /** @type {?} */\n const playerOrLoader = player();\n if (playerOrLoader instanceof Promise) {\n return from(playerOrLoader).pipe(map((/**\n * @param {?} module\n * @return {?}\n */\n module => module.default || module)), catchError((/**\n * @param {?} error\n * @return {?}\n */\n error => {\n console.error(`\n Could not retrieve the \"lottie-web\" player, did you provide\n the \"player\" property correctly?\n export function playerFactory() {\n return import('lottie-web');\n }\n LottieModule.forRoot({ player: playerFactory })\n `);\n return throwError(error);\n })), shareReplay(1));\n }\n return of(playerOrLoader);\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/symbols.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction BMEnterFrameEvent() { }\nif (false) {\n /** @type {?} */\n BMEnterFrameEvent.prototype.currentTime;\n /** @type {?} */\n BMEnterFrameEvent.prototype.duration;\n /** @type {?} */\n BMEnterFrameEvent.prototype.totalTime;\n /** @type {?} */\n BMEnterFrameEvent.prototype.type;\n}\n/**\n * @record\n */\nfunction BMCompleteLoopEvent() { }\nif (false) {\n /** @type {?} */\n BMCompleteLoopEvent.prototype.type;\n /** @type {?} */\n BMCompleteLoopEvent.prototype.loop;\n /** @type {?} */\n BMCompleteLoopEvent.prototype.playCount;\n /** @type {?} */\n BMCompleteLoopEvent.prototype.frameMult;\n}\n/**\n * @record\n */\nfunction BMCompleteEvent() { }\nif (false) {\n /** @type {?} */\n BMCompleteEvent.prototype.type;\n /** @type {?} */\n BMCompleteEvent.prototype.duration;\n}\n/**\n * @record\n */\nfunction BMSegmentStartEvent() { }\nif (false) {\n /** @type {?} */\n BMSegmentStartEvent.prototype.type;\n /** @type {?} */\n BMSegmentStartEvent.prototype.firstFrame;\n /** @type {?} */\n BMSegmentStartEvent.prototype.totalFrames;\n}\n/**\n * @record\n */\nfunction BMDestroyEvent() { }\nif (false) {\n /** @type {?} */\n BMDestroyEvent.prototype.target;\n /** @type {?} */\n BMDestroyEvent.prototype.type;\n}\n/**\n * @record\n */\nfunction BMRenderFrameErrorEvent() { }\nif (false) {\n /** @type {?} */\n BMRenderFrameErrorEvent.prototype.type;\n /** @type {?} */\n BMRenderFrameErrorEvent.prototype.nativeError;\n /** @type {?} */\n BMRenderFrameErrorEvent.prototype.currentTime;\n}\n/**\n * @record\n */\nfunction BMConfigErrorEvent() { }\nif (false) {\n /** @type {?} */\n BMConfigErrorEvent.prototype.type;\n /** @type {?} */\n BMConfigErrorEvent.prototype.nativeError;\n}\n/**\n * @record\n */\nfunction LottieOptions() { }\nif (false) {\n /** @type {?} */\n LottieOptions.prototype.player;\n /** @type {?|undefined} */\n LottieOptions.prototype.useCache;\n}\n/** @type {?} */\nconst IS_SAFARI = new InjectionToken('IsSafari');\n/** @type {?} */\nconst LOTTIE_OPTIONS = new InjectionToken('LottieOptions');\n/** @type {?} */\nconst ANIMATION_CACHE = new InjectionToken('AnimationCache');\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/animation-loader.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// This has to be dynamic as `Document` interface is not\n// accepted by the ngc compiler\n// @dynamic\nclass AnimationLoader {\n /**\n * @param {?} ngZone\n * @param {?} platformId\n * @param {?} document\n * @param {?} isSafari\n * @param {?} options\n * @param {?} animationCache\n */\n constructor(ngZone, platformId, document, isSafari, options, animationCache) {\n this.ngZone = ngZone;\n this.platformId = platformId;\n this.document = document;\n this.isSafari = isSafari;\n this.options = options;\n this.animationCache = animationCache;\n this.player$ = streamifyPlayerOrLoader(this.options.player);\n }\n /**\n * @param {?} options\n * @param {?} container\n * @param {?} eventsFacade\n * @param {?} animationCreated\n * @param {?} instance\n * @param {?} destroy$\n * @return {?}\n */\n resolveLoaderAndLoadAnimation(options, container, eventsFacade, animationCreated, instance, destroy$) {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n this.player$.pipe(takeUntil(destroy$)).subscribe((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n /** @type {?} */\n const mergedOptions = mergeOptionsWithDefault(options, container, this.animationCache);\n this.loadAnimation(player, mergedOptions, eventsFacade, animationCreated, instance);\n }));\n }\n /**\n * @private\n * @param {?} player\n * @param {?} options\n * @param {?} eventsFacade\n * @param {?} animationCreated\n * @param {?} instance\n * @return {?}\n */\n loadAnimation(player, options, eventsFacade, animationCreated, instance) {\n setPlayerLocationHref(player, this.document.location.href, this.isSafari);\n /** @type {?} */\n const animationItem = this.ngZone.runOutsideAngular((/**\n * @return {?}\n */\n () => player.loadAnimation(options)));\n awaitConfigAndCache(this.animationCache, options, animationItem);\n // Dispatch `animationCreated` event after animation is loaded successfully\n animationCreated.emit(animationItem);\n eventsFacade.addEventListeners(instance, animationItem);\n }\n}\nAnimationLoader.ɵfac = function AnimationLoader_Factory(t) { return new (t || AnimationLoader)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(PLATFORM_ID), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(IS_SAFARI), ɵngcc0.ɵɵinject(LOTTIE_OPTIONS), ɵngcc0.ɵɵinject(ANIMATION_CACHE)); };\nAnimationLoader.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: AnimationLoader, factory: AnimationLoader.ɵfac });\n/** @nocollapse */\nAnimationLoader.ctorParameters = () => [\n { type: NgZone },\n { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: Boolean, decorators: [{ type: Inject, args: [IS_SAFARI,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [LOTTIE_OPTIONS,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [ANIMATION_CACHE,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AnimationLoader, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: String, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [IS_SAFARI]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOTTIE_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [ANIMATION_CACHE]\n }] }]; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n AnimationLoader.prototype.player$;\n /**\n * @type {?}\n * @private\n */\n AnimationLoader.prototype.ngZone;\n /**\n * @type {?}\n * @private\n */\n AnimationLoader.prototype.platformId;\n /**\n * @type {?}\n * @private\n */\n AnimationLoader.prototype.document;\n /**\n * @type {?}\n * @private\n */\n AnimationLoader.prototype.isSafari;\n /**\n * @type {?}\n * @private\n */\n AnimationLoader.prototype.options;\n /**\n * @type {?}\n * @private\n */\n AnimationLoader.prototype.animationCache;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/base.directive.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass BaseDirective {\n /**\n * @param {?} platformId\n * @param {?} animationLoader\n */\n constructor(platformId, animationLoader) {\n this.platformId = platformId;\n this.animationLoader = animationLoader;\n this.options = null;\n this.containerClass = null;\n this.styles = null;\n this.width = null;\n this.height = null;\n /**\n * `animationCreated` is dispatched after calling `loadAnimation`\n */\n this.animationCreated = new EventEmitter();\n /**\n * `complete` is dispatched after completing the last frame\n */\n this.complete = new EventEmitter();\n /**\n * `loopComplete` is dispatched after completing frame loop\n */\n this.loopComplete = new EventEmitter();\n /**\n * `enterFrame` is dispatched after entering the new frame\n */\n this.enterFrame = new EventEmitter();\n /**\n * `segmentStart` is dispatched when the new segment is adjusted\n */\n this.segmentStart = new EventEmitter();\n /**\n * Original event name is `config_ready`. `config_ready` is dispatched\n * after the needed renderer is configured\n */\n this.configReady = new EventEmitter();\n /**\n * Original event name is `data_ready`. `data_ready` is dispatched\n * when all parts of the animation have been loaded\n */\n this.dataReady = new EventEmitter();\n /**\n * Original event name is `DOMLoaded`. `DOMLoaded` is dispatched\n * when elements have been added to the DOM\n */\n this.domLoaded = new EventEmitter();\n /**\n * `destroy` will be dispatched in the `ngOnDestroy` hook of the service,\n * it's useful for releasing resources\n */\n this.destroy = new EventEmitter();\n /**\n * `error` will be dispatched if the lottie player could not render\n * some frame or parse config\n */\n this.error = new EventEmitter();\n this.destroy$ = new Subject();\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n /**\n * @protected\n * @return {?}\n */\n setWidthAndHeight() {\n this.width = this.width || '100%';\n this.height = this.height || '100%';\n }\n /**\n * @protected\n * @param {?} container\n * @param {?} eventsFacade\n * @param {?} instance\n * @return {?}\n */\n loadAnimation(container, eventsFacade, instance) {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n this.animationLoader.resolveLoaderAndLoadAnimation(this.options, container, eventsFacade, this.animationCreated, instance, this.destroy$);\n }\n}\nBaseDirective.ɵfac = function BaseDirective_Factory(t) { return new (t || BaseDirective)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(AnimationLoader)); };\nBaseDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: BaseDirective, selectors: [[\"\", \"lottie\", \"\"]], inputs: { options: \"options\", containerClass: \"containerClass\", styles: \"styles\", width: \"width\", height: \"height\" }, outputs: { animationCreated: \"animationCreated\", complete: \"complete\", loopComplete: \"loopComplete\", enterFrame: \"enterFrame\", segmentStart: \"segmentStart\", configReady: \"configReady\", dataReady: \"dataReady\", domLoaded: \"domLoaded\", destroy: \"destroy\", error: \"error\" } });\n/** @nocollapse */\nBaseDirective.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: AnimationLoader }\n];\nBaseDirective.propDecorators = {\n options: [{ type: Input }],\n containerClass: [{ type: Input }],\n styles: [{ type: Input }],\n width: [{ type: Input }],\n height: [{ type: Input }],\n animationCreated: [{ type: Output }],\n complete: [{ type: Output }],\n loopComplete: [{ type: Output }],\n enterFrame: [{ type: Output }],\n segmentStart: [{ type: Output }],\n configReady: [{ type: Output }],\n dataReady: [{ type: Output }],\n domLoaded: [{ type: Output }],\n destroy: [{ type: Output }],\n error: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BaseDirective, [{\n type: Directive,\n args: [{ selector: '[lottie]' }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: AnimationLoader }]; }, { options: [{\n type: Input\n }], containerClass: [{\n type: Input\n }], styles: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], animationCreated: [{\n type: Output\n }], complete: [{\n type: Output\n }], loopComplete: [{\n type: Output\n }], enterFrame: [{\n type: Output\n }], segmentStart: [{\n type: Output\n }], configReady: [{\n type: Output\n }], dataReady: [{\n type: Output\n }], domLoaded: [{\n type: Output\n }], destroy: [{\n type: Output\n }], error: [{\n type: Output\n }] }); })();\nif (false) {\n /** @type {?} */\n BaseDirective.prototype.options;\n /** @type {?} */\n BaseDirective.prototype.containerClass;\n /** @type {?} */\n BaseDirective.prototype.styles;\n /** @type {?} */\n BaseDirective.prototype.width;\n /** @type {?} */\n BaseDirective.prototype.height;\n /**\n * `animationCreated` is dispatched after calling `loadAnimation`\n * @type {?}\n */\n BaseDirective.prototype.animationCreated;\n /**\n * `complete` is dispatched after completing the last frame\n * @type {?}\n */\n BaseDirective.prototype.complete;\n /**\n * `loopComplete` is dispatched after completing frame loop\n * @type {?}\n */\n BaseDirective.prototype.loopComplete;\n /**\n * `enterFrame` is dispatched after entering the new frame\n * @type {?}\n */\n BaseDirective.prototype.enterFrame;\n /**\n * `segmentStart` is dispatched when the new segment is adjusted\n * @type {?}\n */\n BaseDirective.prototype.segmentStart;\n /**\n * Original event name is `config_ready`. `config_ready` is dispatched\n * after the needed renderer is configured\n * @type {?}\n */\n BaseDirective.prototype.configReady;\n /**\n * Original event name is `data_ready`. `data_ready` is dispatched\n * when all parts of the animation have been loaded\n * @type {?}\n */\n BaseDirective.prototype.dataReady;\n /**\n * Original event name is `DOMLoaded`. `DOMLoaded` is dispatched\n * when elements have been added to the DOM\n * @type {?}\n */\n BaseDirective.prototype.domLoaded;\n /**\n * `destroy` will be dispatched in the `ngOnDestroy` hook of the service,\n * it's useful for releasing resources\n * @type {?}\n */\n BaseDirective.prototype.destroy;\n /**\n * `error` will be dispatched if the lottie player could not render\n * some frame or parse config\n * @type {?}\n */\n BaseDirective.prototype.error;\n /**\n * @type {?}\n * @private\n */\n BaseDirective.prototype.destroy$;\n /**\n * @type {?}\n * @private\n */\n BaseDirective.prototype.platformId;\n /**\n * @type {?}\n * @private\n */\n BaseDirective.prototype.animationLoader;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/animation-cache.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass AnimationCache {\n constructor() {\n this.cache = new Map();\n }\n /**\n * @param {?} options\n * @return {?}\n */\n static create(options) {\n if (options.useCache) {\n return new AnimationCache();\n }\n return null;\n }\n /**\n * @param {?} options\n * @return {?}\n */\n transformOptions(options) {\n /** @type {?} */\n const path = ((/** @type {?} */ (options))).path;\n if (path && this.cache.has(path)) {\n delete ((/** @type {?} */ (options))).path;\n ((/** @type {?} */ (options))).animationData = this.cache.get(path);\n }\n return options;\n }\n /**\n * @param {?} options\n * @param {?} animationItem\n * @return {?}\n */\n set(options, animationItem) {\n if (isAnimationConfigWithData(options)) {\n return;\n }\n /** @type {?} */\n const animationData = animationItem['animationData'];\n this.cache.set((/** @type {?} */ (options.path)), animationData);\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n AnimationCache.prototype.cache;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/events-facade.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Returns only those `EventEmitter` instances that has attached observers\n * @param {?} instance\n * @param {?} eventsMap\n * @return {?}\n */\nfunction getObservedEventEmitters(instance, eventsMap) {\n return (Object.keys(instance)\n // `Object.entries` is not supported in IE11.\n .map((/**\n * @param {?} key\n * @return {?}\n */\n key => [key, instance[key]]))\n .filter((/**\n * @param {?} __0\n * @return {?}\n */\n ([key, property]) => property instanceof EventEmitter &&\n property.observers.length > 0 &&\n eventsMap.hasOwnProperty(key)))\n .map((/**\n * @param {?} __0\n * @return {?}\n */\n ([key, eventEmitter]) => ({\n eventEmitter,\n name: eventsMap[key]\n }))));\n}\nclass LottieEventsFacade {\n /**\n * @param {?} ngZone\n * @param {?} platformId\n */\n constructor(ngZone, platformId) {\n this.ngZone = ngZone;\n this.platformId = platformId;\n /**\n * @see https://github.com/airbnb/lottie-web#events\n */\n this.eventsMap = {\n complete: 'complete',\n loopComplete: 'loopComplete',\n enterFrame: 'enterFrame',\n segmentStart: 'segmentStart',\n configReady: 'config_ready',\n dataReady: 'data_ready',\n domLoaded: 'DOMLoaded',\n destroy: 'destroy',\n error: 'error'\n };\n this.animationItem = null;\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.dispose();\n }\n /**\n * @param {?} instance\n * @param {?} animationItem\n * @return {?}\n */\n addEventListeners(instance, animationItem) {\n this.animationItem = animationItem;\n // `AnimationItem` triggers different events every ms, we have to listen\n // them outside Angular's context, thus it won't affect performance\n this.ngZone.runOutsideAngular((/**\n * @return {?}\n */\n () => this.addEventListenersToObservedEventEmitters(instance)));\n }\n /**\n * @private\n * @return {?}\n */\n dispose() {\n // The `ng-lottie` component or the `lottie` directive can be destroyed\n // before the `animationItem` is set, thus it will fail with\n // `Cannot read property 'destroy' of null`.\n // Potentially it can happen if the directive gets destroyed before change\n // detection is run.\n if (isPlatformServer(this.platformId) || this.animationItem === null) {\n return;\n }\n // `destroy()` will remove all events listeners\n this.animationItem.destroy();\n this.animationItem = null;\n }\n /**\n * @private\n * @param {?} instance\n * @return {?}\n */\n addEventListenersToObservedEventEmitters(instance) {\n /** @type {?} */\n const observedEmitters = getObservedEventEmitters(instance, this.eventsMap);\n for (const { name, eventEmitter } of observedEmitters) {\n (/** @type {?} */ (this.animationItem)).addEventListener(name, (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n eventEmitter.emit(event);\n }));\n }\n }\n}\nLottieEventsFacade.ɵfac = function LottieEventsFacade_Factory(t) { return new (t || LottieEventsFacade)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(PLATFORM_ID)); };\nLottieEventsFacade.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: LottieEventsFacade, factory: LottieEventsFacade.ɵfac });\n/** @nocollapse */\nLottieEventsFacade.ctorParameters = () => [\n { type: NgZone },\n { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LottieEventsFacade, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: String, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, null); })();\nif (false) {\n /**\n * @see https://github.com/airbnb/lottie-web#events\n * @type {?}\n * @private\n */\n LottieEventsFacade.prototype.eventsMap;\n /**\n * @type {?}\n * @private\n */\n LottieEventsFacade.prototype.animationItem;\n /**\n * @type {?}\n * @private\n */\n LottieEventsFacade.prototype.ngZone;\n /**\n * @type {?}\n * @private\n */\n LottieEventsFacade.prototype.platformId;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/lottie.directive.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass LottieDirective extends BaseDirective {\n /**\n * @param {?} platformId\n * @param {?} host\n * @param {?} eventsFacade\n * @param {?} animationLoader\n */\n constructor(platformId, host, eventsFacade, animationLoader) {\n super(platformId, animationLoader);\n this.host = host;\n this.eventsFacade = eventsFacade;\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n super.loadAnimation(this.host.nativeElement, this.eventsFacade, this);\n }\n}\nLottieDirective.ɵfac = function LottieDirective_Factory(t) { return new (t || LottieDirective)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef, 2), ɵngcc0.ɵɵdirectiveInject(LottieEventsFacade, 2), ɵngcc0.ɵɵdirectiveInject(AnimationLoader)); };\nLottieDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: LottieDirective, selectors: [[\"\", \"lottie\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([LottieEventsFacade]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nLottieDirective.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: ElementRef, decorators: [{ type: Self }] },\n { type: LottieEventsFacade, decorators: [{ type: Self }] },\n { type: AnimationLoader }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LottieDirective, [{\n type: Directive,\n args: [{\n selector: '[lottie]',\n providers: [LottieEventsFacade]\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ɵngcc0.ElementRef, decorators: [{\n type: Self\n }] }, { type: LottieEventsFacade, decorators: [{\n type: Self\n }] }, { type: AnimationLoader }]; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n LottieDirective.prototype.host;\n /**\n * @type {?}\n * @private\n */\n LottieDirective.prototype.eventsFacade;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/lottie.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass LottieComponent extends BaseDirective {\n /**\n * @param {?} platformId\n * @param {?} eventsFacade\n * @param {?} animationLoader\n */\n constructor(platformId, eventsFacade, animationLoader) {\n super(platformId, animationLoader);\n this.eventsFacade = eventsFacade;\n this.container = (/** @type {?} */ (null));\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n super.setWidthAndHeight();\n super.loadAnimation(this.container.nativeElement, this.eventsFacade, this);\n }\n}\nLottieComponent.ɵfac = function LottieComponent_Factory(t) { return new (t || LottieComponent)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(LottieEventsFacade, 2), ɵngcc0.ɵɵdirectiveInject(AnimationLoader)); };\nLottieComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LottieComponent, selectors: [[\"ng-lottie\"]], viewQuery: function LottieComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 3);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([LottieEventsFacade]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 6, consts: [[3, \"ngStyle\", \"ngClass\"], [\"container\", \"\"]], template: function LottieComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0, 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.width)(\"height\", ctx.height);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.styles)(\"ngClass\", ctx.containerClass);\n } }, directives: [ɵngcc1.NgStyle, ɵngcc1.NgClass], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nLottieComponent.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: LottieEventsFacade, decorators: [{ type: Self }] },\n { type: AnimationLoader }\n];\nLottieComponent.propDecorators = {\n container: [{ type: ViewChild, args: ['container', { static: true },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LottieComponent, [{\n type: Component,\n args: [{\n selector: 'ng-lottie',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [LottieEventsFacade]\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: LottieEventsFacade, decorators: [{\n type: Self\n }] }, { type: AnimationLoader }]; }, { container: [{\n type: ViewChild,\n args: ['container', { static: true }]\n }] }); })();\nif (false) {\n /** @type {?} */\n LottieComponent.prototype.container;\n /**\n * @type {?}\n * @private\n */\n LottieComponent.prototype.eventsFacade;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/lottie.module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass LottieModule {\n /**\n * @param {?} options\n * @return {?}\n */\n static forRoot(options) {\n return {\n ngModule: LottieModule,\n providers: [\n AnimationLoader,\n {\n provide: LOTTIE_OPTIONS,\n useValue: options\n },\n {\n provide: IS_SAFARI,\n useFactory: isSafariFactory\n },\n {\n provide: ANIMATION_CACHE,\n useFactory: AnimationCache.create,\n deps: [LOTTIE_OPTIONS]\n }\n ]\n };\n }\n}\nLottieModule.ɵfac = function LottieModule_Factory(t) { return new (t || LottieModule)(); };\nLottieModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: LottieModule });\nLottieModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(LottieModule, { declarations: function () { return [BaseDirective, LottieDirective, LottieComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [BaseDirective, LottieDirective, LottieComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LottieModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [BaseDirective, LottieDirective, LottieComponent],\n exports: [BaseDirective, LottieDirective, LottieComponent]\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/transfer-state.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass LottieTransferState {\n /**\n * @param {?} transferState\n */\n constructor(transferState) {\n this.transferState = transferState;\n }\n /**\n * @template T\n * @param {?} animation\n * @return {?}\n */\n get(animation) {\n /** @type {?} */\n const animationKey = transformAnimationFilenameToKey(animation);\n /** @type {?} */\n const stateKey = makeStateKey(animationKey);\n return this.transferState.get(stateKey, null);\n }\n}\nLottieTransferState.ɵfac = function LottieTransferState_Factory(t) { return new (t || LottieTransferState)(ɵngcc0.ɵɵinject(ɵngcc2.TransferState)); };\n/** @nocollapse */\nLottieTransferState.ctorParameters = () => [\n { type: TransferState }\n];\n/** @nocollapse */ LottieTransferState.ɵprov = ɵɵdefineInjectable({ factory: function LottieTransferState_Factory() { return new LottieTransferState(ɵɵinject(TransferState)); }, token: LottieTransferState, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LottieTransferState, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc2.TransferState }]; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n LottieTransferState.prototype.transferState;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/public_api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: ngx-lottie.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { BaseDirective, LottieComponent, LottieDirective, LottieModule, LottieTransferState, transformAnimationFilenameToKey, IS_SAFARI as ɵb, LOTTIE_OPTIONS as ɵc, ANIMATION_CACHE as ɵd, isSafariFactory as ɵe, AnimationLoader as ɵf, AnimationCache as ɵg, LottieEventsFacade as ɵh };\n\n//# sourceMappingURL=ngx-lottie.js.map","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AboutDialogComponent } from '../about-dialog/about-dialog.component';\nimport * as moment from 'moment';\nimport { DataService } from 'src/app/core/services/data-service.service';\nimport { Subscription } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { getWeatherStateIcon } from 'src/app/helperModules/chart.helpers';\nimport { ISerie, IndexFrontend } from 'src/app/shared/models/seriesInfo.interfaces';\n\ndeclare let gtag: Function;\n\n@Component({\n selector: 'app-side-layout',\n templateUrl: './side-layout.component.html',\n styleUrls: ['./side-layout.component.scss'],\n})\nexport class SideLayoutComponent implements OnDestroy, OnInit {\n topCardImg: string = `assets/${environment.project}/top_card_icon.svg`;\n sideCardImg: string = `assets/${environment.project}/side_card_icon.svg`;\n title: string;\n\n allowSharing: boolean = environment.sharingAvailable;\n\n retrievedData: ISerie[] = [];\n\n temperature: number;\n weatherState: number;\n maxTemp: number;\n minTemp: number;\n\n loading = true;\n\n href_logo: string;\n lastValuesDate: Date;\n projects: any[] = environment.stations || [];\n \n dataSub: Subscription;\n isModeled: boolean;\n\n constructor(private dataService: DataService, private dialog: MatDialog) {}\n\n ngOnInit(): void {\n this.dataService.getSiteSettings().subscribe((settings: any) => {\n this.href_logo = settings.url_logo;\n this.title = settings.page_name;\n });\n\n this.dataSub = this.dataService.windAtmosphereData$.subscribe((data) => {\n if (data.lastValues.length > 0) {\n this.isModeled = this.dataService.isWindAtmosphereModeled;\n let temperatures = []\n data.charts.yAxis.forEach(axis => axis.series.forEach(serie => {\n if (serie.indexFrontend === IndexFrontend.TemperatureChart) temperatures.push(serie);\n }))\n \n this.getData(data.lastValues\n .concat(...data.tables.filter(t => t.indexFrontend === IndexFrontend.WeatherStateTable))\n .concat(...temperatures)\n );\n }\n });\n }\n\n ngOnDestroy(): void { if (this.dataSub) this.dataSub.unsubscribe(); }\n\n getData(series: ISerie[]) {\n // Last value measure date\n this.assignData(series, 'lastValuesDate', 'date', s => s.indexFrontend === IndexFrontend.TemperatureLastValue);\n // Temperature last value\n this.assignData(series, 'temperature', 'lastValue', s => s.indexFrontend === IndexFrontend.TemperatureLastValue);\n\n let weatherState = series.find(s => s.indexFrontend === IndexFrontend.WeatherStateTable);\n if (weatherState) {\n this.weatherState = weatherState.chartValues\n .filter(v => v.date.getDay() === moment().day()) // Filter by today\n .find(v => v.date.getHours() === moment().hours()).value // Get the closest value to the hour\n }\n\n // Min and Max temperatures\n if (this.isModeled) {\n let tempSeries = series.find(s => s.indexFrontend === IndexFrontend.TemperatureChart);\n\n // Getting the chart values to get the min and max from this series\n let values = tempSeries.chartValues\n .filter(v => v.date.getDay() === moment().day())\n .map(value => value.value);\n\n this.minTemp = Math.min(...values);\n this.maxTemp = Math.max(...values);\n }\n else {\n this.assignData(series, 'minTemp', 'lastValue', s => s.indexFrontend === IndexFrontend.MinTemperatureLast24Hours);\n this.assignData(series, 'maxTemp', 'lastValue', s => s.indexFrontend === IndexFrontend.MaxTemperatureLast24Hours);\n }\n\n this.loading = false;\n }\n\n assignData(series: ISerie[], target: string, source: string, predicate: (series: ISerie) => boolean) {\n let alreadyExistentData = this.retrievedData.find(predicate);\n if (alreadyExistentData) {\n this[target] = alreadyExistentData[source]\n }\n else {\n let data = series.find(predicate);\n if (data) {\n this[target] = data[source];\n this.retrievedData.push(data);\n }\n }\n }\n\n openAbout() {\n this.dialog.open(AboutDialogComponent, { panelClass: 'custom-dialog-container' });\n }\n\n getWeatherStateIcon = (stateValue: number) => getWeatherStateIcon(stateValue);\n\n onOpenedChanged(e) {\n gtag('event', 'shared_page', {\n eventCategory: 'share',\n eventAction: 'click',\n eventValue: e,\n });\n }\n\n isDataUnderTolerance() : boolean {\n for (let i = 0; i < this.retrievedData.length; i++) {\n const serie = this.retrievedData[i];\n const tolerance = moment().subtract(serie.communicationTolerance, 'seconds');\n return !moment(serie.date).isBefore(tolerance);\n }\n }\n}\n","\n \n
\n \n \n \n\n \n
\n \n Powered byAQUASAFE\n \n
\n \n \n
\n \n \n \n\n \n \n \n\n \n Toda a informação é apresentada em hora local.\n \n
\n\n \n \n Powered byAQUASAFE\n \n \n
\n \n Partilhar:\n \n \n \n \n\n \n {{\n title\n }}\n
\n \n \n \n \n Valor medido \n \n a {{ lastValuesDate | date : \"d LLL 'às' HH:mm\" : \"en\" }}\n \n \n \n \n Valor previsto \n para {{ lastValuesDate | date : \"d LLL 'às' HH:mm\" : \"en\" }}\n \n \n \n \n \n {{\n temperature != null\n ? (temperature | number : \"1.1-1\" : \"en\")\n : \" - \"\n }}\n ºC\n \n \n \n \n Máxima e mínima das últimas 24h\n \n
\n Máxima:\n \n {{ maxTemp | number : \"1.1-1\" : \"en\" }} ºC\n \n Mínima:\n \n {{ minTemp | number : \"1.1-1\" : \"en\" }} ºC\n \n
\n \n \n
\n
\n\n 0\"\n hideToggle\n class=\"custom-card custom-expansion-panel\"\n >\n \n \n Outras Estações\n \n \n \n\n \n \n
\n","import {\n trigger,\n transition,\n animate,\n style,\n state,\n} from '@angular/animations';\n\nexport const fadeInAnimation = trigger('fadeInAnimation', [\n state('show', style({ opacity: 1 })),\n state('hide', style({ opacity: 0 })),\n transition(':enter', [style({ opacity: 0 }), animate(500)]),\n transition('show => hide', [animate('1s')]),\n transition('hide => show', [animate('0.5s')]),\n]);\n","/*\n * Leaflet.markercluster 1.5.0+master.499f71c,\n * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.\n * https://github.com/Leaflet/Leaflet.markercluster\n * (c) 2012-2017, Dave Leaver, smartrak\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = global || self, factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = {})));\n}(this, function (exports) { 'use strict';\n\n\t/*\n\t * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within\n\t */\n\n\tvar MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({\n\n\t\toptions: {\n\t\t\tmaxClusterRadius: 80, //A cluster will cover at most this many pixels from its center\n\t\t\ticonCreateFunction: null,\n\t\t\tclusterPane: L.Marker.prototype.options.pane,\n\n\t\t\tspiderfyOnMaxZoom: true,\n\t\t\tshowCoverageOnHover: true,\n\t\t\tzoomToBoundsOnClick: true,\n\t\t\tsingleMarkerMode: false,\n\n\t\t\tdisableClusteringAtZoom: null,\n\n\t\t\t// Setting this to false prevents the removal of any clusters outside of the viewpoint, which\n\t\t\t// is the default behaviour for performance reasons.\n\t\t\tremoveOutsideVisibleBounds: true,\n\n\t\t\t// Set to false to disable all animations (zoom and spiderfy).\n\t\t\t// If false, option animateAddingMarkers below has no effect.\n\t\t\t// If L.DomUtil.TRANSITION is falsy, this option has no effect.\n\t\t\tanimate: true,\n\n\t\t\t//Whether to animate adding markers after adding the MarkerClusterGroup to the map\n\t\t\t// If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains.\n\t\t\tanimateAddingMarkers: false,\n\n\t\t\t// Make it possible to provide custom function to calculate spiderfy shape positions\n\t\t\tspiderfyShapePositions: null,\n\n\t\t\t//Increase to increase the distance away that spiderfied markers appear from the center\n\t\t\tspiderfyDistanceMultiplier: 1,\n\n\t\t\t// Make it possible to specify a polyline options on a spider leg\n\t\t\tspiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 },\n\n\t\t\t// When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts\n\t\t\tchunkedLoading: false,\n\t\t\tchunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback)\n\t\t\tchunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser\n\t\t\tchunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator)\n\n\t\t\t//Options to pass to the L.Polygon constructor\n\t\t\tpolygonOptions: {}\n\t\t},\n\n\t\tinitialize: function (options) {\n\t\t\tL.Util.setOptions(this, options);\n\t\t\tif (!this.options.iconCreateFunction) {\n\t\t\t\tthis.options.iconCreateFunction = this._defaultIconCreateFunction;\n\t\t\t}\n\n\t\t\tthis._featureGroup = L.featureGroup();\n\t\t\tthis._featureGroup.addEventParent(this);\n\n\t\t\tthis._nonPointGroup = L.featureGroup();\n\t\t\tthis._nonPointGroup.addEventParent(this);\n\n\t\t\tthis._inZoomAnimation = 0;\n\t\t\tthis._needsClustering = [];\n\t\t\tthis._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of\n\t\t\t//The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move\n\t\t\tthis._currentShownBounds = null;\n\n\t\t\tthis._queue = [];\n\n\t\t\tthis._childMarkerEventHandlers = {\n\t\t\t\t'dragstart': this._childMarkerDragStart,\n\t\t\t\t'move': this._childMarkerMoved,\n\t\t\t\t'dragend': this._childMarkerDragEnd,\n\t\t\t};\n\n\t\t\t// Hook the appropriate animation methods.\n\t\t\tvar animate = L.DomUtil.TRANSITION && this.options.animate;\n\t\t\tL.extend(this, animate ? this._withAnimation : this._noAnimation);\n\t\t\t// Remember which MarkerCluster class to instantiate (animated or not).\n\t\t\tthis._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated;\n\t\t},\n\n\t\taddLayer: function (layer) {\n\n\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\treturn this.addLayers([layer]);\n\t\t\t}\n\n\t\t\t//Don't cluster non point data\n\t\t\tif (!layer.getLatLng) {\n\t\t\t\tthis._nonPointGroup.addLayer(layer);\n\t\t\t\tthis.fire('layeradd', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!this._map) {\n\t\t\t\tthis._needsClustering.push(layer);\n\t\t\t\tthis.fire('layeradd', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this.hasLayer(layer)) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\n\t\t\t//If we have already clustered we'll need to add this one to a cluster\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\t\t\t}\n\n\t\t\tthis._addLayer(layer, this._maxZoom);\n\t\t\tthis.fire('layeradd', { layer: layer });\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t//Work out what is visible\n\t\t\tvar visibleLayer = layer,\n\t\t\t currentZoom = this._zoom;\n\t\t\tif (layer.__parent) {\n\t\t\t\twhile (visibleLayer.__parent._zoom >= currentZoom) {\n\t\t\t\t\tvisibleLayer = visibleLayer.__parent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._currentShownBounds.contains(visibleLayer.getLatLng())) {\n\t\t\t\tif (this.options.animateAddingMarkers) {\n\t\t\t\t\tthis._animationAddLayer(layer, visibleLayer);\n\t\t\t\t} else {\n\t\t\t\t\tthis._animationAddLayerNonAnimated(layer, visibleLayer);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tremoveLayer: function (layer) {\n\n\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\treturn this.removeLayers([layer]);\n\t\t\t}\n\n\t\t\t//Non point layers\n\t\t\tif (!layer.getLatLng) {\n\t\t\t\tthis._nonPointGroup.removeLayer(layer);\n\t\t\t\tthis.fire('layerremove', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!this._map) {\n\t\t\t\tif (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {\n\t\t\t\t\tthis._needsRemoving.push({ layer: layer, latlng: layer._latlng });\n\t\t\t\t}\n\t\t\t\tthis.fire('layerremove', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!layer.__parent) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\t\t\t\tthis._unspiderfyLayer(layer);\n\t\t\t}\n\n\t\t\t//Remove the marker from clusters\n\t\t\tthis._removeLayer(layer, true);\n\t\t\tthis.fire('layerremove', { layer: layer });\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\tlayer.off(this._childMarkerEventHandlers, this);\n\n\t\t\tif (this._featureGroup.hasLayer(layer)) {\n\t\t\t\tthis._featureGroup.removeLayer(layer);\n\t\t\t\tif (layer.clusterShow) {\n\t\t\t\t\tlayer.clusterShow();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Takes an array of markers and adds them in bulk\n\t\taddLayers: function (layersArray, skipLayerAddEvent) {\n\t\t\tif (!L.Util.isArray(layersArray)) {\n\t\t\t\treturn this.addLayer(layersArray);\n\t\t\t}\n\n\t\t\tvar fg = this._featureGroup,\n\t\t\t npg = this._nonPointGroup,\n\t\t\t chunked = this.options.chunkedLoading,\n\t\t\t chunkInterval = this.options.chunkInterval,\n\t\t\t chunkProgress = this.options.chunkProgress,\n\t\t\t l = layersArray.length,\n\t\t\t offset = 0,\n\t\t\t originalArray = true,\n\t\t\t m;\n\n\t\t\tif (this._map) {\n\t\t\t\tvar started = (new Date()).getTime();\n\t\t\t\tvar process = L.bind(function () {\n\t\t\t\t\tvar start = (new Date()).getTime();\n\n\t\t\t\t\t// Make sure to unspiderfy before starting to add some layers\n\t\t\t\t\tif (this._map && this._unspiderfy) {\n\t\t\t\t\t\tthis._unspiderfy();\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (; offset < l; offset++) {\n\t\t\t\t\t\tif (chunked && offset % 200 === 0) {\n\t\t\t\t\t\t\t// every couple hundred markers, instrument the time elapsed since processing started:\n\t\t\t\t\t\t\tvar elapsed = (new Date()).getTime() - start;\n\t\t\t\t\t\t\tif (elapsed > chunkInterval) {\n\t\t\t\t\t\t\t\tbreak; // been working too hard, time to take a break :-)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tm = layersArray[offset];\n\n\t\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\t\t// Side effects:\n\t\t\t\t\t\t// - Total increases, so chunkProgress ratio jumps backward.\n\t\t\t\t\t\t// - Groups are not included in this group, only their non-group child layers (hasLayer).\n\t\t\t\t\t\t// Changing array length while looping does not affect performance in current browsers:\n\t\t\t\t\t\t// http://jsperf.com/for-loop-changing-length/6\n\t\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//Not point data, can't be clustered\n\t\t\t\t\t\tif (!m.getLatLng) {\n\t\t\t\t\t\t\tnpg.addLayer(m);\n\t\t\t\t\t\t\tif (!skipLayerAddEvent) {\n\t\t\t\t\t\t\t\tthis.fire('layeradd', { layer: m });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._addLayer(m, this._maxZoom);\n\t\t\t\t\t\tif (!skipLayerAddEvent) {\n\t\t\t\t\t\t\tthis.fire('layeradd', { layer: m });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will\n\t\t\t\t\t\tif (m.__parent) {\n\t\t\t\t\t\t\tif (m.__parent.getChildCount() === 2) {\n\t\t\t\t\t\t\t\tvar markers = m.__parent.getAllChildMarkers(),\n\t\t\t\t\t\t\t\t otherMarker = markers[0] === m ? markers[1] : markers[0];\n\t\t\t\t\t\t\t\tfg.removeLayer(otherMarker);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chunkProgress) {\n\t\t\t\t\t\t// report progress and time elapsed:\n\t\t\t\t\t\tchunkProgress(offset, l, (new Date()).getTime() - started);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Completed processing all markers.\n\t\t\t\t\tif (offset === l) {\n\n\t\t\t\t\t\t// Refresh bounds and weighted positions.\n\t\t\t\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\t\t\t\tthis._refreshClustersIcons();\n\n\t\t\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetTimeout(process, this.options.chunkDelay);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\n\t\t\t\tprocess();\n\t\t\t} else {\n\t\t\t\tvar needsClustering = this._needsClustering;\n\n\t\t\t\tfor (; offset < l; offset++) {\n\t\t\t\t\tm = layersArray[offset];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t//Not point data, can't be clustered\n\t\t\t\t\tif (!m.getLatLng) {\n\t\t\t\t\t\tnpg.addLayer(m);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsClustering.push(m);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t//Takes an array of markers and removes them in bulk\n\t\tremoveLayers: function (layersArray) {\n\t\t\tvar i, m,\n\t\t\t l = layersArray.length,\n\t\t\t fg = this._featureGroup,\n\t\t\t npg = this._nonPointGroup,\n\t\t\t originalArray = true;\n\n\t\t\tif (!this._map) {\n\t\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\t\tm = layersArray[i];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._arraySplice(this._needsClustering, m);\n\t\t\t\t\tnpg.removeLayer(m);\n\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\tthis._needsRemoving.push({ layer: m, latlng: m._latlng });\n\t\t\t\t\t}\n\t\t\t\t\tthis.fire('layerremove', { layer: m });\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\n\t\t\t\t// Work on a copy of the array, so that next loop is not affected.\n\t\t\t\tvar layersArray2 = layersArray.slice(),\n\t\t\t\t l2 = l;\n\t\t\t\tfor (i = 0; i < l2; i++) {\n\t\t\t\t\tm = layersArray2[i];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray2);\n\t\t\t\t\t\tl2 = layersArray2.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._unspiderfyLayer(m);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\tm = layersArray[i];\n\n\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!m.__parent) {\n\t\t\t\t\tnpg.removeLayer(m);\n\t\t\t\t\tthis.fire('layerremove', { layer: m });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthis._removeLayer(m, true, true);\n\t\t\t\tthis.fire('layerremove', { layer: m });\n\n\t\t\t\tif (fg.hasLayer(m)) {\n\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t//Fix up the clusters and markers on the map\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Removes all layers from the MarkerClusterGroup\n\t\tclearLayers: function () {\n\t\t\t//Need our own special implementation as the LayerGroup one doesn't work for us\n\n\t\t\t//If we aren't on the map (yet), blow away the markers we know of\n\t\t\tif (!this._map) {\n\t\t\t\tthis._needsClustering = [];\n\t\t\t\tthis._needsRemoving = [];\n\t\t\t\tdelete this._gridClusters;\n\t\t\t\tdelete this._gridUnclustered;\n\t\t\t}\n\n\t\t\tif (this._noanimationUnspiderfy) {\n\t\t\t\tthis._noanimationUnspiderfy();\n\t\t\t}\n\n\t\t\t//Remove all the visible layers\n\t\t\tthis._featureGroup.clearLayers();\n\t\t\tthis._nonPointGroup.clearLayers();\n\n\t\t\tthis.eachLayer(function (marker) {\n\t\t\t\tmarker.off(this._childMarkerEventHandlers, this);\n\t\t\t\tdelete marker.__parent;\n\t\t\t}, this);\n\n\t\t\tif (this._map) {\n\t\t\t\t//Reset _topClusterLevel and the DistanceGrids\n\t\t\t\tthis._generateInitialClusters();\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Override FeatureGroup.getBounds as it doesn't work\n\t\tgetBounds: function () {\n\t\t\tvar bounds = new L.LatLngBounds();\n\n\t\t\tif (this._topClusterLevel) {\n\t\t\t\tbounds.extend(this._topClusterLevel._bounds);\n\t\t\t}\n\n\t\t\tfor (var i = this._needsClustering.length - 1; i >= 0; i--) {\n\t\t\t\tbounds.extend(this._needsClustering[i].getLatLng());\n\t\t\t}\n\n\t\t\tbounds.extend(this._nonPointGroup.getBounds());\n\n\t\t\treturn bounds;\n\t\t},\n\n\t\t//Overrides LayerGroup.eachLayer\n\t\teachLayer: function (method, context) {\n\t\t\tvar markers = this._needsClustering.slice(),\n\t\t\t\tneedsRemoving = this._needsRemoving,\n\t\t\t\tthisNeedsRemoving, i, j;\n\n\t\t\tif (this._topClusterLevel) {\n\t\t\t\tthis._topClusterLevel.getAllChildMarkers(markers);\n\t\t\t}\n\n\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\tthisNeedsRemoving = true;\n\n\t\t\t\tfor (j = needsRemoving.length - 1; j >= 0; j--) {\n\t\t\t\t\tif (needsRemoving[j].layer === markers[i]) {\n\t\t\t\t\t\tthisNeedsRemoving = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (thisNeedsRemoving) {\n\t\t\t\t\tmethod.call(context, markers[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._nonPointGroup.eachLayer(method, context);\n\t\t},\n\n\t\t//Overrides LayerGroup.getLayers\n\t\tgetLayers: function () {\n\t\t\tvar layers = [];\n\t\t\tthis.eachLayer(function (l) {\n\t\t\t\tlayers.push(l);\n\t\t\t});\n\t\t\treturn layers;\n\t\t},\n\n\t\t//Overrides LayerGroup.getLayer, WARNING: Really bad performance\n\t\tgetLayer: function (id) {\n\t\t\tvar result = null;\n\n\t\t\tid = parseInt(id, 10);\n\n\t\t\tthis.eachLayer(function (l) {\n\t\t\t\tif (L.stamp(l) === id) {\n\t\t\t\t\tresult = l;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result;\n\t\t},\n\n\t\t//Returns true if the given layer is in this MarkerClusterGroup\n\t\thasLayer: function (layer) {\n\t\t\tif (!layer) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar i, anArray = this._needsClustering;\n\n\t\t\tfor (i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i] === layer) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tanArray = this._needsRemoving;\n\t\t\tfor (i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i].layer === layer) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);\n\t\t},\n\n\t\t//Zoom down to show the given layer (spiderfying if necessary) then calls the callback\n\t\tzoomToShowLayer: function (layer, callback) {\n\n\t\t\tvar map = this._map;\n\n\t\t\tif (typeof callback !== 'function') {\n\t\t\t\tcallback = function () {};\n\t\t\t}\n\n\t\t\tvar showMarker = function () {\n\t\t\t\t// Assumes that map.hasLayer checks for direct appearance on map, not recursively calling\n\t\t\t\t// hasLayer on Layer Groups that are on map (typically not calling this MarkerClusterGroup.hasLayer, which would always return true)\n\t\t\t\tif ((map.hasLayer(layer) || map.hasLayer(layer.__parent)) && !this._inZoomAnimation) {\n\t\t\t\t\tthis._map.off('moveend', showMarker, this);\n\t\t\t\t\tthis.off('animationend', showMarker, this);\n\n\t\t\t\t\tif (map.hasLayer(layer)) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if (layer.__parent._icon) {\n\t\t\t\t\t\tthis.once('spiderfied', callback, this);\n\t\t\t\t\t\tlayer.__parent.spiderfy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (layer._icon && this._map.getBounds().contains(layer.getLatLng())) {\n\t\t\t\t//Layer is visible ond on screen, immediate return\n\t\t\t\tcallback();\n\t\t\t} else if (layer.__parent._zoom < Math.round(this._map._zoom)) {\n\t\t\t\t//Layer should be visible at this zoom level. It must not be on screen so just pan over to it\n\t\t\t\tthis._map.on('moveend', showMarker, this);\n\t\t\t\tthis._map.panTo(layer.getLatLng());\n\t\t\t} else {\n\t\t\t\tthis._map.on('moveend', showMarker, this);\n\t\t\t\tthis.on('animationend', showMarker, this);\n\t\t\t\tlayer.__parent.zoomToBounds();\n\t\t\t}\n\t\t},\n\n\t\t//Overrides FeatureGroup.onAdd\n\t\tonAdd: function (map) {\n\t\t\tthis._map = map;\n\t\t\tvar i, l, layer;\n\n\t\t\tif (!isFinite(this._map.getMaxZoom())) {\n\t\t\t\tthrow \"Map has no maxZoom specified\";\n\t\t\t}\n\n\t\t\tthis._featureGroup.addTo(map);\n\t\t\tthis._nonPointGroup.addTo(map);\n\n\t\t\tif (!this._gridClusters) {\n\t\t\t\tthis._generateInitialClusters();\n\t\t\t}\n\n\t\t\tthis._maxLat = map.options.crs.projection.MAX_LATITUDE;\n\n\t\t\t//Restore all the positions as they are in the MCG before removing them\n\t\t\tfor (i = 0, l = this._needsRemoving.length; i < l; i++) {\n\t\t\t\tlayer = this._needsRemoving[i];\n\t\t\t\tlayer.newlatlng = layer.layer._latlng;\n\t\t\t\tlayer.layer._latlng = layer.latlng;\n\t\t\t}\n\t\t\t//Remove them, then restore their new positions\n\t\t\tfor (i = 0, l = this._needsRemoving.length; i < l; i++) {\n\t\t\t\tlayer = this._needsRemoving[i];\n\t\t\t\tthis._removeLayer(layer.layer, true);\n\t\t\t\tlayer.layer._latlng = layer.newlatlng;\n\t\t\t}\n\t\t\tthis._needsRemoving = [];\n\n\t\t\t//Remember the current zoom level and bounds\n\t\t\tthis._zoom = Math.round(this._map._zoom);\n\t\t\tthis._currentShownBounds = this._getExpandedVisibleBounds();\n\n\t\t\tthis._map.on('zoomend', this._zoomEnd, this);\n\t\t\tthis._map.on('moveend', this._moveEnd, this);\n\n\t\t\tif (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n\t\t\t\tthis._spiderfierOnAdd();\n\t\t\t}\n\n\t\t\tthis._bindEvents();\n\n\t\t\t//Actually add our markers to the map:\n\t\t\tl = this._needsClustering;\n\t\t\tthis._needsClustering = [];\n\t\t\tthis.addLayers(l, true);\n\t\t},\n\n\t\t//Overrides FeatureGroup.onRemove\n\t\tonRemove: function (map) {\n\t\t\tmap.off('zoomend', this._zoomEnd, this);\n\t\t\tmap.off('moveend', this._moveEnd, this);\n\n\t\t\tthis._unbindEvents();\n\n\t\t\t//In case we are in a cluster animation\n\t\t\tthis._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\n\t\t\tif (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n\t\t\t\tthis._spiderfierOnRemove();\n\t\t\t}\n\n\t\t\tdelete this._maxLat;\n\n\t\t\t//Clean up all the layers we added to the map\n\t\t\tthis._hideCoverage();\n\t\t\tthis._featureGroup.remove();\n\t\t\tthis._nonPointGroup.remove();\n\n\t\t\tthis._featureGroup.clearLayers();\n\n\t\t\tthis._map = null;\n\t\t},\n\n\t\tgetVisibleParent: function (marker) {\n\t\t\tvar vMarker = marker;\n\t\t\twhile (vMarker && !vMarker._icon) {\n\t\t\t\tvMarker = vMarker.__parent;\n\t\t\t}\n\t\t\treturn vMarker || null;\n\t\t},\n\n\t\t//Remove the given object from the given array\n\t\t_arraySplice: function (anArray, obj) {\n\t\t\tfor (var i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i] === obj) {\n\t\t\t\t\tanArray.splice(i, 1);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom.\n\t\t * @param marker to be removed from _gridUnclustered.\n\t\t * @param z integer bottom start zoom level (included)\n\t\t * @private\n\t\t */\n\t\t_removeFromGridUnclustered: function (marker, z) {\n\t\t\tvar map = this._map,\n\t\t\t gridUnclustered = this._gridUnclustered,\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t\tfor (; z >= minZoom; z--) {\n\t\t\t\tif (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_childMarkerDragStart: function (e) {\n\t\t\te.target.__dragStart = e.target._latlng;\n\t\t},\n\n\t\t_childMarkerMoved: function (e) {\n\t\t\tif (!this._ignoreMove && !e.target.__dragStart) {\n\t\t\t\tvar isPopupOpen = e.target._popup && e.target._popup.isOpen();\n\n\t\t\t\tthis._moveChild(e.target, e.oldLatLng, e.latlng);\n\n\t\t\t\tif (isPopupOpen) {\n\t\t\t\t\te.target.openPopup();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_moveChild: function (layer, from, to) {\n\t\t\tlayer._latlng = from;\n\t\t\tthis.removeLayer(layer);\n\n\t\t\tlayer._latlng = to;\n\t\t\tthis.addLayer(layer);\n\t\t},\n\n\t\t_childMarkerDragEnd: function (e) {\n\t\t\tvar dragStart = e.target.__dragStart;\n\t\t\tdelete e.target.__dragStart;\n\t\t\tif (dragStart) {\n\t\t\t\tthis._moveChild(e.target, dragStart, e.target._latlng);\n\t\t\t}\t\t\n\t\t},\n\n\n\t\t//Internal function for removing a marker from everything.\n\t\t//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)\n\t\t_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {\n\t\t\tvar gridClusters = this._gridClusters,\n\t\t\t\tgridUnclustered = this._gridUnclustered,\n\t\t\t\tfg = this._featureGroup,\n\t\t\t\tmap = this._map,\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t\t//Remove the marker from distance clusters it might be in\n\t\t\tif (removeFromDistanceGrid) {\n\t\t\t\tthis._removeFromGridUnclustered(marker, this._maxZoom);\n\t\t\t}\n\n\t\t\t//Work our way up the clusters removing them as we go if required\n\t\t\tvar cluster = marker.__parent,\n\t\t\t\tmarkers = cluster._markers,\n\t\t\t\totherMarker;\n\n\t\t\t//Remove the marker from the immediate parents marker list\n\t\t\tthis._arraySplice(markers, marker);\n\n\t\t\twhile (cluster) {\n\t\t\t\tcluster._childCount--;\n\t\t\t\tcluster._boundsNeedUpdate = true;\n\n\t\t\t\tif (cluster._zoom < minZoom) {\n\t\t\t\t\t//Top level, do nothing\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required\n\t\t\t\t\t//We need to push the other marker up to the parent\n\t\t\t\t\totherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0];\n\n\t\t\t\t\t//Update distance grid\n\t\t\t\t\tgridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom));\n\t\t\t\t\tgridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom));\n\n\t\t\t\t\t//Move otherMarker up to parent\n\t\t\t\t\tthis._arraySplice(cluster.__parent._childClusters, cluster);\n\t\t\t\t\tcluster.__parent._markers.push(otherMarker);\n\t\t\t\t\totherMarker.__parent = cluster.__parent;\n\n\t\t\t\t\tif (cluster._icon) {\n\t\t\t\t\t\t//Cluster is currently on the map, need to put the marker on the map instead\n\t\t\t\t\t\tfg.removeLayer(cluster);\n\t\t\t\t\t\tif (!dontUpdateMap) {\n\t\t\t\t\t\t\tfg.addLayer(otherMarker);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcluster._iconNeedsUpdate = true;\n\t\t\t\t}\n\n\t\t\t\tcluster = cluster.__parent;\n\t\t\t}\n\n\t\t\tdelete marker.__parent;\n\t\t},\n\n\t\t_isOrIsParent: function (el, oel) {\n\t\t\twhile (oel) {\n\t\t\t\tif (el === oel) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\toel = oel.parentNode;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t//Override L.Evented.fire\n\t\tfire: function (type, data, propagate) {\n\t\t\tif (data && data.layer instanceof L.MarkerCluster) {\n\t\t\t\t//Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget)\n\t\t\t\tif (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttype = 'cluster' + type;\n\t\t\t}\n\n\t\t\tL.FeatureGroup.prototype.fire.call(this, type, data, propagate);\n\t\t},\n\n\t\t//Override L.Evented.listens\n\t\tlistens: function (type, propagate) {\n\t\t\treturn L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate);\n\t\t},\n\n\t\t//Default functionality\n\t\t_defaultIconCreateFunction: function (cluster) {\n\t\t\tvar childCount = cluster.getChildCount();\n\n\t\t\tvar c = ' marker-cluster-';\n\t\t\tif (childCount < 10) {\n\t\t\t\tc += 'small';\n\t\t\t} else if (childCount < 100) {\n\t\t\t\tc += 'medium';\n\t\t\t} else {\n\t\t\t\tc += 'large';\n\t\t\t}\n\n\t\t\treturn new L.DivIcon({ html: '
' + childCount + '
', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });\n\t\t},\n\n\t\t_bindEvents: function () {\n\t\t\tvar map = this._map,\n\t\t\t spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n\t\t\t showCoverageOnHover = this.options.showCoverageOnHover,\n\t\t\t zoomToBoundsOnClick = this.options.zoomToBoundsOnClick;\n\n\t\t\t//Zoom on cluster click or spiderfy if we are at the lowest level\n\t\t\tif (spiderfyOnMaxZoom || zoomToBoundsOnClick) {\n\t\t\t\tthis.on('clusterclick', this._zoomOrSpiderfy, this);\n\t\t\t}\n\n\t\t\t//Show convex hull (boundary) polygon on mouse over\n\t\t\tif (showCoverageOnHover) {\n\t\t\t\tthis.on('clustermouseover', this._showCoverage, this);\n\t\t\t\tthis.on('clustermouseout', this._hideCoverage, this);\n\t\t\t\tmap.on('zoomend', this._hideCoverage, this);\n\t\t\t}\n\t\t},\n\n\t\t_zoomOrSpiderfy: function (e) {\n\t\t\tvar cluster = e.layer,\n\t\t\t bottomCluster = cluster;\n\n\t\t\twhile (bottomCluster._childClusters.length === 1) {\n\t\t\t\tbottomCluster = bottomCluster._childClusters[0];\n\t\t\t}\n\n\t\t\tif (bottomCluster._zoom === this._maxZoom &&\n\t\t\t\tbottomCluster._childCount === cluster._childCount &&\n\t\t\t\tthis.options.spiderfyOnMaxZoom) {\n\n\t\t\t\t// All child markers are contained in a single cluster from this._maxZoom to this cluster.\n\t\t\t\tcluster.spiderfy();\n\t\t\t} else if (this.options.zoomToBoundsOnClick) {\n\t\t\t\tcluster.zoomToBounds();\n\t\t\t}\n\n\t\t\t// Focus the map again for keyboard users.\n\t\t\tif (e.originalEvent && e.originalEvent.keyCode === 13) {\n\t\t\t\tthis._map._container.focus();\n\t\t\t}\n\t\t},\n\n\t\t_showCoverage: function (e) {\n\t\t\tvar map = this._map;\n\t\t\tif (this._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this._shownPolygon) {\n\t\t\t\tmap.removeLayer(this._shownPolygon);\n\t\t\t}\n\t\t\tif (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) {\n\t\t\t\tthis._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions);\n\t\t\t\tmap.addLayer(this._shownPolygon);\n\t\t\t}\n\t\t},\n\n\t\t_hideCoverage: function () {\n\t\t\tif (this._shownPolygon) {\n\t\t\t\tthis._map.removeLayer(this._shownPolygon);\n\t\t\t\tthis._shownPolygon = null;\n\t\t\t}\n\t\t},\n\n\t\t_unbindEvents: function () {\n\t\t\tvar spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n\t\t\t\tshowCoverageOnHover = this.options.showCoverageOnHover,\n\t\t\t\tzoomToBoundsOnClick = this.options.zoomToBoundsOnClick,\n\t\t\t\tmap = this._map;\n\n\t\t\tif (spiderfyOnMaxZoom || zoomToBoundsOnClick) {\n\t\t\t\tthis.off('clusterclick', this._zoomOrSpiderfy, this);\n\t\t\t}\n\t\t\tif (showCoverageOnHover) {\n\t\t\t\tthis.off('clustermouseover', this._showCoverage, this);\n\t\t\t\tthis.off('clustermouseout', this._hideCoverage, this);\n\t\t\t\tmap.off('zoomend', this._hideCoverage, this);\n\t\t\t}\n\t\t},\n\n\t\t_zoomEnd: function () {\n\t\t\tif (!this._map) { //May have been removed from the map by a zoomEnd handler\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._mergeSplitClusters();\n\n\t\t\tthis._zoom = Math.round(this._map._zoom);\n\t\t\tthis._currentShownBounds = this._getExpandedVisibleBounds();\n\t\t},\n\n\t\t_moveEnd: function () {\n\t\t\tif (this._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar newBounds = this._getExpandedVisibleBounds();\n\n\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds);\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);\n\n\t\t\tthis._currentShownBounds = newBounds;\n\t\t\treturn;\n\t\t},\n\n\t\t_generateInitialClusters: function () {\n\t\t\tvar maxZoom = Math.ceil(this._map.getMaxZoom()),\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\t\tradius = this.options.maxClusterRadius,\n\t\t\t\tradiusFn = radius;\n\n\t\t\t//If we just set maxClusterRadius to a single number, we need to create\n\t\t\t//a simple function to return that number. Otherwise, we just have to\n\t\t\t//use the function we've passed in.\n\t\t\tif (typeof radius !== \"function\") {\n\t\t\t\tradiusFn = function () { return radius; };\n\t\t\t}\n\n\t\t\tif (this.options.disableClusteringAtZoom !== null) {\n\t\t\t\tmaxZoom = this.options.disableClusteringAtZoom - 1;\n\t\t\t}\n\t\t\tthis._maxZoom = maxZoom;\n\t\t\tthis._gridClusters = {};\n\t\t\tthis._gridUnclustered = {};\n\n\t\t\t//Set up DistanceGrids for each zoom\n\t\t\tfor (var zoom = maxZoom; zoom >= minZoom; zoom--) {\n\t\t\t\tthis._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));\n\t\t\t\tthis._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));\n\t\t\t}\n\n\t\t\t// Instantiate the appropriate L.MarkerCluster class (animated or not).\n\t\t\tthis._topClusterLevel = new this._markerCluster(this, minZoom - 1);\n\t\t},\n\n\t\t//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)\n\t\t_addLayer: function (layer, zoom) {\n\t\t\tvar gridClusters = this._gridClusters,\n\t\t\t gridUnclustered = this._gridUnclustered,\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\t markerPoint, z;\n\n\t\t\tif (this.options.singleMarkerMode) {\n\t\t\t\tthis._overrideMarkerIcon(layer);\n\t\t\t}\n\n\t\t\tlayer.on(this._childMarkerEventHandlers, this);\n\n\t\t\t//Find the lowest zoom level to slot this one in\n\t\t\tfor (; zoom >= minZoom; zoom--) {\n\t\t\t\tmarkerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position\n\n\t\t\t\t//Try find a cluster close by\n\t\t\t\tvar closest = gridClusters[zoom].getNearObject(markerPoint);\n\t\t\t\tif (closest) {\n\t\t\t\t\tclosest._addChild(layer);\n\t\t\t\t\tlayer.__parent = closest;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Try find a marker close by to form a new cluster with\n\t\t\t\tclosest = gridUnclustered[zoom].getNearObject(markerPoint);\n\t\t\t\tif (closest) {\n\t\t\t\t\tvar parent = closest.__parent;\n\t\t\t\t\tif (parent) {\n\t\t\t\t\t\tthis._removeLayer(closest, false);\n\t\t\t\t\t}\n\n\t\t\t\t\t//Create new cluster with these 2 in it\n\n\t\t\t\t\tvar newCluster = new this._markerCluster(this, zoom, closest, layer);\n\t\t\t\t\tgridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom));\n\t\t\t\t\tclosest.__parent = newCluster;\n\t\t\t\t\tlayer.__parent = newCluster;\n\n\t\t\t\t\t//First create any new intermediate parent clusters that don't exist\n\t\t\t\t\tvar lastParent = newCluster;\n\t\t\t\t\tfor (z = zoom - 1; z > parent._zoom; z--) {\n\t\t\t\t\t\tlastParent = new this._markerCluster(this, z, lastParent);\n\t\t\t\t\t\tgridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z));\n\t\t\t\t\t}\n\t\t\t\t\tparent._addChild(lastParent);\n\n\t\t\t\t\t//Remove closest from this zoom level and any above that it is in, replace with newCluster\n\t\t\t\t\tthis._removeFromGridUnclustered(closest, zoom);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards\n\t\t\t\tgridUnclustered[zoom].addObject(layer, markerPoint);\n\t\t\t}\n\n\t\t\t//Didn't get in anything, add us to the top\n\t\t\tthis._topClusterLevel._addChild(layer);\n\t\t\tlayer.__parent = this._topClusterLevel;\n\t\t\treturn;\n\t\t},\n\n\t\t/**\n\t\t * Refreshes the icon of all \"dirty\" visible clusters.\n\t\t * Non-visible \"dirty\" clusters will be updated when they are added to the map.\n\t\t * @private\n\t\t */\n\t\t_refreshClustersIcons: function () {\n\t\t\tthis._featureGroup.eachLayer(function (c) {\n\t\t\t\tif (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {\n\t\t\t\t\tc._updateIcon();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t//Enqueue code to fire after the marker expand/contract has happened\n\t\t_enqueue: function (fn) {\n\t\t\tthis._queue.push(fn);\n\t\t\tif (!this._queueTimeout) {\n\t\t\t\tthis._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300);\n\t\t\t}\n\t\t},\n\t\t_processQueue: function () {\n\t\t\tfor (var i = 0; i < this._queue.length; i++) {\n\t\t\t\tthis._queue[i].call(this);\n\t\t\t}\n\t\t\tthis._queue.length = 0;\n\t\t\tclearTimeout(this._queueTimeout);\n\t\t\tthis._queueTimeout = null;\n\t\t},\n\n\t\t//Merge and split any existing clusters that are too big or small\n\t\t_mergeSplitClusters: function () {\n\t\t\tvar mapZoom = Math.round(this._map._zoom);\n\n\t\t\t//In case we are starting to split before the animation finished\n\t\t\tthis._processQueue();\n\n\t\t\tif (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split\n\t\t\t\tthis._animationStart();\n\t\t\t\t//Remove clusters now off screen\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds());\n\n\t\t\t\tthis._animationZoomIn(this._zoom, mapZoom);\n\n\t\t\t} else if (this._zoom > mapZoom) { //Zoom out, merge\n\t\t\t\tthis._animationStart();\n\n\t\t\t\tthis._animationZoomOut(this._zoom, mapZoom);\n\t\t\t} else {\n\t\t\t\tthis._moveEnd();\n\t\t\t}\n\t\t},\n\n\t\t//Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan)\n\t\t_getExpandedVisibleBounds: function () {\n\t\t\tif (!this.options.removeOutsideVisibleBounds) {\n\t\t\t\treturn this._mapBoundsInfinite;\n\t\t\t} else if (L.Browser.mobile) {\n\t\t\t\treturn this._checkBoundsMaxLat(this._map.getBounds());\n\t\t\t}\n\n\t\t\treturn this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor.\n\t\t},\n\n\t\t/**\n\t\t * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude\n\t\t * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas).\n\t\t * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without\n\t\t * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit,\n\t\t * making the user think that MCG \"eats\" them and never displays them again.\n\t\t * @param bounds L.LatLngBounds\n\t\t * @returns {L.LatLngBounds}\n\t\t * @private\n\t\t */\n\t\t_checkBoundsMaxLat: function (bounds) {\n\t\t\tvar maxLat = this._maxLat;\n\n\t\t\tif (maxLat !== undefined) {\n\t\t\t\tif (bounds.getNorth() >= maxLat) {\n\t\t\t\t\tbounds._northEast.lat = Infinity;\n\t\t\t\t}\n\t\t\t\tif (bounds.getSouth() <= -maxLat) {\n\t\t\t\t\tbounds._southWest.lat = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn bounds;\n\t\t},\n\n\t\t//Shared animation code\n\t\t_animationAddLayerNonAnimated: function (layer, newCluster) {\n\t\t\tif (newCluster === layer) {\n\t\t\t\tthis._featureGroup.addLayer(layer);\n\t\t\t} else if (newCluster._childCount === 2) {\n\t\t\t\tnewCluster._addToMap();\n\n\t\t\t\tvar markers = newCluster.getAllChildMarkers();\n\t\t\t\tthis._featureGroup.removeLayer(markers[0]);\n\t\t\t\tthis._featureGroup.removeLayer(markers[1]);\n\t\t\t} else {\n\t\t\t\tnewCluster._updateIcon();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extracts individual (i.e. non-group) layers from a Layer Group.\n\t\t * @param group to extract layers from.\n\t\t * @param output {Array} in which to store the extracted layers.\n\t\t * @returns {*|Array}\n\t\t * @private\n\t\t */\n\t\t_extractNonGroupLayers: function (group, output) {\n\t\t\tvar layers = group.getLayers(),\n\t\t\t i = 0,\n\t\t\t layer;\n\n\t\t\toutput = output || [];\n\n\t\t\tfor (; i < layers.length; i++) {\n\t\t\t\tlayer = layers[i];\n\n\t\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\t\tthis._extractNonGroupLayers(layer, output);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\toutput.push(layer);\n\t\t\t}\n\n\t\t\treturn output;\n\t\t},\n\n\t\t/**\n\t\t * Implements the singleMarkerMode option.\n\t\t * @param layer Marker to re-style using the Clusters iconCreateFunction.\n\t\t * @returns {L.Icon} The newly created icon.\n\t\t * @private\n\t\t */\n\t\t_overrideMarkerIcon: function (layer) {\n\t\t\tvar icon = layer.options.icon = this.options.iconCreateFunction({\n\t\t\t\tgetChildCount: function () {\n\t\t\t\t\treturn 1;\n\t\t\t\t},\n\t\t\t\tgetAllChildMarkers: function () {\n\t\t\t\t\treturn [layer];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn icon;\n\t\t}\n\t});\n\n\t// Constant bounds used in case option \"removeOutsideVisibleBounds\" is set to false.\n\tL.MarkerClusterGroup.include({\n\t\t_mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity))\n\t});\n\n\tL.MarkerClusterGroup.include({\n\t\t_noAnimation: {\n\t\t\t//Non Animated versions of everything\n\t\t\t_animationStart: function () {\n\t\t\t\t//Do nothing...\n\t\t\t},\n\t\t\t_animationZoomIn: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\n\t\t\t\t//We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\t\t\t\tthis.fire('animationend');\n\t\t\t},\n\t\t\t_animationZoomOut: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\n\t\t\t\t//We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\t\t\t\tthis.fire('animationend');\n\t\t\t},\n\t\t\t_animationAddLayer: function (layer, newCluster) {\n\t\t\t\tthis._animationAddLayerNonAnimated(layer, newCluster);\n\t\t\t}\n\t\t},\n\n\t\t_withAnimation: {\n\t\t\t//Animated versions here\n\t\t\t_animationStart: function () {\n\t\t\t\tthis._map._mapPane.className += ' leaflet-cluster-anim';\n\t\t\t\tthis._inZoomAnimation++;\n\t\t\t},\n\n\t\t\t_animationZoomIn: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tvar bounds = this._getExpandedVisibleBounds(),\n\t\t\t\t fg = this._featureGroup,\n\t\t\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\t\t i;\n\n\t\t\t\tthis._ignoreMove = true;\n\n\t\t\t\t//Add all children of current clusters to map and remove those clusters from map\n\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {\n\t\t\t\t\tvar startPos = c._latlng,\n\t\t\t\t\t markers = c._markers,\n\t\t\t\t\t m;\n\n\t\t\t\t\tif (!bounds.contains(startPos)) {\n\t\t\t\t\t\tstartPos = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us\n\t\t\t\t\t\tfg.removeLayer(c);\n\t\t\t\t\t\tc._recursivelyAddChildrenToMap(null, newZoomLevel, bounds);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//Fade out old cluster\n\t\t\t\t\t\tc.clusterHide();\n\t\t\t\t\t\tc._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds);\n\t\t\t\t\t}\n\n\t\t\t\t\t//Remove all markers that aren't visible any more\n\t\t\t\t\t//TODO: Do we actually need to do this on the higher levels too?\n\t\t\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = markers[i];\n\t\t\t\t\t\tif (!bounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t\tthis._forceLayout();\n\n\t\t\t\t//Update opacities\n\t\t\t\tthis._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel);\n\t\t\t\t//TODO Maybe? Update markers in _recursivelyBecomeVisible\n\t\t\t\tfg.eachLayer(function (n) {\n\t\t\t\t\tif (!(n instanceof L.MarkerCluster) && n._icon) {\n\t\t\t\t\t\tn.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//update the positions of the just added clusters/markers\n\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) {\n\t\t\t\t\tc._recursivelyRestoreChildPositions(newZoomLevel);\n\t\t\t\t});\n\n\t\t\t\tthis._ignoreMove = false;\n\n\t\t\t\t//Remove the old clusters and close the zoom animation\n\t\t\t\tthis._enqueue(function () {\n\t\t\t\t\t//update the positions of the just added clusters/markers\n\t\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {\n\t\t\t\t\t\tfg.removeLayer(c);\n\t\t\t\t\t\tc.clusterShow();\n\t\t\t\t\t});\n\n\t\t\t\t\tthis._animationEnd();\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t_animationZoomOut: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel);\n\n\t\t\t\t//Need to add markers for those that weren't on the map before but are now\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\t\t\t\t//Remove markers that were on the map before but won't be now\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds());\n\t\t\t},\n\n\t\t\t_animationAddLayer: function (layer, newCluster) {\n\t\t\t\tvar me = this,\n\t\t\t\t fg = this._featureGroup;\n\n\t\t\t\tfg.addLayer(layer);\n\t\t\t\tif (newCluster !== layer) {\n\t\t\t\t\tif (newCluster._childCount > 2) { //Was already a cluster\n\n\t\t\t\t\t\tnewCluster._updateIcon();\n\t\t\t\t\t\tthis._forceLayout();\n\t\t\t\t\t\tthis._animationStart();\n\n\t\t\t\t\t\tlayer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng()));\n\t\t\t\t\t\tlayer.clusterHide();\n\n\t\t\t\t\t\tthis._enqueue(function () {\n\t\t\t\t\t\t\tfg.removeLayer(layer);\n\t\t\t\t\t\t\tlayer.clusterShow();\n\n\t\t\t\t\t\t\tme._animationEnd();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t} else { //Just became a cluster\n\t\t\t\t\t\tthis._forceLayout();\n\n\t\t\t\t\t\tme._animationStart();\n\t\t\t\t\t\tme._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Private methods for animated versions.\n\t\t_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {\n\t\t\tvar bounds = this._getExpandedVisibleBounds(),\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t\t//Animate all of the markers in the clusters to move to their cluster center point\n\t\t\tcluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel);\n\n\t\t\tvar me = this;\n\n\t\t\t//Update the opacity (If we immediately set it they won't animate)\n\t\t\tthis._forceLayout();\n\t\t\tcluster._recursivelyBecomeVisible(bounds, newZoomLevel);\n\n\t\t\t//TODO: Maybe use the transition timing stuff to make this more reliable\n\t\t\t//When the animations are done, tidy up\n\t\t\tthis._enqueue(function () {\n\n\t\t\t\t//This cluster stopped being a cluster before the timeout fired\n\t\t\t\tif (cluster._childCount === 1) {\n\t\t\t\t\tvar m = cluster._markers[0];\n\t\t\t\t\t//If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it\n\t\t\t\t\tthis._ignoreMove = true;\n\t\t\t\t\tm.setLatLng(m.getLatLng());\n\t\t\t\t\tthis._ignoreMove = false;\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcluster._recursively(bounds, newZoomLevel, minZoom, function (c) {\n\t\t\t\t\t\tc._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tme._animationEnd();\n\t\t\t});\n\t\t},\n\n\t\t_animationEnd: function () {\n\t\t\tif (this._map) {\n\t\t\t\tthis._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\t\t\t}\n\t\t\tthis._inZoomAnimation--;\n\t\t\tthis.fire('animationend');\n\t\t},\n\n\t\t//Force a browser layout of stuff in the map\n\t\t// Should apply the current opacity and location to all elements so we can update them again for an animation\n\t\t_forceLayout: function () {\n\t\t\t//In my testing this works, infact offsetWidth of any element seems to work.\n\t\t\t//Could loop all this._layers and do this for each _icon if it stops working\n\n\t\t\tL.Util.falseFn(document.body.offsetWidth);\n\t\t}\n\t});\n\n\tL.markerClusterGroup = function (options) {\n\t\treturn new L.MarkerClusterGroup(options);\n\t};\n\n\tvar MarkerCluster = L.MarkerCluster = L.Marker.extend({\n\t\toptions: L.Icon.prototype.options,\n\n\t\tinitialize: function (group, zoom, a, b) {\n\n\t\t\tL.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0),\n\t { icon: this, pane: group.options.clusterPane });\n\n\t\t\tthis._group = group;\n\t\t\tthis._zoom = zoom;\n\n\t\t\tthis._markers = [];\n\t\t\tthis._childClusters = [];\n\t\t\tthis._childCount = 0;\n\t\t\tthis._iconNeedsUpdate = true;\n\t\t\tthis._boundsNeedUpdate = true;\n\n\t\t\tthis._bounds = new L.LatLngBounds();\n\n\t\t\tif (a) {\n\t\t\t\tthis._addChild(a);\n\t\t\t}\n\t\t\tif (b) {\n\t\t\t\tthis._addChild(b);\n\t\t\t}\n\t\t},\n\n\t\t//Recursively retrieve all child markers of this cluster\n\t\tgetAllChildMarkers: function (storageArray, ignoreDraggedMarker) {\n\t\t\tstorageArray = storageArray || [];\n\n\t\t\tfor (var i = this._childClusters.length - 1; i >= 0; i--) {\n\t\t\t\tthis._childClusters[i].getAllChildMarkers(storageArray);\n\t\t\t}\n\n\t\t\tfor (var j = this._markers.length - 1; j >= 0; j--) {\n\t\t\t\tif (ignoreDraggedMarker && this._markers[j].__dragStart) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstorageArray.push(this._markers[j]);\n\t\t\t}\n\n\t\t\treturn storageArray;\n\t\t},\n\n\t\t//Returns the count of how many child markers we have\n\t\tgetChildCount: function () {\n\t\t\treturn this._childCount;\n\t\t},\n\n\t\t//Zoom to the minimum of showing all of the child markers, or the extents of this cluster\n\t\tzoomToBounds: function (fitBoundsOptions) {\n\t\t\tvar childClusters = this._childClusters.slice(),\n\t\t\t\tmap = this._group._map,\n\t\t\t\tboundsZoom = map.getBoundsZoom(this._bounds),\n\t\t\t\tzoom = this._zoom + 1,\n\t\t\t\tmapZoom = map.getZoom(),\n\t\t\t\ti;\n\n\t\t\t//calculate how far we need to zoom down to see all of the markers\n\t\t\twhile (childClusters.length > 0 && boundsZoom > zoom) {\n\t\t\t\tzoom++;\n\t\t\t\tvar newClusters = [];\n\t\t\t\tfor (i = 0; i < childClusters.length; i++) {\n\t\t\t\t\tnewClusters = newClusters.concat(childClusters[i]._childClusters);\n\t\t\t\t}\n\t\t\t\tchildClusters = newClusters;\n\t\t\t}\n\n\t\t\tif (boundsZoom > zoom) {\n\t\t\t\tthis._group._map.setView(this._latlng, zoom);\n\t\t\t} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead\n\t\t\t\tthis._group._map.setView(this._latlng, mapZoom + 1);\n\t\t\t} else {\n\t\t\t\tthis._group._map.fitBounds(this._bounds, fitBoundsOptions);\n\t\t\t}\n\t\t},\n\n\t\tgetBounds: function () {\n\t\t\tvar bounds = new L.LatLngBounds();\n\t\t\tbounds.extend(this._bounds);\n\t\t\treturn bounds;\n\t\t},\n\n\t\t_updateIcon: function () {\n\t\t\tthis._iconNeedsUpdate = true;\n\t\t\tif (this._icon) {\n\t\t\t\tthis.setIcon(this);\n\t\t\t}\n\t\t},\n\n\t\t//Cludge for Icon, we pretend to be an icon for performance\n\t\tcreateIcon: function () {\n\t\t\tif (this._iconNeedsUpdate) {\n\t\t\t\tthis._iconObj = this._group.options.iconCreateFunction(this);\n\t\t\t\tthis._iconNeedsUpdate = false;\n\t\t\t}\n\t\t\treturn this._iconObj.createIcon();\n\t\t},\n\t\tcreateShadow: function () {\n\t\t\treturn this._iconObj.createShadow();\n\t\t},\n\n\n\t\t_addChild: function (new1, isNotificationFromChild) {\n\n\t\t\tthis._iconNeedsUpdate = true;\n\n\t\t\tthis._boundsNeedUpdate = true;\n\t\t\tthis._setClusterCenter(new1);\n\n\t\t\tif (new1 instanceof L.MarkerCluster) {\n\t\t\t\tif (!isNotificationFromChild) {\n\t\t\t\t\tthis._childClusters.push(new1);\n\t\t\t\t\tnew1.__parent = this;\n\t\t\t\t}\n\t\t\t\tthis._childCount += new1._childCount;\n\t\t\t} else {\n\t\t\t\tif (!isNotificationFromChild) {\n\t\t\t\t\tthis._markers.push(new1);\n\t\t\t\t}\n\t\t\t\tthis._childCount++;\n\t\t\t}\n\n\t\t\tif (this.__parent) {\n\t\t\t\tthis.__parent._addChild(new1, true);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position.\n\t\t * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet.\n\t\t * @private\n\t\t */\n\t\t_setClusterCenter: function (child) {\n\t\t\tif (!this._cLatLng) {\n\t\t\t\t// when clustering, take position of the first point as the cluster center\n\t\t\t\tthis._cLatLng = child._cLatLng || child._latlng;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Assigns impossible bounding values so that the next extend entirely determines the new bounds.\n\t\t * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class.\n\t\t * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended.\n\t\t * @private\n\t\t */\n\t\t_resetBounds: function () {\n\t\t\tvar bounds = this._bounds;\n\n\t\t\tif (bounds._southWest) {\n\t\t\t\tbounds._southWest.lat = Infinity;\n\t\t\t\tbounds._southWest.lng = Infinity;\n\t\t\t}\n\t\t\tif (bounds._northEast) {\n\t\t\t\tbounds._northEast.lat = -Infinity;\n\t\t\t\tbounds._northEast.lng = -Infinity;\n\t\t\t}\n\t\t},\n\n\t\t_recalculateBounds: function () {\n\t\t\tvar markers = this._markers,\n\t\t\t childClusters = this._childClusters,\n\t\t\t latSum = 0,\n\t\t\t lngSum = 0,\n\t\t\t totalCount = this._childCount,\n\t\t\t i, child, childLatLng, childCount;\n\n\t\t\t// Case where all markers are removed from the map and we are left with just an empty _topClusterLevel.\n\t\t\tif (totalCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Reset rather than creating a new object, for performance.\n\t\t\tthis._resetBounds();\n\n\t\t\t// Child markers.\n\t\t\tfor (i = 0; i < markers.length; i++) {\n\t\t\t\tchildLatLng = markers[i]._latlng;\n\n\t\t\t\tthis._bounds.extend(childLatLng);\n\n\t\t\t\tlatSum += childLatLng.lat;\n\t\t\t\tlngSum += childLatLng.lng;\n\t\t\t}\n\n\t\t\t// Child clusters.\n\t\t\tfor (i = 0; i < childClusters.length; i++) {\n\t\t\t\tchild = childClusters[i];\n\n\t\t\t\t// Re-compute child bounds and weighted position first if necessary.\n\t\t\t\tif (child._boundsNeedUpdate) {\n\t\t\t\t\tchild._recalculateBounds();\n\t\t\t\t}\n\n\t\t\t\tthis._bounds.extend(child._bounds);\n\n\t\t\t\tchildLatLng = child._wLatLng;\n\t\t\t\tchildCount = child._childCount;\n\n\t\t\t\tlatSum += childLatLng.lat * childCount;\n\t\t\t\tlngSum += childLatLng.lng * childCount;\n\t\t\t}\n\n\t\t\tthis._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount);\n\n\t\t\t// Reset dirty flag.\n\t\t\tthis._boundsNeedUpdate = false;\n\t\t},\n\n\t\t//Set our markers position as given and add it to the map\n\t\t_addToMap: function (startPos) {\n\t\t\tif (startPos) {\n\t\t\t\tthis._backupLatlng = this._latlng;\n\t\t\t\tthis.setLatLng(startPos);\n\t\t\t}\n\t\t\tthis._group._featureGroup.addLayer(this);\n\t\t},\n\n\t\t_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {\n\t\t\tthis._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tvar markers = c._markers,\n\t\t\t\t\t\ti, m;\n\t\t\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = markers[i];\n\n\t\t\t\t\t\t//Only do it if the icon is still on the map\n\t\t\t\t\t\tif (m._icon) {\n\t\t\t\t\t\t\tm._setPos(center);\n\t\t\t\t\t\t\tm.clusterHide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\tvar childClusters = c._childClusters,\n\t\t\t\t\t\tj, cm;\n\t\t\t\t\tfor (j = childClusters.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tcm = childClusters[j];\n\t\t\t\t\t\tif (cm._icon) {\n\t\t\t\t\t\t\tcm._setPos(center);\n\t\t\t\t\t\t\tcm.clusterHide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) {\n\t\t\tthis._recursively(bounds, newZoomLevel, mapMinZoom,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tc._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);\n\n\t\t\t\t\t//TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be.\n\t\t\t\t\t//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate\n\t\t\t\t\tif (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {\n\t\t\t\t\t\tc.clusterShow();\n\t\t\t\t\t\tc._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds\n\t\t\t\t\t} else {\n\t\t\t\t\t\tc.clusterHide();\n\t\t\t\t\t}\n\n\t\t\t\t\tc._addToMap();\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyBecomeVisible: function (bounds, zoomLevel) {\n\t\t\tthis._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) {\n\t\t\t\tc.clusterShow();\n\t\t\t});\n\t\t},\n\n\t\t_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {\n\t\t\tthis._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tif (zoomLevel === c._zoom) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t//Add our child markers at startPos (so they can be animated out)\n\t\t\t\t\tfor (var i = c._markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tvar nm = c._markers[i];\n\n\t\t\t\t\t\tif (!bounds.contains(nm._latlng)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (startPos) {\n\t\t\t\t\t\t\tnm._backupLatlng = nm.getLatLng();\n\n\t\t\t\t\t\t\tnm.setLatLng(startPos);\n\t\t\t\t\t\t\tif (nm.clusterHide) {\n\t\t\t\t\t\t\t\tnm.clusterHide();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tc._group._featureGroup.addLayer(nm);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\tc._addToMap(startPos);\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyRestoreChildPositions: function (zoomLevel) {\n\t\t\t//Fix positions of child markers\n\t\t\tfor (var i = this._markers.length - 1; i >= 0; i--) {\n\t\t\t\tvar nm = this._markers[i];\n\t\t\t\tif (nm._backupLatlng) {\n\t\t\t\t\tnm.setLatLng(nm._backupLatlng);\n\t\t\t\t\tdelete nm._backupLatlng;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (zoomLevel - 1 === this._zoom) {\n\t\t\t\t//Reposition child clusters\n\t\t\t\tfor (var j = this._childClusters.length - 1; j >= 0; j--) {\n\t\t\t\t\tthis._childClusters[j]._restorePosition();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = this._childClusters.length - 1; k >= 0; k--) {\n\t\t\t\t\tthis._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_restorePosition: function () {\n\t\t\tif (this._backupLatlng) {\n\t\t\t\tthis.setLatLng(this._backupLatlng);\n\t\t\t\tdelete this._backupLatlng;\n\t\t\t}\n\t\t},\n\n\t\t//exceptBounds: If set, don't remove any markers/clusters in it\n\t\t_recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) {\n\t\t\tvar m, i;\n\t\t\tthis._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1,\n\t\t\t\tfunction (c) {\n\t\t\t\t\t//Remove markers at every level\n\t\t\t\t\tfor (i = c._markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = c._markers[i];\n\t\t\t\t\t\tif (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tc._group._featureGroup.removeLayer(m);\n\t\t\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\t//Remove child clusters at just the bottom level\n\t\t\t\t\tfor (i = c._childClusters.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = c._childClusters[i];\n\t\t\t\t\t\tif (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tc._group._featureGroup.removeLayer(m);\n\t\t\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t//Run the given functions recursively to this and child clusters\n\t\t// boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to\n\t\t// zoomLevelToStart: zoom level to start running functions (inclusive)\n\t\t// zoomLevelToStop: zoom level to stop running functions (inclusive)\n\t\t// runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level\n\t\t// runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level\n\t\t_recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) {\n\t\t\tvar childClusters = this._childClusters,\n\t\t\t zoom = this._zoom,\n\t\t\t i, c;\n\n\t\t\tif (zoomLevelToStart <= zoom) {\n\t\t\t\tif (runAtEveryLevel) {\n\t\t\t\t\trunAtEveryLevel(this);\n\t\t\t\t}\n\t\t\t\tif (runAtBottomLevel && zoom === zoomLevelToStop) {\n\t\t\t\t\trunAtBottomLevel(this);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {\n\t\t\t\tfor (i = childClusters.length - 1; i >= 0; i--) {\n\t\t\t\t\tc = childClusters[i];\n\t\t\t\t\tif (c._boundsNeedUpdate) {\n\t\t\t\t\t\tc._recalculateBounds();\n\t\t\t\t\t}\n\t\t\t\t\tif (boundsToApplyTo.intersects(c._bounds)) {\n\t\t\t\t\t\tc._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//Returns true if we are the parent of only one cluster and that cluster is the same as us\n\t\t_isSingleParent: function () {\n\t\t\t//Don't need to check this._markers as the rest won't work if there are any\n\t\t\treturn this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount;\n\t\t}\n\t});\n\n\t/*\n\t* Extends L.Marker to include two extra methods: clusterHide and clusterShow.\n\t* \n\t* They work as setOpacity(0) and setOpacity(1) respectively, but\n\t* don't overwrite the options.opacity\n\t* \n\t*/\n\n\tL.Marker.include({\n\t\tclusterHide: function () {\n\t\t\tvar backup = this.options.opacity;\n\t\t\tthis.setOpacity(0);\n\t\t\tthis.options.opacity = backup;\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\tclusterShow: function () {\n\t\t\treturn this.setOpacity(this.options.opacity);\n\t\t}\n\t});\n\n\tL.DistanceGrid = function (cellSize) {\n\t\tthis._cellSize = cellSize;\n\t\tthis._sqCellSize = cellSize * cellSize;\n\t\tthis._grid = {};\n\t\tthis._objectPoint = { };\n\t};\n\n\tL.DistanceGrid.prototype = {\n\n\t\taddObject: function (obj, point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t y = this._getCoord(point.y),\n\t\t\t grid = this._grid,\n\t\t\t row = grid[y] = grid[y] || {},\n\t\t\t cell = row[x] = row[x] || [],\n\t\t\t stamp = L.Util.stamp(obj);\n\n\t\t\tthis._objectPoint[stamp] = point;\n\n\t\t\tcell.push(obj);\n\t\t},\n\n\t\tupdateObject: function (obj, point) {\n\t\t\tthis.removeObject(obj);\n\t\t\tthis.addObject(obj, point);\n\t\t},\n\n\t\t//Returns true if the object was found\n\t\tremoveObject: function (obj, point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t y = this._getCoord(point.y),\n\t\t\t grid = this._grid,\n\t\t\t row = grid[y] = grid[y] || {},\n\t\t\t cell = row[x] = row[x] || [],\n\t\t\t i, len;\n\n\t\t\tdelete this._objectPoint[L.Util.stamp(obj)];\n\n\t\t\tfor (i = 0, len = cell.length; i < len; i++) {\n\t\t\t\tif (cell[i] === obj) {\n\n\t\t\t\t\tcell.splice(i, 1);\n\n\t\t\t\t\tif (len === 1) {\n\t\t\t\t\t\tdelete row[x];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\n\t\teachObject: function (fn, context) {\n\t\t\tvar i, j, k, len, row, cell, removed,\n\t\t\t grid = this._grid;\n\n\t\t\tfor (i in grid) {\n\t\t\t\trow = grid[i];\n\n\t\t\t\tfor (j in row) {\n\t\t\t\t\tcell = row[j];\n\n\t\t\t\t\tfor (k = 0, len = cell.length; k < len; k++) {\n\t\t\t\t\t\tremoved = fn.call(context, cell[k]);\n\t\t\t\t\t\tif (removed) {\n\t\t\t\t\t\t\tk--;\n\t\t\t\t\t\t\tlen--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tgetNearObject: function (point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t y = this._getCoord(point.y),\n\t\t\t i, j, k, row, cell, len, obj, dist,\n\t\t\t objectPoint = this._objectPoint,\n\t\t\t closestDistSq = this._sqCellSize,\n\t\t\t closest = null;\n\n\t\t\tfor (i = y - 1; i <= y + 1; i++) {\n\t\t\t\trow = this._grid[i];\n\t\t\t\tif (row) {\n\n\t\t\t\t\tfor (j = x - 1; j <= x + 1; j++) {\n\t\t\t\t\t\tcell = row[j];\n\t\t\t\t\t\tif (cell) {\n\n\t\t\t\t\t\t\tfor (k = 0, len = cell.length; k < len; k++) {\n\t\t\t\t\t\t\t\tobj = cell[k];\n\t\t\t\t\t\t\t\tdist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);\n\t\t\t\t\t\t\t\tif (dist < closestDistSq ||\n\t\t\t\t\t\t\t\t\tdist <= closestDistSq && closest === null) {\n\t\t\t\t\t\t\t\t\tclosestDistSq = dist;\n\t\t\t\t\t\t\t\t\tclosest = obj;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn closest;\n\t\t},\n\n\t\t_getCoord: function (x) {\n\t\t\tvar coord = Math.floor(x / this._cellSize);\n\t\t\treturn isFinite(coord) ? coord : x;\n\t\t},\n\n\t\t_sqDist: function (p, p2) {\n\t\t\tvar dx = p2.x - p.x,\n\t\t\t dy = p2.y - p.y;\n\t\t\treturn dx * dx + dy * dy;\n\t\t}\n\t};\n\n\t/* Copyright (c) 2012 the authors listed at the following URL, and/or\n\tthe authors of referenced articles or incorporated external code:\n\thttp://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256\n\n\tPermission is hereby granted, free of charge, to any person obtaining\n\ta copy of this software and associated documentation files (the\n\t\"Software\"), to deal in the Software without restriction, including\n\twithout limitation the rights to use, copy, modify, merge, publish,\n\tdistribute, sublicense, and/or sell copies of the Software, and to\n\tpermit persons to whom the Software is furnished to do so, subject to\n\tthe following conditions:\n\n\tThe above copyright notice and this permission notice shall be\n\tincluded in all copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n\tEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\tMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n\tIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n\tCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n\tTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n\tSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\tRetrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434\n\t*/\n\n\t(function () {\n\t\tL.QuickHull = {\n\n\t\t\t/*\n\t\t\t * @param {Object} cpt a point to be measured from the baseline\n\t\t\t * @param {Array} bl the baseline, as represented by a two-element\n\t\t\t * array of latlng objects.\n\t\t\t * @returns {Number} an approximate distance measure\n\t\t\t */\n\t\t\tgetDistant: function (cpt, bl) {\n\t\t\t\tvar vY = bl[1].lat - bl[0].lat,\n\t\t\t\t\tvX = bl[0].lng - bl[1].lng;\n\t\t\t\treturn (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng));\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @param {Array} baseLine a two-element array of latlng objects\n\t\t\t * representing the baseline to project from\n\t\t\t * @param {Array} latLngs an array of latlng objects\n\t\t\t * @returns {Object} the maximum point and all new points to stay\n\t\t\t * in consideration for the hull.\n\t\t\t */\n\t\t\tfindMostDistantPointFromBaseLine: function (baseLine, latLngs) {\n\t\t\t\tvar maxD = 0,\n\t\t\t\t\tmaxPt = null,\n\t\t\t\t\tnewPoints = [],\n\t\t\t\t\ti, pt, d;\n\n\t\t\t\tfor (i = latLngs.length - 1; i >= 0; i--) {\n\t\t\t\t\tpt = latLngs[i];\n\t\t\t\t\td = this.getDistant(pt, baseLine);\n\n\t\t\t\t\tif (d > 0) {\n\t\t\t\t\t\tnewPoints.push(pt);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (d > maxD) {\n\t\t\t\t\t\tmaxD = d;\n\t\t\t\t\t\tmaxPt = pt;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn { maxPoint: maxPt, newPoints: newPoints };\n\t\t\t},\n\n\n\t\t\t/*\n\t\t\t * Given a baseline, compute the convex hull of latLngs as an array\n\t\t\t * of latLngs.\n\t\t\t *\n\t\t\t * @param {Array} latLngs\n\t\t\t * @returns {Array}\n\t\t\t */\n\t\t\tbuildConvexHull: function (baseLine, latLngs) {\n\t\t\t\tvar convexHullBaseLines = [],\n\t\t\t\t\tt = this.findMostDistantPointFromBaseLine(baseLine, latLngs);\n\n\t\t\t\tif (t.maxPoint) { // if there is still a point \"outside\" the base line\n\t\t\t\t\tconvexHullBaseLines =\n\t\t\t\t\t\tconvexHullBaseLines.concat(\n\t\t\t\t\t\t\tthis.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints)\n\t\t\t\t\t\t);\n\t\t\t\t\tconvexHullBaseLines =\n\t\t\t\t\t\tconvexHullBaseLines.concat(\n\t\t\t\t\t\t\tthis.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints)\n\t\t\t\t\t\t);\n\t\t\t\t\treturn convexHullBaseLines;\n\t\t\t\t} else { // if there is no more point \"outside\" the base line, the current base line is part of the convex hull\n\t\t\t\t\treturn [baseLine[0]];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Given an array of latlngs, compute a convex hull as an array\n\t\t\t * of latlngs\n\t\t\t *\n\t\t\t * @param {Array} latLngs\n\t\t\t * @returns {Array}\n\t\t\t */\n\t\t\tgetConvexHull: function (latLngs) {\n\t\t\t\t// find first baseline\n\t\t\t\tvar maxLat = false, minLat = false,\n\t\t\t\t\tmaxLng = false, minLng = false,\n\t\t\t\t\tmaxLatPt = null, minLatPt = null,\n\t\t\t\t\tmaxLngPt = null, minLngPt = null,\n\t\t\t\t\tmaxPt = null, minPt = null,\n\t\t\t\t\ti;\n\n\t\t\t\tfor (i = latLngs.length - 1; i >= 0; i--) {\n\t\t\t\t\tvar pt = latLngs[i];\n\t\t\t\t\tif (maxLat === false || pt.lat > maxLat) {\n\t\t\t\t\t\tmaxLatPt = pt;\n\t\t\t\t\t\tmaxLat = pt.lat;\n\t\t\t\t\t}\n\t\t\t\t\tif (minLat === false || pt.lat < minLat) {\n\t\t\t\t\t\tminLatPt = pt;\n\t\t\t\t\t\tminLat = pt.lat;\n\t\t\t\t\t}\n\t\t\t\t\tif (maxLng === false || pt.lng > maxLng) {\n\t\t\t\t\t\tmaxLngPt = pt;\n\t\t\t\t\t\tmaxLng = pt.lng;\n\t\t\t\t\t}\n\t\t\t\t\tif (minLng === false || pt.lng < minLng) {\n\t\t\t\t\t\tminLngPt = pt;\n\t\t\t\t\t\tminLng = pt.lng;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (minLat !== maxLat) {\n\t\t\t\t\tminPt = minLatPt;\n\t\t\t\t\tmaxPt = maxLatPt;\n\t\t\t\t} else {\n\t\t\t\t\tminPt = minLngPt;\n\t\t\t\t\tmaxPt = maxLngPt;\n\t\t\t\t}\n\n\t\t\t\tvar ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs),\n\t\t\t\t\t\t\t\t\tthis.buildConvexHull([maxPt, minPt], latLngs));\n\t\t\t\treturn ch;\n\t\t\t}\n\t\t};\n\t}());\n\n\tL.MarkerCluster.include({\n\t\tgetConvexHull: function () {\n\t\t\tvar childMarkers = this.getAllChildMarkers(),\n\t\t\t\tpoints = [],\n\t\t\t\tp, i;\n\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tp = childMarkers[i].getLatLng();\n\t\t\t\tpoints.push(p);\n\t\t\t}\n\n\t\t\treturn L.QuickHull.getConvexHull(points);\n\t\t}\n\t});\n\n\t//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet\n\t//Huge thanks to jawj for implementing it first to make my job easy :-)\n\n\tL.MarkerCluster.include({\n\n\t\t_2PI: Math.PI * 2,\n\t\t_circleFootSeparation: 25, //related to circumference of circle\n\t\t_circleStartAngle: 0,\n\n\t\t_spiralFootSeparation: 28, //related to size of spiral (experiment!)\n\t\t_spiralLengthStart: 11,\n\t\t_spiralLengthFactor: 5,\n\n\t\t_circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards.\n\t\t\t\t\t\t\t\t\t// 0 -> always spiral; Infinity -> always circle\n\n\t\tspiderfy: function () {\n\t\t\tif (this._group._spiderfied === this || this._group._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar childMarkers = this.getAllChildMarkers(null, true),\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tcenter = map.latLngToLayerPoint(this._latlng),\n\t\t\t\tpositions;\n\n\t\t\tthis._group._unspiderfy();\n\t\t\tthis._group._spiderfied = this;\n\n\t\t\t//TODO Maybe: childMarkers order by distance to center\n\n\t\t\tif (this._group.options.spiderfyShapePositions) {\n\t\t\t\tpositions = this._group.options.spiderfyShapePositions(childMarkers.length, center);\n\t\t\t} else if (childMarkers.length >= this._circleSpiralSwitchover) {\n\t\t\t\tpositions = this._generatePointsSpiral(childMarkers.length, center);\n\t\t\t} else {\n\t\t\t\tcenter.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.\n\t\t\t\tpositions = this._generatePointsCircle(childMarkers.length, center);\n\t\t\t}\n\n\t\t\tthis._animationSpiderfy(childMarkers, positions);\n\t\t},\n\n\t\tunspiderfy: function (zoomDetails) {\n\t\t\t/// Argument from zoomanim if being called in a zoom animation or null otherwise\n\t\t\tif (this._group._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._animationUnspiderfy(zoomDetails);\n\n\t\t\tthis._group._spiderfied = null;\n\t\t},\n\n\t\t_generatePointsCircle: function (count, centerPt) {\n\t\t\tvar circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count),\n\t\t\t\tlegLength = circumference / this._2PI, //radius from circumference\n\t\t\t\tangleStep = this._2PI / count,\n\t\t\t\tres = [],\n\t\t\t\ti, angle;\n\n\t\t\tlegLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon.\n\n\t\t\tres.length = count;\n\n\t\t\tfor (i = 0; i < count; i++) { // Clockwise, like spiral.\n\t\t\t\tangle = this._circleStartAngle + i * angleStep;\n\t\t\t\tres[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n\t\t\t}\n\n\t\t\treturn res;\n\t\t},\n\n\t\t_generatePointsSpiral: function (count, centerPt) {\n\t\t\tvar spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier,\n\t\t\t\tlegLength = spiderfyDistanceMultiplier * this._spiralLengthStart,\n\t\t\t\tseparation = spiderfyDistanceMultiplier * this._spiralFootSeparation,\n\t\t\t\tlengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI,\n\t\t\t\tangle = 0,\n\t\t\t\tres = [],\n\t\t\t\ti;\n\n\t\t\tres.length = count;\n\n\t\t\t// Higher index, closer position to cluster center.\n\t\t\tfor (i = count; i >= 0; i--) {\n\t\t\t\t// Skip the first position, so that we are already farther from center and we avoid\n\t\t\t\t// being under the default cluster icon (especially important for Circle Markers).\n\t\t\t\tif (i < count) {\n\t\t\t\t\tres[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n\t\t\t\t}\n\t\t\t\tangle += separation / legLength + i * 0.0005;\n\t\t\t\tlegLength += lengthFactor / angle;\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\n\t\t_noanimationUnspiderfy: function () {\n\t\t\tvar group = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tchildMarkers = this.getAllChildMarkers(null, true),\n\t\t\t\tm, i;\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\tthis.setOpacity(1);\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\tfg.removeLayer(m);\n\n\t\t\t\tif (m._preSpiderfyLatlng) {\n\t\t\t\t\tm.setLatLng(m._preSpiderfyLatlng);\n\t\t\t\t\tdelete m._preSpiderfyLatlng;\n\t\t\t\t}\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(0);\n\t\t\t\t}\n\n\t\t\t\tif (m._spiderLeg) {\n\t\t\t\t\tmap.removeLayer(m._spiderLeg);\n\t\t\t\t\tdelete m._spiderLeg;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup.fire('unspiderfied', {\n\t\t\t\tcluster: this,\n\t\t\t\tmarkers: childMarkers\n\t\t\t});\n\t\t\tgroup._ignoreMove = false;\n\t\t\tgroup._spiderfied = null;\n\t\t}\n\t});\n\n\t//Non Animated versions of everything\n\tL.MarkerClusterNonAnimated = L.MarkerCluster.extend({\n\t\t_animationSpiderfy: function (childMarkers, positions) {\n\t\t\tvar group = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tlegOptions = this._group.options.spiderLegPolylineOptions,\n\t\t\t\ti, m, leg, newPos;\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\t// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n\t\t\t// The reverse order trick no longer improves performance on modern browsers.\n\t\t\tfor (i = 0; i < childMarkers.length; i++) {\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\t\t\t\tleg = new L.Polyline([this._latlng, newPos], legOptions);\n\t\t\t\tmap.addLayer(leg);\n\t\t\t\tm._spiderLeg = leg;\n\n\t\t\t\t// Now add the marker.\n\t\t\t\tm._preSpiderfyLatlng = m._latlng;\n\t\t\t\tm.setLatLng(newPos);\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING\n\t\t\t\t}\n\n\t\t\t\tfg.addLayer(m);\n\t\t\t}\n\t\t\tthis.setOpacity(0.3);\n\n\t\t\tgroup._ignoreMove = false;\n\t\t\tgroup.fire('spiderfied', {\n\t\t\t\tcluster: this,\n\t\t\t\tmarkers: childMarkers\n\t\t\t});\n\t\t},\n\n\t\t_animationUnspiderfy: function () {\n\t\t\tthis._noanimationUnspiderfy();\n\t\t}\n\t});\n\n\t//Animated versions here\n\tL.MarkerCluster.include({\n\n\t\t_animationSpiderfy: function (childMarkers, positions) {\n\t\t\tvar me = this,\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tthisLayerLatLng = this._latlng,\n\t\t\t\tthisLayerPos = map.latLngToLayerPoint(thisLayerLatLng),\n\t\t\t\tsvg = L.Path.SVG,\n\t\t\t\tlegOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation.\n\t\t\t\tfinalLegOpacity = legOptions.opacity,\n\t\t\t\ti, m, leg, legPath, legLength, newPos;\n\n\t\t\tif (finalLegOpacity === undefined) {\n\t\t\t\tfinalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity;\n\t\t\t}\n\n\t\t\tif (svg) {\n\t\t\t\t// If the initial opacity of the spider leg is not 0 then it appears before the animation starts.\n\t\t\t\tlegOptions.opacity = 0;\n\n\t\t\t\t// Add the class for CSS transitions.\n\t\t\t\tlegOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg';\n\t\t\t} else {\n\t\t\t\t// Make sure we have a defined opacity.\n\t\t\t\tlegOptions.opacity = finalLegOpacity;\n\t\t\t}\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\t// Add markers and spider legs to map, hidden at our center point.\n\t\t\t// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n\t\t\t// The reverse order trick no longer improves performance on modern browsers.\n\t\t\tfor (i = 0; i < childMarkers.length; i++) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\n\t\t\t\t// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\t\t\t\tleg = new L.Polyline([thisLayerLatLng, newPos], legOptions);\n\t\t\t\tmap.addLayer(leg);\n\t\t\t\tm._spiderLeg = leg;\n\n\t\t\t\t// Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/\n\t\t\t\t// In our case the transition property is declared in the CSS file.\n\t\t\t\tif (svg) {\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox.\n\t\t\t\t\tlegPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated.\n\t\t\t\t\tlegPath.style.strokeDashoffset = legLength;\n\t\t\t\t}\n\n\t\t\t\t// If it is a marker, add it now and we'll animate it out\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING\n\t\t\t\t}\n\t\t\t\tif (m.clusterHide) {\n\t\t\t\t\tm.clusterHide();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Vectors just get immediately added\n\t\t\t\tfg.addLayer(m);\n\n\t\t\t\tif (m._setPos) {\n\t\t\t\t\tm._setPos(thisLayerPos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup._forceLayout();\n\t\t\tgroup._animationStart();\n\n\t\t\t// Reveal markers and spider legs.\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t//Move marker to new position\n\t\t\t\tm._preSpiderfyLatlng = m._latlng;\n\t\t\t\tm.setLatLng(newPos);\n\t\t\t\t\n\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\tm.clusterShow();\n\t\t\t\t}\n\n\t\t\t\t// Animate leg (animation is actually delegated to CSS transition).\n\t\t\t\tif (svg) {\n\t\t\t\t\tleg = m._spiderLeg;\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegPath.style.strokeDashoffset = 0;\n\t\t\t\t\t//legPath.style.strokeOpacity = finalLegOpacity;\n\t\t\t\t\tleg.setStyle({opacity: finalLegOpacity});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.setOpacity(0.3);\n\n\t\t\tgroup._ignoreMove = false;\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tgroup._animationEnd();\n\t\t\t\tgroup.fire('spiderfied', {\n\t\t\t\t\tcluster: me,\n\t\t\t\t\tmarkers: childMarkers\n\t\t\t\t});\n\t\t\t}, 200);\n\t\t},\n\n\t\t_animationUnspiderfy: function (zoomDetails) {\n\t\t\tvar me = this,\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tthisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),\n\t\t\t\tchildMarkers = this.getAllChildMarkers(null, true),\n\t\t\t\tsvg = L.Path.SVG,\n\t\t\t\tm, i, leg, legPath, legLength, nonAnimatable;\n\n\t\t\tgroup._ignoreMove = true;\n\t\t\tgroup._animationStart();\n\n\t\t\t//Make us visible and bring the child markers back in\n\t\t\tthis.setOpacity(1);\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t//Marker was added to us after we were spiderfied\n\t\t\t\tif (!m._preSpiderfyLatlng) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t//Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll\n\t\t\t\tm.closePopup();\n\n\t\t\t\t//Fix up the location to the real one\n\t\t\t\tm.setLatLng(m._preSpiderfyLatlng);\n\t\t\t\tdelete m._preSpiderfyLatlng;\n\n\t\t\t\t//Hack override the location to be our center\n\t\t\t\tnonAnimatable = true;\n\t\t\t\tif (m._setPos) {\n\t\t\t\t\tm._setPos(thisLayerPos);\n\t\t\t\t\tnonAnimatable = false;\n\t\t\t\t}\n\t\t\t\tif (m.clusterHide) {\n\t\t\t\t\tm.clusterHide();\n\t\t\t\t\tnonAnimatable = false;\n\t\t\t\t}\n\t\t\t\tif (nonAnimatable) {\n\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t}\n\n\t\t\t\t// Animate the spider leg back in (animation is actually delegated to CSS transition).\n\t\t\t\tif (svg) {\n\t\t\t\t\tleg = m._spiderLeg;\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegLength = legPath.getTotalLength() + 0.1;\n\t\t\t\t\tlegPath.style.strokeDashoffset = legLength;\n\t\t\t\t\tleg.setStyle({opacity: 0});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup._ignoreMove = false;\n\n\t\t\tsetTimeout(function () {\n\t\t\t\t//If we have only <= one child left then that marker will be shown on the map so don't remove it!\n\t\t\t\tvar stillThereChildCount = 0;\n\t\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = childMarkers[i];\n\t\t\t\t\tif (m._spiderLeg) {\n\t\t\t\t\t\tstillThereChildCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t\tif (!m._spiderLeg) { //Has already been unspiderfied\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\t\tm.setZIndexOffset(0);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stillThereChildCount > 1) {\n\t\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\t}\n\n\t\t\t\t\tmap.removeLayer(m._spiderLeg);\n\t\t\t\t\tdelete m._spiderLeg;\n\t\t\t\t}\n\t\t\t\tgroup._animationEnd();\n\t\t\t\tgroup.fire('unspiderfied', {\n\t\t\t\t\tcluster: me,\n\t\t\t\t\tmarkers: childMarkers\n\t\t\t\t});\n\t\t\t}, 200);\n\t\t}\n\t});\n\n\n\tL.MarkerClusterGroup.include({\n\t\t//The MarkerCluster currently spiderfied (if any)\n\t\t_spiderfied: null,\n\n\t\tunspiderfy: function () {\n\t\t\tthis._unspiderfy.apply(this, arguments);\n\t\t},\n\n\t\t_spiderfierOnAdd: function () {\n\t\t\tthis._map.on('click', this._unspiderfyWrapper, this);\n\n\t\t\tif (this._map.options.zoomAnimation) {\n\t\t\t\tthis._map.on('zoomstart', this._unspiderfyZoomStart, this);\n\t\t\t}\n\t\t\t//Browsers without zoomAnimation or a big zoom don't fire zoomstart\n\t\t\tthis._map.on('zoomend', this._noanimationUnspiderfy, this);\n\n\t\t\tif (!L.Browser.touch) {\n\t\t\t\tthis._map.getRenderer(this);\n\t\t\t\t//Needs to happen in the pageload, not after, or animations don't work in webkit\n\t\t\t\t// http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements\n\t\t\t\t//Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable\n\t\t\t}\n\t\t},\n\n\t\t_spiderfierOnRemove: function () {\n\t\t\tthis._map.off('click', this._unspiderfyWrapper, this);\n\t\t\tthis._map.off('zoomstart', this._unspiderfyZoomStart, this);\n\t\t\tthis._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t\tthis._map.off('zoomend', this._noanimationUnspiderfy, this);\n\n\t\t\t//Ensure that markers are back where they should be\n\t\t\t// Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane\n\t\t\tthis._noanimationUnspiderfy();\n\t\t},\n\n\t\t//On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated)\n\t\t//This means we can define the animation they do rather than Markers doing an animation to their actual location\n\t\t_unspiderfyZoomStart: function () {\n\t\t\tif (!this._map) { //May have been removed from the map by a zoomEnd handler\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._map.on('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t},\n\n\t\t_unspiderfyZoomAnim: function (zoomDetails) {\n\t\t\t//Wait until the first zoomanim after the user has finished touch-zooming before running the animation\n\t\t\tif (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t\tthis._unspiderfy(zoomDetails);\n\t\t},\n\n\t\t_unspiderfyWrapper: function () {\n\t\t\t/// _unspiderfy but passes no arguments\n\t\t\tthis._unspiderfy();\n\t\t},\n\n\t\t_unspiderfy: function (zoomDetails) {\n\t\t\tif (this._spiderfied) {\n\t\t\t\tthis._spiderfied.unspiderfy(zoomDetails);\n\t\t\t}\n\t\t},\n\n\t\t_noanimationUnspiderfy: function () {\n\t\t\tif (this._spiderfied) {\n\t\t\t\tthis._spiderfied._noanimationUnspiderfy();\n\t\t\t}\n\t\t},\n\n\t\t//If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc\n\t\t_unspiderfyLayer: function (layer) {\n\t\t\tif (layer._spiderLeg) {\n\t\t\t\tthis._featureGroup.removeLayer(layer);\n\n\t\t\t\tif (layer.clusterShow) {\n\t\t\t\t\tlayer.clusterShow();\n\t\t\t\t}\n\t\t\t\t\t//Position will be fixed up immediately in _animationUnspiderfy\n\t\t\t\tif (layer.setZIndexOffset) {\n\t\t\t\t\tlayer.setZIndexOffset(0);\n\t\t\t\t}\n\n\t\t\t\tthis._map.removeLayer(layer._spiderLeg);\n\t\t\t\tdelete layer._spiderLeg;\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing\n\t * markers' icon options and refreshing their icon and their parent clusters\n\t * accordingly (case where their iconCreateFunction uses data of childMarkers\n\t * to make up the cluster icon).\n\t */\n\n\n\tL.MarkerClusterGroup.include({\n\t\t/**\n\t\t * Updates the icon of all clusters which are parents of the given marker(s).\n\t\t * In singleMarkerMode, also updates the given marker(s) icon.\n\t\t * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)|\n\t\t * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent\n\t\t * clusters need to be updated. If not provided, retrieves all child markers of this.\n\t\t * @returns {L.MarkerClusterGroup}\n\t\t */\n\t\trefreshClusters: function (layers) {\n\t\t\tif (!layers) {\n\t\t\t\tlayers = this._topClusterLevel.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.MarkerClusterGroup) {\n\t\t\t\tlayers = layers._topClusterLevel.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.LayerGroup) {\n\t\t\t\tlayers = layers._layers;\n\t\t\t} else if (layers instanceof L.MarkerCluster) {\n\t\t\t\tlayers = layers.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.Marker) {\n\t\t\t\tlayers = [layers];\n\t\t\t} // else: must be an Array(L.Marker)|Map(L.Marker)\n\t\t\tthis._flagParentsIconsNeedUpdate(layers);\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t// In case of singleMarkerMode, also re-draw the markers.\n\t\t\tif (this.options.singleMarkerMode) {\n\t\t\t\tthis._refreshSingleMarkerModeMarkers(layers);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * Simply flags all parent clusters of the given markers as having a \"dirty\" icon.\n\t\t * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\n\t\t * @private\n\t\t */\n\t\t_flagParentsIconsNeedUpdate: function (layers) {\n\t\t\tvar id, parent;\n\n\t\t\t// Assumes layers is an Array or an Object whose prototype is non-enumerable.\n\t\t\tfor (id in layers) {\n\t\t\t\t// Flag parent clusters' icon as \"dirty\", all the way up.\n\t\t\t\t// Dumb process that flags multiple times upper parents, but still\n\t\t\t\t// much more efficient than trying to be smart and make short lists,\n\t\t\t\t// at least in the case of a hierarchy following a power law:\n\t\t\t\t// http://jsperf.com/flag-nodes-in-power-hierarchy/2\n\t\t\t\tparent = layers[id].__parent;\n\t\t\t\twhile (parent) {\n\t\t\t\t\tparent._iconNeedsUpdate = true;\n\t\t\t\t\tparent = parent.__parent;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Re-draws the icon of the supplied markers.\n\t\t * To be used in singleMarkerMode only.\n\t\t * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\n\t\t * @private\n\t\t */\n\t\t_refreshSingleMarkerModeMarkers: function (layers) {\n\t\t\tvar id, layer;\n\n\t\t\tfor (id in layers) {\n\t\t\t\tlayer = layers[id];\n\n\t\t\t\t// Make sure we do not override markers that do not belong to THIS group.\n\t\t\t\tif (this.hasLayer(layer)) {\n\t\t\t\t\t// Need to re-create the icon first, then re-draw the marker.\n\t\t\t\t\tlayer.setIcon(this._overrideMarkerIcon(layer));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tL.Marker.include({\n\t\t/**\n\t\t * Updates the given options in the marker's icon and refreshes the marker.\n\t\t * @param options map object of icon options.\n\t\t * @param directlyRefreshClusters boolean (optional) true to trigger\n\t\t * MCG.refreshClustersOf() right away with this single marker.\n\t\t * @returns {L.Marker}\n\t\t */\n\t\trefreshIconOptions: function (options, directlyRefreshClusters) {\n\t\t\tvar icon = this.options.icon;\n\n\t\t\tL.setOptions(icon, options);\n\n\t\t\tthis.setIcon(icon);\n\n\t\t\t// Shortcut to refresh the associated MCG clusters right away.\n\t\t\t// To be used when refreshing a single marker.\n\t\t\t// Otherwise, better use MCG.refreshClusters() once at the end with\n\t\t\t// the list of modified markers.\n\t\t\tif (directlyRefreshClusters && this.__parent) {\n\t\t\t\tthis.__parent._group.refreshClusters(this);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t});\n\n\texports.MarkerClusterGroup = MarkerClusterGroup;\n\texports.MarkerCluster = MarkerCluster;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=leaflet.markercluster-src.js.map\n","import { __decorate, __param } from 'tslib';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { auditTime, takeUntil, distinctUntilChanged, mapTo } from 'rxjs/operators';\nimport { InjectionToken, EventEmitter, NgZone, KeyValueDiffers, ElementRef, Inject, PLATFORM_ID, Optional, Input, Output, Directive, ChangeDetectorRef, HostBinding, ViewChild, Component, ViewEncapsulation, NgModule } from '@angular/core';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport PerfectScrollbar from 'perfect-scrollbar';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nfunction PerfectScrollbarComponent_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 3);\n ɵngcc0.ɵɵelement(1, \"div\", 4);\n ɵngcc0.ɵɵelement(2, \"div\", 5);\n ɵngcc0.ɵɵelement(3, \"div\", 6);\n ɵngcc0.ɵɵelement(4, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"ps-at-top\", ctx_r0.states.top)(\"ps-at-left\", ctx_r0.states.left)(\"ps-at-right\", ctx_r0.states.right)(\"ps-at-bottom\", ctx_r0.states.bottom);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ps-indicator-show\", ctx_r0.indicatorY && ctx_r0.interaction);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ps-indicator-show\", ctx_r0.indicatorX && ctx_r0.interaction);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ps-indicator-show\", ctx_r0.indicatorX && ctx_r0.interaction);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ps-indicator-show\", ctx_r0.indicatorY && ctx_r0.interaction);\n} }\nconst _c0 = [\"*\"];\nconst PERFECT_SCROLLBAR_CONFIG = new InjectionToken('PERFECT_SCROLLBAR_CONFIG');\nclass Geometry {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n}\nclass Position {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\nconst PerfectScrollbarEvents = [\n 'psScrollY',\n 'psScrollX',\n 'psScrollUp',\n 'psScrollDown',\n 'psScrollLeft',\n 'psScrollRight',\n 'psYReachEnd',\n 'psYReachStart',\n 'psXReachEnd',\n 'psXReachStart'\n];\nclass PerfectScrollbarConfig {\n constructor(config = {}) {\n this.assign(config);\n }\n assign(config = {}) {\n for (const key in config) {\n this[key] = config[key];\n }\n }\n}\n\nlet PerfectScrollbarDirective = class PerfectScrollbarDirective {\n constructor(zone, differs, elementRef, platformId, defaults) {\n this.zone = zone;\n this.differs = differs;\n this.elementRef = elementRef;\n this.platformId = platformId;\n this.defaults = defaults;\n this.instance = null;\n this.ro = null;\n this.timeout = null;\n this.animation = null;\n this.configDiff = null;\n this.ngDestroy = new Subject();\n this.disabled = false;\n this.psScrollY = new EventEmitter();\n this.psScrollX = new EventEmitter();\n this.psScrollUp = new EventEmitter();\n this.psScrollDown = new EventEmitter();\n this.psScrollLeft = new EventEmitter();\n this.psScrollRight = new EventEmitter();\n this.psYReachEnd = new EventEmitter();\n this.psYReachStart = new EventEmitter();\n this.psXReachEnd = new EventEmitter();\n this.psXReachStart = new EventEmitter();\n }\n ngOnInit() {\n if (!this.disabled && isPlatformBrowser(this.platformId)) {\n const config = new PerfectScrollbarConfig(this.defaults);\n config.assign(this.config); // Custom configuration\n this.zone.runOutsideAngular(() => {\n this.instance = new PerfectScrollbar(this.elementRef.nativeElement, config);\n });\n if (!this.configDiff) {\n this.configDiff = this.differs.find(this.config || {}).create();\n this.configDiff.diff(this.config || {});\n }\n this.zone.runOutsideAngular(() => {\n this.ro = new ResizeObserver(() => {\n this.update();\n });\n if (this.elementRef.nativeElement.children[0]) {\n this.ro.observe(this.elementRef.nativeElement.children[0]);\n }\n this.ro.observe(this.elementRef.nativeElement);\n });\n this.zone.runOutsideAngular(() => {\n PerfectScrollbarEvents.forEach((eventName) => {\n const eventType = eventName.replace(/([A-Z])/g, (c) => `-${c.toLowerCase()}`);\n fromEvent(this.elementRef.nativeElement, eventType)\n .pipe(auditTime(20), takeUntil(this.ngDestroy))\n .subscribe((event) => {\n this[eventName].emit(event);\n });\n });\n });\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n this.ngDestroy.next();\n this.ngDestroy.complete();\n if (this.ro) {\n this.ro.disconnect();\n }\n if (this.timeout && typeof window !== 'undefined') {\n window.clearTimeout(this.timeout);\n }\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n this.instance.destroy();\n }\n });\n this.instance = null;\n }\n }\n ngDoCheck() {\n if (!this.disabled && this.configDiff && isPlatformBrowser(this.platformId)) {\n const changes = this.configDiff.diff(this.config || {});\n if (changes) {\n this.ngOnDestroy();\n this.ngOnInit();\n }\n }\n }\n ngOnChanges(changes) {\n if (changes['disabled'] && !changes['disabled'].isFirstChange() && isPlatformBrowser(this.platformId)) {\n if (changes['disabled'].currentValue !== changes['disabled'].previousValue) {\n if (changes['disabled'].currentValue === true) {\n this.ngOnDestroy();\n }\n else if (changes['disabled'].currentValue === false) {\n this.ngOnInit();\n }\n }\n }\n }\n ps() {\n return this.instance;\n }\n update() {\n if (typeof window !== 'undefined') {\n if (this.timeout) {\n window.clearTimeout(this.timeout);\n }\n this.timeout = window.setTimeout(() => {\n if (!this.disabled && this.configDiff) {\n try {\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n this.instance.update();\n }\n });\n }\n catch (error) {\n // Update can be finished after destroy so catch errors\n }\n }\n }, 0);\n }\n }\n geometry(prefix = 'scroll') {\n return new Geometry(this.elementRef.nativeElement[prefix + 'Left'], this.elementRef.nativeElement[prefix + 'Top'], this.elementRef.nativeElement[prefix + 'Width'], this.elementRef.nativeElement[prefix + 'Height']);\n }\n position(absolute = false) {\n if (!absolute && this.instance) {\n return new Position(this.instance.reach.x || 0, this.instance.reach.y || 0);\n }\n else {\n return new Position(this.elementRef.nativeElement.scrollLeft, this.elementRef.nativeElement.scrollTop);\n }\n }\n scrollable(direction = 'any') {\n const element = this.elementRef.nativeElement;\n if (direction === 'any') {\n return element.classList.contains('ps--active-x') ||\n element.classList.contains('ps--active-y');\n }\n else if (direction === 'both') {\n return element.classList.contains('ps--active-x') &&\n element.classList.contains('ps--active-y');\n }\n else {\n return element.classList.contains('ps--active-' + direction);\n }\n }\n scrollTo(x, y, speed) {\n if (!this.disabled) {\n if (y == null && speed == null) {\n this.animateScrolling('scrollTop', x, speed);\n }\n else {\n if (x != null) {\n this.animateScrolling('scrollLeft', x, speed);\n }\n if (y != null) {\n this.animateScrolling('scrollTop', y, speed);\n }\n }\n }\n }\n scrollToX(x, speed) {\n this.animateScrolling('scrollLeft', x, speed);\n }\n scrollToY(y, speed) {\n this.animateScrolling('scrollTop', y, speed);\n }\n scrollToTop(offset, speed) {\n this.animateScrolling('scrollTop', (offset || 0), speed);\n }\n scrollToLeft(offset, speed) {\n this.animateScrolling('scrollLeft', (offset || 0), speed);\n }\n scrollToRight(offset, speed) {\n const left = this.elementRef.nativeElement.scrollWidth -\n this.elementRef.nativeElement.clientWidth;\n this.animateScrolling('scrollLeft', left - (offset || 0), speed);\n }\n scrollToBottom(offset, speed) {\n const top = this.elementRef.nativeElement.scrollHeight -\n this.elementRef.nativeElement.clientHeight;\n this.animateScrolling('scrollTop', top - (offset || 0), speed);\n }\n scrollToElement(qs, offset, speed) {\n const element = this.elementRef.nativeElement.querySelector(qs);\n if (element) {\n const elementPos = element.getBoundingClientRect();\n const scrollerPos = this.elementRef.nativeElement.getBoundingClientRect();\n if (this.elementRef.nativeElement.classList.contains('ps--active-x')) {\n const currentPos = this.elementRef.nativeElement['scrollLeft'];\n const position = elementPos.left - scrollerPos.left + currentPos;\n this.animateScrolling('scrollLeft', position + (offset || 0), speed);\n }\n if (this.elementRef.nativeElement.classList.contains('ps--active-y')) {\n const currentPos = this.elementRef.nativeElement['scrollTop'];\n const position = elementPos.top - scrollerPos.top + currentPos;\n this.animateScrolling('scrollTop', position + (offset || 0), speed);\n }\n }\n }\n animateScrolling(target, value, speed) {\n if (this.animation) {\n window.cancelAnimationFrame(this.animation);\n this.animation = null;\n }\n if (!speed || typeof window === 'undefined') {\n this.elementRef.nativeElement[target] = value;\n }\n else if (value !== this.elementRef.nativeElement[target]) {\n let newValue = 0;\n let scrollCount = 0;\n let oldTimestamp = performance.now();\n let oldValue = this.elementRef.nativeElement[target];\n const cosParameter = (oldValue - value) / 2;\n const step = (newTimestamp) => {\n scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));\n newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));\n // Only continue animation if scroll position has not changed\n if (this.elementRef.nativeElement[target] === oldValue) {\n if (scrollCount >= Math.PI) {\n this.animateScrolling(target, value, 0);\n }\n else {\n this.elementRef.nativeElement[target] = newValue;\n // On a zoomed out page the resulting offset may differ\n oldValue = this.elementRef.nativeElement[target];\n oldTimestamp = newTimestamp;\n this.animation = window.requestAnimationFrame(step);\n }\n }\n };\n window.requestAnimationFrame(step);\n }\n }\n};\nPerfectScrollbarDirective.ɵfac = function PerfectScrollbarDirective_Factory(t) { return new (t || PerfectScrollbarDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(PERFECT_SCROLLBAR_CONFIG, 8)); };\nPerfectScrollbarDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: PerfectScrollbarDirective, selectors: [[\"\", \"perfectScrollbar\", \"\"]], inputs: { disabled: \"disabled\", config: [\"perfectScrollbar\", \"config\"] }, outputs: { psScrollY: \"psScrollY\", psScrollX: \"psScrollX\", psScrollUp: \"psScrollUp\", psScrollDown: \"psScrollDown\", psScrollLeft: \"psScrollLeft\", psScrollRight: \"psScrollRight\", psYReachEnd: \"psYReachEnd\", psYReachStart: \"psYReachStart\", psXReachEnd: \"psXReachEnd\", psXReachStart: \"psXReachStart\" }, exportAs: [\"ngxPerfectScrollbar\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nPerfectScrollbarDirective.ctorParameters = () => [\n { type: NgZone },\n { type: KeyValueDiffers },\n { type: ElementRef },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [PERFECT_SCROLLBAR_CONFIG,] }] }\n];\n__decorate([\n Input()\n], PerfectScrollbarDirective.prototype, \"disabled\", void 0);\n__decorate([\n Input('perfectScrollbar')\n], PerfectScrollbarDirective.prototype, \"config\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollY\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollX\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollUp\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollDown\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollLeft\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollRight\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psYReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psYReachStart\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psXReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psXReachStart\", void 0);\nPerfectScrollbarDirective = __decorate([ __param(3, Inject(PLATFORM_ID)),\n __param(4, Optional()), __param(4, Inject(PERFECT_SCROLLBAR_CONFIG))\n], PerfectScrollbarDirective);\n\nlet PerfectScrollbarComponent = class PerfectScrollbarComponent {\n constructor(zone, cdRef, platformId) {\n this.zone = zone;\n this.cdRef = cdRef;\n this.platformId = platformId;\n this.states = {};\n this.indicatorX = false;\n this.indicatorY = false;\n this.interaction = false;\n this.scrollPositionX = 0;\n this.scrollPositionY = 0;\n this.scrollDirectionX = 0;\n this.scrollDirectionY = 0;\n this.usePropagationX = false;\n this.usePropagationY = false;\n this.allowPropagationX = false;\n this.allowPropagationY = false;\n this.stateTimeout = null;\n this.ngDestroy = new Subject();\n this.stateUpdate = new Subject();\n this.disabled = false;\n this.usePSClass = true;\n this.autoPropagation = false;\n this.scrollIndicators = false;\n this.psScrollY = new EventEmitter();\n this.psScrollX = new EventEmitter();\n this.psScrollUp = new EventEmitter();\n this.psScrollDown = new EventEmitter();\n this.psScrollLeft = new EventEmitter();\n this.psScrollRight = new EventEmitter();\n this.psYReachEnd = new EventEmitter();\n this.psYReachStart = new EventEmitter();\n this.psXReachEnd = new EventEmitter();\n this.psXReachStart = new EventEmitter();\n }\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.stateUpdate\n .pipe(takeUntil(this.ngDestroy), distinctUntilChanged((a, b) => (a === b && !this.stateTimeout)))\n .subscribe((state) => {\n if (this.stateTimeout && typeof window !== 'undefined') {\n window.clearTimeout(this.stateTimeout);\n this.stateTimeout = null;\n }\n if (state === 'x' || state === 'y') {\n this.interaction = false;\n if (state === 'x') {\n this.indicatorX = false;\n this.states.left = false;\n this.states.right = false;\n if (this.autoPropagation && this.usePropagationX) {\n this.allowPropagationX = false;\n }\n }\n else if (state === 'y') {\n this.indicatorY = false;\n this.states.top = false;\n this.states.bottom = false;\n if (this.autoPropagation && this.usePropagationY) {\n this.allowPropagationY = false;\n }\n }\n }\n else {\n if (state === 'left' || state === 'right') {\n this.states.left = false;\n this.states.right = false;\n this.states[state] = true;\n if (this.autoPropagation && this.usePropagationX) {\n this.indicatorX = true;\n }\n }\n else if (state === 'top' || state === 'bottom') {\n this.states.top = false;\n this.states.bottom = false;\n this.states[state] = true;\n if (this.autoPropagation && this.usePropagationY) {\n this.indicatorY = true;\n }\n }\n if (this.autoPropagation && typeof window !== 'undefined') {\n this.stateTimeout = window.setTimeout(() => {\n this.indicatorX = false;\n this.indicatorY = false;\n this.stateTimeout = null;\n if (this.interaction && (this.states.left || this.states.right)) {\n this.allowPropagationX = true;\n }\n if (this.interaction && (this.states.top || this.states.bottom)) {\n this.allowPropagationY = true;\n }\n this.cdRef.markForCheck();\n }, 500);\n }\n }\n this.cdRef.markForCheck();\n this.cdRef.detectChanges();\n });\n this.zone.runOutsideAngular(() => {\n if (this.directiveRef) {\n const element = this.directiveRef.elementRef.nativeElement;\n fromEvent(element, 'wheel')\n .pipe(takeUntil(this.ngDestroy))\n .subscribe((event) => {\n if (!this.disabled && this.autoPropagation) {\n const scrollDeltaX = event.deltaX;\n const scrollDeltaY = event.deltaY;\n this.checkPropagation(event, scrollDeltaX, scrollDeltaY);\n }\n });\n fromEvent(element, 'touchmove')\n .pipe(takeUntil(this.ngDestroy))\n .subscribe((event) => {\n if (!this.disabled && this.autoPropagation) {\n const scrollPositionX = event.touches[0].clientX;\n const scrollPositionY = event.touches[0].clientY;\n const scrollDeltaX = scrollPositionX - this.scrollPositionX;\n const scrollDeltaY = scrollPositionY - this.scrollPositionY;\n this.checkPropagation(event, scrollDeltaX, scrollDeltaY);\n this.scrollPositionX = scrollPositionX;\n this.scrollPositionY = scrollPositionY;\n }\n });\n merge(fromEvent(element, 'ps-scroll-x')\n .pipe(mapTo('x')), fromEvent(element, 'ps-scroll-y')\n .pipe(mapTo('y')), fromEvent(element, 'ps-x-reach-end')\n .pipe(mapTo('right')), fromEvent(element, 'ps-y-reach-end')\n .pipe(mapTo('bottom')), fromEvent(element, 'ps-x-reach-start')\n .pipe(mapTo('left')), fromEvent(element, 'ps-y-reach-start')\n .pipe(mapTo('top')))\n .pipe(takeUntil(this.ngDestroy))\n .subscribe((state) => {\n if (!this.disabled && (this.autoPropagation || this.scrollIndicators)) {\n this.stateUpdate.next(state);\n }\n });\n }\n });\n window.setTimeout(() => {\n PerfectScrollbarEvents.forEach((eventName) => {\n if (this.directiveRef) {\n this.directiveRef[eventName] = this[eventName];\n }\n });\n }, 0);\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n this.ngDestroy.next();\n this.ngDestroy.unsubscribe();\n if (this.stateTimeout && typeof window !== 'undefined') {\n window.clearTimeout(this.stateTimeout);\n }\n }\n }\n ngDoCheck() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.disabled && this.autoPropagation && this.directiveRef) {\n const element = this.directiveRef.elementRef.nativeElement;\n this.usePropagationX = element.classList.contains('ps--active-x');\n this.usePropagationY = element.classList.contains('ps--active-y');\n }\n }\n }\n checkPropagation(event, deltaX, deltaY) {\n this.interaction = true;\n const scrollDirectionX = (deltaX < 0) ? -1 : 1;\n const scrollDirectionY = (deltaY < 0) ? -1 : 1;\n if ((this.usePropagationX && this.usePropagationY) ||\n (this.usePropagationX && (!this.allowPropagationX ||\n (this.scrollDirectionX !== scrollDirectionX))) ||\n (this.usePropagationY && (!this.allowPropagationY ||\n (this.scrollDirectionY !== scrollDirectionY)))) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (!!deltaX) {\n this.scrollDirectionX = scrollDirectionX;\n }\n if (!!deltaY) {\n this.scrollDirectionY = scrollDirectionY;\n }\n this.stateUpdate.next('interaction');\n this.cdRef.detectChanges();\n }\n};\nPerfectScrollbarComponent.ɵfac = function PerfectScrollbarComponent_Factory(t) { return new (t || PerfectScrollbarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nPerfectScrollbarComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PerfectScrollbarComponent, selectors: [[\"perfect-scrollbar\"]], viewQuery: function PerfectScrollbarComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(PerfectScrollbarDirective, 3);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.directiveRef = _t.first);\n } }, hostVars: 4, hostBindings: function PerfectScrollbarComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ps-show-limits\", ctx.autoPropagation)(\"ps-show-active\", ctx.scrollIndicators);\n } }, inputs: { disabled: \"disabled\", usePSClass: \"usePSClass\", autoPropagation: \"autoPropagation\", scrollIndicators: \"scrollIndicators\", config: \"config\" }, outputs: { psScrollY: \"psScrollY\", psScrollX: \"psScrollX\", psScrollUp: \"psScrollUp\", psScrollDown: \"psScrollDown\", psScrollLeft: \"psScrollLeft\", psScrollRight: \"psScrollRight\", psYReachEnd: \"psYReachEnd\", psYReachStart: \"psYReachStart\", psXReachEnd: \"psXReachEnd\", psXReachStart: \"psXReachStart\" }, exportAs: [\"ngxPerfectScrollbar\"], ngContentSelectors: _c0, decls: 4, vars: 5, consts: [[2, \"position\", \"static\", 3, \"perfectScrollbar\", \"disabled\"], [1, \"ps-content\"], [\"class\", \"ps-overlay\", 3, \"ps-at-top\", \"ps-at-left\", \"ps-at-right\", \"ps-at-bottom\", 4, \"ngIf\"], [1, \"ps-overlay\"], [1, \"ps-indicator-top\"], [1, \"ps-indicator-left\"], [1, \"ps-indicator-right\"], [1, \"ps-indicator-bottom\"]], template: function PerfectScrollbarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, PerfectScrollbarComponent_div_3_Template, 5, 16, \"div\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ps\", ctx.usePSClass);\n ɵngcc0.ɵɵproperty(\"perfectScrollbar\", ctx.config)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.scrollIndicators);\n } }, directives: [PerfectScrollbarDirective, ɵngcc1.NgIf], styles: [\"perfect-scrollbar{position:relative;display:block;overflow:hidden;width:100%;height:100%;max-width:100%;max-height:100%}perfect-scrollbar[hidden]{display:none}perfect-scrollbar[fxflex]{display:-webkit-box;display:flex;flex-direction:column;height:auto;min-width:0;min-height:0;-webkit-box-direction:column;-webkit-box-orient:column}perfect-scrollbar[fxflex]>.ps{flex:1 1 auto;width:auto;height:auto;min-width:0;min-height:0;-webkit-box-flex:1}perfect-scrollbar[fxlayout]>.ps,perfect-scrollbar[fxlayout]>.ps>.ps-content{display:-webkit-box;display:flex;flex:1 1 auto;flex-direction:inherit;align-items:inherit;align-content:inherit;justify-content:inherit;width:100%;height:100%;-webkit-box-align:inherit;-webkit-box-direction:inherit;-webkit-box-flex:1;-webkit-box-orient:inherit;-webkit-box-pack:inherit},perfect-scrollbar[fxlayout=row]>.ps,perfect-scrollbar[fxlayout=row]>.ps>.ps-content{flex-direction:row!important;-webkit-box-direction:row!important;-webkit-box-orient:row!important}perfect-scrollbar[fxlayout=column]>.ps,perfect-scrollbar[fxlayout=column]>.ps>.ps-content{flex-direction:column!important;-webkit-box-direction:column!important;-webkit-box-orient:column!important}perfect-scrollbar>.ps{position:static;display:block;width:100%;height:100%;max-width:100%;max-height:100%}perfect-scrollbar>.ps textarea{-ms-overflow-style:scrollbar}perfect-scrollbar>.ps>.ps-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:block;overflow:hidden;pointer-events:none}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{position:absolute;opacity:0;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{left:0;min-width:100%;min-height:24px}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{top:0;min-width:24px;min-height:100%}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{top:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left{left:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{right:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom{bottom:0}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y{top:0!important;right:0!important;left:auto!important;width:10px;cursor:default;-webkit-transition:width .2s linear,opacity .2s linear,background-color .2s linear;transition:width .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y.ps--clicking,perfect-scrollbar>.ps.ps--active-y>.ps__rail-y:hover{width:15px}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x{top:auto!important;bottom:0!important;left:0!important;height:10px;cursor:default;-webkit-transition:height .2s linear,opacity .2s linear,background-color .2s linear;transition:height .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x.ps--clicking,perfect-scrollbar>.ps.ps--active-x>.ps__rail-x:hover{height:15px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-y{margin:0 0 10px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-x{margin:0 10px 0 0}perfect-scrollbar>.ps.ps--scrolling-x>.ps__rail-x,perfect-scrollbar>.ps.ps--scrolling-y>.ps__rail-y{opacity:.9;background-color:#eee}perfect-scrollbar.ps-show-always>.ps.ps--active-x>.ps__rail-x,perfect-scrollbar.ps-show-always>.ps.ps--active-y>.ps__rail-y{opacity:.6}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-top) .ps-indicator-top{opacity:1;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to bottom,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-bottom) .ps-indicator-bottom{opacity:1;background:-webkit-gradient(linear,left bottom,left top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to top,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-left) .ps-indicator-left{opacity:1;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to right,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-right) .ps-indicator-right{opacity:1;background:-webkit-gradient(linear,right top,left top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to left,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top{background:-webkit-gradient(linear,left top,left bottom,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to bottom,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom{background:-webkit-gradient(linear,left bottom,left top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to top,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left{background:-webkit-gradient(linear,left top,right top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to right,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right{background:-webkit-gradient(linear,right top,left top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to left,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top.ps-indicator-show{opacity:1}\", \".ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{background-color:#999;height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style:none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.ps{overflow:auto!important}}\"], encapsulation: 2 });\nPerfectScrollbarComponent.ctorParameters = () => [\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\n__decorate([\n Input()\n], PerfectScrollbarComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], PerfectScrollbarComponent.prototype, \"usePSClass\", void 0);\n__decorate([\n HostBinding('class.ps-show-limits'),\n Input()\n], PerfectScrollbarComponent.prototype, \"autoPropagation\", void 0);\n__decorate([\n HostBinding('class.ps-show-active'),\n Input()\n], PerfectScrollbarComponent.prototype, \"scrollIndicators\", void 0);\n__decorate([\n Input()\n], PerfectScrollbarComponent.prototype, \"config\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollY\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollX\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollUp\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollDown\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollLeft\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollRight\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psYReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psYReachStart\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psXReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psXReachStart\", void 0);\n__decorate([\n ViewChild(PerfectScrollbarDirective, { static: true })\n], PerfectScrollbarComponent.prototype, \"directiveRef\", void 0);\nPerfectScrollbarComponent = __decorate([ __param(2, Inject(PLATFORM_ID))\n], PerfectScrollbarComponent);\n\nlet PerfectScrollbarModule = class PerfectScrollbarModule {\n};\nPerfectScrollbarModule.ɵfac = function PerfectScrollbarModule_Factory(t) { return new (t || PerfectScrollbarModule)(); };\nPerfectScrollbarModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: PerfectScrollbarModule });\nPerfectScrollbarModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule], CommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PerfectScrollbarDirective, [{\n type: Directive,\n args: [{\n selector: '[perfectScrollbar]',\n exportAs: 'ngxPerfectScrollbar'\n }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.ElementRef }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [PERFECT_SCROLLBAR_CONFIG]\n }] }]; }, { disabled: [{\n type: Input\n }], psScrollY: [{\n type: Output\n }], psScrollX: [{\n type: Output\n }], psScrollUp: [{\n type: Output\n }], psScrollDown: [{\n type: Output\n }], psScrollLeft: [{\n type: Output\n }], psScrollRight: [{\n type: Output\n }], psYReachEnd: [{\n type: Output\n }], psYReachStart: [{\n type: Output\n }], psXReachEnd: [{\n type: Output\n }], psXReachStart: [{\n type: Output\n }], config: [{\n type: Input,\n args: ['perfectScrollbar']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PerfectScrollbarComponent, [{\n type: Component,\n args: [{\n selector: 'perfect-scrollbar',\n exportAs: 'ngxPerfectScrollbar',\n template: \"
\\n
\\n \\n
\\n\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\",\n encapsulation: ViewEncapsulation.None,\n styles: [\"perfect-scrollbar{position:relative;display:block;overflow:hidden;width:100%;height:100%;max-width:100%;max-height:100%}perfect-scrollbar[hidden]{display:none}perfect-scrollbar[fxflex]{display:-webkit-box;display:flex;flex-direction:column;height:auto;min-width:0;min-height:0;-webkit-box-direction:column;-webkit-box-orient:column}perfect-scrollbar[fxflex]>.ps{flex:1 1 auto;width:auto;height:auto;min-width:0;min-height:0;-webkit-box-flex:1}perfect-scrollbar[fxlayout]>.ps,perfect-scrollbar[fxlayout]>.ps>.ps-content{display:-webkit-box;display:flex;flex:1 1 auto;flex-direction:inherit;align-items:inherit;align-content:inherit;justify-content:inherit;width:100%;height:100%;-webkit-box-align:inherit;-webkit-box-direction:inherit;-webkit-box-flex:1;-webkit-box-orient:inherit;-webkit-box-pack:inherit},perfect-scrollbar[fxlayout=row]>.ps,perfect-scrollbar[fxlayout=row]>.ps>.ps-content{flex-direction:row!important;-webkit-box-direction:row!important;-webkit-box-orient:row!important}perfect-scrollbar[fxlayout=column]>.ps,perfect-scrollbar[fxlayout=column]>.ps>.ps-content{flex-direction:column!important;-webkit-box-direction:column!important;-webkit-box-orient:column!important}perfect-scrollbar>.ps{position:static;display:block;width:100%;height:100%;max-width:100%;max-height:100%}perfect-scrollbar>.ps textarea{-ms-overflow-style:scrollbar}perfect-scrollbar>.ps>.ps-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:block;overflow:hidden;pointer-events:none}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{position:absolute;opacity:0;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{left:0;min-width:100%;min-height:24px}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{top:0;min-width:24px;min-height:100%}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{top:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left{left:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{right:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom{bottom:0}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y{top:0!important;right:0!important;left:auto!important;width:10px;cursor:default;-webkit-transition:width .2s linear,opacity .2s linear,background-color .2s linear;transition:width .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y.ps--clicking,perfect-scrollbar>.ps.ps--active-y>.ps__rail-y:hover{width:15px}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x{top:auto!important;bottom:0!important;left:0!important;height:10px;cursor:default;-webkit-transition:height .2s linear,opacity .2s linear,background-color .2s linear;transition:height .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x.ps--clicking,perfect-scrollbar>.ps.ps--active-x>.ps__rail-x:hover{height:15px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-y{margin:0 0 10px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-x{margin:0 10px 0 0}perfect-scrollbar>.ps.ps--scrolling-x>.ps__rail-x,perfect-scrollbar>.ps.ps--scrolling-y>.ps__rail-y{opacity:.9;background-color:#eee}perfect-scrollbar.ps-show-always>.ps.ps--active-x>.ps__rail-x,perfect-scrollbar.ps-show-always>.ps.ps--active-y>.ps__rail-y{opacity:.6}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-top) .ps-indicator-top{opacity:1;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to bottom,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-bottom) .ps-indicator-bottom{opacity:1;background:-webkit-gradient(linear,left bottom,left top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to top,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-left) .ps-indicator-left{opacity:1;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to right,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-right) .ps-indicator-right{opacity:1;background:-webkit-gradient(linear,right top,left top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to left,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top{background:-webkit-gradient(linear,left top,left bottom,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to bottom,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom{background:-webkit-gradient(linear,left bottom,left top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to top,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left{background:-webkit-gradient(linear,left top,right top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to right,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right{background:-webkit-gradient(linear,right top,left top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to left,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top.ps-indicator-show{opacity:1}\", \".ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{background-color:#999;height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style:none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.ps{overflow:auto!important}}\"]\n }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { disabled: [{\n type: Input\n }], usePSClass: [{\n type: Input\n }], autoPropagation: [{\n type: HostBinding,\n args: ['class.ps-show-limits']\n }, {\n type: Input\n }], scrollIndicators: [{\n type: HostBinding,\n args: ['class.ps-show-active']\n }, {\n type: Input\n }], psScrollY: [{\n type: Output\n }], psScrollX: [{\n type: Output\n }], psScrollUp: [{\n type: Output\n }], psScrollDown: [{\n type: Output\n }], psScrollLeft: [{\n type: Output\n }], psScrollRight: [{\n type: Output\n }], psYReachEnd: [{\n type: Output\n }], psYReachStart: [{\n type: Output\n }], psXReachEnd: [{\n type: Output\n }], psXReachStart: [{\n type: Output\n }], config: [{\n type: Input\n }], directiveRef: [{\n type: ViewChild,\n args: [PerfectScrollbarDirective, { static: true }]\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PerfectScrollbarModule, { declarations: function () { return [PerfectScrollbarComponent, PerfectScrollbarDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [CommonModule, PerfectScrollbarComponent, PerfectScrollbarDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PerfectScrollbarModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [PerfectScrollbarComponent, PerfectScrollbarDirective],\n exports: [CommonModule, PerfectScrollbarComponent, PerfectScrollbarDirective]\n }]\n }], null, null); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Geometry, PERFECT_SCROLLBAR_CONFIG, PerfectScrollbarComponent, PerfectScrollbarConfig, PerfectScrollbarDirective, PerfectScrollbarModule, Position };\n\n//# sourceMappingURL=ngx-perfect-scrollbar.js.map","import { Component } from '@angular/core';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'app-wind-info',\n templateUrl: `../../../../assets/${environment.project}/info_wind.html`,\n})\nexport class WindInfoComponent {}\n","\n\n\n \n\n\n

Medições meteorológicas:

\n

\n Os valores medidos provêm da estação meteorológica localizada no Trem Naval, que disponibiliza informação em tempo real.\n Os valores apresentados correspondem à data/hora da última leitura disponível.\n

\n

Unidades das variáveis:

\n
    \n
  • Temperatura do ar (valor atual, máxima e mínima em 24 h): graus Celsius [°C];
  • \n
  • Intensidade e rajada do vento: possibilidade de consultar os valores em nós, m/s ou km/h;
  • \n
  • Direção do vento: graus [°] e direções da rosa dos ventos;
  • \n \n
  • Humidade relativa: percentagem [%];
  • \n
  • Pressão atmosférica: milibar [mBar].
  • \n
\n

Previsões meteorológicas:

\n

\n As previsões para a temperatura do ar, direção e intensidade do vento e precipitação provêm do modelo meteorológico ICON Icosahedral Nonhydrostatic,\n desenvolvido pelo serviço meteorológico DWD (Deutscher Wetterdienst), com uma resolução horizontal de 7 km e atualizado 4 vezes por dia.

\n

As previsões meteorológicas disponibilizadas nesta página são representativas para o Trem Naval.

\n

\n

Unidades das variáveis:

\n
    \n
  • Temperatura do ar: graus Celsius [°C];
  • \n
  • Intensidade do vento: possibilidade de consultar os valores em nós, m/s ou km/h;
  • \n
  • Direção do vento: graus [°];
  • \n
  • Precipitação: milimetros por hora [mm].
  • \n
\n\n\n","import { NgModule } from '@angular/core';\nimport { MainRoutingModule } from './main-routing.module';\nimport { SharedModule } from '../shared/shared.module';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\nimport { PERFECT_SCROLLBAR_CONFIG } from 'ngx-perfect-scrollbar';\nimport { PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar';\nimport { LottieModule } from 'ngx-lottie';\nimport { LeafletModule } from '@asymmetrik/ngx-leaflet';\nimport { ShareButtonsModule } from 'ngx-sharebuttons/buttons';\n\nconst DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {\n suppressScrollX: true,\n};\n\nexport function playerFactory() {\n return import('lottie-web');\n}\n\n@NgModule({\n declarations: [MainRoutingModule.components],\n imports: [\n MainRoutingModule,\n SharedModule,\n PerfectScrollbarModule,\n LottieModule.forRoot({ player: playerFactory }),\n LeafletModule,\n ShareButtonsModule,\n ],\n providers: [\n {\n provide: PERFECT_SCROLLBAR_CONFIG,\n useValue: DEFAULT_PERFECT_SCROLLBAR_CONFIG,\n },\n ],\n})\nexport class MainModule {}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","import { Component, Input } from '@angular/core';\nimport { PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar';\n\n@Component({\n selector: 'app-widgets-layout',\n templateUrl: './widgets-layout.component.html',\n styleUrls: ['./widgets-layout.component.scss'],\n})\nexport class WidgetsLayoutComponent {\n @Input() blockToShow: string;\n \n public config: PerfectScrollbarConfigInterface = {};\n}\n","\n \n \n \n \n\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport * as Highcharts from 'highcharts';\nimport * as moment from 'moment';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MapDialogComponent } from '../map-dialog/map-dialog.component';\nimport { DataService } from 'src/app/core/services/data-service.service';\nimport { Subscription } from 'rxjs';\nimport { createChart, getConversionRate, getMappedData, replaceUnitPlaceholder } from 'src/app/helperModules/chart.helpers';\nimport { ISerie, IWidget, IndexFrontend } from 'src/app/shared/models/seriesInfo.interfaces';\nimport { environment } from 'src/environments/environment';\n\nexport interface ITide {\n date?: Date;\n value?: number;\n stormSurge?: number;\n}\n\n@Component({\n selector: 'app-hydrography',\n templateUrl: './hydrography.component.html',\n styleUrls: ['./hydrography.component.scss'],\n})\nexport class HydrographyComponent implements OnInit, OnDestroy {\n flipped: boolean = false;\n baseVelocityUnit: string;\n selectedVelocityUnit: string;\n isLastValuesModeled: boolean;\n\n todayTides: ITide[];\n tomorrowTides: ITide[];\n chart: Highcharts.Chart;\n\n chartSettings;\n createChart;\n seriesSettings = [];\n lastValuesDate: Date;\n\n projectSettings : {\n project_name: string;\n page_name: string;\n url_logo: string;\n } = {\n project_name: \"\",\n page_name: '',\n url_logo: ''\n };\n\n dataSubscription: Subscription;\n _widgetData: IWidget;\n mappedData: Map = new Map();\n\n constructor(private dataService: DataService, private dialog: MatDialog) {}\n\n ngOnInit(): void {\n this.dataService.getChartSettings().subscribe((settings: any) => {\n this.chartSettings = settings;\n });\n\n this.dataService.getSiteSettings().subscribe((settings: any) => {\n this.projectSettings = settings;\n this.projectSettings.project_name = environment.project;\n });\n\n this.dataSubscription = this.dataService.hidrographyData$.subscribe(widget => {\n if (widget.charts.yAxis.length > 0 && widget.lastValues.length > 0) {\n this._widgetData = widget;\n this.mappedData = getMappedData(this._widgetData);\n\n // Check if there is any current intensity chart\n if (this.mappedData.has(IndexFrontend.CurrentIntensityChart)) {\n this.baseVelocityUnit = this.mappedData.get(IndexFrontend.CurrentIntensityChart)[0].unit;\n this.selectedVelocityUnit = localStorage.getItem('velocityUnit') || this.dataService.initialVelocityUnit;\n }\n\n this.isLastValuesModeled = this.dataService.isHidrographyModeled;\n this.lastValuesDate = this._widgetData.lastValues[0].date;\n \n this.createTable();\n this.drawChart();\n }\n });\n }\n\n drawChart() {\n this.createChart = createChart.bind(this);\n this.createChart(this._widgetData.charts, this.seriesSettings, this.chartSettings, 'nós');\n\n if (this.seriesSettings.length > 0) {\n this.chartSettings.series = this.seriesSettings;\n if (this.chart === undefined) {\n this.chart = Highcharts.chart('hidrographyChart', this.chartSettings);\n }\n else {\n this.chart.update(this.chartSettings);\n }\n }\n }\n\n ngOnDestroy(): void { this.dataSubscription?.unsubscribe() }\n\n createTable() {\n let allTideTableValues = this._widgetData.tables\n .find(s => s.isTide).chartValues\n .map(v => { return { value: v.value, date: v.date} as ITide })\n\n this.todayTides = allTideTableValues.filter(tideValue => this.isToday(tideValue.date));\n this.tomorrowTides = allTideTableValues.filter(tideValue => this.isTomorrow(tideValue.date));\n\n let allStormSurgeValues = this._widgetData.tables\n .find(s => s.isTideSurge).chartValues\n .map(v => v.value);\n\n for (let i = 0; i < allTideTableValues.length - 1; i++) {\n allTideTableValues[i].stormSurge = allStormSurgeValues[i];\n }\n }\n\n isToday = (someDate) => {\n const today = new Date();\n return (\n someDate.getDate() == today.getDate() &&\n someDate.getMonth() == today.getMonth() &&\n someDate.getFullYear() == today.getFullYear()\n );\n };\n\n isTomorrow = (someDate) => {\n return (\n someDate.getDate() == moment().add(1, 'd').toDate().getDate() &&\n someDate.getMonth() == moment().add(1, 'd').toDate().getMonth() &&\n someDate.getFullYear() == moment().add(1, 'd').toDate().getFullYear()\n );\n };\n\n openMap() {\n this.dialog.open(MapDialogComponent, {\n minWidth: '50%',\n maxWidth: '95%',\n minHeight: '50%',\n maxHeight: 'calc(100% - 80px)',\n data: {\n allData: Array.from(this.mappedData.values()).reduce((acc, series) => acc.concat(series)),\n },\n panelClass: 'custom-dialog-container',\n });\n }\n\n checkExists(indexFrontend: IndexFrontend) : boolean { return this.mappedData.has(indexFrontend); }\n\n getRotation(indexFrontend: number): string {\n return this.checkExists(indexFrontend) != null \n ? `${-45 + this.mappedData.get(indexFrontend)[0].lastValue + 180}deg` \n : '0deg';\n }\n\n velocityUnitChanged(newUnit: string) : void {\n localStorage.setItem('velocityUnit', newUnit);\n if (this.baseVelocityUnit !== newUnit) {\n let convertConstant = getConversionRate(this.baseVelocityUnit, newUnit);\n\n // Converting last values\n if (this.checkExists(IndexFrontend.CurrentIntensityLastValue)) {\n this.mappedData.get(IndexFrontend.CurrentIntensityLastValue)[0].lastValue *= convertConstant;\n }\n \n this.updateChart(newUnit, convertConstant);\n this.selectedVelocityUnit = newUnit;\n this.baseVelocityUnit = newUnit;\n }\n }\n\n updateChart(newUnit: string, convertConstant: number) : void {\n // Update wind chart values\n let windChartSeries = this.mappedData.get(IndexFrontend.CurrentIntensityChart);\n windChartSeries.forEach(s => { \n s.chartValues.forEach(v => v.value = v.value * convertConstant);\n this.chartSettings.series.forEach((serie: any) => {\n if (serie.id === s.id) {\n serie.data.forEach((d: any) => d[1] = parseFloat((d[1] * convertConstant).toFixed(2)));\n serie.tooltip = { valueSuffix: ` ${newUnit}` };\n }\n });\n });\n\n let yAxis = this.chartSettings.yAxis.find(y => y.unit === this.baseVelocityUnit);\n if (yAxis) {\n if (yAxis.max) yAxis.max *= convertConstant;\n yAxis.unit = newUnit;\n yAxis.title.text = replaceUnitPlaceholder(yAxis.title.text, newUnit, /\\[(.*?)\\]/)\n }\n \n this.chart.update(this.chartSettings);\n }\n\n isDataUnderTolerance() : boolean {\n const flattenedAndFiltered = Array.from(this.mappedData.values())\n .reduce((acc, curr) => acc.concat(curr), [])\n .filter(serie => serie.lastValue !== undefined && serie.lastValue !== null);\n\n let isUnderTolerance: boolean = true;\n for (let i = 0; i < flattenedAndFiltered.length; i++) {\n let serie = flattenedAndFiltered[i];\n let tolerance = moment().subtract(serie.communicationTolerance ?? 86400, 'seconds');\n \n isUnderTolerance = !moment(serie.date).isBefore(tolerance)\n }\n \n return isUnderTolerance;\n }\n}\n","
\n
\n \n \n
\n
Hidrografia
\n
\n \n nós\n m/s\n km/h\n \n \n \n
\n
\n
\n \n \n \n \n Valor medido \n a {{ lastValuesDate | date: \"d LLL 'às' HH:mm\":\"en\" }}\n \n \n \n
\n \n Valor previsto \n para {{ lastValuesDate | date: \"d LLL 'às' HH:mm\":\"en\" }}\n \n \n
\n
\n Nível do mar:\n
\n \n {{ mappedData.get(2.1)[0] | getSerieValue : 2 }}\n \n
\n
\n \n Direção da corrente:\n
\n \n \n {{ mappedData.get(2.3)[0] | getSerieValue : 0 }}\n {{ mappedData.get(2.3)[0] | directionCompassRose : true }}\n \n
\n \n
\n Intensidade da corrente:\n
\n \n {{ mappedData.get(2.4)[0] | getSerieValue : 1 : selectedVelocityUnit }}\n \n
\n
\n \n
\n

Tabela de Maré:

\n
\n
\n
HOJE
\n \n \n Hora\n \n {{ row.date | date: \"HH:mm\":\"en\" }}\n \n \n \n Altura [m] *\n \n {{ row.value | number: \"1.2-2\":\"en\" }}\n {{\n row.stormSurge != null\n ? (row.stormSurge | signPositiveNegative)\n : \"\"\n }}\n \n \n \n Tipo\n \n {{ row.value | tideEvent }}\n \n \n \n \n \n
\n\n
\n
AMANHÃ
\n \n \n Hora\n \n {{ row.date | date: \"HH:mm\":\"en\" }}\n \n \n \n Altura [m] *\n \n {{ row.value | number: \"1.2-2\":\"en\" }}\n {{\n row.stormSurge != null\n ? (row.stormSurge | signPositiveNegative)\n : \"\"\n }}\n \n \n \n Tipo\n \n {{ row.value | tideEvent }}\n \n \n \n \n \n
\n \n
\n * Tabela de maré do Instituto Hidrográfico para o marégrafo de {{projectSettings.project_name == \"apsssesimbra\" ? projectSettings.page_name : \"Tróia\"}} (sobre-elevação\n prevista pelo modelo numérico)\n
\n \n

Previsão

\n
\n \n
\n \n \n \n \n
\n
Hidrografia
\n
\n \n \n
\n
\n
\n
\n \n\n","import { LatLng } from \"leaflet\"\n\n/**\n * This is the object retrieved from the project series settings, the series themselves can\n * have multiple properties that are populated after data is taken from the server\n */\nexport interface ISeriesInfo {\n /**\n * States if the wind atmosphere data is modeled or not\n */\n isWindAtmosphereModeled: boolean,\n /**\n * States if the hidrography data is modeled or not\n */\n isHydrographyModeled: boolean,\n /**\n * States if the waves data is modeled or not\n */\n isWavesModeled: boolean,\n /**\n * Base velocity unit used for the wind values\n */\n velocityUnit: string,\n /**\n * The widgets associated with the wind & atmosphere data\n */\n windAndAtmosphereWidgets: IWidget,\n /**\n * The widgets associated with the hidrography data\n */\n hidrographyWidgets: IWidget,\n /**\n * The widgets associated with the waves data\n */\n wavesWidgets: IWidget\n}\n\n/**\n * It represents a widget with both the charts and last values data needed to create it\n */\nexport interface IWidget {\n /**\n * Chart object has the properties to create a time series chart\n */\n charts: IChart,\n /**\n * Tables object are the series that will be displayed in tables\n */\n tables: ISerie[],\n /**\n * Last values are the configuration used to get the last values for a determined parameter\n */\n lastValues: ISerie[]\n}\n\n/**\n * This object states the common properties of a chart\n */\nexport interface IChart {\n /**\n * The y axis configurations, a collection of it that can associate multiple time series to\n * one y axis\n */\n yAxis: IChartYAxis[]\n}\n\n/**\n * Common y axis chart options and the series associated with the axis\n */\nexport interface IChartYAxis {\n /**\n * The name that will be displayed in the y axis\n */\n name: string,\n /**\n * The minimum value for the y axis\n */\n min: number,\n /**\n * The maximum value for the y axis\n */\n max: number,\n /**\n * Sets the tick interval to the value requested\n */\n tickInterval: number | \"dynamic\",\n /**\n * A collection of series\n */\n series: ISerie[]\n}\n\n/**\n * Custom chart options when using multiple series in the same chart\n */\nexport interface IChartOptions {\n /**\n * The color for the chart values\n */\n color: string,\n /**\n * States if the chart should be are or line\n */\n isFilled: boolean,\n /**\n * Can have little dots on each value\n */\n hasDots: boolean,\n /**\n * If is line chart, the dash style can be customized\n */\n dashStyle: string | undefined,\n /**\n * States the type of symbol when using dots\n */\n symbol: \"square\" | \"circle\" | \"diamond\" | \"triangle\" | undefined,\n /**\n * Z index property\n */\n zIndex: number,\n /**\n * Can customize the number of decimal places\n */\n decimalPlaces?: number\n}\n\n/**\n * This object is populated with information after getting the metadata and values from the server\n */\nexport interface ISerie {\n /**\n * The ID of the time serie\n */\n id: number,\n /**\n * The description for the time series\n */\n description: string,\n /**\n * States the position and makes it easy to search the data\n */\n indexFrontend: IndexFrontend,\n /**\n * The aquasafe server to get the data from\n */\n server: string,\n /**\n * The station code where tha values come from\n */\n stationCode?: string,\n /**\n * The location name where the values come from\n */\n locationName?: string,\n /**\n * The location latitude and longitude\n */\n locationCoords?: LatLng,\n /**\n * Source name of the values\n */\n sourceName?: string,\n /**\n * The parameter name of the values\n */\n parameterName?: string,\n /**\n * The unit of the parameter\n */\n unit?: string,\n /**\n * The chart custom options\n */\n chartOptions?: IChartOptions,\n /**\n * States if the data is tide or not\n */\n isTide?: boolean,\n /**\n * States if data is tide surge or not\n */\n isTideSurge?: boolean,\n /**\n * States if data is weather data\n */\n isWeather?: boolean,\n /**\n * The last value of the series\n */\n lastValue?: number,\n /**\n * The date of the last value\n */\n date?: Date,\n /**\n * The communication tolerance time interval in seconds that may consider the value\n * source faulty\n */\n communicationTolerance?: number,\n /**\n * Possible chart values if series is supposed to display as chart\n */\n chartValues?: IChartValue[],\n /**\n * States if is measure or modeled time series\n */\n isMeasure: boolean,\n /**\n * The hindcast visible in hours\n */\n visibleHindcastInHours?: number,\n}\n\n/**\n * It represents a chart time serie value\n */\nexport interface IChartValue {\n /**\n * Can have the series id\n */\n id: number,\n /**\n * The value\n */\n value: number,\n /**\n * The date for the time serie value\n */\n date: Date\n}\n \n/**\n * Metadata of a time serie\n */\nexport interface IMetadata {\n /**\n * The ID of the serie\n */\n id: number;\n /**\n * Station code, represents a harbor station\n */\n stationCode: string;\n /**\n * The location name where the serie data comes from\n */\n locationName: string;\n /**\n * Source name of the serie\n */\n sourceName: string;\n /**\n * The parameter name of the time series\n */\n parameterName: string;\n /**\n * The unit of the time series\n */\n unit: string;\n}\n\n/**\n * The enum values in this enum is used for easy access and readability.\n */\nexport enum IndexFrontend {\n // Wind and Atmoshpere index frontend positions\n TemperatureLastValue = 1.1,\n AtmosphericPressureLastValue = 1.2,\n PrecipitationLastValue = 1.3,\n RelativeHumidityLastValue = 1.4,\n WindDirectionLastValue = 1.5,\n WindGustLastValue = 1.6,\n WindIntensityLastValue = 1.7,\n WeatherStateTable = 1.8,\n TemperatureChart = 1.9,\n PrecipitationChart = 1.11,\n WindIntensityChartAndTable = 1.12,\n WindDirectionTable = 1.13,\n MaxTemperatureLast24Hours = 1.14,\n MinTemperatureLast24Hours = 1.15,\n \n // Hidrography index frontend positions\n SeaLevelLastValue = 2.1,\n TideTable = 2.2,\n CurrentDirectionLastValue = 2.3,\n CurrentIntensityLastValue = 2.4,\n SeaLevelChart = 2.5,\n CurrentIntensityChart = 2.6,\n SubElevationTideTable = 2.7,\n\n // Waves index frontend positions\n MeanWaveDirectionLastValue = 3.1,\n MeanPeakPeriodLastValue = 3.2,\n WavesHeightLastValue = 3.4,\n PeakPeriodLastValue = 3.5,\n MaxWaveHeightLastValue = 3.6,\n WaterTemperatureLastValue = 3.7,\n MeanPeakPeriodChart = 3.8,\n WavesHeightChart = 3.9\n}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import * as moment from \"moment\";\nimport * as Highcharts from \"highcharts\";\nimport { IChart, ISerie, IWidget, IndexFrontend } from \"../shared/models/seriesInfo.interfaces\";\n\n/**\n * Gets the correct weather state icon dependenign on the value requested\n * @param stateValue \n * @returns \n */\nexport function getWeatherStateIcon(stateValue: number) : string {\n const statesMapping = {\n 1: 'wi wi-day-sunny',\n 2: 'wi wi-day-cloudy',\n 3: 'wi wi-day-cloudy',\n 4: 'wi wi-day-cloudy',\n 5: 'wi wi-day-cloudy',\n 6: 'wi wi-day-showers',\n 7: 'wi wi-day-showers',\n 8: 'wi wi-day-showers',\n 9: 'wi wi-day-rain',\n 10: 'wi wi-day-rain',\n 11: 'wi wi-day-rain',\n };\n\n // Check if the stateValue exists in the statesMapping, if not return an empty string\n return statesMapping[stateValue] || '';\n}\n\n/**\n * Gets the correct conversion rate for the units requested\n * @param fromUnit \n * @param toUnit \n * @returns \n */\nexport function getConversionRate(fromUnit: string, toUnit: string): number {\n let conversionRates = {\n 'nós to km/h': 1.852,\n 'km/h to nós': 0.539957,\n 'nós to m/s': 0.514444,\n 'm/s to nós': 1.94384,\n 'm/s to km/h': 3.6,\n 'km/h to m/s': 0.277778\n };\n\n return conversionRates[`${fromUnit} to ${toUnit}`] || 1;\n}\n\n/**\n * Shared x axis plot lines across all charts\n */\nexport function getXAxisPlotLines() : any[] {\n moment.locale(\"pt\")\n return [{\n // Style\n color: '#fff',\n width: 1.5,\n dashStyle: 'longdashdot',\n rotation: 0,\n // Labels\n label: {\n text: moment().format('MMM, DD - HH:mm'),\n style: { color: '#fff' },\n rotation: 270,\n y: 85,\n x: 15,\n verticalAlign: 'top',\n },\n zIndex: 5,\n value: moment(),\n }];\n}\n\n/**\n * Creates the series name based on the isMeasure flag\n * @param serie \n * @returns \n */\nexport function getSeriesName(serie: ISerie) : string {\n return serie.description; \n}\n\n/**\n * Replaces the unit placeholder\n * @param description \n * @param unit \n * @param searchValue \n * @returns \n */\nexport function replaceUnitPlaceholder(\n description: string, \n unit: string, \n searchValue: { [Symbol.replace](string: string, replaceValue: string) }\n) {\n return description.replace(searchValue, `[${unit}]`);\n}\n\n/**\n * Returns all the y axis needed for the chart to be draw\n * @param chart \n * @param expectedUnits \n */\nexport function getYAxis(chart: IChart, ...expectedUnits: string[]) : any[] {\n // Create the y axis, each y axis configured can have multiple series\n let yAxis: any[] = [];\n chart.yAxis.forEach(axis => {\n \n // Creating the ticks based on the min, max and tick interval requested\n let isDynamicAxis = axis.tickInterval === \"dynamic\";\n let ticks = [];\n \n if (!isDynamicAxis) {\n let numTicks = axis.max / +axis.tickInterval;\n\n for (let i = axis.min || 0; i <= numTicks; i++) {\n ticks.push(+axis.tickInterval * i);\n }\n }\n \n yAxis.push({\n // Unit & Margin\n unit: axis.series[0].unit,\n margin: -10,\n // Title\n title: {\n text: replaceUnitPlaceholder(axis.name, axis.series[0].unit, /\\$unit\\$/g),\n margin: 10,\n style: {\n color: axis.series[0].chartOptions.color,\n fontSize: 13\n }\n },\n // Labels\n labels: {\n style: {\n color: axis.series[0].chartOptions.color,\n fontSize: 13\n },\n formatter: function () { return Highcharts.numberFormat(this.value, 1) },\n format: axis.series[0].chartOptions.decimalPlaces \n ? `value:,.${axis.series[0].chartOptions.decimalPlaces}f`\n : ''\n },\n // Lines\n lineColor: axis.series[0].chartOptions.color,\n tickColor: axis.series[0].chartOptions.color,\n minorTickColor: axis.series[0].chartOptions.color,\n gridLineColor: 'rgba(255,255,255,0.2)',\n gridLineWidth: 0.5,\n // Minimum and Maximum\n tickPositions: isDynamicAxis ? undefined : ticks,\n min: axis.min || 0,\n max: axis.max || undefined,\n // Other properties\n opposite: expectedUnits.includes(axis.series[0].unit),\n });\n });\n\n return yAxis;\n}\n\n/**\n * Parses the data of a serie to make it ready for a chart\n * @param serie \n * @returns \n */\nexport function addDataToChart(serie: ISerie) : number[][] {\n // Returns an array of time series values with associated date and value\n let chartData = serie.chartValues.map((data) => [data.date.getTime(), parseFloat(data.value.toFixed(2))]);\n\n return chartData\n .filter((data) => data[0] > moment().subtract(serie.visibleHindcastInHours, 'h').toDate().getTime());\n}\n\n/**\n * Returns the serie configured for the chart\n * @param serie \n * @param axisIndex \n */\nexport function configureSeries(serie: ISerie, axisIndex: number) : any {\n return {\n // Base settings\n id: serie.id,\n name: getSeriesName(serie),\n yAxis: axisIndex,\n lineWidth: serie.chartOptions.hasDots ? 0 : 2,\n type: serie.chartOptions.isFilled ? 'area' : 'line',\n marker: \n { \n enabled: serie.chartOptions.hasDots,\n symbol: serie.chartOptions.hasDots ? serie.chartOptions.symbol : undefined,\n radius: 3\n },\n tooltip: { valueSuffix: ` ${serie.unit}` },\n connectNulls: true,\n dashStyle: !serie.chartOptions.isFilled \n ? serie.chartOptions.dashStyle ? serie.chartOptions.dashStyle : undefined\n : undefined,\n // Z index\n zIndex: serie.chartOptions.zIndex || undefined,\n // Color or gradient\n color: !serie.chartOptions.isFilled\n ? serie.chartOptions.color\n : {\n linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n stops: [\n [0, serie.chartOptions.color],\n [1, Highcharts.color(serie.chartOptions.color).setOpacity(0.3).get('rgba')],\n ],\n },\n }\n}\n\n/**\n * Creates the chart requested\n * @param chart \n * @param seriesSettings \n * @param chartSettings \n * @param expectedUnits \n */\nexport function createChart(chart: IChart, seriesSettings: any[], chartSettings: any, ...expectedUnits: string[]) {\n // Common chart settings\n chartSettings.xAxis.max = moment().add(48, 'h').toDate();\n chartSettings.tooltip = { \n shared: true, \n crosshairs: {\n width: 0.5,\n dashStyle: 'line'\n },\n }\n\n // y axis settings\n chartSettings.yAxis = getYAxis(chart, ...expectedUnits);\n \n // x axis plot lines configuration\n chartSettings.xAxis.plotLines = getXAxisPlotLines();\n\n // Add series data to chart\n let i = 0;\n chart.yAxis.forEach((axis, yAxisIndex) => {\n axis.series.forEach((serie) => {\n if (serie.chartValues) {\n seriesSettings[i] = configureSeries(serie, yAxisIndex);\n seriesSettings[i].data = addDataToChart(serie);\n i++;\n }\n });\n })\n}\n\n/**\n * Parses a widget configuration to a map, being the key the index frontend of the data to be displayed\n * @param widget \n * @returns \n */\nexport function getMappedData(widget: IWidget) : Map {\n let map: Map = new Map();\n\n // Getting chart series\n widget.charts.yAxis.forEach(axis => { axis.series.forEach(serie => addSerieToMap(map, serie)) });\n \n // Get last values series\n widget.lastValues.forEach(serie => addSerieToMap(map, serie));\n\n // Getting table series\n if (widget.tables && widget.tables.length > 0) {\n widget.tables.forEach(serie => addSerieToMap(map, serie));\n }\n\n return map;\n}\n\n/**\n * Adds a series to a map\n * @param map \n * @param serie \n */\nexport function addSerieToMap(map: Map, serie: ISerie) : void {\n if (map.has(serie.indexFrontend)) {\n map.get(serie.indexFrontend).push(serie);\n }\n else {\n map.set(serie.indexFrontend, [serie]);\n }\n}","import { Component } from '@angular/core';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'app-waves-info',\n templateUrl: `../../../../assets/${environment.project}/info_waves.html`,\n})\nexport class WavesInfoComponent {}\n","\n\n\n \n\n\n

Previsões de agitação marítima

\n

\n Os dados de agitação marítima apresentados correspondem à previsão para a data/hora atual, para o local da Baliza 2.\n

\n

\n As previsões provêm da implementação do modelo numérico de previsão de ondas SWAN que simula a região do Porto de Setúbal e é atualizado diariamente pela HIDROMOD.\n

\n\n

\n

\n

Unidades das variáveis

\n
    \n
  • Altura significativa: metros [m];
  • \n
  • Altura máxima: metros [m];
  • \n
  • Direção média: graus [°];
  • \n
  • Período médio: segundos [s];
  • \n
  • Período de pico: segundos [s].
  • \n \n
\n\n\n","/*\n Leaflet.AwesomeMarkers, a plugin that adds colorful iconic markers for Leaflet, based on the Font Awesome icons\n (c) 2012-2013, Lennard Voogdt\n\n http://leafletjs.com\n https://github.com/lvoogdt\n*/\n\n/*global L*/\n\n(function (window, document, undefined) {\n \"use strict\";\n /*\n * Leaflet.AwesomeMarkers assumes that you have already included the Leaflet library.\n */\n\n L.AwesomeMarkers = {};\n\n L.AwesomeMarkers.version = '2.0.1';\n\n L.AwesomeMarkers.Icon = L.Icon.extend({\n options: {\n iconSize: [35, 45],\n iconAnchor: [17, 42],\n popupAnchor: [1, -32],\n shadowAnchor: [10, 12],\n shadowSize: [36, 16],\n className: 'awesome-marker',\n prefix: 'glyphicon',\n spinClass: 'fa-spin',\n extraClasses: '',\n icon: 'home',\n markerColor: 'blue',\n iconColor: 'white'\n },\n\n initialize: function (options) {\n options = L.Util.setOptions(this, options);\n },\n\n createIcon: function () {\n var div = document.createElement('div'),\n options = this.options;\n\n if (options.icon) {\n div.innerHTML = this._createInner();\n }\n\n if (options.bgPos) {\n div.style.backgroundPosition =\n (-options.bgPos.x) + 'px ' + (-options.bgPos.y) + 'px';\n }\n\n this._setIconStyles(div, 'icon-' + options.markerColor);\n return div;\n },\n\n _createInner: function() {\n var iconClass, iconSpinClass = \"\", iconColorClass = \"\", iconColorStyle = \"\", options = this.options;\n\n if(options.icon.slice(0,options.prefix.length+1) === options.prefix + \"-\") {\n iconClass = options.icon;\n } else {\n iconClass = options.prefix + \"-\" + options.icon;\n }\n\n if(options.spin && typeof options.spinClass === \"string\") {\n iconSpinClass = options.spinClass;\n }\n\n if(options.iconColor) {\n if(options.iconColor === 'white' || options.iconColor === 'black') {\n iconColorClass = \"icon-\" + options.iconColor;\n } else {\n iconColorStyle = \"style='color: \" + options.iconColor + \"' \";\n }\n }\n\n return \"\";\n },\n\n _setIconStyles: function (img, name) {\n var options = this.options,\n size = L.point(options[name === 'shadow' ? 'shadowSize' : 'iconSize']),\n anchor;\n\n if (name === 'shadow') {\n anchor = L.point(options.shadowAnchor || options.iconAnchor);\n } else {\n anchor = L.point(options.iconAnchor);\n }\n\n if (!anchor && size) {\n anchor = size.divideBy(2, true);\n }\n\n img.className = 'awesome-marker-' + name + ' ' + options.className;\n\n if (anchor) {\n img.style.marginLeft = (-anchor.x) + 'px';\n img.style.marginTop = (-anchor.y) + 'px';\n }\n\n if (size) {\n img.style.width = size.x + 'px';\n img.style.height = size.y + 'px';\n }\n },\n\n createShadow: function () {\n var div = document.createElement('div');\n\n this._setIconStyles(div, 'shadow');\n return div;\n }\n });\n \n L.AwesomeMarkers.icon = function (options) {\n return new L.AwesomeMarkers.Icon(options);\n };\n\n}(this, document));\n\n\n\n","/*!\n * perfect-scrollbar v1.5.0\n * Copyright 2020 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n for (var name in this.handlers) {\n this.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nfunction processScrollDiff(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nfunction updateGeometry(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n var rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.ceil(rect.width);\n i.containerHeight = Math.ceil(rect.height);\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nfunction clickRail(i) {\n var element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n\nfunction dragThumb(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n bindMoves(e, true);\n });\n}\n\nfunction keyboard(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n\nfunction wheel(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = (-1 * e.wheelDeltaX) / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for

\n \n Para suporte técnico ou outras questões, por favor, contacte\n hidromod@hidromod.com ou\n visite-nos em\n www.hidromod.com.\n