diff --git a/dist/cbfjs.js b/dist/cbfjs.js index 8f016af..e4ab59c 100644 --- a/dist/cbfjs.js +++ b/dist/cbfjs.js @@ -1,6 +1,6 @@ -'use strict'; +"use strict"; -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /* CBFjs is library for cross-browser fingerprinting @@ -8,187 +8,180 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol Library was inspired by Song Li's https://github.com/Song-Li/dynamic_fingerprinting dynamic fingerprinting tool */ (function (scope) { - 'use strict'; - - /* Helpers */ - - // murmurhash3 non crypto hash library for hash generation - // core estimator to estimate number of cores of CPU - - var murmurHash3 = require('./vendors/murmurhash3/murmurHash3.js'); - - // font detector - var Detector = require('./vendors/font-detect/fontdetect.js'); - - // User agent parser - var UAParser = require('./vendors/ua-parser/UAParser.js'); - - var CBFjs = function CBFjs() {}; - - CBFjs.prototype = { - /* - Get screen resolution - */ - getScreenResolution: function getScreenResolution() { - var fixed_width = window.screen.width; - var fixed_height = window.screen.height; - var res = Math.round(fixed_width / fixed_height * 100) / 100; - return res; - }, - - // /* - // Get number of CPU cores - // Future async function TODO implement with core_estimator library - // */ - // getCPUCores: function (done) { - // if (!navigator.getHardwareConcurrency) { - // return done(-1); - // } else { - // navigator.getHardwareConcurrency(done); - // return; - // } - // }, - - /* - Get number of CPU cores - */ - getCPUCores: function getCPUCores() { - return navigator.hardwareConcurrency; - }, - - /* - Get touch support - */ - getTouchSupport: function getTouchSupport() { - return 'ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; - }, - - /* - [DISABLED - unsupported by IE] Audio card info - audioFingerPrinting: function () { - try { - var audioCtx = new (window.AudioContext || window.webkitAudioContext), - oscillator = audioCtx.createOscillator(), - analyser = audioCtx.createAnalyser(), - gainNode = audioCtx.createGain(), - scriptProcessor = audioCtx.createScriptProcessor(4096, 1, 1); - var destination = audioCtx.destination; - return (audioCtx.sampleRate).toString() + '_' + destination.maxChannelCount + "_" + destination.numberOfInputs + '_' + destination.numberOfOutputs + '_' + destination.channelCount + '_' + destination.channelCountMode + '_' + destination.channelInterpretation; - } - catch (e) { - return "not supported"; - } - }, - */ - - /* - Get color depth of the device's screen - */ - getColorDepth: function getColorDepth() { - return screen.colorDepth; - }, - - /* - Get timezone offset in minutes. Calculated as UTC - device's time zone - */ - getTimezoneOffset: function getTimezoneOffset() { - var currentDate = new Date(); - return currentDate.getTimezoneOffset(); - }, - - /* - Get list of fonts - */ - getFonts: function getFonts(done) { - document.addEventListener("DOMContentLoaded", function (event) { - var fontDetective = new Detector(); - var fonts = fontDetective.testAllFonts(); - done(fonts); - }); - }, - - /* - Get OS - */ - getOS: function getOS() { - var uap = new UAParser(); - return uap.getOS().name; - }, - - /* - Get OS version - */ - getOSVersion: function getOSVersion() { - var uap = new UAParser(); - return uap.getOS().version; - }, - - /* - Detects if device is a mobile - */ - isMobile: function isMobile() { - // detectmobilebrowsers.com JavaScript Mobile Detection Script - var uap = new UAParser(); - var browserData = uap.getResult(); - var dataString = browserData.ua || navigator.vendor || window.opera; - return (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(dataString) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(dataString.substr(0, 4)) - ); - }, - - /* - Get CPU architecture - */ - getCPUarchitecture: function getCPUarchitecture() { - var uap = new UAParser(); - return uap.getCPU().architecture; - }, - - // /* - // Helper function to handle asynchronous call - // */ - generateAsyncHash: function generateAsyncHash(parameters, done) { - // this.getCPUCores(function(cores) { - // parameters.push(cores); - // done(parameters); - // }); - this.getFonts(function (fonts) { - parameters.push(fonts); - done(parameters); - }); - }, - - /* - Generate hash from all features - */ - get: function get(done) { - var parameters = []; - parameters.push(this.getScreenResolution()); - parameters.push(this.getTouchSupport()); - parameters.push(this.getColorDepth()); - parameters.push(this.getTimezoneOffset()); - // Removed from here as it is async function - // parameters.push(this.getFonts()); - parameters.push(this.getOS()); - parameters.push(this.getOSVersion()); - parameters.push(this.isMobile()); - parameters.push(this.getCPUarchitecture()); - // Disabled as it is not supported by IE - //parameters.push(this.audioFingerPrinting()); - parameters.push(this.getCPUCores()); - - // Async version of generating hash - this.generateAsyncHash(parameters, function (newParameters) { - var hash = murmurHash3.x86.hash32(newParameters.join("~~~")); - return done(hash, newParameters); - }); - // var hash = murmurHash3.x86.hash32((parameters).join("~~~")); - // return done(hash, parameters); + 'use strict'; + /* Helpers */ + // murmurhash3 non crypto hash library for hash generation + // core estimator to estimate number of cores of CPU + + var murmurHash3 = require('./vendors/murmurhash3/murmurHash3.js'); // font detector + + + var Detector = require('./vendors/font-detect/fontdetect.js'); // User agent parser + + + var UAParser = require('./vendors/ua-parser/UAParser.js'); + + var CBFjs = function CBFjs() {}; + + CBFjs.prototype = { + /* + Get screen resolution + */ + getScreenResolution: function getScreenResolution() { + var fixed_width = window.screen.width; + var fixed_height = window.screen.height; + var res = Math.round(fixed_width / fixed_height * 100) / 100; + return res; + }, + // /* + // Get number of CPU cores + // Future async function TODO implement with core_estimator library + // */ + // getCPUCores: function (done) { + // if (!navigator.getHardwareConcurrency) { + // return done(-1); + // } else { + // navigator.getHardwareConcurrency(done); + // return; + // } + // }, + + /* + Get number of CPU cores + */ + getCPUCores: function getCPUCores() { + return navigator.hardwareConcurrency; + }, + + /* + Get touch support + */ + getTouchSupport: function getTouchSupport() { + return 'ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; + }, + + /* + [DISABLED - unsupported by IE] Audio card info + audioFingerPrinting: function () { + try { + var audioCtx = new (window.AudioContext || window.webkitAudioContext), + oscillator = audioCtx.createOscillator(), + analyser = audioCtx.createAnalyser(), + gainNode = audioCtx.createGain(), + scriptProcessor = audioCtx.createScriptProcessor(4096, 1, 1); + var destination = audioCtx.destination; + return (audioCtx.sampleRate).toString() + '_' + destination.maxChannelCount + "_" + destination.numberOfInputs + '_' + destination.numberOfOutputs + '_' + destination.channelCount + '_' + destination.channelCountMode + '_' + destination.channelInterpretation; + } + catch (e) { + return "not supported"; } - }; + }, + */ - if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object' && typeof exports !== "undefined") { - module.exports = CBFjs; - } else { - scope.CBFjs = CBFjs; + /* + Get color depth of the device's screen + */ + getColorDepth: function getColorDepth() { + return screen.colorDepth; + }, + + /* + Get timezone offset in minutes. Calculated as UTC - device's time zone + */ + getTimezoneOffset: function getTimezoneOffset() { + var currentDate = new Date(); + return currentDate.getTimezoneOffset(); + }, + + /* + Get list of fonts + */ + getFonts: function getFonts(done) { + document.addEventListener("DOMContentLoaded", function (event) { + var fontDetective = new Detector(); + var fonts = fontDetective.testAllFonts(); + done(fonts); + }); + }, + + /* + Get OS + */ + getOS: function getOS() { + var uap = new UAParser(); + return uap.getOS().name; + }, + + /* + Get OS version + */ + getOSVersion: function getOSVersion() { + var uap = new UAParser(); + return uap.getOS().version; + }, + + /* + Detects if device is a mobile + */ + isMobile: function isMobile() { + // detectmobilebrowsers.com JavaScript Mobile Detection Script + var uap = new UAParser(); + var browserData = uap.getResult(); + var dataString = browserData.ua || navigator.vendor || window.opera; + return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(dataString) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(dataString.substr(0, 4)); + }, + + /* + Get CPU architecture + */ + getCPUarchitecture: function getCPUarchitecture() { + var uap = new UAParser(); + return uap.getCPU().architecture; + }, + // /* + // Helper function to handle asynchronous call + // */ + generateAsyncHash: function generateAsyncHash(parameters, done) { + // this.getCPUCores(function(cores) { + // parameters.push(cores); + // done(parameters); + // }); + this.getFonts(function (fonts) { + parameters.push(fonts); + done(parameters); + }); + }, + + /* + Generate hash from all features + */ + get: function get(done) { + var parameters = []; + parameters.push(this.getScreenResolution()); + parameters.push(this.getTouchSupport()); + parameters.push(this.getColorDepth()); + parameters.push(this.getTimezoneOffset()); // Removed from here as it is async function + // parameters.push(this.getFonts()); + + parameters.push(this.getOS()); + parameters.push(this.getOSVersion()); + parameters.push(this.isMobile()); + parameters.push(this.getCPUarchitecture()); // Disabled as it is not supported by IE + //parameters.push(this.audioFingerPrinting()); + + parameters.push(this.getCPUCores()); // Async version of generating hash + + this.generateAsyncHash(parameters, function (newParameters) { + var hash = murmurHash3.x86.hash32(newParameters.join("~~~")); + return done(hash, newParameters); + }); // var hash = murmurHash3.x86.hash32((parameters).join("~~~")); + // return done(hash, parameters); } -})(undefined); \ No newline at end of file + }; + + if ((typeof module === "undefined" ? "undefined" : _typeof(module)) === 'object' && typeof exports !== "undefined") { + module.exports = CBFjs; + } else { + scope.CBFjs = CBFjs; + } +})(void 0); \ No newline at end of file diff --git a/dist/cbfjs.test.js b/dist/cbfjs.test.js new file mode 100644 index 0000000..19d4605 --- /dev/null +++ b/dist/cbfjs.test.js @@ -0,0 +1,96 @@ +"use strict"; + +var expect = require('chai').expect; // Simulates browser with it's dom elements (window, document, etc.) inside Node.js +//var CBFjs = require('./cbfjs'); + + +describe('CBFjs', function () { + var Detector = require('./vendors/font-detect/fontdetect.js'); + + var CBFjs; + before(function () { + CBFjs = require('./cbfjs'); + Object.defineProperty(window.navigator, 'userAgent', { + value: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.3" + }); + }); + describe('new', function () { + it('creates a new instance of CBFjs', function () { + var cbfjs = new CBFjs(); + expect(cbfjs).to.not.be.null; + }); + }); + describe('components', function () { + describe('getCPUcores', function () { + it('gets number of cpu cores', function () { + var testValue = new CBFjs().getCPUCores(); + expect(testValue).to.be.a('number'); + }); + }); + describe('getScreenResolution', function () { + it('gets screen resolution', function () { + expect(new CBFjs().getScreenResolution()).to.be.a('number'); + }); + }); + describe('getTouchSupport', function () { + it('gets support of touch screen', function () { + expect(new CBFjs().getTouchSupport()).to.be.a('boolean'); + }); + }); + describe('getColorDepth', function () { + it('gets color depth of the screen', function () { + expect(new CBFjs().getColorDepth()).to.be.a('number'); + }); + }); + describe('getTimezoneOffset', function () { + it('gets timezone offset', function () { + expect(new CBFjs().getTimezoneOffset()).to.be.a('number'); + }); + }); + describe('getOS', function () { + it('gets OS name', function () { + expect(new CBFjs().getOS()).to.be.a('string'); + }); + }); + describe('getOSVersion', function () { + it('gets OS version', function () { + expect(new CBFjs().getOSVersion()).to.be.a('string'); + }); + }); + describe('isMobile', function () { + it('is mobile phone', function () { + expect(new CBFjs().isMobile()).to.be.a('boolean'); + }); + }); + describe('getFonts', function () { + it('creates font detector', function () { + var detector = new Detector(); + expect(detector).to.not.be.null; + }); + it('returns font list', function () { + // Create the event. + var event = document.createEvent('Event'); + event.initEvent('DOMContentLoaded', true, true); + window.document.dispatchEvent(event); + var cbfjs = new CBFjs(); + var fonts = cbfjs.getFonts(); + expect(fonts).to.not.be.null; + }); + }); + describe('getCPUarchitecture', function () { + it('returns cpu architecture value', function () { + var cbfjs = new CBFjs(); + expect(cbfjs.getCPUarchitecture()).to.not.be.undefined; + }); + }); + }); + describe('hash creation', function () { + it('generates proper hash', function () { + var cbfjs = new CBFjs(); + cbfjs.get(function (hash, components) { + expect(hash).to.be.a("number"); + expect(components).to.be.a("array"); + }); + }); + }); +}); \ No newline at end of file diff --git a/dist/cbfjs.umd.js b/dist/cbfjs.umd.js index 24c9fc0..2d5e425 100644 --- a/dist/cbfjs.umd.js +++ b/dist/cbfjs.umd.js @@ -129,32 +129,31 @@ module.exports = __webpack_amd_options__; !*** (webpack)/buildin/module.js ***! \***********************************/ /*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - +/***/ (function(module, exports) { module.exports = function (module) { - if (!module.webpackPolyfill) { - module.deprecate = function () {}; - module.paths = []; - // module.parent = undefined by default - if (!module.children) module.children = []; - Object.defineProperty(module, "loaded", { - enumerable: true, - get: function get() { - return module.l; - } - }); - Object.defineProperty(module, "id", { - enumerable: true, - get: function get() { - return module.i; - } - }); - module.webpackPolyfill = 1; - } - return module; + if (!module.webpackPolyfill) { + module.deprecate = function () {}; + + module.paths = []; // module.parent = undefined by default + + if (!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function () { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function () { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + + return module; }; /***/ }), @@ -166,10 +165,7 @@ module.exports = function (module) { /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -/* WEBPACK VAR INJECTION */(function(module) { - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /* CBFjs is library for cross-browser fingerprinting @@ -177,190 +173,183 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol Library was inspired by Song Li's https://github.com/Song-Li/dynamic_fingerprinting dynamic fingerprinting tool */ (function (scope) { - 'use strict'; - - /* Helpers */ - - // murmurhash3 non crypto hash library for hash generation - // core estimator to estimate number of cores of CPU + 'use strict'; + /* Helpers */ + // murmurhash3 non crypto hash library for hash generation + // core estimator to estimate number of cores of CPU - var murmurHash3 = __webpack_require__(/*! ./vendors/murmurhash3/murmurHash3.js */ "./src/vendors/murmurhash3/murmurHash3.js"); + var murmurHash3 = __webpack_require__(/*! ./vendors/murmurhash3/murmurHash3.js */ "./src/vendors/murmurhash3/murmurHash3.js"); // font detector - // font detector - var Detector = __webpack_require__(/*! ./vendors/font-detect/fontdetect.js */ "./src/vendors/font-detect/fontdetect.js"); - // User agent parser - var UAParser = __webpack_require__(/*! ./vendors/ua-parser/UAParser.js */ "./src/vendors/ua-parser/UAParser.js"); + var Detector = __webpack_require__(/*! ./vendors/font-detect/fontdetect.js */ "./src/vendors/font-detect/fontdetect.js"); // User agent parser - var CBFjs = function CBFjs() {}; - CBFjs.prototype = { - /* - Get screen resolution - */ - getScreenResolution: function getScreenResolution() { - var fixed_width = window.screen.width; - var fixed_height = window.screen.height; - var res = Math.round(fixed_width / fixed_height * 100) / 100; - return res; - }, + var UAParser = __webpack_require__(/*! ./vendors/ua-parser/UAParser.js */ "./src/vendors/ua-parser/UAParser.js"); - // /* - // Get number of CPU cores - // Future async function TODO implement with core_estimator library - // */ - // getCPUCores: function (done) { - // if (!navigator.getHardwareConcurrency) { - // return done(-1); - // } else { - // navigator.getHardwareConcurrency(done); - // return; - // } - // }, - - /* - Get number of CPU cores - */ - getCPUCores: function getCPUCores() { - return navigator.hardwareConcurrency; - }, + var CBFjs = function CBFjs() {}; - /* - Get touch support - */ - getTouchSupport: function getTouchSupport() { - return 'ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; - }, + CBFjs.prototype = { + /* + Get screen resolution + */ + getScreenResolution: function getScreenResolution() { + var fixed_width = window.screen.width; + var fixed_height = window.screen.height; + var res = Math.round(fixed_width / fixed_height * 100) / 100; + return res; + }, + // /* + // Get number of CPU cores + // Future async function TODO implement with core_estimator library + // */ + // getCPUCores: function (done) { + // if (!navigator.getHardwareConcurrency) { + // return done(-1); + // } else { + // navigator.getHardwareConcurrency(done); + // return; + // } + // }, - /* - [DISABLED - unsupported by IE] Audio card info - audioFingerPrinting: function () { - try { - var audioCtx = new (window.AudioContext || window.webkitAudioContext), - oscillator = audioCtx.createOscillator(), - analyser = audioCtx.createAnalyser(), - gainNode = audioCtx.createGain(), - scriptProcessor = audioCtx.createScriptProcessor(4096, 1, 1); - var destination = audioCtx.destination; - return (audioCtx.sampleRate).toString() + '_' + destination.maxChannelCount + "_" + destination.numberOfInputs + '_' + destination.numberOfOutputs + '_' + destination.channelCount + '_' + destination.channelCountMode + '_' + destination.channelInterpretation; - } - catch (e) { - return "not supported"; - } - }, - */ + /* + Get number of CPU cores + */ + getCPUCores: function getCPUCores() { + return navigator.hardwareConcurrency; + }, - /* - Get color depth of the device's screen - */ - getColorDepth: function getColorDepth() { - return screen.colorDepth; - }, + /* + Get touch support + */ + getTouchSupport: function getTouchSupport() { + return 'ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; + }, - /* - Get timezone offset in minutes. Calculated as UTC - device's time zone - */ - getTimezoneOffset: function getTimezoneOffset() { - var currentDate = new Date(); - return currentDate.getTimezoneOffset(); - }, + /* + [DISABLED - unsupported by IE] Audio card info + audioFingerPrinting: function () { + try { + var audioCtx = new (window.AudioContext || window.webkitAudioContext), + oscillator = audioCtx.createOscillator(), + analyser = audioCtx.createAnalyser(), + gainNode = audioCtx.createGain(), + scriptProcessor = audioCtx.createScriptProcessor(4096, 1, 1); + var destination = audioCtx.destination; + return (audioCtx.sampleRate).toString() + '_' + destination.maxChannelCount + "_" + destination.numberOfInputs + '_' + destination.numberOfOutputs + '_' + destination.channelCount + '_' + destination.channelCountMode + '_' + destination.channelInterpretation; + } + catch (e) { + return "not supported"; + } + }, + */ - /* - Get list of fonts - */ - getFonts: function getFonts(done) { - document.addEventListener("DOMContentLoaded", function (event) { - var fontDetective = new Detector(); - var fonts = fontDetective.testAllFonts(); - done(fonts); - }); - }, + /* + Get color depth of the device's screen + */ + getColorDepth: function getColorDepth() { + return screen.colorDepth; + }, - /* - Get OS - */ - getOS: function getOS() { - var uap = new UAParser(); - return uap.getOS().name; - }, + /* + Get timezone offset in minutes. Calculated as UTC - device's time zone + */ + getTimezoneOffset: function getTimezoneOffset() { + var currentDate = new Date(); + return currentDate.getTimezoneOffset(); + }, - /* - Get OS version - */ - getOSVersion: function getOSVersion() { - var uap = new UAParser(); - return uap.getOS().version; - }, + /* + Get list of fonts + */ + getFonts: function getFonts(done) { + document.addEventListener("DOMContentLoaded", function (event) { + var fontDetective = new Detector(); + var fonts = fontDetective.testAllFonts(); + done(fonts); + }); + }, - /* - Detects if device is a mobile - */ - isMobile: function isMobile() { - // detectmobilebrowsers.com JavaScript Mobile Detection Script - var uap = new UAParser(); - var browserData = uap.getResult(); - var dataString = browserData.ua || navigator.vendor || window.opera; - return (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(dataString) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(dataString.substr(0, 4)) - ); - }, + /* + Get OS + */ + getOS: function getOS() { + var uap = new UAParser(); + return uap.getOS().name; + }, - /* - Get CPU architecture - */ - getCPUarchitecture: function getCPUarchitecture() { - var uap = new UAParser(); - return uap.getCPU().architecture; - }, + /* + Get OS version + */ + getOSVersion: function getOSVersion() { + var uap = new UAParser(); + return uap.getOS().version; + }, - // /* - // Helper function to handle asynchronous call - // */ - generateAsyncHash: function generateAsyncHash(parameters, done) { - // this.getCPUCores(function(cores) { - // parameters.push(cores); - // done(parameters); - // }); - this.getFonts(function (fonts) { - parameters.push(fonts); - done(parameters); - }); - }, + /* + Detects if device is a mobile + */ + isMobile: function isMobile() { + // detectmobilebrowsers.com JavaScript Mobile Detection Script + var uap = new UAParser(); + var browserData = uap.getResult(); + var dataString = browserData.ua || navigator.vendor || window.opera; + return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(dataString) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(dataString.substr(0, 4)); + }, - /* - Generate hash from all features - */ - get: function get(done) { - var parameters = []; - parameters.push(this.getScreenResolution()); - parameters.push(this.getTouchSupport()); - parameters.push(this.getColorDepth()); - parameters.push(this.getTimezoneOffset()); - // Removed from here as it is async function - // parameters.push(this.getFonts()); - parameters.push(this.getOS()); - parameters.push(this.getOSVersion()); - parameters.push(this.isMobile()); - parameters.push(this.getCPUarchitecture()); - // Disabled as it is not supported by IE - //parameters.push(this.audioFingerPrinting()); - parameters.push(this.getCPUCores()); - - // Async version of generating hash - this.generateAsyncHash(parameters, function (newParameters) { - var hash = murmurHash3.x86.hash32(newParameters.join("~~~")); - return done(hash, newParameters); - }); - // var hash = murmurHash3.x86.hash32((parameters).join("~~~")); - // return done(hash, parameters); - } - }; + /* + Get CPU architecture + */ + getCPUarchitecture: function getCPUarchitecture() { + var uap = new UAParser(); + return uap.getCPU().architecture; + }, + // /* + // Helper function to handle asynchronous call + // */ + generateAsyncHash: function generateAsyncHash(parameters, done) { + // this.getCPUCores(function(cores) { + // parameters.push(cores); + // done(parameters); + // }); + this.getFonts(function (fonts) { + parameters.push(fonts); + done(parameters); + }); + }, - if (( false ? undefined : _typeof(module)) === 'object' && typeof exports !== "undefined") { - module.exports = CBFjs; - } else { - scope.CBFjs = CBFjs; + /* + Generate hash from all features + */ + get: function get(done) { + var parameters = []; + parameters.push(this.getScreenResolution()); + parameters.push(this.getTouchSupport()); + parameters.push(this.getColorDepth()); + parameters.push(this.getTimezoneOffset()); // Removed from here as it is async function + // parameters.push(this.getFonts()); + + parameters.push(this.getOS()); + parameters.push(this.getOSVersion()); + parameters.push(this.isMobile()); + parameters.push(this.getCPUarchitecture()); // Disabled as it is not supported by IE + //parameters.push(this.audioFingerPrinting()); + + parameters.push(this.getCPUCores()); // Async version of generating hash + + this.generateAsyncHash(parameters, function (newParameters) { + var hash = murmurHash3.x86.hash32(newParameters.join("~~~")); + return done(hash, newParameters); + }); // var hash = murmurHash3.x86.hash32((parameters).join("~~~")); + // return done(hash, parameters); } -})(undefined); + }; + + if (( false ? undefined : _typeof(module)) === 'object' && typeof exports !== "undefined") { + module.exports = CBFjs; + } else { + scope.CBFjs = CBFjs; + } +})(this); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) /***/ }), @@ -372,12 +361,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -/* WEBPACK VAR INJECTION */(function(module) { - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /* Edited by Lukas Matta (Add module export) */ + /** * JavaScript code to detect available availability of a * particular font in a browser using JavaScript and CSS. @@ -403,93 +390,97 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * d.detect('font name'); */ (function (scope) { - 'use strict'; - - /** - * JavaScript code to detect available availability of a - * particular font in a browser using JavaScript and CSS. - * - * Author : Lalit Patel - * Website: http://www.lalit.org/lab/javascript-css-font-detect/ - * License: Apache Software License 2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * Version: 0.15 (21 Sep 2009) - * Changed comparision font to default from sans-default-default, - * as in FF3.0 font of child element didn't fallback - * to parent element if the font is missing. - * Version: 0.2 (04 Mar 2012) - * Comparing font against all the 3 generic font families ie, - * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3 - * then that font is 100% not available in the system - * Version: 0.3 (24 Mar 2012) - * Replaced sans with serif in the list of baseFonts - */ + 'use strict'; + /** + * JavaScript code to detect available availability of a + * particular font in a browser using JavaScript and CSS. + * + * Author : Lalit Patel + * Website: http://www.lalit.org/lab/javascript-css-font-detect/ + * License: Apache Software License 2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * Version: 0.15 (21 Sep 2009) + * Changed comparision font to default from sans-default-default, + * as in FF3.0 font of child element didn't fallback + * to parent element if the font is missing. + * Version: 0.2 (04 Mar 2012) + * Comparing font against all the 3 generic font families ie, + * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3 + * then that font is 100% not available in the system + * Version: 0.3 (24 Mar 2012) + * Replaced sans with serif in the list of baseFonts + */ + + /** + * Usage: d = new Detector(); + * d.detect('font name'); + */ + + var Detector = function Detector() { + // a font will be compared against all the three default fonts. + // and if it doesn't match all 3 then that font is not available. + var baseFonts = ['monospace', 'sans-serif', 'serif']; + var fontList = ["Andale Mono", "Arial", "Arial Black", "Arial Hebrew", "Arial MT", "Arial Narrow", "Arial Unicode MS", "Bitstream Vera Sans Mono", "Book Antiqua", "Bookman Old Style", "Calibri", "Cambria", "Cambria Math", "Century", "Century Gothic", "Century Schoolbook", "Comic Sans", "Comic Sans MS", "Consolas", "Courier", "Courier New", "Garamond", "Geneva", "Georgia", "Helvetica", "Helvetica Neue", "Impact", "Lucida Bright", "Lucida Calligraphy", "Lucida Console", "Lucida Fax", "LUCIDA GRANDE", "Lucida Handwriting", "Lucida Sans", "Lucida Sans Typewriter", "Lucida Sans Unicode", "Microsoft Sans Serif", "Monaco", "Monotype Corsiva", "MS Gothic", "MS Outlook", "MS PGothic", "MS Reference Sans Serif", "MS Sans Serif", "MS Serif", "MYRIAD", "MYRIAD PRO", "Palatino", "Palatino Linotype", "Segoe Print", "Segoe Script", "Segoe UI", "Segoe UI Light", "Segoe UI Semibold", "Segoe UI Symbol", "Tahoma", "Times", "Times New Roman", "Times New Roman PS", "Trebuchet MS", "Verdana", "Wingdings", "Wingdings 2", "Wingdings 3"]; + var moreFonts = ["Abadi MT Condensed Light", "Academy Engraved LET", "ADOBE CASLON PRO", "Adobe Garamond", "ADOBE GARAMOND PRO", "Agency FB", "Aharoni", "Albertus Extra Bold", "Albertus Medium", "Algerian", "Amazone BT", "American Typewriter", "American Typewriter Condensed", "AmerType Md BT", "Andalus", "Angsana New", "AngsanaUPC", "Antique Olive", "Aparajita", "Apple Chancery", "Apple Color Emoji", "Apple SD Gothic Neo", "Arabic Typesetting", "ARCHER", "ARNO PRO", "Arrus BT", "Aurora Cn BT", "AvantGarde Bk BT", "AvantGarde Md BT", "AVENIR", "Ayuthaya", "Bandy", "Bangla Sangam MN", "Bank Gothic", "BankGothic Md BT", "Baskerville", "Baskerville Old Face", "Batang", "BatangChe", "Bauer Bodoni", "Bauhaus 93", "Bazooka", "Bell MT", "Bembo", "Benguiat Bk BT", "Berlin Sans FB", "Berlin Sans FB Demi", "Bernard MT Condensed", "BernhardFashion BT", "BernhardMod BT", "Big Caslon", "BinnerD", "Blackadder ITC", "BlairMdITC TT", "Bodoni 72", "Bodoni 72 Oldstyle", "Bodoni 72 Smallcaps", "Bodoni MT", "Bodoni MT Black", "Bodoni MT Condensed", "Bodoni MT Poster Compressed", "Bookshelf Symbol 7", "Boulder", "Bradley Hand", "Bradley Hand ITC", "Bremen Bd BT", "Britannic Bold", "Broadway", "Browallia New", "BrowalliaUPC", "Brush Script MT", "Californian FB", "Calisto MT", "Calligrapher", "Candara", "CaslonOpnface BT", "Castellar", "Centaur", "Cezanne", "CG Omega", "CG Times", "Chalkboard", "Chalkboard SE", "Chalkduster", "Charlesworth", "Charter Bd BT", "Charter BT", "Chaucer", "ChelthmITC Bk BT", "Chiller", "Clarendon", "Clarendon Condensed", "CloisterBlack BT", "Cochin", "Colonna MT", "Constantia", "Cooper Black", "Copperplate", "Copperplate Gothic", "Copperplate Gothic Bold", "Copperplate Gothic Light", "CopperplGoth Bd BT", "Corbel", "Cordia New", "CordiaUPC", "Cornerstone", "Coronet", "Cuckoo", "Curlz MT", "DaunPenh", "Dauphin", "David", "DB LCD Temp", "DELICIOUS", "Denmark", "DFKai-SB", "Didot", "DilleniaUPC", "DIN", "DokChampa", "Dotum", "DotumChe", "Ebrima", "Edwardian Script ITC", "Elephant", "English 111 Vivace BT", "Engravers MT", "EngraversGothic BT", "Eras Bold ITC", "Eras Demi ITC", "Eras Light ITC", "Eras Medium ITC", "EucrosiaUPC", "Euphemia", "Euphemia UCAS", "EUROSTILE", "Exotc350 Bd BT", "FangSong", "Felix Titling", "Fixedsys", "FONTIN", "Footlight MT Light", "Forte", "FrankRuehl", "Fransiscan", "Freefrm721 Blk BT", "FreesiaUPC", "Freestyle Script", "French Script MT", "FrnkGothITC Bk BT", "Fruitger", "FRUTIGER", "Futura", "Futura Bk BT", "Futura Lt BT", "Futura Md BT", "Futura ZBlk BT", "FuturaBlack BT", "Gabriola", "Galliard BT", "Gautami", "Geeza Pro", "Geometr231 BT", "Geometr231 Hv BT", "Geometr231 Lt BT", "GeoSlab 703 Lt BT", "GeoSlab 703 XBd BT", "Gigi", "Gill Sans", "Gill Sans MT", "Gill Sans MT Condensed", "Gill Sans MT Ext Condensed Bold", "Gill Sans Ultra Bold", "Gill Sans Ultra Bold Condensed", "Gisha", "Gloucester MT Extra Condensed", "GOTHAM", "GOTHAM BOLD", "Goudy Old Style", "Goudy Stout", "GoudyHandtooled BT", "GoudyOLSt BT", "Gujarati Sangam MN", "Gulim", "GulimChe", "Gungsuh", "GungsuhChe", "Gurmukhi MN", "Haettenschweiler", "Harlow Solid Italic", "Harrington", "Heather", "Heiti SC", "Heiti TC", "HELV", "Herald", "High Tower Text", "Hiragino Kaku Gothic ProN", "Hiragino Mincho ProN", "Hoefler Text", "Humanst 521 Cn BT", "Humanst521 BT", "Humanst521 Lt BT", "Imprint MT Shadow", "Incised901 Bd BT", "Incised901 BT", "Incised901 Lt BT", "INCONSOLATA", "Informal Roman", "Informal011 BT", "INTERSTATE", "IrisUPC", "Iskoola Pota", "JasmineUPC", "Jazz LET", "Jenson", "Jester", "Jokerman", "Juice ITC", "Kabel Bk BT", "Kabel Ult BT", "Kailasa", "KaiTi", "Kalinga", "Kannada Sangam MN", "Kartika", "Kaufmann Bd BT", "Kaufmann BT", "Khmer UI", "KodchiangUPC", "Kokila", "Korinna BT", "Kristen ITC", "Krungthep", "Kunstler Script", "Lao UI", "Latha", "Leelawadee", "Letter Gothic", "Levenim MT", "LilyUPC", "Lithograph", "Lithograph Light", "Long Island", "Lydian BT", "Magneto", "Maiandra GD", "Malayalam Sangam MN", "Malgun Gothic", "Mangal", "Marigold", "Marion", "Marker Felt", "Market", "Marlett", "Matisse ITC", "Matura MT Script Capitals", "Meiryo", "Meiryo UI", "Microsoft Himalaya", "Microsoft JhengHei", "Microsoft New Tai Lue", "Microsoft PhagsPa", "Microsoft Tai Le", "Microsoft Uighur", "Microsoft YaHei", "Microsoft Yi Baiti", "MingLiU", "MingLiU_HKSCS", "MingLiU_HKSCS-ExtB", "MingLiU-ExtB", "Minion", "Minion Pro", "Miriam", "Miriam Fixed", "Mistral", "Modern", "Modern No. 20", "Mona Lisa Solid ITC TT", "Mongolian Baiti", "MONO", "MoolBoran", "Mrs Eaves", "MS LineDraw", "MS Mincho", "MS PMincho", "MS Reference Specialty", "MS UI Gothic", "MT Extra", "MUSEO", "MV Boli", "Nadeem", "Narkisim", "NEVIS", "News Gothic", "News GothicMT", "NewsGoth BT", "Niagara Engraved", "Niagara Solid", "Noteworthy", "NSimSun", "Nyala", "OCR A Extended", "Old Century", "Old English Text MT", "Onyx", "Onyx BT", "OPTIMA", "Oriya Sangam MN", "OSAKA", "OzHandicraft BT", "Palace Script MT", "Papyrus", "Parchment", "Party LET", "Pegasus", "Perpetua", "Perpetua Titling MT", "PetitaBold", "Pickwick", "Plantagenet Cherokee", "Playbill", "PMingLiU", "PMingLiU-ExtB", "Poor Richard", "Poster", "PosterBodoni BT", "PRINCETOWN LET", "Pristina", "PTBarnum BT", "Pythagoras", "Raavi", "Rage Italic", "Ravie", "Ribbon131 Bd BT", "Rockwell", "Rockwell Condensed", "Rockwell Extra Bold", "Rod", "Roman", "Sakkal Majalla", "Santa Fe LET", "Savoye LET", "Sceptre", "Script", "Script MT Bold", "SCRIPTINA", "Serifa", "Serifa BT", "Serifa Th BT", "ShelleyVolante BT", "Sherwood", "Shonar Bangla", "Showcard Gothic", "Shruti", "Signboard", "SILKSCREEN", "SimHei", "Simplified Arabic", "Simplified Arabic Fixed", "SimSun", "SimSun-ExtB", "Sinhala Sangam MN", "Sketch Rockwell", "Skia", "Small Fonts", "Snap ITC", "Snell Roundhand", "Socket", "Souvenir Lt BT", "Staccato222 BT", "Steamer", "Stencil", "Storybook", "Styllo", "Subway", "Swis721 BlkEx BT", "Swiss911 XCm BT", "Sylfaen", "Synchro LET", "System", "Tamil Sangam MN", "Technical", "Teletype", "Telugu Sangam MN", "Tempus Sans ITC", "Terminal", "Thonburi", "Traditional Arabic", "Trajan", "TRAJAN PRO", "Tristan", "Tubular", "Tunga", "Tw Cen MT", "Tw Cen MT Condensed", "Tw Cen MT Condensed Extra Bold", "TypoUpright BT", "Unicorn", "Univers", "Univers CE 55 Medium", "Univers Condensed", "Utsaah", "Vagabond", "Vani", "Vijaya", "Viner Hand ITC", "VisualUI", "Vivaldi", "Vladimir Script", "Vrinda", "Westminster", "WHITNEY", "Wide Latin", "ZapfEllipt BT", "ZapfHumnst BT", "ZapfHumnst Dm BT", "Zapfino", "Zurich BlkEx BT", "Zurich Ex BT", "ZWAdobeF"]; //we use m or w because these two characters take up the maximum width. + // And we use a LLi so that the same matching fonts can get separated + + var testString = "mmmmmmmmmmlli"; //we test using 72px font size, we may use any size. I guess larger the better. + + var testSize = '72px'; + var h = document.getElementsByTagName("body")[0]; // create a SPAN in the document to get the width of the text we use to test + + var s = document.createElement("span"); + s.style.fontSize = testSize; + s.innerHTML = testString; + var defaultWidth = {}; + var defaultHeight = {}; + + for (var index in baseFonts) { + //get the default width for the three base fonts + s.style.fontFamily = baseFonts[index]; + h.appendChild(s); + defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font + + defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font + + h.removeChild(s); + } - /** - * Usage: d = new Detector(); - * d.detect('font name'); - */ + this.testAllFonts = function () { + var detected = []; - var Detector = function Detector() { - // a font will be compared against all the three default fonts. - // and if it doesn't match all 3 then that font is not available. - var baseFonts = ['monospace', 'sans-serif', 'serif']; - var fontList = ["Andale Mono", "Arial", "Arial Black", "Arial Hebrew", "Arial MT", "Arial Narrow", "Arial Unicode MS", "Bitstream Vera Sans Mono", "Book Antiqua", "Bookman Old Style", "Calibri", "Cambria", "Cambria Math", "Century", "Century Gothic", "Century Schoolbook", "Comic Sans", "Comic Sans MS", "Consolas", "Courier", "Courier New", "Garamond", "Geneva", "Georgia", "Helvetica", "Helvetica Neue", "Impact", "Lucida Bright", "Lucida Calligraphy", "Lucida Console", "Lucida Fax", "LUCIDA GRANDE", "Lucida Handwriting", "Lucida Sans", "Lucida Sans Typewriter", "Lucida Sans Unicode", "Microsoft Sans Serif", "Monaco", "Monotype Corsiva", "MS Gothic", "MS Outlook", "MS PGothic", "MS Reference Sans Serif", "MS Sans Serif", "MS Serif", "MYRIAD", "MYRIAD PRO", "Palatino", "Palatino Linotype", "Segoe Print", "Segoe Script", "Segoe UI", "Segoe UI Light", "Segoe UI Semibold", "Segoe UI Symbol", "Tahoma", "Times", "Times New Roman", "Times New Roman PS", "Trebuchet MS", "Verdana", "Wingdings", "Wingdings 2", "Wingdings 3"]; - var moreFonts = ["Abadi MT Condensed Light", "Academy Engraved LET", "ADOBE CASLON PRO", "Adobe Garamond", "ADOBE GARAMOND PRO", "Agency FB", "Aharoni", "Albertus Extra Bold", "Albertus Medium", "Algerian", "Amazone BT", "American Typewriter", "American Typewriter Condensed", "AmerType Md BT", "Andalus", "Angsana New", "AngsanaUPC", "Antique Olive", "Aparajita", "Apple Chancery", "Apple Color Emoji", "Apple SD Gothic Neo", "Arabic Typesetting", "ARCHER", "ARNO PRO", "Arrus BT", "Aurora Cn BT", "AvantGarde Bk BT", "AvantGarde Md BT", "AVENIR", "Ayuthaya", "Bandy", "Bangla Sangam MN", "Bank Gothic", "BankGothic Md BT", "Baskerville", "Baskerville Old Face", "Batang", "BatangChe", "Bauer Bodoni", "Bauhaus 93", "Bazooka", "Bell MT", "Bembo", "Benguiat Bk BT", "Berlin Sans FB", "Berlin Sans FB Demi", "Bernard MT Condensed", "BernhardFashion BT", "BernhardMod BT", "Big Caslon", "BinnerD", "Blackadder ITC", "BlairMdITC TT", "Bodoni 72", "Bodoni 72 Oldstyle", "Bodoni 72 Smallcaps", "Bodoni MT", "Bodoni MT Black", "Bodoni MT Condensed", "Bodoni MT Poster Compressed", "Bookshelf Symbol 7", "Boulder", "Bradley Hand", "Bradley Hand ITC", "Bremen Bd BT", "Britannic Bold", "Broadway", "Browallia New", "BrowalliaUPC", "Brush Script MT", "Californian FB", "Calisto MT", "Calligrapher", "Candara", "CaslonOpnface BT", "Castellar", "Centaur", "Cezanne", "CG Omega", "CG Times", "Chalkboard", "Chalkboard SE", "Chalkduster", "Charlesworth", "Charter Bd BT", "Charter BT", "Chaucer", "ChelthmITC Bk BT", "Chiller", "Clarendon", "Clarendon Condensed", "CloisterBlack BT", "Cochin", "Colonna MT", "Constantia", "Cooper Black", "Copperplate", "Copperplate Gothic", "Copperplate Gothic Bold", "Copperplate Gothic Light", "CopperplGoth Bd BT", "Corbel", "Cordia New", "CordiaUPC", "Cornerstone", "Coronet", "Cuckoo", "Curlz MT", "DaunPenh", "Dauphin", "David", "DB LCD Temp", "DELICIOUS", "Denmark", "DFKai-SB", "Didot", "DilleniaUPC", "DIN", "DokChampa", "Dotum", "DotumChe", "Ebrima", "Edwardian Script ITC", "Elephant", "English 111 Vivace BT", "Engravers MT", "EngraversGothic BT", "Eras Bold ITC", "Eras Demi ITC", "Eras Light ITC", "Eras Medium ITC", "EucrosiaUPC", "Euphemia", "Euphemia UCAS", "EUROSTILE", "Exotc350 Bd BT", "FangSong", "Felix Titling", "Fixedsys", "FONTIN", "Footlight MT Light", "Forte", "FrankRuehl", "Fransiscan", "Freefrm721 Blk BT", "FreesiaUPC", "Freestyle Script", "French Script MT", "FrnkGothITC Bk BT", "Fruitger", "FRUTIGER", "Futura", "Futura Bk BT", "Futura Lt BT", "Futura Md BT", "Futura ZBlk BT", "FuturaBlack BT", "Gabriola", "Galliard BT", "Gautami", "Geeza Pro", "Geometr231 BT", "Geometr231 Hv BT", "Geometr231 Lt BT", "GeoSlab 703 Lt BT", "GeoSlab 703 XBd BT", "Gigi", "Gill Sans", "Gill Sans MT", "Gill Sans MT Condensed", "Gill Sans MT Ext Condensed Bold", "Gill Sans Ultra Bold", "Gill Sans Ultra Bold Condensed", "Gisha", "Gloucester MT Extra Condensed", "GOTHAM", "GOTHAM BOLD", "Goudy Old Style", "Goudy Stout", "GoudyHandtooled BT", "GoudyOLSt BT", "Gujarati Sangam MN", "Gulim", "GulimChe", "Gungsuh", "GungsuhChe", "Gurmukhi MN", "Haettenschweiler", "Harlow Solid Italic", "Harrington", "Heather", "Heiti SC", "Heiti TC", "HELV", "Herald", "High Tower Text", "Hiragino Kaku Gothic ProN", "Hiragino Mincho ProN", "Hoefler Text", "Humanst 521 Cn BT", "Humanst521 BT", "Humanst521 Lt BT", "Imprint MT Shadow", "Incised901 Bd BT", "Incised901 BT", "Incised901 Lt BT", "INCONSOLATA", "Informal Roman", "Informal011 BT", "INTERSTATE", "IrisUPC", "Iskoola Pota", "JasmineUPC", "Jazz LET", "Jenson", "Jester", "Jokerman", "Juice ITC", "Kabel Bk BT", "Kabel Ult BT", "Kailasa", "KaiTi", "Kalinga", "Kannada Sangam MN", "Kartika", "Kaufmann Bd BT", "Kaufmann BT", "Khmer UI", "KodchiangUPC", "Kokila", "Korinna BT", "Kristen ITC", "Krungthep", "Kunstler Script", "Lao UI", "Latha", "Leelawadee", "Letter Gothic", "Levenim MT", "LilyUPC", "Lithograph", "Lithograph Light", "Long Island", "Lydian BT", "Magneto", "Maiandra GD", "Malayalam Sangam MN", "Malgun Gothic", "Mangal", "Marigold", "Marion", "Marker Felt", "Market", "Marlett", "Matisse ITC", "Matura MT Script Capitals", "Meiryo", "Meiryo UI", "Microsoft Himalaya", "Microsoft JhengHei", "Microsoft New Tai Lue", "Microsoft PhagsPa", "Microsoft Tai Le", "Microsoft Uighur", "Microsoft YaHei", "Microsoft Yi Baiti", "MingLiU", "MingLiU_HKSCS", "MingLiU_HKSCS-ExtB", "MingLiU-ExtB", "Minion", "Minion Pro", "Miriam", "Miriam Fixed", "Mistral", "Modern", "Modern No. 20", "Mona Lisa Solid ITC TT", "Mongolian Baiti", "MONO", "MoolBoran", "Mrs Eaves", "MS LineDraw", "MS Mincho", "MS PMincho", "MS Reference Specialty", "MS UI Gothic", "MT Extra", "MUSEO", "MV Boli", "Nadeem", "Narkisim", "NEVIS", "News Gothic", "News GothicMT", "NewsGoth BT", "Niagara Engraved", "Niagara Solid", "Noteworthy", "NSimSun", "Nyala", "OCR A Extended", "Old Century", "Old English Text MT", "Onyx", "Onyx BT", "OPTIMA", "Oriya Sangam MN", "OSAKA", "OzHandicraft BT", "Palace Script MT", "Papyrus", "Parchment", "Party LET", "Pegasus", "Perpetua", "Perpetua Titling MT", "PetitaBold", "Pickwick", "Plantagenet Cherokee", "Playbill", "PMingLiU", "PMingLiU-ExtB", "Poor Richard", "Poster", "PosterBodoni BT", "PRINCETOWN LET", "Pristina", "PTBarnum BT", "Pythagoras", "Raavi", "Rage Italic", "Ravie", "Ribbon131 Bd BT", "Rockwell", "Rockwell Condensed", "Rockwell Extra Bold", "Rod", "Roman", "Sakkal Majalla", "Santa Fe LET", "Savoye LET", "Sceptre", "Script", "Script MT Bold", "SCRIPTINA", "Serifa", "Serifa BT", "Serifa Th BT", "ShelleyVolante BT", "Sherwood", "Shonar Bangla", "Showcard Gothic", "Shruti", "Signboard", "SILKSCREEN", "SimHei", "Simplified Arabic", "Simplified Arabic Fixed", "SimSun", "SimSun-ExtB", "Sinhala Sangam MN", "Sketch Rockwell", "Skia", "Small Fonts", "Snap ITC", "Snell Roundhand", "Socket", "Souvenir Lt BT", "Staccato222 BT", "Steamer", "Stencil", "Storybook", "Styllo", "Subway", "Swis721 BlkEx BT", "Swiss911 XCm BT", "Sylfaen", "Synchro LET", "System", "Tamil Sangam MN", "Technical", "Teletype", "Telugu Sangam MN", "Tempus Sans ITC", "Terminal", "Thonburi", "Traditional Arabic", "Trajan", "TRAJAN PRO", "Tristan", "Tubular", "Tunga", "Tw Cen MT", "Tw Cen MT Condensed", "Tw Cen MT Condensed Extra Bold", "TypoUpright BT", "Unicorn", "Univers", "Univers CE 55 Medium", "Univers Condensed", "Utsaah", "Vagabond", "Vani", "Vijaya", "Viner Hand ITC", "VisualUI", "Vivaldi", "Vladimir Script", "Vrinda", "Westminster", "WHITNEY", "Wide Latin", "ZapfEllipt BT", "ZapfHumnst BT", "ZapfHumnst Dm BT", "Zapfino", "Zurich BlkEx BT", "Zurich Ex BT", "ZWAdobeF"]; - - //we use m or w because these two characters take up the maximum width. - // And we use a LLi so that the same matching fonts can get separated - var testString = "mmmmmmmmmmlli"; - - //we test using 72px font size, we may use any size. I guess larger the better. - var testSize = '72px'; - - var h = document.getElementsByTagName("body")[0]; - - // create a SPAN in the document to get the width of the text we use to test - var s = document.createElement("span"); - s.style.fontSize = testSize; - s.innerHTML = testString; - var defaultWidth = {}; - var defaultHeight = {}; - for (var index in baseFonts) { - //get the default width for the three base fonts - s.style.fontFamily = baseFonts[index]; - h.appendChild(s); - defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font - defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font - h.removeChild(s); - } - this.testAllFonts = function () { - var detected = []; - for (var font in fontList) { - if (this.detect(fontList[font])) detected.push(fontList[font]); - } - // for (var font in moreFonts) { - // if (this.detect(moreFonts[font])) - // detected.push(moreFonts[font]); - // } - return detected; - }; - - this.detect = function (font) { - var detected = false; - for (var index in baseFonts) { - s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback. - h.appendChild(s); - var matched = s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]; - h.removeChild(s); - detected = detected || matched; - } - return detected; - }; + for (var font in fontList) { + if (this.detect(fontList[font])) detected.push(fontList[font]); + } // for (var font in moreFonts) { + // if (this.detect(moreFonts[font])) + // detected.push(moreFonts[font]); + // } + + + return detected; }; - if (( false ? undefined : _typeof(module)) === 'object' && typeof exports !== "undefined") { - module.exports = Detector; - } else { - scope.Detector = Detector; - } + this.detect = function (font) { + var detected = false; + + for (var index in baseFonts) { + s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback. + + h.appendChild(s); + var matched = s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]; + h.removeChild(s); + detected = detected || matched; + } + + return detected; + }; + }; + + if (( false ? undefined : _typeof(module)) === 'object' && typeof exports !== "undefined") { + module.exports = Detector; + } else { + scope.Detector = Detector; + } })(window); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) @@ -502,9 +493,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; - - // +----------------------------------------------------------------------+ // | murmurHash3.js v2.1.2 (http://github.com/karanlyons/murmurHash.js) | // | A javascript implementation of MurmurHash3's x86 hashing algorithms. | @@ -512,536 +500,468 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol // | Copyright (c) 2012 Karan Lyons | // | Freely distributable under the MIT license. | // +----------------------------------------------------------------------+ +; + +(function (root, undefined) { + 'use strict'; // Create a local object that'll be exported or referenced globally. + + var library = { + 'version': '2.1.2', + 'x86': {}, + 'x64': {} + }; // PRIVATE FUNCTIONS + // ----------------- + + function _x86Multiply(m, n) { + // + // Given two 32bit ints, returns the two multiplied together as a + // 32bit int. + // + return (m & 0xffff) * n + (((m >>> 16) * n & 0xffff) << 16); + } + + function _x86Rotl(m, n) { + // + // Given a 32bit int and an int representing a number of bit positions, + // returns the 32bit int rotated left by that number of positions. + // + return m << n | m >>> 32 - n; + } + + function _x86Fmix(h) { + // + // Given a block, returns murmurHash3's final x86 mix of that block. + // + h ^= h >>> 16; + h = _x86Multiply(h, 0x85ebca6b); + h ^= h >>> 13; + h = _x86Multiply(h, 0xc2b2ae35); + h ^= h >>> 16; + return h; + } + + function _x64Add(m, n) { + // + // Given two 64bit ints (as an array of two 32bit ints) returns the two + // added together as a 64bit int (as an array of two 32bit ints). + // + m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]; + n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]; + var o = [0, 0, 0, 0]; + o[3] += m[3] + n[3]; + o[2] += o[3] >>> 16; + o[3] &= 0xffff; + o[2] += m[2] + n[2]; + o[1] += o[2] >>> 16; + o[2] &= 0xffff; + o[1] += m[1] + n[1]; + o[0] += o[1] >>> 16; + o[1] &= 0xffff; + o[0] += m[0] + n[0]; + o[0] &= 0xffff; + return [o[0] << 16 | o[1], o[2] << 16 | o[3]]; + } + + function _x64Multiply(m, n) { + // + // Given two 64bit ints (as an array of two 32bit ints) returns the two + // multiplied together as a 64bit int (as an array of two 32bit ints). + // + m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]; + n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]; + var o = [0, 0, 0, 0]; + o[3] += m[3] * n[3]; + o[2] += o[3] >>> 16; + o[3] &= 0xffff; + o[2] += m[2] * n[3]; + o[1] += o[2] >>> 16; + o[2] &= 0xffff; + o[2] += m[3] * n[2]; + o[1] += o[2] >>> 16; + o[2] &= 0xffff; + o[1] += m[1] * n[3]; + o[0] += o[1] >>> 16; + o[1] &= 0xffff; + o[1] += m[2] * n[2]; + o[0] += o[1] >>> 16; + o[1] &= 0xffff; + o[1] += m[3] * n[1]; + o[0] += o[1] >>> 16; + o[1] &= 0xffff; + o[0] += m[0] * n[3] + m[1] * n[2] + m[2] * n[1] + m[3] * n[0]; + o[0] &= 0xffff; + return [o[0] << 16 | o[1], o[2] << 16 | o[3]]; + } + + function _x64Rotl(m, n) { + // + // Given a 64bit int (as an array of two 32bit ints) and an int + // representing a number of bit positions, returns the 64bit int (as an + // array of two 32bit ints) rotated left by that number of positions. + // + n %= 64; + + if (n === 32) { + return [m[1], m[0]]; + } else if (n < 32) { + return [m[0] << n | m[1] >>> 32 - n, m[1] << n | m[0] >>> 32 - n]; + } else { + n -= 32; + return [m[1] << n | m[0] >>> 32 - n, m[0] << n | m[1] >>> 32 - n]; + } + } + + function _x64LeftShift(m, n) { + // + // Given a 64bit int (as an array of two 32bit ints) and an int + // representing a number of bit positions, returns the 64bit int (as an + // array of two 32bit ints) shifted left by that number of positions. + // + n %= 64; + + if (n === 0) { + return m; + } else if (n < 32) { + return [m[0] << n | m[1] >>> 32 - n, m[1] << n]; + } else { + return [m[1] << n - 32, 0]; + } + } + + function _x64Xor(m, n) { + // + // Given two 64bit ints (as an array of two 32bit ints) returns the two + // xored together as a 64bit int (as an array of two 32bit ints). + // + return [m[0] ^ n[0], m[1] ^ n[1]]; + } + + function _x64Fmix(h) { + // + // Given a block, returns murmurHash3's final x64 mix of that block. + // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the + // only place where we need to right shift 64bit ints.) + // + h = _x64Xor(h, [0, h[0] >>> 1]); + h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]); + h = _x64Xor(h, [0, h[0] >>> 1]); + h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]); + h = _x64Xor(h, [0, h[0] >>> 1]); + return h; + } // PUBLIC FUNCTIONS + // ---------------- + + + library.x86.hash32 = function (key, seed) { + // + // Given a string and an optional seed as an int, returns a 32 bit hash + // using the x86 flavor of MurmurHash3, as an unsigned int. + // + key = key || ''; + seed = seed || 0; + var remainder = key.length % 4; + var bytes = key.length - remainder; + var h1 = seed; + var k1 = 0; + var c1 = 0xcc9e2d51; + var c2 = 0x1b873593; + + for (var i = 0; i < bytes; i = i + 4) { + k1 = key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24; + k1 = _x86Multiply(k1, c1); + k1 = _x86Rotl(k1, 15); + k1 = _x86Multiply(k1, c2); + h1 ^= k1; + h1 = _x86Rotl(h1, 13); + h1 = _x86Multiply(h1, 5) + 0xe6546b64; + } + k1 = 0; -;(function (root, undefined) { - 'use strict'; - - // Create a local object that'll be exported or referenced globally. - - var library = { - 'version': '2.1.2', - 'x86': {}, - 'x64': {} - }; - - // PRIVATE FUNCTIONS - // ----------------- - - function _x86Multiply(m, n) { - // - // Given two 32bit ints, returns the two multiplied together as a - // 32bit int. - // - - return (m & 0xffff) * n + (((m >>> 16) * n & 0xffff) << 16); - } - - function _x86Rotl(m, n) { - // - // Given a 32bit int and an int representing a number of bit positions, - // returns the 32bit int rotated left by that number of positions. - // - - return m << n | m >>> 32 - n; - } - - function _x86Fmix(h) { - // - // Given a block, returns murmurHash3's final x86 mix of that block. - // - - h ^= h >>> 16; - h = _x86Multiply(h, 0x85ebca6b); - h ^= h >>> 13; - h = _x86Multiply(h, 0xc2b2ae35); - h ^= h >>> 16; - - return h; - } - - function _x64Add(m, n) { - // - // Given two 64bit ints (as an array of two 32bit ints) returns the two - // added together as a 64bit int (as an array of two 32bit ints). - // - - m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]; - n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]; - var o = [0, 0, 0, 0]; - - o[3] += m[3] + n[3]; - o[2] += o[3] >>> 16; - o[3] &= 0xffff; - - o[2] += m[2] + n[2]; - o[1] += o[2] >>> 16; - o[2] &= 0xffff; - - o[1] += m[1] + n[1]; - o[0] += o[1] >>> 16; - o[1] &= 0xffff; - - o[0] += m[0] + n[0]; - o[0] &= 0xffff; - - return [o[0] << 16 | o[1], o[2] << 16 | o[3]]; - } - - function _x64Multiply(m, n) { - // - // Given two 64bit ints (as an array of two 32bit ints) returns the two - // multiplied together as a 64bit int (as an array of two 32bit ints). - // - - m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]; - n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]; - var o = [0, 0, 0, 0]; - - o[3] += m[3] * n[3]; - o[2] += o[3] >>> 16; - o[3] &= 0xffff; - - o[2] += m[2] * n[3]; - o[1] += o[2] >>> 16; - o[2] &= 0xffff; - - o[2] += m[3] * n[2]; - o[1] += o[2] >>> 16; - o[2] &= 0xffff; - - o[1] += m[1] * n[3]; - o[0] += o[1] >>> 16; - o[1] &= 0xffff; - - o[1] += m[2] * n[2]; - o[0] += o[1] >>> 16; - o[1] &= 0xffff; - - o[1] += m[3] * n[1]; - o[0] += o[1] >>> 16; - o[1] &= 0xffff; - - o[0] += m[0] * n[3] + m[1] * n[2] + m[2] * n[1] + m[3] * n[0]; - o[0] &= 0xffff; - - return [o[0] << 16 | o[1], o[2] << 16 | o[3]]; - } - - function _x64Rotl(m, n) { - // - // Given a 64bit int (as an array of two 32bit ints) and an int - // representing a number of bit positions, returns the 64bit int (as an - // array of two 32bit ints) rotated left by that number of positions. - // - - n %= 64; - - if (n === 32) { - return [m[1], m[0]]; - } else if (n < 32) { - return [m[0] << n | m[1] >>> 32 - n, m[1] << n | m[0] >>> 32 - n]; - } else { - n -= 32; - return [m[1] << n | m[0] >>> 32 - n, m[0] << n | m[1] >>> 32 - n]; - } - } - - function _x64LeftShift(m, n) { - // - // Given a 64bit int (as an array of two 32bit ints) and an int - // representing a number of bit positions, returns the 64bit int (as an - // array of two 32bit ints) shifted left by that number of positions. - // - - n %= 64; - - if (n === 0) { - return m; - } else if (n < 32) { - return [m[0] << n | m[1] >>> 32 - n, m[1] << n]; - } else { - return [m[1] << n - 32, 0]; - } - } - - function _x64Xor(m, n) { - // - // Given two 64bit ints (as an array of two 32bit ints) returns the two - // xored together as a 64bit int (as an array of two 32bit ints). - // - - return [m[0] ^ n[0], m[1] ^ n[1]]; - } - - function _x64Fmix(h) { - // - // Given a block, returns murmurHash3's final x64 mix of that block. - // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the - // only place where we need to right shift 64bit ints.) - // - - h = _x64Xor(h, [0, h[0] >>> 1]); - h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]); - h = _x64Xor(h, [0, h[0] >>> 1]); - h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]); - h = _x64Xor(h, [0, h[0] >>> 1]); - - return h; - } - - // PUBLIC FUNCTIONS - // ---------------- - - library.x86.hash32 = function (key, seed) { - // - // Given a string and an optional seed as an int, returns a 32 bit hash - // using the x86 flavor of MurmurHash3, as an unsigned int. - // - - key = key || ''; - seed = seed || 0; - - var remainder = key.length % 4; - var bytes = key.length - remainder; - - var h1 = seed; - - var k1 = 0; - - var c1 = 0xcc9e2d51; - var c2 = 0x1b873593; - - for (var i = 0; i < bytes; i = i + 4) { - k1 = key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24; - - k1 = _x86Multiply(k1, c1); - k1 = _x86Rotl(k1, 15); - k1 = _x86Multiply(k1, c2); - - h1 ^= k1; - h1 = _x86Rotl(h1, 13); - h1 = _x86Multiply(h1, 5) + 0xe6546b64; - } - - k1 = 0; - - switch (remainder) { - case 3: - k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16; - - case 2: - k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8; - - case 1: - k1 ^= key.charCodeAt(i) & 0xff; - k1 = _x86Multiply(k1, c1); - k1 = _x86Rotl(k1, 15); - k1 = _x86Multiply(k1, c2); - h1 ^= k1; - } - - h1 ^= key.length; - h1 = _x86Fmix(h1); - - return h1 >>> 0; - }; - - library.x86.hash128 = function (key, seed) { - // - // Given a string and an optional seed as an int, returns a 128 bit - // hash using the x86 flavor of MurmurHash3, as an unsigned hex. - // - - key = key || ''; - seed = seed || 0; - - var remainder = key.length % 16; - var bytes = key.length - remainder; - - var h1 = seed; - var h2 = seed; - var h3 = seed; - var h4 = seed; - - var k1 = 0; - var k2 = 0; - var k3 = 0; - var k4 = 0; - - var c1 = 0x239b961b; - var c2 = 0xab0e9789; - var c3 = 0x38b34ae5; - var c4 = 0xa1e38b93; - - for (var i = 0; i < bytes; i = i + 16) { - k1 = key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24; - k2 = key.charCodeAt(i + 4) & 0xff | (key.charCodeAt(i + 5) & 0xff) << 8 | (key.charCodeAt(i + 6) & 0xff) << 16 | (key.charCodeAt(i + 7) & 0xff) << 24; - k3 = key.charCodeAt(i + 8) & 0xff | (key.charCodeAt(i + 9) & 0xff) << 8 | (key.charCodeAt(i + 10) & 0xff) << 16 | (key.charCodeAt(i + 11) & 0xff) << 24; - k4 = key.charCodeAt(i + 12) & 0xff | (key.charCodeAt(i + 13) & 0xff) << 8 | (key.charCodeAt(i + 14) & 0xff) << 16 | (key.charCodeAt(i + 15) & 0xff) << 24; - - k1 = _x86Multiply(k1, c1); - k1 = _x86Rotl(k1, 15); - k1 = _x86Multiply(k1, c2); - h1 ^= k1; - - h1 = _x86Rotl(h1, 19); - h1 += h2; - h1 = _x86Multiply(h1, 5) + 0x561ccd1b; - - k2 = _x86Multiply(k2, c2); - k2 = _x86Rotl(k2, 16); - k2 = _x86Multiply(k2, c3); - h2 ^= k2; - - h2 = _x86Rotl(h2, 17); - h2 += h3; - h2 = _x86Multiply(h2, 5) + 0x0bcaa747; - - k3 = _x86Multiply(k3, c3); - k3 = _x86Rotl(k3, 17); - k3 = _x86Multiply(k3, c4); - h3 ^= k3; - - h3 = _x86Rotl(h3, 15); - h3 += h4; - h3 = _x86Multiply(h3, 5) + 0x96cd1c35; - - k4 = _x86Multiply(k4, c4); - k4 = _x86Rotl(k4, 18); - k4 = _x86Multiply(k4, c1); - h4 ^= k4; - - h4 = _x86Rotl(h4, 13); - h4 += h1; - h4 = _x86Multiply(h4, 5) + 0x32ac3b17; - } - - k1 = 0; - k2 = 0; - k3 = 0; - k4 = 0; - - switch (remainder) { - case 15: - k4 ^= key.charCodeAt(i + 14) << 16; - - case 14: - k4 ^= key.charCodeAt(i + 13) << 8; + switch (remainder) { + case 3: + k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16; - case 13: - k4 ^= key.charCodeAt(i + 12); - k4 = _x86Multiply(k4, c4); - k4 = _x86Rotl(k4, 18); - k4 = _x86Multiply(k4, c1); - h4 ^= k4; + case 2: + k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8; - case 12: - k3 ^= key.charCodeAt(i + 11) << 24; + case 1: + k1 ^= key.charCodeAt(i) & 0xff; + k1 = _x86Multiply(k1, c1); + k1 = _x86Rotl(k1, 15); + k1 = _x86Multiply(k1, c2); + h1 ^= k1; + } - case 11: - k3 ^= key.charCodeAt(i + 10) << 16; + h1 ^= key.length; + h1 = _x86Fmix(h1); + return h1 >>> 0; + }; + + library.x86.hash128 = function (key, seed) { + // + // Given a string and an optional seed as an int, returns a 128 bit + // hash using the x86 flavor of MurmurHash3, as an unsigned hex. + // + key = key || ''; + seed = seed || 0; + var remainder = key.length % 16; + var bytes = key.length - remainder; + var h1 = seed; + var h2 = seed; + var h3 = seed; + var h4 = seed; + var k1 = 0; + var k2 = 0; + var k3 = 0; + var k4 = 0; + var c1 = 0x239b961b; + var c2 = 0xab0e9789; + var c3 = 0x38b34ae5; + var c4 = 0xa1e38b93; + + for (var i = 0; i < bytes; i = i + 16) { + k1 = key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24; + k2 = key.charCodeAt(i + 4) & 0xff | (key.charCodeAt(i + 5) & 0xff) << 8 | (key.charCodeAt(i + 6) & 0xff) << 16 | (key.charCodeAt(i + 7) & 0xff) << 24; + k3 = key.charCodeAt(i + 8) & 0xff | (key.charCodeAt(i + 9) & 0xff) << 8 | (key.charCodeAt(i + 10) & 0xff) << 16 | (key.charCodeAt(i + 11) & 0xff) << 24; + k4 = key.charCodeAt(i + 12) & 0xff | (key.charCodeAt(i + 13) & 0xff) << 8 | (key.charCodeAt(i + 14) & 0xff) << 16 | (key.charCodeAt(i + 15) & 0xff) << 24; + k1 = _x86Multiply(k1, c1); + k1 = _x86Rotl(k1, 15); + k1 = _x86Multiply(k1, c2); + h1 ^= k1; + h1 = _x86Rotl(h1, 19); + h1 += h2; + h1 = _x86Multiply(h1, 5) + 0x561ccd1b; + k2 = _x86Multiply(k2, c2); + k2 = _x86Rotl(k2, 16); + k2 = _x86Multiply(k2, c3); + h2 ^= k2; + h2 = _x86Rotl(h2, 17); + h2 += h3; + h2 = _x86Multiply(h2, 5) + 0x0bcaa747; + k3 = _x86Multiply(k3, c3); + k3 = _x86Rotl(k3, 17); + k3 = _x86Multiply(k3, c4); + h3 ^= k3; + h3 = _x86Rotl(h3, 15); + h3 += h4; + h3 = _x86Multiply(h3, 5) + 0x96cd1c35; + k4 = _x86Multiply(k4, c4); + k4 = _x86Rotl(k4, 18); + k4 = _x86Multiply(k4, c1); + h4 ^= k4; + h4 = _x86Rotl(h4, 13); + h4 += h1; + h4 = _x86Multiply(h4, 5) + 0x32ac3b17; + } - case 10: - k3 ^= key.charCodeAt(i + 9) << 8; + k1 = 0; + k2 = 0; + k3 = 0; + k4 = 0; - case 9: - k3 ^= key.charCodeAt(i + 8); - k3 = _x86Multiply(k3, c3); - k3 = _x86Rotl(k3, 17); - k3 = _x86Multiply(k3, c4); - h3 ^= k3; + switch (remainder) { + case 15: + k4 ^= key.charCodeAt(i + 14) << 16; - case 8: - k2 ^= key.charCodeAt(i + 7) << 24; + case 14: + k4 ^= key.charCodeAt(i + 13) << 8; - case 7: - k2 ^= key.charCodeAt(i + 6) << 16; + case 13: + k4 ^= key.charCodeAt(i + 12); + k4 = _x86Multiply(k4, c4); + k4 = _x86Rotl(k4, 18); + k4 = _x86Multiply(k4, c1); + h4 ^= k4; - case 6: - k2 ^= key.charCodeAt(i + 5) << 8; + case 12: + k3 ^= key.charCodeAt(i + 11) << 24; - case 5: - k2 ^= key.charCodeAt(i + 4); - k2 = _x86Multiply(k2, c2); - k2 = _x86Rotl(k2, 16); - k2 = _x86Multiply(k2, c3); - h2 ^= k2; + case 11: + k3 ^= key.charCodeAt(i + 10) << 16; - case 4: - k1 ^= key.charCodeAt(i + 3) << 24; + case 10: + k3 ^= key.charCodeAt(i + 9) << 8; - case 3: - k1 ^= key.charCodeAt(i + 2) << 16; + case 9: + k3 ^= key.charCodeAt(i + 8); + k3 = _x86Multiply(k3, c3); + k3 = _x86Rotl(k3, 17); + k3 = _x86Multiply(k3, c4); + h3 ^= k3; - case 2: - k1 ^= key.charCodeAt(i + 1) << 8; + case 8: + k2 ^= key.charCodeAt(i + 7) << 24; - case 1: - k1 ^= key.charCodeAt(i); - k1 = _x86Multiply(k1, c1); - k1 = _x86Rotl(k1, 15); - k1 = _x86Multiply(k1, c2); - h1 ^= k1; - } + case 7: + k2 ^= key.charCodeAt(i + 6) << 16; - h1 ^= key.length; - h2 ^= key.length; - h3 ^= key.length; - h4 ^= key.length; - - h1 += h2; - h1 += h3; - h1 += h4; - h2 += h1; - h3 += h1; - h4 += h1; - - h1 = _x86Fmix(h1); - h2 = _x86Fmix(h2); - h3 = _x86Fmix(h3); - h4 = _x86Fmix(h4); - - h1 += h2; - h1 += h3; - h1 += h4; - h2 += h1; - h3 += h1; - h4 += h1; - - return ("00000000" + (h1 >>> 0).toString(16)).slice(-8) + ("00000000" + (h2 >>> 0).toString(16)).slice(-8) + ("00000000" + (h3 >>> 0).toString(16)).slice(-8) + ("00000000" + (h4 >>> 0).toString(16)).slice(-8); - }; - - library.x64.hash128 = function (key, seed) { - // - // Given a string and an optional seed as an int, returns a 128 bit - // hash using the x64 flavor of MurmurHash3, as an unsigned hex. - // - - key = key || ''; - seed = seed || 0; - - var remainder = key.length % 16; - var bytes = key.length - remainder; - - var h1 = [0, seed]; - var h2 = [0, seed]; - - var k1 = [0, 0]; - var k2 = [0, 0]; - - var c1 = [0x87c37b91, 0x114253d5]; - var c2 = [0x4cf5ad43, 0x2745937f]; - - for (var i = 0; i < bytes; i = i + 16) { - k1 = [key.charCodeAt(i + 4) & 0xff | (key.charCodeAt(i + 5) & 0xff) << 8 | (key.charCodeAt(i + 6) & 0xff) << 16 | (key.charCodeAt(i + 7) & 0xff) << 24, key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24]; - k2 = [key.charCodeAt(i + 12) & 0xff | (key.charCodeAt(i + 13) & 0xff) << 8 | (key.charCodeAt(i + 14) & 0xff) << 16 | (key.charCodeAt(i + 15) & 0xff) << 24, key.charCodeAt(i + 8) & 0xff | (key.charCodeAt(i + 9) & 0xff) << 8 | (key.charCodeAt(i + 10) & 0xff) << 16 | (key.charCodeAt(i + 11) & 0xff) << 24]; - - k1 = _x64Multiply(k1, c1); - k1 = _x64Rotl(k1, 31); - k1 = _x64Multiply(k1, c2); - h1 = _x64Xor(h1, k1); - - h1 = _x64Rotl(h1, 27); - h1 = _x64Add(h1, h2); - h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]); - - k2 = _x64Multiply(k2, c2); - k2 = _x64Rotl(k2, 33); - k2 = _x64Multiply(k2, c1); - h2 = _x64Xor(h2, k2); - - h2 = _x64Rotl(h2, 31); - h2 = _x64Add(h2, h1); - h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]); - } + case 6: + k2 ^= key.charCodeAt(i + 5) << 8; - k1 = [0, 0]; - k2 = [0, 0]; + case 5: + k2 ^= key.charCodeAt(i + 4); + k2 = _x86Multiply(k2, c2); + k2 = _x86Rotl(k2, 16); + k2 = _x86Multiply(k2, c3); + h2 ^= k2; - switch (remainder) { - case 15: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 14)], 48)); + case 4: + k1 ^= key.charCodeAt(i + 3) << 24; - case 14: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 13)], 40)); + case 3: + k1 ^= key.charCodeAt(i + 2) << 16; - case 13: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 12)], 32)); + case 2: + k1 ^= key.charCodeAt(i + 1) << 8; - case 12: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 11)], 24)); + case 1: + k1 ^= key.charCodeAt(i); + k1 = _x86Multiply(k1, c1); + k1 = _x86Rotl(k1, 15); + k1 = _x86Multiply(k1, c2); + h1 ^= k1; + } - case 11: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 10)], 16)); + h1 ^= key.length; + h2 ^= key.length; + h3 ^= key.length; + h4 ^= key.length; + h1 += h2; + h1 += h3; + h1 += h4; + h2 += h1; + h3 += h1; + h4 += h1; + h1 = _x86Fmix(h1); + h2 = _x86Fmix(h2); + h3 = _x86Fmix(h3); + h4 = _x86Fmix(h4); + h1 += h2; + h1 += h3; + h1 += h4; + h2 += h1; + h3 += h1; + h4 += h1; + return ("00000000" + (h1 >>> 0).toString(16)).slice(-8) + ("00000000" + (h2 >>> 0).toString(16)).slice(-8) + ("00000000" + (h3 >>> 0).toString(16)).slice(-8) + ("00000000" + (h4 >>> 0).toString(16)).slice(-8); + }; + + library.x64.hash128 = function (key, seed) { + // + // Given a string and an optional seed as an int, returns a 128 bit + // hash using the x64 flavor of MurmurHash3, as an unsigned hex. + // + key = key || ''; + seed = seed || 0; + var remainder = key.length % 16; + var bytes = key.length - remainder; + var h1 = [0, seed]; + var h2 = [0, seed]; + var k1 = [0, 0]; + var k2 = [0, 0]; + var c1 = [0x87c37b91, 0x114253d5]; + var c2 = [0x4cf5ad43, 0x2745937f]; + + for (var i = 0; i < bytes; i = i + 16) { + k1 = [key.charCodeAt(i + 4) & 0xff | (key.charCodeAt(i + 5) & 0xff) << 8 | (key.charCodeAt(i + 6) & 0xff) << 16 | (key.charCodeAt(i + 7) & 0xff) << 24, key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24]; + k2 = [key.charCodeAt(i + 12) & 0xff | (key.charCodeAt(i + 13) & 0xff) << 8 | (key.charCodeAt(i + 14) & 0xff) << 16 | (key.charCodeAt(i + 15) & 0xff) << 24, key.charCodeAt(i + 8) & 0xff | (key.charCodeAt(i + 9) & 0xff) << 8 | (key.charCodeAt(i + 10) & 0xff) << 16 | (key.charCodeAt(i + 11) & 0xff) << 24]; + k1 = _x64Multiply(k1, c1); + k1 = _x64Rotl(k1, 31); + k1 = _x64Multiply(k1, c2); + h1 = _x64Xor(h1, k1); + h1 = _x64Rotl(h1, 27); + h1 = _x64Add(h1, h2); + h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]); + k2 = _x64Multiply(k2, c2); + k2 = _x64Rotl(k2, 33); + k2 = _x64Multiply(k2, c1); + h2 = _x64Xor(h2, k2); + h2 = _x64Rotl(h2, 31); + h2 = _x64Add(h2, h1); + h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]); + } - case 10: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 9)], 8)); + k1 = [0, 0]; + k2 = [0, 0]; - case 9: - k2 = _x64Xor(k2, [0, key.charCodeAt(i + 8)]); - k2 = _x64Multiply(k2, c2); - k2 = _x64Rotl(k2, 33); - k2 = _x64Multiply(k2, c1); - h2 = _x64Xor(h2, k2); + switch (remainder) { + case 15: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 14)], 48)); - case 8: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 7)], 56)); + case 14: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 13)], 40)); - case 7: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 6)], 48)); + case 13: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 12)], 32)); - case 6: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 5)], 40)); + case 12: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 11)], 24)); - case 5: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 4)], 32)); + case 11: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 10)], 16)); - case 4: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 3)], 24)); + case 10: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 9)], 8)); - case 3: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 2)], 16)); + case 9: + k2 = _x64Xor(k2, [0, key.charCodeAt(i + 8)]); + k2 = _x64Multiply(k2, c2); + k2 = _x64Rotl(k2, 33); + k2 = _x64Multiply(k2, c1); + h2 = _x64Xor(h2, k2); - case 2: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 1)], 8)); + case 8: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 7)], 56)); - case 1: - k1 = _x64Xor(k1, [0, key.charCodeAt(i)]); - k1 = _x64Multiply(k1, c1); - k1 = _x64Rotl(k1, 31); - k1 = _x64Multiply(k1, c2); - h1 = _x64Xor(h1, k1); - } + case 7: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 6)], 48)); - h1 = _x64Xor(h1, [0, key.length]); - h2 = _x64Xor(h2, [0, key.length]); + case 6: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 5)], 40)); - h1 = _x64Add(h1, h2); - h2 = _x64Add(h2, h1); + case 5: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 4)], 32)); - h1 = _x64Fmix(h1); - h2 = _x64Fmix(h2); + case 4: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 3)], 24)); - h1 = _x64Add(h1, h2); - h2 = _x64Add(h2, h1); + case 3: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 2)], 16)); - return ("00000000" + (h1[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h1[1] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[1] >>> 0).toString(16)).slice(-8); - }; + case 2: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 1)], 8)); - // INITIALIZATION - // -------------- + case 1: + k1 = _x64Xor(k1, [0, key.charCodeAt(i)]); + k1 = _x64Multiply(k1, c1); + k1 = _x64Rotl(k1, 31); + k1 = _x64Multiply(k1, c2); + h1 = _x64Xor(h1, k1); + } - // Export murmurHash3 for CommonJS, either as an AMD module or just as part - // of the global object. - if (true) { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = library; - } + h1 = _x64Xor(h1, [0, key.length]); + h2 = _x64Xor(h2, [0, key.length]); + h1 = _x64Add(h1, h2); + h2 = _x64Add(h2, h1); + h1 = _x64Fmix(h1); + h2 = _x64Fmix(h2); + h1 = _x64Add(h1, h2); + h2 = _x64Add(h2, h1); + return ("00000000" + (h1[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h1[1] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[1] >>> 0).toString(16)).slice(-8); + }; // INITIALIZATION + // -------------- + // Export murmurHash3 for CommonJS, either as an AMD module or just as part + // of the global object. + + + if (true) { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = library; + } - exports.murmurHash3 = library; - } else {} -})(undefined); + exports.murmurHash3 = library; + } else {} +})(this); /***/ }), @@ -1052,10 +972,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RESULT__; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /*! * UAParser.js v0.7.18 @@ -1065,804 +982,755 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * Copyright © 2012-2016 Faisal Salman * Dual licensed under GPLv2 or MIT */ - (function (window, undefined) { - - 'use strict'; - - ////////////// - // Constants - ///////////// - - - var LIBVERSION = '0.7.18', - EMPTY = '', - UNKNOWN = '?', - FUNC_TYPE = 'function', - UNDEF_TYPE = 'undefined', - OBJ_TYPE = 'object', - STR_TYPE = 'string', - MAJOR = 'major', - // deprecated - MODEL = 'model', - NAME = 'name', - TYPE = 'type', - VENDOR = 'vendor', - VERSION = 'version', - ARCHITECTURE = 'architecture', - CONSOLE = 'console', - MOBILE = 'mobile', - TABLET = 'tablet', - SMARTTV = 'smarttv', - WEARABLE = 'wearable', - EMBEDDED = 'embedded'; - - /////////// - // Helper - ////////// - - - var util = { - extend: function extend(regexes, extensions) { - var margedRegexes = {}; - for (var i in regexes) { - if (extensions[i] && extensions[i].length % 2 === 0) { - margedRegexes[i] = extensions[i].concat(regexes[i]); - } else { - margedRegexes[i] = regexes[i]; + 'use strict'; ////////////// + // Constants + ///////////// + + var LIBVERSION = '0.7.18', + EMPTY = '', + UNKNOWN = '?', + FUNC_TYPE = 'function', + UNDEF_TYPE = 'undefined', + OBJ_TYPE = 'object', + STR_TYPE = 'string', + MAJOR = 'major', + // deprecated + MODEL = 'model', + NAME = 'name', + TYPE = 'type', + VENDOR = 'vendor', + VERSION = 'version', + ARCHITECTURE = 'architecture', + CONSOLE = 'console', + MOBILE = 'mobile', + TABLET = 'tablet', + SMARTTV = 'smarttv', + WEARABLE = 'wearable', + EMBEDDED = 'embedded'; /////////// + // Helper + ////////// + + var util = { + extend: function extend(regexes, extensions) { + var margedRegexes = {}; + + for (var i in regexes) { + if (extensions[i] && extensions[i].length % 2 === 0) { + margedRegexes[i] = extensions[i].concat(regexes[i]); + } else { + margedRegexes[i] = regexes[i]; + } + } + + return margedRegexes; + }, + has: function has(str1, str2) { + if (typeof str1 === "string") { + return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1; + } else { + return false; + } + }, + lowerize: function lowerize(str) { + return str.toLowerCase(); + }, + major: function major(version) { + return _typeof(version) === STR_TYPE ? version.replace(/[^\d\.]/g, '').split(".")[0] : undefined; + }, + trim: function trim(str) { + return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + } + }; /////////////// + // Map helper + ////////////// + + var mapper = { + rgx: function rgx(ua, arrays) { + //var result = {}, + var i = 0, + j, + k, + p, + q, + matches, + match; //, args = arguments; + + /*// construct object barebones + for (p = 0; p < args[1].length; p++) { + q = args[1][p]; + result[typeof q === OBJ_TYPE ? q[0] : q] = undefined; + }*/ + // loop through all regexes maps + + while (i < arrays.length && !matches) { + var regex = arrays[i], + // even sequence (0,2,4,..) + props = arrays[i + 1]; // odd sequence (1,3,5,..) + + j = k = 0; // try matching uastring with regexes + + while (j < regex.length && !matches) { + matches = regex[j++].exec(ua); + + if (!!matches) { + for (p = 0; p < props.length; p++) { + match = matches[++k]; + q = props[p]; // check if given property is actually array + + if (_typeof(q) === OBJ_TYPE && q.length > 0) { + if (q.length == 2) { + if (_typeof(q[1]) == FUNC_TYPE) { + // assign modified match + this[q[0]] = q[1].call(this, match); + } else { + // assign given value, ignore regex match + this[q[0]] = q[1]; + } + } else if (q.length == 3) { + // check whether function or regex + if (_typeof(q[1]) === FUNC_TYPE && !(q[1].exec && q[1].test)) { + // call function (usually string mapper) + this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined; + } else { + // sanitize match using given regex + this[q[0]] = match ? match.replace(q[1], q[2]) : undefined; + } + } else if (q.length == 4) { + this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined; } + } else { + this[q] = match ? match : undefined; + } } - return margedRegexes; - }, - has: function has(str1, str2) { - if (typeof str1 === "string") { - return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1; - } else { - return false; - } - }, - lowerize: function lowerize(str) { - return str.toLowerCase(); - }, - major: function major(version) { - return (typeof version === 'undefined' ? 'undefined' : _typeof(version)) === STR_TYPE ? version.replace(/[^\d\.]/g, '').split(".")[0] : undefined; - }, - trim: function trim(str) { - return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + } } - }; - /////////////// - // Map helper - ////////////// - - - var mapper = { - - rgx: function rgx(ua, arrays) { - - //var result = {}, - var i = 0, - j, - k, - p, - q, - matches, - match; //, args = arguments; - - /*// construct object barebones - for (p = 0; p < args[1].length; p++) { - q = args[1][p]; - result[typeof q === OBJ_TYPE ? q[0] : q] = undefined; - }*/ - - // loop through all regexes maps - while (i < arrays.length && !matches) { - - var regex = arrays[i], - // even sequence (0,2,4,..) - props = arrays[i + 1]; // odd sequence (1,3,5,..) - j = k = 0; - - // try matching uastring with regexes - while (j < regex.length && !matches) { - - matches = regex[j++].exec(ua); - - if (!!matches) { - for (p = 0; p < props.length; p++) { - match = matches[++k]; - q = props[p]; - // check if given property is actually array - if ((typeof q === 'undefined' ? 'undefined' : _typeof(q)) === OBJ_TYPE && q.length > 0) { - if (q.length == 2) { - if (_typeof(q[1]) == FUNC_TYPE) { - // assign modified match - this[q[0]] = q[1].call(this, match); - } else { - // assign given value, ignore regex match - this[q[0]] = q[1]; - } - } else if (q.length == 3) { - // check whether function or regex - if (_typeof(q[1]) === FUNC_TYPE && !(q[1].exec && q[1].test)) { - // call function (usually string mapper) - this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined; - } else { - // sanitize match using given regex - this[q[0]] = match ? match.replace(q[1], q[2]) : undefined; - } - } else if (q.length == 4) { - this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined; - } - } else { - this[q] = match ? match : undefined; - } - } - } - } - i += 2; + i += 2; + } // console.log(this); + //return this; + + }, + str: function str(_str, map) { + for (var i in map) { + // check if array + if (_typeof(map[i]) === OBJ_TYPE && map[i].length > 0) { + for (var j = 0; j < map[i].length; j++) { + if (util.has(map[i][j], _str)) { + return i === UNKNOWN ? undefined : i; } - // console.log(this); - //return this; - }, + } + } else if (util.has(map[i], _str)) { + return i === UNKNOWN ? undefined : i; + } + } - str: function str(_str, map) { - - for (var i in map) { - // check if array - if (_typeof(map[i]) === OBJ_TYPE && map[i].length > 0) { - for (var j = 0; j < map[i].length; j++) { - if (util.has(map[i][j], _str)) { - return i === UNKNOWN ? undefined : i; - } - } - } else if (util.has(map[i], _str)) { - return i === UNKNOWN ? undefined : i; - } - } - return _str; + return _str; + } + }; /////////////// + // String map + ////////////// + + var maps = { + browser: { + oldsafari: { + version: { + '1.0': '/8', + '1.2': '/1', + '1.3': '/3', + '2.0': '/412', + '2.0.2': '/416', + '2.0.3': '/417', + '2.0.4': '/419', + '?': '/' + } + } + }, + device: { + amazon: { + model: { + 'Fire Phone': ['SD', 'KF'] } + }, + sprint: { + model: { + 'Evo Shift 4G': '7373KT' + }, + vendor: { + 'HTC': 'APA', + 'Sprint': 'Sprint' + } + } + }, + os: { + windows: { + version: { + 'ME': '4.90', + 'NT 3.11': 'NT3.51', + 'NT 4.0': 'NT4.0', + '2000': 'NT 5.0', + 'XP': ['NT 5.1', 'NT 5.2'], + 'Vista': 'NT 6.0', + '7': 'NT 6.1', + '8': 'NT 6.2', + '8.1': 'NT 6.3', + '10': ['NT 6.4', 'NT 10.0'], + 'RT': 'ARM' + } + } + } + }; ////////////// + // Regex map + ///////////// + + var regexes = { + browser: [[// Presto based + /(opera\smini)\/([\w\.-]+)/i, // Opera Mini + /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, // Opera Mobi/Tablet + /(opera).+version\/([\w\.]+)/i, // Opera > 9.80 + /(opera)[\/\s]+([\w\.]+)/i // Opera < 9.80 + ], [NAME, VERSION], [/(opios)[\/\s]+([\w\.]+)/i // Opera mini on iphone >= 8.0 + ], [[NAME, 'Opera Mini'], VERSION], [/\s(opr)\/([\w\.]+)/i // Opera Webkit + ], [[NAME, 'Opera'], VERSION], [// Mixed + /(kindle)\/([\w\.]+)/i, // Kindle + /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer + // Trident based + /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser/Baidu + /(?:ms|\()(ie)\s([\w\.]+)/i, // Internet Explorer + // Webkit/KHTML based + /(rekonq)\/([\w\.]*)/i, // Rekonq + /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\/([\w\.-]+)/i // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser + ], [NAME, VERSION], [/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i // IE11 + ], [[NAME, 'IE'], VERSION], [/(edge|edgios|edgea)\/((\d+)?[\w\.]+)/i // Microsoft Edge + ], [[NAME, 'Edge'], VERSION], [/(yabrowser)\/([\w\.]+)/i // Yandex + ], [[NAME, 'Yandex'], VERSION], [/(puffin)\/([\w\.]+)/i // Puffin + ], [[NAME, 'Puffin'], VERSION], [/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i // UCBrowser + ], [[NAME, 'UCBrowser'], VERSION], [/(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon + ], [[NAME, /_/g, ' '], VERSION], [/(micromessenger)\/([\w\.]+)/i // WeChat + ], [[NAME, 'WeChat'], VERSION], [/(qqbrowserlite)\/([\w\.]+)/i // QQBrowserLite + ], [NAME, VERSION], [/(QQ)\/([\d\.]+)/i // QQ, aka ShouQ + ], [NAME, VERSION], [/m?(qqbrowser)[\/\s]?([\w\.]+)/i // QQBrowser + ], [NAME, VERSION], [/(BIDUBrowser)[\/\s]?([\w\.]+)/i // Baidu Browser + ], [NAME, VERSION], [/(2345Explorer)[\/\s]?([\w\.]+)/i // 2345 Browser + ], [NAME, VERSION], [/(MetaSr)[\/\s]?([\w\.]+)/i // SouGouBrowser + ], [NAME], [/(LBBROWSER)/i // LieBao Browser + ], [NAME], [/xiaomi\/miuibrowser\/([\w\.]+)/i // MIUI Browser + ], [VERSION, [NAME, 'MIUI Browser']], [/;fbav\/([\w\.]+);/i // Facebook App for iOS & Android + ], [VERSION, [NAME, 'Facebook']], [/safari\s(line)\/([\w\.]+)/i, // Line App for iOS + /android.+(line)\/([\w\.]+)\/iab/i // Line App for Android + ], [NAME, VERSION], [/headlesschrome(?:\/([\w\.]+)|\s)/i // Chrome Headless + ], [VERSION, [NAME, 'Chrome Headless']], [/\swv\).+(chrome)\/([\w\.]+)/i // Chrome WebView + ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [/((?:oculus|samsung)browser)\/([\w\.]+)/i], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [// Oculus / Samsung Browser + /android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i // Android Browser + ], [VERSION, [NAME, 'Android Browser']], [/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia + ], [NAME, VERSION], [/(dolfin)\/([\w\.]+)/i // Dolphin + ], [[NAME, 'Dolphin'], VERSION], [/((?:android.+)crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS + ], [[NAME, 'Chrome'], VERSION], [/(coast)\/([\w\.]+)/i // Opera Coast + ], [[NAME, 'Opera Coast'], VERSION], [/fxios\/([\w\.-]+)/i // Firefox for iOS + ], [VERSION, [NAME, 'Firefox']], [/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i // Mobile Safari + ], [VERSION, [NAME, 'Mobile Safari']], [/version\/([\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile + ], [VERSION, NAME], [/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Google Search Appliance on iOS + ], [[NAME, 'GSA'], VERSION], [/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Safari < 3.0 + ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [/(konqueror)\/([\w\.]+)/i, // Konqueror + /(webkit|khtml)\/([\w\.]+)/i], [NAME, VERSION], [// Gecko based + /(navigator|netscape)\/([\w\.-]+)/i // Netscape + ], [[NAME, 'Netscape'], VERSION], [/(swiftfox)/i, // Swiftfox + /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror + /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i, // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix + /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla + // Other + /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i, // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir + /(links)\s\(([\w\.]+)/i, // Links + /(gobrowser)\/?([\w\.]*)/i, // GoBrowser + /(ice\s?browser)\/v?([\w\._]+)/i, // ICE Browser + /(mosaic)[\/\s]([\w\.]+)/i // Mosaic + ], [NAME, VERSION] + /* ///////////////////// + // Media players BEGIN + //////////////////////// + , [ + /(apple(?:coremedia|))\/((\d+)[\w\._]+)/i, // Generic Apple CoreMedia + /(coremedia) v((\d+)[\w\._]+)/i + ], [NAME, VERSION], [ + /(aqualung|lyssna|bsplayer)\/((\d+)?[\w\.-]+)/i // Aqualung/Lyssna/BSPlayer + ], [NAME, VERSION], [ + /(ares|ossproxy)\s((\d+)[\w\.-]+)/i // Ares/OSSProxy + ], [NAME, VERSION], [ + /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/((\d+)[\w\.-]+)/i, + // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC + // NSPlayer/PSP-InternetRadioPlayer/Videos + /(clementine|music player daemon)\s((\d+)[\w\.-]+)/i, // Clementine/MPD + /(lg player|nexplayer)\s((\d+)[\d\.]+)/i, + /player\/(nexplayer|lg player)\s((\d+)[\w\.-]+)/i // NexPlayer/LG Player + ], [NAME, VERSION], [ + /(nexplayer)\s((\d+)[\w\.-]+)/i // Nexplayer + ], [NAME, VERSION], [ + /(flrp)\/((\d+)[\w\.-]+)/i // Flip Player + ], [[NAME, 'Flip Player'], VERSION], [ + /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i + // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit + ], [NAME], [ + /(gstreamer) souphttpsrc (?:\([^\)]+\)){0,1} libsoup\/((\d+)[\w\.-]+)/i + // Gstreamer + ], [NAME, VERSION], [ + /(htc streaming player)\s[\w_]+\s\/\s((\d+)[\d\.]+)/i, // HTC Streaming Player + /(java|python-urllib|python-requests|wget|libcurl)\/((\d+)[\w\.-_]+)/i, + // Java/urllib/requests/wget/cURL + /(lavf)((\d+)[\d\.]+)/i // Lavf (FFMPEG) + ], [NAME, VERSION], [ + /(htc_one_s)\/((\d+)[\d\.]+)/i // HTC One S + ], [[NAME, /_/g, ' '], VERSION], [ + /(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+){0,1})/i + // MPlayer SVN + ], [NAME, VERSION], [ + /(mplayer)(?:\s|\/|[unkow-]+)((\d+)[\w\.-]+)/i // MPlayer + ], [NAME, VERSION], [ + /(mplayer)/i, // MPlayer (no other info) + /(yourmuze)/i, // YourMuze + /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime + ], [NAME], [ + /(nero (?:home|scout))\/((\d+)[\w\.-]+)/i // Nero Home/Nero Scout + ], [NAME, VERSION], [ + /(nokia\d+)\/((\d+)[\w\.-]+)/i // Nokia + ], [NAME, VERSION], [ + /\s(songbird)\/((\d+)[\w\.-]+)/i // Songbird/Philips-Songbird + ], [NAME, VERSION], [ + /(winamp)3 version ((\d+)[\w\.-]+)/i, // Winamp + /(winamp)\s((\d+)[\w\.-]+)/i, + /(winamp)mpeg\/((\d+)[\w\.-]+)/i + ], [NAME, VERSION], [ + /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info) + // inlight radio + ], [NAME], [ + /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/((\d+)[\w\.-]+)/i + // QuickTime/RealMedia/RadioApp/RadioClientApplication/ + // SoundTap/Totem/Stagefright/Streamium + ], [NAME, VERSION], [ + /(smp)((\d+)[\d\.]+)/i // SMP + ], [NAME, VERSION], [ + /(vlc) media player - version ((\d+)[\w\.]+)/i, // VLC Videolan + /(vlc)\/((\d+)[\w\.-]+)/i, + /(xbmc|gvfs|xine|xmms|irapp)\/((\d+)[\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp + /(foobar2000)\/((\d+)[\d\.]+)/i, // Foobar2000 + /(itunes)\/((\d+)[\d\.]+)/i // iTunes + ], [NAME, VERSION], [ + /(wmplayer)\/((\d+)[\w\.-]+)/i, // Windows Media Player + /(windows-media-player)\/((\d+)[\w\.-]+)/i + ], [[NAME, /-/g, ' '], VERSION], [ + /windows\/((\d+)[\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i + // Windows Media Server + ], [VERSION, [NAME, 'Windows']], [ + /(com\.riseupradioalarm)\/((\d+)[\d\.]*)/i // RiseUP Radio Alarm + ], [NAME, VERSION], [ + /(rad.io)\s((\d+)[\d\.]+)/i, // Rad.io + /(radio.(?:de|at|fr))\s((\d+)[\d\.]+)/i + ], [[NAME, 'rad.io'], VERSION] + ////////////////////// + // Media players END + ////////////////////*/ + ], + cpu: [[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i // AMD64 + ], [[ARCHITECTURE, 'amd64']], [/(ia32(?=;))/i // IA32 (quicktime) + ], [[ARCHITECTURE, util.lowerize]], [/((?:i[346]|x)86)[;\)]/i // IA32 + ], [[ARCHITECTURE, 'ia32']], [// PocketPC mistakenly identified as PowerPC + /windows\s(ce|mobile);\sppc;/i], [[ARCHITECTURE, 'arm']], [/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i // PowerPC + ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [/(sun4\w)[;\)]/i // SPARC + ], [[ARCHITECTURE, 'sparc']], [/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+[;l]))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC + ], [[ARCHITECTURE, util.lowerize]]], + device: [[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i // iPad/PlayBook + ], [MODEL, VENDOR, [TYPE, TABLET]], [/applecoremedia\/[\w\.]+ \((ipad)/ // iPad + ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [/(apple\s{0,1}tv)/i // Apple TV + ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [/(archos)\s(gamepad2?)/i, // Archos + /(hp).+(touchpad)/i, // HP TouchPad + /(hp).+(tablet)/i, // HP Tablet + /(kindle)\/([\w\.]+)/i, // Kindle + /\s(nook)[\w\s]+build\/(\w+)/i, // Nook + /(dell)\s(strea[kpr\s\d]*[\dko])/i // Dell Streak + ], [VENDOR, MODEL, [TYPE, TABLET]], [/(kf[A-z]+)\sbuild\/.+silk\//i // Kindle Fire HD + ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i // Fire Phone + ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [/android.+aft([bms])\sbuild/i // Fire TV + ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [/\((ip[honed|\s\w*]+);.+(apple)/i // iPod/iPhone + ], [MODEL, VENDOR, [TYPE, MOBILE]], [/\((ip[honed|\s\w*]+);/i // iPod/iPhone + ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [/(blackberry)[\s-]?(\w+)/i, // BlackBerry + /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i, // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron + /(hp)\s([\w\s]+\w)/i, // HP iPAQ + /(asus)-?(\w+)/i // Asus + ], [VENDOR, MODEL, [TYPE, MOBILE]], [/\(bb10;\s(\w+)/i // BlackBerry 10 + ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [// Asus Tablets + /android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [/(sony)\s(tablet\s[ps])\sbuild\//i, // Sony + /(sony)?(?:sgp.+)\sbuild\//i], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [/android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [/\s(ouya)\s/i, // Ouya + /(nintendo)\s([wids3u]+)/i // Nintendo + ], [VENDOR, MODEL, [TYPE, CONSOLE]], [/android.+;\s(shield)\sbuild/i // Nvidia + ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [/(playstation\s[34portablevi]+)/i // Playstation + ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [/(sprint\s(\w+))/i // Sprint Phones + ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i // Lenovo tablets + ], [VENDOR, MODEL, [TYPE, TABLET]], [/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, // HTC + /(zte)-(\w*)/i, // ZTE + /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony + ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [/(nexus\s9)/i // HTC Nexus 9 + ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [/d\/huawei([\w\s-]+)[;\)]/i, /(nexus\s6p)/i // Huawei + ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [/(microsoft);\s(lumia[\s\w]+)/i // Microsoft Lumia + ], [VENDOR, MODEL, [TYPE, MOBILE]], [/[\s\(;](xbox(?:\sone)?)[\s\);]/i // Microsoft Xbox + ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [/(kin\.[onetw]{3})/i // Microsoft Kin + ], [[MODEL, /\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [// Motorola + /\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i, /mot[\s-]?(\w*)/i, /(XT\d{3,4}) build\//i, /(nexus\s6)/i], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i // HbbTV devices + ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [/hbbtv.+maple;(\d+)/i], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [/\(dtv[\);].+(aquos)/i // Sharp + ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i, /((SM-T\w+))/i], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [// Samsung + /smart-tv.+(samsung)/i], [VENDOR, [TYPE, SMARTTV], MODEL], [/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i, /(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i, /sec-((sgh\w+))/i], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [/sie-(\w*)/i // Siemens + ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [/(maemo|nokia).*(n900|lumia\s\d+)/i, // Nokia + /(nokia)[\s_-]?([\w-]*)/i], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [/android\s3\.[\s\w;-]{10}(a\d{3})/i // Acer + ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [/android.+([vl]k\-?\d{3})\s+build/i // LG Tablet + ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet + ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [/(lg) netcast\.tv/i // LG SmartTV + ], [VENDOR, MODEL, [TYPE, SMARTTV]], [/(nexus\s[45])/i, // LG + /lg[e;\s\/-]+(\w*)/i, /android.+lg(\-?[\d\w]+)\s+build/i], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [/android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo + ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [/linux;.+((jolla));/i // Jolla + ], [VENDOR, MODEL, [TYPE, MOBILE]], [/((pebble))app\/[\d\.]+\s/i // Pebble + ], [VENDOR, MODEL, [TYPE, WEARABLE]], [/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i // OPPO + ], [VENDOR, MODEL, [TYPE, MOBILE]], [/crkey/i // Google Chromecast + ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [/android.+;\s(glass)\s\d/i // Google Glass + ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [/android.+;\s(pixel c)\s/i // Google Pixel C + ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [/android.+;\s(pixel [xl2]{1,2}|pixel)\s/i // Google Pixel + ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [/android.+;\s(\w+)\s+build\/hm\1/i, // Xiaomi Hongmi 'numeric' models + /android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i, // Xiaomi Hongmi + /android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i, // Xiaomi Mi + /android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i // Redmi Phones + ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i // Mi Pad tablets + ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [/android.+;\s(m[1-5]\snote)\sbuild/i // Meizu Tablet + ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [/android.+a000(1)\s+build/i, // OnePlus + /android.+oneplus\s(a\d{4})\s+build/i], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i // RCA Tablets + ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i // Dell Venue Tablets + ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i // Verizon Tablet + ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i // Barnes & Noble Tablet + ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i // Barnes & Noble Tablet + ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [/android.+;\s(k88)\sbuild/i // ZTE K Series Tablet + ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i // Swiss GEN Mobile + ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [/android.+[;\/]\s*(zur\d{3})\s+build/i // Swiss ZUR Tablet + ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i // Zeki Tablets + ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [/(android).+[;\/]\s+([YR]\d{2})\s+build/i, /android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i // Dragon Touch Tablet + ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i // Insignia Tablets + ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i // NextBook Tablets + ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [/android.+[;\/]\s*(Xtreme\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [// Voice Xtreme Phones + /android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i // LvTel Phones + ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i // Envizen Tablets + ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i // Le Pan Tablets + ], [VENDOR, MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i // MachSpeed Tablets + ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i // Trinity Tablets + ], [VENDOR, MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*TU_(1491)\s+build/i // Rotor Tablets + ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [/android.+(KS(.+))\s+build/i // Amazon Kindle Tablets + ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i // Gigaset Tablets + ], [VENDOR, MODEL, [TYPE, TABLET]], [/\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet + /\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile + ], [[TYPE, util.lowerize], VENDOR, MODEL], [/(android[\w\.\s\-]{0,9});.+build/i // Generic Android Device + ], [MODEL, [VENDOR, 'Generic']] + /*////////////////////////// + // TODO: move to string map + //////////////////////////// + /(C6603)/i // Sony Xperia Z C6603 + ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [ + /(C6903)/i // Sony Xperia Z 1 + ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [ + /(SM-G900[F|H])/i // Samsung Galaxy S5 + ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ + /(SM-G7102)/i // Samsung Galaxy Grand 2 + ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ + /(SM-G530H)/i // Samsung Galaxy Grand Prime + ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ + /(SM-G313HZ)/i // Samsung Galaxy V + ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ + /(SM-T805)/i // Samsung Galaxy Tab S 10.5 + ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [ + /(SM-G800F)/i // Samsung Galaxy S5 Mini + ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ + /(SM-T311)/i // Samsung Galaxy Tab 3 8.0 + ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [ + /(T3C)/i // Advan Vandroid T3C + ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [ + /(ADVAN T1J\+)/i // Advan Vandroid T1J+ + ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [ + /(ADVAN S4A)/i // Advan Vandroid S4A + ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [ + /(V972M)/i // ZTE V972M + ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [ + /(i-mobile)\s(IQ\s[\d\.]+)/i // i-mobile IQ + ], [VENDOR, MODEL, [TYPE, MOBILE]], [ + /(IQ6.3)/i // i-mobile IQ IQ 6.3 + ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [ + /(i-mobile)\s(i-style\s[\d\.]+)/i // i-mobile i-STYLE + ], [VENDOR, MODEL, [TYPE, MOBILE]], [ + /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1 + ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [ + /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512 + ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [ + ///////////// + // END TODO + ///////////*/ + ], + engine: [[/windows.+\sedge\/([\w\.]+)/i // EdgeHTML + ], [VERSION, [NAME, 'EdgeHTML']], [/(presto)\/([\w\.]+)/i, // Presto + /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m + /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, // KHTML/Tasman/Links + /(icab)[\/\s]([23]\.[\d\.]+)/i // iCab + ], [NAME, VERSION], [/rv\:([\w\.]{1,9}).+(gecko)/i // Gecko + ], [VERSION, NAME]], + os: [[// Windows based + /microsoft\s(windows)\s(vista|xp)/i // Windows (iTunes) + ], [NAME, VERSION], [/(windows)\snt\s6\.2;\s(arm)/i, // Windows RT + /(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i, // Windows Phone + /(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [// Mobile/Embedded OS + /\((bb)(10);/i // BlackBerry 10 + ], [[NAME, 'BlackBerry'], VERSION], [/(blackberry)\w*\/?([\w\.]*)/i, // Blackberry + /(tizen)[\/\s]([\w\.]+)/i, // Tizen + /(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]*)/i, // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki + /linux;.+(sailfish);/i // Sailfish OS + ], [NAME, VERSION], [/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i // Symbian + ], [[NAME, 'Symbian'], VERSION], [/\((series40);/i // Series 40 + ], [NAME], [/mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS + ], [[NAME, 'Firefox OS'], VERSION], [// Console + /(nintendo|playstation)\s([wids34portablevu]+)/i, // Nintendo/Playstation + // GNU/Linux based + /(mint)[\/\s\(]?(\w*)/i, // Mint + /(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux + /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i, // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware + // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus + /(hurd|linux)\s?([\w\.]*)/i, // Hurd/Linux + /(gnu)\s?([\w\.]*)/i // GNU + ], [NAME, VERSION], [/(cros)\s[\w]+\s([\w\.]+\w)/i // Chromium OS + ], [[NAME, 'Chromium OS'], VERSION], [// Solaris + /(sunos)\s?([\w\.\d]*)/i // Solaris + ], [[NAME, 'Solaris'], VERSION], [// BSD based + /\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly + ], [NAME, VERSION], [/(haiku)\s(\w+)/i // Haiku + ], [NAME, VERSION], [/cfnetwork\/.+darwin/i, /ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i // iOS + ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [/(mac\sos\sx)\s?([\w\s\.]*)/i, /(macintosh|mac(?=_powerpc)\s)/i // Mac OS + ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [// Other + /((?:open)?solaris)[\/\s-]?([\w\.]*)/i, // Solaris + /(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i, // AIX + /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS + /(unix)\s?([\w\.]*)/i // UNIX + ], [NAME, VERSION]] + }; ///////////////// + // Constructor + //////////////// + + /* + var Browser = function (name, version) { + this[NAME] = name; + this[VERSION] = version; + }; + var CPU = function (arch) { + this[ARCHITECTURE] = arch; + }; + var Device = function (vendor, model, type) { + this[VENDOR] = vendor; + this[MODEL] = model; + this[TYPE] = type; + }; + var Engine = Browser; + var OS = Browser; + */ + + var UAParser = function UAParser(uastring, extensions) { + if (_typeof(uastring) === 'object') { + extensions = uastring; + uastring = undefined; + } + + if (!(this instanceof UAParser)) { + return new UAParser(uastring, extensions).getResult(); + } + + var ua = uastring || (window && window.navigator && window.navigator.userAgent ? window.navigator.userAgent : EMPTY); + var rgxmap = extensions ? util.extend(regexes, extensions) : regexes; //var browser = new Browser(); + //var cpu = new CPU(); + //var device = new Device(); + //var engine = new Engine(); + //var os = new OS(); + + this.getBrowser = function () { + var browser = { + name: undefined, + version: undefined + }; + mapper.rgx.call(browser, ua, rgxmap.browser); + browser.major = util.major(browser.version); // deprecated + + return browser; }; - /////////////// - // String map - ////////////// + this.getCPU = function () { + var cpu = { + architecture: undefined + }; + mapper.rgx.call(cpu, ua, rgxmap.cpu); + return cpu; + }; + this.getDevice = function () { + var device = { + vendor: undefined, + model: undefined, + type: undefined + }; + mapper.rgx.call(device, ua, rgxmap.device); + return device; + }; - var maps = { + this.getEngine = function () { + var engine = { + name: undefined, + version: undefined + }; + mapper.rgx.call(engine, ua, rgxmap.engine); + return engine; + }; - browser: { - oldsafari: { - version: { - '1.0': '/8', - '1.2': '/1', - '1.3': '/3', - '2.0': '/412', - '2.0.2': '/416', - '2.0.3': '/417', - '2.0.4': '/419', - '?': '/' - } - } - }, + this.getOS = function () { + var os = { + name: undefined, + version: undefined + }; + mapper.rgx.call(os, ua, rgxmap.os); + return os; + }; - device: { - amazon: { - model: { - 'Fire Phone': ['SD', 'KF'] - } - }, - sprint: { - model: { - 'Evo Shift 4G': '7373KT' - }, - vendor: { - 'HTC': 'APA', - 'Sprint': 'Sprint' - } - } - }, + this.getResult = function () { + return { + ua: this.getUA(), + browser: this.getBrowser(), + engine: this.getEngine(), + os: this.getOS(), + device: this.getDevice(), + cpu: this.getCPU() + }; + }; - os: { - windows: { - version: { - 'ME': '4.90', - 'NT 3.11': 'NT3.51', - 'NT 4.0': 'NT4.0', - '2000': 'NT 5.0', - 'XP': ['NT 5.1', 'NT 5.2'], - 'Vista': 'NT 6.0', - '7': 'NT 6.1', - '8': 'NT 6.2', - '8.1': 'NT 6.3', - '10': ['NT 6.4', 'NT 10.0'], - 'RT': 'ARM' - } - } - } + this.getUA = function () { + return ua; }; - ////////////// - // Regex map - ///////////// - - - var regexes = { - - browser: [[ - - // Presto based - /(opera\smini)\/([\w\.-]+)/i, // Opera Mini - /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, // Opera Mobi/Tablet - /(opera).+version\/([\w\.]+)/i, // Opera > 9.80 - /(opera)[\/\s]+([\w\.]+)/i // Opera < 9.80 - ], [NAME, VERSION], [/(opios)[\/\s]+([\w\.]+)/i // Opera mini on iphone >= 8.0 - ], [[NAME, 'Opera Mini'], VERSION], [/\s(opr)\/([\w\.]+)/i // Opera Webkit - ], [[NAME, 'Opera'], VERSION], [ - - // Mixed - /(kindle)\/([\w\.]+)/i, // Kindle - /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i, - // Lunascape/Maxthon/Netfront/Jasmine/Blazer - - // Trident based - /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, - // Avant/IEMobile/SlimBrowser/Baidu - /(?:ms|\()(ie)\s([\w\.]+)/i, // Internet Explorer - - // Webkit/KHTML based - /(rekonq)\/([\w\.]*)/i, // Rekonq - /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\/([\w\.-]+)/i - // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser - ], [NAME, VERSION], [/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i // IE11 - ], [[NAME, 'IE'], VERSION], [/(edge|edgios|edgea)\/((\d+)?[\w\.]+)/i // Microsoft Edge - ], [[NAME, 'Edge'], VERSION], [/(yabrowser)\/([\w\.]+)/i // Yandex - ], [[NAME, 'Yandex'], VERSION], [/(puffin)\/([\w\.]+)/i // Puffin - ], [[NAME, 'Puffin'], VERSION], [/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i - // UCBrowser - ], [[NAME, 'UCBrowser'], VERSION], [/(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon - ], [[NAME, /_/g, ' '], VERSION], [/(micromessenger)\/([\w\.]+)/i // WeChat - ], [[NAME, 'WeChat'], VERSION], [/(qqbrowserlite)\/([\w\.]+)/i // QQBrowserLite - ], [NAME, VERSION], [/(QQ)\/([\d\.]+)/i // QQ, aka ShouQ - ], [NAME, VERSION], [/m?(qqbrowser)[\/\s]?([\w\.]+)/i // QQBrowser - ], [NAME, VERSION], [/(BIDUBrowser)[\/\s]?([\w\.]+)/i // Baidu Browser - ], [NAME, VERSION], [/(2345Explorer)[\/\s]?([\w\.]+)/i // 2345 Browser - ], [NAME, VERSION], [/(MetaSr)[\/\s]?([\w\.]+)/i // SouGouBrowser - ], [NAME], [/(LBBROWSER)/i // LieBao Browser - ], [NAME], [/xiaomi\/miuibrowser\/([\w\.]+)/i // MIUI Browser - ], [VERSION, [NAME, 'MIUI Browser']], [/;fbav\/([\w\.]+);/i // Facebook App for iOS & Android - ], [VERSION, [NAME, 'Facebook']], [/safari\s(line)\/([\w\.]+)/i, // Line App for iOS - /android.+(line)\/([\w\.]+)\/iab/i // Line App for Android - ], [NAME, VERSION], [/headlesschrome(?:\/([\w\.]+)|\s)/i // Chrome Headless - ], [VERSION, [NAME, 'Chrome Headless']], [/\swv\).+(chrome)\/([\w\.]+)/i // Chrome WebView - ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [/((?:oculus|samsung)browser)\/([\w\.]+)/i], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [// Oculus / Samsung Browser - - /android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i // Android Browser - ], [VERSION, [NAME, 'Android Browser']], [/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i - // Chrome/OmniWeb/Arora/Tizen/Nokia - ], [NAME, VERSION], [/(dolfin)\/([\w\.]+)/i // Dolphin - ], [[NAME, 'Dolphin'], VERSION], [/((?:android.+)crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS - ], [[NAME, 'Chrome'], VERSION], [/(coast)\/([\w\.]+)/i // Opera Coast - ], [[NAME, 'Opera Coast'], VERSION], [/fxios\/([\w\.-]+)/i // Firefox for iOS - ], [VERSION, [NAME, 'Firefox']], [/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i // Mobile Safari - ], [VERSION, [NAME, 'Mobile Safari']], [/version\/([\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile - ], [VERSION, NAME], [/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Google Search Appliance on iOS - ], [[NAME, 'GSA'], VERSION], [/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Safari < 3.0 - ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [/(konqueror)\/([\w\.]+)/i, // Konqueror - /(webkit|khtml)\/([\w\.]+)/i], [NAME, VERSION], [ - - // Gecko based - /(navigator|netscape)\/([\w\.-]+)/i // Netscape - ], [[NAME, 'Netscape'], VERSION], [/(swiftfox)/i, // Swiftfox - /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, - // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror - /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i, - - // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix - /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla - - // Other - /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i, - // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir - /(links)\s\(([\w\.]+)/i, // Links - /(gobrowser)\/?([\w\.]*)/i, // GoBrowser - /(ice\s?browser)\/v?([\w\._]+)/i, // ICE Browser - /(mosaic)[\/\s]([\w\.]+)/i // Mosaic - ], [NAME, VERSION] - - /* ///////////////////// - // Media players BEGIN - //////////////////////// - , [ - /(apple(?:coremedia|))\/((\d+)[\w\._]+)/i, // Generic Apple CoreMedia - /(coremedia) v((\d+)[\w\._]+)/i - ], [NAME, VERSION], [ - /(aqualung|lyssna|bsplayer)\/((\d+)?[\w\.-]+)/i // Aqualung/Lyssna/BSPlayer - ], [NAME, VERSION], [ - /(ares|ossproxy)\s((\d+)[\w\.-]+)/i // Ares/OSSProxy - ], [NAME, VERSION], [ - /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/((\d+)[\w\.-]+)/i, - // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC - // NSPlayer/PSP-InternetRadioPlayer/Videos - /(clementine|music player daemon)\s((\d+)[\w\.-]+)/i, // Clementine/MPD - /(lg player|nexplayer)\s((\d+)[\d\.]+)/i, - /player\/(nexplayer|lg player)\s((\d+)[\w\.-]+)/i // NexPlayer/LG Player - ], [NAME, VERSION], [ - /(nexplayer)\s((\d+)[\w\.-]+)/i // Nexplayer - ], [NAME, VERSION], [ - /(flrp)\/((\d+)[\w\.-]+)/i // Flip Player - ], [[NAME, 'Flip Player'], VERSION], [ - /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i - // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit - ], [NAME], [ - /(gstreamer) souphttpsrc (?:\([^\)]+\)){0,1} libsoup\/((\d+)[\w\.-]+)/i - // Gstreamer - ], [NAME, VERSION], [ - /(htc streaming player)\s[\w_]+\s\/\s((\d+)[\d\.]+)/i, // HTC Streaming Player - /(java|python-urllib|python-requests|wget|libcurl)\/((\d+)[\w\.-_]+)/i, - // Java/urllib/requests/wget/cURL - /(lavf)((\d+)[\d\.]+)/i // Lavf (FFMPEG) - ], [NAME, VERSION], [ - /(htc_one_s)\/((\d+)[\d\.]+)/i // HTC One S - ], [[NAME, /_/g, ' '], VERSION], [ - /(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+){0,1})/i - // MPlayer SVN - ], [NAME, VERSION], [ - /(mplayer)(?:\s|\/|[unkow-]+)((\d+)[\w\.-]+)/i // MPlayer - ], [NAME, VERSION], [ - /(mplayer)/i, // MPlayer (no other info) - /(yourmuze)/i, // YourMuze - /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime - ], [NAME], [ - /(nero (?:home|scout))\/((\d+)[\w\.-]+)/i // Nero Home/Nero Scout - ], [NAME, VERSION], [ - /(nokia\d+)\/((\d+)[\w\.-]+)/i // Nokia - ], [NAME, VERSION], [ - /\s(songbird)\/((\d+)[\w\.-]+)/i // Songbird/Philips-Songbird - ], [NAME, VERSION], [ - /(winamp)3 version ((\d+)[\w\.-]+)/i, // Winamp - /(winamp)\s((\d+)[\w\.-]+)/i, - /(winamp)mpeg\/((\d+)[\w\.-]+)/i - ], [NAME, VERSION], [ - /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info) - // inlight radio - ], [NAME], [ - /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/((\d+)[\w\.-]+)/i - // QuickTime/RealMedia/RadioApp/RadioClientApplication/ - // SoundTap/Totem/Stagefright/Streamium - ], [NAME, VERSION], [ - /(smp)((\d+)[\d\.]+)/i // SMP - ], [NAME, VERSION], [ - /(vlc) media player - version ((\d+)[\w\.]+)/i, // VLC Videolan - /(vlc)\/((\d+)[\w\.-]+)/i, - /(xbmc|gvfs|xine|xmms|irapp)\/((\d+)[\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp - /(foobar2000)\/((\d+)[\d\.]+)/i, // Foobar2000 - /(itunes)\/((\d+)[\d\.]+)/i // iTunes - ], [NAME, VERSION], [ - /(wmplayer)\/((\d+)[\w\.-]+)/i, // Windows Media Player - /(windows-media-player)\/((\d+)[\w\.-]+)/i - ], [[NAME, /-/g, ' '], VERSION], [ - /windows\/((\d+)[\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i - // Windows Media Server - ], [VERSION, [NAME, 'Windows']], [ - /(com\.riseupradioalarm)\/((\d+)[\d\.]*)/i // RiseUP Radio Alarm - ], [NAME, VERSION], [ - /(rad.io)\s((\d+)[\d\.]+)/i, // Rad.io - /(radio.(?:de|at|fr))\s((\d+)[\d\.]+)/i - ], [[NAME, 'rad.io'], VERSION] - ////////////////////// - // Media players END - ////////////////////*/ - - ], - - cpu: [[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i // AMD64 - ], [[ARCHITECTURE, 'amd64']], [/(ia32(?=;))/i // IA32 (quicktime) - ], [[ARCHITECTURE, util.lowerize]], [/((?:i[346]|x)86)[;\)]/i // IA32 - ], [[ARCHITECTURE, 'ia32']], [ - - // PocketPC mistakenly identified as PowerPC - /windows\s(ce|mobile);\sppc;/i], [[ARCHITECTURE, 'arm']], [/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i // PowerPC - ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [/(sun4\w)[;\)]/i // SPARC - ], [[ARCHITECTURE, 'sparc']], [/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+[;l]))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i - // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC - ], [[ARCHITECTURE, util.lowerize]]], - - device: [[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i // iPad/PlayBook - ], [MODEL, VENDOR, [TYPE, TABLET]], [/applecoremedia\/[\w\.]+ \((ipad)/ // iPad - ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [/(apple\s{0,1}tv)/i // Apple TV - ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [/(archos)\s(gamepad2?)/i, // Archos - /(hp).+(touchpad)/i, // HP TouchPad - /(hp).+(tablet)/i, // HP Tablet - /(kindle)\/([\w\.]+)/i, // Kindle - /\s(nook)[\w\s]+build\/(\w+)/i, // Nook - /(dell)\s(strea[kpr\s\d]*[\dko])/i // Dell Streak - ], [VENDOR, MODEL, [TYPE, TABLET]], [/(kf[A-z]+)\sbuild\/.+silk\//i // Kindle Fire HD - ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i // Fire Phone - ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [/android.+aft([bms])\sbuild/i // Fire TV - ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [/\((ip[honed|\s\w*]+);.+(apple)/i // iPod/iPhone - ], [MODEL, VENDOR, [TYPE, MOBILE]], [/\((ip[honed|\s\w*]+);/i // iPod/iPhone - ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [/(blackberry)[\s-]?(\w+)/i, // BlackBerry - /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i, - // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron - /(hp)\s([\w\s]+\w)/i, // HP iPAQ - /(asus)-?(\w+)/i // Asus - ], [VENDOR, MODEL, [TYPE, MOBILE]], [/\(bb10;\s(\w+)/i // BlackBerry 10 - ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [ - // Asus Tablets - /android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [/(sony)\s(tablet\s[ps])\sbuild\//i, // Sony - /(sony)?(?:sgp.+)\sbuild\//i], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [/android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [/\s(ouya)\s/i, // Ouya - /(nintendo)\s([wids3u]+)/i // Nintendo - ], [VENDOR, MODEL, [TYPE, CONSOLE]], [/android.+;\s(shield)\sbuild/i // Nvidia - ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [/(playstation\s[34portablevi]+)/i // Playstation - ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [/(sprint\s(\w+))/i // Sprint Phones - ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i // Lenovo tablets - ], [VENDOR, MODEL, [TYPE, TABLET]], [/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, // HTC - /(zte)-(\w*)/i, // ZTE - /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i - // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony - ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [/(nexus\s9)/i // HTC Nexus 9 - ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [/d\/huawei([\w\s-]+)[;\)]/i, /(nexus\s6p)/i // Huawei - ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [/(microsoft);\s(lumia[\s\w]+)/i // Microsoft Lumia - ], [VENDOR, MODEL, [TYPE, MOBILE]], [/[\s\(;](xbox(?:\sone)?)[\s\);]/i // Microsoft Xbox - ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [/(kin\.[onetw]{3})/i // Microsoft Kin - ], [[MODEL, /\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [ - - // Motorola - /\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i, /mot[\s-]?(\w*)/i, /(XT\d{3,4}) build\//i, /(nexus\s6)/i], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i // HbbTV devices - ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [/hbbtv.+maple;(\d+)/i], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [/\(dtv[\);].+(aquos)/i // Sharp - ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i, /((SM-T\w+))/i], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [// Samsung - /smart-tv.+(samsung)/i], [VENDOR, [TYPE, SMARTTV], MODEL], [/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i, /(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i, /sec-((sgh\w+))/i], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [/sie-(\w*)/i // Siemens - ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [/(maemo|nokia).*(n900|lumia\s\d+)/i, // Nokia - /(nokia)[\s_-]?([\w-]*)/i], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [/android\s3\.[\s\w;-]{10}(a\d{3})/i // Acer - ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [/android.+([vl]k\-?\d{3})\s+build/i // LG Tablet - ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet - ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [/(lg) netcast\.tv/i // LG SmartTV - ], [VENDOR, MODEL, [TYPE, SMARTTV]], [/(nexus\s[45])/i, // LG - /lg[e;\s\/-]+(\w*)/i, /android.+lg(\-?[\d\w]+)\s+build/i], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [/android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo - ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [/linux;.+((jolla));/i // Jolla - ], [VENDOR, MODEL, [TYPE, MOBILE]], [/((pebble))app\/[\d\.]+\s/i // Pebble - ], [VENDOR, MODEL, [TYPE, WEARABLE]], [/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i // OPPO - ], [VENDOR, MODEL, [TYPE, MOBILE]], [/crkey/i // Google Chromecast - ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [/android.+;\s(glass)\s\d/i // Google Glass - ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [/android.+;\s(pixel c)\s/i // Google Pixel C - ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [/android.+;\s(pixel [xl2]{1,2}|pixel)\s/i // Google Pixel - ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [/android.+;\s(\w+)\s+build\/hm\1/i, // Xiaomi Hongmi 'numeric' models - /android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i, // Xiaomi Hongmi - /android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i, // Xiaomi Mi - /android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i // Redmi Phones - ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i // Mi Pad tablets - ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [/android.+;\s(m[1-5]\snote)\sbuild/i // Meizu Tablet - ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [/android.+a000(1)\s+build/i, // OnePlus - /android.+oneplus\s(a\d{4})\s+build/i], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i // RCA Tablets - ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i // Dell Venue Tablets - ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i // Verizon Tablet - ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i // Barnes & Noble Tablet - ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i // Barnes & Noble Tablet - ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [/android.+;\s(k88)\sbuild/i // ZTE K Series Tablet - ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i // Swiss GEN Mobile - ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [/android.+[;\/]\s*(zur\d{3})\s+build/i // Swiss ZUR Tablet - ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i // Zeki Tablets - ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [/(android).+[;\/]\s+([YR]\d{2})\s+build/i, /android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i // Dragon Touch Tablet - ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i // Insignia Tablets - ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i // NextBook Tablets - ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [/android.+[;\/]\s*(Xtreme\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [// Voice Xtreme Phones - - /android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i // LvTel Phones - ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i // Envizen Tablets - ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i // Le Pan Tablets - ], [VENDOR, MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i // MachSpeed Tablets - ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i // Trinity Tablets - ], [VENDOR, MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*TU_(1491)\s+build/i // Rotor Tablets - ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [/android.+(KS(.+))\s+build/i // Amazon Kindle Tablets - ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i // Gigaset Tablets - ], [VENDOR, MODEL, [TYPE, TABLET]], [/\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet - /\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile - ], [[TYPE, util.lowerize], VENDOR, MODEL], [/(android[\w\.\s\-]{0,9});.+build/i // Generic Android Device - ], [MODEL, [VENDOR, 'Generic']] - - /*////////////////////////// - // TODO: move to string map - //////////////////////////// - /(C6603)/i // Sony Xperia Z C6603 - ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [ - /(C6903)/i // Sony Xperia Z 1 - ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [ - /(SM-G900[F|H])/i // Samsung Galaxy S5 - ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ - /(SM-G7102)/i // Samsung Galaxy Grand 2 - ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ - /(SM-G530H)/i // Samsung Galaxy Grand Prime - ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ - /(SM-G313HZ)/i // Samsung Galaxy V - ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ - /(SM-T805)/i // Samsung Galaxy Tab S 10.5 - ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [ - /(SM-G800F)/i // Samsung Galaxy S5 Mini - ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ - /(SM-T311)/i // Samsung Galaxy Tab 3 8.0 - ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [ - /(T3C)/i // Advan Vandroid T3C - ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [ - /(ADVAN T1J\+)/i // Advan Vandroid T1J+ - ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [ - /(ADVAN S4A)/i // Advan Vandroid S4A - ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [ - /(V972M)/i // ZTE V972M - ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [ - /(i-mobile)\s(IQ\s[\d\.]+)/i // i-mobile IQ - ], [VENDOR, MODEL, [TYPE, MOBILE]], [ - /(IQ6.3)/i // i-mobile IQ IQ 6.3 - ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [ - /(i-mobile)\s(i-style\s[\d\.]+)/i // i-mobile i-STYLE - ], [VENDOR, MODEL, [TYPE, MOBILE]], [ - /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1 - ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [ - /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512 - ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [ - ///////////// - // END TODO - ///////////*/ - - ], - - engine: [[/windows.+\sedge\/([\w\.]+)/i // EdgeHTML - ], [VERSION, [NAME, 'EdgeHTML']], [/(presto)\/([\w\.]+)/i, // Presto - /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m - /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, // KHTML/Tasman/Links - /(icab)[\/\s]([23]\.[\d\.]+)/i // iCab - ], [NAME, VERSION], [/rv\:([\w\.]{1,9}).+(gecko)/i // Gecko - ], [VERSION, NAME]], - - os: [[ - - // Windows based - /microsoft\s(windows)\s(vista|xp)/i // Windows (iTunes) - ], [NAME, VERSION], [/(windows)\snt\s6\.2;\s(arm)/i, // Windows RT - /(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i, // Windows Phone - /(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [ - - // Mobile/Embedded OS - /\((bb)(10);/i // BlackBerry 10 - ], [[NAME, 'BlackBerry'], VERSION], [/(blackberry)\w*\/?([\w\.]*)/i, // Blackberry - /(tizen)[\/\s]([\w\.]+)/i, // Tizen - /(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]*)/i, - // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki - /linux;.+(sailfish);/i // Sailfish OS - ], [NAME, VERSION], [/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i // Symbian - ], [[NAME, 'Symbian'], VERSION], [/\((series40);/i // Series 40 - ], [NAME], [/mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS - ], [[NAME, 'Firefox OS'], VERSION], [ - - // Console - /(nintendo|playstation)\s([wids34portablevu]+)/i, // Nintendo/Playstation - - // GNU/Linux based - /(mint)[\/\s\(]?(\w*)/i, // Mint - /(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux - /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i, - // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware - // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus - /(hurd|linux)\s?([\w\.]*)/i, // Hurd/Linux - /(gnu)\s?([\w\.]*)/i // GNU - ], [NAME, VERSION], [/(cros)\s[\w]+\s([\w\.]+\w)/i // Chromium OS - ], [[NAME, 'Chromium OS'], VERSION], [ - - // Solaris - /(sunos)\s?([\w\.\d]*)/i // Solaris - ], [[NAME, 'Solaris'], VERSION], [ - - // BSD based - /\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly - ], [NAME, VERSION], [/(haiku)\s(\w+)/i // Haiku - ], [NAME, VERSION], [/cfnetwork\/.+darwin/i, /ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i // iOS - ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [/(mac\sos\sx)\s?([\w\s\.]*)/i, /(macintosh|mac(?=_powerpc)\s)/i // Mac OS - ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [ - - // Other - /((?:open)?solaris)[\/\s-]?([\w\.]*)/i, // Solaris - /(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i, // AIX - /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, - // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS - /(unix)\s?([\w\.]*)/i // UNIX - ], [NAME, VERSION]] + this.setUA = function (uastring) { + ua = uastring; //browser = new Browser(); + //cpu = new CPU(); + //device = new Device(); + //engine = new Engine(); + //os = new OS(); + + return this; }; - ///////////////// - // Constructor - //////////////// + return this; + }; + + UAParser.VERSION = LIBVERSION; + UAParser.BROWSER = { + NAME: NAME, + MAJOR: MAJOR, + // deprecated + VERSION: VERSION + }; + UAParser.CPU = { + ARCHITECTURE: ARCHITECTURE + }; + UAParser.DEVICE = { + MODEL: MODEL, + VENDOR: VENDOR, + TYPE: TYPE, + CONSOLE: CONSOLE, + MOBILE: MOBILE, + SMARTTV: SMARTTV, + TABLET: TABLET, + WEARABLE: WEARABLE, + EMBEDDED: EMBEDDED + }; + UAParser.ENGINE = { + NAME: NAME, + VERSION: VERSION + }; + UAParser.OS = { + NAME: NAME, + VERSION: VERSION + }; //UAParser.Utils = util; + /////////// + // Export + ////////// + // check js environment + + if (( false ? undefined : _typeof(exports)) !== UNDEF_TYPE) { + // nodejs env + if (( false ? undefined : _typeof(module)) !== UNDEF_TYPE && module.exports) { + exports = module.exports = UAParser; + } // TODO: test!!!!!!!! + /* - var Browser = function (name, version) { - this[NAME] = name; - this[VERSION] = version; - }; - var CPU = function (arch) { - this[ARCHITECTURE] = arch; - }; - var Device = function (vendor, model, type) { - this[VENDOR] = vendor; - this[MODEL] = model; - this[TYPE] = type; + if (require && require.main === module && process) { + // cli + var jsonize = function (arr) { + var res = []; + for (var i in arr) { + res.push(new UAParser(arr[i]).getResult()); + } + process.stdout.write(JSON.stringify(res, null, 2) + '\n'); }; - var Engine = Browser; - var OS = Browser; + if (process.stdin.isTTY) { + // via args + jsonize(process.argv.slice(2)); + } else { + // via pipe + var str = ''; + process.stdin.on('readable', function() { + var read = process.stdin.read(); + if (read !== null) { + str += read; + } + }); + process.stdin.on('end', function () { + jsonize(str.replace(/\n$/, '').split('\n')); + }); + } + } */ - var UAParser = function UAParser(uastring, extensions) { - if ((typeof uastring === 'undefined' ? 'undefined' : _typeof(uastring)) === 'object') { - extensions = uastring; - uastring = undefined; - } - if (!(this instanceof UAParser)) { - return new UAParser(uastring, extensions).getResult(); - } + exports.UAParser = UAParser; + } else { + // requirejs env (optional) + if (( false ? undefined : _typeof(__webpack_require__(/*! !webpack amd define */ "./node_modules/webpack/buildin/amd-define.js"))) === FUNC_TYPE && __webpack_require__(/*! !webpack amd options */ "./node_modules/webpack/buildin/amd-options.js")) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () { + return UAParser; + }).call(exports, __webpack_require__, exports, module), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (window) { + // browser env + window.UAParser = UAParser; + } + } // jQuery/Zepto specific (optional) + // Note: + // In AMD env the global scope should be kept clean, but jQuery is an exception. + // jQuery always exports to global scope, unless jQuery.noConflict(true) is used, + // and we should catch that. - var ua = uastring || (window && window.navigator && window.navigator.userAgent ? window.navigator.userAgent : EMPTY); - var rgxmap = extensions ? util.extend(regexes, extensions) : regexes; - //var browser = new Browser(); - //var cpu = new CPU(); - //var device = new Device(); - //var engine = new Engine(); - //var os = new OS(); - - this.getBrowser = function () { - var browser = { name: undefined, version: undefined }; - mapper.rgx.call(browser, ua, rgxmap.browser); - browser.major = util.major(browser.version); // deprecated - return browser; - }; - this.getCPU = function () { - var cpu = { architecture: undefined }; - mapper.rgx.call(cpu, ua, rgxmap.cpu); - return cpu; - }; - this.getDevice = function () { - var device = { vendor: undefined, model: undefined, type: undefined }; - mapper.rgx.call(device, ua, rgxmap.device); - return device; - }; - this.getEngine = function () { - var engine = { name: undefined, version: undefined }; - mapper.rgx.call(engine, ua, rgxmap.engine); - return engine; - }; - this.getOS = function () { - var os = { name: undefined, version: undefined }; - mapper.rgx.call(os, ua, rgxmap.os); - return os; - }; - this.getResult = function () { - return { - ua: this.getUA(), - browser: this.getBrowser(), - engine: this.getEngine(), - os: this.getOS(), - device: this.getDevice(), - cpu: this.getCPU() - }; - }; - this.getUA = function () { - return ua; - }; - this.setUA = function (uastring) { - ua = uastring; - //browser = new Browser(); - //cpu = new CPU(); - //device = new Device(); - //engine = new Engine(); - //os = new OS(); - return this; - }; - return this; - }; - UAParser.VERSION = LIBVERSION; - UAParser.BROWSER = { - NAME: NAME, - MAJOR: MAJOR, // deprecated - VERSION: VERSION - }; - UAParser.CPU = { - ARCHITECTURE: ARCHITECTURE - }; - UAParser.DEVICE = { - MODEL: MODEL, - VENDOR: VENDOR, - TYPE: TYPE, - CONSOLE: CONSOLE, - MOBILE: MOBILE, - SMARTTV: SMARTTV, - TABLET: TABLET, - WEARABLE: WEARABLE, - EMBEDDED: EMBEDDED - }; - UAParser.ENGINE = { - NAME: NAME, - VERSION: VERSION - }; - UAParser.OS = { - NAME: NAME, - VERSION: VERSION - }; - //UAParser.Utils = util; + var $ = window && (window.jQuery || window.Zepto); - /////////// - // Export - ////////// + if (_typeof($) !== UNDEF_TYPE) { + var parser = new UAParser(); + $.ua = parser.getResult(); + $.ua.get = function () { + return parser.getUA(); + }; - // check js environment - if (( false ? undefined : _typeof(exports)) !== UNDEF_TYPE) { - // nodejs env - if (( false ? undefined : _typeof(module)) !== UNDEF_TYPE && module.exports) { - exports = module.exports = UAParser; - } - // TODO: test!!!!!!!! - /* - if (require && require.main === module && process) { - // cli - var jsonize = function (arr) { - var res = []; - for (var i in arr) { - res.push(new UAParser(arr[i]).getResult()); - } - process.stdout.write(JSON.stringify(res, null, 2) + '\n'); - }; - if (process.stdin.isTTY) { - // via args - jsonize(process.argv.slice(2)); - } else { - // via pipe - var str = ''; - process.stdin.on('readable', function() { - var read = process.stdin.read(); - if (read !== null) { - str += read; - } - }); - process.stdin.on('end', function () { - jsonize(str.replace(/\n$/, '').split('\n')); - }); - } - } - */ - exports.UAParser = UAParser; - } else { - // requirejs env (optional) - if (( false ? undefined : _typeof(__webpack_require__(/*! !webpack amd define */ "./node_modules/webpack/buildin/amd-define.js"))) === FUNC_TYPE && __webpack_require__(/*! !webpack amd options */ "./node_modules/webpack/buildin/amd-options.js")) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () { - return UAParser; - }).call(exports, __webpack_require__, exports, module), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (window) { - // browser env - window.UAParser = UAParser; - } - } + $.ua.set = function (uastring) { + parser.setUA(uastring); + var result = parser.getResult(); - // jQuery/Zepto specific (optional) - // Note: - // In AMD env the global scope should be kept clean, but jQuery is an exception. - // jQuery always exports to global scope, unless jQuery.noConflict(true) is used, - // and we should catch that. - var $ = window && (window.jQuery || window.Zepto); - if ((typeof $ === 'undefined' ? 'undefined' : _typeof($)) !== UNDEF_TYPE) { - var parser = new UAParser(); - $.ua = parser.getResult(); - $.ua.get = function () { - return parser.getUA(); - }; - $.ua.set = function (uastring) { - parser.setUA(uastring); - var result = parser.getResult(); - for (var prop in result) { - $.ua[prop] = result[prop]; - } - }; - } -})((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' ? window : undefined); + for (var prop in result) { + $.ua[prop] = result[prop]; + } + }; + } +})((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' ? window : this); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) /***/ }) diff --git a/dist/cbfjs.umd.js.map b/dist/cbfjs.umd.js.map index 75fef12..4e42a8d 100644 --- a/dist/cbfjs.umd.js.map +++ b/dist/cbfjs.umd.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://CBFjs/webpack/universalModuleDefinition","webpack://CBFjs/webpack/bootstrap","webpack://CBFjs/(webpack)/buildin/amd-define.js","webpack://CBFjs/(webpack)/buildin/amd-options.js","webpack://CBFjs/(webpack)/buildin/module.js","webpack://CBFjs/./src/cbfjs.js","webpack://CBFjs/./src/vendors/font-detect/fontdetect.js","webpack://CBFjs/./src/vendors/murmurhash3/murmurHash3.js","webpack://CBFjs/./src/vendors/ua-parser/UAParser.js"],"names":["module","exports","webpackPolyfill","deprecate","paths","children","Object","defineProperty","enumerable","get","l","i","scope","murmurHash3","require","Detector","UAParser","CBFjs","prototype","getScreenResolution","fixed_width","window","screen","width","fixed_height","height","res","Math","round","getCPUCores","navigator","hardwareConcurrency","getTouchSupport","MaxTouchPoints","msMaxTouchPoints","getColorDepth","colorDepth","getTimezoneOffset","currentDate","Date","getFonts","done","document","addEventListener","event","fontDetective","fonts","testAllFonts","getOS","uap","name","getOSVersion","version","isMobile","browserData","getResult","dataString","ua","vendor","opera","test","substr","getCPUarchitecture","getCPU","architecture","generateAsyncHash","parameters","push","newParameters","hash","x86","hash32","join","baseFonts","fontList","moreFonts","testString","testSize","h","getElementsByTagName","s","createElement","style","fontSize","innerHTML","defaultWidth","defaultHeight","index","fontFamily","appendChild","offsetWidth","offsetHeight","removeChild","detected","font","detect","matched","root","undefined","library","_x86Multiply","m","n","_x86Rotl","_x86Fmix","_x64Add","o","_x64Multiply","_x64Rotl","_x64LeftShift","_x64Xor","_x64Fmix","key","seed","remainder","length","bytes","h1","k1","c1","c2","charCodeAt","hash128","h2","h3","h4","k2","k3","k4","c3","c4","toString","slice","x64","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","util","extend","regexes","extensions","margedRegexes","concat","has","str1","str2","toLowerCase","indexOf","lowerize","str","major","replace","split","trim","mapper","rgx","arrays","j","k","p","q","matches","match","regex","props","exec","call","map","maps","browser","oldsafari","device","amazon","model","sprint","os","windows","cpu","engine","uastring","userAgent","rgxmap","getBrowser","getDevice","type","getEngine","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","define","$","jQuery","Zepto","parser","set","result","prop"],"mappings":"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","file":"cbfjs.umd.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CBFjs\"] = factory();\n\telse\n\t\troot[\"CBFjs\"] = factory();\n})(window, function() {\nreturn "," \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 = \"./src/cbfjs.js\");\n","module.exports = function() {\r\n\tthrow new Error(\"define cannot be used indirect\");\r\n};\r\n","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*\r\n CBFjs is library for cross-browser fingerprinting\r\n It generates fingerprint based on device and hardware level features.\r\n Library was inspired by Song Li's https://github.com/Song-Li/dynamic_fingerprinting dynamic fingerprinting tool\r\n */\r\n(function (scope) {\r\n 'use strict';\r\n\r\n /* Helpers */\r\n\r\n // murmurhash3 non crypto hash library for hash generation\r\n // core estimator to estimate number of cores of CPU\r\n var murmurHash3 = require('./vendors/murmurhash3/murmurHash3.js');\r\n\r\n // font detector\r\n var Detector = require('./vendors/font-detect/fontdetect.js');\r\n\r\n // User agent parser\r\n var UAParser = require('./vendors/ua-parser/UAParser.js');\r\n\r\n var CBFjs = function () {\r\n };\r\n\r\n\r\n CBFjs.prototype = {\r\n /*\r\n Get screen resolution\r\n */\r\n getScreenResolution: function () {\r\n var fixed_width = window.screen.width;\r\n var fixed_height = window.screen.height;\r\n var res = Math.round(fixed_width / fixed_height * 100) / 100\r\n return res;\r\n },\r\n\r\n // /*\r\n // Get number of CPU cores\r\n // Future async function TODO implement with core_estimator library\r\n // */\r\n // getCPUCores: function (done) {\r\n // if (!navigator.getHardwareConcurrency) {\r\n // return done(-1);\r\n // } else {\r\n // navigator.getHardwareConcurrency(done);\r\n // return;\r\n // }\r\n // },\r\n\r\n /*\r\n Get number of CPU cores\r\n */\r\n getCPUCores: function () {\r\n return navigator.hardwareConcurrency;\r\n },\r\n\r\n /*\r\n Get touch support\r\n */\r\n getTouchSupport: function () {\r\n return (('ontouchstart' in window)\r\n || (navigator.MaxTouchPoints > 0)\r\n || (navigator.msMaxTouchPoints > 0));\r\n },\r\n\r\n /*\r\n [DISABLED - unsupported by IE] Audio card info\r\n audioFingerPrinting: function () {\r\n try {\r\n var audioCtx = new (window.AudioContext || window.webkitAudioContext),\r\n oscillator = audioCtx.createOscillator(),\r\n analyser = audioCtx.createAnalyser(),\r\n gainNode = audioCtx.createGain(),\r\n scriptProcessor = audioCtx.createScriptProcessor(4096, 1, 1);\r\n var destination = audioCtx.destination;\r\n return (audioCtx.sampleRate).toString() + '_' + destination.maxChannelCount + \"_\" + destination.numberOfInputs + '_' + destination.numberOfOutputs + '_' + destination.channelCount + '_' + destination.channelCountMode + '_' + destination.channelInterpretation;\r\n }\r\n catch (e) {\r\n return \"not supported\";\r\n }\r\n },\r\n */\r\n\r\n /*\r\n Get color depth of the device's screen\r\n */\r\n getColorDepth: function () {\r\n return screen.colorDepth;\r\n },\r\n\r\n\r\n /*\r\n Get timezone offset in minutes. Calculated as UTC - device's time zone\r\n */\r\n getTimezoneOffset: function() {\r\n var currentDate = new Date();\r\n return currentDate.getTimezoneOffset();\r\n },\r\n\r\n /*\r\n Get list of fonts\r\n */\r\n getFonts: function(done) {\r\n document.addEventListener(\"DOMContentLoaded\", function(event) {\r\n var fontDetective = new Detector();\r\n var fonts = fontDetective.testAllFonts();\r\n done(fonts);\r\n });\r\n },\r\n\r\n /*\r\n Get OS\r\n */\r\n getOS: function() {\r\n var uap = new UAParser();\r\n return uap.getOS().name;\r\n },\r\n\r\n /*\r\n Get OS version\r\n */\r\n getOSVersion: function() {\r\n var uap = new UAParser();\r\n return uap.getOS().version;\r\n },\r\n\r\n /*\r\n Detects if device is a mobile\r\n */\r\n isMobile: function() {\r\n // detectmobilebrowsers.com JavaScript Mobile Detection Script\r\n var uap = new UAParser();\r\n var browserData = uap.getResult();\r\n var dataString = browserData.ua || navigator.vendor || window.opera;\r\n return (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(dataString) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(dataString.substr(0, 4)));\r\n },\r\n\r\n /*\r\n Get CPU architecture\r\n */\r\n getCPUarchitecture: function() {\r\n var uap = new UAParser();\r\n return uap.getCPU().architecture;\r\n },\r\n\r\n\r\n\r\n // /*\r\n // Helper function to handle asynchronous call\r\n // */\r\n generateAsyncHash: function(parameters, done) {\r\n // this.getCPUCores(function(cores) {\r\n // parameters.push(cores);\r\n // done(parameters);\r\n // });\r\n this.getFonts(function(fonts) {\r\n parameters.push(fonts);\r\n done(parameters);\r\n });\r\n },\r\n\r\n /*\r\n Generate hash from all features\r\n */\r\n get: function(done) {\r\n var parameters = [];\r\n parameters.push(this.getScreenResolution());\r\n parameters.push(this.getTouchSupport());\r\n parameters.push(this.getColorDepth());\r\n parameters.push(this.getTimezoneOffset());\r\n // Removed from here as it is async function\r\n // parameters.push(this.getFonts());\r\n parameters.push(this.getOS());\r\n parameters.push(this.getOSVersion());\r\n parameters.push(this.isMobile());\r\n parameters.push(this.getCPUarchitecture());\r\n // Disabled as it is not supported by IE\r\n //parameters.push(this.audioFingerPrinting());\r\n parameters.push(this.getCPUCores());\r\n\r\n\r\n // Async version of generating hash\r\n this.generateAsyncHash(parameters, function(newParameters) {\r\n var hash = murmurHash3.x86.hash32((newParameters).join(\"~~~\"));\r\n return done(hash, newParameters);\r\n });\r\n // var hash = murmurHash3.x86.hash32((parameters).join(\"~~~\"));\r\n // return done(hash, parameters);\r\n }\r\n};\r\n\r\n if (typeof module === 'object' && typeof exports !== \"undefined\") {\r\n module.exports = CBFjs;\r\n } else {\r\n scope.CBFjs = CBFjs;\r\n }\r\n})(this);","/* Edited by Lukas Matta (Add module export) */\r\n/**\r\n * JavaScript code to detect available availability of a\r\n * particular font in a browser using JavaScript and CSS.\r\n *\r\n * Author : Lalit Patel\r\n * Website: http://www.lalit.org/lab/javascript-css-font-detect/\r\n * License: Apache Software License 2.0\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n * Version: 0.15 (21 Sep 2009)\r\n * Changed comparision font to default from sans-default-default,\r\n * as in FF3.0 font of child element didn't fallback\r\n * to parent element if the font is missing.\r\n * Version: 0.2 (04 Mar 2012)\r\n * Comparing font against all the 3 generic font families ie,\r\n * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3\r\n * then that font is 100% not available in the system\r\n * Version: 0.3 (24 Mar 2012)\r\n * Replaced sans with serif in the list of baseFonts\r\n */\r\n\r\n/**\r\n * Usage: d = new Detector();\r\n * d.detect('font name');\r\n */\r\n(function (scope) {\r\n 'use strict';\r\n\r\n /**\r\n * JavaScript code to detect available availability of a\r\n * particular font in a browser using JavaScript and CSS.\r\n *\r\n * Author : Lalit Patel\r\n * Website: http://www.lalit.org/lab/javascript-css-font-detect/\r\n * License: Apache Software License 2.0\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n * Version: 0.15 (21 Sep 2009)\r\n * Changed comparision font to default from sans-default-default,\r\n * as in FF3.0 font of child element didn't fallback\r\n * to parent element if the font is missing.\r\n * Version: 0.2 (04 Mar 2012)\r\n * Comparing font against all the 3 generic font families ie,\r\n * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3\r\n * then that font is 100% not available in the system\r\n * Version: 0.3 (24 Mar 2012)\r\n * Replaced sans with serif in the list of baseFonts\r\n */\r\n\r\n /**\r\n * Usage: d = new Detector();\r\n * d.detect('font name');\r\n */\r\n var Detector = function() {\r\n // a font will be compared against all the three default fonts.\r\n // and if it doesn't match all 3 then that font is not available.\r\n var baseFonts = ['monospace', 'sans-serif', 'serif'];\r\n var fontList = [\r\n \"Andale Mono\", \"Arial\", \"Arial Black\", \"Arial Hebrew\", \"Arial MT\", \"Arial Narrow\", \"Arial Unicode MS\",\r\n \"Bitstream Vera Sans Mono\", \"Book Antiqua\", \"Bookman Old Style\",\r\n \"Calibri\", \"Cambria\", \"Cambria Math\", \"Century\", \"Century Gothic\", \"Century Schoolbook\", \"Comic Sans\", \"Comic Sans MS\", \"Consolas\", \"Courier\", \"Courier New\",\r\n \"Garamond\", \"Geneva\", \"Georgia\",\r\n \"Helvetica\", \"Helvetica Neue\",\r\n \"Impact\",\r\n \"Lucida Bright\", \"Lucida Calligraphy\", \"Lucida Console\", \"Lucida Fax\", \"LUCIDA GRANDE\", \"Lucida Handwriting\", \"Lucida Sans\", \"Lucida Sans Typewriter\", \"Lucida Sans Unicode\",\r\n \"Microsoft Sans Serif\", \"Monaco\", \"Monotype Corsiva\", \"MS Gothic\", \"MS Outlook\", \"MS PGothic\", \"MS Reference Sans Serif\", \"MS Sans Serif\", \"MS Serif\", \"MYRIAD\", \"MYRIAD PRO\",\r\n \"Palatino\", \"Palatino Linotype\",\r\n \"Segoe Print\", \"Segoe Script\", \"Segoe UI\", \"Segoe UI Light\", \"Segoe UI Semibold\", \"Segoe UI Symbol\",\r\n \"Tahoma\", \"Times\", \"Times New Roman\", \"Times New Roman PS\", \"Trebuchet MS\",\r\n \"Verdana\", \"Wingdings\", \"Wingdings 2\", \"Wingdings 3\"\r\n ];\r\n var moreFonts = [\r\n \"Abadi MT Condensed Light\", \"Academy Engraved LET\", \"ADOBE CASLON PRO\", \"Adobe Garamond\", \"ADOBE GARAMOND PRO\", \"Agency FB\", \"Aharoni\", \"Albertus Extra Bold\", \"Albertus Medium\", \"Algerian\", \"Amazone BT\", \"American Typewriter\",\r\n \"American Typewriter Condensed\", \"AmerType Md BT\", \"Andalus\", \"Angsana New\", \"AngsanaUPC\", \"Antique Olive\", \"Aparajita\", \"Apple Chancery\", \"Apple Color Emoji\", \"Apple SD Gothic Neo\", \"Arabic Typesetting\", \"ARCHER\",\r\n \"ARNO PRO\", \"Arrus BT\", \"Aurora Cn BT\", \"AvantGarde Bk BT\", \"AvantGarde Md BT\", \"AVENIR\", \"Ayuthaya\", \"Bandy\", \"Bangla Sangam MN\", \"Bank Gothic\", \"BankGothic Md BT\", \"Baskerville\",\r\n \"Baskerville Old Face\", \"Batang\", \"BatangChe\", \"Bauer Bodoni\", \"Bauhaus 93\", \"Bazooka\", \"Bell MT\", \"Bembo\", \"Benguiat Bk BT\", \"Berlin Sans FB\", \"Berlin Sans FB Demi\", \"Bernard MT Condensed\", \"BernhardFashion BT\", \"BernhardMod BT\", \"Big Caslon\", \"BinnerD\",\r\n \"Blackadder ITC\", \"BlairMdITC TT\", \"Bodoni 72\", \"Bodoni 72 Oldstyle\", \"Bodoni 72 Smallcaps\", \"Bodoni MT\", \"Bodoni MT Black\", \"Bodoni MT Condensed\", \"Bodoni MT Poster Compressed\",\r\n \"Bookshelf Symbol 7\", \"Boulder\", \"Bradley Hand\", \"Bradley Hand ITC\", \"Bremen Bd BT\", \"Britannic Bold\", \"Broadway\", \"Browallia New\", \"BrowalliaUPC\", \"Brush Script MT\", \"Californian FB\", \"Calisto MT\", \"Calligrapher\", \"Candara\",\r\n \"CaslonOpnface BT\", \"Castellar\", \"Centaur\", \"Cezanne\", \"CG Omega\", \"CG Times\", \"Chalkboard\", \"Chalkboard SE\", \"Chalkduster\", \"Charlesworth\", \"Charter Bd BT\", \"Charter BT\", \"Chaucer\",\r\n \"ChelthmITC Bk BT\", \"Chiller\", \"Clarendon\", \"Clarendon Condensed\", \"CloisterBlack BT\", \"Cochin\", \"Colonna MT\", \"Constantia\", \"Cooper Black\", \"Copperplate\", \"Copperplate Gothic\", \"Copperplate Gothic Bold\",\r\n \"Copperplate Gothic Light\", \"CopperplGoth Bd BT\", \"Corbel\", \"Cordia New\", \"CordiaUPC\", \"Cornerstone\", \"Coronet\", \"Cuckoo\", \"Curlz MT\", \"DaunPenh\", \"Dauphin\", \"David\", \"DB LCD Temp\", \"DELICIOUS\", \"Denmark\",\r\n \"DFKai-SB\", \"Didot\", \"DilleniaUPC\", \"DIN\", \"DokChampa\", \"Dotum\", \"DotumChe\", \"Ebrima\", \"Edwardian Script ITC\", \"Elephant\", \"English 111 Vivace BT\", \"Engravers MT\", \"EngraversGothic BT\", \"Eras Bold ITC\", \"Eras Demi ITC\", \"Eras Light ITC\", \"Eras Medium ITC\",\r\n \"EucrosiaUPC\", \"Euphemia\", \"Euphemia UCAS\", \"EUROSTILE\", \"Exotc350 Bd BT\", \"FangSong\", \"Felix Titling\", \"Fixedsys\", \"FONTIN\", \"Footlight MT Light\", \"Forte\",\r\n \"FrankRuehl\", \"Fransiscan\", \"Freefrm721 Blk BT\", \"FreesiaUPC\", \"Freestyle Script\", \"French Script MT\", \"FrnkGothITC Bk BT\", \"Fruitger\", \"FRUTIGER\",\r\n \"Futura\", \"Futura Bk BT\", \"Futura Lt BT\", \"Futura Md BT\", \"Futura ZBlk BT\", \"FuturaBlack BT\", \"Gabriola\", \"Galliard BT\", \"Gautami\", \"Geeza Pro\", \"Geometr231 BT\", \"Geometr231 Hv BT\", \"Geometr231 Lt BT\", \"GeoSlab 703 Lt BT\",\r\n \"GeoSlab 703 XBd BT\", \"Gigi\", \"Gill Sans\", \"Gill Sans MT\", \"Gill Sans MT Condensed\", \"Gill Sans MT Ext Condensed Bold\", \"Gill Sans Ultra Bold\", \"Gill Sans Ultra Bold Condensed\", \"Gisha\", \"Gloucester MT Extra Condensed\", \"GOTHAM\", \"GOTHAM BOLD\",\r\n \"Goudy Old Style\", \"Goudy Stout\", \"GoudyHandtooled BT\", \"GoudyOLSt BT\", \"Gujarati Sangam MN\", \"Gulim\", \"GulimChe\", \"Gungsuh\", \"GungsuhChe\", \"Gurmukhi MN\", \"Haettenschweiler\", \"Harlow Solid Italic\", \"Harrington\", \"Heather\", \"Heiti SC\", \"Heiti TC\", \"HELV\",\r\n \"Herald\", \"High Tower Text\", \"Hiragino Kaku Gothic ProN\", \"Hiragino Mincho ProN\", \"Hoefler Text\", \"Humanst 521 Cn BT\", \"Humanst521 BT\", \"Humanst521 Lt BT\", \"Imprint MT Shadow\", \"Incised901 Bd BT\", \"Incised901 BT\",\r\n \"Incised901 Lt BT\", \"INCONSOLATA\", \"Informal Roman\", \"Informal011 BT\", \"INTERSTATE\", \"IrisUPC\", \"Iskoola Pota\", \"JasmineUPC\", \"Jazz LET\", \"Jenson\", \"Jester\", \"Jokerman\", \"Juice ITC\", \"Kabel Bk BT\", \"Kabel Ult BT\", \"Kailasa\", \"KaiTi\", \"Kalinga\", \"Kannada Sangam MN\",\r\n \"Kartika\", \"Kaufmann Bd BT\", \"Kaufmann BT\", \"Khmer UI\", \"KodchiangUPC\", \"Kokila\", \"Korinna BT\", \"Kristen ITC\", \"Krungthep\", \"Kunstler Script\", \"Lao UI\", \"Latha\", \"Leelawadee\", \"Letter Gothic\", \"Levenim MT\", \"LilyUPC\", \"Lithograph\", \"Lithograph Light\", \"Long Island\",\r\n \"Lydian BT\", \"Magneto\", \"Maiandra GD\", \"Malayalam Sangam MN\", \"Malgun Gothic\",\r\n \"Mangal\", \"Marigold\", \"Marion\", \"Marker Felt\", \"Market\", \"Marlett\", \"Matisse ITC\", \"Matura MT Script Capitals\", \"Meiryo\", \"Meiryo UI\", \"Microsoft Himalaya\", \"Microsoft JhengHei\", \"Microsoft New Tai Lue\", \"Microsoft PhagsPa\", \"Microsoft Tai Le\",\r\n \"Microsoft Uighur\", \"Microsoft YaHei\", \"Microsoft Yi Baiti\", \"MingLiU\", \"MingLiU_HKSCS\", \"MingLiU_HKSCS-ExtB\", \"MingLiU-ExtB\", \"Minion\", \"Minion Pro\", \"Miriam\", \"Miriam Fixed\", \"Mistral\", \"Modern\", \"Modern No. 20\", \"Mona Lisa Solid ITC TT\", \"Mongolian Baiti\",\r\n \"MONO\", \"MoolBoran\", \"Mrs Eaves\", \"MS LineDraw\", \"MS Mincho\", \"MS PMincho\", \"MS Reference Specialty\", \"MS UI Gothic\", \"MT Extra\", \"MUSEO\", \"MV Boli\",\r\n \"Nadeem\", \"Narkisim\", \"NEVIS\", \"News Gothic\", \"News GothicMT\", \"NewsGoth BT\", \"Niagara Engraved\", \"Niagara Solid\", \"Noteworthy\", \"NSimSun\", \"Nyala\", \"OCR A Extended\", \"Old Century\", \"Old English Text MT\", \"Onyx\", \"Onyx BT\", \"OPTIMA\", \"Oriya Sangam MN\",\r\n \"OSAKA\", \"OzHandicraft BT\", \"Palace Script MT\", \"Papyrus\", \"Parchment\", \"Party LET\", \"Pegasus\", \"Perpetua\", \"Perpetua Titling MT\", \"PetitaBold\", \"Pickwick\", \"Plantagenet Cherokee\", \"Playbill\", \"PMingLiU\", \"PMingLiU-ExtB\",\r\n \"Poor Richard\", \"Poster\", \"PosterBodoni BT\", \"PRINCETOWN LET\", \"Pristina\", \"PTBarnum BT\", \"Pythagoras\", \"Raavi\", \"Rage Italic\", \"Ravie\", \"Ribbon131 Bd BT\", \"Rockwell\", \"Rockwell Condensed\", \"Rockwell Extra Bold\", \"Rod\", \"Roman\", \"Sakkal Majalla\",\r\n \"Santa Fe LET\", \"Savoye LET\", \"Sceptre\", \"Script\", \"Script MT Bold\", \"SCRIPTINA\", \"Serifa\", \"Serifa BT\", \"Serifa Th BT\", \"ShelleyVolante BT\", \"Sherwood\",\r\n \"Shonar Bangla\", \"Showcard Gothic\", \"Shruti\", \"Signboard\", \"SILKSCREEN\", \"SimHei\", \"Simplified Arabic\", \"Simplified Arabic Fixed\", \"SimSun\", \"SimSun-ExtB\", \"Sinhala Sangam MN\", \"Sketch Rockwell\", \"Skia\", \"Small Fonts\", \"Snap ITC\", \"Snell Roundhand\", \"Socket\",\r\n \"Souvenir Lt BT\", \"Staccato222 BT\", \"Steamer\", \"Stencil\", \"Storybook\", \"Styllo\", \"Subway\", \"Swis721 BlkEx BT\", \"Swiss911 XCm BT\", \"Sylfaen\", \"Synchro LET\", \"System\", \"Tamil Sangam MN\", \"Technical\", \"Teletype\", \"Telugu Sangam MN\", \"Tempus Sans ITC\",\r\n \"Terminal\", \"Thonburi\", \"Traditional Arabic\", \"Trajan\", \"TRAJAN PRO\", \"Tristan\", \"Tubular\", \"Tunga\", \"Tw Cen MT\", \"Tw Cen MT Condensed\", \"Tw Cen MT Condensed Extra Bold\",\r\n \"TypoUpright BT\", \"Unicorn\", \"Univers\", \"Univers CE 55 Medium\", \"Univers Condensed\", \"Utsaah\", \"Vagabond\", \"Vani\", \"Vijaya\", \"Viner Hand ITC\", \"VisualUI\", \"Vivaldi\", \"Vladimir Script\", \"Vrinda\", \"Westminster\", \"WHITNEY\", \"Wide Latin\",\r\n \"ZapfEllipt BT\", \"ZapfHumnst BT\", \"ZapfHumnst Dm BT\", \"Zapfino\", \"Zurich BlkEx BT\", \"Zurich Ex BT\", \"ZWAdobeF\"\r\n ];\r\n\r\n //we use m or w because these two characters take up the maximum width.\r\n // And we use a LLi so that the same matching fonts can get separated\r\n var testString = \"mmmmmmmmmmlli\";\r\n\r\n //we test using 72px font size, we may use any size. I guess larger the better.\r\n var testSize = '72px';\r\n\r\n var h = document.getElementsByTagName(\"body\")[0];\r\n\r\n // create a SPAN in the document to get the width of the text we use to test\r\n var s = document.createElement(\"span\");\r\n s.style.fontSize = testSize;\r\n s.innerHTML = testString;\r\n var defaultWidth = {};\r\n var defaultHeight = {};\r\n for (var index in baseFonts) {\r\n //get the default width for the three base fonts\r\n s.style.fontFamily = baseFonts[index];\r\n h.appendChild(s);\r\n defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font\r\n defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font\r\n h.removeChild(s);\r\n }\r\n this.testAllFonts = function() {\r\n var detected = [];\r\n for (var font in fontList) {\r\n if (this.detect(fontList[font]))\r\n detected.push(fontList[font]);\r\n }\r\n // for (var font in moreFonts) {\r\n // if (this.detect(moreFonts[font]))\r\n // detected.push(moreFonts[font]);\r\n // }\r\n return detected;\r\n }\r\n\r\n this.detect = function(font) {\r\n var detected = false;\r\n for (var index in baseFonts) {\r\n s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback.\r\n h.appendChild(s);\r\n var matched = (s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]);\r\n h.removeChild(s);\r\n detected = detected || matched;\r\n }\r\n return detected;\r\n }\r\n\r\n };\r\n\r\n if (typeof module === 'object' && typeof exports !== \"undefined\") {\r\n module.exports = Detector;\r\n } else {\r\n scope.Detector = Detector;\r\n }\r\n})(window);","// +----------------------------------------------------------------------+\r\n// | murmurHash3.js v2.1.2 (http://github.com/karanlyons/murmurHash.js) |\r\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\r\n// |----------------------------------------------------------------------|\r\n// | Copyright (c) 2012 Karan Lyons |\r\n// | Freely distributable under the MIT license. |\r\n// +----------------------------------------------------------------------+\r\n\r\n\r\n;(function (root, undefined) {\r\n 'use strict';\r\n\r\n // Create a local object that'll be exported or referenced globally.\r\n var library = {\r\n 'version': '2.1.2',\r\n 'x86': {},\r\n 'x64': {}\r\n };\r\n\r\n\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n // -----------------\r\n\r\n function _x86Multiply(m, n) {\r\n //\r\n // Given two 32bit ints, returns the two multiplied together as a\r\n // 32bit int.\r\n //\r\n\r\n return ((m & 0xffff) * n) + ((((m >>> 16) * n) & 0xffff) << 16);\r\n }\r\n\r\n\r\n function _x86Rotl(m, n) {\r\n //\r\n // Given a 32bit int and an int representing a number of bit positions,\r\n // returns the 32bit int rotated left by that number of positions.\r\n //\r\n\r\n return (m << n) | (m >>> (32 - n));\r\n }\r\n\r\n\r\n function _x86Fmix(h) {\r\n //\r\n // Given a block, returns murmurHash3's final x86 mix of that block.\r\n //\r\n\r\n h ^= h >>> 16;\r\n h = _x86Multiply(h, 0x85ebca6b);\r\n h ^= h >>> 13;\r\n h = _x86Multiply(h, 0xc2b2ae35);\r\n h ^= h >>> 16;\r\n\r\n return h;\r\n }\r\n\r\n\r\n function _x64Add(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // added together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\r\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\r\n var o = [0, 0, 0, 0];\r\n\r\n o[3] += m[3] + n[3];\r\n o[2] += o[3] >>> 16;\r\n o[3] &= 0xffff;\r\n\r\n o[2] += m[2] + n[2];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[1] += m[1] + n[1];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[0] += m[0] + n[0];\r\n o[0] &= 0xffff;\r\n\r\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\r\n }\r\n\r\n\r\n function _x64Multiply(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // multiplied together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\r\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\r\n var o = [0, 0, 0, 0];\r\n\r\n o[3] += m[3] * n[3];\r\n o[2] += o[3] >>> 16;\r\n o[3] &= 0xffff;\r\n\r\n o[2] += m[2] * n[3];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[2] += m[3] * n[2];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[1] += m[1] * n[3];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[1] += m[2] * n[2];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[1] += m[3] * n[1];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0]);\r\n o[0] &= 0xffff;\r\n\r\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\r\n }\r\n\r\n\r\n function _x64Rotl(m, n) {\r\n //\r\n // Given a 64bit int (as an array of two 32bit ints) and an int\r\n // representing a number of bit positions, returns the 64bit int (as an\r\n // array of two 32bit ints) rotated left by that number of positions.\r\n //\r\n\r\n n %= 64;\r\n\r\n if (n === 32) {\r\n return [m[1], m[0]];\r\n }\r\n\r\n else if (n < 32) {\r\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\r\n }\r\n\r\n else {\r\n n -= 32;\r\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\r\n }\r\n }\r\n\r\n\r\n function _x64LeftShift(m, n) {\r\n //\r\n // Given a 64bit int (as an array of two 32bit ints) and an int\r\n // representing a number of bit positions, returns the 64bit int (as an\r\n // array of two 32bit ints) shifted left by that number of positions.\r\n //\r\n\r\n n %= 64;\r\n\r\n if (n === 0) {\r\n return m;\r\n }\r\n\r\n else if (n < 32) {\r\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\r\n }\r\n\r\n else {\r\n return [m[1] << (n - 32), 0];\r\n }\r\n }\r\n\r\n\r\n function _x64Xor(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // xored together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n return [m[0] ^ n[0], m[1] ^ n[1]];\r\n }\r\n\r\n\r\n function _x64Fmix(h) {\r\n //\r\n // Given a block, returns murmurHash3's final x64 mix of that block.\r\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\r\n // only place where we need to right shift 64bit ints.)\r\n //\r\n\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n\r\n return h;\r\n }\r\n\r\n\r\n\r\n\r\n // PUBLIC FUNCTIONS\r\n // ----------------\r\n\r\n library.x86.hash32 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 32 bit hash\r\n // using the x86 flavor of MurmurHash3, as an unsigned int.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 4;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = seed;\r\n\r\n var k1 = 0;\r\n\r\n var c1 = 0xcc9e2d51;\r\n var c2 = 0x1b873593;\r\n\r\n for (var i = 0; i < bytes; i = i + 4) {\r\n k1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24);\r\n\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n\r\n h1 ^= k1;\r\n h1 = _x86Rotl(h1, 13);\r\n h1 = _x86Multiply(h1, 5) + 0xe6546b64;\r\n }\r\n\r\n k1 = 0;\r\n\r\n switch (remainder) {\r\n case 3:\r\n k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\r\n\r\n case 2:\r\n k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\r\n\r\n case 1:\r\n k1 ^= (key.charCodeAt(i) & 0xff);\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n }\r\n\r\n h1 ^= key.length;\r\n h1 = _x86Fmix(h1);\r\n\r\n return h1 >>> 0;\r\n };\r\n\r\n\r\n library.x86.hash128 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 128 bit\r\n // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 16;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = seed;\r\n var h2 = seed;\r\n var h3 = seed;\r\n var h4 = seed;\r\n\r\n var k1 = 0;\r\n var k2 = 0;\r\n var k3 = 0;\r\n var k4 = 0;\r\n\r\n var c1 = 0x239b961b;\r\n var c2 = 0xab0e9789;\r\n var c3 = 0x38b34ae5;\r\n var c4 = 0xa1e38b93;\r\n\r\n for (var i = 0; i < bytes; i = i + 16) {\r\n k1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24);\r\n k2 = ((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24);\r\n k3 = ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24);\r\n k4 = ((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24);\r\n\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n\r\n h1 = _x86Rotl(h1, 19);\r\n h1 += h2;\r\n h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\r\n\r\n k2 = _x86Multiply(k2, c2);\r\n k2 = _x86Rotl(k2, 16);\r\n k2 = _x86Multiply(k2, c3);\r\n h2 ^= k2;\r\n\r\n h2 = _x86Rotl(h2, 17);\r\n h2 += h3;\r\n h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\r\n\r\n k3 = _x86Multiply(k3, c3);\r\n k3 = _x86Rotl(k3, 17);\r\n k3 = _x86Multiply(k3, c4);\r\n h3 ^= k3;\r\n\r\n h3 = _x86Rotl(h3, 15);\r\n h3 += h4;\r\n h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\r\n\r\n k4 = _x86Multiply(k4, c4);\r\n k4 = _x86Rotl(k4, 18);\r\n k4 = _x86Multiply(k4, c1);\r\n h4 ^= k4;\r\n\r\n h4 = _x86Rotl(h4, 13);\r\n h4 += h1;\r\n h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\r\n }\r\n\r\n k1 = 0;\r\n k2 = 0;\r\n k3 = 0;\r\n k4 = 0;\r\n\r\n switch (remainder) {\r\n case 15:\r\n k4 ^= key.charCodeAt(i + 14) << 16;\r\n\r\n case 14:\r\n k4 ^= key.charCodeAt(i + 13) << 8;\r\n\r\n case 13:\r\n k4 ^= key.charCodeAt(i + 12);\r\n k4 = _x86Multiply(k4, c4);\r\n k4 = _x86Rotl(k4, 18);\r\n k4 = _x86Multiply(k4, c1);\r\n h4 ^= k4;\r\n\r\n case 12:\r\n k3 ^= key.charCodeAt(i + 11) << 24;\r\n\r\n case 11:\r\n k3 ^= key.charCodeAt(i + 10) << 16;\r\n\r\n case 10:\r\n k3 ^= key.charCodeAt(i + 9) << 8;\r\n\r\n case 9:\r\n k3 ^= key.charCodeAt(i + 8);\r\n k3 = _x86Multiply(k3, c3);\r\n k3 = _x86Rotl(k3, 17);\r\n k3 = _x86Multiply(k3, c4);\r\n h3 ^= k3;\r\n\r\n case 8:\r\n k2 ^= key.charCodeAt(i + 7) << 24;\r\n\r\n case 7:\r\n k2 ^= key.charCodeAt(i + 6) << 16;\r\n\r\n case 6:\r\n k2 ^= key.charCodeAt(i + 5) << 8;\r\n\r\n case 5:\r\n k2 ^= key.charCodeAt(i + 4);\r\n k2 = _x86Multiply(k2, c2);\r\n k2 = _x86Rotl(k2, 16);\r\n k2 = _x86Multiply(k2, c3);\r\n h2 ^= k2;\r\n\r\n case 4:\r\n k1 ^= key.charCodeAt(i + 3) << 24;\r\n\r\n case 3:\r\n k1 ^= key.charCodeAt(i + 2) << 16;\r\n\r\n case 2:\r\n k1 ^= key.charCodeAt(i + 1) << 8;\r\n\r\n case 1:\r\n k1 ^= key.charCodeAt(i);\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n }\r\n\r\n h1 ^= key.length;\r\n h2 ^= key.length;\r\n h3 ^= key.length;\r\n h4 ^= key.length;\r\n\r\n h1 += h2;\r\n h1 += h3;\r\n h1 += h4;\r\n h2 += h1;\r\n h3 += h1;\r\n h4 += h1;\r\n\r\n h1 = _x86Fmix(h1);\r\n h2 = _x86Fmix(h2);\r\n h3 = _x86Fmix(h3);\r\n h4 = _x86Fmix(h4);\r\n\r\n h1 += h2;\r\n h1 += h3;\r\n h1 += h4;\r\n h2 += h1;\r\n h3 += h1;\r\n h4 += h1;\r\n\r\n return (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8);\r\n };\r\n\r\n\r\n library.x64.hash128 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 128 bit\r\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 16;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = [0, seed];\r\n var h2 = [0, seed];\r\n\r\n var k1 = [0, 0];\r\n var k2 = [0, 0];\r\n\r\n var c1 = [0x87c37b91, 0x114253d5];\r\n var c2 = [0x4cf5ad43, 0x2745937f];\r\n\r\n for (var i = 0; i < bytes; i = i + 16) {\r\n k1 = [((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24), ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24)];\r\n k2 = [((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24), ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24)];\r\n\r\n k1 = _x64Multiply(k1, c1);\r\n k1 = _x64Rotl(k1, 31);\r\n k1 = _x64Multiply(k1, c2);\r\n h1 = _x64Xor(h1, k1);\r\n\r\n h1 = _x64Rotl(h1, 27);\r\n h1 = _x64Add(h1, h2);\r\n h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\r\n\r\n k2 = _x64Multiply(k2, c2);\r\n k2 = _x64Rotl(k2, 33);\r\n k2 = _x64Multiply(k2, c1);\r\n h2 = _x64Xor(h2, k2);\r\n\r\n h2 = _x64Rotl(h2, 31);\r\n h2 = _x64Add(h2, h1);\r\n h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\r\n }\r\n\r\n k1 = [0, 0];\r\n k2 = [0, 0];\r\n\r\n switch(remainder) {\r\n case 15:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 14)], 48));\r\n\r\n case 14:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 13)], 40));\r\n\r\n case 13:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 12)], 32));\r\n\r\n case 12:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 11)], 24));\r\n\r\n case 11:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 10)], 16));\r\n\r\n case 10:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 9)], 8));\r\n\r\n case 9:\r\n k2 = _x64Xor(k2, [0, key.charCodeAt(i + 8)]);\r\n k2 = _x64Multiply(k2, c2);\r\n k2 = _x64Rotl(k2, 33);\r\n k2 = _x64Multiply(k2, c1);\r\n h2 = _x64Xor(h2, k2);\r\n\r\n case 8:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 7)], 56));\r\n\r\n case 7:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 6)], 48));\r\n\r\n case 6:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 5)], 40));\r\n\r\n case 5:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 4)], 32));\r\n\r\n case 4:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 3)], 24));\r\n\r\n case 3:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 2)], 16));\r\n\r\n case 2:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 1)], 8));\r\n\r\n case 1:\r\n k1 = _x64Xor(k1, [0, key.charCodeAt(i)]);\r\n k1 = _x64Multiply(k1, c1);\r\n k1 = _x64Rotl(k1, 31);\r\n k1 = _x64Multiply(k1, c2);\r\n h1 = _x64Xor(h1, k1);\r\n }\r\n\r\n h1 = _x64Xor(h1, [0, key.length]);\r\n h2 = _x64Xor(h2, [0, key.length]);\r\n\r\n h1 = _x64Add(h1, h2);\r\n h2 = _x64Add(h2, h1);\r\n\r\n h1 = _x64Fmix(h1);\r\n h2 = _x64Fmix(h2);\r\n\r\n h1 = _x64Add(h1, h2);\r\n h2 = _x64Add(h2, h1);\r\n\r\n return (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8);\r\n };\r\n\r\n\r\n\r\n\r\n // INITIALIZATION\r\n // --------------\r\n\r\n // Export murmurHash3 for CommonJS, either as an AMD module or just as part\r\n // of the global object.\r\n if (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = library;\r\n }\r\n\r\n exports.murmurHash3 = library;\r\n }\r\n\r\n else if (typeof define === 'function' && define.amd) {\r\n define([], function() {\r\n return library;\r\n });\r\n }\r\n\r\n else {\r\n // Use murmurHash3.noConflict to restore `murmurHash3` back to its\r\n // original value. Returns a reference to the library object, to allow\r\n // it to be used under a different name.\r\n library._murmurHash3 = root.murmurHash3\r\n\r\n library.noConflict = function () {\r\n root.murmurHash3 = library._murmurHash3;\r\n library._murmurHash3 = undefined;\r\n library.noConflict = undefined;\r\n\r\n return library;\r\n };\r\n\r\n root.murmurHash3 = library;\r\n }\r\n})(this);","/*!\r\n * UAParser.js v0.7.18\r\n * Lightweight JavaScript-based User-Agent string parser\r\n * https://github.com/faisalman/ua-parser-js\r\n *\r\n * Copyright © 2012-2016 Faisal Salman \r\n * Dual licensed under GPLv2 or MIT\r\n */\r\n\r\n(function (window, undefined) {\r\n\r\n 'use strict';\r\n\r\n //////////////\r\n // Constants\r\n /////////////\r\n\r\n\r\n var LIBVERSION = '0.7.18',\r\n EMPTY = '',\r\n UNKNOWN = '?',\r\n FUNC_TYPE = 'function',\r\n UNDEF_TYPE = 'undefined',\r\n OBJ_TYPE = 'object',\r\n STR_TYPE = 'string',\r\n MAJOR = 'major', // deprecated\r\n MODEL = 'model',\r\n NAME = 'name',\r\n TYPE = 'type',\r\n VENDOR = 'vendor',\r\n VERSION = 'version',\r\n ARCHITECTURE= 'architecture',\r\n CONSOLE = 'console',\r\n MOBILE = 'mobile',\r\n TABLET = 'tablet',\r\n SMARTTV = 'smarttv',\r\n WEARABLE = 'wearable',\r\n EMBEDDED = 'embedded';\r\n\r\n\r\n ///////////\r\n // Helper\r\n //////////\r\n\r\n\r\n var util = {\r\n extend : function (regexes, extensions) {\r\n var margedRegexes = {};\r\n for (var i in regexes) {\r\n if (extensions[i] && extensions[i].length % 2 === 0) {\r\n margedRegexes[i] = extensions[i].concat(regexes[i]);\r\n } else {\r\n margedRegexes[i] = regexes[i];\r\n }\r\n }\r\n return margedRegexes;\r\n },\r\n has : function (str1, str2) {\r\n if (typeof str1 === \"string\") {\r\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\r\n } else {\r\n return false;\r\n }\r\n },\r\n lowerize : function (str) {\r\n return str.toLowerCase();\r\n },\r\n major : function (version) {\r\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\r\n },\r\n trim : function (str) {\r\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n }\r\n };\r\n\r\n\r\n ///////////////\r\n // Map helper\r\n //////////////\r\n\r\n\r\n var mapper = {\r\n\r\n rgx : function (ua, arrays) {\r\n\r\n //var result = {},\r\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\r\n\r\n /*// construct object barebones\r\n for (p = 0; p < args[1].length; p++) {\r\n q = args[1][p];\r\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\r\n }*/\r\n\r\n // loop through all regexes maps\r\n while (i < arrays.length && !matches) {\r\n\r\n var regex = arrays[i], // even sequence (0,2,4,..)\r\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\r\n j = k = 0;\r\n\r\n // try matching uastring with regexes\r\n while (j < regex.length && !matches) {\r\n\r\n matches = regex[j++].exec(ua);\r\n\r\n if (!!matches) {\r\n for (p = 0; p < props.length; p++) {\r\n match = matches[++k];\r\n q = props[p];\r\n // check if given property is actually array\r\n if (typeof q === OBJ_TYPE && q.length > 0) {\r\n if (q.length == 2) {\r\n if (typeof q[1] == FUNC_TYPE) {\r\n // assign modified match\r\n this[q[0]] = q[1].call(this, match);\r\n } else {\r\n // assign given value, ignore regex match\r\n this[q[0]] = q[1];\r\n }\r\n } else if (q.length == 3) {\r\n // check whether function or regex\r\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\r\n // call function (usually string mapper)\r\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\r\n } else {\r\n // sanitize match using given regex\r\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\r\n }\r\n } else if (q.length == 4) {\r\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\r\n }\r\n } else {\r\n this[q] = match ? match : undefined;\r\n }\r\n }\r\n }\r\n }\r\n i += 2;\r\n }\r\n // console.log(this);\r\n //return this;\r\n },\r\n\r\n str : function (str, map) {\r\n\r\n for (var i in map) {\r\n // check if array\r\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\r\n for (var j = 0; j < map[i].length; j++) {\r\n if (util.has(map[i][j], str)) {\r\n return (i === UNKNOWN) ? undefined : i;\r\n }\r\n }\r\n } else if (util.has(map[i], str)) {\r\n return (i === UNKNOWN) ? undefined : i;\r\n }\r\n }\r\n return str;\r\n }\r\n };\r\n\r\n\r\n ///////////////\r\n // String map\r\n //////////////\r\n\r\n\r\n var maps = {\r\n\r\n browser : {\r\n oldsafari : {\r\n version : {\r\n '1.0' : '/8',\r\n '1.2' : '/1',\r\n '1.3' : '/3',\r\n '2.0' : '/412',\r\n '2.0.2' : '/416',\r\n '2.0.3' : '/417',\r\n '2.0.4' : '/419',\r\n '?' : '/'\r\n }\r\n }\r\n },\r\n\r\n device : {\r\n amazon : {\r\n model : {\r\n 'Fire Phone' : ['SD', 'KF']\r\n }\r\n },\r\n sprint : {\r\n model : {\r\n 'Evo Shift 4G' : '7373KT'\r\n },\r\n vendor : {\r\n 'HTC' : 'APA',\r\n 'Sprint' : 'Sprint'\r\n }\r\n }\r\n },\r\n\r\n os : {\r\n windows : {\r\n version : {\r\n 'ME' : '4.90',\r\n 'NT 3.11' : 'NT3.51',\r\n 'NT 4.0' : 'NT4.0',\r\n '2000' : 'NT 5.0',\r\n 'XP' : ['NT 5.1', 'NT 5.2'],\r\n 'Vista' : 'NT 6.0',\r\n '7' : 'NT 6.1',\r\n '8' : 'NT 6.2',\r\n '8.1' : 'NT 6.3',\r\n '10' : ['NT 6.4', 'NT 10.0'],\r\n 'RT' : 'ARM'\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n //////////////\r\n // Regex map\r\n /////////////\r\n\r\n\r\n var regexes = {\r\n\r\n browser : [[\r\n\r\n // Presto based\r\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\r\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\r\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\r\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\r\n ], [NAME, VERSION], [\r\n\r\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\r\n ], [[NAME, 'Opera Mini'], VERSION], [\r\n\r\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\r\n ], [[NAME, 'Opera'], VERSION], [\r\n\r\n // Mixed\r\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\r\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\r\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\r\n\r\n // Trident based\r\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\r\n // Avant/IEMobile/SlimBrowser/Baidu\r\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\r\n\r\n // Webkit/KHTML based\r\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\r\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\\/([\\w\\.-]+)/i\r\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\r\n ], [NAME, VERSION], [\r\n\r\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\r\n ], [[NAME, 'IE'], VERSION], [\r\n\r\n /(edge|edgios|edgea)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\r\n ], [[NAME, 'Edge'], VERSION], [\r\n\r\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\r\n ], [[NAME, 'Yandex'], VERSION], [\r\n\r\n /(puffin)\\/([\\w\\.]+)/i // Puffin\r\n ], [[NAME, 'Puffin'], VERSION], [\r\n\r\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i\r\n // UCBrowser\r\n ], [[NAME, 'UCBrowser'], VERSION], [\r\n\r\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\r\n ], [[NAME, /_/g, ' '], VERSION], [\r\n\r\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\r\n ], [[NAME, 'WeChat'], VERSION], [\r\n\r\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\r\n ], [NAME, VERSION], [\r\n\r\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\r\n ], [NAME, VERSION], [\r\n\r\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\r\n ], [NAME, VERSION], [\r\n\r\n /(BIDUBrowser)[\\/\\s]?([\\w\\.]+)/i // Baidu Browser\r\n ], [NAME, VERSION], [\r\n\r\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\r\n ], [NAME, VERSION], [\r\n\r\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\r\n ], [NAME], [\r\n\r\n /(LBBROWSER)/i // LieBao Browser\r\n ], [NAME], [\r\n\r\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\r\n ], [VERSION, [NAME, 'MIUI Browser']], [\r\n\r\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\r\n ], [VERSION, [NAME, 'Facebook']], [\r\n\r\n /safari\\s(line)\\/([\\w\\.]+)/i, // Line App for iOS\r\n /android.+(line)\\/([\\w\\.]+)\\/iab/i // Line App for Android\r\n ], [NAME, VERSION], [\r\n\r\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\r\n ], [VERSION, [NAME, 'Chrome Headless']], [\r\n\r\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\r\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\r\n\r\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\r\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\r\n\r\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\r\n ], [VERSION, [NAME, 'Android Browser']], [\r\n\r\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\r\n // Chrome/OmniWeb/Arora/Tizen/Nokia\r\n ], [NAME, VERSION], [\r\n\r\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\r\n ], [[NAME, 'Dolphin'], VERSION], [\r\n\r\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\r\n ], [[NAME, 'Chrome'], VERSION], [\r\n\r\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\r\n ], [[NAME, 'Opera Coast'], VERSION], [\r\n\r\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\r\n ], [VERSION, [NAME, 'Firefox']], [\r\n\r\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\r\n ], [VERSION, [NAME, 'Mobile Safari']], [\r\n\r\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\r\n ], [VERSION, NAME], [\r\n\r\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\r\n ], [[NAME, 'GSA'], VERSION], [\r\n\r\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\r\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\r\n\r\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\r\n /(webkit|khtml)\\/([\\w\\.]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n // Gecko based\r\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\r\n ], [[NAME, 'Netscape'], VERSION], [\r\n /(swiftfox)/i, // Swiftfox\r\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\r\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\r\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\r\n\r\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\r\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\r\n\r\n // Other\r\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\r\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\r\n /(links)\\s\\(([\\w\\.]+)/i, // Links\r\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\r\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\r\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\r\n ], [NAME, VERSION]\r\n\r\n /* /////////////////////\r\n // Media players BEGIN\r\n ////////////////////////\r\n\r\n , [\r\n\r\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\r\n /(coremedia) v((\\d+)[\\w\\._]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\r\n ], [NAME, VERSION], [\r\n\r\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\r\n ], [NAME, VERSION], [\r\n\r\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\r\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\r\n // NSPlayer/PSP-InternetRadioPlayer/Videos\r\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\r\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\r\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\r\n ], [NAME, VERSION], [\r\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\r\n ], [NAME, VERSION], [\r\n\r\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\r\n ], [[NAME, 'Flip Player'], VERSION], [\r\n\r\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\r\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\r\n ], [NAME], [\r\n\r\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\r\n // Gstreamer\r\n ], [NAME, VERSION], [\r\n\r\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\r\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\r\n // Java/urllib/requests/wget/cURL\r\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\r\n ], [NAME, VERSION], [\r\n\r\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\r\n ], [[NAME, /_/g, ' '], VERSION], [\r\n\r\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\r\n // MPlayer SVN\r\n ], [NAME, VERSION], [\r\n\r\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\r\n ], [NAME, VERSION], [\r\n\r\n /(mplayer)/i, // MPlayer (no other info)\r\n /(yourmuze)/i, // YourMuze\r\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\r\n ], [NAME], [\r\n\r\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\r\n ], [NAME, VERSION], [\r\n\r\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\r\n ], [NAME, VERSION], [\r\n\r\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\r\n ], [NAME, VERSION], [\r\n\r\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\r\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\r\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\r\n // inlight radio\r\n ], [NAME], [\r\n\r\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\r\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\r\n // SoundTap/Totem/Stagefright/Streamium\r\n ], [NAME, VERSION], [\r\n\r\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\r\n ], [NAME, VERSION], [\r\n\r\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\r\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\r\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\r\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\r\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\r\n ], [NAME, VERSION], [\r\n\r\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\r\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\r\n ], [[NAME, /-/g, ' '], VERSION], [\r\n\r\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\r\n // Windows Media Server\r\n ], [VERSION, [NAME, 'Windows']], [\r\n\r\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\r\n ], [NAME, VERSION], [\r\n\r\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\r\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\r\n ], [[NAME, 'rad.io'], VERSION]\r\n\r\n //////////////////////\r\n // Media players END\r\n ////////////////////*/\r\n\r\n ],\r\n\r\n cpu : [[\r\n\r\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\r\n ], [[ARCHITECTURE, 'amd64']], [\r\n\r\n /(ia32(?=;))/i // IA32 (quicktime)\r\n ], [[ARCHITECTURE, util.lowerize]], [\r\n\r\n /((?:i[346]|x)86)[;\\)]/i // IA32\r\n ], [[ARCHITECTURE, 'ia32']], [\r\n\r\n // PocketPC mistakenly identified as PowerPC\r\n /windows\\s(ce|mobile);\\sppc;/i\r\n ], [[ARCHITECTURE, 'arm']], [\r\n\r\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\r\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\r\n\r\n /(sun4\\w)[;\\)]/i // SPARC\r\n ], [[ARCHITECTURE, 'sparc']], [\r\n\r\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+[;l]))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\r\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\r\n ], [[ARCHITECTURE, util.lowerize]]\r\n ],\r\n\r\n device : [[\r\n\r\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\r\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\r\n\r\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\r\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\r\n\r\n /(apple\\s{0,1}tv)/i // Apple TV\r\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\r\n\r\n /(archos)\\s(gamepad2?)/i, // Archos\r\n /(hp).+(touchpad)/i, // HP TouchPad\r\n /(hp).+(tablet)/i, // HP Tablet\r\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\r\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\r\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\r\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\r\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\r\n /android.+aft([bms])\\sbuild/i // Fire TV\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\r\n\r\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\r\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\r\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\r\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\r\n\r\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\r\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\r\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\r\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\r\n /(asus)-?(\\w+)/i // Asus\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\r\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\r\n // Asus Tablets\r\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\r\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\r\n\r\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\r\n /(sony)?(?:sgp.+)\\sbuild\\//i\r\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\r\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\r\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n\r\n /\\s(ouya)\\s/i, // Ouya\r\n /(nintendo)\\s([wids3u]+)/i // Nintendo\r\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\r\n\r\n /android.+;\\s(shield)\\sbuild/i // Nvidia\r\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\r\n\r\n /(playstation\\s[34portablevi]+)/i // Playstation\r\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\r\n\r\n /(sprint\\s(\\w+))/i // Sprint Phones\r\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\r\n\r\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\r\n /(zte)-(\\w*)/i, // ZTE\r\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\r\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\r\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\r\n\r\n /(nexus\\s9)/i // HTC Nexus 9\r\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\r\n\r\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\r\n /(nexus\\s6p)/i // Huawei\r\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\r\n\r\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\r\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\r\n /(kin\\.[onetw]{3})/i // Microsoft Kin\r\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\r\n\r\n // Motorola\r\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\r\n /mot[\\s-]?(\\w*)/i,\r\n /(XT\\d{3,4}) build\\//i,\r\n /(nexus\\s6)/i\r\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\r\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\r\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\r\n\r\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\r\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\r\n\r\n /hbbtv.+maple;(\\d+)/i\r\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\r\n\r\n /\\(dtv[\\);].+(aquos)/i // Sharp\r\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\r\n\r\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\r\n /((SM-T\\w+))/i\r\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\r\n /smart-tv.+(samsung)/i\r\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\r\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\r\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\r\n /sec-((sgh\\w+))/i\r\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /sie-(\\w*)/i // Siemens\r\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\r\n\r\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\r\n /(nokia)[\\s_-]?([\\w-]*)/i\r\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\r\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\r\n\r\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\r\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\r\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\r\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\r\n /(lg) netcast\\.tv/i // LG SmartTV\r\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\r\n /(nexus\\s[45])/i, // LG\r\n /lg[e;\\s\\/-]+(\\w*)/i,\r\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\r\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\r\n\r\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\r\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\r\n\r\n /linux;.+((jolla));/i // Jolla\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\r\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\r\n\r\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /crkey/i // Google Chromecast\r\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\r\n\r\n /android.+;\\s(glass)\\s\\d/i // Google Glass\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\r\n\r\n /android.+;\\s(pixel c)\\s/i // Google Pixel C\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\r\n\r\n /android.+;\\s(pixel [xl2]{1,2}|pixel)\\s/i // Google Pixel\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\r\n\r\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\r\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\r\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, // Xiaomi Mi\r\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\r\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\r\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\r\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\r\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\r\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\r\n\r\n /android.+a000(1)\\s+build/i, // OnePlus\r\n /android.+oneplus\\s(a\\d{4})\\s+build/i\r\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\r\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\r\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\r\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\r\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\r\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\r\n\r\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\r\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\r\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\r\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\r\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\r\n\r\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\r\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\r\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\r\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\r\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\r\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\r\n\r\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\r\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\r\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\r\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\r\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\r\n\r\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\r\n\r\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\r\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\r\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\r\n\r\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\r\n ], [MODEL, [VENDOR, 'Generic']]\r\n\r\n\r\n /*//////////////////////////\r\n // TODO: move to string map\r\n ////////////////////////////\r\n\r\n /(C6603)/i // Sony Xperia Z C6603\r\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n /(C6903)/i // Sony Xperia Z 1\r\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n\r\n /(SM-G900[F|H])/i // Samsung Galaxy S5\r\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G7102)/i // Samsung Galaxy Grand 2\r\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\r\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G313HZ)/i // Samsung Galaxy V\r\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\r\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\r\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\r\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\r\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\r\n\r\n /(T3C)/i // Advan Vandroid T3C\r\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\r\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\r\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\r\n /(ADVAN S4A)/i // Advan Vandroid S4A\r\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\r\n\r\n /(V972M)/i // ZTE V972M\r\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\r\n\r\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\r\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\r\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\r\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\r\n\r\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\r\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\r\n\r\n /////////////\r\n // END TODO\r\n ///////////*/\r\n\r\n ],\r\n\r\n engine : [[\r\n\r\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\r\n ], [VERSION, [NAME, 'EdgeHTML']], [\r\n\r\n /(presto)\\/([\\w\\.]+)/i, // Presto\r\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\r\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\r\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\r\n ], [NAME, VERSION], [\r\n\r\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\r\n ], [VERSION, NAME]\r\n ],\r\n\r\n os : [[\r\n\r\n // Windows based\r\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\r\n ], [NAME, VERSION], [\r\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\r\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\r\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\r\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\r\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\r\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\r\n\r\n // Mobile/Embedded OS\r\n /\\((bb)(10);/i // BlackBerry 10\r\n ], [[NAME, 'BlackBerry'], VERSION], [\r\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\r\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\r\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]*)/i,\r\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\r\n /linux;.+(sailfish);/i // Sailfish OS\r\n ], [NAME, VERSION], [\r\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\r\n ], [[NAME, 'Symbian'], VERSION], [\r\n /\\((series40);/i // Series 40\r\n ], [NAME], [\r\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\r\n ], [[NAME, 'Firefox OS'], VERSION], [\r\n\r\n // Console\r\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\r\n\r\n // GNU/Linux based\r\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\r\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\r\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\r\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\r\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\r\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\r\n /(gnu)\\s?([\\w\\.]*)/i // GNU\r\n ], [NAME, VERSION], [\r\n\r\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\r\n ], [[NAME, 'Chromium OS'], VERSION],[\r\n\r\n // Solaris\r\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\r\n ], [[NAME, 'Solaris'], VERSION], [\r\n\r\n // BSD based\r\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\r\n ], [NAME, VERSION],[\r\n\r\n /(haiku)\\s(\\w+)/i // Haiku\r\n ], [NAME, VERSION],[\r\n\r\n /cfnetwork\\/.+darwin/i,\r\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\r\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\r\n\r\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\r\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\r\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\r\n\r\n // Other\r\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\r\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\r\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,\r\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS\r\n /(unix)\\s?([\\w\\.]*)/i // UNIX\r\n ], [NAME, VERSION]\r\n ]\r\n };\r\n\r\n\r\n /////////////////\r\n // Constructor\r\n ////////////////\r\n /*\r\n var Browser = function (name, version) {\r\n this[NAME] = name;\r\n this[VERSION] = version;\r\n };\r\n var CPU = function (arch) {\r\n this[ARCHITECTURE] = arch;\r\n };\r\n var Device = function (vendor, model, type) {\r\n this[VENDOR] = vendor;\r\n this[MODEL] = model;\r\n this[TYPE] = type;\r\n };\r\n var Engine = Browser;\r\n var OS = Browser;\r\n */\r\n var UAParser = function (uastring, extensions) {\r\n\r\n if (typeof uastring === 'object') {\r\n extensions = uastring;\r\n uastring = undefined;\r\n }\r\n\r\n if (!(this instanceof UAParser)) {\r\n return new UAParser(uastring, extensions).getResult();\r\n }\r\n\r\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\r\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\r\n //var browser = new Browser();\r\n //var cpu = new CPU();\r\n //var device = new Device();\r\n //var engine = new Engine();\r\n //var os = new OS();\r\n\r\n this.getBrowser = function () {\r\n var browser = { name: undefined, version: undefined };\r\n mapper.rgx.call(browser, ua, rgxmap.browser);\r\n browser.major = util.major(browser.version); // deprecated\r\n return browser;\r\n };\r\n this.getCPU = function () {\r\n var cpu = { architecture: undefined };\r\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\r\n return cpu;\r\n };\r\n this.getDevice = function () {\r\n var device = { vendor: undefined, model: undefined, type: undefined };\r\n mapper.rgx.call(device, ua, rgxmap.device);\r\n return device;\r\n };\r\n this.getEngine = function () {\r\n var engine = { name: undefined, version: undefined };\r\n mapper.rgx.call(engine, ua, rgxmap.engine);\r\n return engine;\r\n };\r\n this.getOS = function () {\r\n var os = { name: undefined, version: undefined };\r\n mapper.rgx.call(os, ua, rgxmap.os);\r\n return os;\r\n };\r\n this.getResult = function () {\r\n return {\r\n ua : this.getUA(),\r\n browser : this.getBrowser(),\r\n engine : this.getEngine(),\r\n os : this.getOS(),\r\n device : this.getDevice(),\r\n cpu : this.getCPU()\r\n };\r\n };\r\n this.getUA = function () {\r\n return ua;\r\n };\r\n this.setUA = function (uastring) {\r\n ua = uastring;\r\n //browser = new Browser();\r\n //cpu = new CPU();\r\n //device = new Device();\r\n //engine = new Engine();\r\n //os = new OS();\r\n return this;\r\n };\r\n return this;\r\n };\r\n\r\n UAParser.VERSION = LIBVERSION;\r\n UAParser.BROWSER = {\r\n NAME : NAME,\r\n MAJOR : MAJOR, // deprecated\r\n VERSION : VERSION\r\n };\r\n UAParser.CPU = {\r\n ARCHITECTURE : ARCHITECTURE\r\n };\r\n UAParser.DEVICE = {\r\n MODEL : MODEL,\r\n VENDOR : VENDOR,\r\n TYPE : TYPE,\r\n CONSOLE : CONSOLE,\r\n MOBILE : MOBILE,\r\n SMARTTV : SMARTTV,\r\n TABLET : TABLET,\r\n WEARABLE: WEARABLE,\r\n EMBEDDED: EMBEDDED\r\n };\r\n UAParser.ENGINE = {\r\n NAME : NAME,\r\n VERSION : VERSION\r\n };\r\n UAParser.OS = {\r\n NAME : NAME,\r\n VERSION : VERSION\r\n };\r\n //UAParser.Utils = util;\r\n\r\n ///////////\r\n // Export\r\n //////////\r\n\r\n\r\n // check js environment\r\n if (typeof(exports) !== UNDEF_TYPE) {\r\n // nodejs env\r\n if (typeof module !== UNDEF_TYPE && module.exports) {\r\n exports = module.exports = UAParser;\r\n }\r\n // TODO: test!!!!!!!!\r\n /*\r\n if (require && require.main === module && process) {\r\n // cli\r\n var jsonize = function (arr) {\r\n var res = [];\r\n for (var i in arr) {\r\n res.push(new UAParser(arr[i]).getResult());\r\n }\r\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\r\n };\r\n if (process.stdin.isTTY) {\r\n // via args\r\n jsonize(process.argv.slice(2));\r\n } else {\r\n // via pipe\r\n var str = '';\r\n process.stdin.on('readable', function() {\r\n var read = process.stdin.read();\r\n if (read !== null) {\r\n str += read;\r\n }\r\n });\r\n process.stdin.on('end', function () {\r\n jsonize(str.replace(/\\n$/, '').split('\\n'));\r\n });\r\n }\r\n }\r\n */\r\n exports.UAParser = UAParser;\r\n } else {\r\n // requirejs env (optional)\r\n if (typeof(define) === FUNC_TYPE && define.amd) {\r\n define(function () {\r\n return UAParser;\r\n });\r\n } else if (window) {\r\n // browser env\r\n window.UAParser = UAParser;\r\n }\r\n }\r\n\r\n // jQuery/Zepto specific (optional)\r\n // Note:\r\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\r\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\r\n // and we should catch that.\r\n var $ = window && (window.jQuery || window.Zepto);\r\n if (typeof $ !== UNDEF_TYPE) {\r\n var parser = new UAParser();\r\n $.ua = parser.getResult();\r\n $.ua.get = function () {\r\n return parser.getUA();\r\n };\r\n $.ua.set = function (uastring) {\r\n parser.setUA(uastring);\r\n var result = parser.getResult();\r\n for (var prop in result) {\r\n $.ua[prop] = result[prop];\r\n }\r\n };\r\n }\r\n\r\n})(typeof window === 'object' ? window : this);"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://CBFjs/webpack/universalModuleDefinition","webpack://CBFjs/webpack/bootstrap","webpack://CBFjs/(webpack)/buildin/amd-define.js","webpack://CBFjs/(webpack)/buildin/amd-options.js","webpack://CBFjs/(webpack)/buildin/module.js","webpack://CBFjs/./src/cbfjs.js","webpack://CBFjs/./src/vendors/font-detect/fontdetect.js","webpack://CBFjs/./src/vendors/murmurhash3/murmurHash3.js","webpack://CBFjs/./src/vendors/ua-parser/UAParser.js"],"names":["module","exports","webpackPolyfill","deprecate","paths","children","Object","defineProperty","enumerable","get","l","i","scope","murmurHash3","Detector","UAParser","CBFjs","prototype","getScreenResolution","fixed_width","window","screen","width","fixed_height","height","res","Math","round","getCPUCores","navigator","hardwareConcurrency","getTouchSupport","MaxTouchPoints","msMaxTouchPoints","getColorDepth","colorDepth","getTimezoneOffset","currentDate","Date","getFonts","done","document","addEventListener","event","fontDetective","fonts","testAllFonts","getOS","uap","name","getOSVersion","version","isMobile","browserData","getResult","dataString","ua","vendor","opera","test","substr","getCPUarchitecture","getCPU","architecture","generateAsyncHash","parameters","push","newParameters","hash","x86","hash32","join","baseFonts","fontList","moreFonts","testString","testSize","h","getElementsByTagName","s","createElement","style","fontSize","innerHTML","defaultWidth","defaultHeight","index","fontFamily","appendChild","offsetWidth","offsetHeight","removeChild","detected","font","detect","matched","root","undefined","library","_x86Multiply","m","n","_x86Rotl","_x86Fmix","_x64Add","o","_x64Multiply","_x64Rotl","_x64LeftShift","_x64Xor","_x64Fmix","key","seed","remainder","length","bytes","h1","k1","c1","c2","charCodeAt","hash128","h2","h3","h4","k2","k3","k4","c3","c4","toString","slice","x64","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","util","extend","regexes","extensions","margedRegexes","concat","has","str1","str2","toLowerCase","indexOf","lowerize","str","major","replace","split","trim","mapper","rgx","arrays","j","k","p","q","matches","match","regex","props","exec","call","map","maps","browser","oldsafari","device","amazon","model","sprint","os","windows","cpu","engine","uastring","userAgent","rgxmap","getBrowser","getDevice","type","getEngine","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","define","$","jQuery","Zepto","parser","set","result","prop"],"mappings":"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","file":"cbfjs.umd.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CBFjs\"] = factory();\n\telse\n\t\troot[\"CBFjs\"] = factory();\n})(window, function() {\nreturn "," \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 = \"./src/cbfjs.js\");\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*\r\n CBFjs is library for cross-browser fingerprinting\r\n It generates fingerprint based on device and hardware level features.\r\n Library was inspired by Song Li's https://github.com/Song-Li/dynamic_fingerprinting dynamic fingerprinting tool\r\n */\r\n(function (scope) {\r\n 'use strict';\r\n\r\n /* Helpers */\r\n\r\n // murmurhash3 non crypto hash library for hash generation\r\n // core estimator to estimate number of cores of CPU\r\n var murmurHash3 = require('./vendors/murmurhash3/murmurHash3.js');\r\n\r\n // font detector\r\n var Detector = require('./vendors/font-detect/fontdetect.js');\r\n\r\n // User agent parser\r\n var UAParser = require('./vendors/ua-parser/UAParser.js');\r\n\r\n var CBFjs = function () {\r\n };\r\n\r\n\r\n CBFjs.prototype = {\r\n /*\r\n Get screen resolution\r\n */\r\n getScreenResolution: function () {\r\n var fixed_width = window.screen.width;\r\n var fixed_height = window.screen.height;\r\n var res = Math.round(fixed_width / fixed_height * 100) / 100\r\n return res;\r\n },\r\n\r\n // /*\r\n // Get number of CPU cores\r\n // Future async function TODO implement with core_estimator library\r\n // */\r\n // getCPUCores: function (done) {\r\n // if (!navigator.getHardwareConcurrency) {\r\n // return done(-1);\r\n // } else {\r\n // navigator.getHardwareConcurrency(done);\r\n // return;\r\n // }\r\n // },\r\n\r\n /*\r\n Get number of CPU cores\r\n */\r\n getCPUCores: function () {\r\n return navigator.hardwareConcurrency;\r\n },\r\n\r\n /*\r\n Get touch support\r\n */\r\n getTouchSupport: function () {\r\n return (('ontouchstart' in window)\r\n || (navigator.MaxTouchPoints > 0)\r\n || (navigator.msMaxTouchPoints > 0));\r\n },\r\n\r\n /*\r\n [DISABLED - unsupported by IE] Audio card info\r\n audioFingerPrinting: function () {\r\n try {\r\n var audioCtx = new (window.AudioContext || window.webkitAudioContext),\r\n oscillator = audioCtx.createOscillator(),\r\n analyser = audioCtx.createAnalyser(),\r\n gainNode = audioCtx.createGain(),\r\n scriptProcessor = audioCtx.createScriptProcessor(4096, 1, 1);\r\n var destination = audioCtx.destination;\r\n return (audioCtx.sampleRate).toString() + '_' + destination.maxChannelCount + \"_\" + destination.numberOfInputs + '_' + destination.numberOfOutputs + '_' + destination.channelCount + '_' + destination.channelCountMode + '_' + destination.channelInterpretation;\r\n }\r\n catch (e) {\r\n return \"not supported\";\r\n }\r\n },\r\n */\r\n\r\n /*\r\n Get color depth of the device's screen\r\n */\r\n getColorDepth: function () {\r\n return screen.colorDepth;\r\n },\r\n\r\n\r\n /*\r\n Get timezone offset in minutes. Calculated as UTC - device's time zone\r\n */\r\n getTimezoneOffset: function() {\r\n var currentDate = new Date();\r\n return currentDate.getTimezoneOffset();\r\n },\r\n\r\n /*\r\n Get list of fonts\r\n */\r\n getFonts: function(done) {\r\n document.addEventListener(\"DOMContentLoaded\", function(event) {\r\n var fontDetective = new Detector();\r\n var fonts = fontDetective.testAllFonts();\r\n done(fonts);\r\n });\r\n },\r\n\r\n /*\r\n Get OS\r\n */\r\n getOS: function() {\r\n var uap = new UAParser();\r\n return uap.getOS().name;\r\n },\r\n\r\n /*\r\n Get OS version\r\n */\r\n getOSVersion: function() {\r\n var uap = new UAParser();\r\n return uap.getOS().version;\r\n },\r\n\r\n /*\r\n Detects if device is a mobile\r\n */\r\n isMobile: function() {\r\n // detectmobilebrowsers.com JavaScript Mobile Detection Script\r\n var uap = new UAParser();\r\n var browserData = uap.getResult();\r\n var dataString = browserData.ua || navigator.vendor || window.opera;\r\n return (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(dataString) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(dataString.substr(0, 4)));\r\n },\r\n\r\n /*\r\n Get CPU architecture\r\n */\r\n getCPUarchitecture: function() {\r\n var uap = new UAParser();\r\n return uap.getCPU().architecture;\r\n },\r\n\r\n\r\n\r\n // /*\r\n // Helper function to handle asynchronous call\r\n // */\r\n generateAsyncHash: function(parameters, done) {\r\n // this.getCPUCores(function(cores) {\r\n // parameters.push(cores);\r\n // done(parameters);\r\n // });\r\n this.getFonts(function(fonts) {\r\n parameters.push(fonts);\r\n done(parameters);\r\n });\r\n },\r\n\r\n /*\r\n Generate hash from all features\r\n */\r\n get: function(done) {\r\n var parameters = [];\r\n parameters.push(this.getScreenResolution());\r\n parameters.push(this.getTouchSupport());\r\n parameters.push(this.getColorDepth());\r\n parameters.push(this.getTimezoneOffset());\r\n // Removed from here as it is async function\r\n // parameters.push(this.getFonts());\r\n parameters.push(this.getOS());\r\n parameters.push(this.getOSVersion());\r\n parameters.push(this.isMobile());\r\n parameters.push(this.getCPUarchitecture());\r\n // Disabled as it is not supported by IE\r\n //parameters.push(this.audioFingerPrinting());\r\n parameters.push(this.getCPUCores());\r\n\r\n\r\n // Async version of generating hash\r\n this.generateAsyncHash(parameters, function(newParameters) {\r\n var hash = murmurHash3.x86.hash32((newParameters).join(\"~~~\"));\r\n return done(hash, newParameters);\r\n });\r\n // var hash = murmurHash3.x86.hash32((parameters).join(\"~~~\"));\r\n // return done(hash, parameters);\r\n }\r\n};\r\n\r\n if (typeof module === 'object' && typeof exports !== \"undefined\") {\r\n module.exports = CBFjs;\r\n } else {\r\n scope.CBFjs = CBFjs;\r\n }\r\n})(this);","/* Edited by Lukas Matta (Add module export) */\r\n/**\r\n * JavaScript code to detect available availability of a\r\n * particular font in a browser using JavaScript and CSS.\r\n *\r\n * Author : Lalit Patel\r\n * Website: http://www.lalit.org/lab/javascript-css-font-detect/\r\n * License: Apache Software License 2.0\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n * Version: 0.15 (21 Sep 2009)\r\n * Changed comparision font to default from sans-default-default,\r\n * as in FF3.0 font of child element didn't fallback\r\n * to parent element if the font is missing.\r\n * Version: 0.2 (04 Mar 2012)\r\n * Comparing font against all the 3 generic font families ie,\r\n * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3\r\n * then that font is 100% not available in the system\r\n * Version: 0.3 (24 Mar 2012)\r\n * Replaced sans with serif in the list of baseFonts\r\n */\r\n\r\n/**\r\n * Usage: d = new Detector();\r\n * d.detect('font name');\r\n */\r\n(function (scope) {\r\n 'use strict';\r\n\r\n /**\r\n * JavaScript code to detect available availability of a\r\n * particular font in a browser using JavaScript and CSS.\r\n *\r\n * Author : Lalit Patel\r\n * Website: http://www.lalit.org/lab/javascript-css-font-detect/\r\n * License: Apache Software License 2.0\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n * Version: 0.15 (21 Sep 2009)\r\n * Changed comparision font to default from sans-default-default,\r\n * as in FF3.0 font of child element didn't fallback\r\n * to parent element if the font is missing.\r\n * Version: 0.2 (04 Mar 2012)\r\n * Comparing font against all the 3 generic font families ie,\r\n * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3\r\n * then that font is 100% not available in the system\r\n * Version: 0.3 (24 Mar 2012)\r\n * Replaced sans with serif in the list of baseFonts\r\n */\r\n\r\n /**\r\n * Usage: d = new Detector();\r\n * d.detect('font name');\r\n */\r\n var Detector = function() {\r\n // a font will be compared against all the three default fonts.\r\n // and if it doesn't match all 3 then that font is not available.\r\n var baseFonts = ['monospace', 'sans-serif', 'serif'];\r\n var fontList = [\r\n \"Andale Mono\", \"Arial\", \"Arial Black\", \"Arial Hebrew\", \"Arial MT\", \"Arial Narrow\", \"Arial Unicode MS\",\r\n \"Bitstream Vera Sans Mono\", \"Book Antiqua\", \"Bookman Old Style\",\r\n \"Calibri\", \"Cambria\", \"Cambria Math\", \"Century\", \"Century Gothic\", \"Century Schoolbook\", \"Comic Sans\", \"Comic Sans MS\", \"Consolas\", \"Courier\", \"Courier New\",\r\n \"Garamond\", \"Geneva\", \"Georgia\",\r\n \"Helvetica\", \"Helvetica Neue\",\r\n \"Impact\",\r\n \"Lucida Bright\", \"Lucida Calligraphy\", \"Lucida Console\", \"Lucida Fax\", \"LUCIDA GRANDE\", \"Lucida Handwriting\", \"Lucida Sans\", \"Lucida Sans Typewriter\", \"Lucida Sans Unicode\",\r\n \"Microsoft Sans Serif\", \"Monaco\", \"Monotype Corsiva\", \"MS Gothic\", \"MS Outlook\", \"MS PGothic\", \"MS Reference Sans Serif\", \"MS Sans Serif\", \"MS Serif\", \"MYRIAD\", \"MYRIAD PRO\",\r\n \"Palatino\", \"Palatino Linotype\",\r\n \"Segoe Print\", \"Segoe Script\", \"Segoe UI\", \"Segoe UI Light\", \"Segoe UI Semibold\", \"Segoe UI Symbol\",\r\n \"Tahoma\", \"Times\", \"Times New Roman\", \"Times New Roman PS\", \"Trebuchet MS\",\r\n \"Verdana\", \"Wingdings\", \"Wingdings 2\", \"Wingdings 3\"\r\n ];\r\n var moreFonts = [\r\n \"Abadi MT Condensed Light\", \"Academy Engraved LET\", \"ADOBE CASLON PRO\", \"Adobe Garamond\", \"ADOBE GARAMOND PRO\", \"Agency FB\", \"Aharoni\", \"Albertus Extra Bold\", \"Albertus Medium\", \"Algerian\", \"Amazone BT\", \"American Typewriter\",\r\n \"American Typewriter Condensed\", \"AmerType Md BT\", \"Andalus\", \"Angsana New\", \"AngsanaUPC\", \"Antique Olive\", \"Aparajita\", \"Apple Chancery\", \"Apple Color Emoji\", \"Apple SD Gothic Neo\", \"Arabic Typesetting\", \"ARCHER\",\r\n \"ARNO PRO\", \"Arrus BT\", \"Aurora Cn BT\", \"AvantGarde Bk BT\", \"AvantGarde Md BT\", \"AVENIR\", \"Ayuthaya\", \"Bandy\", \"Bangla Sangam MN\", \"Bank Gothic\", \"BankGothic Md BT\", \"Baskerville\",\r\n \"Baskerville Old Face\", \"Batang\", \"BatangChe\", \"Bauer Bodoni\", \"Bauhaus 93\", \"Bazooka\", \"Bell MT\", \"Bembo\", \"Benguiat Bk BT\", \"Berlin Sans FB\", \"Berlin Sans FB Demi\", \"Bernard MT Condensed\", \"BernhardFashion BT\", \"BernhardMod BT\", \"Big Caslon\", \"BinnerD\",\r\n \"Blackadder ITC\", \"BlairMdITC TT\", \"Bodoni 72\", \"Bodoni 72 Oldstyle\", \"Bodoni 72 Smallcaps\", \"Bodoni MT\", \"Bodoni MT Black\", \"Bodoni MT Condensed\", \"Bodoni MT Poster Compressed\",\r\n \"Bookshelf Symbol 7\", \"Boulder\", \"Bradley Hand\", \"Bradley Hand ITC\", \"Bremen Bd BT\", \"Britannic Bold\", \"Broadway\", \"Browallia New\", \"BrowalliaUPC\", \"Brush Script MT\", \"Californian FB\", \"Calisto MT\", \"Calligrapher\", \"Candara\",\r\n \"CaslonOpnface BT\", \"Castellar\", \"Centaur\", \"Cezanne\", \"CG Omega\", \"CG Times\", \"Chalkboard\", \"Chalkboard SE\", \"Chalkduster\", \"Charlesworth\", \"Charter Bd BT\", \"Charter BT\", \"Chaucer\",\r\n \"ChelthmITC Bk BT\", \"Chiller\", \"Clarendon\", \"Clarendon Condensed\", \"CloisterBlack BT\", \"Cochin\", \"Colonna MT\", \"Constantia\", \"Cooper Black\", \"Copperplate\", \"Copperplate Gothic\", \"Copperplate Gothic Bold\",\r\n \"Copperplate Gothic Light\", \"CopperplGoth Bd BT\", \"Corbel\", \"Cordia New\", \"CordiaUPC\", \"Cornerstone\", \"Coronet\", \"Cuckoo\", \"Curlz MT\", \"DaunPenh\", \"Dauphin\", \"David\", \"DB LCD Temp\", \"DELICIOUS\", \"Denmark\",\r\n \"DFKai-SB\", \"Didot\", \"DilleniaUPC\", \"DIN\", \"DokChampa\", \"Dotum\", \"DotumChe\", \"Ebrima\", \"Edwardian Script ITC\", \"Elephant\", \"English 111 Vivace BT\", \"Engravers MT\", \"EngraversGothic BT\", \"Eras Bold ITC\", \"Eras Demi ITC\", \"Eras Light ITC\", \"Eras Medium ITC\",\r\n \"EucrosiaUPC\", \"Euphemia\", \"Euphemia UCAS\", \"EUROSTILE\", \"Exotc350 Bd BT\", \"FangSong\", \"Felix Titling\", \"Fixedsys\", \"FONTIN\", \"Footlight MT Light\", \"Forte\",\r\n \"FrankRuehl\", \"Fransiscan\", \"Freefrm721 Blk BT\", \"FreesiaUPC\", \"Freestyle Script\", \"French Script MT\", \"FrnkGothITC Bk BT\", \"Fruitger\", \"FRUTIGER\",\r\n \"Futura\", \"Futura Bk BT\", \"Futura Lt BT\", \"Futura Md BT\", \"Futura ZBlk BT\", \"FuturaBlack BT\", \"Gabriola\", \"Galliard BT\", \"Gautami\", \"Geeza Pro\", \"Geometr231 BT\", \"Geometr231 Hv BT\", \"Geometr231 Lt BT\", \"GeoSlab 703 Lt BT\",\r\n \"GeoSlab 703 XBd BT\", \"Gigi\", \"Gill Sans\", \"Gill Sans MT\", \"Gill Sans MT Condensed\", \"Gill Sans MT Ext Condensed Bold\", \"Gill Sans Ultra Bold\", \"Gill Sans Ultra Bold Condensed\", \"Gisha\", \"Gloucester MT Extra Condensed\", \"GOTHAM\", \"GOTHAM BOLD\",\r\n \"Goudy Old Style\", \"Goudy Stout\", \"GoudyHandtooled BT\", \"GoudyOLSt BT\", \"Gujarati Sangam MN\", \"Gulim\", \"GulimChe\", \"Gungsuh\", \"GungsuhChe\", \"Gurmukhi MN\", \"Haettenschweiler\", \"Harlow Solid Italic\", \"Harrington\", \"Heather\", \"Heiti SC\", \"Heiti TC\", \"HELV\",\r\n \"Herald\", \"High Tower Text\", \"Hiragino Kaku Gothic ProN\", \"Hiragino Mincho ProN\", \"Hoefler Text\", \"Humanst 521 Cn BT\", \"Humanst521 BT\", \"Humanst521 Lt BT\", \"Imprint MT Shadow\", \"Incised901 Bd BT\", \"Incised901 BT\",\r\n \"Incised901 Lt BT\", \"INCONSOLATA\", \"Informal Roman\", \"Informal011 BT\", \"INTERSTATE\", \"IrisUPC\", \"Iskoola Pota\", \"JasmineUPC\", \"Jazz LET\", \"Jenson\", \"Jester\", \"Jokerman\", \"Juice ITC\", \"Kabel Bk BT\", \"Kabel Ult BT\", \"Kailasa\", \"KaiTi\", \"Kalinga\", \"Kannada Sangam MN\",\r\n \"Kartika\", \"Kaufmann Bd BT\", \"Kaufmann BT\", \"Khmer UI\", \"KodchiangUPC\", \"Kokila\", \"Korinna BT\", \"Kristen ITC\", \"Krungthep\", \"Kunstler Script\", \"Lao UI\", \"Latha\", \"Leelawadee\", \"Letter Gothic\", \"Levenim MT\", \"LilyUPC\", \"Lithograph\", \"Lithograph Light\", \"Long Island\",\r\n \"Lydian BT\", \"Magneto\", \"Maiandra GD\", \"Malayalam Sangam MN\", \"Malgun Gothic\",\r\n \"Mangal\", \"Marigold\", \"Marion\", \"Marker Felt\", \"Market\", \"Marlett\", \"Matisse ITC\", \"Matura MT Script Capitals\", \"Meiryo\", \"Meiryo UI\", \"Microsoft Himalaya\", \"Microsoft JhengHei\", \"Microsoft New Tai Lue\", \"Microsoft PhagsPa\", \"Microsoft Tai Le\",\r\n \"Microsoft Uighur\", \"Microsoft YaHei\", \"Microsoft Yi Baiti\", \"MingLiU\", \"MingLiU_HKSCS\", \"MingLiU_HKSCS-ExtB\", \"MingLiU-ExtB\", \"Minion\", \"Minion Pro\", \"Miriam\", \"Miriam Fixed\", \"Mistral\", \"Modern\", \"Modern No. 20\", \"Mona Lisa Solid ITC TT\", \"Mongolian Baiti\",\r\n \"MONO\", \"MoolBoran\", \"Mrs Eaves\", \"MS LineDraw\", \"MS Mincho\", \"MS PMincho\", \"MS Reference Specialty\", \"MS UI Gothic\", \"MT Extra\", \"MUSEO\", \"MV Boli\",\r\n \"Nadeem\", \"Narkisim\", \"NEVIS\", \"News Gothic\", \"News GothicMT\", \"NewsGoth BT\", \"Niagara Engraved\", \"Niagara Solid\", \"Noteworthy\", \"NSimSun\", \"Nyala\", \"OCR A Extended\", \"Old Century\", \"Old English Text MT\", \"Onyx\", \"Onyx BT\", \"OPTIMA\", \"Oriya Sangam MN\",\r\n \"OSAKA\", \"OzHandicraft BT\", \"Palace Script MT\", \"Papyrus\", \"Parchment\", \"Party LET\", \"Pegasus\", \"Perpetua\", \"Perpetua Titling MT\", \"PetitaBold\", \"Pickwick\", \"Plantagenet Cherokee\", \"Playbill\", \"PMingLiU\", \"PMingLiU-ExtB\",\r\n \"Poor Richard\", \"Poster\", \"PosterBodoni BT\", \"PRINCETOWN LET\", \"Pristina\", \"PTBarnum BT\", \"Pythagoras\", \"Raavi\", \"Rage Italic\", \"Ravie\", \"Ribbon131 Bd BT\", \"Rockwell\", \"Rockwell Condensed\", \"Rockwell Extra Bold\", \"Rod\", \"Roman\", \"Sakkal Majalla\",\r\n \"Santa Fe LET\", \"Savoye LET\", \"Sceptre\", \"Script\", \"Script MT Bold\", \"SCRIPTINA\", \"Serifa\", \"Serifa BT\", \"Serifa Th BT\", \"ShelleyVolante BT\", \"Sherwood\",\r\n \"Shonar Bangla\", \"Showcard Gothic\", \"Shruti\", \"Signboard\", \"SILKSCREEN\", \"SimHei\", \"Simplified Arabic\", \"Simplified Arabic Fixed\", \"SimSun\", \"SimSun-ExtB\", \"Sinhala Sangam MN\", \"Sketch Rockwell\", \"Skia\", \"Small Fonts\", \"Snap ITC\", \"Snell Roundhand\", \"Socket\",\r\n \"Souvenir Lt BT\", \"Staccato222 BT\", \"Steamer\", \"Stencil\", \"Storybook\", \"Styllo\", \"Subway\", \"Swis721 BlkEx BT\", \"Swiss911 XCm BT\", \"Sylfaen\", \"Synchro LET\", \"System\", \"Tamil Sangam MN\", \"Technical\", \"Teletype\", \"Telugu Sangam MN\", \"Tempus Sans ITC\",\r\n \"Terminal\", \"Thonburi\", \"Traditional Arabic\", \"Trajan\", \"TRAJAN PRO\", \"Tristan\", \"Tubular\", \"Tunga\", \"Tw Cen MT\", \"Tw Cen MT Condensed\", \"Tw Cen MT Condensed Extra Bold\",\r\n \"TypoUpright BT\", \"Unicorn\", \"Univers\", \"Univers CE 55 Medium\", \"Univers Condensed\", \"Utsaah\", \"Vagabond\", \"Vani\", \"Vijaya\", \"Viner Hand ITC\", \"VisualUI\", \"Vivaldi\", \"Vladimir Script\", \"Vrinda\", \"Westminster\", \"WHITNEY\", \"Wide Latin\",\r\n \"ZapfEllipt BT\", \"ZapfHumnst BT\", \"ZapfHumnst Dm BT\", \"Zapfino\", \"Zurich BlkEx BT\", \"Zurich Ex BT\", \"ZWAdobeF\"\r\n ];\r\n\r\n //we use m or w because these two characters take up the maximum width.\r\n // And we use a LLi so that the same matching fonts can get separated\r\n var testString = \"mmmmmmmmmmlli\";\r\n\r\n //we test using 72px font size, we may use any size. I guess larger the better.\r\n var testSize = '72px';\r\n\r\n var h = document.getElementsByTagName(\"body\")[0];\r\n\r\n // create a SPAN in the document to get the width of the text we use to test\r\n var s = document.createElement(\"span\");\r\n s.style.fontSize = testSize;\r\n s.innerHTML = testString;\r\n var defaultWidth = {};\r\n var defaultHeight = {};\r\n for (var index in baseFonts) {\r\n //get the default width for the three base fonts\r\n s.style.fontFamily = baseFonts[index];\r\n h.appendChild(s);\r\n defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font\r\n defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font\r\n h.removeChild(s);\r\n }\r\n this.testAllFonts = function() {\r\n var detected = [];\r\n for (var font in fontList) {\r\n if (this.detect(fontList[font]))\r\n detected.push(fontList[font]);\r\n }\r\n // for (var font in moreFonts) {\r\n // if (this.detect(moreFonts[font]))\r\n // detected.push(moreFonts[font]);\r\n // }\r\n return detected;\r\n }\r\n\r\n this.detect = function(font) {\r\n var detected = false;\r\n for (var index in baseFonts) {\r\n s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback.\r\n h.appendChild(s);\r\n var matched = (s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]);\r\n h.removeChild(s);\r\n detected = detected || matched;\r\n }\r\n return detected;\r\n }\r\n\r\n };\r\n\r\n if (typeof module === 'object' && typeof exports !== \"undefined\") {\r\n module.exports = Detector;\r\n } else {\r\n scope.Detector = Detector;\r\n }\r\n})(window);","// +----------------------------------------------------------------------+\r\n// | murmurHash3.js v2.1.2 (http://github.com/karanlyons/murmurHash.js) |\r\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\r\n// |----------------------------------------------------------------------|\r\n// | Copyright (c) 2012 Karan Lyons |\r\n// | Freely distributable under the MIT license. |\r\n// +----------------------------------------------------------------------+\r\n\r\n\r\n;(function (root, undefined) {\r\n 'use strict';\r\n\r\n // Create a local object that'll be exported or referenced globally.\r\n var library = {\r\n 'version': '2.1.2',\r\n 'x86': {},\r\n 'x64': {}\r\n };\r\n\r\n\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n // -----------------\r\n\r\n function _x86Multiply(m, n) {\r\n //\r\n // Given two 32bit ints, returns the two multiplied together as a\r\n // 32bit int.\r\n //\r\n\r\n return ((m & 0xffff) * n) + ((((m >>> 16) * n) & 0xffff) << 16);\r\n }\r\n\r\n\r\n function _x86Rotl(m, n) {\r\n //\r\n // Given a 32bit int and an int representing a number of bit positions,\r\n // returns the 32bit int rotated left by that number of positions.\r\n //\r\n\r\n return (m << n) | (m >>> (32 - n));\r\n }\r\n\r\n\r\n function _x86Fmix(h) {\r\n //\r\n // Given a block, returns murmurHash3's final x86 mix of that block.\r\n //\r\n\r\n h ^= h >>> 16;\r\n h = _x86Multiply(h, 0x85ebca6b);\r\n h ^= h >>> 13;\r\n h = _x86Multiply(h, 0xc2b2ae35);\r\n h ^= h >>> 16;\r\n\r\n return h;\r\n }\r\n\r\n\r\n function _x64Add(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // added together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\r\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\r\n var o = [0, 0, 0, 0];\r\n\r\n o[3] += m[3] + n[3];\r\n o[2] += o[3] >>> 16;\r\n o[3] &= 0xffff;\r\n\r\n o[2] += m[2] + n[2];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[1] += m[1] + n[1];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[0] += m[0] + n[0];\r\n o[0] &= 0xffff;\r\n\r\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\r\n }\r\n\r\n\r\n function _x64Multiply(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // multiplied together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\r\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\r\n var o = [0, 0, 0, 0];\r\n\r\n o[3] += m[3] * n[3];\r\n o[2] += o[3] >>> 16;\r\n o[3] &= 0xffff;\r\n\r\n o[2] += m[2] * n[3];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[2] += m[3] * n[2];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[1] += m[1] * n[3];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[1] += m[2] * n[2];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[1] += m[3] * n[1];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0]);\r\n o[0] &= 0xffff;\r\n\r\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\r\n }\r\n\r\n\r\n function _x64Rotl(m, n) {\r\n //\r\n // Given a 64bit int (as an array of two 32bit ints) and an int\r\n // representing a number of bit positions, returns the 64bit int (as an\r\n // array of two 32bit ints) rotated left by that number of positions.\r\n //\r\n\r\n n %= 64;\r\n\r\n if (n === 32) {\r\n return [m[1], m[0]];\r\n }\r\n\r\n else if (n < 32) {\r\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\r\n }\r\n\r\n else {\r\n n -= 32;\r\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\r\n }\r\n }\r\n\r\n\r\n function _x64LeftShift(m, n) {\r\n //\r\n // Given a 64bit int (as an array of two 32bit ints) and an int\r\n // representing a number of bit positions, returns the 64bit int (as an\r\n // array of two 32bit ints) shifted left by that number of positions.\r\n //\r\n\r\n n %= 64;\r\n\r\n if (n === 0) {\r\n return m;\r\n }\r\n\r\n else if (n < 32) {\r\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\r\n }\r\n\r\n else {\r\n return [m[1] << (n - 32), 0];\r\n }\r\n }\r\n\r\n\r\n function _x64Xor(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // xored together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n return [m[0] ^ n[0], m[1] ^ n[1]];\r\n }\r\n\r\n\r\n function _x64Fmix(h) {\r\n //\r\n // Given a block, returns murmurHash3's final x64 mix of that block.\r\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\r\n // only place where we need to right shift 64bit ints.)\r\n //\r\n\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n\r\n return h;\r\n }\r\n\r\n\r\n\r\n\r\n // PUBLIC FUNCTIONS\r\n // ----------------\r\n\r\n library.x86.hash32 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 32 bit hash\r\n // using the x86 flavor of MurmurHash3, as an unsigned int.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 4;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = seed;\r\n\r\n var k1 = 0;\r\n\r\n var c1 = 0xcc9e2d51;\r\n var c2 = 0x1b873593;\r\n\r\n for (var i = 0; i < bytes; i = i + 4) {\r\n k1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24);\r\n\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n\r\n h1 ^= k1;\r\n h1 = _x86Rotl(h1, 13);\r\n h1 = _x86Multiply(h1, 5) + 0xe6546b64;\r\n }\r\n\r\n k1 = 0;\r\n\r\n switch (remainder) {\r\n case 3:\r\n k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\r\n\r\n case 2:\r\n k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\r\n\r\n case 1:\r\n k1 ^= (key.charCodeAt(i) & 0xff);\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n }\r\n\r\n h1 ^= key.length;\r\n h1 = _x86Fmix(h1);\r\n\r\n return h1 >>> 0;\r\n };\r\n\r\n\r\n library.x86.hash128 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 128 bit\r\n // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 16;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = seed;\r\n var h2 = seed;\r\n var h3 = seed;\r\n var h4 = seed;\r\n\r\n var k1 = 0;\r\n var k2 = 0;\r\n var k3 = 0;\r\n var k4 = 0;\r\n\r\n var c1 = 0x239b961b;\r\n var c2 = 0xab0e9789;\r\n var c3 = 0x38b34ae5;\r\n var c4 = 0xa1e38b93;\r\n\r\n for (var i = 0; i < bytes; i = i + 16) {\r\n k1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24);\r\n k2 = ((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24);\r\n k3 = ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24);\r\n k4 = ((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24);\r\n\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n\r\n h1 = _x86Rotl(h1, 19);\r\n h1 += h2;\r\n h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\r\n\r\n k2 = _x86Multiply(k2, c2);\r\n k2 = _x86Rotl(k2, 16);\r\n k2 = _x86Multiply(k2, c3);\r\n h2 ^= k2;\r\n\r\n h2 = _x86Rotl(h2, 17);\r\n h2 += h3;\r\n h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\r\n\r\n k3 = _x86Multiply(k3, c3);\r\n k3 = _x86Rotl(k3, 17);\r\n k3 = _x86Multiply(k3, c4);\r\n h3 ^= k3;\r\n\r\n h3 = _x86Rotl(h3, 15);\r\n h3 += h4;\r\n h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\r\n\r\n k4 = _x86Multiply(k4, c4);\r\n k4 = _x86Rotl(k4, 18);\r\n k4 = _x86Multiply(k4, c1);\r\n h4 ^= k4;\r\n\r\n h4 = _x86Rotl(h4, 13);\r\n h4 += h1;\r\n h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\r\n }\r\n\r\n k1 = 0;\r\n k2 = 0;\r\n k3 = 0;\r\n k4 = 0;\r\n\r\n switch (remainder) {\r\n case 15:\r\n k4 ^= key.charCodeAt(i + 14) << 16;\r\n\r\n case 14:\r\n k4 ^= key.charCodeAt(i + 13) << 8;\r\n\r\n case 13:\r\n k4 ^= key.charCodeAt(i + 12);\r\n k4 = _x86Multiply(k4, c4);\r\n k4 = _x86Rotl(k4, 18);\r\n k4 = _x86Multiply(k4, c1);\r\n h4 ^= k4;\r\n\r\n case 12:\r\n k3 ^= key.charCodeAt(i + 11) << 24;\r\n\r\n case 11:\r\n k3 ^= key.charCodeAt(i + 10) << 16;\r\n\r\n case 10:\r\n k3 ^= key.charCodeAt(i + 9) << 8;\r\n\r\n case 9:\r\n k3 ^= key.charCodeAt(i + 8);\r\n k3 = _x86Multiply(k3, c3);\r\n k3 = _x86Rotl(k3, 17);\r\n k3 = _x86Multiply(k3, c4);\r\n h3 ^= k3;\r\n\r\n case 8:\r\n k2 ^= key.charCodeAt(i + 7) << 24;\r\n\r\n case 7:\r\n k2 ^= key.charCodeAt(i + 6) << 16;\r\n\r\n case 6:\r\n k2 ^= key.charCodeAt(i + 5) << 8;\r\n\r\n case 5:\r\n k2 ^= key.charCodeAt(i + 4);\r\n k2 = _x86Multiply(k2, c2);\r\n k2 = _x86Rotl(k2, 16);\r\n k2 = _x86Multiply(k2, c3);\r\n h2 ^= k2;\r\n\r\n case 4:\r\n k1 ^= key.charCodeAt(i + 3) << 24;\r\n\r\n case 3:\r\n k1 ^= key.charCodeAt(i + 2) << 16;\r\n\r\n case 2:\r\n k1 ^= key.charCodeAt(i + 1) << 8;\r\n\r\n case 1:\r\n k1 ^= key.charCodeAt(i);\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n }\r\n\r\n h1 ^= key.length;\r\n h2 ^= key.length;\r\n h3 ^= key.length;\r\n h4 ^= key.length;\r\n\r\n h1 += h2;\r\n h1 += h3;\r\n h1 += h4;\r\n h2 += h1;\r\n h3 += h1;\r\n h4 += h1;\r\n\r\n h1 = _x86Fmix(h1);\r\n h2 = _x86Fmix(h2);\r\n h3 = _x86Fmix(h3);\r\n h4 = _x86Fmix(h4);\r\n\r\n h1 += h2;\r\n h1 += h3;\r\n h1 += h4;\r\n h2 += h1;\r\n h3 += h1;\r\n h4 += h1;\r\n\r\n return (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8);\r\n };\r\n\r\n\r\n library.x64.hash128 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 128 bit\r\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 16;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = [0, seed];\r\n var h2 = [0, seed];\r\n\r\n var k1 = [0, 0];\r\n var k2 = [0, 0];\r\n\r\n var c1 = [0x87c37b91, 0x114253d5];\r\n var c2 = [0x4cf5ad43, 0x2745937f];\r\n\r\n for (var i = 0; i < bytes; i = i + 16) {\r\n k1 = [((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24), ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24)];\r\n k2 = [((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24), ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24)];\r\n\r\n k1 = _x64Multiply(k1, c1);\r\n k1 = _x64Rotl(k1, 31);\r\n k1 = _x64Multiply(k1, c2);\r\n h1 = _x64Xor(h1, k1);\r\n\r\n h1 = _x64Rotl(h1, 27);\r\n h1 = _x64Add(h1, h2);\r\n h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\r\n\r\n k2 = _x64Multiply(k2, c2);\r\n k2 = _x64Rotl(k2, 33);\r\n k2 = _x64Multiply(k2, c1);\r\n h2 = _x64Xor(h2, k2);\r\n\r\n h2 = _x64Rotl(h2, 31);\r\n h2 = _x64Add(h2, h1);\r\n h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\r\n }\r\n\r\n k1 = [0, 0];\r\n k2 = [0, 0];\r\n\r\n switch(remainder) {\r\n case 15:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 14)], 48));\r\n\r\n case 14:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 13)], 40));\r\n\r\n case 13:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 12)], 32));\r\n\r\n case 12:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 11)], 24));\r\n\r\n case 11:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 10)], 16));\r\n\r\n case 10:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 9)], 8));\r\n\r\n case 9:\r\n k2 = _x64Xor(k2, [0, key.charCodeAt(i + 8)]);\r\n k2 = _x64Multiply(k2, c2);\r\n k2 = _x64Rotl(k2, 33);\r\n k2 = _x64Multiply(k2, c1);\r\n h2 = _x64Xor(h2, k2);\r\n\r\n case 8:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 7)], 56));\r\n\r\n case 7:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 6)], 48));\r\n\r\n case 6:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 5)], 40));\r\n\r\n case 5:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 4)], 32));\r\n\r\n case 4:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 3)], 24));\r\n\r\n case 3:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 2)], 16));\r\n\r\n case 2:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 1)], 8));\r\n\r\n case 1:\r\n k1 = _x64Xor(k1, [0, key.charCodeAt(i)]);\r\n k1 = _x64Multiply(k1, c1);\r\n k1 = _x64Rotl(k1, 31);\r\n k1 = _x64Multiply(k1, c2);\r\n h1 = _x64Xor(h1, k1);\r\n }\r\n\r\n h1 = _x64Xor(h1, [0, key.length]);\r\n h2 = _x64Xor(h2, [0, key.length]);\r\n\r\n h1 = _x64Add(h1, h2);\r\n h2 = _x64Add(h2, h1);\r\n\r\n h1 = _x64Fmix(h1);\r\n h2 = _x64Fmix(h2);\r\n\r\n h1 = _x64Add(h1, h2);\r\n h2 = _x64Add(h2, h1);\r\n\r\n return (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8);\r\n };\r\n\r\n\r\n\r\n\r\n // INITIALIZATION\r\n // --------------\r\n\r\n // Export murmurHash3 for CommonJS, either as an AMD module or just as part\r\n // of the global object.\r\n if (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = library;\r\n }\r\n\r\n exports.murmurHash3 = library;\r\n }\r\n\r\n else if (typeof define === 'function' && define.amd) {\r\n define([], function() {\r\n return library;\r\n });\r\n }\r\n\r\n else {\r\n // Use murmurHash3.noConflict to restore `murmurHash3` back to its\r\n // original value. Returns a reference to the library object, to allow\r\n // it to be used under a different name.\r\n library._murmurHash3 = root.murmurHash3\r\n\r\n library.noConflict = function () {\r\n root.murmurHash3 = library._murmurHash3;\r\n library._murmurHash3 = undefined;\r\n library.noConflict = undefined;\r\n\r\n return library;\r\n };\r\n\r\n root.murmurHash3 = library;\r\n }\r\n})(this);","/*!\r\n * UAParser.js v0.7.18\r\n * Lightweight JavaScript-based User-Agent string parser\r\n * https://github.com/faisalman/ua-parser-js\r\n *\r\n * Copyright © 2012-2016 Faisal Salman \r\n * Dual licensed under GPLv2 or MIT\r\n */\r\n\r\n(function (window, undefined) {\r\n\r\n 'use strict';\r\n\r\n //////////////\r\n // Constants\r\n /////////////\r\n\r\n\r\n var LIBVERSION = '0.7.18',\r\n EMPTY = '',\r\n UNKNOWN = '?',\r\n FUNC_TYPE = 'function',\r\n UNDEF_TYPE = 'undefined',\r\n OBJ_TYPE = 'object',\r\n STR_TYPE = 'string',\r\n MAJOR = 'major', // deprecated\r\n MODEL = 'model',\r\n NAME = 'name',\r\n TYPE = 'type',\r\n VENDOR = 'vendor',\r\n VERSION = 'version',\r\n ARCHITECTURE= 'architecture',\r\n CONSOLE = 'console',\r\n MOBILE = 'mobile',\r\n TABLET = 'tablet',\r\n SMARTTV = 'smarttv',\r\n WEARABLE = 'wearable',\r\n EMBEDDED = 'embedded';\r\n\r\n\r\n ///////////\r\n // Helper\r\n //////////\r\n\r\n\r\n var util = {\r\n extend : function (regexes, extensions) {\r\n var margedRegexes = {};\r\n for (var i in regexes) {\r\n if (extensions[i] && extensions[i].length % 2 === 0) {\r\n margedRegexes[i] = extensions[i].concat(regexes[i]);\r\n } else {\r\n margedRegexes[i] = regexes[i];\r\n }\r\n }\r\n return margedRegexes;\r\n },\r\n has : function (str1, str2) {\r\n if (typeof str1 === \"string\") {\r\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\r\n } else {\r\n return false;\r\n }\r\n },\r\n lowerize : function (str) {\r\n return str.toLowerCase();\r\n },\r\n major : function (version) {\r\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\r\n },\r\n trim : function (str) {\r\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n }\r\n };\r\n\r\n\r\n ///////////////\r\n // Map helper\r\n //////////////\r\n\r\n\r\n var mapper = {\r\n\r\n rgx : function (ua, arrays) {\r\n\r\n //var result = {},\r\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\r\n\r\n /*// construct object barebones\r\n for (p = 0; p < args[1].length; p++) {\r\n q = args[1][p];\r\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\r\n }*/\r\n\r\n // loop through all regexes maps\r\n while (i < arrays.length && !matches) {\r\n\r\n var regex = arrays[i], // even sequence (0,2,4,..)\r\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\r\n j = k = 0;\r\n\r\n // try matching uastring with regexes\r\n while (j < regex.length && !matches) {\r\n\r\n matches = regex[j++].exec(ua);\r\n\r\n if (!!matches) {\r\n for (p = 0; p < props.length; p++) {\r\n match = matches[++k];\r\n q = props[p];\r\n // check if given property is actually array\r\n if (typeof q === OBJ_TYPE && q.length > 0) {\r\n if (q.length == 2) {\r\n if (typeof q[1] == FUNC_TYPE) {\r\n // assign modified match\r\n this[q[0]] = q[1].call(this, match);\r\n } else {\r\n // assign given value, ignore regex match\r\n this[q[0]] = q[1];\r\n }\r\n } else if (q.length == 3) {\r\n // check whether function or regex\r\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\r\n // call function (usually string mapper)\r\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\r\n } else {\r\n // sanitize match using given regex\r\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\r\n }\r\n } else if (q.length == 4) {\r\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\r\n }\r\n } else {\r\n this[q] = match ? match : undefined;\r\n }\r\n }\r\n }\r\n }\r\n i += 2;\r\n }\r\n // console.log(this);\r\n //return this;\r\n },\r\n\r\n str : function (str, map) {\r\n\r\n for (var i in map) {\r\n // check if array\r\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\r\n for (var j = 0; j < map[i].length; j++) {\r\n if (util.has(map[i][j], str)) {\r\n return (i === UNKNOWN) ? undefined : i;\r\n }\r\n }\r\n } else if (util.has(map[i], str)) {\r\n return (i === UNKNOWN) ? undefined : i;\r\n }\r\n }\r\n return str;\r\n }\r\n };\r\n\r\n\r\n ///////////////\r\n // String map\r\n //////////////\r\n\r\n\r\n var maps = {\r\n\r\n browser : {\r\n oldsafari : {\r\n version : {\r\n '1.0' : '/8',\r\n '1.2' : '/1',\r\n '1.3' : '/3',\r\n '2.0' : '/412',\r\n '2.0.2' : '/416',\r\n '2.0.3' : '/417',\r\n '2.0.4' : '/419',\r\n '?' : '/'\r\n }\r\n }\r\n },\r\n\r\n device : {\r\n amazon : {\r\n model : {\r\n 'Fire Phone' : ['SD', 'KF']\r\n }\r\n },\r\n sprint : {\r\n model : {\r\n 'Evo Shift 4G' : '7373KT'\r\n },\r\n vendor : {\r\n 'HTC' : 'APA',\r\n 'Sprint' : 'Sprint'\r\n }\r\n }\r\n },\r\n\r\n os : {\r\n windows : {\r\n version : {\r\n 'ME' : '4.90',\r\n 'NT 3.11' : 'NT3.51',\r\n 'NT 4.0' : 'NT4.0',\r\n '2000' : 'NT 5.0',\r\n 'XP' : ['NT 5.1', 'NT 5.2'],\r\n 'Vista' : 'NT 6.0',\r\n '7' : 'NT 6.1',\r\n '8' : 'NT 6.2',\r\n '8.1' : 'NT 6.3',\r\n '10' : ['NT 6.4', 'NT 10.0'],\r\n 'RT' : 'ARM'\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n //////////////\r\n // Regex map\r\n /////////////\r\n\r\n\r\n var regexes = {\r\n\r\n browser : [[\r\n\r\n // Presto based\r\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\r\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\r\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\r\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\r\n ], [NAME, VERSION], [\r\n\r\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\r\n ], [[NAME, 'Opera Mini'], VERSION], [\r\n\r\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\r\n ], [[NAME, 'Opera'], VERSION], [\r\n\r\n // Mixed\r\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\r\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\r\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\r\n\r\n // Trident based\r\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\r\n // Avant/IEMobile/SlimBrowser/Baidu\r\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\r\n\r\n // Webkit/KHTML based\r\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\r\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\\/([\\w\\.-]+)/i\r\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\r\n ], [NAME, VERSION], [\r\n\r\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\r\n ], [[NAME, 'IE'], VERSION], [\r\n\r\n /(edge|edgios|edgea)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\r\n ], [[NAME, 'Edge'], VERSION], [\r\n\r\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\r\n ], [[NAME, 'Yandex'], VERSION], [\r\n\r\n /(puffin)\\/([\\w\\.]+)/i // Puffin\r\n ], [[NAME, 'Puffin'], VERSION], [\r\n\r\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i\r\n // UCBrowser\r\n ], [[NAME, 'UCBrowser'], VERSION], [\r\n\r\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\r\n ], [[NAME, /_/g, ' '], VERSION], [\r\n\r\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\r\n ], [[NAME, 'WeChat'], VERSION], [\r\n\r\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\r\n ], [NAME, VERSION], [\r\n\r\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\r\n ], [NAME, VERSION], [\r\n\r\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\r\n ], [NAME, VERSION], [\r\n\r\n /(BIDUBrowser)[\\/\\s]?([\\w\\.]+)/i // Baidu Browser\r\n ], [NAME, VERSION], [\r\n\r\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\r\n ], [NAME, VERSION], [\r\n\r\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\r\n ], [NAME], [\r\n\r\n /(LBBROWSER)/i // LieBao Browser\r\n ], [NAME], [\r\n\r\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\r\n ], [VERSION, [NAME, 'MIUI Browser']], [\r\n\r\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\r\n ], [VERSION, [NAME, 'Facebook']], [\r\n\r\n /safari\\s(line)\\/([\\w\\.]+)/i, // Line App for iOS\r\n /android.+(line)\\/([\\w\\.]+)\\/iab/i // Line App for Android\r\n ], [NAME, VERSION], [\r\n\r\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\r\n ], [VERSION, [NAME, 'Chrome Headless']], [\r\n\r\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\r\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\r\n\r\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\r\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\r\n\r\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\r\n ], [VERSION, [NAME, 'Android Browser']], [\r\n\r\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\r\n // Chrome/OmniWeb/Arora/Tizen/Nokia\r\n ], [NAME, VERSION], [\r\n\r\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\r\n ], [[NAME, 'Dolphin'], VERSION], [\r\n\r\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\r\n ], [[NAME, 'Chrome'], VERSION], [\r\n\r\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\r\n ], [[NAME, 'Opera Coast'], VERSION], [\r\n\r\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\r\n ], [VERSION, [NAME, 'Firefox']], [\r\n\r\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\r\n ], [VERSION, [NAME, 'Mobile Safari']], [\r\n\r\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\r\n ], [VERSION, NAME], [\r\n\r\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\r\n ], [[NAME, 'GSA'], VERSION], [\r\n\r\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\r\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\r\n\r\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\r\n /(webkit|khtml)\\/([\\w\\.]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n // Gecko based\r\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\r\n ], [[NAME, 'Netscape'], VERSION], [\r\n /(swiftfox)/i, // Swiftfox\r\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\r\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\r\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\r\n\r\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\r\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\r\n\r\n // Other\r\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\r\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\r\n /(links)\\s\\(([\\w\\.]+)/i, // Links\r\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\r\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\r\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\r\n ], [NAME, VERSION]\r\n\r\n /* /////////////////////\r\n // Media players BEGIN\r\n ////////////////////////\r\n\r\n , [\r\n\r\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\r\n /(coremedia) v((\\d+)[\\w\\._]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\r\n ], [NAME, VERSION], [\r\n\r\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\r\n ], [NAME, VERSION], [\r\n\r\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\r\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\r\n // NSPlayer/PSP-InternetRadioPlayer/Videos\r\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\r\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\r\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\r\n ], [NAME, VERSION], [\r\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\r\n ], [NAME, VERSION], [\r\n\r\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\r\n ], [[NAME, 'Flip Player'], VERSION], [\r\n\r\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\r\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\r\n ], [NAME], [\r\n\r\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\r\n // Gstreamer\r\n ], [NAME, VERSION], [\r\n\r\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\r\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\r\n // Java/urllib/requests/wget/cURL\r\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\r\n ], [NAME, VERSION], [\r\n\r\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\r\n ], [[NAME, /_/g, ' '], VERSION], [\r\n\r\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\r\n // MPlayer SVN\r\n ], [NAME, VERSION], [\r\n\r\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\r\n ], [NAME, VERSION], [\r\n\r\n /(mplayer)/i, // MPlayer (no other info)\r\n /(yourmuze)/i, // YourMuze\r\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\r\n ], [NAME], [\r\n\r\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\r\n ], [NAME, VERSION], [\r\n\r\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\r\n ], [NAME, VERSION], [\r\n\r\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\r\n ], [NAME, VERSION], [\r\n\r\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\r\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\r\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\r\n // inlight radio\r\n ], [NAME], [\r\n\r\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\r\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\r\n // SoundTap/Totem/Stagefright/Streamium\r\n ], [NAME, VERSION], [\r\n\r\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\r\n ], [NAME, VERSION], [\r\n\r\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\r\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\r\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\r\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\r\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\r\n ], [NAME, VERSION], [\r\n\r\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\r\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\r\n ], [[NAME, /-/g, ' '], VERSION], [\r\n\r\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\r\n // Windows Media Server\r\n ], [VERSION, [NAME, 'Windows']], [\r\n\r\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\r\n ], [NAME, VERSION], [\r\n\r\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\r\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\r\n ], [[NAME, 'rad.io'], VERSION]\r\n\r\n //////////////////////\r\n // Media players END\r\n ////////////////////*/\r\n\r\n ],\r\n\r\n cpu : [[\r\n\r\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\r\n ], [[ARCHITECTURE, 'amd64']], [\r\n\r\n /(ia32(?=;))/i // IA32 (quicktime)\r\n ], [[ARCHITECTURE, util.lowerize]], [\r\n\r\n /((?:i[346]|x)86)[;\\)]/i // IA32\r\n ], [[ARCHITECTURE, 'ia32']], [\r\n\r\n // PocketPC mistakenly identified as PowerPC\r\n /windows\\s(ce|mobile);\\sppc;/i\r\n ], [[ARCHITECTURE, 'arm']], [\r\n\r\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\r\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\r\n\r\n /(sun4\\w)[;\\)]/i // SPARC\r\n ], [[ARCHITECTURE, 'sparc']], [\r\n\r\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+[;l]))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\r\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\r\n ], [[ARCHITECTURE, util.lowerize]]\r\n ],\r\n\r\n device : [[\r\n\r\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\r\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\r\n\r\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\r\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\r\n\r\n /(apple\\s{0,1}tv)/i // Apple TV\r\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\r\n\r\n /(archos)\\s(gamepad2?)/i, // Archos\r\n /(hp).+(touchpad)/i, // HP TouchPad\r\n /(hp).+(tablet)/i, // HP Tablet\r\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\r\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\r\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\r\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\r\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\r\n /android.+aft([bms])\\sbuild/i // Fire TV\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\r\n\r\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\r\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\r\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\r\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\r\n\r\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\r\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\r\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\r\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\r\n /(asus)-?(\\w+)/i // Asus\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\r\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\r\n // Asus Tablets\r\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\r\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\r\n\r\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\r\n /(sony)?(?:sgp.+)\\sbuild\\//i\r\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\r\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\r\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n\r\n /\\s(ouya)\\s/i, // Ouya\r\n /(nintendo)\\s([wids3u]+)/i // Nintendo\r\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\r\n\r\n /android.+;\\s(shield)\\sbuild/i // Nvidia\r\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\r\n\r\n /(playstation\\s[34portablevi]+)/i // Playstation\r\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\r\n\r\n /(sprint\\s(\\w+))/i // Sprint Phones\r\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\r\n\r\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\r\n /(zte)-(\\w*)/i, // ZTE\r\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\r\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\r\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\r\n\r\n /(nexus\\s9)/i // HTC Nexus 9\r\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\r\n\r\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\r\n /(nexus\\s6p)/i // Huawei\r\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\r\n\r\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\r\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\r\n /(kin\\.[onetw]{3})/i // Microsoft Kin\r\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\r\n\r\n // Motorola\r\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\r\n /mot[\\s-]?(\\w*)/i,\r\n /(XT\\d{3,4}) build\\//i,\r\n /(nexus\\s6)/i\r\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\r\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\r\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\r\n\r\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\r\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\r\n\r\n /hbbtv.+maple;(\\d+)/i\r\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\r\n\r\n /\\(dtv[\\);].+(aquos)/i // Sharp\r\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\r\n\r\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\r\n /((SM-T\\w+))/i\r\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\r\n /smart-tv.+(samsung)/i\r\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\r\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\r\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\r\n /sec-((sgh\\w+))/i\r\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /sie-(\\w*)/i // Siemens\r\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\r\n\r\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\r\n /(nokia)[\\s_-]?([\\w-]*)/i\r\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\r\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\r\n\r\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\r\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\r\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\r\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\r\n /(lg) netcast\\.tv/i // LG SmartTV\r\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\r\n /(nexus\\s[45])/i, // LG\r\n /lg[e;\\s\\/-]+(\\w*)/i,\r\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\r\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\r\n\r\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\r\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\r\n\r\n /linux;.+((jolla));/i // Jolla\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\r\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\r\n\r\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /crkey/i // Google Chromecast\r\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\r\n\r\n /android.+;\\s(glass)\\s\\d/i // Google Glass\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\r\n\r\n /android.+;\\s(pixel c)\\s/i // Google Pixel C\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\r\n\r\n /android.+;\\s(pixel [xl2]{1,2}|pixel)\\s/i // Google Pixel\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\r\n\r\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\r\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\r\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, // Xiaomi Mi\r\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\r\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\r\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\r\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\r\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\r\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\r\n\r\n /android.+a000(1)\\s+build/i, // OnePlus\r\n /android.+oneplus\\s(a\\d{4})\\s+build/i\r\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\r\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\r\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\r\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\r\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\r\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\r\n\r\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\r\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\r\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\r\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\r\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\r\n\r\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\r\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\r\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\r\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\r\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\r\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\r\n\r\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\r\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\r\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\r\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\r\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\r\n\r\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\r\n\r\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\r\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\r\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\r\n\r\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\r\n ], [MODEL, [VENDOR, 'Generic']]\r\n\r\n\r\n /*//////////////////////////\r\n // TODO: move to string map\r\n ////////////////////////////\r\n\r\n /(C6603)/i // Sony Xperia Z C6603\r\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n /(C6903)/i // Sony Xperia Z 1\r\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n\r\n /(SM-G900[F|H])/i // Samsung Galaxy S5\r\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G7102)/i // Samsung Galaxy Grand 2\r\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\r\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G313HZ)/i // Samsung Galaxy V\r\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\r\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\r\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\r\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\r\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\r\n\r\n /(T3C)/i // Advan Vandroid T3C\r\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\r\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\r\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\r\n /(ADVAN S4A)/i // Advan Vandroid S4A\r\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\r\n\r\n /(V972M)/i // ZTE V972M\r\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\r\n\r\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\r\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\r\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\r\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\r\n\r\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\r\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\r\n\r\n /////////////\r\n // END TODO\r\n ///////////*/\r\n\r\n ],\r\n\r\n engine : [[\r\n\r\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\r\n ], [VERSION, [NAME, 'EdgeHTML']], [\r\n\r\n /(presto)\\/([\\w\\.]+)/i, // Presto\r\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\r\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\r\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\r\n ], [NAME, VERSION], [\r\n\r\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\r\n ], [VERSION, NAME]\r\n ],\r\n\r\n os : [[\r\n\r\n // Windows based\r\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\r\n ], [NAME, VERSION], [\r\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\r\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\r\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\r\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\r\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\r\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\r\n\r\n // Mobile/Embedded OS\r\n /\\((bb)(10);/i // BlackBerry 10\r\n ], [[NAME, 'BlackBerry'], VERSION], [\r\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\r\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\r\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]*)/i,\r\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\r\n /linux;.+(sailfish);/i // Sailfish OS\r\n ], [NAME, VERSION], [\r\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\r\n ], [[NAME, 'Symbian'], VERSION], [\r\n /\\((series40);/i // Series 40\r\n ], [NAME], [\r\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\r\n ], [[NAME, 'Firefox OS'], VERSION], [\r\n\r\n // Console\r\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\r\n\r\n // GNU/Linux based\r\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\r\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\r\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\r\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\r\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\r\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\r\n /(gnu)\\s?([\\w\\.]*)/i // GNU\r\n ], [NAME, VERSION], [\r\n\r\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\r\n ], [[NAME, 'Chromium OS'], VERSION],[\r\n\r\n // Solaris\r\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\r\n ], [[NAME, 'Solaris'], VERSION], [\r\n\r\n // BSD based\r\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\r\n ], [NAME, VERSION],[\r\n\r\n /(haiku)\\s(\\w+)/i // Haiku\r\n ], [NAME, VERSION],[\r\n\r\n /cfnetwork\\/.+darwin/i,\r\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\r\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\r\n\r\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\r\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\r\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\r\n\r\n // Other\r\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\r\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\r\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,\r\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS\r\n /(unix)\\s?([\\w\\.]*)/i // UNIX\r\n ], [NAME, VERSION]\r\n ]\r\n };\r\n\r\n\r\n /////////////////\r\n // Constructor\r\n ////////////////\r\n /*\r\n var Browser = function (name, version) {\r\n this[NAME] = name;\r\n this[VERSION] = version;\r\n };\r\n var CPU = function (arch) {\r\n this[ARCHITECTURE] = arch;\r\n };\r\n var Device = function (vendor, model, type) {\r\n this[VENDOR] = vendor;\r\n this[MODEL] = model;\r\n this[TYPE] = type;\r\n };\r\n var Engine = Browser;\r\n var OS = Browser;\r\n */\r\n var UAParser = function (uastring, extensions) {\r\n\r\n if (typeof uastring === 'object') {\r\n extensions = uastring;\r\n uastring = undefined;\r\n }\r\n\r\n if (!(this instanceof UAParser)) {\r\n return new UAParser(uastring, extensions).getResult();\r\n }\r\n\r\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\r\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\r\n //var browser = new Browser();\r\n //var cpu = new CPU();\r\n //var device = new Device();\r\n //var engine = new Engine();\r\n //var os = new OS();\r\n\r\n this.getBrowser = function () {\r\n var browser = { name: undefined, version: undefined };\r\n mapper.rgx.call(browser, ua, rgxmap.browser);\r\n browser.major = util.major(browser.version); // deprecated\r\n return browser;\r\n };\r\n this.getCPU = function () {\r\n var cpu = { architecture: undefined };\r\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\r\n return cpu;\r\n };\r\n this.getDevice = function () {\r\n var device = { vendor: undefined, model: undefined, type: undefined };\r\n mapper.rgx.call(device, ua, rgxmap.device);\r\n return device;\r\n };\r\n this.getEngine = function () {\r\n var engine = { name: undefined, version: undefined };\r\n mapper.rgx.call(engine, ua, rgxmap.engine);\r\n return engine;\r\n };\r\n this.getOS = function () {\r\n var os = { name: undefined, version: undefined };\r\n mapper.rgx.call(os, ua, rgxmap.os);\r\n return os;\r\n };\r\n this.getResult = function () {\r\n return {\r\n ua : this.getUA(),\r\n browser : this.getBrowser(),\r\n engine : this.getEngine(),\r\n os : this.getOS(),\r\n device : this.getDevice(),\r\n cpu : this.getCPU()\r\n };\r\n };\r\n this.getUA = function () {\r\n return ua;\r\n };\r\n this.setUA = function (uastring) {\r\n ua = uastring;\r\n //browser = new Browser();\r\n //cpu = new CPU();\r\n //device = new Device();\r\n //engine = new Engine();\r\n //os = new OS();\r\n return this;\r\n };\r\n return this;\r\n };\r\n\r\n UAParser.VERSION = LIBVERSION;\r\n UAParser.BROWSER = {\r\n NAME : NAME,\r\n MAJOR : MAJOR, // deprecated\r\n VERSION : VERSION\r\n };\r\n UAParser.CPU = {\r\n ARCHITECTURE : ARCHITECTURE\r\n };\r\n UAParser.DEVICE = {\r\n MODEL : MODEL,\r\n VENDOR : VENDOR,\r\n TYPE : TYPE,\r\n CONSOLE : CONSOLE,\r\n MOBILE : MOBILE,\r\n SMARTTV : SMARTTV,\r\n TABLET : TABLET,\r\n WEARABLE: WEARABLE,\r\n EMBEDDED: EMBEDDED\r\n };\r\n UAParser.ENGINE = {\r\n NAME : NAME,\r\n VERSION : VERSION\r\n };\r\n UAParser.OS = {\r\n NAME : NAME,\r\n VERSION : VERSION\r\n };\r\n //UAParser.Utils = util;\r\n\r\n ///////////\r\n // Export\r\n //////////\r\n\r\n\r\n // check js environment\r\n if (typeof(exports) !== UNDEF_TYPE) {\r\n // nodejs env\r\n if (typeof module !== UNDEF_TYPE && module.exports) {\r\n exports = module.exports = UAParser;\r\n }\r\n // TODO: test!!!!!!!!\r\n /*\r\n if (require && require.main === module && process) {\r\n // cli\r\n var jsonize = function (arr) {\r\n var res = [];\r\n for (var i in arr) {\r\n res.push(new UAParser(arr[i]).getResult());\r\n }\r\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\r\n };\r\n if (process.stdin.isTTY) {\r\n // via args\r\n jsonize(process.argv.slice(2));\r\n } else {\r\n // via pipe\r\n var str = '';\r\n process.stdin.on('readable', function() {\r\n var read = process.stdin.read();\r\n if (read !== null) {\r\n str += read;\r\n }\r\n });\r\n process.stdin.on('end', function () {\r\n jsonize(str.replace(/\\n$/, '').split('\\n'));\r\n });\r\n }\r\n }\r\n */\r\n exports.UAParser = UAParser;\r\n } else {\r\n // requirejs env (optional)\r\n if (typeof(define) === FUNC_TYPE && define.amd) {\r\n define(function () {\r\n return UAParser;\r\n });\r\n } else if (window) {\r\n // browser env\r\n window.UAParser = UAParser;\r\n }\r\n }\r\n\r\n // jQuery/Zepto specific (optional)\r\n // Note:\r\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\r\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\r\n // and we should catch that.\r\n var $ = window && (window.jQuery || window.Zepto);\r\n if (typeof $ !== UNDEF_TYPE) {\r\n var parser = new UAParser();\r\n $.ua = parser.getResult();\r\n $.ua.get = function () {\r\n return parser.getUA();\r\n };\r\n $.ua.set = function (uastring) {\r\n parser.setUA(uastring);\r\n var result = parser.getResult();\r\n for (var prop in result) {\r\n $.ua[prop] = result[prop];\r\n }\r\n };\r\n }\r\n\r\n})(typeof window === 'object' ? window : this);"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/cbfjs.umd.min.js b/dist/cbfjs.umd.min.js index f54b3ff..2830a54 100644 --- a/dist/cbfjs.umd.min.js +++ b/dist/cbfjs.umd.min.js @@ -1,4 +1,4 @@ -!function(e,i){"object"==typeof exports&&"object"==typeof module?module.exports=i():"function"==typeof define&&define.amd?define([],i):"object"==typeof exports?exports.CBFjs=i():e.CBFjs=i()}(window,function(){return function(e){var i={};function o(t){if(i[t])return i[t].exports;var r=i[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=e,o.c=i,o.d=function(e,i,t){o.o(e,i)||Object.defineProperty(e,i,{enumerable:!0,get:t})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,i){if(1&i&&(e=o(e)),8&i)return e;if(4&i&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(o.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&i&&"string"!=typeof e)for(var r in e)o.d(t,r,function(i){return e[i]}.bind(null,r));return t},o.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(i,"a",i),i},o.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},o.p="",o(o.s=6)}([function(e,i,o){"use strict";e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,i){(function(i){e.exports=i}).call(this,{})},function(e,i){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,i,o){"use strict";(function(e){var t,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e}; +!function(e,i){"object"==typeof exports&&"object"==typeof module?module.exports=i():"function"==typeof define&&define.amd?define([],i):"object"==typeof exports?exports.CBFjs=i():e.CBFjs=i()}(window,function(){return function(e){var i={};function o(t){if(i[t])return i[t].exports;var r=i[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=e,o.c=i,o.d=function(e,i,t){o.o(e,i)||Object.defineProperty(e,i,{enumerable:!0,get:t})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,i){if(1&i&&(e=o(e)),8&i)return e;if(4&i&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(o.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&i&&"string"!=typeof e)for(var r in e)o.d(t,r,function(i){return e[i]}.bind(null,r));return t},o.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(i,"a",i),i},o.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},o.p="",o(o.s=1)}([function(e,i){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,i,o){(function(e){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(r){"use strict";var n=o(2),s=o(3),a=o(4),c=function(){};c.prototype={getScreenResolution:function(){var e=window.screen.width,i=window.screen.height;return Math.round(e/i*100)/100},getCPUCores:function(){return navigator.hardwareConcurrency},getTouchSupport:function(){return"ontouchstart"in window||navigator.MaxTouchPoints>0||navigator.msMaxTouchPoints>0},getColorDepth:function(){return screen.colorDepth},getTimezoneOffset:function(){return(new Date).getTimezoneOffset()},getFonts:function(e){document.addEventListener("DOMContentLoaded",function(i){var o=(new s).testAllFonts();e(o)})},getOS:function(){return(new a).getOS().name},getOSVersion:function(){return(new a).getOS().version},isMobile:function(){var e=(new a).getResult().ua||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))},getCPUarchitecture:function(){return(new a).getCPU().architecture},generateAsyncHash:function(e,i){this.getFonts(function(o){e.push(o),i(e)})},get:function(e){var i=[];i.push(this.getScreenResolution()),i.push(this.getTouchSupport()),i.push(this.getColorDepth()),i.push(this.getTimezoneOffset()),i.push(this.getOS()),i.push(this.getOSVersion()),i.push(this.isMobile()),i.push(this.getCPUarchitecture()),i.push(this.getCPUCores()),this.generateAsyncHash(i,function(i){var o=n.x86.hash32(i.join("~~~"));return e(o,i)})}},"object"===t(e)&&void 0!==i?e.exports=c:r.CBFjs=c}(this)}).call(this,o(0)(e))},function(e,i,o){!function(o,t){"use strict";var r={version:"2.1.2",x86:{},x64:{}};function n(e,i){return(65535&e)*i+(((e>>>16)*i&65535)<<16)}function s(e,i){return e<>>32-i}function a(e){return e=n(e^=e>>>16,2246822507),e=n(e^=e>>>13,3266489909),e^=e>>>16}function c(e,i){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],i=[i[0]>>>16,65535&i[0],i[1]>>>16,65535&i[1]];var o=[0,0,0,0];return o[3]+=e[3]+i[3],o[2]+=o[3]>>>16,o[3]&=65535,o[2]+=e[2]+i[2],o[1]+=o[2]>>>16,o[2]&=65535,o[1]+=e[1]+i[1],o[0]+=o[1]>>>16,o[1]&=65535,o[0]+=e[0]+i[0],o[0]&=65535,[o[0]<<16|o[1],o[2]<<16|o[3]]}function d(e,i){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],i=[i[0]>>>16,65535&i[0],i[1]>>>16,65535&i[1]];var o=[0,0,0,0];return o[3]+=e[3]*i[3],o[2]+=o[3]>>>16,o[3]&=65535,o[2]+=e[2]*i[3],o[1]+=o[2]>>>16,o[2]&=65535,o[2]+=e[3]*i[2],o[1]+=o[2]>>>16,o[2]&=65535,o[1]+=e[1]*i[3],o[0]+=o[1]>>>16,o[1]&=65535,o[1]+=e[2]*i[2],o[0]+=o[1]>>>16,o[1]&=65535,o[1]+=e[3]*i[1],o[0]+=o[1]>>>16,o[1]&=65535,o[0]+=e[0]*i[3]+e[1]*i[2]+e[2]*i[1]+e[3]*i[0],o[0]&=65535,[o[0]<<16|o[1],o[2]<<16|o[3]]}function l(e,i){return 32===(i%=64)?[e[1],e[0]]:i<32?[e[0]<>>32-i,e[1]<>>32-i]:(i-=32,[e[1]<>>32-i,e[0]<>>32-i])}function u(e,i){return 0===(i%=64)?e:i<32?[e[0]<>>32-i,e[1]<>>1]),[4283543511,3981806797]),[0,e[0]>>>1]),[3301882366,444984403]),[0,e[0]>>>1])}r.x86.hash32=function(e,i){e=e||"",i=i||0;for(var o=e.length%4,t=e.length-o,r=i,c=0,d=3432918353,l=461845907,u=0;u>>0},r.x86.hash128=function(e,i){e=e||"",i=i||0;for(var o=e.length%16,t=e.length-o,r=i,c=i,d=i,l=i,u=0,w=0,h=0,m=0,p=597399067,f=2869860233,b=951274213,g=2716044179,v=0;v>>0).toString(16)).slice(-8)+("00000000"+(c>>>0).toString(16)).slice(-8)+("00000000"+(d>>>0).toString(16)).slice(-8)+("00000000"+(l>>>0).toString(16)).slice(-8)},r.x64.hash128=function(e,i){e=e||"",i=i||0;for(var o=e.length%16,t=e.length-o,r=[0,i],n=[0,i],s=[0,0],a=[0,0],m=[2277735313,289559509],p=[1291169091,658871167],f=0;f>>0).toString(16)).slice(-8)+("00000000"+(r[1]>>>0).toString(16)).slice(-8)+("00000000"+(n[0]>>>0).toString(16)).slice(-8)+("00000000"+(n[1]>>>0).toString(16)).slice(-8)},void 0!==e&&e.exports&&(i=e.exports=r),i.murmurHash3=r}()},function(e,i,o){(function(e){function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(t){"use strict";var r=function(){var e=["monospace","sans-serif","serif"],i=["Andale Mono","Arial","Arial Black","Arial Hebrew","Arial MT","Arial Narrow","Arial Unicode MS","Bitstream Vera Sans Mono","Book Antiqua","Bookman Old Style","Calibri","Cambria","Cambria Math","Century","Century Gothic","Century Schoolbook","Comic Sans","Comic Sans MS","Consolas","Courier","Courier New","Garamond","Geneva","Georgia","Helvetica","Helvetica Neue","Impact","Lucida Bright","Lucida Calligraphy","Lucida Console","Lucida Fax","LUCIDA GRANDE","Lucida Handwriting","Lucida Sans","Lucida Sans Typewriter","Lucida Sans Unicode","Microsoft Sans Serif","Monaco","Monotype Corsiva","MS Gothic","MS Outlook","MS PGothic","MS Reference Sans Serif","MS Sans Serif","MS Serif","MYRIAD","MYRIAD PRO","Palatino","Palatino Linotype","Segoe Print","Segoe Script","Segoe UI","Segoe UI Light","Segoe UI Semibold","Segoe UI Symbol","Tahoma","Times","Times New Roman","Times New Roman PS","Trebuchet MS","Verdana","Wingdings","Wingdings 2","Wingdings 3"],o=document.getElementsByTagName("body")[0],t=document.createElement("span");t.style.fontSize="72px",t.innerHTML="mmmmmmmmmmlli";var r={},n={};for(var s in e)t.style.fontFamily=e[s],o.appendChild(t),r[e[s]]=t.offsetWidth,n[e[s]]=t.offsetHeight,o.removeChild(t);this.testAllFonts=function(){var e=[];for(var o in i)this.detect(i[o])&&e.push(i[o]);return e},this.detect=function(i){var s=!1;for(var a in e){t.style.fontFamily=i+","+e[a],o.appendChild(t);var c=t.offsetWidth!=r[e[a]]||t.offsetHeight!=n[e[a]];o.removeChild(t),s=s||c}return s}};"object"===o(e)&&void 0!==i?e.exports=r:t.Detector=r}(window)}).call(this,o(0)(e))},function(e,i,o){(function(e){var t;function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)} /*! * UAParser.js v0.7.18 * Lightweight JavaScript-based User-Agent string parser @@ -7,5 +7,13 @@ * Copyright © 2012-2016 Faisal Salman * Dual licensed under GPLv2 or MIT */ -!function(n,s){var a="model",d="name",c="type",l="vendor",u="version",w="mobile",h="tablet",m={extend:function(e,i){var o={};for(var t in e)i[t]&&i[t].length%2==0?o[t]=i[t].concat(e[t]):o[t]=e[t];return o},has:function(e,i){return"string"==typeof e&&-1!==i.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()},major:function(e){return"string"===(void 0===e?"undefined":r(e))?e.replace(/[^\d\.]/g,"").split(".")[0]:void 0},trim:function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},p={rgx:function(e,i){for(var o,t,n,s,a,d,c=0;c0?2==s.length?"function"==r(s[1])?this[s[0]]=s[1].call(this,d):this[s[0]]=s[1]:3==s.length?"function"!==r(s[1])||s[1].exec&&s[1].test?this[s[0]]=d?d.replace(s[1],s[2]):void 0:this[s[0]]=d?s[1].call(this,d,s[2]):void 0:4==s.length&&(this[s[0]]=d?s[3].call(this,d.replace(s[1],s[2])):void 0):this[s]=d||void 0;c+=2}},str:function(e,i){for(var o in i)if("object"===r(i[o])&&i[o].length>0){for(var t=0;t>>16)*i&65535)<<16)}function s(e,i){return e<>>32-i}function a(e){return e=n(e^=e>>>16,2246822507),e=n(e^=e>>>13,3266489909),e^=e>>>16}function d(e,i){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],i=[i[0]>>>16,65535&i[0],i[1]>>>16,65535&i[1]];var o=[0,0,0,0];return o[3]+=e[3]+i[3],o[2]+=o[3]>>>16,o[3]&=65535,o[2]+=e[2]+i[2],o[1]+=o[2]>>>16,o[2]&=65535,o[1]+=e[1]+i[1],o[0]+=o[1]>>>16,o[1]&=65535,o[0]+=e[0]+i[0],o[0]&=65535,[o[0]<<16|o[1],o[2]<<16|o[3]]}function c(e,i){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],i=[i[0]>>>16,65535&i[0],i[1]>>>16,65535&i[1]];var o=[0,0,0,0];return o[3]+=e[3]*i[3],o[2]+=o[3]>>>16,o[3]&=65535,o[2]+=e[2]*i[3],o[1]+=o[2]>>>16,o[2]&=65535,o[2]+=e[3]*i[2],o[1]+=o[2]>>>16,o[2]&=65535,o[1]+=e[1]*i[3],o[0]+=o[1]>>>16,o[1]&=65535,o[1]+=e[2]*i[2],o[0]+=o[1]>>>16,o[1]&=65535,o[1]+=e[3]*i[1],o[0]+=o[1]>>>16,o[1]&=65535,o[0]+=e[0]*i[3]+e[1]*i[2]+e[2]*i[1]+e[3]*i[0],o[0]&=65535,[o[0]<<16|o[1],o[2]<<16|o[3]]}function l(e,i){return 32===(i%=64)?[e[1],e[0]]:i<32?[e[0]<>>32-i,e[1]<>>32-i]:(i-=32,[e[1]<>>32-i,e[0]<>>32-i])}function u(e,i){return 0===(i%=64)?e:i<32?[e[0]<>>32-i,e[1]<>>1]),[4283543511,3981806797]),[0,e[0]>>>1]),[3301882366,444984403]),[0,e[0]>>>1])}r.x86.hash32=function(e,i){e=e||"",i=i||0;for(var o=e.length%4,t=e.length-o,r=i,d=0,c=3432918353,l=461845907,u=0;u>>0},r.x86.hash128=function(e,i){e=e||"",i=i||0;for(var o=e.length%16,t=e.length-o,r=i,d=i,c=i,l=i,u=0,w=0,h=0,m=0,p=597399067,f=2869860233,b=951274213,g=2716044179,v=0;v>>0).toString(16)).slice(-8)+("00000000"+(d>>>0).toString(16)).slice(-8)+("00000000"+(c>>>0).toString(16)).slice(-8)+("00000000"+(l>>>0).toString(16)).slice(-8)},r.x64.hash128=function(e,i){e=e||"",i=i||0;for(var o=e.length%16,t=e.length-o,r=[0,i],n=[0,i],s=[0,0],a=[0,0],m=[2277735313,289559509],p=[1291169091,658871167],f=0;f>>0).toString(16)).slice(-8)+("00000000"+(r[1]>>>0).toString(16)).slice(-8)+("00000000"+(n[0]>>>0).toString(16)).slice(-8)+("00000000"+(n[1]>>>0).toString(16)).slice(-8)},void 0!==e&&e.exports&&(i=e.exports=r),i.murmurHash3=r}()},function(e,i,o){"use strict";(function(e){var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(r){var n=o(5),s=o(4),a=o(3),d=function(){};d.prototype={getScreenResolution:function(){var e=window.screen.width,i=window.screen.height;return Math.round(e/i*100)/100},getCPUCores:function(){return navigator.hardwareConcurrency},getTouchSupport:function(){return"ontouchstart"in window||navigator.MaxTouchPoints>0||navigator.msMaxTouchPoints>0},getColorDepth:function(){return screen.colorDepth},getTimezoneOffset:function(){return(new Date).getTimezoneOffset()},getFonts:function(e){document.addEventListener("DOMContentLoaded",function(i){var o=(new s).testAllFonts();e(o)})},getOS:function(){return(new a).getOS().name},getOSVersion:function(){return(new a).getOS().version},isMobile:function(){var e=(new a).getResult().ua||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))},getCPUarchitecture:function(){return(new a).getCPU().architecture},generateAsyncHash:function(e,i){this.getFonts(function(o){e.push(o),i(e)})},get:function(e){var i=[];i.push(this.getScreenResolution()),i.push(this.getTouchSupport()),i.push(this.getColorDepth()),i.push(this.getTimezoneOffset()),i.push(this.getOS()),i.push(this.getOSVersion()),i.push(this.isMobile()),i.push(this.getCPUarchitecture()),i.push(this.getCPUCores()),this.generateAsyncHash(i,function(i){var o=n.x86.hash32(i.join("~~~"));return e(o,i)})}},"object"===t(e)&&void 0!==i?e.exports=d:r.CBFjs=d}(void 0)}).call(this,o(0)(e))}])}); +/*! + * UAParser.js v0.7.18 + * Lightweight JavaScript-based User-Agent string parser + * https://github.com/faisalman/ua-parser-js + * + * Copyright © 2012-2016 Faisal Salman + * Dual licensed under GPLv2 or MIT + */ +!function(n,s){"use strict";var a="model",c="name",d="type",l="vendor",u="version",w="mobile",h="tablet",m={extend:function(e,i){var o={};for(var t in e)i[t]&&i[t].length%2==0?o[t]=i[t].concat(e[t]):o[t]=e[t];return o},has:function(e,i){return"string"==typeof e&&-1!==i.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()},major:function(e){return"string"===r(e)?e.replace(/[^\d\.]/g,"").split(".")[0]:void 0},trim:function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},p={rgx:function(e,i){for(var o,t,n,s,a,c,d=0;d0?2==s.length?"function"==r(s[1])?this[s[0]]=s[1].call(this,c):this[s[0]]=s[1]:3==s.length?"function"!==r(s[1])||s[1].exec&&s[1].test?this[s[0]]=c?c.replace(s[1],s[2]):void 0:this[s[0]]=c?s[1].call(this,c,s[2]):void 0:4==s.length&&(this[s[0]]=c?s[3].call(this,c.replace(s[1],s[2])):void 0):this[s]=c||void 0;d+=2}},str:function(e,i){for(var o in i)if("object"===r(i[o])&&i[o].length>0){for(var t=0;t\r\n * Dual licensed under GPLv2 or MIT\r\n */\r\n\r\n(function (window, undefined) {\r\n\r\n 'use strict';\r\n\r\n //////////////\r\n // Constants\r\n /////////////\r\n\r\n\r\n var LIBVERSION = '0.7.18',\r\n EMPTY = '',\r\n UNKNOWN = '?',\r\n FUNC_TYPE = 'function',\r\n UNDEF_TYPE = 'undefined',\r\n OBJ_TYPE = 'object',\r\n STR_TYPE = 'string',\r\n MAJOR = 'major', // deprecated\r\n MODEL = 'model',\r\n NAME = 'name',\r\n TYPE = 'type',\r\n VENDOR = 'vendor',\r\n VERSION = 'version',\r\n ARCHITECTURE= 'architecture',\r\n CONSOLE = 'console',\r\n MOBILE = 'mobile',\r\n TABLET = 'tablet',\r\n SMARTTV = 'smarttv',\r\n WEARABLE = 'wearable',\r\n EMBEDDED = 'embedded';\r\n\r\n\r\n ///////////\r\n // Helper\r\n //////////\r\n\r\n\r\n var util = {\r\n extend : function (regexes, extensions) {\r\n var margedRegexes = {};\r\n for (var i in regexes) {\r\n if (extensions[i] && extensions[i].length % 2 === 0) {\r\n margedRegexes[i] = extensions[i].concat(regexes[i]);\r\n } else {\r\n margedRegexes[i] = regexes[i];\r\n }\r\n }\r\n return margedRegexes;\r\n },\r\n has : function (str1, str2) {\r\n if (typeof str1 === \"string\") {\r\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\r\n } else {\r\n return false;\r\n }\r\n },\r\n lowerize : function (str) {\r\n return str.toLowerCase();\r\n },\r\n major : function (version) {\r\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\r\n },\r\n trim : function (str) {\r\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n }\r\n };\r\n\r\n\r\n ///////////////\r\n // Map helper\r\n //////////////\r\n\r\n\r\n var mapper = {\r\n\r\n rgx : function (ua, arrays) {\r\n\r\n //var result = {},\r\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\r\n\r\n /*// construct object barebones\r\n for (p = 0; p < args[1].length; p++) {\r\n q = args[1][p];\r\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\r\n }*/\r\n\r\n // loop through all regexes maps\r\n while (i < arrays.length && !matches) {\r\n\r\n var regex = arrays[i], // even sequence (0,2,4,..)\r\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\r\n j = k = 0;\r\n\r\n // try matching uastring with regexes\r\n while (j < regex.length && !matches) {\r\n\r\n matches = regex[j++].exec(ua);\r\n\r\n if (!!matches) {\r\n for (p = 0; p < props.length; p++) {\r\n match = matches[++k];\r\n q = props[p];\r\n // check if given property is actually array\r\n if (typeof q === OBJ_TYPE && q.length > 0) {\r\n if (q.length == 2) {\r\n if (typeof q[1] == FUNC_TYPE) {\r\n // assign modified match\r\n this[q[0]] = q[1].call(this, match);\r\n } else {\r\n // assign given value, ignore regex match\r\n this[q[0]] = q[1];\r\n }\r\n } else if (q.length == 3) {\r\n // check whether function or regex\r\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\r\n // call function (usually string mapper)\r\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\r\n } else {\r\n // sanitize match using given regex\r\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\r\n }\r\n } else if (q.length == 4) {\r\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\r\n }\r\n } else {\r\n this[q] = match ? match : undefined;\r\n }\r\n }\r\n }\r\n }\r\n i += 2;\r\n }\r\n // console.log(this);\r\n //return this;\r\n },\r\n\r\n str : function (str, map) {\r\n\r\n for (var i in map) {\r\n // check if array\r\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\r\n for (var j = 0; j < map[i].length; j++) {\r\n if (util.has(map[i][j], str)) {\r\n return (i === UNKNOWN) ? undefined : i;\r\n }\r\n }\r\n } else if (util.has(map[i], str)) {\r\n return (i === UNKNOWN) ? undefined : i;\r\n }\r\n }\r\n return str;\r\n }\r\n };\r\n\r\n\r\n ///////////////\r\n // String map\r\n //////////////\r\n\r\n\r\n var maps = {\r\n\r\n browser : {\r\n oldsafari : {\r\n version : {\r\n '1.0' : '/8',\r\n '1.2' : '/1',\r\n '1.3' : '/3',\r\n '2.0' : '/412',\r\n '2.0.2' : '/416',\r\n '2.0.3' : '/417',\r\n '2.0.4' : '/419',\r\n '?' : '/'\r\n }\r\n }\r\n },\r\n\r\n device : {\r\n amazon : {\r\n model : {\r\n 'Fire Phone' : ['SD', 'KF']\r\n }\r\n },\r\n sprint : {\r\n model : {\r\n 'Evo Shift 4G' : '7373KT'\r\n },\r\n vendor : {\r\n 'HTC' : 'APA',\r\n 'Sprint' : 'Sprint'\r\n }\r\n }\r\n },\r\n\r\n os : {\r\n windows : {\r\n version : {\r\n 'ME' : '4.90',\r\n 'NT 3.11' : 'NT3.51',\r\n 'NT 4.0' : 'NT4.0',\r\n '2000' : 'NT 5.0',\r\n 'XP' : ['NT 5.1', 'NT 5.2'],\r\n 'Vista' : 'NT 6.0',\r\n '7' : 'NT 6.1',\r\n '8' : 'NT 6.2',\r\n '8.1' : 'NT 6.3',\r\n '10' : ['NT 6.4', 'NT 10.0'],\r\n 'RT' : 'ARM'\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n //////////////\r\n // Regex map\r\n /////////////\r\n\r\n\r\n var regexes = {\r\n\r\n browser : [[\r\n\r\n // Presto based\r\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\r\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\r\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\r\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\r\n ], [NAME, VERSION], [\r\n\r\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\r\n ], [[NAME, 'Opera Mini'], VERSION], [\r\n\r\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\r\n ], [[NAME, 'Opera'], VERSION], [\r\n\r\n // Mixed\r\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\r\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\r\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\r\n\r\n // Trident based\r\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\r\n // Avant/IEMobile/SlimBrowser/Baidu\r\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\r\n\r\n // Webkit/KHTML based\r\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\r\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\\/([\\w\\.-]+)/i\r\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\r\n ], [NAME, VERSION], [\r\n\r\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\r\n ], [[NAME, 'IE'], VERSION], [\r\n\r\n /(edge|edgios|edgea)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\r\n ], [[NAME, 'Edge'], VERSION], [\r\n\r\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\r\n ], [[NAME, 'Yandex'], VERSION], [\r\n\r\n /(puffin)\\/([\\w\\.]+)/i // Puffin\r\n ], [[NAME, 'Puffin'], VERSION], [\r\n\r\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i\r\n // UCBrowser\r\n ], [[NAME, 'UCBrowser'], VERSION], [\r\n\r\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\r\n ], [[NAME, /_/g, ' '], VERSION], [\r\n\r\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\r\n ], [[NAME, 'WeChat'], VERSION], [\r\n\r\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\r\n ], [NAME, VERSION], [\r\n\r\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\r\n ], [NAME, VERSION], [\r\n\r\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\r\n ], [NAME, VERSION], [\r\n\r\n /(BIDUBrowser)[\\/\\s]?([\\w\\.]+)/i // Baidu Browser\r\n ], [NAME, VERSION], [\r\n\r\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\r\n ], [NAME, VERSION], [\r\n\r\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\r\n ], [NAME], [\r\n\r\n /(LBBROWSER)/i // LieBao Browser\r\n ], [NAME], [\r\n\r\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\r\n ], [VERSION, [NAME, 'MIUI Browser']], [\r\n\r\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\r\n ], [VERSION, [NAME, 'Facebook']], [\r\n\r\n /safari\\s(line)\\/([\\w\\.]+)/i, // Line App for iOS\r\n /android.+(line)\\/([\\w\\.]+)\\/iab/i // Line App for Android\r\n ], [NAME, VERSION], [\r\n\r\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\r\n ], [VERSION, [NAME, 'Chrome Headless']], [\r\n\r\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\r\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\r\n\r\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\r\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\r\n\r\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\r\n ], [VERSION, [NAME, 'Android Browser']], [\r\n\r\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\r\n // Chrome/OmniWeb/Arora/Tizen/Nokia\r\n ], [NAME, VERSION], [\r\n\r\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\r\n ], [[NAME, 'Dolphin'], VERSION], [\r\n\r\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\r\n ], [[NAME, 'Chrome'], VERSION], [\r\n\r\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\r\n ], [[NAME, 'Opera Coast'], VERSION], [\r\n\r\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\r\n ], [VERSION, [NAME, 'Firefox']], [\r\n\r\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\r\n ], [VERSION, [NAME, 'Mobile Safari']], [\r\n\r\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\r\n ], [VERSION, NAME], [\r\n\r\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\r\n ], [[NAME, 'GSA'], VERSION], [\r\n\r\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\r\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\r\n\r\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\r\n /(webkit|khtml)\\/([\\w\\.]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n // Gecko based\r\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\r\n ], [[NAME, 'Netscape'], VERSION], [\r\n /(swiftfox)/i, // Swiftfox\r\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\r\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\r\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\r\n\r\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\r\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\r\n\r\n // Other\r\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\r\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\r\n /(links)\\s\\(([\\w\\.]+)/i, // Links\r\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\r\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\r\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\r\n ], [NAME, VERSION]\r\n\r\n /* /////////////////////\r\n // Media players BEGIN\r\n ////////////////////////\r\n\r\n , [\r\n\r\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\r\n /(coremedia) v((\\d+)[\\w\\._]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\r\n ], [NAME, VERSION], [\r\n\r\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\r\n ], [NAME, VERSION], [\r\n\r\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\r\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\r\n // NSPlayer/PSP-InternetRadioPlayer/Videos\r\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\r\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\r\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\r\n ], [NAME, VERSION], [\r\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\r\n ], [NAME, VERSION], [\r\n\r\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\r\n ], [[NAME, 'Flip Player'], VERSION], [\r\n\r\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\r\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\r\n ], [NAME], [\r\n\r\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\r\n // Gstreamer\r\n ], [NAME, VERSION], [\r\n\r\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\r\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\r\n // Java/urllib/requests/wget/cURL\r\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\r\n ], [NAME, VERSION], [\r\n\r\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\r\n ], [[NAME, /_/g, ' '], VERSION], [\r\n\r\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\r\n // MPlayer SVN\r\n ], [NAME, VERSION], [\r\n\r\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\r\n ], [NAME, VERSION], [\r\n\r\n /(mplayer)/i, // MPlayer (no other info)\r\n /(yourmuze)/i, // YourMuze\r\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\r\n ], [NAME], [\r\n\r\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\r\n ], [NAME, VERSION], [\r\n\r\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\r\n ], [NAME, VERSION], [\r\n\r\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\r\n ], [NAME, VERSION], [\r\n\r\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\r\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\r\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\r\n // inlight radio\r\n ], [NAME], [\r\n\r\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\r\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\r\n // SoundTap/Totem/Stagefright/Streamium\r\n ], [NAME, VERSION], [\r\n\r\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\r\n ], [NAME, VERSION], [\r\n\r\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\r\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\r\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\r\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\r\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\r\n ], [NAME, VERSION], [\r\n\r\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\r\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\r\n ], [[NAME, /-/g, ' '], VERSION], [\r\n\r\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\r\n // Windows Media Server\r\n ], [VERSION, [NAME, 'Windows']], [\r\n\r\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\r\n ], [NAME, VERSION], [\r\n\r\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\r\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\r\n ], [[NAME, 'rad.io'], VERSION]\r\n\r\n //////////////////////\r\n // Media players END\r\n ////////////////////*/\r\n\r\n ],\r\n\r\n cpu : [[\r\n\r\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\r\n ], [[ARCHITECTURE, 'amd64']], [\r\n\r\n /(ia32(?=;))/i // IA32 (quicktime)\r\n ], [[ARCHITECTURE, util.lowerize]], [\r\n\r\n /((?:i[346]|x)86)[;\\)]/i // IA32\r\n ], [[ARCHITECTURE, 'ia32']], [\r\n\r\n // PocketPC mistakenly identified as PowerPC\r\n /windows\\s(ce|mobile);\\sppc;/i\r\n ], [[ARCHITECTURE, 'arm']], [\r\n\r\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\r\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\r\n\r\n /(sun4\\w)[;\\)]/i // SPARC\r\n ], [[ARCHITECTURE, 'sparc']], [\r\n\r\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+[;l]))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\r\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\r\n ], [[ARCHITECTURE, util.lowerize]]\r\n ],\r\n\r\n device : [[\r\n\r\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\r\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\r\n\r\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\r\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\r\n\r\n /(apple\\s{0,1}tv)/i // Apple TV\r\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\r\n\r\n /(archos)\\s(gamepad2?)/i, // Archos\r\n /(hp).+(touchpad)/i, // HP TouchPad\r\n /(hp).+(tablet)/i, // HP Tablet\r\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\r\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\r\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\r\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\r\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\r\n /android.+aft([bms])\\sbuild/i // Fire TV\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\r\n\r\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\r\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\r\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\r\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\r\n\r\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\r\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\r\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\r\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\r\n /(asus)-?(\\w+)/i // Asus\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\r\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\r\n // Asus Tablets\r\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\r\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\r\n\r\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\r\n /(sony)?(?:sgp.+)\\sbuild\\//i\r\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\r\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\r\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n\r\n /\\s(ouya)\\s/i, // Ouya\r\n /(nintendo)\\s([wids3u]+)/i // Nintendo\r\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\r\n\r\n /android.+;\\s(shield)\\sbuild/i // Nvidia\r\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\r\n\r\n /(playstation\\s[34portablevi]+)/i // Playstation\r\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\r\n\r\n /(sprint\\s(\\w+))/i // Sprint Phones\r\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\r\n\r\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\r\n /(zte)-(\\w*)/i, // ZTE\r\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\r\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\r\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\r\n\r\n /(nexus\\s9)/i // HTC Nexus 9\r\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\r\n\r\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\r\n /(nexus\\s6p)/i // Huawei\r\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\r\n\r\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\r\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\r\n /(kin\\.[onetw]{3})/i // Microsoft Kin\r\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\r\n\r\n // Motorola\r\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\r\n /mot[\\s-]?(\\w*)/i,\r\n /(XT\\d{3,4}) build\\//i,\r\n /(nexus\\s6)/i\r\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\r\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\r\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\r\n\r\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\r\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\r\n\r\n /hbbtv.+maple;(\\d+)/i\r\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\r\n\r\n /\\(dtv[\\);].+(aquos)/i // Sharp\r\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\r\n\r\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\r\n /((SM-T\\w+))/i\r\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\r\n /smart-tv.+(samsung)/i\r\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\r\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\r\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\r\n /sec-((sgh\\w+))/i\r\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /sie-(\\w*)/i // Siemens\r\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\r\n\r\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\r\n /(nokia)[\\s_-]?([\\w-]*)/i\r\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\r\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\r\n\r\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\r\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\r\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\r\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\r\n /(lg) netcast\\.tv/i // LG SmartTV\r\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\r\n /(nexus\\s[45])/i, // LG\r\n /lg[e;\\s\\/-]+(\\w*)/i,\r\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\r\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\r\n\r\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\r\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\r\n\r\n /linux;.+((jolla));/i // Jolla\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\r\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\r\n\r\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /crkey/i // Google Chromecast\r\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\r\n\r\n /android.+;\\s(glass)\\s\\d/i // Google Glass\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\r\n\r\n /android.+;\\s(pixel c)\\s/i // Google Pixel C\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\r\n\r\n /android.+;\\s(pixel [xl2]{1,2}|pixel)\\s/i // Google Pixel\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\r\n\r\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\r\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\r\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, // Xiaomi Mi\r\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\r\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\r\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\r\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\r\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\r\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\r\n\r\n /android.+a000(1)\\s+build/i, // OnePlus\r\n /android.+oneplus\\s(a\\d{4})\\s+build/i\r\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\r\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\r\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\r\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\r\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\r\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\r\n\r\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\r\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\r\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\r\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\r\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\r\n\r\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\r\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\r\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\r\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\r\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\r\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\r\n\r\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\r\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\r\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\r\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\r\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\r\n\r\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\r\n\r\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\r\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\r\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\r\n\r\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\r\n ], [MODEL, [VENDOR, 'Generic']]\r\n\r\n\r\n /*//////////////////////////\r\n // TODO: move to string map\r\n ////////////////////////////\r\n\r\n /(C6603)/i // Sony Xperia Z C6603\r\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n /(C6903)/i // Sony Xperia Z 1\r\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n\r\n /(SM-G900[F|H])/i // Samsung Galaxy S5\r\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G7102)/i // Samsung Galaxy Grand 2\r\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\r\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G313HZ)/i // Samsung Galaxy V\r\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\r\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\r\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\r\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\r\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\r\n\r\n /(T3C)/i // Advan Vandroid T3C\r\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\r\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\r\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\r\n /(ADVAN S4A)/i // Advan Vandroid S4A\r\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\r\n\r\n /(V972M)/i // ZTE V972M\r\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\r\n\r\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\r\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\r\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\r\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\r\n\r\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\r\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\r\n\r\n /////////////\r\n // END TODO\r\n ///////////*/\r\n\r\n ],\r\n\r\n engine : [[\r\n\r\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\r\n ], [VERSION, [NAME, 'EdgeHTML']], [\r\n\r\n /(presto)\\/([\\w\\.]+)/i, // Presto\r\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\r\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\r\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\r\n ], [NAME, VERSION], [\r\n\r\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\r\n ], [VERSION, NAME]\r\n ],\r\n\r\n os : [[\r\n\r\n // Windows based\r\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\r\n ], [NAME, VERSION], [\r\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\r\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\r\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\r\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\r\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\r\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\r\n\r\n // Mobile/Embedded OS\r\n /\\((bb)(10);/i // BlackBerry 10\r\n ], [[NAME, 'BlackBerry'], VERSION], [\r\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\r\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\r\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]*)/i,\r\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\r\n /linux;.+(sailfish);/i // Sailfish OS\r\n ], [NAME, VERSION], [\r\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\r\n ], [[NAME, 'Symbian'], VERSION], [\r\n /\\((series40);/i // Series 40\r\n ], [NAME], [\r\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\r\n ], [[NAME, 'Firefox OS'], VERSION], [\r\n\r\n // Console\r\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\r\n\r\n // GNU/Linux based\r\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\r\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\r\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\r\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\r\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\r\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\r\n /(gnu)\\s?([\\w\\.]*)/i // GNU\r\n ], [NAME, VERSION], [\r\n\r\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\r\n ], [[NAME, 'Chromium OS'], VERSION],[\r\n\r\n // Solaris\r\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\r\n ], [[NAME, 'Solaris'], VERSION], [\r\n\r\n // BSD based\r\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\r\n ], [NAME, VERSION],[\r\n\r\n /(haiku)\\s(\\w+)/i // Haiku\r\n ], [NAME, VERSION],[\r\n\r\n /cfnetwork\\/.+darwin/i,\r\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\r\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\r\n\r\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\r\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\r\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\r\n\r\n // Other\r\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\r\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\r\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,\r\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS\r\n /(unix)\\s?([\\w\\.]*)/i // UNIX\r\n ], [NAME, VERSION]\r\n ]\r\n };\r\n\r\n\r\n /////////////////\r\n // Constructor\r\n ////////////////\r\n /*\r\n var Browser = function (name, version) {\r\n this[NAME] = name;\r\n this[VERSION] = version;\r\n };\r\n var CPU = function (arch) {\r\n this[ARCHITECTURE] = arch;\r\n };\r\n var Device = function (vendor, model, type) {\r\n this[VENDOR] = vendor;\r\n this[MODEL] = model;\r\n this[TYPE] = type;\r\n };\r\n var Engine = Browser;\r\n var OS = Browser;\r\n */\r\n var UAParser = function (uastring, extensions) {\r\n\r\n if (typeof uastring === 'object') {\r\n extensions = uastring;\r\n uastring = undefined;\r\n }\r\n\r\n if (!(this instanceof UAParser)) {\r\n return new UAParser(uastring, extensions).getResult();\r\n }\r\n\r\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\r\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\r\n //var browser = new Browser();\r\n //var cpu = new CPU();\r\n //var device = new Device();\r\n //var engine = new Engine();\r\n //var os = new OS();\r\n\r\n this.getBrowser = function () {\r\n var browser = { name: undefined, version: undefined };\r\n mapper.rgx.call(browser, ua, rgxmap.browser);\r\n browser.major = util.major(browser.version); // deprecated\r\n return browser;\r\n };\r\n this.getCPU = function () {\r\n var cpu = { architecture: undefined };\r\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\r\n return cpu;\r\n };\r\n this.getDevice = function () {\r\n var device = { vendor: undefined, model: undefined, type: undefined };\r\n mapper.rgx.call(device, ua, rgxmap.device);\r\n return device;\r\n };\r\n this.getEngine = function () {\r\n var engine = { name: undefined, version: undefined };\r\n mapper.rgx.call(engine, ua, rgxmap.engine);\r\n return engine;\r\n };\r\n this.getOS = function () {\r\n var os = { name: undefined, version: undefined };\r\n mapper.rgx.call(os, ua, rgxmap.os);\r\n return os;\r\n };\r\n this.getResult = function () {\r\n return {\r\n ua : this.getUA(),\r\n browser : this.getBrowser(),\r\n engine : this.getEngine(),\r\n os : this.getOS(),\r\n device : this.getDevice(),\r\n cpu : this.getCPU()\r\n };\r\n };\r\n this.getUA = function () {\r\n return ua;\r\n };\r\n this.setUA = function (uastring) {\r\n ua = uastring;\r\n //browser = new Browser();\r\n //cpu = new CPU();\r\n //device = new Device();\r\n //engine = new Engine();\r\n //os = new OS();\r\n return this;\r\n };\r\n return this;\r\n };\r\n\r\n UAParser.VERSION = LIBVERSION;\r\n UAParser.BROWSER = {\r\n NAME : NAME,\r\n MAJOR : MAJOR, // deprecated\r\n VERSION : VERSION\r\n };\r\n UAParser.CPU = {\r\n ARCHITECTURE : ARCHITECTURE\r\n };\r\n UAParser.DEVICE = {\r\n MODEL : MODEL,\r\n VENDOR : VENDOR,\r\n TYPE : TYPE,\r\n CONSOLE : CONSOLE,\r\n MOBILE : MOBILE,\r\n SMARTTV : SMARTTV,\r\n TABLET : TABLET,\r\n WEARABLE: WEARABLE,\r\n EMBEDDED: EMBEDDED\r\n };\r\n UAParser.ENGINE = {\r\n NAME : NAME,\r\n VERSION : VERSION\r\n };\r\n UAParser.OS = {\r\n NAME : NAME,\r\n VERSION : VERSION\r\n };\r\n //UAParser.Utils = util;\r\n\r\n ///////////\r\n // Export\r\n //////////\r\n\r\n\r\n // check js environment\r\n if (typeof(exports) !== UNDEF_TYPE) {\r\n // nodejs env\r\n if (typeof module !== UNDEF_TYPE && module.exports) {\r\n exports = module.exports = UAParser;\r\n }\r\n // TODO: test!!!!!!!!\r\n /*\r\n if (require && require.main === module && process) {\r\n // cli\r\n var jsonize = function (arr) {\r\n var res = [];\r\n for (var i in arr) {\r\n res.push(new UAParser(arr[i]).getResult());\r\n }\r\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\r\n };\r\n if (process.stdin.isTTY) {\r\n // via args\r\n jsonize(process.argv.slice(2));\r\n } else {\r\n // via pipe\r\n var str = '';\r\n process.stdin.on('readable', function() {\r\n var read = process.stdin.read();\r\n if (read !== null) {\r\n str += read;\r\n }\r\n });\r\n process.stdin.on('end', function () {\r\n jsonize(str.replace(/\\n$/, '').split('\\n'));\r\n });\r\n }\r\n }\r\n */\r\n exports.UAParser = UAParser;\r\n } else {\r\n // requirejs env (optional)\r\n if (typeof(define) === FUNC_TYPE && define.amd) {\r\n define(function () {\r\n return UAParser;\r\n });\r\n } else if (window) {\r\n // browser env\r\n window.UAParser = UAParser;\r\n }\r\n }\r\n\r\n // jQuery/Zepto specific (optional)\r\n // Note:\r\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\r\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\r\n // and we should catch that.\r\n var $ = window && (window.jQuery || window.Zepto);\r\n if (typeof $ !== UNDEF_TYPE) {\r\n var parser = new UAParser();\r\n $.ua = parser.getResult();\r\n $.ua.get = function () {\r\n return parser.getUA();\r\n };\r\n $.ua.set = function (uastring) {\r\n parser.setUA(uastring);\r\n var result = parser.getResult();\r\n for (var prop in result) {\r\n $.ua[prop] = result[prop];\r\n }\r\n };\r\n }\r\n\r\n})(typeof window === 'object' ? window : this);","/* Edited by Lukas Matta (Add module export) */\r\n/**\r\n * JavaScript code to detect available availability of a\r\n * particular font in a browser using JavaScript and CSS.\r\n *\r\n * Author : Lalit Patel\r\n * Website: http://www.lalit.org/lab/javascript-css-font-detect/\r\n * License: Apache Software License 2.0\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n * Version: 0.15 (21 Sep 2009)\r\n * Changed comparision font to default from sans-default-default,\r\n * as in FF3.0 font of child element didn't fallback\r\n * to parent element if the font is missing.\r\n * Version: 0.2 (04 Mar 2012)\r\n * Comparing font against all the 3 generic font families ie,\r\n * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3\r\n * then that font is 100% not available in the system\r\n * Version: 0.3 (24 Mar 2012)\r\n * Replaced sans with serif in the list of baseFonts\r\n */\r\n\r\n/**\r\n * Usage: d = new Detector();\r\n * d.detect('font name');\r\n */\r\n(function (scope) {\r\n 'use strict';\r\n\r\n /**\r\n * JavaScript code to detect available availability of a\r\n * particular font in a browser using JavaScript and CSS.\r\n *\r\n * Author : Lalit Patel\r\n * Website: http://www.lalit.org/lab/javascript-css-font-detect/\r\n * License: Apache Software License 2.0\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n * Version: 0.15 (21 Sep 2009)\r\n * Changed comparision font to default from sans-default-default,\r\n * as in FF3.0 font of child element didn't fallback\r\n * to parent element if the font is missing.\r\n * Version: 0.2 (04 Mar 2012)\r\n * Comparing font against all the 3 generic font families ie,\r\n * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3\r\n * then that font is 100% not available in the system\r\n * Version: 0.3 (24 Mar 2012)\r\n * Replaced sans with serif in the list of baseFonts\r\n */\r\n\r\n /**\r\n * Usage: d = new Detector();\r\n * d.detect('font name');\r\n */\r\n var Detector = function() {\r\n // a font will be compared against all the three default fonts.\r\n // and if it doesn't match all 3 then that font is not available.\r\n var baseFonts = ['monospace', 'sans-serif', 'serif'];\r\n var fontList = [\r\n \"Andale Mono\", \"Arial\", \"Arial Black\", \"Arial Hebrew\", \"Arial MT\", \"Arial Narrow\", \"Arial Unicode MS\",\r\n \"Bitstream Vera Sans Mono\", \"Book Antiqua\", \"Bookman Old Style\",\r\n \"Calibri\", \"Cambria\", \"Cambria Math\", \"Century\", \"Century Gothic\", \"Century Schoolbook\", \"Comic Sans\", \"Comic Sans MS\", \"Consolas\", \"Courier\", \"Courier New\",\r\n \"Garamond\", \"Geneva\", \"Georgia\",\r\n \"Helvetica\", \"Helvetica Neue\",\r\n \"Impact\",\r\n \"Lucida Bright\", \"Lucida Calligraphy\", \"Lucida Console\", \"Lucida Fax\", \"LUCIDA GRANDE\", \"Lucida Handwriting\", \"Lucida Sans\", \"Lucida Sans Typewriter\", \"Lucida Sans Unicode\",\r\n \"Microsoft Sans Serif\", \"Monaco\", \"Monotype Corsiva\", \"MS Gothic\", \"MS Outlook\", \"MS PGothic\", \"MS Reference Sans Serif\", \"MS Sans Serif\", \"MS Serif\", \"MYRIAD\", \"MYRIAD PRO\",\r\n \"Palatino\", \"Palatino Linotype\",\r\n \"Segoe Print\", \"Segoe Script\", \"Segoe UI\", \"Segoe UI Light\", \"Segoe UI Semibold\", \"Segoe UI Symbol\",\r\n \"Tahoma\", \"Times\", \"Times New Roman\", \"Times New Roman PS\", \"Trebuchet MS\",\r\n \"Verdana\", \"Wingdings\", \"Wingdings 2\", \"Wingdings 3\"\r\n ];\r\n var moreFonts = [\r\n \"Abadi MT Condensed Light\", \"Academy Engraved LET\", \"ADOBE CASLON PRO\", \"Adobe Garamond\", \"ADOBE GARAMOND PRO\", \"Agency FB\", \"Aharoni\", \"Albertus Extra Bold\", \"Albertus Medium\", \"Algerian\", \"Amazone BT\", \"American Typewriter\",\r\n \"American Typewriter Condensed\", \"AmerType Md BT\", \"Andalus\", \"Angsana New\", \"AngsanaUPC\", \"Antique Olive\", \"Aparajita\", \"Apple Chancery\", \"Apple Color Emoji\", \"Apple SD Gothic Neo\", \"Arabic Typesetting\", \"ARCHER\",\r\n \"ARNO PRO\", \"Arrus BT\", \"Aurora Cn BT\", \"AvantGarde Bk BT\", \"AvantGarde Md BT\", \"AVENIR\", \"Ayuthaya\", \"Bandy\", \"Bangla Sangam MN\", \"Bank Gothic\", \"BankGothic Md BT\", \"Baskerville\",\r\n \"Baskerville Old Face\", \"Batang\", \"BatangChe\", \"Bauer Bodoni\", \"Bauhaus 93\", \"Bazooka\", \"Bell MT\", \"Bembo\", \"Benguiat Bk BT\", \"Berlin Sans FB\", \"Berlin Sans FB Demi\", \"Bernard MT Condensed\", \"BernhardFashion BT\", \"BernhardMod BT\", \"Big Caslon\", \"BinnerD\",\r\n \"Blackadder ITC\", \"BlairMdITC TT\", \"Bodoni 72\", \"Bodoni 72 Oldstyle\", \"Bodoni 72 Smallcaps\", \"Bodoni MT\", \"Bodoni MT Black\", \"Bodoni MT Condensed\", \"Bodoni MT Poster Compressed\",\r\n \"Bookshelf Symbol 7\", \"Boulder\", \"Bradley Hand\", \"Bradley Hand ITC\", \"Bremen Bd BT\", \"Britannic Bold\", \"Broadway\", \"Browallia New\", \"BrowalliaUPC\", \"Brush Script MT\", \"Californian FB\", \"Calisto MT\", \"Calligrapher\", \"Candara\",\r\n \"CaslonOpnface BT\", \"Castellar\", \"Centaur\", \"Cezanne\", \"CG Omega\", \"CG Times\", \"Chalkboard\", \"Chalkboard SE\", \"Chalkduster\", \"Charlesworth\", \"Charter Bd BT\", \"Charter BT\", \"Chaucer\",\r\n \"ChelthmITC Bk BT\", \"Chiller\", \"Clarendon\", \"Clarendon Condensed\", \"CloisterBlack BT\", \"Cochin\", \"Colonna MT\", \"Constantia\", \"Cooper Black\", \"Copperplate\", \"Copperplate Gothic\", \"Copperplate Gothic Bold\",\r\n \"Copperplate Gothic Light\", \"CopperplGoth Bd BT\", \"Corbel\", \"Cordia New\", \"CordiaUPC\", \"Cornerstone\", \"Coronet\", \"Cuckoo\", \"Curlz MT\", \"DaunPenh\", \"Dauphin\", \"David\", \"DB LCD Temp\", \"DELICIOUS\", \"Denmark\",\r\n \"DFKai-SB\", \"Didot\", \"DilleniaUPC\", \"DIN\", \"DokChampa\", \"Dotum\", \"DotumChe\", \"Ebrima\", \"Edwardian Script ITC\", \"Elephant\", \"English 111 Vivace BT\", \"Engravers MT\", \"EngraversGothic BT\", \"Eras Bold ITC\", \"Eras Demi ITC\", \"Eras Light ITC\", \"Eras Medium ITC\",\r\n \"EucrosiaUPC\", \"Euphemia\", \"Euphemia UCAS\", \"EUROSTILE\", \"Exotc350 Bd BT\", \"FangSong\", \"Felix Titling\", \"Fixedsys\", \"FONTIN\", \"Footlight MT Light\", \"Forte\",\r\n \"FrankRuehl\", \"Fransiscan\", \"Freefrm721 Blk BT\", \"FreesiaUPC\", \"Freestyle Script\", \"French Script MT\", \"FrnkGothITC Bk BT\", \"Fruitger\", \"FRUTIGER\",\r\n \"Futura\", \"Futura Bk BT\", \"Futura Lt BT\", \"Futura Md BT\", \"Futura ZBlk BT\", \"FuturaBlack BT\", \"Gabriola\", \"Galliard BT\", \"Gautami\", \"Geeza Pro\", \"Geometr231 BT\", \"Geometr231 Hv BT\", \"Geometr231 Lt BT\", \"GeoSlab 703 Lt BT\",\r\n \"GeoSlab 703 XBd BT\", \"Gigi\", \"Gill Sans\", \"Gill Sans MT\", \"Gill Sans MT Condensed\", \"Gill Sans MT Ext Condensed Bold\", \"Gill Sans Ultra Bold\", \"Gill Sans Ultra Bold Condensed\", \"Gisha\", \"Gloucester MT Extra Condensed\", \"GOTHAM\", \"GOTHAM BOLD\",\r\n \"Goudy Old Style\", \"Goudy Stout\", \"GoudyHandtooled BT\", \"GoudyOLSt BT\", \"Gujarati Sangam MN\", \"Gulim\", \"GulimChe\", \"Gungsuh\", \"GungsuhChe\", \"Gurmukhi MN\", \"Haettenschweiler\", \"Harlow Solid Italic\", \"Harrington\", \"Heather\", \"Heiti SC\", \"Heiti TC\", \"HELV\",\r\n \"Herald\", \"High Tower Text\", \"Hiragino Kaku Gothic ProN\", \"Hiragino Mincho ProN\", \"Hoefler Text\", \"Humanst 521 Cn BT\", \"Humanst521 BT\", \"Humanst521 Lt BT\", \"Imprint MT Shadow\", \"Incised901 Bd BT\", \"Incised901 BT\",\r\n \"Incised901 Lt BT\", \"INCONSOLATA\", \"Informal Roman\", \"Informal011 BT\", \"INTERSTATE\", \"IrisUPC\", \"Iskoola Pota\", \"JasmineUPC\", \"Jazz LET\", \"Jenson\", \"Jester\", \"Jokerman\", \"Juice ITC\", \"Kabel Bk BT\", \"Kabel Ult BT\", \"Kailasa\", \"KaiTi\", \"Kalinga\", \"Kannada Sangam MN\",\r\n \"Kartika\", \"Kaufmann Bd BT\", \"Kaufmann BT\", \"Khmer UI\", \"KodchiangUPC\", \"Kokila\", \"Korinna BT\", \"Kristen ITC\", \"Krungthep\", \"Kunstler Script\", \"Lao UI\", \"Latha\", \"Leelawadee\", \"Letter Gothic\", \"Levenim MT\", \"LilyUPC\", \"Lithograph\", \"Lithograph Light\", \"Long Island\",\r\n \"Lydian BT\", \"Magneto\", \"Maiandra GD\", \"Malayalam Sangam MN\", \"Malgun Gothic\",\r\n \"Mangal\", \"Marigold\", \"Marion\", \"Marker Felt\", \"Market\", \"Marlett\", \"Matisse ITC\", \"Matura MT Script Capitals\", \"Meiryo\", \"Meiryo UI\", \"Microsoft Himalaya\", \"Microsoft JhengHei\", \"Microsoft New Tai Lue\", \"Microsoft PhagsPa\", \"Microsoft Tai Le\",\r\n \"Microsoft Uighur\", \"Microsoft YaHei\", \"Microsoft Yi Baiti\", \"MingLiU\", \"MingLiU_HKSCS\", \"MingLiU_HKSCS-ExtB\", \"MingLiU-ExtB\", \"Minion\", \"Minion Pro\", \"Miriam\", \"Miriam Fixed\", \"Mistral\", \"Modern\", \"Modern No. 20\", \"Mona Lisa Solid ITC TT\", \"Mongolian Baiti\",\r\n \"MONO\", \"MoolBoran\", \"Mrs Eaves\", \"MS LineDraw\", \"MS Mincho\", \"MS PMincho\", \"MS Reference Specialty\", \"MS UI Gothic\", \"MT Extra\", \"MUSEO\", \"MV Boli\",\r\n \"Nadeem\", \"Narkisim\", \"NEVIS\", \"News Gothic\", \"News GothicMT\", \"NewsGoth BT\", \"Niagara Engraved\", \"Niagara Solid\", \"Noteworthy\", \"NSimSun\", \"Nyala\", \"OCR A Extended\", \"Old Century\", \"Old English Text MT\", \"Onyx\", \"Onyx BT\", \"OPTIMA\", \"Oriya Sangam MN\",\r\n \"OSAKA\", \"OzHandicraft BT\", \"Palace Script MT\", \"Papyrus\", \"Parchment\", \"Party LET\", \"Pegasus\", \"Perpetua\", \"Perpetua Titling MT\", \"PetitaBold\", \"Pickwick\", \"Plantagenet Cherokee\", \"Playbill\", \"PMingLiU\", \"PMingLiU-ExtB\",\r\n \"Poor Richard\", \"Poster\", \"PosterBodoni BT\", \"PRINCETOWN LET\", \"Pristina\", \"PTBarnum BT\", \"Pythagoras\", \"Raavi\", \"Rage Italic\", \"Ravie\", \"Ribbon131 Bd BT\", \"Rockwell\", \"Rockwell Condensed\", \"Rockwell Extra Bold\", \"Rod\", \"Roman\", \"Sakkal Majalla\",\r\n \"Santa Fe LET\", \"Savoye LET\", \"Sceptre\", \"Script\", \"Script MT Bold\", \"SCRIPTINA\", \"Serifa\", \"Serifa BT\", \"Serifa Th BT\", \"ShelleyVolante BT\", \"Sherwood\",\r\n \"Shonar Bangla\", \"Showcard Gothic\", \"Shruti\", \"Signboard\", \"SILKSCREEN\", \"SimHei\", \"Simplified Arabic\", \"Simplified Arabic Fixed\", \"SimSun\", \"SimSun-ExtB\", \"Sinhala Sangam MN\", \"Sketch Rockwell\", \"Skia\", \"Small Fonts\", \"Snap ITC\", \"Snell Roundhand\", \"Socket\",\r\n \"Souvenir Lt BT\", \"Staccato222 BT\", \"Steamer\", \"Stencil\", \"Storybook\", \"Styllo\", \"Subway\", \"Swis721 BlkEx BT\", \"Swiss911 XCm BT\", \"Sylfaen\", \"Synchro LET\", \"System\", \"Tamil Sangam MN\", \"Technical\", \"Teletype\", \"Telugu Sangam MN\", \"Tempus Sans ITC\",\r\n \"Terminal\", \"Thonburi\", \"Traditional Arabic\", \"Trajan\", \"TRAJAN PRO\", \"Tristan\", \"Tubular\", \"Tunga\", \"Tw Cen MT\", \"Tw Cen MT Condensed\", \"Tw Cen MT Condensed Extra Bold\",\r\n \"TypoUpright BT\", \"Unicorn\", \"Univers\", \"Univers CE 55 Medium\", \"Univers Condensed\", \"Utsaah\", \"Vagabond\", \"Vani\", \"Vijaya\", \"Viner Hand ITC\", \"VisualUI\", \"Vivaldi\", \"Vladimir Script\", \"Vrinda\", \"Westminster\", \"WHITNEY\", \"Wide Latin\",\r\n \"ZapfEllipt BT\", \"ZapfHumnst BT\", \"ZapfHumnst Dm BT\", \"Zapfino\", \"Zurich BlkEx BT\", \"Zurich Ex BT\", \"ZWAdobeF\"\r\n ];\r\n\r\n //we use m or w because these two characters take up the maximum width.\r\n // And we use a LLi so that the same matching fonts can get separated\r\n var testString = \"mmmmmmmmmmlli\";\r\n\r\n //we test using 72px font size, we may use any size. I guess larger the better.\r\n var testSize = '72px';\r\n\r\n var h = document.getElementsByTagName(\"body\")[0];\r\n\r\n // create a SPAN in the document to get the width of the text we use to test\r\n var s = document.createElement(\"span\");\r\n s.style.fontSize = testSize;\r\n s.innerHTML = testString;\r\n var defaultWidth = {};\r\n var defaultHeight = {};\r\n for (var index in baseFonts) {\r\n //get the default width for the three base fonts\r\n s.style.fontFamily = baseFonts[index];\r\n h.appendChild(s);\r\n defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font\r\n defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font\r\n h.removeChild(s);\r\n }\r\n this.testAllFonts = function() {\r\n var detected = [];\r\n for (var font in fontList) {\r\n if (this.detect(fontList[font]))\r\n detected.push(fontList[font]);\r\n }\r\n // for (var font in moreFonts) {\r\n // if (this.detect(moreFonts[font]))\r\n // detected.push(moreFonts[font]);\r\n // }\r\n return detected;\r\n }\r\n\r\n this.detect = function(font) {\r\n var detected = false;\r\n for (var index in baseFonts) {\r\n s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback.\r\n h.appendChild(s);\r\n var matched = (s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]);\r\n h.removeChild(s);\r\n detected = detected || matched;\r\n }\r\n return detected;\r\n }\r\n\r\n };\r\n\r\n if (typeof module === 'object' && typeof exports !== \"undefined\") {\r\n module.exports = Detector;\r\n } else {\r\n scope.Detector = Detector;\r\n }\r\n})(window);","// +----------------------------------------------------------------------+\r\n// | murmurHash3.js v2.1.2 (http://github.com/karanlyons/murmurHash.js) |\r\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\r\n// |----------------------------------------------------------------------|\r\n// | Copyright (c) 2012 Karan Lyons |\r\n// | Freely distributable under the MIT license. |\r\n// +----------------------------------------------------------------------+\r\n\r\n\r\n;(function (root, undefined) {\r\n 'use strict';\r\n\r\n // Create a local object that'll be exported or referenced globally.\r\n var library = {\r\n 'version': '2.1.2',\r\n 'x86': {},\r\n 'x64': {}\r\n };\r\n\r\n\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n // -----------------\r\n\r\n function _x86Multiply(m, n) {\r\n //\r\n // Given two 32bit ints, returns the two multiplied together as a\r\n // 32bit int.\r\n //\r\n\r\n return ((m & 0xffff) * n) + ((((m >>> 16) * n) & 0xffff) << 16);\r\n }\r\n\r\n\r\n function _x86Rotl(m, n) {\r\n //\r\n // Given a 32bit int and an int representing a number of bit positions,\r\n // returns the 32bit int rotated left by that number of positions.\r\n //\r\n\r\n return (m << n) | (m >>> (32 - n));\r\n }\r\n\r\n\r\n function _x86Fmix(h) {\r\n //\r\n // Given a block, returns murmurHash3's final x86 mix of that block.\r\n //\r\n\r\n h ^= h >>> 16;\r\n h = _x86Multiply(h, 0x85ebca6b);\r\n h ^= h >>> 13;\r\n h = _x86Multiply(h, 0xc2b2ae35);\r\n h ^= h >>> 16;\r\n\r\n return h;\r\n }\r\n\r\n\r\n function _x64Add(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // added together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\r\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\r\n var o = [0, 0, 0, 0];\r\n\r\n o[3] += m[3] + n[3];\r\n o[2] += o[3] >>> 16;\r\n o[3] &= 0xffff;\r\n\r\n o[2] += m[2] + n[2];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[1] += m[1] + n[1];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[0] += m[0] + n[0];\r\n o[0] &= 0xffff;\r\n\r\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\r\n }\r\n\r\n\r\n function _x64Multiply(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // multiplied together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\r\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\r\n var o = [0, 0, 0, 0];\r\n\r\n o[3] += m[3] * n[3];\r\n o[2] += o[3] >>> 16;\r\n o[3] &= 0xffff;\r\n\r\n o[2] += m[2] * n[3];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[2] += m[3] * n[2];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[1] += m[1] * n[3];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[1] += m[2] * n[2];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[1] += m[3] * n[1];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0]);\r\n o[0] &= 0xffff;\r\n\r\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\r\n }\r\n\r\n\r\n function _x64Rotl(m, n) {\r\n //\r\n // Given a 64bit int (as an array of two 32bit ints) and an int\r\n // representing a number of bit positions, returns the 64bit int (as an\r\n // array of two 32bit ints) rotated left by that number of positions.\r\n //\r\n\r\n n %= 64;\r\n\r\n if (n === 32) {\r\n return [m[1], m[0]];\r\n }\r\n\r\n else if (n < 32) {\r\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\r\n }\r\n\r\n else {\r\n n -= 32;\r\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\r\n }\r\n }\r\n\r\n\r\n function _x64LeftShift(m, n) {\r\n //\r\n // Given a 64bit int (as an array of two 32bit ints) and an int\r\n // representing a number of bit positions, returns the 64bit int (as an\r\n // array of two 32bit ints) shifted left by that number of positions.\r\n //\r\n\r\n n %= 64;\r\n\r\n if (n === 0) {\r\n return m;\r\n }\r\n\r\n else if (n < 32) {\r\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\r\n }\r\n\r\n else {\r\n return [m[1] << (n - 32), 0];\r\n }\r\n }\r\n\r\n\r\n function _x64Xor(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // xored together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n return [m[0] ^ n[0], m[1] ^ n[1]];\r\n }\r\n\r\n\r\n function _x64Fmix(h) {\r\n //\r\n // Given a block, returns murmurHash3's final x64 mix of that block.\r\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\r\n // only place where we need to right shift 64bit ints.)\r\n //\r\n\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n\r\n return h;\r\n }\r\n\r\n\r\n\r\n\r\n // PUBLIC FUNCTIONS\r\n // ----------------\r\n\r\n library.x86.hash32 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 32 bit hash\r\n // using the x86 flavor of MurmurHash3, as an unsigned int.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 4;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = seed;\r\n\r\n var k1 = 0;\r\n\r\n var c1 = 0xcc9e2d51;\r\n var c2 = 0x1b873593;\r\n\r\n for (var i = 0; i < bytes; i = i + 4) {\r\n k1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24);\r\n\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n\r\n h1 ^= k1;\r\n h1 = _x86Rotl(h1, 13);\r\n h1 = _x86Multiply(h1, 5) + 0xe6546b64;\r\n }\r\n\r\n k1 = 0;\r\n\r\n switch (remainder) {\r\n case 3:\r\n k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\r\n\r\n case 2:\r\n k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\r\n\r\n case 1:\r\n k1 ^= (key.charCodeAt(i) & 0xff);\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n }\r\n\r\n h1 ^= key.length;\r\n h1 = _x86Fmix(h1);\r\n\r\n return h1 >>> 0;\r\n };\r\n\r\n\r\n library.x86.hash128 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 128 bit\r\n // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 16;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = seed;\r\n var h2 = seed;\r\n var h3 = seed;\r\n var h4 = seed;\r\n\r\n var k1 = 0;\r\n var k2 = 0;\r\n var k3 = 0;\r\n var k4 = 0;\r\n\r\n var c1 = 0x239b961b;\r\n var c2 = 0xab0e9789;\r\n var c3 = 0x38b34ae5;\r\n var c4 = 0xa1e38b93;\r\n\r\n for (var i = 0; i < bytes; i = i + 16) {\r\n k1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24);\r\n k2 = ((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24);\r\n k3 = ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24);\r\n k4 = ((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24);\r\n\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n\r\n h1 = _x86Rotl(h1, 19);\r\n h1 += h2;\r\n h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\r\n\r\n k2 = _x86Multiply(k2, c2);\r\n k2 = _x86Rotl(k2, 16);\r\n k2 = _x86Multiply(k2, c3);\r\n h2 ^= k2;\r\n\r\n h2 = _x86Rotl(h2, 17);\r\n h2 += h3;\r\n h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\r\n\r\n k3 = _x86Multiply(k3, c3);\r\n k3 = _x86Rotl(k3, 17);\r\n k3 = _x86Multiply(k3, c4);\r\n h3 ^= k3;\r\n\r\n h3 = _x86Rotl(h3, 15);\r\n h3 += h4;\r\n h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\r\n\r\n k4 = _x86Multiply(k4, c4);\r\n k4 = _x86Rotl(k4, 18);\r\n k4 = _x86Multiply(k4, c1);\r\n h4 ^= k4;\r\n\r\n h4 = _x86Rotl(h4, 13);\r\n h4 += h1;\r\n h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\r\n }\r\n\r\n k1 = 0;\r\n k2 = 0;\r\n k3 = 0;\r\n k4 = 0;\r\n\r\n switch (remainder) {\r\n case 15:\r\n k4 ^= key.charCodeAt(i + 14) << 16;\r\n\r\n case 14:\r\n k4 ^= key.charCodeAt(i + 13) << 8;\r\n\r\n case 13:\r\n k4 ^= key.charCodeAt(i + 12);\r\n k4 = _x86Multiply(k4, c4);\r\n k4 = _x86Rotl(k4, 18);\r\n k4 = _x86Multiply(k4, c1);\r\n h4 ^= k4;\r\n\r\n case 12:\r\n k3 ^= key.charCodeAt(i + 11) << 24;\r\n\r\n case 11:\r\n k3 ^= key.charCodeAt(i + 10) << 16;\r\n\r\n case 10:\r\n k3 ^= key.charCodeAt(i + 9) << 8;\r\n\r\n case 9:\r\n k3 ^= key.charCodeAt(i + 8);\r\n k3 = _x86Multiply(k3, c3);\r\n k3 = _x86Rotl(k3, 17);\r\n k3 = _x86Multiply(k3, c4);\r\n h3 ^= k3;\r\n\r\n case 8:\r\n k2 ^= key.charCodeAt(i + 7) << 24;\r\n\r\n case 7:\r\n k2 ^= key.charCodeAt(i + 6) << 16;\r\n\r\n case 6:\r\n k2 ^= key.charCodeAt(i + 5) << 8;\r\n\r\n case 5:\r\n k2 ^= key.charCodeAt(i + 4);\r\n k2 = _x86Multiply(k2, c2);\r\n k2 = _x86Rotl(k2, 16);\r\n k2 = _x86Multiply(k2, c3);\r\n h2 ^= k2;\r\n\r\n case 4:\r\n k1 ^= key.charCodeAt(i + 3) << 24;\r\n\r\n case 3:\r\n k1 ^= key.charCodeAt(i + 2) << 16;\r\n\r\n case 2:\r\n k1 ^= key.charCodeAt(i + 1) << 8;\r\n\r\n case 1:\r\n k1 ^= key.charCodeAt(i);\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n }\r\n\r\n h1 ^= key.length;\r\n h2 ^= key.length;\r\n h3 ^= key.length;\r\n h4 ^= key.length;\r\n\r\n h1 += h2;\r\n h1 += h3;\r\n h1 += h4;\r\n h2 += h1;\r\n h3 += h1;\r\n h4 += h1;\r\n\r\n h1 = _x86Fmix(h1);\r\n h2 = _x86Fmix(h2);\r\n h3 = _x86Fmix(h3);\r\n h4 = _x86Fmix(h4);\r\n\r\n h1 += h2;\r\n h1 += h3;\r\n h1 += h4;\r\n h2 += h1;\r\n h3 += h1;\r\n h4 += h1;\r\n\r\n return (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8);\r\n };\r\n\r\n\r\n library.x64.hash128 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 128 bit\r\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 16;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = [0, seed];\r\n var h2 = [0, seed];\r\n\r\n var k1 = [0, 0];\r\n var k2 = [0, 0];\r\n\r\n var c1 = [0x87c37b91, 0x114253d5];\r\n var c2 = [0x4cf5ad43, 0x2745937f];\r\n\r\n for (var i = 0; i < bytes; i = i + 16) {\r\n k1 = [((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24), ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24)];\r\n k2 = [((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24), ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24)];\r\n\r\n k1 = _x64Multiply(k1, c1);\r\n k1 = _x64Rotl(k1, 31);\r\n k1 = _x64Multiply(k1, c2);\r\n h1 = _x64Xor(h1, k1);\r\n\r\n h1 = _x64Rotl(h1, 27);\r\n h1 = _x64Add(h1, h2);\r\n h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\r\n\r\n k2 = _x64Multiply(k2, c2);\r\n k2 = _x64Rotl(k2, 33);\r\n k2 = _x64Multiply(k2, c1);\r\n h2 = _x64Xor(h2, k2);\r\n\r\n h2 = _x64Rotl(h2, 31);\r\n h2 = _x64Add(h2, h1);\r\n h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\r\n }\r\n\r\n k1 = [0, 0];\r\n k2 = [0, 0];\r\n\r\n switch(remainder) {\r\n case 15:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 14)], 48));\r\n\r\n case 14:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 13)], 40));\r\n\r\n case 13:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 12)], 32));\r\n\r\n case 12:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 11)], 24));\r\n\r\n case 11:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 10)], 16));\r\n\r\n case 10:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 9)], 8));\r\n\r\n case 9:\r\n k2 = _x64Xor(k2, [0, key.charCodeAt(i + 8)]);\r\n k2 = _x64Multiply(k2, c2);\r\n k2 = _x64Rotl(k2, 33);\r\n k2 = _x64Multiply(k2, c1);\r\n h2 = _x64Xor(h2, k2);\r\n\r\n case 8:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 7)], 56));\r\n\r\n case 7:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 6)], 48));\r\n\r\n case 6:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 5)], 40));\r\n\r\n case 5:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 4)], 32));\r\n\r\n case 4:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 3)], 24));\r\n\r\n case 3:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 2)], 16));\r\n\r\n case 2:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 1)], 8));\r\n\r\n case 1:\r\n k1 = _x64Xor(k1, [0, key.charCodeAt(i)]);\r\n k1 = _x64Multiply(k1, c1);\r\n k1 = _x64Rotl(k1, 31);\r\n k1 = _x64Multiply(k1, c2);\r\n h1 = _x64Xor(h1, k1);\r\n }\r\n\r\n h1 = _x64Xor(h1, [0, key.length]);\r\n h2 = _x64Xor(h2, [0, key.length]);\r\n\r\n h1 = _x64Add(h1, h2);\r\n h2 = _x64Add(h2, h1);\r\n\r\n h1 = _x64Fmix(h1);\r\n h2 = _x64Fmix(h2);\r\n\r\n h1 = _x64Add(h1, h2);\r\n h2 = _x64Add(h2, h1);\r\n\r\n return (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8);\r\n };\r\n\r\n\r\n\r\n\r\n // INITIALIZATION\r\n // --------------\r\n\r\n // Export murmurHash3 for CommonJS, either as an AMD module or just as part\r\n // of the global object.\r\n if (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = library;\r\n }\r\n\r\n exports.murmurHash3 = library;\r\n }\r\n\r\n else if (typeof define === 'function' && define.amd) {\r\n define([], function() {\r\n return library;\r\n });\r\n }\r\n\r\n else {\r\n // Use murmurHash3.noConflict to restore `murmurHash3` back to its\r\n // original value. Returns a reference to the library object, to allow\r\n // it to be used under a different name.\r\n library._murmurHash3 = root.murmurHash3\r\n\r\n library.noConflict = function () {\r\n root.murmurHash3 = library._murmurHash3;\r\n library._murmurHash3 = undefined;\r\n library.noConflict = undefined;\r\n\r\n return library;\r\n };\r\n\r\n root.murmurHash3 = library;\r\n }\r\n})(this);","/*\r\n CBFjs is library for cross-browser fingerprinting\r\n It generates fingerprint based on device and hardware level features.\r\n Library was inspired by Song Li's https://github.com/Song-Li/dynamic_fingerprinting dynamic fingerprinting tool\r\n */\r\n(function (scope) {\r\n 'use strict';\r\n\r\n /* Helpers */\r\n\r\n // murmurhash3 non crypto hash library for hash generation\r\n // core estimator to estimate number of cores of CPU\r\n var murmurHash3 = require('./vendors/murmurhash3/murmurHash3.js');\r\n\r\n // font detector\r\n var Detector = require('./vendors/font-detect/fontdetect.js');\r\n\r\n // User agent parser\r\n var UAParser = require('./vendors/ua-parser/UAParser.js');\r\n\r\n var CBFjs = function () {\r\n };\r\n\r\n\r\n CBFjs.prototype = {\r\n /*\r\n Get screen resolution\r\n */\r\n getScreenResolution: function () {\r\n var fixed_width = window.screen.width;\r\n var fixed_height = window.screen.height;\r\n var res = Math.round(fixed_width / fixed_height * 100) / 100\r\n return res;\r\n },\r\n\r\n // /*\r\n // Get number of CPU cores\r\n // Future async function TODO implement with core_estimator library\r\n // */\r\n // getCPUCores: function (done) {\r\n // if (!navigator.getHardwareConcurrency) {\r\n // return done(-1);\r\n // } else {\r\n // navigator.getHardwareConcurrency(done);\r\n // return;\r\n // }\r\n // },\r\n\r\n /*\r\n Get number of CPU cores\r\n */\r\n getCPUCores: function () {\r\n return navigator.hardwareConcurrency;\r\n },\r\n\r\n /*\r\n Get touch support\r\n */\r\n getTouchSupport: function () {\r\n return (('ontouchstart' in window)\r\n || (navigator.MaxTouchPoints > 0)\r\n || (navigator.msMaxTouchPoints > 0));\r\n },\r\n\r\n /*\r\n [DISABLED - unsupported by IE] Audio card info\r\n audioFingerPrinting: function () {\r\n try {\r\n var audioCtx = new (window.AudioContext || window.webkitAudioContext),\r\n oscillator = audioCtx.createOscillator(),\r\n analyser = audioCtx.createAnalyser(),\r\n gainNode = audioCtx.createGain(),\r\n scriptProcessor = audioCtx.createScriptProcessor(4096, 1, 1);\r\n var destination = audioCtx.destination;\r\n return (audioCtx.sampleRate).toString() + '_' + destination.maxChannelCount + \"_\" + destination.numberOfInputs + '_' + destination.numberOfOutputs + '_' + destination.channelCount + '_' + destination.channelCountMode + '_' + destination.channelInterpretation;\r\n }\r\n catch (e) {\r\n return \"not supported\";\r\n }\r\n },\r\n */\r\n\r\n /*\r\n Get color depth of the device's screen\r\n */\r\n getColorDepth: function () {\r\n return screen.colorDepth;\r\n },\r\n\r\n\r\n /*\r\n Get timezone offset in minutes. Calculated as UTC - device's time zone\r\n */\r\n getTimezoneOffset: function() {\r\n var currentDate = new Date();\r\n return currentDate.getTimezoneOffset();\r\n },\r\n\r\n /*\r\n Get list of fonts\r\n */\r\n getFonts: function(done) {\r\n document.addEventListener(\"DOMContentLoaded\", function(event) {\r\n var fontDetective = new Detector();\r\n var fonts = fontDetective.testAllFonts();\r\n done(fonts);\r\n });\r\n },\r\n\r\n /*\r\n Get OS\r\n */\r\n getOS: function() {\r\n var uap = new UAParser();\r\n return uap.getOS().name;\r\n },\r\n\r\n /*\r\n Get OS version\r\n */\r\n getOSVersion: function() {\r\n var uap = new UAParser();\r\n return uap.getOS().version;\r\n },\r\n\r\n /*\r\n Detects if device is a mobile\r\n */\r\n isMobile: function() {\r\n // detectmobilebrowsers.com JavaScript Mobile Detection Script\r\n var uap = new UAParser();\r\n var browserData = uap.getResult();\r\n var dataString = browserData.ua || navigator.vendor || window.opera;\r\n return (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(dataString) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(dataString.substr(0, 4)));\r\n },\r\n\r\n /*\r\n Get CPU architecture\r\n */\r\n getCPUarchitecture: function() {\r\n var uap = new UAParser();\r\n return uap.getCPU().architecture;\r\n },\r\n\r\n\r\n\r\n // /*\r\n // Helper function to handle asynchronous call\r\n // */\r\n generateAsyncHash: function(parameters, done) {\r\n // this.getCPUCores(function(cores) {\r\n // parameters.push(cores);\r\n // done(parameters);\r\n // });\r\n this.getFonts(function(fonts) {\r\n parameters.push(fonts);\r\n done(parameters);\r\n });\r\n },\r\n\r\n /*\r\n Generate hash from all features\r\n */\r\n get: function(done) {\r\n var parameters = [];\r\n parameters.push(this.getScreenResolution());\r\n parameters.push(this.getTouchSupport());\r\n parameters.push(this.getColorDepth());\r\n parameters.push(this.getTimezoneOffset());\r\n // Removed from here as it is async function\r\n // parameters.push(this.getFonts());\r\n parameters.push(this.getOS());\r\n parameters.push(this.getOSVersion());\r\n parameters.push(this.isMobile());\r\n parameters.push(this.getCPUarchitecture());\r\n // Disabled as it is not supported by IE\r\n //parameters.push(this.audioFingerPrinting());\r\n parameters.push(this.getCPUCores());\r\n\r\n\r\n // Async version of generating hash\r\n this.generateAsyncHash(parameters, function(newParameters) {\r\n var hash = murmurHash3.x86.hash32((newParameters).join(\"~~~\"));\r\n return done(hash, newParameters);\r\n });\r\n // var hash = murmurHash3.x86.hash32((parameters).join(\"~~~\"));\r\n // return done(hash, parameters);\r\n }\r\n};\r\n\r\n if (typeof module === 'object' && typeof exports !== \"undefined\") {\r\n module.exports = CBFjs;\r\n } else {\r\n scope.CBFjs = CBFjs;\r\n }\r\n})(this);"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://CBFjs/webpack/universalModuleDefinition","webpack://CBFjs/webpack/bootstrap","webpack://CBFjs/(webpack)/buildin/module.js","webpack://CBFjs/./src/cbfjs.js","webpack://CBFjs/./src/vendors/murmurhash3/murmurHash3.js","webpack://CBFjs/./src/vendors/font-detect/fontdetect.js","webpack://CBFjs/./src/vendors/ua-parser/UAParser.js","webpack://CBFjs/(webpack)/buildin/amd-define.js","webpack://CBFjs/(webpack)/buildin/amd-options.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","webpackPolyfill","deprecate","paths","children","scope","murmurHash3","Detector","UAParser","CBFjs","getScreenResolution","fixed_width","screen","width","fixed_height","height","Math","round","getCPUCores","navigator","hardwareConcurrency","getTouchSupport","MaxTouchPoints","msMaxTouchPoints","getColorDepth","colorDepth","getTimezoneOffset","Date","getFonts","done","document","addEventListener","event","fonts","testAllFonts","getOS","getOSVersion","version","isMobile","dataString","getResult","ua","vendor","opera","test","substr","getCPUarchitecture","getCPU","architecture","generateAsyncHash","parameters","this","push","newParameters","hash","x86","hash32","join","_typeof","undefined","library","x64","_x86Multiply","_x86Rotl","_x86Fmix","h","_x64Add","_x64Multiply","_x64Rotl","_x64LeftShift","_x64Xor","_x64Fmix","seed","remainder","length","bytes","h1","k1","c1","c2","charCodeAt","hash128","h2","h3","h4","k2","k3","k4","c3","c4","toString","slice","baseFonts","fontList","getElementsByTagName","createElement","style","fontSize","innerHTML","defaultWidth","defaultHeight","index","fontFamily","appendChild","offsetWidth","offsetHeight","removeChild","detected","font","detect","matched","MODEL","NAME","TYPE","VENDOR","VERSION","MOBILE","TABLET","util","extend","regexes","extensions","margedRegexes","concat","has","str1","str2","toLowerCase","indexOf","lowerize","str","major","replace","split","trim","mapper","rgx","arrays","j","k","q","matches","match","regex","props","exec","map","maps","browser","oldsafari","1.0","1.2","1.3","2.0","2.0.2","2.0.3","2.0.4","?","device","amazon","model","Fire Phone","sprint","Evo Shift 4G","HTC","Sprint","os","windows","ME","NT 3.11","NT 4.0","2000","XP","Vista","7","8","8.1","10","RT","cpu","engine","uastring","userAgent","rgxmap","getBrowser","getDevice","type","getEngine","getUA","setUA","BROWSER","MAJOR","CPU","ARCHITECTURE","DEVICE","CONSOLE","SMARTTV","WEARABLE","EMBEDDED","ENGINE","OS","__WEBPACK_AMD_DEFINE_RESULT__","$","jQuery","Zepto","parser","set","result","prop","Error","__webpack_amd_options__"],"mappings":"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","file":"cbfjs.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CBFjs\"] = factory();\n\telse\n\t\troot[\"CBFjs\"] = factory();\n})(window, function() {\nreturn "," \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 = 1);\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*\r\n CBFjs is library for cross-browser fingerprinting\r\n It generates fingerprint based on device and hardware level features.\r\n Library was inspired by Song Li's https://github.com/Song-Li/dynamic_fingerprinting dynamic fingerprinting tool\r\n */\r\n(function (scope) {\r\n 'use strict';\r\n\r\n /* Helpers */\r\n\r\n // murmurhash3 non crypto hash library for hash generation\r\n // core estimator to estimate number of cores of CPU\r\n var murmurHash3 = require('./vendors/murmurhash3/murmurHash3.js');\r\n\r\n // font detector\r\n var Detector = require('./vendors/font-detect/fontdetect.js');\r\n\r\n // User agent parser\r\n var UAParser = require('./vendors/ua-parser/UAParser.js');\r\n\r\n var CBFjs = function () {\r\n };\r\n\r\n\r\n CBFjs.prototype = {\r\n /*\r\n Get screen resolution\r\n */\r\n getScreenResolution: function () {\r\n var fixed_width = window.screen.width;\r\n var fixed_height = window.screen.height;\r\n var res = Math.round(fixed_width / fixed_height * 100) / 100\r\n return res;\r\n },\r\n\r\n // /*\r\n // Get number of CPU cores\r\n // Future async function TODO implement with core_estimator library\r\n // */\r\n // getCPUCores: function (done) {\r\n // if (!navigator.getHardwareConcurrency) {\r\n // return done(-1);\r\n // } else {\r\n // navigator.getHardwareConcurrency(done);\r\n // return;\r\n // }\r\n // },\r\n\r\n /*\r\n Get number of CPU cores\r\n */\r\n getCPUCores: function () {\r\n return navigator.hardwareConcurrency;\r\n },\r\n\r\n /*\r\n Get touch support\r\n */\r\n getTouchSupport: function () {\r\n return (('ontouchstart' in window)\r\n || (navigator.MaxTouchPoints > 0)\r\n || (navigator.msMaxTouchPoints > 0));\r\n },\r\n\r\n /*\r\n [DISABLED - unsupported by IE] Audio card info\r\n audioFingerPrinting: function () {\r\n try {\r\n var audioCtx = new (window.AudioContext || window.webkitAudioContext),\r\n oscillator = audioCtx.createOscillator(),\r\n analyser = audioCtx.createAnalyser(),\r\n gainNode = audioCtx.createGain(),\r\n scriptProcessor = audioCtx.createScriptProcessor(4096, 1, 1);\r\n var destination = audioCtx.destination;\r\n return (audioCtx.sampleRate).toString() + '_' + destination.maxChannelCount + \"_\" + destination.numberOfInputs + '_' + destination.numberOfOutputs + '_' + destination.channelCount + '_' + destination.channelCountMode + '_' + destination.channelInterpretation;\r\n }\r\n catch (e) {\r\n return \"not supported\";\r\n }\r\n },\r\n */\r\n\r\n /*\r\n Get color depth of the device's screen\r\n */\r\n getColorDepth: function () {\r\n return screen.colorDepth;\r\n },\r\n\r\n\r\n /*\r\n Get timezone offset in minutes. Calculated as UTC - device's time zone\r\n */\r\n getTimezoneOffset: function() {\r\n var currentDate = new Date();\r\n return currentDate.getTimezoneOffset();\r\n },\r\n\r\n /*\r\n Get list of fonts\r\n */\r\n getFonts: function(done) {\r\n document.addEventListener(\"DOMContentLoaded\", function(event) {\r\n var fontDetective = new Detector();\r\n var fonts = fontDetective.testAllFonts();\r\n done(fonts);\r\n });\r\n },\r\n\r\n /*\r\n Get OS\r\n */\r\n getOS: function() {\r\n var uap = new UAParser();\r\n return uap.getOS().name;\r\n },\r\n\r\n /*\r\n Get OS version\r\n */\r\n getOSVersion: function() {\r\n var uap = new UAParser();\r\n return uap.getOS().version;\r\n },\r\n\r\n /*\r\n Detects if device is a mobile\r\n */\r\n isMobile: function() {\r\n // detectmobilebrowsers.com JavaScript Mobile Detection Script\r\n var uap = new UAParser();\r\n var browserData = uap.getResult();\r\n var dataString = browserData.ua || navigator.vendor || window.opera;\r\n return (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(dataString) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(dataString.substr(0, 4)));\r\n },\r\n\r\n /*\r\n Get CPU architecture\r\n */\r\n getCPUarchitecture: function() {\r\n var uap = new UAParser();\r\n return uap.getCPU().architecture;\r\n },\r\n\r\n\r\n\r\n // /*\r\n // Helper function to handle asynchronous call\r\n // */\r\n generateAsyncHash: function(parameters, done) {\r\n // this.getCPUCores(function(cores) {\r\n // parameters.push(cores);\r\n // done(parameters);\r\n // });\r\n this.getFonts(function(fonts) {\r\n parameters.push(fonts);\r\n done(parameters);\r\n });\r\n },\r\n\r\n /*\r\n Generate hash from all features\r\n */\r\n get: function(done) {\r\n var parameters = [];\r\n parameters.push(this.getScreenResolution());\r\n parameters.push(this.getTouchSupport());\r\n parameters.push(this.getColorDepth());\r\n parameters.push(this.getTimezoneOffset());\r\n // Removed from here as it is async function\r\n // parameters.push(this.getFonts());\r\n parameters.push(this.getOS());\r\n parameters.push(this.getOSVersion());\r\n parameters.push(this.isMobile());\r\n parameters.push(this.getCPUarchitecture());\r\n // Disabled as it is not supported by IE\r\n //parameters.push(this.audioFingerPrinting());\r\n parameters.push(this.getCPUCores());\r\n\r\n\r\n // Async version of generating hash\r\n this.generateAsyncHash(parameters, function(newParameters) {\r\n var hash = murmurHash3.x86.hash32((newParameters).join(\"~~~\"));\r\n return done(hash, newParameters);\r\n });\r\n // var hash = murmurHash3.x86.hash32((parameters).join(\"~~~\"));\r\n // return done(hash, parameters);\r\n }\r\n};\r\n\r\n if (typeof module === 'object' && typeof exports !== \"undefined\") {\r\n module.exports = CBFjs;\r\n } else {\r\n scope.CBFjs = CBFjs;\r\n }\r\n})(this);","// +----------------------------------------------------------------------+\r\n// | murmurHash3.js v2.1.2 (http://github.com/karanlyons/murmurHash.js) |\r\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\r\n// |----------------------------------------------------------------------|\r\n// | Copyright (c) 2012 Karan Lyons |\r\n// | Freely distributable under the MIT license. |\r\n// +----------------------------------------------------------------------+\r\n\r\n\r\n;(function (root, undefined) {\r\n 'use strict';\r\n\r\n // Create a local object that'll be exported or referenced globally.\r\n var library = {\r\n 'version': '2.1.2',\r\n 'x86': {},\r\n 'x64': {}\r\n };\r\n\r\n\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n // -----------------\r\n\r\n function _x86Multiply(m, n) {\r\n //\r\n // Given two 32bit ints, returns the two multiplied together as a\r\n // 32bit int.\r\n //\r\n\r\n return ((m & 0xffff) * n) + ((((m >>> 16) * n) & 0xffff) << 16);\r\n }\r\n\r\n\r\n function _x86Rotl(m, n) {\r\n //\r\n // Given a 32bit int and an int representing a number of bit positions,\r\n // returns the 32bit int rotated left by that number of positions.\r\n //\r\n\r\n return (m << n) | (m >>> (32 - n));\r\n }\r\n\r\n\r\n function _x86Fmix(h) {\r\n //\r\n // Given a block, returns murmurHash3's final x86 mix of that block.\r\n //\r\n\r\n h ^= h >>> 16;\r\n h = _x86Multiply(h, 0x85ebca6b);\r\n h ^= h >>> 13;\r\n h = _x86Multiply(h, 0xc2b2ae35);\r\n h ^= h >>> 16;\r\n\r\n return h;\r\n }\r\n\r\n\r\n function _x64Add(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // added together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\r\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\r\n var o = [0, 0, 0, 0];\r\n\r\n o[3] += m[3] + n[3];\r\n o[2] += o[3] >>> 16;\r\n o[3] &= 0xffff;\r\n\r\n o[2] += m[2] + n[2];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[1] += m[1] + n[1];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[0] += m[0] + n[0];\r\n o[0] &= 0xffff;\r\n\r\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\r\n }\r\n\r\n\r\n function _x64Multiply(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // multiplied together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\r\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\r\n var o = [0, 0, 0, 0];\r\n\r\n o[3] += m[3] * n[3];\r\n o[2] += o[3] >>> 16;\r\n o[3] &= 0xffff;\r\n\r\n o[2] += m[2] * n[3];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[2] += m[3] * n[2];\r\n o[1] += o[2] >>> 16;\r\n o[2] &= 0xffff;\r\n\r\n o[1] += m[1] * n[3];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[1] += m[2] * n[2];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[1] += m[3] * n[1];\r\n o[0] += o[1] >>> 16;\r\n o[1] &= 0xffff;\r\n\r\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0]);\r\n o[0] &= 0xffff;\r\n\r\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\r\n }\r\n\r\n\r\n function _x64Rotl(m, n) {\r\n //\r\n // Given a 64bit int (as an array of two 32bit ints) and an int\r\n // representing a number of bit positions, returns the 64bit int (as an\r\n // array of two 32bit ints) rotated left by that number of positions.\r\n //\r\n\r\n n %= 64;\r\n\r\n if (n === 32) {\r\n return [m[1], m[0]];\r\n }\r\n\r\n else if (n < 32) {\r\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\r\n }\r\n\r\n else {\r\n n -= 32;\r\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\r\n }\r\n }\r\n\r\n\r\n function _x64LeftShift(m, n) {\r\n //\r\n // Given a 64bit int (as an array of two 32bit ints) and an int\r\n // representing a number of bit positions, returns the 64bit int (as an\r\n // array of two 32bit ints) shifted left by that number of positions.\r\n //\r\n\r\n n %= 64;\r\n\r\n if (n === 0) {\r\n return m;\r\n }\r\n\r\n else if (n < 32) {\r\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\r\n }\r\n\r\n else {\r\n return [m[1] << (n - 32), 0];\r\n }\r\n }\r\n\r\n\r\n function _x64Xor(m, n) {\r\n //\r\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\r\n // xored together as a 64bit int (as an array of two 32bit ints).\r\n //\r\n\r\n return [m[0] ^ n[0], m[1] ^ n[1]];\r\n }\r\n\r\n\r\n function _x64Fmix(h) {\r\n //\r\n // Given a block, returns murmurHash3's final x64 mix of that block.\r\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\r\n // only place where we need to right shift 64bit ints.)\r\n //\r\n\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\r\n h = _x64Xor(h, [0, h[0] >>> 1]);\r\n\r\n return h;\r\n }\r\n\r\n\r\n\r\n\r\n // PUBLIC FUNCTIONS\r\n // ----------------\r\n\r\n library.x86.hash32 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 32 bit hash\r\n // using the x86 flavor of MurmurHash3, as an unsigned int.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 4;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = seed;\r\n\r\n var k1 = 0;\r\n\r\n var c1 = 0xcc9e2d51;\r\n var c2 = 0x1b873593;\r\n\r\n for (var i = 0; i < bytes; i = i + 4) {\r\n k1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24);\r\n\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n\r\n h1 ^= k1;\r\n h1 = _x86Rotl(h1, 13);\r\n h1 = _x86Multiply(h1, 5) + 0xe6546b64;\r\n }\r\n\r\n k1 = 0;\r\n\r\n switch (remainder) {\r\n case 3:\r\n k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\r\n\r\n case 2:\r\n k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\r\n\r\n case 1:\r\n k1 ^= (key.charCodeAt(i) & 0xff);\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n }\r\n\r\n h1 ^= key.length;\r\n h1 = _x86Fmix(h1);\r\n\r\n return h1 >>> 0;\r\n };\r\n\r\n\r\n library.x86.hash128 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 128 bit\r\n // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 16;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = seed;\r\n var h2 = seed;\r\n var h3 = seed;\r\n var h4 = seed;\r\n\r\n var k1 = 0;\r\n var k2 = 0;\r\n var k3 = 0;\r\n var k4 = 0;\r\n\r\n var c1 = 0x239b961b;\r\n var c2 = 0xab0e9789;\r\n var c3 = 0x38b34ae5;\r\n var c4 = 0xa1e38b93;\r\n\r\n for (var i = 0; i < bytes; i = i + 16) {\r\n k1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24);\r\n k2 = ((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24);\r\n k3 = ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24);\r\n k4 = ((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24);\r\n\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n\r\n h1 = _x86Rotl(h1, 19);\r\n h1 += h2;\r\n h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\r\n\r\n k2 = _x86Multiply(k2, c2);\r\n k2 = _x86Rotl(k2, 16);\r\n k2 = _x86Multiply(k2, c3);\r\n h2 ^= k2;\r\n\r\n h2 = _x86Rotl(h2, 17);\r\n h2 += h3;\r\n h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\r\n\r\n k3 = _x86Multiply(k3, c3);\r\n k3 = _x86Rotl(k3, 17);\r\n k3 = _x86Multiply(k3, c4);\r\n h3 ^= k3;\r\n\r\n h3 = _x86Rotl(h3, 15);\r\n h3 += h4;\r\n h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\r\n\r\n k4 = _x86Multiply(k4, c4);\r\n k4 = _x86Rotl(k4, 18);\r\n k4 = _x86Multiply(k4, c1);\r\n h4 ^= k4;\r\n\r\n h4 = _x86Rotl(h4, 13);\r\n h4 += h1;\r\n h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\r\n }\r\n\r\n k1 = 0;\r\n k2 = 0;\r\n k3 = 0;\r\n k4 = 0;\r\n\r\n switch (remainder) {\r\n case 15:\r\n k4 ^= key.charCodeAt(i + 14) << 16;\r\n\r\n case 14:\r\n k4 ^= key.charCodeAt(i + 13) << 8;\r\n\r\n case 13:\r\n k4 ^= key.charCodeAt(i + 12);\r\n k4 = _x86Multiply(k4, c4);\r\n k4 = _x86Rotl(k4, 18);\r\n k4 = _x86Multiply(k4, c1);\r\n h4 ^= k4;\r\n\r\n case 12:\r\n k3 ^= key.charCodeAt(i + 11) << 24;\r\n\r\n case 11:\r\n k3 ^= key.charCodeAt(i + 10) << 16;\r\n\r\n case 10:\r\n k3 ^= key.charCodeAt(i + 9) << 8;\r\n\r\n case 9:\r\n k3 ^= key.charCodeAt(i + 8);\r\n k3 = _x86Multiply(k3, c3);\r\n k3 = _x86Rotl(k3, 17);\r\n k3 = _x86Multiply(k3, c4);\r\n h3 ^= k3;\r\n\r\n case 8:\r\n k2 ^= key.charCodeAt(i + 7) << 24;\r\n\r\n case 7:\r\n k2 ^= key.charCodeAt(i + 6) << 16;\r\n\r\n case 6:\r\n k2 ^= key.charCodeAt(i + 5) << 8;\r\n\r\n case 5:\r\n k2 ^= key.charCodeAt(i + 4);\r\n k2 = _x86Multiply(k2, c2);\r\n k2 = _x86Rotl(k2, 16);\r\n k2 = _x86Multiply(k2, c3);\r\n h2 ^= k2;\r\n\r\n case 4:\r\n k1 ^= key.charCodeAt(i + 3) << 24;\r\n\r\n case 3:\r\n k1 ^= key.charCodeAt(i + 2) << 16;\r\n\r\n case 2:\r\n k1 ^= key.charCodeAt(i + 1) << 8;\r\n\r\n case 1:\r\n k1 ^= key.charCodeAt(i);\r\n k1 = _x86Multiply(k1, c1);\r\n k1 = _x86Rotl(k1, 15);\r\n k1 = _x86Multiply(k1, c2);\r\n h1 ^= k1;\r\n }\r\n\r\n h1 ^= key.length;\r\n h2 ^= key.length;\r\n h3 ^= key.length;\r\n h4 ^= key.length;\r\n\r\n h1 += h2;\r\n h1 += h3;\r\n h1 += h4;\r\n h2 += h1;\r\n h3 += h1;\r\n h4 += h1;\r\n\r\n h1 = _x86Fmix(h1);\r\n h2 = _x86Fmix(h2);\r\n h3 = _x86Fmix(h3);\r\n h4 = _x86Fmix(h4);\r\n\r\n h1 += h2;\r\n h1 += h3;\r\n h1 += h4;\r\n h2 += h1;\r\n h3 += h1;\r\n h4 += h1;\r\n\r\n return (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8);\r\n };\r\n\r\n\r\n library.x64.hash128 = function (key, seed) {\r\n //\r\n // Given a string and an optional seed as an int, returns a 128 bit\r\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\r\n //\r\n\r\n key = key || '';\r\n seed = seed || 0;\r\n\r\n var remainder = key.length % 16;\r\n var bytes = key.length - remainder;\r\n\r\n var h1 = [0, seed];\r\n var h2 = [0, seed];\r\n\r\n var k1 = [0, 0];\r\n var k2 = [0, 0];\r\n\r\n var c1 = [0x87c37b91, 0x114253d5];\r\n var c2 = [0x4cf5ad43, 0x2745937f];\r\n\r\n for (var i = 0; i < bytes; i = i + 16) {\r\n k1 = [((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24), ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24)];\r\n k2 = [((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24), ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24)];\r\n\r\n k1 = _x64Multiply(k1, c1);\r\n k1 = _x64Rotl(k1, 31);\r\n k1 = _x64Multiply(k1, c2);\r\n h1 = _x64Xor(h1, k1);\r\n\r\n h1 = _x64Rotl(h1, 27);\r\n h1 = _x64Add(h1, h2);\r\n h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\r\n\r\n k2 = _x64Multiply(k2, c2);\r\n k2 = _x64Rotl(k2, 33);\r\n k2 = _x64Multiply(k2, c1);\r\n h2 = _x64Xor(h2, k2);\r\n\r\n h2 = _x64Rotl(h2, 31);\r\n h2 = _x64Add(h2, h1);\r\n h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\r\n }\r\n\r\n k1 = [0, 0];\r\n k2 = [0, 0];\r\n\r\n switch(remainder) {\r\n case 15:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 14)], 48));\r\n\r\n case 14:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 13)], 40));\r\n\r\n case 13:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 12)], 32));\r\n\r\n case 12:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 11)], 24));\r\n\r\n case 11:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 10)], 16));\r\n\r\n case 10:\r\n k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 9)], 8));\r\n\r\n case 9:\r\n k2 = _x64Xor(k2, [0, key.charCodeAt(i + 8)]);\r\n k2 = _x64Multiply(k2, c2);\r\n k2 = _x64Rotl(k2, 33);\r\n k2 = _x64Multiply(k2, c1);\r\n h2 = _x64Xor(h2, k2);\r\n\r\n case 8:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 7)], 56));\r\n\r\n case 7:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 6)], 48));\r\n\r\n case 6:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 5)], 40));\r\n\r\n case 5:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 4)], 32));\r\n\r\n case 4:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 3)], 24));\r\n\r\n case 3:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 2)], 16));\r\n\r\n case 2:\r\n k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 1)], 8));\r\n\r\n case 1:\r\n k1 = _x64Xor(k1, [0, key.charCodeAt(i)]);\r\n k1 = _x64Multiply(k1, c1);\r\n k1 = _x64Rotl(k1, 31);\r\n k1 = _x64Multiply(k1, c2);\r\n h1 = _x64Xor(h1, k1);\r\n }\r\n\r\n h1 = _x64Xor(h1, [0, key.length]);\r\n h2 = _x64Xor(h2, [0, key.length]);\r\n\r\n h1 = _x64Add(h1, h2);\r\n h2 = _x64Add(h2, h1);\r\n\r\n h1 = _x64Fmix(h1);\r\n h2 = _x64Fmix(h2);\r\n\r\n h1 = _x64Add(h1, h2);\r\n h2 = _x64Add(h2, h1);\r\n\r\n return (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8);\r\n };\r\n\r\n\r\n\r\n\r\n // INITIALIZATION\r\n // --------------\r\n\r\n // Export murmurHash3 for CommonJS, either as an AMD module or just as part\r\n // of the global object.\r\n if (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = library;\r\n }\r\n\r\n exports.murmurHash3 = library;\r\n }\r\n\r\n else if (typeof define === 'function' && define.amd) {\r\n define([], function() {\r\n return library;\r\n });\r\n }\r\n\r\n else {\r\n // Use murmurHash3.noConflict to restore `murmurHash3` back to its\r\n // original value. Returns a reference to the library object, to allow\r\n // it to be used under a different name.\r\n library._murmurHash3 = root.murmurHash3\r\n\r\n library.noConflict = function () {\r\n root.murmurHash3 = library._murmurHash3;\r\n library._murmurHash3 = undefined;\r\n library.noConflict = undefined;\r\n\r\n return library;\r\n };\r\n\r\n root.murmurHash3 = library;\r\n }\r\n})(this);","/* Edited by Lukas Matta (Add module export) */\r\n/**\r\n * JavaScript code to detect available availability of a\r\n * particular font in a browser using JavaScript and CSS.\r\n *\r\n * Author : Lalit Patel\r\n * Website: http://www.lalit.org/lab/javascript-css-font-detect/\r\n * License: Apache Software License 2.0\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n * Version: 0.15 (21 Sep 2009)\r\n * Changed comparision font to default from sans-default-default,\r\n * as in FF3.0 font of child element didn't fallback\r\n * to parent element if the font is missing.\r\n * Version: 0.2 (04 Mar 2012)\r\n * Comparing font against all the 3 generic font families ie,\r\n * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3\r\n * then that font is 100% not available in the system\r\n * Version: 0.3 (24 Mar 2012)\r\n * Replaced sans with serif in the list of baseFonts\r\n */\r\n\r\n/**\r\n * Usage: d = new Detector();\r\n * d.detect('font name');\r\n */\r\n(function (scope) {\r\n 'use strict';\r\n\r\n /**\r\n * JavaScript code to detect available availability of a\r\n * particular font in a browser using JavaScript and CSS.\r\n *\r\n * Author : Lalit Patel\r\n * Website: http://www.lalit.org/lab/javascript-css-font-detect/\r\n * License: Apache Software License 2.0\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n * Version: 0.15 (21 Sep 2009)\r\n * Changed comparision font to default from sans-default-default,\r\n * as in FF3.0 font of child element didn't fallback\r\n * to parent element if the font is missing.\r\n * Version: 0.2 (04 Mar 2012)\r\n * Comparing font against all the 3 generic font families ie,\r\n * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3\r\n * then that font is 100% not available in the system\r\n * Version: 0.3 (24 Mar 2012)\r\n * Replaced sans with serif in the list of baseFonts\r\n */\r\n\r\n /**\r\n * Usage: d = new Detector();\r\n * d.detect('font name');\r\n */\r\n var Detector = function() {\r\n // a font will be compared against all the three default fonts.\r\n // and if it doesn't match all 3 then that font is not available.\r\n var baseFonts = ['monospace', 'sans-serif', 'serif'];\r\n var fontList = [\r\n \"Andale Mono\", \"Arial\", \"Arial Black\", \"Arial Hebrew\", \"Arial MT\", \"Arial Narrow\", \"Arial Unicode MS\",\r\n \"Bitstream Vera Sans Mono\", \"Book Antiqua\", \"Bookman Old Style\",\r\n \"Calibri\", \"Cambria\", \"Cambria Math\", \"Century\", \"Century Gothic\", \"Century Schoolbook\", \"Comic Sans\", \"Comic Sans MS\", \"Consolas\", \"Courier\", \"Courier New\",\r\n \"Garamond\", \"Geneva\", \"Georgia\",\r\n \"Helvetica\", \"Helvetica Neue\",\r\n \"Impact\",\r\n \"Lucida Bright\", \"Lucida Calligraphy\", \"Lucida Console\", \"Lucida Fax\", \"LUCIDA GRANDE\", \"Lucida Handwriting\", \"Lucida Sans\", \"Lucida Sans Typewriter\", \"Lucida Sans Unicode\",\r\n \"Microsoft Sans Serif\", \"Monaco\", \"Monotype Corsiva\", \"MS Gothic\", \"MS Outlook\", \"MS PGothic\", \"MS Reference Sans Serif\", \"MS Sans Serif\", \"MS Serif\", \"MYRIAD\", \"MYRIAD PRO\",\r\n \"Palatino\", \"Palatino Linotype\",\r\n \"Segoe Print\", \"Segoe Script\", \"Segoe UI\", \"Segoe UI Light\", \"Segoe UI Semibold\", \"Segoe UI Symbol\",\r\n \"Tahoma\", \"Times\", \"Times New Roman\", \"Times New Roman PS\", \"Trebuchet MS\",\r\n \"Verdana\", \"Wingdings\", \"Wingdings 2\", \"Wingdings 3\"\r\n ];\r\n var moreFonts = [\r\n \"Abadi MT Condensed Light\", \"Academy Engraved LET\", \"ADOBE CASLON PRO\", \"Adobe Garamond\", \"ADOBE GARAMOND PRO\", \"Agency FB\", \"Aharoni\", \"Albertus Extra Bold\", \"Albertus Medium\", \"Algerian\", \"Amazone BT\", \"American Typewriter\",\r\n \"American Typewriter Condensed\", \"AmerType Md BT\", \"Andalus\", \"Angsana New\", \"AngsanaUPC\", \"Antique Olive\", \"Aparajita\", \"Apple Chancery\", \"Apple Color Emoji\", \"Apple SD Gothic Neo\", \"Arabic Typesetting\", \"ARCHER\",\r\n \"ARNO PRO\", \"Arrus BT\", \"Aurora Cn BT\", \"AvantGarde Bk BT\", \"AvantGarde Md BT\", \"AVENIR\", \"Ayuthaya\", \"Bandy\", \"Bangla Sangam MN\", \"Bank Gothic\", \"BankGothic Md BT\", \"Baskerville\",\r\n \"Baskerville Old Face\", \"Batang\", \"BatangChe\", \"Bauer Bodoni\", \"Bauhaus 93\", \"Bazooka\", \"Bell MT\", \"Bembo\", \"Benguiat Bk BT\", \"Berlin Sans FB\", \"Berlin Sans FB Demi\", \"Bernard MT Condensed\", \"BernhardFashion BT\", \"BernhardMod BT\", \"Big Caslon\", \"BinnerD\",\r\n \"Blackadder ITC\", \"BlairMdITC TT\", \"Bodoni 72\", \"Bodoni 72 Oldstyle\", \"Bodoni 72 Smallcaps\", \"Bodoni MT\", \"Bodoni MT Black\", \"Bodoni MT Condensed\", \"Bodoni MT Poster Compressed\",\r\n \"Bookshelf Symbol 7\", \"Boulder\", \"Bradley Hand\", \"Bradley Hand ITC\", \"Bremen Bd BT\", \"Britannic Bold\", \"Broadway\", \"Browallia New\", \"BrowalliaUPC\", \"Brush Script MT\", \"Californian FB\", \"Calisto MT\", \"Calligrapher\", \"Candara\",\r\n \"CaslonOpnface BT\", \"Castellar\", \"Centaur\", \"Cezanne\", \"CG Omega\", \"CG Times\", \"Chalkboard\", \"Chalkboard SE\", \"Chalkduster\", \"Charlesworth\", \"Charter Bd BT\", \"Charter BT\", \"Chaucer\",\r\n \"ChelthmITC Bk BT\", \"Chiller\", \"Clarendon\", \"Clarendon Condensed\", \"CloisterBlack BT\", \"Cochin\", \"Colonna MT\", \"Constantia\", \"Cooper Black\", \"Copperplate\", \"Copperplate Gothic\", \"Copperplate Gothic Bold\",\r\n \"Copperplate Gothic Light\", \"CopperplGoth Bd BT\", \"Corbel\", \"Cordia New\", \"CordiaUPC\", \"Cornerstone\", \"Coronet\", \"Cuckoo\", \"Curlz MT\", \"DaunPenh\", \"Dauphin\", \"David\", \"DB LCD Temp\", \"DELICIOUS\", \"Denmark\",\r\n \"DFKai-SB\", \"Didot\", \"DilleniaUPC\", \"DIN\", \"DokChampa\", \"Dotum\", \"DotumChe\", \"Ebrima\", \"Edwardian Script ITC\", \"Elephant\", \"English 111 Vivace BT\", \"Engravers MT\", \"EngraversGothic BT\", \"Eras Bold ITC\", \"Eras Demi ITC\", \"Eras Light ITC\", \"Eras Medium ITC\",\r\n \"EucrosiaUPC\", \"Euphemia\", \"Euphemia UCAS\", \"EUROSTILE\", \"Exotc350 Bd BT\", \"FangSong\", \"Felix Titling\", \"Fixedsys\", \"FONTIN\", \"Footlight MT Light\", \"Forte\",\r\n \"FrankRuehl\", \"Fransiscan\", \"Freefrm721 Blk BT\", \"FreesiaUPC\", \"Freestyle Script\", \"French Script MT\", \"FrnkGothITC Bk BT\", \"Fruitger\", \"FRUTIGER\",\r\n \"Futura\", \"Futura Bk BT\", \"Futura Lt BT\", \"Futura Md BT\", \"Futura ZBlk BT\", \"FuturaBlack BT\", \"Gabriola\", \"Galliard BT\", \"Gautami\", \"Geeza Pro\", \"Geometr231 BT\", \"Geometr231 Hv BT\", \"Geometr231 Lt BT\", \"GeoSlab 703 Lt BT\",\r\n \"GeoSlab 703 XBd BT\", \"Gigi\", \"Gill Sans\", \"Gill Sans MT\", \"Gill Sans MT Condensed\", \"Gill Sans MT Ext Condensed Bold\", \"Gill Sans Ultra Bold\", \"Gill Sans Ultra Bold Condensed\", \"Gisha\", \"Gloucester MT Extra Condensed\", \"GOTHAM\", \"GOTHAM BOLD\",\r\n \"Goudy Old Style\", \"Goudy Stout\", \"GoudyHandtooled BT\", \"GoudyOLSt BT\", \"Gujarati Sangam MN\", \"Gulim\", \"GulimChe\", \"Gungsuh\", \"GungsuhChe\", \"Gurmukhi MN\", \"Haettenschweiler\", \"Harlow Solid Italic\", \"Harrington\", \"Heather\", \"Heiti SC\", \"Heiti TC\", \"HELV\",\r\n \"Herald\", \"High Tower Text\", \"Hiragino Kaku Gothic ProN\", \"Hiragino Mincho ProN\", \"Hoefler Text\", \"Humanst 521 Cn BT\", \"Humanst521 BT\", \"Humanst521 Lt BT\", \"Imprint MT Shadow\", \"Incised901 Bd BT\", \"Incised901 BT\",\r\n \"Incised901 Lt BT\", \"INCONSOLATA\", \"Informal Roman\", \"Informal011 BT\", \"INTERSTATE\", \"IrisUPC\", \"Iskoola Pota\", \"JasmineUPC\", \"Jazz LET\", \"Jenson\", \"Jester\", \"Jokerman\", \"Juice ITC\", \"Kabel Bk BT\", \"Kabel Ult BT\", \"Kailasa\", \"KaiTi\", \"Kalinga\", \"Kannada Sangam MN\",\r\n \"Kartika\", \"Kaufmann Bd BT\", \"Kaufmann BT\", \"Khmer UI\", \"KodchiangUPC\", \"Kokila\", \"Korinna BT\", \"Kristen ITC\", \"Krungthep\", \"Kunstler Script\", \"Lao UI\", \"Latha\", \"Leelawadee\", \"Letter Gothic\", \"Levenim MT\", \"LilyUPC\", \"Lithograph\", \"Lithograph Light\", \"Long Island\",\r\n \"Lydian BT\", \"Magneto\", \"Maiandra GD\", \"Malayalam Sangam MN\", \"Malgun Gothic\",\r\n \"Mangal\", \"Marigold\", \"Marion\", \"Marker Felt\", \"Market\", \"Marlett\", \"Matisse ITC\", \"Matura MT Script Capitals\", \"Meiryo\", \"Meiryo UI\", \"Microsoft Himalaya\", \"Microsoft JhengHei\", \"Microsoft New Tai Lue\", \"Microsoft PhagsPa\", \"Microsoft Tai Le\",\r\n \"Microsoft Uighur\", \"Microsoft YaHei\", \"Microsoft Yi Baiti\", \"MingLiU\", \"MingLiU_HKSCS\", \"MingLiU_HKSCS-ExtB\", \"MingLiU-ExtB\", \"Minion\", \"Minion Pro\", \"Miriam\", \"Miriam Fixed\", \"Mistral\", \"Modern\", \"Modern No. 20\", \"Mona Lisa Solid ITC TT\", \"Mongolian Baiti\",\r\n \"MONO\", \"MoolBoran\", \"Mrs Eaves\", \"MS LineDraw\", \"MS Mincho\", \"MS PMincho\", \"MS Reference Specialty\", \"MS UI Gothic\", \"MT Extra\", \"MUSEO\", \"MV Boli\",\r\n \"Nadeem\", \"Narkisim\", \"NEVIS\", \"News Gothic\", \"News GothicMT\", \"NewsGoth BT\", \"Niagara Engraved\", \"Niagara Solid\", \"Noteworthy\", \"NSimSun\", \"Nyala\", \"OCR A Extended\", \"Old Century\", \"Old English Text MT\", \"Onyx\", \"Onyx BT\", \"OPTIMA\", \"Oriya Sangam MN\",\r\n \"OSAKA\", \"OzHandicraft BT\", \"Palace Script MT\", \"Papyrus\", \"Parchment\", \"Party LET\", \"Pegasus\", \"Perpetua\", \"Perpetua Titling MT\", \"PetitaBold\", \"Pickwick\", \"Plantagenet Cherokee\", \"Playbill\", \"PMingLiU\", \"PMingLiU-ExtB\",\r\n \"Poor Richard\", \"Poster\", \"PosterBodoni BT\", \"PRINCETOWN LET\", \"Pristina\", \"PTBarnum BT\", \"Pythagoras\", \"Raavi\", \"Rage Italic\", \"Ravie\", \"Ribbon131 Bd BT\", \"Rockwell\", \"Rockwell Condensed\", \"Rockwell Extra Bold\", \"Rod\", \"Roman\", \"Sakkal Majalla\",\r\n \"Santa Fe LET\", \"Savoye LET\", \"Sceptre\", \"Script\", \"Script MT Bold\", \"SCRIPTINA\", \"Serifa\", \"Serifa BT\", \"Serifa Th BT\", \"ShelleyVolante BT\", \"Sherwood\",\r\n \"Shonar Bangla\", \"Showcard Gothic\", \"Shruti\", \"Signboard\", \"SILKSCREEN\", \"SimHei\", \"Simplified Arabic\", \"Simplified Arabic Fixed\", \"SimSun\", \"SimSun-ExtB\", \"Sinhala Sangam MN\", \"Sketch Rockwell\", \"Skia\", \"Small Fonts\", \"Snap ITC\", \"Snell Roundhand\", \"Socket\",\r\n \"Souvenir Lt BT\", \"Staccato222 BT\", \"Steamer\", \"Stencil\", \"Storybook\", \"Styllo\", \"Subway\", \"Swis721 BlkEx BT\", \"Swiss911 XCm BT\", \"Sylfaen\", \"Synchro LET\", \"System\", \"Tamil Sangam MN\", \"Technical\", \"Teletype\", \"Telugu Sangam MN\", \"Tempus Sans ITC\",\r\n \"Terminal\", \"Thonburi\", \"Traditional Arabic\", \"Trajan\", \"TRAJAN PRO\", \"Tristan\", \"Tubular\", \"Tunga\", \"Tw Cen MT\", \"Tw Cen MT Condensed\", \"Tw Cen MT Condensed Extra Bold\",\r\n \"TypoUpright BT\", \"Unicorn\", \"Univers\", \"Univers CE 55 Medium\", \"Univers Condensed\", \"Utsaah\", \"Vagabond\", \"Vani\", \"Vijaya\", \"Viner Hand ITC\", \"VisualUI\", \"Vivaldi\", \"Vladimir Script\", \"Vrinda\", \"Westminster\", \"WHITNEY\", \"Wide Latin\",\r\n \"ZapfEllipt BT\", \"ZapfHumnst BT\", \"ZapfHumnst Dm BT\", \"Zapfino\", \"Zurich BlkEx BT\", \"Zurich Ex BT\", \"ZWAdobeF\"\r\n ];\r\n\r\n //we use m or w because these two characters take up the maximum width.\r\n // And we use a LLi so that the same matching fonts can get separated\r\n var testString = \"mmmmmmmmmmlli\";\r\n\r\n //we test using 72px font size, we may use any size. I guess larger the better.\r\n var testSize = '72px';\r\n\r\n var h = document.getElementsByTagName(\"body\")[0];\r\n\r\n // create a SPAN in the document to get the width of the text we use to test\r\n var s = document.createElement(\"span\");\r\n s.style.fontSize = testSize;\r\n s.innerHTML = testString;\r\n var defaultWidth = {};\r\n var defaultHeight = {};\r\n for (var index in baseFonts) {\r\n //get the default width for the three base fonts\r\n s.style.fontFamily = baseFonts[index];\r\n h.appendChild(s);\r\n defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font\r\n defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font\r\n h.removeChild(s);\r\n }\r\n this.testAllFonts = function() {\r\n var detected = [];\r\n for (var font in fontList) {\r\n if (this.detect(fontList[font]))\r\n detected.push(fontList[font]);\r\n }\r\n // for (var font in moreFonts) {\r\n // if (this.detect(moreFonts[font]))\r\n // detected.push(moreFonts[font]);\r\n // }\r\n return detected;\r\n }\r\n\r\n this.detect = function(font) {\r\n var detected = false;\r\n for (var index in baseFonts) {\r\n s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback.\r\n h.appendChild(s);\r\n var matched = (s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]);\r\n h.removeChild(s);\r\n detected = detected || matched;\r\n }\r\n return detected;\r\n }\r\n\r\n };\r\n\r\n if (typeof module === 'object' && typeof exports !== \"undefined\") {\r\n module.exports = Detector;\r\n } else {\r\n scope.Detector = Detector;\r\n }\r\n})(window);","/*!\r\n * UAParser.js v0.7.18\r\n * Lightweight JavaScript-based User-Agent string parser\r\n * https://github.com/faisalman/ua-parser-js\r\n *\r\n * Copyright © 2012-2016 Faisal Salman \r\n * Dual licensed under GPLv2 or MIT\r\n */\r\n\r\n(function (window, undefined) {\r\n\r\n 'use strict';\r\n\r\n //////////////\r\n // Constants\r\n /////////////\r\n\r\n\r\n var LIBVERSION = '0.7.18',\r\n EMPTY = '',\r\n UNKNOWN = '?',\r\n FUNC_TYPE = 'function',\r\n UNDEF_TYPE = 'undefined',\r\n OBJ_TYPE = 'object',\r\n STR_TYPE = 'string',\r\n MAJOR = 'major', // deprecated\r\n MODEL = 'model',\r\n NAME = 'name',\r\n TYPE = 'type',\r\n VENDOR = 'vendor',\r\n VERSION = 'version',\r\n ARCHITECTURE= 'architecture',\r\n CONSOLE = 'console',\r\n MOBILE = 'mobile',\r\n TABLET = 'tablet',\r\n SMARTTV = 'smarttv',\r\n WEARABLE = 'wearable',\r\n EMBEDDED = 'embedded';\r\n\r\n\r\n ///////////\r\n // Helper\r\n //////////\r\n\r\n\r\n var util = {\r\n extend : function (regexes, extensions) {\r\n var margedRegexes = {};\r\n for (var i in regexes) {\r\n if (extensions[i] && extensions[i].length % 2 === 0) {\r\n margedRegexes[i] = extensions[i].concat(regexes[i]);\r\n } else {\r\n margedRegexes[i] = regexes[i];\r\n }\r\n }\r\n return margedRegexes;\r\n },\r\n has : function (str1, str2) {\r\n if (typeof str1 === \"string\") {\r\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\r\n } else {\r\n return false;\r\n }\r\n },\r\n lowerize : function (str) {\r\n return str.toLowerCase();\r\n },\r\n major : function (version) {\r\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\r\n },\r\n trim : function (str) {\r\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n }\r\n };\r\n\r\n\r\n ///////////////\r\n // Map helper\r\n //////////////\r\n\r\n\r\n var mapper = {\r\n\r\n rgx : function (ua, arrays) {\r\n\r\n //var result = {},\r\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\r\n\r\n /*// construct object barebones\r\n for (p = 0; p < args[1].length; p++) {\r\n q = args[1][p];\r\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\r\n }*/\r\n\r\n // loop through all regexes maps\r\n while (i < arrays.length && !matches) {\r\n\r\n var regex = arrays[i], // even sequence (0,2,4,..)\r\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\r\n j = k = 0;\r\n\r\n // try matching uastring with regexes\r\n while (j < regex.length && !matches) {\r\n\r\n matches = regex[j++].exec(ua);\r\n\r\n if (!!matches) {\r\n for (p = 0; p < props.length; p++) {\r\n match = matches[++k];\r\n q = props[p];\r\n // check if given property is actually array\r\n if (typeof q === OBJ_TYPE && q.length > 0) {\r\n if (q.length == 2) {\r\n if (typeof q[1] == FUNC_TYPE) {\r\n // assign modified match\r\n this[q[0]] = q[1].call(this, match);\r\n } else {\r\n // assign given value, ignore regex match\r\n this[q[0]] = q[1];\r\n }\r\n } else if (q.length == 3) {\r\n // check whether function or regex\r\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\r\n // call function (usually string mapper)\r\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\r\n } else {\r\n // sanitize match using given regex\r\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\r\n }\r\n } else if (q.length == 4) {\r\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\r\n }\r\n } else {\r\n this[q] = match ? match : undefined;\r\n }\r\n }\r\n }\r\n }\r\n i += 2;\r\n }\r\n // console.log(this);\r\n //return this;\r\n },\r\n\r\n str : function (str, map) {\r\n\r\n for (var i in map) {\r\n // check if array\r\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\r\n for (var j = 0; j < map[i].length; j++) {\r\n if (util.has(map[i][j], str)) {\r\n return (i === UNKNOWN) ? undefined : i;\r\n }\r\n }\r\n } else if (util.has(map[i], str)) {\r\n return (i === UNKNOWN) ? undefined : i;\r\n }\r\n }\r\n return str;\r\n }\r\n };\r\n\r\n\r\n ///////////////\r\n // String map\r\n //////////////\r\n\r\n\r\n var maps = {\r\n\r\n browser : {\r\n oldsafari : {\r\n version : {\r\n '1.0' : '/8',\r\n '1.2' : '/1',\r\n '1.3' : '/3',\r\n '2.0' : '/412',\r\n '2.0.2' : '/416',\r\n '2.0.3' : '/417',\r\n '2.0.4' : '/419',\r\n '?' : '/'\r\n }\r\n }\r\n },\r\n\r\n device : {\r\n amazon : {\r\n model : {\r\n 'Fire Phone' : ['SD', 'KF']\r\n }\r\n },\r\n sprint : {\r\n model : {\r\n 'Evo Shift 4G' : '7373KT'\r\n },\r\n vendor : {\r\n 'HTC' : 'APA',\r\n 'Sprint' : 'Sprint'\r\n }\r\n }\r\n },\r\n\r\n os : {\r\n windows : {\r\n version : {\r\n 'ME' : '4.90',\r\n 'NT 3.11' : 'NT3.51',\r\n 'NT 4.0' : 'NT4.0',\r\n '2000' : 'NT 5.0',\r\n 'XP' : ['NT 5.1', 'NT 5.2'],\r\n 'Vista' : 'NT 6.0',\r\n '7' : 'NT 6.1',\r\n '8' : 'NT 6.2',\r\n '8.1' : 'NT 6.3',\r\n '10' : ['NT 6.4', 'NT 10.0'],\r\n 'RT' : 'ARM'\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n //////////////\r\n // Regex map\r\n /////////////\r\n\r\n\r\n var regexes = {\r\n\r\n browser : [[\r\n\r\n // Presto based\r\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\r\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\r\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\r\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\r\n ], [NAME, VERSION], [\r\n\r\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\r\n ], [[NAME, 'Opera Mini'], VERSION], [\r\n\r\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\r\n ], [[NAME, 'Opera'], VERSION], [\r\n\r\n // Mixed\r\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\r\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\r\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\r\n\r\n // Trident based\r\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\r\n // Avant/IEMobile/SlimBrowser/Baidu\r\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\r\n\r\n // Webkit/KHTML based\r\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\r\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\\/([\\w\\.-]+)/i\r\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\r\n ], [NAME, VERSION], [\r\n\r\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\r\n ], [[NAME, 'IE'], VERSION], [\r\n\r\n /(edge|edgios|edgea)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\r\n ], [[NAME, 'Edge'], VERSION], [\r\n\r\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\r\n ], [[NAME, 'Yandex'], VERSION], [\r\n\r\n /(puffin)\\/([\\w\\.]+)/i // Puffin\r\n ], [[NAME, 'Puffin'], VERSION], [\r\n\r\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i\r\n // UCBrowser\r\n ], [[NAME, 'UCBrowser'], VERSION], [\r\n\r\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\r\n ], [[NAME, /_/g, ' '], VERSION], [\r\n\r\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\r\n ], [[NAME, 'WeChat'], VERSION], [\r\n\r\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\r\n ], [NAME, VERSION], [\r\n\r\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\r\n ], [NAME, VERSION], [\r\n\r\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\r\n ], [NAME, VERSION], [\r\n\r\n /(BIDUBrowser)[\\/\\s]?([\\w\\.]+)/i // Baidu Browser\r\n ], [NAME, VERSION], [\r\n\r\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\r\n ], [NAME, VERSION], [\r\n\r\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\r\n ], [NAME], [\r\n\r\n /(LBBROWSER)/i // LieBao Browser\r\n ], [NAME], [\r\n\r\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\r\n ], [VERSION, [NAME, 'MIUI Browser']], [\r\n\r\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\r\n ], [VERSION, [NAME, 'Facebook']], [\r\n\r\n /safari\\s(line)\\/([\\w\\.]+)/i, // Line App for iOS\r\n /android.+(line)\\/([\\w\\.]+)\\/iab/i // Line App for Android\r\n ], [NAME, VERSION], [\r\n\r\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\r\n ], [VERSION, [NAME, 'Chrome Headless']], [\r\n\r\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\r\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\r\n\r\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\r\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\r\n\r\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\r\n ], [VERSION, [NAME, 'Android Browser']], [\r\n\r\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\r\n // Chrome/OmniWeb/Arora/Tizen/Nokia\r\n ], [NAME, VERSION], [\r\n\r\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\r\n ], [[NAME, 'Dolphin'], VERSION], [\r\n\r\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\r\n ], [[NAME, 'Chrome'], VERSION], [\r\n\r\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\r\n ], [[NAME, 'Opera Coast'], VERSION], [\r\n\r\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\r\n ], [VERSION, [NAME, 'Firefox']], [\r\n\r\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\r\n ], [VERSION, [NAME, 'Mobile Safari']], [\r\n\r\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\r\n ], [VERSION, NAME], [\r\n\r\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\r\n ], [[NAME, 'GSA'], VERSION], [\r\n\r\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\r\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\r\n\r\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\r\n /(webkit|khtml)\\/([\\w\\.]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n // Gecko based\r\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\r\n ], [[NAME, 'Netscape'], VERSION], [\r\n /(swiftfox)/i, // Swiftfox\r\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\r\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\r\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\r\n\r\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\r\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\r\n\r\n // Other\r\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\r\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\r\n /(links)\\s\\(([\\w\\.]+)/i, // Links\r\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\r\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\r\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\r\n ], [NAME, VERSION]\r\n\r\n /* /////////////////////\r\n // Media players BEGIN\r\n ////////////////////////\r\n\r\n , [\r\n\r\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\r\n /(coremedia) v((\\d+)[\\w\\._]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\r\n ], [NAME, VERSION], [\r\n\r\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\r\n ], [NAME, VERSION], [\r\n\r\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\r\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\r\n // NSPlayer/PSP-InternetRadioPlayer/Videos\r\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\r\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\r\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\r\n ], [NAME, VERSION], [\r\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\r\n ], [NAME, VERSION], [\r\n\r\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\r\n ], [[NAME, 'Flip Player'], VERSION], [\r\n\r\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\r\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\r\n ], [NAME], [\r\n\r\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\r\n // Gstreamer\r\n ], [NAME, VERSION], [\r\n\r\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\r\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\r\n // Java/urllib/requests/wget/cURL\r\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\r\n ], [NAME, VERSION], [\r\n\r\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\r\n ], [[NAME, /_/g, ' '], VERSION], [\r\n\r\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\r\n // MPlayer SVN\r\n ], [NAME, VERSION], [\r\n\r\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\r\n ], [NAME, VERSION], [\r\n\r\n /(mplayer)/i, // MPlayer (no other info)\r\n /(yourmuze)/i, // YourMuze\r\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\r\n ], [NAME], [\r\n\r\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\r\n ], [NAME, VERSION], [\r\n\r\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\r\n ], [NAME, VERSION], [\r\n\r\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\r\n ], [NAME, VERSION], [\r\n\r\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\r\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\r\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\r\n ], [NAME, VERSION], [\r\n\r\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\r\n // inlight radio\r\n ], [NAME], [\r\n\r\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\r\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\r\n // SoundTap/Totem/Stagefright/Streamium\r\n ], [NAME, VERSION], [\r\n\r\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\r\n ], [NAME, VERSION], [\r\n\r\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\r\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\r\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\r\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\r\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\r\n ], [NAME, VERSION], [\r\n\r\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\r\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\r\n ], [[NAME, /-/g, ' '], VERSION], [\r\n\r\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\r\n // Windows Media Server\r\n ], [VERSION, [NAME, 'Windows']], [\r\n\r\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\r\n ], [NAME, VERSION], [\r\n\r\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\r\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\r\n ], [[NAME, 'rad.io'], VERSION]\r\n\r\n //////////////////////\r\n // Media players END\r\n ////////////////////*/\r\n\r\n ],\r\n\r\n cpu : [[\r\n\r\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\r\n ], [[ARCHITECTURE, 'amd64']], [\r\n\r\n /(ia32(?=;))/i // IA32 (quicktime)\r\n ], [[ARCHITECTURE, util.lowerize]], [\r\n\r\n /((?:i[346]|x)86)[;\\)]/i // IA32\r\n ], [[ARCHITECTURE, 'ia32']], [\r\n\r\n // PocketPC mistakenly identified as PowerPC\r\n /windows\\s(ce|mobile);\\sppc;/i\r\n ], [[ARCHITECTURE, 'arm']], [\r\n\r\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\r\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\r\n\r\n /(sun4\\w)[;\\)]/i // SPARC\r\n ], [[ARCHITECTURE, 'sparc']], [\r\n\r\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+[;l]))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\r\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\r\n ], [[ARCHITECTURE, util.lowerize]]\r\n ],\r\n\r\n device : [[\r\n\r\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\r\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\r\n\r\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\r\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\r\n\r\n /(apple\\s{0,1}tv)/i // Apple TV\r\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\r\n\r\n /(archos)\\s(gamepad2?)/i, // Archos\r\n /(hp).+(touchpad)/i, // HP TouchPad\r\n /(hp).+(tablet)/i, // HP Tablet\r\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\r\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\r\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\r\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\r\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\r\n /android.+aft([bms])\\sbuild/i // Fire TV\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\r\n\r\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\r\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\r\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\r\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\r\n\r\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\r\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\r\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\r\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\r\n /(asus)-?(\\w+)/i // Asus\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\r\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\r\n // Asus Tablets\r\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\r\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\r\n\r\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\r\n /(sony)?(?:sgp.+)\\sbuild\\//i\r\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\r\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\r\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n\r\n /\\s(ouya)\\s/i, // Ouya\r\n /(nintendo)\\s([wids3u]+)/i // Nintendo\r\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\r\n\r\n /android.+;\\s(shield)\\sbuild/i // Nvidia\r\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\r\n\r\n /(playstation\\s[34portablevi]+)/i // Playstation\r\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\r\n\r\n /(sprint\\s(\\w+))/i // Sprint Phones\r\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\r\n\r\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\r\n /(zte)-(\\w*)/i, // ZTE\r\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\r\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\r\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\r\n\r\n /(nexus\\s9)/i // HTC Nexus 9\r\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\r\n\r\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\r\n /(nexus\\s6p)/i // Huawei\r\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\r\n\r\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\r\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\r\n /(kin\\.[onetw]{3})/i // Microsoft Kin\r\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\r\n\r\n // Motorola\r\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\r\n /mot[\\s-]?(\\w*)/i,\r\n /(XT\\d{3,4}) build\\//i,\r\n /(nexus\\s6)/i\r\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\r\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\r\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\r\n\r\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\r\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\r\n\r\n /hbbtv.+maple;(\\d+)/i\r\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\r\n\r\n /\\(dtv[\\);].+(aquos)/i // Sharp\r\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\r\n\r\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\r\n /((SM-T\\w+))/i\r\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\r\n /smart-tv.+(samsung)/i\r\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\r\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\r\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\r\n /sec-((sgh\\w+))/i\r\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /sie-(\\w*)/i // Siemens\r\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\r\n\r\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\r\n /(nokia)[\\s_-]?([\\w-]*)/i\r\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\r\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\r\n\r\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\r\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\r\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\r\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\r\n /(lg) netcast\\.tv/i // LG SmartTV\r\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\r\n /(nexus\\s[45])/i, // LG\r\n /lg[e;\\s\\/-]+(\\w*)/i,\r\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\r\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\r\n\r\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\r\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\r\n\r\n /linux;.+((jolla));/i // Jolla\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\r\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\r\n\r\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n /crkey/i // Google Chromecast\r\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\r\n\r\n /android.+;\\s(glass)\\s\\d/i // Google Glass\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\r\n\r\n /android.+;\\s(pixel c)\\s/i // Google Pixel C\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\r\n\r\n /android.+;\\s(pixel [xl2]{1,2}|pixel)\\s/i // Google Pixel\r\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\r\n\r\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\r\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\r\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, // Xiaomi Mi\r\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\r\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\r\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\r\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\r\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\r\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\r\n\r\n /android.+a000(1)\\s+build/i, // OnePlus\r\n /android.+oneplus\\s(a\\d{4})\\s+build/i\r\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\r\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\r\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\r\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\r\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\r\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\r\n\r\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\r\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\r\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\r\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\r\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\r\n\r\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\r\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\r\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\r\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\r\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\r\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\r\n\r\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\r\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\r\n\r\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\r\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\r\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\r\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\r\n\r\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\r\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\r\n\r\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\r\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\r\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\r\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\r\n\r\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\r\n ], [MODEL, [VENDOR, 'Generic']]\r\n\r\n\r\n /*//////////////////////////\r\n // TODO: move to string map\r\n ////////////////////////////\r\n\r\n /(C6603)/i // Sony Xperia Z C6603\r\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n /(C6903)/i // Sony Xperia Z 1\r\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n\r\n /(SM-G900[F|H])/i // Samsung Galaxy S5\r\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G7102)/i // Samsung Galaxy Grand 2\r\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\r\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-G313HZ)/i // Samsung Galaxy V\r\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\r\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\r\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\r\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\r\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\r\n\r\n /(T3C)/i // Advan Vandroid T3C\r\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\r\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\r\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\r\n /(ADVAN S4A)/i // Advan Vandroid S4A\r\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\r\n\r\n /(V972M)/i // ZTE V972M\r\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\r\n\r\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\r\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\r\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\r\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\r\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\r\n\r\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\r\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\r\n\r\n /////////////\r\n // END TODO\r\n ///////////*/\r\n\r\n ],\r\n\r\n engine : [[\r\n\r\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\r\n ], [VERSION, [NAME, 'EdgeHTML']], [\r\n\r\n /(presto)\\/([\\w\\.]+)/i, // Presto\r\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\r\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\r\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\r\n ], [NAME, VERSION], [\r\n\r\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\r\n ], [VERSION, NAME]\r\n ],\r\n\r\n os : [[\r\n\r\n // Windows based\r\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\r\n ], [NAME, VERSION], [\r\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\r\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\r\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\r\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\r\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\r\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\r\n\r\n // Mobile/Embedded OS\r\n /\\((bb)(10);/i // BlackBerry 10\r\n ], [[NAME, 'BlackBerry'], VERSION], [\r\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\r\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\r\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]*)/i,\r\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\r\n /linux;.+(sailfish);/i // Sailfish OS\r\n ], [NAME, VERSION], [\r\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\r\n ], [[NAME, 'Symbian'], VERSION], [\r\n /\\((series40);/i // Series 40\r\n ], [NAME], [\r\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\r\n ], [[NAME, 'Firefox OS'], VERSION], [\r\n\r\n // Console\r\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\r\n\r\n // GNU/Linux based\r\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\r\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\r\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\r\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\r\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\r\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\r\n /(gnu)\\s?([\\w\\.]*)/i // GNU\r\n ], [NAME, VERSION], [\r\n\r\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\r\n ], [[NAME, 'Chromium OS'], VERSION],[\r\n\r\n // Solaris\r\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\r\n ], [[NAME, 'Solaris'], VERSION], [\r\n\r\n // BSD based\r\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\r\n ], [NAME, VERSION],[\r\n\r\n /(haiku)\\s(\\w+)/i // Haiku\r\n ], [NAME, VERSION],[\r\n\r\n /cfnetwork\\/.+darwin/i,\r\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\r\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\r\n\r\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\r\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\r\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\r\n\r\n // Other\r\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\r\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\r\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,\r\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS\r\n /(unix)\\s?([\\w\\.]*)/i // UNIX\r\n ], [NAME, VERSION]\r\n ]\r\n };\r\n\r\n\r\n /////////////////\r\n // Constructor\r\n ////////////////\r\n /*\r\n var Browser = function (name, version) {\r\n this[NAME] = name;\r\n this[VERSION] = version;\r\n };\r\n var CPU = function (arch) {\r\n this[ARCHITECTURE] = arch;\r\n };\r\n var Device = function (vendor, model, type) {\r\n this[VENDOR] = vendor;\r\n this[MODEL] = model;\r\n this[TYPE] = type;\r\n };\r\n var Engine = Browser;\r\n var OS = Browser;\r\n */\r\n var UAParser = function (uastring, extensions) {\r\n\r\n if (typeof uastring === 'object') {\r\n extensions = uastring;\r\n uastring = undefined;\r\n }\r\n\r\n if (!(this instanceof UAParser)) {\r\n return new UAParser(uastring, extensions).getResult();\r\n }\r\n\r\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\r\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\r\n //var browser = new Browser();\r\n //var cpu = new CPU();\r\n //var device = new Device();\r\n //var engine = new Engine();\r\n //var os = new OS();\r\n\r\n this.getBrowser = function () {\r\n var browser = { name: undefined, version: undefined };\r\n mapper.rgx.call(browser, ua, rgxmap.browser);\r\n browser.major = util.major(browser.version); // deprecated\r\n return browser;\r\n };\r\n this.getCPU = function () {\r\n var cpu = { architecture: undefined };\r\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\r\n return cpu;\r\n };\r\n this.getDevice = function () {\r\n var device = { vendor: undefined, model: undefined, type: undefined };\r\n mapper.rgx.call(device, ua, rgxmap.device);\r\n return device;\r\n };\r\n this.getEngine = function () {\r\n var engine = { name: undefined, version: undefined };\r\n mapper.rgx.call(engine, ua, rgxmap.engine);\r\n return engine;\r\n };\r\n this.getOS = function () {\r\n var os = { name: undefined, version: undefined };\r\n mapper.rgx.call(os, ua, rgxmap.os);\r\n return os;\r\n };\r\n this.getResult = function () {\r\n return {\r\n ua : this.getUA(),\r\n browser : this.getBrowser(),\r\n engine : this.getEngine(),\r\n os : this.getOS(),\r\n device : this.getDevice(),\r\n cpu : this.getCPU()\r\n };\r\n };\r\n this.getUA = function () {\r\n return ua;\r\n };\r\n this.setUA = function (uastring) {\r\n ua = uastring;\r\n //browser = new Browser();\r\n //cpu = new CPU();\r\n //device = new Device();\r\n //engine = new Engine();\r\n //os = new OS();\r\n return this;\r\n };\r\n return this;\r\n };\r\n\r\n UAParser.VERSION = LIBVERSION;\r\n UAParser.BROWSER = {\r\n NAME : NAME,\r\n MAJOR : MAJOR, // deprecated\r\n VERSION : VERSION\r\n };\r\n UAParser.CPU = {\r\n ARCHITECTURE : ARCHITECTURE\r\n };\r\n UAParser.DEVICE = {\r\n MODEL : MODEL,\r\n VENDOR : VENDOR,\r\n TYPE : TYPE,\r\n CONSOLE : CONSOLE,\r\n MOBILE : MOBILE,\r\n SMARTTV : SMARTTV,\r\n TABLET : TABLET,\r\n WEARABLE: WEARABLE,\r\n EMBEDDED: EMBEDDED\r\n };\r\n UAParser.ENGINE = {\r\n NAME : NAME,\r\n VERSION : VERSION\r\n };\r\n UAParser.OS = {\r\n NAME : NAME,\r\n VERSION : VERSION\r\n };\r\n //UAParser.Utils = util;\r\n\r\n ///////////\r\n // Export\r\n //////////\r\n\r\n\r\n // check js environment\r\n if (typeof(exports) !== UNDEF_TYPE) {\r\n // nodejs env\r\n if (typeof module !== UNDEF_TYPE && module.exports) {\r\n exports = module.exports = UAParser;\r\n }\r\n // TODO: test!!!!!!!!\r\n /*\r\n if (require && require.main === module && process) {\r\n // cli\r\n var jsonize = function (arr) {\r\n var res = [];\r\n for (var i in arr) {\r\n res.push(new UAParser(arr[i]).getResult());\r\n }\r\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\r\n };\r\n if (process.stdin.isTTY) {\r\n // via args\r\n jsonize(process.argv.slice(2));\r\n } else {\r\n // via pipe\r\n var str = '';\r\n process.stdin.on('readable', function() {\r\n var read = process.stdin.read();\r\n if (read !== null) {\r\n str += read;\r\n }\r\n });\r\n process.stdin.on('end', function () {\r\n jsonize(str.replace(/\\n$/, '').split('\\n'));\r\n });\r\n }\r\n }\r\n */\r\n exports.UAParser = UAParser;\r\n } else {\r\n // requirejs env (optional)\r\n if (typeof(define) === FUNC_TYPE && define.amd) {\r\n define(function () {\r\n return UAParser;\r\n });\r\n } else if (window) {\r\n // browser env\r\n window.UAParser = UAParser;\r\n }\r\n }\r\n\r\n // jQuery/Zepto specific (optional)\r\n // Note:\r\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\r\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\r\n // and we should catch that.\r\n var $ = window && (window.jQuery || window.Zepto);\r\n if (typeof $ !== UNDEF_TYPE) {\r\n var parser = new UAParser();\r\n $.ua = parser.getResult();\r\n $.ua.get = function () {\r\n return parser.getUA();\r\n };\r\n $.ua.set = function (uastring) {\r\n parser.setUA(uastring);\r\n var result = parser.getResult();\r\n for (var prop in result) {\r\n $.ua[prop] = result[prop];\r\n }\r\n };\r\n }\r\n\r\n})(typeof window === 'object' ? window : this);","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/vendors/font-detect/fontdetect.js b/dist/vendors/font-detect/fontdetect.js index f132184..f6ac91f 100644 --- a/dist/vendors/font-detect/fontdetect.js +++ b/dist/vendors/font-detect/fontdetect.js @@ -1,8 +1,9 @@ -'use strict'; +"use strict"; -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /* Edited by Lukas Matta (Add module export) */ + /** * JavaScript code to detect available availability of a * particular font in a browser using JavaScript and CSS. @@ -28,91 +29,95 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * d.detect('font name'); */ (function (scope) { - 'use strict'; - - /** - * JavaScript code to detect available availability of a - * particular font in a browser using JavaScript and CSS. - * - * Author : Lalit Patel - * Website: http://www.lalit.org/lab/javascript-css-font-detect/ - * License: Apache Software License 2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * Version: 0.15 (21 Sep 2009) - * Changed comparision font to default from sans-default-default, - * as in FF3.0 font of child element didn't fallback - * to parent element if the font is missing. - * Version: 0.2 (04 Mar 2012) - * Comparing font against all the 3 generic font families ie, - * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3 - * then that font is 100% not available in the system - * Version: 0.3 (24 Mar 2012) - * Replaced sans with serif in the list of baseFonts - */ - - /** - * Usage: d = new Detector(); - * d.detect('font name'); - */ - - var Detector = function Detector() { - // a font will be compared against all the three default fonts. - // and if it doesn't match all 3 then that font is not available. - var baseFonts = ['monospace', 'sans-serif', 'serif']; - var fontList = ["Andale Mono", "Arial", "Arial Black", "Arial Hebrew", "Arial MT", "Arial Narrow", "Arial Unicode MS", "Bitstream Vera Sans Mono", "Book Antiqua", "Bookman Old Style", "Calibri", "Cambria", "Cambria Math", "Century", "Century Gothic", "Century Schoolbook", "Comic Sans", "Comic Sans MS", "Consolas", "Courier", "Courier New", "Garamond", "Geneva", "Georgia", "Helvetica", "Helvetica Neue", "Impact", "Lucida Bright", "Lucida Calligraphy", "Lucida Console", "Lucida Fax", "LUCIDA GRANDE", "Lucida Handwriting", "Lucida Sans", "Lucida Sans Typewriter", "Lucida Sans Unicode", "Microsoft Sans Serif", "Monaco", "Monotype Corsiva", "MS Gothic", "MS Outlook", "MS PGothic", "MS Reference Sans Serif", "MS Sans Serif", "MS Serif", "MYRIAD", "MYRIAD PRO", "Palatino", "Palatino Linotype", "Segoe Print", "Segoe Script", "Segoe UI", "Segoe UI Light", "Segoe UI Semibold", "Segoe UI Symbol", "Tahoma", "Times", "Times New Roman", "Times New Roman PS", "Trebuchet MS", "Verdana", "Wingdings", "Wingdings 2", "Wingdings 3"]; - var moreFonts = ["Abadi MT Condensed Light", "Academy Engraved LET", "ADOBE CASLON PRO", "Adobe Garamond", "ADOBE GARAMOND PRO", "Agency FB", "Aharoni", "Albertus Extra Bold", "Albertus Medium", "Algerian", "Amazone BT", "American Typewriter", "American Typewriter Condensed", "AmerType Md BT", "Andalus", "Angsana New", "AngsanaUPC", "Antique Olive", "Aparajita", "Apple Chancery", "Apple Color Emoji", "Apple SD Gothic Neo", "Arabic Typesetting", "ARCHER", "ARNO PRO", "Arrus BT", "Aurora Cn BT", "AvantGarde Bk BT", "AvantGarde Md BT", "AVENIR", "Ayuthaya", "Bandy", "Bangla Sangam MN", "Bank Gothic", "BankGothic Md BT", "Baskerville", "Baskerville Old Face", "Batang", "BatangChe", "Bauer Bodoni", "Bauhaus 93", "Bazooka", "Bell MT", "Bembo", "Benguiat Bk BT", "Berlin Sans FB", "Berlin Sans FB Demi", "Bernard MT Condensed", "BernhardFashion BT", "BernhardMod BT", "Big Caslon", "BinnerD", "Blackadder ITC", "BlairMdITC TT", "Bodoni 72", "Bodoni 72 Oldstyle", "Bodoni 72 Smallcaps", "Bodoni MT", "Bodoni MT Black", "Bodoni MT Condensed", "Bodoni MT Poster Compressed", "Bookshelf Symbol 7", "Boulder", "Bradley Hand", "Bradley Hand ITC", "Bremen Bd BT", "Britannic Bold", "Broadway", "Browallia New", "BrowalliaUPC", "Brush Script MT", "Californian FB", "Calisto MT", "Calligrapher", "Candara", "CaslonOpnface BT", "Castellar", "Centaur", "Cezanne", "CG Omega", "CG Times", "Chalkboard", "Chalkboard SE", "Chalkduster", "Charlesworth", "Charter Bd BT", "Charter BT", "Chaucer", "ChelthmITC Bk BT", "Chiller", "Clarendon", "Clarendon Condensed", "CloisterBlack BT", "Cochin", "Colonna MT", "Constantia", "Cooper Black", "Copperplate", "Copperplate Gothic", "Copperplate Gothic Bold", "Copperplate Gothic Light", "CopperplGoth Bd BT", "Corbel", "Cordia New", "CordiaUPC", "Cornerstone", "Coronet", "Cuckoo", "Curlz MT", "DaunPenh", "Dauphin", "David", "DB LCD Temp", "DELICIOUS", "Denmark", "DFKai-SB", "Didot", "DilleniaUPC", "DIN", "DokChampa", "Dotum", "DotumChe", "Ebrima", "Edwardian Script ITC", "Elephant", "English 111 Vivace BT", "Engravers MT", "EngraversGothic BT", "Eras Bold ITC", "Eras Demi ITC", "Eras Light ITC", "Eras Medium ITC", "EucrosiaUPC", "Euphemia", "Euphemia UCAS", "EUROSTILE", "Exotc350 Bd BT", "FangSong", "Felix Titling", "Fixedsys", "FONTIN", "Footlight MT Light", "Forte", "FrankRuehl", "Fransiscan", "Freefrm721 Blk BT", "FreesiaUPC", "Freestyle Script", "French Script MT", "FrnkGothITC Bk BT", "Fruitger", "FRUTIGER", "Futura", "Futura Bk BT", "Futura Lt BT", "Futura Md BT", "Futura ZBlk BT", "FuturaBlack BT", "Gabriola", "Galliard BT", "Gautami", "Geeza Pro", "Geometr231 BT", "Geometr231 Hv BT", "Geometr231 Lt BT", "GeoSlab 703 Lt BT", "GeoSlab 703 XBd BT", "Gigi", "Gill Sans", "Gill Sans MT", "Gill Sans MT Condensed", "Gill Sans MT Ext Condensed Bold", "Gill Sans Ultra Bold", "Gill Sans Ultra Bold Condensed", "Gisha", "Gloucester MT Extra Condensed", "GOTHAM", "GOTHAM BOLD", "Goudy Old Style", "Goudy Stout", "GoudyHandtooled BT", "GoudyOLSt BT", "Gujarati Sangam MN", "Gulim", "GulimChe", "Gungsuh", "GungsuhChe", "Gurmukhi MN", "Haettenschweiler", "Harlow Solid Italic", "Harrington", "Heather", "Heiti SC", "Heiti TC", "HELV", "Herald", "High Tower Text", "Hiragino Kaku Gothic ProN", "Hiragino Mincho ProN", "Hoefler Text", "Humanst 521 Cn BT", "Humanst521 BT", "Humanst521 Lt BT", "Imprint MT Shadow", "Incised901 Bd BT", "Incised901 BT", "Incised901 Lt BT", "INCONSOLATA", "Informal Roman", "Informal011 BT", "INTERSTATE", "IrisUPC", "Iskoola Pota", "JasmineUPC", "Jazz LET", "Jenson", "Jester", "Jokerman", "Juice ITC", "Kabel Bk BT", "Kabel Ult BT", "Kailasa", "KaiTi", "Kalinga", "Kannada Sangam MN", "Kartika", "Kaufmann Bd BT", "Kaufmann BT", "Khmer UI", "KodchiangUPC", "Kokila", "Korinna BT", "Kristen ITC", "Krungthep", "Kunstler Script", "Lao UI", "Latha", "Leelawadee", "Letter Gothic", "Levenim MT", "LilyUPC", "Lithograph", "Lithograph Light", "Long Island", "Lydian BT", "Magneto", "Maiandra GD", "Malayalam Sangam MN", "Malgun Gothic", "Mangal", "Marigold", "Marion", "Marker Felt", "Market", "Marlett", "Matisse ITC", "Matura MT Script Capitals", "Meiryo", "Meiryo UI", "Microsoft Himalaya", "Microsoft JhengHei", "Microsoft New Tai Lue", "Microsoft PhagsPa", "Microsoft Tai Le", "Microsoft Uighur", "Microsoft YaHei", "Microsoft Yi Baiti", "MingLiU", "MingLiU_HKSCS", "MingLiU_HKSCS-ExtB", "MingLiU-ExtB", "Minion", "Minion Pro", "Miriam", "Miriam Fixed", "Mistral", "Modern", "Modern No. 20", "Mona Lisa Solid ITC TT", "Mongolian Baiti", "MONO", "MoolBoran", "Mrs Eaves", "MS LineDraw", "MS Mincho", "MS PMincho", "MS Reference Specialty", "MS UI Gothic", "MT Extra", "MUSEO", "MV Boli", "Nadeem", "Narkisim", "NEVIS", "News Gothic", "News GothicMT", "NewsGoth BT", "Niagara Engraved", "Niagara Solid", "Noteworthy", "NSimSun", "Nyala", "OCR A Extended", "Old Century", "Old English Text MT", "Onyx", "Onyx BT", "OPTIMA", "Oriya Sangam MN", "OSAKA", "OzHandicraft BT", "Palace Script MT", "Papyrus", "Parchment", "Party LET", "Pegasus", "Perpetua", "Perpetua Titling MT", "PetitaBold", "Pickwick", "Plantagenet Cherokee", "Playbill", "PMingLiU", "PMingLiU-ExtB", "Poor Richard", "Poster", "PosterBodoni BT", "PRINCETOWN LET", "Pristina", "PTBarnum BT", "Pythagoras", "Raavi", "Rage Italic", "Ravie", "Ribbon131 Bd BT", "Rockwell", "Rockwell Condensed", "Rockwell Extra Bold", "Rod", "Roman", "Sakkal Majalla", "Santa Fe LET", "Savoye LET", "Sceptre", "Script", "Script MT Bold", "SCRIPTINA", "Serifa", "Serifa BT", "Serifa Th BT", "ShelleyVolante BT", "Sherwood", "Shonar Bangla", "Showcard Gothic", "Shruti", "Signboard", "SILKSCREEN", "SimHei", "Simplified Arabic", "Simplified Arabic Fixed", "SimSun", "SimSun-ExtB", "Sinhala Sangam MN", "Sketch Rockwell", "Skia", "Small Fonts", "Snap ITC", "Snell Roundhand", "Socket", "Souvenir Lt BT", "Staccato222 BT", "Steamer", "Stencil", "Storybook", "Styllo", "Subway", "Swis721 BlkEx BT", "Swiss911 XCm BT", "Sylfaen", "Synchro LET", "System", "Tamil Sangam MN", "Technical", "Teletype", "Telugu Sangam MN", "Tempus Sans ITC", "Terminal", "Thonburi", "Traditional Arabic", "Trajan", "TRAJAN PRO", "Tristan", "Tubular", "Tunga", "Tw Cen MT", "Tw Cen MT Condensed", "Tw Cen MT Condensed Extra Bold", "TypoUpright BT", "Unicorn", "Univers", "Univers CE 55 Medium", "Univers Condensed", "Utsaah", "Vagabond", "Vani", "Vijaya", "Viner Hand ITC", "VisualUI", "Vivaldi", "Vladimir Script", "Vrinda", "Westminster", "WHITNEY", "Wide Latin", "ZapfEllipt BT", "ZapfHumnst BT", "ZapfHumnst Dm BT", "Zapfino", "Zurich BlkEx BT", "Zurich Ex BT", "ZWAdobeF"]; - - //we use m or w because these two characters take up the maximum width. - // And we use a LLi so that the same matching fonts can get separated - var testString = "mmmmmmmmmmlli"; - - //we test using 72px font size, we may use any size. I guess larger the better. - var testSize = '72px'; - - var h = document.getElementsByTagName("body")[0]; - - // create a SPAN in the document to get the width of the text we use to test - var s = document.createElement("span"); - s.style.fontSize = testSize; - s.innerHTML = testString; - var defaultWidth = {}; - var defaultHeight = {}; - for (var index in baseFonts) { - //get the default width for the three base fonts - s.style.fontFamily = baseFonts[index]; - h.appendChild(s); - defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font - defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font - h.removeChild(s); - } - this.testAllFonts = function () { - var detected = []; - for (var font in fontList) { - if (this.detect(fontList[font])) detected.push(fontList[font]); - } - // for (var font in moreFonts) { - // if (this.detect(moreFonts[font])) - // detected.push(moreFonts[font]); - // } - return detected; - }; - - this.detect = function (font) { - var detected = false; - for (var index in baseFonts) { - s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback. - h.appendChild(s); - var matched = s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]; - h.removeChild(s); - detected = detected || matched; - } - return detected; - }; - }; + 'use strict'; + /** + * JavaScript code to detect available availability of a + * particular font in a browser using JavaScript and CSS. + * + * Author : Lalit Patel + * Website: http://www.lalit.org/lab/javascript-css-font-detect/ + * License: Apache Software License 2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * Version: 0.15 (21 Sep 2009) + * Changed comparision font to default from sans-default-default, + * as in FF3.0 font of child element didn't fallback + * to parent element if the font is missing. + * Version: 0.2 (04 Mar 2012) + * Comparing font against all the 3 generic font families ie, + * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3 + * then that font is 100% not available in the system + * Version: 0.3 (24 Mar 2012) + * Replaced sans with serif in the list of baseFonts + */ + + /** + * Usage: d = new Detector(); + * d.detect('font name'); + */ + + var Detector = function Detector() { + // a font will be compared against all the three default fonts. + // and if it doesn't match all 3 then that font is not available. + var baseFonts = ['monospace', 'sans-serif', 'serif']; + var fontList = ["Andale Mono", "Arial", "Arial Black", "Arial Hebrew", "Arial MT", "Arial Narrow", "Arial Unicode MS", "Bitstream Vera Sans Mono", "Book Antiqua", "Bookman Old Style", "Calibri", "Cambria", "Cambria Math", "Century", "Century Gothic", "Century Schoolbook", "Comic Sans", "Comic Sans MS", "Consolas", "Courier", "Courier New", "Garamond", "Geneva", "Georgia", "Helvetica", "Helvetica Neue", "Impact", "Lucida Bright", "Lucida Calligraphy", "Lucida Console", "Lucida Fax", "LUCIDA GRANDE", "Lucida Handwriting", "Lucida Sans", "Lucida Sans Typewriter", "Lucida Sans Unicode", "Microsoft Sans Serif", "Monaco", "Monotype Corsiva", "MS Gothic", "MS Outlook", "MS PGothic", "MS Reference Sans Serif", "MS Sans Serif", "MS Serif", "MYRIAD", "MYRIAD PRO", "Palatino", "Palatino Linotype", "Segoe Print", "Segoe Script", "Segoe UI", "Segoe UI Light", "Segoe UI Semibold", "Segoe UI Symbol", "Tahoma", "Times", "Times New Roman", "Times New Roman PS", "Trebuchet MS", "Verdana", "Wingdings", "Wingdings 2", "Wingdings 3"]; + var moreFonts = ["Abadi MT Condensed Light", "Academy Engraved LET", "ADOBE CASLON PRO", "Adobe Garamond", "ADOBE GARAMOND PRO", "Agency FB", "Aharoni", "Albertus Extra Bold", "Albertus Medium", "Algerian", "Amazone BT", "American Typewriter", "American Typewriter Condensed", "AmerType Md BT", "Andalus", "Angsana New", "AngsanaUPC", "Antique Olive", "Aparajita", "Apple Chancery", "Apple Color Emoji", "Apple SD Gothic Neo", "Arabic Typesetting", "ARCHER", "ARNO PRO", "Arrus BT", "Aurora Cn BT", "AvantGarde Bk BT", "AvantGarde Md BT", "AVENIR", "Ayuthaya", "Bandy", "Bangla Sangam MN", "Bank Gothic", "BankGothic Md BT", "Baskerville", "Baskerville Old Face", "Batang", "BatangChe", "Bauer Bodoni", "Bauhaus 93", "Bazooka", "Bell MT", "Bembo", "Benguiat Bk BT", "Berlin Sans FB", "Berlin Sans FB Demi", "Bernard MT Condensed", "BernhardFashion BT", "BernhardMod BT", "Big Caslon", "BinnerD", "Blackadder ITC", "BlairMdITC TT", "Bodoni 72", "Bodoni 72 Oldstyle", "Bodoni 72 Smallcaps", "Bodoni MT", "Bodoni MT Black", "Bodoni MT Condensed", "Bodoni MT Poster Compressed", "Bookshelf Symbol 7", "Boulder", "Bradley Hand", "Bradley Hand ITC", "Bremen Bd BT", "Britannic Bold", "Broadway", "Browallia New", "BrowalliaUPC", "Brush Script MT", "Californian FB", "Calisto MT", "Calligrapher", "Candara", "CaslonOpnface BT", "Castellar", "Centaur", "Cezanne", "CG Omega", "CG Times", "Chalkboard", "Chalkboard SE", "Chalkduster", "Charlesworth", "Charter Bd BT", "Charter BT", "Chaucer", "ChelthmITC Bk BT", "Chiller", "Clarendon", "Clarendon Condensed", "CloisterBlack BT", "Cochin", "Colonna MT", "Constantia", "Cooper Black", "Copperplate", "Copperplate Gothic", "Copperplate Gothic Bold", "Copperplate Gothic Light", "CopperplGoth Bd BT", "Corbel", "Cordia New", "CordiaUPC", "Cornerstone", "Coronet", "Cuckoo", "Curlz MT", "DaunPenh", "Dauphin", "David", "DB LCD Temp", "DELICIOUS", "Denmark", "DFKai-SB", "Didot", "DilleniaUPC", "DIN", "DokChampa", "Dotum", "DotumChe", "Ebrima", "Edwardian Script ITC", "Elephant", "English 111 Vivace BT", "Engravers MT", "EngraversGothic BT", "Eras Bold ITC", "Eras Demi ITC", "Eras Light ITC", "Eras Medium ITC", "EucrosiaUPC", "Euphemia", "Euphemia UCAS", "EUROSTILE", "Exotc350 Bd BT", "FangSong", "Felix Titling", "Fixedsys", "FONTIN", "Footlight MT Light", "Forte", "FrankRuehl", "Fransiscan", "Freefrm721 Blk BT", "FreesiaUPC", "Freestyle Script", "French Script MT", "FrnkGothITC Bk BT", "Fruitger", "FRUTIGER", "Futura", "Futura Bk BT", "Futura Lt BT", "Futura Md BT", "Futura ZBlk BT", "FuturaBlack BT", "Gabriola", "Galliard BT", "Gautami", "Geeza Pro", "Geometr231 BT", "Geometr231 Hv BT", "Geometr231 Lt BT", "GeoSlab 703 Lt BT", "GeoSlab 703 XBd BT", "Gigi", "Gill Sans", "Gill Sans MT", "Gill Sans MT Condensed", "Gill Sans MT Ext Condensed Bold", "Gill Sans Ultra Bold", "Gill Sans Ultra Bold Condensed", "Gisha", "Gloucester MT Extra Condensed", "GOTHAM", "GOTHAM BOLD", "Goudy Old Style", "Goudy Stout", "GoudyHandtooled BT", "GoudyOLSt BT", "Gujarati Sangam MN", "Gulim", "GulimChe", "Gungsuh", "GungsuhChe", "Gurmukhi MN", "Haettenschweiler", "Harlow Solid Italic", "Harrington", "Heather", "Heiti SC", "Heiti TC", "HELV", "Herald", "High Tower Text", "Hiragino Kaku Gothic ProN", "Hiragino Mincho ProN", "Hoefler Text", "Humanst 521 Cn BT", "Humanst521 BT", "Humanst521 Lt BT", "Imprint MT Shadow", "Incised901 Bd BT", "Incised901 BT", "Incised901 Lt BT", "INCONSOLATA", "Informal Roman", "Informal011 BT", "INTERSTATE", "IrisUPC", "Iskoola Pota", "JasmineUPC", "Jazz LET", "Jenson", "Jester", "Jokerman", "Juice ITC", "Kabel Bk BT", "Kabel Ult BT", "Kailasa", "KaiTi", "Kalinga", "Kannada Sangam MN", "Kartika", "Kaufmann Bd BT", "Kaufmann BT", "Khmer UI", "KodchiangUPC", "Kokila", "Korinna BT", "Kristen ITC", "Krungthep", "Kunstler Script", "Lao UI", "Latha", "Leelawadee", "Letter Gothic", "Levenim MT", "LilyUPC", "Lithograph", "Lithograph Light", "Long Island", "Lydian BT", "Magneto", "Maiandra GD", "Malayalam Sangam MN", "Malgun Gothic", "Mangal", "Marigold", "Marion", "Marker Felt", "Market", "Marlett", "Matisse ITC", "Matura MT Script Capitals", "Meiryo", "Meiryo UI", "Microsoft Himalaya", "Microsoft JhengHei", "Microsoft New Tai Lue", "Microsoft PhagsPa", "Microsoft Tai Le", "Microsoft Uighur", "Microsoft YaHei", "Microsoft Yi Baiti", "MingLiU", "MingLiU_HKSCS", "MingLiU_HKSCS-ExtB", "MingLiU-ExtB", "Minion", "Minion Pro", "Miriam", "Miriam Fixed", "Mistral", "Modern", "Modern No. 20", "Mona Lisa Solid ITC TT", "Mongolian Baiti", "MONO", "MoolBoran", "Mrs Eaves", "MS LineDraw", "MS Mincho", "MS PMincho", "MS Reference Specialty", "MS UI Gothic", "MT Extra", "MUSEO", "MV Boli", "Nadeem", "Narkisim", "NEVIS", "News Gothic", "News GothicMT", "NewsGoth BT", "Niagara Engraved", "Niagara Solid", "Noteworthy", "NSimSun", "Nyala", "OCR A Extended", "Old Century", "Old English Text MT", "Onyx", "Onyx BT", "OPTIMA", "Oriya Sangam MN", "OSAKA", "OzHandicraft BT", "Palace Script MT", "Papyrus", "Parchment", "Party LET", "Pegasus", "Perpetua", "Perpetua Titling MT", "PetitaBold", "Pickwick", "Plantagenet Cherokee", "Playbill", "PMingLiU", "PMingLiU-ExtB", "Poor Richard", "Poster", "PosterBodoni BT", "PRINCETOWN LET", "Pristina", "PTBarnum BT", "Pythagoras", "Raavi", "Rage Italic", "Ravie", "Ribbon131 Bd BT", "Rockwell", "Rockwell Condensed", "Rockwell Extra Bold", "Rod", "Roman", "Sakkal Majalla", "Santa Fe LET", "Savoye LET", "Sceptre", "Script", "Script MT Bold", "SCRIPTINA", "Serifa", "Serifa BT", "Serifa Th BT", "ShelleyVolante BT", "Sherwood", "Shonar Bangla", "Showcard Gothic", "Shruti", "Signboard", "SILKSCREEN", "SimHei", "Simplified Arabic", "Simplified Arabic Fixed", "SimSun", "SimSun-ExtB", "Sinhala Sangam MN", "Sketch Rockwell", "Skia", "Small Fonts", "Snap ITC", "Snell Roundhand", "Socket", "Souvenir Lt BT", "Staccato222 BT", "Steamer", "Stencil", "Storybook", "Styllo", "Subway", "Swis721 BlkEx BT", "Swiss911 XCm BT", "Sylfaen", "Synchro LET", "System", "Tamil Sangam MN", "Technical", "Teletype", "Telugu Sangam MN", "Tempus Sans ITC", "Terminal", "Thonburi", "Traditional Arabic", "Trajan", "TRAJAN PRO", "Tristan", "Tubular", "Tunga", "Tw Cen MT", "Tw Cen MT Condensed", "Tw Cen MT Condensed Extra Bold", "TypoUpright BT", "Unicorn", "Univers", "Univers CE 55 Medium", "Univers Condensed", "Utsaah", "Vagabond", "Vani", "Vijaya", "Viner Hand ITC", "VisualUI", "Vivaldi", "Vladimir Script", "Vrinda", "Westminster", "WHITNEY", "Wide Latin", "ZapfEllipt BT", "ZapfHumnst BT", "ZapfHumnst Dm BT", "Zapfino", "Zurich BlkEx BT", "Zurich Ex BT", "ZWAdobeF"]; //we use m or w because these two characters take up the maximum width. + // And we use a LLi so that the same matching fonts can get separated + + var testString = "mmmmmmmmmmlli"; //we test using 72px font size, we may use any size. I guess larger the better. - if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object' && typeof exports !== "undefined") { - module.exports = Detector; - } else { - scope.Detector = Detector; + var testSize = '72px'; + var h = document.getElementsByTagName("body")[0]; // create a SPAN in the document to get the width of the text we use to test + + var s = document.createElement("span"); + s.style.fontSize = testSize; + s.innerHTML = testString; + var defaultWidth = {}; + var defaultHeight = {}; + + for (var index in baseFonts) { + //get the default width for the three base fonts + s.style.fontFamily = baseFonts[index]; + h.appendChild(s); + defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font + + defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font + + h.removeChild(s); } + + this.testAllFonts = function () { + var detected = []; + + for (var font in fontList) { + if (this.detect(fontList[font])) detected.push(fontList[font]); + } // for (var font in moreFonts) { + // if (this.detect(moreFonts[font])) + // detected.push(moreFonts[font]); + // } + + + return detected; + }; + + this.detect = function (font) { + var detected = false; + + for (var index in baseFonts) { + s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback. + + h.appendChild(s); + var matched = s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]; + h.removeChild(s); + detected = detected || matched; + } + + return detected; + }; + }; + + if ((typeof module === "undefined" ? "undefined" : _typeof(module)) === 'object' && typeof exports !== "undefined") { + module.exports = Detector; + } else { + scope.Detector = Detector; + } })(window); \ No newline at end of file diff --git a/dist/vendors/murmurhash3/murmurHash3.js b/dist/vendors/murmurhash3/murmurHash3.js index 0ed5da1..1ece687 100644 --- a/dist/vendors/murmurhash3/murmurHash3.js +++ b/dist/vendors/murmurhash3/murmurHash3.js @@ -1,4 +1,4 @@ -'use strict'; +"use strict"; // +----------------------------------------------------------------------+ // | murmurHash3.js v2.1.2 (http://github.com/karanlyons/murmurHash.js) | @@ -7,552 +7,483 @@ // | Copyright (c) 2012 Karan Lyons | // | Freely distributable under the MIT license. | // +----------------------------------------------------------------------+ - - -;(function (root, undefined) { - 'use strict'; - - // Create a local object that'll be exported or referenced globally. - - var library = { - 'version': '2.1.2', - 'x86': {}, - 'x64': {} - }; - - // PRIVATE FUNCTIONS - // ----------------- - - function _x86Multiply(m, n) { - // - // Given two 32bit ints, returns the two multiplied together as a - // 32bit int. - // - - return (m & 0xffff) * n + (((m >>> 16) * n & 0xffff) << 16); - } - - function _x86Rotl(m, n) { - // - // Given a 32bit int and an int representing a number of bit positions, - // returns the 32bit int rotated left by that number of positions. - // - - return m << n | m >>> 32 - n; - } - - function _x86Fmix(h) { - // - // Given a block, returns murmurHash3's final x86 mix of that block. - // - - h ^= h >>> 16; - h = _x86Multiply(h, 0x85ebca6b); - h ^= h >>> 13; - h = _x86Multiply(h, 0xc2b2ae35); - h ^= h >>> 16; - - return h; - } - - function _x64Add(m, n) { - // - // Given two 64bit ints (as an array of two 32bit ints) returns the two - // added together as a 64bit int (as an array of two 32bit ints). - // - - m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]; - n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]; - var o = [0, 0, 0, 0]; - - o[3] += m[3] + n[3]; - o[2] += o[3] >>> 16; - o[3] &= 0xffff; - - o[2] += m[2] + n[2]; - o[1] += o[2] >>> 16; - o[2] &= 0xffff; - - o[1] += m[1] + n[1]; - o[0] += o[1] >>> 16; - o[1] &= 0xffff; - - o[0] += m[0] + n[0]; - o[0] &= 0xffff; - - return [o[0] << 16 | o[1], o[2] << 16 | o[3]]; - } - - function _x64Multiply(m, n) { - // - // Given two 64bit ints (as an array of two 32bit ints) returns the two - // multiplied together as a 64bit int (as an array of two 32bit ints). - // - - m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]; - n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]; - var o = [0, 0, 0, 0]; - - o[3] += m[3] * n[3]; - o[2] += o[3] >>> 16; - o[3] &= 0xffff; - - o[2] += m[2] * n[3]; - o[1] += o[2] >>> 16; - o[2] &= 0xffff; - - o[2] += m[3] * n[2]; - o[1] += o[2] >>> 16; - o[2] &= 0xffff; - - o[1] += m[1] * n[3]; - o[0] += o[1] >>> 16; - o[1] &= 0xffff; - - o[1] += m[2] * n[2]; - o[0] += o[1] >>> 16; - o[1] &= 0xffff; - - o[1] += m[3] * n[1]; - o[0] += o[1] >>> 16; - o[1] &= 0xffff; - - o[0] += m[0] * n[3] + m[1] * n[2] + m[2] * n[1] + m[3] * n[0]; - o[0] &= 0xffff; - - return [o[0] << 16 | o[1], o[2] << 16 | o[3]]; - } - - function _x64Rotl(m, n) { - // - // Given a 64bit int (as an array of two 32bit ints) and an int - // representing a number of bit positions, returns the 64bit int (as an - // array of two 32bit ints) rotated left by that number of positions. - // - - n %= 64; - - if (n === 32) { - return [m[1], m[0]]; - } else if (n < 32) { - return [m[0] << n | m[1] >>> 32 - n, m[1] << n | m[0] >>> 32 - n]; - } else { - n -= 32; - return [m[1] << n | m[0] >>> 32 - n, m[0] << n | m[1] >>> 32 - n]; - } - } - - function _x64LeftShift(m, n) { - // - // Given a 64bit int (as an array of two 32bit ints) and an int - // representing a number of bit positions, returns the 64bit int (as an - // array of two 32bit ints) shifted left by that number of positions. - // - - n %= 64; - - if (n === 0) { - return m; - } else if (n < 32) { - return [m[0] << n | m[1] >>> 32 - n, m[1] << n]; - } else { - return [m[1] << n - 32, 0]; - } - } - - function _x64Xor(m, n) { - // - // Given two 64bit ints (as an array of two 32bit ints) returns the two - // xored together as a 64bit int (as an array of two 32bit ints). - // - - return [m[0] ^ n[0], m[1] ^ n[1]]; - } - - function _x64Fmix(h) { - // - // Given a block, returns murmurHash3's final x64 mix of that block. - // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the - // only place where we need to right shift 64bit ints.) - // - - h = _x64Xor(h, [0, h[0] >>> 1]); - h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]); - h = _x64Xor(h, [0, h[0] >>> 1]); - h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]); - h = _x64Xor(h, [0, h[0] >>> 1]); - - return h; - } - - // PUBLIC FUNCTIONS - // ---------------- - - library.x86.hash32 = function (key, seed) { - // - // Given a string and an optional seed as an int, returns a 32 bit hash - // using the x86 flavor of MurmurHash3, as an unsigned int. - // - - key = key || ''; - seed = seed || 0; - - var remainder = key.length % 4; - var bytes = key.length - remainder; - - var h1 = seed; - - var k1 = 0; - - var c1 = 0xcc9e2d51; - var c2 = 0x1b873593; - - for (var i = 0; i < bytes; i = i + 4) { - k1 = key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24; - - k1 = _x86Multiply(k1, c1); - k1 = _x86Rotl(k1, 15); - k1 = _x86Multiply(k1, c2); - - h1 ^= k1; - h1 = _x86Rotl(h1, 13); - h1 = _x86Multiply(h1, 5) + 0xe6546b64; - } - - k1 = 0; - - switch (remainder) { - case 3: - k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16; - - case 2: - k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8; - - case 1: - k1 ^= key.charCodeAt(i) & 0xff; - k1 = _x86Multiply(k1, c1); - k1 = _x86Rotl(k1, 15); - k1 = _x86Multiply(k1, c2); - h1 ^= k1; - } - - h1 ^= key.length; - h1 = _x86Fmix(h1); - - return h1 >>> 0; - }; - - library.x86.hash128 = function (key, seed) { - // - // Given a string and an optional seed as an int, returns a 128 bit - // hash using the x86 flavor of MurmurHash3, as an unsigned hex. - // - - key = key || ''; - seed = seed || 0; - - var remainder = key.length % 16; - var bytes = key.length - remainder; - - var h1 = seed; - var h2 = seed; - var h3 = seed; - var h4 = seed; - - var k1 = 0; - var k2 = 0; - var k3 = 0; - var k4 = 0; - - var c1 = 0x239b961b; - var c2 = 0xab0e9789; - var c3 = 0x38b34ae5; - var c4 = 0xa1e38b93; - - for (var i = 0; i < bytes; i = i + 16) { - k1 = key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24; - k2 = key.charCodeAt(i + 4) & 0xff | (key.charCodeAt(i + 5) & 0xff) << 8 | (key.charCodeAt(i + 6) & 0xff) << 16 | (key.charCodeAt(i + 7) & 0xff) << 24; - k3 = key.charCodeAt(i + 8) & 0xff | (key.charCodeAt(i + 9) & 0xff) << 8 | (key.charCodeAt(i + 10) & 0xff) << 16 | (key.charCodeAt(i + 11) & 0xff) << 24; - k4 = key.charCodeAt(i + 12) & 0xff | (key.charCodeAt(i + 13) & 0xff) << 8 | (key.charCodeAt(i + 14) & 0xff) << 16 | (key.charCodeAt(i + 15) & 0xff) << 24; - - k1 = _x86Multiply(k1, c1); - k1 = _x86Rotl(k1, 15); - k1 = _x86Multiply(k1, c2); - h1 ^= k1; - - h1 = _x86Rotl(h1, 19); - h1 += h2; - h1 = _x86Multiply(h1, 5) + 0x561ccd1b; - - k2 = _x86Multiply(k2, c2); - k2 = _x86Rotl(k2, 16); - k2 = _x86Multiply(k2, c3); - h2 ^= k2; - - h2 = _x86Rotl(h2, 17); - h2 += h3; - h2 = _x86Multiply(h2, 5) + 0x0bcaa747; - - k3 = _x86Multiply(k3, c3); - k3 = _x86Rotl(k3, 17); - k3 = _x86Multiply(k3, c4); - h3 ^= k3; - - h3 = _x86Rotl(h3, 15); - h3 += h4; - h3 = _x86Multiply(h3, 5) + 0x96cd1c35; - - k4 = _x86Multiply(k4, c4); - k4 = _x86Rotl(k4, 18); - k4 = _x86Multiply(k4, c1); - h4 ^= k4; - - h4 = _x86Rotl(h4, 13); - h4 += h1; - h4 = _x86Multiply(h4, 5) + 0x32ac3b17; - } - - k1 = 0; - k2 = 0; - k3 = 0; - k4 = 0; - - switch (remainder) { - case 15: - k4 ^= key.charCodeAt(i + 14) << 16; - - case 14: - k4 ^= key.charCodeAt(i + 13) << 8; - - case 13: - k4 ^= key.charCodeAt(i + 12); - k4 = _x86Multiply(k4, c4); - k4 = _x86Rotl(k4, 18); - k4 = _x86Multiply(k4, c1); - h4 ^= k4; - - case 12: - k3 ^= key.charCodeAt(i + 11) << 24; - - case 11: - k3 ^= key.charCodeAt(i + 10) << 16; - - case 10: - k3 ^= key.charCodeAt(i + 9) << 8; - - case 9: - k3 ^= key.charCodeAt(i + 8); - k3 = _x86Multiply(k3, c3); - k3 = _x86Rotl(k3, 17); - k3 = _x86Multiply(k3, c4); - h3 ^= k3; - - case 8: - k2 ^= key.charCodeAt(i + 7) << 24; - - case 7: - k2 ^= key.charCodeAt(i + 6) << 16; - - case 6: - k2 ^= key.charCodeAt(i + 5) << 8; - - case 5: - k2 ^= key.charCodeAt(i + 4); - k2 = _x86Multiply(k2, c2); - k2 = _x86Rotl(k2, 16); - k2 = _x86Multiply(k2, c3); - h2 ^= k2; - - case 4: - k1 ^= key.charCodeAt(i + 3) << 24; - - case 3: - k1 ^= key.charCodeAt(i + 2) << 16; - - case 2: - k1 ^= key.charCodeAt(i + 1) << 8; - - case 1: - k1 ^= key.charCodeAt(i); - k1 = _x86Multiply(k1, c1); - k1 = _x86Rotl(k1, 15); - k1 = _x86Multiply(k1, c2); - h1 ^= k1; - } - - h1 ^= key.length; - h2 ^= key.length; - h3 ^= key.length; - h4 ^= key.length; - - h1 += h2; - h1 += h3; - h1 += h4; - h2 += h1; - h3 += h1; - h4 += h1; - - h1 = _x86Fmix(h1); - h2 = _x86Fmix(h2); - h3 = _x86Fmix(h3); - h4 = _x86Fmix(h4); - - h1 += h2; - h1 += h3; - h1 += h4; - h2 += h1; - h3 += h1; - h4 += h1; - - return ("00000000" + (h1 >>> 0).toString(16)).slice(-8) + ("00000000" + (h2 >>> 0).toString(16)).slice(-8) + ("00000000" + (h3 >>> 0).toString(16)).slice(-8) + ("00000000" + (h4 >>> 0).toString(16)).slice(-8); - }; - - library.x64.hash128 = function (key, seed) { - // - // Given a string and an optional seed as an int, returns a 128 bit - // hash using the x64 flavor of MurmurHash3, as an unsigned hex. - // - - key = key || ''; - seed = seed || 0; - - var remainder = key.length % 16; - var bytes = key.length - remainder; - - var h1 = [0, seed]; - var h2 = [0, seed]; - - var k1 = [0, 0]; - var k2 = [0, 0]; - - var c1 = [0x87c37b91, 0x114253d5]; - var c2 = [0x4cf5ad43, 0x2745937f]; - - for (var i = 0; i < bytes; i = i + 16) { - k1 = [key.charCodeAt(i + 4) & 0xff | (key.charCodeAt(i + 5) & 0xff) << 8 | (key.charCodeAt(i + 6) & 0xff) << 16 | (key.charCodeAt(i + 7) & 0xff) << 24, key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24]; - k2 = [key.charCodeAt(i + 12) & 0xff | (key.charCodeAt(i + 13) & 0xff) << 8 | (key.charCodeAt(i + 14) & 0xff) << 16 | (key.charCodeAt(i + 15) & 0xff) << 24, key.charCodeAt(i + 8) & 0xff | (key.charCodeAt(i + 9) & 0xff) << 8 | (key.charCodeAt(i + 10) & 0xff) << 16 | (key.charCodeAt(i + 11) & 0xff) << 24]; - - k1 = _x64Multiply(k1, c1); - k1 = _x64Rotl(k1, 31); - k1 = _x64Multiply(k1, c2); - h1 = _x64Xor(h1, k1); - - h1 = _x64Rotl(h1, 27); - h1 = _x64Add(h1, h2); - h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]); - - k2 = _x64Multiply(k2, c2); - k2 = _x64Rotl(k2, 33); - k2 = _x64Multiply(k2, c1); - h2 = _x64Xor(h2, k2); - - h2 = _x64Rotl(h2, 31); - h2 = _x64Add(h2, h1); - h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]); - } - - k1 = [0, 0]; - k2 = [0, 0]; - - switch (remainder) { - case 15: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 14)], 48)); - - case 14: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 13)], 40)); - - case 13: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 12)], 32)); - - case 12: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 11)], 24)); - - case 11: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 10)], 16)); - - case 10: - k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 9)], 8)); - - case 9: - k2 = _x64Xor(k2, [0, key.charCodeAt(i + 8)]); - k2 = _x64Multiply(k2, c2); - k2 = _x64Rotl(k2, 33); - k2 = _x64Multiply(k2, c1); - h2 = _x64Xor(h2, k2); - - case 8: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 7)], 56)); - - case 7: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 6)], 48)); - - case 6: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 5)], 40)); - - case 5: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 4)], 32)); - - case 4: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 3)], 24)); - - case 3: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 2)], 16)); - - case 2: - k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 1)], 8)); - - case 1: - k1 = _x64Xor(k1, [0, key.charCodeAt(i)]); - k1 = _x64Multiply(k1, c1); - k1 = _x64Rotl(k1, 31); - k1 = _x64Multiply(k1, c2); - h1 = _x64Xor(h1, k1); - } - - h1 = _x64Xor(h1, [0, key.length]); - h2 = _x64Xor(h2, [0, key.length]); - - h1 = _x64Add(h1, h2); - h2 = _x64Add(h2, h1); - - h1 = _x64Fmix(h1); - h2 = _x64Fmix(h2); - - h1 = _x64Add(h1, h2); - h2 = _x64Add(h2, h1); - - return ("00000000" + (h1[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h1[1] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[1] >>> 0).toString(16)).slice(-8); - }; - - // INITIALIZATION - // -------------- - - // Export murmurHash3 for CommonJS, either as an AMD module or just as part - // of the global object. - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = library; - } - - exports.murmurHash3 = library; - } else if (typeof define === 'function' && define.amd) { - define([], function () { - return library; - }); - } else { - // Use murmurHash3.noConflict to restore `murmurHash3` back to its - // original value. Returns a reference to the library object, to allow - // it to be used under a different name. - library._murmurHash3 = root.murmurHash3; - - library.noConflict = function () { - root.murmurHash3 = library._murmurHash3; - library._murmurHash3 = undefined; - library.noConflict = undefined; - - return library; - }; - - root.murmurHash3 = library; - } -})(undefined); \ No newline at end of file +; + +(function (root, undefined) { + 'use strict'; // Create a local object that'll be exported or referenced globally. + + var library = { + 'version': '2.1.2', + 'x86': {}, + 'x64': {} + }; // PRIVATE FUNCTIONS + // ----------------- + + function _x86Multiply(m, n) { + // + // Given two 32bit ints, returns the two multiplied together as a + // 32bit int. + // + return (m & 0xffff) * n + (((m >>> 16) * n & 0xffff) << 16); + } + + function _x86Rotl(m, n) { + // + // Given a 32bit int and an int representing a number of bit positions, + // returns the 32bit int rotated left by that number of positions. + // + return m << n | m >>> 32 - n; + } + + function _x86Fmix(h) { + // + // Given a block, returns murmurHash3's final x86 mix of that block. + // + h ^= h >>> 16; + h = _x86Multiply(h, 0x85ebca6b); + h ^= h >>> 13; + h = _x86Multiply(h, 0xc2b2ae35); + h ^= h >>> 16; + return h; + } + + function _x64Add(m, n) { + // + // Given two 64bit ints (as an array of two 32bit ints) returns the two + // added together as a 64bit int (as an array of two 32bit ints). + // + m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]; + n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]; + var o = [0, 0, 0, 0]; + o[3] += m[3] + n[3]; + o[2] += o[3] >>> 16; + o[3] &= 0xffff; + o[2] += m[2] + n[2]; + o[1] += o[2] >>> 16; + o[2] &= 0xffff; + o[1] += m[1] + n[1]; + o[0] += o[1] >>> 16; + o[1] &= 0xffff; + o[0] += m[0] + n[0]; + o[0] &= 0xffff; + return [o[0] << 16 | o[1], o[2] << 16 | o[3]]; + } + + function _x64Multiply(m, n) { + // + // Given two 64bit ints (as an array of two 32bit ints) returns the two + // multiplied together as a 64bit int (as an array of two 32bit ints). + // + m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]; + n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]; + var o = [0, 0, 0, 0]; + o[3] += m[3] * n[3]; + o[2] += o[3] >>> 16; + o[3] &= 0xffff; + o[2] += m[2] * n[3]; + o[1] += o[2] >>> 16; + o[2] &= 0xffff; + o[2] += m[3] * n[2]; + o[1] += o[2] >>> 16; + o[2] &= 0xffff; + o[1] += m[1] * n[3]; + o[0] += o[1] >>> 16; + o[1] &= 0xffff; + o[1] += m[2] * n[2]; + o[0] += o[1] >>> 16; + o[1] &= 0xffff; + o[1] += m[3] * n[1]; + o[0] += o[1] >>> 16; + o[1] &= 0xffff; + o[0] += m[0] * n[3] + m[1] * n[2] + m[2] * n[1] + m[3] * n[0]; + o[0] &= 0xffff; + return [o[0] << 16 | o[1], o[2] << 16 | o[3]]; + } + + function _x64Rotl(m, n) { + // + // Given a 64bit int (as an array of two 32bit ints) and an int + // representing a number of bit positions, returns the 64bit int (as an + // array of two 32bit ints) rotated left by that number of positions. + // + n %= 64; + + if (n === 32) { + return [m[1], m[0]]; + } else if (n < 32) { + return [m[0] << n | m[1] >>> 32 - n, m[1] << n | m[0] >>> 32 - n]; + } else { + n -= 32; + return [m[1] << n | m[0] >>> 32 - n, m[0] << n | m[1] >>> 32 - n]; + } + } + + function _x64LeftShift(m, n) { + // + // Given a 64bit int (as an array of two 32bit ints) and an int + // representing a number of bit positions, returns the 64bit int (as an + // array of two 32bit ints) shifted left by that number of positions. + // + n %= 64; + + if (n === 0) { + return m; + } else if (n < 32) { + return [m[0] << n | m[1] >>> 32 - n, m[1] << n]; + } else { + return [m[1] << n - 32, 0]; + } + } + + function _x64Xor(m, n) { + // + // Given two 64bit ints (as an array of two 32bit ints) returns the two + // xored together as a 64bit int (as an array of two 32bit ints). + // + return [m[0] ^ n[0], m[1] ^ n[1]]; + } + + function _x64Fmix(h) { + // + // Given a block, returns murmurHash3's final x64 mix of that block. + // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the + // only place where we need to right shift 64bit ints.) + // + h = _x64Xor(h, [0, h[0] >>> 1]); + h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]); + h = _x64Xor(h, [0, h[0] >>> 1]); + h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]); + h = _x64Xor(h, [0, h[0] >>> 1]); + return h; + } // PUBLIC FUNCTIONS + // ---------------- + + + library.x86.hash32 = function (key, seed) { + // + // Given a string and an optional seed as an int, returns a 32 bit hash + // using the x86 flavor of MurmurHash3, as an unsigned int. + // + key = key || ''; + seed = seed || 0; + var remainder = key.length % 4; + var bytes = key.length - remainder; + var h1 = seed; + var k1 = 0; + var c1 = 0xcc9e2d51; + var c2 = 0x1b873593; + + for (var i = 0; i < bytes; i = i + 4) { + k1 = key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24; + k1 = _x86Multiply(k1, c1); + k1 = _x86Rotl(k1, 15); + k1 = _x86Multiply(k1, c2); + h1 ^= k1; + h1 = _x86Rotl(h1, 13); + h1 = _x86Multiply(h1, 5) + 0xe6546b64; + } + + k1 = 0; + + switch (remainder) { + case 3: + k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16; + + case 2: + k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8; + + case 1: + k1 ^= key.charCodeAt(i) & 0xff; + k1 = _x86Multiply(k1, c1); + k1 = _x86Rotl(k1, 15); + k1 = _x86Multiply(k1, c2); + h1 ^= k1; + } + + h1 ^= key.length; + h1 = _x86Fmix(h1); + return h1 >>> 0; + }; + + library.x86.hash128 = function (key, seed) { + // + // Given a string and an optional seed as an int, returns a 128 bit + // hash using the x86 flavor of MurmurHash3, as an unsigned hex. + // + key = key || ''; + seed = seed || 0; + var remainder = key.length % 16; + var bytes = key.length - remainder; + var h1 = seed; + var h2 = seed; + var h3 = seed; + var h4 = seed; + var k1 = 0; + var k2 = 0; + var k3 = 0; + var k4 = 0; + var c1 = 0x239b961b; + var c2 = 0xab0e9789; + var c3 = 0x38b34ae5; + var c4 = 0xa1e38b93; + + for (var i = 0; i < bytes; i = i + 16) { + k1 = key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24; + k2 = key.charCodeAt(i + 4) & 0xff | (key.charCodeAt(i + 5) & 0xff) << 8 | (key.charCodeAt(i + 6) & 0xff) << 16 | (key.charCodeAt(i + 7) & 0xff) << 24; + k3 = key.charCodeAt(i + 8) & 0xff | (key.charCodeAt(i + 9) & 0xff) << 8 | (key.charCodeAt(i + 10) & 0xff) << 16 | (key.charCodeAt(i + 11) & 0xff) << 24; + k4 = key.charCodeAt(i + 12) & 0xff | (key.charCodeAt(i + 13) & 0xff) << 8 | (key.charCodeAt(i + 14) & 0xff) << 16 | (key.charCodeAt(i + 15) & 0xff) << 24; + k1 = _x86Multiply(k1, c1); + k1 = _x86Rotl(k1, 15); + k1 = _x86Multiply(k1, c2); + h1 ^= k1; + h1 = _x86Rotl(h1, 19); + h1 += h2; + h1 = _x86Multiply(h1, 5) + 0x561ccd1b; + k2 = _x86Multiply(k2, c2); + k2 = _x86Rotl(k2, 16); + k2 = _x86Multiply(k2, c3); + h2 ^= k2; + h2 = _x86Rotl(h2, 17); + h2 += h3; + h2 = _x86Multiply(h2, 5) + 0x0bcaa747; + k3 = _x86Multiply(k3, c3); + k3 = _x86Rotl(k3, 17); + k3 = _x86Multiply(k3, c4); + h3 ^= k3; + h3 = _x86Rotl(h3, 15); + h3 += h4; + h3 = _x86Multiply(h3, 5) + 0x96cd1c35; + k4 = _x86Multiply(k4, c4); + k4 = _x86Rotl(k4, 18); + k4 = _x86Multiply(k4, c1); + h4 ^= k4; + h4 = _x86Rotl(h4, 13); + h4 += h1; + h4 = _x86Multiply(h4, 5) + 0x32ac3b17; + } + + k1 = 0; + k2 = 0; + k3 = 0; + k4 = 0; + + switch (remainder) { + case 15: + k4 ^= key.charCodeAt(i + 14) << 16; + + case 14: + k4 ^= key.charCodeAt(i + 13) << 8; + + case 13: + k4 ^= key.charCodeAt(i + 12); + k4 = _x86Multiply(k4, c4); + k4 = _x86Rotl(k4, 18); + k4 = _x86Multiply(k4, c1); + h4 ^= k4; + + case 12: + k3 ^= key.charCodeAt(i + 11) << 24; + + case 11: + k3 ^= key.charCodeAt(i + 10) << 16; + + case 10: + k3 ^= key.charCodeAt(i + 9) << 8; + + case 9: + k3 ^= key.charCodeAt(i + 8); + k3 = _x86Multiply(k3, c3); + k3 = _x86Rotl(k3, 17); + k3 = _x86Multiply(k3, c4); + h3 ^= k3; + + case 8: + k2 ^= key.charCodeAt(i + 7) << 24; + + case 7: + k2 ^= key.charCodeAt(i + 6) << 16; + + case 6: + k2 ^= key.charCodeAt(i + 5) << 8; + + case 5: + k2 ^= key.charCodeAt(i + 4); + k2 = _x86Multiply(k2, c2); + k2 = _x86Rotl(k2, 16); + k2 = _x86Multiply(k2, c3); + h2 ^= k2; + + case 4: + k1 ^= key.charCodeAt(i + 3) << 24; + + case 3: + k1 ^= key.charCodeAt(i + 2) << 16; + + case 2: + k1 ^= key.charCodeAt(i + 1) << 8; + + case 1: + k1 ^= key.charCodeAt(i); + k1 = _x86Multiply(k1, c1); + k1 = _x86Rotl(k1, 15); + k1 = _x86Multiply(k1, c2); + h1 ^= k1; + } + + h1 ^= key.length; + h2 ^= key.length; + h3 ^= key.length; + h4 ^= key.length; + h1 += h2; + h1 += h3; + h1 += h4; + h2 += h1; + h3 += h1; + h4 += h1; + h1 = _x86Fmix(h1); + h2 = _x86Fmix(h2); + h3 = _x86Fmix(h3); + h4 = _x86Fmix(h4); + h1 += h2; + h1 += h3; + h1 += h4; + h2 += h1; + h3 += h1; + h4 += h1; + return ("00000000" + (h1 >>> 0).toString(16)).slice(-8) + ("00000000" + (h2 >>> 0).toString(16)).slice(-8) + ("00000000" + (h3 >>> 0).toString(16)).slice(-8) + ("00000000" + (h4 >>> 0).toString(16)).slice(-8); + }; + + library.x64.hash128 = function (key, seed) { + // + // Given a string and an optional seed as an int, returns a 128 bit + // hash using the x64 flavor of MurmurHash3, as an unsigned hex. + // + key = key || ''; + seed = seed || 0; + var remainder = key.length % 16; + var bytes = key.length - remainder; + var h1 = [0, seed]; + var h2 = [0, seed]; + var k1 = [0, 0]; + var k2 = [0, 0]; + var c1 = [0x87c37b91, 0x114253d5]; + var c2 = [0x4cf5ad43, 0x2745937f]; + + for (var i = 0; i < bytes; i = i + 16) { + k1 = [key.charCodeAt(i + 4) & 0xff | (key.charCodeAt(i + 5) & 0xff) << 8 | (key.charCodeAt(i + 6) & 0xff) << 16 | (key.charCodeAt(i + 7) & 0xff) << 24, key.charCodeAt(i) & 0xff | (key.charCodeAt(i + 1) & 0xff) << 8 | (key.charCodeAt(i + 2) & 0xff) << 16 | (key.charCodeAt(i + 3) & 0xff) << 24]; + k2 = [key.charCodeAt(i + 12) & 0xff | (key.charCodeAt(i + 13) & 0xff) << 8 | (key.charCodeAt(i + 14) & 0xff) << 16 | (key.charCodeAt(i + 15) & 0xff) << 24, key.charCodeAt(i + 8) & 0xff | (key.charCodeAt(i + 9) & 0xff) << 8 | (key.charCodeAt(i + 10) & 0xff) << 16 | (key.charCodeAt(i + 11) & 0xff) << 24]; + k1 = _x64Multiply(k1, c1); + k1 = _x64Rotl(k1, 31); + k1 = _x64Multiply(k1, c2); + h1 = _x64Xor(h1, k1); + h1 = _x64Rotl(h1, 27); + h1 = _x64Add(h1, h2); + h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]); + k2 = _x64Multiply(k2, c2); + k2 = _x64Rotl(k2, 33); + k2 = _x64Multiply(k2, c1); + h2 = _x64Xor(h2, k2); + h2 = _x64Rotl(h2, 31); + h2 = _x64Add(h2, h1); + h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]); + } + + k1 = [0, 0]; + k2 = [0, 0]; + + switch (remainder) { + case 15: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 14)], 48)); + + case 14: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 13)], 40)); + + case 13: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 12)], 32)); + + case 12: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 11)], 24)); + + case 11: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 10)], 16)); + + case 10: + k2 = _x64Xor(k2, _x64LeftShift([0, key.charCodeAt(i + 9)], 8)); + + case 9: + k2 = _x64Xor(k2, [0, key.charCodeAt(i + 8)]); + k2 = _x64Multiply(k2, c2); + k2 = _x64Rotl(k2, 33); + k2 = _x64Multiply(k2, c1); + h2 = _x64Xor(h2, k2); + + case 8: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 7)], 56)); + + case 7: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 6)], 48)); + + case 6: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 5)], 40)); + + case 5: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 4)], 32)); + + case 4: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 3)], 24)); + + case 3: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 2)], 16)); + + case 2: + k1 = _x64Xor(k1, _x64LeftShift([0, key.charCodeAt(i + 1)], 8)); + + case 1: + k1 = _x64Xor(k1, [0, key.charCodeAt(i)]); + k1 = _x64Multiply(k1, c1); + k1 = _x64Rotl(k1, 31); + k1 = _x64Multiply(k1, c2); + h1 = _x64Xor(h1, k1); + } + + h1 = _x64Xor(h1, [0, key.length]); + h2 = _x64Xor(h2, [0, key.length]); + h1 = _x64Add(h1, h2); + h2 = _x64Add(h2, h1); + h1 = _x64Fmix(h1); + h2 = _x64Fmix(h2); + h1 = _x64Add(h1, h2); + h2 = _x64Add(h2, h1); + return ("00000000" + (h1[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h1[1] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[1] >>> 0).toString(16)).slice(-8); + }; // INITIALIZATION + // -------------- + // Export murmurHash3 for CommonJS, either as an AMD module or just as part + // of the global object. + + + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = library; + } + + exports.murmurHash3 = library; + } else if (typeof define === 'function' && define.amd) { + define([], function () { + return library; + }); + } else { + // Use murmurHash3.noConflict to restore `murmurHash3` back to its + // original value. Returns a reference to the library object, to allow + // it to be used under a different name. + library._murmurHash3 = root.murmurHash3; + + library.noConflict = function () { + root.murmurHash3 = library._murmurHash3; + library._murmurHash3 = undefined; + library.noConflict = undefined; + return library; + }; + + root.murmurHash3 = library; + } +})(void 0); \ No newline at end of file diff --git a/dist/vendors/ua-parser/UAParser.js b/dist/vendors/ua-parser/UAParser.js index 9fe69cf..6746092 100644 --- a/dist/vendors/ua-parser/UAParser.js +++ b/dist/vendors/ua-parser/UAParser.js @@ -1,6 +1,6 @@ -'use strict'; +"use strict"; -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /*! * UAParser.js v0.7.18 @@ -10,800 +10,751 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * Copyright © 2012-2016 Faisal Salman * Dual licensed under GPLv2 or MIT */ - (function (window, undefined) { - - 'use strict'; - - ////////////// - // Constants - ///////////// - - - var LIBVERSION = '0.7.18', - EMPTY = '', - UNKNOWN = '?', - FUNC_TYPE = 'function', - UNDEF_TYPE = 'undefined', - OBJ_TYPE = 'object', - STR_TYPE = 'string', - MAJOR = 'major', - // deprecated - MODEL = 'model', - NAME = 'name', - TYPE = 'type', - VENDOR = 'vendor', - VERSION = 'version', - ARCHITECTURE = 'architecture', - CONSOLE = 'console', - MOBILE = 'mobile', - TABLET = 'tablet', - SMARTTV = 'smarttv', - WEARABLE = 'wearable', - EMBEDDED = 'embedded'; - - /////////// - // Helper - ////////// - - - var util = { - extend: function extend(regexes, extensions) { - var margedRegexes = {}; - for (var i in regexes) { - if (extensions[i] && extensions[i].length % 2 === 0) { - margedRegexes[i] = extensions[i].concat(regexes[i]); - } else { - margedRegexes[i] = regexes[i]; + 'use strict'; ////////////// + // Constants + ///////////// + + var LIBVERSION = '0.7.18', + EMPTY = '', + UNKNOWN = '?', + FUNC_TYPE = 'function', + UNDEF_TYPE = 'undefined', + OBJ_TYPE = 'object', + STR_TYPE = 'string', + MAJOR = 'major', + // deprecated + MODEL = 'model', + NAME = 'name', + TYPE = 'type', + VENDOR = 'vendor', + VERSION = 'version', + ARCHITECTURE = 'architecture', + CONSOLE = 'console', + MOBILE = 'mobile', + TABLET = 'tablet', + SMARTTV = 'smarttv', + WEARABLE = 'wearable', + EMBEDDED = 'embedded'; /////////// + // Helper + ////////// + + var util = { + extend: function extend(regexes, extensions) { + var margedRegexes = {}; + + for (var i in regexes) { + if (extensions[i] && extensions[i].length % 2 === 0) { + margedRegexes[i] = extensions[i].concat(regexes[i]); + } else { + margedRegexes[i] = regexes[i]; + } + } + + return margedRegexes; + }, + has: function has(str1, str2) { + if (typeof str1 === "string") { + return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1; + } else { + return false; + } + }, + lowerize: function lowerize(str) { + return str.toLowerCase(); + }, + major: function major(version) { + return _typeof(version) === STR_TYPE ? version.replace(/[^\d\.]/g, '').split(".")[0] : undefined; + }, + trim: function trim(str) { + return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + } + }; /////////////// + // Map helper + ////////////// + + var mapper = { + rgx: function rgx(ua, arrays) { + //var result = {}, + var i = 0, + j, + k, + p, + q, + matches, + match; //, args = arguments; + + /*// construct object barebones + for (p = 0; p < args[1].length; p++) { + q = args[1][p]; + result[typeof q === OBJ_TYPE ? q[0] : q] = undefined; + }*/ + // loop through all regexes maps + + while (i < arrays.length && !matches) { + var regex = arrays[i], + // even sequence (0,2,4,..) + props = arrays[i + 1]; // odd sequence (1,3,5,..) + + j = k = 0; // try matching uastring with regexes + + while (j < regex.length && !matches) { + matches = regex[j++].exec(ua); + + if (!!matches) { + for (p = 0; p < props.length; p++) { + match = matches[++k]; + q = props[p]; // check if given property is actually array + + if (_typeof(q) === OBJ_TYPE && q.length > 0) { + if (q.length == 2) { + if (_typeof(q[1]) == FUNC_TYPE) { + // assign modified match + this[q[0]] = q[1].call(this, match); + } else { + // assign given value, ignore regex match + this[q[0]] = q[1]; + } + } else if (q.length == 3) { + // check whether function or regex + if (_typeof(q[1]) === FUNC_TYPE && !(q[1].exec && q[1].test)) { + // call function (usually string mapper) + this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined; + } else { + // sanitize match using given regex + this[q[0]] = match ? match.replace(q[1], q[2]) : undefined; + } + } else if (q.length == 4) { + this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined; } + } else { + this[q] = match ? match : undefined; + } } - return margedRegexes; - }, - has: function has(str1, str2) { - if (typeof str1 === "string") { - return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1; - } else { - return false; - } - }, - lowerize: function lowerize(str) { - return str.toLowerCase(); - }, - major: function major(version) { - return (typeof version === 'undefined' ? 'undefined' : _typeof(version)) === STR_TYPE ? version.replace(/[^\d\.]/g, '').split(".")[0] : undefined; - }, - trim: function trim(str) { - return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + } } - }; - /////////////// - // Map helper - ////////////// - - - var mapper = { - - rgx: function rgx(ua, arrays) { - - //var result = {}, - var i = 0, - j, - k, - p, - q, - matches, - match; //, args = arguments; - - /*// construct object barebones - for (p = 0; p < args[1].length; p++) { - q = args[1][p]; - result[typeof q === OBJ_TYPE ? q[0] : q] = undefined; - }*/ - - // loop through all regexes maps - while (i < arrays.length && !matches) { - - var regex = arrays[i], - // even sequence (0,2,4,..) - props = arrays[i + 1]; // odd sequence (1,3,5,..) - j = k = 0; - - // try matching uastring with regexes - while (j < regex.length && !matches) { - - matches = regex[j++].exec(ua); - - if (!!matches) { - for (p = 0; p < props.length; p++) { - match = matches[++k]; - q = props[p]; - // check if given property is actually array - if ((typeof q === 'undefined' ? 'undefined' : _typeof(q)) === OBJ_TYPE && q.length > 0) { - if (q.length == 2) { - if (_typeof(q[1]) == FUNC_TYPE) { - // assign modified match - this[q[0]] = q[1].call(this, match); - } else { - // assign given value, ignore regex match - this[q[0]] = q[1]; - } - } else if (q.length == 3) { - // check whether function or regex - if (_typeof(q[1]) === FUNC_TYPE && !(q[1].exec && q[1].test)) { - // call function (usually string mapper) - this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined; - } else { - // sanitize match using given regex - this[q[0]] = match ? match.replace(q[1], q[2]) : undefined; - } - } else if (q.length == 4) { - this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined; - } - } else { - this[q] = match ? match : undefined; - } - } - } - } - i += 2; + i += 2; + } // console.log(this); + //return this; + + }, + str: function str(_str, map) { + for (var i in map) { + // check if array + if (_typeof(map[i]) === OBJ_TYPE && map[i].length > 0) { + for (var j = 0; j < map[i].length; j++) { + if (util.has(map[i][j], _str)) { + return i === UNKNOWN ? undefined : i; } - // console.log(this); - //return this; - }, + } + } else if (util.has(map[i], _str)) { + return i === UNKNOWN ? undefined : i; + } + } - str: function str(_str, map) { - - for (var i in map) { - // check if array - if (_typeof(map[i]) === OBJ_TYPE && map[i].length > 0) { - for (var j = 0; j < map[i].length; j++) { - if (util.has(map[i][j], _str)) { - return i === UNKNOWN ? undefined : i; - } - } - } else if (util.has(map[i], _str)) { - return i === UNKNOWN ? undefined : i; - } - } - return _str; + return _str; + } + }; /////////////// + // String map + ////////////// + + var maps = { + browser: { + oldsafari: { + version: { + '1.0': '/8', + '1.2': '/1', + '1.3': '/3', + '2.0': '/412', + '2.0.2': '/416', + '2.0.3': '/417', + '2.0.4': '/419', + '?': '/' + } + } + }, + device: { + amazon: { + model: { + 'Fire Phone': ['SD', 'KF'] + } + }, + sprint: { + model: { + 'Evo Shift 4G': '7373KT' + }, + vendor: { + 'HTC': 'APA', + 'Sprint': 'Sprint' } + } + }, + os: { + windows: { + version: { + 'ME': '4.90', + 'NT 3.11': 'NT3.51', + 'NT 4.0': 'NT4.0', + '2000': 'NT 5.0', + 'XP': ['NT 5.1', 'NT 5.2'], + 'Vista': 'NT 6.0', + '7': 'NT 6.1', + '8': 'NT 6.2', + '8.1': 'NT 6.3', + '10': ['NT 6.4', 'NT 10.0'], + 'RT': 'ARM' + } + } + } + }; ////////////// + // Regex map + ///////////// + + var regexes = { + browser: [[// Presto based + /(opera\smini)\/([\w\.-]+)/i, // Opera Mini + /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, // Opera Mobi/Tablet + /(opera).+version\/([\w\.]+)/i, // Opera > 9.80 + /(opera)[\/\s]+([\w\.]+)/i // Opera < 9.80 + ], [NAME, VERSION], [/(opios)[\/\s]+([\w\.]+)/i // Opera mini on iphone >= 8.0 + ], [[NAME, 'Opera Mini'], VERSION], [/\s(opr)\/([\w\.]+)/i // Opera Webkit + ], [[NAME, 'Opera'], VERSION], [// Mixed + /(kindle)\/([\w\.]+)/i, // Kindle + /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer + // Trident based + /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser/Baidu + /(?:ms|\()(ie)\s([\w\.]+)/i, // Internet Explorer + // Webkit/KHTML based + /(rekonq)\/([\w\.]*)/i, // Rekonq + /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\/([\w\.-]+)/i // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser + ], [NAME, VERSION], [/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i // IE11 + ], [[NAME, 'IE'], VERSION], [/(edge|edgios|edgea)\/((\d+)?[\w\.]+)/i // Microsoft Edge + ], [[NAME, 'Edge'], VERSION], [/(yabrowser)\/([\w\.]+)/i // Yandex + ], [[NAME, 'Yandex'], VERSION], [/(puffin)\/([\w\.]+)/i // Puffin + ], [[NAME, 'Puffin'], VERSION], [/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i // UCBrowser + ], [[NAME, 'UCBrowser'], VERSION], [/(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon + ], [[NAME, /_/g, ' '], VERSION], [/(micromessenger)\/([\w\.]+)/i // WeChat + ], [[NAME, 'WeChat'], VERSION], [/(qqbrowserlite)\/([\w\.]+)/i // QQBrowserLite + ], [NAME, VERSION], [/(QQ)\/([\d\.]+)/i // QQ, aka ShouQ + ], [NAME, VERSION], [/m?(qqbrowser)[\/\s]?([\w\.]+)/i // QQBrowser + ], [NAME, VERSION], [/(BIDUBrowser)[\/\s]?([\w\.]+)/i // Baidu Browser + ], [NAME, VERSION], [/(2345Explorer)[\/\s]?([\w\.]+)/i // 2345 Browser + ], [NAME, VERSION], [/(MetaSr)[\/\s]?([\w\.]+)/i // SouGouBrowser + ], [NAME], [/(LBBROWSER)/i // LieBao Browser + ], [NAME], [/xiaomi\/miuibrowser\/([\w\.]+)/i // MIUI Browser + ], [VERSION, [NAME, 'MIUI Browser']], [/;fbav\/([\w\.]+);/i // Facebook App for iOS & Android + ], [VERSION, [NAME, 'Facebook']], [/safari\s(line)\/([\w\.]+)/i, // Line App for iOS + /android.+(line)\/([\w\.]+)\/iab/i // Line App for Android + ], [NAME, VERSION], [/headlesschrome(?:\/([\w\.]+)|\s)/i // Chrome Headless + ], [VERSION, [NAME, 'Chrome Headless']], [/\swv\).+(chrome)\/([\w\.]+)/i // Chrome WebView + ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [/((?:oculus|samsung)browser)\/([\w\.]+)/i], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [// Oculus / Samsung Browser + /android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i // Android Browser + ], [VERSION, [NAME, 'Android Browser']], [/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia + ], [NAME, VERSION], [/(dolfin)\/([\w\.]+)/i // Dolphin + ], [[NAME, 'Dolphin'], VERSION], [/((?:android.+)crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS + ], [[NAME, 'Chrome'], VERSION], [/(coast)\/([\w\.]+)/i // Opera Coast + ], [[NAME, 'Opera Coast'], VERSION], [/fxios\/([\w\.-]+)/i // Firefox for iOS + ], [VERSION, [NAME, 'Firefox']], [/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i // Mobile Safari + ], [VERSION, [NAME, 'Mobile Safari']], [/version\/([\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile + ], [VERSION, NAME], [/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Google Search Appliance on iOS + ], [[NAME, 'GSA'], VERSION], [/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Safari < 3.0 + ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [/(konqueror)\/([\w\.]+)/i, // Konqueror + /(webkit|khtml)\/([\w\.]+)/i], [NAME, VERSION], [// Gecko based + /(navigator|netscape)\/([\w\.-]+)/i // Netscape + ], [[NAME, 'Netscape'], VERSION], [/(swiftfox)/i, // Swiftfox + /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror + /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i, // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix + /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla + // Other + /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i, // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir + /(links)\s\(([\w\.]+)/i, // Links + /(gobrowser)\/?([\w\.]*)/i, // GoBrowser + /(ice\s?browser)\/v?([\w\._]+)/i, // ICE Browser + /(mosaic)[\/\s]([\w\.]+)/i // Mosaic + ], [NAME, VERSION] + /* ///////////////////// + // Media players BEGIN + //////////////////////// + , [ + /(apple(?:coremedia|))\/((\d+)[\w\._]+)/i, // Generic Apple CoreMedia + /(coremedia) v((\d+)[\w\._]+)/i + ], [NAME, VERSION], [ + /(aqualung|lyssna|bsplayer)\/((\d+)?[\w\.-]+)/i // Aqualung/Lyssna/BSPlayer + ], [NAME, VERSION], [ + /(ares|ossproxy)\s((\d+)[\w\.-]+)/i // Ares/OSSProxy + ], [NAME, VERSION], [ + /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/((\d+)[\w\.-]+)/i, + // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC + // NSPlayer/PSP-InternetRadioPlayer/Videos + /(clementine|music player daemon)\s((\d+)[\w\.-]+)/i, // Clementine/MPD + /(lg player|nexplayer)\s((\d+)[\d\.]+)/i, + /player\/(nexplayer|lg player)\s((\d+)[\w\.-]+)/i // NexPlayer/LG Player + ], [NAME, VERSION], [ + /(nexplayer)\s((\d+)[\w\.-]+)/i // Nexplayer + ], [NAME, VERSION], [ + /(flrp)\/((\d+)[\w\.-]+)/i // Flip Player + ], [[NAME, 'Flip Player'], VERSION], [ + /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i + // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit + ], [NAME], [ + /(gstreamer) souphttpsrc (?:\([^\)]+\)){0,1} libsoup\/((\d+)[\w\.-]+)/i + // Gstreamer + ], [NAME, VERSION], [ + /(htc streaming player)\s[\w_]+\s\/\s((\d+)[\d\.]+)/i, // HTC Streaming Player + /(java|python-urllib|python-requests|wget|libcurl)\/((\d+)[\w\.-_]+)/i, + // Java/urllib/requests/wget/cURL + /(lavf)((\d+)[\d\.]+)/i // Lavf (FFMPEG) + ], [NAME, VERSION], [ + /(htc_one_s)\/((\d+)[\d\.]+)/i // HTC One S + ], [[NAME, /_/g, ' '], VERSION], [ + /(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+){0,1})/i + // MPlayer SVN + ], [NAME, VERSION], [ + /(mplayer)(?:\s|\/|[unkow-]+)((\d+)[\w\.-]+)/i // MPlayer + ], [NAME, VERSION], [ + /(mplayer)/i, // MPlayer (no other info) + /(yourmuze)/i, // YourMuze + /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime + ], [NAME], [ + /(nero (?:home|scout))\/((\d+)[\w\.-]+)/i // Nero Home/Nero Scout + ], [NAME, VERSION], [ + /(nokia\d+)\/((\d+)[\w\.-]+)/i // Nokia + ], [NAME, VERSION], [ + /\s(songbird)\/((\d+)[\w\.-]+)/i // Songbird/Philips-Songbird + ], [NAME, VERSION], [ + /(winamp)3 version ((\d+)[\w\.-]+)/i, // Winamp + /(winamp)\s((\d+)[\w\.-]+)/i, + /(winamp)mpeg\/((\d+)[\w\.-]+)/i + ], [NAME, VERSION], [ + /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info) + // inlight radio + ], [NAME], [ + /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/((\d+)[\w\.-]+)/i + // QuickTime/RealMedia/RadioApp/RadioClientApplication/ + // SoundTap/Totem/Stagefright/Streamium + ], [NAME, VERSION], [ + /(smp)((\d+)[\d\.]+)/i // SMP + ], [NAME, VERSION], [ + /(vlc) media player - version ((\d+)[\w\.]+)/i, // VLC Videolan + /(vlc)\/((\d+)[\w\.-]+)/i, + /(xbmc|gvfs|xine|xmms|irapp)\/((\d+)[\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp + /(foobar2000)\/((\d+)[\d\.]+)/i, // Foobar2000 + /(itunes)\/((\d+)[\d\.]+)/i // iTunes + ], [NAME, VERSION], [ + /(wmplayer)\/((\d+)[\w\.-]+)/i, // Windows Media Player + /(windows-media-player)\/((\d+)[\w\.-]+)/i + ], [[NAME, /-/g, ' '], VERSION], [ + /windows\/((\d+)[\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i + // Windows Media Server + ], [VERSION, [NAME, 'Windows']], [ + /(com\.riseupradioalarm)\/((\d+)[\d\.]*)/i // RiseUP Radio Alarm + ], [NAME, VERSION], [ + /(rad.io)\s((\d+)[\d\.]+)/i, // Rad.io + /(radio.(?:de|at|fr))\s((\d+)[\d\.]+)/i + ], [[NAME, 'rad.io'], VERSION] + ////////////////////// + // Media players END + ////////////////////*/ + ], + cpu: [[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i // AMD64 + ], [[ARCHITECTURE, 'amd64']], [/(ia32(?=;))/i // IA32 (quicktime) + ], [[ARCHITECTURE, util.lowerize]], [/((?:i[346]|x)86)[;\)]/i // IA32 + ], [[ARCHITECTURE, 'ia32']], [// PocketPC mistakenly identified as PowerPC + /windows\s(ce|mobile);\sppc;/i], [[ARCHITECTURE, 'arm']], [/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i // PowerPC + ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [/(sun4\w)[;\)]/i // SPARC + ], [[ARCHITECTURE, 'sparc']], [/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+[;l]))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC + ], [[ARCHITECTURE, util.lowerize]]], + device: [[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i // iPad/PlayBook + ], [MODEL, VENDOR, [TYPE, TABLET]], [/applecoremedia\/[\w\.]+ \((ipad)/ // iPad + ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [/(apple\s{0,1}tv)/i // Apple TV + ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [/(archos)\s(gamepad2?)/i, // Archos + /(hp).+(touchpad)/i, // HP TouchPad + /(hp).+(tablet)/i, // HP Tablet + /(kindle)\/([\w\.]+)/i, // Kindle + /\s(nook)[\w\s]+build\/(\w+)/i, // Nook + /(dell)\s(strea[kpr\s\d]*[\dko])/i // Dell Streak + ], [VENDOR, MODEL, [TYPE, TABLET]], [/(kf[A-z]+)\sbuild\/.+silk\//i // Kindle Fire HD + ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i // Fire Phone + ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [/android.+aft([bms])\sbuild/i // Fire TV + ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [/\((ip[honed|\s\w*]+);.+(apple)/i // iPod/iPhone + ], [MODEL, VENDOR, [TYPE, MOBILE]], [/\((ip[honed|\s\w*]+);/i // iPod/iPhone + ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [/(blackberry)[\s-]?(\w+)/i, // BlackBerry + /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i, // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron + /(hp)\s([\w\s]+\w)/i, // HP iPAQ + /(asus)-?(\w+)/i // Asus + ], [VENDOR, MODEL, [TYPE, MOBILE]], [/\(bb10;\s(\w+)/i // BlackBerry 10 + ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [// Asus Tablets + /android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [/(sony)\s(tablet\s[ps])\sbuild\//i, // Sony + /(sony)?(?:sgp.+)\sbuild\//i], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [/android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [/\s(ouya)\s/i, // Ouya + /(nintendo)\s([wids3u]+)/i // Nintendo + ], [VENDOR, MODEL, [TYPE, CONSOLE]], [/android.+;\s(shield)\sbuild/i // Nvidia + ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [/(playstation\s[34portablevi]+)/i // Playstation + ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [/(sprint\s(\w+))/i // Sprint Phones + ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i // Lenovo tablets + ], [VENDOR, MODEL, [TYPE, TABLET]], [/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, // HTC + /(zte)-(\w*)/i, // ZTE + /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony + ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [/(nexus\s9)/i // HTC Nexus 9 + ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [/d\/huawei([\w\s-]+)[;\)]/i, /(nexus\s6p)/i // Huawei + ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [/(microsoft);\s(lumia[\s\w]+)/i // Microsoft Lumia + ], [VENDOR, MODEL, [TYPE, MOBILE]], [/[\s\(;](xbox(?:\sone)?)[\s\);]/i // Microsoft Xbox + ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [/(kin\.[onetw]{3})/i // Microsoft Kin + ], [[MODEL, /\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [// Motorola + /\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i, /mot[\s-]?(\w*)/i, /(XT\d{3,4}) build\//i, /(nexus\s6)/i], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i // HbbTV devices + ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [/hbbtv.+maple;(\d+)/i], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [/\(dtv[\);].+(aquos)/i // Sharp + ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i, /((SM-T\w+))/i], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [// Samsung + /smart-tv.+(samsung)/i], [VENDOR, [TYPE, SMARTTV], MODEL], [/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i, /(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i, /sec-((sgh\w+))/i], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [/sie-(\w*)/i // Siemens + ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [/(maemo|nokia).*(n900|lumia\s\d+)/i, // Nokia + /(nokia)[\s_-]?([\w-]*)/i], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [/android\s3\.[\s\w;-]{10}(a\d{3})/i // Acer + ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [/android.+([vl]k\-?\d{3})\s+build/i // LG Tablet + ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet + ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [/(lg) netcast\.tv/i // LG SmartTV + ], [VENDOR, MODEL, [TYPE, SMARTTV]], [/(nexus\s[45])/i, // LG + /lg[e;\s\/-]+(\w*)/i, /android.+lg(\-?[\d\w]+)\s+build/i], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [/android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo + ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [/linux;.+((jolla));/i // Jolla + ], [VENDOR, MODEL, [TYPE, MOBILE]], [/((pebble))app\/[\d\.]+\s/i // Pebble + ], [VENDOR, MODEL, [TYPE, WEARABLE]], [/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i // OPPO + ], [VENDOR, MODEL, [TYPE, MOBILE]], [/crkey/i // Google Chromecast + ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [/android.+;\s(glass)\s\d/i // Google Glass + ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [/android.+;\s(pixel c)\s/i // Google Pixel C + ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [/android.+;\s(pixel [xl2]{1,2}|pixel)\s/i // Google Pixel + ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [/android.+;\s(\w+)\s+build\/hm\1/i, // Xiaomi Hongmi 'numeric' models + /android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i, // Xiaomi Hongmi + /android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i, // Xiaomi Mi + /android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i // Redmi Phones + ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i // Mi Pad tablets + ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [/android.+;\s(m[1-5]\snote)\sbuild/i // Meizu Tablet + ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [/android.+a000(1)\s+build/i, // OnePlus + /android.+oneplus\s(a\d{4})\s+build/i], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i // RCA Tablets + ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i // Dell Venue Tablets + ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i // Verizon Tablet + ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i // Barnes & Noble Tablet + ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i // Barnes & Noble Tablet + ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [/android.+;\s(k88)\sbuild/i // ZTE K Series Tablet + ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i // Swiss GEN Mobile + ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [/android.+[;\/]\s*(zur\d{3})\s+build/i // Swiss ZUR Tablet + ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i // Zeki Tablets + ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [/(android).+[;\/]\s+([YR]\d{2})\s+build/i, /android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i // Dragon Touch Tablet + ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i // Insignia Tablets + ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i // NextBook Tablets + ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [/android.+[;\/]\s*(Xtreme\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [// Voice Xtreme Phones + /android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i // LvTel Phones + ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i // Envizen Tablets + ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i // Le Pan Tablets + ], [VENDOR, MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i // MachSpeed Tablets + ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i // Trinity Tablets + ], [VENDOR, MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*TU_(1491)\s+build/i // Rotor Tablets + ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [/android.+(KS(.+))\s+build/i // Amazon Kindle Tablets + ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i // Gigaset Tablets + ], [VENDOR, MODEL, [TYPE, TABLET]], [/\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet + /\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile + ], [[TYPE, util.lowerize], VENDOR, MODEL], [/(android[\w\.\s\-]{0,9});.+build/i // Generic Android Device + ], [MODEL, [VENDOR, 'Generic']] + /*////////////////////////// + // TODO: move to string map + //////////////////////////// + /(C6603)/i // Sony Xperia Z C6603 + ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [ + /(C6903)/i // Sony Xperia Z 1 + ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [ + /(SM-G900[F|H])/i // Samsung Galaxy S5 + ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ + /(SM-G7102)/i // Samsung Galaxy Grand 2 + ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ + /(SM-G530H)/i // Samsung Galaxy Grand Prime + ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ + /(SM-G313HZ)/i // Samsung Galaxy V + ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ + /(SM-T805)/i // Samsung Galaxy Tab S 10.5 + ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [ + /(SM-G800F)/i // Samsung Galaxy S5 Mini + ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ + /(SM-T311)/i // Samsung Galaxy Tab 3 8.0 + ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [ + /(T3C)/i // Advan Vandroid T3C + ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [ + /(ADVAN T1J\+)/i // Advan Vandroid T1J+ + ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [ + /(ADVAN S4A)/i // Advan Vandroid S4A + ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [ + /(V972M)/i // ZTE V972M + ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [ + /(i-mobile)\s(IQ\s[\d\.]+)/i // i-mobile IQ + ], [VENDOR, MODEL, [TYPE, MOBILE]], [ + /(IQ6.3)/i // i-mobile IQ IQ 6.3 + ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [ + /(i-mobile)\s(i-style\s[\d\.]+)/i // i-mobile i-STYLE + ], [VENDOR, MODEL, [TYPE, MOBILE]], [ + /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1 + ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [ + /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512 + ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [ + ///////////// + // END TODO + ///////////*/ + ], + engine: [[/windows.+\sedge\/([\w\.]+)/i // EdgeHTML + ], [VERSION, [NAME, 'EdgeHTML']], [/(presto)\/([\w\.]+)/i, // Presto + /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m + /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, // KHTML/Tasman/Links + /(icab)[\/\s]([23]\.[\d\.]+)/i // iCab + ], [NAME, VERSION], [/rv\:([\w\.]{1,9}).+(gecko)/i // Gecko + ], [VERSION, NAME]], + os: [[// Windows based + /microsoft\s(windows)\s(vista|xp)/i // Windows (iTunes) + ], [NAME, VERSION], [/(windows)\snt\s6\.2;\s(arm)/i, // Windows RT + /(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i, // Windows Phone + /(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [// Mobile/Embedded OS + /\((bb)(10);/i // BlackBerry 10 + ], [[NAME, 'BlackBerry'], VERSION], [/(blackberry)\w*\/?([\w\.]*)/i, // Blackberry + /(tizen)[\/\s]([\w\.]+)/i, // Tizen + /(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]*)/i, // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki + /linux;.+(sailfish);/i // Sailfish OS + ], [NAME, VERSION], [/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i // Symbian + ], [[NAME, 'Symbian'], VERSION], [/\((series40);/i // Series 40 + ], [NAME], [/mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS + ], [[NAME, 'Firefox OS'], VERSION], [// Console + /(nintendo|playstation)\s([wids34portablevu]+)/i, // Nintendo/Playstation + // GNU/Linux based + /(mint)[\/\s\(]?(\w*)/i, // Mint + /(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux + /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i, // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware + // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus + /(hurd|linux)\s?([\w\.]*)/i, // Hurd/Linux + /(gnu)\s?([\w\.]*)/i // GNU + ], [NAME, VERSION], [/(cros)\s[\w]+\s([\w\.]+\w)/i // Chromium OS + ], [[NAME, 'Chromium OS'], VERSION], [// Solaris + /(sunos)\s?([\w\.\d]*)/i // Solaris + ], [[NAME, 'Solaris'], VERSION], [// BSD based + /\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly + ], [NAME, VERSION], [/(haiku)\s(\w+)/i // Haiku + ], [NAME, VERSION], [/cfnetwork\/.+darwin/i, /ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i // iOS + ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [/(mac\sos\sx)\s?([\w\s\.]*)/i, /(macintosh|mac(?=_powerpc)\s)/i // Mac OS + ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [// Other + /((?:open)?solaris)[\/\s-]?([\w\.]*)/i, // Solaris + /(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i, // AIX + /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS + /(unix)\s?([\w\.]*)/i // UNIX + ], [NAME, VERSION]] + }; ///////////////// + // Constructor + //////////////// + + /* + var Browser = function (name, version) { + this[NAME] = name; + this[VERSION] = version; + }; + var CPU = function (arch) { + this[ARCHITECTURE] = arch; + }; + var Device = function (vendor, model, type) { + this[VENDOR] = vendor; + this[MODEL] = model; + this[TYPE] = type; + }; + var Engine = Browser; + var OS = Browser; + */ + + var UAParser = function UAParser(uastring, extensions) { + if (_typeof(uastring) === 'object') { + extensions = uastring; + uastring = undefined; + } + + if (!(this instanceof UAParser)) { + return new UAParser(uastring, extensions).getResult(); + } + + var ua = uastring || (window && window.navigator && window.navigator.userAgent ? window.navigator.userAgent : EMPTY); + var rgxmap = extensions ? util.extend(regexes, extensions) : regexes; //var browser = new Browser(); + //var cpu = new CPU(); + //var device = new Device(); + //var engine = new Engine(); + //var os = new OS(); + + this.getBrowser = function () { + var browser = { + name: undefined, + version: undefined + }; + mapper.rgx.call(browser, ua, rgxmap.browser); + browser.major = util.major(browser.version); // deprecated + + return browser; }; - /////////////// - // String map - ////////////// + this.getCPU = function () { + var cpu = { + architecture: undefined + }; + mapper.rgx.call(cpu, ua, rgxmap.cpu); + return cpu; + }; + this.getDevice = function () { + var device = { + vendor: undefined, + model: undefined, + type: undefined + }; + mapper.rgx.call(device, ua, rgxmap.device); + return device; + }; - var maps = { + this.getEngine = function () { + var engine = { + name: undefined, + version: undefined + }; + mapper.rgx.call(engine, ua, rgxmap.engine); + return engine; + }; - browser: { - oldsafari: { - version: { - '1.0': '/8', - '1.2': '/1', - '1.3': '/3', - '2.0': '/412', - '2.0.2': '/416', - '2.0.3': '/417', - '2.0.4': '/419', - '?': '/' - } - } - }, + this.getOS = function () { + var os = { + name: undefined, + version: undefined + }; + mapper.rgx.call(os, ua, rgxmap.os); + return os; + }; - device: { - amazon: { - model: { - 'Fire Phone': ['SD', 'KF'] - } - }, - sprint: { - model: { - 'Evo Shift 4G': '7373KT' - }, - vendor: { - 'HTC': 'APA', - 'Sprint': 'Sprint' - } - } - }, + this.getResult = function () { + return { + ua: this.getUA(), + browser: this.getBrowser(), + engine: this.getEngine(), + os: this.getOS(), + device: this.getDevice(), + cpu: this.getCPU() + }; + }; - os: { - windows: { - version: { - 'ME': '4.90', - 'NT 3.11': 'NT3.51', - 'NT 4.0': 'NT4.0', - '2000': 'NT 5.0', - 'XP': ['NT 5.1', 'NT 5.2'], - 'Vista': 'NT 6.0', - '7': 'NT 6.1', - '8': 'NT 6.2', - '8.1': 'NT 6.3', - '10': ['NT 6.4', 'NT 10.0'], - 'RT': 'ARM' - } - } - } + this.getUA = function () { + return ua; }; - ////////////// - // Regex map - ///////////// - - - var regexes = { - - browser: [[ - - // Presto based - /(opera\smini)\/([\w\.-]+)/i, // Opera Mini - /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, // Opera Mobi/Tablet - /(opera).+version\/([\w\.]+)/i, // Opera > 9.80 - /(opera)[\/\s]+([\w\.]+)/i // Opera < 9.80 - ], [NAME, VERSION], [/(opios)[\/\s]+([\w\.]+)/i // Opera mini on iphone >= 8.0 - ], [[NAME, 'Opera Mini'], VERSION], [/\s(opr)\/([\w\.]+)/i // Opera Webkit - ], [[NAME, 'Opera'], VERSION], [ - - // Mixed - /(kindle)\/([\w\.]+)/i, // Kindle - /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i, - // Lunascape/Maxthon/Netfront/Jasmine/Blazer - - // Trident based - /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, - // Avant/IEMobile/SlimBrowser/Baidu - /(?:ms|\()(ie)\s([\w\.]+)/i, // Internet Explorer - - // Webkit/KHTML based - /(rekonq)\/([\w\.]*)/i, // Rekonq - /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\/([\w\.-]+)/i - // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser - ], [NAME, VERSION], [/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i // IE11 - ], [[NAME, 'IE'], VERSION], [/(edge|edgios|edgea)\/((\d+)?[\w\.]+)/i // Microsoft Edge - ], [[NAME, 'Edge'], VERSION], [/(yabrowser)\/([\w\.]+)/i // Yandex - ], [[NAME, 'Yandex'], VERSION], [/(puffin)\/([\w\.]+)/i // Puffin - ], [[NAME, 'Puffin'], VERSION], [/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i - // UCBrowser - ], [[NAME, 'UCBrowser'], VERSION], [/(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon - ], [[NAME, /_/g, ' '], VERSION], [/(micromessenger)\/([\w\.]+)/i // WeChat - ], [[NAME, 'WeChat'], VERSION], [/(qqbrowserlite)\/([\w\.]+)/i // QQBrowserLite - ], [NAME, VERSION], [/(QQ)\/([\d\.]+)/i // QQ, aka ShouQ - ], [NAME, VERSION], [/m?(qqbrowser)[\/\s]?([\w\.]+)/i // QQBrowser - ], [NAME, VERSION], [/(BIDUBrowser)[\/\s]?([\w\.]+)/i // Baidu Browser - ], [NAME, VERSION], [/(2345Explorer)[\/\s]?([\w\.]+)/i // 2345 Browser - ], [NAME, VERSION], [/(MetaSr)[\/\s]?([\w\.]+)/i // SouGouBrowser - ], [NAME], [/(LBBROWSER)/i // LieBao Browser - ], [NAME], [/xiaomi\/miuibrowser\/([\w\.]+)/i // MIUI Browser - ], [VERSION, [NAME, 'MIUI Browser']], [/;fbav\/([\w\.]+);/i // Facebook App for iOS & Android - ], [VERSION, [NAME, 'Facebook']], [/safari\s(line)\/([\w\.]+)/i, // Line App for iOS - /android.+(line)\/([\w\.]+)\/iab/i // Line App for Android - ], [NAME, VERSION], [/headlesschrome(?:\/([\w\.]+)|\s)/i // Chrome Headless - ], [VERSION, [NAME, 'Chrome Headless']], [/\swv\).+(chrome)\/([\w\.]+)/i // Chrome WebView - ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [/((?:oculus|samsung)browser)\/([\w\.]+)/i], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [// Oculus / Samsung Browser - - /android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i // Android Browser - ], [VERSION, [NAME, 'Android Browser']], [/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i - // Chrome/OmniWeb/Arora/Tizen/Nokia - ], [NAME, VERSION], [/(dolfin)\/([\w\.]+)/i // Dolphin - ], [[NAME, 'Dolphin'], VERSION], [/((?:android.+)crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS - ], [[NAME, 'Chrome'], VERSION], [/(coast)\/([\w\.]+)/i // Opera Coast - ], [[NAME, 'Opera Coast'], VERSION], [/fxios\/([\w\.-]+)/i // Firefox for iOS - ], [VERSION, [NAME, 'Firefox']], [/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i // Mobile Safari - ], [VERSION, [NAME, 'Mobile Safari']], [/version\/([\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile - ], [VERSION, NAME], [/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Google Search Appliance on iOS - ], [[NAME, 'GSA'], VERSION], [/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Safari < 3.0 - ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [/(konqueror)\/([\w\.]+)/i, // Konqueror - /(webkit|khtml)\/([\w\.]+)/i], [NAME, VERSION], [ - - // Gecko based - /(navigator|netscape)\/([\w\.-]+)/i // Netscape - ], [[NAME, 'Netscape'], VERSION], [/(swiftfox)/i, // Swiftfox - /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, - // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror - /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i, - - // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix - /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla - - // Other - /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i, - // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir - /(links)\s\(([\w\.]+)/i, // Links - /(gobrowser)\/?([\w\.]*)/i, // GoBrowser - /(ice\s?browser)\/v?([\w\._]+)/i, // ICE Browser - /(mosaic)[\/\s]([\w\.]+)/i // Mosaic - ], [NAME, VERSION] - - /* ///////////////////// - // Media players BEGIN - //////////////////////// - , [ - /(apple(?:coremedia|))\/((\d+)[\w\._]+)/i, // Generic Apple CoreMedia - /(coremedia) v((\d+)[\w\._]+)/i - ], [NAME, VERSION], [ - /(aqualung|lyssna|bsplayer)\/((\d+)?[\w\.-]+)/i // Aqualung/Lyssna/BSPlayer - ], [NAME, VERSION], [ - /(ares|ossproxy)\s((\d+)[\w\.-]+)/i // Ares/OSSProxy - ], [NAME, VERSION], [ - /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/((\d+)[\w\.-]+)/i, - // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC - // NSPlayer/PSP-InternetRadioPlayer/Videos - /(clementine|music player daemon)\s((\d+)[\w\.-]+)/i, // Clementine/MPD - /(lg player|nexplayer)\s((\d+)[\d\.]+)/i, - /player\/(nexplayer|lg player)\s((\d+)[\w\.-]+)/i // NexPlayer/LG Player - ], [NAME, VERSION], [ - /(nexplayer)\s((\d+)[\w\.-]+)/i // Nexplayer - ], [NAME, VERSION], [ - /(flrp)\/((\d+)[\w\.-]+)/i // Flip Player - ], [[NAME, 'Flip Player'], VERSION], [ - /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i - // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit - ], [NAME], [ - /(gstreamer) souphttpsrc (?:\([^\)]+\)){0,1} libsoup\/((\d+)[\w\.-]+)/i - // Gstreamer - ], [NAME, VERSION], [ - /(htc streaming player)\s[\w_]+\s\/\s((\d+)[\d\.]+)/i, // HTC Streaming Player - /(java|python-urllib|python-requests|wget|libcurl)\/((\d+)[\w\.-_]+)/i, - // Java/urllib/requests/wget/cURL - /(lavf)((\d+)[\d\.]+)/i // Lavf (FFMPEG) - ], [NAME, VERSION], [ - /(htc_one_s)\/((\d+)[\d\.]+)/i // HTC One S - ], [[NAME, /_/g, ' '], VERSION], [ - /(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+){0,1})/i - // MPlayer SVN - ], [NAME, VERSION], [ - /(mplayer)(?:\s|\/|[unkow-]+)((\d+)[\w\.-]+)/i // MPlayer - ], [NAME, VERSION], [ - /(mplayer)/i, // MPlayer (no other info) - /(yourmuze)/i, // YourMuze - /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime - ], [NAME], [ - /(nero (?:home|scout))\/((\d+)[\w\.-]+)/i // Nero Home/Nero Scout - ], [NAME, VERSION], [ - /(nokia\d+)\/((\d+)[\w\.-]+)/i // Nokia - ], [NAME, VERSION], [ - /\s(songbird)\/((\d+)[\w\.-]+)/i // Songbird/Philips-Songbird - ], [NAME, VERSION], [ - /(winamp)3 version ((\d+)[\w\.-]+)/i, // Winamp - /(winamp)\s((\d+)[\w\.-]+)/i, - /(winamp)mpeg\/((\d+)[\w\.-]+)/i - ], [NAME, VERSION], [ - /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info) - // inlight radio - ], [NAME], [ - /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/((\d+)[\w\.-]+)/i - // QuickTime/RealMedia/RadioApp/RadioClientApplication/ - // SoundTap/Totem/Stagefright/Streamium - ], [NAME, VERSION], [ - /(smp)((\d+)[\d\.]+)/i // SMP - ], [NAME, VERSION], [ - /(vlc) media player - version ((\d+)[\w\.]+)/i, // VLC Videolan - /(vlc)\/((\d+)[\w\.-]+)/i, - /(xbmc|gvfs|xine|xmms|irapp)\/((\d+)[\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp - /(foobar2000)\/((\d+)[\d\.]+)/i, // Foobar2000 - /(itunes)\/((\d+)[\d\.]+)/i // iTunes - ], [NAME, VERSION], [ - /(wmplayer)\/((\d+)[\w\.-]+)/i, // Windows Media Player - /(windows-media-player)\/((\d+)[\w\.-]+)/i - ], [[NAME, /-/g, ' '], VERSION], [ - /windows\/((\d+)[\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i - // Windows Media Server - ], [VERSION, [NAME, 'Windows']], [ - /(com\.riseupradioalarm)\/((\d+)[\d\.]*)/i // RiseUP Radio Alarm - ], [NAME, VERSION], [ - /(rad.io)\s((\d+)[\d\.]+)/i, // Rad.io - /(radio.(?:de|at|fr))\s((\d+)[\d\.]+)/i - ], [[NAME, 'rad.io'], VERSION] - ////////////////////// - // Media players END - ////////////////////*/ - - ], - - cpu: [[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i // AMD64 - ], [[ARCHITECTURE, 'amd64']], [/(ia32(?=;))/i // IA32 (quicktime) - ], [[ARCHITECTURE, util.lowerize]], [/((?:i[346]|x)86)[;\)]/i // IA32 - ], [[ARCHITECTURE, 'ia32']], [ - - // PocketPC mistakenly identified as PowerPC - /windows\s(ce|mobile);\sppc;/i], [[ARCHITECTURE, 'arm']], [/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i // PowerPC - ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [/(sun4\w)[;\)]/i // SPARC - ], [[ARCHITECTURE, 'sparc']], [/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+[;l]))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i - // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC - ], [[ARCHITECTURE, util.lowerize]]], - - device: [[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i // iPad/PlayBook - ], [MODEL, VENDOR, [TYPE, TABLET]], [/applecoremedia\/[\w\.]+ \((ipad)/ // iPad - ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [/(apple\s{0,1}tv)/i // Apple TV - ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [/(archos)\s(gamepad2?)/i, // Archos - /(hp).+(touchpad)/i, // HP TouchPad - /(hp).+(tablet)/i, // HP Tablet - /(kindle)\/([\w\.]+)/i, // Kindle - /\s(nook)[\w\s]+build\/(\w+)/i, // Nook - /(dell)\s(strea[kpr\s\d]*[\dko])/i // Dell Streak - ], [VENDOR, MODEL, [TYPE, TABLET]], [/(kf[A-z]+)\sbuild\/.+silk\//i // Kindle Fire HD - ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i // Fire Phone - ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [/android.+aft([bms])\sbuild/i // Fire TV - ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [/\((ip[honed|\s\w*]+);.+(apple)/i // iPod/iPhone - ], [MODEL, VENDOR, [TYPE, MOBILE]], [/\((ip[honed|\s\w*]+);/i // iPod/iPhone - ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [/(blackberry)[\s-]?(\w+)/i, // BlackBerry - /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i, - // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron - /(hp)\s([\w\s]+\w)/i, // HP iPAQ - /(asus)-?(\w+)/i // Asus - ], [VENDOR, MODEL, [TYPE, MOBILE]], [/\(bb10;\s(\w+)/i // BlackBerry 10 - ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [ - // Asus Tablets - /android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [/(sony)\s(tablet\s[ps])\sbuild\//i, // Sony - /(sony)?(?:sgp.+)\sbuild\//i], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [/android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [/\s(ouya)\s/i, // Ouya - /(nintendo)\s([wids3u]+)/i // Nintendo - ], [VENDOR, MODEL, [TYPE, CONSOLE]], [/android.+;\s(shield)\sbuild/i // Nvidia - ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [/(playstation\s[34portablevi]+)/i // Playstation - ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [/(sprint\s(\w+))/i // Sprint Phones - ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i // Lenovo tablets - ], [VENDOR, MODEL, [TYPE, TABLET]], [/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, // HTC - /(zte)-(\w*)/i, // ZTE - /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i - // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony - ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [/(nexus\s9)/i // HTC Nexus 9 - ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [/d\/huawei([\w\s-]+)[;\)]/i, /(nexus\s6p)/i // Huawei - ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [/(microsoft);\s(lumia[\s\w]+)/i // Microsoft Lumia - ], [VENDOR, MODEL, [TYPE, MOBILE]], [/[\s\(;](xbox(?:\sone)?)[\s\);]/i // Microsoft Xbox - ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [/(kin\.[onetw]{3})/i // Microsoft Kin - ], [[MODEL, /\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [ - - // Motorola - /\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i, /mot[\s-]?(\w*)/i, /(XT\d{3,4}) build\//i, /(nexus\s6)/i], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i // HbbTV devices - ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [/hbbtv.+maple;(\d+)/i], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [/\(dtv[\);].+(aquos)/i // Sharp - ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i, /((SM-T\w+))/i], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [// Samsung - /smart-tv.+(samsung)/i], [VENDOR, [TYPE, SMARTTV], MODEL], [/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i, /(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i, /sec-((sgh\w+))/i], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [/sie-(\w*)/i // Siemens - ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [/(maemo|nokia).*(n900|lumia\s\d+)/i, // Nokia - /(nokia)[\s_-]?([\w-]*)/i], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [/android\s3\.[\s\w;-]{10}(a\d{3})/i // Acer - ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [/android.+([vl]k\-?\d{3})\s+build/i // LG Tablet - ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet - ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [/(lg) netcast\.tv/i // LG SmartTV - ], [VENDOR, MODEL, [TYPE, SMARTTV]], [/(nexus\s[45])/i, // LG - /lg[e;\s\/-]+(\w*)/i, /android.+lg(\-?[\d\w]+)\s+build/i], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [/android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo - ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [/linux;.+((jolla));/i // Jolla - ], [VENDOR, MODEL, [TYPE, MOBILE]], [/((pebble))app\/[\d\.]+\s/i // Pebble - ], [VENDOR, MODEL, [TYPE, WEARABLE]], [/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i // OPPO - ], [VENDOR, MODEL, [TYPE, MOBILE]], [/crkey/i // Google Chromecast - ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [/android.+;\s(glass)\s\d/i // Google Glass - ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [/android.+;\s(pixel c)\s/i // Google Pixel C - ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [/android.+;\s(pixel [xl2]{1,2}|pixel)\s/i // Google Pixel - ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [/android.+;\s(\w+)\s+build\/hm\1/i, // Xiaomi Hongmi 'numeric' models - /android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i, // Xiaomi Hongmi - /android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i, // Xiaomi Mi - /android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i // Redmi Phones - ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i // Mi Pad tablets - ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [/android.+;\s(m[1-5]\snote)\sbuild/i // Meizu Tablet - ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [/android.+a000(1)\s+build/i, // OnePlus - /android.+oneplus\s(a\d{4})\s+build/i], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i // RCA Tablets - ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i // Dell Venue Tablets - ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i // Verizon Tablet - ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i // Barnes & Noble Tablet - ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i // Barnes & Noble Tablet - ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [/android.+;\s(k88)\sbuild/i // ZTE K Series Tablet - ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i // Swiss GEN Mobile - ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [/android.+[;\/]\s*(zur\d{3})\s+build/i // Swiss ZUR Tablet - ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i // Zeki Tablets - ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [/(android).+[;\/]\s+([YR]\d{2})\s+build/i, /android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i // Dragon Touch Tablet - ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i // Insignia Tablets - ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i // NextBook Tablets - ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [/android.+[;\/]\s*(Xtreme\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [// Voice Xtreme Phones - - /android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i // LvTel Phones - ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i // Envizen Tablets - ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i // Le Pan Tablets - ], [VENDOR, MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i // MachSpeed Tablets - ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i // Trinity Tablets - ], [VENDOR, MODEL, [TYPE, TABLET]], [/android.+[;\/]\s*TU_(1491)\s+build/i // Rotor Tablets - ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [/android.+(KS(.+))\s+build/i // Amazon Kindle Tablets - ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i // Gigaset Tablets - ], [VENDOR, MODEL, [TYPE, TABLET]], [/\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet - /\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile - ], [[TYPE, util.lowerize], VENDOR, MODEL], [/(android[\w\.\s\-]{0,9});.+build/i // Generic Android Device - ], [MODEL, [VENDOR, 'Generic']] - - /*////////////////////////// - // TODO: move to string map - //////////////////////////// - /(C6603)/i // Sony Xperia Z C6603 - ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [ - /(C6903)/i // Sony Xperia Z 1 - ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [ - /(SM-G900[F|H])/i // Samsung Galaxy S5 - ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ - /(SM-G7102)/i // Samsung Galaxy Grand 2 - ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ - /(SM-G530H)/i // Samsung Galaxy Grand Prime - ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ - /(SM-G313HZ)/i // Samsung Galaxy V - ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ - /(SM-T805)/i // Samsung Galaxy Tab S 10.5 - ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [ - /(SM-G800F)/i // Samsung Galaxy S5 Mini - ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [ - /(SM-T311)/i // Samsung Galaxy Tab 3 8.0 - ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [ - /(T3C)/i // Advan Vandroid T3C - ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [ - /(ADVAN T1J\+)/i // Advan Vandroid T1J+ - ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [ - /(ADVAN S4A)/i // Advan Vandroid S4A - ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [ - /(V972M)/i // ZTE V972M - ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [ - /(i-mobile)\s(IQ\s[\d\.]+)/i // i-mobile IQ - ], [VENDOR, MODEL, [TYPE, MOBILE]], [ - /(IQ6.3)/i // i-mobile IQ IQ 6.3 - ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [ - /(i-mobile)\s(i-style\s[\d\.]+)/i // i-mobile i-STYLE - ], [VENDOR, MODEL, [TYPE, MOBILE]], [ - /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1 - ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [ - /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512 - ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [ - ///////////// - // END TODO - ///////////*/ - - ], - - engine: [[/windows.+\sedge\/([\w\.]+)/i // EdgeHTML - ], [VERSION, [NAME, 'EdgeHTML']], [/(presto)\/([\w\.]+)/i, // Presto - /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m - /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, // KHTML/Tasman/Links - /(icab)[\/\s]([23]\.[\d\.]+)/i // iCab - ], [NAME, VERSION], [/rv\:([\w\.]{1,9}).+(gecko)/i // Gecko - ], [VERSION, NAME]], - - os: [[ - - // Windows based - /microsoft\s(windows)\s(vista|xp)/i // Windows (iTunes) - ], [NAME, VERSION], [/(windows)\snt\s6\.2;\s(arm)/i, // Windows RT - /(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i, // Windows Phone - /(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [ - - // Mobile/Embedded OS - /\((bb)(10);/i // BlackBerry 10 - ], [[NAME, 'BlackBerry'], VERSION], [/(blackberry)\w*\/?([\w\.]*)/i, // Blackberry - /(tizen)[\/\s]([\w\.]+)/i, // Tizen - /(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]*)/i, - // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki - /linux;.+(sailfish);/i // Sailfish OS - ], [NAME, VERSION], [/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i // Symbian - ], [[NAME, 'Symbian'], VERSION], [/\((series40);/i // Series 40 - ], [NAME], [/mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS - ], [[NAME, 'Firefox OS'], VERSION], [ - - // Console - /(nintendo|playstation)\s([wids34portablevu]+)/i, // Nintendo/Playstation - - // GNU/Linux based - /(mint)[\/\s\(]?(\w*)/i, // Mint - /(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux - /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i, - // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware - // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus - /(hurd|linux)\s?([\w\.]*)/i, // Hurd/Linux - /(gnu)\s?([\w\.]*)/i // GNU - ], [NAME, VERSION], [/(cros)\s[\w]+\s([\w\.]+\w)/i // Chromium OS - ], [[NAME, 'Chromium OS'], VERSION], [ - - // Solaris - /(sunos)\s?([\w\.\d]*)/i // Solaris - ], [[NAME, 'Solaris'], VERSION], [ - - // BSD based - /\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly - ], [NAME, VERSION], [/(haiku)\s(\w+)/i // Haiku - ], [NAME, VERSION], [/cfnetwork\/.+darwin/i, /ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i // iOS - ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [/(mac\sos\sx)\s?([\w\s\.]*)/i, /(macintosh|mac(?=_powerpc)\s)/i // Mac OS - ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [ - - // Other - /((?:open)?solaris)[\/\s-]?([\w\.]*)/i, // Solaris - /(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i, // AIX - /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, - // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS - /(unix)\s?([\w\.]*)/i // UNIX - ], [NAME, VERSION]] + this.setUA = function (uastring) { + ua = uastring; //browser = new Browser(); + //cpu = new CPU(); + //device = new Device(); + //engine = new Engine(); + //os = new OS(); + + return this; }; - ///////////////// - // Constructor - //////////////// + return this; + }; + + UAParser.VERSION = LIBVERSION; + UAParser.BROWSER = { + NAME: NAME, + MAJOR: MAJOR, + // deprecated + VERSION: VERSION + }; + UAParser.CPU = { + ARCHITECTURE: ARCHITECTURE + }; + UAParser.DEVICE = { + MODEL: MODEL, + VENDOR: VENDOR, + TYPE: TYPE, + CONSOLE: CONSOLE, + MOBILE: MOBILE, + SMARTTV: SMARTTV, + TABLET: TABLET, + WEARABLE: WEARABLE, + EMBEDDED: EMBEDDED + }; + UAParser.ENGINE = { + NAME: NAME, + VERSION: VERSION + }; + UAParser.OS = { + NAME: NAME, + VERSION: VERSION + }; //UAParser.Utils = util; + /////////// + // Export + ////////// + // check js environment + + if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) !== UNDEF_TYPE) { + // nodejs env + if ((typeof module === "undefined" ? "undefined" : _typeof(module)) !== UNDEF_TYPE && module.exports) { + exports = module.exports = UAParser; + } // TODO: test!!!!!!!! + /* - var Browser = function (name, version) { - this[NAME] = name; - this[VERSION] = version; + if (require && require.main === module && process) { + // cli + var jsonize = function (arr) { + var res = []; + for (var i in arr) { + res.push(new UAParser(arr[i]).getResult()); + } + process.stdout.write(JSON.stringify(res, null, 2) + '\n'); }; - var CPU = function (arch) { - this[ARCHITECTURE] = arch; - }; - var Device = function (vendor, model, type) { - this[VENDOR] = vendor; - this[MODEL] = model; - this[TYPE] = type; - }; - var Engine = Browser; - var OS = Browser; + if (process.stdin.isTTY) { + // via args + jsonize(process.argv.slice(2)); + } else { + // via pipe + var str = ''; + process.stdin.on('readable', function() { + var read = process.stdin.read(); + if (read !== null) { + str += read; + } + }); + process.stdin.on('end', function () { + jsonize(str.replace(/\n$/, '').split('\n')); + }); + } + } */ - var UAParser = function UAParser(uastring, extensions) { - if ((typeof uastring === 'undefined' ? 'undefined' : _typeof(uastring)) === 'object') { - extensions = uastring; - uastring = undefined; - } - if (!(this instanceof UAParser)) { - return new UAParser(uastring, extensions).getResult(); - } + exports.UAParser = UAParser; + } else { + // requirejs env (optional) + if ((typeof define === "undefined" ? "undefined" : _typeof(define)) === FUNC_TYPE && define.amd) { + define(function () { + return UAParser; + }); + } else if (window) { + // browser env + window.UAParser = UAParser; + } + } // jQuery/Zepto specific (optional) + // Note: + // In AMD env the global scope should be kept clean, but jQuery is an exception. + // jQuery always exports to global scope, unless jQuery.noConflict(true) is used, + // and we should catch that. - var ua = uastring || (window && window.navigator && window.navigator.userAgent ? window.navigator.userAgent : EMPTY); - var rgxmap = extensions ? util.extend(regexes, extensions) : regexes; - //var browser = new Browser(); - //var cpu = new CPU(); - //var device = new Device(); - //var engine = new Engine(); - //var os = new OS(); - - this.getBrowser = function () { - var browser = { name: undefined, version: undefined }; - mapper.rgx.call(browser, ua, rgxmap.browser); - browser.major = util.major(browser.version); // deprecated - return browser; - }; - this.getCPU = function () { - var cpu = { architecture: undefined }; - mapper.rgx.call(cpu, ua, rgxmap.cpu); - return cpu; - }; - this.getDevice = function () { - var device = { vendor: undefined, model: undefined, type: undefined }; - mapper.rgx.call(device, ua, rgxmap.device); - return device; - }; - this.getEngine = function () { - var engine = { name: undefined, version: undefined }; - mapper.rgx.call(engine, ua, rgxmap.engine); - return engine; - }; - this.getOS = function () { - var os = { name: undefined, version: undefined }; - mapper.rgx.call(os, ua, rgxmap.os); - return os; - }; - this.getResult = function () { - return { - ua: this.getUA(), - browser: this.getBrowser(), - engine: this.getEngine(), - os: this.getOS(), - device: this.getDevice(), - cpu: this.getCPU() - }; - }; - this.getUA = function () { - return ua; - }; - this.setUA = function (uastring) { - ua = uastring; - //browser = new Browser(); - //cpu = new CPU(); - //device = new Device(); - //engine = new Engine(); - //os = new OS(); - return this; - }; - return this; - }; - UAParser.VERSION = LIBVERSION; - UAParser.BROWSER = { - NAME: NAME, - MAJOR: MAJOR, // deprecated - VERSION: VERSION - }; - UAParser.CPU = { - ARCHITECTURE: ARCHITECTURE - }; - UAParser.DEVICE = { - MODEL: MODEL, - VENDOR: VENDOR, - TYPE: TYPE, - CONSOLE: CONSOLE, - MOBILE: MOBILE, - SMARTTV: SMARTTV, - TABLET: TABLET, - WEARABLE: WEARABLE, - EMBEDDED: EMBEDDED - }; - UAParser.ENGINE = { - NAME: NAME, - VERSION: VERSION - }; - UAParser.OS = { - NAME: NAME, - VERSION: VERSION - }; - //UAParser.Utils = util; + var $ = window && (window.jQuery || window.Zepto); - /////////// - // Export - ////////// + if (_typeof($) !== UNDEF_TYPE) { + var parser = new UAParser(); + $.ua = parser.getResult(); + $.ua.get = function () { + return parser.getUA(); + }; - // check js environment - if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) !== UNDEF_TYPE) { - // nodejs env - if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) !== UNDEF_TYPE && module.exports) { - exports = module.exports = UAParser; - } - // TODO: test!!!!!!!! - /* - if (require && require.main === module && process) { - // cli - var jsonize = function (arr) { - var res = []; - for (var i in arr) { - res.push(new UAParser(arr[i]).getResult()); - } - process.stdout.write(JSON.stringify(res, null, 2) + '\n'); - }; - if (process.stdin.isTTY) { - // via args - jsonize(process.argv.slice(2)); - } else { - // via pipe - var str = ''; - process.stdin.on('readable', function() { - var read = process.stdin.read(); - if (read !== null) { - str += read; - } - }); - process.stdin.on('end', function () { - jsonize(str.replace(/\n$/, '').split('\n')); - }); - } - } - */ - exports.UAParser = UAParser; - } else { - // requirejs env (optional) - if ((typeof define === 'undefined' ? 'undefined' : _typeof(define)) === FUNC_TYPE && define.amd) { - define(function () { - return UAParser; - }); - } else if (window) { - // browser env - window.UAParser = UAParser; - } - } + $.ua.set = function (uastring) { + parser.setUA(uastring); + var result = parser.getResult(); - // jQuery/Zepto specific (optional) - // Note: - // In AMD env the global scope should be kept clean, but jQuery is an exception. - // jQuery always exports to global scope, unless jQuery.noConflict(true) is used, - // and we should catch that. - var $ = window && (window.jQuery || window.Zepto); - if ((typeof $ === 'undefined' ? 'undefined' : _typeof($)) !== UNDEF_TYPE) { - var parser = new UAParser(); - $.ua = parser.getResult(); - $.ua.get = function () { - return parser.getUA(); - }; - $.ua.set = function (uastring) { - parser.setUA(uastring); - var result = parser.getResult(); - for (var prop in result) { - $.ua[prop] = result[prop]; - } - }; - } -})((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' ? window : undefined); \ No newline at end of file + for (var prop in result) { + $.ua[prop] = result[prop]; + } + }; + } +})((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' ? window : void 0); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7149c25..4e48e48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,2268 +4,2012 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/cli": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.0.0.tgz", + "integrity": "sha512-SH/x7W1dz4FSSBeJZXIiYSbHIOU3ZxNgwQPLTG+I8KXyTS81pzmLouPa2st6hji7VbVrEF/D8EQzQbXAYj1TsA==", + "dev": true, + "requires": { + "chokidar": "2.0.4", + "commander": "2.17.1", + "convert-source-map": "1.5.1", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.3", + "lodash": "4.17.10", + "mkdirp": "0.5.1", + "output-file-sync": "2.0.1", + "slash": "2.0.0", + "source-map": "0.5.7" + } + }, "@babel/code-frame": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", - "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.51" + "@babel/highlight": "7.0.0" } }, - "@babel/generator": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", - "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", + "@babel/core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0.tgz", + "integrity": "sha512-nrvxS5u6QUN5gLl1GEakIcmOeoUHT1/gQtdMRq18WFURJ5osn4ppJLVSseMQo4zVWKJfBTF4muIYijXUnKlRLQ==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.51", - "jsesc": "2.5.1", + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.0.0", + "@babel/helpers": "7.0.0", + "@babel/parser": "7.0.0", + "@babel/template": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0", + "convert-source-map": "1.5.1", + "debug": "3.1.0", + "json5": "0.5.1", "lodash": "4.17.10", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "resolve": "1.8.1", + "semver": "5.5.1", + "source-map": "0.5.7" }, "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", - "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", + "@babel/generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.51", - "@babel/template": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51" + "@babel/types": "7.0.0", + "jsesc": "2.5.1", + "lodash": "4.17.10", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", - "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.51" + "@babel/types": "7.0.0" } }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", - "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0.tgz", + "integrity": "sha512-9HdU8lrAc4FUZOy+y2w//kUhynSpkGIRYDzJW1oKJx7+v8m6UEAbAd2tSvxirsq2kJTXJZZS6Eo8FnUDUH0ZWw==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.51" + "@babel/helper-explode-assignable-expression": "7.0.0", + "@babel/types": "7.0.0" } }, - "@babel/highlight": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", - "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", + "@babel/helper-call-delegate": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0.tgz", + "integrity": "sha512-HdYG6vr4KgXHK0q1QRZ8guoYCF5rZjIdPlhcVY+j4EBK/FDR+cXRM5/6lQr3NIWDc7dO1KfgjG5rfH6lM89VBw==", "dev": true, "requires": { - "chalk": "2.4.1", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "1.9.2" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - } - } + "@babel/helper-hoist-variables": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" } }, - "@babel/parser": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", - "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", - "dev": true - }, - "@babel/template": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", - "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", + "@babel/helper-define-map": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0.tgz", + "integrity": "sha512-acbCxYS9XufWxsBiclmXMK1CFz7en/XSYvHFcbb3Jb8BqjFEBrA46WlIsoSQTRG/eYN60HciUnzdyQxOZhrHfw==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", + "@babel/helper-function-name": "7.0.0", + "@babel/types": "7.0.0", "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } } }, - "@babel/traverse": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", - "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", + "@babel/helper-explode-assignable-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0.tgz", + "integrity": "sha512-5gLPwdDnYf8GfPsjS+UmZUtYE1jaXTFm1P+ymGobqvXbA0q3ANgpH60+C6zDrRAWXYbQXYvzzQC/r0gJVNNltQ==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/generator": "7.0.0-beta.51", - "@babel/helper-function-name": "7.0.0-beta.51", - "@babel/helper-split-export-declaration": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "debug": "3.1.0", - "globals": "11.7.0", - "invariant": "2.2.4", - "lodash": "4.17.10" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" } }, - "@babel/types": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", - "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", "dev": true, "requires": { - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "2.0.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.0.0", + "@babel/types": "7.0.0" } }, - "@webassemblyjs/ast": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.13.tgz", - "integrity": "sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA==", + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "debug": "3.1.0", - "mamacro": "0.0.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@babel/types": "7.0.0" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz", - "integrity": "sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz", - "integrity": "sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg==", - "dev": true + "@babel/helper-hoist-variables": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", + "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } }, - "@webassemblyjs/helper-buffer": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz", - "integrity": "sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA==", + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", "dev": true, "requires": { - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@babel/types": "7.0.0" } }, - "@webassemblyjs/helper-code-frame": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz", - "integrity": "sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ==", + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.5.13" + "@babel/types": "7.0.0" } }, - "@webassemblyjs/helper-fsm": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz", - "integrity": "sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg==", - "dev": true + "@babel/helper-module-transforms": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0.tgz", + "integrity": "sha512-QdwmTTlPmT7TZcf30dnqm8pem+o48tVt991xXogE5CQCwqSpWKuzH2E9v8VWeccQ66a6/CmrLZ+bwp66JYeM5A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-simple-access": "7.0.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/template": "7.0.0", + "@babel/types": "7.0.0", + "lodash": "4.17.10" + } }, - "@webassemblyjs/helper-module-context": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz", - "integrity": "sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ==", + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", "dev": true, "requires": { - "debug": "3.1.0", - "mamacro": "0.0.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@babel/types": "7.0.0" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz", - "integrity": "sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw==", + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", "dev": true }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz", - "integrity": "sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw==", + "@babel/helper-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", + "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "lodash": "4.17.10" } }, - "@webassemblyjs/ieee754": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz", - "integrity": "sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg==", + "@babel/helper-remap-async-to-generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0.tgz", + "integrity": "sha512-3o4sYLOsK6m0A7t1P0saTanBPmk5MAlxVnp9773Of4L8PMVLukU7loZix5KoJgflxSo2c2ETTzseptc0rQEp7A==", "dev": true, "requires": { - "ieee754": "1.1.12" + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-wrap-function": "7.0.0", + "@babel/template": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" } }, - "@webassemblyjs/leb128": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.13.tgz", - "integrity": "sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg==", + "@babel/helper-replace-supers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0.tgz", + "integrity": "sha512-fsSv7VogxzMSmGch6DwhKHGsciVXo7hbfhBgH9ZrgJMXKMjO7ASQTUfbVL7MU1uCfviyqjucazGK7TWPT9weuQ==", "dev": true, "requires": { - "long": "4.0.0" - }, - "dependencies": { - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - } + "@babel/helper-member-expression-to-functions": "7.0.0", + "@babel/helper-optimise-call-expression": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" } }, - "@webassemblyjs/utf8": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.13.tgz", - "integrity": "sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng==", + "@babel/helper-simple-access": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0.tgz", + "integrity": "sha512-CNeuX52jbQSq4j1n+R+21xrjbTjsnXa9n1aERbgHRD/p9h4Udkxr1n24yPMQmnTETHdnQDvkVSYWFw/ETAymYg==", + "dev": true, + "requires": { + "@babel/template": "7.0.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0.tgz", + "integrity": "sha512-kjprWPDNVPZ/9pyLRXcZBvfjnFwqokmXTPTaC4AV8Ns7WRl7ewSxrB19AWZzQsC/WSPQLOw1ciR8uPYkAM1znA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0", + "@babel/template": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helpers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0.tgz", + "integrity": "sha512-jbvgR8iLZPnyk6m/UqdXYsSxbVtRi7Pd3CzB4OPwPBnmhNG1DWjiiy777NTuoyIcniszK51R40L5pgfXAfHDtw==", + "dev": true, + "requires": { + "@babel/template": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "esutils": "2.0.2", + "js-tokens": "4.0.0" + } + }, + "@babel/parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0.tgz", + "integrity": "sha512-RgJhNdRinpO8zibnoHbzTTexNs4c8ROkXFBanNDZTLHjwbdLk8J5cJSKulx/bycWTLYmKVNCkxRtVCoJnqPk+g==", "dev": true }, - "@webassemblyjs/wasm-edit": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz", - "integrity": "sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw==", + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0.tgz", + "integrity": "sha512-QsXmmjLrFADCcDQAfdQn7tfBRLjpTzRWaDpKpW4ZXW1fahPG4SvjcF1xfvVnXGC662RSExYXL+6DAqbtgqMXeA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/helper-wasm-section": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "@webassemblyjs/wast-printer": "1.5.13", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-remap-async-to-generator": "7.0.0", + "@babel/plugin-syntax-async-generators": "7.0.0" } }, - "@webassemblyjs/wasm-gen": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz", - "integrity": "sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA==", + "@babel/plugin-proposal-class-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0.tgz", + "integrity": "sha512-mVgsbdySh6kuzv4omXvw0Kuh+3hrUrQ883qTCf75MqfC6zctx2LXrP3Wt+bbJmB5fE5nfhf/Et2pQyrRy4j0Pg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" + "@babel/helper-function-name": "7.0.0", + "@babel/helper-member-expression-to-functions": "7.0.0", + "@babel/helper-optimise-call-expression": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-replace-supers": "7.0.0", + "@babel/plugin-syntax-class-properties": "7.0.0" } }, - "@webassemblyjs/wasm-opt": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz", - "integrity": "sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg==", + "@babel/plugin-proposal-decorators": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.0.0.tgz", + "integrity": "sha512-td2C+9oBYg4b70VD9Qp/Nzmktb558D4JlOyaDS/dFoHa7plIxt5dvUM+mIJn3Wh1Z6GXItygbOTrJxEgX19kcA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-decorators": "7.0.0" } }, - "@webassemblyjs/wasm-parser": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz", - "integrity": "sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg==", + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0.tgz", + "integrity": "sha512-UZuK8lkobh3570vCu0sxDQn+ZlCV6CVLlXe+nNohvPr6/zI5I+j4Ir2fTTCG0ayBQanym0N+29K5+v4c8SATaQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-export-namespace-from": "7.0.0" } }, - "@webassemblyjs/wast-parser": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz", - "integrity": "sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A==", + "@babel/plugin-proposal-function-sent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.0.0.tgz", + "integrity": "sha512-XE5UdOfJy1w/m8vKhDuuHq8ZaQkcjxlzJ7i0IZ0eAhzxlA2f4UOKT39dsTgukgUgu7YK98XFAHoRFWizLg8MQg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/floating-point-hex-parser": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-code-frame": "1.5.13", - "@webassemblyjs/helper-fsm": "1.5.13", - "long": "3.2.0", - "mamacro": "0.0.3" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-wrap-function": "7.0.0", + "@babel/plugin-syntax-function-sent": "7.0.0" } }, - "@webassemblyjs/wast-printer": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz", - "integrity": "sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ==", + "@babel/plugin-proposal-json-strings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz", + "integrity": "sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "long": "3.2.0" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-json-strings": "7.0.0" } }, - "acorn": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", - "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", - "dev": true + "@babel/plugin-proposal-numeric-separator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.0.0.tgz", + "integrity": "sha512-m4iDNpbBv2rTxxgViAeaqLOStc2wrlVAC5ifp6pjBPG29F56LdlPgf5CQYzj99y3kYeKqsyf/dcMx/r+QfwMZg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-numeric-separator": "7.0.0" + } }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz", + "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==", "dev": true, "requires": { - "acorn": "5.7.2" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-object-rest-spread": "7.0.0" } }, - "acorn-globals": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", - "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz", + "integrity": "sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==", "dev": true, "requires": { - "acorn": "5.7.2" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0" } }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "@babel/plugin-proposal-throw-expressions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.0.0.tgz", + "integrity": "sha512-CA2EUiwnbXrsdV4hy3jYghm91WaL7zL7xYfu628dyItRr6gylbRxshghGEK/Hhm//rR58N3PBmEeuYqSW57IUQ==", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-throw-expressions": "7.0.0" } }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz", + "integrity": "sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.2.0" + } }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true + "@babel/plugin-syntax-async-generators": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz", + "integrity": "sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "@babel/plugin-syntax-class-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz", + "integrity": "sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w==", "dev": true, "requires": { - "ansi-wrap": "0.1.0" + "@babel/helper-plugin-utils": "7.0.0" } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "@babel/plugin-syntax-decorators": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0.tgz", + "integrity": "sha512-eD1fI6SSuZDbyTP6jG+LBHv7Fr6zh2P1GYsAT8opAuzrDqwSM20qfvZTwCRSHDeysxLd9s6e94X6dcsGQG9dGA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "@babel/plugin-syntax-dynamic-import": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz", + "integrity": "sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0.tgz", + "integrity": "sha512-l314XT1eMa0MWboSmG4BdKukHfSpSpQRenUoZmEpL6hqc5nc1/ddpLETjPB77gZE1dZ9qxy5D3U3UUjjcX2d4g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "@babel/plugin-syntax-function-sent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.0.0.tgz", + "integrity": "sha512-j+D8C+clbieA+1UFlRzMkVozWNLB94TCJsUUE7OCyKBRM329ZZXnFPjgm0em5ddLsKV9DNpdtaOZsNZ1J7gHyA==", "dev": true, - "optional": true, "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true, - "optional": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "optional": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "optional": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - } + "@babel/helper-plugin-utils": "7.0.0" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true + "@babel/plugin-syntax-import-meta": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.0.0.tgz", + "integrity": "sha512-FEoGvhXVAiWzpDjyZIlBGzKyNk/lnRPy7aPke3PjVkiAY0QFsvFfkjUg5diRwVfowBA8SJqvFt0ZoXNSjl70hQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "argv": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", - "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", - "dev": true + "@babel/plugin-syntax-json-strings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz", + "integrity": "sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "@babel/plugin-syntax-numeric-separator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.0.0.tgz", + "integrity": "sha512-t9RMUPWsFXVeUZxEOhIDkVqYLi1sWOTjxFBAp8wJtaARilvkGlEQvSObd2W5YKicDktINI9XmdV0sB2FZaLOpw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz", + "integrity": "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz", + "integrity": "sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true + "@babel/plugin-syntax-throw-expressions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.0.0.tgz", + "integrity": "sha512-/5uORdWlPta/ALhI5zKtm0Y9vAYOa7HJMML0OnCGk9XZA4hpGjb0Xjt/OVDCJVawC/4FrlAGCHOaj9BtWeVDvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true + "@babel/plugin-transform-arrow-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz", + "integrity": "sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true + "@babel/plugin-transform-async-to-generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0.tgz", + "integrity": "sha512-CiWNhSMZzj1n3uEKUUS/oL+a7Xi8hnPQB6GpC1WfL/ZYvxBLDBn14sHMo5EyOaeArccSonyk5jFIKMRRbrHOnQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-remap-async-to-generator": "7.0.0" + } }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz", + "integrity": "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true + "@babel/plugin-transform-block-scoping": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz", + "integrity": "sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "lodash": "4.17.10" + } }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true + "@babel/plugin-transform-classes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0.tgz", + "integrity": "sha512-8LBm7XsHQiNISEmb+ejBiHi1pUihwUf+lrIwyVsXVbQ1vLqgkvhgayK5JnW3WXvQD2rmM0qxFAIyDE5vtMem2A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-define-map": "7.0.0", + "@babel/helper-function-name": "7.0.0", + "@babel/helper-optimise-call-expression": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-replace-supers": "7.0.0", + "@babel/helper-split-export-declaration": "7.0.0", + "globals": "11.7.0" + } }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true + "@babel/plugin-transform-computed-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz", + "integrity": "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "@babel/plugin-transform-destructuring": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz", + "integrity": "sha512-Fr2GtF8YJSXGTyFPakPFB4ODaEKGU04bPsAllAIabwoXdFrPxL0LVXQX5dQWoxOjjgozarJcC9eWGsj0fD6Zsg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "@babel/plugin-transform-dotall-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz", + "integrity": "sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.2.0" + } }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true + "@babel/plugin-transform-duplicate-keys": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz", + "integrity": "sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0.tgz", + "integrity": "sha512-Ig74elCuFQ0mvHkWUq5qDCNI3qHWlop5w4TcDxdtJiOk8Egqe2uxDRY9XnXGSlmWClClmnixcoYumyvbAuj4dA==", "dev": true, "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" + "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" } }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "@babel/plugin-transform-for-of": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz", + "integrity": "sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==", "dev": true, "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } + "@babel/helper-plugin-utils": "7.0.0" } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "@babel/plugin-transform-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0.tgz", + "integrity": "sha512-mR7JN9vkwsAIot74pSwzn/2Gq4nn2wN0HKtQyJLc1ghAarsymdBMTfh+Q/aeR2N3heXs3URQscTLrKe3yUU7Yw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true + "@babel/plugin-transform-literals": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz", + "integrity": "sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "@babel/plugin-transform-modules-amd": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0.tgz", + "integrity": "sha512-CtSVpT/0tty/4405qczoIHm41YfFbPChplsmfBwsi3RTq/M9cHgVb3ixI5bqqgdKkqWwSX2sXqejvMKLuTVU+Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true + "@babel/plugin-transform-modules-commonjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0.tgz", + "integrity": "sha512-BIcQLgPFCxi7YygtNpz5xj+7HxhOprbCGZKeLW6Kxsn1eHS6sJZMw4MfmqFZagl/v6IVa0AJoMHdDXLVrpd3Aw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-simple-access": "7.0.0" + } }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true + "@babel/plugin-transform-modules-systemjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz", + "integrity": "sha512-8EDKMAsitLkiF/D4Zhe9CHEE2XLh4bfLbb9/Zf3FgXYQOZyZYyg7EAel/aT2A7bHv62jwHf09q2KU/oEexr83g==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "@babel/plugin-transform-modules-umd": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0.tgz", + "integrity": "sha512-EMyKpzgugxef+R1diXDwqw/Hmt5ls8VxfI8Gq5Lo8Qp3oKIepkYG4L/mvE2dmZSRalgL9sguoPKbnQ1m96hVFw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "babel-cli": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", - "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "@babel/plugin-transform-new-target": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", + "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", "dev": true, "requires": { - "babel-core": "6.26.3", - "babel-polyfill": "6.26.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "chokidar": "1.7.0", - "commander": "2.15.1", - "convert-source-map": "1.5.1", - "fs-readdir-recursive": "1.1.0", - "glob": "7.1.2", - "lodash": "4.17.10", - "output-file-sync": "1.1.2", - "path-is-absolute": "1.0.1", - "slash": "1.0.0", - "source-map": "0.5.7", - "v8flags": "2.1.1" - }, - "dependencies": { - "babel-polyfill": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "core-js": "2.5.7", - "regenerator-runtime": "0.10.5" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - } + "@babel/helper-plugin-utils": "7.0.0" } }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "@babel/plugin-transform-object-super": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0.tgz", + "integrity": "sha512-BfAiF1l18Xr1shy1NyyQgLiHDvh/S7APiEM5+0wxTsQ+e3fgXO+NA47u4PvppzH0meJS21y0gZHcjnvUAJj8tQ==", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-replace-supers": "7.0.0" } }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "@babel/plugin-transform-parameters": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0.tgz", + "integrity": "sha512-eWngvRBWx0gScot0xa340JzrkA+8HGAk1OaCHDfXAjkrTFkp73Lcf+78s7AStSdRML5nzx5aXpnjN1MfrjkBoA==", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.10", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - } + "@babel/helper-call-delegate": "7.0.0", + "@babel/helper-get-function-arity": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" } }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "@babel/plugin-transform-regenerator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", + "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", "dev": true, "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.10", - "source-map": "0.5.7", - "trim-right": "1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } + "regenerator-transform": "0.13.3" } }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "@babel/plugin-transform-shorthand-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz", + "integrity": "sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "@babel/helper-plugin-utils": "7.0.0" } }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "@babel/plugin-transform-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz", + "integrity": "sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==", "dev": true, "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "@babel/helper-plugin-utils": "7.0.0" } }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "@babel/plugin-transform-sticky-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz", + "integrity": "sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==", "dev": true, "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0" } }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "@babel/plugin-transform-template-literals": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz", + "integrity": "sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" } }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "@babel/plugin-transform-typeof-symbol": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz", + "integrity": "sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "@babel/helper-plugin-utils": "7.0.0" } }, - "babel-helper-explode-class": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "@babel/plugin-transform-unicode-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz", + "integrity": "sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==", "dev": true, "requires": { - "babel-helper-bindify-decorators": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.2.0" } }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "@babel/polyfill": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", + "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", "dev": true, "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "core-js": "2.5.7", + "regenerator-runtime": "0.11.1" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } } }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "@babel/preset-env": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0.tgz", + "integrity": "sha512-Fnx1wWaWv2w2rl+VHxA9si//Da40941IQ29fKiRejVR7oN1FxSEL8+SyAX/2oKIye2gPvY/GBbJVEKQ/oi43zQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-proposal-async-generator-functions": "7.0.0", + "@babel/plugin-proposal-json-strings": "7.0.0", + "@babel/plugin-proposal-object-rest-spread": "7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "7.0.0", + "@babel/plugin-syntax-async-generators": "7.0.0", + "@babel/plugin-syntax-object-rest-spread": "7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0", + "@babel/plugin-transform-arrow-functions": "7.0.0", + "@babel/plugin-transform-async-to-generator": "7.0.0", + "@babel/plugin-transform-block-scoped-functions": "7.0.0", + "@babel/plugin-transform-block-scoping": "7.0.0", + "@babel/plugin-transform-classes": "7.0.0", + "@babel/plugin-transform-computed-properties": "7.0.0", + "@babel/plugin-transform-destructuring": "7.0.0", + "@babel/plugin-transform-dotall-regex": "7.0.0", + "@babel/plugin-transform-duplicate-keys": "7.0.0", + "@babel/plugin-transform-exponentiation-operator": "7.0.0", + "@babel/plugin-transform-for-of": "7.0.0", + "@babel/plugin-transform-function-name": "7.0.0", + "@babel/plugin-transform-literals": "7.0.0", + "@babel/plugin-transform-modules-amd": "7.0.0", + "@babel/plugin-transform-modules-commonjs": "7.0.0", + "@babel/plugin-transform-modules-systemjs": "7.0.0", + "@babel/plugin-transform-modules-umd": "7.0.0", + "@babel/plugin-transform-new-target": "7.0.0", + "@babel/plugin-transform-object-super": "7.0.0", + "@babel/plugin-transform-parameters": "7.0.0", + "@babel/plugin-transform-regenerator": "7.0.0", + "@babel/plugin-transform-shorthand-properties": "7.0.0", + "@babel/plugin-transform-spread": "7.0.0", + "@babel/plugin-transform-sticky-regex": "7.0.0", + "@babel/plugin-transform-template-literals": "7.0.0", + "@babel/plugin-transform-typeof-symbol": "7.0.0", + "@babel/plugin-transform-unicode-regex": "7.0.0", + "browserslist": "4.1.0", + "invariant": "2.2.4", + "js-levenshtein": "1.1.3", + "semver": "5.5.1" } }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "@babel/register": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz", + "integrity": "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "core-js": "2.5.7", + "find-cache-dir": "1.0.0", + "home-or-tmp": "3.0.0", + "lodash": "4.17.10", + "mkdirp": "0.5.1", + "pirates": "4.0.0", + "source-map-support": "0.5.9" } }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.0.0", + "@babel/types": "7.0.0" } }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "@babel/traverse": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz", + "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.0.0", + "@babel/helper-function-name": "7.0.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/parser": "7.0.0", + "@babel/types": "7.0.0", + "debug": "3.1.0", + "globals": "11.7.0", "lodash": "4.17.10" }, "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "2.0.0" } }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "@gimenete/type-writer": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@gimenete/type-writer/-/type-writer-0.1.3.tgz", + "integrity": "sha512-vhpvVfM/fYqb1aAnkgOvtDKoOgU3ZYIvDnKSDAFSoBvallmGURMlHOE0/VG/gqunUZVXGCFBGHxI8swjBh+sIA==", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "camelcase": "5.0.0", + "prettier": "1.14.2" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + } } }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "call-me-maybe": "1.0.1", + "glob-to-regexp": "0.3.0" } }, - "babel-loader": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", - "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", - "dev": true, - "requires": { - "find-cache-dir": "1.0.0", - "loader-utils": "1.1.0", - "mkdirp": "0.5.1" - } + "@nodelib/fs.stat": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.1.tgz", + "integrity": "sha512-KU/VDjC5RwtDUZiz3d+DHXJF2lp5hB9dn552TXIyptj8SH1vXmR40mG0JgGq03IlYsOgGfcv8xrLpSQ0YUMQdA==", + "dev": true }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "@octokit/rest": { + "version": "15.10.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-15.10.0.tgz", + "integrity": "sha512-xZ4ejCZoqvKrIN3tQOKZlJ6nDQxaOdLcjRsamDnbckU7V5YTn2xheIqFXnQ2vLvxqVwyI8+2dfsODYbHxtwtSw==", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "@gimenete/type-writer": "0.1.3", + "before-after-hook": "1.1.0", + "btoa-lite": "1.0.0", + "debug": "3.1.0", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lodash": "4.17.10", + "node-fetch": "2.2.0", + "url-template": "2.0.8" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "node-fetch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.2.0.tgz", + "integrity": "sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA==", + "dev": true + } } }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "@semantic-release/commit-analyzer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-6.0.0.tgz", + "integrity": "sha512-LEBEg5Ek3PCVv8srHRA8uuwu0t9nAXuBQ9ixjBiMYCqCCUsCezUi5wRdmXnJkXs5/yQkd4Dzx8OJ1zIAL2Pqeg==", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "conventional-changelog-angular": "5.0.1", + "conventional-commits-filter": "2.0.0", + "conventional-commits-parser": "3.0.0", + "debug": "3.1.0", + "import-from": "2.1.0", + "lodash": "4.17.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", - "dev": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", - "dev": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "@semantic-release/error": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", + "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", "dev": true }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "@semantic-release/github": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-5.0.4.tgz", + "integrity": "sha512-iaLfIHvBsjxnFpFoLKcMto8+tH5FPLOScA9b690G9LKVOyoSwhDoQiqO4FwT0UDmlj1OuZLaG5BVK8MWaqukYw==", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-generators": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "@octokit/rest": "15.10.0", + "@semantic-release/error": "2.2.0", + "aggregate-error": "1.0.0", + "bottleneck": "2.8.0", + "debug": "3.1.0", + "dir-glob": "2.0.0", + "fs-extra": "7.0.0", + "globby": "8.0.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "issue-parser": "3.0.0", + "lodash": "4.17.10", + "mime": "2.3.1", + "p-filter": "1.0.0", + "p-retry": "2.0.0", + "parse-github-url": "1.0.2", + "url-join": "4.0.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "fs-extra": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz", + "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + } } }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "@semantic-release/npm": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.0.4.tgz", + "integrity": "sha512-ExGXP9GnM2hqUIgTnp6sXKB1G0Yh+fuLftmIopq5KHBWj34Wd2YbM/3iLkXXnAP1YZ9YCp7hsAdsR014ctbwHg==", "dev": true, "requires": { - "babel-helper-explode-class": "6.24.1", - "babel-plugin-syntax-decorators": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" + "@semantic-release/error": "2.2.0", + "aggregate-error": "1.0.0", + "detect-indent": "5.0.0", + "detect-newline": "2.1.0", + "execa": "1.0.0", + "fs-extra": "7.0.0", + "lodash": "4.17.10", + "nerf-dart": "1.0.0", + "normalize-url": "3.3.0", + "npm": "6.4.1", + "parse-json": "4.0.0", + "rc": "1.2.8", + "read-pkg": "4.0.1", + "registry-auth-token": "3.3.2" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "fs-extra": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz", + "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dev": true, + "requires": { + "normalize-package-data": "2.4.0", + "parse-json": "4.0.0", + "pify": "3.0.0" + } + } } }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "@semantic-release/release-notes-generator": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-7.0.1.tgz", + "integrity": "sha512-zMX2t+v0hjr8f+hfqJgvZ/7m9Bjt4RJ6qk52oo+bxwqEnwCm4b4u8nwGLXFfBg/Q7ph/E0MuzYIFrhECICxzBw==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", + "conventional-changelog-angular": "5.0.1", + "conventional-changelog-writer": "4.0.0", + "conventional-commits-filter": "2.0.0", + "conventional-commits-parser": "3.0.0", + "debug": "3.1.0", + "get-stream": "4.0.0", + "git-url-parse": "10.0.1", + "import-from": "2.1.0", + "into-stream": "3.1.0", "lodash": "4.17.10" }, "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "@sindresorhus/is": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.11.0.tgz", + "integrity": "sha512-i5Zh5+3QARyXtzq3Bd2Lg3aBRFLcgYbNoap3Hyu1uRN8X+D+0JMqqc4uk4XjhNxfVdCnL8WHUA2wxa33QCC50w==", "dev": true, "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "symbol-observable": "1.2.0" } }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "@szmarczak/http-timer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.1.tgz", + "integrity": "sha512-WljfOGkmSJe8SUkl+4TPvN2ec0dpUGVyfTBQLoXJUiILs+wBSc4Kvp2N3aAWE4VwwDSLGdmD3/bufS5BgZpVSQ==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "defer-to-connect": "1.0.1" } }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "@webassemblyjs/ast": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.13.tgz", + "integrity": "sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA==", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "debug": "3.1.0", + "mamacro": "0.0.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz", + "integrity": "sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA==", + "dev": true }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } + "@webassemblyjs/helper-api-error": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz", + "integrity": "sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg==", + "dev": true }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "@webassemblyjs/helper-buffer": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz", + "integrity": "sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA==", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "@webassemblyjs/helper-code-frame": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz", + "integrity": "sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ==", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "@webassemblyjs/wast-printer": "1.5.13" } }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } + "@webassemblyjs/helper-fsm": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz", + "integrity": "sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg==", + "dev": true }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "@webassemblyjs/helper-module-context": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz", + "integrity": "sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ==", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" + "debug": "3.1.0", + "mamacro": "0.0.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz", + "integrity": "sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw==", + "dev": true }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "@webassemblyjs/helper-wasm-section": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz", + "integrity": "sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw==", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "@webassemblyjs/ieee754": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz", + "integrity": "sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg==", "dev": true, "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.26.0" + "ieee754": "1.1.12" } }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "@webassemblyjs/leb128": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.13.tgz", + "integrity": "sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg==", "dev": true, "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "long": "4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + } } }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "@webassemblyjs/utf8": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.13.tgz", + "integrity": "sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz", + "integrity": "sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/helper-wasm-section": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "@webassemblyjs/wast-printer": "1.5.13", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "@webassemblyjs/wasm-gen": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz", + "integrity": "sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA==", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" } }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "@webassemblyjs/wasm-opt": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz", + "integrity": "sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg==", "dev": true, "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "@webassemblyjs/wasm-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz", + "integrity": "sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg==", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" } }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "@webassemblyjs/wast-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz", + "integrity": "sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A==", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/floating-point-hex-parser": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-code-frame": "1.5.13", + "@webassemblyjs/helper-fsm": "1.5.13", + "long": "3.2.0", + "mamacro": "0.0.3" } }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "@webassemblyjs/wast-printer": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz", + "integrity": "sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ==", "dev": true, "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "long": "3.2.0" } }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "JSONStream": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.4.tgz", + "integrity": "sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg==", "dev": true, "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" + "jsonparse": "1.3.1", + "through": "2.3.8" } }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" - } + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "dev": true }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, - "requires": { - "regenerator-transform": "0.10.1" - } + "acorn": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", + "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", + "dev": true }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "acorn": "5.7.2" } }, - "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "acorn-globals": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "core-js": "2.5.7", - "regenerator-runtime": "0.10.5" + "acorn": "5.7.2" } }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0" - } - }, - "babel-preset-stage-2": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", - "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", - "dev": true, - "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0", - "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-decorators": "6.24.1", - "babel-preset-stage-3": "6.24.1" - } - }, - "babel-preset-stage-3": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "dev": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-generator-functions": "6.24.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-object-rest-spread": "6.26.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "dev": true, "requires": { - "babel-core": "6.26.3", - "babel-runtime": "6.26.0", - "core-js": "2.5.7", - "home-or-tmp": "2.0.0", - "lodash": "4.17.10", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } + "es6-promisify": "5.0.0" } }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "aggregate-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", + "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=", "dev": true, "requires": { - "core-js": "2.5.7", - "regenerator-runtime": "0.11.1" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } + "clean-stack": "1.3.0", + "indent-string": "3.2.0" } }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.10" - }, - "dependencies": { - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "1.0.3" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" }, "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } } } }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "string-width": "2.1.1" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "kind-of": "6.0.2" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "ansi-regex": "3.0.0" } } } }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "optional": true, "requires": { - "tweetnacl": "0.14.5" + "color-convert": "1.9.3" } }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", "dev": true }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" + "sprintf-js": "1.0.3" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } + "argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "dev": true }, - "brorand": { + "argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "browser-process-hrtime": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", - "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.2" - } + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "1.2.0", - "browserify-des": "1.0.2", - "evp_bytestokey": "1.0.3" - } + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true }, - "browserify-des": { + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "array-union": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3", - "safe-buffer": "5.1.2" + "array-uniq": "1.0.3" } }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" + "safer-buffer": "2.1.2" } }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "elliptic": "6.4.1", "inherits": "2.0.3", - "parse-asn1": "5.1.1" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "1.0.6" + "minimalistic-assert": "1.0.1" } }, - "buffer": { - "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", "dev": true, "requires": { - "base64-js": "1.3.0", - "ieee754": "1.1.12", - "isarray": "1.0.0" + "util": "0.10.3" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } } } }, - "buffer-from": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assertion-error": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.3", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.3", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - } - } + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - } + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, - "cachedir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-1.3.0.tgz", - "integrity": "sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg==", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, - "chai": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", - "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "babel-loader": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.1.tgz", + "integrity": "sha512-K5m4ivjWMEBTRkLkQMEBrOM8B1TxhniBKHrCemjeSFiHz4H8EopRgEhCtFSXhlriAcfFFwIelsLfx8urcaghLA==", "dev": true, "requires": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "3.0.1", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.8" + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1", + "util.promisify": "1.0.0" } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "babel-polyfill": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", + "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "babel-runtime": "6.26.0", + "core-js": "2.5.7", + "regenerator-runtime": "0.10.5" } }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, - "optional": true, "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "core-js": "2.5.7", + "regenerator-runtime": "0.11.1" }, "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true, - "optional": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "1.0.0" - } + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true } } }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, - "chrome-trace-event": { + "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", - "dev": true, - "requires": { - "tslib": "1.9.3" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.2" - } + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", "isobject": "3.0.1", - "static-extend": "0.1.2" + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" }, "dependencies": { "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } } } }, - "cli-cursor": { + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "bcrypt-pbkdf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, + "optional": true, "requires": { - "restore-cursor": "1.0.1" + "tweetnacl": "0.14.5" } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "before-after-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.1.0.tgz", + "integrity": "sha512-VOMDtYPwLbIncTxNoSzRyvaMxtXmLWLUqr8k5AfC1BzLk34HvBXaQX8snOwQZ4c0aX8aSERqtJSiI9/m2u5kuA==", "dev": true }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "bottleneck": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.8.0.tgz", + "integrity": "sha512-yHJ9OeOgDWoYLjGKjee8N5qSC72VB/N79H1TmUc00vr99e/SXvzfrxkowFYZgTLmjWlDzLFCWaZ9wbfZm5Xl2Q==", + "dev": true + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.4.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" }, "dependencies": { "ansi-regex": { @@ -2301,1068 +2045,1132 @@ } } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", "dev": true }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "codecov": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.4.tgz", - "integrity": "sha512-KJyzHdg9B8U9LxXa7hS6jnEW5b1cNckLYc2YpnJ1nEFiOW+/iSzDHp+5MYEIQd9fN3/tC6WmGZmYiwxzkuGp/A==", + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { - "argv": "0.0.2", - "ignore-walk": "3.0.1", - "request": "2.88.0", - "urlgrey": "0.4.4" + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "browserify-aes": "1.2.0", + "browserify-des": "1.0.2", + "evp_bytestokey": "1.0.3" } }, - "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, "requires": { - "color-name": "1.1.1" + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "elliptic": "6.4.1", + "inherits": "2.0.3", + "parse-asn1": "5.1.1" + } }, - "colors": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", - "dev": true + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "browserslist": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.0.tgz", + "integrity": "sha512-kQBKB8hnq1SRfSpwHDpM1JNHAyk9fydW8hIDvndR2ijTFKIlBPEvkJkCt8JznOugdm12/YCaRgyq/sqDGz9PwA==", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "caniuse-lite": "1.0.30000883", + "electron-to-chromium": "1.3.62", + "node-releases": "1.0.0-alpha.11" } }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", "dev": true }, - "commitizen": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-2.10.1.tgz", - "integrity": "sha1-jDld7zSolfTpSVLC78PJ60w2g70=", + "buffer": { + "version": "4.9.1", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "cachedir": "1.3.0", - "chalk": "1.1.3", - "cz-conventional-changelog": "2.0.0", - "dedent": "0.6.0", - "detect-indent": "4.0.0", - "find-node-modules": "1.0.4", - "find-root": "1.0.0", - "fs-extra": "1.0.0", - "glob": "7.1.1", - "inquirer": "1.2.3", - "lodash": "4.17.5", - "minimist": "1.2.0", - "opencollective": "1.0.3", - "path-exists": "2.1.0", - "shelljs": "0.7.6", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "cz-conventional-changelog": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.0.0.tgz", - "integrity": "sha1-Val5r9/pXnAkh50qD1kkYwFwtTM=", - "dev": true, - "requires": { - "conventional-commit-types": "2.2.0", - "lodash.map": "4.6.0", - "longest": "1.0.1", - "pad-right": "0.2.2", - "right-pad": "1.0.1", - "word-wrap": "1.2.3" - } - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - } + "base64-js": "1.3.0", + "ieee754": "1.1.12", + "isarray": "1.0.0" } }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "dev": true, "requires": { - "buffer-from": "1.1.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.3", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.3", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, + "cacheable-request": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-4.0.1.tgz", + "integrity": "sha512-sJJ9ivV+1DytIdAgQG1CsRjAESGD5WnjTr4BsQ3X4xZKp3O9i6Es7MWeQ1pOTuE0bTLVEf86YFjSGpr53wz7nw==", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "4.0.0", + "keyv": "3.1.0", + "lowercase-keys": "1.0.1", + "normalize-url": "3.3.0", + "responselike": "1.0.2" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } } } }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "cachedir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-1.3.0.tgz", + "integrity": "sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg==", "dev": true, "requires": { - "date-now": "0.1.4" + "os-homedir": "1.0.2" } }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "conventional-commit-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz", - "integrity": "sha1-XblXOdbCEqy+e29lahG5QLqmiUY=", + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", "dev": true }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "dev": true, "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "camelcase": "4.1.0", + "map-obj": "2.0.0", + "quick-lru": "1.1.0" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "caniuse-lite": { + "version": "1.0.30000883", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000883.tgz", + "integrity": "sha512-ovvb0uya4cKJct8Rj9Olstz0LaWmyJhCp3NawRG5fVigka8pEhIIwipF7zyYd2Q58UZb5YfIt52pVF444uj2kQ==", "dev": true }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", "dev": true }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", "dev": true, "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.1" + "ansicolors": "0.3.2", + "redeyed": "2.1.1" } }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, + "optional": true, "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "md5.js": "1.3.4", - "ripemd160": "2.0.2", - "sha.js": "2.4.11" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "chai": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", + "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "inherits": "2.0.3", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.2", - "sha.js": "2.4.11" + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.8" } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "nice-try": "1.0.4", - "path-key": "2.0.1", - "semver": "5.5.0", - "shebang-command": "1.2.0", - "which": "1.3.1" - }, - "dependencies": { - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - } + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", "dev": true, "requires": { - "browserify-cipher": "1.0.1", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.3", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "diffie-hellman": "5.0.3", + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "fsevents": "1.2.4", + "glob-parent": "3.1.0", "inherits": "2.0.3", - "pbkdf2": "3.0.16", - "public-encrypt": "4.0.2", - "randombytes": "2.0.6", - "randomfill": "1.0.4" + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "lodash.debounce": "4.0.8", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.1.0" } }, - "cssom": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", - "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", "dev": true }, - "cssstyle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", - "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", "dev": true, "requires": { - "cssom": "0.3.4" + "tslib": "1.9.3" } }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "ci-info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.4.0.tgz", + "integrity": "sha512-Oqmw2pVfCl8sCL+1QgMywPfdxPJPkC51y4usw0iiE2S9qnEOAqXy8bwl1CpMpnoU39g4iKJTz6QZj+28FvOnjQ==", "dev": true }, - "cz-conventional-changelog": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.1.0.tgz", - "integrity": "sha1-L0vHOQ4yROTfKT5ro1Hkx0Cnx2Q=", + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "conventional-commit-types": "2.2.0", - "lodash.map": "4.6.0", - "longest": "1.0.1", - "right-pad": "1.0.1", - "word-wrap": "1.2.3" + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "assert-plus": "1.0.0" + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", "dev": true }, - "dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "xregexp": "4.0.0" + "restore-cursor": "1.0.1" } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "dedent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz", - "integrity": "sha1-Dm2o8M5Sg471zsXI+TlrDBtko8s=", - "dev": true - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", "dev": true, "requires": { - "type-detect": "4.0.8" + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } } }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "1.0.4" - } - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, + "optional": true, "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } + "optional": true } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "1.0.1" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, - "deprecated": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "codecov": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.4.tgz", + "integrity": "sha512-KJyzHdg9B8U9LxXa7hS6jnEW5b1cNckLYc2YpnJ1nEFiOW+/iSzDHp+5MYEIQd9fN3/tC6WmGZmYiwxzkuGp/A==", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" + "argv": "0.0.2", + "ignore-walk": "3.0.1", + "request": "2.88.0", + "urlgrey": "0.4.4" } }, - "detect-file": { + "collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "repeating": "2.0.1" + "map-visit": "1.0.0", + "object-visit": "1.0.1" } }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" + "color-name": "1.1.3" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "4.0.2" - } - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", "dev": true }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { - "readable-stream": "1.1.14" + "delayed-stream": "1.0.0" } }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "commitizen": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-2.10.1.tgz", + "integrity": "sha1-jDld7zSolfTpSVLC78PJ60w2g70=", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "cachedir": "1.3.0", + "chalk": "1.1.3", + "cz-conventional-changelog": "2.0.0", + "dedent": "0.6.0", + "detect-indent": "4.0.0", + "find-node-modules": "1.0.4", + "find-root": "1.0.0", + "fs-extra": "1.0.0", + "glob": "7.1.1", + "inquirer": "1.2.3", + "lodash": "4.17.5", + "minimist": "1.2.0", + "opencollective": "1.0.3", + "path-exists": "2.1.0", + "shelljs": "0.7.6", + "strip-json-comments": "2.0.1" }, "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "once": "1.4.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "cz-conventional-changelog": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.0.0.tgz", + "integrity": "sha1-Val5r9/pXnAkh50qD1kkYwFwtTM=", "dev": true, "requires": { - "wrappy": "1.0.2" + "conventional-commit-types": "2.2.0", + "lodash.map": "4.6.0", + "longest": "1.0.1", + "pad-right": "0.2.2", + "right-pad": "1.0.1", + "word-wrap": "1.2.3" } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { - "core-util-is": "1.0.2", + "fs.realpath": "1.0.0", + "inflight": "1.0.6", "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "pinkie-promise": "2.0.1" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.5", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" + "array-ify": "1.0.0", + "dot-prop": "3.0.0" } }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "dev": true, - "requires": { - "iconv-lite": "0.4.23" - } + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, - "end-of-stream": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "once": "1.3.3" + "buffer-from": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" } }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { + "dot-prop": "4.2.0", "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "tapable": "1.0.0" + "make-dir": "1.3.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } } } }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "prr": "1.0.1" + "date-now": "0.1.4" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "conventional-changelog-angular": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.1.tgz", + "integrity": "sha512-q4ylJ68fWZDdrFC9z4zKcf97HW6hp7Mo2YlqD4owfXhecFKy/PJCU/1oVFF4TqochchChqmZ0Vb0e0g8/MKNlA==", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "compare-func": "1.3.2", + "q": "1.5.1" } }, - "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "conventional-changelog-writer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.0.tgz", + "integrity": "sha512-hMZPe0AQ6Bi05epeK/7hz80xxk59nPA5z/b63TOHq2wigM0/akreOc8N4Jam5b9nFgKWX1e9PdPv2ewgW6bcfg==", "dev": true, "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.3", - "is-callable": "1.1.4", - "is-regex": "1.0.4" + "compare-func": "1.3.2", + "conventional-commits-filter": "2.0.0", + "dateformat": "3.0.3", + "handlebars": "4.0.11", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.10", + "meow": "4.0.1", + "semver": "5.5.1", + "split": "1.0.1", + "through2": "2.0.3" + }, + "dependencies": { + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2.3.8" + } + } } }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "conventional-commit-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz", + "integrity": "sha1-XblXOdbCEqy+e29lahG5QLqmiUY=", + "dev": true + }, + "conventional-commits-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.0.tgz", + "integrity": "sha512-Cfl0j1/NquB/TMVx7Wrmyq7uRM+/rPQbtVVGwzfkhZ6/yH6fcMmP0Q/9044TBZPTNdGzm46vXFXL14wbET0/Mg==", "dev": true, "requires": { - "is-callable": "1.1.4", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "is-subset": "0.1.1", + "modify-values": "1.0.1" } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "conventional-commits-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.0.tgz", + "integrity": "sha512-GWh71U26BLWgMykCp+VghZ4s64wVbtseECcKQ/PvcPZR2cUnz+FUc2J9KjxNl7/ZbCxST8R03c9fc+Vi0umS9Q==", "dev": true, "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "JSONStream": "1.3.4", + "is-text-path": "1.0.1", + "lodash": "4.17.10", + "meow": "4.0.1", + "split2": "2.2.0", + "through2": "2.0.3", + "trim-off-newlines": "1.0.1" } }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "dev": true, "requires": { - "estraverse": "4.2.0" + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" } }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "event-stream": { - "version": "3.3.4", - "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", + "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", "dev": true, "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", - "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "is-directory": "0.3.1", + "js-yaml": "3.12.0", + "parse-json": "4.0.0" } }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.2" + "bn.js": "4.11.8", + "elliptic": "6.4.1" } }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.1" - } - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - } + "capture-stack-trace": "1.0.1" } }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "md5.js": "1.3.4", + "ripemd160": "2.0.2", + "sha.js": "2.4.11" + } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "inherits": "2.0.3", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "fill-range": "2.2.4" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.0.0", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "nice-try": "1.0.5", + "path-key": "2.0.1", + "semver": "5.5.1", + "shebang-command": "1.2.0", + "which": "1.3.1" } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "homedir-polyfill": "1.0.1" + "browserify-cipher": "1.0.1", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.3", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "diffie-hellman": "5.0.3", + "inherits": "2.0.3", + "pbkdf2": "3.0.16", + "public-encrypt": "4.0.2", + "randombytes": "2.0.6", + "randomfill": "1.0.4" } }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "cssom": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", + "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", + "dev": true + }, + "cssstyle": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", + "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } + "cssom": "0.3.4" } }, - "external-editor": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-1.1.1.tgz", - "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=", + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "extend": "3.0.1", - "spawn-sync": "1.0.15", - "tmp": "0.0.29" + "array-find-index": "1.0.2" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "cz-conventional-changelog": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.1.0.tgz", + "integrity": "sha1-L0vHOQ4yROTfKT5ro1Hkx0Cnx2Q=", "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "conventional-commit-types": "2.2.0", + "lodash.map": "4.6.0", + "longest": "1.0.1", + "right-pad": "1.0.1", + "word-wrap": "1.2.3" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "data-urls": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.1.tgz", + "integrity": "sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg==", + "dev": true, + "requires": { + "abab": "2.0.0", + "whatwg-mimetype": "2.1.0", + "whatwg-url": "7.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "1.2.0", + "map-obj": "1.0.1" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "1.0.1" + } + }, + "dedent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz", + "integrity": "sha1-Dm2o8M5Sg471zsXI+TlrDBtko8s=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "defer-to-connect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.1.tgz", + "integrity": "sha512-2e0FJesseUqQj671gvZWfUyxpnFx/5n4xleamlpCD3U6Fm5dh5qzmmLNxNhtmHF06+SYVHH8QU6FACffYTnj0Q==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", @@ -3394,2670 +3202,6690 @@ } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "fancy-log": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", - "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { - "ansi-gray": "0.1.1", - "color-support": "1.1.3", - "time-stamp": "1.1.0" + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" } }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "dev": true, + "requires": { + "fs-exists-sync": "0.1.0" + } }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", "dev": true }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } + "webidl-conversions": "4.0.2" } }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", "dev": true, "requires": { - "commondir": "1.0.1", - "make-dir": "1.3.0", - "pkg-dir": "2.0.0" + "is-obj": "1.0.1" } }, - "find-index": { + "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, - "find-node-modules": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-1.0.4.tgz", - "integrity": "sha1-tt6zzMtpnIcDdne87eLF9YYrJVA=", + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { - "findup-sync": "0.4.2", - "merge": "1.2.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "detect-file": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", - "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", - "dev": true, - "requires": { - "fs-exists-sync": "0.1.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "findup-sync": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.2.tgz", - "integrity": "sha1-qBF9D3MST1pFRoOVef5S1xKfteU=", - "dev": true, - "requires": { - "detect-file": "0.1.0", - "is-glob": "2.0.1", - "micromatch": "2.3.11", - "resolve-dir": "0.1.1" - } - }, - "global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", - "dev": true, - "requires": { - "global-prefix": "0.1.5", - "is-windows": "0.2.0" - } - }, - "global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", - "dev": true, - "requires": { - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "0.2.0", - "which": "1.3.1" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", - "dev": true, - "requires": { - "expand-tilde": "1.2.2", - "global-modules": "0.2.3" - } - } + "readable-stream": "2.3.6" } }, - "find-root": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.0.0.tgz", - "integrity": "sha1-li/yEaqyXGUg/u641ih/j26VgHo=", + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "dev": true, "requires": { - "locate-path": "2.0.0" + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" } }, - "findup": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz", - "integrity": "sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=", + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, + "optional": true, "requires": { - "colors": "0.6.2", - "commander": "2.1.0" - }, - "dependencies": { - "commander": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", - "dev": true - } + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "1.0.0", - "is-glob": "3.1.0", - "micromatch": "3.1.10", - "resolve-dir": "1.0.1" - } + "electron-to-chromium": { + "version": "1.3.62", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.62.tgz", + "integrity": "sha512-x09ndL/Gjnuk3unlAyoGyUg3wbs4w/bXurgL7wL913vXHAOWmMhrLf1VNGRaMLngmadd5Q8gsV9BFuIr6rP+Xg==", + "dev": true }, - "fined": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", - "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", "dev": true, "requires": { - "expand-tilde": "2.0.2", - "is-plain-object": "2.0.4", - "object.defaults": "1.1.0", - "object.pick": "1.3.0", - "parse-filepath": "1.0.2" + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.5", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" } }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", - "dev": true - }, - "flagged-respawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", - "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } + "iconv-lite": "0.4.24" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", "dev": true, "requires": { - "for-in": "1.0.2" + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "tapable": "1.0.0" } }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true + "env-ci": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-2.1.3.tgz", + "integrity": "sha512-8bK5aK5Lj9i82JM4tKAIOTxqHI+N6dSBqb9fFkB1oi26Pe6f3upwA88OLxsNzzc+dDm9l4qU5lmJMqszghT/Ag==", + "dev": true, + "requires": { + "execa": "1.0.0", + "java-properties": "0.2.10" + } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "prr": "1.0.1" } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "map-cache": "0.2.2" + "is-arrayish": "0.2.1" } }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "is-callable": "1.1.4", + "is-regex": "1.0.4" + } }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } + "is-callable": "1.1.4", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" } }, - "fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", "dev": true }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - } + "es6-promise": "4.2.4" } }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "escodegen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "1.1.14" + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.6.1" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true } } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gaze": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", "dev": true, "requires": { - "globule": "0.1.0" + "esrecurse": "4.2.1", + "estraverse": "4.2.0" } }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "event-stream": { + "version": "3.3.4", + "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" } }, - "ghooks": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/ghooks/-/ghooks-2.0.4.tgz", - "integrity": "sha1-/VDgQP9UiQauQstReToBv+JFZ7k=", + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "findup": "0.1.5", - "lodash.clone": "4.5.0", - "manage-path": "2.0.0", - "opt-cli": "1.5.1", - "path-exists": "3.0.0", - "spawn-command": "0.0.2" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } + "md5.js": "1.3.4", + "safe-buffer": "5.1.2" } }, - "glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "2.0.10", - "once": "1.3.3" + "cross-spawn": "6.0.5", + "get-stream": "4.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } }, - "is-glob": { + "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extendable": "0.1.1" } } } }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "is-glob": "2.0.1" + "fill-range": "2.2.4" }, "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "3.1.0", + "repeat-element": "1.1.3", + "repeat-string": "1.6.1" + } }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "kind-of": "3.2.2" } - } - } - }, - "glob-stream": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", - "dev": true, - "requires": { - "glob": "4.5.3", - "glob2base": "0.0.12", - "minimatch": "2.0.10", - "ordered-read-streams": "0.1.0", - "through2": "0.6.5", - "unique-stream": "1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "isarray": "1.0.0" } }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "is-buffer": "1.1.6" } } } }, - "glob-watcher": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "dev": true, "requires": { - "gaze": "0.5.2" + "os-homedir": "1.0.2" } }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", - "dev": true, - "requires": { - "find-index": "0.1.1" - } + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "global-prefix": "1.0.2", - "is-windows": "1.0.2", - "resolve-dir": "1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } } }, - "global-modules-path": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", - "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", - "dev": true - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "external-editor": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-1.1.1.tgz", + "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=", "dev": true, "requires": { - "expand-tilde": "2.0.2", - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "1.0.2", - "which": "1.3.1" + "extend": "3.0.2", + "spawn-sync": "1.0.15", + "tmp": "0.0.29" } }, - "globals": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", - "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", - "dev": true - }, - "globule": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "glob": "3.1.21", - "lodash": "1.0.2", - "minimatch": "0.2.14" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "graceful-fs": "1.2.3", - "inherits": "1.0.2", - "minimatch": "0.2.14" + "is-descriptor": "1.0.2" } }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } } } }, - "glogg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", - "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", - "dev": true, - "requires": { - "sparkles": "1.0.1" - } + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, - "google-closure-compiler": { - "version": "20151015.7.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20151015.7.0.tgz", - "integrity": "sha1-pJSQnrM+xbau0f+3EvBVf/WWum8=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "gulp-util": "3.0.8", - "through2": "2.0.3", - "vinyl-sourcemaps-apply": "0.2.1" - } + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true }, - "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "fast-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", + "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", "dev": true, "requires": { - "natives": "1.1.4" + "@mrmlnc/readdir-enhanced": "2.2.1", + "@nodelib/fs.stat": "1.1.1", + "glob-parent": "3.1.0", + "is-glob": "4.0.0", + "merge2": "1.2.2", + "micromatch": "3.1.10" } }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "gulp": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "archy": "1.0.0", - "chalk": "1.1.3", - "deprecated": "0.0.1", - "gulp-util": "3.0.8", - "interpret": "1.1.0", - "liftoff": "2.5.0", - "minimist": "1.2.0", - "orchestrator": "0.3.8", - "pretty-hrtime": "1.0.3", - "semver": "4.3.6", - "tildify": "1.2.0", - "v8flags": "2.1.1", - "vinyl-fs": "0.3.14" + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" } }, - "gulp-closure-compiler": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/gulp-closure-compiler/-/gulp-closure-compiler-0.4.0.tgz", - "integrity": "sha1-xHJu2xtEy3WOANWxUi4b3NThpJo=", + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "glob": "5.0.15", - "google-closure-compiler": "20151015.7.0", - "graceful-fs": "4.1.11", - "gulp-util": "3.0.8", - "mkdirp": "0.5.1", - "temp-write": "1.1.2", - "through": "2.3.8", - "uuid": "2.0.3" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "2.0.10", - "once": "1.3.3", - "path-is-absolute": "1.0.1" + "is-extendable": "0.1.1" } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true } } }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.2.0", - "fancy-log": "1.3.2", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", - "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl": "0.5.3" + "commondir": "1.0.1", + "make-dir": "1.3.0", + "pkg-dir": "2.0.0" } }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "find-node-modules": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-1.0.4.tgz", + "integrity": "sha1-tt6zzMtpnIcDdne87eLF9YYrJVA=", "dev": true, "requires": { - "glogg": "1.0.1" + "findup-sync": "0.4.2", + "merge": "1.2.0" } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "find-root": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.0.0.tgz", + "integrity": "sha1-li/yEaqyXGUg/u641ih/j26VgHo=", "dev": true }, - "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", - "dev": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "function-bind": "1.1.1" + "locate-path": "2.0.0" } }, - "has-ansi": { + "find-versions": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-2.0.0.tgz", + "integrity": "sha1-KtkNSQ9oKMGqQCks9wmsMxghDDw=", "dev": true, "requires": { - "sparkles": "1.0.1" + "array-uniq": "1.0.3", + "semver-regex": "1.0.0" } }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "findup": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz", + "integrity": "sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "colors": "0.6.2", + "commander": "2.1.0" + }, + "dependencies": { + "commander": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", + "dev": true + } } }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "findup-sync": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.2.tgz", + "integrity": "sha1-qBF9D3MST1pFRoOVef5S1xKfteU=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" }, "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.3" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } } } }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", "dev": true, "requires": { "inherits": "2.0.3", - "safe-buffer": "5.1.2" + "readable-stream": "2.3.6" } }, - "hash.js": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", - "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" + "for-in": "1.0.2" } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "dev": true, "requires": { - "hash.js": "1.1.5", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.20" } }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "map-cache": "0.2.2" } }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, - "requires": { - "parse-passwd": "1.0.0" - } - }, - "hosted-git-info": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", - "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "1.0.3" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.2" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { - "safer-buffer": "2.1.2" + "inherits": "2.0.3", + "readable-stream": "2.3.6" } }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", "dev": true }, - "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, - "requires": { - "minimatch": "3.0.4" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - } - } - }, - "import-local": { + "fs-extra": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.3.3", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "inquirer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.2.3.tgz", - "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.2.0", - "external-editor": "1.1.1", - "figures": "1.7.0", - "lodash": "4.17.10", - "mute-stream": "0.0.6", - "pinkie-promise": "2.0.1", - "run-async": "2.3.0", - "rx": "4.1.0", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" } }, - "interpret": { + "fs-readdir-recursive": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { - "loose-envify": "1.3.1" + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.6" } }, - "invert-kv": { + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "1.0.0", - "is-windows": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "dev": true, + "optional": true, "requires": { - "kind-of": "3.2.2" + "nan": "2.11.0", + "node-pre-gyp": "0.10.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "abbrev": { + "version": "1.1.1", + "bundled": true, "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.11.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "is-buffer": "1.1.6" + "delegates": "1.0.0", + "readable-stream": "2.3.6" } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, "dev": true - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "balanced-match": "1.0.0", + "concat-map": "0.0.1" } - } - } - }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, - "requires": { - "is-number": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, "dev": true - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "1.0.3" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "1.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz", - "integrity": "sha512-yMSw5xLIbdaxiVXHk3amfNM2WeBxLrwH/BCyZ9HvA/fylwziAIJOG2rKqWyLqEJqwKT725vxxqidv+SyynnGAA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.0.tgz", - "integrity": "sha512-Ie1LGWJVCFDDJKKH4g1ffpFcZTEXEd6ay5l9fE8539y4qPErJnzo4psnGzDH92tcKvdUDdbxrKySYIbt6zB9hw==", - "dev": true, - "requires": { - "@babel/generator": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/template": "7.0.0-beta.51", - "@babel/traverse": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "istanbul-lib-coverage": "2.0.0", - "semver": "5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - } - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "jsdom": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-12.0.0.tgz", - "integrity": "sha512-42RgZYXWwyClG0pN6Au7TExAQqRvzbtJhlcIvu58cJj4yr1bIbqZkgxHqn1btxKu80axZXPZLvldeTzg2auKow==", - "dev": true, - "requires": { - "abab": "2.0.0", - "acorn": "5.7.2", - "acorn-globals": "4.1.0", - "array-equal": "1.0.0", - "cssom": "0.3.4", - "cssstyle": "1.1.1", - "data-urls": "1.0.1", - "domexception": "1.0.1", - "escodegen": "1.11.0", - "html-encoding-sniffer": "1.0.2", - "nwsapi": "2.0.9", - "parse5": "5.1.0", - "pn": "1.1.0", - "request": "2.88.0", - "request-promise-native": "1.0.5", - "sax": "1.2.4", - "symbol-tree": "3.2.2", - "tough-cookie": "2.4.3", - "w3c-hr-time": "1.0.1", - "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.4", - "whatwg-mimetype": "2.1.0", - "whatwg-url": "7.0.0", - "ws": "6.0.0", - "xml-name-validator": "3.0.0" - }, - "dependencies": { - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, "dev": true }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "console-control-strings": { + "version": "1.1.0", + "bundled": true, "dev": true }, - "data-urls": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.1.tgz", - "integrity": "sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg==", + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, "dev": true, + "optional": true, "requires": { - "abab": "2.0.0", - "whatwg-mimetype": "2.1.0", - "whatwg-url": "7.0.0" + "ms": "2.0.0" } }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, "dev": true, + "optional": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.6.1" + "minipass": "2.2.4" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true }, - "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "gauge": { + "version": "2.7.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, - "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", - "dev": true + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, - "mime-types": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", - "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, "dev": true, + "optional": true, "requires": { - "mime-db": "1.36.0" + "safer-buffer": "2.1.2" } }, - "nwsapi": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", - "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==", - "dev": true + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "3.0.4" + } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, "dev": true }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.1.0", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.20", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" + "number-is-nan": "1.0.1" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "isarray": { + "version": "1.0.0", + "bundled": true, "dev": true, "optional": true }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, "dev": true }, - "whatwg-encoding": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz", - "integrity": "sha512-vM9KWN6MP2mIHZ86ytcyIv7e8Cj3KTfO2nd2c8PFDqcI4bxFmQp83ibq4wadq7rL9l9sZV6o9B0LTt8ygGAAXg==", + "minipass": { + "version": "2.2.4", + "bundled": true, "dev": true, "requires": { - "iconv-lite": "0.4.23" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "ws": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.0.0.tgz", - "integrity": "sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w==", + "minizlib": { + "version": "1.1.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "async-limiter": "1.0.0" + "minipass": "2.2.4" } - } - } - }, - "jsdom-global": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", - "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", - "dev": true - }, - "jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, "dev": true, - "optional": true - } - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.7", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.5.1", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stream": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.0.0.tgz", + "integrity": "sha512-FneLKMENeOR7wOK0/ZXCh+lwqtnPwkeunJjRN28LPqzGvNAhYvrTAhXv6xDm4vsJ0M7lcRbIYHQudKsSy2RtSQ==", "dev": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "pump": "3.0.0" } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "assert-plus": "1.0.0" + } + }, + "ghooks": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/ghooks/-/ghooks-2.0.4.tgz", + "integrity": "sha1-/VDgQP9UiQauQstReToBv+JFZ7k=", + "dev": true, + "requires": { + "findup": "0.1.5", + "lodash.clone": "4.5.0", + "manage-path": "2.0.0", + "opt-cli": "1.5.1", + "path-exists": "3.0.0", + "spawn-command": "0.0.2" + } + }, + "git-log-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", + "integrity": "sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=", + "dev": true, + "requires": { + "argv-formatter": "1.0.0", + "spawn-error-forwarder": "1.0.0", + "split2": "1.0.0", + "stream-combiner2": "1.1.1", + "through2": "2.0.3", + "traverse": "0.6.6" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", "dev": true, - "optional": true + "requires": { + "through2": "2.0.3" + } } } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "git-up": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-2.0.10.tgz", + "integrity": "sha512-2v4UN3qV2RGypD9QpmUjpk+4+RlYpW8GFuiZqQnKmvei08HsFPd0RfbDvEhnE4wBvnYs8ORVtYpOFuuCEmBVBw==", "dev": true, "requires": { - "invert-kv": "1.0.0" + "is-ssh": "1.3.0", + "parse-url": "1.3.11" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "git-url-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-10.0.1.tgz", + "integrity": "sha512-Tq2u8UPXc/FawC/dO8bvh8jcck0Lkor5OhuZvmVSeyJGRucDBfw9y2zy/GNCx28lMYh1N12IzPwDexjUNFyAeg==", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "git-up": "2.0.10" } }, - "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { - "extend": "3.0.1", - "findup-sync": "2.0.0", - "fined": "1.1.0", - "flagged-respawn": "1.0.0", - "is-plain-object": "2.0.4", - "object.map": "1.0.1", - "rechoir": "0.6.2", - "resolve": "1.8.1" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } } } }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", "dev": true }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "ini": "1.3.5" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "global-prefix": "0.1.5", + "is-windows": "0.2.0" }, "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", "dev": true } } }, - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "lodash._baseclone": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-4.5.7.tgz", - "integrity": "sha1-zkKt4IOE711i+nfDD2GkbmhvhDQ=", - "dev": true - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "global-modules-path": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", + "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", "dev": true }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "0.2.0", + "which": "1.3.1" + }, + "dependencies": { + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + } + } }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", "dev": true }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", + "dev": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "fast-glob": "2.2.2", + "glob": "7.1.3", + "ignore": "3.3.10", + "pify": "3.0.0", + "slash": "1.0.0" + }, + "dependencies": { + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true + "got": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.2.0.tgz", + "integrity": "sha512-H6GUT6PMamiIm5pVufgmfmuk7Tl92Vr2RHf8n587SGs5HPiarOUVrmyL6bGIfX/mJ5IEUMpHEdGR03LSIHhZrQ==", + "dev": true, + "requires": { + "@sindresorhus/is": "0.11.0", + "@szmarczak/http-timer": "1.1.1", + "cacheable-request": "4.0.1", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "4.0.0", + "mimic-response": "1.0.1", + "p-cancelable": "0.5.0", + "to-readable-stream": "1.0.0", + "url-parse-lax": "3.0.0" + } }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { - "lodash._root": "3.0.1" + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } } }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "function-bind": "1.1.1" } }, - "lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", - "dev": true + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash._basetostring": "3.0.1", - "lodash._basevalues": "3.0.0", - "lodash._isiterateecall": "3.0.9", - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0", - "lodash.keys": "3.1.2", - "lodash.restparam": "3.6.1", - "lodash.templatesettings": "3.1.1" + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0" + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, - "longest": { + "hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.5", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "home-or-tmp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", + "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", "dev": true }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "js-tokens": "3.0.2" + "parse-passwd": "1.0.0" } }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "hook-std": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-1.1.0.tgz", + "integrity": "sha512-aIyBZbZl3NS8XoSwIDQ+ZaiBuPOhhPWoBFA3QX0Q8hOMO8Tx4xGRTDnn/nl/LAtZWdieXzFC9ohAtTSnWrlHCQ==", "dev": true }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "pify": "3.0.0" + "whatwg-encoding": "1.0.4" } }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "http-cache-semantics": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", + "integrity": "sha512-NtexGRtaV5z3ZUX78W9UDTOJPBdpqms6RmwQXmOhHws7CuQK3cqIoQtnmeqi1VvVD6u6eMMRL0sKE9BCZXTDWQ==", + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "dev": true, "requires": { - "kind-of": "6.0.2" + "agent-base": "4.2.1", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, - "manage-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/manage-path/-/manage-path-2.0.0.tgz", - "integrity": "sha1-9M+EV7km7u4qg7FzUBQUvHbrlZc=", + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "4.2.1", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", "dev": true }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "requires": { - "object-visit": "1.0.1" + "minimatch": "3.0.4" } }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", "dev": true, "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" + "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "errno": "0.1.7", - "readable-stream": "2.3.6" + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.2.3.tgz", + "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "external-editor": "1.1.1", + "figures": "1.7.0", + "lodash": "4.17.10", + "mute-stream": "0.0.6", + "pinkie-promise": "2.0.1", + "run-async": "2.3.0", + "rx": "4.1.0", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" }, "dependencies": { - "isarray": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "2.3.0", + "p-is-promise": "1.1.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "1.4.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-ci": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.0.tgz", + "integrity": "sha512-plgvKjQtalH2P3Gytb7L61Lmz95g2DlpzFiQyRSFew8WoJKxtKRzrZMeyRN2supblm3Psc8OQGy7Xjb6XG11jw==", + "dev": true, + "requires": { + "ci-info": "1.4.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.3" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-ssh": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.0.tgz", + "integrity": "sha1-6+oRaaJhTaOSpjdANmw84EnY3/Y=", + "dev": true, + "requires": { + "protocols": "1.4.6" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "1.7.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "issue-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-3.0.0.tgz", + "integrity": "sha512-VWIhBdy0eOhlvpxOOMecBCHMpjx7lWVZcYpSzjD4dSdxptzI9TBR/cQEh057HL8+7jQKTLs+uCtezY/9VoveCA==", + "dev": true, + "requires": { + "lodash.capitalize": "4.2.1", + "lodash.escaperegexp": "4.1.2", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.uniqby": "4.7.0" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz", + "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==", + "dev": true, + "requires": { + "@babel/generator": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/traverse": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "istanbul-lib-coverage": "2.0.1", + "semver": "5.5.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", + "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.51" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", + "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.51", + "jsesc": "2.5.1", + "lodash": "4.17.10", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", + "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", + "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", + "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", + "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", + "dev": true, + "requires": { + "chalk": "2.4.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "@babel/parser": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", + "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", + "dev": true + }, + "@babel/template": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", + "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "lodash": "4.17.10" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", + "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.51", + "@babel/generator": "7.0.0-beta.51", + "@babel/helper-function-name": "7.0.0-beta.51", + "@babel/helper-split-export-declaration": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "debug": "3.1.0", + "globals": "11.7.0", + "invariant": "2.2.4", + "lodash": "4.17.10" + } + }, + "@babel/types": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", + "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "2.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + } + } + }, + "java-properties": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-0.2.10.tgz", + "integrity": "sha512-CpKJh9VRNhS+XqZtg1UMejETGEiqwCGDC/uwPEEQwc2nfdbSm73SIE29TplG2gLYuBOOTNDqxzG6A9NtEPLt0w==", + "dev": true + }, + "js-levenshtein": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.3.tgz", + "integrity": "sha512-/812MXr9RBtMObviZ8gQBhHO8MOrGj8HlEE+4ccMTElNA/6I3u39u+bhny55Lk921yn44nSZFy9naNLElL5wgQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.1" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdom": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-12.0.0.tgz", + "integrity": "sha512-42RgZYXWwyClG0pN6Au7TExAQqRvzbtJhlcIvu58cJj4yr1bIbqZkgxHqn1btxKu80axZXPZLvldeTzg2auKow==", + "dev": true, + "requires": { + "abab": "2.0.0", + "acorn": "5.7.2", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "cssom": "0.3.4", + "cssstyle": "1.1.1", + "data-urls": "1.0.1", + "domexception": "1.0.1", + "escodegen": "1.11.0", + "html-encoding-sniffer": "1.0.2", + "nwsapi": "2.0.9", + "parse5": "5.1.0", + "pn": "1.1.0", + "request": "2.88.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.4.3", + "w3c-hr-time": "1.0.1", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.4", + "whatwg-mimetype": "2.1.0", + "whatwg-url": "7.0.0", + "ws": "6.0.0", + "xml-name-validator": "3.0.0" + } + }, + "jsdom-global": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", + "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", + "dev": true + }, + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "lodash._baseclone": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-4.5.7.tgz", + "integrity": "sha1-zkKt4IOE711i+nfDD2GkbmhvhDQ=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", + "dev": true + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", + "dev": true + }, + "lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", + "dev": true + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "manage-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/manage-path/-/manage-path-2.0.0.tgz", + "integrity": "sha1-9M+EV7km7u4qg7FzUBQUvHbrlZc=", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "marked": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.5.0.tgz", + "integrity": "sha512-UhjmkCWKu1SS/BIePL2a59BMJ7V42EYtTfksodPRXzPEGEph3Inp5dylseqt+KbU9Jglsx8xcMKmlumfJMBXAA==", + "dev": true + }, + "marked-terminal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.1.1.tgz", + "integrity": "sha512-7UBFww1rdx0w9HehLMCVYa8/AxXaiDigDfMsJcj82/wgLQG9cj+oiMAVlJpeWD57VFJY2OYY+bKeEVIjIlxi+w==", + "dev": true, + "requires": { + "cardinal": "2.1.1", + "chalk": "2.4.1", + "cli-table": "0.3.1", + "lodash.assign": "4.2.0", + "node-emoji": "1.8.1" + } + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.6" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "4.2.0", + "decamelize-keys": "1.1.0", + "loud-rejection": "1.6.0", + "minimist": "1.2.0", + "minimist-options": "3.0.2", + "normalize-package-data": "2.4.0", + "read-pkg-up": "3.0.0", + "redent": "2.0.0", + "trim-newlines": "2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "3.0.0" + } + } + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge2": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", + "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + }, + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "dev": true + }, + "mime-types": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "dev": true, + "requires": { + "mime-db": "1.36.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "is-plain-obj": "1.1.0" + } + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.6.0", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.5.1", + "stream-each": "1.2.3", + "through2": "2.0.3" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", + "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=", + "dev": true + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "neo-async": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", + "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", + "dev": true + }, + "nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-emoji": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz", + "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==", + "dev": true, + "requires": { + "lodash.toarray": "4.4.0" + } + }, + "node-fetch": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", + "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", + "dev": true, + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.6", + "stream-browserify": "2.0.1", + "stream-http": "2.8.3", + "string_decoder": "1.1.1", + "timers-browserify": "2.0.10", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.4", + "vm-browserify": "0.0.4" + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-releases": { + "version": "1.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.11.tgz", + "integrity": "sha512-CaViu+2FqTNYOYNihXa5uPS/zry92I3vPU4nCB6JB3OeZ2UGtOpF5gRwuN4+m3hbEcL47bOXyun1jX2iC+3uEQ==", + "dev": true, + "requires": { + "semver": "5.5.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.7.1", + "is-builtin-module": "1.0.0", + "semver": "5.5.1", + "validate-npm-package-license": "3.0.4" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.4.1.tgz", + "integrity": "sha512-mXJL1NTVU136PtuopXCUQaNWuHlXCTp4McwlSW8S9/Aj8OEPAlSBgo8og7kJ01MjCDrkmqFQTvN5tTEhBMhXQg==", + "dev": true, + "requires": { + "JSONStream": "1.3.4", + "abbrev": "1.1.1", + "ansicolors": "0.3.2", + "ansistyles": "0.1.3", + "aproba": "1.2.0", + "archy": "1.0.0", + "bin-links": "1.1.2", + "bluebird": "3.5.1", + "byte-size": "4.0.3", + "cacache": "11.2.0", + "call-limit": "1.1.0", + "chownr": "1.0.1", + "ci-info": "1.4.0", + "cli-columns": "3.1.2", + "cli-table3": "0.5.0", + "cmd-shim": "2.0.2", + "columnify": "1.5.4", + "config-chain": "1.1.11", + "debuglog": "1.0.1", + "detect-indent": "5.0.0", + "detect-newline": "2.1.0", + "dezalgo": "1.0.3", + "editor": "1.0.0", + "figgy-pudding": "3.4.1", + "find-npm-prefix": "1.0.2", + "fs-vacuum": "1.2.10", + "fs-write-stream-atomic": "1.0.10", + "gentle-fs": "2.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "has-unicode": "2.0.1", + "hosted-git-info": "2.7.1", + "iferr": "1.0.2", + "imurmurhash": "0.1.4", + "inflight": "1.0.6", + "inherits": "2.0.3", + "ini": "1.3.5", + "init-package-json": "1.10.3", + "is-cidr": "2.0.6", + "json-parse-better-errors": "1.0.2", + "lazy-property": "1.0.0", + "libcipm": "2.0.2", + "libnpmhook": "4.0.1", + "libnpx": "10.2.0", + "lock-verify": "2.0.2", + "lockfile": "1.0.4", + "lodash._baseindexof": "3.1.0", + "lodash._baseuniq": "4.6.0", + "lodash._bindcallback": "3.0.1", + "lodash._cacheindexof": "3.0.2", + "lodash._createcache": "3.1.2", + "lodash._getnative": "3.9.1", + "lodash.clonedeep": "4.5.0", + "lodash.restparam": "3.6.1", + "lodash.union": "4.6.0", + "lodash.uniq": "4.5.0", + "lodash.without": "4.4.0", + "lru-cache": "4.1.3", + "meant": "1.0.1", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "node-gyp": "3.8.0", + "nopt": "4.0.1", + "normalize-package-data": "2.4.0", + "npm-audit-report": "1.3.1", + "npm-cache-filename": "1.0.2", + "npm-install-checks": "3.0.0", + "npm-lifecycle": "2.1.0", + "npm-package-arg": "6.1.0", + "npm-packlist": "1.1.11", + "npm-pick-manifest": "2.1.0", + "npm-profile": "3.0.2", + "npm-registry-client": "8.6.0", + "npm-registry-fetch": "1.1.0", + "npm-user-validate": "1.0.0", + "npmlog": "4.1.2", + "once": "1.4.0", + "opener": "1.5.0", + "osenv": "0.1.5", + "pacote": "8.1.6", + "path-is-inside": "1.0.2", + "promise-inflight": "1.0.1", + "qrcode-terminal": "0.12.0", + "query-string": "6.1.0", + "qw": "1.0.1", + "read": "1.0.7", + "read-cmd-shim": "1.0.1", + "read-installed": "4.0.3", + "read-package-json": "2.0.13", + "read-package-tree": "5.2.1", + "readable-stream": "2.3.6", + "readdir-scoped-modules": "1.0.2", + "request": "2.88.0", + "retry": "0.12.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.2", + "semver": "5.5.0", + "sha": "2.0.1", + "slide": "1.1.6", + "sorted-object": "2.0.1", + "sorted-union-stream": "2.1.3", + "ssri": "6.0.0", + "stringify-package": "1.0.0", + "tar": "4.4.6", + "text-table": "0.2.0", + "tiny-relative-date": "1.3.0", + "uid-number": "0.0.6", + "umask": "1.1.0", + "unique-filename": "1.1.0", + "unpipe": "1.0.0", + "update-notifier": "2.5.0", + "uuid": "3.3.2", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "3.0.0", + "which": "1.3.1", + "worker-farm": "1.6.0", + "write-file-atomic": "2.3.0" + }, + "dependencies": { + "JSONStream": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "agent-base": { + "version": "4.2.0", + "bundled": true, + "dev": true, + "requires": { + "es6-promisify": "5.0.0" + } + }, + "agentkeepalive": { + "version": "3.4.1", + "bundled": true, + "dev": true, + "requires": { + "humanize-ms": "1.2.1" + } + }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-align": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "asap": { + "version": "2.0.6", + "bundled": true, + "dev": true + }, + "asn1": { + "version": "0.2.4", + "bundled": true, + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true, + "dev": true + }, + "aws4": { + "version": "1.8.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "bin-links": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "3.5.1", + "cmd-shim": "2.0.2", + "gentle-fs": "2.0.1", + "graceful-fs": "4.1.11", + "write-file-atomic": "2.3.0" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "3.5.1", + "bundled": true, + "dev": true + }, + "boxen": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.4.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "builtins": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "byline": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "byte-size": { + "version": "4.0.3", + "bundled": true, + "dev": true + }, + "cacache": { + "version": "11.2.0", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "figgy-pudding": "3.4.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.3", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "6.0.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + } + }, + "call-limit": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "chalk": { + "version": "2.4.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "ci-info": { + "version": "1.4.0", + "bundled": true, + "dev": true + }, + "cidr-regex": { + "version": "2.0.9", + "bundled": true, + "dev": true, + "requires": { + "ip-regex": "2.1.0" + } + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "cli-columns": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "3.0.1" + } + }, + "cli-table3": { + "version": "0.5.0", + "bundled": true, + "dev": true, + "requires": { + "colors": "1.1.2", + "object-assign": "4.1.1", + "string-width": "2.1.1" + } + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "cmd-shim": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1" + } + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "color-convert": { + "version": "1.9.1", + "bundled": true, + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "colors": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "dev": true, + "requires": { + "strip-ansi": "3.0.1", + "wcwidth": "1.0.1" + } + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "dev": true, + "requires": { + "buffer-from": "1.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + } + }, + "config-chain": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "ini": "1.3.5", + "proto-list": "1.2.4" + } + }, + "configstore": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.3.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "bundled": true, + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "clone": "1.0.4" + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "detect-indent": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "asap": "2.0.6", + "wrappy": "1.0.2" + } + }, + "dot-prop": { + "version": "4.2.0", + "bundled": true, + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "dotenv": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "duplexify": { + "version": "3.6.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "editor": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "encoding": { + "version": "0.1.12", + "bundled": true, + "dev": true, + "requires": { + "iconv-lite": "0.4.23" + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "err-code": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "errno": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, + "es6-promise": { + "version": "4.2.4", + "bundled": true, + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "es6-promise": "4.2.4" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "extend": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "figgy-pudding": { + "version": "3.4.1", + "bundled": true, + "dev": true + }, + "find-npm-prefix": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.19" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "requires": { + "minipass": "2.3.3" + } + }, + "fs-vacuum": { + "version": "1.2.10", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "path-is-inside": "1.0.2", + "rimraf": "2.6.2" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.6" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "genfun": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "gentle-fs": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-vacuum": "1.2.10", + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "path-is-inside": "1.0.2", + "read-cmd-shim": "1.0.1", + "slide": "1.1.6" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "ini": "1.3.5" + } + }, + "got": { + "version": "6.7.1", + "bundled": true, + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "safe-buffer": "5.1.2", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.7.1", + "bundled": true, + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true, + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" + } + }, + "https-proxy-agent": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.1.1" + } + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "iferr": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "import-lazy": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true + }, + "init-package-json": { + "version": "1.10.3", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2", + "npm-package-arg": "6.1.0", + "promzard": "0.3.0", + "read": "1.0.7", + "read-package-json": "2.0.13", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "3.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "ip": { + "version": "1.1.5", + "bundled": true, + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-ci": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "ci-info": "1.4.0" + } + }, + "is-cidr": { + "version": "2.0.6", + "bundled": true, + "dev": true, + "requires": { + "cidr-regex": "2.0.9" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "is-path-inside": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true, + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true, + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "latest-version": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-property": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "libcipm": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "bin-links": "1.1.2", + "bluebird": "3.5.1", + "find-npm-prefix": "1.0.2", + "graceful-fs": "4.1.11", + "lock-verify": "2.0.2", + "mkdirp": "0.5.1", + "npm-lifecycle": "2.1.0", + "npm-logical-tree": "1.2.1", + "npm-package-arg": "6.1.0", + "pacote": "8.1.6", + "protoduck": "5.0.0", + "read-package-json": "2.0.13", + "rimraf": "2.6.2", + "worker-farm": "1.6.0" + } + }, + "libnpmhook": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "figgy-pudding": "3.4.1", + "npm-registry-fetch": "3.1.1" + }, + "dependencies": { + "npm-registry-fetch": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "3.5.1", + "figgy-pudding": "3.4.1", + "lru-cache": "4.1.3", + "make-fetch-happen": "4.0.1", + "npm-package-arg": "6.1.0" + } + } + } + }, + "libnpx": { + "version": "10.2.0", + "bundled": true, + "dev": true, + "requires": { + "dotenv": "5.0.1", + "npm-package-arg": "6.1.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.2", + "update-notifier": "2.5.0", + "which": "1.3.1", + "y18n": "4.0.0", + "yargs": "11.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lock-verify": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "npm-package-arg": "6.1.0", + "semver": "5.5.0" + } + }, + "lockfile": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "signal-exit": "3.0.2" + } + }, + "lodash._baseindexof": { + "version": "3.1.0", + "bundled": true, + "dev": true + }, + "lodash._baseuniq": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "requires": { + "lodash._createset": "4.0.3", + "lodash._root": "3.0.1" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "lodash._cacheindexof": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "lodash._createcache": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "lodash._getnative": "3.9.1" + } + }, + "lodash._createset": { + "version": "4.0.3", + "bundled": true, + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "bundled": true, + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true, + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "bundled": true, + "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "bundled": true, + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "bundled": true, + "dev": true + }, + "lodash.without": { + "version": "4.4.0", + "bundled": true, + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "make-fetch-happen": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "agentkeepalive": "3.4.1", + "cacache": "11.2.0", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "4.1.3", + "mississippi": "3.0.0", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "4.0.1", + "ssri": "6.0.0" + } + }, + "meant": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "mime-db": { + "version": "1.35.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.19", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.35.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.1.2", + "yallist": "3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "minipass": "2.3.3" + } + }, + "mississippi": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.6.0", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "3.0.0", + "pumpify": "1.5.1", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true, + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.2", + "safe-buffer": "5.1.2" + } + }, + "node-gyp": { + "version": "3.8.0", + "bundled": true, + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.88.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.1" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + } + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "2.7.1", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.4" + } + }, + "npm-audit-report": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "cli-table3": "0.5.0", + "console-control-strings": "1.1.0" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "npm-cache-filename": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "npm-install-checks": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "npm-lifecycle": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "byline": "5.0.0", + "graceful-fs": "4.1.11", + "node-gyp": "3.8.0", + "resolve-from": "4.0.0", + "slide": "1.1.6", + "uid-number": "0.0.6", + "umask": "1.1.0", + "which": "1.3.1" + } + }, + "npm-logical-tree": { + "version": "1.2.1", + "bundled": true, + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "2.7.1", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + }, + "npm-packlist": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.5" + } + }, + "npm-pick-manifest": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "npm-package-arg": "6.1.0", + "semver": "5.5.0" + } + }, + "npm-profile": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "aproba": "1.2.0", + "make-fetch-happen": "4.0.1" + } + }, + "npm-registry-client": { + "version": "8.6.0", + "bundled": true, + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "graceful-fs": "4.1.11", + "normalize-package-data": "2.4.0", + "npm-package-arg": "6.1.0", + "npmlog": "4.1.2", + "once": "1.4.0", + "request": "2.88.0", + "retry": "0.10.1", + "safe-buffer": "5.1.2", + "semver": "5.5.0", + "slide": "1.1.6", + "ssri": "5.3.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "bundled": true, + "dev": true + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "npm-registry-fetch": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "3.5.1", + "figgy-pudding": "2.0.1", + "lru-cache": "4.1.3", + "make-fetch-happen": "3.0.0", + "npm-package-arg": "6.1.0", + "safe-buffer": "5.1.2" + }, + "dependencies": { + "cacache": { + "version": "10.0.4", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.3", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "mississippi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.6.0", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.5.1", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + } + } + }, + "figgy-pudding": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "make-fetch-happen": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "agentkeepalive": "3.4.1", + "cacache": "10.0.4", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "4.1.3", + "mississippi": "3.0.0", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "3.0.1", + "ssri": "5.3.0" + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "smart-buffer": { + "version": "1.1.15", + "bundled": true, + "dev": true + }, + "socks": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "1.1.15" + } + }, + "socks-proxy-agent": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "4.2.0", + "socks": "1.1.10" + } + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npm-user-validate": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "opener": { + "version": "1.5.0", + "bundled": true, + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "package-json": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.0" + } + }, + "pacote": { + "version": "8.1.6", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "3.5.1", + "cacache": "11.2.0", + "get-stream": "3.0.0", + "glob": "7.1.2", + "lru-cache": "4.1.3", + "make-fetch-happen": "4.0.1", + "minimatch": "3.0.4", + "minipass": "2.3.3", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "normalize-package-data": "2.4.0", + "npm-package-arg": "6.1.0", + "npm-packlist": "1.1.11", + "npm-pick-manifest": "2.1.0", + "osenv": "0.1.5", + "promise-inflight": "1.0.1", + "promise-retry": "1.1.1", + "protoduck": "5.0.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.2", + "semver": "5.5.0", + "ssri": "6.0.0", + "tar": "4.4.6", + "unique-filename": "1.1.0", + "which": "1.3.1" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "pify": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "bundled": true, + "dev": true + } + } + }, + "promzard": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "read": "1.0.7" + } + }, + "proto-list": { + "version": "1.2.4", + "bundled": true, + "dev": true + }, + "protoduck": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "genfun": "4.0.1" + } + }, + "prr": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "psl": { + "version": "1.1.29", + "bundled": true, + "dev": true + }, + "pump": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.5.1", + "bundled": true, + "dev": true, + "requires": { + "duplexify": "3.6.0", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "qs": { + "version": "6.5.2", + "bundled": true, + "dev": true + }, + "query-string": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "decode-uri-component": "0.2.0", + "strict-uri-encode": "2.0.0" + } + }, + "qw": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "requires": { + "deep-extend": "0.5.1", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true + } + } + }, + "read": { + "version": "1.0.7", + "bundled": true, + "dev": true, + "requires": { + "mute-stream": "0.0.7" + } + }, + "read-cmd-shim": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "read-installed": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "1.0.1", + "graceful-fs": "4.1.11", + "read-package-json": "2.0.13", + "readdir-scoped-modules": "1.0.2", + "semver": "5.5.0", + "slide": "1.1.6", + "util-extend": "1.0.3" + } + }, + "read-package-json": { + "version": "2.0.13", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "json-parse-better-errors": "1.0.2", + "normalize-package-data": "2.4.0", + "slash": "1.0.0" + } + }, + "read-package-tree": { + "version": "5.2.1", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "once": "1.4.0", + "read-package-json": "2.0.13", + "readdir-scoped-modules": "1.0.2" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "readdir-scoped-modules": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "graceful-fs": "4.1.11", + "once": "1.4.0" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "bundled": true, + "dev": true, + "requires": { + "rc": "1.2.7", + "safe-buffer": "5.1.2" + } + }, + "registry-url": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "rc": "1.2.7" + } + }, + "request": { + "version": "2.88.0", + "bundled": true, + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.1.0", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.19", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "retry": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "sha": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "readable-stream": "2.3.6" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slash": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "smart-buffer": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "socks": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "4.0.1" + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "4.2.0", + "socks": "2.2.0" + } + }, + "sorted-object": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "sorted-union-stream": { + "version": "2.1.3", + "bundled": true, + "dev": true, + "requires": { + "from2": "1.3.0", + "stream-iterate": "1.2.0" + }, + "dependencies": { + "from2": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "1.1.14" + } + }, + "isarray": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true, + "dev": true + } + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "bundled": true, + "dev": true, + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + } + }, + "ssri": { + "version": "6.0.0", + "bundled": true, + "dev": true + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-iterate": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + } + }, + "stream-shift": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "strict-uri-encode": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } } }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "bundled": true, "dev": true, "requires": { "safe-buffer": "5.1.2" } - } - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "merge": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", - "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "dev": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.6.0", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.5.1", - "stream-each": "1.2.3", - "through2": "2.0.3" - }, - "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + }, + "stringify-package": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "tar": { + "version": "4.4.6", + "bundled": true, + "dev": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.3.3", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "term-size": { + "version": "1.2.0", + "bundled": true, "dev": true, "requires": { - "once": "1.4.0" + "execa": "0.7.0" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "text-table": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "through": { + "version": "2.3.8", + "bundled": true, + "dev": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "readable-stream": "2.3.6", + "xtend": "4.0.1" } - } - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + }, + "timed-out": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "bundled": true, "dev": true, "requires": { - "is-plain-object": "2.0.4" + "psl": "1.1.29", + "punycode": "1.4.1" } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true, "dev": true - } - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true + }, + "umask": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "unique-filename": { + "version": "1.1.0", + "bundled": true, "dev": true, "requires": { - "ms": "2.0.0" + "unique-slug": "2.0.0" } }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "unique-slug": { + "version": "2.0.0", + "bundled": true, "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" + "imurmurhash": "0.1.4" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "unique-string": { + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.11" + "crypto-random-string": "1.0.0" } }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "unpipe": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "unzip-response": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "update-notifier": { + "version": "2.5.0", + "bundled": true, "dev": true, "requires": { - "has-flag": "3.0.0" + "boxen": "1.3.0", + "chalk": "2.4.1", + "configstore": "3.1.2", + "import-lazy": "2.1.0", + "is-ci": "1.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" } - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - } - }, - "mute-stream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", - "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=", - "dev": true - }, - "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "natives": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.4.tgz", - "integrity": "sha512-Q29yeg9aFKwhLVdkTAejM/HvYG0Y1Am1+HUkFQGn5k2j8GS+v60TVmZh6nujpEAj/qql+wGUrlryO8bF+b1jEg==", - "dev": true - }, - "neo-async": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", - "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", - "dev": true - }, - "nice-try": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", - "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", - "dev": true - }, - "node-fetch": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", - "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", - "dev": true, - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.6", - "stream-browserify": "2.0.1", - "stream-http": "2.8.3", - "string_decoder": "1.1.1", - "timers-browserify": "2.0.10", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.4", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "isarray": { + }, + "url-parse-lax": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "util-extend": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.3.2", + "bundled": true, "dev": true }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, "dev": true, "requires": { + "builtins": "1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "extsprintf": "1.3.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "wcwidth": { + "version": "1.0.1", + "bundled": true, "dev": true, "requires": { - "safe-buffer": "5.1.2" + "defaults": "1.0.3" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "widest-line": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "worker-farm": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "requires": { + "errno": "0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "11.0.0", + "bundled": true, + "dev": true, + "requires": { + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "4.1.0" } } } }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "2.6.1", - "is-builtin-module": "1.0.0", - "semver": "4.3.6", - "validate-npm-package-license": "3.0.3" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, "npm-run-all": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.3.tgz", @@ -6073,46 +9901,6 @@ "read-pkg": "3.0.0", "shell-quote": "1.6.1", "string.prototype.padend": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "1.9.2" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - } - } } }, "npm-run-path": { @@ -6130,6 +9918,12 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "nwsapi": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", + "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==", + "dev": true + }, "nyc": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", @@ -6148,7 +9942,7 @@ "glob": "7.1.2", "istanbul-lib-coverage": "1.2.0", "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "2.3.0", + "istanbul-lib-instrument": "2.3.2", "istanbul-lib-report": "1.1.3", "istanbul-lib-source-maps": "1.2.5", "istanbul-reports": "1.4.1", @@ -8190,9 +11984,9 @@ "dev": true }, "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-copy": { @@ -8241,26 +12035,14 @@ "isobject": "3.0.1" } }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "1.0.1", - "array-slice": "1.1.0", - "for-own": "1.0.0", - "isobject": "3.0.1" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "dev": true, "requires": { - "for-own": "1.0.0", - "make-iterator": "1.0.1" + "define-properties": "1.1.3", + "es-abstract": "1.12.0" } }, "object.omit": { @@ -8271,17 +12053,6 @@ "requires": { "for-own": "0.1.5", "is-extendable": "0.1.1" - }, - "dependencies": { - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - } } }, "object.pick": { @@ -8294,9 +12065,9 @@ } }, "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -8328,6 +12099,25 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -8339,12 +12129,12 @@ }, "external-editor": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.23", + "iconv-lite": "0.4.24", "tmp": "0.0.33" } }, @@ -8384,10 +12174,10 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "mute-stream": { @@ -8436,6 +12226,12 @@ } } }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -8455,14 +12251,6 @@ "requires": { "object-assign": "4.1.1", "pinkie-promise": "2.0.1" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } } }, "opt-cli": { @@ -8503,6 +12291,24 @@ } } }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -8517,23 +12323,6 @@ "wordwrap": "1.0.0" } }, - "orchestrator": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", - "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", - "dev": true, - "requires": { - "end-of-stream": "0.1.5", - "sequencify": "0.0.7", - "stream-consume": "0.1.1" - } - }, - "ordered-read-streams": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", - "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", - "dev": true - }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -8555,6 +12344,40 @@ "execa": "0.7.0", "lcid": "1.0.0", "mem": "1.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } } }, "os-shim": { @@ -8570,28 +12393,29 @@ "dev": true }, "output-file-sync": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", - "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", + "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", "dev": true, "requires": { "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } + "is-plain-obj": "1.1.0", + "mkdirp": "0.5.1" + } + }, + "p-cancelable": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.5.0.tgz", + "integrity": "sha512-UTykUaG4vhPAMNi1/GZKGdCNDj4qGnq6taAjnOG0KCx5Fva3b1vtskXtagAePmgIhUrdcoDGEvAQIHaSPXEZWg==", + "dev": true + }, + "p-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-1.0.0.tgz", + "integrity": "sha1-Yp0xcVAgnI/VCLoTdxPvS7kg6ds=", + "dev": true, + "requires": { + "p-map": "1.2.0" } }, "p-finally": { @@ -8600,6 +12424,12 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -8618,12 +12448,87 @@ "p-limit": "1.3.0" } }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-retry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-2.0.0.tgz", + "integrity": "sha512-ZbCuzAmiwJ45q4evp/IG9D+5MUllGSUeCWwPt3j/tdYSi1KPkSD+46uqmAA1LhccDhOXv8kYZKNb8x78VflzfA==", + "dev": true, + "requires": { + "retry": "0.12.0" + } + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "got": { + "version": "6.7.1", + "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "safe-buffer": "5.1.2", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + } + } + }, "pad-right": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", @@ -8648,38 +12553,6 @@ "cyclist": "0.2.2", "inherits": "2.0.3", "readable-stream": "2.3.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } } }, "parse-asn1": { @@ -8695,16 +12568,11 @@ "pbkdf2": "3.0.16" } }, - "parse-filepath": { + "parse-github-url": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "1.0.0", - "map-cache": "0.2.2", - "path-root": "0.1.1" - } + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "dev": true }, "parse-glob": { "version": "3.0.4", @@ -8751,6 +12619,16 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parse-url": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-1.3.11.tgz", + "integrity": "sha1-V8FUKKuKiSsfQ4aWRccR0OFEtVQ=", + "dev": true, + "requires": { + "is-ssh": "1.3.0", + "protocols": "1.4.6" + } + }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", @@ -8776,13 +12654,10 @@ "dev": true }, "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -8790,6 +12665,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -8797,24 +12678,9 @@ "dev": true }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "0.1.2" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "path-type": { @@ -8881,6 +12747,25 @@ "pinkie": "2.0.4" } }, + "pirates": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.0.tgz", + "integrity": "sha512-8t5BsXy1LUIjn3WWOlOuFDuKswhQb/tkak641lvBgmPOBUQHXveORtlMCp6OdPV1dtuTaEahKA8VNz6uLfKBtA==", + "dev": true, + "requires": { + "node-modules-regexp": "1.0.0" + } + }, + "pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "load-json-file": "4.0.0" + } + }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -8908,16 +12793,22 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "prettier": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.2.tgz", + "integrity": "sha512-McHPg0n1pIke+A/4VcaS2en+pTNjy4xF+Uuq86u/5dyDO59/TtFZtQ708QIRkEZ3qwKz3GVkVa6mpxK/CpB8Rg==", "dev": true }, "private": { @@ -8944,6 +12835,12 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "protocols": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.6.tgz", + "integrity": "sha1-+LsmPqG1/Xp2BNJri+Ob13Z4v4o=", + "dev": true + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -8966,9 +12863,9 @@ "dev": true }, "psl": { - "version": "1.1.28", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.28.tgz", - "integrity": "sha512-+AqO1Ae+N/4r7Rvchrdm432afjT9hqJRyBN3DQv9At0tPz4hIFSGKbq64fN9dVoCow4oggIIax5/iONx0r9hZw==", + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", "dev": true }, "public-encrypt": { @@ -8985,35 +12882,13 @@ } }, "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { "end-of-stream": "1.4.1", - "once": "1.3.3" - }, - "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "1.4.0" - }, - "dependencies": { - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - } - } - } + "once": "1.4.0" } }, "pumpify": { @@ -9025,6 +12900,18 @@ "duplexify": "3.6.0", "inherits": "2.0.3", "pump": "2.0.1" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } } }, "punycode": { @@ -9033,6 +12920,12 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -9051,10 +12944,16 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, "randomatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", "dev": true, "requires": { "is-number": "4.0.0", @@ -9089,6 +12988,26 @@ "safe-buffer": "5.1.2" } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -9100,16 +13019,74 @@ "path-type": "3.0.0" } }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "3.0.0", + "read-pkg": "3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "3.0.0", + "path-exists": "3.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + } + } + }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "readdirp": { @@ -9122,53 +13099,6 @@ "minimatch": "3.0.4", "readable-stream": "2.3.6", "set-immediate-shim": "1.0.1" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } } }, "rechoir": { @@ -9180,12 +13110,48 @@ "resolve": "1.8.1" } }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "3.2.0", + "strip-indent": "2.0.0" + } + }, + "redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", + "dev": true, + "requires": { + "esprima": "4.0.1" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, + "regenerate-unicode-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", + "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", + "dev": true, + "requires": { + "regenerate": "1.4.0" + } + }, "regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", @@ -9193,13 +13159,11 @@ "dev": true }, "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", + "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", "private": "0.1.8" } }, @@ -9223,26 +13187,48 @@ } }, "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", + "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", "dev": true, "requires": { "regenerate": "1.4.0", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" + "regenerate-unicode-properties": "7.0.0", + "regjsgen": "0.4.0", + "regjsparser": "0.3.0", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.0.2" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "1.2.8", + "safe-buffer": "5.1.2" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.8" } }, "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", + "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", "dev": true }, "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", + "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", "dev": true, "requires": { "jsesc": "0.5.0" @@ -9263,9 +13249,9 @@ "dev": true }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", "dev": true }, "repeat-string": { @@ -9283,12 +13269,6 @@ "is-finite": "1.0.2" } }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -9315,35 +13295,6 @@ "tough-cookie": "2.4.3", "tunnel-agent": "0.6.0", "uuid": "3.3.2" - }, - "dependencies": { - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", - "dev": true - }, - "mime-types": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", - "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", - "dev": true, - "requires": { - "mime-db": "1.36.0" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - } } }, "request-promise-core": { @@ -9353,14 +13304,6 @@ "dev": true, "requires": { "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } } }, "request-promise-native": { @@ -9392,7 +13335,7 @@ "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "1.0.6" } }, "resolve-cwd": { @@ -9402,22 +13345,30 @@ "dev": true, "requires": { "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "dev": true, "requires": { - "expand-tilde": "2.0.2", - "global-modules": "1.0.0" + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resolve-url": { @@ -9426,6 +13377,15 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "1.0.1" + } + }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", @@ -9442,6 +13402,22 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, "right-pad": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/right-pad/-/right-pad-1.0.1.tgz", @@ -9454,32 +13430,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - } + "glob": "7.1.3" } }, "ripemd160": { @@ -9588,16 +13539,104 @@ } } }, + "semantic-release": { + "version": "15.9.12", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-15.9.12.tgz", + "integrity": "sha512-n+SeGQ5nol7yMphpGXZSp8MDcQFGHx2cvYQIeKgxzfikG56vM5C3CHg6tg5TfK6soiwzvhB1PCGlwGCf4Gn0lg==", + "dev": true, + "requires": { + "@semantic-release/commit-analyzer": "6.0.0", + "@semantic-release/error": "2.2.0", + "@semantic-release/github": "5.0.4", + "@semantic-release/npm": "5.0.4", + "@semantic-release/release-notes-generator": "7.0.1", + "aggregate-error": "1.0.0", + "cosmiconfig": "5.0.6", + "debug": "3.1.0", + "env-ci": "2.1.3", + "execa": "1.0.0", + "figures": "2.0.0", + "find-versions": "2.0.0", + "get-stream": "4.0.0", + "git-log-parser": "1.2.0", + "git-url-parse": "10.0.1", + "hook-std": "1.1.0", + "hosted-git-info": "2.7.1", + "lodash": "4.17.10", + "marked": "0.5.0", + "marked-terminal": "3.1.1", + "p-locate": "3.0.0", + "p-reduce": "1.0.0", + "read-pkg-up": "4.0.0", + "resolve-from": "4.0.0", + "semver": "5.5.1", + "signale": "1.2.1", + "yargs": "12.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + } + } + }, "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", "dev": true }, - "sequencify": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", - "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.5.1" + } + }, + "semver-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", + "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", "dev": true }, "serialize-javascript": { @@ -9690,52 +13729,43 @@ "integrity": "sha1-N5zM+1a5HIYB5HkzVutTgpJN6a0=", "dev": true, "requires": { - "glob": "7.1.2", + "glob": "7.1.3", "interpret": "1.1.0", "rechoir": "0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "signale": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.2.1.tgz", + "integrity": "sha512-yY7GbeTGqDLC2ggcXR9hyzcgZnNT+cooPAizWRpUOHYd0DtNVRXhMqM3+F6ZbKav9oCg1r/YtJaB250IAhn/Hg==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "figures": "2.0.0", + "pkg-conf": "2.1.0" }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "escape-string-regexp": "1.0.5" } } } }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, "snapdragon": { @@ -9751,7 +13781,7 @@ "map-cache": "0.2.2", "source-map": "0.5.7", "source-map-resolve": "0.5.2", - "use": "3.1.0" + "use": "3.1.1" }, "dependencies": { "define-property": { @@ -9863,7 +13893,7 @@ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "dev": true, "requires": { - "atob": "2.1.1", + "atob": "2.1.2", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -9871,12 +13901,21 @@ } }, "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", "dev": true, "requires": { - "source-map": "0.5.7" + "buffer-from": "1.1.1", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "source-map-url": { @@ -9885,18 +13924,18 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, "spawn-command": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", "integrity": "sha1-lUThpDygRfhTGqwaSMspva5iM44=", "dev": true }, + "spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=", + "dev": true + }, "spawn-sync": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", @@ -9957,17 +13996,32 @@ "extend-shallow": "3.0.2" } }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "2.0.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "sshpk": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "dev": true, "requires": { - "asn1": "0.2.3", + "asn1": "0.2.4", "assert-plus": "1.0.0", "bcrypt-pbkdf": "1.0.2", "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", + "ecc-jsbn": "0.1.2", "getpass": "0.1.7", "jsbn": "0.1.1", "safer-buffer": "2.1.2", @@ -10018,38 +14072,6 @@ "requires": { "inherits": "2.0.3", "readable-stream": "2.3.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } } }, "stream-combiner": { @@ -10061,11 +14083,15 @@ "duplexer": "0.1.1" } }, - "stream-consume": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", - "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==", - "dev": true + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "0.1.4", + "readable-stream": "2.3.6" + } }, "stream-each": { "version": "1.2.3", @@ -10075,26 +14101,6 @@ "requires": { "end-of-stream": "1.4.1", "stream-shift": "1.0.0" - }, - "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - } } }, "stream-http": { @@ -10108,38 +14114,6 @@ "readable-stream": "2.3.6", "to-arraybuffer": "1.0.1", "xtend": "4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } } }, "stream-shift": { @@ -10165,16 +14139,19 @@ "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", "dev": true, "requires": { - "define-properties": "1.1.2", + "define-properties": "1.1.3", "es-abstract": "1.12.0", "function-bind": "1.1.1" } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } }, "strip-ansi": { "version": "3.0.1", @@ -10186,14 +14163,10 @@ } }, "strip-bom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", - "dev": true, - "requires": { - "first-chunk-stream": "1.0.0", - "is-utf8": "0.2.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true }, "strip-eof": { "version": "1.0.0", @@ -10201,6 +14174,12 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -10208,9 +14187,18 @@ "dev": true }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, "symbol-tree": { @@ -10225,26 +14213,55 @@ "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", "dev": true }, - "temp-write": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-1.1.2.tgz", - "integrity": "sha1-dbV6PNn4Ar6q43YrEeZqsfSv2Uc=", + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "os-tmpdir": "1.0.2", - "uuid": "2.0.3" + "execa": "0.7.0" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true } } }, + "text-extensions": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.7.0.tgz", + "integrity": "sha512-AKXZeDq230UaSzaO5s3qQUZOaC7iKbzq0jOFL614R7d9R593HLqAOL0cYoqLdkNrjBSOdmoQI06yigq1TSBXAg==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -10259,53 +14276,12 @@ "requires": { "readable-stream": "2.3.6", "xtend": "4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } } }, - "tildify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, "timers-browserify": { @@ -10358,6 +14334,12 @@ } } }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -10386,7 +14368,7 @@ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "dev": true, "requires": { - "psl": "1.1.28", + "psl": "1.1.29", "punycode": "1.4.1" } }, @@ -10407,6 +14389,44 @@ } } }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "dev": true + }, + "travis-deploy-once": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/travis-deploy-once/-/travis-deploy-once-5.0.7.tgz", + "integrity": "sha512-veJWkXdALdwsLvtfaRzmkbA89TB03pzejaKXPKAsr8TymncG93F8oHdeHpcwx72sSlqKq7/0QlrJJx/shmWb8w==", + "dev": true, + "requires": { + "@babel/core": "7.0.0", + "@babel/polyfill": "7.0.0", + "@babel/preset-env": "7.0.0", + "@babel/register": "7.0.0", + "chalk": "2.4.1", + "execa": "1.0.0", + "got": "9.2.0", + "p-retry": "2.0.0", + "semver": "5.5.1", + "update-notifier": "2.5.0", + "url-join": "4.0.0", + "yargs": "12.0.1" + } + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -10462,30 +14482,47 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, + "optional": true, "requires": { - "commander": "2.13.0", - "source-map": "0.6.1" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" }, "dependencies": { - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, "uglifyjs-webpack-plugin": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", @@ -10502,18 +14539,56 @@ "worker-farm": "1.6.0" }, "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + } } } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "1.0.4", + "unicode-property-aliases-ecmascript": "1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", "dev": true }, "union-value": { @@ -10569,10 +14644,19 @@ "imurmurhash": "0.1.4" } }, - "unique-stream": { + "unique-string": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", - "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, "unset-value": { @@ -10612,21 +14696,39 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true } } }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, "upath": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", "dev": true }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "dev": true, + "requires": { + "boxen": "1.3.0", + "chalk": "2.4.1", + "configstore": "3.1.2", + "import-lazy": "2.1.0", + "is-ci": "1.2.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -10668,6 +14770,27 @@ } } }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "2.0.0" + } + }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=", + "dev": true + }, "urlgrey": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", @@ -10675,18 +14798,9 @@ "dev": true }, "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, "util": { @@ -10704,10 +14818,20 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "object.getownpropertydescriptors": "2.0.3" + } + }, "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true }, "v8-compile-cache": { @@ -10716,19 +14840,10 @@ "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", "dev": true }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, - "requires": { - "user-home": "1.1.1" - } - }, "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "3.0.0", @@ -10746,82 +14861,6 @@ "extsprintf": "1.3.0" } }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-fs": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", - "dev": true, - "requires": { - "defaults": "1.0.3", - "glob-stream": "3.1.18", - "glob-watcher": "0.0.6", - "graceful-fs": "3.0.11", - "mkdirp": "0.5.1", - "strip-bom": "1.0.0", - "through2": "0.6.5", - "vinyl": "0.4.6" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" - } - } - } - }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -10849,74 +14888,6 @@ "chokidar": "2.0.4", "graceful-fs": "4.1.11", "neo-async": "2.5.2" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" - } - }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "lodash.debounce": "4.0.8", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } } }, "webidl-conversions": { @@ -11015,26 +14986,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "1.9.2" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" - } - }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -11070,15 +15021,6 @@ "escape-string-regexp": "1.0.5" } }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, "inquirer": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", @@ -11106,12 +15048,6 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -11156,15 +15092,6 @@ "ansi-regex": "3.0.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - } - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -11195,19 +15122,22 @@ } }, "whatwg-encoding": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", - "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz", + "integrity": "sha512-vM9KWN6MP2mIHZ86ytcyIv7e8Cj3KTfO2nd2c8PFDqcI4bxFmQp83ibq4wadq7rL9l9sZV6o9B0LTt8ygGAAXg==", "dev": true, "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "0.4.23" }, "dependencies": { "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } } } }, @@ -11243,6 +15173,55 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, + "requires": { + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -11280,6 +15259,32 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "ws": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.0.0.tgz", + "integrity": "sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w==", + "dev": true, + "requires": { + "async-limiter": "1.0.0" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", @@ -11336,6 +15341,26 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -11385,12 +15410,6 @@ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", "dev": true }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", diff --git a/package.json b/package.json index 900f3ff..4d293e5 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,15 @@ "scripts": { "commit": "git-cz", "watch:test": "npm test -- -w", - "_es6_test": "mocha src/cbfjs.test.js --compilers js:babel-register", + "_es6_test": "mocha src/cbfjs.test.js --compilers js:@babel/register", "test": "mocha --timeout 20000 src/cbfjs.test.js -r jsdom-global/register", "semantic-release": "semantic-release", "travis-deploy-once": "travis-deploy-once", "cover": "nyc npm test", "check-coverage": "nyc check-coverage --lines 40 --functions 40 --branches 40", "report-coverage": "nyc report --reporter=text-lcov > coverage.lcov", - "prebuild": "rimraf dist", - "build": "npm-run-all --parallel build:*", + "prebuild": "./node_modules/.bin/rimraf dist", + "build": "./node_modules/.bin/npm-run-all --parallel build:*", "build:umd": "webpack --output-filename cbfjs.umd.js --mode development", "build:umd.min": "webpack --output-filename cbfjs.umd.min.js --mode production", "build:main": "babel --copy-files --out-dir dist --ignore *.test.js src" @@ -34,18 +34,25 @@ }, "homepage": "https://github.com/lukasmatta/cbfjs#readme", "devDependencies": { - "babel-cli": "^6.26.0", - "babel-loader": "^7.1.5", - "babel-preset-es2015": "^6.24.1", - "babel-preset-stage-2": "^6.24.1", - "babel-register": "^6.26.0", + "@babel/cli": "^7.0.0", + "@babel/core": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-decorators": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-function-sent": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.0.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-throw-expressions": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "@babel/register": "^7.0.0", + "babel-loader": "^8.0.0", "chai": "^4.1.2", "codecov": "^3.0.4", "commitizen": "^2.10.1", "cz-conventional-changelog": "^2.1.0", "ghooks": "^2.0.4", - "gulp": "^3.9.1", - "gulp-closure-compiler": "^0.4.0", "jsdom": "12.0.0", "jsdom-global": "3.0.2", "mocha": "^5.2.0", @@ -72,8 +79,23 @@ }, "babel": { "presets": [ - "es2015", - "stage-2" + "@babel/preset-env" + ], + "plugins": [ + "@babel/plugin-syntax-dynamic-import", + "@babel/plugin-syntax-import-meta", + "@babel/plugin-proposal-class-properties", + "@babel/plugin-proposal-json-strings", + [ + "@babel/plugin-proposal-decorators", + { + "legacy": true + } + ], + "@babel/plugin-proposal-function-sent", + "@babel/plugin-proposal-export-namespace-from", + "@babel/plugin-proposal-numeric-separator", + "@babel/plugin-proposal-throw-expressions" ] }, "files": [