{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/flot/dist/es5/jquery.flot.js","webpack:///./node_modules/flot/source/jquery.flot.axislabels.js","webpack:///./node_modules/flot/source/jquery.flot.categories.js","webpack:///./node_modules/flot/source/jquery.flot.crosshair.js","webpack:///./node_modules/flot/source/jquery.flot.pie.js","webpack:///./node_modules/flot/source/jquery.flot.resize.js","webpack:///./node_modules/flot/source/jquery.flot.stack.js","webpack:///./webpack/plugins/custom/flot/flot.js"],"names":[],"mappings":"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AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;;AAEnC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB,aAAa;;AAEb;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;;;;ACnND;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kCAAkC,SAAS,qBAAqB,EAAE;;AAElE;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB,2DAA2D;AACpF,yBAAyB,4DAA4D;;AAErF;AACA;AACA,6BAA6B,mFAAmF;AAChH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,oBAAoB,EAAE;;AAExD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;;;;ACzMD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,UAAU,mBAAmB;AAC7B;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,4CAA4C,aAAa,YAAY,EAAE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;;;;ACzMD;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uBAAuB,iBAAiB;AACxC;;AAEA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;;AAEA,uBAAuB,iBAAiB;AACxC;AACA;;AAEA;AACA,yBAAyB;;AAEzB,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yEAAyE;AACzE;;AAEA;AACA;AACA;AACA,qCAAqC;AACrC;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,iBAAiB;;AAE1D;AACA;;AAEA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA,yCAAyC;AACzC;;AAEA,6DAA6D;AAC7D;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+GAA+G,gBAAgB,iBAAiB;AAChJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,8DAA8D,yBAAyB;AACvF,wFAAwF,8BAA8B,gCAAgC,sCAAsC;AAC5L;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,mEAAmE,SAAS;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA,qCAAqC;AACrC,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B,uBAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iCAAiC,wBAAwB;AACzD;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B,uBAAuB;AAClD;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qGAAqG;AACrG;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,8DAA8D,kBAAkB,YAAY,0BAA0B;AACtH,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;;;;ACjxBD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY,wCAAwC,+GAA+G,SAAS,QAAQ,UAAU,oBAAoB,iBAAiB,mBAAmB,aAAa,cAAc,aAAa,UAAU,yBAAyB,EAAE,iBAAiB,IAAI,KAAK,qBAAqB,mBAAmB,aAAa,cAAc,qBAAqB,KAAK,KAAK,eAAe,cAAc,OAAO,gBAAgB,cAAc,MAAM,wBAAwB,KAAK,gBAAgB,QAAQ,iBAAiB,mBAAmB,aAAa,MAAM,kBAAkB,8BAA8B,sBAAsB,uBAAuB,wBAAwB,oBAAoB,IAAI,SAAS,KAAK,YAAY,eAAe,cAAc,aAAa,OAAO,qBAAqB,KAAK,KAAK,cAAc,8BAA8B,yCAAyC,0BAA0B,2BAA2B,WAAW,KAAK,YAAY,MAAM,OAAO,aAAa,0BAA0B,6BAA6B,KAAK,qBAAqB,UAAU,6BAA6B,mCAAmC,qIAAqI,+BAA+B,wBAAwB,QAAQ,GAAG,4BAA4B,kCAAkC,4JAA4J,IAAI;;AAE3nD;AACA;AACA,mBAAmB,GAAG;;AAEtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;;;;AC3DD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,iBAAiB,cAAc;AAC/B;;AAEA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2BAA2B,8BAA8B;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA,+BAA+B,QAAQ;AACvC;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,QAAQ;AAC3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,QAAQ;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;;;;AC3ND;;AAEA,mBAAO,CAAC,iFAA8B;AACtC,mBAAO,CAAC,2FAAmC;AAC3C,mBAAO,CAAC,mGAAuC;AAC/C,mBAAO,CAAC,qFAAgC;AACxC,mBAAO,CAAC,yFAAkC;AAC1C,mBAAO,CAAC,iGAAsC;AAC9C,mBAAO,CAAC,mGAAuC","file":"plugins/custom/flot/flot.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./webpack/plugins/custom/flot/flot.js\");\n","\"use strict\";function _typeof(t){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function _typeof(t){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}!function(r){var t=function(t,e){var n=e.getElementsByClassName(t)[0];if(!n&&((n=document.createElement(\"canvas\")).className=t,n.style.direction=\"ltr\",n.style.position=\"absolute\",n.style.left=\"0px\",n.style.top=\"0px\",e.appendChild(n),!n.getContext))throw new Error(\"Canvas is not available.\");this.element=n;var o=this.context=n.getContext(\"2d\");this.pixelRatio=r.plot.browser.getPixelRatio(o);var i=r(e).width(),a=r(e).height();this.resize(i,a),this.SVGContainer=null,this.SVG={},this._textCache={}};function f(e,t){e.transform.baseVal.clear(),t&&t.forEach(function(t){e.transform.baseVal.appendItem(t)})}t.prototype.resize=function(t,e){t=t<10?10:t,e=e<10?10:e;var n=this.element,o=this.context,i=this.pixelRatio;this.width!==t&&(n.width=t*i,n.style.width=t+\"px\",this.width=t),this.height!==e&&(n.height=e*i,n.style.height=e+\"px\",this.height=e),o.restore(),o.save(),o.scale(i,i)},t.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)},t.prototype.render=function(){var t=this._textCache;for(var e in t)if(hasOwnProperty.call(t,e)){var n=this.getSVGLayer(e),o=t[e],i=n.style.display;for(var a in n.style.display=\"none\",o)if(hasOwnProperty.call(o,a)){var r=o[a];for(var s in r)if(hasOwnProperty.call(r,s)){for(var l,c=r[s],u=c.positions,p=0;u[p];p++)if((l=u[p]).active)l.rendered||(n.appendChild(l.element),l.rendered=!0);else if(u.splice(p--,1),l.rendered){for(;l.element.firstChild;)l.element.removeChild(l.element.firstChild);l.element.parentNode.removeChild(l.element)}0===u.length&&(c.measured?c.measured=!1:delete r[s])}}n.style.display=i}},t.prototype.getSVGLayer=function(t){var e,n=this.SVG[t];n||(this.SVGContainer?e=this.SVGContainer.firstChild:(this.SVGContainer=document.createElement(\"div\"),this.SVGContainer.className=\"flot-svg\",this.SVGContainer.style.position=\"absolute\",this.SVGContainer.style.top=\"0px\",this.SVGContainer.style.left=\"0px\",this.SVGContainer.style.height=\"100%\",this.SVGContainer.style.width=\"100%\",this.SVGContainer.style.pointerEvents=\"none\",this.element.parentNode.appendChild(this.SVGContainer),(e=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\")).style.width=\"100%\",e.style.height=\"100%\",this.SVGContainer.appendChild(e)),(n=document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\")).setAttribute(\"class\",t),n.style.position=\"absolute\",n.style.top=\"0px\",n.style.left=\"0px\",n.style.bottom=\"0px\",n.style.right=\"0px\",e.appendChild(n),this.SVG[t]=n);return n},t.prototype.getTextInfo=function(t,e,n,o,i){var a,r,s,l;e=\"\"+e,a=\"object\"===_typeof(n)?n.style+\" \"+n.variant+\" \"+n.weight+\" \"+n.size+\"px/\"+n.lineHeight+\"px \"+n.family:n,null==(r=this._textCache[t])&&(r=this._textCache[t]={}),null==(s=r[a])&&(s=r[a]={});var c=e.replace(/0|1|2|3|4|5|6|7|8|9/g,\"0\");if(!(l=s[c])){var u=document.createElementNS(\"http://www.w3.org/2000/svg\",\"text\");if(-1!==e.indexOf(\"
\"))m(e,u,-9999);else{var p=document.createTextNode(e);u.appendChild(p)}u.style.position=\"absolute\",u.style.maxWidth=i,u.setAttributeNS(null,\"x\",-9999),u.setAttributeNS(null,\"y\",-9999),\"object\"===_typeof(n)?(u.style.font=a,u.style.fill=n.fill):\"string\"==typeof n&&u.setAttribute(\"class\",n),this.getSVGLayer(t).appendChild(u);var h=u.getBBox();for(l=s[c]={width:h.width,height:h.height,measured:!0,element:u,positions:[]};u.firstChild;)u.removeChild(u.firstChild);u.parentNode.removeChild(u)}return l.measured=!0,l},t.prototype.addText=function(t,e,n,o,i,a,r,s,l,c){var u=this.getTextInfo(t,o,i,a,r),p=u.positions;\"center\"===s?e-=u.width/2:\"right\"===s&&(e-=u.width),\"middle\"===l?n-=u.height/2:\"bottom\"===l&&(n-=u.height),n+=.75*u.height;for(var h,d=0;p[d];d++){if((h=p[d]).x===e&&h.y===n&&h.text===o)return h.active=!0,void f(h.element,c);if(!1===h.active)return h.active=!0,-1!==(h.text=o).indexOf(\"
\")?(n-=.25*u.height,m(o,h.element,e)):h.element.textContent=o,h.element.setAttributeNS(null,\"x\",e),h.element.setAttributeNS(null,\"y\",n),h.x=e,h.y=n,void f(h.element,c)}h={active:!0,rendered:!1,element:p.length?u.element.cloneNode():u.element,text:o,x:e,y:n},p.push(h),-1!==o.indexOf(\"
\")?(n-=.25*u.height,m(o,h.element,e)):h.element.textContent=o,h.element.setAttributeNS(null,\"x\",e),h.element.setAttributeNS(null,\"y\",n),h.element.style.textAlign=s,f(h.element,c)};var m=function(t,e,n){var o,i,a,r=t.split(\"
\");for(i=0;il.xmax&&(l.xmax=p)),!0===h.y&&(pl.ymax&&(l.ymax=p))))}return l},M.adjustSeriesDataRange=function(t,e){if(t.bars.show){var n,o=t.bars.barWidth[1];t.datapoints&&t.datapoints.points&&!o&&function(t){var e=[],n=t.datapoints.pointsize,o=Number.MAX_VALUE;t.datapoints.points.length<=n&&(o=1);for(var i=t.bars.horizontal?1:0;it.datamax&&n!==1/0&&(t.datamax=n)}function g(t,e){return t&&t[e]&&t[e].datapoints&&t[e].datapoints.points?t[e].datapoints.points:[]}for(J.each(L(),function(t,e){!0!==e.options.growOnly?(e.datamin=d,e.datamax=f):(void 0===e.datamin&&(e.datamin=d),void 0===e.datamax&&(e.datamax=f)),e.used=!1}),e=0;eo.max?d:(l=x.getTextInfo(p,t.label,h),\"x\"===o.direction?(r=\"center\",i=b.left+o.p2c(t.v),\"bottom\"===o.position?a=u.top+u.padding-o.boxPosition.centerY:(a=u.top+u.height-u.padding+o.boxPosition.centerY,s=\"bottom\")):(s=\"middle\",a=b.top+o.p2c(t.v),\"left\"===o.position?(i=u.left+u.width-u.padding-o.boxPosition.centerX,r=\"right\"):i=u.left+u.padding+o.boxPosition.centerX),c={x:i-l.width/2-3,y:a-3,width:l.width+6,height:l.height+6},n=c,e.some(function(t){return m(n.x,n.y,n.x+n.width,n.y+n.height,t.x,t.y,t.x+t.width,t.y+t.height)})?d:(x.addText(p,i,a,t.label,h,null,null,r,s),c));var n};if(x.removeText(p),P(k.drawAxis,[o,x]),o.show)switch(o.options.showTickLabels){case\"none\":break;case\"endpoints\":f.push(g(o.ticks[0],f)),f.push(g(o.ticks[o.ticks.length-1],f));break;case\"major\":for(f.push(g(o.ticks[0],f)),f.push(g(o.ticks[o.ticks.length-1],f)),e=1;e=t.min&&c<=t.max&&(\"x\"===t.direction?(a=t.p2c(c),p=e,\"top\"===t.position&&(p=-p)):(r=t.p2c(c),u=e,\"left\"===t.position&&(u=-u)),\"x\"===t.direction?a=X(g.lineWidth,a):r=X(g.lineWidth,r),g.moveTo(a,r),g.lineTo(a+u,r+p)),!0===n&&st.max||(n=i,void 0,o=f.grid.borderWidth,(!(\"object\"===_typeof(o)&&0i.axis.max||a.toa.axis.max)){i.from=Math.max(i.from,i.axis.min),i.to=Math.min(i.to,i.axis.max),a.from=Math.max(a.from,a.axis.min),a.to=Math.min(a.to,a.axis.max);var r=i.from===i.to,s=a.from===a.to;if(!r||!s)if(i.from=Math.floor(i.axis.p2c(i.from)),i.to=Math.floor(i.axis.p2c(i.to)),a.from=Math.floor(a.axis.p2c(a.from)),a.to=Math.floor(a.axis.p2c(a.to)),r||s){var l=o.lineWidth||f.grid.markingsLineWidth,c=l%2?.5:0;g.beginPath(),g.strokeStyle=o.color||f.grid.markingsColor,g.lineWidth=l,r?(g.moveTo(i.to+c,a.from),g.lineTo(i.to+c,a.to)):(g.moveTo(i.from,a.to+c),g.lineTo(i.to,a.to+c)),g.stroke()}else g.fillStyle=o.color||f.grid.markingsColor,g.fillRect(i.from,a.to,i.to-i.from,a.from-a.to)}}}(),t=L(),e=f.grid.borderWidth;for(var i=0;it.yaxis.min?Math.min(t.yaxis.max,u):t.yaxis.min,h=-1,d=0;d=Math.min(p,f)&&m+o<=s&&s<=m+i:f+o<=r&&r<=f+i&&s>=Math.min(p,m)&&s<=Math.max(p,m))&&(h=d/c))}return h}function U(){var t=f.interaction.redrawOverlayInterval;-1!==t?s||(s=setTimeout(function(){Q(M)},t)):Q()}function Q(t){if(s=null,a){n.clear(),P(k.drawOverlay,[a,n]);var e=new CustomEvent(\"onDrawingDone\");t.getEventHolder().dispatchEvent(e),t.getPlaceholder().trigger(\"drawingdone\")}}function Z(t,e,n,o){if(\"string\"==typeof t)return t;for(var i=g.createLinearGradient(0,n,0,e),a=0,r=t.colors.length;ar.max||vs.max||(mr.max&&(g=r.max,h=!1),xs.max&&(v=s.max,d=!1),m=r.p2c(m),x=s.p2c(x),g=r.p2c(g),v=s.p2c(v),a&&(l.fillStyle=a(x,v),l.fillRect(m,v,g-m,x-v)),0n.min?Math.min(n.max,o):n.min,c=0,u=1,p=!1,h=0,d=0,f=null,m=null;!(0r.length+s);){var g=r[(c+=s)-s],x=r[c-s+u],v=r[c],b=r[c+u];if(-2===s&&(x=b=l),p){if(0e.max){if(v>e.max)continue;x=(e.max-g)/(v-g)*(b-x)+x,g=e.max}else if(g<=v&&v>e.max){if(g>e.max)continue;b=(e.max-g)/(v-g)*(b-x)+x,v=e.max}if(p||(i.beginPath(),i.moveTo(e.p2c(g),n.p2c(l)),p=!0),x>=n.max&&b>=n.max)i.lineTo(e.p2c(g),n.p2c(n.max)),i.lineTo(e.p2c(v),n.p2c(n.max));else if(x<=n.min&&b<=n.min)i.lineTo(e.p2c(g),n.p2c(n.min)),i.lineTo(e.p2c(v),n.p2c(n.min));else{var y=g,w=v;x<=b&&x=n.min?(g=(n.min-x)/(b-x)*(v-g)+g,x=n.min):b<=x&&b=n.min&&(v=(n.min-x)/(b-x)*(v-g)+g,b=n.min),b<=x&&x>n.max&&b<=n.max?(g=(n.max-x)/(b-x)*(v-g)+g,x=n.max):x<=b&&b>n.max&&x<=n.max&&(v=(n.max-x)/(b-x)*(v-g)+g,b=n.max),g!==y&&i.lineTo(e.p2c(y),n.p2c(x)),i.lineTo(e.p2c(g),n.p2c(x)),i.lineTo(e.p2c(v),n.p2c(b)),v!==w&&(i.lineTo(e.p2c(v),n.p2c(b)),i.lineTo(e.p2c(w),n.p2c(b)))}}else m=f=null}}(s,t.xaxis,t.yaxis,t.lines.fillTowards||0,e,t.lines.steps)),0i.max){if(f>i.max)continue;p=(i.max-h)/(f-h)*(d-p)+p,h=i.max}else if(h<=f&&f>i.max){if(h>i.max)continue;d=(i.max-h)/(f-h)*(d-p)+p,f=i.max}if(p<=d&&po.max){if(d>o.max)continue;h=(o.max-p)/(d-p)*(f-h)+h,p=o.max}else if(p<=d&&d>o.max){if(p>o.max)continue;f=(o.max-p)/(d-p)*(f-h)+h,d=o.max}p===c&&h===u||a.moveTo(o.p2c(p)+e,i.p2c(h)+n),c=d,u=f,a.lineTo(o.p2c(d)+e,i.p2c(f)+n)}else g=m=null;a.stroke()}(s,0,0,t.xaxis,t.yaxis,e,t.lines.steps),e.restore()},this.drawSeriesPoints=function(t,d,e,n,o,i,a){function r(t,e,n,o,i,a){t.moveTo(e+o,n),t.arc(e,n,o,0,i?Math.PI:2*Math.PI,!1)}r.fill=!0,d.save(),d.translate(e.left,e.top);var s={format:t.datapoints.format,points:t.datapoints.points,pointsize:t.datapoints.pointsize};t.decimatePoints&&(s.points=t.decimatePoints(t,t.xaxis.min,t.xaxis.max,n,t.yaxis.min,t.yaxis.max,o));var l,c=t.points.lineWidth,u=t.points.radius,p=t.points.symbol;\"circle\"===p?l=r:\"string\"==typeof p&&i&&i[p]?l=i[p]:\"function\"==typeof i&&(l=i),0===c&&(c=1e-4),d.lineWidth=c,d.fillStyle=m(t.points,t.color,null,null,a),d.strokeStyle=t.color,function(t,e,n,o,i,a,r,s){var l=t.points,c=t.pointsize;d.beginPath();for(var u=0;ua.max||hr.max||(p=a.p2c(p),h=r.p2c(h)+o,s(d,p,h,e,i,n))}s.fill&&!i&&d.fill(),d.stroke()}(s,u,!0,0,!1,t.xaxis,t.yaxis,l),d.restore()},this.drawSeriesBars=function(h,d,t,e,n,o,i){d.save(),d.translate(t.left,t.top);var a,r={format:h.datapoints.format,points:h.datapoints.points,pointsize:h.datapoints.pointsize};h.decimate&&(r.points=h.decimate(h,h.xaxis.min,h.xaxis.max,e)),d.lineWidth=h.bars.lineWidth,d.strokeStyle=h.color;var s=h.bars.barWidth[0]||h.bars.barWidth;switch(h.bars.align){case\"left\":a=0;break;case\"right\":a=-s;break;default:a=-s/2}!function(t,e,n,o,i,a){for(var r=t.points,s=t.pointsize,l=h.bars.fillTowards||0,c=l>a.min?Math.min(a.max,l):a.min,u=0;ur[1].max||gr[0].max))continue;if(\"y\"===l[d].err&&(m>r[0].max||mr[1].max))continue;var b=!0,y=!0;x>f[1]&&(b=!1,x=f[1]),v=f?d={pixelCoord:p,idealPixelCoord:d.idealPixelCoord-f}:h=null,h&&o.push(h);o.reverse()}else{var g=t.computeTickSize(l,c,n),x={min:l,max:c,tickSize:g};o=v.plot.linearTickGenerator(x)}return o},w=function(t,e){var n=t.min,o=t.max;return n<=0&&o<(n=null===t.datamin?t.min=.1:h(e,t))&&(t.max=null!==t.datamax?t.datamax:t.options.max,t.options.offset.below=0,t.options.offset.above=0),n},a=function(t,e,n){var o=0e.left&&a.lefte.top&&a.tope.left&&n.lefte.top&&n.top=N||Math.abs(r.x)=N),b=y.getAxes();o=n?function(t){switch(!k&&Math.max(Math.abs(t.x),Math.abs(t.y))>=N&&(k=Math.abs(t.x)=N?{x:0,y:s.y}:Math.abs(s.y)=N?{x:s.x,y:0}:s),l=o,0e.left&&n.lefte.top&&n.top=e.length?null:e[t.fillBetween]:null}(e,t.getData());if(o){for(var i,a,r,s,l,c,u,p,h=n.pointsize,d=n.points,f=o.datapoints.pointsize,m=o.datapoints.points,g=[],x=e.lines.show,v=2=d.length);){if(u=g.length,null==d[w]){for(p=0;p=m.length){if(!x)for(p=0;p=t.min&&o<=t.max&&e.push([o,n])}return e.sort(function(t,e){return t[0]-e[0]}),e}function o(t,e,n){if(\"categories\"===t[e].options.mode){if(!t[e].categories){var o={},i=t[e].options.categories||{};if(s.isArray(i))for(var a=0;ae&&(e=t[n]);return e+1}(n),l=0;l=m.length);){if(h=v.length,null==m[S]){for(d=0;d=x.length){if(!b)for(d=0;dm)&&(e=c,n=h,o=d,i=(t=u).offset(),a={left:0,top:0},r=x(e)/n.prevDistance,s=x(e),a.left=y(e,\"pinch\").x-i.left,a.top=y(e,\"pinch\").y-i.top,t.zoom({center:a,amount:r,axes:o.touchedAxis}),n.prevDistance=s,h.zoomEnable=!0),p=null},1e3/60))},end:function(t){p&&(clearTimeout(p),p=null),f(t,\"pinch\",h),h.prevDistance=null}},a={recenterPlot:function(t){t&&t.detail&&\"touchstart\"===t.detail.type&&function(t,e,n,o){if(a=t,r=e,s=o,l=a.getTouchedAxis(r.detail.firstTouch.x,r.detail.firstTouch.y),void 0!==l[0]&&(s.prevTouchedAxis=l[0].direction),void 0!==(l=a.getTouchedAxis(r.detail.secondTouch.x,r.detail.secondTouch.y))[0]&&(s.touchedAxis=l,s.currentTouchedAxis=l[0].direction),g(s)&&(s.touchedAxis=null,s.prevTouchedAxis=\"none\",s.currentTouchedAxis=\"none\"),\"x\"===o.currentTouchedAxis&&\"x\"===o.prevTouchedAxis||\"y\"===o.currentTouchedAxis&&\"y\"===o.prevTouchedAxis||\"none\"===o.currentTouchedAxis&&\"none\"===o.prevTouchedAxis){var i;t.recenter({axes:o.touchedAxis}),i=o.touchedAxis?new c.Event(\"re-center\",{detail:{axisTouched:o.touchedAxis}}):new c.Event(\"re-center\",{detail:e}),t.getPlaceholder().trigger(i)}var a,r,s,l}(u,t,0,d)}},!0!==t.pan.enableTouch&&!0!==t.zoom.enableTouch||(u.hooks.bindEvents.push(function(t,e){var n=t.getOptions();n.zoom.interactive&&n.zoom.enableTouch&&(e[0].addEventListener(\"pinchstart\",i.start,!1),e[0].addEventListener(\"pinchdrag\",i.drag,!1),e[0].addEventListener(\"pinchend\",i.end,!1)),n.pan.interactive&&n.pan.enableTouch&&(e[0].addEventListener(\"panstart\",o.start,!1),e[0].addEventListener(\"pandrag\",o.drag,!1),e[0].addEventListener(\"panend\",o.end,!1)),n.recenter.interactive&&n.recenter.enableTouch&&e[0].addEventListener(\"doubletap\",a.recenterPlot,!1)}),u.hooks.shutdown.push(function(t,e){e[0].removeEventListener(\"panstart\",o.start),e[0].removeEventListener(\"pandrag\",o.drag),e[0].removeEventListener(\"panend\",o.end),e[0].removeEventListener(\"pinchstart\",i.start),e[0].removeEventListener(\"pinchdrag\",i.drag),e[0].removeEventListener(\"pinchend\",i.end),e[0].removeEventListener(\"doubletap\",a.recenterPlot)}))}function g(t){return!t.touchedAxis||0===t.touchedAxis.length}function l(t,e,n,o){var i,a=y(t,e);switch(o.navigationConstraint){case\"unconstrained\":o.touchedAxis=null,n.prevTapPosition={x:n.prevPanPosition.x,y:n.prevPanPosition.y},n.prevPanPosition={x:a.x,y:a.y};break;case\"axisConstrained\":i=o.touchedAxis[0].direction,o.currentTouchedAxis=i,n.prevTapPosition[i]=n.prevPanPosition[i],n.prevPanPosition[i]=a[i]}}function x(t){var e,n,o,i,a=t.detail.touches[0],r=t.detail.touches[1];return e=a.pageX,n=a.pageY,o=r.pageX,i=r.pageY,Math.sqrt((e-o)*(e-o)+(n-i)*(n-i))}function v(t,e,n,o){var i=y(t,e);switch(o.navigationConstraint){case\"unconstrained\":n.prevPanPosition.x=i.x,n.prevPanPosition.y=i.y;break;case\"axisConstrained\":n.prevPanPosition[o.currentTouchedAxis]=i[o.currentTouchedAxis]}}function b(t,e,n){var o=y(t,e);return{x:o.x-n.prevPanPosition.x,y:o.y-n.prevPanPosition.y}}function y(t,e){return\"pinch\"===e?{x:(t.detail.touches[0].pageX+t.detail.touches[1].pageX)/2,y:(t.detail.touches[0].pageY+t.detail.touches[1].pageY)/2}:{x:t.detail.touches[0].pageX,y:t.detail.touches[0].pageY}}c.plot.plugins.push({init:function(t){t.hooks.processOptions.push(e)},options:{zoom:{enableTouch:!1},pan:{enableTouch:!1,touchMode:\"manual\"},recenter:{enableTouch:!0}},name:\"navigateTouch\",version:\"0.3\"})}(jQuery),function(y){var w=y.plot.browser,e=\"click\",T=\"hover\";y.plot.plugins.push({init:function(f){var n,m=[];function o(t){var e=f.getOptions(),n=new CustomEvent(\"mouseevent\");return n.pageX=t.detail.changedTouches[0].pageX,n.pageY=t.detail.changedTouches[0].pageY,n.clientX=t.detail.changedTouches[0].clientX,n.clientY=t.detail.changedTouches[0].clientY,e.grid.hoverable&&i(n,T,30),!1}function i(t,e,n){var o=f.getData();if(void 0!==t&&0r.max||as.max)){var c=t.points.radius+t.points.lineWidth/2;n.lineWidth=c,n.strokeStyle=l;var u=1.5*c;i=r.p2c(i),a=s.p2c(a),n.beginPath();var p=t.points.symbol;\"circle\"===p?n.arc(i,a,u,0,2*Math.PI,!1):\"string\"==typeof p&&o.drawSymbol&&o.drawSymbol[p]&&o.drawSymbol[p](n,i,a,u,!1),n.closePath(),n.stroke()}}function b(t,e,n){var o,i=\"string\"==typeof t.highlightColor?t.highlightColor:y.color.parse(t.color).scale(\"a\",.5).toString(),a=i,r=t.bars.barWidth[0]||t.bars.barWidth;switch(t.bars.align){case\"left\":o=0;break;case\"right\":o=-r;break;default:o=-r/2}n.lineWidth=t.bars.lineWidth,n.strokeStyle=i;var s=t.bars.fillTowards||0,l=s>t.yaxis.min?Math.min(t.yaxis.max,s):t.yaxis.min;y.plot.drawSeries.drawBar(e[0],e[1],e[2]||l,o,o+r,function(){return a},t.xaxis,t.yaxis,n,t.bars.horizontal,t.bars.lineWidth)}f.hooks.bindEvents.push(function(t,e){var n=t.getOptions();(n.grid.hoverable||n.grid.clickable)&&(e[0].addEventListener(\"touchevent\",l,!1),e[0].addEventListener(\"tap\",o,!1)),n.grid.clickable&&e.bind(\"click\",s),n.grid.hoverable&&(e.bind(\"mousemove\",a),e.bind(\"mouseleave\",r))}),f.hooks.shutdown.push(function(t,e){e[0].removeEventListener(\"tap\",o),e[0].removeEventListener(\"touchevent\",l),e.unbind(\"mousemove\",a),e.unbind(\"mouseleave\",r),e.unbind(\"click\",s),m=[]}),f.hooks.processOptions.push(function(t,e){t.highlight=g,t.unhighlight=x,(e.grid.hoverable||e.grid.clickable)&&(t.hooks.drawOverlay.push(d),t.hooks.processDatapoints.push(p),t.hooks.setupGrid.push(h)),n=t.getPlaceholder()[0].lastMouseMoveEvent})},options:{grid:{hoverable:!1,clickable:!1}},name:\"hover\",version:\"0.1\"})}(jQuery),function(t){function e(n,t){var o,i={twoTouches:!1,currentTapStart:{x:0,y:0},currentTapEnd:{x:0,y:0},prevTap:{x:0,y:0},currentTap:{x:0,y:0},interceptedLongTap:!1,isUnsupportedGesture:!1,prevTapTime:null,tapStartTime:null,longTapTriggerId:null},a=20,r=500;function s(t){var e=n.getOptions();(e.pan.active||e.zoom.active)&&(3<=t.touches.length?i.isUnsupportedGesture=!0:i.isUnsupportedGesture=!1,o.dispatchEvent(new CustomEvent(\"touchevent\",{detail:t})),v(t)?l(t,\"pinch\"):(l(t,\"pan\"),x(t)||(function(t){var e=(new Date).getTime(),n=e-i.prevTapTime;if(0<=n&&n=a);++s);var l=r[s][0],c=r[s][1];if(\"year\"===c){if(null!==n.minTickSize&&void 0!==n.minTickSize&&\"year\"===n.minTickSize[1])l=Math.floor(n.minTickSize[0]);else{var u=parseFloat(\"1e\"+Math.floor(Math.log(t.delta/e.year)/Math.LN10)),p=t.delta/e.year/u;l=p<1.5?1:p<3?2:p<7.5?5:10,l*=u}l<1&&(l=1)}t.tickSize=n.tickSize||[l,c];var h=t.tickSize[0],d=h*e[c=t.tickSize[1]];\"microsecond\"===c?i.setMicroseconds(y(i.getMicroseconds(),h)):\"millisecond\"===c?i.setMilliseconds(y(i.getMilliseconds(),h)):\"second\"===c?i.setSeconds(y(i.getSeconds(),h)):\"minute\"===c?i.setMinutes(y(i.getMinutes(),h)):\"hour\"===c?i.setHours(y(i.getHours(),h)):\"month\"===c?i.setMonth(y(i.getMonth(),h)):\"quarter\"===c?i.setMonth(3*y(i.getMonth()/3,h)):\"year\"===c&&i.setFullYear(y(i.getFullYear(),h)),d>=e.millisecond&&(d>=e.second?i.setMicroseconds(0):i.setMicroseconds(1e3*i.getMilliseconds())),d>=e.minute&&i.setSeconds(0),d>=e.hour&&i.setMinutes(0),d>=e.day&&i.setHours(0),d>=4*e.day&&i.setDate(1),d>=2*e.month&&i.setMonth(y(i.getMonth(),3)),d>=2*e.quarter&&i.setMonth(y(i.getMonth(),6)),d>=e.year&&i.setMonth(0);var f,m,g=0,x=Number.NaN;do{if(m=x,f=i.getTime(),x=n&&\"seconds\"===n.timeBase?f/1e3:n&&\"microseconds\"===n.timeBase?1e3*f:f,o.push(x),\"month\"===c||\"quarter\"===c)if(h<1){i.setDate(1);var v=i.getTime();i.setMonth(i.getMonth()+(\"quarter\"===c?3:1));var b=i.getTime();i.setTime(x+g*e.hour+(b-v)*h),g=i.getHours(),i.setHours(0)}else i.setMonth(i.getMonth()+h*(\"quarter\"===c?3:1));else\"year\"===c?i.setFullYear(i.getFullYear()+h):\"seconds\"===n.timeBase?i.setTime(1e3*(x+d)):\"microseconds\"===n.timeBase?i.setTime((x+d)/1e3):i.setTime(x+d)}while(x=t&&Math.abs(T.second.y-T.first.y)>=t}c.clearSelection=h,c.setSelection=function(t,e){var n;\"y\"===k(c)?(T.first.x=0,T.second.x=c.width()):(n=d(t,\"x\"),T.first.x=n.axis.p2c(n.from),T.second.x=n.axis.p2c(n.to)),\"x\"===k(c)?(T.first.y=0,T.second.y=c.height()):(n=d(t,\"y\"),T.first.y=n.axis.p2c(n.from),T.second.y=n.axis.p2c(n.to)),T.show=!0,c.triggerRedrawOverlay(),!e&&M()&&s()},c.getSelection=e,c.hooks.bindEvents.push(function(t,e){null!=t.getOptions().selection.mode&&(t.addEventHandler(\"dragstart\",a,e,0),t.addEventHandler(\"drag\",o,e,0),t.addEventHandler(\"dragend\",r,e,0))}),c.hooks.drawOverlay.push(function(t,e){if(T.show&&M()){var n=t.getPlotOffset(),o=t.getOptions();e.save(),e.translate(n.left,n.top);var i=S.color.parse(o.selection.color),a=o.selection.visualization,r=1;\"fill\"===a&&(r=.8),e.strokeStyle=i.scale(\"a\",r).toString(),e.lineWidth=1,e.lineJoin=o.selection.shape,e.fillStyle=i.scale(\"a\",.4).toString();var s=Math.min(T.first.x,T.second.x)+.5,l=s,c=Math.min(T.first.y,T.second.y)+.5,u=c,p=Math.abs(T.second.x-T.first.x)-1,h=Math.abs(T.second.y-T.first.y)-1;\"x\"===k(t)&&(h+=c,c=0),\"y\"===k(t)&&(p+=s,s=0),\"fill\"===a?(e.fillRect(s,c,p,h),e.strokeRect(s,c,p,h)):(e.fillRect(0,0,t.width(),t.height()),e.clearRect(s,c,p,h),d=e,f=s,m=c,g=p,x=h,v=l,b=u,y=k(t),w=Math.max(0,Math.min(15,g/2-2,x/2-2)),d.fillStyle=\"#ffffff\",\"xy\"===y&&(d.beginPath(),d.moveTo(f,m+w),d.lineTo(f-3,m+w),d.lineTo(f-3,m-3),d.lineTo(f+w,m-3),d.lineTo(f+w,m),d.lineTo(f,m),d.closePath(),d.moveTo(f,m+x-w),d.lineTo(f-3,m+x-w),d.lineTo(f-3,m+x+3),d.lineTo(f+w,m+x+3),d.lineTo(f+w,m+x),d.lineTo(f,m+x),d.closePath(),d.moveTo(f+g,m+w),d.lineTo(f+g+3,m+w),d.lineTo(f+g+3,m-3),d.lineTo(f+g-w,m-3),d.lineTo(f+g-w,m),d.lineTo(f+g,m),d.closePath(),d.moveTo(f+g,m+x-w),d.lineTo(f+g+3,m+x-w),d.lineTo(f+g+3,m+x+3),d.lineTo(f+g-w,m+x+3),d.lineTo(f+g-w,m+x),d.lineTo(f+g,m+x),d.closePath(),d.stroke(),d.fill()),f=v,m=b,\"x\"===y&&(d.beginPath(),d.moveTo(f,m+15),d.lineTo(f,m-15),d.lineTo(f-3,m-15),d.lineTo(f-3,m+15),d.closePath(),d.moveTo(f+g,m+15),d.lineTo(f+g,m-15),d.lineTo(f+g+3,m-15),d.lineTo(f+g+3,m+15),d.closePath(),d.stroke(),d.fill()),\"y\"===y&&(d.beginPath(),d.moveTo(f-15,m),d.lineTo(f+15,m),d.lineTo(f+15,m-3),d.lineTo(f-15,m-3),d.closePath(),d.moveTo(f-15,m+x),d.lineTo(f+15,m+x),d.lineTo(f+15,m+x+3),d.lineTo(f-15,m+x+3),d.closePath(),d.stroke(),d.fill())),e.restore()}var d,f,m,g,x,v,b,y,w}),c.hooks.shutdown.push(function(t,e){e.unbind(\"dragstart\",a),e.unbind(\"drag\",o),e.unbind(\"dragend\",r)})},options:{selection:{mode:null,visualization:\"focus\",color:\"#888888\",shape:\"round\",minSize:5}},name:\"selection\",version:\"1.1\"})}(jQuery),function(t){var e=-100,c=0,u=-1,p=-2,h=1,g=t.plot.browser,a=g.getPixelRatio;function n(t,e){var n=t.filter(r);h=a(e.getContext(\"2d\"));var o,i=n.map(function(t){var f,m,e=new Image;return new Promise((m=t,(f=e).sourceDescription='',f.sourceComponent=m,function(e,t){var n,o,i,a,r,s,l,c,u,p,h,d;f.onload=function(t){f.successfullyLoaded=!0,e(f)},f.onabort=function(t){f.successfullyLoaded=!1,console.log(\"Can't generate temp image from \"+f.sourceDescription+\". It is possible that it is missing some properties or its content is not supported by this browser. Source component:\",f.sourceComponent),e(f)},f.onerror=function(t){f.successfullyLoaded=!1,console.log(\"Can't generate temp image from \"+f.sourceDescription+\". It is possible that it is missing some properties or its content is not supported by this browser. Source component:\",f.sourceComponent),e(f)},o=f,\"CANVAS\"===(n=m).tagName&&(i=n,o.src=i.toDataURL(\"image/png\")),\"svg\"===n.tagName&&(a=n,r=o,g.isSafari()||g.isMobileSafari()?(s=a,l=r,p=b(p=v(x(document),s)),u=function(t){for(var e=\"\",n=new Uint8Array(t),o=0;ot[l].genLeft&&(i=t[l].genLeft),a>t[l].genTop&&(a=t[l].genTop);for(l=1;l',\"\",e.innerHTML,\"\"].join(\"\\n\")}function b(t){var e=\"\";return t.match(/^]+xmlns=\"http:\\/\\/www\\.w3\\.org\\/2000\\/svg\"/)||(e=t.replace(/^]+\"http:\\/\\/www\\.w3\\.org\\/1999\\/xlink\"/)||(e=t.replace(/^\\r\\n'+e}function s(){return e}t.plot.composeImages=n,t.plot.plugins.push({init:function(t){t.composeImages=n},name:\"composeImages\",version:\"1.0\"})}(jQuery),function(M){function S(t){var e=\"\",n=t.name,o=t.xPos,i=t.yPos,a=t.fillColor,r=t.strokeColor,s=t.strokeWidth;switch(n){case\"circle\":e='';break;case\"diamond\":e='';break;case\"cross\":e='';break;case\"rectangle\":e='';break;case\"plus\":e='';break;case\"bar\":e='';break;case\"area\":e='';break;case\"line\":e='';break;default:e=''}return e}var C='';function l(t,e){for(var n in t)if(t.hasOwnProperty(n)&&t[n]!==e[n])return!0;return!1}M.plot.plugins.push({init:function(t){t.hooks.setupGrid.push(function(t){var e=t.getOptions(),n=t.getData(),o=e.legend.labelFormatter,i=e.legend.legendEntries,a=e.legend.plotOffset,r=function(t,e,n){var a=e,o=t.reduce(function(t,e,n){var o=a?a(e.label,e):e.label;if(!e.hasOwnProperty(\"label\")||o){var i={label:o||\"Plot \"+(n+1),color:e.color,options:{lines:e.lines,points:e.points,bars:e.bars}};t.push(i)}return t},[]);if(n)if(M.isFunction(n))o.sort(n);else if(\"reverse\"===n)o.reverse();else{var i=\"descending\"!==n;o.sort(function(t,e){return t.label===e.label?0:t.label',u[p++]='',u[p++]=C;var g=0,x=[],v=window.getComputedStyle(document.querySelector(\"body\"));for(s=0;sx[b]&&(x[b]=y+48):x[b]=y+48}for(s=0;s'+m.label+\"\",u[p++]=\"\"+r+a+\"\";u[p++]=\"\",null==f[0]&&(f=[f,f]),\"n\"===d.charAt(0)?h+=\"top:\"+(f[1]+c.top)+\"px;\":\"s\"===d.charAt(0)&&(h+=\"bottom:\"+(f[1]+c.bottom)+\"px;\"),\"e\"===d.charAt(1)?h+=\"right:\"+(f[0]+c.right)+\"px;\":\"w\"===d.charAt(1)&&(h+=\"left:\"+(f[0]+c.left)+\"px;\");var w=6;for(s=0;s'+u.join(\"\")+\"\").appendTo(n)).css(\"width\",w+\"px\"),T.css(\"height\",k+\"em\"),T.css(\"pointerEvents\",\"none\"))}}(t,e,t.getPlaceholder(),r)})},options:{legend:{show:!1,noColumns:1,labelFormatter:null,container:null,position:\"ne\",margin:5,sorted:null}},name:\"legend\",version:\"1.0\"})}(jQuery);\n//# sourceMappingURL=jquery.flot.js.map\n","/*\nAxis label plugin for flot\n\nDerived from:\nAxis Labels Plugin for flot.\nhttp://github.com/markrcote/flot-axislabels\n\nOriginal code is Copyright (c) 2010 Xuan Luo.\nOriginal code was released under the GPLv3 license by Xuan Luo, September 2010.\nOriginal code was rereleased under the MIT license by Xuan Luo, April 2012.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n(function($) {\n \"use strict\";\n\n var options = {\n axisLabels: {\n show: true\n }\n };\n\n function AxisLabel(axisName, position, padding, placeholder, axisLabel, surface) {\n this.axisName = axisName;\n this.position = position;\n this.padding = padding;\n this.placeholder = placeholder;\n this.axisLabel = axisLabel;\n this.surface = surface;\n this.width = 0;\n this.height = 0;\n this.elem = null;\n }\n\n AxisLabel.prototype.calculateSize = function() {\n var axisId = this.axisName + 'Label',\n layerId = axisId + 'Layer',\n className = axisId + ' axisLabels';\n\n var info = this.surface.getTextInfo(layerId, this.axisLabel, className);\n this.labelWidth = info.width;\n this.labelHeight = info.height;\n\n if (this.position === 'left' || this.position === 'right') {\n this.width = this.labelHeight + this.padding;\n this.height = 0;\n } else {\n this.width = 0;\n this.height = this.labelHeight + this.padding;\n }\n };\n\n AxisLabel.prototype.transforms = function(degrees, x, y, svgLayer) {\n var transforms = [], translate, rotate;\n if (x !== 0 || y !== 0) {\n translate = svgLayer.createSVGTransform();\n translate.setTranslate(x, y);\n transforms.push(translate);\n }\n if (degrees !== 0) {\n rotate = svgLayer.createSVGTransform();\n var centerX = Math.round(this.labelWidth / 2),\n centerY = 0;\n rotate.setRotate(degrees, centerX, centerY);\n transforms.push(rotate);\n }\n\n return transforms;\n };\n\n AxisLabel.prototype.calculateOffsets = function(box) {\n var offsets = {\n x: 0,\n y: 0,\n degrees: 0\n };\n if (this.position === 'bottom') {\n offsets.x = box.left + box.width / 2 - this.labelWidth / 2;\n offsets.y = box.top + box.height - this.labelHeight;\n } else if (this.position === 'top') {\n offsets.x = box.left + box.width / 2 - this.labelWidth / 2;\n offsets.y = box.top;\n } else if (this.position === 'left') {\n offsets.degrees = -90;\n offsets.x = box.left - this.labelWidth / 2;\n offsets.y = box.height / 2 + box.top;\n } else if (this.position === 'right') {\n offsets.degrees = 90;\n offsets.x = box.left + box.width - this.labelWidth / 2;\n offsets.y = box.height / 2 + box.top;\n }\n offsets.x = Math.round(offsets.x);\n offsets.y = Math.round(offsets.y);\n\n return offsets;\n };\n\n AxisLabel.prototype.cleanup = function() {\n var axisId = this.axisName + 'Label',\n layerId = axisId + 'Layer',\n className = axisId + ' axisLabels';\n this.surface.removeText(layerId, 0, 0, this.axisLabel, className);\n };\n\n AxisLabel.prototype.draw = function(box) {\n var axisId = this.axisName + 'Label',\n layerId = axisId + 'Layer',\n className = axisId + ' axisLabels',\n offsets = this.calculateOffsets(box),\n style = {\n position: 'absolute',\n bottom: '',\n right: '',\n display: 'inline-block',\n 'white-space': 'nowrap'\n };\n\n var layer = this.surface.getSVGLayer(layerId);\n var transforms = this.transforms(offsets.degrees, offsets.x, offsets.y, layer.parentNode);\n\n this.surface.addText(layerId, 0, 0, this.axisLabel, className, undefined, undefined, undefined, undefined, transforms);\n this.surface.render();\n Object.keys(style).forEach(function(key) {\n layer.style[key] = style[key];\n });\n };\n\n function init(plot) {\n plot.hooks.processOptions.push(function(plot, options) {\n if (!options.axisLabels.show) {\n return;\n }\n\n var axisLabels = {};\n var defaultPadding = 2; // padding between axis and tick labels\n\n plot.hooks.axisReserveSpace.push(function(plot, axis) {\n var opts = axis.options;\n var axisName = axis.direction + axis.n;\n\n axis.labelHeight += axis.boxPosition.centerY;\n axis.labelWidth += axis.boxPosition.centerX;\n\n if (!opts || !opts.axisLabel || !axis.show) {\n return;\n }\n\n var padding = opts.axisLabelPadding === undefined\n ? defaultPadding\n : opts.axisLabelPadding;\n\n var axisLabel = axisLabels[axisName];\n if (!axisLabel) {\n axisLabel = new AxisLabel(axisName,\n opts.position, padding,\n plot.getPlaceholder()[0], opts.axisLabel, plot.getSurface());\n axisLabels[axisName] = axisLabel;\n }\n\n axisLabel.calculateSize();\n\n // Incrementing the sizes of the tick labels.\n axis.labelHeight += axisLabel.height;\n axis.labelWidth += axisLabel.width;\n });\n\n // TODO - use the drawAxis hook\n plot.hooks.draw.push(function(plot, ctx) {\n $.each(plot.getAxes(), function(flotAxisName, axis) {\n var opts = axis.options;\n if (!opts || !opts.axisLabel || !axis.show) {\n return;\n }\n\n var axisName = axis.direction + axis.n;\n axisLabels[axisName].draw(axis.box);\n });\n });\n\n plot.hooks.shutdown.push(function(plot, eventHolder) {\n for (var axisName in axisLabels) {\n axisLabels[axisName].cleanup();\n }\n });\n });\n };\n\n $.plot.plugins.push({\n init: init,\n options: options,\n name: 'axisLabels',\n version: '3.0'\n });\n})(jQuery);\n","/* Flot plugin for plotting textual data or categories.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nConsider a dataset like [[\"February\", 34], [\"March\", 20], ...]. This plugin\nallows you to plot such a dataset directly.\n\nTo enable it, you must specify mode: \"categories\" on the axis with the textual\nlabels, e.g.\n\n $.plot(\"#placeholder\", data, { xaxis: { mode: \"categories\" } });\n\nBy default, the labels are ordered as they are met in the data series. If you\nneed a different ordering, you can specify \"categories\" on the axis options\nand list the categories there:\n\n xaxis: {\n mode: \"categories\",\n categories: [\"February\", \"March\", \"April\"]\n }\n\nIf you need to customize the distances between the categories, you can specify\n\"categories\" as an object mapping labels to values\n\n xaxis: {\n mode: \"categories\",\n categories: { \"February\": 1, \"March\": 3, \"April\": 4 }\n }\n\nIf you don't specify all categories, the remaining categories will be numbered\nfrom the max value plus 1 (with a spacing of 1 between each).\n\nInternally, the plugin works by transforming the input data through an auto-\ngenerated mapping where the first category becomes 0, the second 1, etc.\nHence, a point like [\"February\", 34] becomes [0, 34] internally in Flot (this\nis visible in hover and click events that return numbers rather than the\ncategory labels). The plugin also overrides the tick generator to spit out the\ncategories as ticks instead of the values.\n\nIf you need to map a value back to its label, the mapping is always accessible\nas \"categories\" on the axis object, e.g. plot.getAxes().xaxis.categories.\n\n*/\n\n(function ($) {\n var options = {\n xaxis: {\n categories: null\n },\n yaxis: {\n categories: null\n }\n };\n\n function processRawData(plot, series, data, datapoints) {\n // if categories are enabled, we need to disable\n // auto-transformation to numbers so the strings are intact\n // for later processing\n\n var xCategories = series.xaxis.options.mode === \"categories\",\n yCategories = series.yaxis.options.mode === \"categories\";\n\n if (!(xCategories || yCategories)) {\n return;\n }\n\n var format = datapoints.format;\n\n if (!format) {\n // FIXME: auto-detection should really not be defined here\n var s = series;\n format = [];\n format.push({ x: true, number: true, required: true, computeRange: true});\n format.push({ y: true, number: true, required: true, computeRange: true });\n\n if (s.bars.show || (s.lines.show && s.lines.fill)) {\n var autoScale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero));\n format.push({ y: true, number: true, required: false, defaultValue: 0, computeRange: autoScale });\n if (s.bars.horizontal) {\n delete format[format.length - 1].y;\n format[format.length - 1].x = true;\n }\n }\n\n datapoints.format = format;\n }\n\n for (var m = 0; m < format.length; ++m) {\n if (format[m].x && xCategories) {\n format[m].number = false;\n }\n\n if (format[m].y && yCategories) {\n format[m].number = false;\n format[m].computeRange = false;\n }\n }\n }\n\n function getNextIndex(categories) {\n var index = -1;\n\n for (var v in categories) {\n if (categories[v] > index) {\n index = categories[v];\n }\n }\n\n return index + 1;\n }\n\n function categoriesTickGenerator(axis) {\n var res = [];\n for (var label in axis.categories) {\n var v = axis.categories[label];\n if (v >= axis.min && v <= axis.max) {\n res.push([v, label]);\n }\n }\n\n res.sort(function (a, b) { return a[0] - b[0]; });\n\n return res;\n }\n\n function setupCategoriesForAxis(series, axis, datapoints) {\n if (series[axis].options.mode !== \"categories\") {\n return;\n }\n\n if (!series[axis].categories) {\n // parse options\n var c = {}, o = series[axis].options.categories || {};\n if ($.isArray(o)) {\n for (var i = 0; i < o.length; ++i) {\n c[o[i]] = i;\n }\n } else {\n for (var v in o) {\n c[v] = o[v];\n }\n }\n\n series[axis].categories = c;\n }\n\n // fix ticks\n if (!series[axis].options.ticks) {\n series[axis].options.ticks = categoriesTickGenerator;\n }\n\n transformPointsOnAxis(datapoints, axis, series[axis].categories);\n }\n\n function transformPointsOnAxis(datapoints, axis, categories) {\n // go through the points, transforming them\n var points = datapoints.points,\n ps = datapoints.pointsize,\n format = datapoints.format,\n formatColumn = axis.charAt(0),\n index = getNextIndex(categories);\n\n for (var i = 0; i < points.length; i += ps) {\n if (points[i] == null) {\n continue;\n }\n\n for (var m = 0; m < ps; ++m) {\n var val = points[i + m];\n\n if (val == null || !format[m][formatColumn]) {\n continue;\n }\n\n if (!(val in categories)) {\n categories[val] = index;\n ++index;\n }\n\n points[i + m] = categories[val];\n }\n }\n }\n\n function processDatapoints(plot, series, datapoints) {\n setupCategoriesForAxis(series, \"xaxis\", datapoints);\n setupCategoriesForAxis(series, \"yaxis\", datapoints);\n }\n\n function init(plot) {\n plot.hooks.processRawData.push(processRawData);\n plot.hooks.processDatapoints.push(processDatapoints);\n }\n\n $.plot.plugins.push({\n init: init,\n options: options,\n name: 'categories',\n version: '1.0'\n });\n})(jQuery);\n","/* Flot plugin for showing crosshairs when the mouse hovers over the plot.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin supports these options:\n\n crosshair: {\n mode: null or \"x\" or \"y\" or \"xy\"\n color: color\n lineWidth: number\n }\n\nSet the mode to one of \"x\", \"y\" or \"xy\". The \"x\" mode enables a vertical\ncrosshair that lets you trace the values on the x axis, \"y\" enables a\nhorizontal crosshair and \"xy\" enables them both. \"color\" is the color of the\ncrosshair (default is \"rgba(170, 0, 0, 0.80)\"), \"lineWidth\" is the width of\nthe drawn lines (default is 1).\n\nThe plugin also adds four public methods:\n\n - setCrosshair( pos )\n\n Set the position of the crosshair. Note that this is cleared if the user\n moves the mouse. \"pos\" is in coordinates of the plot and should be on the\n form { x: xpos, y: ypos } (you can use x2/x3/... if you're using multiple\n axes), which is coincidentally the same format as what you get from a\n \"plothover\" event. If \"pos\" is null, the crosshair is cleared.\n\n - clearCrosshair()\n\n Clear the crosshair.\n\n - lockCrosshair(pos)\n\n Cause the crosshair to lock to the current location, no longer updating if\n the user moves the mouse. Optionally supply a position (passed on to\n setCrosshair()) to move it to.\n\n Example usage:\n\n var myFlot = $.plot( $(\"#graph\"), ..., { crosshair: { mode: \"x\" } } };\n $(\"#graph\").bind( \"plothover\", function ( evt, position, item ) {\n if ( item ) {\n // Lock the crosshair to the data point being hovered\n myFlot.lockCrosshair({\n x: item.datapoint[ 0 ],\n y: item.datapoint[ 1 ]\n });\n } else {\n // Return normal crosshair operation\n myFlot.unlockCrosshair();\n }\n });\n\n - unlockCrosshair()\n\n Free the crosshair to move again after locking it.\n*/\n\n(function ($) {\n var options = {\n crosshair: {\n mode: null, // one of null, \"x\", \"y\" or \"xy\",\n color: \"rgba(170, 0, 0, 0.80)\",\n lineWidth: 1\n }\n };\n\n function init(plot) {\n // position of crosshair in pixels\n var crosshair = {x: -1, y: -1, locked: false, highlighted: false};\n\n plot.setCrosshair = function setCrosshair(pos) {\n if (!pos) {\n crosshair.x = -1;\n } else {\n var o = plot.p2c(pos);\n crosshair.x = Math.max(0, Math.min(o.left, plot.width()));\n crosshair.y = Math.max(0, Math.min(o.top, plot.height()));\n }\n\n plot.triggerRedrawOverlay();\n };\n\n plot.clearCrosshair = plot.setCrosshair; // passes null for pos\n\n plot.lockCrosshair = function lockCrosshair(pos) {\n if (pos) {\n plot.setCrosshair(pos);\n }\n\n crosshair.locked = true;\n };\n\n plot.unlockCrosshair = function unlockCrosshair() {\n crosshair.locked = false;\n crosshair.rect = null;\n };\n\n function onMouseOut(e) {\n if (crosshair.locked) {\n return;\n }\n\n if (crosshair.x !== -1) {\n crosshair.x = -1;\n plot.triggerRedrawOverlay();\n }\n }\n\n function onMouseMove(e) {\n var offset = plot.offset();\n if (crosshair.locked) {\n var mouseX = Math.max(0, Math.min(e.pageX - offset.left, plot.width()));\n var mouseY = Math.max(0, Math.min(e.pageY - offset.top, plot.height()));\n\n if ((mouseX > crosshair.x - 4) && (mouseX < crosshair.x + 4) && (mouseY > crosshair.y - 4) && (mouseY < crosshair.y + 4)) {\n if (!crosshair.highlighted) {\n crosshair.highlighted = true;\n plot.triggerRedrawOverlay();\n }\n } else {\n if (crosshair.highlighted) {\n crosshair.highlighted = false;\n plot.triggerRedrawOverlay();\n }\n }\n return;\n }\n\n if (plot.getSelection && plot.getSelection()) {\n crosshair.x = -1; // hide the crosshair while selecting\n return;\n }\n\n crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width()));\n crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height()));\n plot.triggerRedrawOverlay();\n }\n\n plot.hooks.bindEvents.push(function (plot, eventHolder) {\n if (!plot.getOptions().crosshair.mode) {\n return;\n }\n\n eventHolder.mouseout(onMouseOut);\n eventHolder.mousemove(onMouseMove);\n });\n\n plot.hooks.drawOverlay.push(function (plot, ctx) {\n var c = plot.getOptions().crosshair;\n if (!c.mode) {\n return;\n }\n\n var plotOffset = plot.getPlotOffset();\n\n ctx.save();\n ctx.translate(plotOffset.left, plotOffset.top);\n\n if (crosshair.x !== -1) {\n var adj = plot.getOptions().crosshair.lineWidth % 2 ? 0.5 : 0;\n\n ctx.strokeStyle = c.color;\n ctx.lineWidth = c.lineWidth;\n ctx.lineJoin = \"round\";\n\n ctx.beginPath();\n if (c.mode.indexOf(\"x\") !== -1) {\n var drawX = Math.floor(crosshair.x) + adj;\n ctx.moveTo(drawX, 0);\n ctx.lineTo(drawX, plot.height());\n }\n if (c.mode.indexOf(\"y\") !== -1) {\n var drawY = Math.floor(crosshair.y) + adj;\n ctx.moveTo(0, drawY);\n ctx.lineTo(plot.width(), drawY);\n }\n if (crosshair.locked) {\n if (crosshair.highlighted) ctx.fillStyle = 'orange';\n else ctx.fillStyle = c.color;\n ctx.fillRect(Math.floor(crosshair.x) + adj - 4, Math.floor(crosshair.y) + adj - 4, 8, 8);\n }\n ctx.stroke();\n }\n ctx.restore();\n });\n\n plot.hooks.shutdown.push(function (plot, eventHolder) {\n eventHolder.unbind(\"mouseout\", onMouseOut);\n eventHolder.unbind(\"mousemove\", onMouseMove);\n });\n }\n\n $.plot.plugins.push({\n init: init,\n options: options,\n name: 'crosshair',\n version: '1.0'\n });\n})(jQuery);\n","/* Flot plugin for rendering pie charts.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin assumes that each series has a single data value, and that each\nvalue is a positive integer or zero. Negative numbers don't make sense for a\npie chart, and have unpredictable results. The values do NOT need to be\npassed in as percentages; the plugin will calculate the total and per-slice\npercentages internally.\n\n* Created by Brian Medendorp\n\n* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars\n\nThe plugin supports these options:\n\n series: {\n pie: {\n show: true/false\n radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n offset: {\n top: integer value to move the pie up or down\n left: integer value to move the pie left or right, or 'auto'\n },\n stroke: {\n color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n width: integer pixel width of the stroke\n },\n label: {\n show: true/false, or 'auto'\n formatter: a user-defined function that modifies the text/style of the label text\n radius: 0-1 for percentage of fullsize, or a specified pixel length\n background: {\n color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n opacity: 0-1\n },\n threshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n },\n combine: {\n threshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n label: any text value of what the combined slice should be labeled\n }\n highlight: {\n opacity: 0-1\n }\n }\n }\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function($) {\n // Maximum redraw attempts when fitting labels within the plot\n\n var REDRAW_ATTEMPTS = 10;\n\n // Factor by which to shrink the pie when fitting labels within the plot\n\n var REDRAW_SHRINK = 0.95;\n\n function init(plot) {\n var canvas = null,\n target = null,\n options = null,\n maxRadius = null,\n centerLeft = null,\n centerTop = null,\n processed = false,\n ctx = null;\n\n // interactive variables\n\n var highlights = [];\n\n // add hook to determine if pie plugin in enabled, and then perform necessary operations\n\n plot.hooks.processOptions.push(function(plot, options) {\n if (options.series.pie.show) {\n options.grid.show = false;\n\n // set labels.show\n\n if (options.series.pie.label.show === \"auto\") {\n if (options.legend.show) {\n options.series.pie.label.show = false;\n } else {\n options.series.pie.label.show = true;\n }\n }\n\n // set radius\n\n if (options.series.pie.radius === \"auto\") {\n if (options.series.pie.label.show) {\n options.series.pie.radius = 3 / 4;\n } else {\n options.series.pie.radius = 1;\n }\n }\n\n // ensure sane tilt\n\n if (options.series.pie.tilt > 1) {\n options.series.pie.tilt = 1;\n } else if (options.series.pie.tilt < 0) {\n options.series.pie.tilt = 0;\n }\n }\n });\n\n plot.hooks.bindEvents.push(function(plot, eventHolder) {\n var options = plot.getOptions();\n if (options.series.pie.show) {\n if (options.grid.hoverable) {\n eventHolder.unbind(\"mousemove\").mousemove(onMouseMove);\n }\n if (options.grid.clickable) {\n eventHolder.unbind(\"click\").click(onClick);\n }\n }\n });\n\n plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) {\n var options = plot.getOptions();\n if (options.series.pie.show) {\n processDatapoints(plot, series, data, datapoints);\n }\n });\n\n plot.hooks.drawOverlay.push(function(plot, octx) {\n var options = plot.getOptions();\n if (options.series.pie.show) {\n drawOverlay(plot, octx);\n }\n });\n\n plot.hooks.draw.push(function(plot, newCtx) {\n var options = plot.getOptions();\n if (options.series.pie.show) {\n draw(plot, newCtx);\n }\n });\n\n function processDatapoints(plot, series, datapoints) {\n if (!processed) {\n processed = true;\n canvas = plot.getCanvas();\n target = $(canvas).parent();\n options = plot.getOptions();\n plot.setData(combine(plot.getData()));\n }\n }\n\n function combine(data) {\n var total = 0,\n combined = 0,\n numCombined = 0,\n color = options.series.pie.combine.color,\n newdata = [],\n i,\n value;\n\n // Fix up the raw data from Flot, ensuring the data is numeric\n\n for (i = 0; i < data.length; ++i) {\n value = data[i].data;\n\n // If the data is an array, we'll assume that it's a standard\n // Flot x-y pair, and are concerned only with the second value.\n\n // Note how we use the original array, rather than creating a\n // new one; this is more efficient and preserves any extra data\n // that the user may have stored in higher indexes.\n\n if ($.isArray(value) && value.length === 1) {\n value = value[0];\n }\n\n if ($.isArray(value)) {\n // Equivalent to $.isNumeric() but compatible with jQuery < 1.7\n if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) {\n value[1] = +value[1];\n } else {\n value[1] = 0;\n }\n } else if (!isNaN(parseFloat(value)) && isFinite(value)) {\n value = [1, +value];\n } else {\n value = [1, 0];\n }\n\n data[i].data = [value];\n }\n\n // Sum up all the slices, so we can calculate percentages for each\n\n for (i = 0; i < data.length; ++i) {\n total += data[i].data[0][1];\n }\n\n // Count the number of slices with percentages below the combine\n // threshold; if it turns out to be just one, we won't combine.\n\n for (i = 0; i < data.length; ++i) {\n value = data[i].data[0][1];\n if (value / total <= options.series.pie.combine.threshold) {\n combined += value;\n numCombined++;\n if (!color) {\n color = data[i].color;\n }\n }\n }\n\n for (i = 0; i < data.length; ++i) {\n value = data[i].data[0][1];\n if (numCombined < 2 || value / total > options.series.pie.combine.threshold) {\n newdata.push(\n $.extend(data[i], { /* extend to allow keeping all other original data values\n and using them e.g. in labelFormatter. */\n data: [[1, value]],\n color: data[i].color,\n label: data[i].label,\n angle: value * Math.PI * 2 / total,\n percent: value / (total / 100)\n })\n );\n }\n }\n\n if (numCombined > 1) {\n newdata.push({\n data: [[1, combined]],\n color: color,\n label: options.series.pie.combine.label,\n angle: combined * Math.PI * 2 / total,\n percent: combined / (total / 100)\n });\n }\n\n return newdata;\n }\n\n function draw(plot, newCtx) {\n if (!target) {\n return; // if no series were passed\n }\n\n var canvasWidth = plot.getPlaceholder().width(),\n canvasHeight = plot.getPlaceholder().height(),\n legendWidth = target.children().filter(\".legend\").children().width() || 0;\n\n ctx = newCtx;\n\n // WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE!\n\n // When combining smaller slices into an 'other' slice, we need to\n // add a new series. Since Flot gives plugins no way to modify the\n // list of series, the pie plugin uses a hack where the first call\n // to processDatapoints results in a call to setData with the new\n // list of series, then subsequent processDatapoints do nothing.\n\n // The plugin-global 'processed' flag is used to control this hack;\n // it starts out false, and is set to true after the first call to\n // processDatapoints.\n\n // Unfortunately this turns future setData calls into no-ops; they\n // call processDatapoints, the flag is true, and nothing happens.\n\n // To fix this we'll set the flag back to false here in draw, when\n // all series have been processed, so the next sequence of calls to\n // processDatapoints once again starts out with a slice-combine.\n // This is really a hack; in 0.9 we need to give plugins a proper\n // way to modify series before any processing begins.\n\n processed = false;\n\n // calculate maximum radius and center point\n maxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2;\n centerTop = canvasHeight / 2 + options.series.pie.offset.top;\n centerLeft = canvasWidth / 2;\n\n if (options.series.pie.offset.left === \"auto\") {\n if (options.legend.position.match(\"w\")) {\n centerLeft += legendWidth / 2;\n } else {\n centerLeft -= legendWidth / 2;\n }\n if (centerLeft < maxRadius) {\n centerLeft = maxRadius;\n } else if (centerLeft > canvasWidth - maxRadius) {\n centerLeft = canvasWidth - maxRadius;\n }\n } else {\n centerLeft += options.series.pie.offset.left;\n }\n\n var slices = plot.getData(),\n attempts = 0;\n\n // Keep shrinking the pie's radius until drawPie returns true,\n // indicating that all the labels fit, or we try too many times.\n do {\n if (attempts > 0) {\n maxRadius *= REDRAW_SHRINK;\n }\n attempts += 1;\n clear();\n if (options.series.pie.tilt <= 0.8) {\n drawShadow();\n }\n } while (!drawPie() && attempts < REDRAW_ATTEMPTS)\n\n if (attempts >= REDRAW_ATTEMPTS) {\n clear();\n target.prepend(\"
Could not draw pie with labels contained inside canvas
\");\n }\n\n if (plot.setSeries && plot.insertLegend) {\n plot.setSeries(slices);\n plot.insertLegend();\n }\n\n // we're actually done at this point, just defining internal functions at this point\n function clear() {\n ctx.clearRect(0, 0, canvasWidth, canvasHeight);\n target.children().filter(\".pieLabel, .pieLabelBackground\").remove();\n }\n\n function drawShadow() {\n var shadowLeft = options.series.pie.shadow.left;\n var shadowTop = options.series.pie.shadow.top;\n var edge = 10;\n var alpha = options.series.pie.shadow.alpha;\n var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) {\n return; // shadow would be outside canvas, so don't draw it\n }\n\n ctx.save();\n ctx.translate(shadowLeft, shadowTop);\n ctx.globalAlpha = alpha;\n ctx.fillStyle = \"#000\";\n\n // center and rotate to starting position\n ctx.translate(centerLeft, centerTop);\n ctx.scale(1, options.series.pie.tilt);\n\n //radius -= edge;\n for (var i = 1; i <= edge; i++) {\n ctx.beginPath();\n ctx.arc(0, 0, radius, 0, Math.PI * 2, false);\n ctx.fill();\n radius -= i;\n }\n\n ctx.restore();\n }\n\n function drawPie() {\n var startAngle = Math.PI * options.series.pie.startAngle;\n var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n var i;\n // center and rotate to starting position\n\n ctx.save();\n ctx.translate(centerLeft, centerTop);\n ctx.scale(1, options.series.pie.tilt);\n //ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\n // draw slices\n ctx.save();\n\n var currentAngle = startAngle;\n for (i = 0; i < slices.length; ++i) {\n slices[i].startAngle = currentAngle;\n drawSlice(slices[i].angle, slices[i].color, true);\n }\n\n ctx.restore();\n\n // draw slice outlines\n if (options.series.pie.stroke.width > 0) {\n ctx.save();\n ctx.lineWidth = options.series.pie.stroke.width;\n currentAngle = startAngle;\n for (i = 0; i < slices.length; ++i) {\n drawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n }\n\n ctx.restore();\n }\n\n // draw donut hole\n drawDonutHole(ctx);\n\n ctx.restore();\n\n // Draw the labels, returning true if they fit within the plot\n if (options.series.pie.label.show) {\n return drawLabels();\n } else return true;\n\n function drawSlice(angle, color, fill) {\n if (angle <= 0 || isNaN(angle)) {\n return;\n }\n\n if (fill) {\n ctx.fillStyle = color;\n } else {\n ctx.strokeStyle = color;\n ctx.lineJoin = \"round\";\n }\n\n ctx.beginPath();\n if (Math.abs(angle - Math.PI * 2) > 0.000000001) {\n ctx.moveTo(0, 0); // Center of the pie\n }\n\n //ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera\n ctx.arc(0, 0, radius, currentAngle, currentAngle + angle / 2, false);\n ctx.arc(0, 0, radius, currentAngle + angle / 2, currentAngle + angle, false);\n ctx.closePath();\n //ctx.rotate(angle); // This doesn't work properly in Opera\n currentAngle += angle;\n\n if (fill) {\n ctx.fill();\n } else {\n ctx.stroke();\n }\n }\n\n function drawLabels() {\n var currentAngle = startAngle;\n var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius;\n\n for (var i = 0; i < slices.length; ++i) {\n if (slices[i].percent >= options.series.pie.label.threshold * 100) {\n if (!drawLabel(slices[i], currentAngle, i)) {\n return false;\n }\n }\n currentAngle += slices[i].angle;\n }\n\n return true;\n\n function drawLabel(slice, startAngle, index) {\n if (slice.data[0][1] === 0) {\n return true;\n }\n\n // format label text\n var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\n if (lf) {\n text = lf(slice.label, slice);\n } else {\n text = slice.label;\n }\n\n if (plf) {\n text = plf(text, slice);\n }\n\n var halfAngle = ((startAngle + slice.angle) + startAngle) / 2;\n var x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\n var html = \"\" + text + \"\";\n target.append(html);\n\n var label = target.children(\"#pieLabel\" + index);\n var labelTop = (y - label.height() / 2);\n var labelLeft = (x - label.width() / 2);\n\n label.css(\"top\", labelTop);\n label.css(\"left\", labelLeft);\n\n // check to make sure that the label is not outside the canvas\n if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) {\n return false;\n }\n\n if (options.series.pie.label.background.opacity !== 0) {\n // put in the transparent background separately to avoid blended labels and label boxes\n var c = options.series.pie.label.background.color;\n if (c == null) {\n c = slice.color;\n }\n\n var pos = \"top:\" + labelTop + \"px;left:\" + labelLeft + \"px;\";\n $(\"
\")\n .css(\"opacity\", options.series.pie.label.background.opacity)\n .insertBefore(label);\n }\n\n return true;\n } // end individual label function\n } // end drawLabels function\n } // end drawPie function\n } // end draw function\n\n // Placed here because it needs to be accessed from multiple locations\n\n function drawDonutHole(layer) {\n if (options.series.pie.innerRadius > 0) {\n // subtract the center\n layer.save();\n var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n layer.globalCompositeOperation = \"destination-out\"; // this does not work with excanvas, but it will fall back to using the stroke color\n layer.beginPath();\n layer.fillStyle = options.series.pie.stroke.color;\n layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n layer.fill();\n layer.closePath();\n layer.restore();\n\n // add inner stroke\n layer.save();\n layer.beginPath();\n layer.strokeStyle = options.series.pie.stroke.color;\n layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n layer.stroke();\n layer.closePath();\n layer.restore();\n\n // TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n }\n }\n\n //-- Additional Interactive related functions --\n\n function isPointInPoly(poly, pt) {\n for (var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) {\n ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) ||\n (poly[j][1] <= pt[1] && pt[1] < poly[i][1])) &&\n (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0]) &&\n (c = !c);\n }\n return c;\n }\n\n function findNearbySlice(mouseX, mouseY) {\n var slices = plot.getData(),\n options = plot.getOptions(),\n radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius,\n x, y;\n\n for (var i = 0; i < slices.length; ++i) {\n var s = slices[i];\n if (s.pie.show) {\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(0, 0); // Center of the pie\n //ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here.\n ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false);\n ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false);\n ctx.closePath();\n x = mouseX - centerLeft;\n y = mouseY - centerTop;\n\n if (ctx.isPointInPath) {\n if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) {\n ctx.restore();\n return {\n datapoint: [s.percent, s.data],\n dataIndex: 0,\n series: s,\n seriesIndex: i\n };\n }\n } else {\n // excanvas for IE doesn;t support isPointInPath, this is a workaround.\n var p1X = radius * Math.cos(s.startAngle),\n p1Y = radius * Math.sin(s.startAngle),\n p2X = radius * Math.cos(s.startAngle + s.angle / 4),\n p2Y = radius * Math.sin(s.startAngle + s.angle / 4),\n p3X = radius * Math.cos(s.startAngle + s.angle / 2),\n p3Y = radius * Math.sin(s.startAngle + s.angle / 2),\n p4X = radius * Math.cos(s.startAngle + s.angle / 1.5),\n p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5),\n p5X = radius * Math.cos(s.startAngle + s.angle),\n p5Y = radius * Math.sin(s.startAngle + s.angle),\n arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]],\n arrPoint = [x, y];\n\n // TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\n if (isPointInPoly(arrPoly, arrPoint)) {\n ctx.restore();\n return {\n datapoint: [s.percent, s.data],\n dataIndex: 0,\n series: s,\n seriesIndex: i\n };\n }\n }\n\n ctx.restore();\n }\n }\n\n return null;\n }\n\n function onMouseMove(e) {\n triggerClickHoverEvent(\"plothover\", e);\n }\n\n function onClick(e) {\n triggerClickHoverEvent(\"plotclick\", e);\n }\n\n // trigger click or hover event (they send the same parameters so we share their code)\n\n function triggerClickHoverEvent(eventname, e) {\n var offset = plot.offset();\n var canvasX = parseInt(e.pageX - offset.left);\n var canvasY = parseInt(e.pageY - offset.top);\n var item = findNearbySlice(canvasX, canvasY);\n\n if (options.grid.autoHighlight) {\n // clear auto-highlights\n for (var i = 0; i < highlights.length; ++i) {\n var h = highlights[i];\n if (h.auto === eventname && !(item && h.series === item.series)) {\n unhighlight(h.series);\n }\n }\n }\n\n // highlight the slice\n\n if (item) {\n highlight(item.series, eventname);\n }\n\n // trigger any hover bind events\n\n var pos = { pageX: e.pageX, pageY: e.pageY };\n target.trigger(eventname, [pos, item]);\n }\n\n function highlight(s, auto) {\n //if (typeof s == \"number\") {\n // s = series[s];\n //}\n\n var i = indexOfHighlight(s);\n\n if (i === -1) {\n highlights.push({ series: s, auto: auto });\n plot.triggerRedrawOverlay();\n } else if (!auto) {\n highlights[i].auto = false;\n }\n }\n\n function unhighlight(s) {\n if (s == null) {\n highlights = [];\n plot.triggerRedrawOverlay();\n }\n\n //if (typeof s == \"number\") {\n // s = series[s];\n //}\n\n var i = indexOfHighlight(s);\n\n if (i !== -1) {\n highlights.splice(i, 1);\n plot.triggerRedrawOverlay();\n }\n }\n\n function indexOfHighlight(s) {\n for (var i = 0; i < highlights.length; ++i) {\n var h = highlights[i];\n if (h.series === s) {\n return i;\n }\n }\n return -1;\n }\n\n function drawOverlay(plot, octx) {\n var options = plot.getOptions();\n var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n octx.save();\n octx.translate(centerLeft, centerTop);\n octx.scale(1, options.series.pie.tilt);\n\n for (var i = 0; i < highlights.length; ++i) {\n drawHighlight(highlights[i].series);\n }\n\n drawDonutHole(octx);\n\n octx.restore();\n\n function drawHighlight(series) {\n if (series.angle <= 0 || isNaN(series.angle)) {\n return;\n }\n\n //octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n octx.fillStyle = \"rgba(255, 255, 255, \" + options.series.pie.highlight.opacity + \")\"; // this is temporary until we have access to parseColor\n octx.beginPath();\n if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) {\n octx.moveTo(0, 0); // Center of the pie\n }\n octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false);\n octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false);\n octx.closePath();\n octx.fill();\n }\n }\n } // end init (plugin body)\n\n // define pie specific options and their default values\n var options = {\n series: {\n pie: {\n show: false,\n radius: \"auto\", // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n innerRadius: 0, /* for donut */\n startAngle: 3 / 2,\n tilt: 1,\n shadow: {\n left: 5, // shadow left offset\n top: 15, // shadow top offset\n alpha: 0.02 // shadow alpha\n },\n offset: {\n top: 0,\n left: \"auto\"\n },\n stroke: {\n color: \"#fff\",\n width: 1\n },\n label: {\n show: \"auto\",\n formatter: function(label, slice) {\n return \"
\" + label + \"
\" + Math.round(slice.percent) + \"%
\";\n }, // formatter function\n radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n background: {\n color: null,\n opacity: 0\n },\n threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow)\n },\n combine: {\n threshold: -1, // percentage at which to combine little slices into one larger slice\n color: null, // color to give the new slice (auto-generated if null)\n label: \"Other\" // label to give the new slice\n },\n highlight: {\n //color: \"#fff\", // will add this functionality once parseColor is available\n opacity: 0.5\n }\n }\n }\n };\n\n $.plot.plugins.push({\n init: init,\n options: options,\n name: \"pie\",\n version: \"1.1\"\n });\n})(jQuery);\n","/* eslint-disable */\n/* Flot plugin for automatically redrawing plots as the placeholder resizes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nIt works by listening for changes on the placeholder div (through the jQuery\nresize event plugin) - if the size changes, it will redraw the plot.\n\nThere are no options. If you need to disable the plugin for some plots, you\ncan just fix the size of their placeholders.\n\n*/\n\n/* Inline dependency:\n * jQuery resize event - v1.1 - 3/14/2010\n * http://benalman.com/projects/jquery-resize-plugin/\n *\n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n(function($,e,t){\"$:nomunge\";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s=\"setTimeout\",u=\"resize\",m=u+\"-special-event\",o=\"pendingDelay\",l=\"activeDelay\",f=\"throttleWindow\";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(\":visible\")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);\n\n/* eslint-enable */\n(function ($) {\n var options = { }; // no options\n\n function init(plot) {\n function onResize() {\n var placeholder = plot.getPlaceholder();\n\n // somebody might have hidden us and we can't plot\n // when we don't have the dimensions\n if (placeholder.width() === 0 || placeholder.height() === 0) return;\n\n plot.resize();\n plot.setupGrid();\n plot.draw();\n }\n\n function bindEvents(plot, eventHolder) {\n plot.getPlaceholder().resize(onResize);\n }\n\n function shutdown(plot, eventHolder) {\n plot.getPlaceholder().unbind(\"resize\", onResize);\n }\n\n plot.hooks.bindEvents.push(bindEvents);\n plot.hooks.shutdown.push(shutdown);\n }\n\n $.plot.plugins.push({\n init: init,\n options: options,\n name: 'resize',\n version: '1.0'\n });\n})(jQuery);\n","/* Flot plugin for stacking data sets rather than overlaying them.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin assumes the data is sorted on x (or y if stacking horizontally).\nFor line charts, it is assumed that if a line has an undefined gap (from a\nnull point), then the line above it should have the same gap - insert zeros\ninstead of \"null\" if you want another behaviour. This also holds for the start\nand end of the chart. Note that stacking a mix of positive and negative values\nin most instances doesn't make sense (so it looks weird).\n\nTwo or more series are stacked when their \"stack\" attribute is set to the same\nkey (which can be any number or string or just \"true\"). To specify the default\nstack, you can set the stack option like this:\n\n series: {\n stack: null/false, true, or a key (number/string)\n }\n\nYou can also specify it for a single series, like this:\n\n $.plot( $(\"#placeholder\"), [{\n data: [ ... ],\n stack: true\n }])\n\nThe stacking order is determined by the order of the data series in the array\n(later series end up on top of the previous).\n\nInternally, the plugin modifies the datapoints in each series, adding an\noffset to the y value. For line series, extra data points are inserted through\ninterpolation. If there's a second y value, it's also adjusted (e.g for bar\ncharts or filled areas).\n\n*/\n\n(function ($) {\n var options = {\n series: { stack: null } // or number/string\n };\n\n function init(plot) {\n function findMatchingSeries(s, allseries) {\n var res = null;\n for (var i = 0; i < allseries.length; ++i) {\n if (s === allseries[i]) break;\n\n if (allseries[i].stack === s.stack) {\n res = allseries[i];\n }\n }\n\n return res;\n }\n\n function addBottomPoints (s, datapoints) {\n var formattedPoints = [];\n for (var i = 0; i < datapoints.points.length; i += 2) {\n formattedPoints.push(datapoints.points[i]);\n formattedPoints.push(datapoints.points[i + 1]);\n formattedPoints.push(0);\n }\n\n datapoints.format.push({\n x: false,\n y: true,\n number: true,\n required: false,\n computeRange: s.yaxis.options.autoScale !== 'none',\n defaultValue: 0\n });\n datapoints.points = formattedPoints;\n datapoints.pointsize = 3;\n }\n\n function stackData(plot, s, datapoints) {\n if (s.stack == null || s.stack === false) return;\n\n var needsBottom = s.bars.show || (s.lines.show && s.lines.fill);\n var hasBottom = datapoints.pointsize > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y);\n // Series data is missing bottom points - need to format\n if (needsBottom && !hasBottom) {\n addBottomPoints(s, datapoints);\n }\n\n var other = findMatchingSeries(s, plot.getData());\n if (!other) return;\n\n var ps = datapoints.pointsize,\n points = datapoints.points,\n otherps = other.datapoints.pointsize,\n otherpoints = other.datapoints.points,\n newpoints = [],\n px, py, intery, qx, qy, bottom,\n withlines = s.lines.show,\n horizontal = s.bars.horizontal,\n withsteps = withlines && s.lines.steps,\n fromgap = true,\n keyOffset = horizontal ? 1 : 0,\n accumulateOffset = horizontal ? 0 : 1,\n i = 0, j = 0, l, m;\n\n while (true) {\n if (i >= points.length) break;\n\n l = newpoints.length;\n\n if (points[i] == null) {\n // copy gaps\n for (m = 0; m < ps; ++m) {\n newpoints.push(points[i + m]);\n }\n\n i += ps;\n } else if (j >= otherpoints.length) {\n // for lines, we can't use the rest of the points\n if (!withlines) {\n for (m = 0; m < ps; ++m) {\n newpoints.push(points[i + m]);\n }\n }\n\n i += ps;\n } else if (otherpoints[j] == null) {\n // oops, got a gap\n for (m = 0; m < ps; ++m) {\n newpoints.push(null);\n }\n\n fromgap = true;\n j += otherps;\n } else {\n // cases where we actually got two points\n px = points[i + keyOffset];\n py = points[i + accumulateOffset];\n qx = otherpoints[j + keyOffset];\n qy = otherpoints[j + accumulateOffset];\n bottom = 0;\n\n if (px === qx) {\n for (m = 0; m < ps; ++m) {\n newpoints.push(points[i + m]);\n }\n\n newpoints[l + accumulateOffset] += qy;\n bottom = qy;\n\n i += ps;\n j += otherps;\n } else if (px > qx) {\n // we got past point below, might need to\n // insert interpolated extra point\n if (withlines && i > 0 && points[i - ps] != null) {\n intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px);\n newpoints.push(qx);\n newpoints.push(intery + qy);\n for (m = 2; m < ps; ++m) {\n newpoints.push(points[i + m]);\n }\n\n bottom = qy;\n }\n\n j += otherps;\n } else { // px < qx\n if (fromgap && withlines) {\n // if we come from a gap, we just skip this point\n i += ps;\n continue;\n }\n\n for (m = 0; m < ps; ++m) {\n newpoints.push(points[i + m]);\n }\n\n // we might be able to interpolate a point below,\n // this can give us a better y\n if (withlines && j > 0 && otherpoints[j - otherps] != null) {\n bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx);\n }\n\n newpoints[l + accumulateOffset] += bottom;\n\n i += ps;\n }\n\n fromgap = false;\n\n if (l !== newpoints.length && needsBottom) {\n newpoints[l + 2] += bottom;\n }\n }\n\n // maintain the line steps invariant\n if (withsteps && l !== newpoints.length && l > 0 &&\n newpoints[l] !== null &&\n newpoints[l] !== newpoints[l - ps] &&\n newpoints[l + 1] !== newpoints[l - ps + 1]) {\n for (m = 0; m < ps; ++m) {\n newpoints[l + ps + m] = newpoints[l + m];\n }\n\n newpoints[l + 1] = newpoints[l - ps + 1];\n }\n }\n\n datapoints.points = newpoints;\n }\n\n plot.hooks.processDatapoints.push(stackData);\n }\n\n $.plot.plugins.push({\n init: init,\n options: options,\n name: 'stack',\n version: '1.2'\n });\n})(jQuery);\n","// Flot- Flot is a pure JavaScript plotting library for jQuery, with a focus on simple usage, attractive looks and interactive features: https://www.flotcharts.org/\r\n\r\nrequire('flot/dist/es5/jquery.flot.js');\r\nrequire('flot/source/jquery.flot.resize.js');\r\nrequire('flot/source/jquery.flot.categories.js');\r\nrequire('flot/source/jquery.flot.pie.js');\r\nrequire('flot/source/jquery.flot.stack.js');\r\nrequire('flot/source/jquery.flot.crosshair.js');\r\nrequire('flot/source/jquery.flot.axislabels.js');\r\n"],"sourceRoot":""}