Advertisement
opexxx

cc8db724d8dd1b135c3905ff3c24faa5a62a010e4bb2bafb4e8426cf75e5

Oct 10th, 2018
411
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. !function(modules) {
  2.     function __webpack_require__(moduleId) {
  3.         if (installedModules[moduleId]) return installedModules[moduleId].exports;
  4.         var module = installedModules[moduleId] = {
  5.             i: moduleId,
  6.             l: !1,
  7.             exports: {}
  8.         };
  9.         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  10.         module.l = !0;
  11.         return module.exports;
  12.     }
  13.     var installedModules = {};
  14.     __webpack_require__.m = modules;
  15.     __webpack_require__.c = installedModules;
  16.     __webpack_require__.i = function(value) {
  17.         return value;
  18.     };
  19.     __webpack_require__.d = function(exports, name, getter) {
  20.         if (!__webpack_require__.o(exports, name)) Object.defineProperty(exports, name, {
  21.             configurable: !1,
  22.             enumerable: !0,
  23.             get: getter
  24.         });
  25.     };
  26.     __webpack_require__.n = function(module) {
  27.         var getter = module && module.__esModule ? function() {
  28.             return module["default"];
  29.         } : function() {
  30.             return module;
  31.         };
  32.         __webpack_require__.d(getter, "a", getter);
  33.         return getter;
  34.     };
  35.     __webpack_require__.o = function(object, property) {
  36.         return Object.prototype.hasOwnProperty.call(object, property);
  37.     };
  38.     __webpack_require__.p = "";
  39.     __webpack_require__(__webpack_require__.s = 727);
  40. }([ function(module, exports, __webpack_require__) {
  41.     var global = __webpack_require__(2), core = __webpack_require__(44), hide = __webpack_require__(28), redefine = __webpack_require__(34), ctx = __webpack_require__(32), $export = function(type, name, source) {
  42.         var key, own, out, exp, IS_FORCED = type & $export.F, IS_GLOBAL = type & $export.G, IS_STATIC = type & $export.S, IS_PROTO = type & $export.P, IS_BIND = type & $export.B, target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {}).prototype, exports = IS_GLOBAL ? core : core[name] || (core[name] = {}), expProto = exports.prototype || (exports.prototype = {});
  43.         if (IS_GLOBAL) source = name;
  44.         for (key in source) {
  45.             own = !IS_FORCED && target && target[key] !== undefined;
  46.             out = (own ? target : source)[key];
  47.             exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && "function" == typeof out ? ctx(Function.call, out) : out;
  48.             if (target) redefine(target, key, out, type & $export.U);
  49.             if (exports[key] != out) hide(exports, key, exp);
  50.             if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  51.         }
  52.     };
  53.     global.core = core;
  54.     $export.F = 1;
  55.     $export.G = 2;
  56.     $export.S = 4;
  57.     $export.P = 8;
  58.     $export.B = 16;
  59.     $export.W = 32;
  60.     $export.U = 64;
  61.     $export.R = 128;
  62.     module.exports = $export;
  63. }, function(module, exports, __webpack_require__) {
  64.     module.exports = __webpack_require__(593);
  65. }, function(module, exports) {
  66.     var global = module.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")();
  67.     if ("number" == typeof __g) __g = global;
  68. }, function(module, exports, __webpack_require__) {
  69.     "use strict";
  70.     exports.__esModule = !0;
  71.     exports.log = exports.getLogger = exports.logFolder = undefined;
  72.     var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
  73.         return typeof obj;
  74.     } : function(obj) {
  75.         return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  76.     }, _extends = Object.assign || function(target) {
  77.         for (var i = 1; i < arguments.length; i++) {
  78.             var source = arguments[i];
  79.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  80.         }
  81.         return target;
  82.     }, _Logger = __webpack_require__(342), _Logger2 = function(obj) {
  83.         return obj && obj.__esModule ? obj : {
  84.             "default": obj
  85.         };
  86.     }(_Logger), _config = __webpack_require__(87), _fileWriter = __webpack_require__(236);
  87.     exports.logFolder = _fileWriter.logFolder;
  88.     var logger = new _Logger2["default"](_extends({
  89.         logging: _config.logging
  90.     }, _config.logs));
  91.     exports["default"] = logger;
  92.     exports.getLogger = function() {
  93.         return logger.scope.apply(logger, arguments);
  94.     }, exports.log = function() {
  95.         for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
  96.         for (var message = [], params = [], _iterator = args, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator](); ;) {
  97.             var _ref;
  98.             if (_isArray) {
  99.                 if (_i >= _iterator.length) break;
  100.                 _ref = _iterator[_i++];
  101.             } else {
  102.                 _i = _iterator.next();
  103.                 if (_i.done) break;
  104.                 _ref = _i.value;
  105.             }
  106.             var part = _ref;
  107.             if ("object" === (void 0 === part ? "undefined" : _typeof(part))) params.push(part); else message.push(String(part));
  108.         }
  109.         var lvl = -1 !== message.indexOf("!!! ERROR !!!") ? "error" : "info";
  110.         logger.log(lvl, message.join(", "), params, "legacy");
  111.     };
  112. }, function(module, exports, __webpack_require__) {
  113.     "use strict";
  114.     var invariant = function(condition, format, a, b, c, d, e, f) {
  115.         if (!0) if (format === undefined) throw new Error("invariant requires an error message argument");
  116.         if (!condition) {
  117.             var error;
  118.             if (format === undefined) error = new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings."); else {
  119.                 var args = [ a, b, c, d, e, f ], argIndex = 0;
  120.                 error = new Error("Invariant Violation: " + format.replace(/%s/g, function() {
  121.                     return args[argIndex++];
  122.                 }));
  123.             }
  124.             error.framesToPop = 1;
  125.             throw error;
  126.         }
  127.     };
  128.     module.exports = invariant;
  129. }, function(module, exports, __webpack_require__) {
  130.     "use strict";
  131.     var shallowEqual = __webpack_require__(311), ReactComponentWithPureRenderMixin = {
  132.         shouldComponentUpdate: function(nextProps, nextState) {
  133.             return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState);
  134.         }
  135.     };
  136.     module.exports = ReactComponentWithPureRenderMixin;
  137. }, function(module, exports, __webpack_require__) {
  138.     "use strict";
  139.     exports.__esModule = !0;
  140.     exports["default"] = function(key) {
  141.         if (!window.language) return key; else return window.language[key] || key;
  142.     };
  143.     module.exports = exports["default"];
  144. }, function(module, exports, __webpack_require__) {
  145.     var store = __webpack_require__(111)("wks"), uid = __webpack_require__(51), Symbol = __webpack_require__(2).Symbol, USE_SYMBOL = "function" == typeof Symbol;
  146.     (module.exports = function(name) {
  147.         return store[name] || (store[name] = USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)("Symbol." + name));
  148.     }).store = store;
  149. }, function(module, exports) {
  150.     module.exports = function(exec) {
  151.         try {
  152.             return !!exec();
  153.         } catch (e) {
  154.             return !0;
  155.         }
  156.     };
  157. }, function(module, exports, __webpack_require__) {
  158.     "use strict";
  159.     function _interopRequireWildcard(obj) {
  160.         if (obj && obj.__esModule) return obj; else {
  161.             var newObj = {};
  162.             if (null != obj) for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
  163.             newObj["default"] = obj;
  164.             return newObj;
  165.         }
  166.     }
  167.     exports.__esModule = !0;
  168.     var _extends = Object.assign || function(target) {
  169.         for (var i = 1; i < arguments.length; i++) {
  170.             var source = arguments[i];
  171.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  172.         }
  173.         return target;
  174.     }, _cmd = __webpack_require__(242), cmd = _interopRequireWildcard(_cmd), _fso = __webpack_require__(18), fso = _interopRequireWildcard(_fso), _http = __webpack_require__(102), http = _interopRequireWildcard(_http), _localFiles = __webpack_require__(20), localFiles = _interopRequireWildcard(_localFiles), _processes = __webpack_require__(63), processes = _interopRequireWildcard(_processes), _registry = __webpack_require__(30), registry = _interopRequireWildcard(_registry), _sendImg = __webpack_require__(244), sendImg = _interopRequireWildcard(_sendImg), _shell = __webpack_require__(14), shell = _interopRequireWildcard(_shell), _specialFolders = __webpack_require__(22), specialFolders = _interopRequireWildcard(_specialFolders), _wmiRegistry = __webpack_require__(90), wmiRegistry = _interopRequireWildcard(_wmiRegistry), _iterate = __webpack_require__(52), _iterate2 = function(obj) {
  175.         return obj && obj.__esModule ? obj : {
  176.             "default": obj
  177.         };
  178.     }(_iterate);
  179.     exports["default"] = _extends({}, cmd, fso, http, localFiles, processes, registry, sendImg, shell, specialFolders, wmiRegistry, {
  180.         iterate: _iterate2["default"]
  181.     });
  182.     module.exports = exports["default"];
  183. }, function(module, exports) {
  184.     module.exports = function(it) {
  185.         return "object" == typeof it ? null !== it : "function" == typeof it;
  186.     };
  187. }, function(module, exports, __webpack_require__) {
  188.     var isObject = __webpack_require__(10);
  189.     module.exports = function(it) {
  190.         if (!isObject(it)) throw TypeError(it + " is not an object!");
  191.         return it;
  192.     };
  193. }, function(module, exports, __webpack_require__) {
  194.     module.exports = !__webpack_require__(8)(function() {
  195.         return 7 != Object.defineProperty({}, "a", {
  196.             get: function() {
  197.                 return 7;
  198.             }
  199.         }).a;
  200.     });
  201. }, function(module, exports, __webpack_require__) {
  202.     "use strict";
  203.     exports.__esModule = !0;
  204.     exports.OSCaption = exports.OSVersionSP = exports.OSName = exports.osVersions = exports.OSArchitecture = exports.OSCSDVersion = exports.OSVersion = exports.OSVersionS = exports.arch = exports.is64 = undefined;
  205.     var _WshShell = __webpack_require__(65), _WshShell2 = function(obj) {
  206.         return obj && obj.__esModule ? obj : {
  207.             "default": obj
  208.         };
  209.     }(_WshShell), _wmi = __webpack_require__(16), is64 = exports.is64 = "AMD64" === _WshShell2["default"].ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") || "%PROCESSOR_ARCHITEW6432%" !== _WshShell2["default"].ExpandEnvironmentStrings("%PROCESSOR_ARCHITEW6432%"), _getWMIObjects = (exports.arch = is64 ? "64" : "86",
  210.     (0, _wmi.getWMIObjects)([ "Version", "CSDVersion", "Caption", "OSArchitecture" ], "Win32_OperatingSystem")), _getWMIObjects$ = _getWMIObjects[0];
  211.     _getWMIObjects$ = _getWMIObjects$ === undefined ? {} : _getWMIObjects$;
  212.     var _getWMIObjects$$Versi = _getWMIObjects$.Version, Version = _getWMIObjects$$Versi === undefined ? "" : _getWMIObjects$$Versi, _getWMIObjects$$CSDVe = _getWMIObjects$.CSDVersion, CSDVersion = _getWMIObjects$$CSDVe === undefined ? "" : _getWMIObjects$$CSDVe, _getWMIObjects$$Capti = _getWMIObjects$.Caption, Caption = _getWMIObjects$$Capti === undefined ? "" : _getWMIObjects$$Capti, OSVersionS = exports.OSVersionS = Version.replace(/.\d\d.*/, ""), OSArchitecture = (exports.OSVersion = parseFloat(OSVersionS) || 5,
  213.     exports.OSCSDVersion = CSDVersion, exports.OSArchitecture = OSArchitecture), osVersions = exports.osVersions = {
  214.         "5.0": "2000",
  215.         "5.1": "XP",
  216.         "5.2": "Server 2003",
  217.         "6.0": "Vista",
  218.         "6.1": "7",
  219.         "6.2": "8",
  220.         "6.3": "8.1",
  221.         "6.4": "9",
  222.         "10.0": "10"
  223.     }, m = (exports.OSName = osVersions[OSVersionS] || OSVersionS, CSDVersion && /^Service Pack (\d+)$/i.exec(CSDVersion));
  224.     exports.OSVersionSP = m ? parseInt(m[1], 10) : 0, exports.OSCaption = Caption.replace(/Microsoft /i, "");
  225. }, function(module, exports, __webpack_require__) {
  226.     "use strict";
  227.     exports.__esModule = !0;
  228.     exports.WshShell = exports.objShell = undefined;
  229.     var _WshShell = __webpack_require__(65), _WshShell2 = function(obj) {
  230.         return obj && obj.__esModule ? obj : {
  231.             "default": obj
  232.         };
  233.     }(_WshShell);
  234.     exports.objShell = new ActiveXObject("Shell.Application");
  235.     exports.WshShell = _WshShell2["default"];
  236. }, function(module, exports, __webpack_require__) {
  237.     "use strict";
  238.     function _interopRequireDefault(obj) {
  239.         return obj && obj.__esModule ? obj : {
  240.             "default": obj
  241.         };
  242.     }
  243.     exports.__esModule = !0;
  244.     var _htaAdapter = __webpack_require__(241), _htaAdapter2 = _interopRequireDefault(_htaAdapter), _Statistics = __webpack_require__(353), _Statistics2 = _interopRequireDefault(_Statistics), _config = __webpack_require__(87);
  245.     exports["default"] = new _Statistics2["default"](_htaAdapter2["default"], _config.analytics, {
  246.         version: _config.application.DisplayVersion,
  247.         locale: window.lang
  248.     });
  249.     module.exports = exports["default"];
  250. }, function(module, exports, __webpack_require__) {
  251.     "use strict";
  252.     exports.__esModule = !0;
  253.     exports.getWMIObjects = exports.objWMIService = exports.ConnectServer = exports.locator = undefined;
  254.     var _iterate = __webpack_require__(52), _iterate2 = function(obj) {
  255.         return obj && obj.__esModule ? obj : {
  256.             "default": obj
  257.         };
  258.     }(_iterate), locator = exports.locator = new ActiveXObject("WbemScripting.SWbemLocator"), _ConnectServer = function(namespace, context) {
  259.         if (context) {
  260.             var set = new ActiveXObject("WbemScripting.SWbemNamedValueSet");
  261.             for (var key in context) set.Add(key, context[key]);
  262.             return locator.ConnectServer(null, namespace, null, null, null, null, null, set);
  263.         } else return locator.ConnectServer(null, namespace);
  264.     }, ConnectServer = exports.ConnectServer = function() {
  265.         var wmi = void 0;
  266.         try {
  267.             wmi = _ConnectServer.apply(undefined, arguments);
  268.         } catch (err) {}
  269.         if (!wmi) {
  270.             new ActiveXObject("WScript.Shell").Run("net start winmgmt", 0, !0);
  271.             wmi = _ConnectServer.apply(undefined, arguments);
  272.         }
  273.         return wmi;
  274.     }, objWMIService = exports.objWMIService = ConnectServer("root\\cimv2");
  275.     exports.getWMIObjects = function(names, source, where) {
  276.         var wmi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : objWMIService;
  277.         try {
  278.             var results = [], query = "SELECT * FROM " + source;
  279.             if (where) query += " WHERE " + where;
  280.             var colItems = wmi.ExecQuery(query, "WQL");
  281.             (0, _iterate2["default"])(colItems, function(objItem) {
  282.                 var obj = {};
  283.                 names.forEach(function(name) {
  284.                     try {
  285.                         if (objItem[name] || objItem[name].toArray) if (objItem[name].toArray) obj[name] = objItem[name].toArray(); else obj[name] = objItem[name];
  286.                     } catch (e) {}
  287.                 });
  288.                 results.push(obj);
  289.             });
  290.             return results;
  291.         } catch (e) {
  292.             return [];
  293.         }
  294.     };
  295. }, function(module, exports, __webpack_require__) {
  296.     var anObject = __webpack_require__(11), IE8_DOM_DEFINE = __webpack_require__(130), toPrimitive = __webpack_require__(42), dP = Object.defineProperty;
  297.     exports.f = __webpack_require__(12) ? Object.defineProperty : function(O, P, Attributes) {
  298.         anObject(O);
  299.         P = toPrimitive(P, !0);
  300.         anObject(Attributes);
  301.         if (IE8_DOM_DEFINE) try {
  302.             return dP(O, P, Attributes);
  303.         } catch (e) {}
  304.         if ("get" in Attributes || "set" in Attributes) throw TypeError("Accessors not supported!");
  305.         if ("value" in Attributes) O[P] = Attributes.value;
  306.         return O;
  307.     };
  308. }, function(module, exports, __webpack_require__) {
  309.     "use strict";
  310.     exports.__esModule = !0;
  311.     exports.fso = new ActiveXObject("Scripting.FileSystemObject");
  312. }, function(module, exports, __webpack_require__) {
  313.     "use strict";
  314.     function _objectWithoutProperties(obj, keys) {
  315.         var target = {};
  316.         for (var i in obj) if (!(keys.indexOf(i) >= 0)) if (Object.prototype.hasOwnProperty.call(obj, i)) target[i] = obj[i];
  317.         return target;
  318.     }
  319.     exports.__esModule = !0;
  320.     var _extends = Object.assign || function(target) {
  321.         for (var i = 1; i < arguments.length; i++) {
  322.             var source = arguments[i];
  323.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  324.         }
  325.         return target;
  326.     }, _react = __webpack_require__(1), _react2 = function(obj) {
  327.         return obj && obj.__esModule ? obj : {
  328.             "default": obj
  329.         };
  330.     }(_react), polyfillTransparentPng = function() {
  331.         return /\bMSIE 6/.test(navigator.userAgent);
  332.     }();
  333.     exports["default"] = _react2["default"].createClass({
  334.         displayName: "Img",
  335.         mixins: [ __webpack_require__(5) ],
  336.         propTypes: {
  337.             style: _react.PropTypes.object,
  338.             src: _react.PropTypes.string.isRequired,
  339.             useOriginalSrc: _react.PropTypes.bool
  340.         },
  341.         contextTypes: {
  342.             resourcePrefix: _react.PropTypes.string
  343.         },
  344.         render: function() {
  345.             var _props = this.props, style = _props.style, src = _props.src, useOriginalSrc = _props.useOriginalSrc, other = _objectWithoutProperties(_props, [ "style", "src", "useOriginalSrc" ]), patchedStyle = Object.assign({}, style), patchedSrc = (!0 || this.context.resourcePrefix,
  346.             useOriginalSrc ? src : "" + src), realSrc = void 0;
  347.             if (polyfillTransparentPng) {
  348.                 patchedStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + patchedSrc + "', sizingMethod='scale')";
  349.                 realSrc = !0 ? "img/blank.gif" : "icons/blank.gif";
  350.             } else realSrc = patchedSrc;
  351.             return _react2["default"].DOM.img(_extends({
  352.                 src: realSrc,
  353.                 style: patchedStyle
  354.             }, other));
  355.         }
  356.     });
  357.     module.exports = exports["default"];
  358. }, function(module, exports, __webpack_require__) {
  359.     "use strict";
  360.     exports.__esModule = !0;
  361.     exports.ensurePath = exports.isFileOverdue = exports.queryFile = exports.deleteFile = exports.createFile = undefined;
  362.     var _fso = __webpack_require__(18), isFileOverdue = (exports.createFile = function(path, fileName, fileContent) {
  363.         ensurePath(path);
  364.         var FSfile = _fso.fso.OpenTextFile(path + fileName, 2, !0, -1);
  365.         FSfile.WriteLine(fileContent);
  366.         FSfile.Close();
  367.     }, exports.deleteFile = function(fullPath) {
  368.         if (!0 === _fso.fso.FileExists(fullPath)) _fso.fso.DeleteFile(fullPath);
  369.     }, exports.queryFile = function(fullPath, overdueInterval) {
  370.         if (_fso.fso.FileExists(fullPath) && _fso.fso.GetFile(fullPath).Size > 0) if (overdueInterval && isFileOverdue(fullPath, overdueInterval)) throw new Error("File is overdue"); else {
  371.             var file = _fso.fso.OpenTextFile(fullPath, 1, !0, -1), data = file.ReadAll();
  372.             file.Close();
  373.             return data;
  374.         } else throw new Error("File is not found");
  375.     }, exports.isFileOverdue = function(fullPath, overdueInterval) {
  376.         if (!0 === _fso.fso.FileExists(fullPath)) {
  377.             if (new Date().getTime() - _fso.fso.GetFile(fullPath).DateLastModified > overdueInterval) return !0; else return !1;
  378.         } else return !0;
  379.     }), ensurePath = exports.ensurePath = function(path) {
  380.         for (var parts = path.split("\\"), stack = []; parts.length > 0; ) {
  381.             var current = parts.join("\\");
  382.             if (parts.pop()) if (_fso.fso.FolderExists(current)) break; else stack.push(current);
  383.         }
  384.         for (;stack.length > 0; ) {
  385.             var _current = stack.pop();
  386.             if (!_fso.fso.FolderExists(_current)) _fso.fso.CreateFolder(_current);
  387.         }
  388.         return path;
  389.     };
  390. }, function(module, exports, __webpack_require__) {
  391.     var toInteger = __webpack_require__(50), min = Math.min;
  392.     module.exports = function(it) {
  393.         return it > 0 ? min(toInteger(it), 9007199254740991) : 0;
  394.     };
  395. }, function(module, exports, __webpack_require__) {
  396.     "use strict";
  397.     exports.__esModule = !0;
  398.     exports.ProgramFiles = exports.AppFolder = exports.localAppData = exports.AppData = undefined;
  399.     var _shell = __webpack_require__(14), _config = __webpack_require__(87), _os = __webpack_require__(13), AppData = exports.AppData = _shell.WshShell.SpecialFolders("AppData");
  400.     exports.localAppData = _shell.objShell.NameSpace(28).Self.Path, exports.AppFolder = AppData + "\\" + _config.application.AppFolder,
  401.     exports.ProgramFiles = _os.is64 ? _shell.WshShell.ExpandEnvironmentStrings("%PROGRAMFILES(x86)%") : _shell.WshShell.ExpandEnvironmentStrings("%PROGRAMFILES%");
  402. }, function(module, exports, __webpack_require__) {
  403.     "use strict";
  404.     exports.__esModule = !0;
  405.     exports.getInternetExplorerVersion = exports.goToUrl = exports.winRun = exports.inc = exports.generateJobId = exports.wrapInCmd = exports.cleanFolder = exports.ParseCMDString = exports.ParseSFXName = undefined;
  406.     var _fso = __webpack_require__(18), _shell = __webpack_require__(14), _registry = __webpack_require__(30), _os = __webpack_require__(13), _logs = __webpack_require__(3), log = (0,
  407.     _logs.getLogger)("core:lib:utils"), runOpenUrlCommand = (exports.ParseSFXName = function(sfxName) {
  408.         sfxName = sfxName.replace(/(\s*(\(|\[)\d+(\)|\]))?.exe$/i, "");
  409.         return sfxName.split("_").slice(1);
  410.     }, exports.ParseCMDString = function() {
  411.         var cmd = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "", args = [], current = "", quoted = "", quoteType = null, addcurrent = function() {
  412.             if (current) args.push(current.trim());
  413.             current = "";
  414.         };
  415.         cmd = cmd.replace(/\\\n/g, "");
  416.         Array.from(cmd).forEach(function(c) {
  417.             if (quoteType) if (quoteType === c && "\\" !== quoted.slice(-1)) {
  418.                 args.push(quoted);
  419.                 quoted = "";
  420.                 quoteType = null;
  421.             } else quoted += c; else if (" " === c) addcurrent(); else if (current) current += c; else if ("'" === c || '"' === c) quoteType = c; else current = c;
  422.         });
  423.         addcurrent();
  424.         return args;
  425.     }, exports.cleanFolder = function(path) {
  426.         var sync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0, correctedPath = /\\$/.test(path) ? path : path + "\\";
  427.         _shell.WshShell.Run('cmd /C del /F /S /Q "' + correctedPath + '" && FOR /D %p IN ("' + correctedPath + '*") DO rmdir "%p" /s /q', 0, sync);
  428.     }, exports.wrapInCmd = function(command) {
  429.         return 'cmd /c "' + command + '"';
  430.     }, exports.generateJobId = function() {
  431.         return +Math.round(1e5 * Math.random());
  432.     }, exports.inc = function(filename) {
  433.         var head = document.getElementsByTagName("head").item(0), script = void 0;
  434.         if ("css" === _fso.fso.GetFileName(filename).split(".")[1].toLowerCase()) {
  435.             script = document.createElement("link");
  436.             script.setAttribute("rel", "stylesheet");
  437.             script.setAttribute("type", "text/css");
  438.             script.setAttribute("href", filename);
  439.         } else {
  440.             script = document.createElement("script");
  441.             script.src = filename;
  442.             script.type = "text/javascript";
  443.         }
  444.         if (void 0 !== script) head.appendChild(script);
  445.     }, exports.winRun = function(src, hideMode, wait, bit64) {
  446.         if (!src) return !1;
  447.         hideMode = !!hideMode;
  448.         wait = !!wait;
  449.         if (bit64 && _os.is64) {
  450.             hideMode = !0;
  451.             wait = !1;
  452.             src = '"%windir%\\sysnative\\cmd.exe" /C ' + src;
  453.         }
  454.         return _shell.WshShell.Run(src, hideMode ? 0 : 1, wait);
  455.     }, function(url, command) {
  456.         command = command ? '"' + command.replace(/"/gi, "") + '"' : "rundll32 url.dll,FileProtocolHandler";
  457.         _shell.WshShell.Run(command + ' "' + url + '"', 1, !1);
  458.     });
  459.     exports.goToUrl = function(url) {
  460.         log.info("opening " + url, {
  461.             url: url
  462.         }, "goToUrl:open");
  463.         try {
  464.             var regPath = "HKCU\\SOFTWARE\\Clients\\StartMenuInternet\\";
  465.             if (_os.OSVersion >= 10) regPath = "HKCU\\SOFTWARE\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice\\Progid";
  466.             var defBrowser = (0, _registry.RegRead)(regPath);
  467.             if (!defBrowser) defBrowser = (0, _registry.RegRead)(regPath.replace("HKCU", "HKLM"));
  468.             var runComm = (0, _registry.RegRead)("HKLM\\SOFTWARE\\Clients\\StartMenuInternet\\" + defBrowser + "\\shell\\open\\command\\");
  469.             runOpenUrlCommand(url, runComm);
  470.         } catch (err) {
  471.             log.error("failed to open " + url, {
  472.                 url: url,
  473.                 err: err
  474.             }, "goToUrl:error");
  475.             runOpenUrlCommand(url);
  476.         }
  477.         return !1;
  478.     }, exports.getInternetExplorerVersion = function() {
  479.         var rv = void 0, ua = void 0, re = void 0;
  480.         try {
  481.             rv = parseInt((0, _registry.RegRead)("HKLM\\SOFTWARE\\Microsoft\\Internet Explorer\\svcVersion").split(".")[0], 10);
  482.         } catch (e) {}
  483.         if ("number" != typeof rv) try {
  484.             rv = parseInt((0, _registry.RegRead)("HKLM\\SOFTWARE\\Microsoft\\Internet Explorer\\Version").split(".")[0], 10);
  485.         } catch (e) {}
  486.         if ("number" != typeof rv) if ("Microsoft Internet Explorer" === navigator.appName) {
  487.             ua = navigator.userAgent;
  488.             re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
  489.             if (null != re.exec(ua)) rv = parseFloat(RegExp.$1);
  490.         } else if ("Netscape" === navigator.appName) {
  491.             ua = navigator.userAgent;
  492.             re = new RegExp("Trident/.*rv:([0-9]{1,}[.0-9]{0,})");
  493.             if (null != re.exec(ua)) rv = parseFloat(RegExp.$1);
  494.         }
  495.         if ("number" != typeof rv) rv = -1;
  496.         return rv;
  497.     };
  498. }, function(module, exports, __webpack_require__) {
  499.     var IObject = __webpack_require__(67), defined = __webpack_require__(33);
  500.     module.exports = function(it) {
  501.         return IObject(defined(it));
  502.     };
  503. }, function(module, exports, __webpack_require__) {
  504.     var defined = __webpack_require__(33);
  505.     module.exports = function(it) {
  506.         return Object(defined(it));
  507.     };
  508. }, function(module, exports) {
  509.     var toString = {}.toString;
  510.     module.exports = function(it) {
  511.         return toString.call(it).slice(8, -1);
  512.     };
  513. }, function(module, exports) {
  514.     var hasOwnProperty = {}.hasOwnProperty;
  515.     module.exports = function(it, key) {
  516.         return hasOwnProperty.call(it, key);
  517.     };
  518. }, function(module, exports, __webpack_require__) {
  519.     var dP = __webpack_require__(17), createDesc = __webpack_require__(48);
  520.     module.exports = __webpack_require__(12) ? function(object, key, value) {
  521.         return dP.f(object, key, createDesc(1, value));
  522.     } : function(object, key, value) {
  523.         object[key] = value;
  524.         return object;
  525.     };
  526. }, function(module, exports, __webpack_require__) {
  527.     "use strict";
  528.     function _interopRequireDefault(obj) {
  529.         return obj && obj.__esModule ? obj : {
  530.             "default": obj
  531.         };
  532.     }
  533.     exports.__esModule = !0;
  534.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _createConnect = __webpack_require__(747), _createConnect2 = _interopRequireDefault(_createConnect);
  535.     exports["default"] = (0, _createConnect2["default"])(_react2["default"]);
  536.     module.exports = exports["default"];
  537. }, function(module, exports, __webpack_require__) {
  538.     "use strict";
  539.     exports.__esModule = !0;
  540.     exports.RegDelete = exports.RegWrite = exports.RegRead = exports.RegExists = exports.REG_CORS = undefined;
  541.     var _shell = __webpack_require__(14);
  542.     exports.REG_CORS = "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\1\\1406",
  543.     exports.RegExists = function(path) {
  544.         try {
  545.             _shell.WshShell.RegRead(path);
  546.             return !0;
  547.         } catch (err) {
  548.             return !1;
  549.         }
  550.     }, exports.RegRead = function(path) {
  551.         try {
  552.             return _shell.WshShell.RegRead(path);
  553.         } catch (err) {}
  554.     }, exports.RegWrite = function(path, value) {
  555.         var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "REG_SZ";
  556.         try {
  557.             return _shell.WshShell.RegWrite(path, value, type);
  558.         } catch (err) {}
  559.     }, exports.RegDelete = function(path) {
  560.         try {
  561.             return _shell.WshShell.RegDelete(path);
  562.         } catch (err) {}
  563.     };
  564. }, function(module, exports) {
  565.     module.exports = function(it) {
  566.         if ("function" != typeof it) throw TypeError(it + " is not a function!");
  567.         return it;
  568.     };
  569. }, function(module, exports, __webpack_require__) {
  570.     var aFunction = __webpack_require__(31);
  571.     module.exports = function(fn, that, length) {
  572.         aFunction(fn);
  573.         if (that === undefined) return fn;
  574.         switch (length) {
  575.           case 1:
  576.             return function(a) {
  577.                 return fn.call(that, a);
  578.             };
  579.  
  580.           case 2:
  581.             return function(a, b) {
  582.                 return fn.call(that, a, b);
  583.             };
  584.  
  585.           case 3:
  586.             return function(a, b, c) {
  587.                 return fn.call(that, a, b, c);
  588.             };
  589.         }
  590.         return function() {
  591.             return fn.apply(that, arguments);
  592.         };
  593.     };
  594. }, function(module, exports) {
  595.     module.exports = function(it) {
  596.         if (it == undefined) throw TypeError("Can't call method on  " + it);
  597.         return it;
  598.     };
  599. }, function(module, exports, __webpack_require__) {
  600.     var global = __webpack_require__(2), hide = __webpack_require__(28), has = __webpack_require__(27), SRC = __webpack_require__(51)("src"), $toString = Function.toString, TPL = ("" + $toString).split("toString");
  601.     __webpack_require__(44).inspectSource = function(it) {
  602.         return $toString.call(it);
  603.     };
  604.     (module.exports = function(O, key, val, safe) {
  605.         var isFunction = "function" == typeof val;
  606.         if (isFunction) has(val, "name") || hide(val, "name", key);
  607.         if (O[key] !== val) {
  608.             if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? "" + O[key] : TPL.join(String(key)));
  609.             if (O === global) O[key] = val; else if (!safe) {
  610.                 delete O[key];
  611.                 hide(O, key, val);
  612.             } else if (O[key]) O[key] = val; else hide(O, key, val);
  613.         }
  614.     })(Function.prototype, "toString", function() {
  615.         return "function" == typeof this && this[SRC] || $toString.call(this);
  616.     });
  617. }, function(module, exports, __webpack_require__) {
  618.     "use strict";
  619.     var canUseDOM = !("undefined" == typeof window || !window.document || !window.document.createElement), ExecutionEnvironment = {
  620.         canUseDOM: canUseDOM,
  621.         canUseWorkers: "undefined" != typeof Worker,
  622.         canUseEventListeners: canUseDOM && !(!window.addEventListener && !window.attachEvent),
  623.         canUseViewport: canUseDOM && !!window.screen,
  624.         isInWorker: !canUseDOM
  625.     };
  626.     module.exports = ExecutionEnvironment;
  627. }, function(module, exports, __webpack_require__) {
  628.     "use strict";
  629.     function _interopRequireDefault(obj) {
  630.         return obj && obj.__esModule ? obj : {
  631.             "default": obj
  632.         };
  633.     }
  634.     function countCheckedDrivers(drivers, programs) {
  635.         var checkedUtilities = filterDriverUtilities(programs).filter(isProgramChecked);
  636.         return drivers.filter(isItemChecked).length + checkedUtilities.length;
  637.     }
  638.     function isItemChecked(item) {
  639.         return item.isChecked;
  640.     }
  641.     function isDeviceDriverNotInstalled(device) {
  642.         return "install" === device.recommendedDriver.state;
  643.     }
  644.     function isDeviceDriverNotUpdated(device) {
  645.         return "update" === device.recommendedDriver.state;
  646.     }
  647.     function isDeviceDriverInstalled(device) {
  648.         return "installed" === device.recommendedDriver.state || "rollback" === device.recommendedDriver.state;
  649.     }
  650.     function isProgramNotInstalled(program) {
  651.         return !program.isInstalled;
  652.     }
  653.     function isProgramChecked(program) {
  654.         return program.isChecked || program.isNotifierChecked;
  655.     }
  656.     function isInstalledProgramChecked(program) {
  657.         return program.isChecked;
  658.     }
  659.     function isVisibleStartScreenDeferredProgram(program) {
  660.         return program.isVisible && program.confirmPopup && "StartScreen" === program.confirmPopup.isDeferred;
  661.     }
  662.     function isNotifier(program) {
  663.         return /DriverPack (Notifier|Cloud)/.test(program.name) || /DriverPack (Notifier|Cloud)/.test(program.Name);
  664.     }
  665.     function isNotifierUtilityChecked(program) {
  666.         return !isNotifier(program) || program.isNotifierChecked;
  667.     }
  668.     function isYandexBrowser(program) {
  669.         return /Yandex\.Browser/.test(program.name);
  670.     }
  671.     function isDriverUtility(program) {
  672.         return program.category === DRIVERS_UTILITY_CATEGORY || program.Category === DRIVERS_UTILITY_CATEGORY || isNotifier(program);
  673.     }
  674.     function isNotDriverUtility(program) {
  675.         return program.category !== DRIVERS_UTILITY_CATEGORY && program.Category !== DRIVERS_UTILITY_CATEGORY || isNotifier(program);
  676.     }
  677.     function isVisible(program) {
  678.         return program.isVisible;
  679.     }
  680.     function isHarmful(program) {
  681.         return "large" === program.removalRate;
  682.     }
  683.     function isSuspicious(program) {
  684.         return "small" !== program.removalRate;
  685.     }
  686.     function getNotifier(programs) {
  687.         return programs.find(isNotifier);
  688.     }
  689.     function filterCheckedDrivers(drivers) {
  690.         return drivers.filter(isItemChecked);
  691.     }
  692.     function filterNotInstalledDriverDevices(devices) {
  693.         return devices.filter(isDeviceDriverNotInstalled);
  694.     }
  695.     function filterNotUpdatedDriverDevices(devices) {
  696.         return devices.filter(isDeviceDriverNotUpdated);
  697.     }
  698.     function filterInstalledDriverDevices(devices) {
  699.         return devices.filter(isDeviceDriverInstalled);
  700.     }
  701.     function filterCheckedPrograms(programs) {
  702.         var utils = filterDriverUtilities(programs), soft = filterProgramsPage(programs);
  703.         return (0, _uniq2["default"])([].concat(soft, utils), "id").filter(isProgramChecked);
  704.     }
  705.     function filterProgramsPage(programs) {
  706.         return programs.filter(isVisible).filter(isNotDriverUtility);
  707.     }
  708.     function filterCheckedProgramsPage(programs) {
  709.         if (!_settings2["default"].get("general.enableSoftAndDriverUtilities").value) return []; else return filterProgramsPage(programs).filter(isProgramChecked);
  710.     }
  711.     function filterDriverUtilities(programs) {
  712.         if (!_settings2["default"].get("general.enableSoftAndDriverUtilities").value) return []; else return programs.filter(isVisible).filter(isDriverUtility);
  713.     }
  714.     function filterCheckedDriverUtilities(programs) {
  715.         if (!_settings2["default"].get("general.enableSoftAndDriverUtilities").value) return []; else return filterDriverUtilities(programs).filter(isItemChecked).filter(isNotifierUtilityChecked);
  716.     }
  717.     function filterCheckedSoft(programs) {
  718.         return programs.filter(isItemChecked);
  719.     }
  720.     function filterHarmfulPrograms(programs) {
  721.         return programs.filter(isHarmful);
  722.     }
  723.     function filterSuspiciousPrograms(programs) {
  724.         return programs.filter(isSuspicious);
  725.     }
  726.     function filterProtectPrograms(programs) {
  727.         return programs.filter(function(program) {
  728.             return program.protect;
  729.         });
  730.     }
  731.     function filterCheckedInstalledPrograms(programs) {
  732.         return programs.filter(isInstalledProgramChecked);
  733.     }
  734.     function filterVisibleStartScreenDeferredPrograms(programs) {
  735.         return programs.filter(isProgramNotInstalled).filter(isVisibleStartScreenDeferredProgram);
  736.     }
  737.     exports.__esModule = !0;
  738.     exports.DRIVERS_UTILITY_CATEGORY = undefined;
  739.     exports.countCheckedDrivers = countCheckedDrivers;
  740.     exports.isItemChecked = isItemChecked;
  741.     exports.isDeviceDriverNotInstalled = isDeviceDriverNotInstalled;
  742.     exports.isDeviceDriverNotUpdated = isDeviceDriverNotUpdated;
  743.     exports.isDeviceDriverInstalled = isDeviceDriverInstalled;
  744.     exports.isProgramNotInstalled = isProgramNotInstalled;
  745.     exports.isProgramChecked = isProgramChecked;
  746.     exports.isInstalledProgramChecked = isInstalledProgramChecked;
  747.     exports.isVisibleStartScreenDeferredProgram = isVisibleStartScreenDeferredProgram;
  748.     exports.isNotifier = isNotifier;
  749.     exports.isNotifierUtilityChecked = isNotifierUtilityChecked;
  750.     exports.isYandexBrowser = isYandexBrowser;
  751.     exports.isDriverUtility = isDriverUtility;
  752.     exports.isNotDriverUtility = isNotDriverUtility;
  753.     exports.isVisible = isVisible;
  754.     exports.isHarmful = isHarmful;
  755.     exports.isSuspicious = isSuspicious;
  756.     exports.getNotifier = getNotifier;
  757.     exports.filterCheckedDrivers = filterCheckedDrivers;
  758.     exports.filterNotInstalledDriverDevices = filterNotInstalledDriverDevices;
  759.     exports.filterNotUpdatedDriverDevices = filterNotUpdatedDriverDevices;
  760.     exports.filterInstalledDriverDevices = filterInstalledDriverDevices;
  761.     exports.filterCheckedPrograms = filterCheckedPrograms;
  762.     exports.filterProgramsPage = filterProgramsPage;
  763.     exports.filterCheckedProgramsPage = filterCheckedProgramsPage;
  764.     exports.filterDriverUtilities = filterDriverUtilities;
  765.     exports.filterCheckedDriverUtilities = filterCheckedDriverUtilities;
  766.     exports.filterCheckedSoft = filterCheckedSoft;
  767.     exports.filterHarmfulPrograms = filterHarmfulPrograms;
  768.     exports.filterSuspiciousPrograms = filterSuspiciousPrograms;
  769.     exports.filterProtectPrograms = filterProtectPrograms;
  770.     exports.filterCheckedInstalledPrograms = filterCheckedInstalledPrograms;
  771.     exports.filterVisibleStartScreenDeferredPrograms = filterVisibleStartScreenDeferredPrograms;
  772.     var _uniq = __webpack_require__(159), _uniq2 = _interopRequireDefault(_uniq), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), DRIVERS_UTILITY_CATEGORY = exports.DRIVERS_UTILITY_CATEGORY = "Drivers";
  773. }, function(module, exports, __webpack_require__) {
  774.     var pIE = __webpack_require__(72), createDesc = __webpack_require__(48), toIObject = __webpack_require__(24), toPrimitive = __webpack_require__(42), has = __webpack_require__(27), IE8_DOM_DEFINE = __webpack_require__(130), gOPD = Object.getOwnPropertyDescriptor;
  775.     exports.f = __webpack_require__(12) ? gOPD : function(O, P) {
  776.         O = toIObject(O);
  777.         P = toPrimitive(P, !0);
  778.         if (IE8_DOM_DEFINE) try {
  779.             return gOPD(O, P);
  780.         } catch (e) {}
  781.         if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
  782.     };
  783. }, function(module, exports, __webpack_require__) {
  784.     var getNative = __webpack_require__(141), isLength = __webpack_require__(114), isObjectLike = __webpack_require__(54), objectProto = Object.prototype, objToString = objectProto.toString, nativeIsArray = getNative(Array, "isArray"), isArray = nativeIsArray || function(value) {
  785.         return isObjectLike(value) && isLength(value.length) && "[object Array]" == objToString.call(value);
  786.     };
  787.     module.exports = isArray;
  788. }, function(module, exports) {
  789.     function isObject(value) {
  790.         var type = typeof value;
  791.         return !!value && ("object" == type || "function" == type);
  792.     }
  793.     module.exports = isObject;
  794. }, function(module, exports, __webpack_require__) {
  795.     var $export = __webpack_require__(0), core = __webpack_require__(44), fails = __webpack_require__(8);
  796.     module.exports = function(KEY, exec) {
  797.         var fn = (core.Object || {})[KEY] || Object[KEY], exp = {};
  798.         exp[KEY] = exec(fn);
  799.         $export($export.S + $export.F * fails(function() {
  800.             fn(1);
  801.         }), "Object", exp);
  802.     };
  803. }, function(module, exports, __webpack_require__) {
  804.     var $export = __webpack_require__(0), fails = __webpack_require__(8), defined = __webpack_require__(33), quot = /"/g, createHTML = function(string, tag, attribute, value) {
  805.         var S = String(defined(string)), p1 = "<" + tag;
  806.         if ("" !== attribute) p1 += " " + attribute + '="' + String(value).replace(quot, "&quot;") + '"';
  807.         return p1 + ">" + S + "</" + tag + ">";
  808.     };
  809.     module.exports = function(NAME, exec) {
  810.         var O = {};
  811.         O[NAME] = exec(createHTML);
  812.         $export($export.P + $export.F * fails(function() {
  813.             var test = ""[NAME]('"');
  814.             return test !== test.toLowerCase() || test.split('"').length > 3;
  815.         }), "String", O);
  816.     };
  817. }, function(module, exports, __webpack_require__) {
  818.     var isObject = __webpack_require__(10);
  819.     module.exports = function(it, S) {
  820.         if (!isObject(it)) return it;
  821.         var fn, val;
  822.         if (S && "function" == typeof (fn = it.toString) && !isObject(val = fn.call(it))) return val;
  823.         if ("function" == typeof (fn = it.valueOf) && !isObject(val = fn.call(it))) return val;
  824.         if (!S && "function" == typeof (fn = it.toString) && !isObject(val = fn.call(it))) return val;
  825.         throw TypeError("Can't convert object to primitive value");
  826.     };
  827. }, function(module, exports, __webpack_require__) {
  828.     "use strict";
  829.     (function(l) {
  830.         function _asyncToGenerator(fn) {
  831.             return function() {
  832.                 var gen = fn.apply(this, arguments);
  833.                 return new Promise(function(resolve, reject) {
  834.                     function step(key, arg) {
  835.                         try {
  836.                             var info = gen[key](arg), value = info.value;
  837.                         } catch (error) {
  838.                             reject(error);
  839.                             return;
  840.                         }
  841.                         if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  842.                             step("next", value);
  843.                         }, function(err) {
  844.                             step("throw", err);
  845.                         });
  846.                     }
  847.                     return step("next");
  848.                 });
  849.             };
  850.         }
  851.         function _classCallCheck(instance, Constructor) {
  852.             if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  853.         }
  854.         exports.__esModule = !0;
  855.         var _extends = Object.assign || function(target) {
  856.             for (var i = 1; i < arguments.length; i++) {
  857.                 var source = arguments[i];
  858.                 for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  859.             }
  860.             return target;
  861.         }, _http = __webpack_require__(102), _system = __webpack_require__(9), _logs = __webpack_require__(3), _specialFolders = __webpack_require__(22), _localFiles = __webpack_require__(20), _user = __webpack_require__(231), _user2 = function(obj) {
  862.             return obj && obj.__esModule ? obj : {
  863.                 "default": obj
  864.             };
  865.         }(_user), Settings = function() {
  866.             function Settings() {
  867.                 _classCallCheck(this, Settings);
  868.             }
  869.             Settings.prototype.prepareSettings = function(settingsData, savedSettings) {
  870.                 var result = {};
  871.                 Object.entries(settingsData).forEach(function(_ref) {
  872.                     var sectionId = _ref[0], section = _ref[1];
  873.                     result[sectionId] = {};
  874.                     Object.entries(section.settings).forEach(function(_ref2) {
  875.                         var settingId = _ref2[0], setting = _ref2[1], savedSetting = savedSettings[sectionId] && savedSettings[sectionId][settingId], currentSetting = void 0;
  876.                         if (savedSetting && savedSetting.patched === setting.patched) currentSetting = _extends({}, savedSetting); else currentSetting = {
  877.                             defaultValue: setting.defaultValue,
  878.                             value: setting.defaultValue,
  879.                             disabled: setting.disabled,
  880.                             patched: setting.patched
  881.                         };
  882.                         result[sectionId][settingId] = currentSetting;
  883.                     });
  884.                 });
  885.                 return result;
  886.             };
  887.             Settings.prototype.getFileSettings = function() {
  888.                 this.filePath = !0 ? (0, _localFiles.ensurePath)(_specialFolders.AppFolder) + "\\settings.json" : "settings.json";
  889.                 var result = void 0;
  890.                 if (_system.fso.FileExists(this.filePath)) {
  891.                     var file = _system.fso.OpenTextFile(this.filePath, 1, !1), json = file.ReadAll();
  892.                     file.Close();
  893.                     result = JSON.parse(json);
  894.                 }
  895.                 return result;
  896.             };
  897.             Settings.prototype.fetch = function() {
  898.                 function fetch() {
  899.                     return _ref3.apply(this, arguments);
  900.                 }
  901.                 var _ref3 = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
  902.                     var id, endpoint, headers, _ref4, body;
  903.                     return regeneratorRuntime.wrap(function(_context) {
  904.                         for (;;) switch (_context.prev = _context.next) {
  905.                           case 0:
  906.                             id = _user2["default"].getId();
  907.                             if (!id) {
  908.                                 _context.next = 16;
  909.                                 break;
  910.                             }
  911.                             endpoint = window.authEndpoint + "/api/user/" + id + "/config/beetle";
  912.                             headers = _user2["default"].getHeaders();
  913.                             _context.prev = 4;
  914.                             _context.next = 7;
  915.                             return (0, _http.httpget)(endpoint, {}, {
  916.                                 headers: headers
  917.                             });
  918.  
  919.                           case 7:
  920.                             _ref4 = _context.sent;
  921.                             body = _ref4.body;
  922.                             this.isFetched = !0;
  923.                             return _context.abrupt("return", body);
  924.  
  925.                           case 13:
  926.                             _context.prev = 13;
  927.                             _context.t0 = _context["catch"](4);
  928.                             console.warn(_context.t0);
  929.  
  930.                           case 16:
  931.                           case "end":
  932.                             return _context.stop();
  933.                         }
  934.                     }, _callee, this, [ [ 4, 13 ] ]);
  935.                 }));
  936.                 return fetch;
  937.             }();
  938.             Settings.prototype.load = function() {
  939.                 function load() {
  940.                     return _ref5.apply(this, arguments);
  941.                 }
  942.                 var _ref5 = _asyncToGenerator(regeneratorRuntime.mark(function _callee2() {
  943.                     var settingsData, fileSettings, fetchedSettings, savedSetting;
  944.                     return regeneratorRuntime.wrap(function(_context2) {
  945.                         for (;;) switch (_context2.prev = _context2.next) {
  946.                           case 0:
  947.                             settingsData = __webpack_require__(322)(l);
  948.                             fileSettings = this.getFileSettings();
  949.                             _context2.next = 4;
  950.                             return this.fetch();
  951.  
  952.                           case 4:
  953.                             fetchedSettings = _context2.sent;
  954.                             savedSetting = fetchedSettings || fileSettings || {};
  955.                             this.data = this.prepareSettings(settingsData, savedSetting);
  956.  
  957.                           case 7:
  958.                           case "end":
  959.                             return _context2.stop();
  960.                         }
  961.                     }, _callee2, this);
  962.                 }));
  963.                 return load;
  964.             }();
  965.             Settings.prototype.saveToFile = function() {
  966.                 try {
  967.                     var file = _system.fso.OpenTextFile(this.filePath, 2, !0);
  968.                     file.write(JSON.stringify(this.data));
  969.                     file.Close();
  970.                 } catch (err) {
  971.                     (0, _logs.log)("[settings] fail settings save to file", err);
  972.                 }
  973.             };
  974.             Settings.prototype.saveToAccount = function() {
  975.                 function saveToAccount() {
  976.                     return _ref6.apply(this, arguments);
  977.                 }
  978.                 var _ref6 = _asyncToGenerator(regeneratorRuntime.mark(function _callee3() {
  979.                     var id, endpoint, headers;
  980.                     return regeneratorRuntime.wrap(function(_context3) {
  981.                         for (;;) switch (_context3.prev = _context3.next) {
  982.                           case 0:
  983.                             id = _user2["default"].getId();
  984.                             if (!id) {
  985.                                 _context3.next = 12;
  986.                                 break;
  987.                             }
  988.                             endpoint = window.authEndpoint + "/api/user/" + id + "/config/beetle";
  989.                             headers = _user2["default"].getHeaders();
  990.                             _context3.prev = 4;
  991.                             _context3.next = 7;
  992.                             return (0, _http.httpput)(endpoint, this.data, {
  993.                                 headers: headers
  994.                             });
  995.  
  996.                           case 7:
  997.                             _context3.next = 12;
  998.                             break;
  999.  
  1000.                           case 9:
  1001.                             _context3.prev = 9;
  1002.                             _context3.t0 = _context3["catch"](4);
  1003.                             (0, _logs.log)("[settings] fail settings save to account", _context3.t0);
  1004.  
  1005.                           case 12:
  1006.                           case "end":
  1007.                             return _context3.stop();
  1008.                         }
  1009.                     }, _callee3, this, [ [ 4, 9 ] ]);
  1010.                 }));
  1011.                 return saveToAccount;
  1012.             }();
  1013.             Settings.prototype.save = function() {
  1014.                 function save() {
  1015.                     return _ref7.apply(this, arguments);
  1016.                 }
  1017.                 var _ref7 = _asyncToGenerator(regeneratorRuntime.mark(function _callee4() {
  1018.                     return regeneratorRuntime.wrap(function(_context4) {
  1019.                         for (;;) switch (_context4.prev = _context4.next) {
  1020.                           case 0:
  1021.                             this.saveToFile();
  1022.                             _context4.next = 3;
  1023.                             return this.saveToAccount();
  1024.  
  1025.                           case 3:
  1026.                             (0, _logs.log)("[settings] save: ", this.data);
  1027.                             return _context4.abrupt("return", this);
  1028.  
  1029.                           case 5:
  1030.                           case "end":
  1031.                             return _context4.stop();
  1032.                         }
  1033.                     }, _callee4, this);
  1034.                 }));
  1035.                 return save;
  1036.             }();
  1037.             Settings.prototype.get = function(keyPath, defaultValue) {
  1038.                 var fields = keyPath.split("."), current = this.data, last = fields.pop();
  1039.                 fields.forEach(function(field) {
  1040.                     if (!(field in current)) return defaultValue;
  1041.                     current = current[field];
  1042.                 });
  1043.                 return current[last];
  1044.             };
  1045.             Settings.prototype.set = function(keyPath, data) {
  1046.                 var fields = keyPath.split("."), current = this.data, last = fields.pop();
  1047.                 fields.forEach(function(field) {
  1048.                     if (!(field in current)) current[field] = {};
  1049.                     current = current[field];
  1050.                 });
  1051.                 current[last] = _extends({}, current[last], data);
  1052.                 (0, _logs.log)("[settings] set setting " + keyPath + " to " + data.value);
  1053.                 return this;
  1054.             };
  1055.             Settings.prototype.disable = function(keyPath, data) {
  1056.                 var fields = keyPath.split("."), current = this.data, last = fields.pop();
  1057.                 fields.forEach(function(field) {
  1058.                     current = current[field];
  1059.                 });
  1060.                 current[last] = _extends({}, current[last], data, {
  1061.                     disabled: !0
  1062.                 });
  1063.                 (0, _logs.log)("[settings] disable setting " + keyPath);
  1064.                 return this;
  1065.             };
  1066.             Settings.prototype.enable = function(keyPath) {
  1067.                 var fields = keyPath.split("."), current = this.data, last = fields.pop();
  1068.                 fields.forEach(function(field) {
  1069.                     current = current[field];
  1070.                 });
  1071.                 current[last] = _extends({}, current[last], {
  1072.                     value: current[last].defaultValue,
  1073.                     disabled: !1
  1074.                 });
  1075.                 (0, _logs.log)("[settings] enable setting " + keyPath);
  1076.                 return this;
  1077.             };
  1078.             Settings.prototype.getAll = function() {
  1079.                 return _extends({}, this.data);
  1080.             };
  1081.             Settings.prototype.setAll = function(data) {
  1082.                 this.data = data;
  1083.                 return this;
  1084.             };
  1085.             return Settings;
  1086.         }();
  1087.         exports["default"] = window.settings = new Settings();
  1088.         module.exports = exports["default"];
  1089.     }).call(exports, __webpack_require__(6));
  1090. }, function(module, exports) {
  1091.     var core = module.exports = {
  1092.         version: "2.4.0"
  1093.     };
  1094.     if ("number" == typeof __e) __e = core;
  1095. }, function(module, exports, __webpack_require__) {
  1096.     "use strict";
  1097.     var keyMirror = __webpack_require__(98), PropagationPhases = keyMirror({
  1098.         bubbled: null,
  1099.         captured: null
  1100.     }), topLevelTypes = keyMirror({
  1101.         topBlur: null,
  1102.         topChange: null,
  1103.         topClick: null,
  1104.         topCompositionEnd: null,
  1105.         topCompositionStart: null,
  1106.         topCompositionUpdate: null,
  1107.         topContextMenu: null,
  1108.         topCopy: null,
  1109.         topCut: null,
  1110.         topDoubleClick: null,
  1111.         topDrag: null,
  1112.         topDragEnd: null,
  1113.         topDragEnter: null,
  1114.         topDragExit: null,
  1115.         topDragLeave: null,
  1116.         topDragOver: null,
  1117.         topDragStart: null,
  1118.         topDrop: null,
  1119.         topError: null,
  1120.         topFocus: null,
  1121.         topInput: null,
  1122.         topKeyDown: null,
  1123.         topKeyPress: null,
  1124.         topKeyUp: null,
  1125.         topLoad: null,
  1126.         topMouseDown: null,
  1127.         topMouseMove: null,
  1128.         topMouseOut: null,
  1129.         topMouseOver: null,
  1130.         topMouseUp: null,
  1131.         topPaste: null,
  1132.         topReset: null,
  1133.         topScroll: null,
  1134.         topSelectionChange: null,
  1135.         topSubmit: null,
  1136.         topTextInput: null,
  1137.         topTouchCancel: null,
  1138.         topTouchEnd: null,
  1139.         topTouchMove: null,
  1140.         topTouchStart: null,
  1141.         topWheel: null
  1142.     }), EventConstants = {
  1143.         topLevelTypes: topLevelTypes,
  1144.         PropagationPhases: PropagationPhases
  1145.     };
  1146.     module.exports = EventConstants;
  1147. }, function(module, exports, __webpack_require__) {
  1148.     "use strict";
  1149.     var mergeInto = __webpack_require__(223), merge = function(one, two) {
  1150.         var result = {};
  1151.         mergeInto(result, one);
  1152.         mergeInto(result, two);
  1153.         return result;
  1154.     };
  1155.     module.exports = merge;
  1156. }, function(module, exports, __webpack_require__) {
  1157.     var $keys = __webpack_require__(133), enumBugKeys = __webpack_require__(104);
  1158.     module.exports = Object.keys || function(O) {
  1159.         return $keys(O, enumBugKeys);
  1160.     };
  1161. }, function(module, exports) {
  1162.     module.exports = function(bitmap, value) {
  1163.         return {
  1164.             enumerable: !(1 & bitmap),
  1165.             configurable: !(2 & bitmap),
  1166.             writable: !(4 & bitmap),
  1167.             value: value
  1168.         };
  1169.     };
  1170. }, function(module, exports, __webpack_require__) {
  1171.     var fails = __webpack_require__(8);
  1172.     module.exports = function(method, arg) {
  1173.         return !!method && fails(function() {
  1174.             arg ? method.call(null, function() {}, 1) : method.call(null);
  1175.         });
  1176.     };
  1177. }, function(module, exports) {
  1178.     var ceil = Math.ceil, floor = Math.floor;
  1179.     module.exports = function(it) {
  1180.         return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
  1181.     };
  1182. }, function(module, exports) {
  1183.     var id = 0, px = Math.random();
  1184.     module.exports = function(key) {
  1185.         return "Symbol(".concat(key === undefined ? "" : key, ")_", (++id + px).toString(36));
  1186.     };
  1187. }, function(module, exports, __webpack_require__) {
  1188.     "use strict";
  1189.     exports.__esModule = !0;
  1190.     exports["default"] = function(collection, iterator) {
  1191.         var colItems = new Enumerator(collection);
  1192.         for (colItems.moveFirst(); !colItems.atEnd(); colItems.moveNext()) iterator(colItems.item());
  1193.     };
  1194.     module.exports = exports["default"];
  1195. }, function(module, exports, __webpack_require__) {
  1196.     var ctx = __webpack_require__(32), IObject = __webpack_require__(67), toObject = __webpack_require__(25), toLength = __webpack_require__(21), asc = __webpack_require__(190);
  1197.     module.exports = function(TYPE, $create) {
  1198.         var IS_MAP = 1 == TYPE, IS_FILTER = 2 == TYPE, IS_SOME = 3 == TYPE, IS_EVERY = 4 == TYPE, IS_FIND_INDEX = 6 == TYPE, NO_HOLES = 5 == TYPE || IS_FIND_INDEX, create = $create || asc;
  1199.         return function($this, callbackfn, that) {
  1200.             for (var val, res, O = toObject($this), self = IObject(O), f = ctx(callbackfn, that, 3), length = toLength(self.length), index = 0, result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; length > index; index++) if (NO_HOLES || index in self) {
  1201.                 val = self[index];
  1202.                 res = f(val, index, O);
  1203.                 if (TYPE) if (IS_MAP) result[index] = res; else if (res) switch (TYPE) {
  1204.                   case 3:
  1205.                     return !0;
  1206.  
  1207.                   case 5:
  1208.                     return val;
  1209.  
  1210.                   case 6:
  1211.                     return index;
  1212.  
  1213.                   case 2:
  1214.                     result.push(val);
  1215.                 } else if (IS_EVERY) return !1;
  1216.             }
  1217.             return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  1218.         };
  1219.     };
  1220. }, function(module, exports) {
  1221.     function isObjectLike(value) {
  1222.         return !!value && "object" == typeof value;
  1223.     }
  1224.     module.exports = isObjectLike;
  1225. }, function(module, exports, __webpack_require__) {
  1226.     "use strict";
  1227.     var ReactEmptyComponent = __webpack_require__(214), ReactMount = __webpack_require__(59), invariant = __webpack_require__(4), ReactBrowserComponentMixin = {
  1228.         getDOMNode: function() {
  1229.             !0 ? invariant(this.isMounted(), "getDOMNode(): A component must be mounted to have a DOM node.") : invariant(this.isMounted());
  1230.             if (ReactEmptyComponent.isNullComponentID(this._rootNodeID)) return null; else return ReactMount.getNode(this._rootNodeID);
  1231.         }
  1232.     };
  1233.     module.exports = ReactBrowserComponentMixin;
  1234. }, function(module, exports, __webpack_require__) {
  1235.     "use strict";
  1236.     function getDeclarationErrorAddendum(component) {
  1237.         var owner = component._owner || null;
  1238.         if (owner && owner.constructor && owner.constructor.displayName) return " Check the render method of `" + owner.constructor.displayName + "`."; else return "";
  1239.     }
  1240.     function validateTypeDef(Constructor, typeDef, location) {
  1241.         for (var propName in typeDef) if (typeDef.hasOwnProperty(propName)) !0 ? invariant("function" == typeof typeDef[propName], "%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.", Constructor.displayName || "ReactCompositeComponent", ReactPropTypeLocationNames[location], propName) : invariant("function" == typeof typeDef[propName]);
  1242.     }
  1243.     function validateMethodOverride(proto, name) {
  1244.         var specPolicy = ReactCompositeComponentInterface.hasOwnProperty(name) ? ReactCompositeComponentInterface[name] : null;
  1245.         if (ReactCompositeComponentMixin.hasOwnProperty(name)) !0 ? invariant(specPolicy === SpecPolicy.OVERRIDE_BASE, "ReactCompositeComponentInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.", name) : invariant(specPolicy === SpecPolicy.OVERRIDE_BASE);
  1246.         if (proto.hasOwnProperty(name)) !0 ? invariant(specPolicy === SpecPolicy.DEFINE_MANY || specPolicy === SpecPolicy.DEFINE_MANY_MERGED, "ReactCompositeComponentInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.", name) : invariant(specPolicy === SpecPolicy.DEFINE_MANY || specPolicy === SpecPolicy.DEFINE_MANY_MERGED);
  1247.     }
  1248.     function validateLifeCycleOnReplaceState(instance) {
  1249.         var compositeLifeCycleState = instance._compositeLifeCycleState;
  1250.         !0 ? invariant(instance.isMounted() || compositeLifeCycleState === CompositeLifeCycle.MOUNTING, "replaceState(...): Can only update a mounted or mounting component.") : invariant(instance.isMounted() || compositeLifeCycleState === CompositeLifeCycle.MOUNTING);
  1251.         !0 ? invariant(compositeLifeCycleState !== CompositeLifeCycle.RECEIVING_STATE, "replaceState(...): Cannot update during an existing state transition (such as within `render`). This could potentially cause an infinite loop so it is forbidden.") : invariant(compositeLifeCycleState !== CompositeLifeCycle.RECEIVING_STATE);
  1252.         !0 ? invariant(compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING, "replaceState(...): Cannot update while unmounting component. This usually means you called setState() on an unmounted component.") : invariant(compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING);
  1253.     }
  1254.     function mixSpecIntoComponent(Constructor, spec) {
  1255.         !0 ? invariant(!ReactDescriptor.isValidFactory(spec), "ReactCompositeComponent: You're attempting to use a component class as a mixin. Instead, just use a regular object.") : invariant(!ReactDescriptor.isValidFactory(spec));
  1256.         !0 ? invariant(!ReactDescriptor.isValidDescriptor(spec), "ReactCompositeComponent: You're attempting to use a component as a mixin. Instead, just use a regular object.") : invariant(!ReactDescriptor.isValidDescriptor(spec));
  1257.         var proto = Constructor.prototype;
  1258.         for (var name in spec) {
  1259.             var property = spec[name];
  1260.             if (spec.hasOwnProperty(name)) {
  1261.                 validateMethodOverride(proto, name);
  1262.                 if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) RESERVED_SPEC_KEYS[name](Constructor, property); else {
  1263.                     var isCompositeComponentMethod = ReactCompositeComponentInterface.hasOwnProperty(name), isAlreadyDefined = proto.hasOwnProperty(name), markedDontBind = property && property.__reactDontBind;
  1264.                     if ("function" == typeof property && !isCompositeComponentMethod && !isAlreadyDefined && !markedDontBind) {
  1265.                         if (!proto.__reactAutoBindMap) proto.__reactAutoBindMap = {};
  1266.                         proto.__reactAutoBindMap[name] = property;
  1267.                         proto[name] = property;
  1268.                     } else if (isAlreadyDefined) {
  1269.                         var specPolicy = ReactCompositeComponentInterface[name];
  1270.                         !0 ? invariant(isCompositeComponentMethod && (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY), "ReactCompositeComponent: Unexpected spec policy %s for key %s when mixing in component specs.", specPolicy, name) : invariant(isCompositeComponentMethod && (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY));
  1271.                         if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) proto[name] = createMergedResultFunction(proto[name], property); else if (specPolicy === SpecPolicy.DEFINE_MANY) proto[name] = createChainedFunction(proto[name], property);
  1272.                     } else {
  1273.                         proto[name] = property;
  1274.                         if (!0) if ("function" == typeof property && spec.displayName) proto[name].displayName = spec.displayName + "_" + name;
  1275.                     }
  1276.                 }
  1277.             }
  1278.         }
  1279.     }
  1280.     function mixStaticSpecIntoComponent(Constructor, statics) {
  1281.         if (statics) for (var name in statics) {
  1282.             var property = statics[name];
  1283.             if (statics.hasOwnProperty(name)) {
  1284.                 var isInherited = name in Constructor, result = property;
  1285.                 if (isInherited) {
  1286.                     var existingProperty = Constructor[name], existingType = typeof existingProperty, propertyType = typeof property;
  1287.                     !0 ? invariant("function" === existingType && "function" === propertyType, "ReactCompositeComponent: You are attempting to define `%s` on your component more than once, but that is only supported for functions, which are chained together. This conflict may be due to a mixin.", name) : invariant("function" === existingType && "function" === propertyType);
  1288.                     result = createChainedFunction(existingProperty, property);
  1289.                 }
  1290.                 Constructor[name] = result;
  1291.             }
  1292.         }
  1293.     }
  1294.     function mergeObjectsWithNoDuplicateKeys(one, two) {
  1295.         !0 ? invariant(one && two && "object" == typeof one && "object" == typeof two, "mergeObjectsWithNoDuplicateKeys(): Cannot merge non-objects") : invariant(one && two && "object" == typeof one && "object" == typeof two);
  1296.         mapObject(two, function(value, key) {
  1297.             !0 ? invariant(one[key] === undefined, "mergeObjectsWithNoDuplicateKeys(): Tried to merge two objects with the same key: %s", key) : invariant(one[key] === undefined);
  1298.             one[key] = value;
  1299.         });
  1300.         return one;
  1301.     }
  1302.     function createMergedResultFunction(one, two) {
  1303.         return function() {
  1304.             var a = one.apply(this, arguments), b = two.apply(this, arguments);
  1305.             if (null == a) return b; else if (null == b) return a;
  1306.             return mergeObjectsWithNoDuplicateKeys(a, b);
  1307.         };
  1308.     }
  1309.     function createChainedFunction(one, two) {
  1310.         return function() {
  1311.             one.apply(this, arguments);
  1312.             two.apply(this, arguments);
  1313.         };
  1314.     }
  1315.     var ReactComponent = __webpack_require__(119), ReactContext = __webpack_require__(213), ReactCurrentOwner = __webpack_require__(120), ReactDescriptor = __webpack_require__(58), ReactDescriptorValidator = __webpack_require__(289), ReactEmptyComponent = __webpack_require__(214), ReactErrorUtils = __webpack_require__(609), ReactOwner = __webpack_require__(293), ReactPerf = __webpack_require__(77), ReactPropTransferer = __webpack_require__(613), ReactPropTypeLocations = __webpack_require__(295), ReactPropTypeLocationNames = __webpack_require__(294), ReactUpdates = __webpack_require__(122), instantiateReactComponent = __webpack_require__(164), invariant = __webpack_require__(4), keyMirror = __webpack_require__(98), merge = __webpack_require__(46), mixInto = __webpack_require__(60), monitorCodeUse = __webpack_require__(224), mapObject = __webpack_require__(308), shouldUpdateReactComponent = __webpack_require__(225), warning = __webpack_require__(61), SpecPolicy = keyMirror({
  1316.         DEFINE_ONCE: null,
  1317.         DEFINE_MANY: null,
  1318.         OVERRIDE_BASE: null,
  1319.         DEFINE_MANY_MERGED: null
  1320.     }), injectedMixins = [], ReactCompositeComponentInterface = {
  1321.         mixins: SpecPolicy.DEFINE_MANY,
  1322.         statics: SpecPolicy.DEFINE_MANY,
  1323.         propTypes: SpecPolicy.DEFINE_MANY,
  1324.         contextTypes: SpecPolicy.DEFINE_MANY,
  1325.         childContextTypes: SpecPolicy.DEFINE_MANY,
  1326.         getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED,
  1327.         getInitialState: SpecPolicy.DEFINE_MANY_MERGED,
  1328.         getChildContext: SpecPolicy.DEFINE_MANY_MERGED,
  1329.         render: SpecPolicy.DEFINE_ONCE,
  1330.         componentWillMount: SpecPolicy.DEFINE_MANY,
  1331.         componentDidMount: SpecPolicy.DEFINE_MANY,
  1332.         componentWillReceiveProps: SpecPolicy.DEFINE_MANY,
  1333.         shouldComponentUpdate: SpecPolicy.DEFINE_ONCE,
  1334.         componentWillUpdate: SpecPolicy.DEFINE_MANY,
  1335.         componentDidUpdate: SpecPolicy.DEFINE_MANY,
  1336.         componentWillUnmount: SpecPolicy.DEFINE_MANY,
  1337.         updateComponent: SpecPolicy.OVERRIDE_BASE
  1338.     }, RESERVED_SPEC_KEYS = {
  1339.         displayName: function(Constructor, displayName) {
  1340.             Constructor.displayName = displayName;
  1341.         },
  1342.         mixins: function(Constructor, mixins) {
  1343.             if (mixins) for (var i = 0; i < mixins.length; i++) mixSpecIntoComponent(Constructor, mixins[i]);
  1344.         },
  1345.         childContextTypes: function(Constructor, childContextTypes) {
  1346.             validateTypeDef(Constructor, childContextTypes, ReactPropTypeLocations.childContext);
  1347.             Constructor.childContextTypes = merge(Constructor.childContextTypes, childContextTypes);
  1348.         },
  1349.         contextTypes: function(Constructor, contextTypes) {
  1350.             validateTypeDef(Constructor, contextTypes, ReactPropTypeLocations.context);
  1351.             Constructor.contextTypes = merge(Constructor.contextTypes, contextTypes);
  1352.         },
  1353.         getDefaultProps: function(Constructor, getDefaultProps) {
  1354.             if (Constructor.getDefaultProps) Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps); else Constructor.getDefaultProps = getDefaultProps;
  1355.         },
  1356.         propTypes: function(Constructor, propTypes) {
  1357.             validateTypeDef(Constructor, propTypes, ReactPropTypeLocations.prop);
  1358.             Constructor.propTypes = merge(Constructor.propTypes, propTypes);
  1359.         },
  1360.         statics: function(Constructor, statics) {
  1361.             mixStaticSpecIntoComponent(Constructor, statics);
  1362.         }
  1363.     }, CompositeLifeCycle = keyMirror({
  1364.         MOUNTING: null,
  1365.         UNMOUNTING: null,
  1366.         RECEIVING_PROPS: null,
  1367.         RECEIVING_STATE: null
  1368.     }), ReactCompositeComponentMixin = {
  1369.         construct: function(descriptor) {
  1370.             ReactComponent.Mixin.construct.apply(this, arguments);
  1371.             ReactOwner.Mixin.construct.apply(this, arguments);
  1372.             this.state = null;
  1373.             this._pendingState = null;
  1374.             this.context = null;
  1375.             this._compositeLifeCycleState = null;
  1376.         },
  1377.         isMounted: function() {
  1378.             return ReactComponent.Mixin.isMounted.call(this) && this._compositeLifeCycleState !== CompositeLifeCycle.MOUNTING;
  1379.         },
  1380.         mountComponent: ReactPerf.measure("ReactCompositeComponent", "mountComponent", function(rootID, transaction, mountDepth) {
  1381.             ReactComponent.Mixin.mountComponent.call(this, rootID, transaction, mountDepth);
  1382.             this._compositeLifeCycleState = CompositeLifeCycle.MOUNTING;
  1383.             if (this.__reactAutoBindMap) this._bindAutoBindMethods();
  1384.             this.context = this._processContext(this._descriptor._context);
  1385.             this.props = this._processProps(this.props);
  1386.             this.state = this.getInitialState ? this.getInitialState() : null;
  1387.             !0 ? invariant("object" == typeof this.state && !Array.isArray(this.state), "%s.getInitialState(): must return an object or null", this.constructor.displayName || "ReactCompositeComponent") : invariant("object" == typeof this.state && !Array.isArray(this.state));
  1388.             this._pendingState = null;
  1389.             this._pendingForceUpdate = !1;
  1390.             if (this.componentWillMount) {
  1391.                 this.componentWillMount();
  1392.                 if (this._pendingState) {
  1393.                     this.state = this._pendingState;
  1394.                     this._pendingState = null;
  1395.                 }
  1396.             }
  1397.             this._renderedComponent = instantiateReactComponent(this._renderValidatedComponent());
  1398.             this._compositeLifeCycleState = null;
  1399.             var markup = this._renderedComponent.mountComponent(rootID, transaction, mountDepth + 1);
  1400.             if (this.componentDidMount) transaction.getReactMountReady().enqueue(this.componentDidMount, this);
  1401.             return markup;
  1402.         }),
  1403.         unmountComponent: function() {
  1404.             this._compositeLifeCycleState = CompositeLifeCycle.UNMOUNTING;
  1405.             if (this.componentWillUnmount) this.componentWillUnmount();
  1406.             this._compositeLifeCycleState = null;
  1407.             this._renderedComponent.unmountComponent();
  1408.             this._renderedComponent = null;
  1409.             ReactComponent.Mixin.unmountComponent.call(this);
  1410.         },
  1411.         setState: function(partialState, callback) {
  1412.             !0 ? invariant("object" == typeof partialState || null == partialState, "setState(...): takes an object of state variables to update.") : invariant("object" == typeof partialState || null == partialState);
  1413.             if (!0) warning(null != partialState, "setState(...): You passed an undefined or null state object; instead, use forceUpdate().");
  1414.             this.replaceState(merge(this._pendingState || this.state, partialState), callback);
  1415.         },
  1416.         replaceState: function(completeState, callback) {
  1417.             validateLifeCycleOnReplaceState(this);
  1418.             this._pendingState = completeState;
  1419.             if (this._compositeLifeCycleState !== CompositeLifeCycle.MOUNTING) ReactUpdates.enqueueUpdate(this, callback);
  1420.         },
  1421.         _processContext: function(context) {
  1422.             var maskedContext = null, contextTypes = this.constructor.contextTypes;
  1423.             if (contextTypes) {
  1424.                 maskedContext = {};
  1425.                 for (var contextName in contextTypes) maskedContext[contextName] = context[contextName];
  1426.                 if (!0) this._checkPropTypes(contextTypes, maskedContext, ReactPropTypeLocations.context);
  1427.             }
  1428.             return maskedContext;
  1429.         },
  1430.         _processChildContext: function(currentContext) {
  1431.             var childContext = this.getChildContext && this.getChildContext(), displayName = this.constructor.displayName || "ReactCompositeComponent";
  1432.             if (childContext) {
  1433.                 !0 ? invariant("object" == typeof this.constructor.childContextTypes, "%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().", displayName) : invariant("object" == typeof this.constructor.childContextTypes);
  1434.                 if (!0) this._checkPropTypes(this.constructor.childContextTypes, childContext, ReactPropTypeLocations.childContext);
  1435.                 for (var name in childContext) !0 ? invariant(name in this.constructor.childContextTypes, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', displayName, name) : invariant(name in this.constructor.childContextTypes);
  1436.                 return merge(currentContext, childContext);
  1437.             }
  1438.             return currentContext;
  1439.         },
  1440.         _processProps: function(newProps) {
  1441.             var props, defaultProps = this.constructor.defaultProps;
  1442.             if (defaultProps) {
  1443.                 props = merge(newProps);
  1444.                 for (var propName in defaultProps) if ("undefined" == typeof props[propName]) props[propName] = defaultProps[propName];
  1445.             } else props = newProps;
  1446.             if (!0) {
  1447.                 var propTypes = this.constructor.propTypes;
  1448.                 if (propTypes) this._checkPropTypes(propTypes, props, ReactPropTypeLocations.prop);
  1449.             }
  1450.             return props;
  1451.         },
  1452.         _checkPropTypes: function(propTypes, props, location) {
  1453.             var componentName = this.constructor.displayName;
  1454.             for (var propName in propTypes) if (propTypes.hasOwnProperty(propName)) {
  1455.                 var error = propTypes[propName](props, propName, componentName, location);
  1456.                 if (error instanceof Error) {
  1457.                     var addendum = getDeclarationErrorAddendum(this);
  1458.                     warning(!1, error.message + addendum);
  1459.                 }
  1460.             }
  1461.         },
  1462.         performUpdateIfNecessary: function(transaction) {
  1463.             var compositeLifeCycleState = this._compositeLifeCycleState;
  1464.             if (compositeLifeCycleState !== CompositeLifeCycle.MOUNTING && compositeLifeCycleState !== CompositeLifeCycle.RECEIVING_PROPS) if (null != this._pendingDescriptor || null != this._pendingState || this._pendingForceUpdate) {
  1465.                 var nextContext = this.context, nextProps = this.props, nextDescriptor = this._descriptor;
  1466.                 if (null != this._pendingDescriptor) {
  1467.                     nextDescriptor = this._pendingDescriptor;
  1468.                     nextContext = this._processContext(nextDescriptor._context);
  1469.                     nextProps = this._processProps(nextDescriptor.props);
  1470.                     this._pendingDescriptor = null;
  1471.                     this._compositeLifeCycleState = CompositeLifeCycle.RECEIVING_PROPS;
  1472.                     if (this.componentWillReceiveProps) this.componentWillReceiveProps(nextProps, nextContext);
  1473.                 }
  1474.                 this._compositeLifeCycleState = CompositeLifeCycle.RECEIVING_STATE;
  1475.                 var nextState = this._pendingState || this.state;
  1476.                 this._pendingState = null;
  1477.                 try {
  1478.                     var shouldUpdate = this._pendingForceUpdate || !this.shouldComponentUpdate || this.shouldComponentUpdate(nextProps, nextState, nextContext);
  1479.                     if (!0) if (void 0 === shouldUpdate) console.warn((this.constructor.displayName || "ReactCompositeComponent") + ".shouldComponentUpdate(): Returned undefined instead of a boolean value. Make sure to return true or false.");
  1480.                     if (shouldUpdate) {
  1481.                         this._pendingForceUpdate = !1;
  1482.                         this._performComponentUpdate(nextDescriptor, nextProps, nextState, nextContext, transaction);
  1483.                     } else {
  1484.                         this._descriptor = nextDescriptor;
  1485.                         this.props = nextProps;
  1486.                         this.state = nextState;
  1487.                         this.context = nextContext;
  1488.                         this._owner = nextDescriptor._owner;
  1489.                     }
  1490.                 } finally {
  1491.                     this._compositeLifeCycleState = null;
  1492.                 }
  1493.             }
  1494.         },
  1495.         _performComponentUpdate: function(nextDescriptor, nextProps, nextState, nextContext, transaction) {
  1496.             var prevDescriptor = this._descriptor, prevProps = this.props, prevState = this.state, prevContext = this.context;
  1497.             if (this.componentWillUpdate) this.componentWillUpdate(nextProps, nextState, nextContext);
  1498.             this._descriptor = nextDescriptor;
  1499.             this.props = nextProps;
  1500.             this.state = nextState;
  1501.             this.context = nextContext;
  1502.             this._owner = nextDescriptor._owner;
  1503.             this.updateComponent(transaction, prevDescriptor);
  1504.             if (this.componentDidUpdate) transaction.getReactMountReady().enqueue(this.componentDidUpdate.bind(this, prevProps, prevState, prevContext), this);
  1505.         },
  1506.         receiveComponent: function(nextDescriptor, transaction) {
  1507.             if (nextDescriptor !== this._descriptor || null == nextDescriptor._owner) ReactComponent.Mixin.receiveComponent.call(this, nextDescriptor, transaction);
  1508.         },
  1509.         updateComponent: ReactPerf.measure("ReactCompositeComponent", "updateComponent", function(transaction, prevParentDescriptor) {
  1510.             ReactComponent.Mixin.updateComponent.call(this, transaction, prevParentDescriptor);
  1511.             var prevComponentInstance = this._renderedComponent, prevDescriptor = prevComponentInstance._descriptor, nextDescriptor = this._renderValidatedComponent();
  1512.             if (shouldUpdateReactComponent(prevDescriptor, nextDescriptor)) prevComponentInstance.receiveComponent(nextDescriptor, transaction); else {
  1513.                 var thisID = this._rootNodeID, prevComponentID = prevComponentInstance._rootNodeID;
  1514.                 prevComponentInstance.unmountComponent();
  1515.                 this._renderedComponent = instantiateReactComponent(nextDescriptor);
  1516.                 var nextMarkup = this._renderedComponent.mountComponent(thisID, transaction, this._mountDepth + 1);
  1517.                 ReactComponent.BackendIDOperations.dangerouslyReplaceNodeWithMarkupByID(prevComponentID, nextMarkup);
  1518.             }
  1519.         }),
  1520.         forceUpdate: function(callback) {
  1521.             var compositeLifeCycleState = this._compositeLifeCycleState;
  1522.             !0 ? invariant(this.isMounted() || compositeLifeCycleState === CompositeLifeCycle.MOUNTING, "forceUpdate(...): Can only force an update on mounted or mounting components.") : invariant(this.isMounted() || compositeLifeCycleState === CompositeLifeCycle.MOUNTING);
  1523.             !0 ? invariant(compositeLifeCycleState !== CompositeLifeCycle.RECEIVING_STATE && compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING, "forceUpdate(...): Cannot force an update while unmounting component or during an existing state transition (such as within `render`).") : invariant(compositeLifeCycleState !== CompositeLifeCycle.RECEIVING_STATE && compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING);
  1524.             this._pendingForceUpdate = !0;
  1525.             ReactUpdates.enqueueUpdate(this, callback);
  1526.         },
  1527.         _renderValidatedComponent: ReactPerf.measure("ReactCompositeComponent", "_renderValidatedComponent", function() {
  1528.             var renderedComponent, previousContext = ReactContext.current;
  1529.             ReactContext.current = this._processChildContext(this._descriptor._context);
  1530.             ReactCurrentOwner.current = this;
  1531.             try {
  1532.                 renderedComponent = this.render();
  1533.                 if (null === renderedComponent || !1 === renderedComponent) {
  1534.                     renderedComponent = ReactEmptyComponent.getEmptyComponent();
  1535.                     ReactEmptyComponent.registerNullComponentID(this._rootNodeID);
  1536.                 } else ReactEmptyComponent.deregisterNullComponentID(this._rootNodeID);
  1537.             } finally {
  1538.                 ReactContext.current = previousContext;
  1539.                 ReactCurrentOwner.current = null;
  1540.             }
  1541.             !0 ? invariant(ReactDescriptor.isValidDescriptor(renderedComponent), "%s.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object.", this.constructor.displayName || "ReactCompositeComponent") : invariant(ReactDescriptor.isValidDescriptor(renderedComponent));
  1542.             return renderedComponent;
  1543.         }),
  1544.         _bindAutoBindMethods: function() {
  1545.             for (var autoBindKey in this.__reactAutoBindMap) if (this.__reactAutoBindMap.hasOwnProperty(autoBindKey)) {
  1546.                 var method = this.__reactAutoBindMap[autoBindKey];
  1547.                 this[autoBindKey] = this._bindAutoBindMethod(ReactErrorUtils.guard(method, this.constructor.displayName + "." + autoBindKey));
  1548.             }
  1549.         },
  1550.         _bindAutoBindMethod: function(method) {
  1551.             var component = this, boundMethod = function() {
  1552.                 return method.apply(component, arguments);
  1553.             };
  1554.             if (!0) {
  1555.                 boundMethod.__reactBoundContext = component;
  1556.                 boundMethod.__reactBoundMethod = method;
  1557.                 boundMethod.__reactBoundArguments = null;
  1558.                 var componentName = component.constructor.displayName, _bind = boundMethod.bind;
  1559.                 boundMethod.bind = function(newThis) {
  1560.                     var args = Array.prototype.slice.call(arguments, 1);
  1561.                     if (newThis !== component && null !== newThis) {
  1562.                         monitorCodeUse("react_bind_warning", {
  1563.                             component: componentName
  1564.                         });
  1565.                         console.warn("bind(): React component methods may only be bound to the component instance. See " + componentName);
  1566.                     } else if (!args.length) {
  1567.                         monitorCodeUse("react_bind_warning", {
  1568.                             component: componentName
  1569.                         });
  1570.                         console.warn("bind(): You are binding a component method to the component. React does this for you automatically in a high-performance way, so you can safely remove this call. See " + componentName);
  1571.                         return boundMethod;
  1572.                     }
  1573.                     var reboundMethod = _bind.apply(boundMethod, arguments);
  1574.                     reboundMethod.__reactBoundContext = component;
  1575.                     reboundMethod.__reactBoundMethod = method;
  1576.                     reboundMethod.__reactBoundArguments = args;
  1577.                     return reboundMethod;
  1578.                 };
  1579.             }
  1580.             return boundMethod;
  1581.         }
  1582.     }, ReactCompositeComponentBase = function() {};
  1583.     mixInto(ReactCompositeComponentBase, ReactComponent.Mixin);
  1584.     mixInto(ReactCompositeComponentBase, ReactOwner.Mixin);
  1585.     mixInto(ReactCompositeComponentBase, ReactPropTransferer.Mixin);
  1586.     mixInto(ReactCompositeComponentBase, ReactCompositeComponentMixin);
  1587.     var ReactCompositeComponent = {
  1588.         LifeCycle: CompositeLifeCycle,
  1589.         Base: ReactCompositeComponentBase,
  1590.         createClass: function(spec) {
  1591.             var Constructor = function(props, owner) {
  1592.                 this.construct(props, owner);
  1593.             };
  1594.             Constructor.prototype = new ReactCompositeComponentBase();
  1595.             Constructor.prototype.constructor = Constructor;
  1596.             injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));
  1597.             mixSpecIntoComponent(Constructor, spec);
  1598.             if (Constructor.getDefaultProps) Constructor.defaultProps = Constructor.getDefaultProps();
  1599.             !0 ? invariant(Constructor.prototype.render, "createClass(...): Class specification must implement a `render` method.") : invariant(Constructor.prototype.render);
  1600.             if (!0) if (Constructor.prototype.componentShouldUpdate) {
  1601.                 monitorCodeUse("react_component_should_update_warning", {
  1602.                     component: spec.displayName
  1603.                 });
  1604.                 console.warn((spec.displayName || "A component") + " has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value.");
  1605.             }
  1606.             for (var methodName in ReactCompositeComponentInterface) if (!Constructor.prototype[methodName]) Constructor.prototype[methodName] = null;
  1607.             var descriptorFactory = ReactDescriptor.createFactory(Constructor);
  1608.             if (!0) return ReactDescriptorValidator.createFactory(descriptorFactory, Constructor.propTypes, Constructor.contextTypes); else return descriptorFactory;
  1609.         },
  1610.         injection: {
  1611.             injectMixin: function(mixin) {
  1612.                 injectedMixins.push(mixin);
  1613.             }
  1614.         }
  1615.     };
  1616.     module.exports = ReactCompositeComponent;
  1617. }, function(module, exports, __webpack_require__) {
  1618.     "use strict";
  1619.     function createDOMComponentClass(omitClose, tag) {
  1620.         var Constructor = function(descriptor) {
  1621.             this.construct(descriptor);
  1622.         };
  1623.         Constructor.prototype = new ReactDOMComponent(tag, omitClose);
  1624.         Constructor.prototype.constructor = Constructor;
  1625.         Constructor.displayName = tag;
  1626.         var ConvenienceConstructor = ReactDescriptor.createFactory(Constructor);
  1627.         if (!0) return ReactDescriptorValidator.createFactory(ConvenienceConstructor); else return ConvenienceConstructor;
  1628.     }
  1629.     var ReactDescriptor = __webpack_require__(58), ReactDescriptorValidator = __webpack_require__(289), ReactDOMComponent = __webpack_require__(288), mergeInto = __webpack_require__(223), mapObject = __webpack_require__(308), ReactDOM = mapObject({
  1630.         a: !1,
  1631.         abbr: !1,
  1632.         address: !1,
  1633.         area: !0,
  1634.         article: !1,
  1635.         aside: !1,
  1636.         audio: !1,
  1637.         b: !1,
  1638.         base: !0,
  1639.         bdi: !1,
  1640.         bdo: !1,
  1641.         big: !1,
  1642.         blockquote: !1,
  1643.         body: !1,
  1644.         br: !0,
  1645.         button: !1,
  1646.         canvas: !1,
  1647.         caption: !1,
  1648.         cite: !1,
  1649.         code: !1,
  1650.         col: !0,
  1651.         colgroup: !1,
  1652.         data: !1,
  1653.         datalist: !1,
  1654.         dd: !1,
  1655.         del: !1,
  1656.         details: !1,
  1657.         dfn: !1,
  1658.         dialog: !1,
  1659.         div: !1,
  1660.         dl: !1,
  1661.         dt: !1,
  1662.         em: !1,
  1663.         embed: !0,
  1664.         fieldset: !1,
  1665.         figcaption: !1,
  1666.         figure: !1,
  1667.         footer: !1,
  1668.         form: !1,
  1669.         h1: !1,
  1670.         h2: !1,
  1671.         h3: !1,
  1672.         h4: !1,
  1673.         h5: !1,
  1674.         h6: !1,
  1675.         head: !1,
  1676.         header: !1,
  1677.         hr: !0,
  1678.         html: !1,
  1679.         i: !1,
  1680.         iframe: !1,
  1681.         img: !0,
  1682.         input: !0,
  1683.         ins: !1,
  1684.         kbd: !1,
  1685.         keygen: !0,
  1686.         label: !1,
  1687.         legend: !1,
  1688.         li: !1,
  1689.         link: !0,
  1690.         main: !1,
  1691.         map: !1,
  1692.         mark: !1,
  1693.         menu: !1,
  1694.         menuitem: !1,
  1695.         meta: !0,
  1696.         meter: !1,
  1697.         nav: !1,
  1698.         noscript: !1,
  1699.         object: !1,
  1700.         ol: !1,
  1701.         optgroup: !1,
  1702.         option: !1,
  1703.         output: !1,
  1704.         p: !1,
  1705.         param: !0,
  1706.         picture: !1,
  1707.         pre: !1,
  1708.         progress: !1,
  1709.         q: !1,
  1710.         rp: !1,
  1711.         rt: !1,
  1712.         ruby: !1,
  1713.         s: !1,
  1714.         samp: !1,
  1715.         script: !1,
  1716.         section: !1,
  1717.         select: !1,
  1718.         small: !1,
  1719.         source: !0,
  1720.         span: !1,
  1721.         strong: !1,
  1722.         style: !1,
  1723.         sub: !1,
  1724.         summary: !1,
  1725.         sup: !1,
  1726.         table: !1,
  1727.         tbody: !1,
  1728.         td: !1,
  1729.         textarea: !1,
  1730.         tfoot: !1,
  1731.         th: !1,
  1732.         thead: !1,
  1733.         time: !1,
  1734.         title: !1,
  1735.         tr: !1,
  1736.         track: !0,
  1737.         u: !1,
  1738.         ul: !1,
  1739.         "var": !1,
  1740.         video: !1,
  1741.         wbr: !0,
  1742.         circle: !1,
  1743.         defs: !1,
  1744.         ellipse: !1,
  1745.         g: !1,
  1746.         line: !1,
  1747.         linearGradient: !1,
  1748.         mask: !1,
  1749.         path: !1,
  1750.         pattern: !1,
  1751.         polygon: !1,
  1752.         polyline: !1,
  1753.         radialGradient: !1,
  1754.         rect: !1,
  1755.         stop: !1,
  1756.         svg: !1,
  1757.         text: !1,
  1758.         tspan: !1
  1759.     }, createDOMComponentClass), injection = {
  1760.         injectComponentClasses: function(componentClasses) {
  1761.             mergeInto(ReactDOM, componentClasses);
  1762.         }
  1763.     };
  1764.     ReactDOM.injection = injection;
  1765.     module.exports = ReactDOM;
  1766. }, function(module, exports, __webpack_require__) {
  1767.     "use strict";
  1768.     function defineWarningProperty(object, key) {
  1769.         Object.defineProperty(object, key, {
  1770.             configurable: !1,
  1771.             enumerable: !0,
  1772.             get: function() {
  1773.                 if (!this._store) return null; else return this._store[key];
  1774.             },
  1775.             set: function(value) {
  1776.                 warning(!1, "Don't set the " + key + " property of the component. Mutate the existing props object instead.");
  1777.                 this._store[key] = value;
  1778.             }
  1779.         });
  1780.     }
  1781.     function proxyStaticMethods(target, source) {
  1782.         if ("function" == typeof source) for (var key in source) if (source.hasOwnProperty(key)) {
  1783.             var value = source[key];
  1784.             if ("function" == typeof value) {
  1785.                 var bound = value.bind(source);
  1786.                 for (var k in value) if (value.hasOwnProperty(k)) bound[k] = value[k];
  1787.                 target[key] = bound;
  1788.             } else target[key] = value;
  1789.         }
  1790.     }
  1791.     var ReactContext = __webpack_require__(213), ReactCurrentOwner = __webpack_require__(120), merge = __webpack_require__(46), warning = __webpack_require__(61), useMutationMembrane = !1, ReactDescriptor = function() {};
  1792.     if (!0) !function(prototype) {
  1793.         try {
  1794.             var pseudoFrozenProperties = {
  1795.                 props: !0
  1796.             };
  1797.             for (var key in pseudoFrozenProperties) defineWarningProperty(prototype, key);
  1798.             useMutationMembrane = !0;
  1799.         } catch (x) {}
  1800.     }(ReactDescriptor.prototype);
  1801.     ReactDescriptor.createFactory = function(type) {
  1802.         var descriptorPrototype = Object.create(ReactDescriptor.prototype), factory = function(props, children) {
  1803.             if (null == props) props = {}; else if ("object" == typeof props) props = merge(props);
  1804.             var childrenLength = arguments.length - 1;
  1805.             if (1 === childrenLength) props.children = children; else if (childrenLength > 1) {
  1806.                 for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++) childArray[i] = arguments[i + 1];
  1807.                 props.children = childArray;
  1808.             }
  1809.             var descriptor = Object.create(descriptorPrototype);
  1810.             descriptor._owner = ReactCurrentOwner.current;
  1811.             descriptor._context = ReactContext.current;
  1812.             if (!0) {
  1813.                 descriptor._store = {
  1814.                     validated: !1,
  1815.                     props: props
  1816.                 };
  1817.                 if (useMutationMembrane) {
  1818.                     Object.freeze(descriptor);
  1819.                     return descriptor;
  1820.                 }
  1821.             }
  1822.             descriptor.props = props;
  1823.             return descriptor;
  1824.         };
  1825.         factory.prototype = descriptorPrototype;
  1826.         factory.type = type;
  1827.         descriptorPrototype.type = type;
  1828.         proxyStaticMethods(factory, type);
  1829.         descriptorPrototype.constructor = factory;
  1830.         return factory;
  1831.     };
  1832.     ReactDescriptor.cloneAndReplaceProps = function(oldDescriptor, newProps) {
  1833.         var newDescriptor = Object.create(oldDescriptor.constructor.prototype);
  1834.         newDescriptor._owner = oldDescriptor._owner;
  1835.         newDescriptor._context = oldDescriptor._context;
  1836.         if (!0) {
  1837.             newDescriptor._store = {
  1838.                 validated: oldDescriptor._store.validated,
  1839.                 props: newProps
  1840.             };
  1841.             if (useMutationMembrane) {
  1842.                 Object.freeze(newDescriptor);
  1843.                 return newDescriptor;
  1844.             }
  1845.         }
  1846.         newDescriptor.props = newProps;
  1847.         return newDescriptor;
  1848.     };
  1849.     ReactDescriptor.isValidFactory = function(factory) {
  1850.         return "function" == typeof factory && factory.prototype instanceof ReactDescriptor;
  1851.     };
  1852.     ReactDescriptor.isValidDescriptor = function(object) {
  1853.         return object instanceof ReactDescriptor;
  1854.     };
  1855.     module.exports = ReactDescriptor;
  1856. }, function(module, exports, __webpack_require__) {
  1857.     "use strict";
  1858.     function getReactRootID(container) {
  1859.         var rootElement = getReactRootElementInContainer(container);
  1860.         return rootElement && ReactMount.getID(rootElement);
  1861.     }
  1862.     function getID(node) {
  1863.         var id = internalGetID(node);
  1864.         if (id) if (nodeCache.hasOwnProperty(id)) {
  1865.             var cached = nodeCache[id];
  1866.             if (cached !== node) {
  1867.                 !0 ? invariant(!isValid(cached, id), "ReactMount: Two valid but unequal nodes with the same `%s`: %s", ATTR_NAME, id) : invariant(!isValid(cached, id));
  1868.                 nodeCache[id] = node;
  1869.             }
  1870.         } else nodeCache[id] = node;
  1871.         return id;
  1872.     }
  1873.     function internalGetID(node) {
  1874.         return node && node.getAttribute && node.getAttribute(ATTR_NAME) || "";
  1875.     }
  1876.     function setID(node, id) {
  1877.         var oldID = internalGetID(node);
  1878.         if (oldID !== id) delete nodeCache[oldID];
  1879.         node.setAttribute(ATTR_NAME, id);
  1880.         nodeCache[id] = node;
  1881.     }
  1882.     function getNode(id) {
  1883.         if (!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id], id)) nodeCache[id] = ReactMount.findReactNodeByID(id);
  1884.         return nodeCache[id];
  1885.     }
  1886.     function isValid(node, id) {
  1887.         if (node) {
  1888.             !0 ? invariant(internalGetID(node) === id, "ReactMount: Unexpected modification of `%s`", ATTR_NAME) : invariant(internalGetID(node) === id);
  1889.             var container = ReactMount.findReactContainerForID(id);
  1890.             if (container && containsNode(container, node)) return !0;
  1891.         }
  1892.         return !1;
  1893.     }
  1894.     function purgeID(id) {
  1895.         delete nodeCache[id];
  1896.     }
  1897.     function findDeepestCachedAncestorImpl(ancestorID) {
  1898.         var ancestor = nodeCache[ancestorID];
  1899.         if (ancestor && isValid(ancestor, ancestorID)) deepestNodeSoFar = ancestor; else return !1;
  1900.     }
  1901.     function findDeepestCachedAncestor(targetID) {
  1902.         deepestNodeSoFar = null;
  1903.         ReactInstanceHandles.traverseAncestors(targetID, findDeepestCachedAncestorImpl);
  1904.         var foundNode = deepestNodeSoFar;
  1905.         deepestNodeSoFar = null;
  1906.         return foundNode;
  1907.     }
  1908.     var DOMProperty = __webpack_require__(96), ReactBrowserEventEmitter = __webpack_require__(118), ReactCurrentOwner = __webpack_require__(120), ReactDescriptor = __webpack_require__(58), ReactInstanceHandles = __webpack_require__(121), ReactPerf = __webpack_require__(77), containsNode = __webpack_require__(301), getReactRootElementInContainer = __webpack_require__(305), instantiateReactComponent = __webpack_require__(164), invariant = __webpack_require__(4), shouldUpdateReactComponent = __webpack_require__(225), warning = __webpack_require__(61), SEPARATOR = ReactInstanceHandles.SEPARATOR, ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME, nodeCache = {}, instancesByReactRootID = {}, containersByReactRootID = {};
  1909.     if (!0) var rootElementsByReactRootID = {};
  1910.     var findComponentRootReusableArray = [], deepestNodeSoFar = null, ReactMount = {
  1911.         _instancesByReactRootID: instancesByReactRootID,
  1912.         scrollMonitor: function(container, renderCallback) {
  1913.             renderCallback();
  1914.         },
  1915.         _updateRootComponent: function(prevComponent, nextComponent, container, callback) {
  1916.             var nextProps = nextComponent.props;
  1917.             ReactMount.scrollMonitor(container, function() {
  1918.                 prevComponent.replaceProps(nextProps, callback);
  1919.             });
  1920.             if (!0) rootElementsByReactRootID[getReactRootID(container)] = getReactRootElementInContainer(container);
  1921.             return prevComponent;
  1922.         },
  1923.         _registerComponent: function(nextComponent, container) {
  1924.             !0 ? invariant(container && (1 === container.nodeType || 9 === container.nodeType), "_registerComponent(...): Target container is not a DOM element.") : invariant(container && (1 === container.nodeType || 9 === container.nodeType));
  1925.             ReactBrowserEventEmitter.ensureScrollValueMonitoring();
  1926.             var reactRootID = ReactMount.registerContainer(container);
  1927.             instancesByReactRootID[reactRootID] = nextComponent;
  1928.             return reactRootID;
  1929.         },
  1930.         _renderNewRootComponent: ReactPerf.measure("ReactMount", "_renderNewRootComponent", function(nextComponent, container, shouldReuseMarkup) {
  1931.             warning(null == ReactCurrentOwner.current, "_renderNewRootComponent(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate.");
  1932.             var componentInstance = instantiateReactComponent(nextComponent), reactRootID = ReactMount._registerComponent(componentInstance, container);
  1933.             componentInstance.mountComponentIntoNode(reactRootID, container, shouldReuseMarkup);
  1934.             if (!0) rootElementsByReactRootID[reactRootID] = getReactRootElementInContainer(container);
  1935.             return componentInstance;
  1936.         }),
  1937.         renderComponent: function(nextDescriptor, container, callback) {
  1938.             !0 ? invariant(ReactDescriptor.isValidDescriptor(nextDescriptor), "renderComponent(): Invalid component descriptor.%s", ReactDescriptor.isValidFactory(nextDescriptor) ? " Instead of passing a component class, make sure to instantiate it first by calling it with props." : "undefined" != typeof nextDescriptor.props ? " This may be caused by unintentionally loading two independent copies of React." : "") : invariant(ReactDescriptor.isValidDescriptor(nextDescriptor));
  1939.             var prevComponent = instancesByReactRootID[getReactRootID(container)];
  1940.             if (prevComponent) {
  1941.                 var prevDescriptor = prevComponent._descriptor;
  1942.                 if (shouldUpdateReactComponent(prevDescriptor, nextDescriptor)) return ReactMount._updateRootComponent(prevComponent, nextDescriptor, container, callback); else ReactMount.unmountComponentAtNode(container);
  1943.             }
  1944.             var reactRootElement = getReactRootElementInContainer(container), containerHasReactMarkup = reactRootElement && ReactMount.isRenderedByReact(reactRootElement), shouldReuseMarkup = containerHasReactMarkup && !prevComponent, component = ReactMount._renderNewRootComponent(nextDescriptor, container, shouldReuseMarkup);
  1945.             callback && callback.call(component);
  1946.             return component;
  1947.         },
  1948.         constructAndRenderComponent: function(constructor, props, container) {
  1949.             return ReactMount.renderComponent(constructor(props), container);
  1950.         },
  1951.         constructAndRenderComponentByID: function(constructor, props, id) {
  1952.             var domNode = document.getElementById(id);
  1953.             !0 ? invariant(domNode, 'Tried to get element with id of "%s" but it is not present on the page.', id) : invariant(domNode);
  1954.             return ReactMount.constructAndRenderComponent(constructor, props, domNode);
  1955.         },
  1956.         registerContainer: function(container) {
  1957.             var reactRootID = getReactRootID(container);
  1958.             if (reactRootID) reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(reactRootID);
  1959.             if (!reactRootID) reactRootID = ReactInstanceHandles.createReactRootID();
  1960.             containersByReactRootID[reactRootID] = container;
  1961.             return reactRootID;
  1962.         },
  1963.         unmountComponentAtNode: function(container) {
  1964.             warning(null == ReactCurrentOwner.current, "unmountComponentAtNode(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate.");
  1965.             var reactRootID = getReactRootID(container), component = instancesByReactRootID[reactRootID];
  1966.             if (!component) return !1;
  1967.             ReactMount.unmountComponentFromNode(component, container);
  1968.             delete instancesByReactRootID[reactRootID];
  1969.             delete containersByReactRootID[reactRootID];
  1970.             if (!0) delete rootElementsByReactRootID[reactRootID];
  1971.             return !0;
  1972.         },
  1973.         unmountComponentFromNode: function(instance, container) {
  1974.             instance.unmountComponent();
  1975.             if (9 === container.nodeType) container = container.documentElement;
  1976.             for (;container.lastChild; ) container.removeChild(container.lastChild);
  1977.         },
  1978.         findReactContainerForID: function(id) {
  1979.             var reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(id), container = containersByReactRootID[reactRootID];
  1980.             if (!0) {
  1981.                 var rootElement = rootElementsByReactRootID[reactRootID];
  1982.                 if (rootElement && rootElement.parentNode !== container) {
  1983.                     !0 ? invariant(internalGetID(rootElement) === reactRootID, "ReactMount: Root element ID differed from reactRootID.") : invariant(internalGetID(rootElement) === reactRootID);
  1984.                     var containerChild = container.firstChild;
  1985.                     if (containerChild && reactRootID === internalGetID(containerChild)) rootElementsByReactRootID[reactRootID] = containerChild; else console.warn("ReactMount: Root element has been removed from its original container. New container:", rootElement.parentNode);
  1986.                 }
  1987.             }
  1988.             return container;
  1989.         },
  1990.         findReactNodeByID: function(id) {
  1991.             var reactRoot = ReactMount.findReactContainerForID(id);
  1992.             return ReactMount.findComponentRoot(reactRoot, id);
  1993.         },
  1994.         isRenderedByReact: function(node) {
  1995.             if (1 !== node.nodeType) return !1;
  1996.             var id = ReactMount.getID(node);
  1997.             return id ? id.charAt(0) === SEPARATOR : !1;
  1998.         },
  1999.         getFirstReactDOM: function(node) {
  2000.             for (var current = node; current && current.parentNode !== current; ) {
  2001.                 if (ReactMount.isRenderedByReact(current)) return current;
  2002.                 current = current.parentNode;
  2003.             }
  2004.             return null;
  2005.         },
  2006.         findComponentRoot: function(ancestorNode, targetID) {
  2007.             var firstChildren = findComponentRootReusableArray, childIndex = 0, deepestAncestor = findDeepestCachedAncestor(targetID) || ancestorNode;
  2008.             firstChildren[0] = deepestAncestor.firstChild;
  2009.             firstChildren.length = 1;
  2010.             for (;childIndex < firstChildren.length; ) {
  2011.                 for (var targetChild, child = firstChildren[childIndex++]; child; ) {
  2012.                     var childID = ReactMount.getID(child);
  2013.                     if (childID) {
  2014.                         if (targetID === childID) targetChild = child; else if (ReactInstanceHandles.isAncestorIDOf(childID, targetID)) {
  2015.                             firstChildren.length = childIndex = 0;
  2016.                             firstChildren.push(child.firstChild);
  2017.                         }
  2018.                     } else firstChildren.push(child.firstChild);
  2019.                     child = child.nextSibling;
  2020.                 }
  2021.                 if (targetChild) {
  2022.                     firstChildren.length = 0;
  2023.                     return targetChild;
  2024.                 }
  2025.             }
  2026.             firstChildren.length = 0;
  2027.             !0 ? invariant(!1, "findComponentRoot(..., %s): Unable to find element. This probably means the DOM was unexpectedly mutated (e.g., by the browser), usually due to forgetting a <tbody> when using tables, nesting <p> or <a> tags, or using non-SVG elements in an <svg> parent. Try inspecting the child nodes of the element with React ID `%s`.", targetID, ReactMount.getID(ancestorNode)) : invariant(!1);
  2028.         },
  2029.         getReactRootID: getReactRootID,
  2030.         getID: getID,
  2031.         setID: setID,
  2032.         getNode: getNode,
  2033.         purgeID: purgeID
  2034.     };
  2035.     module.exports = ReactMount;
  2036. }, function(module, exports, __webpack_require__) {
  2037.     "use strict";
  2038.     var mixInto = function(constructor, methodBag) {
  2039.         var methodName;
  2040.         for (methodName in methodBag) if (methodBag.hasOwnProperty(methodName)) constructor.prototype[methodName] = methodBag[methodName];
  2041.     };
  2042.     module.exports = mixInto;
  2043. }, function(module, exports, __webpack_require__) {
  2044.     "use strict";
  2045.     var emptyFunction = __webpack_require__(78), warning = emptyFunction;
  2046.     if (!0) warning = function(condition, format) {
  2047.         var args = Array.prototype.slice.call(arguments, 2);
  2048.         if (format === undefined) throw new Error("`warning(condition, format, ...args)` requires a warning message argument");
  2049.         if (!condition) {
  2050.             var argIndex = 0;
  2051.             console.warn("Warning: " + format.replace(/%s/g, function() {
  2052.                 return args[argIndex++];
  2053.             }));
  2054.         }
  2055.     };
  2056.     module.exports = warning;
  2057. }, function(module, exports, __webpack_require__) {
  2058.     "use strict";
  2059.     function _interopRequireDefault(obj) {
  2060.         return obj && obj.__esModule ? obj : {
  2061.             "default": obj
  2062.         };
  2063.     }
  2064.     function navigate(page) {
  2065.         var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  2066.         switch (page) {
  2067.           case "START":
  2068.             break;
  2069.  
  2070.           case "DRIVERS":
  2071.             if (!options.preventSendingEvent) if (showZeroDriversBeOpened()) _statistics2["default"].event({
  2072.                 action: "drivers zero screen opened"
  2073.             }); else _statistics2["default"].event({
  2074.                 action: "drivers screen opened"
  2075.             });
  2076.             if (options.startScreenSkipped) _statistics2["default"].event({
  2077.                 action: "startpage screen skipped"
  2078.             });
  2079.             break;
  2080.  
  2081.           case "PROGRAMS":
  2082.             _statistics2["default"].event({
  2083.                 action: "soft screen opened"
  2084.             });
  2085.             break;
  2086.  
  2087.           case "PROTECT":
  2088.             _statistics2["default"].event({
  2089.                 action: "protect screen opened"
  2090.             });
  2091.             break;
  2092.  
  2093.           case "DIAGNOSTICS":
  2094.             _statistics2["default"].event({
  2095.                 action: "diagnostic screen opened"
  2096.             });
  2097.             break;
  2098.  
  2099.           case "SETTINGS":
  2100.             _statistics2["default"].event({
  2101.                 action: "settings screen opened"
  2102.             });
  2103.             break;
  2104.  
  2105.           case "GAMES":
  2106.             _statistics2["default"].event({
  2107.                 action: "games screen opened"
  2108.             });
  2109.         }
  2110.         return {
  2111.             type: "NAVIGATE",
  2112.             page: page
  2113.         };
  2114.     }
  2115.     function openSystemMenu(page) {
  2116.         var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, itemName = void 0;
  2117.         return function(dispatch) {
  2118.             switch (page) {
  2119.               case "CONTROL":
  2120.                 itemName = "control_panel";
  2121.                 _system.WshShell.Run("control.exe", 1, !1);
  2122.                 break;
  2123.  
  2124.               case "RECOVERY":
  2125.                 itemName = "recovery_point";
  2126.                 if (OSVersion >= 6) (0, _utils.winRun)("systempropertiesprotection.exe", "", "", !0); else (0,
  2127.                 _utils.winRun)("%systemroot%\\system32\\restore\\rstrui.exe", "", "", !0);
  2128.                 break;
  2129.  
  2130.               case "BACKUP":
  2131.                 itemName = "drivers_backup";
  2132.                 dispatch({
  2133.                     type: "BACKUP_START"
  2134.                 });
  2135.                 _ddriver2["default"].Run().then(function() {
  2136.                     _statistics2["default"].event({
  2137.                         action: "drivers backup finished"
  2138.                     });
  2139.                     return dispatch({
  2140.                         type: "BACKUP_SUCCESS"
  2141.                     });
  2142.                 }).caught(function(error) {
  2143.                     _statistics2["default"].event({
  2144.                         action: "drivers backup failed"
  2145.                     });
  2146.                     log.error("error", {
  2147.                         error: error
  2148.                     }, "ddriver:error");
  2149.                     return dispatch({
  2150.                         type: "BACKUP_FAILED"
  2151.                     });
  2152.                 });
  2153.                 break;
  2154.  
  2155.               case "UNINSTALL":
  2156.                 itemName = "programs_and_features";
  2157.                 window.store.dispatch({
  2158.                     type: "NAVIGATE",
  2159.                     page: "PROTECT"
  2160.                 });
  2161.                 window.store.dispatch({
  2162.                     type: "BURGER_MENU_TOGGLED"
  2163.                 });
  2164.                 break;
  2165.  
  2166.               case "FEEDBACK":
  2167.                 if (!options.preventSendingEvent) _statistics2["default"].event({
  2168.                     action: "feedback clicked"
  2169.                 });
  2170.                 (0, _utils.goToUrl)("https://drp.su/" + options.lang + "/info/review-driverpack-" + (!0 ? "online" : __NETWORK__ ? "network" : "offline"));
  2171.                 break;
  2172.  
  2173.               case "SYSTEM_PROPERTIES":
  2174.                 itemName = "system";
  2175.                 if (OSVersion >= 6) _system.WshShell.Run("control.exe system", 1, !1); else _system.WshShell.Run("control.exe sysdm.cpl", 1, !1);
  2176.                 break;
  2177.  
  2178.               case "DEVICE_MANAGER":
  2179.                 itemName = "device_manager";
  2180.                 _system.WshShell.Run("mmc.exe devmgmt.msc", 1, !1);
  2181.                 break;
  2182.  
  2183.               case "NETWORK_CONNECTIONS":
  2184.                 itemName = "network_connections";
  2185.                 _system.WshShell.Run("control.exe ncpa.cpl", 1, !1);
  2186.                 break;
  2187.  
  2188.               case "DISK_MANAGEMENT":
  2189.                 itemName = "disk_management";
  2190.                 _system.WshShell.Run("mmc.exe diskmgmt.msc", 1, !1);
  2191.                 break;
  2192.  
  2193.               case "COMPUTER_MANAGEMENT":
  2194.                 itemName = "computer_management";
  2195.                 _system.WshShell.Run("mmc.exe compmgmt.msc", 1, !1);
  2196.                 break;
  2197.  
  2198.               case "CMD":
  2199.                 itemName = "command_prompt";
  2200.                 var prevCurrentDirectory = _system.WshShell.CurrentDirectory;
  2201.                 _system.WshShell.CurrentDirectory = _system.WshShell.ExpandEnvironmentStrings("%USERPROFILE%");
  2202.                 _system.WshShell.Run("cmd.exe", 1, !1);
  2203.                 setTimeout(function() {
  2204.                     _system.WshShell.CurrentDirectory = prevCurrentDirectory;
  2205.                 }, 50);
  2206.                 break;
  2207.  
  2208.               case "TASK_MANAGER":
  2209.                 itemName = "task_manager";
  2210.                 _system.WshShell.Run("taskmgr.exe", 1, !1);
  2211.                 break;
  2212.  
  2213.               case "DISPLAY_PROPERTIES":
  2214.                 itemName = "display";
  2215.                 _system.WshShell.Run("control.exe desk.cpl", 1, !1);
  2216.                 break;
  2217.  
  2218.               case "POWER_OPTIONS":
  2219.                 itemName = "power_options";
  2220.                 _system.WshShell.Run("control.exe powercfg.cpl", 1, !1);
  2221.             }
  2222.             if (!options.preventSendingEvent) _statistics2["default"].event({
  2223.                 action: "burgermenu " + itemName + " clicked"
  2224.             });
  2225.         };
  2226.     }
  2227.     exports.__esModule = !0;
  2228.     exports.navigate = navigate;
  2229.     exports.openSystemMenu = openSystemMenu;
  2230.     var _system = __webpack_require__(9), _logs = __webpack_require__(3), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _utils = __webpack_require__(23), _ddriver = __webpack_require__(719), _ddriver2 = _interopRequireDefault(_ddriver), _driversPrograms = __webpack_require__(36), log = (0,
  2231.     _logs.getLogger)("actions:menu"), showZeroDriversBeOpened = function() {
  2232.         var result = void 0, _window$store$getStat = window.store.getState(), drivers = _window$store$getStat.drivers, zeroDriversVisible = drivers.zeroDriversVisible, devices = drivers.devices, notInstalled = (0,
  2233.         _driversPrograms.filterNotInstalledDriverDevices)(devices), notUpdated = (0, _driversPrograms.filterNotUpdatedDriverDevices)(devices);
  2234.         result = zeroDriversVisible && !notInstalled.length && !notUpdated.length;
  2235.         return result;
  2236.     };
  2237. }, function(module, exports, __webpack_require__) {
  2238.     "use strict";
  2239.     exports.__esModule = !0;
  2240.     exports.waitForProcesses = exports.waitForPID = exports.setProcessPriority = exports.killByPID = exports.getMyPID = exports.killProcess = undefined;
  2241.     var _shell = __webpack_require__(14), _wmi = __webpack_require__(16), getMyPID = (exports.killProcess = function(commandLineLike) {
  2242.         (0, _wmi.getWMIObjects)([ "ProcessId" ], "Win32_Process", 'NAME = "mshta.exe" AND CommandLine LIKE "' + commandLineLike + '"').forEach(function(_ref) {
  2243.             var ProcessId = _ref.ProcessId;
  2244.             _shell.WshShell.Run("cmd /c taskkill /f /t /pid " + ProcessId, 0, !0);
  2245.         });
  2246.     }, exports.getMyPID = function() {
  2247.         var pid = void 0;
  2248.         try {
  2249.             var temp = _shell.WshShell.Exec("rundll32 kernel32,Sleep");
  2250.             pid = (0, _wmi.getWMIObjects)([ "ParentProcessId" ], "Win32_Process", 'Handle = "' + temp.ProcessId + '"')[0].ParentProcessId;
  2251.             temp.Terminate();
  2252.         } catch (e) {}
  2253.         return pid;
  2254.     }), waitForPID = (exports.killByPID = function(pid) {
  2255.         var childs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !1, timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
  2256.         setTimeout(function() {
  2257.             var flags = [ "/f" ];
  2258.             if (childs) flags.push("/t");
  2259.             _shell.WshShell.Run('cmd /c "taskkill ' + flags.join(" ") + " /pid " + pid + '"', 0, !0);
  2260.         }, timeout);
  2261.     }, exports.setProcessPriority = function() {
  2262.         var priority = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 128;
  2263.         try {
  2264.             var pid = getMyPID(), colItems = _wmi.objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Handle = " + pid, "WQL");
  2265.             new Enumerator(colItems).item().SetPriority(priority);
  2266.         } catch (e) {}
  2267.     }, exports.waitForPID = function(pid) {
  2268.         var query = "SELECT * FROM Win32_Process WHERE ProcessId = " + pid;
  2269.         return new Promise(function(resolve) {
  2270.             var intervId = setInterval(function() {
  2271.                 if (0 === _wmi.objWMIService.ExecQuery(query, "WQL").Count) {
  2272.                     clearInterval(intervId);
  2273.                     resolve();
  2274.                 }
  2275.             }, 300);
  2276.         });
  2277.     });
  2278.     exports.waitForProcesses = function(where) {
  2279.         var promise = Promise.resolve();
  2280.         (0, _wmi.getWMIObjects)([ "ProcessId" ], "Win32_Process", where).forEach(function(_ref2) {
  2281.             var ProcessId = _ref2.ProcessId;
  2282.             promise = promise.then(function() {
  2283.                 return waitForPID(ProcessId);
  2284.             });
  2285.         });
  2286.         return promise;
  2287.     };
  2288. }, function(module, exports, __webpack_require__) {
  2289.     "use strict";
  2290.     module.exports = function(inputVendorName) {
  2291.         var defaultVendorName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "noname", toLower = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !0;
  2292.         if (!defaultVendorName) defaultVendorName = "noname";
  2293.         if (!inputVendorName) inputVendorName = defaultVendorName;
  2294.         var replacePattern = new RegExp([ "(\\s|,\\s?)inc(\\.|$)", "\\scorporation", "\\scorp(\\.|$)", "\\scomputer", "\\scomputers", "\\selectronics", "\\gmbh", "\\stechnology", "\\stechnologies", "\\sinternational", "\\sinformation", "\\ssemiconductor", "\\sco\\.,\\s?ltd\\.?", "\\sco(\\.|$)", "\\sltd", "\\slimited", "\\sag$", "\\ssa$", "\\sas$", "(\\s|-|\\.)(g|s|a)(\\.|$)" ].join("|"), "ig");
  2295.         if (toLower) inputVendorName = inputVendorName.toLowerCase();
  2296.         var trimedVendorName = inputVendorName.replace(replacePattern, "").replace(/[_\s]+/g, " ").replace(/^\s+|\s+$/g, "").replace(/^[.,]+|[.,]+$/g, "").replace(/^_+|_+$/g, "").replace(/^-+|-+$/g, "").replace(/"/g, "'").replace(/\s+/g, " ");
  2297.         return "" === trimedVendorName ? defaultVendorName : trimedVendorName;
  2298.     };
  2299. }, function(module, exports, __webpack_require__) {
  2300.     "use strict";
  2301.     exports.__esModule = !0;
  2302.     exports["default"] = new ActiveXObject("WScript.Shell");
  2303.     module.exports = exports["default"];
  2304. }, function(module, exports, __webpack_require__) {
  2305.     var UNSCOPABLES = __webpack_require__(7)("unscopables"), ArrayProto = Array.prototype;
  2306.     if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(28)(ArrayProto, UNSCOPABLES, {});
  2307.     module.exports = function(key) {
  2308.         ArrayProto[UNSCOPABLES][key] = !0;
  2309.     };
  2310. }, function(module, exports, __webpack_require__) {
  2311.     var cof = __webpack_require__(26);
  2312.     module.exports = Object("z").propertyIsEnumerable(0) ? Object : function(it) {
  2313.         return "String" == cof(it) ? it.split("") : Object(it);
  2314.     };
  2315. }, function(module, exports) {
  2316.     module.exports = {};
  2317. }, function(module, exports) {
  2318.     module.exports = !1;
  2319. }, function(module, exports, __webpack_require__) {
  2320.     var $keys = __webpack_require__(133), hiddenKeys = __webpack_require__(104).concat("length", "prototype");
  2321.     exports.f = Object.getOwnPropertyNames || function(O) {
  2322.         return $keys(O, hiddenKeys);
  2323.     };
  2324. }, function(module, exports, __webpack_require__) {
  2325.     var has = __webpack_require__(27), toObject = __webpack_require__(25), IE_PROTO = __webpack_require__(135)("IE_PROTO"), ObjectProto = Object.prototype;
  2326.     module.exports = Object.getPrototypeOf || function(O) {
  2327.         O = toObject(O);
  2328.         if (has(O, IE_PROTO)) return O[IE_PROTO];
  2329.         if ("function" == typeof O.constructor && O instanceof O.constructor) return O.constructor.prototype; else return O instanceof Object ? ObjectProto : null;
  2330.     };
  2331. }, function(module, exports) {
  2332.     exports.f = {}.propertyIsEnumerable;
  2333. }, function(module, exports, __webpack_require__) {
  2334.     var toInteger = __webpack_require__(50), max = Math.max, min = Math.min;
  2335.     module.exports = function(index, length) {
  2336.         index = toInteger(index);
  2337.         return index < 0 ? max(index + length, 0) : min(index, length);
  2338.     };
  2339. }, function(module, exports, __webpack_require__) {
  2340.     "use strict";
  2341.     if (__webpack_require__(12)) {
  2342.         var LIBRARY = __webpack_require__(69), global = __webpack_require__(2), fails = __webpack_require__(8), $export = __webpack_require__(0), $typed = __webpack_require__(158), $buffer = __webpack_require__(202), ctx = __webpack_require__(32), anInstance = __webpack_require__(91), propertyDesc = __webpack_require__(48), hide = __webpack_require__(28), redefineAll = __webpack_require__(94), toInteger = __webpack_require__(50), toLength = __webpack_require__(21), toIndex = __webpack_require__(73), toPrimitive = __webpack_require__(42), has = __webpack_require__(27), same = __webpack_require__(258), classof = __webpack_require__(81), isObject = __webpack_require__(10), toObject = __webpack_require__(25), isArrayIter = __webpack_require__(131), create = __webpack_require__(93), getPrototypeOf = __webpack_require__(71), gOPN = __webpack_require__(70).f, getIterFn = __webpack_require__(138), uid = __webpack_require__(51), wks = __webpack_require__(7), createArrayMethod = __webpack_require__(53), createArrayIncludes = __webpack_require__(92), speciesConstructor = __webpack_require__(136), ArrayIterators = __webpack_require__(203), Iterators = __webpack_require__(68), $iterDetect = __webpack_require__(108), setSpecies = __webpack_require__(82), arrayFill = __webpack_require__(188), arrayCopyWithin = __webpack_require__(246), $DP = __webpack_require__(17), $GOPD = __webpack_require__(37), dP = $DP.f, gOPD = $GOPD.f, RangeError = global.RangeError, TypeError = global.TypeError, Uint8Array = global.Uint8Array, ArrayProto = Array.prototype, $ArrayBuffer = $buffer.ArrayBuffer, $DataView = $buffer.DataView, arrayForEach = createArrayMethod(0), arrayFilter = createArrayMethod(2), arraySome = createArrayMethod(3), arrayEvery = createArrayMethod(4), arrayFind = createArrayMethod(5), arrayFindIndex = createArrayMethod(6), arrayIncludes = createArrayIncludes(!0), arrayIndexOf = createArrayIncludes(!1), arrayValues = ArrayIterators.values, arrayKeys = ArrayIterators.keys, arrayEntries = ArrayIterators.entries, arrayLastIndexOf = ArrayProto.lastIndexOf, arrayReduce = ArrayProto.reduce, arrayReduceRight = ArrayProto.reduceRight, arrayJoin = ArrayProto.join, arraySort = ArrayProto.sort, arraySlice = ArrayProto.slice, arrayToString = ArrayProto.toString, arrayToLocaleString = ArrayProto.toLocaleString, ITERATOR = wks("iterator"), TAG = wks("toStringTag"), TYPED_CONSTRUCTOR = uid("typed_constructor"), DEF_CONSTRUCTOR = uid("def_constructor"), ALL_CONSTRUCTORS = $typed.CONSTR, TYPED_ARRAY = $typed.TYPED, VIEW = $typed.VIEW, $map = createArrayMethod(1, function(O, length) {
  2343.             return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
  2344.         }), LITTLE_ENDIAN = fails(function() {
  2345.             return 1 === new Uint8Array(new Uint16Array([ 1 ]).buffer)[0];
  2346.         }), FORCED_SET = !!Uint8Array && !!Uint8Array.prototype.set && fails(function() {
  2347.             new Uint8Array(1).set({});
  2348.         }), strictToLength = function(it, SAME) {
  2349.             if (it === undefined) throw TypeError("Wrong length!");
  2350.             var number = +it, length = toLength(it);
  2351.             if (SAME && !same(number, length)) throw RangeError("Wrong length!");
  2352.             return length;
  2353.         }, toOffset = function(it, BYTES) {
  2354.             var offset = toInteger(it);
  2355.             if (offset < 0 || offset % BYTES) throw RangeError("Wrong offset!");
  2356.             return offset;
  2357.         }, validate = function(it) {
  2358.             if (isObject(it) && TYPED_ARRAY in it) return it;
  2359.             throw TypeError(it + " is not a typed array!");
  2360.         }, allocate = function(C, length) {
  2361.             if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) throw TypeError("It is not a typed array constructor!");
  2362.             return new C(length);
  2363.         }, speciesFromList = function(O, list) {
  2364.             return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
  2365.         }, fromList = function(C, list) {
  2366.             for (var index = 0, length = list.length, result = allocate(C, length); length > index; ) result[index] = list[index++];
  2367.             return result;
  2368.         }, addGetter = function(it, key, internal) {
  2369.             dP(it, key, {
  2370.                 get: function() {
  2371.                     return this._d[internal];
  2372.                 }
  2373.             });
  2374.         }, $from = function(source) {
  2375.             var i, length, values, result, step, iterator, O = toObject(source), aLen = arguments.length, mapfn = aLen > 1 ? arguments[1] : undefined, mapping = mapfn !== undefined, iterFn = getIterFn(O);
  2376.             if (iterFn != undefined && !isArrayIter(iterFn)) {
  2377.                 for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) values.push(step.value);
  2378.                 O = values;
  2379.             }
  2380.             if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);
  2381.             for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) result[i] = mapping ? mapfn(O[i], i) : O[i];
  2382.             return result;
  2383.         }, $of = function() {
  2384.             for (var index = 0, length = arguments.length, result = allocate(this, length); length > index; ) result[index] = arguments[index++];
  2385.             return result;
  2386.         }, TO_LOCALE_BUG = !!Uint8Array && fails(function() {
  2387.             arrayToLocaleString.call(new Uint8Array(1));
  2388.         }), $toLocaleString = function() {
  2389.             return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
  2390.         }, proto = {
  2391.             copyWithin: function(target, start) {
  2392.                 return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
  2393.             },
  2394.             every: function(callbackfn) {
  2395.                 return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  2396.             },
  2397.             fill: function(value) {
  2398.                 return arrayFill.apply(validate(this), arguments);
  2399.             },
  2400.             filter: function(callbackfn) {
  2401.                 return speciesFromList(this, arrayFilter(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined));
  2402.             },
  2403.             find: function(predicate) {
  2404.                 return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
  2405.             },
  2406.             findIndex: function(predicate) {
  2407.                 return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
  2408.             },
  2409.             forEach: function(callbackfn) {
  2410.                 arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  2411.             },
  2412.             indexOf: function(searchElement) {
  2413.                 return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
  2414.             },
  2415.             includes: function(searchElement) {
  2416.                 return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
  2417.             },
  2418.             join: function(separator) {
  2419.                 return arrayJoin.apply(validate(this), arguments);
  2420.             },
  2421.             lastIndexOf: function(searchElement) {
  2422.                 return arrayLastIndexOf.apply(validate(this), arguments);
  2423.             },
  2424.             map: function(mapfn) {
  2425.                 return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
  2426.             },
  2427.             reduce: function(callbackfn) {
  2428.                 return arrayReduce.apply(validate(this), arguments);
  2429.             },
  2430.             reduceRight: function(callbackfn) {
  2431.                 return arrayReduceRight.apply(validate(this), arguments);
  2432.             },
  2433.             reverse: function() {
  2434.                 for (var value, that = this, length = validate(that).length, middle = Math.floor(length / 2), index = 0; index < middle; ) {
  2435.                     value = that[index];
  2436.                     that[index++] = that[--length];
  2437.                     that[length] = value;
  2438.                 }
  2439.                 return that;
  2440.             },
  2441.             some: function(callbackfn) {
  2442.                 return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  2443.             },
  2444.             sort: function(comparefn) {
  2445.                 return arraySort.call(validate(this), comparefn);
  2446.             },
  2447.             subarray: function(begin, end) {
  2448.                 var O = validate(this), length = O.length, $begin = toIndex(begin, length);
  2449.                 return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(O.buffer, O.byteOffset + $begin * O.BYTES_PER_ELEMENT, toLength((end === undefined ? length : toIndex(end, length)) - $begin));
  2450.             }
  2451.         }, $slice = function(start, end) {
  2452.             return speciesFromList(this, arraySlice.call(validate(this), start, end));
  2453.         }, $set = function(arrayLike) {
  2454.             validate(this);
  2455.             var offset = toOffset(arguments[1], 1), length = this.length, src = toObject(arrayLike), len = toLength(src.length), index = 0;
  2456.             if (len + offset > length) throw RangeError("Wrong length!");
  2457.             for (;index < len; ) this[offset + index] = src[index++];
  2458.         }, $iterators = {
  2459.             entries: function() {
  2460.                 return arrayEntries.call(validate(this));
  2461.             },
  2462.             keys: function() {
  2463.                 return arrayKeys.call(validate(this));
  2464.             },
  2465.             values: function() {
  2466.                 return arrayValues.call(validate(this));
  2467.             }
  2468.         }, isTAIndex = function(target, key) {
  2469.             return isObject(target) && target[TYPED_ARRAY] && "symbol" != typeof key && key in target && String(+key) == String(key);
  2470.         }, $getDesc = function(target, key) {
  2471.             return isTAIndex(target, key = toPrimitive(key, !0)) ? propertyDesc(2, target[key]) : gOPD(target, key);
  2472.         }, $setDesc = function(target, key, desc) {
  2473.             if (isTAIndex(target, key = toPrimitive(key, !0)) && isObject(desc) && has(desc, "value") && !has(desc, "get") && !has(desc, "set") && !desc.configurable && (!has(desc, "writable") || desc.writable) && (!has(desc, "enumerable") || desc.enumerable)) {
  2474.                 target[key] = desc.value;
  2475.                 return target;
  2476.             } else return dP(target, key, desc);
  2477.         };
  2478.         if (!ALL_CONSTRUCTORS) {
  2479.             $GOPD.f = $getDesc;
  2480.             $DP.f = $setDesc;
  2481.         }
  2482.         $export($export.S + $export.F * !ALL_CONSTRUCTORS, "Object", {
  2483.             getOwnPropertyDescriptor: $getDesc,
  2484.             defineProperty: $setDesc
  2485.         });
  2486.         if (fails(function() {
  2487.             arrayToString.call({});
  2488.         })) arrayToString = arrayToLocaleString = function() {
  2489.             return arrayJoin.call(this);
  2490.         };
  2491.         var $TypedArrayPrototype$ = redefineAll({}, proto);
  2492.         redefineAll($TypedArrayPrototype$, $iterators);
  2493.         hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
  2494.         redefineAll($TypedArrayPrototype$, {
  2495.             slice: $slice,
  2496.             set: $set,
  2497.             constructor: function() {},
  2498.             toString: arrayToString,
  2499.             toLocaleString: $toLocaleString
  2500.         });
  2501.         addGetter($TypedArrayPrototype$, "buffer", "b");
  2502.         addGetter($TypedArrayPrototype$, "byteOffset", "o");
  2503.         addGetter($TypedArrayPrototype$, "byteLength", "l");
  2504.         addGetter($TypedArrayPrototype$, "length", "e");
  2505.         dP($TypedArrayPrototype$, TAG, {
  2506.             get: function() {
  2507.                 return this[TYPED_ARRAY];
  2508.             }
  2509.         });
  2510.         module.exports = function(KEY, BYTES, wrapper, CLAMPED) {
  2511.             CLAMPED = !!CLAMPED;
  2512.             var NAME = KEY + (CLAMPED ? "Clamped" : "") + "Array", ISNT_UINT8 = "Uint8Array" != NAME, GETTER = "get" + KEY, SETTER = "set" + KEY, TypedArray = global[NAME], Base = TypedArray || {}, TAC = TypedArray && getPrototypeOf(TypedArray), FORCED = !TypedArray || !$typed.ABV, O = {}, TypedArrayPrototype = TypedArray && TypedArray.prototype, getter = function(that, index) {
  2513.                 var data = that._d;
  2514.                 return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
  2515.             }, setter = function(that, index, value) {
  2516.                 var data = that._d;
  2517.                 if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 255 ? 255 : 255 & value;
  2518.                 data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
  2519.             }, addElement = function(that, index) {
  2520.                 dP(that, index, {
  2521.                     get: function() {
  2522.                         return getter(this, index);
  2523.                     },
  2524.                     set: function(value) {
  2525.                         return setter(this, index, value);
  2526.                     },
  2527.                     enumerable: !0
  2528.                 });
  2529.             };
  2530.             if (FORCED) {
  2531.                 TypedArray = wrapper(function(that, data, $offset, $length) {
  2532.                     anInstance(that, TypedArray, NAME, "_d");
  2533.                     var buffer, byteLength, length, klass, index = 0, offset = 0;
  2534.                     if (!isObject(data)) {
  2535.                         length = strictToLength(data, !0);
  2536.                         byteLength = length * BYTES;
  2537.                         buffer = new $ArrayBuffer(byteLength);
  2538.                     } else if (data instanceof $ArrayBuffer || "ArrayBuffer" == (klass = classof(data)) || "SharedArrayBuffer" == klass) {
  2539.                         buffer = data;
  2540.                         offset = toOffset($offset, BYTES);
  2541.                         var $len = data.byteLength;
  2542.                         if ($length === undefined) {
  2543.                             if ($len % BYTES) throw RangeError("Wrong length!");
  2544.                             byteLength = $len - offset;
  2545.                             if (byteLength < 0) throw RangeError("Wrong length!");
  2546.                         } else {
  2547.                             byteLength = toLength($length) * BYTES;
  2548.                             if (byteLength + offset > $len) throw RangeError("Wrong length!");
  2549.                         }
  2550.                         length = byteLength / BYTES;
  2551.                     } else if (TYPED_ARRAY in data) return fromList(TypedArray, data); else return $from.call(TypedArray, data);
  2552.                     hide(that, "_d", {
  2553.                         b: buffer,
  2554.                         o: offset,
  2555.                         l: byteLength,
  2556.                         e: length,
  2557.                         v: new $DataView(buffer)
  2558.                     });
  2559.                     for (;index < length; ) addElement(that, index++);
  2560.                 });
  2561.                 TypedArrayPrototype = TypedArray.prototype = create($TypedArrayPrototype$);
  2562.                 hide(TypedArrayPrototype, "constructor", TypedArray);
  2563.             } else if (!$iterDetect(function(iter) {
  2564.                 new TypedArray(null);
  2565.                 new TypedArray(iter);
  2566.             }, !0)) {
  2567.                 TypedArray = wrapper(function(that, data, $offset, $length) {
  2568.                     anInstance(that, TypedArray, NAME);
  2569.                     var klass;
  2570.                     if (!isObject(data)) return new Base(strictToLength(data, ISNT_UINT8));
  2571.                     if (data instanceof $ArrayBuffer || "ArrayBuffer" == (klass = classof(data)) || "SharedArrayBuffer" == klass) return $length !== undefined ? new Base(data, toOffset($offset, BYTES), $length) : $offset !== undefined ? new Base(data, toOffset($offset, BYTES)) : new Base(data);
  2572.                     if (TYPED_ARRAY in data) return fromList(TypedArray, data); else return $from.call(TypedArray, data);
  2573.                 });
  2574.                 arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function(key) {
  2575.                     if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);
  2576.                 });
  2577.                 TypedArray.prototype = TypedArrayPrototype;
  2578.                 if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;
  2579.             }
  2580.             var $nativeIterator = TypedArrayPrototype[ITERATOR], CORRECT_ITER_NAME = !!$nativeIterator && ("values" == $nativeIterator.name || $nativeIterator.name == undefined), $iterator = $iterators.values;
  2581.             hide(TypedArray, TYPED_CONSTRUCTOR, !0);
  2582.             hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
  2583.             hide(TypedArrayPrototype, VIEW, !0);
  2584.             hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
  2585.             if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) dP(TypedArrayPrototype, TAG, {
  2586.                 get: function() {
  2587.                     return NAME;
  2588.                 }
  2589.             });
  2590.             O[NAME] = TypedArray;
  2591.             $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
  2592.             $export($export.S, NAME, {
  2593.                 BYTES_PER_ELEMENT: BYTES,
  2594.                 from: $from,
  2595.                 of: $of
  2596.             });
  2597.             if (!("BYTES_PER_ELEMENT" in TypedArrayPrototype)) hide(TypedArrayPrototype, "BYTES_PER_ELEMENT", BYTES);
  2598.             $export($export.P, NAME, proto);
  2599.             setSpecies(NAME);
  2600.             $export($export.P + $export.F * FORCED_SET, NAME, {
  2601.                 set: $set
  2602.             });
  2603.             $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
  2604.             $export($export.P + $export.F * (TypedArrayPrototype.toString != arrayToString), NAME, {
  2605.                 toString: arrayToString
  2606.             });
  2607.             $export($export.P + $export.F * fails(function() {
  2608.                 new TypedArray(1).slice();
  2609.             }), NAME, {
  2610.                 slice: $slice
  2611.             });
  2612.             $export($export.P + $export.F * (fails(function() {
  2613.                 return [ 1, 2 ].toLocaleString() != new TypedArray([ 1, 2 ]).toLocaleString();
  2614.             }) || !fails(function() {
  2615.                 TypedArrayPrototype.toLocaleString.call([ 1, 2 ]);
  2616.             })), NAME, {
  2617.                 toLocaleString: $toLocaleString
  2618.             });
  2619.             Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
  2620.             if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);
  2621.         };
  2622.     } else module.exports = function() {};
  2623. }, function(module, exports, __webpack_require__) {
  2624.     function isArrayLike(value) {
  2625.         return null != value && isLength(getLength(value));
  2626.     }
  2627.     var getLength = __webpack_require__(277), isLength = __webpack_require__(114);
  2628.     module.exports = isArrayLike;
  2629. }, function(module, exports, __webpack_require__) {
  2630.     function toObject(value) {
  2631.         return isObject(value) ? value : Object(value);
  2632.     }
  2633.     var isObject = __webpack_require__(39);
  2634.     module.exports = toObject;
  2635. }, function(module, exports, __webpack_require__) {
  2636.     "use strict";
  2637.     function _noMeasure(objName, fnName, func) {
  2638.         return func;
  2639.     }
  2640.     var ReactPerf = {
  2641.         enableMeasure: !1,
  2642.         storedMeasure: _noMeasure,
  2643.         measure: function(objName, fnName, func) {
  2644.             if (!0) {
  2645.                 var measuredFunc = null;
  2646.                 return function() {
  2647.                     if (ReactPerf.enableMeasure) {
  2648.                         if (!measuredFunc) measuredFunc = ReactPerf.storedMeasure(objName, fnName, func);
  2649.                         return measuredFunc.apply(this, arguments);
  2650.                     }
  2651.                     return func.apply(this, arguments);
  2652.                 };
  2653.             }
  2654.             return func;
  2655.         },
  2656.         injection: {
  2657.             injectMeasure: function(measure) {
  2658.                 ReactPerf.storedMeasure = measure;
  2659.             }
  2660.         }
  2661.     };
  2662.     module.exports = ReactPerf;
  2663. }, function(module, exports, __webpack_require__) {
  2664.     function makeEmptyFunction(arg) {
  2665.         return function() {
  2666.             return arg;
  2667.         };
  2668.     }
  2669.     function emptyFunction() {}
  2670.     __webpack_require__(630)(emptyFunction, {
  2671.         thatReturns: makeEmptyFunction,
  2672.         thatReturnsFalse: makeEmptyFunction(!1),
  2673.         thatReturnsTrue: makeEmptyFunction(!0),
  2674.         thatReturnsNull: makeEmptyFunction(null),
  2675.         thatReturnsThis: function() {
  2676.             return this;
  2677.         },
  2678.         thatReturnsArgument: function(arg) {
  2679.             return arg;
  2680.         }
  2681.     });
  2682.     module.exports = emptyFunction;
  2683. }, function(module, exports) {
  2684.     var g;
  2685.     g = function() {
  2686.         return this;
  2687.     }();
  2688.     try {
  2689.         g = g || Function("return this")() || (0, eval)("this");
  2690.     } catch (e) {
  2691.         if ("object" == typeof window) g = window;
  2692.     }
  2693.     module.exports = g;
  2694. }, function(module, exports, __webpack_require__) {
  2695.     "use strict";
  2696.     exports.__esModule = !0;
  2697.     var _wmi = __webpack_require__(16), _wmiRegistry = __webpack_require__(90), _diagnosticsMap = __webpack_require__(185), _diagnosticsMap2 = function(obj) {
  2698.         return obj && obj.__esModule ? obj : {
  2699.             "default": obj
  2700.         };
  2701.     }(_diagnosticsMap), collectWMIQueries = function(diagMap) {
  2702.         var res = {};
  2703.         Object.keys(diagMap).forEach(function(section) {
  2704.             Object.entries(diagMap[section]).forEach(function(_ref) {
  2705.                 var svalue = (_ref[0], _ref[1]);
  2706.                 switch (svalue.type) {
  2707.                   case "object":
  2708.                     svalue.groups.forEach(function(group) {
  2709.                         group.fields.forEach(function(field) {
  2710.                             if (field.wmi) {
  2711.                                 if (!res[field.wmi.source]) res[field.wmi.source] = [];
  2712.                                 field.wmi.fields.forEach(function(f) {
  2713.                                     if (-1 === res[field.wmi.source].indexOf(f)) res[field.wmi.source].push(f);
  2714.                                 });
  2715.                             }
  2716.                         });
  2717.                     });
  2718.                     break;
  2719.  
  2720.                   case "array":
  2721.                     if (svalue.wmi) {
  2722.                         if (!res[svalue.wmi.source]) res[svalue.wmi.source] = [];
  2723.                         svalue.wmi.fields.forEach(function(field) {
  2724.                             if (-1 === res[svalue.wmi.source].indexOf(field.field)) res[svalue.wmi.source].push(field.field);
  2725.                         });
  2726.                     }
  2727.                 }
  2728.             });
  2729.         });
  2730.         return res;
  2731.     }, cacheWMI = function(diagMap) {
  2732.         var wmis = {}, res = {};
  2733.         Object.entries(collectWMIQueries(diagMap)).forEach(function(_ref2) {
  2734.             var source = _ref2[0], fields = _ref2[1], _source$split = source.split(" WHERE "), path = _source$split[0], where = _source$split[1], parts = path.split(":");
  2735.             if (2 === parts.length) {
  2736.                 if (!wmis[parts[0]]) try {
  2737.                     wmis[parts[0]] = new ActiveXObject("WbemScripting.SWbemLocator").ConnectServer(null, parts[0]);
  2738.                 } catch (e) {}
  2739.                 res[source] = (0, _wmi.getWMIObjects)(fields, parts[1], where, wmis[parts[0]]);
  2740.             } else res[source] = (0, _wmi.getWMIObjects)(fields, parts[0], where);
  2741.         });
  2742.         return res;
  2743.     }, filterDiagnosticsMap = function(target) {
  2744.         var res = {};
  2745.         Object.keys(_diagnosticsMap2["default"]).forEach(function(section) {
  2746.             Object.entries(_diagnosticsMap2["default"][section]).forEach(function(_ref3) {
  2747.                 var subsection = _ref3[0], svalue = _ref3[1];
  2748.                 if (!target || !svalue.targets || -1 !== svalue.targets.indexOf(target)) {
  2749.                     if (!res[section]) res[section] = {};
  2750.                     res[section][subsection] = svalue;
  2751.                 } else switch (svalue.type) {
  2752.                   case "object":
  2753.                     var resGroups = [];
  2754.                     svalue.groups.forEach(function(group) {
  2755.                         var resFields = [];
  2756.                         group.fields.forEach(function(field) {
  2757.                             if (field.targets && -1 !== field.targets.indexOf(target)) resFields.push(field);
  2758.                         });
  2759.                         if (resFields.length) {
  2760.                             var resGroup = {
  2761.                                 name: group.name,
  2762.                                 fields: resFields
  2763.                             };
  2764.                             resGroups.push(resGroup);
  2765.                         }
  2766.                     });
  2767.                     if (resGroups.length) {
  2768.                         if (!res[section]) res[section] = {};
  2769.                         res[section][subsection] = {
  2770.                             type: "object",
  2771.                             groups: resGroups
  2772.                         };
  2773.                     }
  2774.                     break;
  2775.  
  2776.                   case "array":
  2777.                     [ "wmi", "reg" ].forEach(function(src) {
  2778.                         if (svalue[src]) {
  2779.                             var resFields = [];
  2780.                             svalue[src].fields.forEach(function(field) {
  2781.                                 if (field.targets && -1 !== field.targets.indexOf(target)) resFields.push(field);
  2782.                             });
  2783.                             if (resFields.length) {
  2784.                                 if (!res[section]) res[section] = {};
  2785.                                 res[section][subsection] = {
  2786.                                     type: "array"
  2787.                                 };
  2788.                                 res[section][subsection][src] = {
  2789.                                     source: svalue[src].source,
  2790.                                     fields: resFields
  2791.                                 };
  2792.                             }
  2793.                         }
  2794.                     });
  2795.                 }
  2796.             });
  2797.         });
  2798.         return res;
  2799.     };
  2800.     exports["default"] = function(target) {
  2801.         var res = {}, diagMap = filterDiagnosticsMap(target), cache = cacheWMI(diagMap);
  2802.         Object.keys(diagMap).forEach(function(section) {
  2803.             res[section] = {};
  2804.             Object.entries(diagMap[section]).forEach(function(_ref4) {
  2805.                 var subsection = _ref4[0], svalue = _ref4[1];
  2806.                 res[section][subsection] = {};
  2807.                 switch (svalue.type) {
  2808.                   case "object":
  2809.                     svalue.groups.forEach(function(group) {
  2810.                         svalue[group.name] = {};
  2811.                         var sres = svalue[group.name];
  2812.                         group.fields.forEach(function(field) {
  2813.                             try {
  2814.                                 if (field.wmi) {
  2815.                                     var wmiRes = cache[field.wmi.source];
  2816.                                     if (field.wmi.filter) wmiRes = wmiRes.filter(field.wmi.filter);
  2817.                                     if (field.format) wmiRes = wmiRes.map(field.format); else wmiRes = wmiRes.map(function(v) {
  2818.                                         return v[field.wmi.fields[0]];
  2819.                                     });
  2820.                                     if (field.multi) sres[field.name] = wmiRes; else sres[field.name] = wmiRes ? wmiRes[0] : "";
  2821.                                 } else if (field.reg) {
  2822.                                     for (var sources = Array.isArray(field.reg.source) ? field.reg.source : [ field.reg.source ], regRes = void 0, _iterator = sources, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator](); ;) {
  2823.                                         var _ref5;
  2824.                                         if (_isArray) {
  2825.                                             if (_i >= _iterator.length) break;
  2826.                                             _ref5 = _iterator[_i++];
  2827.                                         } else {
  2828.                                             _i = _iterator.next();
  2829.                                             if (_i.done) break;
  2830.                                             _ref5 = _i.value;
  2831.                                         }
  2832.                                         var source = _ref5, _source$split2 = source.split("\\"), sect = _source$split2[0], path = _source$split2.slice(1), key = path.splice(-1, 1);
  2833.                                         path = path.join("\\");
  2834.                                         var wmiReg = _wmiRegistry.wmiRegistry;
  2835.                                         if (sect.endsWith("64")) {
  2836.                                             sect = sect.slice(0, -2);
  2837.                                             wmiReg = _wmiRegistry.wmiRegistry64;
  2838.                                         }
  2839.                                         regRes = wmiReg.GetStringValue(wmiReg[sect], path, key);
  2840.                                         if (!regRes) regRes = wmiReg.GetDWORDValue(wmiReg[sect], path, key);
  2841.                                         if (regRes) break;
  2842.                                     }
  2843.                                     if (field.format) sres[field.name] = field.format(regRes); else sres[field.name] = regRes;
  2844.                                 } else if (field.format) sres[field.name] = field.format(); else sres[field.name] = "";
  2845.                                 res[section][subsection][group.name] = sres;
  2846.                             } catch (e) {
  2847.                                 res[section][subsection][group.name] = "";
  2848.                             }
  2849.                         });
  2850.                     });
  2851.                     break;
  2852.  
  2853.                   case "array":
  2854.                     try {
  2855.                         if (svalue.wmi) {
  2856.                             var wmiRes = cache[svalue.wmi.source];
  2857.                             if (svalue.wmi.filter) wmiRes = wmiRes.filter(svalue.wmi.filter);
  2858.                             var outputArr = wmiRes.map(function(resItem) {
  2859.                                 var outputObj = {};
  2860.                                 svalue.wmi.fields.forEach(function(fieldsItem) {
  2861.                                     if (resItem[fieldsItem.field]) {
  2862.                                         var fieldVal = resItem[fieldsItem.field];
  2863.                                         if (fieldsItem.format) fieldVal = fieldsItem.format(fieldVal);
  2864.                                         outputObj[fieldsItem.name] = fieldVal;
  2865.                                     }
  2866.                                 });
  2867.                                 return outputObj;
  2868.                             });
  2869.                             if (svalue.format) outputArr = svalue.format(outputArr);
  2870.                             res[section][subsection] = outputArr;
  2871.                         } else if (svalue.reg) {
  2872.                             var _outputArr = [], sourceArr = Array.isArray(svalue.reg.source) ? svalue.reg.source : [ svalue.reg.source ];
  2873.                             sourceArr.forEach(function(source) {
  2874.                                 var _source$split3 = source.split("\\"), sect = _source$split3[0], path = _source$split3.slice(1);
  2875.                                 path = path.join("\\");
  2876.                                 var wmiReg = _wmiRegistry.wmiRegistry;
  2877.                                 if (sect.endsWith("64")) {
  2878.                                     sect = sect.slice(0, -2);
  2879.                                     wmiReg = _wmiRegistry.wmiRegistry64;
  2880.                                 }
  2881.                                 wmiReg.EnumKey(wmiReg[sect], path).forEach(function(regSection) {
  2882.                                     var outputObj = {};
  2883.                                     svalue.reg.fields.forEach(function(fieldsItem) {
  2884.                                         var fieldVal = void 0;
  2885.                                         if ("RegPath" === fieldsItem.field) fieldVal = "" + source + regSection + "\\"; else {
  2886.                                             fieldVal = wmiReg.GetStringValue(wmiReg[sect], path + "\\" + regSection, fieldsItem.field);
  2887.                                             if (!fieldVal) fieldVal = wmiReg.GetDWORDValue(wmiReg[sect], path + "\\" + regSection, fieldsItem.field);
  2888.                                         }
  2889.                                         if (fieldsItem.format) fieldVal = fieldsItem.format(fieldVal);
  2890.                                         outputObj[fieldsItem.name] = fieldVal;
  2891.                                     });
  2892.                                     _outputArr.push(outputObj);
  2893.                                 });
  2894.                             });
  2895.                             _outputArr = _outputArr.filter(function(obj) {
  2896.                                 return Object.values(obj).some(function(v) {
  2897.                                     return !!v;
  2898.                                 });
  2899.                             });
  2900.                             if (svalue.reg.filter) _outputArr = _outputArr.filter(svalue.reg.filter);
  2901.                             if (svalue.format) _outputArr = svalue.format(_outputArr);
  2902.                             res[section][subsection] = _outputArr;
  2903.                         }
  2904.                     } catch (e) {
  2905.                         res[section][subsection] = [];
  2906.                     }
  2907.                 }
  2908.             });
  2909.         });
  2910.         return res;
  2911.     };
  2912.     module.exports = exports["default"];
  2913. }, function(module, exports, __webpack_require__) {
  2914.     var cof = __webpack_require__(26), TAG = __webpack_require__(7)("toStringTag"), ARG = "Arguments" == cof(function() {
  2915.         return arguments;
  2916.     }()), tryGet = function(it, key) {
  2917.         try {
  2918.             return it[key];
  2919.         } catch (e) {}
  2920.     };
  2921.     module.exports = function(it) {
  2922.         var O, T, B;
  2923.         return it === undefined ? "Undefined" : null === it ? "Null" : "string" == typeof (T = tryGet(O = Object(it), TAG)) ? T : ARG ? cof(O) : "Object" == (B = cof(O)) && "function" == typeof O.callee ? "Arguments" : B;
  2924.     };
  2925. }, function(module, exports, __webpack_require__) {
  2926.     "use strict";
  2927.     var global = __webpack_require__(2), dP = __webpack_require__(17), DESCRIPTORS = __webpack_require__(12), SPECIES = __webpack_require__(7)("species");
  2928.     module.exports = function(KEY) {
  2929.         var C = global[KEY];
  2930.         if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
  2931.             configurable: !0,
  2932.             get: function() {
  2933.                 return this;
  2934.             }
  2935.         });
  2936.     };
  2937. }, function(module, exports, __webpack_require__) {
  2938.     var def = __webpack_require__(17).f, has = __webpack_require__(27), TAG = __webpack_require__(7)("toStringTag");
  2939.     module.exports = function(it, tag, stat) {
  2940.         if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {
  2941.             configurable: !0,
  2942.             value: tag
  2943.         });
  2944.     };
  2945. }, function(module, exports, __webpack_require__) {
  2946.     "use strict";
  2947.     var invariant = __webpack_require__(4), oneArgumentPooler = function(copyFieldsFrom) {
  2948.         var Klass = this;
  2949.         if (Klass.instancePool.length) {
  2950.             var instance = Klass.instancePool.pop();
  2951.             Klass.call(instance, copyFieldsFrom);
  2952.             return instance;
  2953.         } else return new Klass(copyFieldsFrom);
  2954.     }, twoArgumentPooler = function(a1, a2) {
  2955.         var Klass = this;
  2956.         if (Klass.instancePool.length) {
  2957.             var instance = Klass.instancePool.pop();
  2958.             Klass.call(instance, a1, a2);
  2959.             return instance;
  2960.         } else return new Klass(a1, a2);
  2961.     }, threeArgumentPooler = function(a1, a2, a3) {
  2962.         var Klass = this;
  2963.         if (Klass.instancePool.length) {
  2964.             var instance = Klass.instancePool.pop();
  2965.             Klass.call(instance, a1, a2, a3);
  2966.             return instance;
  2967.         } else return new Klass(a1, a2, a3);
  2968.     }, fiveArgumentPooler = function(a1, a2, a3, a4, a5) {
  2969.         var Klass = this;
  2970.         if (Klass.instancePool.length) {
  2971.             var instance = Klass.instancePool.pop();
  2972.             Klass.call(instance, a1, a2, a3, a4, a5);
  2973.             return instance;
  2974.         } else return new Klass(a1, a2, a3, a4, a5);
  2975.     }, standardReleaser = function(instance) {
  2976.         var Klass = this;
  2977.         !0 ? invariant(instance instanceof Klass, "Trying to release an instance into a pool of a different type.") : invariant(instance instanceof Klass);
  2978.         if (instance.destructor) instance.destructor();
  2979.         if (Klass.instancePool.length < Klass.poolSize) Klass.instancePool.push(instance);
  2980.     }, DEFAULT_POOLER = oneArgumentPooler, addPoolingTo = function(CopyConstructor, pooler) {
  2981.         var NewKlass = CopyConstructor;
  2982.         NewKlass.instancePool = [];
  2983.         NewKlass.getPooled = pooler || DEFAULT_POOLER;
  2984.         if (!NewKlass.poolSize) NewKlass.poolSize = 10;
  2985.         NewKlass.release = standardReleaser;
  2986.         return NewKlass;
  2987.     }, PooledClass = {
  2988.         addPoolingTo: addPoolingTo,
  2989.         oneArgumentPooler: oneArgumentPooler,
  2990.         twoArgumentPooler: twoArgumentPooler,
  2991.         threeArgumentPooler: threeArgumentPooler,
  2992.         fiveArgumentPooler: fiveArgumentPooler
  2993.     };
  2994.     module.exports = PooledClass;
  2995. }, function(module, exports) {
  2996.     var keyOf = function(oneKeyObj) {
  2997.         var key;
  2998.         for (key in oneKeyObj) if (oneKeyObj.hasOwnProperty(key)) return key;
  2999.         return null;
  3000.     };
  3001.     module.exports = keyOf;
  3002. }, function(module, exports, __webpack_require__) {
  3003.     "use strict";
  3004.     function _interopRequireDefault(obj) {
  3005.         return obj && obj.__esModule ? obj : {
  3006.             "default": obj
  3007.         };
  3008.     }
  3009.     function _asyncToGenerator(fn) {
  3010.         return function() {
  3011.             var gen = fn.apply(this, arguments);
  3012.             return new Promise(function(resolve, reject) {
  3013.                 function step(key, arg) {
  3014.                     try {
  3015.                         var info = gen[key](arg), value = info.value;
  3016.                     } catch (error) {
  3017.                         reject(error);
  3018.                         return;
  3019.                     }
  3020.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  3021.                         step("next", value);
  3022.                     }, function(err) {
  3023.                         step("throw", err);
  3024.                     });
  3025.                 }
  3026.                 return step("next");
  3027.             });
  3028.         };
  3029.     }
  3030.     function _classCallCheck(instance, Constructor) {
  3031.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  3032.     }
  3033.     exports.__esModule = !0;
  3034.     var _extends = Object.assign || function(target) {
  3035.         for (var i = 1; i < arguments.length; i++) {
  3036.             var source = arguments[i];
  3037.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  3038.         }
  3039.         return target;
  3040.     }, _system = __webpack_require__(9), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _uniq = __webpack_require__(159), _uniq2 = _interopRequireDefault(_uniq), _pick = __webpack_require__(282), _pick2 = _interopRequireDefault(_pick), _isEqual = __webpack_require__(572), _isEqual2 = _interopRequireDefault(_isEqual), _checkSoft = __webpack_require__(147), _prepareData = __webpack_require__(181), _prepareData2 = _interopRequireDefault(_prepareData), _getMinimalDriversState = __webpack_require__(762), _getMinimalDriversState2 = _interopRequireDefault(_getMinimalDriversState), _getDeviceProblem = __webpack_require__(148), _getDeviceProblem2 = _interopRequireDefault(_getDeviceProblem), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), _getChromeExtensions = __webpack_require__(235), _getChromeExtensions2 = _interopRequireDefault(_getChromeExtensions), path = _system.AppData + "\\DRPSu\\diagnostics", checkProgram = function(program) {
  3041.         if (/microsoft/i.test(program.Program)) return !1;
  3042.         if (/microsoft/i.test(program.Publisher)) return !1;
  3043.         if (!program.Uninstaller) return !1;
  3044.         if (/dpinst/i.test(program.Uninstaller)) return !1; else return !0;
  3045.     }, SystemScanner = function() {
  3046.         function SystemScanner() {
  3047.             _classCallCheck(this, SystemScanner);
  3048.             this.timeout = 12e4;
  3049.             this.systemScanCount = 0;
  3050.         }
  3051.         SystemScanner.prototype.getDriversPath = function() {
  3052.             return _system.AppData + "\\DRPSu\\DRIVERS";
  3053.         };
  3054.         SystemScanner.prototype.run = function() {
  3055.             function run() {
  3056.                 return _ref.apply(this, arguments);
  3057.             }
  3058.             var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
  3059.                 return regeneratorRuntime.wrap(function(_context) {
  3060.                     for (;;) switch (_context.prev = _context.next) {
  3061.                       case 0:
  3062.                         _context.prev = 0;
  3063.                         _logs2["default"].info("system scanner run", {}, "systemScanner:run");
  3064.                         _context.next = 4;
  3065.                         return this.detectDevices();
  3066.  
  3067.                       case 4:
  3068.                         _context.next = 6;
  3069.                         return this.detectCurrentDrivers();
  3070.  
  3071.                       case 6:
  3072.                         window.store.dispatch({
  3073.                             type: "LOADING_STATUS_UPDATED",
  3074.                             payload: {
  3075.                                 status: "system_scan_finished"
  3076.                             }
  3077.                         });
  3078.                         _context.prev = 7;
  3079.                         _context.next = 10;
  3080.                         return this.queryAPI();
  3081.  
  3082.                       case 10:
  3083.                         _context.next = 16;
  3084.                         break;
  3085.  
  3086.                       case 12:
  3087.                         _context.prev = 12;
  3088.                         _context.t0 = _context["catch"](7);
  3089.                         _logs2["default"].error({
  3090.                             action: "driver api failed"
  3091.                         }, {
  3092.                             error: _context.t0
  3093.                         }, "driversApi:request:failed", [ "api", "drivers" ]);
  3094.                         throw _context.t0;
  3095.  
  3096.                       case 16:
  3097.                         window.store.dispatch({
  3098.                             type: "DRIVERS_SCAN_SUCCESS",
  3099.                             payload: this.driversData
  3100.                         });
  3101.                         try {
  3102.                             this.sendDriversStatistics();
  3103.                         } catch (error) {
  3104.                             _logs2["default"].error("failed sendDriversStatistics", {
  3105.                                 error: error
  3106.                             }, "driversStatistics:send:failed");
  3107.                         }
  3108.                         _logs2["default"].info("system scanner drivers state received", (0, _getMinimalDriversState2["default"])(), "systemScanner:drivers:state:received");
  3109.                         _context.next = 21;
  3110.                         return this.detectInstalledPrograms();
  3111.  
  3112.                       case 21:
  3113.                         _context.next = 23;
  3114.                         return this.patchInstalledPrograms();
  3115.  
  3116.                       case 23:
  3117.                         _context.prev = 23;
  3118.                         window.store.dispatch({
  3119.                             type: "LOADING_STATUS_UPDATED",
  3120.                             payload: {
  3121.                                 status: "installed_programs_scan_finished"
  3122.                             }
  3123.                         });
  3124.                         _context.next = 27;
  3125.                         return this.queryProtectAPI();
  3126.  
  3127.                       case 27:
  3128.                         _context.next = 33;
  3129.                         break;
  3130.  
  3131.                       case 29:
  3132.                         _context.prev = 29;
  3133.                         _context.t1 = _context["catch"](23);
  3134.                         _logs2["default"].error({
  3135.                             action: "protect api failed"
  3136.                         }, {
  3137.                             error: _context.t1
  3138.                         }, "protectApi:request:failed");
  3139.                         this.installedPrograms = null;
  3140.  
  3141.                       case 33:
  3142.                         window.store.dispatch({
  3143.                             type: "INSTALLED_PROGRAMS_SCAN_FINISHED",
  3144.                             payload: this.installedPrograms
  3145.                         });
  3146.                         try {
  3147.                             this.sendUtilitiesInfo();
  3148.                         } catch (error) {
  3149.                             _logs2["default"].error("Utilities - failed send info", {
  3150.                                 error: error
  3151.                             }, "utilities:send:failed");
  3152.                         }
  3153.                         try {
  3154.                             this.sendExtensionsInfo();
  3155.                         } catch (error) {
  3156.                             _logs2["default"].error("Extensions - failed send info", {
  3157.                                 error: error
  3158.                             }, "extensions:send:failed");
  3159.                         }
  3160.                         window.snapshot.create();
  3161.                         document.onkeydown = function(e) {
  3162.                             e = e || window.event;
  3163.                             var keyCode = e.keyCode ? e.keyCode : e.which;
  3164.                             if (e.ctrlKey && keyCode === "L".charCodeAt(0)) {
  3165.                                 window.snapshot.apply();
  3166.                                 return !1;
  3167.                             }
  3168.                         };
  3169.                         this.systemScanCount += 1;
  3170.                         this.timeout = 1;
  3171.                         _logs2["default"].info({
  3172.                             action: "system scanned"
  3173.                         }, {}, "system:scanned");
  3174.                         delete this.lastScanError;
  3175.                         _context.next = 48;
  3176.                         break;
  3177.  
  3178.                       case 44:
  3179.                         _context.prev = 44;
  3180.                         _context.t2 = _context["catch"](0);
  3181.                         this.lastScanError = _context.t2;
  3182.                         throw _context.t2;
  3183.  
  3184.                       case 48:
  3185.                       case "end":
  3186.                         return _context.stop();
  3187.                     }
  3188.                 }, _callee, this, [ [ 0, 44 ], [ 7, 12 ], [ 23, 29 ] ]);
  3189.             }));
  3190.             return run;
  3191.         }();
  3192.         SystemScanner.prototype.waitFor = function(task) {
  3193.             var cmd = '"' + _system.WshShell.CurrentDirectory + '\\prepare.js" ' + task, query = [ 'Name = "wscript.exe"', 'CommandLine LIKE "%' + JSON.stringify(cmd).slice(1, -1) + '"' ].join(" AND ");
  3194.             return (0, _system.waitForProcesses)(query);
  3195.         };
  3196.         SystemScanner.prototype.fetchData = function(task) {
  3197.             var _this = this, load = function() {
  3198.                 return (0, _system.queryFile)(path + "\\" + task + ".json", _this.timeout);
  3199.             };
  3200.             return Promise["try"](load)["catch"](function() {
  3201.                 return _this.waitFor(task).then(load);
  3202.             }).then(function(json) {
  3203.                 var data = JSON.parse(json);
  3204.                 _logs2["default"].info(task + ".json fetched", {
  3205.                     task: task
  3206.                 }, "systemScanner:quickstartJson:collected", [ "quickstart" ]);
  3207.                 _logs2["default"].debug(task + ".json data", {
  3208.                     task: task,
  3209.                     data: data
  3210.                 }, "systemScanner:quickstartJson:data", [ "quickstart" ]);
  3211.                 return data;
  3212.             })["catch"](function(error) {
  3213.                 _logs2["default"].warn(task + ".json error", {
  3214.                     task: task,
  3215.                     error: error
  3216.                 }, "systemScanner:quickstartJson:failed", [ "quickstart" ]);
  3217.                 var data = (0, _prepareData2["default"])(task);
  3218.                 _logs2["default"].debug(task + " data from WMI", {
  3219.                     task: task,
  3220.                     data: data
  3221.                 }, "systemScanner:wmi:collected", [ "quickstart", "wmi" ]);
  3222.                 return data;
  3223.             });
  3224.         };
  3225.         SystemScanner.prototype.markIfProblemDevice = function(device) {
  3226.             var problem = (0, _getDeviceProblem2["default"])(device.deviceId);
  3227.             if (problem) device.isProblemDevice = problem;
  3228.         };
  3229.         SystemScanner.prototype.detectDevices = function() {
  3230.             var _this2 = this;
  3231.             return this.fetchData("hardware").then(function(query) {
  3232.                 query.devices.map(_this2.markIfProblemDevice);
  3233.                 Object.assign(_this2, {
  3234.                     query: _extends({}, query, {
  3235.                         useRank: _settings2["default"].get("driverSelection.useMachineLearning").value
  3236.                     }),
  3237.                     devices: query.devices
  3238.                 });
  3239.             });
  3240.         };
  3241.         SystemScanner.prototype.detectCurrentDrivers = function() {
  3242.             var _this3 = this;
  3243.             return this.fetchData("drivers").then(function(currentDrivers) {
  3244.                 Object.assign(_this3, {
  3245.                     currentDrivers: currentDrivers
  3246.                 });
  3247.             });
  3248.         };
  3249.         SystemScanner.prototype.queryAPI = function() {
  3250.             var _this4 = this;
  3251.             return window.delorean.run(this.query).then(function(driversJSON) {
  3252.                 _this4.driversJSON = driversJSON;
  3253.                 _logs2["default"].info("delorean response received", {}, "driversApi:response:beforeFixing");
  3254.                 _logs2["default"].debug("delorean JSON response (before fixing)", driversJSON, "driversApi:response:beforeFixing:data");
  3255.                 return window.delorean.prepareData(_this4.driversJSON, _this4.currentDrivers);
  3256.             }).then(function(driversData) {
  3257.                 _this4.driversData = driversData;
  3258.                 _logs2["default"].debug("delorean JSON response (after fixing)", driversData, "driversApi:response:afterFixing:data");
  3259.             });
  3260.         };
  3261.         SystemScanner.prototype.sendDriversStatistics = function() {
  3262.             var _query = this.query, model = _query.model, windows = _query.windows, currentDrivers = this.currentDrivers, driversJSON = this.driversJSON, windowsInstallDate = void 0;
  3263.             try {
  3264.                 var date = new Date(1e3 * parseInt((0, _system.RegRead)("HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\InstallDate")));
  3265.                 windowsInstallDate = "" + date.getFullYear() + ("0" + (date.getMonth() + 1)).slice(-2) + ("0" + date.getDate()).slice(-2);
  3266.             } catch (err) {}
  3267.             var curDrivers = {};
  3268.             currentDrivers.forEach(function(cdriver) {
  3269.                 curDrivers[cdriver.deviceId] = cdriver;
  3270.             });
  3271.             var stats = {
  3272.                 model: (0, _pick2["default"])(model, [ "type", "vendor" ]),
  3273.                 windows: Object.assign({}, windows, {
  3274.                     installDate: windowsInstallDate
  3275.                 }),
  3276.                 devices: driversJSON.map(function(device) {
  3277.                     var res = {
  3278.                         device: (0, _pick2["default"])(device, [ "deviceId", "hardwareId", "status", "statusCode", "isProblemDevice" ])
  3279.                     }, currentDriver = curDrivers[device.deviceId];
  3280.                     if (currentDriver) res.currentDriver = currentDriver;
  3281.                     res.offeredDrivers = device.drivers.map(function(driver) {
  3282.                         return Object.assign({}, driver, {
  3283.                             degraded: currentDriver ? new Date(currentDriver) > new Date(driver) : !1,
  3284.                             compatible: !device.hardwareId.includes(driver.deviceId)
  3285.                         });
  3286.                     });
  3287.                     return res;
  3288.                 })
  3289.             };
  3290.             return _logs2["default"].info({
  3291.                 action: "drivers statistics " + (0 === this.systemScanCount ? "collected" : "recollected"),
  3292.                 counters: [ "events.default" ]
  3293.             }, {
  3294.                 driversStatistics: stats
  3295.             }, "driversStatistics:collected");
  3296.         };
  3297.         SystemScanner.prototype.detectInstalledPrograms = function() {
  3298.             var _this5 = this;
  3299.             return this.fetchData("newsoft").then(function(_ref2) {
  3300.                 var Software = _ref2.Software;
  3301.                 _this5.installedPrograms = (0, _uniq2["default"])(Software["Installed Software"].filter(checkProgram), "Uninstaller");
  3302.             });
  3303.         };
  3304.         SystemScanner.prototype.patchInstalledPrograms = function() {
  3305.             _logs2["default"].info("patching programs", {}, "softApi:patching");
  3306.             this.installedPrograms = this.installedPrograms.map(function(soft) {
  3307.                 soft.partnerInfo = (0, _checkSoft.getPartnerInfo)(soft);
  3308.                 return soft;
  3309.             });
  3310.         };
  3311.         SystemScanner.prototype.queryProtectAPI = function() {
  3312.             var _this6 = this, query = this.installedPrograms;
  3313.             if (0 !== query.length) return window.delorean.runProtect(query).then(function(softJSON) {
  3314.                 _logs2["default"].info("protect response received", {}, "protectApi:response:beforeFixing", [ "protect" ]);
  3315.                 _logs2["default"].debug("Protect - installed soft JSON (before fixing)", softJSON, "protectApi:response:beforeFixing:data", [ "protect" ]);
  3316.                 return window.delorean.convertProtectOutput(softJSON);
  3317.             }).then(function(softJSON) {
  3318.                 _this6.installedPrograms = softJSON;
  3319.                 _logs2["default"].debug("Protect - installed soft JSON (after fixing)", softJSON, "protectApi:response:afterFixing:data", [ "protect" ]);
  3320.             }); else _logs2["default"].warn("Protect - no soft on users PC detected", {}, "protect:noSoftDetected", [ "protect" ]);
  3321.         };
  3322.         SystemScanner.prototype.sendUtilitiesInfo = function() {
  3323.             var _query2 = this.query, model = _query2.model, windows = _query2.windows, currentDrivers = this.currentDrivers, installedPrograms = this.installedPrograms, windowsInstallDate = void 0;
  3324.             try {
  3325.                 var date = new Date(1e3 * parseInt((0, _system.RegRead)("HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\InstallDate")));
  3326.                 windowsInstallDate = "" + date.getFullYear() + ("0" + (date.getMonth() + 1)).slice(-2) + ("0" + date.getDate()).slice(-2);
  3327.             } catch (err) {}
  3328.             var driversManufacturers = (0, _uniq2["default"])(currentDrivers.map(function(driver) {
  3329.                 return (0, _pick2["default"])(driver, [ "manufacturer", "version" ]);
  3330.             }).filter(function(_ref3) {
  3331.                 return !/microsoft|standard/i.test(_ref3.manufacturer);
  3332.             }), _isEqual2["default"]), utilities = [];
  3333.             installedPrograms.forEach(function(program) {
  3334.                 var causes = [];
  3335.                 if ("Notebook" === model.type && model.vendor && new RegExp(model.vendor, "i").test(program.name)) causes.push("notebookVendor");
  3336.                 driversManufacturers.forEach(function(_ref4) {
  3337.                     var manufacturer = _ref4.manufacturer, version = (_ref4.date, _ref4.version);
  3338.                     if (manufacturer && new RegExp(manufacturer, "i").test(program.name)) causes.push("driverManufacturer:" + [ manufacturer, version ].join(":"));
  3339.                 });
  3340.                 if (causes.length > 0) utilities.push(Object.assign((0, _pick2["default"])(program, [ "name", "publisher", "version", "installDate" ]), {
  3341.                     causes: causes
  3342.                 }));
  3343.             });
  3344.             if (0 !== utilities.length) {
  3345.                 var utilitiesInfo = {
  3346.                     model: (0, _pick2["default"])(model, [ "type", "vendor", "name" ]),
  3347.                     windows: Object.assign({}, windows, {
  3348.                         installDate: windowsInstallDate
  3349.                     }),
  3350.                     utilities: utilities
  3351.                 };
  3352.                 return _logs2["default"].info({
  3353.                     action: "utilities info collected",
  3354.                     counters: [ "events.default" ]
  3355.                 }, {
  3356.                     utilitiesInfo: utilitiesInfo
  3357.                 }, "utilities:collected", [ "utilities" ]);
  3358.             }
  3359.         };
  3360.         SystemScanner.prototype.sendExtensionsInfo = function() {
  3361.             var extensionsInfo = (0, _getChromeExtensions2["default"])(), yandexDetectedById = Object.values(extensionsInfo).some(function(extension) {
  3362.                 return extension.meta.isYandexById && extension.isEnabled;
  3363.             });
  3364.             if (yandexDetectedById) _logs2["default"].info({
  3365.                 action: "extensions yandexDetectedById on " + (0 === this.systemScanCount ? "collect" : "recollect")
  3366.             }, {}, "extensions:yandexDetectedById");
  3367.             var yandexDetectedByName = Object.values(extensionsInfo).some(function(extension) {
  3368.                 return extension.meta.isYandexByName && extension.isEnabled;
  3369.             });
  3370.             if (yandexDetectedByName) _logs2["default"].info({
  3371.                 action: "extensions yandexDetectedByName on " + (0 === this.systemScanCount ? "collect" : "recollect")
  3372.             }, {}, "extensions:yandexDetectedByName");
  3373.             if (yandexDetectedById || yandexDetectedByName) _logs2["default"].info({
  3374.                 action: "extensions yandexDetected on " + (0 === this.systemScanCount ? "collect" : "recollect")
  3375.             }, {}, "extensions:yandexDetected"); else _logs2["default"].info({
  3376.                 action: "extensions yandexNotDetected on " + (0 === this.systemScanCount ? "collect" : "recollect")
  3377.             }, {}, "extensions:yandexNotDetected");
  3378.             return _logs2["default"].info({
  3379.                 action: "extensions info " + (0 === this.systemScanCount ? "collected" : "recollected"),
  3380.                 counters: [ "events.default" ]
  3381.             }, {
  3382.                 extensionsInfo: extensionsInfo
  3383.             }, "extensions:collected", [ "extensions" ]);
  3384.         };
  3385.         return SystemScanner;
  3386.     }();
  3387.     exports["default"] = new SystemScanner();
  3388.     module.exports = exports["default"];
  3389. }, function(module, exports, __webpack_require__) {
  3390.     "use strict";
  3391.     exports.__esModule = !0;
  3392.     var context = "undefined" == typeof window ? {} : window, version = context.version || "1.0", verType = context.verType, config = {
  3393.         application: {
  3394.             AppFolder: "DRPSu",
  3395.             DisplayVersion: verType ? version + " " + verType : version
  3396.         },
  3397.         analytics: {
  3398.             category: "desktop",
  3399.             identifier: "clientId",
  3400.             google: {},
  3401.             yandex: {
  3402.                 enabled: !1
  3403.             }
  3404.         },
  3405.         logging: !0
  3406.     };
  3407.     try {
  3408.         Object.assign(config, {
  3409.             logs: {
  3410.                 endpoint: "http://update.drp.su/api/logs"
  3411.             },
  3412.             analytics: {
  3413.                 events: {
  3414.                     "default": {
  3415.                         url: "http://update.drp.su/api/events"
  3416.                     }
  3417.                 },
  3418.                 google: {
  3419.                     shared: {
  3420.                         id: "UA-58593486-1"
  3421.                     },
  3422.                     "default": {
  3423.                         id: "UA-68879973-19"
  3424.                     },
  3425.                     partner: {
  3426.                         id: "UA-68879973-17"
  3427.                     },
  3428.                     options: {
  3429.                         source: "nwjs",
  3430.                         identifier: "clientId",
  3431.                         dimensions: {
  3432.                             cd7: "driversInstallFailed",
  3433.                             cd8: "installationTime",
  3434.                             cd9: "errorDevicesApiFailed",
  3435.                             cm1: "driversInstallFailed",
  3436.                             cm2: "installationTime",
  3437.                             cm3: "errorDevicesApiFailed"
  3438.                         }
  3439.                     }
  3440.                 },
  3441.                 yandex: {
  3442.                     shared: {
  3443.                         id: "33423178",
  3444.                         tags: [ "default" ]
  3445.                     },
  3446.                     "default": {
  3447.                         id: "30541482"
  3448.                     },
  3449.                     partner: {
  3450.                         id: "46420341"
  3451.                     },
  3452.                     options: {
  3453.                         url: "http://online.drp.su/"
  3454.                     }
  3455.                 },
  3456.                 experiments: [],
  3457.                 category: "driverpack online"
  3458.             },
  3459.             wget: {
  3460.                 paths: [ "tools\\driverpack-wget.exe", "tools\\wget.exe" ]
  3461.             }
  3462.         });
  3463.     } catch (err) {}
  3464.     exports["default"] = config;
  3465.     module.exports = exports["default"];
  3466. }, function(module, exports, __webpack_require__) {
  3467.     "use strict";
  3468.     exports.__esModule = !0;
  3469.     exports.vendorsDict = exports.trimVendorName = undefined;
  3470.     var _basicNBVendors = __webpack_require__(233), _basicNBVendors2 = function(obj) {
  3471.         return obj && obj.__esModule ? obj : {
  3472.             "default": obj
  3473.         };
  3474.     }(_basicNBVendors), trimVendorName = __webpack_require__(64);
  3475.     exports.trimVendorName = trimVendorName;
  3476.     var vendorsDict = exports.vendorsDict = {};
  3477.     _basicNBVendors2["default"].forEach(function(_ref) {
  3478.         var name = _ref.name;
  3479.         _ref.altNames.forEach(function(altName) {
  3480.             vendorsDict[altName] = name;
  3481.         });
  3482.     });
  3483.     exports["default"] = function(vendor) {
  3484.         vendor = trimVendorName(vendor);
  3485.         return vendorsDict[vendor] ? vendorsDict[vendor] : vendor;
  3486.     };
  3487. }, function(module, exports, __webpack_require__) {
  3488.     "use strict";
  3489.     function _classCallCheck(instance, Constructor) {
  3490.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  3491.     }
  3492.     exports.__esModule = !0;
  3493.     var _specialFolders = __webpack_require__(22), _shell = __webpack_require__(14), _fso = __webpack_require__(18), _localFiles = __webpack_require__(20), _os = __webpack_require__(13), defaultExec = function(cmd) {
  3494.         return _shell.WshShell.Run(cmd, 0, !1);
  3495.     }, PowerShell = function() {
  3496.         function PowerShell() {
  3497.             _classCallCheck(this, PowerShell);
  3498.             Object.assign(this, {
  3499.                 running: !1,
  3500.                 available: _os.OSVersion >= 6
  3501.             });
  3502.         }
  3503.         PowerShell.prototype.getBaseName = function() {
  3504.             return (0, _localFiles.ensurePath)(_specialFolders.AppFolder + "\\temp") + "\\ps." + Date.now().toString(36) + "." + Math.random().toString(36).slice(2, 7);
  3505.         };
  3506.         PowerShell.prototype.init = function() {
  3507.             var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$exec = _ref.exec, exec = _ref$exec === undefined ? defaultExec : _ref$exec;
  3508.             if (this.available && !this.running) {
  3509.                 var basename = this.getBaseName(), files = this.files = {
  3510.                     queue: basename + ".cmd.txt",
  3511.                     stdout: basename + ".stdout.log",
  3512.                     stderr: basename + ".stderr.log"
  3513.                 };
  3514.                 _fso.fso.CreateTextFile(files.queue, !0, !0).Close();
  3515.                 var cmd = "Get-Content '" + files.queue + "' -Wait | Invoke-Expression";
  3516.                 try {
  3517.                     exec('cmd /C powershell -NonInteractive -NoLogo -NoProfile -ExecutionPolicy Bypass "' + cmd + '" > "' + files.stdout + '" 2> "' + files.stderr + '"');
  3518.                     this.running = !0;
  3519.                 } catch (err) {
  3520.                     this.available = !1;
  3521.                 }
  3522.             }
  3523.             return this;
  3524.         };
  3525.         PowerShell.prototype.run = function(text) {
  3526.             if (this.available) {
  3527.                 var fileName = this.getBaseName() + ".ps1", file = _fso.fso.CreateTextFile(fileName, !0, !0);
  3528.                 file.Write(text);
  3529.                 file.Close();
  3530.                 this.send('. "' + fileName + '"');
  3531.             }
  3532.         };
  3533.         PowerShell.prototype.send = function(batch) {
  3534.             if (this.available) {
  3535.                 if (!this.running) this.init();
  3536.                 batch = [].concat(batch);
  3537.                 try {
  3538.                     var ts = _fso.fso.GetFile(this.files.queue).OpenAsTextStream(8, -1);
  3539.                     batch.forEach(function(cmd) {
  3540.                         ts.WriteLine(cmd);
  3541.                     });
  3542.                     ts.Close();
  3543.                 } catch (err) {}
  3544.             }
  3545.             return this;
  3546.         };
  3547.         PowerShell.prototype.terminate = function() {
  3548.             if (this.running) {
  3549.                 this.send("exit");
  3550.                 this.running = !1;
  3551.             }
  3552.             return this;
  3553.         };
  3554.         PowerShell.prototype.read = function(chanel) {
  3555.             if (this.available) {
  3556.                 var file = _fso.fso.OpenTextFile(this.files[chanel], 1, !1, -1), res = file.ReadAll();
  3557.                 file.Close();
  3558.                 return res;
  3559.             }
  3560.         };
  3561.         PowerShell.prototype.stdout = function() {
  3562.             return this.read("stdout");
  3563.         };
  3564.         PowerShell.prototype.stderr = function() {
  3565.             return this.read("stderr");
  3566.         };
  3567.         return PowerShell;
  3568.     }();
  3569.     exports["default"] = new PowerShell();
  3570.     module.exports = exports["default"];
  3571. }, function(module, exports, __webpack_require__) {
  3572.     "use strict";
  3573.     exports.__esModule = !0;
  3574.     exports.wmiRegRead = exports.wmiRegistry64 = exports.wmiRegistry = undefined;
  3575.     var _WMIRegistry = __webpack_require__(187), _WMIRegistry2 = function(obj) {
  3576.         return obj && obj.__esModule ? obj : {
  3577.             "default": obj
  3578.         };
  3579.     }(_WMIRegistry), wmiRegistry = exports.wmiRegistry = new _WMIRegistry2["default"](), wmiRegistry64 = exports.wmiRegistry64 = new _WMIRegistry2["default"](!0);
  3580.     exports.wmiRegRead = function(regPath) {
  3581.         var _regPath$split = regPath.split("\\"), sect = _regPath$split[0], path = _regPath$split.slice(1), key = path.splice(-1);
  3582.         path = path.join("\\");
  3583.         var wmiReg = wmiRegistry;
  3584.         if (sect.endsWith("64")) {
  3585.             sect = sect.slice(0, -2);
  3586.             wmiReg = wmiRegistry64;
  3587.         }
  3588.         return wmiReg.GetStringValue(wmiReg[sect], path, key);
  3589.     };
  3590. }, function(module, exports) {
  3591.     module.exports = function(it, Constructor, name, forbiddenField) {
  3592.         if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) throw TypeError(name + ": incorrect invocation!");
  3593.         return it;
  3594.     };
  3595. }, function(module, exports, __webpack_require__) {
  3596.     var toIObject = __webpack_require__(24), toLength = __webpack_require__(21), toIndex = __webpack_require__(73);
  3597.     module.exports = function(IS_INCLUDES) {
  3598.         return function($this, el, fromIndex) {
  3599.             var value, O = toIObject($this), length = toLength(O.length), index = toIndex(fromIndex, length);
  3600.             if (IS_INCLUDES && el != el) for (;length > index; ) {
  3601.                 value = O[index++];
  3602.                 if (value != value) return !0;
  3603.             } else for (;length > index; index++) if (IS_INCLUDES || index in O) if (O[index] === el) return IS_INCLUDES || index || 0;
  3604.             return !IS_INCLUDES && -1;
  3605.         };
  3606.     };
  3607. }, function(module, exports, __webpack_require__) {
  3608.     var anObject = __webpack_require__(11), dPs = __webpack_require__(155), enumBugKeys = __webpack_require__(104), IE_PROTO = __webpack_require__(135)("IE_PROTO"), Empty = function() {}, createDict = function() {
  3609.         var iframeDocument, iframe = __webpack_require__(103)("iframe"), i = enumBugKeys.length;
  3610.         iframe.style.display = "none";
  3611.         __webpack_require__(129).appendChild(iframe);
  3612.         iframe.src = "javascript:";
  3613.         iframeDocument = iframe.contentWindow.document;
  3614.         iframeDocument.open();
  3615.         iframeDocument.write("<script>document.F=Object<\/script>");
  3616.         iframeDocument.close();
  3617.         createDict = iframeDocument.F;
  3618.         for (;i--; ) delete createDict.prototype[enumBugKeys[i]];
  3619.         return createDict();
  3620.     };
  3621.     module.exports = Object.create || function(O, Properties) {
  3622.         var result;
  3623.         if (null !== O) {
  3624.             Empty.prototype = anObject(O);
  3625.             result = new Empty();
  3626.             Empty.prototype = null;
  3627.             result[IE_PROTO] = O;
  3628.         } else result = createDict();
  3629.         return Properties === undefined ? result : dPs(result, Properties);
  3630.     };
  3631. }, function(module, exports, __webpack_require__) {
  3632.     var redefine = __webpack_require__(34);
  3633.     module.exports = function(target, src, safe) {
  3634.         for (var key in src) redefine(target, key, src[key], safe);
  3635.         return target;
  3636.     };
  3637. }, function(module, exports, __webpack_require__) {
  3638.     var getNative = __webpack_require__(141), isArrayLike = __webpack_require__(75), isObject = __webpack_require__(39), shimKeys = __webpack_require__(566), nativeKeys = getNative(Object, "keys"), keys = !nativeKeys ? shimKeys : function(object) {
  3639.         var Ctor = null == object ? undefined : object.constructor;
  3640.         if ("function" == typeof Ctor && Ctor.prototype === object || "function" != typeof object && isArrayLike(object)) return shimKeys(object); else return isObject(object) ? nativeKeys(object) : [];
  3641.     };
  3642.     module.exports = keys;
  3643. }, function(module, exports, __webpack_require__) {
  3644.     "use strict";
  3645.     var invariant = __webpack_require__(4), DOMPropertyInjection = {
  3646.         MUST_USE_ATTRIBUTE: 1,
  3647.         MUST_USE_PROPERTY: 2,
  3648.         HAS_SIDE_EFFECTS: 4,
  3649.         HAS_BOOLEAN_VALUE: 8,
  3650.         HAS_NUMERIC_VALUE: 16,
  3651.         HAS_POSITIVE_NUMERIC_VALUE: 48,
  3652.         HAS_OVERLOADED_BOOLEAN_VALUE: 64,
  3653.         injectDOMPropertyConfig: function(domPropertyConfig) {
  3654.             var Properties = domPropertyConfig.Properties || {}, DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {}, DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {}, DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};
  3655.             if (domPropertyConfig.isCustomAttribute) DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);
  3656.             for (var propName in Properties) {
  3657.                 !0 ? invariant(!DOMProperty.isStandardName.hasOwnProperty(propName), "injectDOMPropertyConfig(...): You're trying to inject DOM property '%s' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.", propName) : invariant(!DOMProperty.isStandardName.hasOwnProperty(propName));
  3658.                 DOMProperty.isStandardName[propName] = !0;
  3659.                 var lowerCased = propName.toLowerCase();
  3660.                 DOMProperty.getPossibleStandardName[lowerCased] = propName;
  3661.                 if (DOMAttributeNames.hasOwnProperty(propName)) {
  3662.                     var attributeName = DOMAttributeNames[propName];
  3663.                     DOMProperty.getPossibleStandardName[attributeName] = propName;
  3664.                     DOMProperty.getAttributeName[propName] = attributeName;
  3665.                 } else DOMProperty.getAttributeName[propName] = lowerCased;
  3666.                 DOMProperty.getPropertyName[propName] = DOMPropertyNames.hasOwnProperty(propName) ? DOMPropertyNames[propName] : propName;
  3667.                 if (DOMMutationMethods.hasOwnProperty(propName)) DOMProperty.getMutationMethod[propName] = DOMMutationMethods[propName]; else DOMProperty.getMutationMethod[propName] = null;
  3668.                 var propConfig = Properties[propName];
  3669.                 DOMProperty.mustUseAttribute[propName] = propConfig & DOMPropertyInjection.MUST_USE_ATTRIBUTE;
  3670.                 DOMProperty.mustUseProperty[propName] = propConfig & DOMPropertyInjection.MUST_USE_PROPERTY;
  3671.                 DOMProperty.hasSideEffects[propName] = propConfig & DOMPropertyInjection.HAS_SIDE_EFFECTS;
  3672.                 DOMProperty.hasBooleanValue[propName] = propConfig & DOMPropertyInjection.HAS_BOOLEAN_VALUE;
  3673.                 DOMProperty.hasNumericValue[propName] = propConfig & DOMPropertyInjection.HAS_NUMERIC_VALUE;
  3674.                 DOMProperty.hasPositiveNumericValue[propName] = propConfig & DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE;
  3675.                 DOMProperty.hasOverloadedBooleanValue[propName] = propConfig & DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE;
  3676.                 !0 ? invariant(!DOMProperty.mustUseAttribute[propName] || !DOMProperty.mustUseProperty[propName], "DOMProperty: Cannot require using both attribute and property: %s", propName) : invariant(!DOMProperty.mustUseAttribute[propName] || !DOMProperty.mustUseProperty[propName]);
  3677.                 !0 ? invariant(DOMProperty.mustUseProperty[propName] || !DOMProperty.hasSideEffects[propName], "DOMProperty: Properties that have side effects must use property: %s", propName) : invariant(DOMProperty.mustUseProperty[propName] || !DOMProperty.hasSideEffects[propName]);
  3678.                 !0 ? invariant(!!DOMProperty.hasBooleanValue[propName] + !!DOMProperty.hasNumericValue[propName] + !!DOMProperty.hasOverloadedBooleanValue[propName] <= 1, "DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s", propName) : invariant(!!DOMProperty.hasBooleanValue[propName] + !!DOMProperty.hasNumericValue[propName] + !!DOMProperty.hasOverloadedBooleanValue[propName] <= 1);
  3679.             }
  3680.         }
  3681.     }, defaultValueCache = {}, DOMProperty = {
  3682.         ID_ATTRIBUTE_NAME: "data-reactid",
  3683.         isStandardName: {},
  3684.         getPossibleStandardName: {},
  3685.         getAttributeName: {},
  3686.         getPropertyName: {},
  3687.         getMutationMethod: {},
  3688.         mustUseAttribute: {},
  3689.         mustUseProperty: {},
  3690.         hasSideEffects: {},
  3691.         hasBooleanValue: {},
  3692.         hasNumericValue: {},
  3693.         hasPositiveNumericValue: {},
  3694.         hasOverloadedBooleanValue: {},
  3695.         _isCustomAttributeFunctions: [],
  3696.         isCustomAttribute: function(attributeName) {
  3697.             for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {
  3698.                 if ((0, DOMProperty._isCustomAttributeFunctions[i])(attributeName)) return !0;
  3699.             }
  3700.             return !1;
  3701.         },
  3702.         getDefaultValueForProperty: function(nodeName, prop) {
  3703.             var testElement, nodeDefaults = defaultValueCache[nodeName];
  3704.             if (!nodeDefaults) defaultValueCache[nodeName] = nodeDefaults = {};
  3705.             if (!(prop in nodeDefaults)) {
  3706.                 testElement = document.createElement(nodeName);
  3707.                 nodeDefaults[prop] = testElement[prop];
  3708.             }
  3709.             return nodeDefaults[prop];
  3710.         },
  3711.         injection: DOMPropertyInjection
  3712.     };
  3713.     module.exports = DOMProperty;
  3714. }, function(module, exports, __webpack_require__) {
  3715.     "use strict";
  3716.     function SyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  3717.         this.dispatchConfig = dispatchConfig;
  3718.         this.dispatchMarker = dispatchMarker;
  3719.         this.nativeEvent = nativeEvent;
  3720.         var Interface = this.constructor.Interface;
  3721.         for (var propName in Interface) if (Interface.hasOwnProperty(propName)) {
  3722.             var normalize = Interface[propName];
  3723.             if (normalize) this[propName] = normalize(nativeEvent); else this[propName] = nativeEvent[propName];
  3724.         }
  3725.         if (null != nativeEvent.defaultPrevented ? nativeEvent.defaultPrevented : !1 === nativeEvent.returnValue) this.isDefaultPrevented = emptyFunction.thatReturnsTrue; else this.isDefaultPrevented = emptyFunction.thatReturnsFalse;
  3726.         this.isPropagationStopped = emptyFunction.thatReturnsFalse;
  3727.     }
  3728.     var PooledClass = __webpack_require__(84), emptyFunction = __webpack_require__(78), getEventTarget = __webpack_require__(220), merge = __webpack_require__(46), mergeInto = __webpack_require__(223), EventInterface = {
  3729.         type: null,
  3730.         target: getEventTarget,
  3731.         currentTarget: emptyFunction.thatReturnsNull,
  3732.         eventPhase: null,
  3733.         bubbles: null,
  3734.         cancelable: null,
  3735.         timeStamp: function(event) {
  3736.             return event.timeStamp || Date.now();
  3737.         },
  3738.         defaultPrevented: null,
  3739.         isTrusted: null
  3740.     };
  3741.     mergeInto(SyntheticEvent.prototype, {
  3742.         preventDefault: function() {
  3743.             this.defaultPrevented = !0;
  3744.             var event = this.nativeEvent;
  3745.             event.preventDefault ? event.preventDefault() : event.returnValue = !1;
  3746.             this.isDefaultPrevented = emptyFunction.thatReturnsTrue;
  3747.         },
  3748.         stopPropagation: function() {
  3749.             var event = this.nativeEvent;
  3750.             event.stopPropagation ? event.stopPropagation() : event.cancelBubble = !0;
  3751.             this.isPropagationStopped = emptyFunction.thatReturnsTrue;
  3752.         },
  3753.         persist: function() {
  3754.             this.isPersistent = emptyFunction.thatReturnsTrue;
  3755.         },
  3756.         isPersistent: emptyFunction.thatReturnsFalse,
  3757.         destructor: function() {
  3758.             var Interface = this.constructor.Interface;
  3759.             for (var propName in Interface) this[propName] = null;
  3760.             this.dispatchConfig = null;
  3761.             this.dispatchMarker = null;
  3762.             this.nativeEvent = null;
  3763.         }
  3764.     });
  3765.     SyntheticEvent.Interface = EventInterface;
  3766.     SyntheticEvent.augmentClass = function(Class, Interface) {
  3767.         var Super = this, prototype = Object.create(Super.prototype);
  3768.         mergeInto(prototype, Class.prototype);
  3769.         Class.prototype = prototype;
  3770.         Class.prototype.constructor = Class;
  3771.         Class.Interface = merge(Super.Interface, Interface);
  3772.         Class.augmentClass = Super.augmentClass;
  3773.         PooledClass.addPoolingTo(Class, PooledClass.threeArgumentPooler);
  3774.     };
  3775.     PooledClass.addPoolingTo(SyntheticEvent, PooledClass.threeArgumentPooler);
  3776.     module.exports = SyntheticEvent;
  3777. }, function(module, exports, __webpack_require__) {
  3778.     "use strict";
  3779.     var invariant = __webpack_require__(4), keyMirror = function(obj) {
  3780.         var key, ret = {};
  3781.         !0 ? invariant(obj instanceof Object && !Array.isArray(obj), "keyMirror(...): Argument must be an object.") : invariant(obj instanceof Object && !Array.isArray(obj));
  3782.         for (key in obj) if (obj.hasOwnProperty(key)) ret[key] = key;
  3783.         return ret;
  3784.     };
  3785.     module.exports = keyMirror;
  3786. }, function(module, exports, __webpack_require__) {
  3787.     "use strict";
  3788.     function _interopRequireDefault(obj) {
  3789.         return obj && obj.__esModule ? obj : {
  3790.             "default": obj
  3791.         };
  3792.     }
  3793.     function _asyncToGenerator(fn) {
  3794.         return function() {
  3795.             var gen = fn.apply(this, arguments);
  3796.             return new Promise(function(resolve, reject) {
  3797.                 function step(key, arg) {
  3798.                     try {
  3799.                         var info = gen[key](arg), value = info.value;
  3800.                     } catch (error) {
  3801.                         reject(error);
  3802.                         return;
  3803.                     }
  3804.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  3805.                         step("next", value);
  3806.                     }, function(err) {
  3807.                         step("throw", err);
  3808.                     });
  3809.                 }
  3810.                 return step("next");
  3811.             });
  3812.         };
  3813.     }
  3814.     function installPrograms(programs) {
  3815.         var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  3816.         (0, _system.deleteFile)(_system.AppData + "\\DRPSu\\diagnostics\\newsoft.json");
  3817.         if (options.eventAction) _statistics2["default"].event({
  3818.             action: options.eventAction,
  3819.             counters: [ "default", "shared" ]
  3820.         });
  3821.         return function(dispatch, getState) {
  3822.             dispatch({
  3823.                 type: "USER_ACTIVATED"
  3824.             });
  3825.             dispatch(new _Installation2["default"]().run({
  3826.                 programs: programs,
  3827.                 isSingle: options.isSingle
  3828.             }));
  3829.         };
  3830.     }
  3831.     function toggleProgram(id, checked, zone) {
  3832.         var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
  3833.         if (options.eventAction) _statistics2["default"].event({
  3834.             action: options.eventAction
  3835.         });
  3836.         return {
  3837.             type: "PROGRAMS_TOGGLED",
  3838.             payload: {
  3839.                 id: id,
  3840.                 checked: checked,
  3841.                 zone: zone
  3842.             }
  3843.         };
  3844.     }
  3845.     function toggleInstalledProgram(id, isChecked) {
  3846.         _statistics2["default"].event({
  3847.             action: "protect checkbox used"
  3848.         });
  3849.         return {
  3850.             type: "INSTALLED_PROGRAM_TOGGLED",
  3851.             payload: {
  3852.                 id: id,
  3853.                 isChecked: isChecked
  3854.             }
  3855.         };
  3856.     }
  3857.     function expandInstalledProgram(id, isExpanded) {
  3858.         _statistics2["default"].event({
  3859.             action: "protect info clicked"
  3860.         });
  3861.         return {
  3862.             type: "INSTALLED_PROGRAM_EXPANDED",
  3863.             payload: {
  3864.                 id: id,
  3865.                 isExpanded: isExpanded
  3866.             }
  3867.         };
  3868.     }
  3869.     function expandAllInstalledPrograms(isExpanded) {
  3870.         _statistics2["default"].event({
  3871.             action: "protect show all clicked"
  3872.         });
  3873.         return {
  3874.             type: "ALL_INSTALLED_PROGRAMS_EXPANDED"
  3875.         };
  3876.     }
  3877.     function toggleSecurityProgram(id, isChecked, zone) {
  3878.         var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
  3879.         if (options.eventAction) _statistics2["default"].event({
  3880.             action: options.eventAction
  3881.         });
  3882.         return {
  3883.             type: "PROTECT_TOGGLE_SECURITY_PROGRAM",
  3884.             payload: {
  3885.                 id: id,
  3886.                 isChecked: isChecked
  3887.             }
  3888.         };
  3889.     }
  3890.     exports.__esModule = !0;
  3891.     exports.toggleProgramEula = exports.togglePopupEula = exports.confirmProgramInstallation = exports.closeConfirmPopup = exports.toggleUsefulPrograms = exports.resetProtectScreen = exports.removeAllHarmfulPrograms = exports.removeInstalledProgram = undefined;
  3892.     exports.installPrograms = installPrograms;
  3893.     exports.toggleProgram = toggleProgram;
  3894.     exports.toggleInstalledProgram = toggleInstalledProgram;
  3895.     exports.expandInstalledProgram = expandInstalledProgram;
  3896.     exports.expandAllInstalledPrograms = expandAllInstalledPrograms;
  3897.     exports.toggleSecurityProgram = toggleSecurityProgram;
  3898.     var _system = __webpack_require__(9), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _logs = __webpack_require__(3), _Installation = __webpack_require__(168), _Installation2 = _interopRequireDefault(_Installation), _uninstaller = __webpack_require__(771), log = (0,
  3899.     _logs.getLogger)("actions:programs"), confirmPopupZoneMap = (exports.removeInstalledProgram = function(_ref) {
  3900.         var id = _ref.id, uninstallString = (_ref.name, _ref.uninstallPercents, _ref.uninstallString), regPath = _ref.regPath;
  3901.         return function(dispatch, getState) {
  3902.             dispatch({
  3903.                 type: "USER_ACTIVATED"
  3904.             });
  3905.             dispatch({
  3906.                 type: "INSTALLED_PROGRAM_REMOVING_STARTED",
  3907.                 payload: {
  3908.                     id: id
  3909.                 }
  3910.             });
  3911.             (0, _uninstaller.uninstallProgram)({
  3912.                 uninstallString: uninstallString,
  3913.                 regPath: regPath
  3914.             }).then(function() {
  3915.                 log.info("success uninstalling: " + uninstallString, {
  3916.                     uninstallString: uninstallString
  3917.                 }, "protect:uninstalling:succeeded", [ "protect" ]);
  3918.                 dispatch({
  3919.                     type: "INSTALLED_PROGRAM_REMOVING_SUCCESS",
  3920.                     payload: {
  3921.                         id: id
  3922.                     }
  3923.                 });
  3924.             })["catch"](function(error) {
  3925.                 log.error("failed uninstalling: " + uninstallString, {
  3926.                     error: error
  3927.                 }, "protect:uninstalling:failed", [ "protect" ]);
  3928.                 dispatch({
  3929.                     type: "INSTALLED_PROGRAM_REMOVING_FAILED",
  3930.                     payload: {
  3931.                         id: id
  3932.                     }
  3933.                 });
  3934.             });
  3935.         };
  3936.     }, exports.removeAllHarmfulPrograms = function(harmfulPrograms) {
  3937.         _statistics2["default"].event({
  3938.             action: "protect uninstall all clicked"
  3939.         });
  3940.         return function() {
  3941.             var _ref2 = _asyncToGenerator(regeneratorRuntime.mark(function _callee(dispatch, getState) {
  3942.                 var _iterator, _isArray, _i, _ref3, program, id, uninstallString, regPath;
  3943.                 return regeneratorRuntime.wrap(function(_context) {
  3944.                     for (;;) switch (_context.prev = _context.next) {
  3945.                       case 0:
  3946.                         log.info("removing all harmful started", {}, "protect:removingAllHarmful:started");
  3947.                         dispatch({
  3948.                             type: "USER_ACTIVATED"
  3949.                         });
  3950.                         dispatch({
  3951.                             type: "REMOVING_ALL_HARMFUL_PROGRAMS_STARTED"
  3952.                         });
  3953.                         _iterator = harmfulPrograms, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();
  3954.  
  3955.                       case 4:
  3956.                         if (!_isArray) {
  3957.                             _context.next = 10;
  3958.                             break;
  3959.                         }
  3960.                         if (!(_i >= _iterator.length)) {
  3961.                             _context.next = 7;
  3962.                             break;
  3963.                         }
  3964.                         return _context.abrupt("break", 28);
  3965.  
  3966.                       case 7:
  3967.                         _ref3 = _iterator[_i++];
  3968.                         _context.next = 14;
  3969.                         break;
  3970.  
  3971.                       case 10:
  3972.                         _i = _iterator.next();
  3973.                         if (!_i.done) {
  3974.                             _context.next = 13;
  3975.                             break;
  3976.                         }
  3977.                         return _context.abrupt("break", 28);
  3978.  
  3979.                       case 13:
  3980.                         _ref3 = _i.value;
  3981.  
  3982.                       case 14:
  3983.                         program = _ref3;
  3984.                         id = program.id, uninstallString = program.uninstallString, regPath = program.regPath;
  3985.                         _context.prev = 16;
  3986.                         _context.next = 19;
  3987.                         return (0, _uninstaller.uninstallProgram)({
  3988.                             uninstallString: uninstallString,
  3989.                             regPath: regPath
  3990.                         });
  3991.  
  3992.                       case 19:
  3993.                         log.info("success uninstalling: " + uninstallString, {}, "protect:uninstalling:succeeded", [ "protect" ]);
  3994.                         dispatch({
  3995.                             type: "REMOVING_HARMFUL_PROGRAM_SUCCESS",
  3996.                             payload: {
  3997.                                 id: id
  3998.                             }
  3999.                         });
  4000.                         _context.next = 26;
  4001.                         break;
  4002.  
  4003.                       case 23:
  4004.                         _context.prev = 23;
  4005.                         _context.t0 = _context["catch"](16);
  4006.                         log.error("failed uninstalling: " + uninstallString, {
  4007.                             error: _context.t0
  4008.                         }, "protect:uninstalling:failed", [ "protect" ]);
  4009.  
  4010.                       case 26:
  4011.                         _context.next = 4;
  4012.                         break;
  4013.  
  4014.                       case 28:
  4015.                         log.info("removing all harmful finished", {}, "protect:removingAllHarmful:finished", [ "protect" ]);
  4016.                         dispatch({
  4017.                             type: "REMOVING_ALL_HARMFUL_PROGRAMS_FINISHED"
  4018.                         });
  4019.  
  4020.                       case 30:
  4021.                       case "end":
  4022.                         return _context.stop();
  4023.                     }
  4024.                 }, _callee, undefined, [ [ 16, 23 ] ]);
  4025.             }));
  4026.             return function(_x3, _x4) {
  4027.                 return _ref2.apply(this, arguments);
  4028.             };
  4029.         }();
  4030.     }, exports.resetProtectScreen = function() {
  4031.         return function(dispatch, getState) {
  4032.             dispatch({
  4033.                 type: "PROTECT_SCREEN_RESET"
  4034.             });
  4035.         };
  4036.     }, exports.toggleUsefulPrograms = function() {
  4037.         return function(dispatch, getState) {
  4038.             _statistics2["default"].event({
  4039.                 action: "protect switch used"
  4040.             });
  4041.             dispatch({
  4042.                 type: "PROTECT_SCREEN_TOGGLE_USEFUL_PROGRAMS"
  4043.             });
  4044.         };
  4045.     }, {
  4046.         PROGRAMS_PAGE: "soft",
  4047.         PROTECT_SECURITY_PROGRAMS: "protect",
  4048.         INSTALLATION_PAGE: "installation"
  4049.     });
  4050.     exports.closeConfirmPopup = function(result, button, program, zone) {
  4051.         return function(dispatch, getState) {
  4052.             return new Promise(function(resolve) {
  4053.                 var name = program.name, actionParts = [ "confirm popup " + button + " clicked " + name ];
  4054.                 actionParts.unshift(confirmPopupZoneMap[zone]);
  4055.                 _statistics2["default"].event({
  4056.                     action: actionParts.join(" ")
  4057.                 });
  4058.                 dispatch({
  4059.                     type: "CONFIRM_POPUP_CLOSE",
  4060.                     payload: {
  4061.                         result: result
  4062.                     }
  4063.                 });
  4064.             });
  4065.         };
  4066.     }, exports.confirmProgramInstallation = function(program, zone) {
  4067.         return function(dispatch, getState) {
  4068.             return new Promise(function(resolve) {
  4069.                 dispatch({
  4070.                     type: "CONFIRM_POPUP_OPEN",
  4071.                     payload: {
  4072.                         program: program,
  4073.                         zone: zone
  4074.                     }
  4075.                 });
  4076.                 var unsubscribe = window.store.subscribe(function() {
  4077.                     var newState = getState(), _newState$app$popup = newState.app.popup, isOpened = _newState$app$popup.isOpened, result = _newState$app$popup.result;
  4078.                     if (!isOpened) {
  4079.                         unsubscribe();
  4080.                         resolve(result);
  4081.                     }
  4082.                 });
  4083.             });
  4084.         };
  4085.     }, exports.togglePopupEula = function(program, zone) {
  4086.         return function(dispatch, getState) {
  4087.             var name = program.name, actionParts = [ "confirm popup checkbox used " + name ];
  4088.             actionParts.unshift(confirmPopupZoneMap[zone]);
  4089.             _statistics2["default"].event({
  4090.                 action: actionParts.join(" ")
  4091.             });
  4092.             dispatch({
  4093.                 type: "CONFIRM_POPUP_OPEN_TOGGLE_EULA"
  4094.             });
  4095.         };
  4096.     }, exports.toggleProgramEula = function(id, isEulaChecked) {
  4097.         return function(dispatch, getState) {
  4098.             dispatch({
  4099.                 type: "TOGGLE_PROGRAM_EULA",
  4100.                 payload: {
  4101.                     id: id,
  4102.                     isEulaChecked: isEulaChecked
  4103.                 }
  4104.             });
  4105.         };
  4106.     };
  4107. }, function(module, exports, __webpack_require__) {
  4108.     "use strict";
  4109.     function getInternetExplorerVersion() {
  4110.         var rv = void 0, ua = void 0, re = void 0;
  4111.         try {
  4112.             rv = parseInt((0, _system.RegRead)("HKLM\\SOFTWARE\\Microsoft\\Internet Explorer\\svcVersion").split(".")[0], 10);
  4113.         } catch (e) {}
  4114.         if ("number" != typeof rv) try {
  4115.             rv = parseInt((0, _system.RegRead)("HKLM\\SOFTWARE\\Microsoft\\Internet Explorer\\Version").split(".")[0], 10);
  4116.         } catch (e) {}
  4117.         if ("number" != typeof rv) if ("Microsoft Internet Explorer" === navigator.appName) {
  4118.             ua = navigator.userAgent;
  4119.             re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
  4120.             if (null != re.exec(ua)) rv = parseFloat(RegExp.$1);
  4121.         } else if ("Netscape" === navigator.appName) {
  4122.             ua = navigator.userAgent;
  4123.             re = new RegExp("Trident/.*rv:([0-9]{1,}[.0-9]{0,})");
  4124.             if (null != re.exec(ua)) rv = parseFloat(RegExp.$1);
  4125.         }
  4126.         if ("number" != typeof rv) rv = -1;
  4127.         return rv;
  4128.     }
  4129.     exports.__esModule = !0;
  4130.     exports["default"] = getInternetExplorerVersion;
  4131.     var _system = __webpack_require__(9);
  4132.     module.exports = exports["default"];
  4133. }, function(module, exports, __webpack_require__) {
  4134.     "use strict";
  4135.     function _interopRequireDefault(obj) {
  4136.         return obj && obj.__esModule ? obj : {
  4137.             "default": obj
  4138.         };
  4139.     }
  4140.     exports.__esModule = !0;
  4141.     exports.getDevicesStatus = exports.getDevicesCount = exports.getHardware = undefined;
  4142.     var _extends = Object.assign || function(target) {
  4143.         for (var i = 1; i < arguments.length; i++) {
  4144.             var source = arguments[i];
  4145.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  4146.         }
  4147.         return target;
  4148.     }, _wmi = __webpack_require__(16), _iterate = __webpack_require__(52), _iterate2 = _interopRequireDefault(_iterate), _getDeviceProblem = __webpack_require__(148), _getDeviceProblem2 = _interopRequireDefault(_getDeviceProblem), re1 = /^(.*(?:VEN|VID).*(?:DEV|PID).*?)(?=&|\\|$).*?(?=\\|$)/, re2 = /^((?:ACPI\\(?:IO|FUJITSU)|.*?(?!\\(?:IO|FUJITSU)\\))\\.*?)\\.*/, remap = function(_ref) {
  4149.         return {
  4150.             deviceId: _ref.DeviceID,
  4151.             status: _ref.Status,
  4152.             statusCode: _ref.ConfigManagerErrorCode
  4153.         };
  4154.     };
  4155.     exports.getHardware = function() {
  4156.         var DevicecolItems = _wmi.objWMIService.ExecQuery("SELECT * FROM  Win32_PnPEntity", "WQL"), DeviceenumItems = new Enumerator(DevicecolItems);
  4157.         DeviceenumItems.moveFirst();
  4158.         for (var DriverPackInstalled = [], i = 0; !1 === DeviceenumItems.atEnd(); i++) !function(i) {
  4159.             var deviceItem = DeviceenumItems.item(), hardwareId = [];
  4160.             if (deviceItem.HardWareID !== undefined && null !== deviceItem.HardWareID && deviceItem.HardWareID.toArray) for (var h = 0; h < deviceItem.HardWareID.toArray().length; h++) hardwareId.push(deviceItem.HardWareID.toArray()[h].toString().toUpperCase()); else if (deviceItem.DeviceID) {
  4161.                 var id = deviceItem.DeviceID.toUpperCase().replace(/^\*\s*/, "ACPI\\").replace(/^ACPI\\VEN_([0-9A-Z]+)&DEV_([0-9A-Z]+)/, "ACPI\\$1$2"), m = re1.exec(id);
  4162.                 if (m) {
  4163.                     for (var parts = m[0].slice(m[1].length + 1).split("&"), hwid = m[1], p = 0; p < parts.length; p++) {
  4164.                         hwid += "&" + parts[p];
  4165.                         hardwareId.push(hwid);
  4166.                     }
  4167.                     parts.forEach(function(part) {
  4168.                         hwid += "&" + part;
  4169.                         hardwareId.push(hwid);
  4170.                     });
  4171.                 } else hardwareId.push(id.replace(re2, "$1"));
  4172.             }
  4173.             DriverPackInstalled.push(_extends({}, remap(deviceItem), {
  4174.                 hardwareId: hardwareId
  4175.             }));
  4176.             DeviceenumItems.moveNext();
  4177.         }();
  4178.         return DriverPackInstalled;
  4179.     }, exports.getDevicesCount = function(_ref2) {
  4180.         var status = _ref2.status, errCode = _ref2.errCode, filterBroken = _ref2.filterBroken, query = "SELECT DeviceID FROM Win32_PnPEntity", whereParts = [];
  4181.         if (status) whereParts.push('Status = "' + status + '"');
  4182.         if (errCode) {
  4183.             if (errCode.min) whereParts.push("ConfigManagerErrorCode >= " + errCode.min);
  4184.             if (errCode.max) whereParts.push("ConfigManagerErrorCode <= " + errCode.max);
  4185.         }
  4186.         if (whereParts.length > 0) query = query + " WHERE " + whereParts.join(" AND ");
  4187.         var DevicecolItems = _wmi.objWMIService.ExecQuery(query, "WQL");
  4188.         if (!filterBroken) return DevicecolItems.Count;
  4189.         var res = 0, DeviceenumItems = new Enumerator(DevicecolItems);
  4190.         DeviceenumItems.moveFirst();
  4191.         for (var i = 0; !1 === DeviceenumItems.atEnd(); i++) {
  4192.             var DeviceID = DeviceenumItems.item().DeviceID;
  4193.             if (DeviceID && !(0, _getDeviceProblem2["default"])(DeviceID)) res++;
  4194.             DeviceenumItems.moveNext();
  4195.         }
  4196.         return res;
  4197.     }, exports.getDevicesStatus = function(hwids) {
  4198.         var where = hwids.map(function(deviceId) {
  4199.             return "(DeviceID=" + JSON.stringify(deviceId) + ")";
  4200.         }).join(" OR "), query = "SELECT * FROM  Win32_PnPEntity" + (where ? " WHERE " + where : ""), res = [];
  4201.         (0, _iterate2["default"])(_wmi.objWMIService.ExecQuery(query, "WQL"), function(item) {
  4202.             res.push(_extends({}, remap(item)));
  4203.         });
  4204.         return res;
  4205.     };
  4206. }, function(module, exports, __webpack_require__) {
  4207.     "use strict";
  4208.     exports.__esModule = !0;
  4209.     exports.httphead = exports.httpput = exports.httppost = exports.httpget = exports.getXMLHttp = undefined;
  4210.     var _registry = __webpack_require__(30), _client = __webpack_require__(662), _client2 = function(obj) {
  4211.         return obj && obj.__esModule ? obj : {
  4212.             "default": obj
  4213.         };
  4214.     }(_client), httprequest = (exports.getXMLHttp = _client2["default"].getXHR, function(send) {
  4215.         var originalCORS = Number((0, _registry.RegRead)(_registry.REG_CORS));
  4216.         (0, _registry.RegWrite)(_registry.REG_CORS, 0, "REG_DWORD");
  4217.         var promise = new Promise(function(resolve, reject) {
  4218.             send().then(resolve, function(err) {
  4219.                 err.type = "HttpError";
  4220.                 reject(err);
  4221.             });
  4222.         });
  4223.         if (0 !== originalCORS) (0, _registry.RegWrite)(_registry.REG_CORS, originalCORS, "REG_DWORD");
  4224.         return promise;
  4225.     });
  4226.     exports.httpget = function(url) {
  4227.         return httprequest(function() {
  4228.             return _client2["default"].get(url).set("Connection", "close");
  4229.         });
  4230.     }, exports.httppost = function(url, data) {
  4231.         var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, headers = _ref.headers;
  4232.         return httprequest(function() {
  4233.             var req = _client2["default"].post(url).set("Connection", "close");
  4234.             if (headers) req.set(headers);
  4235.             return req.send(data);
  4236.         });
  4237.     }, exports.httpput = function(url, data) {
  4238.         return httprequest(function() {
  4239.             return _client2["default"].put(url).set("Connection", "close").send(data);
  4240.         });
  4241.     }, exports.httphead = function(url) {
  4242.         return httprequest(function() {
  4243.             return _client2["default"].head(url).set("Connection", "close");
  4244.         });
  4245.     };
  4246. }, function(module, exports, __webpack_require__) {
  4247.     var isObject = __webpack_require__(10), document = __webpack_require__(2).document, is = isObject(document) && isObject(document.createElement);
  4248.     module.exports = function(it) {
  4249.         return is ? document.createElement(it) : {};
  4250.     };
  4251. }, function(module, exports) {
  4252.     module.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",");
  4253. }, function(module, exports, __webpack_require__) {
  4254.     var ctx = __webpack_require__(32), call = __webpack_require__(153), isArrayIter = __webpack_require__(131), anObject = __webpack_require__(11), toLength = __webpack_require__(21), getIterFn = __webpack_require__(138), BREAK = {}, RETURN = {}, exports = module.exports = function(iterable, entries, fn, that, ITERATOR) {
  4255.         var length, step, iterator, result, iterFn = ITERATOR ? function() {
  4256.             return iterable;
  4257.         } : getIterFn(iterable), f = ctx(fn, that, entries ? 2 : 1), index = 0;
  4258.         if ("function" != typeof iterFn) throw TypeError(iterable + " is not iterable!");
  4259.         if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
  4260.             result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
  4261.             if (result === BREAK || result === RETURN) return result;
  4262.         } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done; ) {
  4263.             result = call(iterator, f, step.value, entries);
  4264.             if (result === BREAK || result === RETURN) return result;
  4265.         }
  4266.     };
  4267.     exports.BREAK = BREAK;
  4268.     exports.RETURN = RETURN;
  4269. }, function(module, exports) {
  4270.     module.exports = function(fn, args, that) {
  4271.         var un = that === undefined;
  4272.         switch (args.length) {
  4273.           case 0:
  4274.             return un ? fn() : fn.call(that);
  4275.  
  4276.           case 1:
  4277.             return un ? fn(args[0]) : fn.call(that, args[0]);
  4278.  
  4279.           case 2:
  4280.             return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]);
  4281.  
  4282.           case 3:
  4283.             return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]);
  4284.  
  4285.           case 4:
  4286.             return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]);
  4287.         }
  4288.         return fn.apply(that, args);
  4289.     };
  4290. }, function(module, exports, __webpack_require__) {
  4291.     var isObject = __webpack_require__(10), cof = __webpack_require__(26), MATCH = __webpack_require__(7)("match");
  4292.     module.exports = function(it) {
  4293.         var isRegExp;
  4294.         return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : "RegExp" == cof(it));
  4295.     };
  4296. }, function(module, exports, __webpack_require__) {
  4297.     var ITERATOR = __webpack_require__(7)("iterator"), SAFE_CLOSING = !1;
  4298.     try {
  4299.         var riter = [ 7 ][ITERATOR]();
  4300.         riter["return"] = function() {
  4301.             SAFE_CLOSING = !0;
  4302.         };
  4303.         Array.from(riter, function() {
  4304.             throw 2;
  4305.         });
  4306.     } catch (e) {}
  4307.     module.exports = function(exec, skipClosing) {
  4308.         if (!skipClosing && !SAFE_CLOSING) return !1;
  4309.         var safe = !1;
  4310.         try {
  4311.             var arr = [ 7 ], iter = arr[ITERATOR]();
  4312.             iter.next = function() {
  4313.                 return {
  4314.                     done: safe = !0
  4315.                 };
  4316.             };
  4317.             arr[ITERATOR] = function() {
  4318.                 return iter;
  4319.             };
  4320.             exec(arr);
  4321.         } catch (e) {}
  4322.         return safe;
  4323.     };
  4324. }, function(module, exports, __webpack_require__) {
  4325.     var META = __webpack_require__(51)("meta"), isObject = __webpack_require__(10), has = __webpack_require__(27), setDesc = __webpack_require__(17).f, id = 0, isExtensible = Object.isExtensible || function() {
  4326.         return !0;
  4327.     }, FREEZE = !__webpack_require__(8)(function() {
  4328.         return isExtensible(Object.preventExtensions({}));
  4329.     }), setMeta = function(it) {
  4330.         setDesc(it, META, {
  4331.             value: {
  4332.                 i: "O" + ++id,
  4333.                 w: {}
  4334.             }
  4335.         });
  4336.     }, fastKey = function(it, create) {
  4337.         if (!isObject(it)) return "symbol" == typeof it ? it : ("string" == typeof it ? "S" : "P") + it;
  4338.         if (!has(it, META)) {
  4339.             if (!isExtensible(it)) return "F";
  4340.             if (!create) return "E";
  4341.             setMeta(it);
  4342.         }
  4343.         return it[META].i;
  4344.     }, getWeak = function(it, create) {
  4345.         if (!has(it, META)) {
  4346.             if (!isExtensible(it)) return !0;
  4347.             if (!create) return !1;
  4348.             setMeta(it);
  4349.         }
  4350.         return it[META].w;
  4351.     }, onFreeze = function(it) {
  4352.         if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  4353.         return it;
  4354.     }, meta = module.exports = {
  4355.         KEY: META,
  4356.         NEED: !1,
  4357.         fastKey: fastKey,
  4358.         getWeak: getWeak,
  4359.         onFreeze: onFreeze
  4360.     };
  4361. }, function(module, exports) {
  4362.     exports.f = Object.getOwnPropertySymbols;
  4363. }, function(module, exports, __webpack_require__) {
  4364.     var global = __webpack_require__(2), store = global["__core-js_shared__"] || (global["__core-js_shared__"] = {});
  4365.     module.exports = function(key) {
  4366.         return store[key] || (store[key] = {});
  4367.     };
  4368. }, function(module, exports, __webpack_require__) {
  4369.     var $export = __webpack_require__(0), defined = __webpack_require__(33), fails = __webpack_require__(8), spaces = __webpack_require__(201), space = "[" + spaces + "]", non = "​…", ltrim = RegExp("^" + space + space + "*"), rtrim = RegExp(space + space + "*$"), exporter = function(KEY, exec, ALIAS) {
  4370.         var exp = {}, FORCE = fails(function() {
  4371.             return !!spaces[KEY]() || non[KEY]() != non;
  4372.         }), fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
  4373.         if (ALIAS) exp[ALIAS] = fn;
  4374.         $export($export.P + $export.F * FORCE, "String", exp);
  4375.     }, trim = exporter.trim = function(string, TYPE) {
  4376.         string = String(defined(string));
  4377.         if (1 & TYPE) string = string.replace(ltrim, "");
  4378.         if (2 & TYPE) string = string.replace(rtrim, "");
  4379.         return string;
  4380.     };
  4381.     module.exports = exporter;
  4382. }, function(module, exports, __webpack_require__) {
  4383.     var defer, channel, port, ctx = __webpack_require__(32), invoke = __webpack_require__(106), html = __webpack_require__(129), cel = __webpack_require__(103), global = __webpack_require__(2), process = global.process, setTask = global.setImmediate, clearTask = global.clearImmediate, MessageChannel = global.MessageChannel, counter = 0, queue = {}, run = function() {
  4384.         var id = +this;
  4385.         if (queue.hasOwnProperty(id)) {
  4386.             var fn = queue[id];
  4387.             delete queue[id];
  4388.             fn();
  4389.         }
  4390.     }, listener = function(event) {
  4391.         run.call(event.data);
  4392.     };
  4393.     if (!setTask || !clearTask) {
  4394.         setTask = function(fn) {
  4395.             for (var args = [], i = 1; arguments.length > i; ) args.push(arguments[i++]);
  4396.             queue[++counter] = function() {
  4397.                 invoke("function" == typeof fn ? fn : Function(fn), args);
  4398.             };
  4399.             defer(counter);
  4400.             return counter;
  4401.         };
  4402.         clearTask = function(id) {
  4403.             delete queue[id];
  4404.         };
  4405.         if ("process" == __webpack_require__(26)(process)) defer = function(id) {
  4406.             process.nextTick(ctx(run, id, 1));
  4407.         }; else if (MessageChannel) {
  4408.             channel = new MessageChannel();
  4409.             port = channel.port2;
  4410.             channel.port1.onmessage = listener;
  4411.             defer = ctx(port.postMessage, port, 1);
  4412.         } else if (global.addEventListener && "function" == typeof postMessage && !global.importScripts) {
  4413.             defer = function(id) {
  4414.                 global.postMessage(id + "", "*");
  4415.             };
  4416.             global.addEventListener("message", listener, !1);
  4417.         } else if ("onreadystatechange" in cel("script")) defer = function(id) {
  4418.             html.appendChild(cel("script")).onreadystatechange = function() {
  4419.                 html.removeChild(this);
  4420.                 run.call(id);
  4421.             };
  4422.         }; else defer = function(id) {
  4423.             setTimeout(ctx(run, id, 1), 0);
  4424.         };
  4425.     }
  4426.     module.exports = {
  4427.         set: setTask,
  4428.         clear: clearTask
  4429.     };
  4430. }, function(module, exports) {
  4431.     function isLength(value) {
  4432.         return "number" == typeof value && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  4433.     }
  4434.     var MAX_SAFE_INTEGER = 9007199254740991;
  4435.     module.exports = isLength;
  4436. }, function(module, exports, __webpack_require__) {
  4437.     function isArguments(value) {
  4438.         return isObjectLike(value) && isArrayLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
  4439.     }
  4440.     var isArrayLike = __webpack_require__(75), isObjectLike = __webpack_require__(54), objectProto = Object.prototype, hasOwnProperty = objectProto.hasOwnProperty, propertyIsEnumerable = objectProto.propertyIsEnumerable;
  4441.     module.exports = isArguments;
  4442. }, function(module, exports, __webpack_require__) {
  4443.     "use strict";
  4444.     function shouldIgnoreValue(name, value) {
  4445.         return null == value || DOMProperty.hasBooleanValue[name] && !value || DOMProperty.hasNumericValue[name] && isNaN(value) || DOMProperty.hasPositiveNumericValue[name] && value < 1 || DOMProperty.hasOverloadedBooleanValue[name] && !1 === value;
  4446.     }
  4447.     var DOMProperty = __webpack_require__(96), escapeTextForBrowser = __webpack_require__(217), memoizeStringOnly = __webpack_require__(309), warning = __webpack_require__(61), processAttributeNameAndPrefix = memoizeStringOnly(function(name) {
  4448.         return escapeTextForBrowser(name) + '="';
  4449.     });
  4450.     if (!0) var reactProps = {
  4451.         children: !0,
  4452.         dangerouslySetInnerHTML: !0,
  4453.         key: !0,
  4454.         ref: !0
  4455.     }, warnedProperties = {}, warnUnknownProperty = function(name) {
  4456.         if (!(reactProps.hasOwnProperty(name) && reactProps[name] || warnedProperties.hasOwnProperty(name) && warnedProperties[name])) {
  4457.             warnedProperties[name] = !0;
  4458.             var lowerCasedName = name.toLowerCase(), standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;
  4459.             warning(null == standardName, "Unknown DOM property " + name + ". Did you mean " + standardName + "?");
  4460.         }
  4461.     };
  4462.     var DOMPropertyOperations = {
  4463.         createMarkupForID: function(id) {
  4464.             return processAttributeNameAndPrefix(DOMProperty.ID_ATTRIBUTE_NAME) + escapeTextForBrowser(id) + '"';
  4465.         },
  4466.         createMarkupForProperty: function(name, value) {
  4467.             if (DOMProperty.isStandardName.hasOwnProperty(name) && DOMProperty.isStandardName[name]) {
  4468.                 if (shouldIgnoreValue(name, value)) return "";
  4469.                 var attributeName = DOMProperty.getAttributeName[name];
  4470.                 if (DOMProperty.hasBooleanValue[name] || DOMProperty.hasOverloadedBooleanValue[name] && !0 === value) return escapeTextForBrowser(attributeName); else return processAttributeNameAndPrefix(attributeName) + escapeTextForBrowser(value) + '"';
  4471.             } else if (DOMProperty.isCustomAttribute(name)) if (null == value) return ""; else return processAttributeNameAndPrefix(name) + escapeTextForBrowser(value) + '"'; else if (!0) warnUnknownProperty(name);
  4472.             return null;
  4473.         },
  4474.         setValueForProperty: function(node, name, value) {
  4475.             if (DOMProperty.isStandardName.hasOwnProperty(name) && DOMProperty.isStandardName[name]) {
  4476.                 var mutationMethod = DOMProperty.getMutationMethod[name];
  4477.                 if (mutationMethod) mutationMethod(node, value); else if (shouldIgnoreValue(name, value)) this.deleteValueForProperty(node, name); else if (DOMProperty.mustUseAttribute[name]) node.setAttribute(DOMProperty.getAttributeName[name], "" + value); else {
  4478.                     var propName = DOMProperty.getPropertyName[name];
  4479.                     if (!DOMProperty.hasSideEffects[name] || node[propName] !== value) node[propName] = value;
  4480.                 }
  4481.             } else if (DOMProperty.isCustomAttribute(name)) if (null == value) node.removeAttribute(name); else node.setAttribute(name, "" + value); else if (!0) warnUnknownProperty(name);
  4482.         },
  4483.         deleteValueForProperty: function(node, name) {
  4484.             if (DOMProperty.isStandardName.hasOwnProperty(name) && DOMProperty.isStandardName[name]) {
  4485.                 var mutationMethod = DOMProperty.getMutationMethod[name];
  4486.                 if (mutationMethod) mutationMethod(node, undefined); else if (DOMProperty.mustUseAttribute[name]) node.removeAttribute(DOMProperty.getAttributeName[name]); else {
  4487.                     var propName = DOMProperty.getPropertyName[name], defaultValue = DOMProperty.getDefaultValueForProperty(node.nodeName, propName);
  4488.                     if (!DOMProperty.hasSideEffects[name] || node[propName] !== defaultValue) node[propName] = defaultValue;
  4489.                 }
  4490.             } else if (DOMProperty.isCustomAttribute(name)) node.removeAttribute(name); else if (!0) warnUnknownProperty(name);
  4491.         }
  4492.     };
  4493.     module.exports = DOMPropertyOperations;
  4494. }, function(module, exports, __webpack_require__) {
  4495.     "use strict";
  4496.     function listenerAtPhase(id, event, propagationPhase) {
  4497.         var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];
  4498.         return getListener(id, registrationName);
  4499.     }
  4500.     function accumulateDirectionalDispatches(domID, upwards, event) {
  4501.         if (!0) if (!domID) throw new Error("Dispatching id must not be null");
  4502.         var phase = upwards ? PropagationPhases.bubbled : PropagationPhases.captured, listener = listenerAtPhase(domID, event, phase);
  4503.         if (listener) {
  4504.             event._dispatchListeners = accumulate(event._dispatchListeners, listener);
  4505.             event._dispatchIDs = accumulate(event._dispatchIDs, domID);
  4506.         }
  4507.     }
  4508.     function accumulateTwoPhaseDispatchesSingle(event) {
  4509.         if (event && event.dispatchConfig.phasedRegistrationNames) EventPluginHub.injection.getInstanceHandle().traverseTwoPhase(event.dispatchMarker, accumulateDirectionalDispatches, event);
  4510.     }
  4511.     function accumulateDispatches(id, ignoredDirection, event) {
  4512.         if (event && event.dispatchConfig.registrationName) {
  4513.             var registrationName = event.dispatchConfig.registrationName, listener = getListener(id, registrationName);
  4514.             if (listener) {
  4515.                 event._dispatchListeners = accumulate(event._dispatchListeners, listener);
  4516.                 event._dispatchIDs = accumulate(event._dispatchIDs, id);
  4517.             }
  4518.         }
  4519.     }
  4520.     function accumulateDirectDispatchesSingle(event) {
  4521.         if (event && event.dispatchConfig.registrationName) accumulateDispatches(event.dispatchMarker, null, event);
  4522.     }
  4523.     function accumulateTwoPhaseDispatches(events) {
  4524.         forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);
  4525.     }
  4526.     function accumulateEnterLeaveDispatches(leave, enter, fromID, toID) {
  4527.         EventPluginHub.injection.getInstanceHandle().traverseEnterLeave(fromID, toID, accumulateDispatches, leave, enter);
  4528.     }
  4529.     function accumulateDirectDispatches(events) {
  4530.         forEachAccumulated(events, accumulateDirectDispatchesSingle);
  4531.     }
  4532.     var EventConstants = __webpack_require__(45), EventPluginHub = __webpack_require__(143), accumulate = __webpack_require__(216), forEachAccumulated = __webpack_require__(218), PropagationPhases = EventConstants.PropagationPhases, getListener = EventPluginHub.getListener, EventPropagators = {
  4533.         accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,
  4534.         accumulateDirectDispatches: accumulateDirectDispatches,
  4535.         accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches
  4536.     };
  4537.     module.exports = EventPropagators;
  4538. }, function(module, exports, __webpack_require__) {
  4539.     "use strict";
  4540.     function getListeningForDocument(mountAt) {
  4541.         if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {
  4542.             mountAt[topListenersIDKey] = reactTopListenersCounter++;
  4543.             alreadyListeningTo[mountAt[topListenersIDKey]] = {};
  4544.         }
  4545.         return alreadyListeningTo[mountAt[topListenersIDKey]];
  4546.     }
  4547.     var EventConstants = __webpack_require__(45), EventPluginHub = __webpack_require__(143), EventPluginRegistry = __webpack_require__(286), ReactEventEmitterMixin = __webpack_require__(610), ViewportMetrics = __webpack_require__(300), isEventSupported = __webpack_require__(222), merge = __webpack_require__(46), alreadyListeningTo = {}, isMonitoringScrollValue = !1, reactTopListenersCounter = 0, topEventMapping = {
  4548.         topBlur: "blur",
  4549.         topChange: "change",
  4550.         topClick: "click",
  4551.         topCompositionEnd: "compositionend",
  4552.         topCompositionStart: "compositionstart",
  4553.         topCompositionUpdate: "compositionupdate",
  4554.         topContextMenu: "contextmenu",
  4555.         topCopy: "copy",
  4556.         topCut: "cut",
  4557.         topDoubleClick: "dblclick",
  4558.         topDrag: "drag",
  4559.         topDragEnd: "dragend",
  4560.         topDragEnter: "dragenter",
  4561.         topDragExit: "dragexit",
  4562.         topDragLeave: "dragleave",
  4563.         topDragOver: "dragover",
  4564.         topDragStart: "dragstart",
  4565.         topDrop: "drop",
  4566.         topFocus: "focus",
  4567.         topInput: "input",
  4568.         topKeyDown: "keydown",
  4569.         topKeyPress: "keypress",
  4570.         topKeyUp: "keyup",
  4571.         topMouseDown: "mousedown",
  4572.         topMouseMove: "mousemove",
  4573.         topMouseOut: "mouseout",
  4574.         topMouseOver: "mouseover",
  4575.         topMouseUp: "mouseup",
  4576.         topPaste: "paste",
  4577.         topScroll: "scroll",
  4578.         topSelectionChange: "selectionchange",
  4579.         topTextInput: "textInput",
  4580.         topTouchCancel: "touchcancel",
  4581.         topTouchEnd: "touchend",
  4582.         topTouchMove: "touchmove",
  4583.         topTouchStart: "touchstart",
  4584.         topWheel: "wheel"
  4585.     }, topListenersIDKey = "_reactListenersID" + String(Math.random()).slice(2), ReactBrowserEventEmitter = merge(ReactEventEmitterMixin, {
  4586.         ReactEventListener: null,
  4587.         injection: {
  4588.             injectReactEventListener: function(ReactEventListener) {
  4589.                 ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);
  4590.                 ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;
  4591.             }
  4592.         },
  4593.         setEnabled: function(enabled) {
  4594.             if (ReactBrowserEventEmitter.ReactEventListener) ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);
  4595.         },
  4596.         isEnabled: function() {
  4597.             return !(!ReactBrowserEventEmitter.ReactEventListener || !ReactBrowserEventEmitter.ReactEventListener.isEnabled());
  4598.         },
  4599.         listenTo: function(registrationName, contentDocumentHandle) {
  4600.             for (var mountAt = contentDocumentHandle, isListening = getListeningForDocument(mountAt), dependencies = EventPluginRegistry.registrationNameDependencies[registrationName], topLevelTypes = EventConstants.topLevelTypes, i = 0, l = dependencies.length; i < l; i++) {
  4601.                 var dependency = dependencies[i];
  4602.                 if (!isListening.hasOwnProperty(dependency) || !isListening[dependency]) {
  4603.                     if (dependency === topLevelTypes.topWheel) if (isEventSupported("wheel")) ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, "wheel", mountAt); else if (isEventSupported("mousewheel")) ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, "mousewheel", mountAt); else ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, "DOMMouseScroll", mountAt); else if (dependency === topLevelTypes.topScroll) if (isEventSupported("scroll", !0)) ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topScroll, "scroll", mountAt); else ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topScroll, "scroll", ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE); else if (dependency === topLevelTypes.topFocus || dependency === topLevelTypes.topBlur) {
  4604.                         if (isEventSupported("focus", !0)) {
  4605.                             ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topFocus, "focus", mountAt);
  4606.                             ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topBlur, "blur", mountAt);
  4607.                         } else if (isEventSupported("focusin")) {
  4608.                             ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topFocus, "focusin", mountAt);
  4609.                             ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topBlur, "focusout", mountAt);
  4610.                         }
  4611.                         isListening[topLevelTypes.topBlur] = !0;
  4612.                         isListening[topLevelTypes.topFocus] = !0;
  4613.                     } else if (topEventMapping.hasOwnProperty(dependency)) ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);
  4614.                     isListening[dependency] = !0;
  4615.                 }
  4616.             }
  4617.         },
  4618.         trapBubbledEvent: function(topLevelType, handlerBaseName, handle) {
  4619.             return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);
  4620.         },
  4621.         trapCapturedEvent: function(topLevelType, handlerBaseName, handle) {
  4622.             return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);
  4623.         },
  4624.         ensureScrollValueMonitoring: function() {
  4625.             if (!isMonitoringScrollValue) {
  4626.                 var refresh = ViewportMetrics.refreshScrollValues;
  4627.                 ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);
  4628.                 isMonitoringScrollValue = !0;
  4629.             }
  4630.         },
  4631.         eventNameDispatchConfigs: EventPluginHub.eventNameDispatchConfigs,
  4632.         registrationNameModules: EventPluginHub.registrationNameModules,
  4633.         putListener: EventPluginHub.putListener,
  4634.         getListener: EventPluginHub.getListener,
  4635.         deleteListener: EventPluginHub.deleteListener,
  4636.         deleteAllListeners: EventPluginHub.deleteAllListeners
  4637.     });
  4638.     module.exports = ReactBrowserEventEmitter;
  4639. }, function(module, exports, __webpack_require__) {
  4640.     "use strict";
  4641.     var ReactDescriptor = __webpack_require__(58), ReactOwner = __webpack_require__(293), ReactUpdates = __webpack_require__(122), invariant = __webpack_require__(4), keyMirror = __webpack_require__(98), merge = __webpack_require__(46), ComponentLifeCycle = keyMirror({
  4642.         MOUNTED: null,
  4643.         UNMOUNTED: null
  4644.     }), injected = !1, unmountIDFromEnvironment = null, mountImageIntoNode = null, ReactComponent = {
  4645.         injection: {
  4646.             injectEnvironment: function(ReactComponentEnvironment) {
  4647.                 !0 ? invariant(!injected, "ReactComponent: injectEnvironment() can only be called once.") : invariant(!injected);
  4648.                 mountImageIntoNode = ReactComponentEnvironment.mountImageIntoNode;
  4649.                 unmountIDFromEnvironment = ReactComponentEnvironment.unmountIDFromEnvironment;
  4650.                 ReactComponent.BackendIDOperations = ReactComponentEnvironment.BackendIDOperations;
  4651.                 injected = !0;
  4652.             }
  4653.         },
  4654.         LifeCycle: ComponentLifeCycle,
  4655.         BackendIDOperations: null,
  4656.         Mixin: {
  4657.             isMounted: function() {
  4658.                 return this._lifeCycleState === ComponentLifeCycle.MOUNTED;
  4659.             },
  4660.             setProps: function(partialProps, callback) {
  4661.                 var descriptor = this._pendingDescriptor || this._descriptor;
  4662.                 this.replaceProps(merge(descriptor.props, partialProps), callback);
  4663.             },
  4664.             replaceProps: function(props, callback) {
  4665.                 !0 ? invariant(this.isMounted(), "replaceProps(...): Can only update a mounted component.") : invariant(this.isMounted());
  4666.                 !0 ? invariant(0 === this._mountDepth, "replaceProps(...): You called `setProps` or `replaceProps` on a component with a parent. This is an anti-pattern since props will get reactively updated when rendered. Instead, change the owner's `render` method to pass the correct value as props to the component where it is created.") : invariant(0 === this._mountDepth);
  4667.                 this._pendingDescriptor = ReactDescriptor.cloneAndReplaceProps(this._pendingDescriptor || this._descriptor, props);
  4668.                 ReactUpdates.enqueueUpdate(this, callback);
  4669.             },
  4670.             _setPropsInternal: function(partialProps, callback) {
  4671.                 var descriptor = this._pendingDescriptor || this._descriptor;
  4672.                 this._pendingDescriptor = ReactDescriptor.cloneAndReplaceProps(descriptor, merge(descriptor.props, partialProps));
  4673.                 ReactUpdates.enqueueUpdate(this, callback);
  4674.             },
  4675.             construct: function(descriptor) {
  4676.                 this.props = descriptor.props;
  4677.                 this._owner = descriptor._owner;
  4678.                 this._lifeCycleState = ComponentLifeCycle.UNMOUNTED;
  4679.                 this._pendingCallbacks = null;
  4680.                 this._descriptor = descriptor;
  4681.                 this._pendingDescriptor = null;
  4682.             },
  4683.             mountComponent: function(rootID, transaction, mountDepth) {
  4684.                 !0 ? invariant(!this.isMounted(), "mountComponent(%s, ...): Can only mount an unmounted component. Make sure to avoid storing components between renders or reusing a single component instance in multiple places.", rootID) : invariant(!this.isMounted());
  4685.                 var props = this._descriptor.props;
  4686.                 if (null != props.ref) {
  4687.                     var owner = this._descriptor._owner;
  4688.                     ReactOwner.addComponentAsRefTo(this, props.ref, owner);
  4689.                 }
  4690.                 this._rootNodeID = rootID;
  4691.                 this._lifeCycleState = ComponentLifeCycle.MOUNTED;
  4692.                 this._mountDepth = mountDepth;
  4693.             },
  4694.             unmountComponent: function() {
  4695.                 !0 ? invariant(this.isMounted(), "unmountComponent(): Can only unmount a mounted component.") : invariant(this.isMounted());
  4696.                 var props = this.props;
  4697.                 if (null != props.ref) ReactOwner.removeComponentAsRefFrom(this, props.ref, this._owner);
  4698.                 unmountIDFromEnvironment(this._rootNodeID);
  4699.                 this._rootNodeID = null;
  4700.                 this._lifeCycleState = ComponentLifeCycle.UNMOUNTED;
  4701.             },
  4702.             receiveComponent: function(nextDescriptor, transaction) {
  4703.                 !0 ? invariant(this.isMounted(), "receiveComponent(...): Can only update a mounted component.") : invariant(this.isMounted());
  4704.                 this._pendingDescriptor = nextDescriptor;
  4705.                 this.performUpdateIfNecessary(transaction);
  4706.             },
  4707.             performUpdateIfNecessary: function(transaction) {
  4708.                 if (null != this._pendingDescriptor) {
  4709.                     var prevDescriptor = this._descriptor, nextDescriptor = this._pendingDescriptor;
  4710.                     this._descriptor = nextDescriptor;
  4711.                     this.props = nextDescriptor.props;
  4712.                     this._owner = nextDescriptor._owner;
  4713.                     this._pendingDescriptor = null;
  4714.                     this.updateComponent(transaction, prevDescriptor);
  4715.                 }
  4716.             },
  4717.             updateComponent: function(transaction, prevDescriptor) {
  4718.                 var nextDescriptor = this._descriptor;
  4719.                 if (nextDescriptor._owner !== prevDescriptor._owner || nextDescriptor.props.ref !== prevDescriptor.props.ref) {
  4720.                     if (null != prevDescriptor.props.ref) ReactOwner.removeComponentAsRefFrom(this, prevDescriptor.props.ref, prevDescriptor._owner);
  4721.                     if (null != nextDescriptor.props.ref) ReactOwner.addComponentAsRefTo(this, nextDescriptor.props.ref, nextDescriptor._owner);
  4722.                 }
  4723.             },
  4724.             mountComponentIntoNode: function(rootID, container, shouldReuseMarkup) {
  4725.                 var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();
  4726.                 transaction.perform(this._mountComponentIntoNode, this, rootID, container, transaction, shouldReuseMarkup);
  4727.                 ReactUpdates.ReactReconcileTransaction.release(transaction);
  4728.             },
  4729.             _mountComponentIntoNode: function(rootID, container, transaction, shouldReuseMarkup) {
  4730.                 var markup = this.mountComponent(rootID, transaction, 0);
  4731.                 mountImageIntoNode(markup, container, shouldReuseMarkup);
  4732.             },
  4733.             isOwnedBy: function(owner) {
  4734.                 return this._owner === owner;
  4735.             },
  4736.             getSiblingByRef: function(ref) {
  4737.                 var owner = this._owner;
  4738.                 if (!owner || !owner.refs) return null; else return owner.refs[ref];
  4739.             }
  4740.         }
  4741.     };
  4742.     module.exports = ReactComponent;
  4743. }, function(module, exports, __webpack_require__) {
  4744.     "use strict";
  4745.     var ReactCurrentOwner = {
  4746.         current: null
  4747.     };
  4748.     module.exports = ReactCurrentOwner;
  4749. }, function(module, exports, __webpack_require__) {
  4750.     "use strict";
  4751.     function getReactRootIDString(index) {
  4752.         return SEPARATOR + index.toString(36);
  4753.     }
  4754.     function isBoundary(id, index) {
  4755.         return id.charAt(index) === SEPARATOR || index === id.length;
  4756.     }
  4757.     function isValidID(id) {
  4758.         return "" === id || id.charAt(0) === SEPARATOR && id.charAt(id.length - 1) !== SEPARATOR;
  4759.     }
  4760.     function isAncestorIDOf(ancestorID, descendantID) {
  4761.         return 0 === descendantID.indexOf(ancestorID) && isBoundary(descendantID, ancestorID.length);
  4762.     }
  4763.     function getParentID(id) {
  4764.         return id ? id.substr(0, id.lastIndexOf(SEPARATOR)) : "";
  4765.     }
  4766.     function getNextDescendantID(ancestorID, destinationID) {
  4767.         !0 ? invariant(isValidID(ancestorID) && isValidID(destinationID), "getNextDescendantID(%s, %s): Received an invalid React DOM ID.", ancestorID, destinationID) : invariant(isValidID(ancestorID) && isValidID(destinationID));
  4768.         !0 ? invariant(isAncestorIDOf(ancestorID, destinationID), "getNextDescendantID(...): React has made an invalid assumption about the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.", ancestorID, destinationID) : invariant(isAncestorIDOf(ancestorID, destinationID));
  4769.         if (ancestorID === destinationID) return ancestorID;
  4770.         for (var start = ancestorID.length + SEPARATOR_LENGTH, i = start; i < destinationID.length && !isBoundary(destinationID, i); i++) ;
  4771.         return destinationID.substr(0, i);
  4772.     }
  4773.     function getFirstCommonAncestorID(oneID, twoID) {
  4774.         var minLength = Math.min(oneID.length, twoID.length);
  4775.         if (0 === minLength) return "";
  4776.         for (var lastCommonMarkerIndex = 0, i = 0; i <= minLength; i++) if (isBoundary(oneID, i) && isBoundary(twoID, i)) lastCommonMarkerIndex = i; else if (oneID.charAt(i) !== twoID.charAt(i)) break;
  4777.         var longestCommonID = oneID.substr(0, lastCommonMarkerIndex);
  4778.         !0 ? invariant(isValidID(longestCommonID), "getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s", oneID, twoID, longestCommonID) : invariant(isValidID(longestCommonID));
  4779.         return longestCommonID;
  4780.     }
  4781.     function traverseParentPath(start, stop, cb, arg, skipFirst, skipLast) {
  4782.         start = start || "";
  4783.         stop = stop || "";
  4784.         !0 ? invariant(start !== stop, "traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.", start) : invariant(start !== stop);
  4785.         var traverseUp = isAncestorIDOf(stop, start);
  4786.         !0 ? invariant(traverseUp || isAncestorIDOf(start, stop), "traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do not have a parent path.", start, stop) : invariant(traverseUp || isAncestorIDOf(start, stop));
  4787.         for (var depth = 0, traverse = traverseUp ? getParentID : getNextDescendantID, id = start; ;id = traverse(id, stop)) {
  4788.             var ret;
  4789.             if (!(skipFirst && id === start || skipLast && id === stop)) ret = cb(id, traverseUp, arg);
  4790.             if (!1 === ret || id === stop) break;
  4791.             !0 ? invariant(depth++ < MAX_TREE_DEPTH, "traverseParentPath(%s, %s, ...): Detected an infinite loop while traversing the React DOM ID tree. This may be due to malformed IDs: %s", start, stop) : invariant(depth++ < MAX_TREE_DEPTH);
  4792.         }
  4793.     }
  4794.     var ReactRootIndex = __webpack_require__(298), invariant = __webpack_require__(4), SEPARATOR = ".", SEPARATOR_LENGTH = SEPARATOR.length, MAX_TREE_DEPTH = 100, ReactInstanceHandles = {
  4795.         createReactRootID: function() {
  4796.             return getReactRootIDString(ReactRootIndex.createReactRootIndex());
  4797.         },
  4798.         createReactID: function(rootID, name) {
  4799.             return rootID + name;
  4800.         },
  4801.         getReactRootIDFromNodeID: function(id) {
  4802.             if (id && id.charAt(0) === SEPARATOR && id.length > 1) {
  4803.                 var index = id.indexOf(SEPARATOR, 1);
  4804.                 return index > -1 ? id.substr(0, index) : id;
  4805.             }
  4806.             return null;
  4807.         },
  4808.         traverseEnterLeave: function(leaveID, enterID, cb, upArg, downArg) {
  4809.             var ancestorID = getFirstCommonAncestorID(leaveID, enterID);
  4810.             if (ancestorID !== leaveID) traverseParentPath(leaveID, ancestorID, cb, upArg, !1, !0);
  4811.             if (ancestorID !== enterID) traverseParentPath(ancestorID, enterID, cb, downArg, !0, !1);
  4812.         },
  4813.         traverseTwoPhase: function(targetID, cb, arg) {
  4814.             if (targetID) {
  4815.                 traverseParentPath("", targetID, cb, arg, !0, !1);
  4816.                 traverseParentPath(targetID, "", cb, arg, !1, !0);
  4817.             }
  4818.         },
  4819.         traverseAncestors: function(targetID, cb, arg) {
  4820.             traverseParentPath("", targetID, cb, arg, !0, !1);
  4821.         },
  4822.         _getFirstCommonAncestorID: getFirstCommonAncestorID,
  4823.         _getNextDescendantID: getNextDescendantID,
  4824.         isAncestorIDOf: isAncestorIDOf,
  4825.         SEPARATOR: SEPARATOR
  4826.     };
  4827.     module.exports = ReactInstanceHandles;
  4828. }, function(module, exports, __webpack_require__) {
  4829.     "use strict";
  4830.     function ensureInjected() {
  4831.         !0 ? invariant(ReactUpdates.ReactReconcileTransaction && batchingStrategy, "ReactUpdates: must inject a reconcile transaction class and batching strategy") : invariant(ReactUpdates.ReactReconcileTransaction && batchingStrategy);
  4832.     }
  4833.     function ReactUpdatesFlushTransaction() {
  4834.         this.reinitializeTransaction();
  4835.         this.dirtyComponentsLength = null;
  4836.         this.callbackQueue = CallbackQueue.getPooled(null);
  4837.         this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled();
  4838.     }
  4839.     function batchedUpdates(callback, a, b) {
  4840.         ensureInjected();
  4841.         batchingStrategy.batchedUpdates(callback, a, b);
  4842.     }
  4843.     function mountDepthComparator(c1, c2) {
  4844.         return c1._mountDepth - c2._mountDepth;
  4845.     }
  4846.     function runBatchedUpdates(transaction) {
  4847.         var len = transaction.dirtyComponentsLength;
  4848.         !0 ? invariant(len === dirtyComponents.length, "Expected flush transaction's stored dirty-components length (%s) to match dirty-components array length (%s).", len, dirtyComponents.length) : invariant(len === dirtyComponents.length);
  4849.         dirtyComponents.sort(mountDepthComparator);
  4850.         for (var i = 0; i < len; i++) {
  4851.             var component = dirtyComponents[i];
  4852.             if (component.isMounted()) {
  4853.                 var callbacks = component._pendingCallbacks;
  4854.                 component._pendingCallbacks = null;
  4855.                 component.performUpdateIfNecessary(transaction.reconcileTransaction);
  4856.                 if (callbacks) for (var j = 0; j < callbacks.length; j++) transaction.callbackQueue.enqueue(callbacks[j], component);
  4857.             }
  4858.         }
  4859.     }
  4860.     function enqueueUpdate(component, callback) {
  4861.         !0 ? invariant(!callback || "function" == typeof callback, "enqueueUpdate(...): You called `setProps`, `replaceProps`, `setState`, `replaceState`, or `forceUpdate` with a callback that isn't callable.") : invariant(!callback || "function" == typeof callback);
  4862.         ensureInjected();
  4863.         warning(null == ReactCurrentOwner.current, "enqueueUpdate(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate.");
  4864.         if (batchingStrategy.isBatchingUpdates) {
  4865.             dirtyComponents.push(component);
  4866.             if (callback) if (component._pendingCallbacks) component._pendingCallbacks.push(callback); else component._pendingCallbacks = [ callback ];
  4867.         } else batchingStrategy.batchedUpdates(enqueueUpdate, component, callback);
  4868.     }
  4869.     var CallbackQueue = __webpack_require__(210), PooledClass = __webpack_require__(84), ReactCurrentOwner = __webpack_require__(120), ReactPerf = __webpack_require__(77), Transaction = __webpack_require__(163), invariant = __webpack_require__(4), mixInto = __webpack_require__(60), warning = __webpack_require__(61), dirtyComponents = [], batchingStrategy = null, NESTED_UPDATES = {
  4870.         initialize: function() {
  4871.             this.dirtyComponentsLength = dirtyComponents.length;
  4872.         },
  4873.         close: function() {
  4874.             if (this.dirtyComponentsLength !== dirtyComponents.length) {
  4875.                 dirtyComponents.splice(0, this.dirtyComponentsLength);
  4876.                 flushBatchedUpdates();
  4877.             } else dirtyComponents.length = 0;
  4878.         }
  4879.     }, UPDATE_QUEUEING = {
  4880.         initialize: function() {
  4881.             this.callbackQueue.reset();
  4882.         },
  4883.         close: function() {
  4884.             this.callbackQueue.notifyAll();
  4885.         }
  4886.     }, TRANSACTION_WRAPPERS = [ NESTED_UPDATES, UPDATE_QUEUEING ];
  4887.     mixInto(ReactUpdatesFlushTransaction, Transaction.Mixin);
  4888.     mixInto(ReactUpdatesFlushTransaction, {
  4889.         getTransactionWrappers: function() {
  4890.             return TRANSACTION_WRAPPERS;
  4891.         },
  4892.         destructor: function() {
  4893.             this.dirtyComponentsLength = null;
  4894.             CallbackQueue.release(this.callbackQueue);
  4895.             this.callbackQueue = null;
  4896.             ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);
  4897.             this.reconcileTransaction = null;
  4898.         },
  4899.         perform: function(method, scope, a) {
  4900.             return Transaction.Mixin.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);
  4901.         }
  4902.     });
  4903.     PooledClass.addPoolingTo(ReactUpdatesFlushTransaction);
  4904.     var flushBatchedUpdates = ReactPerf.measure("ReactUpdates", "flushBatchedUpdates", function() {
  4905.         for (;dirtyComponents.length; ) {
  4906.             var transaction = ReactUpdatesFlushTransaction.getPooled();
  4907.             transaction.perform(runBatchedUpdates, null, transaction);
  4908.             ReactUpdatesFlushTransaction.release(transaction);
  4909.         }
  4910.     }), ReactUpdatesInjection = {
  4911.         injectReconcileTransaction: function(ReconcileTransaction) {
  4912.             !0 ? invariant(ReconcileTransaction, "ReactUpdates: must provide a reconcile transaction class") : invariant(ReconcileTransaction);
  4913.             ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;
  4914.         },
  4915.         injectBatchingStrategy: function(_batchingStrategy) {
  4916.             !0 ? invariant(_batchingStrategy, "ReactUpdates: must provide a batching strategy") : invariant(_batchingStrategy);
  4917.             !0 ? invariant("function" == typeof _batchingStrategy.batchedUpdates, "ReactUpdates: must provide a batchedUpdates() function") : invariant("function" == typeof _batchingStrategy.batchedUpdates);
  4918.             !0 ? invariant("boolean" == typeof _batchingStrategy.isBatchingUpdates, "ReactUpdates: must provide an isBatchingUpdates boolean attribute") : invariant("boolean" == typeof _batchingStrategy.isBatchingUpdates);
  4919.             batchingStrategy = _batchingStrategy;
  4920.         }
  4921.     }, ReactUpdates = {
  4922.         ReactReconcileTransaction: null,
  4923.         batchedUpdates: batchedUpdates,
  4924.         enqueueUpdate: enqueueUpdate,
  4925.         flushBatchedUpdates: flushBatchedUpdates,
  4926.         injection: ReactUpdatesInjection
  4927.     };
  4928.     module.exports = ReactUpdates;
  4929. }, function(module, exports, __webpack_require__) {
  4930.     "use strict";
  4931.     (function(l) {
  4932.         function _interopRequireDefault(obj) {
  4933.             return obj && obj.__esModule ? obj : {
  4934.                 "default": obj
  4935.             };
  4936.         }
  4937.         function _asyncToGenerator(fn) {
  4938.             return function() {
  4939.                 var gen = fn.apply(this, arguments);
  4940.                 return new Promise(function(resolve, reject) {
  4941.                     function step(key, arg) {
  4942.                         try {
  4943.                             var info = gen[key](arg), value = info.value;
  4944.                         } catch (error) {
  4945.                             reject(error);
  4946.                             return;
  4947.                         }
  4948.                         if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  4949.                             step("next", value);
  4950.                         }, function(err) {
  4951.                             step("throw", err);
  4952.                         });
  4953.                     }
  4954.                     return step("next");
  4955.                 });
  4956.             };
  4957.         }
  4958.         function updateWindowParams() {
  4959.             return {
  4960.                 type: "WINDOW_PARAMETERS_UPDATED",
  4961.                 payload: {
  4962.                     windowWidth: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,
  4963.                     windowHeight: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,
  4964.                     windowLeft: window.screenLeft,
  4965.                     windowTop: window.screenTop
  4966.                 }
  4967.             };
  4968.         }
  4969.         function toggleBurgerMenu() {
  4970.             var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  4971.             if (options.eventAction) _logs2["default"].info({
  4972.                 action: options.eventAction,
  4973.                 counters: [ "default", "google.shared" ]
  4974.             }, {}, options.eventNamespace);
  4975.             return function(dispatch, getState) {
  4976.                 dispatch({
  4977.                     type: "BURGER_MENU_TOGGLED"
  4978.                 });
  4979.             };
  4980.         }
  4981.         function confirmMinimizing() {
  4982.             return function(dispatch, getState) {
  4983.                 dispatch({
  4984.                     type: "INSTALLATION_CONFIRM_MINIMIZING"
  4985.                 });
  4986.             };
  4987.         }
  4988.         function minimizeWindow() {
  4989.             _logs2["default"].info({
  4990.                 action: "minimize clicked"
  4991.             }, {}, "minimize:clicked");
  4992.             return function(dispatch, getState) {
  4993.                 window.windowRestoreTimeout = window.setTimeout(function() {
  4994.                     dispatch(maximizeWindow());
  4995.                     (0, _activateAppWindow2["default"])();
  4996.                 }, 6e5);
  4997.                 _ps2["default"].send(buildMinimizeCmd("$htaHwnd"));
  4998.                 dispatch({
  4999.                     type: "WINDOW_STATE_CHANGED",
  5000.                     payload: {
  5001.                         windowState: "minimized"
  5002.                     }
  5003.                 });
  5004.             };
  5005.         }
  5006.         function maximizeWindow() {
  5007.             _logs2["default"].info({
  5008.                 action: "maximize clicked"
  5009.             }, {}, "maximize:clicked");
  5010.             return function(dispatch, getState) {
  5011.                 window.clearTimeout(window.windowRestoreTimeout);
  5012.                 var windowState = getState().app.windowState;
  5013.                 if ("normal" === windowState || "minimized" === windowState) {
  5014.                     if ("minimized" === windowState) _ps2["default"].send(buildRestoreCmd("$htaHwnd"));
  5015.                     window.resizeTo(screen.availWidth, screen.availHeight);
  5016.                     window.moveTo(0, 0);
  5017.                     dispatch({
  5018.                         type: "WINDOW_STATE_CHANGED",
  5019.                         payload: {
  5020.                             windowState: "maximized"
  5021.                         }
  5022.                     });
  5023.                 } else if ("maximized" === windowState) {
  5024.                     var windowWidth = Math.min(screen.availWidth, NORMAL_WINDOW_WIDTH), windowHeight = Math.min(screen.availHeight, NORMAL_WINDOW_HEIGHT);
  5025.                     window.resizeTo(windowWidth, windowHeight);
  5026.                     window.moveTo((screen.availWidth - windowWidth) / 2, (screen.availHeight - windowHeight) / 2);
  5027.                     dispatch({
  5028.                         type: "WINDOW_STATE_CHANGED",
  5029.                         payload: {
  5030.                             windowState: "normal"
  5031.                         }
  5032.                     });
  5033.                 }
  5034.                 dispatch(updateWindowParams());
  5035.             };
  5036.         }
  5037.         function Close() {
  5038.             _ps2["default"].terminate();
  5039.             window.close();
  5040.         }
  5041.         function CloseWindow() {
  5042.             window.moveTo(-5e4, 0);
  5043.             return _logs2["default"].info.apply(_logs2["default"], arguments).timeout(5e3)["finally"](function() {
  5044.                 Close();
  5045.             });
  5046.         }
  5047.         function closeWindow() {
  5048.             return function(dispatch, getState) {
  5049.                 switch (getState().page) {
  5050.                   case "START":
  5051.                     _logs2["default"].info({
  5052.                         action: "startpage close clicked"
  5053.                     }, {}, "startpage:close:clicked");
  5054.                     dispatch({
  5055.                         type: "START_SCREEN_CLOSE_CLICKED"
  5056.                     });
  5057.                     dispatch((0, _startActions.startInstallCustom)());
  5058.                     break;
  5059.  
  5060.                   case "INSTALLATION":
  5061.                     _logs2["default"].info({
  5062.                         action: "installation close clicked"
  5063.                     }, {}, "installation:close:clicked");
  5064.                     if (!confirm(l("installation_close_confirm"))) _logs2["default"].info({
  5065.                         action: "installation close confirm clicked no"
  5066.                     }, {}, "installation:close:confirm:clicked:no"); else CloseWindow({
  5067.                         action: "installation close confirm clicked yes"
  5068.                     }, {}, "installation:close:confirm:clicked:yes");
  5069.                     break;
  5070.  
  5071.                   default:
  5072.                     CloseWindow({
  5073.                         action: "close clicked"
  5074.                     }, {}, "DriverPackSolution:close:clicked");
  5075.                 }
  5076.             };
  5077.         }
  5078.         function startWindowDragging(e) {
  5079.             return function(dispatch, getState) {
  5080.                 movingData.isDragging = !0;
  5081.                 var mouseDownEvent = e || window.event;
  5082.                 document.body.setCapture();
  5083.                 movingData.x = mouseDownEvent.screenX;
  5084.                 movingData.y = mouseDownEvent.screenY;
  5085.                 movingData.winX = window.screenLeft;
  5086.                 movingData.winY = window.screenTop;
  5087.                 (0, _eventsHandling.addEvent)(document.body, "mousemove", mouseMove);
  5088.                 (0, _eventsHandling.addEvent)(document.body, "mouseup", mouseUp);
  5089.             };
  5090.         }
  5091.         function mouseMove(e) {
  5092.             if (movingData.isDragging) {
  5093.                 var mouseMoveEvent = e || window.event, newWinX = movingData.winX + (mouseMoveEvent.screenX - movingData.x), newWinY = movingData.winY + (mouseMoveEvent.screenY - movingData.y);
  5094.                 if (newWinY > screen.availHeight - HEADER_HEIGHT) newWinY = screen.availHeight - HEADER_HEIGHT;
  5095.                 if (newWinY < 0) newWinY = 0;
  5096.                 try {
  5097.                     window.moveTo(newWinX, newWinY);
  5098.                 } catch (err) {}
  5099.                 window.dialogLeft = newWinX;
  5100.                 window.dialogTop = newWinY;
  5101.                 document.body.setCapture();
  5102.             }
  5103.         }
  5104.         function mouseUp() {
  5105.             movingData.isDragging = !1;
  5106.             (0, _eventsHandling.removeEvent)(document.body, "mousemove", mouseMove);
  5107.             (0, _eventsHandling.removeEvent)(document.body, "mouseup", mouseUp);
  5108.             document.body.releaseCapture();
  5109.         }
  5110.         function checkConnection() {
  5111.             var _this = this;
  5112.             return function() {
  5113.                 var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(dispatch, getState) {
  5114.                     var isConnected;
  5115.                     return regeneratorRuntime.wrap(function(_context) {
  5116.                         for (;;) switch (_context.prev = _context.next) {
  5117.                           case 0:
  5118.                             _context.next = 2;
  5119.                             return _statistics2["default"].checkConnection();
  5120.  
  5121.                           case 2:
  5122.                             isConnected = _context.sent;
  5123.                             dispatch({
  5124.                                 type: "CONNECTION_CHECKED",
  5125.                                 payload: isConnected
  5126.                             });
  5127.  
  5128.                           case 4:
  5129.                           case "end":
  5130.                             return _context.stop();
  5131.                         }
  5132.                     }, _callee, _this);
  5133.                 }));
  5134.                 return function(_x2, _x3) {
  5135.                     return _ref.apply(this, arguments);
  5136.                 };
  5137.             }();
  5138.         }
  5139.         function authorize() {
  5140.             var _this2 = this;
  5141.             return function() {
  5142.                 var _ref3 = _asyncToGenerator(regeneratorRuntime.mark(function _callee3(dispatch, getState) {
  5143.                     return regeneratorRuntime.wrap(function(_context3) {
  5144.                         for (;;) switch (_context3.prev = _context3.next) {
  5145.                           case 0:
  5146.                             dispatch({
  5147.                                 type: "AUTHORIZATION_STARTED"
  5148.                             });
  5149.                             _context3.prev = 1;
  5150.                             _context3.next = 4;
  5151.                             return _user2["default"].authorize();
  5152.  
  5153.                           case 4:
  5154.                             _logs2["default"].info({
  5155.                                 action: "auth authorize succeeded"
  5156.                             }, {}, "auth:authorize:succeeded", [ "auth" ]);
  5157.                             dispatch({
  5158.                                 type: "USER_ACTIVATED"
  5159.                             });
  5160.                             _context3.next = 8;
  5161.                             return applySettings(dispatch);
  5162.  
  5163.                           case 8:
  5164.                             _system.WshShell.AppActivate((0, _processes.getMyPID)());
  5165.                             dispatch({
  5166.                                 type: "AUTHORIZED",
  5167.                                 payload: _user2["default"]
  5168.                             });
  5169.                             _context3.next = 18;
  5170.                             break;
  5171.  
  5172.                           case 12:
  5173.                             _context3.prev = 12;
  5174.                             _context3.t0 = _context3["catch"](1);
  5175.                             _logs2["default"].error({
  5176.                                 action: "auth authorize failed"
  5177.                             }, {
  5178.                                 error: _context3.t0
  5179.                             }, "auth:authorize:failed", [ "auth" ]);
  5180.                             _system.WshShell.AppActivate((0, _processes.getMyPID)());
  5181.                             alert(l("authorize_failed"));
  5182.                             dispatch({
  5183.                                 type: "UNAUTHORIZED",
  5184.                                 payload: _user2["default"]
  5185.                             });
  5186.  
  5187.                           case 18:
  5188.                             _context3.prev = 18;
  5189.                             _ps2["default"].send([ "Get-Process", "where {$_.mainWindowTItle -like '*" + authTitle + "*'}", "%{" + buildMinimizeCmd("$_.mainWindowHandle") + "}" ].join(" | "));
  5190.                             _system.WshShell.AppActivate((0, _processes.getMyPID)());
  5191.                             return _context3.finish(18);
  5192.  
  5193.                           case 22:
  5194.                           case "end":
  5195.                             return _context3.stop();
  5196.                         }
  5197.                     }, _callee3, _this2, [ [ 1, 12, 18, 22 ] ]);
  5198.                 }));
  5199.                 return function(_x5, _x6) {
  5200.                     return _ref3.apply(this, arguments);
  5201.                 };
  5202.             }();
  5203.         }
  5204.         function unauthorize() {
  5205.             var _this3 = this;
  5206.             return function() {
  5207.                 var _ref4 = _asyncToGenerator(regeneratorRuntime.mark(function _callee4(dispatch, getState) {
  5208.                     return regeneratorRuntime.wrap(function(_context4) {
  5209.                         for (;;) switch (_context4.prev = _context4.next) {
  5210.                           case 0:
  5211.                             _context4.prev = 0;
  5212.                             _context4.next = 3;
  5213.                             return _user2["default"].unauthorize();
  5214.  
  5215.                           case 3:
  5216.                             _logs2["default"].info({
  5217.                                 action: "auth unauthorize succeeded"
  5218.                             }, {}, "auth:unauthorize:succeeded", [ "auth" ]);
  5219.                             dispatch({
  5220.                                 type: "UNAUTHORIZED",
  5221.                                 payload: _user2["default"]
  5222.                             });
  5223.                             _context4.next = 11;
  5224.                             break;
  5225.  
  5226.                           case 7:
  5227.                             _context4.prev = 7;
  5228.                             _context4.t0 = _context4["catch"](0);
  5229.                             _logs2["default"].error({
  5230.                                 action: "auth unauthorize failed"
  5231.                             }, {
  5232.                                 error: _context4.t0
  5233.                             }, "auth:unauthorize:failed", [ "auth" ]);
  5234.                             alert(l("unauthorize_failed"));
  5235.  
  5236.                           case 11:
  5237.                           case "end":
  5238.                             return _context4.stop();
  5239.                         }
  5240.                     }, _callee4, _this3, [ [ 0, 7 ] ]);
  5241.                 }));
  5242.                 return function(_x7, _x8) {
  5243.                     return _ref4.apply(this, arguments);
  5244.                 };
  5245.             }();
  5246.         }
  5247.         function startExpertMode() {
  5248.             var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  5249.             return function(dispatch, getState) {
  5250.                 dispatch({
  5251.                     type: "EXPERT_MODE_CLICKED"
  5252.                 });
  5253.                 dispatch((0, _startActions.startInstallCustom)(options));
  5254.             };
  5255.         }
  5256.         function checkGamer() {
  5257.             var _this4 = this;
  5258.             return function() {
  5259.                 var _ref5 = _asyncToGenerator(regeneratorRuntime.mark(function _callee5(dispatch, getState) {
  5260.                     var steamProcesses, isGamer;
  5261.                     return regeneratorRuntime.wrap(function(_context5) {
  5262.                         for (;;) switch (_context5.prev = _context5.next) {
  5263.                           case 0:
  5264.                             steamProcesses = (0, _wmi.getWMIObjects)([ "ExecutablePath", "CommandLine" ], "Win32_Process", 'Name = "Steam.exe" OR Name = "steam.exe"');
  5265.                             isGamer = !!steamProcesses.length;
  5266.                             dispatch({
  5267.                                 type: "GAMER_CHECKED",
  5268.                                 payload: isGamer
  5269.                             });
  5270.  
  5271.                           case 3:
  5272.                           case "end":
  5273.                             return _context5.stop();
  5274.                         }
  5275.                     }, _callee5, _this4);
  5276.                 }));
  5277.                 return function(_x10, _x11) {
  5278.                     return _ref5.apply(this, arguments);
  5279.                 };
  5280.             }();
  5281.         }
  5282.         exports.__esModule = !0;
  5283.         exports.updateWindowParams = updateWindowParams;
  5284.         exports.toggleBurgerMenu = toggleBurgerMenu;
  5285.         exports.confirmMinimizing = confirmMinimizing;
  5286.         exports.minimizeWindow = minimizeWindow;
  5287.         exports.maximizeWindow = maximizeWindow;
  5288.         exports.closeWindow = closeWindow;
  5289.         exports.startWindowDragging = startWindowDragging;
  5290.         exports.checkConnection = checkConnection;
  5291.         exports.authorize = authorize;
  5292.         exports.unauthorize = unauthorize;
  5293.         exports.startExpertMode = startExpertMode;
  5294.         exports.checkGamer = checkGamer;
  5295.         var _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _ps = __webpack_require__(89), _ps2 = _interopRequireDefault(_ps), _isEmpty = __webpack_require__(571), _isEmpty2 = _interopRequireDefault(_isEmpty), _onunload = __webpack_require__(232), _eventsHandling = __webpack_require__(758), _activateAppWindow = __webpack_require__(323), _activateAppWindow2 = _interopRequireDefault(_activateAppWindow), _startActions = __webpack_require__(318), _system = __webpack_require__(9), _processes = __webpack_require__(63), _user = __webpack_require__(231), _user2 = _interopRequireDefault(_user), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), _settingsActions = __webpack_require__(165), _wmi = __webpack_require__(16), NORMAL_WINDOW_WIDTH = 1024, NORMAL_WINDOW_HEIGHT = 768, HEADER_HEIGHT = 48;
  5296.         _ps2["default"].init().send([ "$sig = '" + [ '[DllImport("user32.dll")] public static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);', '[DllImport("user32.dll")] public static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd);', '[DllImport("user32.dll", EntryPoint = "FindWindowEx")] public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);' ].join("") + "'", "Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32", '$findHwnd = [Win32.NativeMethods]::FindWindowEx(0, 0, "HTML Application Host Window Class", $null)', "$htaHwnd = [Win32.NativeMethods]::GetWindow($findHwnd,3)" ]);
  5297.         try {
  5298.             (0, _onunload.addUnloadListener)(function() {
  5299.                 _ps2["default"].terminate();
  5300.             });
  5301.         } catch (e) {}
  5302.         var authTitle = "DriverPack Solution Authorization", buildMinimizeCmd = function(hwnd) {
  5303.             return "[Win32.NativeMethods]::SendMessage(" + hwnd + ", 0x0112, 0xF020, 0)";
  5304.         }, buildRestoreCmd = function(hwnd) {
  5305.             return "[Win32.NativeMethods]::SendMessage(" + hwnd + ", 0x0112, 0xF120, 0)";
  5306.         }, movingData = {}, applySettings = function() {
  5307.             var _ref2 = _asyncToGenerator(regeneratorRuntime.mark(function _callee2(dispatch) {
  5308.                 var fetchedSettings, notEmpty;
  5309.                 return regeneratorRuntime.wrap(function(_context2) {
  5310.                     for (;;) switch (_context2.prev = _context2.next) {
  5311.                       case 0:
  5312.                         fetchedSettings = _user2["default"].profile.config && _user2["default"].profile.config.beetle;
  5313.                         notEmpty = !(0, _isEmpty2["default"])(fetchedSettings);
  5314.                         if (notEmpty) _settings2["default"].setAll(fetchedSettings);
  5315.                         _context2.next = 5;
  5316.                         return _settings2["default"].save();
  5317.  
  5318.                       case 5:
  5319.                         dispatch((0, _settingsActions.loadSettings)());
  5320.                         if (notEmpty) (0, _settingsActions.performAllSettingsAction)(fetchedSettings);
  5321.  
  5322.                       case 7:
  5323.                       case "end":
  5324.                         return _context2.stop();
  5325.                     }
  5326.                 }, _callee2, undefined);
  5327.             }));
  5328.             return function(_x4) {
  5329.                 return _ref2.apply(this, arguments);
  5330.             };
  5331.         }();
  5332.     }).call(exports, __webpack_require__(6));
  5333. }, function(module, exports, __webpack_require__) {
  5334.     "use strict";
  5335.     function _interopRequireDefault(obj) {
  5336.         return obj && obj.__esModule ? obj : {
  5337.             "default": obj
  5338.         };
  5339.     }
  5340.     function getModel() {
  5341.         var _getWMIObjects = (0, _wmi.getWMIObjects)([ "Manufacturer", "Model", "Caption" ], "Win32_ComputerSystem"), _getWMIObjects$ = _getWMIObjects[0], pc = _getWMIObjects$ === undefined ? {} : _getWMIObjects$, _getWMIObjects2 = (0,
  5342.         _wmi.getWMIObjects)([ "Vendor", "Name", "Version" ], "Win32_ComputerSystemProduct"), _getWMIObjects2$ = _getWMIObjects2[0], csp = _getWMIObjects2$ === undefined ? {} : _getWMIObjects2$, _getWMIObjects3 = (0,
  5343.         _wmi.getWMIObjects)([ "Product", "Version", "Manufacturer" ], "Win32_BaseBoard"), _getWMIObjects3$ = _getWMIObjects3[0], bb = _getWMIObjects3$ === undefined ? {} : _getWMIObjects3$, type = (0,
  5344.         _getPCType2["default"])(csp), vendor = "Notebook" === type ? (0, _getNotebookVendor2["default"])(csp.Vendor) : (0,
  5345.         _trimVendorName2["default"])(csp.Vendor, "Noname", !1);
  5346.         return {
  5347.             type: type,
  5348.             vendor: vendor,
  5349.             name: "Notebook" === type ? (0, _getNotebookModel2["default"])(Object.assign({}, csp, {
  5350.                 Vendor: vendor
  5351.             })) : pc.Caption,
  5352.             info: {
  5353.                 computerSystem: pc,
  5354.                 computerSystemProduct: csp,
  5355.                 baseBoard: bb
  5356.             }
  5357.         };
  5358.     }
  5359.     exports.__esModule = !0;
  5360.     exports.getModel = getModel;
  5361.     var _wmi = __webpack_require__(16), _trimVendorName = __webpack_require__(64), _trimVendorName2 = _interopRequireDefault(_trimVendorName), _getPCType = __webpack_require__(186), _getPCType2 = _interopRequireDefault(_getPCType), _getNotebookVendor = __webpack_require__(88), _getNotebookVendor2 = _interopRequireDefault(_getNotebookVendor), _getNotebookModel = __webpack_require__(125), _getNotebookModel2 = _interopRequireDefault(_getNotebookModel);
  5362. }, function(module, exports, __webpack_require__) {
  5363.     "use strict";
  5364.     exports.__esModule = !0;
  5365.     var appleNotebooks = __webpack_require__(182), badNotebooks = __webpack_require__(183);
  5366.     exports.appleNotebooks = appleNotebooks;
  5367.     exports.badNotebooks = badNotebooks;
  5368.     exports["default"] = function(_ref) {
  5369.         var _ref$Vendor = _ref.Vendor, Vendor = _ref$Vendor === undefined ? "Noname" : _ref$Vendor, _ref$Name = _ref.Name, Name = _ref$Name === undefined ? "Unknown" : _ref$Name, Version = _ref.Version;
  5370.         Name = Name.trim();
  5371.         Vendor = Vendor.toLowerCase();
  5372.         var Models = [];
  5373.         switch (Vendor) {
  5374.           case "lenovo":
  5375.             Version = Version ? Version.trim() : "";
  5376.             Models = [ Version.replace(/^lenovo[\s-]*/i, "") ];
  5377.             break;
  5378.  
  5379.           case "sony":
  5380.             Models = [ "VAIO " + Name ];
  5381.             break;
  5382.  
  5383.           case "samsung":
  5384.           case "bangho":
  5385.           case "clevo":
  5386.           case "quanta":
  5387.             Models = Name.split("/");
  5388.             break;
  5389.  
  5390.           case "msi":
  5391.             Models = Name.split("/").map(function(name) {
  5392.                 return name.replace(/^msi notebook[\s-]*/i, "");
  5393.             });
  5394.             break;
  5395.  
  5396.           case "apple":
  5397.             Models = appleNotebooks[Name] || [ Name ];
  5398.             break;
  5399.  
  5400.           case "dell":
  5401.             Models = [ Name.replace(/^dell system[\s-]*/i, "").replace(/^dell[\s-]*/i, "") ];
  5402.             break;
  5403.  
  5404.           case "emachines":
  5405.             Models = [ Name.replace(/^emachines[\s-]*/i, "") ];
  5406.             break;
  5407.  
  5408.           case "hp":
  5409.             Models = [ Name.replace(/^hp[\s-]*/i, "").replace(/[\s-]*notebook pc/i, "").replace(/notebook[\s-]*$/i, "") ];
  5410.             break;
  5411.  
  5412.           case "toshiba":
  5413.             Models = [ Name.replace(/^toshiba[\s-]*/i, "") ];
  5414.             break;
  5415.  
  5416.           case "nec":
  5417.             Models = [ Name.replace(/^nec[\s-]*/i, "") ];
  5418.             break;
  5419.  
  5420.           case "hcl":
  5421.             Models = [ Name.replace(/^hcl[\s-]*/i, "") ];
  5422.             break;
  5423.  
  5424.           case "casper":
  5425.             Models = [ Name.replace(/^casper[\s-]*/i, "").replace(/[\s-]*notebook$/i, "") ];
  5426.             break;
  5427.  
  5428.           case "alienware":
  5429.             Models = [ Name.replace(/^alienware[\s-]*/i, "") ];
  5430.             break;
  5431.  
  5432.           case "axioo":
  5433.             Models = [ Name.replace(/[\s-]*model$/i, "") ];
  5434.             break;
  5435.  
  5436.           case "depo":
  5437.             Models = [ Name.replace(/^depo[\s-]*/i, "") ];
  5438.             break;
  5439.  
  5440.           case "fujitsu":
  5441.             Models = [ Name.replace(/[\s-]*notebook[\s-]*/i, "") ];
  5442.             break;
  5443.  
  5444.           case "gateway":
  5445.             Models = [ Name.replace(/^gateway[\s-]*/i, "") ];
  5446.             break;
  5447.  
  5448.           case "positivo":
  5449.             Models = [ Name.replace(/^positivo[\s-]*/i, "") ];
  5450.             break;
  5451.  
  5452.           case "vestel":
  5453.             Models = [ Name.replace(/^vestel[\s-]*/i, "") ];
  5454.             break;
  5455.  
  5456.           case "vit":
  5457.             Models = [ Name.replace(/^vit[\s-]*/i, "") ];
  5458.             break;
  5459.  
  5460.           case "aquarius":
  5461.             Models = [ Name.replace(/^aquarius[\s-]*/i, "") ];
  5462.             break;
  5463.  
  5464.           case "archos":
  5465.             Models = [ Name.replace(/^archos[\s-]*/i, "") ];
  5466.             break;
  5467.  
  5468.           case "zoostorm":
  5469.             Models = [ Name.replace(/^zoostorm[\s-]*/i, "") ];
  5470.             break;
  5471.  
  5472.           case "zyrex":
  5473.             Models = [ Name.replace(/^zyrex[\s-]*/i, "") ];
  5474.             break;
  5475.  
  5476.           default:
  5477.             Models = [ Name ];
  5478.         }
  5479.         Models = Models.map(function(model) {
  5480.             if (badNotebooks[Vendor] && badNotebooks[Vendor].includes(model)) return "Unknown"; else return model;
  5481.         });
  5482.         return Models.join("/");
  5483.     };
  5484. }, function(module, exports, __webpack_require__) {
  5485.     "use strict";
  5486.     exports.__esModule = !0;
  5487.     var _fso = __webpack_require__(18), _specialFolders = __webpack_require__(22), _localFiles = __webpack_require__(20), _getDiagnostics = __webpack_require__(80), _getDiagnostics2 = function(obj) {
  5488.         return obj && obj.__esModule ? obj : {
  5489.             "default": obj
  5490.         };
  5491.     }(_getDiagnostics), analyseSoftChanges = function(prev, cur) {
  5492.         var res = {
  5493.             installed: [],
  5494.             uninstalled: [],
  5495.             updated: []
  5496.         };
  5497.         if (!prev.Software || !prev.Software["Installed Software"]) return res;
  5498.         var prevSoft = prev.Software["Installed Software"], curSoft = cur.Software["Installed Software"];
  5499.         res.installed = curSoft.filter(function(csoft) {
  5500.             return !prevSoft.find(function(psoft) {
  5501.                 return psoft.Program === csoft.Program;
  5502.             });
  5503.         });
  5504.         res.uninstalled = prevSoft.filter(function(psoft) {
  5505.             return !curSoft.find(function(csoft) {
  5506.                 return csoft.Program === psoft.Program;
  5507.             });
  5508.         });
  5509.         res.updated = curSoft.filter(function(csoft) {
  5510.             return prevSoft.find(function(psoft) {
  5511.                 return psoft.Program === csoft.Program && psoft.Version !== csoft.Version;
  5512.             });
  5513.         });
  5514.         return res;
  5515.     }, checkPrevSoftFile = function(fullPath) {
  5516.         try {
  5517.             if (_fso.fso.FileExists(fullPath)) {
  5518.                 var fileIn = _fso.fso.OpenTextFile(fullPath, 1, !0, -1), prev = JSON.parse(fileIn.ReadAll());
  5519.                 fileIn.Close();
  5520.                 return prev;
  5521.             }
  5522.         } catch (e) {}
  5523.         return {};
  5524.     };
  5525.     exports["default"] = function(cur) {
  5526.         var path = _specialFolders.AppData + "\\DRPSu\\diagnostics\\", fullPathCur = path + "newsoft.json", fullPathPrev = path + "soft.json";
  5527.         try {
  5528.             if (!cur) cur = JSON.parse((0, _localFiles.queryFile)(fullPathCur, 6e4));
  5529.         } catch (err) {
  5530.             cur = (0, _getDiagnostics2["default"])("soft");
  5531.         }
  5532.         var prev = checkPrevSoftFile(fullPathPrev), changes = analyseSoftChanges(prev, cur);
  5533.         (0, _localFiles.createFile)(path, "soft.json", JSON.stringify(cur));
  5534.         return changes;
  5535.     };
  5536.     module.exports = exports["default"];
  5537. }, function(module, exports, __webpack_require__) {
  5538.     "use strict";
  5539.     exports.__esModule = !0;
  5540.     exports.runCommandAsync = undefined;
  5541.     var _shell = __webpack_require__(14), _fso = __webpack_require__(18), _utils = __webpack_require__(23), _logs = __webpack_require__(3), _specialFolders = __webpack_require__(22), _localFiles = __webpack_require__(20), log = (0,
  5542.     _logs.getLogger)("core:system:runCommandAsync");
  5543.     exports.runCommandAsync = function(_ref) {
  5544.         var command = _ref.command, _ref$spaced = _ref.spaced, spaced = _ref$spaced === undefined ? !0 : _ref$spaced, _ref$triggerFile = _ref.triggerFile, triggerFile = _ref$triggerFile === undefined ? (0,
  5545.         _localFiles.ensurePath)(_specialFolders.AppFolder + "\\temp") + "\\run_command_" + (0,
  5546.         _utils.generateJobId)() + ".txt" : _ref$triggerFile, _ref$customOutput = _ref.customOutput, customOutput = _ref$customOutput === undefined ? !1 : _ref$customOutput, _ref$checkInterval = _ref.checkInterval, checkInterval = _ref$checkInterval === undefined ? 1e3 : _ref$checkInterval, _ref$timeout = _ref.timeout, timeout = _ref$timeout === undefined ? 9e5 : _ref$timeout;
  5547.         return new Promise(function(resolve, reject) {
  5548.             var commandString = command + (spaced ? " " : "") + (customOutput ? "" : "|| echo Done & call echo Done %^errorLevel%") + ' > "' + triggerFile + '"', wrappedCommand = (0,
  5549.             _utils.wrapInCmd)(commandString);
  5550.             log.debug("running command", {
  5551.                 wrappedCommand: wrappedCommand
  5552.             }, "command");
  5553.             setTimeout(function() {
  5554.                 _shell.WshShell.Run(wrappedCommand, 0, !1);
  5555.             }, 0);
  5556.             var textStream = void 0, timeoutTimer = void 0, timer = setInterval(function() {
  5557.                 if (_fso.fso.FileExists(triggerFile)) try {
  5558.                     textStream = _fso.fso.OpenTextFile(triggerFile, 1, !1);
  5559.                     if (!textStream.AtEndOfStream) {
  5560.                         clearInterval(timeoutTimer);
  5561.                         clearInterval(timer);
  5562.                         if (!customOutput) {
  5563.                             var text = textStream.ReadAll(), matches = text.match(/done\s+(\d+)/i), exitCode = matches && matches[1];
  5564.                             if (null !== exitCode) resolve(+exitCode); else {
  5565.                                 var error = new Error("runCommandAsync: exitCode not found");
  5566.                                 error.extra = {
  5567.                                     triggerFileContent: text
  5568.                                 };
  5569.                                 reject(error);
  5570.                             }
  5571.                         } else resolve();
  5572.                     }
  5573.                 } catch (e) {
  5574.                     clearInterval(timeoutTimer);
  5575.                     clearInterval(timer);
  5576.                     var _error = new Error("runCommandAsync: read trigger file");
  5577.                     _error.extra = {
  5578.                         errorMessage: e.message
  5579.                     };
  5580.                     reject(_error);
  5581.                 } finally {
  5582.                     textStream.Close();
  5583.                 }
  5584.             }, checkInterval);
  5585.             timeoutTimer = setTimeout(function() {
  5586.                 clearInterval(timeoutTimer);
  5587.                 clearInterval(timer);
  5588.                 reject(new Error("runCommandAsync: timeout"));
  5589.             }, timeout);
  5590.         });
  5591.     };
  5592. }, function(module, exports, __webpack_require__) {
  5593.     var MATCH = __webpack_require__(7)("match");
  5594.     module.exports = function(KEY) {
  5595.         var re = /./;
  5596.         try {
  5597.             "/./"[KEY](re);
  5598.         } catch (e) {
  5599.             try {
  5600.                 re[MATCH] = !1;
  5601.                 return !"/./"[KEY](re);
  5602.             } catch (f) {}
  5603.         }
  5604.         return !0;
  5605.     };
  5606. }, function(module, exports, __webpack_require__) {
  5607.     module.exports = __webpack_require__(2).document && document.documentElement;
  5608. }, function(module, exports, __webpack_require__) {
  5609.     module.exports = !__webpack_require__(12) && !__webpack_require__(8)(function() {
  5610.         return 7 != Object.defineProperty(__webpack_require__(103)("div"), "a", {
  5611.             get: function() {
  5612.                 return 7;
  5613.             }
  5614.         }).a;
  5615.     });
  5616. }, function(module, exports, __webpack_require__) {
  5617.     var Iterators = __webpack_require__(68), ITERATOR = __webpack_require__(7)("iterator"), ArrayProto = Array.prototype;
  5618.     module.exports = function(it) {
  5619.         return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
  5620.     };
  5621. }, function(module, exports, __webpack_require__) {
  5622.     var cof = __webpack_require__(26);
  5623.     module.exports = Array.isArray || function(arg) {
  5624.         return "Array" == cof(arg);
  5625.     };
  5626. }, function(module, exports, __webpack_require__) {
  5627.     var has = __webpack_require__(27), toIObject = __webpack_require__(24), arrayIndexOf = __webpack_require__(92)(!1), IE_PROTO = __webpack_require__(135)("IE_PROTO");
  5628.     module.exports = function(object, names) {
  5629.         var key, O = toIObject(object), i = 0, result = [];
  5630.         for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  5631.         for (;names.length > i; ) if (has(O, key = names[i++])) ~arrayIndexOf(result, key) || result.push(key);
  5632.         return result;
  5633.     };
  5634. }, function(module, exports, __webpack_require__) {
  5635.     var getKeys = __webpack_require__(47), toIObject = __webpack_require__(24), isEnum = __webpack_require__(72).f;
  5636.     module.exports = function(isEntries) {
  5637.         return function(it) {
  5638.             for (var key, O = toIObject(it), keys = getKeys(O), length = keys.length, i = 0, result = []; length > i; ) if (isEnum.call(O, key = keys[i++])) result.push(isEntries ? [ key, O[key] ] : O[key]);
  5639.             return result;
  5640.         };
  5641.     };
  5642. }, function(module, exports, __webpack_require__) {
  5643.     var shared = __webpack_require__(111)("keys"), uid = __webpack_require__(51);
  5644.     module.exports = function(key) {
  5645.         return shared[key] || (shared[key] = uid(key));
  5646.     };
  5647. }, function(module, exports, __webpack_require__) {
  5648.     var anObject = __webpack_require__(11), aFunction = __webpack_require__(31), SPECIES = __webpack_require__(7)("species");
  5649.     module.exports = function(O, D) {
  5650.         var S, C = anObject(O).constructor;
  5651.         return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
  5652.     };
  5653. }, function(module, exports, __webpack_require__) {
  5654.     var isRegExp = __webpack_require__(107), defined = __webpack_require__(33);
  5655.     module.exports = function(that, searchString, NAME) {
  5656.         if (isRegExp(searchString)) throw TypeError("String#" + NAME + " doesn't accept regex!");
  5657.         return String(defined(that));
  5658.     };
  5659. }, function(module, exports, __webpack_require__) {
  5660.     var classof = __webpack_require__(81), ITERATOR = __webpack_require__(7)("iterator"), Iterators = __webpack_require__(68);
  5661.     module.exports = __webpack_require__(44).getIteratorMethod = function(it) {
  5662.         if (it != undefined) return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)];
  5663.     };
  5664. }, function(module, exports, __webpack_require__) {
  5665.     function baseCallback(func, thisArg, argCount) {
  5666.         var type = typeof func;
  5667.         if ("function" == type) return thisArg === undefined ? func : bindCallback(func, thisArg, argCount);
  5668.         if (null == func) return identity;
  5669.         if ("object" == type) return baseMatches(func); else return thisArg === undefined ? property(func) : baseMatchesProperty(func, thisArg);
  5670.     }
  5671.     var baseMatches = __webpack_require__(534), baseMatchesProperty = __webpack_require__(535), bindCallback = __webpack_require__(140), identity = __webpack_require__(283), property = __webpack_require__(581);
  5672.     module.exports = baseCallback;
  5673. }, function(module, exports, __webpack_require__) {
  5674.     function bindCallback(func, thisArg, argCount) {
  5675.         if ("function" != typeof func) return identity;
  5676.         if (thisArg === undefined) return func;
  5677.         switch (argCount) {
  5678.           case 1:
  5679.             return function(value) {
  5680.                 return func.call(thisArg, value);
  5681.             };
  5682.  
  5683.           case 3:
  5684.             return function(value, index, collection) {
  5685.                 return func.call(thisArg, value, index, collection);
  5686.             };
  5687.  
  5688.           case 4:
  5689.             return function(accumulator, value, index, collection) {
  5690.                 return func.call(thisArg, accumulator, value, index, collection);
  5691.             };
  5692.  
  5693.           case 5:
  5694.             return function(value, other, key, object, source) {
  5695.                 return func.call(thisArg, value, other, key, object, source);
  5696.             };
  5697.         }
  5698.         return function() {
  5699.             return func.apply(thisArg, arguments);
  5700.         };
  5701.     }
  5702.     var identity = __webpack_require__(283);
  5703.     module.exports = bindCallback;
  5704. }, function(module, exports, __webpack_require__) {
  5705.     function getNative(object, key) {
  5706.         var value = null == object ? undefined : object[key];
  5707.         return isNative(value) ? value : undefined;
  5708.     }
  5709.     var isNative = __webpack_require__(573);
  5710.     module.exports = getNative;
  5711. }, function(module, exports, __webpack_require__) {
  5712.     function isIterateeCall(value, index, object) {
  5713.         if (!isObject(object)) return !1;
  5714.         var type = typeof index;
  5715.         if ("number" == type ? isArrayLike(object) && isIndex(index, object.length) : "string" == type && index in object) {
  5716.             var other = object[index];
  5717.             return value === value ? value === other : other !== other;
  5718.         }
  5719.         return !1;
  5720.     }
  5721.     var isArrayLike = __webpack_require__(75), isIndex = __webpack_require__(206), isObject = __webpack_require__(39);
  5722.     module.exports = isIterateeCall;
  5723. }, function(module, exports, __webpack_require__) {
  5724.     "use strict";
  5725.     function validateInstanceHandle() {
  5726.         if (!InstanceHandle || !InstanceHandle.traverseTwoPhase || !InstanceHandle.traverseEnterLeave) throw new Error("InstanceHandle not injected before use!");
  5727.     }
  5728.     var EventPluginRegistry = __webpack_require__(286), EventPluginUtils = __webpack_require__(211), accumulate = __webpack_require__(216), forEachAccumulated = __webpack_require__(218), invariant = __webpack_require__(4), isEventSupported = __webpack_require__(222), monitorCodeUse = __webpack_require__(224), listenerBank = {}, eventQueue = null, executeDispatchesAndRelease = function(event) {
  5729.         if (event) {
  5730.             var executeDispatch = EventPluginUtils.executeDispatch, PluginModule = EventPluginRegistry.getPluginModuleForEvent(event);
  5731.             if (PluginModule && PluginModule.executeDispatch) executeDispatch = PluginModule.executeDispatch;
  5732.             EventPluginUtils.executeDispatchesInOrder(event, executeDispatch);
  5733.             if (!event.isPersistent()) event.constructor.release(event);
  5734.         }
  5735.     }, InstanceHandle = null, EventPluginHub = {
  5736.         injection: {
  5737.             injectMount: EventPluginUtils.injection.injectMount,
  5738.             injectInstanceHandle: function(InjectedInstanceHandle) {
  5739.                 InstanceHandle = InjectedInstanceHandle;
  5740.                 if (!0) validateInstanceHandle();
  5741.             },
  5742.             getInstanceHandle: function() {
  5743.                 if (!0) validateInstanceHandle();
  5744.                 return InstanceHandle;
  5745.             },
  5746.             injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,
  5747.             injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName
  5748.         },
  5749.         eventNameDispatchConfigs: EventPluginRegistry.eventNameDispatchConfigs,
  5750.         registrationNameModules: EventPluginRegistry.registrationNameModules,
  5751.         putListener: function(id, registrationName, listener) {
  5752.             !0 ? invariant(!listener || "function" == typeof listener, "Expected %s listener to be a function, instead got type %s", registrationName, typeof listener) : invariant(!listener || "function" == typeof listener);
  5753.             if (!0) if ("onScroll" === registrationName && !isEventSupported("scroll", !0)) {
  5754.                 monitorCodeUse("react_no_scroll_event");
  5755.                 console.warn("This browser doesn't support the `onScroll` event");
  5756.             }
  5757.             (listenerBank[registrationName] || (listenerBank[registrationName] = {}))[id] = listener;
  5758.         },
  5759.         getListener: function(id, registrationName) {
  5760.             var bankForRegistrationName = listenerBank[registrationName];
  5761.             return bankForRegistrationName && bankForRegistrationName[id];
  5762.         },
  5763.         deleteListener: function(id, registrationName) {
  5764.             var bankForRegistrationName = listenerBank[registrationName];
  5765.             if (bankForRegistrationName) delete bankForRegistrationName[id];
  5766.         },
  5767.         deleteAllListeners: function(id) {
  5768.             for (var registrationName in listenerBank) delete listenerBank[registrationName][id];
  5769.         },
  5770.         extractEvents: function(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent) {
  5771.             for (var events, plugins = EventPluginRegistry.plugins, i = 0, l = plugins.length; i < l; i++) {
  5772.                 var possiblePlugin = plugins[i];
  5773.                 if (possiblePlugin) {
  5774.                     var extractedEvents = possiblePlugin.extractEvents(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent);
  5775.                     if (extractedEvents) events = accumulate(events, extractedEvents);
  5776.                 }
  5777.             }
  5778.             return events;
  5779.         },
  5780.         enqueueEvents: function(events) {
  5781.             if (events) eventQueue = accumulate(eventQueue, events);
  5782.         },
  5783.         processEventQueue: function() {
  5784.             var processingEventQueue = eventQueue;
  5785.             eventQueue = null;
  5786.             forEachAccumulated(processingEventQueue, executeDispatchesAndRelease);
  5787.             !0 ? invariant(!eventQueue, "processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.") : invariant(!eventQueue);
  5788.         },
  5789.         __purge: function() {
  5790.             listenerBank = {};
  5791.         },
  5792.         __getListenerBank: function() {
  5793.             return listenerBank;
  5794.         }
  5795.     };
  5796.     module.exports = EventPluginHub;
  5797. }, function(module, exports, __webpack_require__) {
  5798.     "use strict";
  5799.     function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  5800.         SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
  5801.     }
  5802.     var SyntheticEvent = __webpack_require__(97), getEventTarget = __webpack_require__(220), UIEventInterface = {
  5803.         view: function(event) {
  5804.             if (event.view) return event.view;
  5805.             var target = getEventTarget(event);
  5806.             if (null != target && target.window === target) return target;
  5807.             var doc = target.ownerDocument;
  5808.             if (doc) return doc.defaultView || doc.parentWindow; else return window;
  5809.         },
  5810.         detail: function(event) {
  5811.             return event.detail || 0;
  5812.         }
  5813.     };
  5814.     SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);
  5815.     module.exports = SyntheticUIEvent;
  5816. }, function(module, exports, __webpack_require__) {
  5817.     "use strict";
  5818.     exports.__esModule = !0;
  5819.     exports.ensure = exports.download = exports.base = undefined;
  5820.     var _localFiles = __webpack_require__(20), _shell = __webpack_require__(14), _fso = __webpack_require__(18), base = exports.base = "http://download.drp.su/updates/beetle", downloadADODB = function(url, filePath) {
  5821.         var http = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
  5822.         http.open("GET", url);
  5823.         http.send();
  5824.         var stream = new ActiveXObject("ADODB.Stream");
  5825.         stream.type = 1;
  5826.         stream.open();
  5827.         stream.write(http.responseBody);
  5828.         stream.saveToFile(filePath, 2);
  5829.     }, downloadPS = function(url, filePath) {
  5830.         var ps = __webpack_require__(89).init();
  5831.         if (ps.available) ps.send([ '(New-Object System.Net.WebClient).DownloadFile("' + url + '", "' + filePath + '")' ]).terminate(); else throw new Error("PowerShell is not available");
  5832.     }, download = exports.download = function(fileName) {
  5833.         var dir = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "tools", url = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : base + "/" + fileName, method = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "ADODB", filePath = dir + "\\" + fileName;
  5834.         (0, _localFiles.ensurePath)(dir);
  5835.         if ("ADODB" === method) try {
  5836.             downloadADODB(url, filePath);
  5837.         } catch (e) {
  5838.             downloadPS(url, filePath);
  5839.         } else try {
  5840.             downloadPS(url, filePath);
  5841.         } catch (e) {
  5842.             downloadADODB(url, filePath);
  5843.         }
  5844.     }, ensureFiles = function(files, dir, url) {
  5845.         for (var _iterator = [].concat(files), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator](); ;) {
  5846.             var _ref;
  5847.             if (_isArray) {
  5848.                 if (_i >= _iterator.length) break;
  5849.                 _ref = _iterator[_i++];
  5850.             } else {
  5851.                 _i = _iterator.next();
  5852.                 if (_i.done) break;
  5853.                 _ref = _i.value;
  5854.             }
  5855.             var fileSpec = _ref, _ref2 = "string" == typeof fileSpec ? {
  5856.                 name: fileSpec,
  5857.                 aliases: []
  5858.             } : fileSpec, name = _ref2.name;
  5859.             if (![ name ].concat(_ref2.aliases).some(function(fileName) {
  5860.                 return _fso.fso.FileExists(dir + "\\" + fileName);
  5861.             })) download(name, dir, url, "PS");
  5862.         }
  5863.     };
  5864.     exports.ensure = function(files) {
  5865.         var dir = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "tools", url = arguments[2];
  5866.         try {
  5867.             ensureFiles(files, dir, url);
  5868.         } catch (err) {
  5869.             var cwd = _shell.WshShell.CurrentDirectory;
  5870.             _shell.WshShell.CurrentDirectory = cwd.replace(/\\bin$/i, "");
  5871.             _shell.WshShell.Run("wscript.exe //B bin\\prepare.js binaries", 0, !0);
  5872.             _shell.WshShell.CurrentDirectory = cwd;
  5873.             ensureFiles(files, dir, url);
  5874.         }
  5875.     };
  5876. }, , function(module, exports, __webpack_require__) {
  5877.     "use strict";
  5878.     function _interopRequireDefault(obj) {
  5879.         return obj && obj.__esModule ? obj : {
  5880.             "default": obj
  5881.         };
  5882.     }
  5883.     exports.__esModule = !0;
  5884.     exports.getPartnerInfo = exports.checkSoftInstalled = exports.dropInstalledSoftCache = undefined;
  5885.     var _getDiagnostics = __webpack_require__(80), _getDiagnostics2 = _interopRequireDefault(_getDiagnostics), _partnerSoft = __webpack_require__(339), _partnerSoft2 = _interopRequireDefault(_partnerSoft), installedSoftCache = void 0, getInstalledSoft = function() {
  5886.         if (!installedSoftCache) installedSoftCache = (0, _getDiagnostics2["default"])("soft").Software["Installed Software"];
  5887.         return installedSoftCache;
  5888.     };
  5889.     exports.dropInstalledSoftCache = function() {
  5890.         installedSoftCache = undefined;
  5891.     }, exports.checkSoftInstalled = function(nameReg, installedSoft) {
  5892.         if (!installedSoft) installedSoft = getInstalledSoft();
  5893.         return installedSoft.some(function(soft) {
  5894.             return nameReg.test(soft.Program);
  5895.         });
  5896.     }, exports.getPartnerInfo = function(soft) {
  5897.         var pSoft = _partnerSoft2["default"].find(function(_ref) {
  5898.             return _ref.nameReg.test(soft.Program);
  5899.         });
  5900.         if (!pSoft) return {
  5901.             isPartner: !1
  5902.         };
  5903.         if (!pSoft.getClids) return {
  5904.             title: pSoft.title,
  5905.             isPartner: !0
  5906.         };
  5907.         var clids = pSoft.getClids();
  5908.         return {
  5909.             title: pSoft.title,
  5910.             clids: clids,
  5911.             isPartner: clids.some(function(clid) {
  5912.                 return pSoft.clidsReg.test(clid);
  5913.             })
  5914.         };
  5915.     };
  5916. }, function(module, exports, __webpack_require__) {
  5917.     "use strict";
  5918.     exports.__esModule = !0;
  5919.     exports["default"] = function() {
  5920.         var deviceId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
  5921.         if (/FAILURE|UNKNOWN|VID_0000/i.test(deviceId)) return "usb_connection"; else if (/ROOT\\LEGACY_.+/i.test(deviceId)) return "root_legacy"; else if (/TAP.+|PTUN.+|HAMACHI/i.test(deviceId)) return "vpn_no_need_drivers"; else if (/\*6TO4MP|BTH\\MS_.+/i.test(deviceId)) return "damaged_system_driver"; else if (deviceId.includes("WPDBUSENUMROOT\\UMB")) return "usb_unknown_vendor"; else if (deviceId.includes("HDAUDIO\\FUNC_FF&VEN_9FFF&DEV_FFFF&SUBSYS_1FFFFFFF&REV_FFFF")) return "sound_card"; else if (/\*ISATAP|\*TEREDO/i.test(deviceId)) return "unknown_problem"; else return "";
  5922.     };
  5923.     module.exports = exports["default"];
  5924. }, function(module, exports, __webpack_require__) {
  5925.     "use strict";
  5926.     function getDrivers() {
  5927.         var drivers = (0, _wmi.getWMIObjects)([ "DeviceID", "DriverDate", "DriverVersion", "DeviceName", "InfName", "Manufacturer", "ClassGuid" ], "Win32_PnPSignedDriver"), results = [];
  5928.         drivers.forEach(function(driver) {
  5929.             if (driver.DeviceID && driver.DriverDate && driver.DriverVersion && driver.DeviceName && driver.InfName) {
  5930.                 for (var dr = {
  5931.                     deviceId: driver.DeviceID,
  5932.                     date: [ driver.DriverDate.slice(0, 4), driver.DriverDate.slice(4, 6), driver.DriverDate.slice(6, 8) ].join("-"),
  5933.                     version: driver.DriverVersion,
  5934.                     name: driver.DeviceName,
  5935.                     manufacturer: driver ? driver.Manufacturer : null,
  5936.                     inf: driver.InfName
  5937.                 }, regPath = "SYSTEM\\CurrentControlSet\\Control\\Class\\" + driver.ClassGuid, regData = _wmiRegistry.wmiRegistry.EnumKey(_wmiRegistry.wmiRegistry.HKLM, regPath), _iterator = regData, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator](); ;) {
  5938.                     var _ref;
  5939.                     if (_isArray) {
  5940.                         if (_i >= _iterator.length) break;
  5941.                         _ref = _iterator[_i++];
  5942.                     } else {
  5943.                         _i = _iterator.next();
  5944.                         if (_i.done) break;
  5945.                         _ref = _i.value;
  5946.                     }
  5947.                     var regSection = _ref;
  5948.                     if (_wmiRegistry.wmiRegistry.GetStringValue(_wmiRegistry.wmiRegistry.HKLM, regPath + "\\" + regSection, "InfPath") === dr.inf) {
  5949.                         var regDate = _wmiRegistry.wmiRegistry.GetStringValue(_wmiRegistry.wmiRegistry.HKLM, regPath + "\\" + regSection, "DriverDate");
  5950.                         dr.date = [ regDate.split("-")[2], ("0" + regDate.split("-")[0]).slice(-2), ("0" + regDate.split("-")[1]).slice(-2) ].join("-");
  5951.                         break;
  5952.                     }
  5953.                 }
  5954.                 results.push(dr);
  5955.             }
  5956.         });
  5957.         return results;
  5958.     }
  5959.     exports.__esModule = !0;
  5960.     exports.getDrivers = getDrivers;
  5961.     var _wmi = __webpack_require__(16), _wmiRegistry = __webpack_require__(90);
  5962. }, function(module, exports, __webpack_require__) {
  5963.     "use strict";
  5964.     function _classCallCheck(instance, Constructor) {
  5965.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  5966.     }
  5967.     exports.__esModule = !0;
  5968.     var _specialFolders = __webpack_require__(22), _shell = __webpack_require__(14), _fso = __webpack_require__(18), _localFiles = __webpack_require__(20), _http = __webpack_require__(102), _runCommandAsync = __webpack_require__(127), _wmi = __webpack_require__(16), _logs = __webpack_require__(3), _config = __webpack_require__(87), log = (0,
  5969.     _logs.getLogger)("core:wget"), Wget = function() {
  5970.         function Wget(wgetPaths) {
  5971.             _classCallCheck(this, Wget);
  5972.             this.timer = null;
  5973.             this.onDownloaded = {};
  5974.             this.onDownloadFailed = {};
  5975.             this.concurrency = 5;
  5976.             this.wgetPaths = wgetPaths;
  5977.             this.wgetPath = wgetPaths.find(function(path) {
  5978.                 return _fso.fso.FileExists(path);
  5979.             });
  5980.         }
  5981.         Wget.prototype.wrapInCmd = function(command) {
  5982.             return 'cmd /c "' + command + '"';
  5983.         };
  5984.         Wget.prototype.wgetRun = function(link, path, jobId) {
  5985.             var _this = this;
  5986.             log.info("downloading " + link, {
  5987.                 link: link,
  5988.                 jobId: jobId
  5989.             }, "run:start");
  5990.             if (!this.wgetPath) this.wgetPath = this.wgetPaths.find(function(path) {
  5991.                 return _fso.fso.FileExists(path);
  5992.             });
  5993.             if (this.wgetPath) {
  5994.                 var parsedUrl = link.split("/"), logFile = this.pathToLogFile(jobId), triggerFile = this.pathToTriggerFile(jobId), wgetCommand = '"' + this.wgetPath + '" --timeout 10 --retry-connrefused --wait=10 --timestamping --directory-prefix="' + path + '" "' + link + '" -o "' + logFile + '" --no-verbose & echo DONE > "' + triggerFile + '"', command = this.wrapInCmd(wgetCommand);
  5995.                 log.debug("running command", {
  5996.                     command: command
  5997.                 }, "run:command");
  5998.                 setTimeout(function() {
  5999.                     try {
  6000.                         _shell.WshShell.Run(command, 0, !1);
  6001.                     } catch (err) {
  6002.                         log.error("running command error", {
  6003.                             command: command,
  6004.                             error: err
  6005.                         }, "run:error");
  6006.                         if (jobId in _this.onDownloaded) {
  6007.                             _this.onDownloadFailed[jobId](err);
  6008.                             _this.truncateJob(jobId);
  6009.                         }
  6010.                     }
  6011.                 }, 0);
  6012.                 return parsedUrl[parsedUrl.length - 1];
  6013.             } else log.error("wget exe not found", {}, "run:error");
  6014.         };
  6015.         Wget.prototype.wgetWrapper = function(events, path, item, i, items) {
  6016.             var _this2 = this;
  6017.             return new Promise(function(resolve, reject) {
  6018.                 var link = item.link, jobId = item.jobId || _this2.generateJobId();
  6019.                 log.debug("downloading " + link + " to folder " + path, {
  6020.                     link: link,
  6021.                     path: path,
  6022.                     jobId: jobId
  6023.                 }, "wrapper");
  6024.                 events.beforeDownloading(item, i, items);
  6025.                 setTimeout(function() {
  6026.                     return _this2.wgetRun(link, path, jobId);
  6027.                 }, 0);
  6028.                 _this2.saveJob(jobId, resolve, reject, item);
  6029.             }).then(function(val) {
  6030.                 events.afterDownloading(item, i, items);
  6031.                 return val;
  6032.             });
  6033.         };
  6034.         Wget.prototype.generateJobId = function() {
  6035.             return +Math.round(1e5 * Math.random());
  6036.         };
  6037.         Wget.prototype.saveJob = function(id, resolve, reject, item) {
  6038.             log.debug("saveJob", {
  6039.                 jobId: id
  6040.             }, "saveJob");
  6041.             this.onDownloaded[id] = function() {
  6042.                 return resolve(item);
  6043.             };
  6044.             this.onDownloadFailed[id] = function(err) {
  6045.                 return reject(err);
  6046.             };
  6047.             this.start();
  6048.         };
  6049.         Wget.prototype.truncateJob = function(id) {
  6050.             delete this.onDownloaded[id];
  6051.             delete this.onDownloadFailed[id];
  6052.         };
  6053.         Wget.prototype.pathToLogFile = function(id) {
  6054.             return (0, _localFiles.ensurePath)(_specialFolders.AppFolder + "\\temp") + "\\wget_log_" + id + ".log";
  6055.         };
  6056.         Wget.prototype.pathToTriggerFile = function(id) {
  6057.             return (0, _localFiles.ensurePath)(_specialFolders.AppFolder + "\\temp") + "\\wget_finished_" + id + ".txt";
  6058.         };
  6059.         Wget.prototype.tick = function() {
  6060.             var _this3 = this, keys = Object.keys(this.onDownloaded);
  6061.             if (keys.length > 0) keys.forEach(function(jobId) {
  6062.                 var triggerFile = _this3.pathToTriggerFile(jobId);
  6063.                 if (_fso.fso.FileExists(triggerFile)) try {
  6064.                     var logFile = _this3.pathToLogFile(jobId), textStream = _fso.fso.OpenTextFile(logFile, 1, !1);
  6065.                     if (!textStream.AtEndOfStream) {
  6066.                         var logText = textStream.ReadAll();
  6067.                         textStream.Close();
  6068.                         if (-1 !== logText.indexOf("failed: Unknown host.") || -1 !== logText.indexOf("unable to resolve host address") || /error\s+\d+/i.test(logText)) {
  6069.                             log.error("failed job " + jobId, {
  6070.                                 jobId: jobId,
  6071.                                 wgetLogText: logText
  6072.                             }, "tick:fail");
  6073.                             _this3.onDownloadFailed[jobId](new Error("[new order] wget failed job " + jobId));
  6074.                         } else {
  6075.                             log.info("downloaded job " + jobId, {
  6076.                                 jobId: jobId
  6077.                             }, "tick:success");
  6078.                             _this3.onDownloaded[jobId]();
  6079.                         }
  6080.                         log.debug("logText", {
  6081.                             logText: logText
  6082.                         }, "tick:logText");
  6083.                     } else {
  6084.                         textStream.Close();
  6085.                         log.info("downloaded job " + jobId, {
  6086.                             jobId: jobId,
  6087.                             AtEndOfStream: !0
  6088.                         }, "tick:success");
  6089.                         _this3.onDownloaded[jobId]();
  6090.                     }
  6091.                 } catch (e) {
  6092.                     log.error("failed job " + jobId, {
  6093.                         jobId: jobId,
  6094.                         error: e
  6095.                     }, "tick:fail");
  6096.                     _this3.onDownloadFailed[jobId](new Error("[new order] wget failed job " + jobId));
  6097.                 } finally {
  6098.                     _this3.truncateJob(jobId);
  6099.                 }
  6100.             }); else {
  6101.                 log.info("no downloads", {}, "tick:drain");
  6102.                 this.stop();
  6103.             }
  6104.         };
  6105.         Wget.prototype.stop = function() {
  6106.             clearInterval(this.timer);
  6107.         };
  6108.         Wget.prototype.start = function() {
  6109.             var _this4 = this;
  6110.             this.stop();
  6111.             this.timer = setInterval(function() {
  6112.                 return _this4.tick();
  6113.             }, 2e3);
  6114.         };
  6115.         Wget.prototype.getDownloadFileSize = function(link) {
  6116.             return (0, _http.httphead)(link).then(function(_ref) {
  6117.                 return _ref.header["content-length"];
  6118.             });
  6119.         };
  6120.         Wget.prototype.stopDownloading = function(link, downloadJobId) {
  6121.             var _this5 = this;
  6122.             delete this.onDownloaded[downloadJobId];
  6123.             delete this.onDownloadFailed[downloadJobId];
  6124.             var commandLineLike = "%wget.exe%" + link + "%", processes = (0, _wmi.getWMIObjects)([ "ProcessId" ], "Win32_Process", 'CommandLine LIKE "' + commandLineLike + '"'), promises = [];
  6125.             processes.forEach(function(_ref2) {
  6126.                 var ProcessId = _ref2.ProcessId, jobId = _this5.generateJobId(), taskkillTriggerFile = (0,
  6127.                 _localFiles.ensurePath)(_specialFolders.AppFolder + "\\temp") + "\\taskkill_" + jobId + ".txt";
  6128.                 promises.push((0, _runCommandAsync.runCommandAsync)({
  6129.                     command: "taskkill /f /t /pid " + ProcessId,
  6130.                     triggerFile: taskkillTriggerFile,
  6131.                     checkInterval: 200,
  6132.                     timeout: 1e4
  6133.                 }));
  6134.             });
  6135.             return Promise.all(promises);
  6136.         };
  6137.         Wget.prototype.downloadFiles = function(events, path, items) {
  6138.             var _this6 = this;
  6139.             log.info("downloading " + items.length + " files", {
  6140.                 files: items.length
  6141.             }, "download");
  6142.             var iterator = function(item, i) {
  6143.                 return _this6.wgetWrapper(events, path, item, i, items);
  6144.             };
  6145.             if (Promise.map) return Promise.map(items, iterator, {
  6146.                 concurrency: this.concurrency
  6147.             }); else return Promise.all(items.map(iterator));
  6148.         };
  6149.         return Wget;
  6150.     }();
  6151.     exports["default"] = new Wget(_config.wget.paths);
  6152.     module.exports = exports["default"];
  6153. }, function(module, exports, __webpack_require__) {
  6154.     "use strict";
  6155.     var hide = __webpack_require__(28), redefine = __webpack_require__(34), fails = __webpack_require__(8), defined = __webpack_require__(33), wks = __webpack_require__(7);
  6156.     module.exports = function(KEY, length, exec) {
  6157.         var SYMBOL = wks(KEY), fns = exec(defined, SYMBOL, ""[KEY]), strfn = fns[0], rxfn = fns[1];
  6158.         if (fails(function() {
  6159.             var O = {};
  6160.             O[SYMBOL] = function() {
  6161.                 return 7;
  6162.             };
  6163.             return 7 != ""[KEY](O);
  6164.         })) {
  6165.             redefine(String.prototype, KEY, strfn);
  6166.             hide(RegExp.prototype, SYMBOL, 2 == length ? function(string, arg) {
  6167.                 return rxfn.call(string, this, arg);
  6168.             } : function(string) {
  6169.                 return rxfn.call(string, this);
  6170.             });
  6171.         }
  6172.     };
  6173. }, function(module, exports, __webpack_require__) {
  6174.     "use strict";
  6175.     var anObject = __webpack_require__(11);
  6176.     module.exports = function() {
  6177.         var that = anObject(this), result = "";
  6178.         if (that.global) result += "g";
  6179.         if (that.ignoreCase) result += "i";
  6180.         if (that.multiline) result += "m";
  6181.         if (that.unicode) result += "u";
  6182.         if (that.sticky) result += "y";
  6183.         return result;
  6184.     };
  6185. }, function(module, exports, __webpack_require__) {
  6186.     var anObject = __webpack_require__(11);
  6187.     module.exports = function(iterator, fn, value, entries) {
  6188.         try {
  6189.             return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  6190.         } catch (e) {
  6191.             var ret = iterator["return"];
  6192.             if (ret !== undefined) anObject(ret.call(iterator));
  6193.             throw e;
  6194.         }
  6195.     };
  6196. }, function(module, exports, __webpack_require__) {
  6197.     var global = __webpack_require__(2), macrotask = __webpack_require__(113).set, Observer = global.MutationObserver || global.WebKitMutationObserver, process = global.process, Promise = global.Promise, isNode = "process" == __webpack_require__(26)(process);
  6198.     module.exports = function() {
  6199.         var head, last, notify, flush = function() {
  6200.             var parent, fn;
  6201.             if (isNode && (parent = process.domain)) parent.exit();
  6202.             for (;head; ) {
  6203.                 fn = head.fn;
  6204.                 head = head.next;
  6205.                 try {
  6206.                     fn();
  6207.                 } catch (e) {
  6208.                     if (head) notify(); else last = undefined;
  6209.                     throw e;
  6210.                 }
  6211.             }
  6212.             last = undefined;
  6213.             if (parent) parent.enter();
  6214.         };
  6215.         if (isNode) notify = function() {
  6216.             process.nextTick(flush);
  6217.         }; else if (Observer) {
  6218.             var toggle = !0, node = document.createTextNode("");
  6219.             new Observer(flush).observe(node, {
  6220.                 characterData: !0
  6221.             });
  6222.             notify = function() {
  6223.                 node.data = toggle = !toggle;
  6224.             };
  6225.         } else if (Promise && Promise.resolve) {
  6226.             var promise = Promise.resolve();
  6227.             notify = function() {
  6228.                 promise.then(flush);
  6229.             };
  6230.         } else notify = function() {
  6231.             macrotask.call(global, flush);
  6232.         };
  6233.         return function(fn) {
  6234.             var task = {
  6235.                 fn: fn,
  6236.                 next: undefined
  6237.             };
  6238.             if (last) last.next = task;
  6239.             if (!head) {
  6240.                 head = task;
  6241.                 notify();
  6242.             }
  6243.             last = task;
  6244.         };
  6245.     };
  6246. }, function(module, exports, __webpack_require__) {
  6247.     var dP = __webpack_require__(17), anObject = __webpack_require__(11), getKeys = __webpack_require__(47);
  6248.     module.exports = __webpack_require__(12) ? Object.defineProperties : function(O, Properties) {
  6249.         anObject(O);
  6250.         for (var P, keys = getKeys(Properties), length = keys.length, i = 0; length > i; ) dP.f(O, P = keys[i++], Properties[P]);
  6251.         return O;
  6252.     };
  6253. }, function(module, exports, __webpack_require__) {
  6254.     module.exports = __webpack_require__(69) || !__webpack_require__(8)(function() {
  6255.         var K = Math.random();
  6256.         __defineSetter__.call(null, K, function() {});
  6257.         delete __webpack_require__(2)[K];
  6258.     });
  6259. }, function(module, exports, __webpack_require__) {
  6260.     var toIObject = __webpack_require__(24), gOPN = __webpack_require__(70).f, toString = {}.toString, windowNames = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [], getWindowNames = function(it) {
  6261.         try {
  6262.             return gOPN(it);
  6263.         } catch (e) {
  6264.             return windowNames.slice();
  6265.         }
  6266.     };
  6267.     module.exports.f = function(it) {
  6268.         return windowNames && "[object Window]" == toString.call(it) ? getWindowNames(it) : gOPN(toIObject(it));
  6269.     };
  6270. }, function(module, exports, __webpack_require__) {
  6271.     for (var Typed, global = __webpack_require__(2), hide = __webpack_require__(28), uid = __webpack_require__(51), TYPED = uid("typed_array"), VIEW = uid("view"), ABV = !(!global.ArrayBuffer || !global.DataView), CONSTR = ABV, i = 0, TypedArrayConstructors = "Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(","); i < 9; ) if (Typed = global[TypedArrayConstructors[i++]]) {
  6272.         hide(Typed.prototype, TYPED, !0);
  6273.         hide(Typed.prototype, VIEW, !0);
  6274.     } else CONSTR = !1;
  6275.     module.exports = {
  6276.         ABV: ABV,
  6277.         CONSTR: CONSTR,
  6278.         TYPED: TYPED,
  6279.         VIEW: VIEW
  6280.     };
  6281. }, function(module, exports, __webpack_require__) {
  6282.     function uniq(array, isSorted, iteratee, thisArg) {
  6283.         if (!(array ? array.length : 0)) return [];
  6284.         if (null != isSorted && "boolean" != typeof isSorted) {
  6285.             thisArg = iteratee;
  6286.             iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted;
  6287.             isSorted = !1;
  6288.         }
  6289.         iteratee = null == iteratee ? iteratee : baseCallback(iteratee, thisArg, 3);
  6290.         return isSorted ? sortedUniq(array, iteratee) : baseUniq(array, iteratee);
  6291.     }
  6292.     var baseCallback = __webpack_require__(139), baseUniq = __webpack_require__(543), isIterateeCall = __webpack_require__(142), sortedUniq = __webpack_require__(567);
  6293.     module.exports = uniq;
  6294. }, function(module, exports, __webpack_require__) {
  6295.     var baseForOwn = __webpack_require__(274), createBaseEach = __webpack_require__(551), baseEach = createBaseEach(baseForOwn);
  6296.     module.exports = baseEach;
  6297. }, function(module, exports, __webpack_require__) {
  6298.     "use strict";
  6299.     var focusNode = __webpack_require__(302), AutoFocusMixin = {
  6300.         componentDidMount: function() {
  6301.             if (this.props.autoFocus) focusNode(this.getDOMNode());
  6302.         }
  6303.     };
  6304.     module.exports = AutoFocusMixin;
  6305. }, function(module, exports, __webpack_require__) {
  6306.     "use strict";
  6307.     function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  6308.         SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
  6309.     }
  6310.     var SyntheticUIEvent = __webpack_require__(144), ViewportMetrics = __webpack_require__(300), getEventModifierState = __webpack_require__(219), MouseEventInterface = {
  6311.         screenX: null,
  6312.         screenY: null,
  6313.         clientX: null,
  6314.         clientY: null,
  6315.         ctrlKey: null,
  6316.         shiftKey: null,
  6317.         altKey: null,
  6318.         metaKey: null,
  6319.         getModifierState: getEventModifierState,
  6320.         button: function(event) {
  6321.             var button = event.button;
  6322.             if ("which" in event) return button; else return 2 === button ? 2 : 4 === button ? 1 : 0;
  6323.         },
  6324.         buttons: null,
  6325.         relatedTarget: function(event) {
  6326.             return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);
  6327.         },
  6328.         pageX: function(event) {
  6329.             return "pageX" in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;
  6330.         },
  6331.         pageY: function(event) {
  6332.             return "pageY" in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;
  6333.         }
  6334.     };
  6335.     SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
  6336.     module.exports = SyntheticMouseEvent;
  6337. }, function(module, exports, __webpack_require__) {
  6338.     "use strict";
  6339.     var invariant = __webpack_require__(4), Mixin = {
  6340.         reinitializeTransaction: function() {
  6341.             this.transactionWrappers = this.getTransactionWrappers();
  6342.             if (!this.wrapperInitData) this.wrapperInitData = []; else this.wrapperInitData.length = 0;
  6343.             this._isInTransaction = !1;
  6344.         },
  6345.         _isInTransaction: !1,
  6346.         getTransactionWrappers: null,
  6347.         isInTransaction: function() {
  6348.             return !!this._isInTransaction;
  6349.         },
  6350.         perform: function(method, scope, a, b, c, d, e, f) {
  6351.             !0 ? invariant(!this.isInTransaction(), "Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.") : invariant(!this.isInTransaction());
  6352.             var errorThrown, ret;
  6353.             try {
  6354.                 this._isInTransaction = !0;
  6355.                 errorThrown = !0;
  6356.                 this.initializeAll(0);
  6357.                 ret = method.call(scope, a, b, c, d, e, f);
  6358.                 errorThrown = !1;
  6359.             } finally {
  6360.                 try {
  6361.                     if (errorThrown) try {
  6362.                         this.closeAll(0);
  6363.                     } catch (err) {} else this.closeAll(0);
  6364.                 } finally {
  6365.                     this._isInTransaction = !1;
  6366.                 }
  6367.             }
  6368.             return ret;
  6369.         },
  6370.         initializeAll: function(startIndex) {
  6371.             for (var transactionWrappers = this.transactionWrappers, i = startIndex; i < transactionWrappers.length; i++) {
  6372.                 var wrapper = transactionWrappers[i];
  6373.                 try {
  6374.                     this.wrapperInitData[i] = Transaction.OBSERVED_ERROR;
  6375.                     this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;
  6376.                 } finally {
  6377.                     if (this.wrapperInitData[i] === Transaction.OBSERVED_ERROR) try {
  6378.                         this.initializeAll(i + 1);
  6379.                     } catch (err) {}
  6380.                 }
  6381.             }
  6382.         },
  6383.         closeAll: function(startIndex) {
  6384.             !0 ? invariant(this.isInTransaction(), "Transaction.closeAll(): Cannot close transaction when none are open.") : invariant(this.isInTransaction());
  6385.             for (var transactionWrappers = this.transactionWrappers, i = startIndex; i < transactionWrappers.length; i++) {
  6386.                 var errorThrown, wrapper = transactionWrappers[i], initData = this.wrapperInitData[i];
  6387.                 try {
  6388.                     errorThrown = !0;
  6389.                     if (initData !== Transaction.OBSERVED_ERROR) wrapper.close && wrapper.close.call(this, initData);
  6390.                     errorThrown = !1;
  6391.                 } finally {
  6392.                     if (errorThrown) try {
  6393.                         this.closeAll(i + 1);
  6394.                     } catch (e) {}
  6395.                 }
  6396.             }
  6397.             this.wrapperInitData.length = 0;
  6398.         }
  6399.     }, Transaction = {
  6400.         Mixin: Mixin,
  6401.         OBSERVED_ERROR: {}
  6402.     };
  6403.     module.exports = Transaction;
  6404. }, function(module, exports, __webpack_require__) {
  6405.     "use strict";
  6406.     function isValidComponentDescriptor(descriptor) {
  6407.         return descriptor && "function" == typeof descriptor.type && "function" == typeof descriptor.type.prototype.mountComponent && "function" == typeof descriptor.type.prototype.receiveComponent;
  6408.     }
  6409.     function instantiateReactComponent(descriptor) {
  6410.         !0 ? invariant(isValidComponentDescriptor(descriptor), "Only React Components are valid for mounting.") : invariant(isValidComponentDescriptor(descriptor));
  6411.         return new descriptor.type(descriptor);
  6412.     }
  6413.     var invariant = __webpack_require__(4);
  6414.     module.exports = instantiateReactComponent;
  6415. }, function(module, exports, __webpack_require__) {
  6416.     "use strict";
  6417.     (function(l) {
  6418.         function _interopRequireDefault(obj) {
  6419.             return obj && obj.__esModule ? obj : {
  6420.                 "default": obj
  6421.             };
  6422.         }
  6423.         function loadSettings() {
  6424.             return function(dispatch, getState) {
  6425.                 dispatch({
  6426.                     type: "SETTINGS_LOADED",
  6427.                     payload: {
  6428.                         settingsData: (0, _SettingsData2["default"])(l),
  6429.                         settings: _settings2["default"].getAll()
  6430.                     }
  6431.                 });
  6432.             };
  6433.         }
  6434.         function disableSettings(keyPaths, data) {
  6435.             return function(dispatch, getState) {
  6436.                 keyPaths.forEach(function(keyPath) {
  6437.                     _settings2["default"].disable(keyPath, data);
  6438.                     dispatch({
  6439.                         type: "SETTINGS_DISABLE_SETTING",
  6440.                         payload: {
  6441.                             keyPath: keyPath,
  6442.                             data: data
  6443.                         }
  6444.                     });
  6445.                 });
  6446.                 _settings2["default"].save();
  6447.             };
  6448.         }
  6449.         function enableSettings(keyPaths) {
  6450.             return function(dispatch, getState) {
  6451.                 keyPaths.forEach(function(keyPath) {
  6452.                     _settings2["default"].enable(keyPath);
  6453.                     dispatch({
  6454.                         type: "SETTINGS_ENABLE_SETTING",
  6455.                         payload: {
  6456.                             keyPath: keyPath
  6457.                         }
  6458.                     });
  6459.                 });
  6460.                 _settings2["default"].save();
  6461.             };
  6462.         }
  6463.         function setSetting(keyPath, data) {
  6464.             return function(dispatch, getState) {
  6465.                 _settings2["default"].set(keyPath, data).save();
  6466.                 dispatch({
  6467.                     type: "SETTINGS_SET_SETTING",
  6468.                     payload: {
  6469.                         keyPath: keyPath,
  6470.                         data: data
  6471.                     }
  6472.                 });
  6473.             };
  6474.         }
  6475.         exports.__esModule = !0;
  6476.         exports.changeSetting = exports.performAllSettingsAction = undefined;
  6477.         exports.loadSettings = loadSettings;
  6478.         exports.disableSettings = disableSettings;
  6479.         exports.enableSettings = enableSettings;
  6480.         exports.setSetting = setSetting;
  6481.         var _SettingsData = __webpack_require__(322), _SettingsData2 = _interopRequireDefault(_SettingsData), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), _activateFirebug = __webpack_require__(324), _activateFirebug2 = _interopRequireDefault(_activateFirebug), _handleClasses = __webpack_require__(169), _toggleStatistics = __webpack_require__(329), _toggleStatistics2 = _interopRequireDefault(_toggleStatistics), _nps = __webpack_require__(326), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), performSettingAction = function(keyPath, data) {
  6482.             switch (keyPath) {
  6483.               case "general.activateFirebug":
  6484.                 if (data.value) (0, _activateFirebug2["default"])();
  6485.                 break;
  6486.  
  6487.               case "general.minifyMenu":
  6488.                 data.value ? (0, _handleClasses.addClass)(document.body, "minify-menu") : (0, _handleClasses.removeClass)(document.body, "minify-menu");
  6489.                 break;
  6490.  
  6491.               case "general.enableLogging":
  6492.                 _logs2["default"].logging = data.value;
  6493.                 break;
  6494.  
  6495.               case "errors.enableSystemCheck":
  6496.                 data.value ? (0, _nps.addNPSStart)() : (0, _nps.deleteNPSStart)();
  6497.                 break;
  6498.  
  6499.               case "driverSelection.sendStatistics":
  6500.                 (0, _toggleStatistics2["default"])(data.value);
  6501.                 break;
  6502.  
  6503.               case "driverSelection.analyzeBsods":
  6504.                 (0, _nps.deleteNPSStart)();
  6505.                 (0, _nps.addNPSStart)();
  6506.             }
  6507.         };
  6508.         exports.performAllSettingsAction = function(settings) {
  6509.             Object.entries(settings).forEach(function(_ref) {
  6510.                 var sectionId = _ref[0], section = _ref[1];
  6511.                 Object.entries(section).forEach(function(_ref2) {
  6512.                     var settingId = _ref2[0], setting = _ref2[1];
  6513.                     performSettingAction(sectionId + "." + settingId, setting);
  6514.                 });
  6515.             });
  6516.         }, exports.changeSetting = function(keyPath, setting, value) {
  6517.             return function(dispatch, getState) {
  6518.                 dispatch(setSetting(keyPath, {
  6519.                     value: value
  6520.                 }));
  6521.                 if ("switch" === setting.type) {
  6522.                     var dependentSettings = setting.dependentSettings;
  6523.                     if (dependentSettings) value ? dispatch(enableSettings(dependentSettings)) : dispatch(disableSettings(dependentSettings, {
  6524.                         value: !1
  6525.                     }));
  6526.                 }
  6527.                 performSettingAction(keyPath, {
  6528.                     value: value
  6529.                 });
  6530.             };
  6531.         };
  6532.     }).call(exports, __webpack_require__(6));
  6533. }, function(module, exports, __webpack_require__) {
  6534.     "use strict";
  6535.     function _interopRequireDefault(obj) {
  6536.         return obj && obj.__esModule ? obj : {
  6537.             "default": obj
  6538.         };
  6539.     }
  6540.     function _classCallCheck(instance, Constructor) {
  6541.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  6542.     }
  6543.     exports.__esModule = !0;
  6544.     var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
  6545.         return typeof obj;
  6546.     } : function(obj) {
  6547.         return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  6548.     }, _system = __webpack_require__(9), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _antivirus = __webpack_require__(337), _antivirus2 = _interopRequireDefault(_antivirus), _driversPrograms = __webpack_require__(36), SoftPack = function() {
  6549.         function SoftPack() {
  6550.             _classCallCheck(this, SoftPack);
  6551.         }
  6552.         SoftPack.prototype.getSoftPath = function() {
  6553.             return _system.AppData + "\\DRPSu\\PROGRAMS";
  6554.         };
  6555.         SoftPack.prototype.run = function() {
  6556.             var _this = this;
  6557.             return new Promise(function(resolve, reject) {
  6558.                 _logs2["default"].info("softJs called", {}, "softJs:called");
  6559.                 window.SoftPack.jsonCallback = function(json) {
  6560.                     _logs2["default"].debug("softJs callback with JSON", {
  6561.                         json: json
  6562.                     }, "softJs:callback");
  6563.                     _logs2["default"].info("GeoIp set", {
  6564.                         geoip: window.geoip
  6565.                     }, "geoip:set");
  6566.                     _this.soft = json;
  6567.                     _this.applyAll();
  6568.                     resolve();
  6569.                 };
  6570.                 _antivirus2["default"].init();
  6571.                 setTimeout(function() {
  6572.                     _this.insertSoftScript();
  6573.                 }, 100);
  6574.             });
  6575.         };
  6576.         SoftPack.prototype.insertSoftScript = function() {
  6577.             var softEndpoint = _system.fso.FileExists("js/soft.js") ? "js/soft.js" : window.softEndpoint, documentElement = document.documentElement, script = document.createElement("script");
  6578.             script.src = softEndpoint;
  6579.             documentElement.insertBefore(script, documentElement.lastChild);
  6580.         };
  6581.         SoftPack.prototype.applyAll = function() {
  6582.             var programs = this.applyTargeting(this.soft);
  6583.             window.store.dispatch({
  6584.                 type: "PROGRAMS_LOADED",
  6585.                 payload: programs
  6586.             });
  6587.         };
  6588.         SoftPack.prototype.applyTargeting = function(json) {
  6589.             json.forEach(function(item, i, json) {
  6590.                 json[i].isVisible = !0;
  6591.                 json[i].isInstalled = !1;
  6592.                 json[i].IsChecked = !1;
  6593.                 var systemData = {
  6594.                     statistics: window.statistics,
  6595.                     antivirus: _antivirus2["default"],
  6596.                     geoip: window.isOnline ? window.geoip : window.geoipOffline,
  6597.                     os: window.os,
  6598.                     system: window.system,
  6599.                     wmi: window.wmi,
  6600.                     diagnostics: window.diagnostics
  6601.                 };
  6602.                 if (json[i].Targeting) try {
  6603.                     json[i].isVisible = json[i].Targeting(systemData);
  6604.                 } catch (error) {
  6605.                     _logs2["default"].error("Targeting failed", {
  6606.                         error: error
  6607.                     }, "softTargeting:Targeting:failed");
  6608.                 }
  6609.                 if (json[i].isVisible) {
  6610.                     if (json[i].CheckInstalled) json[i].isInstalled = json[i].CheckInstalled(systemData); else {
  6611.                         if (json[i].Registry_32) if (window.system.RegExists(json[i].Registry_32)) json[i].isInstalled = !0;
  6612.                         if (window.os.is64 && json[i].Registry_64) {
  6613.                             var parts = json[i].Registry_64.split("\\"), value = parts.pop(), path = parts.join("\\"), com = '%windir%\\sysnative\\reg query "' + path + '" /v "' + value + '"';
  6614.                             if (!window.system.WshShell.run(com, 0, !0)) json[i].isInstalled = !0;
  6615.                         }
  6616.                     }
  6617.                     if (!json[i].isInstalled) try {
  6618.                         switch (_typeof(json[i].Checked)) {
  6619.                           case "boolean":
  6620.                             json[i].IsChecked = json[i].Checked;
  6621.                             break;
  6622.  
  6623.                           case "function":
  6624.                             json[i].IsChecked = json[i].Checked(systemData);
  6625.                         }
  6626.                     } catch (error) {
  6627.                         _logs2["default"].error("Checked failed", {
  6628.                             error: error
  6629.                         }, "softTargeting:checked:failed");
  6630.                     } else {
  6631.                         if (!(0, _driversPrograms.isNotDriverUtility)(json[i])) json[i].isVisible = !1;
  6632.                         json[i].IsChecked = !1;
  6633.                     }
  6634.                 }
  6635.             });
  6636.             _logs2["default"].debug("Targeting applied", {
  6637.                 json: json
  6638.             }, "softTargeting:applied");
  6639.             return json;
  6640.         };
  6641.         return SoftPack;
  6642.     }();
  6643.     exports["default"] = window.SoftPack = new SoftPack();
  6644.     module.exports = exports["default"];
  6645. }, function(module, exports, __webpack_require__) {
  6646.     "use strict";
  6647.     function _classCallCheck(instance, Constructor) {
  6648.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  6649.     }
  6650.     exports.__esModule = !0;
  6651.     var _system = __webpack_require__(9), _runCommandAsync = __webpack_require__(127), _runExeAsynchronously = __webpack_require__(243), _specialFolders = __webpack_require__(22), _localFiles = __webpack_require__(20), _wmi = __webpack_require__(16), _logs = __webpack_require__(3), _systemScanner = __webpack_require__(86), _systemScanner2 = function(obj) {
  6652.         return obj && obj.__esModule ? obj : {
  6653.             "default": obj
  6654.         };
  6655.     }(_systemScanner), log = (0, _logs.getLogger)("unzip"), Unzip = function() {
  6656.         function Unzip() {
  6657.             _classCallCheck(this, Unzip);
  6658.         }
  6659.         Unzip.prototype.getExeName = function() {
  6660.             if (!this.exeName) this.exeName = _system.fso.fileExists("tools\\driverpack-7za.exe") ? "driverpack-7za.exe" : "7za.exe";
  6661.             return this.exeName;
  6662.         };
  6663.         Unzip.prototype.tempDir = function() {
  6664.             return _system.WshShell.ExpandEnvironmentStrings("%temp%\\drp\\unzip\\drp");
  6665.         };
  6666.         Unzip.prototype.pathToPack = function(name) {
  6667.             return "..\\drivers\\" + name + ".7z";
  6668.         };
  6669.         Unzip.prototype.getDestDir = function(dest) {
  6670.             if (!dest) return this.tempDir();
  6671.             if (-1 === dest.indexOf("\\")) return this.tempDir() + "\\" + dest; else return dest;
  6672.         };
  6673.         Unzip.prototype.run7z = function(pack, zipFile, directory, jobId) {
  6674.             var destDir = this.getDestDir(pack), triggerFile = (0, _localFiles.ensurePath)(_specialFolders.AppFolder + "\\temp") + "\\unzipping_" + jobId + ".txt", keys = 'x -y -o"' + destDir + '" "' + zipFile + '"';
  6675.             if (directory) keys = keys + ' "' + directory + '"';
  6676.             return (0, _runExeAsynchronously.runExeAsynchronously)({
  6677.                 exePath: "tools\\" + this.getExeName(),
  6678.                 keys: keys,
  6679.                 triggerFile: triggerFile
  6680.             }).then(function(exitCode) {
  6681.                 if (0 === exitCode) log.info("unzip run success", {}, "run:succeeded"); else log.error("unzip run failed", {
  6682.                     exitCode: exitCode
  6683.                 }, "run:failed");
  6684.                 return exitCode;
  6685.             }).caught(function(err) {
  6686.                 throw err;
  6687.             });
  6688.         };
  6689.         Unzip.prototype.unzipFromPack = function(pack, directory, jobId) {
  6690.             var zipFile = this.pathToPack(pack);
  6691.             return this.run7z(pack, zipFile, directory, jobId);
  6692.         };
  6693.         Unzip.prototype.stopUnzipping = function(zipName) {
  6694.             var commandLineLike = "%" + this.getExeName() + "%" + zipName + "%";
  6695.             (0, _wmi.getWMIObjects)([ "ProcessId" ], "Win32_Process", 'CommandLine LIKE "' + commandLineLike + '"').forEach(function(_ref) {
  6696.                 var ProcessId = _ref.ProcessId;
  6697.                 _system.WshShell.Run("cmd /c taskkill /f /t /pid " + ProcessId, 0, !0);
  6698.             });
  6699.         };
  6700.         Unzip.prototype.checkZipArchiveFilesCount = function(device) {
  6701.             var _this = this;
  6702.             return function(dispatch) {
  6703.                 var driver = device.recommendedDriver, zipFile = void 0;
  6704.                 if (_system.fso.FileExists("..\\drivers\\" + driver.pack + ".7z")) zipFile = "..\\drivers\\" + driver.pack + ".7z"; else {
  6705.                     var zipName = driver.link.split("/").slice(-1);
  6706.                     zipFile = _systemScanner2["default"].getDriversPath() + "\\" + zipName;
  6707.                 }
  6708.                 var zipFileLog = (0, _localFiles.ensurePath)(_specialFolders.AppFolder + "\\temp") + "\\log_zip_file_" + device.jobId + ".txt", totalCount = void 0;
  6709.                 (0, _runCommandAsync.runCommandAsync)({
  6710.                     command: "tools\\" + _this.getExeName() + ' l "' + zipFile + '" | findstr ' + driver.directory + ' | find /v /c ""',
  6711.                     triggerFile: zipFileLog,
  6712.                     customOutput: !0,
  6713.                     checkInterval: 300,
  6714.                     timeout: 6e4
  6715.                 }).then(function() {
  6716.                     try {
  6717.                         var textStream = _system.fso.OpenTextFile(zipFileLog, 1, !1), text = textStream.ReadAll(), matches = text.match(/(\d+)/);
  6718.                         totalCount = matches && matches[1] || 0;
  6719.                         dispatch({
  6720.                             type: "NEW_ORDER_ZIP_TOTAL_COUNT_RECEIVED",
  6721.                             payload: device,
  6722.                             meta: {
  6723.                                 id: device.id,
  6724.                                 totalCount: totalCount
  6725.                             }
  6726.                         });
  6727.                         textStream.Close();
  6728.                     } catch (error) {
  6729.                         log.error("checkZipArchiveFilesCount: read file error", {
  6730.                             error: error
  6731.                         }, "checkZipArchiveFilesCount:readFileError");
  6732.                     }
  6733.                 });
  6734.             };
  6735.         };
  6736.         Unzip.prototype.watchUnzippedPartFilesCount = function(device) {
  6737.             var _this2 = this;
  6738.             return function(dispatch) {
  6739.                 var driver = device.recommendedDriver, destDir = _this2.getDestDir(driver.pack), driverDirectory = driver.directory.replace(/\\$/, ""), checkingDirectory = void 0;
  6740.                 checkingDirectory = destDir + "\\" + driverDirectory;
  6741.                 device.unzippingTimer = setInterval(function() {
  6742.                     if (_system.fso.FolderExists(checkingDirectory)) {
  6743.                         var fsoFolder = _system.fso.GetFolder(checkingDirectory), totalFilesCount = fsoFolder.Files.Count, totalSubfoldersCount = fsoFolder.Subfolders.Count;
  6744.                         dispatch({
  6745.                             type: "NEW_ORDER_UNZIPPED_PART_UPDATED",
  6746.                             payload: device,
  6747.                             meta: {
  6748.                                 id: device.id,
  6749.                                 unzippedCount: totalFilesCount + totalSubfoldersCount
  6750.                             }
  6751.                         });
  6752.                     }
  6753.                 }, 1e3);
  6754.             };
  6755.         };
  6756.         return Unzip;
  6757.     }();
  6758.     exports["default"] = new Unzip();
  6759.     module.exports = exports["default"];
  6760. }, function(module, exports, __webpack_require__) {
  6761.     "use strict";
  6762.     function _interopRequireDefault(obj) {
  6763.         return obj && obj.__esModule ? obj : {
  6764.             "default": obj
  6765.         };
  6766.     }
  6767.     function _asyncToGenerator(fn) {
  6768.         return function() {
  6769.             var gen = fn.apply(this, arguments);
  6770.             return new Promise(function(resolve, reject) {
  6771.                 function step(key, arg) {
  6772.                     try {
  6773.                         var info = gen[key](arg), value = info.value;
  6774.                     } catch (error) {
  6775.                         reject(error);
  6776.                         return;
  6777.                     }
  6778.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  6779.                         step("next", value);
  6780.                     }, function(err) {
  6781.                         step("throw", err);
  6782.                     });
  6783.                 }
  6784.                 return step("next");
  6785.             });
  6786.         };
  6787.     }
  6788.     function _classCallCheck(instance, Constructor) {
  6789.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  6790.     }
  6791.     exports.__esModule = !0;
  6792.     var _lodash = __webpack_require__(267), _prepareInstallation = __webpack_require__(768), _prepareInstallation2 = _interopRequireDefault(_prepareInstallation), _logs = __webpack_require__(3), _utils = __webpack_require__(23), _appActions = __webpack_require__(123), _programsActions = __webpack_require__(99), _createRestorePoint = __webpack_require__(755), _createRestorePoint2 = _interopRequireDefault(_createRestorePoint), _InstallingItem = __webpack_require__(751), _InstallingItem2 = _interopRequireDefault(_InstallingItem), _unzip = __webpack_require__(167), _unzip2 = _interopRequireDefault(_unzip), _systemScanner = __webpack_require__(86), _systemScanner2 = _interopRequireDefault(_systemScanner), _download = __webpack_require__(145), _softPack = __webpack_require__(166), _softPack2 = _interopRequireDefault(_softPack), _getHardware = __webpack_require__(101), _checkSoft = __webpack_require__(147), _processes = __webpack_require__(63), _registry = __webpack_require__(30), _installerBits = __webpack_require__(764), _os = __webpack_require__(13), _promos2 = __webpack_require__(731), _promos3 = _interopRequireDefault(_promos2), _getSoftFromStore = __webpack_require__(763), _applicationsRestartConfirm = __webpack_require__(754), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), _ps = __webpack_require__(89), _ps2 = _interopRequireDefault(_ps), _activateAppWindow = __webpack_require__(323), _activateAppWindow2 = _interopRequireDefault(_activateAppWindow);
  6793.     try {
  6794.         _ps2["default"].run(__webpack_require__(806));
  6795.     } catch (err) {}
  6796.     var log = (0, _logs.getLogger)("newOrder"), instance = void 0, installationSessionId = 0, filterItems = function(items) {
  6797.         return items.map(function(_ref) {
  6798.             return {
  6799.                 name: _ref.name,
  6800.                 priority: _ref.priority
  6801.             };
  6802.         });
  6803.     }, Installation = function() {
  6804.         function Installation() {
  6805.             _classCallCheck(this, Installation);
  6806.             if (!instance) {
  6807.                 instance = this;
  6808.                 this.items = {};
  6809.                 this.downloading = [];
  6810.                 this.installChunks = [];
  6811.                 this.installDeferred = [];
  6812.                 this.itemsContainDrivers = !1;
  6813.                 this.firstInstallation = !0;
  6814.             }
  6815.             return instance;
  6816.         }
  6817.         Installation.prototype.run = function(_ref2) {
  6818.             var _this = this, _ref2$drivers = _ref2.drivers, drivers = _ref2$drivers === undefined ? [] : _ref2$drivers, _ref2$programs = _ref2.programs, programs = _ref2$programs === undefined ? [] : _ref2$programs, isSingle = _ref2.isSingle, zone = _ref2.zone;
  6819.             return function() {
  6820.                 var _ref3 = _asyncToGenerator(regeneratorRuntime.mark(function _callee2(dispatch, getState) {
  6821.                     var inputData, _showApplicationsRest, restartingApps, patchedPrograms, programsBits, programsWget, items, _separateDeferred, deferred, active, store, activePromos;
  6822.                     return regeneratorRuntime.wrap(function(_context2) {
  6823.                         for (;;) switch (_context2.prev = _context2.next) {
  6824.                           case 0:
  6825.                             installationSessionId++;
  6826.                             log.info({
  6827.                                 action: "installation started"
  6828.                             }, {
  6829.                                 installationSessionId: installationSessionId
  6830.                             }, "installation:started");
  6831.                             inputData = {
  6832.                                 drivers: drivers,
  6833.                                 programs: programs
  6834.                             };
  6835.                             _showApplicationsRest = (0, _applicationsRestartConfirm.showApplicationsRestartConfirm)(programs),
  6836.                             restartingApps = _showApplicationsRest.restartingApps, patchedPrograms = _showApplicationsRest.patchedPrograms;
  6837.                             if (restartingApps.length > 0) {
  6838.                                 dispatch({
  6839.                                     type: "NEW_ORDER_RESTART_APPLICATIONS_CONFIRMED",
  6840.                                     payload: restartingApps
  6841.                                 });
  6842.                                 programs = patchedPrograms;
  6843.                             }
  6844.                             programsBits = [];
  6845.                             programsWget = [];
  6846.                             programs.forEach(function(program) {
  6847.                                 if (program.bits & _os.OSVersionS >= 6.1) programsBits.push(program); else programsWget.push(program);
  6848.                             });
  6849.                             _this.zone = zone;
  6850.                             _this.startTime = Date.now();
  6851.                             _this.itemsContainDrivers = drivers.length > 0;
  6852.                             items = (0, _prepareInstallation2["default"])({
  6853.                                 drivers: drivers,
  6854.                                 programs: programsWget
  6855.                             });
  6856.                             log.info("items prepared", {
  6857.                                 installationSessionId: installationSessionId,
  6858.                                 installationItems: filterItems(items)
  6859.                             }, "installation:itemsPrepared");
  6860.                             dispatch({
  6861.                                 type: "NEW_ORDER_INSTALL_ALL_START",
  6862.                                 payload: {
  6863.                                     total: drivers.length + programs.length,
  6864.                                     totalDrivers: drivers.length,
  6865.                                     items: items,
  6866.                                     itemsContainDrivers: _this.itemsContainDrivers,
  6867.                                     itemsContainPrograms: _this.itemsContainPrograms,
  6868.                                     inputData: inputData,
  6869.                                     driversState: getState().drivers
  6870.                                 }
  6871.                             });
  6872.                             items = items.map(function(item) {
  6873.                                 var installingItem = new _InstallingItem2["default"](item, installationSessionId);
  6874.                                 _this.items[item.id] = installingItem;
  6875.                                 return installingItem;
  6876.                             });
  6877.                             Promise.race(items.map(function(item) {
  6878.                                 return item.installStartTrigger;
  6879.                             })).then(function() {
  6880.                                 log.info({
  6881.                                     action: "installation install started"
  6882.                                 }, {
  6883.                                     installationSessionId: installationSessionId
  6884.                                 }, "installation:install:started");
  6885.                             });
  6886.                             _this.downloading = items.slice();
  6887.                             _separateDeferred = _this.separateDeferred(items, isSingle), deferred = _separateDeferred.deferred,
  6888.                             active = _separateDeferred.active;
  6889.                             _this.installDeferred = deferred;
  6890.                             if (active) {
  6891.                                 _context2.next = 24;
  6892.                                 break;
  6893.                             }
  6894.                             _context2.next = 22;
  6895.                             return dispatch(_this.showDeferredPopups());
  6896.  
  6897.                           case 22:
  6898.                             _context2.next = 25;
  6899.                             break;
  6900.  
  6901.                           case 24:
  6902.                             _this.installChunks = _this.createChunks(active);
  6903.  
  6904.                           case 25:
  6905.                             log.info("installing", {
  6906.                                 installationSessionId: installationSessionId,
  6907.                                 installChunks: _this.installChunks.map(filterItems)
  6908.                             }, "installation:installChunks");
  6909.                             store = window.store.getState();
  6910.                             activePromos = [];
  6911.                             (0, _promos3["default"])(window.lang).filter(function(_ref4) {
  6912.                                 return _ref4.priority > 0;
  6913.                             }).forEach(function(promo) {
  6914.                                 if (promo.softId) {
  6915.                                     var offered = (0, _getSoftFromStore.getOffered)(store, promo.softId);
  6916.                                     if (offered) {
  6917.                                         promo.name = offered.name;
  6918.                                         promo.soft = {
  6919.                                             link: promo.patchLink ? promo.patchLink(offered.link) : offered.link,
  6920.                                             Keys: promo.patchKeys ? promo.patchKeys(offered.Keys) : offered.Keys
  6921.                                         };
  6922.                                         promo.priority = promo.priority || offered.priority;
  6923.                                         if (offered.isInstalled) promo.state = "promo"; else {
  6924.                                             if ((0, _getSoftFromStore.getInstalling)(store, promo.softId)) promo.state = "promo"; else promo.state = _os.OSVersionS >= 6.1 ? "offer" : "promo";
  6925.                                         }
  6926.                                         activePromos.push(promo);
  6927.                                     }
  6928.                                 } else {
  6929.                                     promo.name = promo.id;
  6930.                                     promo.state = "promo";
  6931.                                     activePromos.push(promo);
  6932.                                 }
  6933.                             });
  6934.                             dispatch({
  6935.                                 type: "NEW_ORDER_INSTALLATION_PROMOS_LOADED",
  6936.                                 promos: activePromos.sort(function(a, b) {
  6937.                                     return a.priority - b.priority;
  6938.                                 })
  6939.                             });
  6940.                             setTimeout(function() {
  6941.                                 _systemScanner2["default"].waitFor("binaries").then(_asyncToGenerator(regeneratorRuntime.mark(function _callee() {
  6942.                                     var restorePointStatus;
  6943.                                     return regeneratorRuntime.wrap(function(_context) {
  6944.                                         for (;;) switch (_context.prev = _context.next) {
  6945.                                           case 0:
  6946.                                             (0, _download.ensure)([ "devcon" + (_os.is64 ? "64" : "") + ".exe", {
  6947.                                                 name: "driverpack-wget.exe",
  6948.                                                 aliases: [ "wget.exe" ]
  6949.                                             }, {
  6950.                                                 name: "driverpack-7za.exe",
  6951.                                                 aliases: [ "7za.exe" ]
  6952.                                             } ]);
  6953.                                             restorePointStatus = void 0;
  6954.                                             if (!_this.itemsContainDrivers) {
  6955.                                                 _context.next = 7;
  6956.                                                 break;
  6957.                                             }
  6958.                                             if (!_settings2["default"].get("errors.createRestorePoint").value) {
  6959.                                                 _context.next = 7;
  6960.                                                 break;
  6961.                                             }
  6962.                                             _context.next = 6;
  6963.                                             return (0, _createRestorePoint2["default"])();
  6964.  
  6965.                                           case 6:
  6966.                                             restorePointStatus = _context.sent;
  6967.  
  6968.                                           case 7:
  6969.                                             (0, _processes.setProcessPriority)();
  6970.                                             dispatch({
  6971.                                                 type: "NEW_ORDER_PREPARING_FINISHED",
  6972.                                                 payload: restorePointStatus
  6973.                                             });
  6974.                                             log.info({
  6975.                                                 action: "installation download started"
  6976.                                             }, {
  6977.                                                 installationSessionId: installationSessionId
  6978.                                             }, "installation:download:started");
  6979.                                             dispatch(_this.downloadItems());
  6980.                                             dispatch(_this.installItems(programsBits));
  6981.                                             if (!isSingle && active) dispatch(_this.showDeferredPopups());
  6982.  
  6983.                                           case 13:
  6984.                                           case "end":
  6985.                                             return _context.stop();
  6986.                                         }
  6987.                                     }, _callee, _this);
  6988.                                 }))).done();
  6989.                             }, 0);
  6990.  
  6991.                           case 31:
  6992.                           case "end":
  6993.                             return _context2.stop();
  6994.                         }
  6995.                     }, _callee2, _this);
  6996.                 }));
  6997.                 return function(_x, _x2) {
  6998.                     return _ref3.apply(this, arguments);
  6999.                 };
  7000.             }();
  7001.         };
  7002.         Installation.prototype.separateDeferred = function(items, isSingle) {
  7003.             var result = void 0;
  7004.             if (isSingle) result = {
  7005.                 deferred: [],
  7006.                 active: items
  7007.             }; else {
  7008.                 var _groupBy = (0, _lodash.groupBy)(items, "confirmPopup.isDeferred"), deferredTrue = _groupBy["true"], deferredStartScreen = _groupBy.StartScreen, active = _groupBy.undefined;
  7009.                 result = {
  7010.                     deferred: (deferredTrue || []).concat(deferredStartScreen || []),
  7011.                     active: active
  7012.                 };
  7013.             }
  7014.             return result;
  7015.         };
  7016.         Installation.prototype.createChunks = function(items) {
  7017.             var preparedQueue = [], chunk = [], flush = function() {
  7018.                 if (chunk.length) {
  7019.                     preparedQueue.push(chunk);
  7020.                     chunk = [];
  7021.                 }
  7022.             };
  7023.             items.forEach(function(item) {
  7024.                 if (item.singleOnly) {
  7025.                     flush();
  7026.                     preparedQueue.push([ item ]);
  7027.                 } else chunk.push(item);
  7028.             });
  7029.             flush();
  7030.             return preparedQueue;
  7031.         };
  7032.         Installation.prototype.downloadItems = function() {
  7033.             var _this2 = this;
  7034.             return function() {
  7035.                 var _ref6 = _asyncToGenerator(regeneratorRuntime.mark(function _callee3(dispatch) {
  7036.                     var workers, i;
  7037.                     return regeneratorRuntime.wrap(function(_context3) {
  7038.                         for (;;) switch (_context3.prev = _context3.next) {
  7039.                           case 0:
  7040.                             workers = [];
  7041.                             for (i = 0; i < 5; i += 1) workers.push(dispatch(_this2.downloadWorker(installationSessionId)));
  7042.                             _this2.downloadFinished = Promise.all(workers);
  7043.                             _context3.next = 5;
  7044.                             return _this2.downloadFinished;
  7045.  
  7046.                           case 5:
  7047.                             log.info({
  7048.                                 action: "installation download finished"
  7049.                             }, {
  7050.                                 installationSessionId: installationSessionId
  7051.                             }, "installation:download:finished");
  7052.  
  7053.                           case 6:
  7054.                           case "end":
  7055.                             return _context3.stop();
  7056.                         }
  7057.                     }, _callee3, _this2);
  7058.                 }));
  7059.                 return function(_x3) {
  7060.                     return _ref6.apply(this, arguments);
  7061.                 };
  7062.             }();
  7063.         };
  7064.         Installation.prototype.downloadWorker = function() {
  7065.             var _this3 = this;
  7066.             return function() {
  7067.                 var _ref7 = _asyncToGenerator(regeneratorRuntime.mark(function _callee4(dispatch) {
  7068.                     var item;
  7069.                     return regeneratorRuntime.wrap(function(_context4) {
  7070.                         for (;;) switch (_context4.prev = _context4.next) {
  7071.                           case 0:
  7072.                             if (!_this3.downloading.length) {
  7073.                                 _context4.next = 7;
  7074.                                 break;
  7075.                             }
  7076.                             item = _this3.downloading.shift();
  7077.                             log.info("download worker selected: " + item.name, {
  7078.                                 installationSessionId: installationSessionId,
  7079.                                 name: item.name
  7080.                             }, "downloadWorker");
  7081.                             _context4.next = 5;
  7082.                             return dispatch(item.download());
  7083.  
  7084.                           case 5:
  7085.                             _context4.next = 0;
  7086.                             break;
  7087.  
  7088.                           case 7:
  7089.                           case "end":
  7090.                             return _context4.stop();
  7091.                         }
  7092.                     }, _callee4, _this3);
  7093.                 }));
  7094.                 return function(_x4) {
  7095.                     return _ref7.apply(this, arguments);
  7096.                 };
  7097.             }();
  7098.         };
  7099.         Installation.prototype.installItems = function(programsBits) {
  7100.             var _this4 = this;
  7101.             return function() {
  7102.                 var _ref8 = _asyncToGenerator(regeneratorRuntime.mark(function _callee5(dispatch, getState) {
  7103.                     var width, height, currentChunk, bitsStringsArr, errorDevicesCount;
  7104.                     return regeneratorRuntime.wrap(function(_context5) {
  7105.                         for (;;) switch (_context5.prev = _context5.next) {
  7106.                           case 0:
  7107.                             width = window.screen.width * window.screen.deviceXDPI / window.screen.logicalXDPI;
  7108.                             height = window.screen.height * window.screen.deviceXDPI / window.screen.logicalXDPI;
  7109.  
  7110.                           case 2:
  7111.                             if (!_this4.installChunks.length) {
  7112.                                 _context5.next = 8;
  7113.                                 break;
  7114.                             }
  7115.                             currentChunk = _this4.installChunks.shift();
  7116.                             _context5.next = 6;
  7117.                             return dispatch(_this4.installChunk(currentChunk));
  7118.  
  7119.                           case 6:
  7120.                             _context5.next = 2;
  7121.                             break;
  7122.  
  7123.                           case 8:
  7124.                             if (programsBits.length) {
  7125.                                 bitsStringsArr = (0, _installerBits.joinBitsString)(programsBits);
  7126.                                 (0, _installerBits.startBitsDownloading)(bitsStringsArr);
  7127.                                 log.info("BITS jobs started", {
  7128.                                     bitsStringsArr: bitsStringsArr,
  7129.                                     installationSessionId: installationSessionId
  7130.                                 }, "bits:jobsStarted", [ "bits" ]);
  7131.                             }
  7132.                             log.info({
  7133.                                 action: "installation install finished"
  7134.                             }, {
  7135.                                 installationSessionId: installationSessionId
  7136.                             }, "installation:install:finished");
  7137.                             _this4.sendInstallatioFinished(getState(), installationSessionId);
  7138.                             errorDevicesCount = (0, _getHardware.getDevicesCount)({
  7139.                                 errCode: {
  7140.                                     min: 1,
  7141.                                     max: 21
  7142.                                 }
  7143.                             }) + (0, _getHardware.getDevicesCount)({
  7144.                                 errCode: {
  7145.                                     min: 23
  7146.                                 }
  7147.                             });
  7148.                             dispatch({
  7149.                                 type: "ERROR_DEVICES_COUNT_RECEIVED",
  7150.                                 meta: {
  7151.                                     count: errorDevicesCount
  7152.                                 }
  7153.                             });
  7154.                             if (getState().installation.successDrivers > 0 && 0 === errorDevicesCount) (0, _registry.RegWrite)("HKCU\\SOFTWARE\\drpsu\\lastSuccessFinish", Date.now());
  7155.                             log.info("process finished", {}, "process:finished");
  7156.                             _context5.prev = 15;
  7157.                             _context5.next = 18;
  7158.                             return _systemScanner2["default"].run();
  7159.  
  7160.                           case 18:
  7161.                             (0, _checkSoft.dropInstalledSoftCache)();
  7162.                             SoftPack.applyAll();
  7163.                             _context5.next = 24;
  7164.                             break;
  7165.  
  7166.                           case 22:
  7167.                             _context5.prev = 22;
  7168.                             _context5.t0 = _context5["catch"](15);
  7169.  
  7170.                           case 24:
  7171.                             _this4.itemsContainDrivers ? dispatch({
  7172.                                 type: "NEW_ORDER_DRIVERS_INSTALL_ALL_SUCCESS"
  7173.                             }) : dispatch({
  7174.                                 type: "NEW_ORDER_PROGRAMS_INSTALL_ALL_SUCCESS"
  7175.                             });
  7176.                             instance = null;
  7177.                             try {
  7178.                                 width = Math.max(width, window.screen.width * window.screen.deviceXDPI / window.screen.logicalXDPI);
  7179.                                 height = Math.max(height, window.screen.height * window.screen.deviceXDPI / window.screen.logicalXDPI);
  7180.                                 _ps2["default"].send("SetScreenResolution -Width " + width + " -Height " + height);
  7181.                                 if ("maximized" === window.store.getState().app.windowState) {
  7182.                                     window.resizeTo(window.screen.availWidth, window.screen.availHeight);
  7183.                                     window.moveTo(0, 0);
  7184.                                 }
  7185.                             } catch (error) {
  7186.                                 log.error("failed screen resolution recovery", {
  7187.                                     error: error
  7188.                                 }, "resolution:recovery:failed");
  7189.                             }
  7190.                             if ("minimized" === window.store.getState().app.windowState) dispatch((0, _appActions.maximizeWindow)());
  7191.                             (0, _activateAppWindow2["default"])();
  7192.                             if (_settings2["default"].get("general.removeIntallationTempFiles").value) {
  7193.                                 (0, _utils.cleanFolder)(_systemScanner2["default"].getDriversPath());
  7194.                                 (0, _utils.cleanFolder)(_unzip2["default"].tempDir());
  7195.                                 (0, _utils.cleanFolder)(_softPack2["default"].getSoftPath());
  7196.                             }
  7197.  
  7198.                           case 30:
  7199.                           case "end":
  7200.                             return _context5.stop();
  7201.                         }
  7202.                     }, _callee5, _this4, [ [ 15, 22 ] ]);
  7203.                 }));
  7204.                 return function(_x5, _x6) {
  7205.                     return _ref8.apply(this, arguments);
  7206.                 };
  7207.             }();
  7208.         };
  7209.         Installation.prototype.installChunk = function(currentChunk) {
  7210.             var _this5 = this;
  7211.             return function() {
  7212.                 var _ref9 = _asyncToGenerator(regeneratorRuntime.mark(function _callee7(dispatch) {
  7213.                     return regeneratorRuntime.wrap(function(_context7) {
  7214.                         for (;;) switch (_context7.prev = _context7.next) {
  7215.                           case 0:
  7216.                             _context7.next = 2;
  7217.                             return Promise.map(currentChunk, function() {
  7218.                                 var _ref10 = _asyncToGenerator(regeneratorRuntime.mark(function _callee6(item) {
  7219.                                     var driverClass;
  7220.                                     return regeneratorRuntime.wrap(function(_context6) {
  7221.                                         for (;;) switch (_context6.prev = _context6.next) {
  7222.                                           case 0:
  7223.                                             if (!item.isDriver) {
  7224.                                                 _context6.next = 10;
  7225.                                                 break;
  7226.                                             }
  7227.                                             driverClass = item.recommendedDriver["class"];
  7228.                                             if ("lan" !== driverClass && "wifi" !== driverClass) {
  7229.                                                 _context6.next = 10;
  7230.                                                 break;
  7231.                                             }
  7232.                                             _context6.prev = 3;
  7233.                                             _context6.next = 6;
  7234.                                             return _this5.downloadFinished;
  7235.  
  7236.                                           case 6:
  7237.                                             _context6.next = 10;
  7238.                                             break;
  7239.  
  7240.                                           case 8:
  7241.                                             _context6.prev = 8;
  7242.                                             _context6.t0 = _context6["catch"](3);
  7243.  
  7244.                                           case 10:
  7245.                                             _context6.prev = 10;
  7246.                                             _context6.next = 13;
  7247.                                             return dispatch(item.install());
  7248.  
  7249.                                           case 13:
  7250.                                             _context6.next = 17;
  7251.                                             break;
  7252.  
  7253.                                           case 15:
  7254.                                             _context6.prev = 15;
  7255.                                             _context6.t1 = _context6["catch"](10);
  7256.  
  7257.                                           case 17:
  7258.                                             return _context6.abrupt("return", !0);
  7259.  
  7260.                                           case 18:
  7261.                                           case "end":
  7262.                                             return _context6.stop();
  7263.                                         }
  7264.                                     }, _callee6, _this5, [ [ 3, 8 ], [ 10, 15 ] ]);
  7265.                                 }));
  7266.                                 return function(_x8) {
  7267.                                     return _ref10.apply(this, arguments);
  7268.                                 };
  7269.                             }(), {
  7270.                                 concurrency: 5
  7271.                             });
  7272.  
  7273.                           case 2:
  7274.                           case "end":
  7275.                             return _context7.stop();
  7276.                         }
  7277.                     }, _callee7, _this5);
  7278.                 }));
  7279.                 return function(_x7) {
  7280.                     return _ref9.apply(this, arguments);
  7281.                 };
  7282.             }();
  7283.         };
  7284.         Installation.prototype.showDeferredPopups = function() {
  7285.             var _this6 = this;
  7286.             return function() {
  7287.                 var _ref11 = _asyncToGenerator(regeneratorRuntime.mark(function _callee8(dispatch) {
  7288.                     var zone, _iterator, _isArray, _i, _ref12, item, result;
  7289.                     return regeneratorRuntime.wrap(function(_context8) {
  7290.                         for (;;) switch (_context8.prev = _context8.next) {
  7291.                           case 0:
  7292.                             zone = "INSTALLATION_PAGE";
  7293.                             _iterator = _this6.installDeferred, _isArray = Array.isArray(_iterator), _i = 0,
  7294.                             _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();
  7295.  
  7296.                           case 2:
  7297.                             if (!_isArray) {
  7298.                                 _context8.next = 8;
  7299.                                 break;
  7300.                             }
  7301.                             if (!(_i >= _iterator.length)) {
  7302.                                 _context8.next = 5;
  7303.                                 break;
  7304.                             }
  7305.                             return _context8.abrupt("break", 24);
  7306.  
  7307.                           case 5:
  7308.                             _ref12 = _iterator[_i++];
  7309.                             _context8.next = 12;
  7310.                             break;
  7311.  
  7312.                           case 8:
  7313.                             _i = _iterator.next();
  7314.                             if (!_i.done) {
  7315.                                 _context8.next = 11;
  7316.                                 break;
  7317.                             }
  7318.                             return _context8.abrupt("break", 24);
  7319.  
  7320.                           case 11:
  7321.                             _ref12 = _i.value;
  7322.  
  7323.                           case 12:
  7324.                             item = _ref12;
  7325.                             result = void 0;
  7326.                             if ("START_PAGE" !== _this6.zone || !item.isEulaChecked) {
  7327.                                 _context8.next = 18;
  7328.                                 break;
  7329.                             }
  7330.                             result = !0;
  7331.                             _context8.next = 21;
  7332.                             break;
  7333.  
  7334.                           case 18:
  7335.                             _context8.next = 20;
  7336.                             return dispatch((0, _programsActions.confirmProgramInstallation)(item, zone));
  7337.  
  7338.                           case 20:
  7339.                             result = _context8.sent;
  7340.  
  7341.                           case 21:
  7342.                             if (result) _this6.installChunks.unshift([ item ]); else dispatch(_this6.cancelItem(item.id, item.status));
  7343.  
  7344.                           case 22:
  7345.                             _context8.next = 2;
  7346.                             break;
  7347.  
  7348.                           case 24:
  7349.                           case "end":
  7350.                             return _context8.stop();
  7351.                         }
  7352.                     }, _callee8, _this6);
  7353.                 }));
  7354.                 return function(_x9) {
  7355.                     return _ref11.apply(this, arguments);
  7356.                 };
  7357.             }();
  7358.         };
  7359.         Installation.prototype.cancelItem = function(itemId, itemStatus) {
  7360.             var _this7 = this;
  7361.             return function(dispatch) {
  7362.                 if ([ "waiting", "downloading", "downloaded" ].includes(itemStatus)) {
  7363.                     dispatch(_this7.items[itemId].cancel());
  7364.                     dispatch({
  7365.                         type: "NEW_ORDER_ITEM_CANCELED",
  7366.                         payload: {
  7367.                             id: itemId
  7368.                         }
  7369.                     });
  7370.                 }
  7371.             };
  7372.         };
  7373.         Installation.prototype.sendInstallatioFinished = function(state) {
  7374.             var installationTime = Math.round((Date.now() - this.startTime) / 1e3), driversInstallFailed = void 0, params = {
  7375.                 installationSessionId: installationSessionId
  7376.             };
  7377.             if (installationTime > 0) params.installationTime = installationTime;
  7378.             if (this.itemsContainDrivers) {
  7379.                 var installation = state.installation;
  7380.                 driversInstallFailed = installation.totalDrivers - installation.successDrivers;
  7381.                 if (driversInstallFailed >= 0) params.driversInstallFailed = driversInstallFailed;
  7382.             }
  7383.             log.info({
  7384.                 action: "installation finished"
  7385.             }, params, "installation:finished");
  7386.             try {
  7387.                 var _promos = window.store.getState().installation.promos.filter(function(_ref13) {
  7388.                     var state = _ref13.state, softId = _ref13.softId;
  7389.                     return "confirmed" === state && softId;
  7390.                 });
  7391.                 if (_promos.length > 0) (0, _installerBits.startBitsDownloading)((0, _installerBits.joinBitsString)(_promos.map(function(_ref14) {
  7392.                     return _ref14.soft;
  7393.                 }), "drp_bits_promo_job"));
  7394.             } catch (error) {
  7395.                 log.error("promo installation failed", {
  7396.                     error: error,
  7397.                     installationSessionId: installationSessionId
  7398.                 }, "promo:installation:failed");
  7399.             }
  7400.             (0, _applicationsRestartConfirm.restartApplications)(window.store.getState().installation.restartingApplications);
  7401.         };
  7402.         return Installation;
  7403.     }();
  7404.     exports["default"] = Installation;
  7405.     module.exports = exports["default"];
  7406. }, function(module, exports, __webpack_require__) {
  7407.     "use strict";
  7408.     exports.__esModule = !0;
  7409.     var hasClass = exports.hasClass = function(element, className) {
  7410.         return null !== element.className.match(new RegExp("(\\s|^)" + className + "(\\s|$)"));
  7411.     };
  7412.     exports.addClass = function(element, className) {
  7413.         if (!hasClass(element, className)) element.className = element.className.trim().replace(/\s\s+/g, " ") + " " + className;
  7414.     }, exports.removeClass = function(element, className) {
  7415.         if (hasClass(element, className)) {
  7416.             var reg = new RegExp("(\\s|^)" + className + "(\\s|$)");
  7417.             element.className = element.className.replace(reg, " ").trim().replace(/\s\s+/g, " ");
  7418.         }
  7419.     };
  7420. }, function(module, exports, __webpack_require__) {
  7421.     "use strict";
  7422.     var $export = __webpack_require__(0), $find = __webpack_require__(53)(5), forced = !0;
  7423.     if ("find" in []) Array(1).find(function() {
  7424.         forced = !1;
  7425.     });
  7426.     $export($export.P + $export.F * forced, "Array", {
  7427.         find: function(callbackfn) {
  7428.             return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  7429.         }
  7430.     });
  7431.     __webpack_require__(66)("find");
  7432. }, function(module, exports, __webpack_require__) {
  7433.     var $export = __webpack_require__(0);
  7434.     $export($export.S + $export.F, "Object", {
  7435.         assign: __webpack_require__(197)
  7436.     });
  7437. }, function(module, exports, __webpack_require__) {
  7438.     var $export = __webpack_require__(0);
  7439.     $export($export.S + $export.F * !__webpack_require__(12), "Object", {
  7440.         defineProperties: __webpack_require__(155)
  7441.     });
  7442. }, function(module, exports, __webpack_require__) {
  7443.     var $export = __webpack_require__(0);
  7444.     $export($export.S + $export.F * !__webpack_require__(12), "Object", {
  7445.         defineProperty: __webpack_require__(17).f
  7446.     });
  7447. }, function(module, exports, __webpack_require__) {
  7448.     var toIObject = __webpack_require__(24), $getOwnPropertyDescriptor = __webpack_require__(37).f;
  7449.     __webpack_require__(40)("getOwnPropertyDescriptor", function() {
  7450.         return function(it, key) {
  7451.             return $getOwnPropertyDescriptor(toIObject(it), key);
  7452.         };
  7453.     });
  7454. }, function(module, exports, __webpack_require__) {
  7455.     __webpack_require__(40)("getOwnPropertyNames", function() {
  7456.         return __webpack_require__(157).f;
  7457.     });
  7458. }, function(module, exports, __webpack_require__) {
  7459.     "use strict";
  7460.     var Internal, GenericPromiseCapability, Wrapper, LIBRARY = __webpack_require__(69), global = __webpack_require__(2), ctx = __webpack_require__(32), classof = __webpack_require__(81), $export = __webpack_require__(0), isObject = __webpack_require__(10), aFunction = __webpack_require__(31), anInstance = __webpack_require__(91), forOf = __webpack_require__(105), speciesConstructor = __webpack_require__(136), task = __webpack_require__(113).set, microtask = __webpack_require__(154)(), TypeError = global.TypeError, process = global.process, $Promise = global.Promise, process = global.process, isNode = "process" == classof(process), empty = function() {}, USE_NATIVE = !!function() {
  7461.         try {
  7462.             var promise = $Promise.resolve(1), FakePromise = (promise.constructor = {})[__webpack_require__(7)("species")] = function(exec) {
  7463.                 exec(empty, empty);
  7464.             };
  7465.             return (isNode || "function" == typeof PromiseRejectionEvent) && promise.then(empty) instanceof FakePromise;
  7466.         } catch (e) {}
  7467.     }(), sameConstructor = function(a, b) {
  7468.         return a === b || a === $Promise && b === Wrapper;
  7469.     }, isThenable = function(it) {
  7470.         var then;
  7471.         return isObject(it) && "function" == typeof (then = it.then) ? then : !1;
  7472.     }, newPromiseCapability = function(C) {
  7473.         return sameConstructor($Promise, C) ? new PromiseCapability(C) : new GenericPromiseCapability(C);
  7474.     }, PromiseCapability = GenericPromiseCapability = function(C) {
  7475.         var resolve, reject;
  7476.         this.promise = new C(function($$resolve, $$reject) {
  7477.             if (resolve !== undefined || reject !== undefined) throw TypeError("Bad Promise constructor");
  7478.             resolve = $$resolve;
  7479.             reject = $$reject;
  7480.         });
  7481.         this.resolve = aFunction(resolve);
  7482.         this.reject = aFunction(reject);
  7483.     }, perform = function(exec) {
  7484.         try {
  7485.             exec();
  7486.         } catch (e) {
  7487.             return {
  7488.                 error: e
  7489.             };
  7490.         }
  7491.     }, notify = function(promise, isReject) {
  7492.         if (!promise._n) {
  7493.             promise._n = !0;
  7494.             var chain = promise._c;
  7495.             microtask(function() {
  7496.                 for (var value = promise._v, ok = 1 == promise._s, i = 0; chain.length > i; ) !function(reaction) {
  7497.                     var result, then, handler = ok ? reaction.ok : reaction.fail, resolve = reaction.resolve, reject = reaction.reject, domain = reaction.domain;
  7498.                     try {
  7499.                         if (handler) {
  7500.                             if (!ok) {
  7501.                                 if (2 == promise._h) onHandleUnhandled(promise);
  7502.                                 promise._h = 1;
  7503.                             }
  7504.                             if (!0 === handler) result = value; else {
  7505.                                 if (domain) domain.enter();
  7506.                                 result = handler(value);
  7507.                                 if (domain) domain.exit();
  7508.                             }
  7509.                             if (result === reaction.promise) reject(TypeError("Promise-chain cycle")); else if (then = isThenable(result)) then.call(result, resolve, reject); else resolve(result);
  7510.                         } else reject(value);
  7511.                     } catch (e) {
  7512.                         reject(e);
  7513.                     }
  7514.                 }(chain[i++]);
  7515.                 promise._c = [];
  7516.                 promise._n = !1;
  7517.                 if (isReject && !promise._h) onUnhandled(promise);
  7518.             });
  7519.         }
  7520.     }, onUnhandled = function(promise) {
  7521.         task.call(global, function() {
  7522.             var abrupt, handler, console, value = promise._v;
  7523.             if (isUnhandled(promise)) {
  7524.                 abrupt = perform(function() {
  7525.                     if (isNode) process.emit("unhandledRejection", value, promise); else if (handler = global.onunhandledrejection) handler({
  7526.                         promise: promise,
  7527.                         reason: value
  7528.                     }); else if ((console = global.console) && console.error) console.error("Unhandled promise rejection", value);
  7529.                 });
  7530.                 promise._h = isNode || isUnhandled(promise) ? 2 : 1;
  7531.             }
  7532.             promise._a = undefined;
  7533.             if (abrupt) throw abrupt.error;
  7534.         });
  7535.     }, isUnhandled = function(promise) {
  7536.         if (1 == promise._h) return !1;
  7537.         for (var reaction, chain = promise._a || promise._c, i = 0; chain.length > i; ) {
  7538.             reaction = chain[i++];
  7539.             if (reaction.fail || !isUnhandled(reaction.promise)) return !1;
  7540.         }
  7541.         return !0;
  7542.     }, onHandleUnhandled = function(promise) {
  7543.         task.call(global, function() {
  7544.             var handler;
  7545.             if (isNode) process.emit("rejectionHandled", promise); else if (handler = global.onrejectionhandled) handler({
  7546.                 promise: promise,
  7547.                 reason: promise._v
  7548.             });
  7549.         });
  7550.     }, $reject = function(value) {
  7551.         var promise = this;
  7552.         if (!promise._d) {
  7553.             promise._d = !0;
  7554.             promise = promise._w || promise;
  7555.             promise._v = value;
  7556.             promise._s = 2;
  7557.             if (!promise._a) promise._a = promise._c.slice();
  7558.             notify(promise, !0);
  7559.         }
  7560.     }, $resolve = function(value) {
  7561.         var then, promise = this;
  7562.         if (!promise._d) {
  7563.             promise._d = !0;
  7564.             promise = promise._w || promise;
  7565.             try {
  7566.                 if (promise === value) throw TypeError("Promise can't be resolved itself");
  7567.                 if (then = isThenable(value)) microtask(function() {
  7568.                     var wrapper = {
  7569.                         _w: promise,
  7570.                         _d: !1
  7571.                     };
  7572.                     try {
  7573.                         then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
  7574.                     } catch (e) {
  7575.                         $reject.call(wrapper, e);
  7576.                     }
  7577.                 }); else {
  7578.                     promise._v = value;
  7579.                     promise._s = 1;
  7580.                     notify(promise, !1);
  7581.                 }
  7582.             } catch (e) {
  7583.                 $reject.call({
  7584.                     _w: promise,
  7585.                     _d: !1
  7586.                 }, e);
  7587.             }
  7588.         }
  7589.     };
  7590.     if (!USE_NATIVE) {
  7591.         $Promise = function(executor) {
  7592.             anInstance(this, $Promise, "Promise", "_h");
  7593.             aFunction(executor);
  7594.             Internal.call(this);
  7595.             try {
  7596.                 executor(ctx($resolve, this, 1), ctx($reject, this, 1));
  7597.             } catch (err) {
  7598.                 $reject.call(this, err);
  7599.             }
  7600.         };
  7601.         Internal = function(executor) {
  7602.             this._c = [];
  7603.             this._a = undefined;
  7604.             this._s = 0;
  7605.             this._d = !1;
  7606.             this._v = undefined;
  7607.             this._h = 0;
  7608.             this._n = !1;
  7609.         };
  7610.         Internal.prototype = __webpack_require__(94)($Promise.prototype, {
  7611.             then: function(onFulfilled, onRejected) {
  7612.                 var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
  7613.                 reaction.ok = "function" == typeof onFulfilled ? onFulfilled : !0;
  7614.                 reaction.fail = "function" == typeof onRejected && onRejected;
  7615.                 reaction.domain = isNode ? process.domain : undefined;
  7616.                 this._c.push(reaction);
  7617.                 if (this._a) this._a.push(reaction);
  7618.                 if (this._s) notify(this, !1);
  7619.                 return reaction.promise;
  7620.             },
  7621.             "catch": function(onRejected) {
  7622.                 return this.then(undefined, onRejected);
  7623.             }
  7624.         });
  7625.         PromiseCapability = function() {
  7626.             var promise = new Internal();
  7627.             this.promise = promise;
  7628.             this.resolve = ctx($resolve, promise, 1);
  7629.             this.reject = ctx($reject, promise, 1);
  7630.         };
  7631.     }
  7632.     $export($export.G + $export.W + $export.F * !USE_NATIVE, {
  7633.         Promise: $Promise
  7634.     });
  7635.     __webpack_require__(83)($Promise, "Promise");
  7636.     __webpack_require__(82)("Promise");
  7637.     Wrapper = __webpack_require__(44).Promise;
  7638.     $export($export.S + $export.F * !USE_NATIVE, "Promise", {
  7639.         reject: function(r) {
  7640.             var capability = newPromiseCapability(this);
  7641.             (0, capability.reject)(r);
  7642.             return capability.promise;
  7643.         }
  7644.     });
  7645.     $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), "Promise", {
  7646.         resolve: function(x) {
  7647.             if (x instanceof $Promise && sameConstructor(x.constructor, this)) return x;
  7648.             var capability = newPromiseCapability(this);
  7649.             (0, capability.resolve)(x);
  7650.             return capability.promise;
  7651.         }
  7652.     });
  7653.     $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(108)(function(iter) {
  7654.         $Promise.all(iter)["catch"](empty);
  7655.     })), "Promise", {
  7656.         all: function(iterable) {
  7657.             var C = this, capability = newPromiseCapability(C), resolve = capability.resolve, reject = capability.reject, abrupt = perform(function() {
  7658.                 var values = [], index = 0, remaining = 1;
  7659.                 forOf(iterable, !1, function(promise) {
  7660.                     var $index = index++, alreadyCalled = !1;
  7661.                     values.push(undefined);
  7662.                     remaining++;
  7663.                     C.resolve(promise).then(function(value) {
  7664.                         if (!alreadyCalled) {
  7665.                             alreadyCalled = !0;
  7666.                             values[$index] = value;
  7667.                             --remaining || resolve(values);
  7668.                         }
  7669.                     }, reject);
  7670.                 });
  7671.                 --remaining || resolve(values);
  7672.             });
  7673.             if (abrupt) reject(abrupt.error);
  7674.             return capability.promise;
  7675.         },
  7676.         race: function(iterable) {
  7677.             var C = this, capability = newPromiseCapability(C), reject = capability.reject, abrupt = perform(function() {
  7678.                 forOf(iterable, !1, function(promise) {
  7679.                     C.resolve(promise).then(capability.resolve, reject);
  7680.                 });
  7681.             });
  7682.             if (abrupt) reject(abrupt.error);
  7683.             return capability.promise;
  7684.         }
  7685.     });
  7686. }, function(module, exports, __webpack_require__) {
  7687.     "use strict";
  7688.     var $export = __webpack_require__(0), toLength = __webpack_require__(21), context = __webpack_require__(137), $endsWith = "".endsWith;
  7689.     $export($export.P + $export.F * __webpack_require__(128)("endsWith"), "String", {
  7690.         endsWith: function(searchString) {
  7691.             var that = context(this, searchString, "endsWith"), endPosition = arguments.length > 1 ? arguments[1] : undefined, len = toLength(that.length), end = endPosition === undefined ? len : Math.min(toLength(endPosition), len), search = String(searchString);
  7692.             return $endsWith ? $endsWith.call(that, search, end) : that.slice(end - search.length, end) === search;
  7693.         }
  7694.     });
  7695. }, function(module, exports, __webpack_require__) {
  7696.     "use strict";
  7697.     var $export = __webpack_require__(0), $includes = __webpack_require__(92)(!0);
  7698.     $export($export.P, "Array", {
  7699.         includes: function(el) {
  7700.             return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
  7701.         }
  7702.     });
  7703.     __webpack_require__(66)("includes");
  7704. }, function(module, exports, __webpack_require__) {
  7705.     var $export = __webpack_require__(0), $entries = __webpack_require__(134)(!0);
  7706.     $export($export.S, "Object", {
  7707.         entries: function(it) {
  7708.             return $entries(it);
  7709.         }
  7710.     });
  7711. }, function(module, exports, __webpack_require__) {
  7712.     var $export = __webpack_require__(0), $values = __webpack_require__(134)(!1);
  7713.     $export($export.S, "Object", {
  7714.         values: function(it) {
  7715.             return $values(it);
  7716.         }
  7717.     });
  7718. }, function(module, exports, __webpack_require__) {
  7719.     "use strict";
  7720.     function _interopRequireDefault(obj) {
  7721.         return obj && obj.__esModule ? obj : {
  7722.             "default": obj
  7723.         };
  7724.     }
  7725.     exports.__esModule = !0;
  7726.     var _os = __webpack_require__(13), _getDiagnostics = __webpack_require__(80), _getDiagnostics2 = _interopRequireDefault(_getDiagnostics), _getSoftChanges = __webpack_require__(126), _getSoftChanges2 = _interopRequireDefault(_getSoftChanges), _getDrivers = __webpack_require__(149), _getHardware = __webpack_require__(101), _getModel = __webpack_require__(124);
  7727.     exports["default"] = function(task, data) {
  7728.         switch (task) {
  7729.           case "localdiagnostics":
  7730.             return (0, _getDiagnostics2["default"])("diagnostics");
  7731.  
  7732.           case "drivers":
  7733.             return (0, _getDrivers.getDrivers)();
  7734.  
  7735.           case "newsoft":
  7736.             return (0, _getDiagnostics2["default"])("soft");
  7737.  
  7738.           case "softchanges":
  7739.             return (0, _getSoftChanges2["default"])(data);
  7740.  
  7741.           case "hardware":
  7742.             return {
  7743.                 devices: (0, _getHardware.getHardware)(),
  7744.                 model: (0, _getModel.getModel)(),
  7745.                 windows: {
  7746.                     ver: _os.OSVersionS,
  7747.                     arch: _os.is64 ? "64" : "86"
  7748.                 },
  7749.                 limit: 5
  7750.             };
  7751.  
  7752.           default:
  7753.             throw new Error("Unknown task " + task);
  7754.         }
  7755.     };
  7756.     module.exports = exports["default"];
  7757. }, function(module, exports) {
  7758.     module.exports = {
  7759.         "MacBook1,1": [ "MacBook" ],
  7760.         "MacBook2,1": [ 'MacBook (13" Mid 2007)' ],
  7761.         "MacBook3,1": [ 'MacBook (13" Late 2007)' ],
  7762.         "MacBook4,1": [ 'MacBook (13" Early 2008)', 'MacBook (13" Late 2008)' ],
  7763.         "MacBook5,1": [ 'MacBook (13" Late 2008)' ],
  7764.         "MacBook5,2": [ 'MacBook (13" Early 2009)', 'MacBook (13" Mid 2009)' ],
  7765.         "MacBook6,1": [ 'MacBook (13" Late 2009)' ],
  7766.         "MacBook7,1": [ 'MacBook (13" Mid 2010)' ],
  7767.         "MacBook8,1": [ 'MacBook (12" Early 2015)' ],
  7768.         "MacBook9,1": [ 'MacBook (12" Early 2016)' ],
  7769.         "MacBookAir1,1": [ "MacBook Air (Early 2008)" ],
  7770.         "MacBookAir2,1": [ "MacBook Air (Late 2008)", "MacBook Air (Mid 2009)" ],
  7771.         "MacBookAir3,1": [ 'MacBook Air (11" Late 2010)' ],
  7772.         "MacBookAir3,2": [ 'MacBook Air (13" Late 2010)' ],
  7773.         "MacBookAir4,1": [ 'MacBook Air (11" Mid 2011)' ],
  7774.         "MacBookAir4,2": [ 'MacBook Air (13" Mid 2011)' ],
  7775.         "MacBookAir5,1": [ 'MacBook Air (11" Mid 2012)' ],
  7776.         "MacBookAir5,2": [ 'MacBook Air (13" Mid 2012)' ],
  7777.         "MacBookAir6,1": [ 'MacBook Air (11" Mid 2013)', 'MacBook Air (11" Early 2014)' ],
  7778.         "MacBookAir6,2": [ 'MacBook Air (13" Mid 2013)', 'MacBook Air (13" Early 2014)' ],
  7779.         "MacBookAir7,1": [ 'MacBook Air (11" Early 2015)' ],
  7780.         "MacBookAir7,2": [ 'MacBook Air (13" Early 2015)' ],
  7781.         "MacBookPro1,1": [ 'MacBook Pro (15" Early 2006)' ],
  7782.         "MacBookPro1,2": [ 'MacBook Pro (17" Early 2006)' ],
  7783.         "MacBookPro2,1": [ 'MacBook Pro (17" Late 2006)' ],
  7784.         "MacBookPro2,2": [ 'MacBook Pro (15" Late 2006)' ],
  7785.         "MacBookPro3,1": [ 'MacBook Pro (15" Mid 2007)', 'MacBook Pro (17" Late 2007)' ],
  7786.         "MacBookPro4,1": [ 'MacBook Pro (17" Early 2008)', 'MacBook Pro (17" Late 2008)' ],
  7787.         "MacBookPro5,1": [ 'MacBook Pro (15" Late 2008)', 'MacBook Pro (15" Early 2009)', 'MacBook Pro (15" Mid 2009)' ],
  7788.         "MacBookPro5,2": [ 'MacBook Pro (17" Early 2009)', 'MacBook Pro (17" Mid 2009)' ],
  7789.         "MacBookPro5,3": [ 'MacBook Pro (15" Mid 2009)' ],
  7790.         "MacBookPro5,4": [ 'MacBook Pro (15" Mid 2009)' ],
  7791.         "MacBookPro5,5": [ 'MacBook Pro (13" Mid 2009)' ],
  7792.         "MacBookPro6,1": [ 'MacBook Pro (17" Mid 2010)' ],
  7793.         "MacBookPro6,2": [ 'MacBook Pro (15" Mid 2010)' ],
  7794.         "MacBookPro7,1": [ 'MacBook Pro (13" Mid 2010)' ],
  7795.         "MacBookPro8,1": [ 'MacBook Pro (13" Early 2011)', 'MacBook Pro (13" Late 2011)' ],
  7796.         "MacBookPro8,2": [ 'MacBook Pro (15" Early 2011)', 'MacBook Pro (15" Late 2011)' ],
  7797.         "MacBookPro8,3": [ 'MacBook Pro (17" Early 2011)', 'MacBook Pro (17" Late 2011)' ],
  7798.         "MacBookPro9,1": [ 'MacBook Pro (15" Mid 2012)' ],
  7799.         "MacBookPro9,2": [ 'MacBook Pro (13" Mid 2012)' ],
  7800.         "MacBookPro10,1": [ 'MacBook Pro (15" Mid 2012)', 'MacBook Pro (15" Early 2013)' ],
  7801.         "MacBookPro10,2": [ 'MacBook Pro (13" Late 2012)', 'MacBook Pro (13" Early 2013)' ],
  7802.         "MacBookPro11,1": [ 'MacBook Pro (13" Late 2013)', 'MacBook Pro (13" Mid 2014)' ],
  7803.         "MacBookPro11,2": [ 'MacBook Pro (15" Late 2013)', 'MacBook Pro (15" Mid 2014)' ],
  7804.         "MacBookPro11,3": [ 'MacBook Pro (15" Late 2013)', 'MacBook Pro (15" Mid 2014)' ],
  7805.         "MacBookPro12,1": [ 'MacBook Pro (13" Early 2015)' ],
  7806.         "MacBookPro11,4": [ 'MacBook Pro (15 " Mid 2015)' ],
  7807.         "MacBookPro11,5": [ 'MacBook Pro (15" Mid 2015)' ]
  7808.     };
  7809. }, function(module, exports) {
  7810.     module.exports = {
  7811.         acer: [ "Aspier XXXX", "Aspire XXXX", "Aspire xxxx", "AS XXXX", "ChiefRiver Platform", "Columbia", "Sabine Platform", "None", "T", "Tahoe", "YYpire 5600", "YYpire 5920G", "YYTÿÿÿÿÿÿÿÿÿÿÿÿ", "YYÿÿÿÿÿÿÿÿÿÿÿÿÿ" ],
  7812.         advance: [ "Default", "Modelo A" ],
  7813.         aquarius: [ "Cmp NS735", "Pro, Std, Elt Series", "Intel powered classmate PC", "NE405" ],
  7814.         bgh: [ "BGH e-Nova", "e-Nova", "POSITIVO BGH" ],
  7815.         bytespeed: [ "V10IS" ],
  7816.         cce: [ "Capella & IbexPeak-M Chipset" ],
  7817.         czc: [ "czc" ],
  7818.         dell: [ "Vostro 3558tion" ],
  7819.         digitron: [ "B14HM21" ],
  7820.         dixonsxp: [ "00000000000000000", "Calistoga & ICH7M Chipset", "Crestline+ICH8M" ],
  7821.         dns: [ "ChiefRiver Platform" ],
  7822.         "epson-direct": [ "Endeavor NJ2100" ],
  7823.         fujitsu: [ "00000000", "0000000000", "00000000000000000" ],
  7824.         giada: [ "CedarTrail Platform" ],
  7825.         goclever: [ "INSIGNIA 800 WIN" ],
  7826.         google: [ "Falco", "Peppy" ],
  7827.         hasee: [ "Calistoga & ICH7M Chipset" ],
  7828.         "high-tech": [ "Shift" ],
  7829.         hp: [ "0", "000", "00000000000000000000000000000000", "1000", "Pavilion dvxxxx", "ProBook -----" ],
  7830.         hyrican: [ "VN800" ],
  7831.         iball: [ "V8T" ],
  7832.         intel: [ "Calpella Platform", "CedarTrail", "Cedar Trail", "CedarTrail Platform", "ChiefRiver Platform", "HuronRiver Platform", "OakTrail Platform", "Pine Trail - M", "Pine Trail - M CRB", "SandyBridge Platform", "SharkBay Platform", "Skylake Platform" ],
  7833.         isonic: [ "ISO-91010", "ISO-A1005" ],
  7834.         "jp-sa-couto": [ "Intel powered classmate PC" ],
  7835.         jumper: [ "JUMPER" ],
  7836.         "k-systems": [ "1234", "Crestline+ICH8M" ],
  7837.         kraftway: [ "GEG" ],
  7838.         lenovo: [ "00000000000000000000000000000000", "0.1", "C-Notebook XXXX", "Convertible", "INVALID", "Product", "Rev 1", "Rev 1.0", 'ThinkPad Edge 13""IAL#', "ÿÿÿÿÿÿÿU410ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ", "ÿÿÿÿÿÿÿZ580ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ" ],
  7839.         "llc-avangard": [ "Expertline notebook" ],
  7840.         maguay: [ "MYWAY" ],
  7841.         medion: [ "To be filled by O.E.M." ],
  7842.         microboard: [ "Cantiga & ICH9M Chipset", "T100" ],
  7843.         mipi: [ "Mini PC" ],
  7844.         msi: [ "Calpella platform", "To be filled by O.E.M." ],
  7845.         mugen: [ "mugen" ],
  7846.         nec: [ "00000000000000000000000" ],
  7847.         neo: [ "Basic", "Elan L5750 Series", "NeoNBK" ],
  7848.         noname: [ "223 Series", "255/259 Series", "A01 platform", "BayTrail", "BONEFISH", "C93i", "CherryTrail", "ChiefRiver Platform", "Default string", "E450", "EM200", "Generic", "H34", "KENNEX", "KN1", "LM1W", "M31EI Series", "Nobilis", "None", "Notebook", "N/A", "ODM", "oem", "Parallels Virtual Platform", "Patriot", "PCSMART", "Positivo BGH", "Pro Tab 7", "PS-3315", "PS-3316", "S16", "S62H", "S96S", "Spring Peak", "To Be Filled By O.E.M.", "To Be Filled by O.E.M.", "To be filled by O.E.M.", "Turbo X", "V5", "W115", "X20IA Series", "Z96FM", "Z96J", "Z96JS", "Z97V" ],
  7849.         "notion-ink": [ "CN8I8955G" ],
  7850.         "packard-bell": [ "00000000000000000000000" ],
  7851.         "pc-smart": [ "LAPTOP" ],
  7852.         philco: [ "TO be filled by O.E.M" ],
  7853.         positivo: [ "POS" ],
  7854.         quanta: [ "00000000000000000" ],
  7855.         render: [ "Pinetrail", "Pine trail" ],
  7856.         rm: [ "RM" ],
  7857.         samsung: [ "3", "Aquila Slim Platform", "Galaxy TabPro S", "Mobile System" ],
  7858.         sony: [ "VAIO Reserved" ],
  7859.         tcl: [ "T51" ],
  7860.         topstar: [ "Cantiga & ICH9M Chipset" ],
  7861.         toshiba: [ "000000", "00000000000000000000", "SandyBridge Platform", "To Be Filled By O.E.M.", "To be filled by O.E.M." ],
  7862.         vestel: [ "Calistoga & ICH7M Chipset" ],
  7863.         yekani: [ "Intel (R) Education Tablet" ],
  7864.         zet: [ "To be filled by O.E.M." ],
  7865.         zoostorm: [ "Cantiga & ICH9M Chipset" ]
  7866.     };
  7867. }, function(module, exports, __webpack_require__) {
  7868.     "use strict";
  7869.     Object.defineProperty(exports, "__esModule", {
  7870.         value: !0
  7871.     });
  7872.     var _deviceClasses = __webpack_require__(803), _deviceClasses2 = function(obj) {
  7873.         return obj && obj.__esModule ? obj : {
  7874.             "default": obj
  7875.         };
  7876.     }(_deviceClasses);
  7877.     exports["default"] = function(l) {
  7878.         var res = {};
  7879.         _deviceClasses2["default"].forEach(function(_ref) {
  7880.             var id = _ref.id;
  7881.             switch (id) {
  7882.               case "bluetooth":
  7883.                 res[id] = {
  7884.                     morpher: {
  7885.                         single: {
  7886.                             main: l("deviceclasses_bluetooth-single-main"),
  7887.                             "for": l("deviceclasses_bluetooth-single-for")
  7888.                         },
  7889.                         plural: {
  7890.                             main: l("deviceclasses_bluetooth-plural-main"),
  7891.                             "for": l("deviceclasses_bluetooth-plural-for")
  7892.                         }
  7893.                     }
  7894.                 };
  7895.                 break;
  7896.  
  7897.               case "cardreader":
  7898.                 res[id] = {
  7899.                     morpher: {
  7900.                         single: {
  7901.                             main: l("deviceclasses_cardreader-single-main"),
  7902.                             "for": l("deviceclasses_cardreader-single-for")
  7903.                         },
  7904.                         plural: {
  7905.                             main: l("deviceclasses_cardreader-plural-main"),
  7906.                             "for": l("deviceclasses_cardreader-plural-for")
  7907.                         }
  7908.                     }
  7909.                 };
  7910.                 break;
  7911.  
  7912.               case "chipset":
  7913.                 res[id] = {
  7914.                     morpher: {
  7915.                         single: {
  7916.                             main: l("deviceclasses_chipset-single-main"),
  7917.                             "for": l("deviceclasses_chipset-single-for")
  7918.                         },
  7919.                         plural: {
  7920.                             main: l("deviceclasses_chipset-plural-main"),
  7921.                             "for": l("deviceclasses_chipset-plural-for")
  7922.                         }
  7923.                     }
  7924.                 };
  7925.                 break;
  7926.  
  7927.               case "inputdev":
  7928.                 res[id] = {
  7929.                     morpher: {
  7930.                         single: {
  7931.                             main: l("deviceclasses_inputdev-single-main"),
  7932.                             "for": l("deviceclasses_inputdev-single-for")
  7933.                         },
  7934.                         plural: {
  7935.                             main: l("deviceclasses_inputdev-plural-main"),
  7936.                             "for": l("deviceclasses_inputdev-plural-for")
  7937.                         }
  7938.                     }
  7939.                 };
  7940.                 break;
  7941.  
  7942.               case "lan":
  7943.                 res[id] = {
  7944.                     morpher: {
  7945.                         single: {
  7946.                             main: l("deviceclasses_lan-single-main"),
  7947.                             "for": l("deviceclasses_lan-single-for")
  7948.                         },
  7949.                         plural: {
  7950.                             main: l("deviceclasses_lan-plural-main"),
  7951.                             "for": l("deviceclasses_lan-plural-for")
  7952.                         }
  7953.                     }
  7954.                 };
  7955.                 break;
  7956.  
  7957.               case "massstorage":
  7958.                 res[id] = {
  7959.                     morpher: {
  7960.                         single: {
  7961.                             main: l("deviceclasses_massstorage-single-main"),
  7962.                             "for": l("deviceclasses_massstorage-single-for")
  7963.                         },
  7964.                         plural: {
  7965.                             main: l("deviceclasses_massstorage-plural-main"),
  7966.                             "for": l("deviceclasses_massstorage-plural-for")
  7967.                         }
  7968.                     }
  7969.                 };
  7970.                 break;
  7971.  
  7972.               case "modem":
  7973.                 res[id] = {
  7974.                     morpher: {
  7975.                         single: {
  7976.                             main: l("deviceclasses_modem-single-main"),
  7977.                             "for": l("deviceclasses_modem-single-for")
  7978.                         },
  7979.                         plural: {
  7980.                             main: l("deviceclasses_modem-plural-main"),
  7981.                             "for": l("deviceclasses_modem-plural-for")
  7982.                         }
  7983.                     }
  7984.                 };
  7985.                 break;
  7986.  
  7987.               case "monitor":
  7988.                 res[id] = {
  7989.                     morpher: {
  7990.                         single: {
  7991.                             main: l("deviceclasses_monitor-single-main"),
  7992.                             "for": l("deviceclasses_monitor-single-for")
  7993.                         },
  7994.                         plural: {
  7995.                             main: l("deviceclasses_monitor-plural-main"),
  7996.                             "for": l("deviceclasses_monitor-plural-for")
  7997.                         }
  7998.                     }
  7999.                 };
  8000.                 break;
  8001.  
  8002.               case "phone":
  8003.                 res[id] = {
  8004.                     morpher: {
  8005.                         single: {
  8006.                             main: l("deviceclasses_phone-single-main"),
  8007.                             "for": l("deviceclasses_phone-single-for")
  8008.                         },
  8009.                         plural: {
  8010.                             main: l("deviceclasses_phone-plural-main"),
  8011.                             "for": l("deviceclasses_phone-plural-for")
  8012.                         }
  8013.                     }
  8014.                 };
  8015.                 break;
  8016.  
  8017.               case "printer":
  8018.                 res[id] = {
  8019.                     morpher: {
  8020.                         single: {
  8021.                             main: l("deviceclasses_printer-single-main"),
  8022.                             "for": l("deviceclasses_printer-single-for")
  8023.                         },
  8024.                         plural: {
  8025.                             main: l("deviceclasses_printer-plural-main"),
  8026.                             "for": l("deviceclasses_printer-plural-for")
  8027.                         }
  8028.                     }
  8029.                 };
  8030.                 break;
  8031.  
  8032.               case "sound":
  8033.                 res[id] = {
  8034.                     morpher: {
  8035.                         single: {
  8036.                             main: l("deviceclasses_sound-single-main"),
  8037.                             "for": l("deviceclasses_sound-single-for")
  8038.                         },
  8039.                         plural: {
  8040.                             main: l("deviceclasses_sound-plural-main"),
  8041.                             "for": l("deviceclasses_sound-plural-for")
  8042.                         }
  8043.                     }
  8044.                 };
  8045.                 break;
  8046.  
  8047.               case "tvtuner":
  8048.                 res[id] = {
  8049.                     morpher: {
  8050.                         single: {
  8051.                             main: l("deviceclasses_tvtuner-single-main"),
  8052.                             "for": l("deviceclasses_tvtuner-single-for")
  8053.                         },
  8054.                         plural: {
  8055.                             main: l("deviceclasses_tvtuner-plural-main"),
  8056.                             "for": l("deviceclasses_tvtuner-plural-for")
  8057.                         }
  8058.                     }
  8059.                 };
  8060.                 break;
  8061.  
  8062.               case "video":
  8063.                 res[id] = {
  8064.                     morpher: {
  8065.                         single: {
  8066.                             main: l("deviceclasses_video-single-main"),
  8067.                             "for": l("deviceclasses_video-single-for")
  8068.                         },
  8069.                         plural: {
  8070.                             main: l("deviceclasses_video-plural-main"),
  8071.                             "for": l("deviceclasses_video-plural-for")
  8072.                         }
  8073.                     }
  8074.                 };
  8075.                 break;
  8076.  
  8077.               case "webcamera":
  8078.                 res[id] = {
  8079.                     morpher: {
  8080.                         single: {
  8081.                             main: l("deviceclasses_webcamera-single-main"),
  8082.                             "for": l("deviceclasses_webcamera-single-for")
  8083.                         },
  8084.                         plural: {
  8085.                             main: l("deviceclasses_webcamera-plural-main"),
  8086.                             "for": l("deviceclasses_webcamera-plural-for")
  8087.                         }
  8088.                     }
  8089.                 };
  8090.                 break;
  8091.  
  8092.               case "wifi":
  8093.                 res[id] = {
  8094.                     morpher: {
  8095.                         single: {
  8096.                             main: l("deviceclasses_wifi-single-main"),
  8097.                             "for": l("deviceclasses_wifi-single-for")
  8098.                         },
  8099.                         plural: {
  8100.                             main: l("deviceclasses_wifi-plural-main"),
  8101.                             "for": l("deviceclasses_wifi-plural-for")
  8102.                         }
  8103.                     }
  8104.                 };
  8105.                 break;
  8106.  
  8107.               case "other":
  8108.               default:
  8109.                 res[id] = {
  8110.                     morpher: {
  8111.                         single: {
  8112.                             main: l("deviceclasses_other-single-main"),
  8113.                             "for": l("deviceclasses_other-single-for")
  8114.                         },
  8115.                         plural: {
  8116.                             main: l("deviceclasses_other-plural-main"),
  8117.                             "for": l("deviceclasses_other-plural-for")
  8118.                         }
  8119.                     }
  8120.                 };
  8121.             }
  8122.         });
  8123.         return res;
  8124.     };
  8125.     module.exports = exports["default"];
  8126. }, function(module, exports, __webpack_require__) {
  8127.     "use strict";
  8128.     function _interopRequireDefault(obj) {
  8129.         return obj && obj.__esModule ? obj : {
  8130.             "default": obj
  8131.         };
  8132.     }
  8133.     exports.__esModule = !0;
  8134.     var _os = __webpack_require__(13), _registry = __webpack_require__(30), _getNotebookVendor = __webpack_require__(88), _getNotebookVendor2 = _interopRequireDefault(_getNotebookVendor), _getNotebookModel = __webpack_require__(125), _getNotebookModel2 = _interopRequireDefault(_getNotebookModel);
  8135.     (0, _registry.RegWrite)("HKLM\\SYSTEM\\CurrentControlSet\\services\\eventlog\\Microsoft-Windows-Diagnostics-Performance/Operational\\", "");
  8136.     var parseWinDate = function(date) {
  8137.         return new Date(parseInt(date.slice(0, 4), 10), parseInt(date.slice(4, 6), 10) - 1, parseInt(date.slice(6, 8), 10), parseInt(date.slice(8, 10), 10), parseInt(date.slice(10, 12), 10), parseInt(date.slice(12, 14), 10));
  8138.     }, convertToWinDate = function(date) {
  8139.         return date.getFullYear() + "" + ("0" + (date.getMonth() + 1)).slice(-2) + ("0" + date.getDate()).slice(-2) + ("0" + date.getHours()).slice(-2) + ("0" + date.getMinutes()).slice(-2) + ("0" + date.getSeconds()).slice(-2) + "." + ("00000" + date.getMilliseconds()).slice(-6) + "+" + date.getTimezoneOffset();
  8140.     };
  8141.     exports["default"] = {
  8142.         Computer: {
  8143.             Summary: {
  8144.                 type: "object",
  8145.                 targets: [ "diagnostics", "dashboard" ],
  8146.                 groups: [ {
  8147.                     name: "Computer",
  8148.                     fields: [ {
  8149.                         name: "Manufacturer",
  8150.                         wmi: {
  8151.                             source: "Win32_ComputerSystemProduct",
  8152.                             fields: [ "Vendor" ]
  8153.                         },
  8154.                         format: function(_ref) {
  8155.                             var Vendor = _ref.Vendor;
  8156.                             return (0, _getNotebookVendor2["default"])(Vendor);
  8157.                         }
  8158.                     }, {
  8159.                         name: "Model",
  8160.                         wmi: {
  8161.                             source: "Win32_ComputerSystemProduct",
  8162.                             fields: [ "Vendor", "Name", "Version" ]
  8163.                         },
  8164.                         format: function(_ref2) {
  8165.                             var Vendor = _ref2.Vendor, Name = _ref2.Name, Version = _ref2.Version;
  8166.                             return (0, _getNotebookModel2["default"])({
  8167.                                 Vendor: (0, _getNotebookVendor2["default"])(Vendor),
  8168.                                 Name: Name,
  8169.                                 Version: Version
  8170.                             });
  8171.                         }
  8172.                     }, {
  8173.                         name: "Computer Type",
  8174.                         wmi: {
  8175.                             source: "Win32_ComputerSystem",
  8176.                             fields: [ "SystemType" ]
  8177.                         }
  8178.                     }, {
  8179.                         name: "Operating System",
  8180.                         wmi: {
  8181.                             source: "Win32_OperatingSystem",
  8182.                             fields: [ "Caption" ]
  8183.                         }
  8184.                     }, {
  8185.                         name: "OS Service Pack",
  8186.                         wmi: {
  8187.                             source: "Win32_OperatingSystem",
  8188.                             fields: [ "CSDVersion" ]
  8189.                         }
  8190.                     }, {
  8191.                         name: "Internet Explorer",
  8192.                         reg: {
  8193.                             source: [ "HKLM\\SOFTWARE\\Microsoft\\Internet Explorer\\svcVersion", "HKLM\\SOFTWARE\\Microsoft\\Internet Explorer\\Version" ]
  8194.                         }
  8195.                     }, {
  8196.                         name: "Computer Name",
  8197.                         wmi: {
  8198.                             source: "Win32_ComputerSystem",
  8199.                             fields: [ "Caption" ]
  8200.                         }
  8201.                     }, {
  8202.                         name: "User Name",
  8203.                         wmi: {
  8204.                             source: "Win32_ComputerSystem",
  8205.                             fields: [ "UserName" ]
  8206.                         }
  8207.                     }, {
  8208.                         name: "Logon Domain",
  8209.                         wmi: {
  8210.                             source: "Win32_ComputerSystem",
  8211.                             fields: [ "Domain" ]
  8212.                         }
  8213.                     }, {
  8214.                         name: "Date / Time",
  8215.                         targets: [ "temporary" ],
  8216.                         wmi: {
  8217.                             source: "Win32_OperatingSystem",
  8218.                             fields: [ "LocalDateTime" ]
  8219.                         },
  8220.                         format: function(_ref3) {
  8221.                             var LocalDateTime = _ref3.LocalDateTime;
  8222.                             return parseWinDate(LocalDateTime).toString();
  8223.                         }
  8224.                     } ]
  8225.                 }, {
  8226.                     name: "Temperature",
  8227.                     fields: [ {
  8228.                         name: "CPU Temperature",
  8229.                         targets: [ "temporary" ],
  8230.                         wmi: {
  8231.                             source: "ROOT\\OpenHardwareMonitor:Sensor",
  8232.                             fields: [ "Value", "Identifier" ],
  8233.                             filter: function(_ref4) {
  8234.                                 return /\/(intel|amd|generic)cpu\/.*?\/temperature\/.*?/.test(_ref4.Identifier);
  8235.                             }
  8236.                         },
  8237.                         format: function(_ref5) {
  8238.                             var Value = _ref5.Value, formatedValue = Math.ceil(Value);
  8239.                             if (formatedValue >= 0) return formatedValue + " °C"; else return null;
  8240.                         }
  8241.                     }, {
  8242.                         name: "GPU Temperature",
  8243.                         targets: [ "temporary" ],
  8244.                         wmi: {
  8245.                             source: "ROOT\\OpenHardwareMonitor:Sensor",
  8246.                             fields: [ "Value", "Name", "SensorType" ],
  8247.                             filter: function(_ref6) {
  8248.                                 var Name = _ref6.Name, SensorType = _ref6.SensorType;
  8249.                                 return 0 === Name.indexOf("GPU") && "Temperature" === SensorType;
  8250.                             }
  8251.                         },
  8252.                         format: function(_ref7) {
  8253.                             var Value = _ref7.Value, formatedValue = Math.ceil(Value);
  8254.                             if (formatedValue >= 0) return formatedValue + " °C"; else return null;
  8255.                         }
  8256.                     }, {
  8257.                         name: "Motherboard Temperature",
  8258.                         targets: [ "temporary" ],
  8259.                         wmi: {
  8260.                             source: "ROOT\\OpenHardwareMonitor:Sensor",
  8261.                             fields: [ "Value", "Name", "SensorType" ],
  8262.                             filter: function(_ref8) {
  8263.                                 var Name = _ref8.Name, SensorType = _ref8.SensorType;
  8264.                                 return 0 === Name.indexOf("System") && "Temperature" === SensorType;
  8265.                             }
  8266.                         },
  8267.                         format: function(_ref9) {
  8268.                             var Value = _ref9.Value, formatedValue = Math.ceil(Value);
  8269.                             if (formatedValue >= 0) return formatedValue + " °C"; else return null;
  8270.                         }
  8271.                     }, {
  8272.                         name: "HDD Temperature",
  8273.                         targets: [ "temporary" ],
  8274.                         wmi: {
  8275.                             source: "ROOT\\OpenHardwareMonitor:Sensor",
  8276.                             fields: [ "Value", "Name", "SensorType" ],
  8277.                             filter: function(_ref10) {
  8278.                                 var Name = _ref10.Name, SensorType = _ref10.SensorType;
  8279.                                 return 0 === Name.indexOf("Temperature") && "Temperature" === SensorType;
  8280.                             }
  8281.                         },
  8282.                         format: function(_ref11) {
  8283.                             var Value = _ref11.Value, formatedValue = Math.ceil(Value);
  8284.                             if (formatedValue >= 0) return formatedValue + " °C"; else return null;
  8285.                         }
  8286.                     } ]
  8287.                 }, {
  8288.                     name: "Motherboard",
  8289.                     fields: [ {
  8290.                         name: "CPU Type",
  8291.                         wmi: {
  8292.                             source: "Win32_Processor",
  8293.                             fields: [ "Name", "MaxClockSpeed", "NumberOfCores" ]
  8294.                         },
  8295.                         format: function(_ref12) {
  8296.                             return _ref12.Name + ", " + _ref12.MaxClockSpeed + " MHz, " + _ref12.NumberOfCores + "-core";
  8297.                         }
  8298.                     }, {
  8299.                         name: "Motherboard Name",
  8300.                         wmi: {
  8301.                             source: "Win32_BaseBoard",
  8302.                             fields: [ "Name" ]
  8303.                         }
  8304.                     }, {
  8305.                         name: "System Memory",
  8306.                         wmi: {
  8307.                             source: "Win32_ComputerSystem",
  8308.                             fields: [ "TotalPhysicalMemory" ]
  8309.                         },
  8310.                         format: function(_ref13) {
  8311.                             var TotalPhysicalMemory = _ref13.TotalPhysicalMemory;
  8312.                             return Math.ceil(parseFloat(TotalPhysicalMemory) / 1024 / 1024) + " MB";
  8313.                         }
  8314.                     }, {
  8315.                         name: "BIOS Type",
  8316.                         wmi: {
  8317.                             source: "Win32_BIOS",
  8318.                             fields: [ "SMBIOSBIOSVersion", "ReleaseDate" ]
  8319.                         },
  8320.                         format: function(_ref14) {
  8321.                             var SMBIOSBIOSVersion = (_ref14.Manufacturer, _ref14.SMBIOSBIOSVersion), ReleaseDate = _ref14.ReleaseDate;
  8322.                             return SMBIOSBIOSVersion + " (" + [ ReleaseDate.slice(0, 4), ReleaseDate.slice(4, 6), ReleaseDate.slice(6, 8) ].join(".") + ")";
  8323.                         }
  8324.                     } ]
  8325.                 }, {
  8326.                     name: "Display",
  8327.                     fields: [ {
  8328.                         name: "Video Adapter",
  8329.                         targets: [ "check" ],
  8330.                         multi: !0,
  8331.                         wmi: {
  8332.                             source: "Win32_VideoController",
  8333.                             fields: [ "Name", "AdapterRAM", "ConfigManagerErrorCode" ]
  8334.                         },
  8335.                         format: function(_ref15) {
  8336.                             var Name = _ref15.Name, AdapterRAM = _ref15.AdapterRAM, ConfigManagerErrorCode = _ref15.ConfigManagerErrorCode, res = Name;
  8337.                             if (AdapterRAM > 0) res += " (" + Math.ceil(parseFloat(AdapterRAM) / 1024 / 1024) + " MB)";
  8338.                             if (ConfigManagerErrorCode) res += " (Status: ERROR)";
  8339.                             return res;
  8340.                         }
  8341.                     }, {
  8342.                         name: "Monitor",
  8343.                         multi: !0,
  8344.                         wmi: {
  8345.                             source: "Win32_DesktopMonitor",
  8346.                             fields: [ "Name", "MonitorType" ]
  8347.                         },
  8348.                         format: function(_ref16) {
  8349.                             var Name = _ref16.Name;
  8350.                             return _ref16.MonitorType + " " + Name;
  8351.                         }
  8352.                     } ]
  8353.                 }, {
  8354.                     name: "Multimedia",
  8355.                     fields: [ {
  8356.                         name: "Audio Adapter",
  8357.                         targets: [ "check" ],
  8358.                         multi: !0,
  8359.                         wmi: {
  8360.                             source: "Win32_SoundDevice",
  8361.                             fields: [ "Name", "ConfigManagerErrorCode" ]
  8362.                         },
  8363.                         format: function(_ref17) {
  8364.                             var Name = _ref17.Name, ConfigManagerErrorCode = _ref17.ConfigManagerErrorCode, res = Name;
  8365.                             if (ConfigManagerErrorCode) res += " (Status: ERROR)";
  8366.                             return res;
  8367.                         }
  8368.                     } ]
  8369.                 }, {
  8370.                     name: "Storage",
  8371.                     fields: [ {
  8372.                         name: "IDE Controller",
  8373.                         multi: !0,
  8374.                         wmi: {
  8375.                             source: "Win32_IDEController",
  8376.                             fields: [ "Caption" ]
  8377.                         }
  8378.                     }, {
  8379.                         name: "Disk Drive",
  8380.                         multi: !0,
  8381.                         wmi: {
  8382.                             source: "Win32_DiskDrive",
  8383.                             fields: [ "Caption", "Status" ]
  8384.                         },
  8385.                         format: function(_ref18) {
  8386.                             return _ref18.Caption + " (SMART " + _ref18.Status + ")";
  8387.                         }
  8388.                     }, {
  8389.                         name: "Optical Drive",
  8390.                         multi: !0,
  8391.                         wmi: {
  8392.                             source: "Win32_CDROMDrive",
  8393.                             fields: [ "Caption" ]
  8394.                         }
  8395.                     } ]
  8396.                 }, {
  8397.                     name: "Partitions",
  8398.                     fields: [ {
  8399.                         name: "Partition",
  8400.                         targets: [ "targeting" ],
  8401.                         multi: !0,
  8402.                         wmi: {
  8403.                             source: "Win32_LogicalDisk",
  8404.                             fields: [ "Name", "FileSystem", "Size", "FreeSpace" ]
  8405.                         },
  8406.                         format: function(_ref19) {
  8407.                             var Name = _ref19.Name, FileSystem = _ref19.FileSystem, Size = _ref19.Size, FreeSpace = _ref19.FreeSpace;
  8408.                             return Name + " (" + FileSystem + ") " + Math.ceil(parseFloat(Size) / 1024 / 1024 / 1024 * 100) / 100 + " GB (" + Math.ceil(parseFloat(FreeSpace) / 1024 / 1024 / 1024 * 100) / 100 + " GB free)";
  8409.                         }
  8410.                     } ]
  8411.                 }, {
  8412.                     name: "Input",
  8413.                     fields: [ {
  8414.                         name: "Keyboard",
  8415.                         multi: !0,
  8416.                         wmi: {
  8417.                             source: "Win32_Keyboard",
  8418.                             fields: [ "Description" ]
  8419.                         }
  8420.                     }, {
  8421.                         name: "Mouse",
  8422.                         multi: !0,
  8423.                         wmi: {
  8424.                             source: "Win32_PointingDevice",
  8425.                             fields: [ "Description" ]
  8426.                         }
  8427.                     } ]
  8428.                 }, {
  8429.                     name: "Network",
  8430.                     fields: [ {
  8431.                         name: "Network Adapter",
  8432.                         targets: [ "check" ],
  8433.                         multi: !0,
  8434.                         wmi: {
  8435.                             source: "Win32_NetworkAdapter",
  8436.                             fields: [ "Description", "MACAddress", "PhysicalAdapter", "ConfigManagerErrorCode" ],
  8437.                             filter: function(_ref20) {
  8438.                                 return !1 !== _ref20.PhysicalAdapter;
  8439.                             }
  8440.                         },
  8441.                         format: function(_ref21) {
  8442.                             var Description = _ref21.Description, MACAddress = _ref21.MACAddress, ConfigManagerErrorCode = _ref21.ConfigManagerErrorCode, res = Description;
  8443.                             if (MACAddress) res += " (MAC " + MACAddress + ")";
  8444.                             if (ConfigManagerErrorCode && 22 !== ConfigManagerErrorCode) res += " (Status: ERROR)";
  8445.                             return res;
  8446.                         }
  8447.                     } ]
  8448.                 }, {
  8449.                     name: "Peripherals",
  8450.                     fields: [ {
  8451.                         name: "Printer",
  8452.                         multi: !0,
  8453.                         wmi: {
  8454.                             source: "Win32_Printer",
  8455.                             fields: [ "Name" ]
  8456.                         }
  8457.                     }, {
  8458.                         name: "USB Controller",
  8459.                         multi: !0,
  8460.                         wmi: {
  8461.                             source: "Win32_USBController",
  8462.                             fields: [ "Name" ]
  8463.                         }
  8464.                     }, {
  8465.                         name: "Battery",
  8466.                         multi: !0,
  8467.                         wmi: {
  8468.                             source: "Win32_Battery",
  8469.                             fields: [ "Name" ]
  8470.                         }
  8471.                     } ]
  8472.                 }, {
  8473.                     name: "DMI",
  8474.                     fields: [ {
  8475.                         name: "DMI BIOS Vendor",
  8476.                         wmi: {
  8477.                             source: "Win32_BIOS",
  8478.                             fields: [ "Manufacturer" ]
  8479.                         }
  8480.                     }, {
  8481.                         name: "DMI BIOS Version",
  8482.                         wmi: {
  8483.                             source: "Win32_BIOS",
  8484.                             fields: [ "SMBIOSBIOSVersion" ]
  8485.                         }
  8486.                     }, {
  8487.                         name: "DMI System Manufacturer",
  8488.                         wmi: {
  8489.                             source: "Win32_ComputerSystemProduct",
  8490.                             fields: [ "Vendor" ]
  8491.                         }
  8492.                     }, {
  8493.                         name: "DMI System Product",
  8494.                         wmi: {
  8495.                             source: "Win32_ComputerSystemProduct",
  8496.                             fields: [ "Name" ]
  8497.                         }
  8498.                     }, {
  8499.                         name: "DMI System Version",
  8500.                         wmi: {
  8501.                             source: "Win32_ComputerSystemProduct",
  8502.                             fields: [ "Version" ]
  8503.                         }
  8504.                     }, {
  8505.                         name: "DMI System Serial Number",
  8506.                         wmi: {
  8507.                             source: "Win32_ComputerSystemProduct",
  8508.                             fields: [ "IdentifyingNumber" ]
  8509.                         }
  8510.                     }, {
  8511.                         name: "DMI System UUID",
  8512.                         wmi: {
  8513.                             source: "Win32_ComputerSystemProduct",
  8514.                             fields: [ "UUID" ]
  8515.                         }
  8516.                     }, {
  8517.                         name: "DMI Motherboard Manufacturer",
  8518.                         wmi: {
  8519.                             source: "Win32_Baseboard",
  8520.                             fields: [ "Manufacturer" ]
  8521.                         }
  8522.                     }, {
  8523.                         name: "DMI Motherboard Product",
  8524.                         wmi: {
  8525.                             source: "Win32_Baseboard",
  8526.                             fields: [ "Product" ]
  8527.                         }
  8528.                     }, {
  8529.                         name: "DMI Motherboard Version",
  8530.                         wmi: {
  8531.                             source: "Win32_Baseboard",
  8532.                             fields: [ "Version" ]
  8533.                         }
  8534.                     }, {
  8535.                         name: "DMI Motherboard Serial Number",
  8536.                         wmi: {
  8537.                             source: "Win32_Baseboard",
  8538.                             fields: [ "SerialNumber" ]
  8539.                         }
  8540.                     }, {
  8541.                         name: "DMI Chassis Manufacturer",
  8542.                         wmi: {
  8543.                             source: "Win32_SystemEnclosure",
  8544.                             fields: [ "Manufacturer" ]
  8545.                         }
  8546.                     }, {
  8547.                         name: "DMI Chassis Version",
  8548.                         wmi: {
  8549.                             source: "Win32_SystemEnclosure",
  8550.                             fields: [ "Version" ]
  8551.                         }
  8552.                     }, {
  8553.                         name: "DMI Chassis Serial Number",
  8554.                         wmi: {
  8555.                             source: "Win32_SystemEnclosure",
  8556.                             fields: [ "SerialNumber" ]
  8557.                         }
  8558.                     }, {
  8559.                         name: "DMI Chassis Asset Tag",
  8560.                         wmi: {
  8561.                             source: "Win32_SystemEnclosure",
  8562.                             fields: [ "SMBIOSAssetTag" ]
  8563.                         }
  8564.                     }, {
  8565.                         name: "DMI Chassis Type",
  8566.                         wmi: {
  8567.                             source: "Win32_SystemEnclosure",
  8568.                             fields: [ "ChassisTypes" ]
  8569.                         },
  8570.                         format: function(_ref22) {
  8571.                             var ChassisTypes = _ref22.ChassisTypes;
  8572.                             if (ChassisTypes) switch (ChassisTypes[0]) {
  8573.                               case 1:
  8574.                                 return "Other";
  8575.  
  8576.                               case 2:
  8577.                                 return "Unknown";
  8578.  
  8579.                               case 3:
  8580.                                 return "Desktop";
  8581.  
  8582.                               case 4:
  8583.                                 return "Low Profile Desktop";
  8584.  
  8585.                               case 5:
  8586.                                 return "Pizza Box";
  8587.  
  8588.                               case 6:
  8589.                                 return "Mini Tower";
  8590.  
  8591.                               case 7:
  8592.                                 return "Tower";
  8593.  
  8594.                               case 8:
  8595.                                 return "Portable";
  8596.  
  8597.                               case 9:
  8598.                                 return "Laptop";
  8599.  
  8600.                               case 10:
  8601.                                 return "Notebook";
  8602.  
  8603.                               case 11:
  8604.                                 return "Hand Held";
  8605.  
  8606.                               case 12:
  8607.                                 return "Docking Station";
  8608.  
  8609.                               case 13:
  8610.                                 return "All in One";
  8611.  
  8612.                               case 14:
  8613.                                 return "Sub Notebook";
  8614.  
  8615.                               case 15:
  8616.                                 return "Space-Saving";
  8617.  
  8618.                               case 16:
  8619.                                 return "Lunch Box";
  8620.  
  8621.                               case 17:
  8622.                                 return "Main System Chassis";
  8623.  
  8624.                               case 18:
  8625.                                 return "Expansion Chassis";
  8626.  
  8627.                               case 19:
  8628.                                 return "SubChassis";
  8629.  
  8630.                               case 20:
  8631.                                 return "Bus Expansion Chassis";
  8632.  
  8633.                               case 21:
  8634.                                 return "Peripheral Chassis";
  8635.  
  8636.                               case 22:
  8637.                                 return "Storage Chassis";
  8638.  
  8639.                               case 23:
  8640.                                 return "Rack Mount Chassis";
  8641.  
  8642.                               case 24:
  8643.                                 return "Sealed-Case PC";
  8644.                             }
  8645.                             return "";
  8646.                         }
  8647.                     } ]
  8648.                 } ]
  8649.             },
  8650.             "Power Management": {
  8651.                 type: "object",
  8652.                 targets: [ "diagnostics", "dashboard" ],
  8653.                 groups: [ {
  8654.                     name: "Power Management Properties",
  8655.                     fields: [ {
  8656.                         name: "Current Power Source",
  8657.                         targets: [ "temporary" ],
  8658.                         wmi: {
  8659.                             source: "ROOT\\wmi:BatteryStatus",
  8660.                             fields: [ "PowerOnline" ]
  8661.                         },
  8662.                         format: function(_ref23) {
  8663.                             return !1 === _ref23.PowerOnline ? "Battery" : "AC Line";
  8664.                         }
  8665.                     }, {
  8666.                         name: "Battery Status",
  8667.                         targets: [ "temporary" ],
  8668.                         wmi: {
  8669.                             source: "Win32_Battery",
  8670.                             fields: [ "EstimatedChargeRemaining", "BatteryStatus" ]
  8671.                         },
  8672.                         format: function(_ref24) {
  8673.                             var EstimatedChargeRemaining = _ref24.EstimatedChargeRemaining, BatteryStatus = _ref24.BatteryStatus, res = EstimatedChargeRemaining + "%";
  8674.                             switch (BatteryStatus) {
  8675.                               case 1:
  8676.                                 return res + " (Other)";
  8677.  
  8678.                               case 2:
  8679.                                 return res + " (Unknown)";
  8680.  
  8681.                               case 3:
  8682.                                 return res + " (Fully Charged)";
  8683.  
  8684.                               case 4:
  8685.                                 return res + " (Low)";
  8686.  
  8687.                               case 5:
  8688.                                 return res + " (Critical)";
  8689.  
  8690.                               case 6:
  8691.                                 return res + " (Charging)";
  8692.  
  8693.                               case 7:
  8694.                                 return res + " (Charging and High)";
  8695.  
  8696.                               case 8:
  8697.                                 return res + " (Charging and Low)";
  8698.  
  8699.                               case 9:
  8700.                                 return res + " (Charging and Critical)";
  8701.  
  8702.                               case 10:
  8703.                                 return res + " (Undefined)";
  8704.  
  8705.                               case 11:
  8706.                                 return res + " (Partially Charged)";
  8707.                             }
  8708.                             return res;
  8709.                         }
  8710.                     }, {
  8711.                         name: "Remaining Battery Lifetime",
  8712.                         targets: [ "temporary" ],
  8713.                         wmi: {
  8714.                             source: "Win32_Battery",
  8715.                             fields: [ "EstimatedRunTime" ]
  8716.                         },
  8717.                         format: function(_ref25) {
  8718.                             var EstimatedRunTime = _ref25.EstimatedRunTime;
  8719.                             if (parseInt(EstimatedRunTime, 10) > 7200) return "Unknown"; else return EstimatedRunTime + " minutes";
  8720.                         }
  8721.                     } ]
  8722.                 }, {
  8723.                     name: "Battery Properties",
  8724.                     fields: [ {
  8725.                         name: "Device Name",
  8726.                         wmi: {
  8727.                             source: "Win32_Battery",
  8728.                             fields: [ "Name" ]
  8729.                         }
  8730.                     }, {
  8731.                         name: "Manufacturer",
  8732.                         wmi: {
  8733.                             source: "Win32_PortableBattery",
  8734.                             fields: [ "Manufacturer" ]
  8735.                         }
  8736.                     }, {
  8737.                         name: "Unique ID",
  8738.                         wmi: {
  8739.                             source: "Win32_Battery",
  8740.                             fields: [ "DeviceID" ]
  8741.                         }
  8742.                     }, {
  8743.                         name: "Battery Type",
  8744.                         wmi: {
  8745.                             source: "Win32_Battery",
  8746.                             fields: [ "Chemistry" ]
  8747.                         },
  8748.                         format: function(_ref26) {
  8749.                             switch (_ref26.Chemistry) {
  8750.                               case 1:
  8751.                                 return "Other";
  8752.  
  8753.                               case 2:
  8754.                                 return "Unknown";
  8755.  
  8756.                               case 3:
  8757.                                 return "Lead Acid";
  8758.  
  8759.                               case 4:
  8760.                                 return "Nickel Cadmium";
  8761.  
  8762.                               case 5:
  8763.                                 return "Nickel Metal Hydride";
  8764.  
  8765.                               case 6:
  8766.                                 return "Lithium-ion";
  8767.  
  8768.                               case 7:
  8769.                                 return "Zinc air";
  8770.  
  8771.                               case 8:
  8772.                                 return "Lithium Polymer";
  8773.                             }
  8774.                             return "";
  8775.                         }
  8776.                     }, {
  8777.                         name: "Designed Capacity",
  8778.                         wmi: {
  8779.                             source: "ROOT\\wmi:BatteryStaticData",
  8780.                             fields: [ "DesignedCapacity" ]
  8781.                         },
  8782.                         format: function(_ref27) {
  8783.                             return _ref27.DesignedCapacity + " mWh";
  8784.                         }
  8785.                     }, {
  8786.                         name: "Fully Charged Capacity",
  8787.                         wmi: {
  8788.                             source: "ROOT\\wmi:BatteryFullChargedCapacity",
  8789.                             fields: [ "FullChargedCapacity" ]
  8790.                         },
  8791.                         format: function(_ref28) {
  8792.                             return _ref28.FullChargedCapacity + " mWh";
  8793.                         }
  8794.                     }, {
  8795.                         name: "Current Capacity",
  8796.                         targets: [ "temporary" ],
  8797.                         wmi: {
  8798.                             source: "ROOT\\wmi:BatteryStatus",
  8799.                             fields: [ "RemainingCapacity" ]
  8800.                         },
  8801.                         format: function(_ref29) {
  8802.                             return _ref29.RemainingCapacity + " mWh";
  8803.                         }
  8804.                     }, {
  8805.                         name: "Battery Voltage",
  8806.                         wmi: {
  8807.                             source: "ROOT\\wmi:BatteryStatus",
  8808.                             fields: [ "Voltage" ]
  8809.                         },
  8810.                         format: function(_ref30) {
  8811.                             var Voltage = _ref30.Voltage;
  8812.                             return parseInt(Voltage, 10) / 1e3 + " V";
  8813.                         }
  8814.                     }, {
  8815.                         name: "Power State",
  8816.                         wmi: {
  8817.                             source: "ROOT\\wmi:BatteryStatus",
  8818.                             fields: [ "PowerOnline", "Charging", "Discharging" ]
  8819.                         },
  8820.                         format: function(_ref31) {
  8821.                             var PowerOnline = _ref31.PowerOnline, Charging = _ref31.Charging, Discharging = _ref31.Discharging, res = [];
  8822.                             if (PowerOnline) res.push("AC Line");
  8823.                             if (Charging) res.push("Charging");
  8824.                             if (Discharging) res.push("Discharging");
  8825.                             return res.join(", ");
  8826.                         }
  8827.                     } ]
  8828.                 } ]
  8829.             }
  8830.         },
  8831.         "Operating System": {
  8832.             "Operating System": {
  8833.                 type: "object",
  8834.                 targets: [ "diagnostics", "dashboard" ],
  8835.                 groups: [ {
  8836.                     name: "Operating System Properties",
  8837.                     fields: [ {
  8838.                         name: "OS Name",
  8839.                         wmi: {
  8840.                             source: "Win32_OperatingSystem",
  8841.                             fields: [ "Caption" ]
  8842.                         }
  8843.                     }, {
  8844.                         name: "OS Language",
  8845.                         wmi: {
  8846.                             source: "Win32_OperatingSystem",
  8847.                             fields: [ "MUILanguages" ]
  8848.                         },
  8849.                         format: function(_ref32) {
  8850.                             return _ref32.MUILanguages.join(",");
  8851.                         }
  8852.                     }, {
  8853.                         name: "OS Kernel Type",
  8854.                         wmi: {
  8855.                             source: "Win32_OperatingSystem",
  8856.                             fields: [ "BuildType", "OSArchitecture" ]
  8857.                         },
  8858.                         format: function(_ref33) {
  8859.                             return _ref33.BuildType + " (" + _ref33.OSArchitecture + ")";
  8860.                         }
  8861.                     }, {
  8862.                         name: "OS Version",
  8863.                         wmi: {
  8864.                             source: "Win32_OperatingSystem",
  8865.                             fields: [ "Version" ]
  8866.                         }
  8867.                     }, {
  8868.                         name: "OS Service Pack",
  8869.                         wmi: {
  8870.                             source: "Win32_OperatingSystem",
  8871.                             fields: [ "CSDVersion" ]
  8872.                         }
  8873.                     }, {
  8874.                         name: "OS Installation Date",
  8875.                         wmi: {
  8876.                             source: "Win32_OperatingSystem",
  8877.                             fields: [ "InstallDate" ]
  8878.                         },
  8879.                         format: function(_ref34) {
  8880.                             var InstallDate = _ref34.InstallDate;
  8881.                             return parseWinDate(InstallDate).toString();
  8882.                         }
  8883.                     }, {
  8884.                         name: "OS Root",
  8885.                         wmi: {
  8886.                             source: "Win32_OperatingSystem",
  8887.                             fields: [ "WindowsDirectory" ]
  8888.                         }
  8889.                     } ]
  8890.                 }, {
  8891.                     name: "License Information",
  8892.                     fields: [ {
  8893.                         name: "Registered Owner",
  8894.                         wmi: {
  8895.                             source: "Win32_OperatingSystem",
  8896.                             fields: [ "RegisteredUser" ]
  8897.                         }
  8898.                     }, {
  8899.                         name: "Registered Organization",
  8900.                         wmi: {
  8901.                             source: "Win32_OperatingSystem",
  8902.                             fields: [ "Organization" ]
  8903.                         }
  8904.                     }, {
  8905.                         name: "Product ID",
  8906.                         wmi: {
  8907.                             source: "Win32_OperatingSystem",
  8908.                             fields: [ "SerialNumber" ]
  8909.                         }
  8910.                     } ]
  8911.                 }, {
  8912.                     name: "Current Session",
  8913.                     fields: [ {
  8914.                         name: "Computer Name",
  8915.                         wmi: {
  8916.                             source: "Win32_OperatingSystem",
  8917.                             fields: [ "CSName" ]
  8918.                         }
  8919.                     }, {
  8920.                         name: "User Name",
  8921.                         wmi: {
  8922.                             source: "Win32_ComputerSystem",
  8923.                             fields: [ "UserName" ]
  8924.                         }
  8925.                     }, {
  8926.                         name: "Logon Domain",
  8927.                         wmi: {
  8928.                             source: "Win32_ComputerSystem",
  8929.                             fields: [ "Domain" ]
  8930.                         }
  8931.                     }, {
  8932.                         name: "UpTime",
  8933.                         targets: [ "temporary" ],
  8934.                         wmi: {
  8935.                             source: "Win32_OperatingSystem",
  8936.                             fields: [ "LastBootUpTime", "LocalDateTime" ]
  8937.                         },
  8938.                         format: function(_ref35) {
  8939.                             var LastBootUpTime = _ref35.LastBootUpTime, LocalDateTime = _ref35.LocalDateTime, total = Math.ceil((parseWinDate(LocalDateTime) - parseWinDate(LastBootUpTime)) / 1e3), days = Math.floor(total / 86400), hours = Math.floor((total - 86400 * days) / 3600), minutes = Math.floor((total - 86400 * days - 3600 * hours) / 60);
  8940.                             return total + " sec (" + days + " d, " + hours + " h, " + minutes + " m, " + (total - 86400 * days - 3600 * hours - 60 * minutes) + " s)";
  8941.                         }
  8942.                     }, {
  8943.                         name: "Last Reboot Reason",
  8944.                         wmi: {
  8945.                             source: 'Win32_NTLogEvent WHERE Logfile = "System" AND (EventCode = 1074 OR EventCode = 1001 OR EventCode = 6008)',
  8946.                             fields: [ "EventCode", "Message" ]
  8947.                         },
  8948.                         format: function(_ref36) {
  8949.                             var EventCode = _ref36.EventCode, Message = _ref36.Message;
  8950.                             switch (EventCode) {
  8951.                               case 1074:
  8952.                                 return "CORRECT: " + Message;
  8953.  
  8954.                               case 6008:
  8955.                                 return "UNEXPECTED: " + Message;
  8956.  
  8957.                               case 1001:
  8958.                                 return "BSOD: " + Message;
  8959.  
  8960.                               default:
  8961.                                 return "UNKNOWN: " + Message;
  8962.                             }
  8963.                         }
  8964.                     } ]
  8965.                 }, {
  8966.                     name: "Last Boot Speed",
  8967.                     fields: [ {
  8968.                         name: "Type",
  8969.                         wmi: {
  8970.                             source: 'Win32_NTLogEvent WHERE Logfile = "Microsoft-Windows-Diagnostics-Performance/Operational" AND EventCode = 100',
  8971.                             fields: [ "Type" ]
  8972.                         }
  8973.                     }, {
  8974.                         name: "Boot Time",
  8975.                         wmi: {
  8976.                             source: 'Win32_NTLogEvent WHERE Logfile = "Microsoft-Windows-Diagnostics-Performance/Operational" AND EventCode = 100',
  8977.                             fields: [ "InsertionStrings" ]
  8978.                         },
  8979.                         format: function(_ref37) {
  8980.                             return _ref37.InsertionStrings[5];
  8981.                         }
  8982.                     }, {
  8983.                         name: "Boot User Profile Processing Time",
  8984.                         wmi: {
  8985.                             source: 'Win32_NTLogEvent WHERE Logfile = "Microsoft-Windows-Diagnostics-Performance/Operational" AND EventCode = 100',
  8986.                             fields: [ "InsertionStrings" ]
  8987.                         },
  8988.                         format: function(_ref38) {
  8989.                             return _ref38.InsertionStrings[15];
  8990.                         }
  8991.                     }, {
  8992.                         name: "Boot Post Boot Time",
  8993.                         wmi: {
  8994.                             source: 'Win32_NTLogEvent WHERE Logfile = "Microsoft-Windows-Diagnostics-Performance/Operational" AND EventCode = 100',
  8995.                             fields: [ "InsertionStrings" ]
  8996.                         },
  8997.                         format: function(_ref39) {
  8998.                             return _ref39.InsertionStrings[19];
  8999.                         }
  9000.                     }, {
  9001.                         name: "Main Path Boot Time",
  9002.                         wmi: {
  9003.                             source: 'Win32_NTLogEvent WHERE Logfile = "Microsoft-Windows-Diagnostics-Performance/Operational" AND EventCode = 100',
  9004.                             fields: [ "InsertionStrings" ]
  9005.                         },
  9006.                         format: function(_ref40) {
  9007.                             return _ref40.InsertionStrings[6];
  9008.                         }
  9009.                     }, {
  9010.                         name: "Boot Num Startup Apps",
  9011.                         wmi: {
  9012.                             source: 'Win32_NTLogEvent WHERE Logfile = "Microsoft-Windows-Diagnostics-Performance/Operational" AND EventCode = 100',
  9013.                             fields: [ "InsertionStrings" ]
  9014.                         },
  9015.                         format: function(_ref41) {
  9016.                             return _ref41.InsertionStrings[18];
  9017.                         }
  9018.                     } ]
  9019.                 } ]
  9020.             },
  9021.             Processes: {
  9022.                 type: "array",
  9023.                 targets: [],
  9024.                 wmi: {
  9025.                     source: "Win32_Process",
  9026.                     fields: [ {
  9027.                         name: "Process Name",
  9028.                         field: "Caption"
  9029.                     }, {
  9030.                         name: "Process File Name",
  9031.                         field: "ExecutablePath"
  9032.                     }, {
  9033.                         name: "Used Memory",
  9034.                         field: "WorkingSetSize",
  9035.                         format: function(v) {
  9036.                             return Math.ceil(parseFloat(v) / 1024) + " KB";
  9037.                         }
  9038.                     }, {
  9039.                         name: "Used Swap",
  9040.                         field: "VirtualSize",
  9041.                         format: function(v) {
  9042.                             return Math.ceil(parseFloat(v) / 1024) + " KB";
  9043.                         }
  9044.                     } ]
  9045.                 }
  9046.             },
  9047.             Services: {
  9048.                 type: "array",
  9049.                 targets: [],
  9050.                 wmi: {
  9051.                     source: "Win32_Service",
  9052.                     fields: [ {
  9053.                         name: "Service Name",
  9054.                         field: "Name"
  9055.                     }, {
  9056.                         name: "Service Description",
  9057.                         field: "Description"
  9058.                     }, {
  9059.                         name: "Path Name",
  9060.                         field: "PathName"
  9061.                     }, {
  9062.                         name: "Type",
  9063.                         field: "ServiceType"
  9064.                     }, {
  9065.                         name: "State",
  9066.                         field: "State"
  9067.                     }, {
  9068.                         name: "Account",
  9069.                         field: "StartName"
  9070.                     } ]
  9071.                 }
  9072.             },
  9073.             UpTime: {
  9074.                 type: "object",
  9075.                 targets: [ "diagnostics", "dashboard" ],
  9076.                 groups: [ {
  9077.                     name: "Current Session",
  9078.                     fields: [ {
  9079.                         name: "Last Boot Time",
  9080.                         wmi: {
  9081.                             source: "Win32_OperatingSystem",
  9082.                             fields: [ "LastBootUpTime" ]
  9083.                         },
  9084.                         format: function(_ref42) {
  9085.                             var LastBootUpTime = _ref42.LastBootUpTime;
  9086.                             return parseWinDate(LastBootUpTime).toString();
  9087.                         }
  9088.                     }, {
  9089.                         name: "Current Time",
  9090.                         targets: [ "temporary" ],
  9091.                         wmi: {
  9092.                             source: "Win32_OperatingSystem",
  9093.                             fields: [ "LocalDateTime" ]
  9094.                         },
  9095.                         format: function(_ref43) {
  9096.                             var LocalDateTime = _ref43.LocalDateTime;
  9097.                             return parseWinDate(LocalDateTime).toString();
  9098.                         }
  9099.                     }, {
  9100.                         name: "UpTime",
  9101.                         targets: [ "temporary" ],
  9102.                         wmi: {
  9103.                             source: "Win32_OperatingSystem",
  9104.                             fields: [ "LastBootUpTime", "LocalDateTime" ]
  9105.                         },
  9106.                         format: function(_ref44) {
  9107.                             var LastBootUpTime = _ref44.LastBootUpTime, LocalDateTime = _ref44.LocalDateTime, total = Math.ceil((parseWinDate(LocalDateTime) - parseWinDate(LastBootUpTime)) / 1e3), days = Math.floor(total / 86400), hours = Math.floor((total - 86400 * days) / 3600), minutes = Math.floor((total - 86400 * days - 3600 * hours) / 60);
  9108.                             return total + " sec (" + days + " d, " + hours + " h, " + minutes + " m, " + (total - 86400 * days - 3600 * hours - 60 * minutes) + " s)";
  9109.                         }
  9110.                     } ]
  9111.                 } ]
  9112.             },
  9113.             "Weekly Errors": {
  9114.                 type: "array",
  9115.                 targets: [ "dashboard" ],
  9116.                 wmi: {
  9117.                     source: 'Win32_NTLogEvent WHERE (Type = "Critical" OR Type = "Критический") AND TimeGenerated > "' + convertToWinDate(new Date(Date.now() - 6048e5)) + '"',
  9118.                     fields: [ {
  9119.                         name: "Level",
  9120.                         field: "LogFile"
  9121.                     }, {
  9122.                         name: "Source",
  9123.                         field: "SourceName"
  9124.                     }, {
  9125.                         name: "Code",
  9126.                         field: "EventCode"
  9127.                     }, {
  9128.                         name: "Message",
  9129.                         field: "Message"
  9130.                     } ]
  9131.                 },
  9132.                 format: function(events) {
  9133.                     var res = {};
  9134.                     events.forEach(function(_ref45) {
  9135.                         var Level = _ref45.Level, Source = _ref45.Source, Code = _ref45.Code, Message = _ref45.Message, id = [ Level, Source, Code ].join(":");
  9136.                         if (res[id]) res[id].Count += 1; else res[id] = {
  9137.                             Level: Level,
  9138.                             Source: Source,
  9139.                             Code: Code,
  9140.                             Message: Message,
  9141.                             Count: 1
  9142.                         };
  9143.                     });
  9144.                     return Object.values(res);
  9145.                 }
  9146.             },
  9147.             "Daily Errors": {
  9148.                 type: "array",
  9149.                 targets: [ "dashboard" ],
  9150.                 wmi: {
  9151.                     source: 'Win32_NTLogEvent WHERE (Type = "Critical" OR Type = "Критический" OR Type = "Error" OR Type = "Ошибка") AND TimeGenerated > "' + convertToWinDate(new Date(Date.now() - 864e5)) + '"',
  9152.                     fields: [ {
  9153.                         name: "Type",
  9154.                         field: "Type"
  9155.                     }, {
  9156.                         name: "Level",
  9157.                         field: "LogFile"
  9158.                     }, {
  9159.                         name: "Source",
  9160.                         field: "SourceName"
  9161.                     }, {
  9162.                         name: "Code",
  9163.                         field: "EventCode"
  9164.                     }, {
  9165.                         name: "Message",
  9166.                         field: "Message"
  9167.                     } ]
  9168.                 },
  9169.                 format: function(events) {
  9170.                     var res = {};
  9171.                     events.forEach(function(_ref46) {
  9172.                         var Type = _ref46.Type, Level = _ref46.Level, Source = _ref46.Source, Code = _ref46.Code, Message = _ref46.Message, id = [ Type, Level, Source, Code ].join(":");
  9173.                         if (res[id]) res[id].Count += 1; else res[id] = {
  9174.                             Type: Type,
  9175.                             Level: Level,
  9176.                             Source: Source,
  9177.                             Code: Code,
  9178.                             Message: Message,
  9179.                             Count: 1
  9180.                         };
  9181.                     });
  9182.                     return Object.values(res);
  9183.                 }
  9184.             }
  9185.         },
  9186.         Display: {
  9187.             "Windows Video": {
  9188.                 type: "array",
  9189.                 targets: [ "diagnostics", "dashboard" ],
  9190.                 wmi: {
  9191.                     source: "Win32_VideoController",
  9192.                     fields: [ {
  9193.                         name: "Description",
  9194.                         field: "Description"
  9195.                     }, {
  9196.                         name: "Memory Size",
  9197.                         field: "AdapterRAM",
  9198.                         format: function(v) {
  9199.                             if (v >= 0) return Math.ceil(parseFloat(v) / 1024 / 1024) + " MB"; else return null;
  9200.                         }
  9201.                     }, {
  9202.                         name: "Video Mode",
  9203.                         field: "VideoModeDescription"
  9204.                     }, {
  9205.                         name: "Driver Name",
  9206.                         field: "infSection"
  9207.                     }, {
  9208.                         name: "Driver Version",
  9209.                         field: "DriverVersion"
  9210.                     }, {
  9211.                         name: "Driver Date",
  9212.                         field: "DriverDate",
  9213.                         format: function(v) {
  9214.                             return parseWinDate(v).toString();
  9215.                         }
  9216.                     }, {
  9217.                         name: "Status",
  9218.                         field: "Status"
  9219.                     } ]
  9220.                 }
  9221.             },
  9222.             Monitor: {
  9223.                 type: "array",
  9224.                 targets: [ "diagnostics", "dashboard" ],
  9225.                 wmi: {
  9226.                     source: "Win32_DesktopMonitor",
  9227.                     fields: [ {
  9228.                         name: "Monitor Name",
  9229.                         field: "Description"
  9230.                     }, {
  9231.                         name: "Monitor ID",
  9232.                         field: "DeviceID"
  9233.                     }, {
  9234.                         name: "Manufacturer",
  9235.                         field: "MonitorManufacturer"
  9236.                     }, {
  9237.                         name: "Monitor Type",
  9238.                         field: "MonitorType"
  9239.                     }, {
  9240.                         name: "Status",
  9241.                         field: "Status"
  9242.                     }, {
  9243.                         name: "Screen Height",
  9244.                         field: "ScreenHeight"
  9245.                     }, {
  9246.                         name: "Screen Width",
  9247.                         field: "ScreenWidth"
  9248.                     } ]
  9249.                 }
  9250.             }
  9251.         },
  9252.         Multimedia: {
  9253.             "Windows Audio": {
  9254.                 type: "array",
  9255.                 targets: [ "diagnostics", "dashboard" ],
  9256.                 wmi: {
  9257.                     source: "Win32_SoundDevice",
  9258.                     fields: [ {
  9259.                         name: "Description",
  9260.                         field: "Description"
  9261.                     }, {
  9262.                         name: "Manufacturer",
  9263.                         field: "Manufacturer"
  9264.                     }, {
  9265.                         name: "Status",
  9266.                         field: "Status"
  9267.                     } ]
  9268.                 }
  9269.             }
  9270.         },
  9271.         Software: {
  9272.             "Installed Software": {
  9273.                 type: "array",
  9274.                 targets: [ "soft" ],
  9275.                 reg: {
  9276.                     source: _os.is64 ? [ "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\", "HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\", "HKLM64\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\", "HKCU64\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" ] : [ "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\", "HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" ],
  9277.                     fields: [ {
  9278.                         name: "Program",
  9279.                         field: "DisplayName"
  9280.                     }, {
  9281.                         name: "Version",
  9282.                         field: "DisplayVersion"
  9283.                     }, {
  9284.                         name: "Publisher",
  9285.                         field: "Publisher"
  9286.                     }, {
  9287.                         name: "Install Date",
  9288.                         field: "InstallDate"
  9289.                     }, {
  9290.                         name: "Location",
  9291.                         field: "InstallLocation"
  9292.                     }, {
  9293.                         name: "Icon",
  9294.                         field: "DisplayIcon"
  9295.                     }, {
  9296.                         name: "Uninstaller",
  9297.                         field: "UninstallString"
  9298.                     }, {
  9299.                         name: "Registry Path",
  9300.                         field: "RegPath"
  9301.                     } ],
  9302.                     filter: function(_ref47) {
  9303.                         return _ref47.Program;
  9304.                     }
  9305.                 }
  9306.             }
  9307.         },
  9308.         Security: {
  9309.             "Windows Security": {
  9310.                 type: "object",
  9311.                 targets: [ "diagnostics", "dashboard" ],
  9312.                 groups: [ {
  9313.                     name: "Operating System Properties",
  9314.                     fields: [ {
  9315.                         name: "OS Name",
  9316.                         wmi: {
  9317.                             source: "Win32_OperatingSystem",
  9318.                             fields: [ "Caption" ]
  9319.                         }
  9320.                     }, {
  9321.                         name: "OS Service Pack",
  9322.                         wmi: {
  9323.                             source: "Win32_OperatingSystem",
  9324.                             fields: [ "CSDVersion" ]
  9325.                         }
  9326.                     }, {
  9327.                         name: "Winlogon Shell",
  9328.                         reg: {
  9329.                             source: "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Shell"
  9330.                         }
  9331.                     }, {
  9332.                         name: "User Account Control (UAC)",
  9333.                         targets: [ "temporary" ],
  9334.                         reg: {
  9335.                             source: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\EnableLUA"
  9336.                         },
  9337.                         format: function(v) {
  9338.                             if (0 === v) return "Disabled";
  9339.                             if (1 === v) return "Enabled"; else return "";
  9340.                         }
  9341.                     }, {
  9342.                         name: "System Restore",
  9343.                         targets: [ "temporary" ],
  9344.                         reg: {
  9345.                             source: _os.OSVersion < 6 ? "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\\DisableSR" : "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\\RPSessionInterval"
  9346.                         },
  9347.                         format: function(v) {
  9348.                             if (_os.OSVersion < 6) return v ? "Disabled" : "Enabled"; else return v ? "Enabled" : "Disabled";
  9349.                         }
  9350.                     } ]
  9351.                 } ]
  9352.             },
  9353.             "Anti-Virus": {
  9354.                 type: "array",
  9355.                 targets: [ "diagnostics", "dashboard", "temporary" ],
  9356.                 wmi: {
  9357.                     source: _os.OSVersion < 6 ? "ROOT\\SecurityCenter:AntiVirusProduct" : "ROOT\\SecurityCenter2:AntiVirusProduct",
  9358.                     fields: [ {
  9359.                         name: "Name",
  9360.                         field: "displayName"
  9361.                     }, {
  9362.                         name: "Active",
  9363.                         field: _os.OSVersion < 6 ? "onAccessScanningEnabled" : "productState",
  9364.                         format: function(v) {
  9365.                             if (_os.OSVersion < 6) return "false" !== v;
  9366.                             var state = parseInt(v, 10).toString(16);
  9367.                             state = state.substring(state.length - 4, state.length - 2);
  9368.                             return "10" === state || "11" === state ? "Yes" : "No";
  9369.                         }
  9370.                     }, {
  9371.                         name: "UpToDate",
  9372.                         field: _os.OSVersion < 6 ? "productUptoDate" : "productState",
  9373.                         format: function(v) {
  9374.                             if (_os.OSVersion < 6) return "false" !== v;
  9375.                             var state = parseInt(v, 10).toString(16);
  9376.                             state = state.substring(state.length - 2, state.length);
  9377.                             return "00" === state ? "Yes" : "No";
  9378.                         }
  9379.                     } ]
  9380.                 }
  9381.             },
  9382.             Firewall: {
  9383.                 type: "array",
  9384.                 targets: [ "diagnostics", "dashboard", "temporary" ],
  9385.                 wmi: {
  9386.                     source: _os.OSVersion < 6 ? "ROOT\\SecurityCenter:FirewallProduct" : "ROOT\\SecurityCenter2:FirewallProduct",
  9387.                     fields: [ {
  9388.                         name: "Name",
  9389.                         field: "displayName"
  9390.                     }, {
  9391.                         name: "Active",
  9392.                         field: _os.OSVersion < 6 ? "enabled" : "productState",
  9393.                         format: function(v) {
  9394.                             if (_os.OSVersion < 6) return "false" !== v;
  9395.                             var state = parseInt(v, 10).toString(16);
  9396.                             state = state.substring(state.length - 4, state.length - 2);
  9397.                             return "10" === state || "11" === state ? "Yes" : "No";
  9398.                         }
  9399.                     } ]
  9400.                 }
  9401.             },
  9402.             "Anti-Spyware": {
  9403.                 type: "array",
  9404.                 targets: [ "diagnostics", "dashboard", "temporary" ],
  9405.                 wmi: {
  9406.                     source: _os.OSVersion < 6 ? "ROOT\\SecurityCenter:AntiSpywareProduct" : "ROOT\\SecurityCenter2:AntiSpywareProduct",
  9407.                     fields: [ {
  9408.                         name: "Name",
  9409.                         field: "displayName"
  9410.                     }, {
  9411.                         name: "Active",
  9412.                         field: _os.OSVersion < 6 ? "productEnabled" : "productState",
  9413.                         format: function(v) {
  9414.                             if (_os.OSVersion < 6) return "false" !== v;
  9415.                             var state = parseInt(v, 10).toString(16);
  9416.                             state = state.substring(state.length - 4, state.length - 2);
  9417.                             return "10" === state || "11" === state ? "Yes" : "No";
  9418.                         }
  9419.                     }, {
  9420.                         name: "UpToDate",
  9421.                         field: _os.OSVersion < 6 ? "productUptoDate" : "productState",
  9422.                         format: function(v) {
  9423.                             if (_os.OSVersion < 6) return "false" !== v;
  9424.                             var state = parseInt(v, 10).toString(16);
  9425.                             state = state.substring(state.length - 2, state.length);
  9426.                             return "00" === state ? "Yes" : "No";
  9427.                         }
  9428.                     } ]
  9429.                 }
  9430.             }
  9431.         }
  9432.     };
  9433.     module.exports = exports["default"];
  9434. }, function(module, exports, __webpack_require__) {
  9435.     "use strict";
  9436.     exports.__esModule = !0;
  9437.     var _wmi = __webpack_require__(16), _trimVendorName = __webpack_require__(64), _trimVendorName2 = function(obj) {
  9438.         return obj && obj.__esModule ? obj : {
  9439.             "default": obj
  9440.         };
  9441.     }(_trimVendorName);
  9442.     exports["default"] = function(_ref) {
  9443.         var _ref$Vendor = _ref.Vendor, Vendor = _ref$Vendor === undefined ? "Noname" : _ref$Vendor, _ref$Name = _ref.Name, Name = _ref$Name === undefined ? "Unknown" : _ref$Name, chassis = (0,
  9444.         _wmi.getWMIObjects)([ "ChassisTypes" ], "Win32_SystemEnclosure"), type = void 0;
  9445.         if (!(chassis && chassis[0] && chassis[0].ChassisTypes && chassis[0].ChassisTypes[0])) type = "Other"; else switch (chassis[0].ChassisTypes[0]) {
  9446.           case 3:
  9447.           case 4:
  9448.           case 5:
  9449.           case 6:
  9450.           case 7:
  9451.           case 13:
  9452.           case 15:
  9453.           case 16:
  9454.             type = "Desktop";
  9455.             break;
  9456.  
  9457.           case 8:
  9458.           case 9:
  9459.           case 10:
  9460.           case 11:
  9461.           case 14:
  9462.             return "Notebook";
  9463.  
  9464.           default:
  9465.             type = "Other";
  9466.         }
  9467.         if ([ /virtualbox/i, /vmware/i ].some(function(reg) {
  9468.             return reg.test(Name);
  9469.         })) return type;
  9470.         if (0 === (0, _wmi.getWMIObjects)([ "Name" ], "Win32_Battery").length) return type;
  9471.         if ("Other" === type) return "Notebook";
  9472.         if ("Desktop" === type && "micro-star" === (0, _trimVendorName2["default"])(Vendor)) return "Notebook"; else return type;
  9473.     };
  9474.     module.exports = exports["default"];
  9475. }, function(module, exports, __webpack_require__) {
  9476.     "use strict";
  9477.     function _classCallCheck(instance, Constructor) {
  9478.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  9479.     }
  9480.     exports.__esModule = !0;
  9481.     var _wmi = __webpack_require__(16), Registry = function() {
  9482.         function Registry(is64) {
  9483.             _classCallCheck(this, Registry);
  9484.             this.is64 = is64;
  9485.             this.HKCR = 2147483648;
  9486.             this.HKCU = 2147483649;
  9487.             this.HKLM = 2147483650;
  9488.             this.HKUS = 2147483651;
  9489.             this.HKCC = 2147483653;
  9490.             this.REG_SZ = 1;
  9491.             this.REG_EXPAND_SZ = 2;
  9492.             this.REG_BINARY = 3;
  9493.             this.REG_DWORD = 4;
  9494.             this.REG_MULTI_SZ = 7;
  9495.             this.connect(is64);
  9496.         }
  9497.         Registry.prototype.connect = function() {
  9498.             var context = this.is64 ? {
  9499.                 __ProviderArchitecture: 64,
  9500.                 __RequiredArchitecture: !0
  9501.             } : null;
  9502.             this.stdregprov = (0, _wmi.ConnectServer)("root\\default", context).Get("StdRegProv");
  9503.         };
  9504.         Registry.prototype._exec = function(methodName, hkey, key, valueName) {
  9505.             var inParameters = this.stdregprov.Methods_.Item(methodName).InParameters.SpawnInstance_();
  9506.             inParameters.hDefKey = hkey;
  9507.             inParameters.sSubKeyName = key;
  9508.             if (valueName) inParameters.sValueName = valueName;
  9509.             return this.stdregprov.ExecMethod_(methodName, inParameters);
  9510.         };
  9511.         Registry.prototype.exec = function() {
  9512.             try {
  9513.                 return this._exec.apply(this, arguments);
  9514.             } catch (err) {
  9515.                 this.connect();
  9516.                 return this._exec.apply(this, arguments);
  9517.             }
  9518.         };
  9519.         Registry.prototype.EnumKey = function(hkey, key) {
  9520.             var outParameters = this.exec("EnumKey", hkey, key), names = [];
  9521.             if (null != outParameters.sNames && outParameters.sNames.toArray) names = outParameters.sNames.toArray();
  9522.             return names;
  9523.         };
  9524.         Registry.prototype.EnumValues = function(hkey, key) {
  9525.             var outParameters = this.exec("EnumValues", hkey, key), valueNames = [];
  9526.             if (null != outParameters.sNames && outParameters.sNames.toArray) valueNames = outParameters.sNames.toArray();
  9527.             var valueTypes = [];
  9528.             if (null != outParameters.sNames && outParameters.Types.toArray) valueTypes = outParameters.Types.toArray();
  9529.             return {
  9530.                 Names: valueNames,
  9531.                 Types: valueTypes
  9532.             };
  9533.         };
  9534.         Registry.prototype.GetStringValue = function(hkey, key, name) {
  9535.             return this.exec("GetStringValue", hkey, key, name).sValue;
  9536.         };
  9537.         Registry.prototype.GetExpandedStringValue = function(hkey, key, name) {
  9538.             return this.exec("GetExpandedStringValue", hkey, key, name).sValue;
  9539.         };
  9540.         Registry.prototype.GetDWORDValue = function(hkey, key, name) {
  9541.             return this.exec("GetDWORDValue", hkey, key, name).uValue;
  9542.         };
  9543.         return Registry;
  9544.     }();
  9545.     exports["default"] = Registry;
  9546.     module.exports = exports["default"];
  9547. }, function(module, exports, __webpack_require__) {
  9548.     "use strict";
  9549.     var toObject = __webpack_require__(25), toIndex = __webpack_require__(73), toLength = __webpack_require__(21);
  9550.     module.exports = function(value) {
  9551.         for (var O = toObject(this), length = toLength(O.length), aLen = arguments.length, index = toIndex(aLen > 1 ? arguments[1] : undefined, length), end = aLen > 2 ? arguments[2] : undefined, endPos = end === undefined ? length : toIndex(end, length); endPos > index; ) O[index++] = value;
  9552.         return O;
  9553.     };
  9554. }, function(module, exports, __webpack_require__) {
  9555.     var isObject = __webpack_require__(10), isArray = __webpack_require__(132), SPECIES = __webpack_require__(7)("species");
  9556.     module.exports = function(original) {
  9557.         var C;
  9558.         if (isArray(original)) {
  9559.             C = original.constructor;
  9560.             if ("function" == typeof C && (C === Array || isArray(C.prototype))) C = undefined;
  9561.             if (isObject(C)) {
  9562.                 C = C[SPECIES];
  9563.                 if (null === C) C = undefined;
  9564.             }
  9565.         }
  9566.         return C === undefined ? Array : C;
  9567.     };
  9568. }, function(module, exports, __webpack_require__) {
  9569.     var speciesConstructor = __webpack_require__(189);
  9570.     module.exports = function(original, length) {
  9571.         return new (speciesConstructor(original))(length);
  9572.     };
  9573. }, function(module, exports, __webpack_require__) {
  9574.     "use strict";
  9575.     var $defineProperty = __webpack_require__(17), createDesc = __webpack_require__(48);
  9576.     module.exports = function(object, index, value) {
  9577.         if (index in object) $defineProperty.f(object, index, createDesc(0, value)); else object[index] = value;
  9578.     };
  9579. }, function(module, exports, __webpack_require__) {
  9580.     var isObject = __webpack_require__(10), setPrototypeOf = __webpack_require__(198).set;
  9581.     module.exports = function(that, target, C) {
  9582.         var P, S = target.constructor;
  9583.         if (S !== C && "function" == typeof S && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) setPrototypeOf(that, P);
  9584.         return that;
  9585.     };
  9586. }, function(module, exports, __webpack_require__) {
  9587.     "use strict";
  9588.     var create = __webpack_require__(93), descriptor = __webpack_require__(48), setToStringTag = __webpack_require__(83), IteratorPrototype = {};
  9589.     __webpack_require__(28)(IteratorPrototype, __webpack_require__(7)("iterator"), function() {
  9590.         return this;
  9591.     });
  9592.     module.exports = function(Constructor, NAME, next) {
  9593.         Constructor.prototype = create(IteratorPrototype, {
  9594.             next: descriptor(1, next)
  9595.         });
  9596.         setToStringTag(Constructor, NAME + " Iterator");
  9597.     };
  9598. }, function(module, exports, __webpack_require__) {
  9599.     "use strict";
  9600.     var LIBRARY = __webpack_require__(69), $export = __webpack_require__(0), redefine = __webpack_require__(34), hide = __webpack_require__(28), has = __webpack_require__(27), Iterators = __webpack_require__(68), $iterCreate = __webpack_require__(193), setToStringTag = __webpack_require__(83), getPrototypeOf = __webpack_require__(71), ITERATOR = __webpack_require__(7)("iterator"), BUGGY = !([].keys && "next" in [].keys()), returnThis = function() {
  9601.         return this;
  9602.     };
  9603.     module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  9604.         $iterCreate(Constructor, NAME, next);
  9605.         var methods, key, IteratorPrototype, getMethod = function(kind) {
  9606.             if (!BUGGY && kind in proto) return proto[kind];
  9607.             switch (kind) {
  9608.               case "keys":
  9609.               case "values":
  9610.                 return function() {
  9611.                     return new Constructor(this, kind);
  9612.                 };
  9613.             }
  9614.             return function() {
  9615.                 return new Constructor(this, kind);
  9616.             };
  9617.         }, TAG = NAME + " Iterator", DEF_VALUES = "values" == DEFAULT, VALUES_BUG = !1, proto = Base.prototype, $native = proto[ITERATOR] || proto["@@iterator"] || DEFAULT && proto[DEFAULT], $default = $native || getMethod(DEFAULT), $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod("entries") : undefined, $anyNative = "Array" == NAME ? proto.entries || $native : $native;
  9618.         if ($anyNative) {
  9619.             IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
  9620.             if (IteratorPrototype !== Object.prototype) {
  9621.                 setToStringTag(IteratorPrototype, TAG, !0);
  9622.                 if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);
  9623.             }
  9624.         }
  9625.         if (DEF_VALUES && $native && "values" !== $native.name) {
  9626.             VALUES_BUG = !0;
  9627.             $default = function() {
  9628.                 return $native.call(this);
  9629.             };
  9630.         }
  9631.         if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) hide(proto, ITERATOR, $default);
  9632.         Iterators[NAME] = $default;
  9633.         Iterators[TAG] = returnThis;
  9634.         if (DEFAULT) {
  9635.             methods = {
  9636.                 values: DEF_VALUES ? $default : getMethod("values"),
  9637.                 keys: IS_SET ? $default : getMethod("keys"),
  9638.                 entries: $entries
  9639.             };
  9640.             if (FORCED) {
  9641.                 for (key in methods) if (!(key in proto)) redefine(proto, key, methods[key]);
  9642.             } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  9643.         }
  9644.         return methods;
  9645.     };
  9646. }, function(module, exports) {
  9647.     var $expm1 = Math.expm1;
  9648.     module.exports = !$expm1 || $expm1(10) > 22025.465794806718 || $expm1(10) < 22025.465794806718 || -2e-17 != $expm1(-2e-17) ? function(x) {
  9649.         return 0 == (x = +x) ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
  9650.     } : $expm1;
  9651. }, function(module, exports) {
  9652.     module.exports = Math.sign || function(x) {
  9653.         return 0 == (x = +x) || x != x ? x : x < 0 ? -1 : 1;
  9654.     };
  9655. }, function(module, exports, __webpack_require__) {
  9656.     "use strict";
  9657.     var getKeys = __webpack_require__(47), gOPS = __webpack_require__(110), pIE = __webpack_require__(72), toObject = __webpack_require__(25), IObject = __webpack_require__(67), $assign = Object.assign;
  9658.     module.exports = !$assign || __webpack_require__(8)(function() {
  9659.         var A = {}, B = {}, S = Symbol(), K = "abcdefghijklmnopqrst";
  9660.         A[S] = 7;
  9661.         K.split("").forEach(function(k) {
  9662.             B[k] = k;
  9663.         });
  9664.         return 7 != $assign({}, A)[S] || Object.keys($assign({}, B)).join("") != K;
  9665.     }) ? function(target, source) {
  9666.         for (var T = toObject(target), aLen = arguments.length, index = 1, getSymbols = gOPS.f, isEnum = pIE.f; aLen > index; ) for (var key, S = IObject(arguments[index++]), keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S), length = keys.length, j = 0; length > j; ) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
  9667.         return T;
  9668.     } : $assign;
  9669. }, function(module, exports, __webpack_require__) {
  9670.     var isObject = __webpack_require__(10), anObject = __webpack_require__(11), check = function(O, proto) {
  9671.         anObject(O);
  9672.         if (!isObject(proto) && null !== proto) throw TypeError(proto + ": can't set as prototype!");
  9673.     };
  9674.     module.exports = {
  9675.         set: Object.setPrototypeOf || ("__proto__" in {} ? function(test, buggy, set) {
  9676.             try {
  9677.                 set = __webpack_require__(32)(Function.call, __webpack_require__(37).f(Object.prototype, "__proto__").set, 2);
  9678.                 set(test, []);
  9679.                 buggy = !(test instanceof Array);
  9680.             } catch (e) {
  9681.                 buggy = !0;
  9682.             }
  9683.             return function(O, proto) {
  9684.                 check(O, proto);
  9685.                 if (buggy) O.__proto__ = proto; else set(O, proto);
  9686.                 return O;
  9687.             };
  9688.         }({}, !1) : undefined),
  9689.         check: check
  9690.     };
  9691. }, function(module, exports, __webpack_require__) {
  9692.     var toInteger = __webpack_require__(50), defined = __webpack_require__(33);
  9693.     module.exports = function(TO_STRING) {
  9694.         return function(that, pos) {
  9695.             var a, b, s = String(defined(that)), i = toInteger(pos), l = s.length;
  9696.             if (i < 0 || i >= l) return TO_STRING ? "" : undefined;
  9697.             a = s.charCodeAt(i);
  9698.             return a < 55296 || a > 56319 || i + 1 === l || (b = s.charCodeAt(i + 1)) < 56320 || b > 57343 ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : b - 56320 + (a - 55296 << 10) + 65536;
  9699.         };
  9700.     };
  9701. }, function(module, exports, __webpack_require__) {
  9702.     "use strict";
  9703.     var toInteger = __webpack_require__(50), defined = __webpack_require__(33);
  9704.     module.exports = function(count) {
  9705.         var str = String(defined(this)), res = "", n = toInteger(count);
  9706.         if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
  9707.         for (;n > 0; (n >>>= 1) && (str += str)) if (1 & n) res += str;
  9708.         return res;
  9709.     };
  9710. }, function(module, exports) {
  9711.     module.exports = "\t\n\x0B\f\r   ᠎              \u2028\u2029\ufeff";
  9712. }, function(module, exports, __webpack_require__) {
  9713.     "use strict";
  9714.     var global = __webpack_require__(2), DESCRIPTORS = __webpack_require__(12), LIBRARY = __webpack_require__(69), $typed = __webpack_require__(158), hide = __webpack_require__(28), redefineAll = __webpack_require__(94), fails = __webpack_require__(8), anInstance = __webpack_require__(91), toInteger = __webpack_require__(50), toLength = __webpack_require__(21), gOPN = __webpack_require__(70).f, dP = __webpack_require__(17).f, arrayFill = __webpack_require__(188), setToStringTag = __webpack_require__(83), $ArrayBuffer = global.ArrayBuffer, $DataView = global.DataView, Math = global.Math, RangeError = global.RangeError, Infinity = global.Infinity, BaseBuffer = $ArrayBuffer, abs = Math.abs, pow = Math.pow, floor = Math.floor, log = Math.log, LN2 = Math.LN2, $BUFFER = DESCRIPTORS ? "_b" : "buffer", $LENGTH = DESCRIPTORS ? "_l" : "byteLength", $OFFSET = DESCRIPTORS ? "_o" : "byteOffset", packIEEE754 = function(value, mLen, nBytes) {
  9715.         var e, m, c, buffer = Array(nBytes), eLen = 8 * nBytes - mLen - 1, eMax = (1 << eLen) - 1, eBias = eMax >> 1, rt = 23 === mLen ? pow(2, -24) - pow(2, -77) : 0, i = 0, s = value < 0 || 0 === value && 1 / value < 0 ? 1 : 0;
  9716.         value = abs(value);
  9717.         if (value != value || value === Infinity) {
  9718.             m = value != value ? 1 : 0;
  9719.             e = eMax;
  9720.         } else {
  9721.             e = floor(log(value) / LN2);
  9722.             if (value * (c = pow(2, -e)) < 1) {
  9723.                 e--;
  9724.                 c *= 2;
  9725.             }
  9726.             if (e + eBias >= 1) value += rt / c; else value += rt * pow(2, 1 - eBias);
  9727.             if (value * c >= 2) {
  9728.                 e++;
  9729.                 c /= 2;
  9730.             }
  9731.             if (e + eBias >= eMax) {
  9732.                 m = 0;
  9733.                 e = eMax;
  9734.             } else if (e + eBias >= 1) {
  9735.                 m = (value * c - 1) * pow(2, mLen);
  9736.                 e += eBias;
  9737.             } else {
  9738.                 m = value * pow(2, eBias - 1) * pow(2, mLen);
  9739.                 e = 0;
  9740.             }
  9741.         }
  9742.         for (;mLen >= 8; buffer[i++] = 255 & m, m /= 256, mLen -= 8) ;
  9743.         e = e << mLen | m;
  9744.         eLen += mLen;
  9745.         for (;eLen > 0; buffer[i++] = 255 & e, e /= 256, eLen -= 8) ;
  9746.         buffer[--i] |= 128 * s;
  9747.         return buffer;
  9748.     }, unpackIEEE754 = function(buffer, mLen, nBytes) {
  9749.         var m, eLen = 8 * nBytes - mLen - 1, eMax = (1 << eLen) - 1, eBias = eMax >> 1, nBits = eLen - 7, i = nBytes - 1, s = buffer[i--], e = 127 & s;
  9750.         s >>= 7;
  9751.         for (;nBits > 0; e = 256 * e + buffer[i], i--, nBits -= 8) ;
  9752.         m = e & (1 << -nBits) - 1;
  9753.         e >>= -nBits;
  9754.         nBits += mLen;
  9755.         for (;nBits > 0; m = 256 * m + buffer[i], i--, nBits -= 8) ;
  9756.         if (0 === e) e = 1 - eBias; else if (e === eMax) return m ? NaN : s ? -Infinity : Infinity; else {
  9757.             m += pow(2, mLen);
  9758.             e -= eBias;
  9759.         }
  9760.         return (s ? -1 : 1) * m * pow(2, e - mLen);
  9761.     }, unpackI32 = function(bytes) {
  9762.         return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
  9763.     }, packI8 = function(it) {
  9764.         return [ 255 & it ];
  9765.     }, packI16 = function(it) {
  9766.         return [ 255 & it, it >> 8 & 255 ];
  9767.     }, packI32 = function(it) {
  9768.         return [ 255 & it, it >> 8 & 255, it >> 16 & 255, it >> 24 & 255 ];
  9769.     }, packF64 = function(it) {
  9770.         return packIEEE754(it, 52, 8);
  9771.     }, packF32 = function(it) {
  9772.         return packIEEE754(it, 23, 4);
  9773.     }, addGetter = function(C, key, internal) {
  9774.         dP(C.prototype, key, {
  9775.             get: function() {
  9776.                 return this[internal];
  9777.             }
  9778.         });
  9779.     }, get = function(view, bytes, index, isLittleEndian) {
  9780.         var numIndex = +index, intIndex = toInteger(numIndex);
  9781.         if (numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH]) throw RangeError("Wrong index!");
  9782.         var store = view[$BUFFER]._b, start = intIndex + view[$OFFSET], pack = store.slice(start, start + bytes);
  9783.         return isLittleEndian ? pack : pack.reverse();
  9784.     }, set = function(view, bytes, index, conversion, value, isLittleEndian) {
  9785.         var numIndex = +index, intIndex = toInteger(numIndex);
  9786.         if (numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH]) throw RangeError("Wrong index!");
  9787.         for (var store = view[$BUFFER]._b, start = intIndex + view[$OFFSET], pack = conversion(+value), i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
  9788.     }, validateArrayBufferArguments = function(that, length) {
  9789.         anInstance(that, $ArrayBuffer, "ArrayBuffer");
  9790.         var numberLength = +length, byteLength = toLength(numberLength);
  9791.         if (numberLength != byteLength) throw RangeError("Wrong length!");
  9792.         return byteLength;
  9793.     };
  9794.     if (!$typed.ABV) {
  9795.         $ArrayBuffer = function(length) {
  9796.             var byteLength = validateArrayBufferArguments(this, length);
  9797.             this._b = arrayFill.call(Array(byteLength), 0);
  9798.             this[$LENGTH] = byteLength;
  9799.         };
  9800.         $DataView = function(buffer, byteOffset, byteLength) {
  9801.             anInstance(this, $DataView, "DataView");
  9802.             anInstance(buffer, $ArrayBuffer, "DataView");
  9803.             var bufferLength = buffer[$LENGTH], offset = toInteger(byteOffset);
  9804.             if (offset < 0 || offset > bufferLength) throw RangeError("Wrong offset!");
  9805.             byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
  9806.             if (offset + byteLength > bufferLength) throw RangeError("Wrong length!");
  9807.             this[$BUFFER] = buffer;
  9808.             this[$OFFSET] = offset;
  9809.             this[$LENGTH] = byteLength;
  9810.         };
  9811.         if (DESCRIPTORS) {
  9812.             addGetter($ArrayBuffer, "byteLength", "_l");
  9813.             addGetter($DataView, "buffer", "_b");
  9814.             addGetter($DataView, "byteLength", "_l");
  9815.             addGetter($DataView, "byteOffset", "_o");
  9816.         }
  9817.         redefineAll($DataView.prototype, {
  9818.             getInt8: function(byteOffset) {
  9819.                 return get(this, 1, byteOffset)[0] << 24 >> 24;
  9820.             },
  9821.             getUint8: function(byteOffset) {
  9822.                 return get(this, 1, byteOffset)[0];
  9823.             },
  9824.             getInt16: function(byteOffset) {
  9825.                 var bytes = get(this, 2, byteOffset, arguments[1]);
  9826.                 return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
  9827.             },
  9828.             getUint16: function(byteOffset) {
  9829.                 var bytes = get(this, 2, byteOffset, arguments[1]);
  9830.                 return bytes[1] << 8 | bytes[0];
  9831.             },
  9832.             getInt32: function(byteOffset) {
  9833.                 return unpackI32(get(this, 4, byteOffset, arguments[1]));
  9834.             },
  9835.             getUint32: function(byteOffset) {
  9836.                 return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
  9837.             },
  9838.             getFloat32: function(byteOffset) {
  9839.                 return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
  9840.             },
  9841.             getFloat64: function(byteOffset) {
  9842.                 return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
  9843.             },
  9844.             setInt8: function(byteOffset, value) {
  9845.                 set(this, 1, byteOffset, packI8, value);
  9846.             },
  9847.             setUint8: function(byteOffset, value) {
  9848.                 set(this, 1, byteOffset, packI8, value);
  9849.             },
  9850.             setInt16: function(byteOffset, value) {
  9851.                 set(this, 2, byteOffset, packI16, value, arguments[2]);
  9852.             },
  9853.             setUint16: function(byteOffset, value) {
  9854.                 set(this, 2, byteOffset, packI16, value, arguments[2]);
  9855.             },
  9856.             setInt32: function(byteOffset, value) {
  9857.                 set(this, 4, byteOffset, packI32, value, arguments[2]);
  9858.             },
  9859.             setUint32: function(byteOffset, value) {
  9860.                 set(this, 4, byteOffset, packI32, value, arguments[2]);
  9861.             },
  9862.             setFloat32: function(byteOffset, value) {
  9863.                 set(this, 4, byteOffset, packF32, value, arguments[2]);
  9864.             },
  9865.             setFloat64: function(byteOffset, value) {
  9866.                 set(this, 8, byteOffset, packF64, value, arguments[2]);
  9867.             }
  9868.         });
  9869.     } else {
  9870.         if (!fails(function() {
  9871.             new $ArrayBuffer();
  9872.         }) || !fails(function() {
  9873.             new $ArrayBuffer(.5);
  9874.         })) {
  9875.             $ArrayBuffer = function(length) {
  9876.                 return new BaseBuffer(validateArrayBufferArguments(this, length));
  9877.             };
  9878.             for (var key, ArrayBufferProto = $ArrayBuffer.prototype = BaseBuffer.prototype, keys = gOPN(BaseBuffer), j = 0; keys.length > j; ) if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);
  9879.             if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;
  9880.         }
  9881.         var view = new $DataView(new $ArrayBuffer(2)), $setInt8 = $DataView.prototype.setInt8;
  9882.         view.setInt8(0, 2147483648);
  9883.         view.setInt8(1, 2147483649);
  9884.         if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView.prototype, {
  9885.             setInt8: function(byteOffset, value) {
  9886.                 $setInt8.call(this, byteOffset, value << 24 >> 24);
  9887.             },
  9888.             setUint8: function(byteOffset, value) {
  9889.                 $setInt8.call(this, byteOffset, value << 24 >> 24);
  9890.             }
  9891.         }, !0);
  9892.     }
  9893.     setToStringTag($ArrayBuffer, "ArrayBuffer");
  9894.     setToStringTag($DataView, "DataView");
  9895.     hide($DataView.prototype, $typed.VIEW, !0);
  9896.     exports.ArrayBuffer = $ArrayBuffer;
  9897.     exports.DataView = $DataView;
  9898. }, function(module, exports, __webpack_require__) {
  9899.     "use strict";
  9900.     var addToUnscopables = __webpack_require__(66), step = __webpack_require__(253), Iterators = __webpack_require__(68), toIObject = __webpack_require__(24);
  9901.     module.exports = __webpack_require__(194)(Array, "Array", function(iterated, kind) {
  9902.         this._t = toIObject(iterated);
  9903.         this._i = 0;
  9904.         this._k = kind;
  9905.     }, function() {
  9906.         var O = this._t, kind = this._k, index = this._i++;
  9907.         if (!O || index >= O.length) {
  9908.             this._t = undefined;
  9909.             return step(1);
  9910.         }
  9911.         if ("keys" == kind) return step(0, index);
  9912.         if ("values" == kind) return step(0, O[index]); else return step(0, [ index, O[index] ]);
  9913.     }, "values");
  9914.     Iterators.Arguments = Iterators.Array;
  9915.     addToUnscopables("keys");
  9916.     addToUnscopables("values");
  9917.     addToUnscopables("entries");
  9918. }, function(module, exports, __webpack_require__) {
  9919.     "use strict";
  9920.     var invariant = function(condition, format, a, b, c, d, e, f) {
  9921.         if (!0) if (format === undefined) throw new Error("invariant requires an error message argument");
  9922.         if (!condition) {
  9923.             var error;
  9924.             if (format === undefined) error = new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings."); else {
  9925.                 var args = [ a, b, c, d, e, f ], argIndex = 0;
  9926.                 error = new Error("Invariant Violation: " + format.replace(/%s/g, function() {
  9927.                     return args[argIndex++];
  9928.                 }));
  9929.             }
  9930.             error.framesToPop = 1;
  9931.             throw error;
  9932.         }
  9933.     };
  9934.     module.exports = invariant;
  9935. }, function(module, exports, __webpack_require__) {
  9936.     function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
  9937.         if (value === other) return !0;
  9938.         if (null == value || null == other || !isObject(value) && !isObjectLike(other)) return value !== value && other !== other; else return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
  9939.     }
  9940.     var baseIsEqualDeep = __webpack_require__(531), isObject = __webpack_require__(39), isObjectLike = __webpack_require__(54);
  9941.     module.exports = baseIsEqual;
  9942. }, function(module, exports) {
  9943.     function isIndex(value, length) {
  9944.         value = "number" == typeof value || reIsUint.test(value) ? +value : -1;
  9945.         length = null == length ? MAX_SAFE_INTEGER : length;
  9946.         return value > -1 && value % 1 == 0 && value < length;
  9947.     }
  9948.     var reIsUint = /^\d+$/, MAX_SAFE_INTEGER = 9007199254740991;
  9949.     module.exports = isIndex;
  9950. }, function(module, exports, __webpack_require__) {
  9951.     function isTypedArray(value) {
  9952.         return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];
  9953.     }
  9954.     var isLength = __webpack_require__(114), isObjectLike = __webpack_require__(54), typedArrayTags = {};
  9955.     typedArrayTags["[object Float32Array]"] = typedArrayTags["[object Float64Array]"] = typedArrayTags["[object Int8Array]"] = typedArrayTags["[object Int16Array]"] = typedArrayTags["[object Int32Array]"] = typedArrayTags["[object Uint8Array]"] = typedArrayTags["[object Uint8ClampedArray]"] = typedArrayTags["[object Uint16Array]"] = typedArrayTags["[object Uint32Array]"] = !0;
  9956.     typedArrayTags["[object Arguments]"] = typedArrayTags["[object Array]"] = typedArrayTags["[object ArrayBuffer]"] = typedArrayTags["[object Boolean]"] = typedArrayTags["[object Date]"] = typedArrayTags["[object Error]"] = typedArrayTags["[object Function]"] = typedArrayTags["[object Map]"] = typedArrayTags["[object Number]"] = typedArrayTags["[object Object]"] = typedArrayTags["[object RegExp]"] = typedArrayTags["[object Set]"] = typedArrayTags["[object String]"] = typedArrayTags["[object WeakMap]"] = !1;
  9957.     var objectProto = Object.prototype, objToString = objectProto.toString;
  9958.     module.exports = isTypedArray;
  9959. }, function(module, exports, __webpack_require__) {
  9960.     function keysIn(object) {
  9961.         if (null == object) return [];
  9962.         if (!isObject(object)) object = Object(object);
  9963.         var length = object.length;
  9964.         length = length && isLength(length) && (isArray(object) || isArguments(object)) && length || 0;
  9965.         for (var Ctor = object.constructor, index = -1, isProto = "function" == typeof Ctor && Ctor.prototype === object, result = Array(length), skipIndexes = length > 0; ++index < length; ) result[index] = index + "";
  9966.         for (var key in object) if ((!skipIndexes || !isIndex(key, length)) && ("constructor" != key || !isProto && hasOwnProperty.call(object, key))) result.push(key);
  9967.         return result;
  9968.     }
  9969.     var isArguments = __webpack_require__(115), isArray = __webpack_require__(38), isIndex = __webpack_require__(206), isLength = __webpack_require__(114), isObject = __webpack_require__(39), objectProto = Object.prototype, hasOwnProperty = objectProto.hasOwnProperty;
  9970.     module.exports = keysIn;
  9971. }, function(module, exports) {
  9972.     function defaultSetTimout() {
  9973.         throw new Error("setTimeout has not been defined");
  9974.     }
  9975.     function defaultClearTimeout() {
  9976.         throw new Error("clearTimeout has not been defined");
  9977.     }
  9978.     function runTimeout(fun) {
  9979.         if (cachedSetTimeout === setTimeout) return setTimeout(fun, 0);
  9980.         if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
  9981.             cachedSetTimeout = setTimeout;
  9982.             return setTimeout(fun, 0);
  9983.         }
  9984.         try {
  9985.             return cachedSetTimeout(fun, 0);
  9986.         } catch (e) {
  9987.             try {
  9988.                 return cachedSetTimeout.call(null, fun, 0);
  9989.             } catch (e) {
  9990.                 return cachedSetTimeout.call(this, fun, 0);
  9991.             }
  9992.         }
  9993.     }
  9994.     function runClearTimeout(marker) {
  9995.         if (cachedClearTimeout === clearTimeout) return clearTimeout(marker);
  9996.         if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
  9997.             cachedClearTimeout = clearTimeout;
  9998.             return clearTimeout(marker);
  9999.         }
  10000.         try {
  10001.             return cachedClearTimeout(marker);
  10002.         } catch (e) {
  10003.             try {
  10004.                 return cachedClearTimeout.call(null, marker);
  10005.             } catch (e) {
  10006.                 return cachedClearTimeout.call(this, marker);
  10007.             }
  10008.         }
  10009.     }
  10010.     function cleanUpNextTick() {
  10011.         if (draining && currentQueue) {
  10012.             draining = !1;
  10013.             if (currentQueue.length) queue = currentQueue.concat(queue); else queueIndex = -1;
  10014.             if (queue.length) drainQueue();
  10015.         }
  10016.     }
  10017.     function drainQueue() {
  10018.         if (!draining) {
  10019.             var timeout = runTimeout(cleanUpNextTick);
  10020.             draining = !0;
  10021.             for (var len = queue.length; len; ) {
  10022.                 currentQueue = queue;
  10023.                 queue = [];
  10024.                 for (;++queueIndex < len; ) if (currentQueue) currentQueue[queueIndex].run();
  10025.                 queueIndex = -1;
  10026.                 len = queue.length;
  10027.             }
  10028.             currentQueue = null;
  10029.             draining = !1;
  10030.             runClearTimeout(timeout);
  10031.         }
  10032.     }
  10033.     function Item(fun, array) {
  10034.         this.fun = fun;
  10035.         this.array = array;
  10036.     }
  10037.     function noop() {}
  10038.     var cachedSetTimeout, cachedClearTimeout, process = module.exports = {};
  10039.     !function() {
  10040.         try {
  10041.             if ("function" == typeof setTimeout) cachedSetTimeout = setTimeout; else cachedSetTimeout = defaultSetTimout;
  10042.         } catch (e) {
  10043.             cachedSetTimeout = defaultSetTimout;
  10044.         }
  10045.         try {
  10046.             if ("function" == typeof clearTimeout) cachedClearTimeout = clearTimeout; else cachedClearTimeout = defaultClearTimeout;
  10047.         } catch (e) {
  10048.             cachedClearTimeout = defaultClearTimeout;
  10049.         }
  10050.     }();
  10051.     var currentQueue, queue = [], draining = !1, queueIndex = -1;
  10052.     process.nextTick = function(fun) {
  10053.         var args = new Array(arguments.length - 1);
  10054.         if (arguments.length > 1) for (var i = 1; i < arguments.length; i++) args[i - 1] = arguments[i];
  10055.         queue.push(new Item(fun, args));
  10056.         if (1 === queue.length && !draining) runTimeout(drainQueue);
  10057.     };
  10058.     Item.prototype.run = function() {
  10059.         this.fun.apply(null, this.array);
  10060.     };
  10061.     process.title = "browser";
  10062.     process.browser = !0;
  10063.     process.env = {};
  10064.     process.argv = [];
  10065.     process.version = "";
  10066.     process.versions = {};
  10067.     process.on = noop;
  10068.     process.addListener = noop;
  10069.     process.once = noop;
  10070.     process.off = noop;
  10071.     process.removeListener = noop;
  10072.     process.removeAllListeners = noop;
  10073.     process.emit = noop;
  10074.     process.prependListener = noop;
  10075.     process.prependOnceListener = noop;
  10076.     process.listeners = function(name) {
  10077.         return [];
  10078.     };
  10079.     process.binding = function(name) {
  10080.         throw new Error("process.binding is not supported");
  10081.     };
  10082.     process.cwd = function() {
  10083.         return "/";
  10084.     };
  10085.     process.chdir = function(dir) {
  10086.         throw new Error("process.chdir is not supported");
  10087.     };
  10088.     process.umask = function() {
  10089.         return 0;
  10090.     };
  10091. }, function(module, exports, __webpack_require__) {
  10092.     "use strict";
  10093.     function CallbackQueue() {
  10094.         this._callbacks = null;
  10095.         this._contexts = null;
  10096.     }
  10097.     var PooledClass = __webpack_require__(84), invariant = __webpack_require__(4);
  10098.     __webpack_require__(60)(CallbackQueue, {
  10099.         enqueue: function(callback, context) {
  10100.             this._callbacks = this._callbacks || [];
  10101.             this._contexts = this._contexts || [];
  10102.             this._callbacks.push(callback);
  10103.             this._contexts.push(context);
  10104.         },
  10105.         notifyAll: function() {
  10106.             var callbacks = this._callbacks, contexts = this._contexts;
  10107.             if (callbacks) {
  10108.                 !0 ? invariant(callbacks.length === contexts.length, "Mismatched list of contexts in callback queue") : invariant(callbacks.length === contexts.length);
  10109.                 this._callbacks = null;
  10110.                 this._contexts = null;
  10111.                 for (var i = 0, l = callbacks.length; i < l; i++) callbacks[i].call(contexts[i]);
  10112.                 callbacks.length = 0;
  10113.                 contexts.length = 0;
  10114.             }
  10115.         },
  10116.         reset: function() {
  10117.             this._callbacks = null;
  10118.             this._contexts = null;
  10119.         },
  10120.         destructor: function() {
  10121.             this.reset();
  10122.         }
  10123.     });
  10124.     PooledClass.addPoolingTo(CallbackQueue);
  10125.     module.exports = CallbackQueue;
  10126. }, function(module, exports, __webpack_require__) {
  10127.     "use strict";
  10128.     function isEndish(topLevelType) {
  10129.         return topLevelType === topLevelTypes.topMouseUp || topLevelType === topLevelTypes.topTouchEnd || topLevelType === topLevelTypes.topTouchCancel;
  10130.     }
  10131.     function isMoveish(topLevelType) {
  10132.         return topLevelType === topLevelTypes.topMouseMove || topLevelType === topLevelTypes.topTouchMove;
  10133.     }
  10134.     function isStartish(topLevelType) {
  10135.         return topLevelType === topLevelTypes.topMouseDown || topLevelType === topLevelTypes.topTouchStart;
  10136.     }
  10137.     function forEachEventDispatch(event, cb) {
  10138.         var dispatchListeners = event._dispatchListeners, dispatchIDs = event._dispatchIDs;
  10139.         if (!0) validateEventDispatches(event);
  10140.         if (Array.isArray(dispatchListeners)) for (var i = 0; i < dispatchListeners.length && !event.isPropagationStopped(); i++) cb(event, dispatchListeners[i], dispatchIDs[i]); else if (dispatchListeners) cb(event, dispatchListeners, dispatchIDs);
  10141.     }
  10142.     function executeDispatch(event, listener, domID) {
  10143.         event.currentTarget = injection.Mount.getNode(domID);
  10144.         var returnValue = listener(event, domID);
  10145.         event.currentTarget = null;
  10146.         return returnValue;
  10147.     }
  10148.     function executeDispatchesInOrder(event, executeDispatch) {
  10149.         forEachEventDispatch(event, executeDispatch);
  10150.         event._dispatchListeners = null;
  10151.         event._dispatchIDs = null;
  10152.     }
  10153.     function executeDispatchesInOrderStopAtTrueImpl(event) {
  10154.         var dispatchListeners = event._dispatchListeners, dispatchIDs = event._dispatchIDs;
  10155.         if (!0) validateEventDispatches(event);
  10156.         if (Array.isArray(dispatchListeners)) {
  10157.             for (var i = 0; i < dispatchListeners.length && !event.isPropagationStopped(); i++) if (dispatchListeners[i](event, dispatchIDs[i])) return dispatchIDs[i];
  10158.         } else if (dispatchListeners) if (dispatchListeners(event, dispatchIDs)) return dispatchIDs;
  10159.         return null;
  10160.     }
  10161.     function executeDispatchesInOrderStopAtTrue(event) {
  10162.         var ret = executeDispatchesInOrderStopAtTrueImpl(event);
  10163.         event._dispatchIDs = null;
  10164.         event._dispatchListeners = null;
  10165.         return ret;
  10166.     }
  10167.     function executeDirectDispatch(event) {
  10168.         if (!0) validateEventDispatches(event);
  10169.         var dispatchListener = event._dispatchListeners, dispatchID = event._dispatchIDs;
  10170.         !0 ? invariant(!Array.isArray(dispatchListener), "executeDirectDispatch(...): Invalid `event`.") : invariant(!Array.isArray(dispatchListener));
  10171.         var res = dispatchListener ? dispatchListener(event, dispatchID) : null;
  10172.         event._dispatchListeners = null;
  10173.         event._dispatchIDs = null;
  10174.         return res;
  10175.     }
  10176.     function hasDispatches(event) {
  10177.         return !!event._dispatchListeners;
  10178.     }
  10179.     var validateEventDispatches, EventConstants = __webpack_require__(45), invariant = __webpack_require__(4), injection = {
  10180.         Mount: null,
  10181.         injectMount: function(InjectedMount) {
  10182.             injection.Mount = InjectedMount;
  10183.             if (!0) !0 ? invariant(InjectedMount && InjectedMount.getNode, "EventPluginUtils.injection.injectMount(...): Injected Mount module is missing getNode.") : invariant(InjectedMount && InjectedMount.getNode);
  10184.         }
  10185.     }, topLevelTypes = EventConstants.topLevelTypes;
  10186.     if (!0) validateEventDispatches = function(event) {
  10187.         var dispatchListeners = event._dispatchListeners, dispatchIDs = event._dispatchIDs, listenersIsArr = Array.isArray(dispatchListeners), idsIsArr = Array.isArray(dispatchIDs), IDsLen = idsIsArr ? dispatchIDs.length : dispatchIDs ? 1 : 0, listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;
  10188.         !0 ? invariant(idsIsArr === listenersIsArr && IDsLen === listenersLen, "EventPluginUtils: Invalid `event`.") : invariant(idsIsArr === listenersIsArr && IDsLen === listenersLen);
  10189.     };
  10190.     var EventPluginUtils = {
  10191.         isEndish: isEndish,
  10192.         isMoveish: isMoveish,
  10193.         isStartish: isStartish,
  10194.         executeDirectDispatch: executeDirectDispatch,
  10195.         executeDispatch: executeDispatch,
  10196.         executeDispatchesInOrder: executeDispatchesInOrder,
  10197.         executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,
  10198.         hasDispatches: hasDispatches,
  10199.         injection: injection,
  10200.         useTouchEvents: !1
  10201.     };
  10202.     module.exports = EventPluginUtils;
  10203. }, function(module, exports, __webpack_require__) {
  10204.     "use strict";
  10205.     function _assertSingleLink(input) {
  10206.         !0 ? invariant(null == input.props.checkedLink || null == input.props.valueLink, "Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don't want to use valueLink and vice versa.") : invariant(null == input.props.checkedLink || null == input.props.valueLink);
  10207.     }
  10208.     function _assertValueLink(input) {
  10209.         _assertSingleLink(input);
  10210.         !0 ? invariant(null == input.props.value && null == input.props.onChange, "Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don't want to use valueLink.") : invariant(null == input.props.value && null == input.props.onChange);
  10211.     }
  10212.     function _assertCheckedLink(input) {
  10213.         _assertSingleLink(input);
  10214.         !0 ? invariant(null == input.props.checked && null == input.props.onChange, "Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don't want to use checkedLink") : invariant(null == input.props.checked && null == input.props.onChange);
  10215.     }
  10216.     function _handleLinkedValueChange(e) {
  10217.         this.props.valueLink.requestChange(e.target.value);
  10218.     }
  10219.     function _handleLinkedCheckChange(e) {
  10220.         this.props.checkedLink.requestChange(e.target.checked);
  10221.     }
  10222.     var ReactPropTypes = __webpack_require__(296), invariant = __webpack_require__(4), hasReadOnlyValue = {
  10223.         button: !0,
  10224.         checkbox: !0,
  10225.         image: !0,
  10226.         hidden: !0,
  10227.         radio: !0,
  10228.         reset: !0,
  10229.         submit: !0
  10230.     }, LinkedValueUtils = {
  10231.         Mixin: {
  10232.             propTypes: {
  10233.                 value: function(props, propName, componentName) {
  10234.                     if (!(!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled)) return new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.");
  10235.                 },
  10236.                 checked: function(props, propName, componentName) {
  10237.                     if (props[propName] && !props.onChange && !props.readOnly && !props.disabled) return new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.");
  10238.                 },
  10239.                 onChange: ReactPropTypes.func
  10240.             }
  10241.         },
  10242.         getValue: function(input) {
  10243.             if (input.props.valueLink) {
  10244.                 _assertValueLink(input);
  10245.                 return input.props.valueLink.value;
  10246.             }
  10247.             return input.props.value;
  10248.         },
  10249.         getChecked: function(input) {
  10250.             if (input.props.checkedLink) {
  10251.                 _assertCheckedLink(input);
  10252.                 return input.props.checkedLink.value;
  10253.             }
  10254.             return input.props.checked;
  10255.         },
  10256.         getOnChange: function(input) {
  10257.             if (input.props.valueLink) {
  10258.                 _assertValueLink(input);
  10259.                 return _handleLinkedValueChange;
  10260.             } else if (input.props.checkedLink) {
  10261.                 _assertCheckedLink(input);
  10262.                 return _handleLinkedCheckChange;
  10263.             }
  10264.             return input.props.onChange;
  10265.         }
  10266.     };
  10267.     module.exports = LinkedValueUtils;
  10268. }, function(module, exports, __webpack_require__) {
  10269.     "use strict";
  10270.     var merge = __webpack_require__(46), ReactContext = {
  10271.         current: {},
  10272.         withContext: function(newContext, scopedCallback) {
  10273.             var result, previousContext = ReactContext.current;
  10274.             ReactContext.current = merge(previousContext, newContext);
  10275.             try {
  10276.                 result = scopedCallback();
  10277.             } finally {
  10278.                 ReactContext.current = previousContext;
  10279.             }
  10280.             return result;
  10281.         }
  10282.     };
  10283.     module.exports = ReactContext;
  10284. }, function(module, exports, __webpack_require__) {
  10285.     "use strict";
  10286.     function getEmptyComponent() {
  10287.         !0 ? invariant(component, "Trying to return null from a render, but no null placeholder component was injected.") : invariant(component);
  10288.         return component();
  10289.     }
  10290.     function registerNullComponentID(id) {
  10291.         nullComponentIdsRegistry[id] = !0;
  10292.     }
  10293.     function deregisterNullComponentID(id) {
  10294.         delete nullComponentIdsRegistry[id];
  10295.     }
  10296.     function isNullComponentID(id) {
  10297.         return nullComponentIdsRegistry[id];
  10298.     }
  10299.     var component, invariant = __webpack_require__(4), nullComponentIdsRegistry = {}, ReactEmptyComponentInjection = {
  10300.         injectEmptyComponent: function(emptyComponent) {
  10301.             component = emptyComponent;
  10302.         }
  10303.     }, ReactEmptyComponent = {
  10304.         deregisterNullComponentID: deregisterNullComponentID,
  10305.         getEmptyComponent: getEmptyComponent,
  10306.         injection: ReactEmptyComponentInjection,
  10307.         isNullComponentID: isNullComponentID,
  10308.         registerNullComponentID: registerNullComponentID
  10309.     };
  10310.     module.exports = ReactEmptyComponent;
  10311. }, function(module, exports, __webpack_require__) {
  10312.     "use strict";
  10313.     function isInDocument(node) {
  10314.         return containsNode(document.documentElement, node);
  10315.     }
  10316.     var ReactDOMSelection = __webpack_require__(603), containsNode = __webpack_require__(301), focusNode = __webpack_require__(302), getActiveElement = __webpack_require__(303), ReactInputSelection = {
  10317.         hasSelectionCapabilities: function(elem) {
  10318.             return elem && ("INPUT" === elem.nodeName && "text" === elem.type || "TEXTAREA" === elem.nodeName || "true" === elem.contentEditable);
  10319.         },
  10320.         getSelectionInformation: function() {
  10321.             var focusedElem = getActiveElement();
  10322.             return {
  10323.                 focusedElem: focusedElem,
  10324.                 selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null
  10325.             };
  10326.         },
  10327.         restoreSelection: function(priorSelectionInformation) {
  10328.             var curFocusedElem = getActiveElement(), priorFocusedElem = priorSelectionInformation.focusedElem, priorSelectionRange = priorSelectionInformation.selectionRange;
  10329.             if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {
  10330.                 if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);
  10331.                 focusNode(priorFocusedElem);
  10332.             }
  10333.         },
  10334.         getSelection: function(input) {
  10335.             var selection;
  10336.             if ("selectionStart" in input) selection = {
  10337.                 start: input.selectionStart,
  10338.                 end: input.selectionEnd
  10339.             }; else if (document.selection && "INPUT" === input.nodeName) {
  10340.                 var range = document.selection.createRange();
  10341.                 if (range.parentElement() === input) selection = {
  10342.                     start: -range.moveStart("character", -input.value.length),
  10343.                     end: -range.moveEnd("character", -input.value.length)
  10344.                 };
  10345.             } else selection = ReactDOMSelection.getOffsets(input);
  10346.             return selection || {
  10347.                 start: 0,
  10348.                 end: 0
  10349.             };
  10350.         },
  10351.         setSelection: function(input, offsets) {
  10352.             var start = offsets.start, end = offsets.end;
  10353.             if (void 0 === end) end = start;
  10354.             if ("selectionStart" in input) {
  10355.                 input.selectionStart = start;
  10356.                 input.selectionEnd = Math.min(end, input.value.length);
  10357.             } else if (document.selection && "INPUT" === input.nodeName) {
  10358.                 var range = input.createTextRange();
  10359.                 range.collapse(!0);
  10360.                 range.moveStart("character", start);
  10361.                 range.moveEnd("character", end - start);
  10362.                 range.select();
  10363.             } else ReactDOMSelection.setOffsets(input, offsets);
  10364.         }
  10365.     };
  10366.     module.exports = ReactInputSelection;
  10367. }, function(module, exports, __webpack_require__) {
  10368.     "use strict";
  10369.     function accumulate(current, next) {
  10370.         !0 ? invariant(null != next, "accumulate(...): Accumulated items must be not be null or undefined.") : invariant(null != next);
  10371.         if (null == current) return next; else {
  10372.             var currentIsArray = Array.isArray(current), nextIsArray = Array.isArray(next);
  10373.             if (currentIsArray) return current.concat(next); else if (nextIsArray) return [ current ].concat(next); else return [ current, next ];
  10374.         }
  10375.     }
  10376.     var invariant = __webpack_require__(4);
  10377.     module.exports = accumulate;
  10378. }, function(module, exports, __webpack_require__) {
  10379.     "use strict";
  10380.     function escaper(match) {
  10381.         return ESCAPE_LOOKUP[match];
  10382.     }
  10383.     function escapeTextForBrowser(text) {
  10384.         return ("" + text).replace(ESCAPE_REGEX, escaper);
  10385.     }
  10386.     var ESCAPE_LOOKUP = {
  10387.         "&": "&amp;",
  10388.         ">": "&gt;",
  10389.         "<": "&lt;",
  10390.         '"': "&quot;",
  10391.         "'": "&#x27;"
  10392.     }, ESCAPE_REGEX = /[&><"']/g;
  10393.     module.exports = escapeTextForBrowser;
  10394. }, function(module, exports, __webpack_require__) {
  10395.     "use strict";
  10396.     var forEachAccumulated = function(arr, cb, scope) {
  10397.         if (Array.isArray(arr)) arr.forEach(cb, scope); else if (arr) cb.call(scope, arr);
  10398.     };
  10399.     module.exports = forEachAccumulated;
  10400. }, function(module, exports, __webpack_require__) {
  10401.     "use strict";
  10402.     function modifierStateGetter(keyArg) {
  10403.         var syntheticEvent = this, nativeEvent = syntheticEvent.nativeEvent;
  10404.         if (nativeEvent.getModifierState) return nativeEvent.getModifierState(keyArg);
  10405.         var keyProp = modifierKeyToProp[keyArg];
  10406.         return keyProp ? !!nativeEvent[keyProp] : !1;
  10407.     }
  10408.     function getEventModifierState(nativeEvent) {
  10409.         return modifierStateGetter;
  10410.     }
  10411.     var modifierKeyToProp = {
  10412.         Alt: "altKey",
  10413.         Control: "ctrlKey",
  10414.         Meta: "metaKey",
  10415.         Shift: "shiftKey"
  10416.     };
  10417.     module.exports = getEventModifierState;
  10418. }, function(module, exports, __webpack_require__) {
  10419.     "use strict";
  10420.     function getEventTarget(nativeEvent) {
  10421.         var target = nativeEvent.target || nativeEvent.srcElement || window;
  10422.         return 3 === target.nodeType ? target.parentNode : target;
  10423.     }
  10424.     module.exports = getEventTarget;
  10425. }, function(module, exports, __webpack_require__) {
  10426.     "use strict";
  10427.     function getTextContentAccessor() {
  10428.         if (!contentKey && ExecutionEnvironment.canUseDOM) contentKey = "textContent" in document.documentElement ? "textContent" : "innerText";
  10429.         return contentKey;
  10430.     }
  10431.     var ExecutionEnvironment = __webpack_require__(35), contentKey = null;
  10432.     module.exports = getTextContentAccessor;
  10433. }, function(module, exports, __webpack_require__) {
  10434.     "use strict";
  10435.     function isEventSupported(eventNameSuffix, capture) {
  10436.         if (!ExecutionEnvironment.canUseDOM || capture && !("addEventListener" in document)) return !1;
  10437.         var eventName = "on" + eventNameSuffix, isSupported = eventName in document;
  10438.         if (!isSupported) {
  10439.             var element = document.createElement("div");
  10440.             element.setAttribute(eventName, "return;");
  10441.             isSupported = "function" == typeof element[eventName];
  10442.         }
  10443.         if (!isSupported && useHasFeature && "wheel" === eventNameSuffix) isSupported = document.implementation.hasFeature("Events.wheel", "3.0");
  10444.         return isSupported;
  10445.     }
  10446.     var useHasFeature, ExecutionEnvironment = __webpack_require__(35);
  10447.     if (ExecutionEnvironment.canUseDOM) useHasFeature = document.implementation && document.implementation.hasFeature && !0 !== document.implementation.hasFeature("", "");
  10448.     module.exports = isEventSupported;
  10449. }, function(module, exports, __webpack_require__) {
  10450.     "use strict";
  10451.     function mergeInto(one, two) {
  10452.         checkMergeIntoObjectArg(one);
  10453.         if (null != two) {
  10454.             checkMergeObjectArg(two);
  10455.             for (var key in two) if (two.hasOwnProperty(key)) one[key] = two[key];
  10456.         }
  10457.     }
  10458.     var mergeHelpers = __webpack_require__(644), checkMergeObjectArg = mergeHelpers.checkMergeObjectArg, checkMergeIntoObjectArg = mergeHelpers.checkMergeIntoObjectArg;
  10459.     module.exports = mergeInto;
  10460. }, function(module, exports, __webpack_require__) {
  10461.     "use strict";
  10462.     function monitorCodeUse(eventName, data) {
  10463.         !0 ? invariant(eventName && !/[^a-z0-9_]/.test(eventName), "You must provide an eventName using only the characters [a-z0-9_]") : invariant(eventName && !/[^a-z0-9_]/.test(eventName));
  10464.     }
  10465.     var invariant = __webpack_require__(4);
  10466.     module.exports = monitorCodeUse;
  10467. }, function(module, exports, __webpack_require__) {
  10468.     "use strict";
  10469.     function shouldUpdateReactComponent(prevDescriptor, nextDescriptor) {
  10470.         if (prevDescriptor && nextDescriptor && prevDescriptor.type === nextDescriptor.type && (prevDescriptor.props && prevDescriptor.props.key) === (nextDescriptor.props && nextDescriptor.props.key) && prevDescriptor._owner === nextDescriptor._owner) return !0; else return !1;
  10471.     }
  10472.     module.exports = shouldUpdateReactComponent;
  10473. }, function(module, exports, __webpack_require__) {
  10474.     "use strict";
  10475.     function compose() {
  10476.         for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) funcs[_key] = arguments[_key];
  10477.         return funcs.reduceRight(function(composed, f) {
  10478.             return f(composed);
  10479.         });
  10480.     }
  10481.     exports.__esModule = !0;
  10482.     exports["default"] = compose;
  10483.     module.exports = exports["default"];
  10484. }, function(module, exports, __webpack_require__) {
  10485.     "use strict";
  10486.     function _interopRequireDefault(obj) {
  10487.         return obj && obj.__esModule ? obj : {
  10488.             "default": obj
  10489.         };
  10490.     }
  10491.     function loadDiagnosticInfo() {
  10492.         return function(dispatch, getState) {
  10493.             (!1 ? Promise.resolve(require("@drp/core/diagnostics/sysinfo-emulator.json")) : _systemScanner2["default"].fetchData("localdiagnostics")).then(function(diagObj) {
  10494.                 dispatch({
  10495.                     type: "DIAGNOSTICS_UPDATE_SUCCESS",
  10496.                     payload: diagObj
  10497.                 });
  10498.             });
  10499.         };
  10500.     }
  10501.     function updateDiagnosticInfo() {
  10502.         return function(dispatch, getState) {
  10503.             (!1 ? Promise.resolve(require("@drp/core/diagnostics/sysinfo-emulator.json")) : Promise.delay(0).then(function() {
  10504.                 return (0, _getDiagnostics2["default"])("temporary");
  10505.             })).then(function(diagObj) {
  10506.                 dispatch({
  10507.                     type: "DIAGNOSTICS_UPDATE_SUCCESS",
  10508.                     payload: diagObj
  10509.                 });
  10510.             });
  10511.         };
  10512.     }
  10513.     function openDiagnostic(tool) {
  10514.         switch (tool) {
  10515.           case "TESTRAM":
  10516.             _statistics2["default"].event({
  10517.                 action: "diagnostic memorytest clicked"
  10518.             });
  10519.             (0, _utils.winRun)("mdsched.exe", "", "", !0);
  10520.             break;
  10521.  
  10522.           case "DEFRAG":
  10523.             _statistics2["default"].event({
  10524.                 action: "diagnostic defrag clicked"
  10525.             });
  10526.             if (OSVersion >= 6) (0, _utils.winRun)("dfrgui.exe", "", "", !0); else (0, _utils.winRun)("dfrg.msc", "", "", !0);
  10527.             break;
  10528.  
  10529.           case "SYSINFO":
  10530.             _statistics2["default"].event({
  10531.                 action: "diagnostic details clicked"
  10532.             });
  10533.             _system.WshShell.Run("msinfo32.exe", 0, !1);
  10534.         }
  10535.         return {};
  10536.     }
  10537.     exports.__esModule = !0;
  10538.     exports.loadDiagnosticInfo = loadDiagnosticInfo;
  10539.     exports.updateDiagnosticInfo = updateDiagnosticInfo;
  10540.     exports.openDiagnostic = openDiagnostic;
  10541.     var _system = __webpack_require__(9), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _getDiagnostics = __webpack_require__(80), _getDiagnostics2 = _interopRequireDefault(_getDiagnostics), _utils = __webpack_require__(23), _systemScanner = __webpack_require__(86), _systemScanner2 = _interopRequireDefault(_systemScanner);
  10542. }, function(module, exports, __webpack_require__) {
  10543.     "use strict";
  10544.     function _interopRequireDefault(obj) {
  10545.         return obj && obj.__esModule ? obj : {
  10546.             "default": obj
  10547.         };
  10548.     }
  10549.     function expandDevice(id, expanded) {
  10550.         _statistics2["default"].event({
  10551.             action: "drivers alternative clicked"
  10552.         });
  10553.         return {
  10554.             type: "DRIVERS_EXPAND_DEVICE",
  10555.             id: id,
  10556.             expanded: expanded
  10557.         };
  10558.     }
  10559.     function openDriverInfo(id, index) {
  10560.         return {
  10561.             type: "DRIVERS_INFO_OPEN",
  10562.             id: id,
  10563.             index: index
  10564.         };
  10565.     }
  10566.     function openDeviceManagerFor(id) {
  10567.         _statistics2["default"].event({
  10568.             action: "drivers popover device details clicked"
  10569.         });
  10570.         _system.WshShell.Run('cmd /c "Rundll32.exe devmgr.dll DeviceProperties_RunDLL /DeviceID "' + id + '""', 0, !1);
  10571.         return {
  10572.             type: "DRIVERS_OPEN_DEVICE_MANAGER_FOR",
  10573.             id: id
  10574.         };
  10575.     }
  10576.     function installSingleDriver(device) {
  10577.         var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  10578.         (0, _system.deleteFile)(_system.AppData + "\\DRPSu\\diagnostics\\drivers.json");
  10579.         if (options.recommended) _statistics2["default"].event({
  10580.             action: "drivers recommended action clicked"
  10581.         }); else if (options.alternative) _statistics2["default"].event({
  10582.             action: "drivers alternative action clicked"
  10583.         });
  10584.         return function(dispatch, getState) {
  10585.             dispatch({
  10586.                 type: "USER_ACTIVATED"
  10587.             });
  10588.             dispatch(new _Installation2["default"]().run({
  10589.                 drivers: [ device ]
  10590.             }));
  10591.         };
  10592.     }
  10593.     function installDrivers() {
  10594.         var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  10595.         (0, _system.deleteFile)(_system.AppData + "\\DRPSu\\diagnostics\\drivers.json");
  10596.         if (options.eventAction) _statistics2["default"].event({
  10597.             action: options.eventAction,
  10598.             counters: [ "default", "shared" ]
  10599.         });
  10600.         return function(dispatch, getState) {
  10601.             var _getState = getState(), drivers = _getState.drivers, notInstalled = (0, _driversPrograms.filterNotInstalledDriverDevices)(drivers.devices), installingDevices = (0,
  10602.             _driversPrograms.filterCheckedDrivers)(notInstalled);
  10603.             dispatch({
  10604.                 type: "USER_ACTIVATED"
  10605.             });
  10606.             dispatch(new _Installation2["default"]().run({
  10607.                 drivers: installingDevices
  10608.             }));
  10609.         };
  10610.     }
  10611.     function installDriversAndPrograms() {
  10612.         var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  10613.         (0, _system.deleteFile)(_system.AppData + "\\DRPSu\\diagnostics\\newsoft.json");
  10614.         (0, _system.deleteFile)(_system.AppData + "\\DRPSu\\diagnostics\\drivers.json");
  10615.         if (options.eventAction) _statistics2["default"].event({
  10616.             action: options.eventAction,
  10617.             counters: [ "default", "shared" ]
  10618.         });
  10619.         var programsFilterFunc = void 0;
  10620.         options.mode = options.mode ? options.mode : "ALL";
  10621.         switch (options.mode) {
  10622.           case "ALL":
  10623.             programsFilterFunc = _driversPrograms.filterCheckedPrograms;
  10624.             break;
  10625.  
  10626.           case "DRIVERS":
  10627.             programsFilterFunc = _driversPrograms.filterCheckedDriverUtilities;
  10628.             break;
  10629.  
  10630.           default:
  10631.             throw new Error("Not correct mode for installDriversAndPrograms specified");
  10632.         }
  10633.         return function(dispatch, getState) {
  10634.             var _getState2 = getState(), drivers = _getState2.drivers, programs = _getState2.programs, installingDevices = (0,
  10635.             _driversPrograms.filterCheckedDrivers)(drivers.devices), installingPrograms = programsFilterFunc(programs);
  10636.             dispatch({
  10637.                 type: "USER_ACTIVATED"
  10638.             });
  10639.             dispatch(new _Installation2["default"]().run({
  10640.                 drivers: installingDevices,
  10641.                 programs: installingPrograms,
  10642.                 zone: options.zone
  10643.             }));
  10644.         };
  10645.     }
  10646.     function installAll(_ref) {
  10647.         var devices = _ref.devices, programs = _ref.programs, _ref$options = _ref.options, options = _ref$options === undefined ? {} : _ref$options;
  10648.         (0, _system.deleteFile)(_system.AppData + "\\DRPSu\\diagnostics\\newsoft.json");
  10649.         (0, _system.deleteFile)(_system.AppData + "\\DRPSu\\diagnostics\\drivers.json");
  10650.         if (options.eventAction) _statistics2["default"].event({
  10651.             action: options.eventAction,
  10652.             counters: [ "default", "shared" ]
  10653.         });
  10654.         return function(dispatch, getState) {
  10655.             var installingDevices = devices.map(function(device) {
  10656.                 return {
  10657.                     recommendedDriver: device.otherDrivers.find(function(driver) {
  10658.                         return !!driver.isChecked;
  10659.                     }),
  10660.                     deviceId: device.deviceId
  10661.                 };
  10662.             });
  10663.             dispatch({
  10664.                 type: "USER_ACTIVATED"
  10665.             });
  10666.             dispatch(new _Installation2["default"]().run({
  10667.                 drivers: installingDevices,
  10668.                 programs: (0, _uniq2["default"])(programs, "id")
  10669.             }));
  10670.         };
  10671.     }
  10672.     function hideZeroDrivers() {
  10673.         return {
  10674.             type: "DRIVERS_HIDE_ZERO_DRIVERS"
  10675.         };
  10676.     }
  10677.     function toggleAdminMode() {
  10678.         _statistics2["default"].event({
  10679.             action: "drivers admin mode switch used"
  10680.         });
  10681.         return {
  10682.             type: "DRIVERS_TOGGLE_ADMIN_MODE"
  10683.         };
  10684.     }
  10685.     function selectDeviceDriver(_ref2) {
  10686.         return {
  10687.             type: "DRIVERS_DEVICE_DRIVER_SELECTED",
  10688.             _deviceId: _ref2._deviceId,
  10689.             driverId: _ref2.driverId
  10690.         };
  10691.     }
  10692.     function toggleDevice(id, checked) {
  10693.         return {
  10694.             type: "DRIVERS_TOGGLE_DEVICE",
  10695.             id: id,
  10696.             checked: checked
  10697.         };
  10698.     }
  10699.     function toggleNotInstalled(isChecked) {
  10700.         _statistics2["default"].event({
  10701.             action: "drivers install list select all clicked"
  10702.         });
  10703.         return {
  10704.             type: "DRIVERS_TOGGLE_NOT_INSTALLED",
  10705.             payload: {
  10706.                 isChecked: isChecked
  10707.             }
  10708.         };
  10709.     }
  10710.     function toggleNotUpdated(isChecked) {
  10711.         _statistics2["default"].event({
  10712.             action: "drivers update list select all clicked"
  10713.         });
  10714.         return {
  10715.             type: "DRIVERS_TOGGLE_NOT_UPDATED",
  10716.             payload: {
  10717.                 isChecked: isChecked
  10718.             }
  10719.         };
  10720.     }
  10721.     function toggleNotRecommendedVisibility() {
  10722.         _statistics2["default"].event({
  10723.             action: "drivers installed list switch used"
  10724.         });
  10725.         return {
  10726.             type: "DRIVERS_TOGGLE_NOT_RECOMMENDED_VISIBILITY"
  10727.         };
  10728.     }
  10729.     function expandViewOptionsDropdown(isExpanded) {
  10730.         return {
  10731.             type: "DRIVERS_EXPAND_VIEW_OPTIONS_DROPDOWN",
  10732.             payload: {
  10733.                 isExpanded: isExpanded
  10734.             }
  10735.         };
  10736.     }
  10737.     function toggleViewOption(optionName) {
  10738.         _statistics2["default"].event({
  10739.             action: "drivers dropdown option used"
  10740.         });
  10741.         return {
  10742.             type: "DRIVERS_TOGGLE_VIEW_OPTION",
  10743.             payload: {
  10744.                 optionName: optionName
  10745.             }
  10746.         };
  10747.     }
  10748.     function toggleDriverUtilities(isChecked) {
  10749.         _statistics2["default"].event({
  10750.             action: "drivers utilities list select all clicked"
  10751.         });
  10752.         return {
  10753.             type: "TOGGLE_DRIVER_UTILITIES",
  10754.             payload: {
  10755.                 isChecked: isChecked
  10756.             }
  10757.         };
  10758.     }
  10759.     function toggleAllDrivers(isChecked) {
  10760.         _statistics2["default"].event({
  10761.             action: "drivers select all clicked"
  10762.         });
  10763.         return {
  10764.             type: "DRIVERS_CHECK_ALL_TOGGLED",
  10765.             payload: {
  10766.                 isChecked: isChecked
  10767.             }
  10768.         };
  10769.     }
  10770.     function openDriverMenu(id, _deviceId, isOpened) {
  10771.         return {
  10772.             type: "DRIVERS_OPEN_DRIVER_MENU",
  10773.             payload: {
  10774.                 id: id,
  10775.                 _deviceId: _deviceId,
  10776.                 isOpened: isOpened
  10777.             }
  10778.         };
  10779.     }
  10780.     exports.__esModule = !0;
  10781.     exports.expandDevice = expandDevice;
  10782.     exports.openDriverInfo = openDriverInfo;
  10783.     exports.openDeviceManagerFor = openDeviceManagerFor;
  10784.     exports.installSingleDriver = installSingleDriver;
  10785.     exports.installDrivers = installDrivers;
  10786.     exports.installDriversAndPrograms = installDriversAndPrograms;
  10787.     exports.installAll = installAll;
  10788.     exports.hideZeroDrivers = hideZeroDrivers;
  10789.     exports.toggleAdminMode = toggleAdminMode;
  10790.     exports.selectDeviceDriver = selectDeviceDriver;
  10791.     exports.toggleDevice = toggleDevice;
  10792.     exports.toggleNotInstalled = toggleNotInstalled;
  10793.     exports.toggleNotUpdated = toggleNotUpdated;
  10794.     exports.toggleNotRecommendedVisibility = toggleNotRecommendedVisibility;
  10795.     exports.expandViewOptionsDropdown = expandViewOptionsDropdown;
  10796.     exports.toggleViewOption = toggleViewOption;
  10797.     exports.toggleDriverUtilities = toggleDriverUtilities;
  10798.     exports.toggleAllDrivers = toggleAllDrivers;
  10799.     exports.openDriverMenu = openDriverMenu;
  10800.     var _uniq = __webpack_require__(159), _uniq2 = _interopRequireDefault(_uniq), _system = __webpack_require__(9), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _driversPrograms = __webpack_require__(36), _Installation = __webpack_require__(168), _Installation2 = _interopRequireDefault(_Installation);
  10801. }, function(module, exports, __webpack_require__) {
  10802.     "use strict";
  10803.     function _interopRequireDefault(obj) {
  10804.         return obj && obj.__esModule ? obj : {
  10805.             "default": obj
  10806.         };
  10807.     }
  10808.     function _asyncToGenerator(fn) {
  10809.         return function() {
  10810.             var gen = fn.apply(this, arguments);
  10811.             return new Promise(function(resolve, reject) {
  10812.                 function step(key, arg) {
  10813.                     try {
  10814.                         var info = gen[key](arg), value = info.value;
  10815.                     } catch (error) {
  10816.                         reject(error);
  10817.                         return;
  10818.                     }
  10819.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  10820.                         step("next", value);
  10821.                     }, function(err) {
  10822.                         step("throw", err);
  10823.                     });
  10824.                 }
  10825.                 return step("next");
  10826.             });
  10827.         };
  10828.     }
  10829.     function loadLanguageList() {
  10830.         return {
  10831.             type: "MENU_LANGUAGES_LIST_LOADED",
  10832.             payload: (0, _sortBy2["default"])(window.languagesList, "name")
  10833.         };
  10834.     }
  10835.     function changeLang(lang, eventAction) {
  10836.         var _this = this;
  10837.         return function() {
  10838.             var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(dispatch, getState) {
  10839.                 var state, page, prevLang;
  10840.                 return regeneratorRuntime.wrap(function(_context) {
  10841.                     for (;;) switch (_context.prev = _context.next) {
  10842.                       case 0:
  10843.                         if (eventAction) _statistics2["default"].event({
  10844.                             action: eventAction
  10845.                         });
  10846.                         state = getState();
  10847.                         page = state.page;
  10848.                         prevLang = state.lang.currentLanguage;
  10849.                         _context.next = 6;
  10850.                         return window.changeLanguage(lang);
  10851.  
  10852.                       case 6:
  10853.                         dispatch({
  10854.                             type: "CURRENT_LANGUAGE_UPDATED",
  10855.                             payload: lang
  10856.                         });
  10857.                         dispatch((0, _settingsActions.loadSettings)());
  10858.                         if ("GAMES" === page && "ru" === prevLang && "ru" !== lang) dispatch((0, _menuActions.navigate)("DRIVERS"));
  10859.                         window.SoftPack.applyAll();
  10860.  
  10861.                       case 10:
  10862.                       case "end":
  10863.                         return _context.stop();
  10864.                     }
  10865.                 }, _callee, _this);
  10866.             }));
  10867.             return function(_x, _x2) {
  10868.                 return _ref.apply(this, arguments);
  10869.             };
  10870.         }();
  10871.     }
  10872.     exports.__esModule = !0;
  10873.     exports.loadLanguageList = loadLanguageList;
  10874.     exports.changeLang = changeLang;
  10875.     var _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _sortBy = __webpack_require__(518), _sortBy2 = _interopRequireDefault(_sortBy), _settingsActions = __webpack_require__(165), _menuActions = __webpack_require__(62);
  10876. }, function(module, exports, __webpack_require__) {
  10877.     "use strict";
  10878.     function _interopRequireDefault(obj) {
  10879.         return obj && obj.__esModule ? obj : {
  10880.             "default": obj
  10881.         };
  10882.     }
  10883.     function _classCallCheck(instance, Constructor) {
  10884.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  10885.     }
  10886.     exports.__esModule = !0;
  10887.     var _system = __webpack_require__(9), _logs = __webpack_require__(3), _wget = __webpack_require__(150), _wget2 = _interopRequireDefault(_wget), _unzip = __webpack_require__(167), _unzip2 = _interopRequireDefault(_unzip), _systemScanner = __webpack_require__(86), _systemScanner2 = _interopRequireDefault(_systemScanner), _download = __webpack_require__(145), log = (0,
  10888.     _logs.getLogger)("external"), External = function() {
  10889.         function External(_ref) {
  10890.             var url = _ref.url, downloadPath = _ref.downloadPath, dirPath = _ref.dirPath, exePath = _ref.exePath;
  10891.             _classCallCheck(this, External);
  10892.             this.url = url;
  10893.             this.filename = url.split("/").slice(-1)[0];
  10894.             this.downloadPath = downloadPath;
  10895.             this.zipPath = this.downloadPath + "\\" + this.filename;
  10896.             this.dirPath = dirPath;
  10897.             this.exePath = this.dirPath + "\\" + exePath;
  10898.         }
  10899.         External.prototype.Download = function() {
  10900.             var exePath = this.exePath, url = this.url, zipPath = this.zipPath, dirPath = this.dirPath, downloadPath = this.downloadPath;
  10901.             if (_system.fso.FileExists(exePath)) {
  10902.                 log.info("already exists " + exePath, {
  10903.                     exePath: exePath
  10904.                 }, "exists");
  10905.                 return Promise.resolve();
  10906.             }
  10907.             var events = {
  10908.                 beforeDownloading: function() {},
  10909.                 afterDownloading: function() {}
  10910.             };
  10911.             log.info("downloading " + url, {
  10912.                 url: url
  10913.             }, "downloading");
  10914.             return _systemScanner2["default"].waitFor("binaries").then(function() {
  10915.                 (0, _download.ensure)({
  10916.                     name: "driverpack-wget.exe",
  10917.                     aliases: [ "wget.exe" ]
  10918.                 });
  10919.                 return _wget2["default"].downloadFiles(events, downloadPath, [ {
  10920.                     link: url
  10921.                 } ]);
  10922.             }).then(function() {
  10923.                 (0, _download.ensure)({
  10924.                     name: "driverpack-7za.exe",
  10925.                     aliases: [ "7za.exe" ]
  10926.                 });
  10927.                 log.info("unpacking " + zipPath, {
  10928.                     zipPath: zipPath
  10929.                 }, "unpacking");
  10930.                 return _unzip2["default"].run7z(dirPath, zipPath);
  10931.             }).caught(function(error) {
  10932.                 log.error("error", {
  10933.                     error: error
  10934.                 }, "error");
  10935.             });
  10936.         };
  10937.         return External;
  10938.     }();
  10939.     exports["default"] = External;
  10940.     module.exports = exports["default"];
  10941. }, function(module, exports, __webpack_require__) {
  10942.     "use strict";
  10943.     function _asyncToGenerator(fn) {
  10944.         return function() {
  10945.             var gen = fn.apply(this, arguments);
  10946.             return new Promise(function(resolve, reject) {
  10947.                 function step(key, arg) {
  10948.                     try {
  10949.                         var info = gen[key](arg), value = info.value;
  10950.                     } catch (error) {
  10951.                         reject(error);
  10952.                         return;
  10953.                     }
  10954.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  10955.                         step("next", value);
  10956.                     }, function(err) {
  10957.                         step("throw", err);
  10958.                     });
  10959.                 }
  10960.                 return step("next");
  10961.             });
  10962.         };
  10963.     }
  10964.     function _classCallCheck(instance, Constructor) {
  10965.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  10966.     }
  10967.     exports.__esModule = !0;
  10968.     var _http = __webpack_require__(102), _registry = __webpack_require__(30), _utils = __webpack_require__(23), User = function() {
  10969.         function User() {
  10970.             _classCallCheck(this, User);
  10971.         }
  10972.         User.prototype.getToken = function() {
  10973.             function getToken() {
  10974.                 return _ref.apply(this, arguments);
  10975.             }
  10976.             var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
  10977.                 var endpoint, _ref2, body;
  10978.                 return regeneratorRuntime.wrap(function(_context) {
  10979.                     for (;;) switch (_context.prev = _context.next) {
  10980.                       case 0:
  10981.                         endpoint = window.authEndpoint + "/api/token";
  10982.                         _context.next = 3;
  10983.                         return (0, _http.httppost)(endpoint, {});
  10984.  
  10985.                       case 3:
  10986.                         _ref2 = _context.sent;
  10987.                         body = _ref2.body;
  10988.                         this.token = body.token;
  10989.  
  10990.                       case 6:
  10991.                       case "end":
  10992.                         return _context.stop();
  10993.                     }
  10994.                 }, _callee, this);
  10995.             }));
  10996.             return getToken;
  10997.         }();
  10998.         User.prototype.authTimeoutAction = function(_ref3, waitTo) {
  10999.             var _this = this, resolve = _ref3.resolve, reject = _ref3.reject;
  11000.             return _asyncToGenerator(regeneratorRuntime.mark(function _callee2() {
  11001.                 var endpoint, query, _ref5, headers, body, session;
  11002.                 return regeneratorRuntime.wrap(function(_context2) {
  11003.                     for (;;) switch (_context2.prev = _context2.next) {
  11004.                       case 0:
  11005.                         _context2.prev = 0;
  11006.                         endpoint = window.authEndpoint + "/api/auth/jwt";
  11007.                         query = {
  11008.                             token: _this.token
  11009.                         };
  11010.                         _context2.next = 5;
  11011.                         return (0, _http.httppost)(endpoint, query);
  11012.  
  11013.                       case 5:
  11014.                         _ref5 = _context2.sent;
  11015.                         headers = _ref5.headers;
  11016.                         body = _ref5.body;
  11017.                         session = headers["x-drp-session"];
  11018.                         delete _this.token;
  11019.                         Object.assign(_this, {
  11020.                             profile: body,
  11021.                             session: session
  11022.                         });
  11023.                         (0, _registry.RegWrite)("HKCU\\SOFTWARE\\drpsu\\session", session);
  11024.                         delete _this.authTimeout;
  11025.                         resolve(_this);
  11026.                         _context2.next = 19;
  11027.                         break;
  11028.  
  11029.                       case 16:
  11030.                         _context2.prev = 16;
  11031.                         _context2.t0 = _context2["catch"](0);
  11032.                         if (Date.now() < waitTo) _this.authTimeout = setTimeout(_this.authTimeoutAction({
  11033.                             resolve: resolve,
  11034.                             reject: reject
  11035.                         }, waitTo), 1e3); else {
  11036.                             delete _this.authTimeout;
  11037.                             reject(_context2.t0);
  11038.                         }
  11039.  
  11040.                       case 19:
  11041.                       case "end":
  11042.                         return _context2.stop();
  11043.                     }
  11044.                 }, _callee2, _this, [ [ 0, 16 ] ]);
  11045.             }));
  11046.         };
  11047.         User.prototype.authorize = function() {
  11048.             function authorize() {
  11049.                 return _ref6.apply(this, arguments);
  11050.             }
  11051.             var _ref6 = _asyncToGenerator(regeneratorRuntime.mark(function _callee3() {
  11052.                 var waitTo, _this2 = this;
  11053.                 return regeneratorRuntime.wrap(function(_context3) {
  11054.                     for (;;) switch (_context3.prev = _context3.next) {
  11055.                       case 0:
  11056.                         if (this.authTimeout) {
  11057.                             clearTimeout(this.authTimeout);
  11058.                             delete this.authTimeout;
  11059.                         }
  11060.                         if (this.token) {
  11061.                             _context3.next = 4;
  11062.                             break;
  11063.                         }
  11064.                         _context3.next = 4;
  11065.                         return this.getToken();
  11066.  
  11067.                       case 4:
  11068.                         (0, _utils.goToUrl)(window.authEndpoint + "/" + window.lang + "?token=" + this.token);
  11069.                         waitTo = Date.now() + 3e5;
  11070.                         return _context3.abrupt("return", new Promise(function(resolve, reject) {
  11071.                             _this2.authTimeout = setTimeout(_this2.authTimeoutAction({
  11072.                                 resolve: resolve,
  11073.                                 reject: reject
  11074.                             }, waitTo), 1e3);
  11075.                         }));
  11076.  
  11077.                       case 7:
  11078.                       case "end":
  11079.                         return _context3.stop();
  11080.                     }
  11081.                 }, _callee3, this);
  11082.             }));
  11083.             return authorize;
  11084.         }();
  11085.         User.prototype.getSession = function() {
  11086.             function getSession() {
  11087.                 return _ref7.apply(this, arguments);
  11088.             }
  11089.             var _ref7 = _asyncToGenerator(regeneratorRuntime.mark(function _callee4() {
  11090.                 var session;
  11091.                 return regeneratorRuntime.wrap(function(_context4) {
  11092.                     for (;;) switch (_context4.prev = _context4.next) {
  11093.                       case 0:
  11094.                         session = (0, _registry.RegRead)("HKCU\\SOFTWARE\\drpsu\\session");
  11095.                         if (!session) {
  11096.                             _context4.next = 5;
  11097.                             break;
  11098.                         }
  11099.                         this.session = session;
  11100.                         _context4.next = 6;
  11101.                         break;
  11102.  
  11103.                       case 5:
  11104.                         throw new Error("No session found");
  11105.  
  11106.                       case 6:
  11107.                       case "end":
  11108.                         return _context4.stop();
  11109.                     }
  11110.                 }, _callee4, this);
  11111.             }));
  11112.             return getSession;
  11113.         }();
  11114.         User.prototype.getHeaders = function() {
  11115.             if (!this.session) this.getSession();
  11116.             return {
  11117.                 "x-drp-session": this.session
  11118.             };
  11119.         };
  11120.         User.prototype.getId = function() {
  11121.             return this.profile && this.profile.id;
  11122.         };
  11123.         User.prototype.fetch = function() {
  11124.             function fetch() {
  11125.                 return _ref8.apply(this, arguments);
  11126.             }
  11127.             var _ref8 = _asyncToGenerator(regeneratorRuntime.mark(function _callee5() {
  11128.                 var endpoint, headers, _ref9, body;
  11129.                 return regeneratorRuntime.wrap(function(_context5) {
  11130.                     for (;;) switch (_context5.prev = _context5.next) {
  11131.                       case 0:
  11132.                         endpoint = window.authEndpoint + "/api/session";
  11133.                         headers = this.getHeaders();
  11134.                         _context5.next = 4;
  11135.                         return (0, _http.httppost)(endpoint, {}, {
  11136.                             headers: headers
  11137.                         });
  11138.  
  11139.                       case 4:
  11140.                         _ref9 = _context5.sent;
  11141.                         body = _ref9.body;
  11142.                         Object.assign(this, {
  11143.                             profile: body
  11144.                         });
  11145.  
  11146.                       case 7:
  11147.                       case "end":
  11148.                         return _context5.stop();
  11149.                     }
  11150.                 }, _callee5, this);
  11151.             }));
  11152.             return fetch;
  11153.         }();
  11154.         User.prototype.unauthorize = function() {
  11155.             function unauthorize() {
  11156.                 return _ref10.apply(this, arguments);
  11157.             }
  11158.             var _ref10 = _asyncToGenerator(regeneratorRuntime.mark(function _callee6() {
  11159.                 var endpoint, headers;
  11160.                 return regeneratorRuntime.wrap(function(_context6) {
  11161.                     for (;;) switch (_context6.prev = _context6.next) {
  11162.                       case 0:
  11163.                         endpoint = window.authEndpoint + "/api/logout";
  11164.                         headers = this.getHeaders();
  11165.                         _context6.next = 4;
  11166.                         return (0, _http.httppost)(endpoint, {}, {
  11167.                             headers: headers
  11168.                         });
  11169.  
  11170.                       case 4:
  11171.                         delete this.profile;
  11172.  
  11173.                       case 5:
  11174.                       case "end":
  11175.                         return _context6.stop();
  11176.                     }
  11177.                 }, _callee6, this);
  11178.             }));
  11179.             return unauthorize;
  11180.         }();
  11181.         return User;
  11182.     }();
  11183.     exports["default"] = new User();
  11184.     module.exports = exports["default"];
  11185. }, function(module, exports, __webpack_require__) {
  11186.     "use strict";
  11187.     exports.__esModule = !0;
  11188.     var eventListener = window.attachEvent || window.addEventListener, unloadEvent = window.attachEvent ? "onbeforeunload" : "beforeunload";
  11189.     exports.addUnloadListener = function(callback) {
  11190.         return eventListener(unloadEvent, callback);
  11191.     };
  11192. }, function(module, exports) {
  11193.     module.exports = [ {
  11194.         name: "HP",
  11195.         altNames: [ "hewlett-packard", "hp", "probook", "hp-pavilion" ],
  11196.         prioritized: 1
  11197.     }, {
  11198.         name: "Asus",
  11199.         altNames: [ "asus", "asustek" ],
  11200.         prioritized: 1
  11201.     }, {
  11202.         name: "Lenovo",
  11203.         altNames: [ "lenovo", "lenovo notebook", "lnv" ],
  11204.         prioritized: 1
  11205.     }, {
  11206.         name: "Acer",
  11207.         altNames: [ "acer" ],
  11208.         prioritized: 1
  11209.     }, {
  11210.         name: "Dell",
  11211.         altNames: [ "dell", "dellinc", "wyse" ],
  11212.         prioritized: 1
  11213.     }, {
  11214.         name: "Toshiba",
  11215.         altNames: [ "toshiba", "semp toshiba", "semp toshiba informaticaa", "semp toshiba informatica ltda" ],
  11216.         prioritized: 1
  11217.     }, {
  11218.         name: "Samsung",
  11219.         altNames: [ "samsung" ],
  11220.         prioritized: 1
  11221.     }, {
  11222.         name: "Sony",
  11223.         altNames: [ "sony", "vaio" ],
  11224.         prioritized: 1
  11225.     }, {
  11226.         name: "Packard Bell",
  11227.         altNames: [ "packard bell", "packard bells", "packard bell bv", "packard bell nec", "parkard bell" ],
  11228.         prioritized: 1
  11229.     }, {
  11230.         name: "eMachines",
  11231.         altNames: [ "emachines" ],
  11232.         prioritized: 0
  11233.     }, {
  11234.         name: "Fujitsu",
  11235.         altNames: [ "fujitsu", "fujitsu siemens", "fujitsu siemems" ],
  11236.         prioritized: 1
  11237.     }, {
  11238.         name: "Pegatron",
  11239.         altNames: [ "pegatron" ],
  11240.         prioritized: 0
  11241.     }, {
  11242.         name: "Intel",
  11243.         altNames: [ "intel", "intelr", "intel(r)atom" ],
  11244.         prioritized: 0
  11245.     }, {
  11246.         name: "MSI",
  11247.         altNames: [ "micro-star", "msi_nb", "msi", "micro-star int'l" ],
  11248.         prioritized: 1
  11249.     }, {
  11250.         name: "Clevo",
  11251.         altNames: [ "clevo" ],
  11252.         prioritized: 0
  11253.     }, {
  11254.         name: "Positivo",
  11255.         altNames: [ "positivo", "positivo informatica", "positivo informaticaa", "positivo bgh", "positivo informatica s/a" ],
  11256.         prioritized: 0
  11257.     }, {
  11258.         name: "Gateway",
  11259.         altNames: [ "gateway" ],
  11260.         prioritized: 0
  11261.     }, {
  11262.         name: "Apple",
  11263.         altNames: [ "apple" ],
  11264.         prioritized: 1
  11265.     }, {
  11266.         name: "LG",
  11267.         altNames: [ "lg" ],
  11268.         prioritized: 1
  11269.     }, {
  11270.         name: "DNS",
  11271.         altNames: [ "dns", "dns center", "dns computer center" ],
  11272.         prioritized: 0
  11273.     }, {
  11274.         name: "Quanta",
  11275.         altNames: [ "quanta", "kn1", "qci" ],
  11276.         prioritized: 0
  11277.     }, {
  11278.         name: "IBM",
  11279.         altNames: [ "ibm" ],
  11280.         prioritized: 0
  11281.     }, {
  11282.         name: "Digibras",
  11283.         altNames: [ "digibras" ],
  11284.         prioritized: 0
  11285.     }, {
  11286.         name: "Compal",
  11287.         altNames: [ "compal" ],
  11288.         prioritized: 0
  11289.     }, {
  11290.         name: "Medion",
  11291.         altNames: [ "medion", "medionag", "medionpc", "medionnb" ],
  11292.         prioritized: 0
  11293.     }, {
  11294.         name: "Casper",
  11295.         altNames: [ "casper", "casper bilgisayar", "casper bilgisayar sistemleri", "casper bilgisayar sistemleri.a.s", "casper bilgisayar sistemleria", "casper bilgisayar sistemleris" ],
  11296.         prioritized: 0
  11297.     }, {
  11298.         name: "Insyde",
  11299.         altNames: [ "insyde" ],
  11300.         prioritized: 0
  11301.     }, {
  11302.         name: "Itautec",
  11303.         altNames: [ "itautec", "itauteca", "itautec philco", "itautec philcoa" ],
  11304.         prioritized: 0
  11305.     }, {
  11306.         name: "Axioo",
  11307.         altNames: [ "axioo" ],
  11308.         prioritized: 0
  11309.     }, {
  11310.         name: "VIT",
  11311.         altNames: [ "vit" ],
  11312.         prioritized: 0
  11313.     }, {
  11314.         name: "Alienware",
  11315.         altNames: [ "alienware" ],
  11316.         prioritized: 0
  11317.     }, {
  11318.         name: "NEC",
  11319.         altNames: [ "nec", "necs", "nec csd", "necs sas" ],
  11320.         prioritized: 0
  11321.     }, {
  11322.         name: "HCL",
  11323.         altNames: [ "hcl", "hcl infosystems" ],
  11324.         prioritized: 0
  11325.     }, {
  11326.         name: "DEXP",
  11327.         altNames: [ "dexp" ],
  11328.         prioritized: 0
  11329.     }, {
  11330.         name: "Arcelik",
  11331.         altNames: [ "arcelik", "arceliks", "arcelik-a.s" ],
  11332.         prioritized: 0
  11333.     }, {
  11334.         name: "Microsoft",
  11335.         altNames: [ "microsoft" ],
  11336.         prioritized: 0
  11337.     }, {
  11338.         name: "Panasonic",
  11339.         altNames: [ "panasonic", "matsushita electric industrial" ],
  11340.         prioritized: 1
  11341.     }, {
  11342.         name: "ECS",
  11343.         altNames: [ "ecs" ],
  11344.         prioritized: 0
  11345.     }, {
  11346.         name: "Benq",
  11347.         altNames: [ "benq" ],
  11348.         prioritized: 0
  11349.     }, {
  11350.         name: "Haier",
  11351.         altNames: [ "haier", "haiercomputer", "haier information" ],
  11352.         prioritized: 0
  11353.     }, {
  11354.         name: "Prestigio",
  11355.         altNames: [ "prestigio" ],
  11356.         prioritized: 0
  11357.     }, {
  11358.         name: "Gigabyte",
  11359.         altNames: [ "gigabyte", "gbt", "gigabyte tecohnology" ],
  11360.         prioritized: 0
  11361.     }, {
  11362.         name: "Compaq",
  11363.         altNames: [ "compaq" ],
  11364.         prioritized: 0
  11365.     }, {
  11366.         name: "Bangho",
  11367.         altNames: [ "bangho" ],
  11368.         prioritized: 0
  11369.     }, {
  11370.         name: "ExoPC",
  11371.         altNames: [ "exo", "exopc" ],
  11372.         prioritized: 0
  11373.     }, {
  11374.         name: "Megaware",
  11375.         altNames: [ "megaware" ],
  11376.         prioritized: 0
  11377.     }, {
  11378.         name: "Wipro",
  11379.         altNames: [ "wipro" ],
  11380.         prioritized: 0
  11381.     }, {
  11382.         name: "Exper",
  11383.         altNames: [ "exper", "expers", "exper@datateknik", "karizma a5v" ],
  11384.         prioritized: 0
  11385.     }, {
  11386.         name: "CCE",
  11387.         altNames: [ "cce", "cceinf" ],
  11388.         prioritized: 0
  11389.     }, {
  11390.         name: "Rover",
  11391.         altNames: [ "rover", "roverbook", "infomash", "ooo infomash", "ooo infomach" ],
  11392.         prioritized: 0
  11393.     }, {
  11394.         name: "Oysters",
  11395.         altNames: [ "oysters" ],
  11396.         prioritized: 0
  11397.     }, {
  11398.         name: "Spa Condor",
  11399.         altNames: [ "spa condor" ],
  11400.         prioritized: 0
  11401.     }, {
  11402.         name: "Irbis",
  11403.         altNames: [ "irbis" ],
  11404.         prioritized: 0
  11405.     }, {
  11406.         name: "Hasee",
  11407.         altNames: [ "hasee", "hasee co,.ltd" ],
  11408.         prioritized: 0
  11409.     }, {
  11410.         name: "Siragon",
  11411.         altNames: [ "siragon" ],
  11412.         prioritized: 0
  11413.     }, {
  11414.         name: "RM",
  11415.         altNames: [ "rm plc", "rm education" ],
  11416.         prioritized: 0
  11417.     }, {
  11418.         name: "Alaska",
  11419.         altNames: [ "alaska" ],
  11420.         prioritized: 0
  11421.     }, {
  11422.         name: "Monster",
  11423.         altNames: [ "monster", "monster notebook" ],
  11424.         prioritized: 0
  11425.     }, {
  11426.         name: "Micromax",
  11427.         altNames: [ "micromax" ],
  11428.         prioritized: 0
  11429.     }, {
  11430.         name: "MTC",
  11431.         altNames: [ "mtc" ],
  11432.         prioritized: 0
  11433.     }, {
  11434.         name: "Advance",
  11435.         altNames: [ "advance", "advan", "advanc" ],
  11436.         prioritized: 0
  11437.     }, {
  11438.         name: "Gericom",
  11439.         altNames: [ "gericom" ],
  11440.         prioritized: 0
  11441.     }, {
  11442.         name: "i-Life",
  11443.         altNames: [ "ilife", "i-life", "i-life digital llc" ],
  11444.         prioritized: 0
  11445.     }, {
  11446.         name: "Noblex",
  11447.         altNames: [ "noblex", "noblex argentina" ],
  11448.         prioritized: 0
  11449.     }, {
  11450.         name: "Deltron",
  11451.         altNames: [ "deltron" ],
  11452.         prioritized: 0
  11453.     }, {
  11454.         name: "DixonsXP",
  11455.         altNames: [ "dixonsxp" ],
  11456.         prioritized: 0
  11457.     }, {
  11458.         name: "Wortmann",
  11459.         altNames: [ "wortmann" ],
  11460.         prioritized: 0
  11461.     }, {
  11462.         name: "YiFang",
  11463.         altNames: [ "yifang" ],
  11464.         prioritized: 0
  11465.     }, {
  11466.         name: "PTLTD",
  11467.         altNames: [ "ptltd" ],
  11468.         prioritized: 0
  11469.     }, {
  11470.         name: "FIC",
  11471.         altNames: [ "fic" ],
  11472.         prioritized: 0
  11473.     }, {
  11474.         name: "CZC",
  11475.         altNames: [ "czc" ],
  11476.         prioritized: 0
  11477.     }, {
  11478.         name: "Onda",
  11479.         altNames: [ "onda" ],
  11480.         prioritized: 0
  11481.     }, {
  11482.         name: "DBM",
  11483.         altNames: [ "dbm", "dbm maroc" ],
  11484.         prioritized: 0
  11485.     }, {
  11486.         name: "Maxdata",
  11487.         altNames: [ "maxdata" ],
  11488.         prioritized: 0
  11489.     }, {
  11490.         name: "PinnacleMicro",
  11491.         altNames: [ "pinnaclemicro", "pinnacle micro" ],
  11492.         prioritized: 0
  11493.     }, {
  11494.         name: "Login",
  11495.         altNames: [ "login", "login informaticaa", "login informática", "login informáticaa" ],
  11496.         prioritized: 0
  11497.     }, {
  11498.         name: "Vestel",
  11499.         altNames: [ "vestel", "vestel dijitals" ],
  11500.         prioritized: 0
  11501.     }, {
  11502.         name: "PC Smart",
  11503.         altNames: [ "pcsmart", "pcsmarta", "pcsmarta.s" ],
  11504.         prioritized: 0
  11505.     }, {
  11506.         name: "Compumax",
  11507.         altNames: [ "compumax", "compumaxa" ],
  11508.         prioritized: 0
  11509.     }, {
  11510.         name: "Mustek",
  11511.         altNames: [ "mustek", "mustek6376mst6376" ],
  11512.         prioritized: 0
  11513.     }, {
  11514.         name: "Olidata",
  11515.         altNames: [ "olidata", "olidata chilea", "olidatap", "computacion olidata" ],
  11516.         prioritized: 0
  11517.     }, {
  11518.         name: "Radio Victoria Fueguina",
  11519.         altNames: [ "radio victoria fueguina", "radio victoria fueguinaa" ],
  11520.         prioritized: 0
  11521.     }, {
  11522.         name: "Shenzhen",
  11523.         altNames: [ "shenzhen", "shenzhen da&fong", "shenzhen emc", "shenzhen yungtai imp. and exp. co", "shenzhen yungtai imp. and exp. co," ],
  11524.         prioritized: 0
  11525.     }, {
  11526.         name: "Depo",
  11527.         altNames: [ "depo", "depos" ],
  11528.         prioritized: 0
  11529.     }, {
  11530.         name: "Digitron",
  11531.         altNames: [ "digitron", "digitron da amazonia" ],
  11532.         prioritized: 0
  11533.     }, {
  11534.         name: "Lanix",
  11535.         altNames: [ "lanix", "lanix todos los derechos reservados", "corporativo lanix", "corporativo lanix,a. de c.v" ],
  11536.         prioritized: 0
  11537.     }, {
  11538.         name: "TCL",
  11539.         altNames: [ "tcl", "tcl cor.,ltd" ],
  11540.         prioritized: 0
  11541.     }, {
  11542.         name: "THD",
  11543.         altNames: [ "thd", "thd(thread)" ],
  11544.         prioritized: 0
  11545.     }, {
  11546.         name: "BGH",
  11547.         altNames: [ "bgh", "bgh e-nova" ],
  11548.         prioritized: 0
  11549.     }, {
  11550.         name: "Founder",
  11551.         altNames: [ "founder", "founder pc" ],
  11552.         prioritized: 0
  11553.     }, {
  11554.         name: "Microboard",
  11555.         altNames: [ "microboard", "microboard ind.e com.de produtos elet.itda" ],
  11556.         prioritized: 0
  11557.     }, {
  11558.         name: "Neo",
  11559.         altNames: [ "neo", "neo manufacturing & services", "neophl" ],
  11560.         prioritized: 0
  11561.     }, {
  11562.         name: "Standard",
  11563.         altNames: [ "standard", "stand" ],
  11564.         prioritized: 0
  11565.     }, {
  11566.         name: "Zepto",
  11567.         altNames: [ "zepto", "zeptol" ],
  11568.         prioritized: 0
  11569.     }, {
  11570.         name: "Zyrex",
  11571.         altNames: [ "zyrex", "zyrex system" ],
  11572.         prioritized: 0
  11573.     }, {
  11574.         name: "Crea",
  11575.         altNames: [ "crea", "creas" ],
  11576.         prioritized: 0
  11577.     }, {
  11578.         name: "Axdia",
  11579.         altNames: [ "axdia", "axdia gmbh" ],
  11580.         prioritized: 0
  11581.     }, {
  11582.         name: "Bytespeed",
  11583.         altNames: [ "bytespeed", "bytespeed llc" ],
  11584.         prioritized: 0
  11585.     }, {
  11586.         name: "Advantech",
  11587.         altNames: [ "advantech", "advantec" ],
  11588.         prioritized: 0
  11589.     }, {
  11590.         name: "Airis",
  11591.         altNames: [ "airis", "airs srl" ],
  11592.         prioritized: 0
  11593.     }, {
  11594.         name: "Beko",
  11595.         altNames: [ "beko", "bekopc" ],
  11596.         prioritized: 0
  11597.     }, {
  11598.         name: "Essentiel B",
  11599.         altNames: [ "essentiel b", "essentielb" ],
  11600.         prioritized: 0
  11601.     }, {
  11602.         name: "GoClever",
  11603.         altNames: [ "goclever" ],
  11604.         prioritized: 0
  11605.     }, {
  11606.         name: "iBall",
  11607.         altNames: [ "iball" ],
  11608.         prioritized: 0
  11609.     }, {
  11610.         name: "GD Itronix",
  11611.         altNames: [ "itronix", "gd itronix" ],
  11612.         prioritized: 0
  11613.     }, {
  11614.         name: "JP SA Couto",
  11615.         altNames: [ "jpsacouto", "jp sa couto" ],
  11616.         prioritized: 0
  11617.     }, {
  11618.         name: "MIPI",
  11619.         altNames: [ "mipi", "mipi pc" ],
  11620.         prioritized: 0
  11621.     }, {
  11622.         name: "Mouse Computer",
  11623.         altNames: [ "mouse computer", "mousecomputer" ],
  11624.         prioritized: 0
  11625.     }, {
  11626.         name: "Getac",
  11627.         altNames: [ "getac", "ncstech" ],
  11628.         prioritized: 0
  11629.     }, {
  11630.         name: "Phoenix",
  11631.         altNames: [ "phoenix", "phoenix/sis" ],
  11632.         prioritized: 0
  11633.     }, {
  11634.         name: "Stone",
  11635.         altNames: [ "stone", "stone-computers" ],
  11636.         prioritized: 0
  11637.     }, {
  11638.         name: "Sun",
  11639.         altNames: [ "sun", "sun microsystems" ],
  11640.         prioritized: 0
  11641.     }, {
  11642.         name: "Third Wave",
  11643.         altNames: [ "third wave", "thirdwave" ],
  11644.         prioritized: 0
  11645.     }, {
  11646.         name: "Biostar",
  11647.         altNames: [ "biostar", "biostar group" ]
  11648.     }, {
  11649.         name: "Noname",
  11650.         altNames: [ "a14cr", "a14cu", "a15cr03", "accm", "actebis", "algorithm", "american megatrends", "aral oyun ve konsols", "ati", "bauhn", "blank", "bluelight", "britania", "brunenit", "buster", "byt80cp", "centra", "cevena", "common version d12", "complet electro serv", "connect", "coradira", "creative vision", "default string", "dialogue", "dummymanufacturer", "ea", "efirstview", "egreat", "equus systems", "eurl saterex", "eurotradellc", "foxconn", "garbarino saic", "generic", "grupo nucleo", "h-buster", "head-links", "houter", "ifsa", "inco co,a. de c.v", "infinity", "insyde", "inupur", "jingwah-kaoge", "kampen", "kanji", "kennex", "l3000 y300", "logycoms", "merlion trade overseas", "mpman", "multilaser", "n3", "n/a", "navigator", "nca group", "n d", "nikon battery", "noname", "none", "notebook", "novatech", "o", "o.e.m", "o.e.m.", "odm", "oem", "oem pc", "oem default", "ox", "parallels software", "pcsy09", "pega pc", "plaisio", "quanmax", "soltech", "stem manufacturer", "system manufacturer", "telecomitalia", "tenco ind. com", "times", "timi", "to be filled by o.e.m", "top it industries sdn bhd", "tora", "tps", "trinity", "tsinghua tongfang", "uli", "uniwill", "unknown", "v5", "xxxxxx" ],
  11651.         prioritized: 0
  11652.     } ];
  11653. }, function(module, exports, __webpack_require__) {
  11654.     "use strict";
  11655.     module.exports = function(module) {
  11656.         if (!module.webpackPolyfill) {
  11657.             module.deprecate = function() {};
  11658.             module.paths = [];
  11659.             if (!module.children) module.children = [];
  11660.             try {
  11661.                 Object.defineProperty(module, "loaded", {
  11662.                     enumerable: !0,
  11663.                     configurable: !1,
  11664.                     get: function() {
  11665.                         return module.l;
  11666.                     }
  11667.                 });
  11668.                 Object.defineProperty(module, "id", {
  11669.                     enumerable: !0,
  11670.                     configurable: !1,
  11671.                     get: function() {
  11672.                         return module.i;
  11673.                     }
  11674.                 });
  11675.             } catch (e) {
  11676.                 module.id = module.i;
  11677.             }
  11678.             module.webpackPolyfill = !0;
  11679.         }
  11680.         return module;
  11681.     };
  11682. }, function(module, exports, __webpack_require__) {
  11683.     "use strict";
  11684.     exports.__esModule = !0;
  11685.     var _fso = __webpack_require__(18), _shell = __webpack_require__(14), yandexExtensionsIds = [ "lgdnilodcpljomelbbnpgdogdbmclbni", "jdfonankhfnhihdcpaagpabbaoclnjfp", "bejnpnkhfgfkcpgikiinojlmdcjimobi", "necfmkplpminfjagblfabggomdpaakan", "ablpcikjmhamjanpibkccdmpoekjigja", "hpcghcdjnehpkdecaflpedhklimnejia", "pjfkgjlnocfakoheoapicnknoglipapd", "dkekdlkmdpipihonapoleopfekmapadh", "gbjeiekahklbgbfccohipinhgaadijad", "cpegcopcfajiiibidlaelhjjblpefbjk", "bhjcgomkanpkpblokebecknhahgkcmoo", "geidjeefddhgefeplhdlegoldlgiodon", "pfigaoamnncijbgomifamkmkidnnlikl", "jkfblcbjfojmgagikhldeppgmgdpjkpl", "gdljkkmghdkckhaogaemgbgdfophkfco" ], localAppData = _shell.WshShell.ExpandEnvironmentStrings("%localappdata%"), preferencesFilePaths = [ localAppData + "\\Google\\Chrome\\User Data\\Default\\Preferences", localAppData + "\\Google\\Chrome\\User Data\\Default\\Secure Preferences" ], convertWebkitTimestamp = function(value) {
  11686.         if ("string" == typeof value) value = parseInt(value);
  11687.         return new Date(value / 1e3 - 116444736e5).valueOf();
  11688.     };
  11689.     exports["default"] = function() {
  11690.         var res = {};
  11691.         preferencesFilePaths.forEach(function(filePath) {
  11692.             if (_fso.fso.FileExists(filePath)) {
  11693.                 var textStream = _fso.fso.OpenTextFile(filePath, 1, !0), text = textStream.ReadAll();
  11694.                 textStream.Close();
  11695.                 var data = JSON.parse(text);
  11696.                 if (data.extensions && data.extensions.settings) Object.entries(data.extensions.settings).forEach(function(_ref) {
  11697.                     var id = _ref[0], params = _ref[1];
  11698.                     if (params.manifest) res[id] = {
  11699.                         name: params.manifest.name,
  11700.                         version: params.manifest.version,
  11701.                         installTime: convertWebkitTimestamp(params.install_time),
  11702.                         isEnabled: 1 === params.state,
  11703.                         meta: {
  11704.                             installedToday: convertWebkitTimestamp(params.install_time) > Date.now() - 864e5,
  11705.                             isYandexById: yandexExtensionsIds.includes(id),
  11706.                             isYandexByName: /(yandex|яндекс)/gi.test(params.manifest.name)
  11707.                         }
  11708.                     };
  11709.                 });
  11710.             }
  11711.         });
  11712.         return res;
  11713.     };
  11714.     module.exports = exports["default"];
  11715. }, function(module, exports, __webpack_require__) {
  11716.     "use strict";
  11717.     function _classCallCheck(instance, Constructor) {
  11718.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  11719.     }
  11720.     exports.__esModule = !0;
  11721.     var _fso = __webpack_require__(18), _specialFolders = __webpack_require__(22), _localFiles = __webpack_require__(20), toFixed = function(num) {
  11722.         return ("0" + num).slice(-2);
  11723.     }, FileWriter = function() {
  11724.         function FileWriter() {
  11725.             _classCallCheck(this, FileWriter);
  11726.             this.logFolder = _specialFolders.AppFolder + "\\Logs\\";
  11727.         }
  11728.         FileWriter.prototype.getFilename = function() {
  11729.             var timestamp = new Date();
  11730.             return "log___" + [ timestamp.getFullYear(), toFixed(timestamp.getMonth() + 1), toFixed(timestamp.getDate()), toFixed(timestamp.getHours()), toFixed(timestamp.getMinutes()), toFixed(timestamp.getSeconds()) ].join("-");
  11731.         };
  11732.         FileWriter.prototype.init = function() {
  11733.             try {
  11734.                 (0, _localFiles.ensurePath)(this.logFolder);
  11735.                 var filename = "" + this.logFolder + this.getFilename() + ".html";
  11736.                 this.file = _fso.fso.CreateTextFile(filename, !0);
  11737.                 this.file.WriteLine("<html>\n<head>\n  <meta charset='windows-1251'/>\n  <script type='text/javascript' src='http://static.drp.su/update/logs/script.js'><\/script>\n  <link rel='stylesheet' type='text/css' href='http://static.drp.su/update/logs/style.css'/>\n</head>\n<body>\n<script type=\"text/javascript\">window.data = [];<\/script>\n");
  11738.             } catch (e) {
  11739.                 this.file = null;
  11740.                 this.disabled = !0;
  11741.             }
  11742.         };
  11743.         FileWriter.prototype.close = function() {
  11744.             if (this.file) {
  11745.                 this.file.WriteLine("\n</body>\n</html>\n");
  11746.                 this.file.Close();
  11747.                 this.file = null;
  11748.             }
  11749.         };
  11750.         FileWriter.prototype.write = function(message) {
  11751.             var className = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "info", params = arguments[2], data = arguments[3], type = arguments[4];
  11752.             if (!this.file) this.init();
  11753.             if (this.file && !this.disabled) {
  11754.                 var timestamp = new Date(), time = [ toFixed(timestamp.getHours()), toFixed(timestamp.getMinutes()), toFixed(timestamp.getSeconds()) ].join(":"), json = JSON.stringify({
  11755.                     type: type,
  11756.                     data: data,
  11757.                     timestamp: timestamp.valueOf()
  11758.                 }), details = "";
  11759.                 if (params && Object.keys(params).length > 0) {
  11760.                     var obj = {};
  11761.                     for (var key in params) {
  11762.                         var part = params[key];
  11763.                         obj[key] = part instanceof Error ? {
  11764.                             name: part.name || "Error",
  11765.                             message: part.message
  11766.                         } : part;
  11767.                     }
  11768.                     details = '<pre class="code">' + JSON.stringify(obj, null, "\t") + "</pre>";
  11769.                 }
  11770.                 var ts = '<span class="timeStamp">' + time + "</span>";
  11771.                 try {
  11772.                     this.file.Write(('\n        <div class="logs ' + className + '">' + ts + message + details + '</div>\n        <script type="text/javascript">window.data.push(' + json + ');<\/script>\n        <script type="application/json" class="data">' + json + "<\/script>\n      ").replace(/[^\x00-\x7F]/g, ""));
  11773.                } catch (e) {}
  11774.            }
  11775.        };
  11776.        return FileWriter;
  11777.    }();
  11778.    exports["default"] = new FileWriter();
  11779.    module.exports = exports["default"];
  11780. }, function(module, exports, __webpack_require__) {
  11781.    "use strict";
  11782.    function _classCallCheck(instance, Constructor) {
  11783.        if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  11784.    }
  11785.    exports.__esModule = !0;
  11786.    var _retry = __webpack_require__(349), _retry2 = function(obj) {
  11787.        return obj && obj.__esModule ? obj : {
  11788.            "default": obj
  11789.        };
  11790.    }(_retry), index = 0, DeloreanTransport = function() {
  11791.        function DeloreanTransport(statistics, endpoint) {
  11792.            var tries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity, timeout = arguments[3], apiVersion = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : "1.1";
  11793.            _classCallCheck(this, DeloreanTransport);
  11794.            Object.assign(this, {
  11795.                statistics: statistics,
  11796.                endpoint: endpoint,
  11797.                tries: tries,
  11798.                timeout: timeout,
  11799.                apiVersion: apiVersion
  11800.            });
  11801.        }
  11802.        DeloreanTransport.prototype.postOnce = function(body, _ref) {
  11803.            var headers = _ref.headers;
  11804.            return this.endpoint ? this.statistics.adapter.request({
  11805.                method: "POST",
  11806.                uri: this.endpoint,
  11807.                body: body,
  11808.                headers: headers
  11809.            }) : Promise.resolve();
  11810.        };
  11811.        DeloreanTransport.prototype.postWithRetry = function() {
  11812.            for (var _this = this, _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
  11813.            return (0, _retry2["default"])(function() {
  11814.                return _this.postOnce.apply(_this, args);
  11815.            }, this.tries, this.timeout);
  11816.        };
  11817.        DeloreanTransport.prototype.send = function(data) {
  11818.            var _statistics = this.statistics, clientId = _statistics.clientId, computerId = _statistics.computerId, sessionId = _statistics.sessionId, options = _statistics.options, version = _statistics.version, experiment = _statistics.experiment, locale = _statistics.locale, headers = {
  11819.                "x-api-version": this.apiVersion,
  11820.                "x-drp-client-id": clientId,
  11821.                "x-drp-computer-id": computerId,
  11822.                "x-drp-session-id": sessionId,
  11823.                "x-drp-application": options.category,
  11824.                "x-drp-version": version,
  11825.                "x-drp-experiment": experiment,
  11826.                "x-drp-locale": locale,
  11827.                "x-drp-index": index++,
  11828.                "x-drp-client-time": new Date().toISOString()
  11829.            };
  11830.            return this.postWithRetry(data, {
  11831.                headers: headers
  11832.            });
  11833.        };
  11834.        return DeloreanTransport;
  11835.    }();
  11836.    exports["default"] = DeloreanTransport;
  11837.    module.exports = exports["default"];
  11838. }, function(module, exports, __webpack_require__) {
  11839.    "use strict";
  11840.    function _classCallCheck(instance, Constructor) {
  11841.        if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  11842.    }
  11843.    exports.__esModule = !0;
  11844.    var _extends = Object.assign || function(target) {
  11845.        for (var i = 1; i < arguments.length; i++) {
  11846.            var source = arguments[i];
  11847.            for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  11848.        }
  11849.        return target;
  11850.    }, endpoint = exports.endpoint = "http://www.google-analytics.com/collect", defaultDimensions = exports.defaultDimensions = {
  11851.        cd1: "userIdDimension",
  11852.        cd2: "versionDimension",
  11853.        cd3: "osDimension",
  11854.        cd4: "spDimension",
  11855.        cd5: "captionDimension",
  11856.        cd6: "experimentDimension"
  11857.    }, GoogleAnalytics = function() {
  11858.        function GoogleAnalytics(parent, _ref) {
  11859.            var id = _ref.id, session = _ref.session, source = _ref.source, identifier = _ref.identifier, dimensions = _ref.dimensions;
  11860.            _classCallCheck(this, GoogleAnalytics);
  11861.            Object.assign(this, {
  11862.                parent: parent,
  11863.                id: id,
  11864.                session: session,
  11865.                source: source,
  11866.                identifier: identifier,
  11867.                dimensions: _extends({}, defaultDimensions, dimensions),
  11868.                adapter: parent.adapter
  11869.            });
  11870.        }
  11871.        GoogleAnalytics.prototype.getCID = function() {
  11872.            if ("computerId" === this.identifier) return this.parent.computerId; else return this.parent.clientId;
  11873.        };
  11874.        GoogleAnalytics.prototype.getDimensions = function(params) {
  11875.            var res = [];
  11876.            for (var id in this.dimensions) {
  11877.                var key = this.dimensions[id];
  11878.                if (key in params) res.push([ id, params[key] ]);
  11879.            }
  11880.            return res;
  11881.        };
  11882.        GoogleAnalytics.prototype.send = function(event) {
  11883.            if (this.id) {
  11884.                var cid = this.getCID(), _adapter$get = this.adapter.get("os"), arch = _adapter$get.arch, OSName = _adapter$get.OSName, OSVersionSP = _adapter$get.OSVersionSP, OSCaption = _adapter$get.OSCaption, dimensions = this.getDimensions(_extends({}, event.params, {
  11885.                    userIdDimension: cid,
  11886.                    versionDimension: this.parent.version.trim(),
  11887.                    osDimension: OSName + " x" + arch,
  11888.                    spDimension: "SP " + OSVersionSP,
  11889.                    captionDimension: OSCaption,
  11890.                    experimentDimension: this.parent.experiment
  11891.                })), url = this._compileUrl(cid, event, dimensions);
  11892.                this.adapter.log("Send event " + this.id + " GA: " + event.action, {
  11893.                    event: event,
  11894.                    dimensions: dimensions,
  11895.                    url: url
  11896.                }, "ga:send");
  11897.                return this.adapter.request({
  11898.                    uri: url
  11899.                });
  11900.            }
  11901.        };
  11902.        GoogleAnalytics.prototype._compileUrl = function(cid, event, dimensions) {
  11903.            var params = {
  11904.                v: 1,
  11905.                ds: this.source || "app",
  11906.                tid: this.id,
  11907.                cid: cid,
  11908.                t: "event",
  11909.                ec: event.category.toLowerCase(),
  11910.                ea: event.action.toLowerCase(),
  11911.                el: event.label.toLowerCase(),
  11912.                ul: this.parent.locale,
  11913.                z: Math.random().toString().slice(2)
  11914.            };
  11915.            if (event.session) {
  11916.                this.session = event.session + "ed";
  11917.                params.sc = event.session;
  11918.            } else if (!this.session) {
  11919.                this.session = "started";
  11920.                params.sc = "start";
  11921.            }
  11922.            var parts = Object.entries(params).concat(dimensions);
  11923.            return endpoint + "?" + parts.map(function(pair) {
  11924.                return pair.map(encodeURIComponent).join("=");
  11925.            }).join("&");
  11926.        };
  11927.        return GoogleAnalytics;
  11928.    }();
  11929.    exports["default"] = GoogleAnalytics;
  11930. }, function(module, exports, __webpack_require__) {
  11931.    "use strict";
  11932.    function _interopRequireDefault(obj) {
  11933.        return obj && obj.__esModule ? obj : {
  11934.            "default": obj
  11935.        };
  11936.    }
  11937.    function _objectWithoutProperties(obj, keys) {
  11938.        var target = {};
  11939.        for (var i in obj) if (!(keys.indexOf(i) >= 0)) if (Object.prototype.hasOwnProperty.call(obj, i)) target[i] = obj[i];
  11940.        return target;
  11941.    }
  11942.    function _asyncToGenerator(fn) {
  11943.        return function() {
  11944.            var gen = fn.apply(this, arguments);
  11945.            return new Promise(function(resolve, reject) {
  11946.                function step(key, arg) {
  11947.                    try {
  11948.                        var info = gen[key](arg), value = info.value;
  11949.                    } catch (error) {
  11950.                        reject(error);
  11951.                        return;
  11952.                    }
  11953.                    if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  11954.                        step("next", value);
  11955.                    }, function(err) {
  11956.                        step("throw", err);
  11957.                    });
  11958.                }
  11959.                return step("next");
  11960.            });
  11961.        };
  11962.    }
  11963.    function _classCallCheck(instance, Constructor) {
  11964.        if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  11965.    }
  11966.    exports.__esModule = !0;
  11967.    var _extends = Object.assign || function(target) {
  11968.        for (var i = 1; i < arguments.length; i++) {
  11969.            var source = arguments[i];
  11970.            for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  11971.        }
  11972.        return target;
  11973.    }, _ClientIdStorage = __webpack_require__(345), _ClientIdStorage2 = _interopRequireDefault(_ClientIdStorage), _GoogleAnalytics = __webpack_require__(238), _GoogleAnalytics2 = _interopRequireDefault(_GoogleAnalytics), _YaMetrika = __webpack_require__(348), _YaMetrika2 = _interopRequireDefault(_YaMetrika), _EventsAPI = __webpack_require__(346), _EventsAPI2 = _interopRequireDefault(_EventsAPI), OnlineStatistics = function() {
  11974.        function OnlineStatistics(adapter, options, _ref) {
  11975.            var _ref$version = _ref.version, version = _ref$version === undefined ? "" : _ref$version, _ref$locale = _ref.locale, locale = _ref$locale === undefined ? "" : _ref$locale;
  11976.            _classCallCheck(this, OnlineStatistics);
  11977.            this.clientId = "";
  11978.            this.computerId = "";
  11979.            this.experiment = "(not set)";
  11980.            this.options = {
  11981.                google: {},
  11982.                yandex: {},
  11983.                events: {}
  11984.            };
  11985.            this.counters = [];
  11986.            Object.assign(this, {
  11987.                adapter: adapter,
  11988.                locale: locale,
  11989.                version: version.trim()
  11990.            });
  11991.            Object.assign(this.options, options);
  11992.            this.clientIdStorage = new _ClientIdStorage2["default"](adapter);
  11993.        }
  11994.        OnlineStatistics.prototype.call = function(method) {
  11995.            var tags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [ "default" ], _this = this, data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, override = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
  11996.            this.adapter.hook(method, {
  11997.                tags: tags,
  11998.                data: data,
  11999.                override: override
  12000.            });
  12001.            return Promise.all(this.counters.filter(function(_ref2) {
  12002.                return _ref2.tags.some(function(tag) {
  12003.                    return -1 !== tags.indexOf(tag);
  12004.                });
  12005.            }).map(function() {
  12006.                var _ref3 = _asyncToGenerator(regeneratorRuntime.mark(function _callee(_ref4) {
  12007.                    var value, name = _ref4.name, counter = _ref4.counter, type = _ref4.type, tags = _ref4.tags;
  12008.                    return regeneratorRuntime.wrap(function(_context) {
  12009.                        for (;;) switch (_context.prev = _context.next) {
  12010.                          case 0:
  12011.                            _context.t0 = counter[method];
  12012.                            if (!_context.t0) {
  12013.                                _context.next = 5;
  12014.                                break;
  12015.                            }
  12016.                            _context.next = 4;
  12017.                            return counter[method](_extends({}, data, override[type], override[type + "." + name]));
  12018.  
  12019.                          case 4:
  12020.                            _context.t0 = _context.sent;
  12021.  
  12022.                          case 5:
  12023.                            value = _context.t0;
  12024.                            return _context.abrupt("return", {
  12025.                                name: name,
  12026.                                type: type,
  12027.                                tags: tags,
  12028.                                value: value
  12029.                            });
  12030.  
  12031.                          case 7:
  12032.                          case "end":
  12033.                            return _context.stop();
  12034.                        }
  12035.                    }, _callee, _this);
  12036.                }));
  12037.                return function(_x4) {
  12038.                    return _ref3.apply(this, arguments);
  12039.                };
  12040.            }()));
  12041.        };
  12042.        OnlineStatistics.prototype._init = function() {
  12043.            function _init(_x5) {
  12044.                return _ref5.apply(this, arguments);
  12045.            }
  12046.            var _ref5 = _asyncToGenerator(regeneratorRuntime.mark(function _callee2(_ref6) {
  12047.                var experiments, seed, ind, _loop, counterType, _this2 = this, clientId = _ref6.clientId, computerId = _ref6.computerId, offline = _ref6.offline;
  12048.                return regeneratorRuntime.wrap(function(_context2) {
  12049.                    for (;;) switch (_context2.prev = _context2.next) {
  12050.                      case 0:
  12051.                        if (offline) this.offline = !0;
  12052.                        _context2.next = 3;
  12053.                        return this.clientIdStorage.init("clientId", clientId);
  12054.  
  12055.                      case 3:
  12056.                        this.clientId = _context2.sent;
  12057.                        _context2.next = 6;
  12058.                        return this.clientIdStorage.init("computerId", computerId, [ "HKLM", "HKCU" ]);
  12059.  
  12060.                      case 6:
  12061.                        this.computerId = _context2.sent;
  12062.                        this.sessionId = this.adapter.uuid();
  12063.                        experiments = this.options.experiments || [];
  12064.                        if (experiments.length > 0) {
  12065.                            seed = this.computerId.replace(/[^\d]/g, "").slice(-15);
  12066.                            ind = parseInt(seed, 10) % experiments.length;
  12067.                            this.experiment = this.options.experiments[ind || 0];
  12068.                            this.version += " " + this.experiment;
  12069.                        }
  12070.                        _loop = function(counterType) {
  12071.                            var Counter = OnlineStatistics.counters[counterType], _options$counterType = _this2.options[counterType], options = _options$counterType.options, counters = _objectWithoutProperties(_options$counterType, [ "options" ]);
  12072.                            for (var name in counters) {
  12073.                                var _counters$name = counters[name], _counters$name$tags = _counters$name.tags, tags = _counters$name$tags === undefined ? [] : _counters$name$tags, counterOptions = _objectWithoutProperties(_counters$name, [ "tags" ]), counter = new Counter(_this2, _extends({}, options, counterOptions));
  12074.                                tags = [ "all", name ].concat(tags);
  12075.                                _this2.counters.push({
  12076.                                    name: name,
  12077.                                    counter: counter,
  12078.                                    type: counterType,
  12079.                                    tags: tags.concat(tags.map(function(tag) {
  12080.                                        return counterType + "." + tag;
  12081.                                    }))
  12082.                                });
  12083.                            }
  12084.                        };
  12085.                        for (counterType in OnlineStatistics.counters) _loop(counterType);
  12086.                        _context2.next = 14;
  12087.                        return this.call("init", [ "all" ]);
  12088.  
  12089.                      case 14:
  12090.                      case "end":
  12091.                        return _context2.stop();
  12092.                    }
  12093.                }, _callee2, this);
  12094.            }));
  12095.            return _init;
  12096.        }();
  12097.        OnlineStatistics.prototype.init = function() {
  12098.            var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  12099.            this._initialized = this._init(options);
  12100.            return this._initialized;
  12101.        };
  12102.        OnlineStatistics.prototype.event = function() {
  12103.            function event(_x7) {
  12104.                return _ref7.apply(this, arguments);
  12105.            }
  12106.            var _ref7 = _asyncToGenerator(regeneratorRuntime.mark(function _callee3(_event) {
  12107.                return regeneratorRuntime.wrap(function(_context3) {
  12108.                    for (;;) switch (_context3.prev = _context3.next) {
  12109.                      case 0:
  12110.                        if (_event.action) {
  12111.                            _context3.next = 2;
  12112.                            break;
  12113.                        }
  12114.                        throw new Error("event.action is undefined");
  12115.  
  12116.                      case 2:
  12117.                        if (!this._initialized) {
  12118.                            _context3.next = 7;
  12119.                            break;
  12120.                        }
  12121.                        _context3.next = 5;
  12122.                        return this._initialized;
  12123.  
  12124.                      case 5:
  12125.                        _context3.next = 9;
  12126.                        break;
  12127.  
  12128.                      case 7:
  12129.                        _context3.next = 9;
  12130.                        return this.init();
  12131.  
  12132.                      case 9:
  12133.                        _event = Object.assign({
  12134.                            category: this.options.category,
  12135.                            label: this.version
  12136.                        }, _event);
  12137.                        if (this.offline) _event.label += " [offline]";
  12138.                        _context3.next = 13;
  12139.                        return this.send(_event);
  12140.  
  12141.                      case 13:
  12142.                        return _context3.abrupt("return", _context3.sent);
  12143.  
  12144.                      case 14:
  12145.                      case "end":
  12146.                        return _context3.stop();
  12147.                    }
  12148.                }, _callee3, this);
  12149.            }));
  12150.            return event;
  12151.        }();
  12152.        OnlineStatistics.prototype.send = function(_ref8) {
  12153.            var counters = _ref8.counters, override = _ref8.override, data = _objectWithoutProperties(_ref8, [ "counters", "override" ]);
  12154.            return this.call("send", counters, data, override);
  12155.        };
  12156.        return OnlineStatistics;
  12157.    }();
  12158.    OnlineStatistics.counters = {
  12159.        google: _GoogleAnalytics2["default"],
  12160.        yandex: _YaMetrika2["default"],
  12161.        events: _EventsAPI2["default"]
  12162.    };
  12163.    exports["default"] = OnlineStatistics;
  12164.    module.exports = exports["default"];
  12165. }, function(module, exports, __webpack_require__) {
  12166.    "use strict";
  12167.    function _classCallCheck(instance, Constructor) {
  12168.        if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  12169.    }
  12170.    function _possibleConstructorReturn(self, call) {
  12171.        if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  12172.        return call && ("object" == typeof call || "function" == typeof call) ? call : self;
  12173.    }
  12174.    function _inherits(subClass, superClass) {
  12175.        if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
  12176.        subClass.prototype = Object.create(superClass && superClass.prototype, {
  12177.            constructor: {
  12178.                value: subClass,
  12179.                enumerable: !1,
  12180.                writable: !0,
  12181.                configurable: !0
  12182.            }
  12183.        });
  12184.        if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  12185.    }
  12186.    exports.__esModule = !0;
  12187.    var _DeloreanTransport2 = __webpack_require__(237), _DeloreanTransport3 = function(obj) {
  12188.        return obj && obj.__esModule ? obj : {
  12189.            "default": obj
  12190.        };
  12191.    }(_DeloreanTransport2), DeferredDeloreanTransport = function(_DeloreanTransport) {
  12192.        function DeferredDeloreanTransport() {
  12193.            _classCallCheck(this, DeferredDeloreanTransport);
  12194.            for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
  12195.            return _possibleConstructorReturn(this, _DeloreanTransport.call.apply(_DeloreanTransport, [ this, null ].concat(args)));
  12196.        }
  12197.        _inherits(DeferredDeloreanTransport, _DeloreanTransport);
  12198.        DeferredDeloreanTransport.prototype.send = function() {
  12199.            var _DeloreanTransport$pr;
  12200.            if (!this.statistics) this.statistics = __webpack_require__(15);
  12201.            for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2];
  12202.            return (_DeloreanTransport$pr = _DeloreanTransport.prototype.send).call.apply(_DeloreanTransport$pr, [ this ].concat(args));
  12203.        };
  12204.        return DeferredDeloreanTransport;
  12205.    }(_DeloreanTransport3["default"]);
  12206.    exports["default"] = DeferredDeloreanTransport;
  12207.    module.exports = exports["default"];
  12208. }, function(module, exports, __webpack_require__) {
  12209.    "use strict";
  12210.    function _interopRequireDefault(obj) {
  12211.        return obj && obj.__esModule ? obj : {
  12212.            "default": obj
  12213.        };
  12214.    }
  12215.    function _asyncToGenerator(fn) {
  12216.        return function() {
  12217.            var gen = fn.apply(this, arguments);
  12218.            return new Promise(function(resolve, reject) {
  12219.                function step(key, arg) {
  12220.                    try {
  12221.                        var info = gen[key](arg), value = info.value;
  12222.                    } catch (error) {
  12223.                        reject(error);
  12224.                        return;
  12225.                    }
  12226.                    if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  12227.                        step("next", value);
  12228.                    }, function(err) {
  12229.                        step("throw", err);
  12230.                    });
  12231.                }
  12232.                return step("next");
  12233.            });
  12234.        };
  12235.    }
  12236.    exports.__esModule = !0;
  12237.    var _Adapter = __webpack_require__(344), _Adapter2 = _interopRequireDefault(_Adapter), _registry = __webpack_require__(30), _http = __webpack_require__(102), _sendImg = __webpack_require__(244), _os = __webpack_require__(13), os = function(obj) {
  12238.        if (obj && obj.__esModule) return obj; else {
  12239.            var newObj = {};
  12240.            if (null != obj) for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
  12241.            newObj["default"] = obj;
  12242.            return newObj;
  12243.        }
  12244.    }(_os), _getClientId = __webpack_require__(354), _getClientId2 = _interopRequireDefault(_getClientId), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), logger = (0,
  12245.    _logs.getLogger)("core:statistics"), methods = {
  12246.        log: function(msg) {
  12247.            var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, namespace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
  12248.            logger.debug(msg, params, namespace);
  12249.        },
  12250.        uuid: function() {
  12251.            var d = new Date().getTime();
  12252.            return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
  12253.                var r = (d + 16 * Math.random()) % 16 | 0;
  12254.                d = Math.floor(d / 16);
  12255.                return ("x" === c ? r : 3 & r | 8).toString(16);
  12256.            });
  12257.        },
  12258.        request: function(_ref) {
  12259.            var _ref$method = _ref.method, method = _ref$method === undefined ? "GET" : _ref$method, uri = _ref.uri, body = _ref.body, headers = _ref.headers;
  12260.            switch (method) {
  12261.              case "GET":
  12262.                return (0, _sendImg.sendImg)(uri)["catch"](function() {
  12263.                    return (0, _http.httpget)(uri);
  12264.                });
  12265.  
  12266.              case "POST":
  12267.                return (0, _http.httppost)(uri, body, {
  12268.                    headers: headers
  12269.                });
  12270.  
  12271.              default:
  12272.                throw new Error("Invalid method " + method);
  12273.            }
  12274.        },
  12275.        getClientId: _getClientId2["default"],
  12276.        generateClientId: function() {
  12277.            var d = new Date().getTime();
  12278.            return "xxxxxxxxx.xxxxxxxxxx".replace(/[xy]/g, function(c) {
  12279.                var r = (d + 10 * Math.random()) % 10 | 0;
  12280.                return ("x" === c ? r : 7 & r | 8).toString();
  12281.            });
  12282.        },
  12283.        getRegValue: function(path, name) {
  12284.            var _this = this;
  12285.            return _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
  12286.                return regeneratorRuntime.wrap(function(_context) {
  12287.                    for (;;) switch (_context.prev = _context.next) {
  12288.                      case 0:
  12289.                        return _context.abrupt("return", (0, _registry.RegRead)(path + "\\" + name));
  12290.  
  12291.                      case 1:
  12292.                      case "end":
  12293.                        return _context.stop();
  12294.                    }
  12295.                }, _callee, _this);
  12296.            }))();
  12297.        },
  12298.        putRegValue: function(path, name, value) {
  12299.            var _this2 = this, type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "REG_SZ";
  12300.            return _asyncToGenerator(regeneratorRuntime.mark(function _callee2() {
  12301.                return regeneratorRuntime.wrap(function(_context2) {
  12302.                    for (;;) switch (_context2.prev = _context2.next) {
  12303.                      case 0:
  12304.                        return _context2.abrupt("return", (0, _registry.RegWrite)(path + "\\" + name, value, type));
  12305.  
  12306.                      case 1:
  12307.                      case "end":
  12308.                        return _context2.stop();
  12309.                    }
  12310.                }, _callee2, _this2);
  12311.            }))();
  12312.        }
  12313.    }, hooks = {
  12314.        send: function(_ref2) {
  12315.            var data = _ref2.data;
  12316.            _logs2["default"]._write({
  12317.                type: "event",
  12318.                data: data
  12319.            });
  12320.        }
  12321.    }, props = {
  12322.        os: os
  12323.    };
  12324.    exports["default"] = new _Adapter2["default"]({
  12325.        methods: methods,
  12326.        hooks: hooks,
  12327.        props: props
  12328.    });
  12329.    module.exports = exports["default"];
  12330. }, function(module, exports, __webpack_require__) {
  12331.    "use strict";
  12332.    exports.__esModule = !0;
  12333.    exports.ParseCMD = undefined;
  12334.    var _utils = __webpack_require__(23);
  12335.    exports.ParseCMD = function(cmd) {
  12336.        var args = (0, _utils.ParseCMDString)(cmd);
  12337.        if (args.length > 2 && "--sfx" === args[1]) {
  12338.            var _args = args, command = _args[0], sfxName = _args[2], overwrite = _args.slice(3);
  12339.            args = [ command ].concat((0, _utils.ParseSFXName)(sfxName));
  12340.            overwrite.forEach(function(val, ind) {
  12341.                if (val) args[ind + 1] = val;
  12342.            });
  12343.        }
  12344.        return args;
  12345.    };
  12346. }, function(module, exports, __webpack_require__) {
  12347.    "use strict";
  12348.    exports.__esModule = !0;
  12349.    exports.runExeAsynchronously = undefined;
  12350.    var _shell = __webpack_require__(14), _fso = __webpack_require__(18), _utils = __webpack_require__(23), _logs = __webpack_require__(3), log = (0,
  12351.    _logs.getLogger)("core:system:runExeAsynchronously");
  12352.    exports.runExeAsynchronously = function(_ref) {
  12353.        var exePath = _ref.exePath, _ref$keys = _ref.keys, keys = _ref$keys === undefined ? "" : _ref$keys, triggerFile = _ref.triggerFile, _ref$timeout = _ref.timeout, timeout = _ref$timeout === undefined ? 9e5 : _ref$timeout;
  12354.        return new Promise(function(resolve, reject) {
  12355.            var command = '"' + exePath + '" ' + keys + ' || echo Done & call echo Done %^errorLevel% > "' + triggerFile + '"', wrappedCommand = (0,
  12356.            _utils.wrapInCmd)(command);
  12357.            log.debug("running command", {
  12358.                wrappedCommand: wrappedCommand
  12359.            }, "command");
  12360.            setTimeout(function() {
  12361.                _shell.WshShell.Run(wrappedCommand, 0, !1);
  12362.            }, 0);
  12363.            var timer = setInterval(function() {
  12364.                if (_fso.fso.FileExists(triggerFile)) try {
  12365.                    var textStream = _fso.fso.OpenTextFile(triggerFile, 1, !1);
  12366.                    if (!textStream.AtEndOfStream) {
  12367.                        clearInterval(timer);
  12368.                        var text = textStream.ReadAll(), matches = text.match(/done\s+(\d+)/i), exitCode = matches && matches[1];
  12369.                        null !== exitCode ? resolve(+exitCode) : reject(new Error("runExeAsynchronously: exitCode not found"));
  12370.                    }
  12371.                    textStream.Close();
  12372.                } catch (err) {
  12373.                    reject(new Error("runExeAsynchronously: read trigger file"));
  12374.                }
  12375.            }, 1e3);
  12376.            setTimeout(function() {
  12377.                clearInterval(timer);
  12378.                reject(new Error("runExeAsynchronously: timeout"));
  12379.            }, timeout);
  12380.        });
  12381.    };
  12382. }, function(module, exports, __webpack_require__) {
  12383.    "use strict";
  12384.    exports.__esModule = !0;
  12385.    exports.sendImg = function(url) {
  12386.        return new Promise(function(resolve, reject) {
  12387.            var img = document.createElement("img");
  12388.            img.className = "ga-image";
  12389.            img.onload = resolve;
  12390.            img.onerror = reject;
  12391.            img.src = url;
  12392.            document.body.appendChild(img);
  12393.        });
  12394.    };
  12395. }, function(module, exports, __webpack_require__) {
  12396.    var cof = __webpack_require__(26);
  12397.    module.exports = function(it, msg) {
  12398.        if ("number" != typeof it && "Number" != cof(it)) throw TypeError(msg);
  12399.        return +it;
  12400.    };
  12401. }, function(module, exports, __webpack_require__) {
  12402.    "use strict";
  12403.    var toObject = __webpack_require__(25), toIndex = __webpack_require__(73), toLength = __webpack_require__(21);
  12404.    module.exports = [].copyWithin || function(target, start) {
  12405.        var O = toObject(this), len = toLength(O.length), to = toIndex(target, len), from = toIndex(start, len), end = arguments.length > 2 ? arguments[2] : undefined, count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to), inc = 1;
  12406.        if (from < to && to < from + count) {
  12407.            inc = -1;
  12408.            from += count - 1;
  12409.            to += count - 1;
  12410.        }
  12411.        for (;count-- > 0; ) {
  12412.            if (from in O) O[to] = O[from]; else delete O[to];
  12413.            to += inc;
  12414.            from += inc;
  12415.        }
  12416.        return O;
  12417.    };
  12418. }, function(module, exports, __webpack_require__) {
  12419.    var aFunction = __webpack_require__(31), toObject = __webpack_require__(25), IObject = __webpack_require__(67), toLength = __webpack_require__(21);
  12420.    module.exports = function(that, callbackfn, aLen, memo, isRight) {
  12421.        aFunction(callbackfn);
  12422.        var O = toObject(that), self = IObject(O), length = toLength(O.length), index = isRight ? length - 1 : 0, i = isRight ? -1 : 1;
  12423.        if (aLen < 2) for (;;) {
  12424.            if (index in self) {
  12425.                memo = self[index];
  12426.                index += i;
  12427.                break;
  12428.            }
  12429.            index += i;
  12430.            if (isRight ? index < 0 : length <= index) throw TypeError("Reduce of empty array with no initial value");
  12431.        }
  12432.        for (;isRight ? index >= 0 : length > index; index += i) if (index in self) memo = callbackfn(memo, self[index], index, O);
  12433.        return memo;
  12434.    };
  12435. }, function(module, exports, __webpack_require__) {
  12436.    "use strict";
  12437.    var aFunction = __webpack_require__(31), isObject = __webpack_require__(10), invoke = __webpack_require__(106), arraySlice = [].slice, factories = {}, construct = function(F, len, args) {
  12438.        if (!(len in factories)) {
  12439.            for (var n = [], i = 0; i < len; i++) n[i] = "a[" + i + "]";
  12440.            factories[len] = Function("F,a", "return new F(" + n.join(",") + ")");
  12441.        }
  12442.        return factories[len](F, args);
  12443.    };
  12444.    module.exports = Function.bind || function(that) {
  12445.        var fn = aFunction(this), partArgs = arraySlice.call(arguments, 1), bound = function() {
  12446.            var args = partArgs.concat(arraySlice.call(arguments));
  12447.            return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
  12448.        };
  12449.        if (isObject(fn.prototype)) bound.prototype = fn.prototype;
  12450.        return bound;
  12451.    };
  12452. }, function(module, exports, __webpack_require__) {
  12453.    "use strict";
  12454.    var dP = __webpack_require__(17).f, create = __webpack_require__(93), redefineAll = __webpack_require__(94), ctx = __webpack_require__(32), anInstance = __webpack_require__(91), defined = __webpack_require__(33), forOf = __webpack_require__(105), $iterDefine = __webpack_require__(194), step = __webpack_require__(253), setSpecies = __webpack_require__(82), DESCRIPTORS = __webpack_require__(12), fastKey = __webpack_require__(109).fastKey, SIZE = DESCRIPTORS ? "_s" : "size", getEntry = function(that, key) {
  12455.        var entry, index = fastKey(key);
  12456.        if ("F" !== index) return that._i[index];
  12457.        for (entry = that._f; entry; entry = entry.n) if (entry.k == key) return entry;
  12458.    };
  12459.    module.exports = {
  12460.        getConstructor: function(wrapper, NAME, IS_MAP, ADDER) {
  12461.            var C = wrapper(function(that, iterable) {
  12462.                anInstance(that, C, NAME, "_i");
  12463.                that._i = create(null);
  12464.                that._f = undefined;
  12465.                that._l = undefined;
  12466.                that[SIZE] = 0;
  12467.                if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
  12468.            });
  12469.            redefineAll(C.prototype, {
  12470.                clear: function() {
  12471.                    for (var that = this, data = that._i, entry = that._f; entry; entry = entry.n) {
  12472.                        entry.r = !0;
  12473.                        if (entry.p) entry.p = entry.p.n = undefined;
  12474.                        delete data[entry.i];
  12475.                    }
  12476.                    that._f = that._l = undefined;
  12477.                    that[SIZE] = 0;
  12478.                },
  12479.                "delete": function(key) {
  12480.                    var that = this, entry = getEntry(that, key);
  12481.                    if (entry) {
  12482.                        var next = entry.n, prev = entry.p;
  12483.                        delete that._i[entry.i];
  12484.                        entry.r = !0;
  12485.                        if (prev) prev.n = next;
  12486.                        if (next) next.p = prev;
  12487.                        if (that._f == entry) that._f = next;
  12488.                        if (that._l == entry) that._l = prev;
  12489.                        that[SIZE]--;
  12490.                    }
  12491.                    return !!entry;
  12492.                },
  12493.                forEach: function(callbackfn) {
  12494.                    anInstance(this, C, "forEach");
  12495.                    for (var entry, f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); entry = entry ? entry.n : this._f; ) {
  12496.                        f(entry.v, entry.k, this);
  12497.                        for (;entry && entry.r; ) entry = entry.p;
  12498.                    }
  12499.                },
  12500.                has: function(key) {
  12501.                    return !!getEntry(this, key);
  12502.                }
  12503.            });
  12504.            if (DESCRIPTORS) dP(C.prototype, "size", {
  12505.                get: function() {
  12506.                    return defined(this[SIZE]);
  12507.                }
  12508.            });
  12509.            return C;
  12510.        },
  12511.        def: function(that, key, value) {
  12512.            var prev, index, entry = getEntry(that, key);
  12513.            if (entry) entry.v = value; else {
  12514.                that._l = entry = {
  12515.                    i: index = fastKey(key, !0),
  12516.                    k: key,
  12517.                    v: value,
  12518.                    p: prev = that._l,
  12519.                    n: undefined,
  12520.                    r: !1
  12521.                };
  12522.                if (!that._f) that._f = entry;
  12523.                if (prev) prev.n = entry;
  12524.                that[SIZE]++;
  12525.                if ("F" !== index) that._i[index] = entry;
  12526.            }
  12527.            return that;
  12528.        },
  12529.        getEntry: getEntry,
  12530.        setStrong: function(C, NAME, IS_MAP) {
  12531.            $iterDefine(C, NAME, function(iterated, kind) {
  12532.                this._t = iterated;
  12533.                this._k = kind;
  12534.                this._l = undefined;
  12535.            }, function() {
  12536.                for (var that = this, kind = that._k, entry = that._l; entry && entry.r; ) entry = entry.p;
  12537.                if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
  12538.                    that._t = undefined;
  12539.                    return step(1);
  12540.                }
  12541.                if ("keys" == kind) return step(0, entry.k);
  12542.                if ("values" == kind) return step(0, entry.v); else return step(0, [ entry.k, entry.v ]);
  12543.            }, IS_MAP ? "entries" : "values", !IS_MAP, !0);
  12544.            setSpecies(NAME);
  12545.        }
  12546.    };
  12547. }, function(module, exports, __webpack_require__) {
  12548.    var classof = __webpack_require__(81), from = __webpack_require__(358);
  12549.    module.exports = function(NAME) {
  12550.        return function() {
  12551.            if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
  12552.            return from(this);
  12553.        };
  12554.    };
  12555. }, function(module, exports, __webpack_require__) {
  12556.    "use strict";
  12557.    var global = __webpack_require__(2), $export = __webpack_require__(0), redefine = __webpack_require__(34), redefineAll = __webpack_require__(94), meta = __webpack_require__(109), forOf = __webpack_require__(105), anInstance = __webpack_require__(91), isObject = __webpack_require__(10), fails = __webpack_require__(8), $iterDetect = __webpack_require__(108), setToStringTag = __webpack_require__(83), inheritIfRequired = __webpack_require__(192);
  12558.    module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
  12559.        var Base = global[NAME], C = Base, ADDER = IS_MAP ? "set" : "add", proto = C && C.prototype, O = {}, fixMethod = function(KEY) {
  12560.            var fn = proto[KEY];
  12561.            redefine(proto, KEY, "delete" == KEY ? function(a) {
  12562.                return IS_WEAK && !isObject(a) ? !1 : fn.call(this, 0 === a ? 0 : a);
  12563.            } : "has" == KEY ? function(a) {
  12564.                return IS_WEAK && !isObject(a) ? !1 : fn.call(this, 0 === a ? 0 : a);
  12565.            } : "get" == KEY ? function(a) {
  12566.                return IS_WEAK && !isObject(a) ? undefined : fn.call(this, 0 === a ? 0 : a);
  12567.            } : "add" == KEY ? function(a) {
  12568.                fn.call(this, 0 === a ? 0 : a);
  12569.                return this;
  12570.            } : function(a, b) {
  12571.                fn.call(this, 0 === a ? 0 : a, b);
  12572.                return this;
  12573.            });
  12574.        };
  12575.        if ("function" != typeof C || !(IS_WEAK || proto.forEach && !fails(function() {
  12576.            new C().entries().next();
  12577.        }))) {
  12578.            C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
  12579.            redefineAll(C.prototype, methods);
  12580.            meta.NEED = !0;
  12581.        } else {
  12582.            var instance = new C(), HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance, THROWS_ON_PRIMITIVES = fails(function() {
  12583.                instance.has(1);
  12584.            }), ACCEPT_ITERABLES = $iterDetect(function(iter) {
  12585.                new C(iter);
  12586.            }), BUGGY_ZERO = !IS_WEAK && fails(function() {
  12587.                for (var $instance = new C(), index = 5; index--; ) $instance[ADDER](index, index);
  12588.                return !$instance.has(-0);
  12589.            });
  12590.            if (!ACCEPT_ITERABLES) {
  12591.                C = wrapper(function(target, iterable) {
  12592.                    anInstance(target, C, NAME);
  12593.                    var that = inheritIfRequired(new Base(), target, C);
  12594.                    if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
  12595.                    return that;
  12596.                });
  12597.                C.prototype = proto;
  12598.                proto.constructor = C;
  12599.            }
  12600.            if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
  12601.                fixMethod("delete");
  12602.                fixMethod("has");
  12603.                IS_MAP && fixMethod("get");
  12604.            }
  12605.            if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
  12606.            if (IS_WEAK && proto.clear) delete proto.clear;
  12607.        }
  12608.        setToStringTag(C, NAME);
  12609.        O[NAME] = C;
  12610.        $export($export.G + $export.W + $export.F * (C != Base), O);
  12611.        if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
  12612.        return C;
  12613.    };
  12614. }, function(module, exports, __webpack_require__) {
  12615.    var isObject = __webpack_require__(10), floor = Math.floor;
  12616.    module.exports = function(it) {
  12617.        return !isObject(it) && isFinite(it) && floor(it) === it;
  12618.    };
  12619. }, function(module, exports) {
  12620.    module.exports = function(done, value) {
  12621.        return {
  12622.            value: value,
  12623.            done: !!done
  12624.        };
  12625.    };
  12626. }, function(module, exports) {
  12627.    module.exports = Math.log1p || function(x) {
  12628.        return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
  12629.    };
  12630. }, function(module, exports, __webpack_require__) {
  12631.    var gOPN = __webpack_require__(70), gOPS = __webpack_require__(110), anObject = __webpack_require__(11), Reflect = __webpack_require__(2).Reflect;
  12632.    module.exports = Reflect && Reflect.ownKeys || function(it) {
  12633.        var keys = gOPN.f(anObject(it)), getSymbols = gOPS.f;
  12634.        return getSymbols ? keys.concat(getSymbols(it)) : keys;
  12635.    };
  12636. }, function(module, exports, __webpack_require__) {
  12637.    var $parseFloat = __webpack_require__(2).parseFloat, $trim = __webpack_require__(112).trim;
  12638.    module.exports = 1 / $parseFloat(__webpack_require__(201) + "-0") != -Infinity ? function(str) {
  12639.        var string = $trim(String(str), 3), result = $parseFloat(string);
  12640.        return 0 === result && "-" == string.charAt(0) ? -0 : result;
  12641.    } : $parseFloat;
  12642. }, function(module, exports, __webpack_require__) {
  12643.    var $parseInt = __webpack_require__(2).parseInt, $trim = __webpack_require__(112).trim, ws = __webpack_require__(201), hex = /^[\-+]?0[xX]/;
  12644.    module.exports = 8 !== $parseInt(ws + "08") || 22 !== $parseInt(ws + "0x16") ? function(str, radix) {
  12645.        var string = $trim(String(str), 3);
  12646.        return $parseInt(string, radix >>> 0 || (hex.test(string) ? 16 : 10));
  12647.    } : $parseInt;
  12648. }, function(module, exports) {
  12649.    module.exports = Object.is || function(x, y) {
  12650.        return x === y ? 0 !== x || 1 / x == 1 / y : x != x && y != y;
  12651.    };
  12652. }, function(module, exports, __webpack_require__) {
  12653.    var toLength = __webpack_require__(21), repeat = __webpack_require__(200), defined = __webpack_require__(33);
  12654.    module.exports = function(that, maxLength, fillString, left) {
  12655.        var S = String(defined(that)), stringLength = S.length, fillStr = fillString === undefined ? " " : String(fillString), intMaxLength = toLength(maxLength);
  12656.        if (intMaxLength <= stringLength || "" == fillStr) return S;
  12657.        var fillLen = intMaxLength - stringLength, stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
  12658.        if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
  12659.        return left ? stringFiller + S : S + stringFiller;
  12660.    };
  12661. }, function(module, exports, __webpack_require__) {
  12662.    var global = __webpack_require__(2), core = __webpack_require__(44), LIBRARY = __webpack_require__(69), wksExt = __webpack_require__(261), defineProperty = __webpack_require__(17).f;
  12663.    module.exports = function(name) {
  12664.        var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  12665.        if ("_" != name.charAt(0) && !(name in $Symbol)) defineProperty($Symbol, name, {
  12666.            value: wksExt.f(name)
  12667.        });
  12668.    };
  12669. }, function(module, exports, __webpack_require__) {
  12670.    exports.f = __webpack_require__(7);
  12671. }, function(module, exports, __webpack_require__) {
  12672.    if (__webpack_require__(12) && "g" != /./g.flags) __webpack_require__(17).f(RegExp.prototype, "flags", {
  12673.        configurable: !0,
  12674.        get: __webpack_require__(152)
  12675.    });
  12676. }, function(module, exports, __webpack_require__) {
  12677.    function flatten(array, isDeep, guard) {
  12678.        var length = array ? array.length : 0;
  12679.        if (guard && isIterateeCall(array, isDeep, guard)) isDeep = !1;
  12680.        return length ? baseFlatten(array, isDeep) : [];
  12681.    }
  12682.    var baseFlatten = __webpack_require__(271), isIterateeCall = __webpack_require__(142);
  12683.    module.exports = flatten;
  12684. }, function(module, exports) {
  12685.    function last(array) {
  12686.        var length = array ? array.length : 0;
  12687.        return length ? array[length - 1] : undefined;
  12688.    }
  12689.    module.exports = last;
  12690. }, function(module, exports, __webpack_require__) {
  12691.    function debounce(func, wait, options) {
  12692.        function cancel() {
  12693.            if (timeoutId) clearTimeout(timeoutId);
  12694.            if (maxTimeoutId) clearTimeout(maxTimeoutId);
  12695.            lastCalled = 0;
  12696.            maxTimeoutId = timeoutId = trailingCall = undefined;
  12697.        }
  12698.        function complete(isCalled, id) {
  12699.            if (id) clearTimeout(id);
  12700.            maxTimeoutId = timeoutId = trailingCall = undefined;
  12701.            if (isCalled) {
  12702.                lastCalled = now();
  12703.                result = func.apply(thisArg, args);
  12704.                if (!timeoutId && !maxTimeoutId) args = thisArg = undefined;
  12705.            }
  12706.        }
  12707.        function delayed() {
  12708.            var remaining = wait - (now() - stamp);
  12709.            if (remaining <= 0 || remaining > wait) complete(trailingCall, maxTimeoutId); else timeoutId = setTimeout(delayed, remaining);
  12710.        }
  12711.        function maxDelayed() {
  12712.            complete(trailing, timeoutId);
  12713.        }
  12714.        function debounced() {
  12715.            args = arguments;
  12716.            stamp = now();
  12717.            thisArg = this;
  12718.            trailingCall = trailing && (timeoutId || !leading);
  12719.            if (!1 === maxWait) var leadingCall = leading && !timeoutId; else {
  12720.                if (!maxTimeoutId && !leading) lastCalled = stamp;
  12721.                var remaining = maxWait - (stamp - lastCalled), isCalled = remaining <= 0 || remaining > maxWait;
  12722.                if (isCalled) {
  12723.                    if (maxTimeoutId) maxTimeoutId = clearTimeout(maxTimeoutId);
  12724.                    lastCalled = stamp;
  12725.                    result = func.apply(thisArg, args);
  12726.                } else if (!maxTimeoutId) maxTimeoutId = setTimeout(maxDelayed, remaining);
  12727.            }
  12728.            if (isCalled && timeoutId) timeoutId = clearTimeout(timeoutId); else if (!timeoutId && wait !== maxWait) timeoutId = setTimeout(delayed, wait);
  12729.            if (leadingCall) {
  12730.                isCalled = !0;
  12731.                result = func.apply(thisArg, args);
  12732.            }
  12733.            if (isCalled && !timeoutId && !maxTimeoutId) args = thisArg = undefined;
  12734.            return result;
  12735.        }
  12736.        var args, maxTimeoutId, result, stamp, thisArg, timeoutId, trailingCall, lastCalled = 0, maxWait = !1, trailing = !0;
  12737.        if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
  12738.        wait = wait < 0 ? 0 : +wait || 0;
  12739.        if (!0 === options) {
  12740.            var leading = !0;
  12741.            trailing = !1;
  12742.        } else if (isObject(options)) {
  12743.            leading = !!options.leading;
  12744.            maxWait = "maxWait" in options && nativeMax(+options.maxWait || 0, wait);
  12745.            trailing = "trailing" in options ? !!options.trailing : trailing;
  12746.        }
  12747.        debounced.cancel = cancel;
  12748.        return debounced;
  12749.    }
  12750.    var isObject = __webpack_require__(39), now = __webpack_require__(519), FUNC_ERROR_TEXT = "Expected a function", nativeMax = Math.max;
  12751.    module.exports = debounce;
  12752. }, function(module, exports) {
  12753.    function restParam(func, start) {
  12754.        if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
  12755.        start = nativeMax(start === undefined ? func.length - 1 : +start || 0, 0);
  12756.        return function() {
  12757.            for (var args = arguments, index = -1, length = nativeMax(args.length - start, 0), rest = Array(length); ++index < length; ) rest[index] = args[start + index];
  12758.            switch (start) {
  12759.              case 0:
  12760.                return func.call(this, rest);
  12761.  
  12762.              case 1:
  12763.                return func.call(this, args[0], rest);
  12764.  
  12765.              case 2:
  12766.                return func.call(this, args[0], args[1], rest);
  12767.            }
  12768.            var otherArgs = Array(start + 1);
  12769.            index = -1;
  12770.            for (;++index < start; ) otherArgs[index] = args[index];
  12771.            otherArgs[start] = rest;
  12772.            return func.apply(this, otherArgs);
  12773.        };
  12774.    }
  12775.    var FUNC_ERROR_TEXT = "Expected a function", nativeMax = Math.max;
  12776.    module.exports = restParam;
  12777. }, function(module, exports, __webpack_require__) {
  12778.    (function(module, global) {
  12779.        var __WEBPACK_AMD_DEFINE_RESULT__;
  12780.        (function() {
  12781.            function baseCompareAscending(value, other) {
  12782.                if (value !== other) {
  12783.                    var valIsNull = null === value, valIsUndef = value === undefined, valIsReflexive = value === value, othIsNull = null === other, othIsUndef = other === undefined, othIsReflexive = other === other;
  12784.                    if (value > other && !othIsNull || !valIsReflexive || valIsNull && !othIsUndef && othIsReflexive || valIsUndef && othIsReflexive) return 1;
  12785.                    if (value < other && !valIsNull || !othIsReflexive || othIsNull && !valIsUndef && valIsReflexive || othIsUndef && valIsReflexive) return -1;
  12786.                }
  12787.                return 0;
  12788.            }
  12789.            function baseFindIndex(array, predicate, fromRight) {
  12790.                for (var length = array.length, index = fromRight ? length : -1; fromRight ? index-- : ++index < length; ) if (predicate(array[index], index, array)) return index;
  12791.                return -1;
  12792.            }
  12793.            function baseIndexOf(array, value, fromIndex) {
  12794.                if (value !== value) return indexOfNaN(array, fromIndex);
  12795.                for (var index = fromIndex - 1, length = array.length; ++index < length; ) if (array[index] === value) return index;
  12796.                return -1;
  12797.            }
  12798.            function baseIsFunction(value) {
  12799.                return "function" == typeof value || !1;
  12800.            }
  12801.            function baseToString(value) {
  12802.                return null == value ? "" : value + "";
  12803.            }
  12804.            function charsLeftIndex(string, chars) {
  12805.                for (var index = -1, length = string.length; ++index < length && chars.indexOf(string.charAt(index)) > -1; ) ;
  12806.                return index;
  12807.            }
  12808.            function charsRightIndex(string, chars) {
  12809.                for (var index = string.length; index-- && chars.indexOf(string.charAt(index)) > -1; ) ;
  12810.                return index;
  12811.            }
  12812.            function compareAscending(object, other) {
  12813.                return baseCompareAscending(object.criteria, other.criteria) || object.index - other.index;
  12814.            }
  12815.            function compareMultiple(object, other, orders) {
  12816.                for (var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length; ++index < length; ) {
  12817.                    var result = baseCompareAscending(objCriteria[index], othCriteria[index]);
  12818.                    if (result) {
  12819.                        if (index >= ordersLength) return result;
  12820.                        var order = orders[index];
  12821.                        return result * ("asc" === order || !0 === order ? 1 : -1);
  12822.                    }
  12823.                }
  12824.                return object.index - other.index;
  12825.            }
  12826.            function deburrLetter(letter) {
  12827.                return deburredLetters[letter];
  12828.            }
  12829.            function escapeHtmlChar(chr) {
  12830.                return htmlEscapes[chr];
  12831.            }
  12832.            function escapeRegExpChar(chr, leadingChar, whitespaceChar) {
  12833.                if (leadingChar) chr = regexpEscapes[chr]; else if (whitespaceChar) chr = stringEscapes[chr];
  12834.                return "\\" + chr;
  12835.            }
  12836.            function escapeStringChar(chr) {
  12837.                return "\\" + stringEscapes[chr];
  12838.            }
  12839.            function indexOfNaN(array, fromIndex, fromRight) {
  12840.                for (var length = array.length, index = fromIndex + (fromRight ? 0 : -1); fromRight ? index-- : ++index < length; ) {
  12841.                    var other = array[index];
  12842.                    if (other !== other) return index;
  12843.                }
  12844.                return -1;
  12845.            }
  12846.            function isObjectLike(value) {
  12847.                return !!value && "object" == typeof value;
  12848.            }
  12849.            function isSpace(charCode) {
  12850.                return charCode <= 160 && charCode >= 9 && charCode <= 13 || 32 == charCode || 160 == charCode || 5760 == charCode || 6158 == charCode || charCode >= 8192 && (charCode <= 8202 || 8232 == charCode || 8233 == charCode || 8239 == charCode || 8287 == charCode || 12288 == charCode || 65279 == charCode);
  12851.            }
  12852.            function replaceHolders(array, placeholder) {
  12853.                for (var index = -1, length = array.length, resIndex = -1, result = []; ++index < length; ) if (array[index] === placeholder) {
  12854.                    array[index] = PLACEHOLDER;
  12855.                    result[++resIndex] = index;
  12856.                }
  12857.                return result;
  12858.            }
  12859.            function sortedUniq(array, iteratee) {
  12860.                for (var seen, index = -1, length = array.length, resIndex = -1, result = []; ++index < length; ) {
  12861.                    var value = array[index], computed = iteratee ? iteratee(value, index, array) : value;
  12862.                    if (!index || seen !== computed) {
  12863.                        seen = computed;
  12864.                        result[++resIndex] = value;
  12865.                    }
  12866.                }
  12867.                return result;
  12868.            }
  12869.            function trimmedLeftIndex(string) {
  12870.                for (var index = -1, length = string.length; ++index < length && isSpace(string.charCodeAt(index)); ) ;
  12871.                return index;
  12872.            }
  12873.            function trimmedRightIndex(string) {
  12874.                for (var index = string.length; index-- && isSpace(string.charCodeAt(index)); ) ;
  12875.                return index;
  12876.            }
  12877.            function unescapeHtmlChar(chr) {
  12878.                return htmlUnescapes[chr];
  12879.            }
  12880.            function runInContext(context) {
  12881.                function lodash(value) {
  12882.                    if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
  12883.                        if (value instanceof LodashWrapper) return value;
  12884.                        if (hasOwnProperty.call(value, "__chain__") && hasOwnProperty.call(value, "__wrapped__")) return wrapperClone(value);
  12885.                    }
  12886.                    return new LodashWrapper(value);
  12887.                }
  12888.                function baseLodash() {}
  12889.                function LodashWrapper(value, chainAll, actions) {
  12890.                    this.__wrapped__ = value;
  12891.                    this.__actions__ = actions || [];
  12892.                    this.__chain__ = !!chainAll;
  12893.                }
  12894.                function LazyWrapper(value) {
  12895.                    this.__wrapped__ = value;
  12896.                    this.__actions__ = [];
  12897.                    this.__dir__ = 1;
  12898.                    this.__filtered__ = !1;
  12899.                    this.__iteratees__ = [];
  12900.                    this.__takeCount__ = POSITIVE_INFINITY;
  12901.                    this.__views__ = [];
  12902.                }
  12903.                function lazyClone() {
  12904.                    var result = new LazyWrapper(this.__wrapped__);
  12905.                    result.__actions__ = arrayCopy(this.__actions__);
  12906.                    result.__dir__ = this.__dir__;
  12907.                    result.__filtered__ = this.__filtered__;
  12908.                    result.__iteratees__ = arrayCopy(this.__iteratees__);
  12909.                    result.__takeCount__ = this.__takeCount__;
  12910.                    result.__views__ = arrayCopy(this.__views__);
  12911.                    return result;
  12912.                }
  12913.                function lazyReverse() {
  12914.                    if (this.__filtered__) {
  12915.                        var result = new LazyWrapper(this);
  12916.                        result.__dir__ = -1;
  12917.                        result.__filtered__ = !0;
  12918.                    } else {
  12919.                        result = this.clone();
  12920.                        result.__dir__ *= -1;
  12921.                    }
  12922.                    return result;
  12923.                }
  12924.                function lazyValue() {
  12925.                    var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length = end - start, index = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__);
  12926.                    if (!isArr || arrLength < LARGE_ARRAY_SIZE || arrLength == length && takeCount == length) return baseWrapperValue(isRight && isArr ? array.reverse() : array, this.__actions__);
  12927.                    var result = [];
  12928.                    outer: for (;length-- && resIndex < takeCount; ) {
  12929.                        index += dir;
  12930.                        for (var iterIndex = -1, value = array[index]; ++iterIndex < iterLength; ) {
  12931.                            var data = iteratees[iterIndex], iteratee = data.iteratee, type = data.type, computed = iteratee(value);
  12932.                            if (type == LAZY_MAP_FLAG) value = computed; else if (!computed) if (type == LAZY_FILTER_FLAG) continue outer; else break outer;
  12933.                        }
  12934.                        result[resIndex++] = value;
  12935.                    }
  12936.                    return result;
  12937.                }
  12938.                function MapCache() {
  12939.                    this.__data__ = {};
  12940.                }
  12941.                function mapDelete(key) {
  12942.                    return this.has(key) && delete this.__data__[key];
  12943.                }
  12944.                function mapGet(key) {
  12945.                    return "__proto__" == key ? undefined : this.__data__[key];
  12946.                }
  12947.                function mapHas(key) {
  12948.                    return "__proto__" != key && hasOwnProperty.call(this.__data__, key);
  12949.                }
  12950.                function mapSet(key, value) {
  12951.                    if ("__proto__" != key) this.__data__[key] = value;
  12952.                    return this;
  12953.                }
  12954.                function SetCache(values) {
  12955.                    var length = values ? values.length : 0;
  12956.                    this.data = {
  12957.                        hash: nativeCreate(null),
  12958.                        set: new Set()
  12959.                    };
  12960.                    for (;length--; ) this.push(values[length]);
  12961.                }
  12962.                function cacheIndexOf(cache, value) {
  12963.                    var data = cache.data;
  12964.                    return ("string" == typeof value || isObject(value) ? data.set.has(value) : data.hash[value]) ? 0 : -1;
  12965.                }
  12966.                function cachePush(value) {
  12967.                    var data = this.data;
  12968.                    if ("string" == typeof value || isObject(value)) data.set.add(value); else data.hash[value] = !0;
  12969.                }
  12970.                function arrayConcat(array, other) {
  12971.                    for (var index = -1, length = array.length, othIndex = -1, othLength = other.length, result = Array(length + othLength); ++index < length; ) result[index] = array[index];
  12972.                    for (;++othIndex < othLength; ) result[index++] = other[othIndex];
  12973.                    return result;
  12974.                }
  12975.                function arrayCopy(source, array) {
  12976.                    var index = -1, length = source.length;
  12977.                    array || (array = Array(length));
  12978.                    for (;++index < length; ) array[index] = source[index];
  12979.                    return array;
  12980.                }
  12981.                function arrayEach(array, iteratee) {
  12982.                    for (var index = -1, length = array.length; ++index < length && !1 !== iteratee(array[index], index, array); ) ;
  12983.                    return array;
  12984.                }
  12985.                function arrayEachRight(array, iteratee) {
  12986.                    for (var length = array.length; length-- && !1 !== iteratee(array[length], length, array); ) ;
  12987.                    return array;
  12988.                }
  12989.                function arrayEvery(array, predicate) {
  12990.                    for (var index = -1, length = array.length; ++index < length; ) if (!predicate(array[index], index, array)) return !1;
  12991.                    return !0;
  12992.                }
  12993.                function arrayExtremum(array, iteratee, comparator, exValue) {
  12994.                    for (var index = -1, length = array.length, computed = exValue, result = computed; ++index < length; ) {
  12995.                        var value = array[index], current = +iteratee(value);
  12996.                        if (comparator(current, computed)) {
  12997.                            computed = current;
  12998.                            result = value;
  12999.                        }
  13000.                    }
  13001.                    return result;
  13002.                }
  13003.                function arrayFilter(array, predicate) {
  13004.                    for (var index = -1, length = array.length, resIndex = -1, result = []; ++index < length; ) {
  13005.                        var value = array[index];
  13006.                        if (predicate(value, index, array)) result[++resIndex] = value;
  13007.                    }
  13008.                    return result;
  13009.                }
  13010.                function arrayMap(array, iteratee) {
  13011.                    for (var index = -1, length = array.length, result = Array(length); ++index < length; ) result[index] = iteratee(array[index], index, array);
  13012.                    return result;
  13013.                }
  13014.                function arrayPush(array, values) {
  13015.                    for (var index = -1, length = values.length, offset = array.length; ++index < length; ) array[offset + index] = values[index];
  13016.                    return array;
  13017.                }
  13018.                function arrayReduce(array, iteratee, accumulator, initFromArray) {
  13019.                    var index = -1, length = array.length;
  13020.                    if (initFromArray && length) accumulator = array[++index];
  13021.                    for (;++index < length; ) accumulator = iteratee(accumulator, array[index], index, array);
  13022.                    return accumulator;
  13023.                }
  13024.                function arrayReduceRight(array, iteratee, accumulator, initFromArray) {
  13025.                    var length = array.length;
  13026.                    if (initFromArray && length) accumulator = array[--length];
  13027.                    for (;length--; ) accumulator = iteratee(accumulator, array[length], length, array);
  13028.                    return accumulator;
  13029.                }
  13030.                function arraySome(array, predicate) {
  13031.                    for (var index = -1, length = array.length; ++index < length; ) if (predicate(array[index], index, array)) return !0;
  13032.                    return !1;
  13033.                }
  13034.                function arraySum(array, iteratee) {
  13035.                    for (var length = array.length, result = 0; length--; ) result += +iteratee(array[length]) || 0;
  13036.                    return result;
  13037.                }
  13038.                function assignDefaults(objectValue, sourceValue) {
  13039.                    return objectValue === undefined ? sourceValue : objectValue;
  13040.                }
  13041.                function assignOwnDefaults(objectValue, sourceValue, key, object) {
  13042.                    return objectValue === undefined || !hasOwnProperty.call(object, key) ? sourceValue : objectValue;
  13043.                }
  13044.                function assignWith(object, source, customizer) {
  13045.                    for (var index = -1, props = keys(source), length = props.length; ++index < length; ) {
  13046.                        var key = props[index], value = object[key], result = customizer(value, source[key], key, object, source);
  13047.                        if ((result === result ? result !== value : value === value) || value === undefined && !(key in object)) object[key] = result;
  13048.                    }
  13049.                    return object;
  13050.                }
  13051.                function baseAssign(object, source) {
  13052.                    return null == source ? object : baseCopy(source, keys(source), object);
  13053.                }
  13054.                function baseAt(collection, props) {
  13055.                    for (var index = -1, isNil = null == collection, isArr = !isNil && isArrayLike(collection), length = isArr ? collection.length : 0, propsLength = props.length, result = Array(propsLength); ++index < propsLength; ) {
  13056.                        var key = props[index];
  13057.                        if (isArr) result[index] = isIndex(key, length) ? collection[key] : undefined; else result[index] = isNil ? undefined : collection[key];
  13058.                    }
  13059.                    return result;
  13060.                }
  13061.                function baseCopy(source, props, object) {
  13062.                    object || (object = {});
  13063.                    for (var index = -1, length = props.length; ++index < length; ) {
  13064.                        var key = props[index];
  13065.                        object[key] = source[key];
  13066.                    }
  13067.                    return object;
  13068.                }
  13069.                function baseCallback(func, thisArg, argCount) {
  13070.                    var type = typeof func;
  13071.                    if ("function" == type) return thisArg === undefined ? func : bindCallback(func, thisArg, argCount);
  13072.                    if (null == func) return identity;
  13073.                    if ("object" == type) return baseMatches(func); else return thisArg === undefined ? property(func) : baseMatchesProperty(func, thisArg);
  13074.                }
  13075.                function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {
  13076.                    var result;
  13077.                    if (customizer) result = object ? customizer(value, key, object) : customizer(value);
  13078.                    if (result !== undefined) return result;
  13079.                    if (!isObject(value)) return value;
  13080.                    var isArr = isArray(value);
  13081.                    if (isArr) {
  13082.                        result = initCloneArray(value);
  13083.                        if (!isDeep) return arrayCopy(value, result);
  13084.                    } else {
  13085.                        var tag = objToString.call(value), isFunc = tag == funcTag;
  13086.                        if (tag == objectTag || tag == argsTag || isFunc && !object) {
  13087.                            result = initCloneObject(isFunc ? {} : value);
  13088.                            if (!isDeep) return baseAssign(result, value);
  13089.                        } else return cloneableTags[tag] ? initCloneByTag(value, tag, isDeep) : object ? value : {};
  13090.                    }
  13091.                    stackA || (stackA = []);
  13092.                    stackB || (stackB = []);
  13093.                    for (var length = stackA.length; length--; ) if (stackA[length] == value) return stackB[length];
  13094.                    stackA.push(value);
  13095.                    stackB.push(result);
  13096.                    (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {
  13097.                        result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);
  13098.                    });
  13099.                    return result;
  13100.                }
  13101.                function baseDelay(func, wait, args) {
  13102.                    if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
  13103.                    return setTimeout(function() {
  13104.                        func.apply(undefined, args);
  13105.                    }, wait);
  13106.                }
  13107.                function baseDifference(array, values) {
  13108.                    var length = array ? array.length : 0, result = [];
  13109.                    if (!length) return result;
  13110.                    var index = -1, indexOf = getIndexOf(), isCommon = indexOf == baseIndexOf, cache = isCommon && values.length >= LARGE_ARRAY_SIZE ? createCache(values) : null, valuesLength = values.length;
  13111.                    if (cache) {
  13112.                        indexOf = cacheIndexOf;
  13113.                        isCommon = !1;
  13114.                        values = cache;
  13115.                    }
  13116.                    outer: for (;++index < length; ) {
  13117.                        var value = array[index];
  13118.                        if (isCommon && value === value) {
  13119.                            for (var valuesIndex = valuesLength; valuesIndex--; ) if (values[valuesIndex] === value) continue outer;
  13120.                            result.push(value);
  13121.                        } else if (indexOf(values, value, 0) < 0) result.push(value);
  13122.                    }
  13123.                    return result;
  13124.                }
  13125.                function baseEvery(collection, predicate) {
  13126.                    var result = !0;
  13127.                    baseEach(collection, function(value, index, collection) {
  13128.                        result = !!predicate(value, index, collection);
  13129.                        return result;
  13130.                    });
  13131.                    return result;
  13132.                }
  13133.                function baseExtremum(collection, iteratee, comparator, exValue) {
  13134.                    var computed = exValue, result = computed;
  13135.                    baseEach(collection, function(value, index, collection) {
  13136.                        var current = +iteratee(value, index, collection);
  13137.                        if (comparator(current, computed) || current === exValue && current === result) {
  13138.                            computed = current;
  13139.                            result = value;
  13140.                        }
  13141.                    });
  13142.                    return result;
  13143.                }
  13144.                function baseFill(array, value, start, end) {
  13145.                    var length = array.length;
  13146.                    start = null == start ? 0 : +start || 0;
  13147.                    if (start < 0) start = -start > length ? 0 : length + start;
  13148.                    end = end === undefined || end > length ? length : +end || 0;
  13149.                    if (end < 0) end += length;
  13150.                    length = start > end ? 0 : end >>> 0;
  13151.                    start >>>= 0;
  13152.                    for (;start < length; ) array[start++] = value;
  13153.                    return array;
  13154.                }
  13155.                function baseFilter(collection, predicate) {
  13156.                    var result = [];
  13157.                    baseEach(collection, function(value, index, collection) {
  13158.                        if (predicate(value, index, collection)) result.push(value);
  13159.                    });
  13160.                    return result;
  13161.                }
  13162.                function baseFind(collection, predicate, eachFunc, retKey) {
  13163.                    var result;
  13164.                    eachFunc(collection, function(value, key, collection) {
  13165.                        if (predicate(value, key, collection)) {
  13166.                            result = retKey ? key : value;
  13167.                            return !1;
  13168.                        }
  13169.                    });
  13170.                    return result;
  13171.                }
  13172.                function baseFlatten(array, isDeep, isStrict, result) {
  13173.                    result || (result = []);
  13174.                    for (var index = -1, length = array.length; ++index < length; ) {
  13175.                        var value = array[index];
  13176.                        if (isObjectLike(value) && isArrayLike(value) && (isStrict || isArray(value) || isArguments(value))) if (isDeep) baseFlatten(value, isDeep, isStrict, result); else arrayPush(result, value); else if (!isStrict) result[result.length] = value;
  13177.                    }
  13178.                    return result;
  13179.                }
  13180.                function baseForIn(object, iteratee) {
  13181.                    return baseFor(object, iteratee, keysIn);
  13182.                }
  13183.                function baseForOwn(object, iteratee) {
  13184.                    return baseFor(object, iteratee, keys);
  13185.                }
  13186.                function baseForOwnRight(object, iteratee) {
  13187.                    return baseForRight(object, iteratee, keys);
  13188.                }
  13189.                function baseFunctions(object, props) {
  13190.                    for (var index = -1, length = props.length, resIndex = -1, result = []; ++index < length; ) {
  13191.                        var key = props[index];
  13192.                        if (isFunction(object[key])) result[++resIndex] = key;
  13193.                    }
  13194.                    return result;
  13195.                }
  13196.                function baseGet(object, path, pathKey) {
  13197.                    if (null != object) {
  13198.                        if (pathKey !== undefined && pathKey in toObject(object)) path = [ pathKey ];
  13199.                        for (var index = 0, length = path.length; null != object && index < length; ) object = object[path[index++]];
  13200.                        return index && index == length ? object : undefined;
  13201.                    }
  13202.                }
  13203.                function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
  13204.                    if (value === other) return !0;
  13205.                    if (null == value || null == other || !isObject(value) && !isObjectLike(other)) return value !== value && other !== other; else return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
  13206.                }
  13207.                function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
  13208.                    var objIsArr = isArray(object), othIsArr = isArray(other), objTag = arrayTag, othTag = arrayTag;
  13209.                    if (!objIsArr) {
  13210.                        objTag = objToString.call(object);
  13211.                        if (objTag == argsTag) objTag = objectTag; else if (objTag != objectTag) objIsArr = isTypedArray(object);
  13212.                    }
  13213.                    if (!othIsArr) {
  13214.                        othTag = objToString.call(other);
  13215.                        if (othTag == argsTag) othTag = objectTag; else if (othTag != objectTag) othIsArr = isTypedArray(other);
  13216.                    }
  13217.                    var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
  13218.                    if (isSameTag && !objIsArr && !objIsObj) return equalByTag(object, other, objTag);
  13219.                    if (!isLoose) {
  13220.                        var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
  13221.                        if (objIsWrapped || othIsWrapped) return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
  13222.                    }
  13223.                    if (!isSameTag) return !1;
  13224.                    stackA || (stackA = []);
  13225.                    stackB || (stackB = []);
  13226.                    for (var length = stackA.length; length--; ) if (stackA[length] == object) return stackB[length] == other;
  13227.                    stackA.push(object);
  13228.                    stackB.push(other);
  13229.                    var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);
  13230.                    stackA.pop();
  13231.                    stackB.pop();
  13232.                    return result;
  13233.                }
  13234.                function baseIsMatch(object, matchData, customizer) {
  13235.                    var index = matchData.length, length = index, noCustomizer = !customizer;
  13236.                    if (null == object) return !length;
  13237.                    object = toObject(object);
  13238.                    for (;index--; ) {
  13239.                        var data = matchData[index];
  13240.                        if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) return !1;
  13241.                    }
  13242.                    for (;++index < length; ) {
  13243.                        data = matchData[index];
  13244.                        var key = data[0], objValue = object[key], srcValue = data[1];
  13245.                        if (noCustomizer && data[2]) {
  13246.                            if (objValue === undefined && !(key in object)) return !1;
  13247.                        } else {
  13248.                            var result = customizer ? customizer(objValue, srcValue, key) : undefined;
  13249.                            if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, !0) : result)) return !1;
  13250.                        }
  13251.                    }
  13252.                    return !0;
  13253.                }
  13254.                function baseMap(collection, iteratee) {
  13255.                    var index = -1, result = isArrayLike(collection) ? Array(collection.length) : [];
  13256.                    baseEach(collection, function(value, key, collection) {
  13257.                        result[++index] = iteratee(value, key, collection);
  13258.                    });
  13259.                    return result;
  13260.                }
  13261.                function baseMatches(source) {
  13262.                    var matchData = getMatchData(source);
  13263.                    if (1 == matchData.length && matchData[0][2]) {
  13264.                        var key = matchData[0][0], value = matchData[0][1];
  13265.                        return function(object) {
  13266.                            if (null == object) return !1; else return object[key] === value && (value !== undefined || key in toObject(object));
  13267.                        };
  13268.                    }
  13269.                    return function(object) {
  13270.                        return baseIsMatch(object, matchData);
  13271.                    };
  13272.                }
  13273.                function baseMatchesProperty(path, srcValue) {
  13274.                    var isArr = isArray(path), isCommon = isKey(path) && isStrictComparable(srcValue), pathKey = path + "";
  13275.                    path = toPath(path);
  13276.                    return function(object) {
  13277.                        if (null == object) return !1;
  13278.                        var key = pathKey;
  13279.                        object = toObject(object);
  13280.                        if ((isArr || !isCommon) && !(key in object)) {
  13281.                            object = 1 == path.length ? object : baseGet(object, baseSlice(path, 0, -1));
  13282.                            if (null == object) return !1;
  13283.                            key = last(path);
  13284.                            object = toObject(object);
  13285.                        }
  13286.                        return object[key] === srcValue ? srcValue !== undefined || key in object : baseIsEqual(srcValue, object[key], undefined, !0);
  13287.                    };
  13288.                }
  13289.                function baseMerge(object, source, customizer, stackA, stackB) {
  13290.                    if (!isObject(object)) return object;
  13291.                    var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)), props = isSrcArr ? undefined : keys(source);
  13292.                    arrayEach(props || source, function(srcValue, key) {
  13293.                        if (props) {
  13294.                            key = srcValue;
  13295.                            srcValue = source[key];
  13296.                        }
  13297.                        if (isObjectLike(srcValue)) {
  13298.                            stackA || (stackA = []);
  13299.                            stackB || (stackB = []);
  13300.                            baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
  13301.                        } else {
  13302.                            var value = object[key], result = customizer ? customizer(value, srcValue, key, object, source) : undefined, isCommon = result === undefined;
  13303.                            if (isCommon) result = srcValue;
  13304.                            if ((result !== undefined || isSrcArr && !(key in object)) && (isCommon || (result === result ? result !== value : value === value))) object[key] = result;
  13305.                        }
  13306.                    });
  13307.                    return object;
  13308.                }
  13309.                function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {
  13310.                    for (var length = stackA.length, srcValue = source[key]; length--; ) if (stackA[length] == srcValue) {
  13311.                        object[key] = stackB[length];
  13312.                        return;
  13313.                    }
  13314.                    var value = object[key], result = customizer ? customizer(value, srcValue, key, object, source) : undefined, isCommon = result === undefined;
  13315.                    if (isCommon) {
  13316.                        result = srcValue;
  13317.                        if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) result = isArray(value) ? value : isArrayLike(value) ? arrayCopy(value) : []; else if (isPlainObject(srcValue) || isArguments(srcValue)) result = isArguments(value) ? toPlainObject(value) : isPlainObject(value) ? value : {}; else isCommon = !1;
  13318.                    }
  13319.                    stackA.push(srcValue);
  13320.                    stackB.push(result);
  13321.                    if (isCommon) object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB); else if (result === result ? result !== value : value === value) object[key] = result;
  13322.                }
  13323.                function baseProperty(key) {
  13324.                    return function(object) {
  13325.                        return null == object ? undefined : object[key];
  13326.                    };
  13327.                }
  13328.                function basePropertyDeep(path) {
  13329.                    var pathKey = path + "";
  13330.                    path = toPath(path);
  13331.                    return function(object) {
  13332.                        return baseGet(object, path, pathKey);
  13333.                    };
  13334.                }
  13335.                function basePullAt(array, indexes) {
  13336.                    for (var length = array ? indexes.length : 0; length--; ) {
  13337.                        var index = indexes[length];
  13338.                        if (index != previous && isIndex(index)) {
  13339.                            var previous = index;
  13340.                            splice.call(array, index, 1);
  13341.                        }
  13342.                    }
  13343.                    return array;
  13344.                }
  13345.                function baseRandom(min, max) {
  13346.                    return min + nativeFloor(nativeRandom() * (max - min + 1));
  13347.                }
  13348.                function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
  13349.                    eachFunc(collection, function(value, index, collection) {
  13350.                        accumulator = initFromCollection ? (initFromCollection = !1, value) : iteratee(accumulator, value, index, collection);
  13351.                    });
  13352.                    return accumulator;
  13353.                }
  13354.                function baseSlice(array, start, end) {
  13355.                    var index = -1, length = array.length;
  13356.                    start = null == start ? 0 : +start || 0;
  13357.                    if (start < 0) start = -start > length ? 0 : length + start;
  13358.                    end = end === undefined || end > length ? length : +end || 0;
  13359.                    if (end < 0) end += length;
  13360.                    length = start > end ? 0 : end - start >>> 0;
  13361.                    start >>>= 0;
  13362.                    for (var result = Array(length); ++index < length; ) result[index] = array[index + start];
  13363.                    return result;
  13364.                }
  13365.                function baseSome(collection, predicate) {
  13366.                    var result;
  13367.                    baseEach(collection, function(value, index, collection) {
  13368.                        result = predicate(value, index, collection);
  13369.                        return !result;
  13370.                    });
  13371.                    return !!result;
  13372.                }
  13373.                function baseSortBy(array, comparer) {
  13374.                    var length = array.length;
  13375.                    array.sort(comparer);
  13376.                    for (;length--; ) array[length] = array[length].value;
  13377.                    return array;
  13378.                }
  13379.                function baseSortByOrder(collection, iteratees, orders) {
  13380.                    var callback = getCallback(), index = -1;
  13381.                    iteratees = arrayMap(iteratees, function(iteratee) {
  13382.                        return callback(iteratee);
  13383.                    });
  13384.                    return baseSortBy(baseMap(collection, function(value) {
  13385.                        return {
  13386.                            criteria: arrayMap(iteratees, function(iteratee) {
  13387.                                return iteratee(value);
  13388.                            }),
  13389.                            index: ++index,
  13390.                            value: value
  13391.                        };
  13392.                    }), function(object, other) {
  13393.                        return compareMultiple(object, other, orders);
  13394.                    });
  13395.                }
  13396.                function baseSum(collection, iteratee) {
  13397.                    var result = 0;
  13398.                    baseEach(collection, function(value, index, collection) {
  13399.                        result += +iteratee(value, index, collection) || 0;
  13400.                    });
  13401.                    return result;
  13402.                }
  13403.                function baseUniq(array, iteratee) {
  13404.                    var index = -1, indexOf = getIndexOf(), length = array.length, isCommon = indexOf == baseIndexOf, isLarge = isCommon && length >= LARGE_ARRAY_SIZE, seen = isLarge ? createCache() : null, result = [];
  13405.                    if (seen) {
  13406.                        indexOf = cacheIndexOf;
  13407.                        isCommon = !1;
  13408.                    } else {
  13409.                        isLarge = !1;
  13410.                        seen = iteratee ? [] : result;
  13411.                    }
  13412.                    outer: for (;++index < length; ) {
  13413.                        var value = array[index], computed = iteratee ? iteratee(value, index, array) : value;
  13414.                        if (isCommon && value === value) {
  13415.                            for (var seenIndex = seen.length; seenIndex--; ) if (seen[seenIndex] === computed) continue outer;
  13416.                            if (iteratee) seen.push(computed);
  13417.                            result.push(value);
  13418.                        } else if (indexOf(seen, computed, 0) < 0) {
  13419.                            if (iteratee || isLarge) seen.push(computed);
  13420.                            result.push(value);
  13421.                        }
  13422.                    }
  13423.                    return result;
  13424.                }
  13425.                function baseValues(object, props) {
  13426.                    for (var index = -1, length = props.length, result = Array(length); ++index < length; ) result[index] = object[props[index]];
  13427.                    return result;
  13428.                }
  13429.                function baseWhile(array, predicate, isDrop, fromRight) {
  13430.                    for (var length = array.length, index = fromRight ? length : -1; (fromRight ? index-- : ++index < length) && predicate(array[index], index, array); ) ;
  13431.                    return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index);
  13432.                }
  13433.                function baseWrapperValue(value, actions) {
  13434.                    var result = value;
  13435.                    if (result instanceof LazyWrapper) result = result.value();
  13436.                    for (var index = -1, length = actions.length; ++index < length; ) {
  13437.                        var action = actions[index];
  13438.                        result = action.func.apply(action.thisArg, arrayPush([ result ], action.args));
  13439.                    }
  13440.                    return result;
  13441.                }
  13442.                function binaryIndex(array, value, retHighest) {
  13443.                    var low = 0, high = array ? array.length : low;
  13444.                    if ("number" == typeof value && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
  13445.                        for (;low < high; ) {
  13446.                            var mid = low + high >>> 1, computed = array[mid];
  13447.                            if ((retHighest ? computed <= value : computed < value) && null !== computed) low = mid + 1; else high = mid;
  13448.                        }
  13449.                        return high;
  13450.                    }
  13451.                    return binaryIndexBy(array, value, identity, retHighest);
  13452.                }
  13453.                function binaryIndexBy(array, value, iteratee, retHighest) {
  13454.                    value = iteratee(value);
  13455.                    for (var low = 0, high = array ? array.length : 0, valIsNaN = value !== value, valIsNull = null === value, valIsUndef = value === undefined; low < high; ) {
  13456.                        var mid = nativeFloor((low + high) / 2), computed = iteratee(array[mid]), isDef = computed !== undefined, isReflexive = computed === computed;
  13457.                        if (valIsNaN) var setLow = isReflexive || retHighest; else if (valIsNull) setLow = isReflexive && isDef && (retHighest || null != computed); else if (valIsUndef) setLow = isReflexive && (retHighest || isDef); else if (null == computed) setLow = !1; else setLow = retHighest ? computed <= value : computed < value;
  13458.                        if (setLow) low = mid + 1; else high = mid;
  13459.                    }
  13460.                    return nativeMin(high, MAX_ARRAY_INDEX);
  13461.                }
  13462.                function bindCallback(func, thisArg, argCount) {
  13463.                    if ("function" != typeof func) return identity;
  13464.                    if (thisArg === undefined) return func;
  13465.                    switch (argCount) {
  13466.                      case 1:
  13467.                        return function(value) {
  13468.                            return func.call(thisArg, value);
  13469.                        };
  13470.  
  13471.                      case 3:
  13472.                        return function(value, index, collection) {
  13473.                            return func.call(thisArg, value, index, collection);
  13474.                        };
  13475.  
  13476.                      case 4:
  13477.                        return function(accumulator, value, index, collection) {
  13478.                            return func.call(thisArg, accumulator, value, index, collection);
  13479.                        };
  13480.  
  13481.                      case 5:
  13482.                        return function(value, other, key, object, source) {
  13483.                            return func.call(thisArg, value, other, key, object, source);
  13484.                        };
  13485.                    }
  13486.                    return function() {
  13487.                        return func.apply(thisArg, arguments);
  13488.                    };
  13489.                }
  13490.                function bufferClone(buffer) {
  13491.                    var result = new ArrayBuffer(buffer.byteLength);
  13492.                    new Uint8Array(result).set(new Uint8Array(buffer));
  13493.                    return result;
  13494.                }
  13495.                function composeArgs(args, partials, holders) {
  13496.                    for (var holdersLength = holders.length, argsIndex = -1, argsLength = nativeMax(args.length - holdersLength, 0), leftIndex = -1, leftLength = partials.length, result = Array(leftLength + argsLength); ++leftIndex < leftLength; ) result[leftIndex] = partials[leftIndex];
  13497.                    for (;++argsIndex < holdersLength; ) result[holders[argsIndex]] = args[argsIndex];
  13498.                    for (;argsLength--; ) result[leftIndex++] = args[argsIndex++];
  13499.                    return result;
  13500.                }
  13501.                function composeArgsRight(args, partials, holders) {
  13502.                    for (var holdersIndex = -1, holdersLength = holders.length, argsIndex = -1, argsLength = nativeMax(args.length - holdersLength, 0), rightIndex = -1, rightLength = partials.length, result = Array(argsLength + rightLength); ++argsIndex < argsLength; ) result[argsIndex] = args[argsIndex];
  13503.                    for (var offset = argsIndex; ++rightIndex < rightLength; ) result[offset + rightIndex] = partials[rightIndex];
  13504.                    for (;++holdersIndex < holdersLength; ) result[offset + holders[holdersIndex]] = args[argsIndex++];
  13505.                    return result;
  13506.                }
  13507.                function createAggregator(setter, initializer) {
  13508.                    return function(collection, iteratee, thisArg) {
  13509.                        var result = initializer ? initializer() : {};
  13510.                        iteratee = getCallback(iteratee, thisArg, 3);
  13511.                        if (isArray(collection)) for (var index = -1, length = collection.length; ++index < length; ) {
  13512.                            var value = collection[index];
  13513.                            setter(result, value, iteratee(value, index, collection), collection);
  13514.                        } else baseEach(collection, function(value, key, collection) {
  13515.                            setter(result, value, iteratee(value, key, collection), collection);
  13516.                        });
  13517.                        return result;
  13518.                    };
  13519.                }
  13520.                function createAssigner(assigner) {
  13521.                    return restParam(function(object, sources) {
  13522.                        var index = -1, length = null == object ? 0 : sources.length, customizer = length > 2 ? sources[length - 2] : undefined, guard = length > 2 ? sources[2] : undefined, thisArg = length > 1 ? sources[length - 1] : undefined;
  13523.                        if ("function" == typeof customizer) {
  13524.                            customizer = bindCallback(customizer, thisArg, 5);
  13525.                            length -= 2;
  13526.                        } else {
  13527.                            customizer = "function" == typeof thisArg ? thisArg : undefined;
  13528.                            length -= customizer ? 1 : 0;
  13529.                        }
  13530.                        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
  13531.                            customizer = length < 3 ? undefined : customizer;
  13532.                            length = 1;
  13533.                        }
  13534.                        for (;++index < length; ) {
  13535.                            var source = sources[index];
  13536.                            if (source) assigner(object, source, customizer);
  13537.                        }
  13538.                        return object;
  13539.                    });
  13540.                }
  13541.                function createBaseEach(eachFunc, fromRight) {
  13542.                    return function(collection, iteratee) {
  13543.                        var length = collection ? getLength(collection) : 0;
  13544.                        if (!isLength(length)) return eachFunc(collection, iteratee);
  13545.                        for (var index = fromRight ? length : -1, iterable = toObject(collection); (fromRight ? index-- : ++index < length) && !1 !== iteratee(iterable[index], index, iterable); ) ;
  13546.                        return collection;
  13547.                    };
  13548.                }
  13549.                function createBaseFor(fromRight) {
  13550.                    return function(object, iteratee, keysFunc) {
  13551.                        for (var iterable = toObject(object), props = keysFunc(object), length = props.length, index = fromRight ? length : -1; fromRight ? index-- : ++index < length; ) {
  13552.                            var key = props[index];
  13553.                            if (!1 === iteratee(iterable[key], key, iterable)) break;
  13554.                        }
  13555.                        return object;
  13556.                    };
  13557.                }
  13558.                function createBindWrapper(func, thisArg) {
  13559.                    function wrapper() {
  13560.                        return (this && this !== root && this instanceof wrapper ? Ctor : func).apply(thisArg, arguments);
  13561.                    }
  13562.                    var Ctor = createCtorWrapper(func);
  13563.                    return wrapper;
  13564.                }
  13565.                function createCache(values) {
  13566.                    return nativeCreate && Set ? new SetCache(values) : null;
  13567.                }
  13568.                function createCompounder(callback) {
  13569.                    return function(string) {
  13570.                        for (var index = -1, array = words(deburr(string)), length = array.length, result = ""; ++index < length; ) result = callback(result, array[index], index);
  13571.                        return result;
  13572.                    };
  13573.                }
  13574.                function createCtorWrapper(Ctor) {
  13575.                    return function() {
  13576.                        var args = arguments;
  13577.                        switch (args.length) {
  13578.                          case 0:
  13579.                            return new Ctor();
  13580.  
  13581.                          case 1:
  13582.                            return new Ctor(args[0]);
  13583.  
  13584.                          case 2:
  13585.                            return new Ctor(args[0], args[1]);
  13586.  
  13587.                          case 3:
  13588.                            return new Ctor(args[0], args[1], args[2]);
  13589.  
  13590.                          case 4:
  13591.                            return new Ctor(args[0], args[1], args[2], args[3]);
  13592.  
  13593.                          case 5:
  13594.                            return new Ctor(args[0], args[1], args[2], args[3], args[4]);
  13595.  
  13596.                          case 6:
  13597.                            return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
  13598.  
  13599.                          case 7:
  13600.                            return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
  13601.                        }
  13602.                        var thisBinding = baseCreate(Ctor.prototype), result = Ctor.apply(thisBinding, args);
  13603.                        return isObject(result) ? result : thisBinding;
  13604.                    };
  13605.                }
  13606.                function createCurry(flag) {
  13607.                    function curryFunc(func, arity, guard) {
  13608.                        if (guard && isIterateeCall(func, arity, guard)) arity = undefined;
  13609.                        var result = createWrapper(func, flag, undefined, undefined, undefined, undefined, undefined, arity);
  13610.                        result.placeholder = curryFunc.placeholder;
  13611.                        return result;
  13612.                    }
  13613.                    return curryFunc;
  13614.                }
  13615.                function createDefaults(assigner, customizer) {
  13616.                    return restParam(function(args) {
  13617.                        var object = args[0];
  13618.                        if (null == object) return object;
  13619.                        args.push(customizer);
  13620.                        return assigner.apply(undefined, args);
  13621.                    });
  13622.                }
  13623.                function createExtremum(comparator, exValue) {
  13624.                    return function(collection, iteratee, thisArg) {
  13625.                        if (thisArg && isIterateeCall(collection, iteratee, thisArg)) iteratee = undefined;
  13626.                        iteratee = getCallback(iteratee, thisArg, 3);
  13627.                        if (1 == iteratee.length) {
  13628.                            collection = isArray(collection) ? collection : toIterable(collection);
  13629.                            var result = arrayExtremum(collection, iteratee, comparator, exValue);
  13630.                            if (!collection.length || result !== exValue) return result;
  13631.                        }
  13632.                        return baseExtremum(collection, iteratee, comparator, exValue);
  13633.                    };
  13634.                }
  13635.                function createFind(eachFunc, fromRight) {
  13636.                    return function(collection, predicate, thisArg) {
  13637.                        predicate = getCallback(predicate, thisArg, 3);
  13638.                        if (isArray(collection)) {
  13639.                            var index = baseFindIndex(collection, predicate, fromRight);
  13640.                            return index > -1 ? collection[index] : undefined;
  13641.                        }
  13642.                        return baseFind(collection, predicate, eachFunc);
  13643.                    };
  13644.                }
  13645.                function createFindIndex(fromRight) {
  13646.                    return function(array, predicate, thisArg) {
  13647.                        if (!array || !array.length) return -1;
  13648.                        predicate = getCallback(predicate, thisArg, 3);
  13649.                        return baseFindIndex(array, predicate, fromRight);
  13650.                    };
  13651.                }
  13652.                function createFindKey(objectFunc) {
  13653.                    return function(object, predicate, thisArg) {
  13654.                        predicate = getCallback(predicate, thisArg, 3);
  13655.                        return baseFind(object, predicate, objectFunc, !0);
  13656.                    };
  13657.                }
  13658.                function createFlow(fromRight) {
  13659.                    return function() {
  13660.                        for (var wrapper, length = arguments.length, index = fromRight ? length : -1, leftIndex = 0, funcs = Array(length); fromRight ? index-- : ++index < length; ) {
  13661.                            var func = funcs[leftIndex++] = arguments[index];
  13662.                            if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
  13663.                            if (!wrapper && LodashWrapper.prototype.thru && "wrapper" == getFuncName(func)) wrapper = new LodashWrapper([], !0);
  13664.                        }
  13665.                        index = wrapper ? -1 : length;
  13666.                        for (;++index < length; ) {
  13667.                            func = funcs[index];
  13668.                            var funcName = getFuncName(func), data = "wrapper" == funcName ? getData(func) : undefined;
  13669.                            if (data && isLaziable(data[0]) && data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) && !data[4].length && 1 == data[9]) wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); else wrapper = 1 == func.length && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);
  13670.                        }
  13671.                        return function() {
  13672.                            var args = arguments, value = args[0];
  13673.                            if (wrapper && 1 == args.length && isArray(value) && value.length >= LARGE_ARRAY_SIZE) return wrapper.plant(value).value();
  13674.                            for (var index = 0, result = length ? funcs[index].apply(this, args) : value; ++index < length; ) result = funcs[index].call(this, result);
  13675.                            return result;
  13676.                        };
  13677.                    };
  13678.                }
  13679.                function createForEach(arrayFunc, eachFunc) {
  13680.                    return function(collection, iteratee, thisArg) {
  13681.                        return "function" == typeof iteratee && thisArg === undefined && isArray(collection) ? arrayFunc(collection, iteratee) : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
  13682.                    };
  13683.                }
  13684.                function createForIn(objectFunc) {
  13685.                    return function(object, iteratee, thisArg) {
  13686.                        if ("function" != typeof iteratee || thisArg !== undefined) iteratee = bindCallback(iteratee, thisArg, 3);
  13687.                        return objectFunc(object, iteratee, keysIn);
  13688.                    };
  13689.                }
  13690.                function createForOwn(objectFunc) {
  13691.                    return function(object, iteratee, thisArg) {
  13692.                        if ("function" != typeof iteratee || thisArg !== undefined) iteratee = bindCallback(iteratee, thisArg, 3);
  13693.                        return objectFunc(object, iteratee);
  13694.                    };
  13695.                }
  13696.                function createObjectMapper(isMapKeys) {
  13697.                    return function(object, iteratee, thisArg) {
  13698.                        var result = {};
  13699.                        iteratee = getCallback(iteratee, thisArg, 3);
  13700.                        baseForOwn(object, function(value, key, object) {
  13701.                            var mapped = iteratee(value, key, object);
  13702.                            key = isMapKeys ? mapped : key;
  13703.                            value = isMapKeys ? value : mapped;
  13704.                            result[key] = value;
  13705.                        });
  13706.                        return result;
  13707.                    };
  13708.                }
  13709.                function createPadDir(fromRight) {
  13710.                    return function(string, length, chars) {
  13711.                        string = baseToString(string);
  13712.                        return (fromRight ? string : "") + createPadding(string, length, chars) + (fromRight ? "" : string);
  13713.                    };
  13714.                }
  13715.                function createPartial(flag) {
  13716.                    var partialFunc = restParam(function(func, partials) {
  13717.                        var holders = replaceHolders(partials, partialFunc.placeholder);
  13718.                        return createWrapper(func, flag, undefined, partials, holders);
  13719.                    });
  13720.                    return partialFunc;
  13721.                }
  13722.                function createReduce(arrayFunc, eachFunc) {
  13723.                    return function(collection, iteratee, accumulator, thisArg) {
  13724.                        var initFromArray = arguments.length < 3;
  13725.                        return "function" == typeof iteratee && thisArg === undefined && isArray(collection) ? arrayFunc(collection, iteratee, accumulator, initFromArray) : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
  13726.                    };
  13727.                }
  13728.                function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
  13729.                    function wrapper() {
  13730.                        for (var length = arguments.length, index = length, args = Array(length); index--; ) args[index] = arguments[index];
  13731.                        if (partials) args = composeArgs(args, partials, holders);
  13732.                        if (partialsRight) args = composeArgsRight(args, partialsRight, holdersRight);
  13733.                        if (isCurry || isCurryRight) {
  13734.                            var placeholder = wrapper.placeholder, argsHolders = replaceHolders(args, placeholder);
  13735.                            length -= argsHolders.length;
  13736.                            if (length < arity) {
  13737.                                var newArgPos = argPos ? arrayCopy(argPos) : undefined, newArity = nativeMax(arity - length, 0), newsHolders = isCurry ? argsHolders : undefined, newHoldersRight = isCurry ? undefined : argsHolders, newPartials = isCurry ? args : undefined, newPartialsRight = isCurry ? undefined : args;
  13738.                                bitmask |= isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG;
  13739.                                bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);
  13740.                                if (!isCurryBound) bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);
  13741.                                var newData = [ func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity ], result = createHybridWrapper.apply(undefined, newData);
  13742.                                if (isLaziable(func)) setData(result, newData);
  13743.                                result.placeholder = placeholder;
  13744.                                return result;
  13745.                            }
  13746.                        }
  13747.                        var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func;
  13748.                        if (argPos) args = reorder(args, argPos);
  13749.                        if (isAry && ary < args.length) args.length = ary;
  13750.                        if (this && this !== root && this instanceof wrapper) fn = Ctor || createCtorWrapper(func);
  13751.                        return fn.apply(thisBinding, args);
  13752.                    }
  13753.                    var isAry = bitmask & ARY_FLAG, isBind = bitmask & BIND_FLAG, isBindKey = bitmask & BIND_KEY_FLAG, isCurry = bitmask & CURRY_FLAG, isCurryBound = bitmask & CURRY_BOUND_FLAG, isCurryRight = bitmask & CURRY_RIGHT_FLAG, Ctor = isBindKey ? undefined : createCtorWrapper(func);
  13754.                    return wrapper;
  13755.                }
  13756.                function createPadding(string, length, chars) {
  13757.                    var strLength = string.length;
  13758.                    length = +length;
  13759.                    if (strLength >= length || !nativeIsFinite(length)) return "";
  13760.                    var padLength = length - strLength;
  13761.                    chars = null == chars ? " " : chars + "";
  13762.                    return repeat(chars, nativeCeil(padLength / chars.length)).slice(0, padLength);
  13763.                }
  13764.                function createPartialWrapper(func, bitmask, thisArg, partials) {
  13765.                    function wrapper() {
  13766.                        for (var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array(leftLength + argsLength); ++leftIndex < leftLength; ) args[leftIndex] = partials[leftIndex];
  13767.                        for (;argsLength--; ) args[leftIndex++] = arguments[++argsIndex];
  13768.                        return (this && this !== root && this instanceof wrapper ? Ctor : func).apply(isBind ? thisArg : this, args);
  13769.                    }
  13770.                    var isBind = bitmask & BIND_FLAG, Ctor = createCtorWrapper(func);
  13771.                    return wrapper;
  13772.                }
  13773.                function createRound(methodName) {
  13774.                    var func = Math[methodName];
  13775.                    return function(number, precision) {
  13776.                        precision = precision === undefined ? 0 : +precision || 0;
  13777.                        if (precision) {
  13778.                            precision = pow(10, precision);
  13779.                            return func(number * precision) / precision;
  13780.                        }
  13781.                        return func(number);
  13782.                    };
  13783.                }
  13784.                function createSortedIndex(retHighest) {
  13785.                    return function(array, value, iteratee, thisArg) {
  13786.                        var callback = getCallback(iteratee);
  13787.                        return null == iteratee && callback === baseCallback ? binaryIndex(array, value, retHighest) : binaryIndexBy(array, value, callback(iteratee, thisArg, 1), retHighest);
  13788.                    };
  13789.                }
  13790.                function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
  13791.                    var isBindKey = bitmask & BIND_KEY_FLAG;
  13792.                    if (!isBindKey && "function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
  13793.                    var length = partials ? partials.length : 0;
  13794.                    if (!length) {
  13795.                        bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);
  13796.                        partials = holders = undefined;
  13797.                    }
  13798.                    length -= holders ? holders.length : 0;
  13799.                    if (bitmask & PARTIAL_RIGHT_FLAG) {
  13800.                        var partialsRight = partials, holdersRight = holders;
  13801.                        partials = holders = undefined;
  13802.                    }
  13803.                    var data = isBindKey ? undefined : getData(func), newData = [ func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity ];
  13804.                    if (data) {
  13805.                        mergeData(newData, data);
  13806.                        bitmask = newData[1];
  13807.                        arity = newData[9];
  13808.                    }
  13809.                    newData[9] = null == arity ? isBindKey ? 0 : func.length : nativeMax(arity - length, 0) || 0;
  13810.                    if (bitmask == BIND_FLAG) var result = createBindWrapper(newData[0], newData[2]); else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) result = createPartialWrapper.apply(undefined, newData); else result = createHybridWrapper.apply(undefined, newData);
  13811.                    return (data ? baseSetData : setData)(result, newData);
  13812.                }
  13813.                function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {
  13814.                    var index = -1, arrLength = array.length, othLength = other.length;
  13815.                    if (arrLength != othLength && !(isLoose && othLength > arrLength)) return !1;
  13816.                    for (;++index < arrLength; ) {
  13817.                        var arrValue = array[index], othValue = other[index], result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;
  13818.                        if (result !== undefined) {
  13819.                            if (result) continue;
  13820.                            return !1;
  13821.                        }
  13822.                        if (isLoose) {
  13823.                            if (!arraySome(other, function(othValue) {
  13824.                                return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
  13825.                            })) return !1;
  13826.                        } else if (arrValue !== othValue && !equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB)) return !1;
  13827.                    }
  13828.                    return !0;
  13829.                }
  13830.                function equalByTag(object, other, tag) {
  13831.                    switch (tag) {
  13832.                      case boolTag:
  13833.                      case dateTag:
  13834.                        return +object == +other;
  13835.  
  13836.                      case errorTag:
  13837.                        return object.name == other.name && object.message == other.message;
  13838.  
  13839.                      case numberTag:
  13840.                        return object != +object ? other != +other : object == +other;
  13841.  
  13842.                      case regexpTag:
  13843.                      case stringTag:
  13844.                        return object == other + "";
  13845.                    }
  13846.                    return !1;
  13847.                }
  13848.                function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
  13849.                    var objProps = keys(object), objLength = objProps.length;
  13850.                    if (objLength != keys(other).length && !isLoose) return !1;
  13851.                    for (var index = objLength; index--; ) {
  13852.                        var key = objProps[index];
  13853.                        if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) return !1;
  13854.                    }
  13855.                    for (var skipCtor = isLoose; ++index < objLength; ) {
  13856.                        key = objProps[index];
  13857.                        var objValue = object[key], othValue = other[key], result = customizer ? customizer(isLoose ? othValue : objValue, isLoose ? objValue : othValue, key) : undefined;
  13858.                        if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) return !1;
  13859.                        skipCtor || (skipCtor = "constructor" == key);
  13860.                    }
  13861.                    if (!skipCtor) {
  13862.                        var objCtor = object.constructor, othCtor = other.constructor;
  13863.                        if (objCtor != othCtor && "constructor" in object && "constructor" in other && !("function" == typeof objCtor && objCtor instanceof objCtor && "function" == typeof othCtor && othCtor instanceof othCtor)) return !1;
  13864.                    }
  13865.                    return !0;
  13866.                }
  13867.                function getCallback(func, thisArg, argCount) {
  13868.                    var result = lodash.callback || callback;
  13869.                    result = result === callback ? baseCallback : result;
  13870.                    return argCount ? result(func, thisArg, argCount) : result;
  13871.                }
  13872.                function getFuncName(func) {
  13873.                    for (var result = func.name, array = realNames[result], length = array ? array.length : 0; length--; ) {
  13874.                        var data = array[length], otherFunc = data.func;
  13875.                        if (null == otherFunc || otherFunc == func) return data.name;
  13876.                    }
  13877.                    return result;
  13878.                }
  13879.                function getIndexOf(collection, target, fromIndex) {
  13880.                    var result = lodash.indexOf || indexOf;
  13881.                    result = result === indexOf ? baseIndexOf : result;
  13882.                    return collection ? result(collection, target, fromIndex) : result;
  13883.                }
  13884.                function getMatchData(object) {
  13885.                    for (var result = pairs(object), length = result.length; length--; ) result[length][2] = isStrictComparable(result[length][1]);
  13886.                    return result;
  13887.                }
  13888.                function getNative(object, key) {
  13889.                    var value = null == object ? undefined : object[key];
  13890.                    return isNative(value) ? value : undefined;
  13891.                }
  13892.                function getView(start, end, transforms) {
  13893.                    for (var index = -1, length = transforms.length; ++index < length; ) {
  13894.                        var data = transforms[index], size = data.size;
  13895.                        switch (data.type) {
  13896.                          case "drop":
  13897.                            start += size;
  13898.                            break;
  13899.  
  13900.                          case "dropRight":
  13901.                            end -= size;
  13902.                            break;
  13903.  
  13904.                          case "take":
  13905.                            end = nativeMin(end, start + size);
  13906.                            break;
  13907.  
  13908.                          case "takeRight":
  13909.                            start = nativeMax(start, end - size);
  13910.                        }
  13911.                    }
  13912.                    return {
  13913.                        start: start,
  13914.                        end: end
  13915.                    };
  13916.                }
  13917.                function initCloneArray(array) {
  13918.                    var length = array.length, result = new array.constructor(length);
  13919.                    if (length && "string" == typeof array[0] && hasOwnProperty.call(array, "index")) {
  13920.                        result.index = array.index;
  13921.                        result.input = array.input;
  13922.                    }
  13923.                    return result;
  13924.                }
  13925.                function initCloneObject(object) {
  13926.                    var Ctor = object.constructor;
  13927.                    if (!("function" == typeof Ctor && Ctor instanceof Ctor)) Ctor = Object;
  13928.                    return new Ctor();
  13929.                }
  13930.                function initCloneByTag(object, tag, isDeep) {
  13931.                    var Ctor = object.constructor;
  13932.                    switch (tag) {
  13933.                      case arrayBufferTag:
  13934.                        return bufferClone(object);
  13935.  
  13936.                      case boolTag:
  13937.                      case dateTag:
  13938.                        return new Ctor(+object);
  13939.  
  13940.                      case float32Tag:
  13941.                      case float64Tag:
  13942.                      case int8Tag:
  13943.                      case int16Tag:
  13944.                      case int32Tag:
  13945.                      case uint8Tag:
  13946.                      case uint8ClampedTag:
  13947.                      case uint16Tag:
  13948.                      case uint32Tag:
  13949.                        var buffer = object.buffer;
  13950.                        return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
  13951.  
  13952.                      case numberTag:
  13953.                      case stringTag:
  13954.                        return new Ctor(object);
  13955.  
  13956.                      case regexpTag:
  13957.                        var result = new Ctor(object.source, reFlags.exec(object));
  13958.                        result.lastIndex = object.lastIndex;
  13959.                    }
  13960.                    return result;
  13961.                }
  13962.                function invokePath(object, path, args) {
  13963.                    if (null != object && !isKey(path, object)) {
  13964.                        path = toPath(path);
  13965.                        object = 1 == path.length ? object : baseGet(object, baseSlice(path, 0, -1));
  13966.                        path = last(path);
  13967.                    }
  13968.                    var func = null == object ? object : object[path];
  13969.                    return null == func ? undefined : func.apply(object, args);
  13970.                }
  13971.                function isArrayLike(value) {
  13972.                    return null != value && isLength(getLength(value));
  13973.                }
  13974.                function isIndex(value, length) {
  13975.                    value = "number" == typeof value || reIsUint.test(value) ? +value : -1;
  13976.                    length = null == length ? MAX_SAFE_INTEGER : length;
  13977.                    return value > -1 && value % 1 == 0 && value < length;
  13978.                }
  13979.                function isIterateeCall(value, index, object) {
  13980.                    if (!isObject(object)) return !1;
  13981.                    var type = typeof index;
  13982.                    if ("number" == type ? isArrayLike(object) && isIndex(index, object.length) : "string" == type && index in object) {
  13983.                        var other = object[index];
  13984.                        return value === value ? value === other : other !== other;
  13985.                    }
  13986.                    return !1;
  13987.                }
  13988.                function isKey(value, object) {
  13989.                    var type = typeof value;
  13990.                    if ("string" == type && reIsPlainProp.test(value) || "number" == type) return !0;
  13991.                    if (isArray(value)) return !1; else return !reIsDeepProp.test(value) || null != object && value in toObject(object);
  13992.                }
  13993.                function isLaziable(func) {
  13994.                    var funcName = getFuncName(func);
  13995.                    if (!(funcName in LazyWrapper.prototype)) return !1;
  13996.                    var other = lodash[funcName];
  13997.                    if (func === other) return !0;
  13998.                    var data = getData(other);
  13999.                    return !!data && func === data[0];
  14000.                }
  14001.                function isLength(value) {
  14002.                    return "number" == typeof value && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  14003.                }
  14004.                function isStrictComparable(value) {
  14005.                    return value === value && !isObject(value);
  14006.                }
  14007.                function mergeData(data, source) {
  14008.                    var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < ARY_FLAG, isCombo = srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG || srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8] || srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG;
  14009.                    if (!isCommon && !isCombo) return data;
  14010.                    if (srcBitmask & BIND_FLAG) {
  14011.                        data[2] = source[2];
  14012.                        newBitmask |= bitmask & BIND_FLAG ? 0 : CURRY_BOUND_FLAG;
  14013.                    }
  14014.                    var value = source[3];
  14015.                    if (value) {
  14016.                        var partials = data[3];
  14017.                        data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);
  14018.                        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);
  14019.                    }
  14020.                    value = source[5];
  14021.                    if (value) {
  14022.                        partials = data[5];
  14023.                        data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);
  14024.                        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);
  14025.                    }
  14026.                    value = source[7];
  14027.                    if (value) data[7] = arrayCopy(value);
  14028.                    if (srcBitmask & ARY_FLAG) data[8] = null == data[8] ? source[8] : nativeMin(data[8], source[8]);
  14029.                    if (null == data[9]) data[9] = source[9];
  14030.                    data[0] = source[0];
  14031.                    data[1] = newBitmask;
  14032.                    return data;
  14033.                }
  14034.                function mergeDefaults(objectValue, sourceValue) {
  14035.                    return objectValue === undefined ? sourceValue : merge(objectValue, sourceValue, mergeDefaults);
  14036.                }
  14037.                function pickByArray(object, props) {
  14038.                    object = toObject(object);
  14039.                    for (var index = -1, length = props.length, result = {}; ++index < length; ) {
  14040.                        var key = props[index];
  14041.                        if (key in object) result[key] = object[key];
  14042.                    }
  14043.                    return result;
  14044.                }
  14045.                function pickByCallback(object, predicate) {
  14046.                    var result = {};
  14047.                    baseForIn(object, function(value, key, object) {
  14048.                        if (predicate(value, key, object)) result[key] = value;
  14049.                    });
  14050.                    return result;
  14051.                }
  14052.                function reorder(array, indexes) {
  14053.                    for (var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = arrayCopy(array); length--; ) {
  14054.                        var index = indexes[length];
  14055.                        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
  14056.                    }
  14057.                    return array;
  14058.                }
  14059.                function shimKeys(object) {
  14060.                    for (var props = keysIn(object), propsLength = props.length, length = propsLength && object.length, allowIndexes = !!length && isLength(length) && (isArray(object) || isArguments(object)), index = -1, result = []; ++index < propsLength; ) {
  14061.                        var key = props[index];
  14062.                        if (allowIndexes && isIndex(key, length) || hasOwnProperty.call(object, key)) result.push(key);
  14063.                    }
  14064.                    return result;
  14065.                }
  14066.                function toIterable(value) {
  14067.                    if (null == value) return [];
  14068.                    if (!isArrayLike(value)) return values(value); else return isObject(value) ? value : Object(value);
  14069.                }
  14070.                function toObject(value) {
  14071.                    return isObject(value) ? value : Object(value);
  14072.                }
  14073.                function toPath(value) {
  14074.                    if (isArray(value)) return value;
  14075.                    var result = [];
  14076.                    baseToString(value).replace(rePropName, function(match, number, quote, string) {
  14077.                        result.push(quote ? string.replace(reEscapeChar, "$1") : number || match);
  14078.                    });
  14079.                    return result;
  14080.                }
  14081.                function wrapperClone(wrapper) {
  14082.                    return wrapper instanceof LazyWrapper ? wrapper.clone() : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__));
  14083.                }
  14084.                function chunk(array, size, guard) {
  14085.                    if (guard ? isIterateeCall(array, size, guard) : null == size) size = 1; else size = nativeMax(nativeFloor(size) || 1, 1);
  14086.                    for (var index = 0, length = array ? array.length : 0, resIndex = -1, result = Array(nativeCeil(length / size)); index < length; ) result[++resIndex] = baseSlice(array, index, index += size);
  14087.                    return result;
  14088.                }
  14089.                function compact(array) {
  14090.                    for (var index = -1, length = array ? array.length : 0, resIndex = -1, result = []; ++index < length; ) {
  14091.                        var value = array[index];
  14092.                        if (value) result[++resIndex] = value;
  14093.                    }
  14094.                    return result;
  14095.                }
  14096.                function drop(array, n, guard) {
  14097.                    if (!(array ? array.length : 0)) return [];
  14098.                    if (guard ? isIterateeCall(array, n, guard) : null == n) n = 1;
  14099.                    return baseSlice(array, n < 0 ? 0 : n);
  14100.                }
  14101.                function dropRight(array, n, guard) {
  14102.                    var length = array ? array.length : 0;
  14103.                    if (!length) return [];
  14104.                    if (guard ? isIterateeCall(array, n, guard) : null == n) n = 1;
  14105.                    n = length - (+n || 0);
  14106.                    return baseSlice(array, 0, n < 0 ? 0 : n);
  14107.                }
  14108.                function dropRightWhile(array, predicate, thisArg) {
  14109.                    return array && array.length ? baseWhile(array, getCallback(predicate, thisArg, 3), !0, !0) : [];
  14110.                }
  14111.                function dropWhile(array, predicate, thisArg) {
  14112.                    return array && array.length ? baseWhile(array, getCallback(predicate, thisArg, 3), !0) : [];
  14113.                }
  14114.                function fill(array, value, start, end) {
  14115.                    var length = array ? array.length : 0;
  14116.                    if (!length) return [];
  14117.                    if (start && "number" != typeof start && isIterateeCall(array, value, start)) {
  14118.                        start = 0;
  14119.                        end = length;
  14120.                    }
  14121.                    return baseFill(array, value, start, end);
  14122.                }
  14123.                function first(array) {
  14124.                    return array ? array[0] : undefined;
  14125.                }
  14126.                function flatten(array, isDeep, guard) {
  14127.                    var length = array ? array.length : 0;
  14128.                    if (guard && isIterateeCall(array, isDeep, guard)) isDeep = !1;
  14129.                    return length ? baseFlatten(array, isDeep) : [];
  14130.                }
  14131.                function flattenDeep(array) {
  14132.                    return (array ? array.length : 0) ? baseFlatten(array, !0) : [];
  14133.                }
  14134.                function indexOf(array, value, fromIndex) {
  14135.                    var length = array ? array.length : 0;
  14136.                    if (!length) return -1;
  14137.                    if ("number" == typeof fromIndex) fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; else if (fromIndex) {
  14138.                        var index = binaryIndex(array, value);
  14139.                        if (index < length && (value === value ? value === array[index] : array[index] !== array[index])) return index; else return -1;
  14140.                    }
  14141.                    return baseIndexOf(array, value, fromIndex || 0);
  14142.                }
  14143.                function initial(array) {
  14144.                    return dropRight(array, 1);
  14145.                }
  14146.                function last(array) {
  14147.                    var length = array ? array.length : 0;
  14148.                    return length ? array[length - 1] : undefined;
  14149.                }
  14150.                function lastIndexOf(array, value, fromIndex) {
  14151.                    var length = array ? array.length : 0;
  14152.                    if (!length) return -1;
  14153.                    var index = length;
  14154.                    if ("number" == typeof fromIndex) index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1; else if (fromIndex) {
  14155.                        index = binaryIndex(array, value, !0) - 1;
  14156.                        var other = array[index];
  14157.                        if (value === value ? value === other : other !== other) return index; else return -1;
  14158.                    }
  14159.                    if (value !== value) return indexOfNaN(array, index, !0);
  14160.                    for (;index--; ) if (array[index] === value) return index;
  14161.                    return -1;
  14162.                }
  14163.                function pull() {
  14164.                    var args = arguments, array = args[0];
  14165.                    if (!array || !array.length) return array;
  14166.                    for (var index = 0, indexOf = getIndexOf(), length = args.length; ++index < length; ) for (var fromIndex = 0, value = args[index]; (fromIndex = indexOf(array, value, fromIndex)) > -1; ) splice.call(array, fromIndex, 1);
  14167.                    return array;
  14168.                }
  14169.                function remove(array, predicate, thisArg) {
  14170.                    var result = [];
  14171.                    if (!array || !array.length) return result;
  14172.                    var index = -1, indexes = [], length = array.length;
  14173.                    predicate = getCallback(predicate, thisArg, 3);
  14174.                    for (;++index < length; ) {
  14175.                        var value = array[index];
  14176.                        if (predicate(value, index, array)) {
  14177.                            result.push(value);
  14178.                            indexes.push(index);
  14179.                        }
  14180.                    }
  14181.                    basePullAt(array, indexes);
  14182.                    return result;
  14183.                }
  14184.                function rest(array) {
  14185.                    return drop(array, 1);
  14186.                }
  14187.                function slice(array, start, end) {
  14188.                    var length = array ? array.length : 0;
  14189.                    if (!length) return [];
  14190.                    if (end && "number" != typeof end && isIterateeCall(array, start, end)) {
  14191.                        start = 0;
  14192.                        end = length;
  14193.                    }
  14194.                    return baseSlice(array, start, end);
  14195.                }
  14196.                function take(array, n, guard) {
  14197.                    if (!(array ? array.length : 0)) return [];
  14198.                    if (guard ? isIterateeCall(array, n, guard) : null == n) n = 1;
  14199.                    return baseSlice(array, 0, n < 0 ? 0 : n);
  14200.                }
  14201.                function takeRight(array, n, guard) {
  14202.                    var length = array ? array.length : 0;
  14203.                    if (!length) return [];
  14204.                    if (guard ? isIterateeCall(array, n, guard) : null == n) n = 1;
  14205.                    n = length - (+n || 0);
  14206.                    return baseSlice(array, n < 0 ? 0 : n);
  14207.                }
  14208.                function takeRightWhile(array, predicate, thisArg) {
  14209.                    return array && array.length ? baseWhile(array, getCallback(predicate, thisArg, 3), !1, !0) : [];
  14210.                }
  14211.                function takeWhile(array, predicate, thisArg) {
  14212.                    return array && array.length ? baseWhile(array, getCallback(predicate, thisArg, 3)) : [];
  14213.                }
  14214.                function uniq(array, isSorted, iteratee, thisArg) {
  14215.                    if (!(array ? array.length : 0)) return [];
  14216.                    if (null != isSorted && "boolean" != typeof isSorted) {
  14217.                        thisArg = iteratee;
  14218.                        iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted;
  14219.                        isSorted = !1;
  14220.                    }
  14221.                    var callback = getCallback();
  14222.                    if (null != iteratee || callback !== baseCallback) iteratee = callback(iteratee, thisArg, 3);
  14223.                    return isSorted && getIndexOf() == baseIndexOf ? sortedUniq(array, iteratee) : baseUniq(array, iteratee);
  14224.                }
  14225.                function unzip(array) {
  14226.                    if (!array || !array.length) return [];
  14227.                    var index = -1, length = 0;
  14228.                    array = arrayFilter(array, function(group) {
  14229.                        if (isArrayLike(group)) {
  14230.                            length = nativeMax(group.length, length);
  14231.                            return !0;
  14232.                        }
  14233.                    });
  14234.                    for (var result = Array(length); ++index < length; ) result[index] = arrayMap(array, baseProperty(index));
  14235.                    return result;
  14236.                }
  14237.                function unzipWith(array, iteratee, thisArg) {
  14238.                    if (!(array ? array.length : 0)) return [];
  14239.                    var result = unzip(array);
  14240.                    if (null == iteratee) return result;
  14241.                    iteratee = bindCallback(iteratee, thisArg, 4);
  14242.                    return arrayMap(result, function(group) {
  14243.                        return arrayReduce(group, iteratee, undefined, !0);
  14244.                    });
  14245.                }
  14246.                function xor() {
  14247.                    for (var index = -1, length = arguments.length; ++index < length; ) {
  14248.                        var array = arguments[index];
  14249.                        if (isArrayLike(array)) var result = result ? arrayPush(baseDifference(result, array), baseDifference(array, result)) : array;
  14250.                    }
  14251.                    return result ? baseUniq(result) : [];
  14252.                }
  14253.                function zipObject(props, values) {
  14254.                    var index = -1, length = props ? props.length : 0, result = {};
  14255.                    if (length && !values && !isArray(props[0])) values = [];
  14256.                    for (;++index < length; ) {
  14257.                        var key = props[index];
  14258.                        if (values) result[key] = values[index]; else if (key) result[key[0]] = key[1];
  14259.                    }
  14260.                    return result;
  14261.                }
  14262.                function chain(value) {
  14263.                    var result = lodash(value);
  14264.                    result.__chain__ = !0;
  14265.                    return result;
  14266.                }
  14267.                function tap(value, interceptor, thisArg) {
  14268.                    interceptor.call(thisArg, value);
  14269.                    return value;
  14270.                }
  14271.                function thru(value, interceptor, thisArg) {
  14272.                    return interceptor.call(thisArg, value);
  14273.                }
  14274.                function wrapperChain() {
  14275.                    return chain(this);
  14276.                }
  14277.                function wrapperCommit() {
  14278.                    return new LodashWrapper(this.value(), this.__chain__);
  14279.                }
  14280.                function wrapperPlant(value) {
  14281.                    for (var result, parent = this; parent instanceof baseLodash; ) {
  14282.                        var clone = wrapperClone(parent);
  14283.                        if (result) previous.__wrapped__ = clone; else result = clone;
  14284.                        var previous = clone;
  14285.                        parent = parent.__wrapped__;
  14286.                    }
  14287.                    previous.__wrapped__ = value;
  14288.                    return result;
  14289.                }
  14290.                function wrapperReverse() {
  14291.                    var value = this.__wrapped__, interceptor = function(value) {
  14292.                        return wrapped && wrapped.__dir__ < 0 ? value : value.reverse();
  14293.                    };
  14294.                    if (value instanceof LazyWrapper) {
  14295.                        var wrapped = value;
  14296.                        if (this.__actions__.length) wrapped = new LazyWrapper(this);
  14297.                        wrapped = wrapped.reverse();
  14298.                        wrapped.__actions__.push({
  14299.                            func: thru,
  14300.                            args: [ interceptor ],
  14301.                            thisArg: undefined
  14302.                        });
  14303.                        return new LodashWrapper(wrapped, this.__chain__);
  14304.                    }
  14305.                    return this.thru(interceptor);
  14306.                }
  14307.                function wrapperToString() {
  14308.                    return this.value() + "";
  14309.                }
  14310.                function wrapperValue() {
  14311.                    return baseWrapperValue(this.__wrapped__, this.__actions__);
  14312.                }
  14313.                function every(collection, predicate, thisArg) {
  14314.                    var func = isArray(collection) ? arrayEvery : baseEvery;
  14315.                    if (thisArg && isIterateeCall(collection, predicate, thisArg)) predicate = undefined;
  14316.                    if ("function" != typeof predicate || thisArg !== undefined) predicate = getCallback(predicate, thisArg, 3);
  14317.                    return func(collection, predicate);
  14318.                }
  14319.                function filter(collection, predicate, thisArg) {
  14320.                    var func = isArray(collection) ? arrayFilter : baseFilter;
  14321.                    predicate = getCallback(predicate, thisArg, 3);
  14322.                    return func(collection, predicate);
  14323.                }
  14324.                function findWhere(collection, source) {
  14325.                    return find(collection, baseMatches(source));
  14326.                }
  14327.                function includes(collection, target, fromIndex, guard) {
  14328.                    var length = collection ? getLength(collection) : 0;
  14329.                    if (!isLength(length)) {
  14330.                        collection = values(collection);
  14331.                        length = collection.length;
  14332.                    }
  14333.                    if ("number" != typeof fromIndex || guard && isIterateeCall(target, fromIndex, guard)) fromIndex = 0; else fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex || 0;
  14334.                    return "string" == typeof collection || !isArray(collection) && isString(collection) ? fromIndex <= length && collection.indexOf(target, fromIndex) > -1 : !!length && getIndexOf(collection, target, fromIndex) > -1;
  14335.                }
  14336.                function map(collection, iteratee, thisArg) {
  14337.                    var func = isArray(collection) ? arrayMap : baseMap;
  14338.                    iteratee = getCallback(iteratee, thisArg, 3);
  14339.                    return func(collection, iteratee);
  14340.                }
  14341.                function pluck(collection, path) {
  14342.                    return map(collection, property(path));
  14343.                }
  14344.                function reject(collection, predicate, thisArg) {
  14345.                    var func = isArray(collection) ? arrayFilter : baseFilter;
  14346.                    predicate = getCallback(predicate, thisArg, 3);
  14347.                    return func(collection, function(value, index, collection) {
  14348.                        return !predicate(value, index, collection);
  14349.                    });
  14350.                }
  14351.                function sample(collection, n, guard) {
  14352.                    if (guard ? isIterateeCall(collection, n, guard) : null == n) {
  14353.                        collection = toIterable(collection);
  14354.                        var length = collection.length;
  14355.                        return length > 0 ? collection[baseRandom(0, length - 1)] : undefined;
  14356.                    }
  14357.                    var index = -1, result = toArray(collection), length = result.length, lastIndex = length - 1;
  14358.                    n = nativeMin(n < 0 ? 0 : +n || 0, length);
  14359.                    for (;++index < n; ) {
  14360.                        var rand = baseRandom(index, lastIndex), value = result[rand];
  14361.                        result[rand] = result[index];
  14362.                        result[index] = value;
  14363.                    }
  14364.                    result.length = n;
  14365.                    return result;
  14366.                }
  14367.                function shuffle(collection) {
  14368.                    return sample(collection, POSITIVE_INFINITY);
  14369.                }
  14370.                function size(collection) {
  14371.                    var length = collection ? getLength(collection) : 0;
  14372.                    return isLength(length) ? length : keys(collection).length;
  14373.                }
  14374.                function some(collection, predicate, thisArg) {
  14375.                    var func = isArray(collection) ? arraySome : baseSome;
  14376.                    if (thisArg && isIterateeCall(collection, predicate, thisArg)) predicate = undefined;
  14377.                    if ("function" != typeof predicate || thisArg !== undefined) predicate = getCallback(predicate, thisArg, 3);
  14378.                    return func(collection, predicate);
  14379.                }
  14380.                function sortBy(collection, iteratee, thisArg) {
  14381.                    if (null == collection) return [];
  14382.                    if (thisArg && isIterateeCall(collection, iteratee, thisArg)) iteratee = undefined;
  14383.                    var index = -1;
  14384.                    iteratee = getCallback(iteratee, thisArg, 3);
  14385.                    return baseSortBy(baseMap(collection, function(value, key, collection) {
  14386.                        return {
  14387.                            criteria: iteratee(value, key, collection),
  14388.                            index: ++index,
  14389.                            value: value
  14390.                        };
  14391.                    }), compareAscending);
  14392.                }
  14393.                function sortByOrder(collection, iteratees, orders, guard) {
  14394.                    if (null == collection) return [];
  14395.                    if (guard && isIterateeCall(iteratees, orders, guard)) orders = undefined;
  14396.                    if (!isArray(iteratees)) iteratees = null == iteratees ? [] : [ iteratees ];
  14397.                    if (!isArray(orders)) orders = null == orders ? [] : [ orders ];
  14398.                    return baseSortByOrder(collection, iteratees, orders);
  14399.                }
  14400.                function where(collection, source) {
  14401.                    return filter(collection, baseMatches(source));
  14402.                }
  14403.                function after(n, func) {
  14404.                    if ("function" != typeof func) if ("function" == typeof n) {
  14405.                        var temp = n;
  14406.                        n = func;
  14407.                        func = temp;
  14408.                    } else throw new TypeError(FUNC_ERROR_TEXT);
  14409.                    n = nativeIsFinite(n = +n) ? n : 0;
  14410.                    return function() {
  14411.                        if (--n < 1) return func.apply(this, arguments);
  14412.                    };
  14413.                }
  14414.                function ary(func, n, guard) {
  14415.                    if (guard && isIterateeCall(func, n, guard)) n = undefined;
  14416.                    n = func && null == n ? func.length : nativeMax(+n || 0, 0);
  14417.                    return createWrapper(func, ARY_FLAG, undefined, undefined, undefined, undefined, n);
  14418.                }
  14419.                function before(n, func) {
  14420.                    var result;
  14421.                    if ("function" != typeof func) if ("function" == typeof n) {
  14422.                        var temp = n;
  14423.                        n = func;
  14424.                        func = temp;
  14425.                    } else throw new TypeError(FUNC_ERROR_TEXT);
  14426.                    return function() {
  14427.                        if (--n > 0) result = func.apply(this, arguments);
  14428.                        if (n <= 1) func = undefined;
  14429.                        return result;
  14430.                    };
  14431.                }
  14432.                function debounce(func, wait, options) {
  14433.                    function cancel() {
  14434.                        if (timeoutId) clearTimeout(timeoutId);
  14435.                        if (maxTimeoutId) clearTimeout(maxTimeoutId);
  14436.                        lastCalled = 0;
  14437.                        maxTimeoutId = timeoutId = trailingCall = undefined;
  14438.                    }
  14439.                    function complete(isCalled, id) {
  14440.                        if (id) clearTimeout(id);
  14441.                        maxTimeoutId = timeoutId = trailingCall = undefined;
  14442.                        if (isCalled) {
  14443.                            lastCalled = now();
  14444.                            result = func.apply(thisArg, args);
  14445.                            if (!timeoutId && !maxTimeoutId) args = thisArg = undefined;
  14446.                        }
  14447.                    }
  14448.                    function delayed() {
  14449.                        var remaining = wait - (now() - stamp);
  14450.                        if (remaining <= 0 || remaining > wait) complete(trailingCall, maxTimeoutId); else timeoutId = setTimeout(delayed, remaining);
  14451.                    }
  14452.                    function maxDelayed() {
  14453.                        complete(trailing, timeoutId);
  14454.                    }
  14455.                    function debounced() {
  14456.                        args = arguments;
  14457.                        stamp = now();
  14458.                        thisArg = this;
  14459.                        trailingCall = trailing && (timeoutId || !leading);
  14460.                        if (!1 === maxWait) var leadingCall = leading && !timeoutId; else {
  14461.                            if (!maxTimeoutId && !leading) lastCalled = stamp;
  14462.                            var remaining = maxWait - (stamp - lastCalled), isCalled = remaining <= 0 || remaining > maxWait;
  14463.                            if (isCalled) {
  14464.                                if (maxTimeoutId) maxTimeoutId = clearTimeout(maxTimeoutId);
  14465.                                lastCalled = stamp;
  14466.                                result = func.apply(thisArg, args);
  14467.                            } else if (!maxTimeoutId) maxTimeoutId = setTimeout(maxDelayed, remaining);
  14468.                        }
  14469.                        if (isCalled && timeoutId) timeoutId = clearTimeout(timeoutId); else if (!timeoutId && wait !== maxWait) timeoutId = setTimeout(delayed, wait);
  14470.                        if (leadingCall) {
  14471.                            isCalled = !0;
  14472.                            result = func.apply(thisArg, args);
  14473.                        }
  14474.                        if (isCalled && !timeoutId && !maxTimeoutId) args = thisArg = undefined;
  14475.                        return result;
  14476.                    }
  14477.                    var args, maxTimeoutId, result, stamp, thisArg, timeoutId, trailingCall, lastCalled = 0, maxWait = !1, trailing = !0;
  14478.                    if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
  14479.                    wait = wait < 0 ? 0 : +wait || 0;
  14480.                    if (!0 === options) {
  14481.                        var leading = !0;
  14482.                        trailing = !1;
  14483.                    } else if (isObject(options)) {
  14484.                        leading = !!options.leading;
  14485.                        maxWait = "maxWait" in options && nativeMax(+options.maxWait || 0, wait);
  14486.                        trailing = "trailing" in options ? !!options.trailing : trailing;
  14487.                    }
  14488.                    debounced.cancel = cancel;
  14489.                    return debounced;
  14490.                }
  14491.                function memoize(func, resolver) {
  14492.                    if ("function" != typeof func || resolver && "function" != typeof resolver) throw new TypeError(FUNC_ERROR_TEXT);
  14493.                    var memoized = function() {
  14494.                        var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
  14495.                        if (cache.has(key)) return cache.get(key);
  14496.                        var result = func.apply(this, args);
  14497.                        memoized.cache = cache.set(key, result);
  14498.                        return result;
  14499.                    };
  14500.                    memoized.cache = new memoize.Cache();
  14501.                    return memoized;
  14502.                }
  14503.                function negate(predicate) {
  14504.                    if ("function" != typeof predicate) throw new TypeError(FUNC_ERROR_TEXT);
  14505.                    return function() {
  14506.                        return !predicate.apply(this, arguments);
  14507.                    };
  14508.                }
  14509.                function once(func) {
  14510.                    return before(2, func);
  14511.                }
  14512.                function restParam(func, start) {
  14513.                    if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
  14514.                    start = nativeMax(start === undefined ? func.length - 1 : +start || 0, 0);
  14515.                    return function() {
  14516.                        for (var args = arguments, index = -1, length = nativeMax(args.length - start, 0), rest = Array(length); ++index < length; ) rest[index] = args[start + index];
  14517.                        switch (start) {
  14518.                          case 0:
  14519.                            return func.call(this, rest);
  14520.  
  14521.                          case 1:
  14522.                            return func.call(this, args[0], rest);
  14523.  
  14524.                          case 2:
  14525.                            return func.call(this, args[0], args[1], rest);
  14526.                        }
  14527.                        var otherArgs = Array(start + 1);
  14528.                        index = -1;
  14529.                        for (;++index < start; ) otherArgs[index] = args[index];
  14530.                        otherArgs[start] = rest;
  14531.                        return func.apply(this, otherArgs);
  14532.                    };
  14533.                }
  14534.                function spread(func) {
  14535.                    if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
  14536.                    return function(array) {
  14537.                        return func.apply(this, array);
  14538.                    };
  14539.                }
  14540.                function throttle(func, wait, options) {
  14541.                    var leading = !0, trailing = !0;
  14542.                    if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
  14543.                    if (!1 === options) leading = !1; else if (isObject(options)) {
  14544.                        leading = "leading" in options ? !!options.leading : leading;
  14545.                        trailing = "trailing" in options ? !!options.trailing : trailing;
  14546.                    }
  14547.                    return debounce(func, wait, {
  14548.                        leading: leading,
  14549.                        maxWait: +wait,
  14550.                        trailing: trailing
  14551.                    });
  14552.                }
  14553.                function wrap(value, wrapper) {
  14554.                    wrapper = null == wrapper ? identity : wrapper;
  14555.                    return createWrapper(wrapper, PARTIAL_FLAG, undefined, [ value ], []);
  14556.                }
  14557.                function clone(value, isDeep, customizer, thisArg) {
  14558.                    if (isDeep && "boolean" != typeof isDeep && isIterateeCall(value, isDeep, customizer)) isDeep = !1; else if ("function" == typeof isDeep) {
  14559.                        thisArg = customizer;
  14560.                        customizer = isDeep;
  14561.                        isDeep = !1;
  14562.                    }
  14563.                    return "function" == typeof customizer ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1)) : baseClone(value, isDeep);
  14564.                }
  14565.                function cloneDeep(value, customizer, thisArg) {
  14566.                    return "function" == typeof customizer ? baseClone(value, !0, bindCallback(customizer, thisArg, 1)) : baseClone(value, !0);
  14567.                }
  14568.                function gt(value, other) {
  14569.                    return value > other;
  14570.                }
  14571.                function gte(value, other) {
  14572.                    return value >= other;
  14573.                }
  14574.                function isArguments(value) {
  14575.                    return isObjectLike(value) && isArrayLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
  14576.                }
  14577.                function isBoolean(value) {
  14578.                    return !0 === value || !1 === value || isObjectLike(value) && objToString.call(value) == boolTag;
  14579.                }
  14580.                function isDate(value) {
  14581.                    return isObjectLike(value) && objToString.call(value) == dateTag;
  14582.                }
  14583.                function isElement(value) {
  14584.                    return !!value && 1 === value.nodeType && isObjectLike(value) && !isPlainObject(value);
  14585.                }
  14586.                function isEmpty(value) {
  14587.                    if (null == value) return !0;
  14588.                    if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) || isObjectLike(value) && isFunction(value.splice))) return !value.length; else return !keys(value).length;
  14589.                }
  14590.                function isEqual(value, other, customizer, thisArg) {
  14591.                    customizer = "function" == typeof customizer ? bindCallback(customizer, thisArg, 3) : undefined;
  14592.                    var result = customizer ? customizer(value, other) : undefined;
  14593.                    return result === undefined ? baseIsEqual(value, other, customizer) : !!result;
  14594.                }
  14595.                function isError(value) {
  14596.                    return isObjectLike(value) && "string" == typeof value.message && objToString.call(value) == errorTag;
  14597.                }
  14598.                function isFinite(value) {
  14599.                    return "number" == typeof value && nativeIsFinite(value);
  14600.                }
  14601.                function isFunction(value) {
  14602.                    return isObject(value) && objToString.call(value) == funcTag;
  14603.                }
  14604.                function isObject(value) {
  14605.                    var type = typeof value;
  14606.                    return !!value && ("object" == type || "function" == type);
  14607.                }
  14608.                function isMatch(object, source, customizer, thisArg) {
  14609.                    customizer = "function" == typeof customizer ? bindCallback(customizer, thisArg, 3) : undefined;
  14610.                    return baseIsMatch(object, getMatchData(source), customizer);
  14611.                }
  14612.                function isNaN(value) {
  14613.                    return isNumber(value) && value != +value;
  14614.                }
  14615.                function isNative(value) {
  14616.                    if (null == value) return !1;
  14617.                    if (isFunction(value)) return reIsNative.test(fnToString.call(value)); else return isObjectLike(value) && reIsHostCtor.test(value);
  14618.                }
  14619.                function isNull(value) {
  14620.                    return null === value;
  14621.                }
  14622.                function isNumber(value) {
  14623.                    return "number" == typeof value || isObjectLike(value) && objToString.call(value) == numberTag;
  14624.                }
  14625.                function isPlainObject(value) {
  14626.                    var Ctor;
  14627.                    if (!isObjectLike(value) || objToString.call(value) != objectTag || isArguments(value) || !hasOwnProperty.call(value, "constructor") && "function" == typeof (Ctor = value.constructor) && !(Ctor instanceof Ctor)) return !1;
  14628.                    var result;
  14629.                    baseForIn(value, function(subValue, key) {
  14630.                        result = key;
  14631.                    });
  14632.                    return result === undefined || hasOwnProperty.call(value, result);
  14633.                }
  14634.                function isRegExp(value) {
  14635.                    return isObject(value) && objToString.call(value) == regexpTag;
  14636.                }
  14637.                function isString(value) {
  14638.                    return "string" == typeof value || isObjectLike(value) && objToString.call(value) == stringTag;
  14639.                }
  14640.                function isTypedArray(value) {
  14641.                    return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];
  14642.                }
  14643.                function isUndefined(value) {
  14644.                    return value === undefined;
  14645.                }
  14646.                function lt(value, other) {
  14647.                    return value < other;
  14648.                }
  14649.                function lte(value, other) {
  14650.                    return value <= other;
  14651.                }
  14652.                function toArray(value) {
  14653.                    var length = value ? getLength(value) : 0;
  14654.                    if (!isLength(length)) return values(value);
  14655.                    if (!length) return []; else return arrayCopy(value);
  14656.                }
  14657.                function toPlainObject(value) {
  14658.                    return baseCopy(value, keysIn(value));
  14659.                }
  14660.                function create(prototype, properties, guard) {
  14661.                    var result = baseCreate(prototype);
  14662.                    if (guard && isIterateeCall(prototype, properties, guard)) properties = undefined;
  14663.                    return properties ? baseAssign(result, properties) : result;
  14664.                }
  14665.                function functions(object) {
  14666.                    return baseFunctions(object, keysIn(object));
  14667.                }
  14668.                function get(object, path, defaultValue) {
  14669.                    var result = null == object ? undefined : baseGet(object, toPath(path), path + "");
  14670.                    return result === undefined ? defaultValue : result;
  14671.                }
  14672.                function has(object, path) {
  14673.                    if (null == object) return !1;
  14674.                    var result = hasOwnProperty.call(object, path);
  14675.                    if (!result && !isKey(path)) {
  14676.                        path = toPath(path);
  14677.                        object = 1 == path.length ? object : baseGet(object, baseSlice(path, 0, -1));
  14678.                        if (null == object) return !1;
  14679.                        path = last(path);
  14680.                        result = hasOwnProperty.call(object, path);
  14681.                    }
  14682.                    return result || isLength(object.length) && isIndex(path, object.length) && (isArray(object) || isArguments(object));
  14683.                }
  14684.                function invert(object, multiValue, guard) {
  14685.                    if (guard && isIterateeCall(object, multiValue, guard)) multiValue = undefined;
  14686.                    for (var index = -1, props = keys(object), length = props.length, result = {}; ++index < length; ) {
  14687.                        var key = props[index], value = object[key];
  14688.                        if (multiValue) if (hasOwnProperty.call(result, value)) result[value].push(key); else result[value] = [ key ]; else result[value] = key;
  14689.                    }
  14690.                    return result;
  14691.                }
  14692.                function keysIn(object) {
  14693.                    if (null == object) return [];
  14694.                    if (!isObject(object)) object = Object(object);
  14695.                    var length = object.length;
  14696.                    length = length && isLength(length) && (isArray(object) || isArguments(object)) && length || 0;
  14697.                    for (var Ctor = object.constructor, index = -1, isProto = "function" == typeof Ctor && Ctor.prototype === object, result = Array(length), skipIndexes = length > 0; ++index < length; ) result[index] = index + "";
  14698.                    for (var key in object) if ((!skipIndexes || !isIndex(key, length)) && ("constructor" != key || !isProto && hasOwnProperty.call(object, key))) result.push(key);
  14699.                    return result;
  14700.                }
  14701.                function pairs(object) {
  14702.                    object = toObject(object);
  14703.                    for (var index = -1, props = keys(object), length = props.length, result = Array(length); ++index < length; ) {
  14704.                        var key = props[index];
  14705.                        result[index] = [ key, object[key] ];
  14706.                    }
  14707.                    return result;
  14708.                }
  14709.                function result(object, path, defaultValue) {
  14710.                    var result = null == object ? undefined : object[path];
  14711.                    if (result === undefined) {
  14712.                        if (null != object && !isKey(path, object)) {
  14713.                            path = toPath(path);
  14714.                            object = 1 == path.length ? object : baseGet(object, baseSlice(path, 0, -1));
  14715.                            result = null == object ? undefined : object[last(path)];
  14716.                        }
  14717.                        result = result === undefined ? defaultValue : result;
  14718.                    }
  14719.                    return isFunction(result) ? result.call(object) : result;
  14720.                }
  14721.                function set(object, path, value) {
  14722.                    if (null == object) return object;
  14723.                    var pathKey = path + "";
  14724.                    path = null != object[pathKey] || isKey(path, object) ? [ pathKey ] : toPath(path);
  14725.                    for (var index = -1, length = path.length, lastIndex = length - 1, nested = object; null != nested && ++index < length; ) {
  14726.                        var key = path[index];
  14727.                        if (isObject(nested)) if (index == lastIndex) nested[key] = value; else if (null == nested[key]) nested[key] = isIndex(path[index + 1]) ? [] : {};
  14728.                        nested = nested[key];
  14729.                    }
  14730.                    return object;
  14731.                }
  14732.                function transform(object, iteratee, accumulator, thisArg) {
  14733.                    var isArr = isArray(object) || isTypedArray(object);
  14734.                    iteratee = getCallback(iteratee, thisArg, 4);
  14735.                    if (null == accumulator) if (isArr || isObject(object)) {
  14736.                        var Ctor = object.constructor;
  14737.                        if (isArr) accumulator = isArray(object) ? new Ctor() : []; else accumulator = baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined);
  14738.                    } else accumulator = {};
  14739.                    (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) {
  14740.                        return iteratee(accumulator, value, index, object);
  14741.                    });
  14742.                    return accumulator;
  14743.                }
  14744.                function values(object) {
  14745.                    return baseValues(object, keys(object));
  14746.                }
  14747.                function valuesIn(object) {
  14748.                    return baseValues(object, keysIn(object));
  14749.                }
  14750.                function inRange(value, start, end) {
  14751.                    start = +start || 0;
  14752.                    if (end === undefined) {
  14753.                        end = start;
  14754.                        start = 0;
  14755.                    } else end = +end || 0;
  14756.                    return value >= nativeMin(start, end) && value < nativeMax(start, end);
  14757.                }
  14758.                function random(min, max, floating) {
  14759.                    if (floating && isIterateeCall(min, max, floating)) max = floating = undefined;
  14760.                    var noMin = null == min, noMax = null == max;
  14761.                    if (null == floating) if (noMax && "boolean" == typeof min) {
  14762.                        floating = min;
  14763.                        min = 1;
  14764.                    } else if ("boolean" == typeof max) {
  14765.                        floating = max;
  14766.                        noMax = !0;
  14767.                    }
  14768.                    if (noMin && noMax) {
  14769.                        max = 1;
  14770.                        noMax = !1;
  14771.                    }
  14772.                    min = +min || 0;
  14773.                    if (noMax) {
  14774.                        max = min;
  14775.                        min = 0;
  14776.                    } else max = +max || 0;
  14777.                    if (floating || min % 1 || max % 1) {
  14778.                        var rand = nativeRandom();
  14779.                        return nativeMin(min + rand * (max - min + parseFloat("1e-" + ((rand + "").length - 1))), max);
  14780.                    }
  14781.                    return baseRandom(min, max);
  14782.                }
  14783.                function capitalize(string) {
  14784.                    string = baseToString(string);
  14785.                    return string && string.charAt(0).toUpperCase() + string.slice(1);
  14786.                }
  14787.                function deburr(string) {
  14788.                    string = baseToString(string);
  14789.                    return string && string.replace(reLatin1, deburrLetter).replace(reComboMark, "");
  14790.                }
  14791.                function endsWith(string, target, position) {
  14792.                    string = baseToString(string);
  14793.                    target += "";
  14794.                    var length = string.length;
  14795.                    position = position === undefined ? length : nativeMin(position < 0 ? 0 : +position || 0, length);
  14796.                    position -= target.length;
  14797.                    return position >= 0 && string.indexOf(target, position) == position;
  14798.                }
  14799.                function escape(string) {
  14800.                    string = baseToString(string);
  14801.                    return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;
  14802.                }
  14803.                function escapeRegExp(string) {
  14804.                    string = baseToString(string);
  14805.                    return string && reHasRegExpChars.test(string) ? string.replace(reRegExpChars, escapeRegExpChar) : string || "(?:)";
  14806.                }
  14807.                function pad(string, length, chars) {
  14808.                    string = baseToString(string);
  14809.                    length = +length;
  14810.                    var strLength = string.length;
  14811.                    if (strLength >= length || !nativeIsFinite(length)) return string;
  14812.                    var mid = (length - strLength) / 2, leftLength = nativeFloor(mid);
  14813.                    chars = createPadding("", nativeCeil(mid), chars);
  14814.                    return chars.slice(0, leftLength) + string + chars;
  14815.                }
  14816.                function parseInt(string, radix, guard) {
  14817.                    if (guard ? isIterateeCall(string, radix, guard) : null == radix) radix = 0; else if (radix) radix = +radix;
  14818.                    string = trim(string);
  14819.                    return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10));
  14820.                }
  14821.                function repeat(string, n) {
  14822.                    var result = "";
  14823.                    string = baseToString(string);
  14824.                    n = +n;
  14825.                    if (n < 1 || !string || !nativeIsFinite(n)) return result;
  14826.                    do {
  14827.                        if (n % 2) result += string;
  14828.                        n = nativeFloor(n / 2);
  14829.                        string += string;
  14830.                    } while (n);
  14831.                    return result;
  14832.                }
  14833.                function startsWith(string, target, position) {
  14834.                    string = baseToString(string);
  14835.                    position = null == position ? 0 : nativeMin(position < 0 ? 0 : +position || 0, string.length);
  14836.                    return string.lastIndexOf(target, position) == position;
  14837.                }
  14838.                function template(string, options, otherOptions) {
  14839.                    var settings = lodash.templateSettings;
  14840.                    if (otherOptions && isIterateeCall(string, options, otherOptions)) options = otherOptions = undefined;
  14841.                    string = baseToString(string);
  14842.                    options = assignWith(baseAssign({}, otherOptions || options), settings, assignOwnDefaults);
  14843.                    var isEscaping, isEvaluating, imports = assignWith(baseAssign({}, options.imports), settings.imports, assignOwnDefaults), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys), index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '", reDelimiters = RegExp((options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", "g"), sourceURL = "//# sourceURL=" + ("sourceURL" in options ? options.sourceURL : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
  14844.                    string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
  14845.                        interpolateValue || (interpolateValue = esTemplateValue);
  14846.                        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
  14847.                        if (escapeValue) {
  14848.                            isEscaping = !0;
  14849.                            source += "' +\n__e(" + escapeValue + ") +\n'";
  14850.                        }
  14851.                        if (evaluateValue) {
  14852.                            isEvaluating = !0;
  14853.                            source += "';\n" + evaluateValue + ";\n__p += '";
  14854.                        }
  14855.                        if (interpolateValue) source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
  14856.                        index = offset + match.length;
  14857.                        return match;
  14858.                    });
  14859.                    source += "';\n";
  14860.                    var variable = options.variable;
  14861.                    if (!variable) source = "with (obj) {\n" + source + "\n}\n";
  14862.                    source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;");
  14863.                    source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}";
  14864.                    var result = attempt(function() {
  14865.                        return Function(importsKeys, sourceURL + "return " + source).apply(undefined, importsValues);
  14866.                    });
  14867.                    result.source = source;
  14868.                    if (isError(result)) throw result;
  14869.                    return result;
  14870.                }
  14871.                function trim(string, chars, guard) {
  14872.                    var value = string;
  14873.                    string = baseToString(string);
  14874.                    if (!string) return string;
  14875.                    if (guard ? isIterateeCall(value, chars, guard) : null == chars) return string.slice(trimmedLeftIndex(string), trimmedRightIndex(string) + 1);
  14876.                    chars += "";
  14877.                    return string.slice(charsLeftIndex(string, chars), charsRightIndex(string, chars) + 1);
  14878.                }
  14879.                function trimLeft(string, chars, guard) {
  14880.                    var value = string;
  14881.                    string = baseToString(string);
  14882.                    if (!string) return string;
  14883.                    if (guard ? isIterateeCall(value, chars, guard) : null == chars) return string.slice(trimmedLeftIndex(string)); else return string.slice(charsLeftIndex(string, chars + ""));
  14884.                }
  14885.                function trimRight(string, chars, guard) {
  14886.                    var value = string;
  14887.                    string = baseToString(string);
  14888.                    if (!string) return string;
  14889.                    if (guard ? isIterateeCall(value, chars, guard) : null == chars) return string.slice(0, trimmedRightIndex(string) + 1); else return string.slice(0, charsRightIndex(string, chars + "") + 1);
  14890.                }
  14891.                function trunc(string, options, guard) {
  14892.                    if (guard && isIterateeCall(string, options, guard)) options = undefined;
  14893.                    var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;
  14894.                    if (null != options) if (isObject(options)) {
  14895.                        var separator = "separator" in options ? options.separator : separator;
  14896.                        length = "length" in options ? +options.length || 0 : length;
  14897.                        omission = "omission" in options ? baseToString(options.omission) : omission;
  14898.                    } else length = +options || 0;
  14899.                    string = baseToString(string);
  14900.                    if (length >= string.length) return string;
  14901.                    var end = length - omission.length;
  14902.                    if (end < 1) return omission;
  14903.                    var result = string.slice(0, end);
  14904.                    if (null == separator) return result + omission;
  14905.                    if (isRegExp(separator)) {
  14906.                        if (string.slice(end).search(separator)) {
  14907.                            var match, newEnd, substring = string.slice(0, end);
  14908.                            if (!separator.global) separator = RegExp(separator.source, (reFlags.exec(separator) || "") + "g");
  14909.                            separator.lastIndex = 0;
  14910.                            for (;match = separator.exec(substring); ) newEnd = match.index;
  14911.                            result = result.slice(0, null == newEnd ? end : newEnd);
  14912.                        }
  14913.                    } else if (string.indexOf(separator, end) != end) {
  14914.                        var index = result.lastIndexOf(separator);
  14915.                        if (index > -1) result = result.slice(0, index);
  14916.                    }
  14917.                    return result + omission;
  14918.                }
  14919.                function unescape(string) {
  14920.                    string = baseToString(string);
  14921.                    return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;
  14922.                }
  14923.                function words(string, pattern, guard) {
  14924.                    if (guard && isIterateeCall(string, pattern, guard)) pattern = undefined;
  14925.                    string = baseToString(string);
  14926.                    return string.match(pattern || reWords) || [];
  14927.                }
  14928.                function callback(func, thisArg, guard) {
  14929.                    if (guard && isIterateeCall(func, thisArg, guard)) thisArg = undefined;
  14930.                    return isObjectLike(func) ? matches(func) : baseCallback(func, thisArg);
  14931.                }
  14932.                function constant(value) {
  14933.                    return function() {
  14934.                        return value;
  14935.                    };
  14936.                }
  14937.                function identity(value) {
  14938.                    return value;
  14939.                }
  14940.                function matches(source) {
  14941.                    return baseMatches(baseClone(source, !0));
  14942.                }
  14943.                function matchesProperty(path, srcValue) {
  14944.                    return baseMatchesProperty(path, baseClone(srcValue, !0));
  14945.                }
  14946.                function mixin(object, source, options) {
  14947.                    if (null == options) {
  14948.                        var isObj = isObject(source), props = isObj ? keys(source) : undefined, methodNames = props && props.length ? baseFunctions(source, props) : undefined;
  14949.                        if (!(methodNames ? methodNames.length : isObj)) {
  14950.                            methodNames = !1;
  14951.                            options = source;
  14952.                            source = object;
  14953.                            object = this;
  14954.                        }
  14955.                    }
  14956.                    if (!methodNames) methodNames = baseFunctions(source, keys(source));
  14957.                    var chain = !0, index = -1, isFunc = isFunction(object), length = methodNames.length;
  14958.                    if (!1 === options) chain = !1; else if (isObject(options) && "chain" in options) chain = options.chain;
  14959.                    for (;++index < length; ) {
  14960.                        var methodName = methodNames[index], func = source[methodName];
  14961.                        object[methodName] = func;
  14962.                        if (isFunc) object.prototype[methodName] = function(func) {
  14963.                            return function() {
  14964.                                var chainAll = this.__chain__;
  14965.                                if (chain || chainAll) {
  14966.                                    var result = object(this.__wrapped__);
  14967.                                    (result.__actions__ = arrayCopy(this.__actions__)).push({
  14968.                                        func: func,
  14969.                                        args: arguments,
  14970.                                        thisArg: object
  14971.                                    });
  14972.                                    result.__chain__ = chainAll;
  14973.                                    return result;
  14974.                                }
  14975.                                return func.apply(object, arrayPush([ this.value() ], arguments));
  14976.                            };
  14977.                        }(func);
  14978.                    }
  14979.                    return object;
  14980.                }
  14981.                function noConflict() {
  14982.                    root._ = oldDash;
  14983.                    return this;
  14984.                }
  14985.                function noop() {}
  14986.                function property(path) {
  14987.                    return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
  14988.                }
  14989.                function propertyOf(object) {
  14990.                    return function(path) {
  14991.                        return baseGet(object, toPath(path), path + "");
  14992.                    };
  14993.                }
  14994.                function range(start, end, step) {
  14995.                    if (step && isIterateeCall(start, end, step)) end = step = undefined;
  14996.                    start = +start || 0;
  14997.                    step = null == step ? 1 : +step || 0;
  14998.                    if (null == end) {
  14999.                        end = start;
  15000.                        start = 0;
  15001.                    } else end = +end || 0;
  15002.                    for (var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result = Array(length); ++index < length; ) {
  15003.                        result[index] = start;
  15004.                        start += step;
  15005.                    }
  15006.                    return result;
  15007.                }
  15008.                function times(n, iteratee, thisArg) {
  15009.                    n = nativeFloor(n);
  15010.                    if (n < 1 || !nativeIsFinite(n)) return [];
  15011.                    var index = -1, result = Array(nativeMin(n, MAX_ARRAY_LENGTH));
  15012.                    iteratee = bindCallback(iteratee, thisArg, 1);
  15013.                    for (;++index < n; ) if (index < MAX_ARRAY_LENGTH) result[index] = iteratee(index); else iteratee(index);
  15014.                    return result;
  15015.                }
  15016.                function uniqueId(prefix) {
  15017.                    var id = ++idCounter;
  15018.                    return baseToString(prefix) + id;
  15019.                }
  15020.                function add(augend, addend) {
  15021.                    return (+augend || 0) + (+addend || 0);
  15022.                }
  15023.                function sum(collection, iteratee, thisArg) {
  15024.                    if (thisArg && isIterateeCall(collection, iteratee, thisArg)) iteratee = undefined;
  15025.                    iteratee = getCallback(iteratee, thisArg, 3);
  15026.                    return 1 == iteratee.length ? arraySum(isArray(collection) ? collection : toIterable(collection), iteratee) : baseSum(collection, iteratee);
  15027.                }
  15028.                context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root;
  15029.                var Array = context.Array, Date = context.Date, Error = context.Error, Function = context.Function, Math = context.Math, Number = context.Number, Object = context.Object, RegExp = context.RegExp, String = context.String, TypeError = context.TypeError, arrayProto = Array.prototype, objectProto = Object.prototype, stringProto = String.prototype, fnToString = Function.prototype.toString, hasOwnProperty = objectProto.hasOwnProperty, idCounter = 0, objToString = objectProto.toString, oldDash = root._, reIsNative = RegExp("^" + fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), ArrayBuffer = context.ArrayBuffer, clearTimeout = context.clearTimeout, parseFloat = context.parseFloat, pow = Math.pow, propertyIsEnumerable = objectProto.propertyIsEnumerable, Set = getNative(context, "Set"), setTimeout = context.setTimeout, splice = arrayProto.splice, Uint8Array = context.Uint8Array, WeakMap = getNative(context, "WeakMap"), nativeCeil = Math.ceil, nativeCreate = getNative(Object, "create"), nativeFloor = Math.floor, nativeIsArray = getNative(Array, "isArray"), nativeIsFinite = context.isFinite, nativeKeys = getNative(Object, "keys"), nativeMax = Math.max, nativeMin = Math.min, nativeNow = getNative(Date, "now"), nativeParseInt = context.parseInt, nativeRandom = Math.random, NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY, POSITIVE_INFINITY = Number.POSITIVE_INFINITY, MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1, MAX_SAFE_INTEGER = 9007199254740991, metaMap = WeakMap && new WeakMap(), realNames = {};
  15030.                lodash.support = {};
  15031.                lodash.templateSettings = {
  15032.                    escape: reEscape,
  15033.                    evaluate: reEvaluate,
  15034.                    interpolate: reInterpolate,
  15035.                    variable: "",
  15036.                    imports: {
  15037.                        _: lodash
  15038.                    }
  15039.                };
  15040.                var baseCreate = function() {
  15041.                    function object() {}
  15042.                    return function(prototype) {
  15043.                        if (isObject(prototype)) {
  15044.                            object.prototype = prototype;
  15045.                            var result = new object();
  15046.                            object.prototype = undefined;
  15047.                        }
  15048.                        return result || {};
  15049.                    };
  15050.                }(), baseEach = createBaseEach(baseForOwn), baseEachRight = createBaseEach(baseForOwnRight, !0), baseFor = createBaseFor(), baseForRight = createBaseFor(!0), baseSetData = !metaMap ? identity : function(func, data) {
  15051.                    metaMap.set(func, data);
  15052.                    return func;
  15053.                }, getData = !metaMap ? noop : function(func) {
  15054.                    return metaMap.get(func);
  15055.                }, getLength = baseProperty("length"), setData = function() {
  15056.                    var count = 0, lastCalled = 0;
  15057.                    return function(key, value) {
  15058.                        var stamp = now(), remaining = HOT_SPAN - (stamp - lastCalled);
  15059.                        lastCalled = stamp;
  15060.                        if (remaining > 0) {
  15061.                            if (++count >= HOT_COUNT) return key;
  15062.                        } else count = 0;
  15063.                        return baseSetData(key, value);
  15064.                    };
  15065.                }(), difference = restParam(function(array, values) {
  15066.                    return isObjectLike(array) && isArrayLike(array) ? baseDifference(array, baseFlatten(values, !1, !0)) : [];
  15067.                }), findIndex = createFindIndex(), findLastIndex = createFindIndex(!0), intersection = restParam(function(arrays) {
  15068.                    for (var othLength = arrays.length, othIndex = othLength, caches = Array(length), indexOf = getIndexOf(), isCommon = indexOf == baseIndexOf, result = []; othIndex--; ) {
  15069.                        var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];
  15070.                        caches[othIndex] = isCommon && value.length >= 120 ? createCache(othIndex && value) : null;
  15071.                    }
  15072.                    var array = arrays[0], index = -1, length = array ? array.length : 0, seen = caches[0];
  15073.                    outer: for (;++index < length; ) {
  15074.                        value = array[index];
  15075.                        if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {
  15076.                            for (var othIndex = othLength; --othIndex; ) {
  15077.                                var cache = caches[othIndex];
  15078.                                if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) continue outer;
  15079.                            }
  15080.                            if (seen) seen.push(value);
  15081.                            result.push(value);
  15082.                        }
  15083.                    }
  15084.                    return result;
  15085.                }), pullAt = restParam(function(array, indexes) {
  15086.                    indexes = baseFlatten(indexes);
  15087.                    var result = baseAt(array, indexes);
  15088.                    basePullAt(array, indexes.sort(baseCompareAscending));
  15089.                    return result;
  15090.                }), sortedIndex = createSortedIndex(), sortedLastIndex = createSortedIndex(!0), union = restParam(function(arrays) {
  15091.                    return baseUniq(baseFlatten(arrays, !1, !0));
  15092.                }), without = restParam(function(array, values) {
  15093.                    return isArrayLike(array) ? baseDifference(array, values) : [];
  15094.                }), zip = restParam(unzip), zipWith = restParam(function(arrays) {
  15095.                    var length = arrays.length, iteratee = length > 2 ? arrays[length - 2] : undefined, thisArg = length > 1 ? arrays[length - 1] : undefined;
  15096.                    if (length > 2 && "function" == typeof iteratee) length -= 2; else {
  15097.                        iteratee = length > 1 && "function" == typeof thisArg ? (--length, thisArg) : undefined;
  15098.                        thisArg = undefined;
  15099.                    }
  15100.                    arrays.length = length;
  15101.                    return unzipWith(arrays, iteratee, thisArg);
  15102.                }), wrapperConcat = restParam(function(values) {
  15103.                    values = baseFlatten(values);
  15104.                    return this.thru(function(array) {
  15105.                        return arrayConcat(isArray(array) ? array : [ toObject(array) ], values);
  15106.                    });
  15107.                }), at = restParam(function(collection, props) {
  15108.                    return baseAt(collection, baseFlatten(props));
  15109.                }), countBy = createAggregator(function(result, value, key) {
  15110.                    hasOwnProperty.call(result, key) ? ++result[key] : result[key] = 1;
  15111.                }), find = createFind(baseEach), findLast = createFind(baseEachRight, !0), forEach = createForEach(arrayEach, baseEach), forEachRight = createForEach(arrayEachRight, baseEachRight), groupBy = createAggregator(function(result, value, key) {
  15112.                    if (hasOwnProperty.call(result, key)) result[key].push(value); else result[key] = [ value ];
  15113.                }), indexBy = createAggregator(function(result, value, key) {
  15114.                    result[key] = value;
  15115.                }), invoke = restParam(function(collection, path, args) {
  15116.                    var index = -1, isFunc = "function" == typeof path, isProp = isKey(path), result = isArrayLike(collection) ? Array(collection.length) : [];
  15117.                    baseEach(collection, function(value) {
  15118.                        var func = isFunc ? path : isProp && null != value ? value[path] : undefined;
  15119.                        result[++index] = func ? func.apply(value, args) : invokePath(value, path, args);
  15120.                    });
  15121.                    return result;
  15122.                }), partition = createAggregator(function(result, value, key) {
  15123.                    result[key ? 0 : 1].push(value);
  15124.                }, function() {
  15125.                    return [ [], [] ];
  15126.                }), reduce = createReduce(arrayReduce, baseEach), reduceRight = createReduce(arrayReduceRight, baseEachRight), sortByAll = restParam(function(collection, iteratees) {
  15127.                    if (null == collection) return [];
  15128.                    var guard = iteratees[2];
  15129.                    if (guard && isIterateeCall(iteratees[0], iteratees[1], guard)) iteratees.length = 1;
  15130.                    return baseSortByOrder(collection, baseFlatten(iteratees), []);
  15131.                }), now = nativeNow || function() {
  15132.                    return new Date().getTime();
  15133.                }, bind = restParam(function(func, thisArg, partials) {
  15134.                    var bitmask = BIND_FLAG;
  15135.                    if (partials.length) {
  15136.                        var holders = replaceHolders(partials, bind.placeholder);
  15137.                        bitmask |= PARTIAL_FLAG;
  15138.                    }
  15139.                    return createWrapper(func, bitmask, thisArg, partials, holders);
  15140.                }), bindAll = restParam(function(object, methodNames) {
  15141.                    methodNames = methodNames.length ? baseFlatten(methodNames) : functions(object);
  15142.                    for (var index = -1, length = methodNames.length; ++index < length; ) {
  15143.                        var key = methodNames[index];
  15144.                        object[key] = createWrapper(object[key], BIND_FLAG, object);
  15145.                    }
  15146.                    return object;
  15147.                }), bindKey = restParam(function(object, key, partials) {
  15148.                    var bitmask = BIND_FLAG | BIND_KEY_FLAG;
  15149.                    if (partials.length) {
  15150.                        var holders = replaceHolders(partials, bindKey.placeholder);
  15151.                        bitmask |= PARTIAL_FLAG;
  15152.                    }
  15153.                    return createWrapper(key, bitmask, object, partials, holders);
  15154.                }), curry = createCurry(CURRY_FLAG), curryRight = createCurry(CURRY_RIGHT_FLAG), defer = restParam(function(func, args) {
  15155.                    return baseDelay(func, 1, args);
  15156.                }), delay = restParam(function(func, wait, args) {
  15157.                    return baseDelay(func, wait, args);
  15158.                }), flow = createFlow(), flowRight = createFlow(!0), modArgs = restParam(function(func, transforms) {
  15159.                    transforms = baseFlatten(transforms);
  15160.                    if ("function" != typeof func || !arrayEvery(transforms, baseIsFunction)) throw new TypeError(FUNC_ERROR_TEXT);
  15161.                    var length = transforms.length;
  15162.                    return restParam(function(args) {
  15163.                        for (var index = nativeMin(args.length, length); index--; ) args[index] = transforms[index](args[index]);
  15164.                        return func.apply(this, args);
  15165.                    });
  15166.                }), partial = createPartial(PARTIAL_FLAG), partialRight = createPartial(PARTIAL_RIGHT_FLAG), rearg = restParam(function(func, indexes) {
  15167.                    return createWrapper(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes));
  15168.                }), isArray = nativeIsArray || function(value) {
  15169.                    return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
  15170.                }, merge = createAssigner(baseMerge), assign = createAssigner(function(object, source, customizer) {
  15171.                    return customizer ? assignWith(object, source, customizer) : baseAssign(object, source);
  15172.                }), defaults = createDefaults(assign, assignDefaults), defaultsDeep = createDefaults(merge, mergeDefaults), findKey = createFindKey(baseForOwn), findLastKey = createFindKey(baseForOwnRight), forIn = createForIn(baseFor), forInRight = createForIn(baseForRight), forOwn = createForOwn(baseForOwn), forOwnRight = createForOwn(baseForOwnRight), keys = !nativeKeys ? shimKeys : function(object) {
  15173.                    var Ctor = null == object ? undefined : object.constructor;
  15174.                    if ("function" == typeof Ctor && Ctor.prototype === object || "function" != typeof object && isArrayLike(object)) return shimKeys(object); else return isObject(object) ? nativeKeys(object) : [];
  15175.                }, mapKeys = createObjectMapper(!0), mapValues = createObjectMapper(), omit = restParam(function(object, props) {
  15176.                    if (null == object) return {};
  15177.                    if ("function" != typeof props[0]) {
  15178.                        var props = arrayMap(baseFlatten(props), String);
  15179.                        return pickByArray(object, baseDifference(keysIn(object), props));
  15180.                    }
  15181.                    var predicate = bindCallback(props[0], props[1], 3);
  15182.                    return pickByCallback(object, function(value, key, object) {
  15183.                        return !predicate(value, key, object);
  15184.                    });
  15185.                }), pick = restParam(function(object, props) {
  15186.                    if (null == object) return {}; else return "function" == typeof props[0] ? pickByCallback(object, bindCallback(props[0], props[1], 3)) : pickByArray(object, baseFlatten(props));
  15187.                }), camelCase = createCompounder(function(result, word, index) {
  15188.                    word = word.toLowerCase();
  15189.                    return result + (index ? word.charAt(0).toUpperCase() + word.slice(1) : word);
  15190.                }), kebabCase = createCompounder(function(result, word, index) {
  15191.                    return result + (index ? "-" : "") + word.toLowerCase();
  15192.                }), padLeft = createPadDir(), padRight = createPadDir(!0), snakeCase = createCompounder(function(result, word, index) {
  15193.                    return result + (index ? "_" : "") + word.toLowerCase();
  15194.                }), startCase = createCompounder(function(result, word, index) {
  15195.                    return result + (index ? " " : "") + (word.charAt(0).toUpperCase() + word.slice(1));
  15196.                }), attempt = restParam(function(func, args) {
  15197.                    try {
  15198.                        return func.apply(undefined, args);
  15199.                    } catch (e) {
  15200.                        return isError(e) ? e : new Error(e);
  15201.                    }
  15202.                }), method = restParam(function(path, args) {
  15203.                    return function(object) {
  15204.                        return invokePath(object, path, args);
  15205.                    };
  15206.                }), methodOf = restParam(function(object, args) {
  15207.                    return function(path) {
  15208.                        return invokePath(object, path, args);
  15209.                    };
  15210.                }), ceil = createRound("ceil"), floor = createRound("floor"), max = createExtremum(gt, NEGATIVE_INFINITY), min = createExtremum(lt, POSITIVE_INFINITY), round = createRound("round");
  15211.                lodash.prototype = baseLodash.prototype;
  15212.                LodashWrapper.prototype = baseCreate(baseLodash.prototype);
  15213.                LodashWrapper.prototype.constructor = LodashWrapper;
  15214.                LazyWrapper.prototype = baseCreate(baseLodash.prototype);
  15215.                LazyWrapper.prototype.constructor = LazyWrapper;
  15216.                MapCache.prototype["delete"] = mapDelete;
  15217.                MapCache.prototype.get = mapGet;
  15218.                MapCache.prototype.has = mapHas;
  15219.                MapCache.prototype.set = mapSet;
  15220.                SetCache.prototype.push = cachePush;
  15221.                memoize.Cache = MapCache;
  15222.                lodash.after = after;
  15223.                lodash.ary = ary;
  15224.                lodash.assign = assign;
  15225.                lodash.at = at;
  15226.                lodash.before = before;
  15227.                lodash.bind = bind;
  15228.                lodash.bindAll = bindAll;
  15229.                lodash.bindKey = bindKey;
  15230.                lodash.callback = callback;
  15231.                lodash.chain = chain;
  15232.                lodash.chunk = chunk;
  15233.                lodash.compact = compact;
  15234.                lodash.constant = constant;
  15235.                lodash.countBy = countBy;
  15236.                lodash.create = create;
  15237.                lodash.curry = curry;
  15238.                lodash.curryRight = curryRight;
  15239.                lodash.debounce = debounce;
  15240.                lodash.defaults = defaults;
  15241.                lodash.defaultsDeep = defaultsDeep;
  15242.                lodash.defer = defer;
  15243.                lodash.delay = delay;
  15244.                lodash.difference = difference;
  15245.                lodash.drop = drop;
  15246.                lodash.dropRight = dropRight;
  15247.                lodash.dropRightWhile = dropRightWhile;
  15248.                lodash.dropWhile = dropWhile;
  15249.                lodash.fill = fill;
  15250.                lodash.filter = filter;
  15251.                lodash.flatten = flatten;
  15252.                lodash.flattenDeep = flattenDeep;
  15253.                lodash.flow = flow;
  15254.                lodash.flowRight = flowRight;
  15255.                lodash.forEach = forEach;
  15256.                lodash.forEachRight = forEachRight;
  15257.                lodash.forIn = forIn;
  15258.                lodash.forInRight = forInRight;
  15259.                lodash.forOwn = forOwn;
  15260.                lodash.forOwnRight = forOwnRight;
  15261.                lodash.functions = functions;
  15262.                lodash.groupBy = groupBy;
  15263.                lodash.indexBy = indexBy;
  15264.                lodash.initial = initial;
  15265.                lodash.intersection = intersection;
  15266.                lodash.invert = invert;
  15267.                lodash.invoke = invoke;
  15268.                lodash.keys = keys;
  15269.                lodash.keysIn = keysIn;
  15270.                lodash.map = map;
  15271.                lodash.mapKeys = mapKeys;
  15272.                lodash.mapValues = mapValues;
  15273.                lodash.matches = matches;
  15274.                lodash.matchesProperty = matchesProperty;
  15275.                lodash.memoize = memoize;
  15276.                lodash.merge = merge;
  15277.                lodash.method = method;
  15278.                lodash.methodOf = methodOf;
  15279.                lodash.mixin = mixin;
  15280.                lodash.modArgs = modArgs;
  15281.                lodash.negate = negate;
  15282.                lodash.omit = omit;
  15283.                lodash.once = once;
  15284.                lodash.pairs = pairs;
  15285.                lodash.partial = partial;
  15286.                lodash.partialRight = partialRight;
  15287.                lodash.partition = partition;
  15288.                lodash.pick = pick;
  15289.                lodash.pluck = pluck;
  15290.                lodash.property = property;
  15291.                lodash.propertyOf = propertyOf;
  15292.                lodash.pull = pull;
  15293.                lodash.pullAt = pullAt;
  15294.                lodash.range = range;
  15295.                lodash.rearg = rearg;
  15296.                lodash.reject = reject;
  15297.                lodash.remove = remove;
  15298.                lodash.rest = rest;
  15299.                lodash.restParam = restParam;
  15300.                lodash.set = set;
  15301.                lodash.shuffle = shuffle;
  15302.                lodash.slice = slice;
  15303.                lodash.sortBy = sortBy;
  15304.                lodash.sortByAll = sortByAll;
  15305.                lodash.sortByOrder = sortByOrder;
  15306.                lodash.spread = spread;
  15307.                lodash.take = take;
  15308.                lodash.takeRight = takeRight;
  15309.                lodash.takeRightWhile = takeRightWhile;
  15310.                lodash.takeWhile = takeWhile;
  15311.                lodash.tap = tap;
  15312.                lodash.throttle = throttle;
  15313.                lodash.thru = thru;
  15314.                lodash.times = times;
  15315.                lodash.toArray = toArray;
  15316.                lodash.toPlainObject = toPlainObject;
  15317.                lodash.transform = transform;
  15318.                lodash.union = union;
  15319.                lodash.uniq = uniq;
  15320.                lodash.unzip = unzip;
  15321.                lodash.unzipWith = unzipWith;
  15322.                lodash.values = values;
  15323.                lodash.valuesIn = valuesIn;
  15324.                lodash.where = where;
  15325.                lodash.without = without;
  15326.                lodash.wrap = wrap;
  15327.                lodash.xor = xor;
  15328.                lodash.zip = zip;
  15329.                lodash.zipObject = zipObject;
  15330.                lodash.zipWith = zipWith;
  15331.                lodash.backflow = flowRight;
  15332.                lodash.collect = map;
  15333.                lodash.compose = flowRight;
  15334.                lodash.each = forEach;
  15335.                lodash.eachRight = forEachRight;
  15336.                lodash.extend = assign;
  15337.                lodash.iteratee = callback;
  15338.                lodash.methods = functions;
  15339.                lodash.object = zipObject;
  15340.                lodash.select = filter;
  15341.                lodash.tail = rest;
  15342.                lodash.unique = uniq;
  15343.                mixin(lodash, lodash);
  15344.                lodash.add = add;
  15345.                lodash.attempt = attempt;
  15346.                lodash.camelCase = camelCase;
  15347.                lodash.capitalize = capitalize;
  15348.                lodash.ceil = ceil;
  15349.                lodash.clone = clone;
  15350.                lodash.cloneDeep = cloneDeep;
  15351.                lodash.deburr = deburr;
  15352.                lodash.endsWith = endsWith;
  15353.                lodash.escape = escape;
  15354.                lodash.escapeRegExp = escapeRegExp;
  15355.                lodash.every = every;
  15356.                lodash.find = find;
  15357.                lodash.findIndex = findIndex;
  15358.                lodash.findKey = findKey;
  15359.                lodash.findLast = findLast;
  15360.                lodash.findLastIndex = findLastIndex;
  15361.                lodash.findLastKey = findLastKey;
  15362.                lodash.findWhere = findWhere;
  15363.                lodash.first = first;
  15364.                lodash.floor = floor;
  15365.                lodash.get = get;
  15366.                lodash.gt = gt;
  15367.                lodash.gte = gte;
  15368.                lodash.has = has;
  15369.                lodash.identity = identity;
  15370.                lodash.includes = includes;
  15371.                lodash.indexOf = indexOf;
  15372.                lodash.inRange = inRange;
  15373.                lodash.isArguments = isArguments;
  15374.                lodash.isArray = isArray;
  15375.                lodash.isBoolean = isBoolean;
  15376.                lodash.isDate = isDate;
  15377.                lodash.isElement = isElement;
  15378.                lodash.isEmpty = isEmpty;
  15379.                lodash.isEqual = isEqual;
  15380.                lodash.isError = isError;
  15381.                lodash.isFinite = isFinite;
  15382.                lodash.isFunction = isFunction;
  15383.                lodash.isMatch = isMatch;
  15384.                lodash.isNaN = isNaN;
  15385.                lodash.isNative = isNative;
  15386.                lodash.isNull = isNull;
  15387.                lodash.isNumber = isNumber;
  15388.                lodash.isObject = isObject;
  15389.                lodash.isPlainObject = isPlainObject;
  15390.                lodash.isRegExp = isRegExp;
  15391.                lodash.isString = isString;
  15392.                lodash.isTypedArray = isTypedArray;
  15393.                lodash.isUndefined = isUndefined;
  15394.                lodash.kebabCase = kebabCase;
  15395.                lodash.last = last;
  15396.                lodash.lastIndexOf = lastIndexOf;
  15397.                lodash.lt = lt;
  15398.                lodash.lte = lte;
  15399.                lodash.max = max;
  15400.                lodash.min = min;
  15401.                lodash.noConflict = noConflict;
  15402.                lodash.noop = noop;
  15403.                lodash.now = now;
  15404.                lodash.pad = pad;
  15405.                lodash.padLeft = padLeft;
  15406.                lodash.padRight = padRight;
  15407.                lodash.parseInt = parseInt;
  15408.                lodash.random = random;
  15409.                lodash.reduce = reduce;
  15410.                lodash.reduceRight = reduceRight;
  15411.                lodash.repeat = repeat;
  15412.                lodash.result = result;
  15413.                lodash.round = round;
  15414.                lodash.runInContext = runInContext;
  15415.                lodash.size = size;
  15416.                lodash.snakeCase = snakeCase;
  15417.                lodash.some = some;
  15418.                lodash.sortedIndex = sortedIndex;
  15419.                lodash.sortedLastIndex = sortedLastIndex;
  15420.                lodash.startCase = startCase;
  15421.                lodash.startsWith = startsWith;
  15422.                lodash.sum = sum;
  15423.                lodash.template = template;
  15424.                lodash.trim = trim;
  15425.                lodash.trimLeft = trimLeft;
  15426.                lodash.trimRight = trimRight;
  15427.                lodash.trunc = trunc;
  15428.                lodash.unescape = unescape;
  15429.                lodash.uniqueId = uniqueId;
  15430.                lodash.words = words;
  15431.                lodash.all = every;
  15432.                lodash.any = some;
  15433.                lodash.contains = includes;
  15434.                lodash.eq = isEqual;
  15435.                lodash.detect = find;
  15436.                lodash.foldl = reduce;
  15437.                lodash.foldr = reduceRight;
  15438.                lodash.head = first;
  15439.                lodash.include = includes;
  15440.                lodash.inject = reduce;
  15441.                mixin(lodash, function() {
  15442.                    var source = {};
  15443.                    baseForOwn(lodash, function(func, methodName) {
  15444.                        if (!lodash.prototype[methodName]) source[methodName] = func;
  15445.                    });
  15446.                    return source;
  15447.                }(), !1);
  15448.                lodash.sample = sample;
  15449.                lodash.prototype.sample = function(n) {
  15450.                    if (!this.__chain__ && null == n) return sample(this.value()); else return this.thru(function(value) {
  15451.                        return sample(value, n);
  15452.                    });
  15453.                };
  15454.                lodash.VERSION = VERSION;
  15455.                arrayEach([ "bind", "bindKey", "curry", "curryRight", "partial", "partialRight" ], function(methodName) {
  15456.                    lodash[methodName].placeholder = lodash;
  15457.                });
  15458.                arrayEach([ "drop", "take" ], function(methodName, index) {
  15459.                    LazyWrapper.prototype[methodName] = function(n) {
  15460.                        var filtered = this.__filtered__;
  15461.                        if (filtered && !index) return new LazyWrapper(this);
  15462.                        n = null == n ? 1 : nativeMax(nativeFloor(n) || 0, 0);
  15463.                        var result = this.clone();
  15464.                        if (filtered) result.__takeCount__ = nativeMin(result.__takeCount__, n); else result.__views__.push({
  15465.                            size: n,
  15466.                            type: methodName + (result.__dir__ < 0 ? "Right" : "")
  15467.                        });
  15468.                        return result;
  15469.                    };
  15470.                    LazyWrapper.prototype[methodName + "Right"] = function(n) {
  15471.                        return this.reverse()[methodName](n).reverse();
  15472.                    };
  15473.                });
  15474.                arrayEach([ "filter", "map", "takeWhile" ], function(methodName, index) {
  15475.                    var type = index + 1, isFilter = type != LAZY_MAP_FLAG;
  15476.                    LazyWrapper.prototype[methodName] = function(iteratee, thisArg) {
  15477.                        var result = this.clone();
  15478.                        result.__iteratees__.push({
  15479.                            iteratee: getCallback(iteratee, thisArg, 1),
  15480.                            type: type
  15481.                        });
  15482.                        result.__filtered__ = result.__filtered__ || isFilter;
  15483.                        return result;
  15484.                    };
  15485.                });
  15486.                arrayEach([ "first", "last" ], function(methodName, index) {
  15487.                    var takeName = "take" + (index ? "Right" : "");
  15488.                    LazyWrapper.prototype[methodName] = function() {
  15489.                        return this[takeName](1).value()[0];
  15490.                    };
  15491.                });
  15492.                arrayEach([ "initial", "rest" ], function(methodName, index) {
  15493.                    var dropName = "drop" + (index ? "" : "Right");
  15494.                    LazyWrapper.prototype[methodName] = function() {
  15495.                        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
  15496.                    };
  15497.                });
  15498.                arrayEach([ "pluck", "where" ], function(methodName, index) {
  15499.                    var operationName = index ? "filter" : "map", createCallback = index ? baseMatches : property;
  15500.                    LazyWrapper.prototype[methodName] = function(value) {
  15501.                        return this[operationName](createCallback(value));
  15502.                    };
  15503.                });
  15504.                LazyWrapper.prototype.compact = function() {
  15505.                    return this.filter(identity);
  15506.                };
  15507.                LazyWrapper.prototype.reject = function(predicate, thisArg) {
  15508.                    predicate = getCallback(predicate, thisArg, 1);
  15509.                    return this.filter(function(value) {
  15510.                        return !predicate(value);
  15511.                    });
  15512.                };
  15513.                LazyWrapper.prototype.slice = function(start, end) {
  15514.                    start = null == start ? 0 : +start || 0;
  15515.                    var result = this;
  15516.                    if (result.__filtered__ && (start > 0 || end < 0)) return new LazyWrapper(result);
  15517.                    if (start < 0) result = result.takeRight(-start); else if (start) result = result.drop(start);
  15518.                    if (end !== undefined) {
  15519.                        end = +end || 0;
  15520.                        result = end < 0 ? result.dropRight(-end) : result.take(end - start);
  15521.                    }
  15522.                    return result;
  15523.                };
  15524.                LazyWrapper.prototype.takeRightWhile = function(predicate, thisArg) {
  15525.                    return this.reverse().takeWhile(predicate, thisArg).reverse();
  15526.                };
  15527.                LazyWrapper.prototype.toArray = function() {
  15528.                    return this.take(POSITIVE_INFINITY);
  15529.                };
  15530.                baseForOwn(LazyWrapper.prototype, function(func, methodName) {
  15531.                    var checkIteratee = /^(?:filter|map|reject)|While$/.test(methodName), retUnwrapped = /^(?:first|last)$/.test(methodName), lodashFunc = lodash[retUnwrapped ? "take" + ("last" == methodName ? "Right" : "") : methodName];
  15532.                    if (lodashFunc) lodash.prototype[methodName] = function() {
  15533.                        var args = retUnwrapped ? [ 1 ] : arguments, chainAll = this.__chain__, value = this.__wrapped__, isHybrid = !!this.__actions__.length, isLazy = value instanceof LazyWrapper, iteratee = args[0], useLazy = isLazy || isArray(value);
  15534.                        if (useLazy && checkIteratee && "function" == typeof iteratee && 1 != iteratee.length) isLazy = useLazy = !1;
  15535.                        var interceptor = function(value) {
  15536.                            return retUnwrapped && chainAll ? lodashFunc(value, 1)[0] : lodashFunc.apply(undefined, arrayPush([ value ], args));
  15537.                        }, action = {
  15538.                            func: thru,
  15539.                            args: [ interceptor ],
  15540.                            thisArg: undefined
  15541.                        }, onlyLazy = isLazy && !isHybrid;
  15542.                        if (retUnwrapped && !chainAll) {
  15543.                            if (onlyLazy) {
  15544.                                value = value.clone();
  15545.                                value.__actions__.push(action);
  15546.                                return func.call(value);
  15547.                            }
  15548.                            return lodashFunc.call(undefined, this.value())[0];
  15549.                        }
  15550.                        if (!retUnwrapped && useLazy) {
  15551.                            value = onlyLazy ? value : new LazyWrapper(this);
  15552.                            var result = func.apply(value, args);
  15553.                            result.__actions__.push(action);
  15554.                            return new LodashWrapper(result, chainAll);
  15555.                        }
  15556.                        return this.thru(interceptor);
  15557.                    };
  15558.                });
  15559.                arrayEach([ "join", "pop", "push", "replace", "shift", "sort", "splice", "split", "unshift" ], function(methodName) {
  15560.                    var func = (/^(?:replace|split)$/.test(methodName) ? stringProto : arrayProto)[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:join|pop|replace|shift)$/.test(methodName);
  15561.                    lodash.prototype[methodName] = function() {
  15562.                        var args = arguments;
  15563.                        if (retUnwrapped && !this.__chain__) return func.apply(this.value(), args); else return this[chainName](function(value) {
  15564.                            return func.apply(value, args);
  15565.                        });
  15566.                    };
  15567.                });
  15568.                baseForOwn(LazyWrapper.prototype, function(func, methodName) {
  15569.                    var lodashFunc = lodash[methodName];
  15570.                    if (lodashFunc) {
  15571.                        var key = lodashFunc.name;
  15572.                        (realNames[key] || (realNames[key] = [])).push({
  15573.                            name: methodName,
  15574.                            func: lodashFunc
  15575.                        });
  15576.                    }
  15577.                });
  15578.                realNames[createHybridWrapper(undefined, BIND_KEY_FLAG).name] = [ {
  15579.                    name: "wrapper",
  15580.                    func: undefined
  15581.                } ];
  15582.                LazyWrapper.prototype.clone = lazyClone;
  15583.                LazyWrapper.prototype.reverse = lazyReverse;
  15584.                LazyWrapper.prototype.value = lazyValue;
  15585.                lodash.prototype.chain = wrapperChain;
  15586.                lodash.prototype.commit = wrapperCommit;
  15587.                lodash.prototype.concat = wrapperConcat;
  15588.                lodash.prototype.plant = wrapperPlant;
  15589.                lodash.prototype.reverse = wrapperReverse;
  15590.                lodash.prototype.toString = wrapperToString;
  15591.                lodash.prototype.run = lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
  15592.                lodash.prototype.collect = lodash.prototype.map;
  15593.                lodash.prototype.head = lodash.prototype.first;
  15594.                lodash.prototype.select = lodash.prototype.filter;
  15595.                lodash.prototype.tail = lodash.prototype.rest;
  15596.                return lodash;
  15597.            }
  15598.            var undefined, VERSION = "3.10.1", BIND_FLAG = 1, BIND_KEY_FLAG = 2, CURRY_BOUND_FLAG = 4, CURRY_FLAG = 8, CURRY_RIGHT_FLAG = 16, PARTIAL_FLAG = 32, PARTIAL_RIGHT_FLAG = 64, ARY_FLAG = 128, REARG_FLAG = 256, DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...", HOT_COUNT = 150, HOT_SPAN = 16, LARGE_ARRAY_SIZE = 200, LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, FUNC_ERROR_TEXT = "Expected a function", PLACEHOLDER = "__lodash_placeholder__", argsTag = "[object Arguments]", arrayTag = "[object Array]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag = "[object Function]", numberTag = "[object Number]", objectTag = "[object Object]", regexpTag = "[object RegExp]", stringTag = "[object String]", arrayBufferTag = "[object ArrayBuffer]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]", reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g, reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g, reUnescapedHtml = /[&<>"'`]/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source), reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g, reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g, reRegExpChars = /^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g, reHasRegExpChars = RegExp(reRegExpChars.source), reComboMark = /[\u0300-\u036f\ufe20-\ufe23]/g, reEscapeChar = /\\(\\)?/g, reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, reFlags = /\w*$/, reHasHexPrefix = /^0[xX]/, reIsHostCtor = /^\[object .+?Constructor\]$/, reIsUint = /^\d+$/, reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g, reNoMatch = /($^)/, reUnescapedString = /['\n\r\u2028\u2029\\]/g, reWords = function() {
  15599.                 var upper = "[A-Z\\xc0-\\xd6\\xd8-\\xde]", lower = "[a-z\\xdf-\\xf6\\xf8-\\xff]+";
  15600.                 return RegExp(upper + "+(?=" + upper + lower + ")|" + upper + "?" + lower + "|" + upper + "+|[0-9]+", "g");
  15601.             }(), contextProps = [ "Array", "ArrayBuffer", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Math", "Number", "Object", "RegExp", "Set", "String", "_", "clearTimeout", "isFinite", "parseFloat", "parseInt", "setTimeout", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap" ], templateCounter = -1, typedArrayTags = {};
  15602.             typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = !0;
  15603.             typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags["[object Map]"] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags["[object Set]"] = typedArrayTags[stringTag] = typedArrayTags["[object WeakMap]"] = !1;
  15604.             var cloneableTags = {};
  15605.             cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[stringTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = !0;
  15606.             cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags["[object Map]"] = cloneableTags["[object Set]"] = cloneableTags["[object WeakMap]"] = !1;
  15607.             var deburredLetters = {
  15608.                 "À": "A",
  15609.                 "Á": "A",
  15610.                 "Â": "A",
  15611.                 "Ã": "A",
  15612.                 "Ä": "A",
  15613.                 "Å": "A",
  15614.                 "à": "a",
  15615.                 "á": "a",
  15616.                 "â": "a",
  15617.                 "ã": "a",
  15618.                 "ä": "a",
  15619.                 "å": "a",
  15620.                 "Ç": "C",
  15621.                 "ç": "c",
  15622.                 "Ð": "D",
  15623.                 "ð": "d",
  15624.                 "È": "E",
  15625.                 "É": "E",
  15626.                 "Ê": "E",
  15627.                 "Ë": "E",
  15628.                 "è": "e",
  15629.                 "é": "e",
  15630.                 "ê": "e",
  15631.                 "ë": "e",
  15632.                 "Ì": "I",
  15633.                 "Í": "I",
  15634.                 "Î": "I",
  15635.                 "Ï": "I",
  15636.                 "ì": "i",
  15637.                 "í": "i",
  15638.                 "î": "i",
  15639.                 "ï": "i",
  15640.                 "Ñ": "N",
  15641.                 "ñ": "n",
  15642.                 "Ò": "O",
  15643.                 "Ó": "O",
  15644.                 "Ô": "O",
  15645.                 "Õ": "O",
  15646.                 "Ö": "O",
  15647.                 "Ø": "O",
  15648.                 "ò": "o",
  15649.                 "ó": "o",
  15650.                 "ô": "o",
  15651.                 "õ": "o",
  15652.                 "ö": "o",
  15653.                 "ø": "o",
  15654.                 "Ù": "U",
  15655.                 "Ú": "U",
  15656.                 "Û": "U",
  15657.                 "Ü": "U",
  15658.                 "ù": "u",
  15659.                 "ú": "u",
  15660.                 "û": "u",
  15661.                 "ü": "u",
  15662.                 "Ý": "Y",
  15663.                 "ý": "y",
  15664.                 "ÿ": "y",
  15665.                 "Æ": "Ae",
  15666.                 "æ": "ae",
  15667.                 "Þ": "Th",
  15668.                 "þ": "th",
  15669.                 "ß": "ss"
  15670.             }, htmlEscapes = {
  15671.                 "&": "&amp;",
  15672.                 "<": "&lt;",
  15673.                 ">": "&gt;",
  15674.                 '"': "&quot;",
  15675.                 "'": "&#39;",
  15676.                 "`": "&#96;"
  15677.             }, htmlUnescapes = {
  15678.                 "&amp;": "&",
  15679.                 "&lt;": "<",
  15680.                 "&gt;": ">",
  15681.                 "&quot;": '"',
  15682.                 "&#39;": "'",
  15683.                 "&#96;": "`"
  15684.             }, objectTypes = {
  15685.                 "function": !0,
  15686.                 object: !0
  15687.             }, regexpEscapes = {
  15688.                 "0": "x30",
  15689.                 "1": "x31",
  15690.                 "2": "x32",
  15691.                 "3": "x33",
  15692.                 "4": "x34",
  15693.                 "5": "x35",
  15694.                 "6": "x36",
  15695.                 "7": "x37",
  15696.                 "8": "x38",
  15697.                 "9": "x39",
  15698.                 A: "x41",
  15699.                 B: "x42",
  15700.                 C: "x43",
  15701.                 D: "x44",
  15702.                 E: "x45",
  15703.                 F: "x46",
  15704.                 a: "x61",
  15705.                 b: "x62",
  15706.                 c: "x63",
  15707.                 d: "x64",
  15708.                 e: "x65",
  15709.                 f: "x66",
  15710.                 n: "x6e",
  15711.                 r: "x72",
  15712.                 t: "x74",
  15713.                 u: "x75",
  15714.                 v: "x76",
  15715.                 x: "x78"
  15716.             }, stringEscapes = {
  15717.                 "\\": "\\",
  15718.                 "'": "'",
  15719.                 "\n": "n",
  15720.                 "\r": "r",
  15721.                 "\u2028": "u2028",
  15722.                 "\u2029": "u2029"
  15723.             }, freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports, freeModule = objectTypes[typeof module] && module && !module.nodeType && module, freeGlobal = freeExports && freeModule && "object" == typeof global && global && global.Object && global, freeSelf = objectTypes[typeof self] && self && self.Object && self, freeWindow = objectTypes[typeof window] && window && window.Object && window, moduleExports = freeModule && freeModule.exports === freeExports && freeExports, root = freeGlobal || freeWindow !== (this && this.window) && freeWindow || freeSelf || this, _ = runInContext();
  15724.             if (!0) {
  15725.                 root._ = _;
  15726.                 (__WEBPACK_AMD_DEFINE_RESULT__ = function() {
  15727.                     return _;
  15728.                 }.call(exports, __webpack_require__, exports, module)) !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);
  15729.             } else if (freeExports && freeModule) if (moduleExports) (freeModule.exports = _)._ = _; else freeExports._ = _; else root._ = _;
  15730.         }).call(this);
  15731.     }).call(exports, __webpack_require__(234)(module), __webpack_require__(79));
  15732. }, function(module, exports) {
  15733.     function arrayCopy(source, array) {
  15734.         var index = -1, length = source.length;
  15735.         array || (array = Array(length));
  15736.         for (;++index < length; ) array[index] = source[index];
  15737.         return array;
  15738.     }
  15739.     module.exports = arrayCopy;
  15740. }, function(module, exports) {
  15741.     function arrayEach(array, iteratee) {
  15742.         for (var index = -1, length = array.length; ++index < length && !1 !== iteratee(array[index], index, array); ) ;
  15743.         return array;
  15744.     }
  15745.     module.exports = arrayEach;
  15746. }, function(module, exports) {
  15747.     function baseCopy(source, props, object) {
  15748.         object || (object = {});
  15749.         for (var index = -1, length = props.length; ++index < length; ) {
  15750.             var key = props[index];
  15751.             object[key] = source[key];
  15752.         }
  15753.         return object;
  15754.     }
  15755.     module.exports = baseCopy;
  15756. }, function(module, exports, __webpack_require__) {
  15757.     function baseFlatten(array, isDeep, isStrict, result) {
  15758.         result || (result = []);
  15759.         for (var index = -1, length = array.length; ++index < length; ) {
  15760.             var value = array[index];
  15761.             if (isObjectLike(value) && isArrayLike(value) && (isStrict || isArray(value) || isArguments(value))) if (isDeep) baseFlatten(value, isDeep, isStrict, result); else arrayPush(result, value); else if (!isStrict) result[result.length] = value;
  15762.         }
  15763.         return result;
  15764.     }
  15765.     var arrayPush = __webpack_require__(523), isArguments = __webpack_require__(115), isArray = __webpack_require__(38), isArrayLike = __webpack_require__(75), isObjectLike = __webpack_require__(54);
  15766.     module.exports = baseFlatten;
  15767. }, function(module, exports, __webpack_require__) {
  15768.     var createBaseFor = __webpack_require__(552), baseFor = createBaseFor();
  15769.     module.exports = baseFor;
  15770. }, function(module, exports, __webpack_require__) {
  15771.     function baseForIn(object, iteratee) {
  15772.         return baseFor(object, iteratee, keysIn);
  15773.     }
  15774.     var baseFor = __webpack_require__(272), keysIn = __webpack_require__(208);
  15775.     module.exports = baseForIn;
  15776. }, function(module, exports, __webpack_require__) {
  15777.     function baseForOwn(object, iteratee) {
  15778.         return baseFor(object, iteratee, keys);
  15779.     }
  15780.     var baseFor = __webpack_require__(272), keys = __webpack_require__(95);
  15781.     module.exports = baseForOwn;
  15782. }, function(module, exports, __webpack_require__) {
  15783.     function baseGet(object, path, pathKey) {
  15784.         if (null != object) {
  15785.             if (pathKey !== undefined && pathKey in toObject(object)) path = [ pathKey ];
  15786.             for (var index = 0, length = path.length; null != object && index < length; ) object = object[path[index++]];
  15787.             return index && index == length ? object : undefined;
  15788.         }
  15789.     }
  15790.     var toObject = __webpack_require__(76);
  15791.     module.exports = baseGet;
  15792. }, function(module, exports) {
  15793.     function baseProperty(key) {
  15794.         return function(object) {
  15795.             return null == object ? undefined : object[key];
  15796.         };
  15797.     }
  15798.     module.exports = baseProperty;
  15799. }, function(module, exports, __webpack_require__) {
  15800.     var baseProperty = __webpack_require__(276), getLength = baseProperty("length");
  15801.     module.exports = getLength;
  15802. }, function(module, exports, __webpack_require__) {
  15803.     function isKey(value, object) {
  15804.         var type = typeof value;
  15805.         if ("string" == type && reIsPlainProp.test(value) || "number" == type) return !0;
  15806.         if (isArray(value)) return !1; else return !reIsDeepProp.test(value) || null != object && value in toObject(object);
  15807.     }
  15808.     var isArray = __webpack_require__(38), toObject = __webpack_require__(76), reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/;
  15809.     module.exports = isKey;
  15810. }, function(module, exports, __webpack_require__) {
  15811.     function isStrictComparable(value) {
  15812.         return value === value && !isObject(value);
  15813.     }
  15814.     var isObject = __webpack_require__(39);
  15815.     module.exports = isStrictComparable;
  15816. }, function(module, exports, __webpack_require__) {
  15817.     function toPath(value) {
  15818.         if (isArray(value)) return value;
  15819.         var result = [];
  15820.         baseToString(value).replace(rePropName, function(match, number, quote, string) {
  15821.             result.push(quote ? string.replace(reEscapeChar, "$1") : number || match);
  15822.         });
  15823.         return result;
  15824.     }
  15825.     var baseToString = __webpack_require__(542), isArray = __webpack_require__(38), rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g, reEscapeChar = /\\(\\)?/g;
  15826.     module.exports = toPath;
  15827. }, function(module, exports, __webpack_require__) {
  15828.     function isFunction(value) {
  15829.         return isObject(value) && objToString.call(value) == funcTag;
  15830.     }
  15831.     var isObject = __webpack_require__(39), funcTag = "[object Function]", objectProto = Object.prototype, objToString = objectProto.toString;
  15832.     module.exports = isFunction;
  15833. }, function(module, exports, __webpack_require__) {
  15834.     var baseFlatten = __webpack_require__(271), bindCallback = __webpack_require__(140), pickByArray = __webpack_require__(564), pickByCallback = __webpack_require__(565), restParam = __webpack_require__(266), pick = restParam(function(object, props) {
  15835.         if (null == object) return {}; else return "function" == typeof props[0] ? pickByCallback(object, bindCallback(props[0], props[1], 3)) : pickByArray(object, baseFlatten(props));
  15836.     });
  15837.     module.exports = pick;
  15838. }, function(module, exports) {
  15839.     function identity(value) {
  15840.         return value;
  15841.     }
  15842.     module.exports = identity;
  15843. }, function(module, exports, __webpack_require__) {
  15844.     "use strict";
  15845.     function prefixKey(prefix, key) {
  15846.         return prefix + key.charAt(0).toUpperCase() + key.substring(1);
  15847.     }
  15848.     var isUnitlessNumber = {
  15849.         columnCount: !0,
  15850.         fillOpacity: !0,
  15851.         flex: !0,
  15852.         flexGrow: !0,
  15853.         flexShrink: !0,
  15854.         fontWeight: !0,
  15855.         lineClamp: !0,
  15856.         lineHeight: !0,
  15857.         opacity: !0,
  15858.         order: !0,
  15859.         orphans: !0,
  15860.         widows: !0,
  15861.         zIndex: !0,
  15862.         zoom: !0
  15863.     }, prefixes = [ "Webkit", "ms", "Moz", "O" ];
  15864.     Object.keys(isUnitlessNumber).forEach(function(prop) {
  15865.         prefixes.forEach(function(prefix) {
  15866.             isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
  15867.         });
  15868.     });
  15869.     var shorthandPropertyExpansions = {
  15870.         background: {
  15871.             backgroundImage: !0,
  15872.             backgroundPosition: !0,
  15873.             backgroundRepeat: !0,
  15874.             backgroundColor: !0
  15875.         },
  15876.         border: {
  15877.             borderWidth: !0,
  15878.             borderStyle: !0,
  15879.             borderColor: !0
  15880.         },
  15881.         borderBottom: {
  15882.             borderBottomWidth: !0,
  15883.             borderBottomStyle: !0,
  15884.             borderBottomColor: !0
  15885.         },
  15886.         borderLeft: {
  15887.             borderLeftWidth: !0,
  15888.             borderLeftStyle: !0,
  15889.             borderLeftColor: !0
  15890.         },
  15891.         borderRight: {
  15892.             borderRightWidth: !0,
  15893.             borderRightStyle: !0,
  15894.             borderRightColor: !0
  15895.         },
  15896.         borderTop: {
  15897.             borderTopWidth: !0,
  15898.             borderTopStyle: !0,
  15899.             borderTopColor: !0
  15900.         },
  15901.         font: {
  15902.             fontStyle: !0,
  15903.             fontVariant: !0,
  15904.             fontWeight: !0,
  15905.             fontSize: !0,
  15906.             lineHeight: !0,
  15907.             fontFamily: !0
  15908.         }
  15909.     }, CSSProperty = {
  15910.         isUnitlessNumber: isUnitlessNumber,
  15911.         shorthandPropertyExpansions: shorthandPropertyExpansions
  15912.     };
  15913.     module.exports = CSSProperty;
  15914. }, function(module, exports, __webpack_require__) {
  15915.     "use strict";
  15916.     var CSSProperty = __webpack_require__(284), dangerousStyleValue = __webpack_require__(634), hyphenateStyleName = __webpack_require__(640), memoizeStringOnly = __webpack_require__(309), processStyleName = memoizeStringOnly(function(styleName) {
  15917.         return hyphenateStyleName(styleName);
  15918.     }), CSSPropertyOperations = {
  15919.         createMarkupForStyles: function(styles) {
  15920.             var serialized = "";
  15921.             for (var styleName in styles) if (styles.hasOwnProperty(styleName)) {
  15922.                 var styleValue = styles[styleName];
  15923.                 if (null != styleValue) {
  15924.                     serialized += processStyleName(styleName) + ":";
  15925.                     serialized += dangerousStyleValue(styleName, styleValue) + ";";
  15926.                 }
  15927.             }
  15928.             return serialized || null;
  15929.         },
  15930.         setValueForStyles: function(node, styles) {
  15931.             var style = node.style;
  15932.             for (var styleName in styles) if (styles.hasOwnProperty(styleName)) {
  15933.                 var styleValue = dangerousStyleValue(styleName, styles[styleName]);
  15934.                 if (styleValue) style[styleName] = styleValue; else {
  15935.                     var expansion = CSSProperty.shorthandPropertyExpansions[styleName];
  15936.                     if (expansion) for (var individualStyleName in expansion) style[individualStyleName] = ""; else style[styleName] = "";
  15937.                 }
  15938.             }
  15939.         }
  15940.     };
  15941.     module.exports = CSSPropertyOperations;
  15942. }, function(module, exports, __webpack_require__) {
  15943.     "use strict";
  15944.     function recomputePluginOrdering() {
  15945.         if (EventPluginOrder) for (var pluginName in namesToPlugins) {
  15946.             var PluginModule = namesToPlugins[pluginName], pluginIndex = EventPluginOrder.indexOf(pluginName);
  15947.             !0 ? invariant(pluginIndex > -1, "EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.", pluginName) : invariant(pluginIndex > -1);
  15948.             if (!EventPluginRegistry.plugins[pluginIndex]) {
  15949.                 !0 ? invariant(PluginModule.extractEvents, "EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.", pluginName) : invariant(PluginModule.extractEvents);
  15950.                 EventPluginRegistry.plugins[pluginIndex] = PluginModule;
  15951.                 var publishedEvents = PluginModule.eventTypes;
  15952.                 for (var eventName in publishedEvents) !0 ? invariant(publishEventForPlugin(publishedEvents[eventName], PluginModule, eventName), "EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.", eventName, pluginName) : invariant(publishEventForPlugin(publishedEvents[eventName], PluginModule, eventName));
  15953.             }
  15954.         }
  15955.     }
  15956.     function publishEventForPlugin(dispatchConfig, PluginModule, eventName) {
  15957.         !0 ? invariant(!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName), "EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.", eventName) : invariant(!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName));
  15958.         EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;
  15959.         var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
  15960.         if (phasedRegistrationNames) {
  15961.             for (var phaseName in phasedRegistrationNames) if (phasedRegistrationNames.hasOwnProperty(phaseName)) {
  15962.                 var phasedRegistrationName = phasedRegistrationNames[phaseName];
  15963.                 publishRegistrationName(phasedRegistrationName, PluginModule, eventName);
  15964.             }
  15965.             return !0;
  15966.         } else if (dispatchConfig.registrationName) {
  15967.             publishRegistrationName(dispatchConfig.registrationName, PluginModule, eventName);
  15968.             return !0;
  15969.         }
  15970.         return !1;
  15971.     }
  15972.     function publishRegistrationName(registrationName, PluginModule, eventName) {
  15973.         !0 ? invariant(!EventPluginRegistry.registrationNameModules[registrationName], "EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.", registrationName) : invariant(!EventPluginRegistry.registrationNameModules[registrationName]);
  15974.         EventPluginRegistry.registrationNameModules[registrationName] = PluginModule;
  15975.         EventPluginRegistry.registrationNameDependencies[registrationName] = PluginModule.eventTypes[eventName].dependencies;
  15976.     }
  15977.     var invariant = __webpack_require__(4), EventPluginOrder = null, namesToPlugins = {}, EventPluginRegistry = {
  15978.         plugins: [],
  15979.         eventNameDispatchConfigs: {},
  15980.         registrationNameModules: {},
  15981.         registrationNameDependencies: {},
  15982.         injectEventPluginOrder: function(InjectedEventPluginOrder) {
  15983.             !0 ? invariant(!EventPluginOrder, "EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.") : invariant(!EventPluginOrder);
  15984.             EventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);
  15985.             recomputePluginOrdering();
  15986.         },
  15987.         injectEventPluginsByName: function(injectedNamesToPlugins) {
  15988.             var isOrderingDirty = !1;
  15989.             for (var pluginName in injectedNamesToPlugins) if (injectedNamesToPlugins.hasOwnProperty(pluginName)) {
  15990.                 var PluginModule = injectedNamesToPlugins[pluginName];
  15991.                 if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== PluginModule) {
  15992.                     !0 ? invariant(!namesToPlugins[pluginName], "EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.", pluginName) : invariant(!namesToPlugins[pluginName]);
  15993.                     namesToPlugins[pluginName] = PluginModule;
  15994.                     isOrderingDirty = !0;
  15995.                 }
  15996.             }
  15997.             if (isOrderingDirty) recomputePluginOrdering();
  15998.         },
  15999.         getPluginModuleForEvent: function(event) {
  16000.             var dispatchConfig = event.dispatchConfig;
  16001.             if (dispatchConfig.registrationName) return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;
  16002.             for (var phase in dispatchConfig.phasedRegistrationNames) if (dispatchConfig.phasedRegistrationNames.hasOwnProperty(phase)) {
  16003.                 var PluginModule = EventPluginRegistry.registrationNameModules[dispatchConfig.phasedRegistrationNames[phase]];
  16004.                 if (PluginModule) return PluginModule;
  16005.             }
  16006.             return null;
  16007.         },
  16008.         _resetEventPlugins: function() {
  16009.             EventPluginOrder = null;
  16010.             for (var pluginName in namesToPlugins) if (namesToPlugins.hasOwnProperty(pluginName)) delete namesToPlugins[pluginName];
  16011.             EventPluginRegistry.plugins.length = 0;
  16012.             var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;
  16013.             for (var eventName in eventNameDispatchConfigs) if (eventNameDispatchConfigs.hasOwnProperty(eventName)) delete eventNameDispatchConfigs[eventName];
  16014.             var registrationNameModules = EventPluginRegistry.registrationNameModules;
  16015.             for (var registrationName in registrationNameModules) if (registrationNameModules.hasOwnProperty(registrationName)) delete registrationNameModules[registrationName];
  16016.         }
  16017.     };
  16018.     module.exports = EventPluginRegistry;
  16019. }, function(module, exports, __webpack_require__) {
  16020.     "use strict";
  16021.     function remove(event) {
  16022.         event.remove();
  16023.     }
  16024.     var ReactBrowserEventEmitter = __webpack_require__(118), accumulate = __webpack_require__(216), forEachAccumulated = __webpack_require__(218), invariant = __webpack_require__(4), LocalEventTrapMixin = {
  16025.         trapBubbledEvent: function(topLevelType, handlerBaseName) {
  16026.             !0 ? invariant(this.isMounted(), "Must be mounted to trap events") : invariant(this.isMounted());
  16027.             var listener = ReactBrowserEventEmitter.trapBubbledEvent(topLevelType, handlerBaseName, this.getDOMNode());
  16028.             this._localEventListeners = accumulate(this._localEventListeners, listener);
  16029.         },
  16030.         componentWillUnmount: function() {
  16031.             if (this._localEventListeners) forEachAccumulated(this._localEventListeners, remove);
  16032.         }
  16033.     };
  16034.     module.exports = LocalEventTrapMixin;
  16035. }, function(module, exports, __webpack_require__) {
  16036.     "use strict";
  16037.     function assertValidProps(props) {
  16038.         if (props) {
  16039.             !0 ? invariant(null == props.children || null == props.dangerouslySetInnerHTML, "Can only set one of `children` or `props.dangerouslySetInnerHTML`.") : invariant(null == props.children || null == props.dangerouslySetInnerHTML);
  16040.             !0 ? invariant(null == props.style || "object" == typeof props.style, "The `style` prop expects a mapping from style properties to values, not a string.") : invariant(null == props.style || "object" == typeof props.style);
  16041.         }
  16042.     }
  16043.     function putListener(id, registrationName, listener, transaction) {
  16044.         var container = ReactMount.findReactContainerForID(id);
  16045.         if (container) {
  16046.             var doc = container.nodeType === ELEMENT_NODE_TYPE ? container.ownerDocument : container;
  16047.             listenTo(registrationName, doc);
  16048.         }
  16049.         transaction.getPutListenerQueue().enqueuePutListener(id, registrationName, listener);
  16050.     }
  16051.     function ReactDOMComponent(tag, omitClose) {
  16052.         this._tagOpen = "<" + tag;
  16053.         this._tagClose = omitClose ? "" : "</" + tag + ">";
  16054.         this.tagName = tag.toUpperCase();
  16055.     }
  16056.     var CSSPropertyOperations = __webpack_require__(285), DOMProperty = __webpack_require__(96), DOMPropertyOperations = __webpack_require__(116), ReactBrowserComponentMixin = __webpack_require__(55), ReactComponent = __webpack_require__(119), ReactBrowserEventEmitter = __webpack_require__(118), ReactMount = __webpack_require__(59), ReactMultiChild = __webpack_require__(291), ReactPerf = __webpack_require__(77), escapeTextForBrowser = __webpack_require__(217), invariant = __webpack_require__(4), keyOf = __webpack_require__(85), merge = __webpack_require__(46), mixInto = __webpack_require__(60), deleteListener = ReactBrowserEventEmitter.deleteListener, listenTo = ReactBrowserEventEmitter.listenTo, registrationNameModules = ReactBrowserEventEmitter.registrationNameModules, CONTENT_TYPES = {
  16057.         string: !0,
  16058.         number: !0
  16059.     }, STYLE = keyOf({
  16060.         style: null
  16061.     }), ELEMENT_NODE_TYPE = 1;
  16062.     ReactDOMComponent.Mixin = {
  16063.         mountComponent: ReactPerf.measure("ReactDOMComponent", "mountComponent", function(rootID, transaction, mountDepth) {
  16064.             ReactComponent.Mixin.mountComponent.call(this, rootID, transaction, mountDepth);
  16065.             assertValidProps(this.props);
  16066.             return this._createOpenTagMarkupAndPutListeners(transaction) + this._createContentMarkup(transaction) + this._tagClose;
  16067.         }),
  16068.         _createOpenTagMarkupAndPutListeners: function(transaction) {
  16069.             var props = this.props, ret = this._tagOpen;
  16070.             for (var propKey in props) if (props.hasOwnProperty(propKey)) {
  16071.                 var propValue = props[propKey];
  16072.                 if (null != propValue) if (registrationNameModules.hasOwnProperty(propKey)) putListener(this._rootNodeID, propKey, propValue, transaction); else {
  16073.                     if (propKey === STYLE) {
  16074.                         if (propValue) propValue = props.style = merge(props.style);
  16075.                         propValue = CSSPropertyOperations.createMarkupForStyles(propValue);
  16076.                     }
  16077.                     var markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);
  16078.                     if (markup) ret += " " + markup;
  16079.                 }
  16080.             }
  16081.             if (transaction.renderToStaticMarkup) return ret + ">"; else return ret + " " + DOMPropertyOperations.createMarkupForID(this._rootNodeID) + ">";
  16082.         },
  16083.         _createContentMarkup: function(transaction) {
  16084.             var innerHTML = this.props.dangerouslySetInnerHTML;
  16085.             if (null != innerHTML) {
  16086.                 if (null != innerHTML.__html) return innerHTML.__html;
  16087.             } else {
  16088.                 var contentToUse = CONTENT_TYPES[typeof this.props.children] ? this.props.children : null, childrenToUse = null != contentToUse ? null : this.props.children;
  16089.                 if (null != contentToUse) return escapeTextForBrowser(contentToUse); else if (null != childrenToUse) {
  16090.                     var mountImages = this.mountChildren(childrenToUse, transaction);
  16091.                     return mountImages.join("");
  16092.                 }
  16093.             }
  16094.             return "";
  16095.         },
  16096.         receiveComponent: function(nextDescriptor, transaction) {
  16097.             if (nextDescriptor !== this._descriptor || null == nextDescriptor._owner) ReactComponent.Mixin.receiveComponent.call(this, nextDescriptor, transaction);
  16098.         },
  16099.         updateComponent: ReactPerf.measure("ReactDOMComponent", "updateComponent", function(transaction, prevDescriptor) {
  16100.             assertValidProps(this._descriptor.props);
  16101.             ReactComponent.Mixin.updateComponent.call(this, transaction, prevDescriptor);
  16102.             this._updateDOMProperties(prevDescriptor.props, transaction);
  16103.             this._updateDOMChildren(prevDescriptor.props, transaction);
  16104.         }),
  16105.         _updateDOMProperties: function(lastProps, transaction) {
  16106.             var propKey, styleName, styleUpdates, nextProps = this.props;
  16107.             for (propKey in lastProps) if (!nextProps.hasOwnProperty(propKey) && lastProps.hasOwnProperty(propKey)) if (propKey === STYLE) {
  16108.                 var lastStyle = lastProps[propKey];
  16109.                 for (styleName in lastStyle) if (lastStyle.hasOwnProperty(styleName)) {
  16110.                     styleUpdates = styleUpdates || {};
  16111.                     styleUpdates[styleName] = "";
  16112.                 }
  16113.             } else if (registrationNameModules.hasOwnProperty(propKey)) deleteListener(this._rootNodeID, propKey); else if (DOMProperty.isStandardName[propKey] || DOMProperty.isCustomAttribute(propKey)) ReactComponent.BackendIDOperations.deletePropertyByID(this._rootNodeID, propKey);
  16114.             for (propKey in nextProps) {
  16115.                 var nextProp = nextProps[propKey], lastProp = lastProps[propKey];
  16116.                 if (nextProps.hasOwnProperty(propKey) && nextProp !== lastProp) if (propKey === STYLE) {
  16117.                     if (nextProp) nextProp = nextProps.style = merge(nextProp);
  16118.                     if (lastProp) {
  16119.                         for (styleName in lastProp) if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {
  16120.                             styleUpdates = styleUpdates || {};
  16121.                             styleUpdates[styleName] = "";
  16122.                         }
  16123.                         for (styleName in nextProp) if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {
  16124.                             styleUpdates = styleUpdates || {};
  16125.                             styleUpdates[styleName] = nextProp[styleName];
  16126.                         }
  16127.                     } else styleUpdates = nextProp;
  16128.                 } else if (registrationNameModules.hasOwnProperty(propKey)) putListener(this._rootNodeID, propKey, nextProp, transaction); else if (DOMProperty.isStandardName[propKey] || DOMProperty.isCustomAttribute(propKey)) ReactComponent.BackendIDOperations.updatePropertyByID(this._rootNodeID, propKey, nextProp);
  16129.             }
  16130.             if (styleUpdates) ReactComponent.BackendIDOperations.updateStylesByID(this._rootNodeID, styleUpdates);
  16131.         },
  16132.         _updateDOMChildren: function(lastProps, transaction) {
  16133.             var nextProps = this.props, lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null, nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null, lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html, nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html, lastChildren = null != lastContent ? null : lastProps.children, nextChildren = null != nextContent ? null : nextProps.children, lastHasContentOrHtml = null != lastContent || null != lastHtml, nextHasContentOrHtml = null != nextContent || null != nextHtml;
  16134.             if (null != lastChildren && null == nextChildren) this.updateChildren(null, transaction); else if (lastHasContentOrHtml && !nextHasContentOrHtml) this.updateTextContent("");
  16135.             if (null != nextContent) {
  16136.                 if (lastContent !== nextContent) this.updateTextContent("" + nextContent);
  16137.             } else if (null != nextHtml) {
  16138.                 if (lastHtml !== nextHtml) ReactComponent.BackendIDOperations.updateInnerHTMLByID(this._rootNodeID, nextHtml);
  16139.             } else if (null != nextChildren) this.updateChildren(nextChildren, transaction);
  16140.         },
  16141.         unmountComponent: function() {
  16142.             this.unmountChildren();
  16143.             ReactBrowserEventEmitter.deleteAllListeners(this._rootNodeID);
  16144.             ReactComponent.Mixin.unmountComponent.call(this);
  16145.         }
  16146.     };
  16147.     mixInto(ReactDOMComponent, ReactComponent.Mixin);
  16148.     mixInto(ReactDOMComponent, ReactDOMComponent.Mixin);
  16149.     mixInto(ReactDOMComponent, ReactMultiChild.Mixin);
  16150.     mixInto(ReactDOMComponent, ReactBrowserComponentMixin);
  16151.     module.exports = ReactDOMComponent;
  16152. }, function(module, exports, __webpack_require__) {
  16153.     "use strict";
  16154.     function getCurrentOwnerDisplayName() {
  16155.         var current = ReactCurrentOwner.current;
  16156.         return current && current.constructor.displayName || undefined;
  16157.     }
  16158.     function validateExplicitKey(component, parentType) {
  16159.         if (!component._store.validated && null == component.props.key) {
  16160.             component._store.validated = !0;
  16161.             warnAndMonitorForKeyUse("react_key_warning", 'Each child in an array should have a unique "key" prop.', component, parentType);
  16162.         }
  16163.     }
  16164.     function validatePropertyKey(name, component, parentType) {
  16165.         if (NUMERIC_PROPERTY_REGEX.test(name)) warnAndMonitorForKeyUse("react_numeric_key_warning", "Child objects should have non-numeric keys so ordering is preserved.", component, parentType);
  16166.     }
  16167.     function warnAndMonitorForKeyUse(warningID, message, component, parentType) {
  16168.         var ownerName = getCurrentOwnerDisplayName(), parentName = parentType.displayName, useName = ownerName || parentName, memoizer = ownerHasKeyUseWarning[warningID];
  16169.         if (!memoizer.hasOwnProperty(useName)) {
  16170.             memoizer[useName] = !0;
  16171.             message += ownerName ? " Check the render method of " + ownerName + "." : " Check the renderComponent call using <" + parentName + ">.";
  16172.             var childOwnerName = null;
  16173.             if (component._owner && component._owner !== ReactCurrentOwner.current) {
  16174.                 childOwnerName = component._owner.constructor.displayName;
  16175.                 message += " It was passed a child from " + childOwnerName + ".";
  16176.             }
  16177.             message += " See http://fb.me/react-warning-keys for more information.";
  16178.             monitorCodeUse(warningID, {
  16179.                 component: useName,
  16180.                 componentOwner: childOwnerName
  16181.             });
  16182.             console.warn(message);
  16183.         }
  16184.     }
  16185.     function monitorUseOfObjectMap() {
  16186.         var currentName = getCurrentOwnerDisplayName() || "";
  16187.         if (!ownerHasMonitoredObjectMap.hasOwnProperty(currentName)) {
  16188.             ownerHasMonitoredObjectMap[currentName] = !0;
  16189.             monitorCodeUse("react_object_map_children");
  16190.         }
  16191.     }
  16192.     function validateChildKeys(component, parentType) {
  16193.         if (Array.isArray(component)) for (var i = 0; i < component.length; i++) {
  16194.             var child = component[i];
  16195.             if (ReactDescriptor.isValidDescriptor(child)) validateExplicitKey(child, parentType);
  16196.         } else if (ReactDescriptor.isValidDescriptor(component)) component._store.validated = !0; else if (component && "object" == typeof component) {
  16197.             monitorUseOfObjectMap();
  16198.             for (var name in component) validatePropertyKey(name, component[name], parentType);
  16199.         }
  16200.     }
  16201.     function checkPropTypes(componentName, propTypes, props, location) {
  16202.         for (var propName in propTypes) if (propTypes.hasOwnProperty(propName)) {
  16203.             var error;
  16204.             try {
  16205.                 error = propTypes[propName](props, propName, componentName, location);
  16206.             } catch (ex) {
  16207.                 error = ex;
  16208.             }
  16209.             if (error instanceof Error && !(error.message in loggedTypeFailures)) {
  16210.                 loggedTypeFailures[error.message] = !0;
  16211.                 monitorCodeUse("react_failed_descriptor_type_check", {
  16212.                     message: error.message
  16213.                 });
  16214.             }
  16215.         }
  16216.     }
  16217.     var ReactDescriptor = __webpack_require__(58), ReactPropTypeLocations = __webpack_require__(295), ReactCurrentOwner = __webpack_require__(120), monitorCodeUse = __webpack_require__(224), ownerHasKeyUseWarning = {
  16218.         react_key_warning: {},
  16219.         react_numeric_key_warning: {}
  16220.     }, ownerHasMonitoredObjectMap = {}, loggedTypeFailures = {}, NUMERIC_PROPERTY_REGEX = /^\d+$/, ReactDescriptorValidator = {
  16221.         createFactory: function(factory, propTypes, contextTypes) {
  16222.             var validatedFactory = function(props, children) {
  16223.                 for (var descriptor = factory.apply(this, arguments), i = 1; i < arguments.length; i++) validateChildKeys(arguments[i], descriptor.type);
  16224.                 var name = descriptor.type.displayName;
  16225.                 if (propTypes) checkPropTypes(name, propTypes, descriptor.props, ReactPropTypeLocations.prop);
  16226.                 if (contextTypes) checkPropTypes(name, contextTypes, descriptor._context, ReactPropTypeLocations.context);
  16227.                 return descriptor;
  16228.             };
  16229.             validatedFactory.prototype = factory.prototype;
  16230.             validatedFactory.type = factory.type;
  16231.             for (var key in factory) if (factory.hasOwnProperty(key)) validatedFactory[key] = factory[key];
  16232.             return validatedFactory;
  16233.         }
  16234.     };
  16235.     module.exports = ReactDescriptorValidator;
  16236. }, function(module, exports, __webpack_require__) {
  16237.     "use strict";
  16238.     var adler32 = __webpack_require__(629), ReactMarkupChecksum = {
  16239.         CHECKSUM_ATTR_NAME: "data-react-checksum",
  16240.         addChecksumToMarkup: function(markup) {
  16241.             var checksum = adler32(markup);
  16242.             return markup.replace(">", " " + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '="' + checksum + '">');
  16243.         },
  16244.         canReuseMarkup: function(markup, element) {
  16245.             var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);
  16246.             existingChecksum = existingChecksum && parseInt(existingChecksum, 10);
  16247.             return adler32(markup) === existingChecksum;
  16248.         }
  16249.     };
  16250.     module.exports = ReactMarkupChecksum;
  16251. }, function(module, exports, __webpack_require__) {
  16252.     "use strict";
  16253.     function enqueueMarkup(parentID, markup, toIndex) {
  16254.         updateQueue.push({
  16255.             parentID: parentID,
  16256.             parentNode: null,
  16257.             type: ReactMultiChildUpdateTypes.INSERT_MARKUP,
  16258.             markupIndex: markupQueue.push(markup) - 1,
  16259.             textContent: null,
  16260.             fromIndex: null,
  16261.             toIndex: toIndex
  16262.         });
  16263.     }
  16264.     function enqueueMove(parentID, fromIndex, toIndex) {
  16265.         updateQueue.push({
  16266.             parentID: parentID,
  16267.             parentNode: null,
  16268.             type: ReactMultiChildUpdateTypes.MOVE_EXISTING,
  16269.             markupIndex: null,
  16270.             textContent: null,
  16271.             fromIndex: fromIndex,
  16272.             toIndex: toIndex
  16273.         });
  16274.     }
  16275.     function enqueueRemove(parentID, fromIndex) {
  16276.         updateQueue.push({
  16277.             parentID: parentID,
  16278.             parentNode: null,
  16279.             type: ReactMultiChildUpdateTypes.REMOVE_NODE,
  16280.             markupIndex: null,
  16281.             textContent: null,
  16282.             fromIndex: fromIndex,
  16283.             toIndex: null
  16284.         });
  16285.     }
  16286.     function enqueueTextContent(parentID, textContent) {
  16287.         updateQueue.push({
  16288.             parentID: parentID,
  16289.             parentNode: null,
  16290.             type: ReactMultiChildUpdateTypes.TEXT_CONTENT,
  16291.             markupIndex: null,
  16292.             textContent: textContent,
  16293.             fromIndex: null,
  16294.             toIndex: null
  16295.         });
  16296.     }
  16297.     function processQueue() {
  16298.         if (updateQueue.length) {
  16299.             ReactComponent.BackendIDOperations.dangerouslyProcessChildrenUpdates(updateQueue, markupQueue);
  16300.             clearQueue();
  16301.         }
  16302.     }
  16303.     function clearQueue() {
  16304.         updateQueue.length = 0;
  16305.         markupQueue.length = 0;
  16306.     }
  16307.     var ReactComponent = __webpack_require__(119), ReactMultiChildUpdateTypes = __webpack_require__(292), flattenChildren = __webpack_require__(636), instantiateReactComponent = __webpack_require__(164), shouldUpdateReactComponent = __webpack_require__(225), updateDepth = 0, updateQueue = [], markupQueue = [], ReactMultiChild = {
  16308.         Mixin: {
  16309.             mountChildren: function(nestedChildren, transaction) {
  16310.                 var children = flattenChildren(nestedChildren), mountImages = [], index = 0;
  16311.                 this._renderedChildren = children;
  16312.                 for (var name in children) {
  16313.                     var child = children[name];
  16314.                     if (children.hasOwnProperty(name)) {
  16315.                         var childInstance = instantiateReactComponent(child);
  16316.                         children[name] = childInstance;
  16317.                         var rootID = this._rootNodeID + name, mountImage = childInstance.mountComponent(rootID, transaction, this._mountDepth + 1);
  16318.                         childInstance._mountIndex = index;
  16319.                         mountImages.push(mountImage);
  16320.                         index++;
  16321.                     }
  16322.                 }
  16323.                 return mountImages;
  16324.             },
  16325.             updateTextContent: function(nextContent) {
  16326.                 updateDepth++;
  16327.                 var errorThrown = !0;
  16328.                 try {
  16329.                     var prevChildren = this._renderedChildren;
  16330.                     for (var name in prevChildren) if (prevChildren.hasOwnProperty(name)) this._unmountChildByName(prevChildren[name], name);
  16331.                     this.setTextContent(nextContent);
  16332.                     errorThrown = !1;
  16333.                 } finally {
  16334.                     updateDepth--;
  16335.                     if (!updateDepth) errorThrown ? clearQueue() : processQueue();
  16336.                 }
  16337.             },
  16338.             updateChildren: function(nextNestedChildren, transaction) {
  16339.                 updateDepth++;
  16340.                 var errorThrown = !0;
  16341.                 try {
  16342.                     this._updateChildren(nextNestedChildren, transaction);
  16343.                     errorThrown = !1;
  16344.                 } finally {
  16345.                     updateDepth--;
  16346.                     if (!updateDepth) errorThrown ? clearQueue() : processQueue();
  16347.                 }
  16348.             },
  16349.             _updateChildren: function(nextNestedChildren, transaction) {
  16350.                 var nextChildren = flattenChildren(nextNestedChildren), prevChildren = this._renderedChildren;
  16351.                 if (nextChildren || prevChildren) {
  16352.                     var name, lastIndex = 0, nextIndex = 0;
  16353.                     for (name in nextChildren) if (nextChildren.hasOwnProperty(name)) {
  16354.                         var prevChild = prevChildren && prevChildren[name], prevDescriptor = prevChild && prevChild._descriptor, nextDescriptor = nextChildren[name];
  16355.                         if (shouldUpdateReactComponent(prevDescriptor, nextDescriptor)) {
  16356.                             this.moveChild(prevChild, nextIndex, lastIndex);
  16357.                             lastIndex = Math.max(prevChild._mountIndex, lastIndex);
  16358.                             prevChild.receiveComponent(nextDescriptor, transaction);
  16359.                             prevChild._mountIndex = nextIndex;
  16360.                         } else {
  16361.                             if (prevChild) {
  16362.                                 lastIndex = Math.max(prevChild._mountIndex, lastIndex);
  16363.                                 this._unmountChildByName(prevChild, name);
  16364.                             }
  16365.                             var nextChildInstance = instantiateReactComponent(nextDescriptor);
  16366.                             this._mountChildByNameAtIndex(nextChildInstance, name, nextIndex, transaction);
  16367.                         }
  16368.                         nextIndex++;
  16369.                     }
  16370.                     for (name in prevChildren) if (prevChildren.hasOwnProperty(name) && (!nextChildren || !nextChildren[name])) this._unmountChildByName(prevChildren[name], name);
  16371.                 }
  16372.             },
  16373.             unmountChildren: function() {
  16374.                 var renderedChildren = this._renderedChildren;
  16375.                 for (var name in renderedChildren) {
  16376.                     var renderedChild = renderedChildren[name];
  16377.                     if (renderedChild.unmountComponent) renderedChild.unmountComponent();
  16378.                 }
  16379.                 this._renderedChildren = null;
  16380.             },
  16381.             moveChild: function(child, toIndex, lastIndex) {
  16382.                 if (child._mountIndex < lastIndex) enqueueMove(this._rootNodeID, child._mountIndex, toIndex);
  16383.             },
  16384.             createChild: function(child, mountImage) {
  16385.                 enqueueMarkup(this._rootNodeID, mountImage, child._mountIndex);
  16386.             },
  16387.             removeChild: function(child) {
  16388.                 enqueueRemove(this._rootNodeID, child._mountIndex);
  16389.             },
  16390.             setTextContent: function(textContent) {
  16391.                 enqueueTextContent(this._rootNodeID, textContent);
  16392.             },
  16393.             _mountChildByNameAtIndex: function(child, name, index, transaction) {
  16394.                 var rootID = this._rootNodeID + name, mountImage = child.mountComponent(rootID, transaction, this._mountDepth + 1);
  16395.                 child._mountIndex = index;
  16396.                 this.createChild(child, mountImage);
  16397.                 this._renderedChildren = this._renderedChildren || {};
  16398.                 this._renderedChildren[name] = child;
  16399.             },
  16400.             _unmountChildByName: function(child, name) {
  16401.                 this.removeChild(child);
  16402.                 child._mountIndex = null;
  16403.                 child.unmountComponent();
  16404.                 delete this._renderedChildren[name];
  16405.             }
  16406.         }
  16407.     };
  16408.     module.exports = ReactMultiChild;
  16409. }, function(module, exports, __webpack_require__) {
  16410.     "use strict";
  16411.     var keyMirror = __webpack_require__(98), ReactMultiChildUpdateTypes = keyMirror({
  16412.         INSERT_MARKUP: null,
  16413.         MOVE_EXISTING: null,
  16414.         REMOVE_NODE: null,
  16415.         TEXT_CONTENT: null
  16416.     });
  16417.     module.exports = ReactMultiChildUpdateTypes;
  16418. }, function(module, exports, __webpack_require__) {
  16419.     "use strict";
  16420.     var emptyObject = __webpack_require__(635), invariant = __webpack_require__(4), ReactOwner = {
  16421.         isValidOwner: function(object) {
  16422.             return !(!object || "function" != typeof object.attachRef || "function" != typeof object.detachRef);
  16423.         },
  16424.         addComponentAsRefTo: function(component, ref, owner) {
  16425.             !0 ? invariant(ReactOwner.isValidOwner(owner), "addComponentAsRefTo(...): Only a ReactOwner can have refs. This usually means that you're trying to add a ref to a component that doesn't have an owner (that is, was not created inside of another component's `render` method). Try rendering this component inside of a new top-level component which will hold the ref.") : invariant(ReactOwner.isValidOwner(owner));
  16426.             owner.attachRef(ref, component);
  16427.         },
  16428.         removeComponentAsRefFrom: function(component, ref, owner) {
  16429.             !0 ? invariant(ReactOwner.isValidOwner(owner), "removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This usually means that you're trying to remove a ref to a component that doesn't have an owner (that is, was not created inside of another component's `render` method). Try rendering this component inside of a new top-level component which will hold the ref.") : invariant(ReactOwner.isValidOwner(owner));
  16430.             if (owner.refs[ref] === component) owner.detachRef(ref);
  16431.         },
  16432.         Mixin: {
  16433.             construct: function() {
  16434.                 this.refs = emptyObject;
  16435.             },
  16436.             attachRef: function(ref, component) {
  16437.                 !0 ? invariant(component.isOwnedBy(this), "attachRef(%s, ...): Only a component's owner can store a ref to it.", ref) : invariant(component.isOwnedBy(this));
  16438.                 (this.refs === emptyObject ? this.refs = {} : this.refs)[ref] = component;
  16439.             },
  16440.             detachRef: function(ref) {
  16441.                 delete this.refs[ref];
  16442.             }
  16443.         }
  16444.     };
  16445.     module.exports = ReactOwner;
  16446. }, function(module, exports, __webpack_require__) {
  16447.     "use strict";
  16448.     var ReactPropTypeLocationNames = {};
  16449.     if (!0) ReactPropTypeLocationNames = {
  16450.         prop: "prop",
  16451.         context: "context",
  16452.         childContext: "child context"
  16453.     };
  16454.     module.exports = ReactPropTypeLocationNames;
  16455. }, function(module, exports, __webpack_require__) {
  16456.     "use strict";
  16457.     var keyMirror = __webpack_require__(98), ReactPropTypeLocations = keyMirror({
  16458.         prop: null,
  16459.         context: null,
  16460.         childContext: null
  16461.     });
  16462.     module.exports = ReactPropTypeLocations;
  16463. }, function(module, exports, __webpack_require__) {
  16464.     "use strict";
  16465.     function createChainableTypeChecker(validate) {
  16466.         function checkType(isRequired, props, propName, componentName, location) {
  16467.             componentName = componentName || ANONYMOUS;
  16468.             if (null == props[propName]) {
  16469.                 var locationName = ReactPropTypeLocationNames[location];
  16470.                 if (isRequired) return new Error("Required " + locationName + " `" + propName + "` was not specified in `" + componentName + "`.");
  16471.             } else return validate(props, propName, componentName, location);
  16472.         }
  16473.         var chainedCheckType = checkType.bind(null, !1);
  16474.         chainedCheckType.isRequired = checkType.bind(null, !0);
  16475.         return chainedCheckType;
  16476.     }
  16477.     function createPrimitiveTypeChecker(expectedType) {
  16478.         function validate(props, propName, componentName, location) {
  16479.             var propValue = props[propName];
  16480.             if (getPropType(propValue) !== expectedType) {
  16481.                 var locationName = ReactPropTypeLocationNames[location], preciseType = getPreciseType(propValue);
  16482.                 return new Error("Invalid " + locationName + " `" + propName + "` of type `" + preciseType + "` supplied to `" + componentName + "`, expected `" + expectedType + "`.");
  16483.             }
  16484.         }
  16485.         return createChainableTypeChecker(validate);
  16486.     }
  16487.     function createArrayOfTypeChecker(typeChecker) {
  16488.         function validate(props, propName, componentName, location) {
  16489.             var propValue = props[propName];
  16490.             if (!Array.isArray(propValue)) {
  16491.                 var locationName = ReactPropTypeLocationNames[location], propType = getPropType(propValue);
  16492.                 return new Error("Invalid " + locationName + " `" + propName + "` of type `" + propType + "` supplied to `" + componentName + "`, expected an array.");
  16493.             }
  16494.             for (var i = 0; i < propValue.length; i++) {
  16495.                 var error = typeChecker(propValue, i, componentName, location);
  16496.                 if (error instanceof Error) return error;
  16497.             }
  16498.         }
  16499.         return createChainableTypeChecker(validate);
  16500.     }
  16501.     function createInstanceTypeChecker(expectedClass) {
  16502.         function validate(props, propName, componentName, location) {
  16503.             if (!(props[propName] instanceof expectedClass)) {
  16504.                 var locationName = ReactPropTypeLocationNames[location], expectedClassName = expectedClass.name || ANONYMOUS;
  16505.                 return new Error("Invalid " + locationName + " `" + propName + "` supplied to `" + componentName + "`, expected instance of `" + expectedClassName + "`.");
  16506.             }
  16507.         }
  16508.         return createChainableTypeChecker(validate);
  16509.     }
  16510.     function createEnumTypeChecker(expectedValues) {
  16511.         function validate(props, propName, componentName, location) {
  16512.             for (var propValue = props[propName], i = 0; i < expectedValues.length; i++) if (propValue === expectedValues[i]) return;
  16513.             var locationName = ReactPropTypeLocationNames[location], valuesString = JSON.stringify(expectedValues);
  16514.             return new Error("Invalid " + locationName + " `" + propName + "` of value `" + propValue + "` supplied to `" + componentName + "`, expected one of " + valuesString + ".");
  16515.         }
  16516.         return createChainableTypeChecker(validate);
  16517.     }
  16518.     function createObjectOfTypeChecker(typeChecker) {
  16519.         function validate(props, propName, componentName, location) {
  16520.             var propValue = props[propName], propType = getPropType(propValue);
  16521.             if ("object" !== propType) {
  16522.                 var locationName = ReactPropTypeLocationNames[location];
  16523.                 return new Error("Invalid " + locationName + " `" + propName + "` of type `" + propType + "` supplied to `" + componentName + "`, expected an object.");
  16524.             }
  16525.             for (var key in propValue) if (propValue.hasOwnProperty(key)) {
  16526.                 var error = typeChecker(propValue, key, componentName, location);
  16527.                 if (error instanceof Error) return error;
  16528.             }
  16529.         }
  16530.         return createChainableTypeChecker(validate);
  16531.     }
  16532.     function createUnionTypeChecker(arrayOfTypeCheckers) {
  16533.         function validate(props, propName, componentName, location) {
  16534.             for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
  16535.                 if (null == (0, arrayOfTypeCheckers[i])(props, propName, componentName, location)) return;
  16536.             }
  16537.             var locationName = ReactPropTypeLocationNames[location];
  16538.             return new Error("Invalid " + locationName + " `" + propName + "` supplied to `" + componentName + "`.");
  16539.         }
  16540.         return createChainableTypeChecker(validate);
  16541.     }
  16542.     function createShapeTypeChecker(shapeTypes) {
  16543.         function validate(props, propName, componentName, location) {
  16544.             var propValue = props[propName], propType = getPropType(propValue);
  16545.             if ("object" !== propType) {
  16546.                 var locationName = ReactPropTypeLocationNames[location];
  16547.                 return new Error("Invalid " + locationName + " `" + propName + "` of type `" + propType + "` supplied to `" + componentName + "`, expected `object`.");
  16548.             }
  16549.             for (var key in shapeTypes) {
  16550.                 var checker = shapeTypes[key];
  16551.                 if (checker) {
  16552.                     var error = checker(propValue, key, componentName, location);
  16553.                     if (error) return error;
  16554.                 }
  16555.             }
  16556.         }
  16557.         return createChainableTypeChecker(validate, "expected `object`");
  16558.     }
  16559.     function isRenderable(propValue) {
  16560.         switch (typeof propValue) {
  16561.           case "number":
  16562.           case "string":
  16563.             return !0;
  16564.  
  16565.           case "boolean":
  16566.             return !propValue;
  16567.  
  16568.           case "object":
  16569.             if (Array.isArray(propValue)) return propValue.every(isRenderable);
  16570.             if (ReactDescriptor.isValidDescriptor(propValue)) return !0;
  16571.             for (var k in propValue) if (!isRenderable(propValue[k])) return !1;
  16572.             return !0;
  16573.  
  16574.           default:
  16575.             return !1;
  16576.         }
  16577.     }
  16578.     function getPropType(propValue) {
  16579.         var propType = typeof propValue;
  16580.         if (Array.isArray(propValue)) return "array";
  16581.         if (propValue instanceof RegExp) return "object"; else return propType;
  16582.     }
  16583.     function getPreciseType(propValue) {
  16584.         var propType = getPropType(propValue);
  16585.         if ("object" === propType) if (propValue instanceof Date) return "date"; else if (propValue instanceof RegExp) return "regexp";
  16586.         return propType;
  16587.     }
  16588.     var ReactDescriptor = __webpack_require__(58), ReactPropTypeLocationNames = __webpack_require__(294), emptyFunction = __webpack_require__(78), ANONYMOUS = "<<anonymous>>", ReactPropTypes = {
  16589.         array: createPrimitiveTypeChecker("array"),
  16590.         bool: createPrimitiveTypeChecker("boolean"),
  16591.         func: createPrimitiveTypeChecker("function"),
  16592.         number: createPrimitiveTypeChecker("number"),
  16593.         object: createPrimitiveTypeChecker("object"),
  16594.         string: createPrimitiveTypeChecker("string"),
  16595.         any: function() {
  16596.             return createChainableTypeChecker(emptyFunction.thatReturns());
  16597.         }(),
  16598.         arrayOf: createArrayOfTypeChecker,
  16599.         component: function() {
  16600.             function validate(props, propName, componentName, location) {
  16601.                 if (!ReactDescriptor.isValidDescriptor(props[propName])) {
  16602.                     var locationName = ReactPropTypeLocationNames[location];
  16603.                     return new Error("Invalid " + locationName + " `" + propName + "` supplied to `" + componentName + "`, expected a React component.");
  16604.                 }
  16605.             }
  16606.             return createChainableTypeChecker(validate);
  16607.         }(),
  16608.         instanceOf: createInstanceTypeChecker,
  16609.         objectOf: createObjectOfTypeChecker,
  16610.         oneOf: createEnumTypeChecker,
  16611.         oneOfType: createUnionTypeChecker,
  16612.         renderable: function() {
  16613.             function validate(props, propName, componentName, location) {
  16614.                 if (!isRenderable(props[propName])) {
  16615.                     var locationName = ReactPropTypeLocationNames[location];
  16616.                     return new Error("Invalid " + locationName + " `" + propName + "` supplied to `" + componentName + "`, expected a renderable prop.");
  16617.                 }
  16618.             }
  16619.             return createChainableTypeChecker(validate);
  16620.         }(),
  16621.         shape: createShapeTypeChecker
  16622.     };
  16623.     module.exports = ReactPropTypes;
  16624. }, function(module, exports, __webpack_require__) {
  16625.     "use strict";
  16626.     function ReactPutListenerQueue() {
  16627.         this.listenersToPut = [];
  16628.     }
  16629.     var PooledClass = __webpack_require__(84), ReactBrowserEventEmitter = __webpack_require__(118);
  16630.     __webpack_require__(60)(ReactPutListenerQueue, {
  16631.         enqueuePutListener: function(rootNodeID, propKey, propValue) {
  16632.             this.listenersToPut.push({
  16633.                 rootNodeID: rootNodeID,
  16634.                 propKey: propKey,
  16635.                 propValue: propValue
  16636.             });
  16637.         },
  16638.         putListeners: function() {
  16639.             for (var i = 0; i < this.listenersToPut.length; i++) {
  16640.                 var listenerToPut = this.listenersToPut[i];
  16641.                 ReactBrowserEventEmitter.putListener(listenerToPut.rootNodeID, listenerToPut.propKey, listenerToPut.propValue);
  16642.             }
  16643.         },
  16644.         reset: function() {
  16645.             this.listenersToPut.length = 0;
  16646.         },
  16647.         destructor: function() {
  16648.             this.reset();
  16649.         }
  16650.     });
  16651.     PooledClass.addPoolingTo(ReactPutListenerQueue);
  16652.     module.exports = ReactPutListenerQueue;
  16653. }, function(module, exports, __webpack_require__) {
  16654.     "use strict";
  16655.     var ReactRootIndexInjection = {
  16656.         injectCreateReactRootIndex: function(_createReactRootIndex) {
  16657.             ReactRootIndex.createReactRootIndex = _createReactRootIndex;
  16658.         }
  16659.     }, ReactRootIndex = {
  16660.         createReactRootIndex: null,
  16661.         injection: ReactRootIndexInjection
  16662.     };
  16663.     module.exports = ReactRootIndex;
  16664. }, function(module, exports, __webpack_require__) {
  16665.     "use strict";
  16666.     var DOMPropertyOperations = __webpack_require__(116), ReactBrowserComponentMixin = __webpack_require__(55), ReactComponent = __webpack_require__(119), ReactDescriptor = __webpack_require__(58), escapeTextForBrowser = __webpack_require__(217), mixInto = __webpack_require__(60), ReactTextComponent = function(descriptor) {
  16667.         this.construct(descriptor);
  16668.     };
  16669.     mixInto(ReactTextComponent, ReactComponent.Mixin);
  16670.     mixInto(ReactTextComponent, ReactBrowserComponentMixin);
  16671.     mixInto(ReactTextComponent, {
  16672.         mountComponent: function(rootID, transaction, mountDepth) {
  16673.             ReactComponent.Mixin.mountComponent.call(this, rootID, transaction, mountDepth);
  16674.             var escapedText = escapeTextForBrowser(this.props);
  16675.             if (transaction.renderToStaticMarkup) return escapedText; else return "<span " + DOMPropertyOperations.createMarkupForID(rootID) + ">" + escapedText + "</span>";
  16676.         },
  16677.         receiveComponent: function(nextComponent, transaction) {
  16678.             var nextProps = nextComponent.props;
  16679.             if (nextProps !== this.props) {
  16680.                 this.props = nextProps;
  16681.                 ReactComponent.BackendIDOperations.updateTextContentByID(this._rootNodeID, nextProps);
  16682.             }
  16683.         }
  16684.     });
  16685.     module.exports = ReactDescriptor.createFactory(ReactTextComponent);
  16686. }, function(module, exports, __webpack_require__) {
  16687.     "use strict";
  16688.     var getUnboundedScrollPosition = __webpack_require__(306), ViewportMetrics = {
  16689.         currentScrollLeft: 0,
  16690.         currentScrollTop: 0,
  16691.         refreshScrollValues: function() {
  16692.             var scrollPosition = getUnboundedScrollPosition(window);
  16693.             ViewportMetrics.currentScrollLeft = scrollPosition.x;
  16694.             ViewportMetrics.currentScrollTop = scrollPosition.y;
  16695.         }
  16696.     };
  16697.     module.exports = ViewportMetrics;
  16698. }, function(module, exports, __webpack_require__) {
  16699.     function containsNode(outerNode, innerNode) {
  16700.         if (!outerNode || !innerNode) return !1; else if (outerNode === innerNode) return !0; else if (isTextNode(outerNode)) return !1; else if (isTextNode(innerNode)) return containsNode(outerNode, innerNode.parentNode); else if (outerNode.contains) return outerNode.contains(innerNode); else if (outerNode.compareDocumentPosition) return !!(16 & outerNode.compareDocumentPosition(innerNode)); else return !1;
  16701.     }
  16702.     var isTextNode = __webpack_require__(642);
  16703.     module.exports = containsNode;
  16704. }, function(module, exports, __webpack_require__) {
  16705.     "use strict";
  16706.     function focusNode(node) {
  16707.         if (!node.disabled) node.focus();
  16708.     }
  16709.     module.exports = focusNode;
  16710. }, function(module, exports) {
  16711.     function getActiveElement() {
  16712.         try {
  16713.             return document.activeElement || document.body;
  16714.         } catch (e) {
  16715.             return document.body;
  16716.         }
  16717.     }
  16718.     module.exports = getActiveElement;
  16719. }, function(module, exports, __webpack_require__) {
  16720.     function getMarkupWrap(nodeName) {
  16721.         !0 ? invariant(!!dummyNode, "Markup wrapping node not initialized") : invariant(!!dummyNode);
  16722.         if (!markupWrap.hasOwnProperty(nodeName)) nodeName = "*";
  16723.         if (!shouldWrap.hasOwnProperty(nodeName)) {
  16724.             if ("*" === nodeName) dummyNode.innerHTML = "<link />"; else dummyNode.innerHTML = "<" + nodeName + "></" + nodeName + ">";
  16725.             shouldWrap[nodeName] = !dummyNode.firstChild;
  16726.         }
  16727.         return shouldWrap[nodeName] ? markupWrap[nodeName] : null;
  16728.     }
  16729.     var ExecutionEnvironment = __webpack_require__(35), invariant = __webpack_require__(4), dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement("div") : null, shouldWrap = {
  16730.         circle: !0,
  16731.         defs: !0,
  16732.         ellipse: !0,
  16733.         g: !0,
  16734.         line: !0,
  16735.         linearGradient: !0,
  16736.         path: !0,
  16737.         polygon: !0,
  16738.         polyline: !0,
  16739.         radialGradient: !0,
  16740.         rect: !0,
  16741.         stop: !0,
  16742.         text: !0
  16743.     }, selectWrap = [ 1, '<select multiple="true">', "</select>" ], tableWrap = [ 1, "<table>", "</table>" ], trWrap = [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], svgWrap = [ 1, "<svg>", "</svg>" ], markupWrap = {
  16744.         "*": [ 1, "?<div>", "</div>" ],
  16745.         area: [ 1, "<map>", "</map>" ],
  16746.         col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
  16747.         legend: [ 1, "<fieldset>", "</fieldset>" ],
  16748.         param: [ 1, "<object>", "</object>" ],
  16749.         tr: [ 2, "<table><tbody>", "</tbody></table>" ],
  16750.         optgroup: selectWrap,
  16751.         option: selectWrap,
  16752.         caption: tableWrap,
  16753.         colgroup: tableWrap,
  16754.         tbody: tableWrap,
  16755.         tfoot: tableWrap,
  16756.         thead: tableWrap,
  16757.         td: trWrap,
  16758.         th: trWrap,
  16759.         circle: svgWrap,
  16760.         defs: svgWrap,
  16761.         ellipse: svgWrap,
  16762.         g: svgWrap,
  16763.         line: svgWrap,
  16764.         linearGradient: svgWrap,
  16765.         path: svgWrap,
  16766.         polygon: svgWrap,
  16767.         polyline: svgWrap,
  16768.         radialGradient: svgWrap,
  16769.         rect: svgWrap,
  16770.         stop: svgWrap,
  16771.         text: svgWrap
  16772.     };
  16773.     module.exports = getMarkupWrap;
  16774. }, function(module, exports, __webpack_require__) {
  16775.     "use strict";
  16776.     function getReactRootElementInContainer(container) {
  16777.         if (!container) return null;
  16778.         if (container.nodeType === DOC_NODE_TYPE) return container.documentElement; else return container.firstChild;
  16779.     }
  16780.     var DOC_NODE_TYPE = 9;
  16781.     module.exports = getReactRootElementInContainer;
  16782. }, function(module, exports, __webpack_require__) {
  16783.     "use strict";
  16784.     function getUnboundedScrollPosition(scrollable) {
  16785.         if (scrollable === window) return {
  16786.             x: window.pageXOffset || document.documentElement.scrollLeft,
  16787.             y: window.pageYOffset || document.documentElement.scrollTop
  16788.         }; else return {
  16789.             x: scrollable.scrollLeft,
  16790.             y: scrollable.scrollTop
  16791.         };
  16792.     }
  16793.     module.exports = getUnboundedScrollPosition;
  16794. }, function(module, exports, __webpack_require__) {
  16795.     "use strict";
  16796.     function isTextInputElement(elem) {
  16797.         return elem && ("INPUT" === elem.nodeName && supportedInputTypes[elem.type] || "TEXTAREA" === elem.nodeName);
  16798.     }
  16799.     var supportedInputTypes = {
  16800.         color: !0,
  16801.         date: !0,
  16802.         datetime: !0,
  16803.         "datetime-local": !0,
  16804.         email: !0,
  16805.         month: !0,
  16806.         number: !0,
  16807.         password: !0,
  16808.         range: !0,
  16809.         search: !0,
  16810.         tel: !0,
  16811.         text: !0,
  16812.         time: !0,
  16813.         url: !0,
  16814.         week: !0
  16815.     };
  16816.     module.exports = isTextInputElement;
  16817. }, function(module, exports, __webpack_require__) {
  16818.     "use strict";
  16819.     function mapObject(obj, func, context) {
  16820.         if (!obj) return null;
  16821.         var i = 0, ret = {};
  16822.         for (var key in obj) if (obj.hasOwnProperty(key)) ret[key] = func.call(context, obj[key], key, i++);
  16823.         return ret;
  16824.     }
  16825.     module.exports = mapObject;
  16826. }, function(module, exports, __webpack_require__) {
  16827.     "use strict";
  16828.     function memoizeStringOnly(callback) {
  16829.         var cache = {};
  16830.         return function(string) {
  16831.             if (cache.hasOwnProperty(string)) return cache[string]; else return cache[string] = callback.call(this, string);
  16832.         };
  16833.     }
  16834.     module.exports = memoizeStringOnly;
  16835. }, function(module, exports, __webpack_require__) {
  16836.     "use strict";
  16837.     var ExecutionEnvironment = __webpack_require__(35), setInnerHTML = function(node, html) {
  16838.         node.innerHTML = html;
  16839.     };
  16840.     if (ExecutionEnvironment.canUseDOM) {
  16841.         var testElement = document.createElement("div");
  16842.         testElement.innerHTML = " ";
  16843.         if ("" === testElement.innerHTML) setInnerHTML = function(node, html) {
  16844.             if (node.parentNode) node.parentNode.replaceChild(node, node);
  16845.             if (html.match(/^[ \r\n\t\f]/) || "<" === html.charAt(0) && (-1 !== html.indexOf("<noscript") || -1 !== html.indexOf("<script") || -1 !== html.indexOf("<style") || -1 !== html.indexOf("<meta") || -1 !== html.indexOf("<link"))) {
  16846.                 node.innerHTML = "\ufeff" + html;
  16847.                 var textNode = node.firstChild;
  16848.                 if (1 === textNode.data.length) node.removeChild(textNode); else textNode.deleteData(0, 1);
  16849.             } else node.innerHTML = html;
  16850.         };
  16851.     }
  16852.     module.exports = setInnerHTML;
  16853. }, function(module, exports, __webpack_require__) {
  16854.     "use strict";
  16855.     function shallowEqual(objA, objB) {
  16856.         if (objA === objB) return !0;
  16857.         var key;
  16858.         for (key in objA) if (objA.hasOwnProperty(key) && (!objB.hasOwnProperty(key) || objA[key] !== objB[key])) return !1;
  16859.         for (key in objB) if (objB.hasOwnProperty(key) && !objA.hasOwnProperty(key)) return !1;
  16860.         return !0;
  16861.     }
  16862.     module.exports = shallowEqual;
  16863. }, function(module, exports, __webpack_require__) {
  16864.     "use strict";
  16865.     function userProvidedKeyEscaper(match) {
  16866.         return userProvidedKeyEscaperLookup[match];
  16867.     }
  16868.     function getComponentKey(component, index) {
  16869.         if (component && component.props && null != component.props.key) return wrapUserProvidedKey(component.props.key); else return index.toString(36);
  16870.     }
  16871.     function escapeUserProvidedKey(text) {
  16872.         return ("" + text).replace(userProvidedKeyEscapeRegex, userProvidedKeyEscaper);
  16873.     }
  16874.     function wrapUserProvidedKey(key) {
  16875.         return "$" + escapeUserProvidedKey(key);
  16876.     }
  16877.     function traverseAllChildren(children, callback, traverseContext) {
  16878.         if (null == children) return 0; else return traverseAllChildrenImpl(children, "", 0, callback, traverseContext);
  16879.     }
  16880.     var ReactInstanceHandles = __webpack_require__(121), ReactTextComponent = __webpack_require__(299), invariant = __webpack_require__(4), SEPARATOR = ReactInstanceHandles.SEPARATOR, userProvidedKeyEscaperLookup = {
  16881.         "=": "=0",
  16882.         ".": "=1",
  16883.         ":": "=2"
  16884.     }, userProvidedKeyEscapeRegex = /[=.:]/g, traverseAllChildrenImpl = function(children, nameSoFar, indexSoFar, callback, traverseContext) {
  16885.         var subtreeCount = 0;
  16886.         if (Array.isArray(children)) for (var i = 0; i < children.length; i++) {
  16887.             var child = children[i], nextName = nameSoFar + (nameSoFar ? ":" : SEPARATOR) + getComponentKey(child, i), nextIndex = indexSoFar + subtreeCount;
  16888.             subtreeCount += traverseAllChildrenImpl(child, nextName, nextIndex, callback, traverseContext);
  16889.         } else {
  16890.             var type = typeof children, isOnlyChild = "" === nameSoFar, storageName = isOnlyChild ? SEPARATOR + getComponentKey(children, 0) : nameSoFar;
  16891.             if (null == children || "boolean" === type) {
  16892.                 callback(traverseContext, null, storageName, indexSoFar);
  16893.                 subtreeCount = 1;
  16894.             } else if (children.type && children.type.prototype && children.type.prototype.mountComponentIntoNode) {
  16895.                 callback(traverseContext, children, storageName, indexSoFar);
  16896.                 subtreeCount = 1;
  16897.             } else if ("object" === type) {
  16898.                 !0 ? invariant(!children || 1 !== children.nodeType, "traverseAllChildren(...): Encountered an invalid child; DOM elements are not valid children of React components.") : invariant(!children || 1 !== children.nodeType);
  16899.                 for (var key in children) if (children.hasOwnProperty(key)) subtreeCount += traverseAllChildrenImpl(children[key], nameSoFar + (nameSoFar ? ":" : SEPARATOR) + wrapUserProvidedKey(key) + ":" + getComponentKey(children[key], 0), indexSoFar + subtreeCount, callback, traverseContext);
  16900.             } else if ("string" === type) {
  16901.                 var normalizedText = ReactTextComponent(children);
  16902.                 callback(traverseContext, normalizedText, storageName, indexSoFar);
  16903.                 subtreeCount += 1;
  16904.             } else if ("number" === type) {
  16905.                 var normalizedNumber = ReactTextComponent("" + children);
  16906.                 callback(traverseContext, normalizedNumber, storageName, indexSoFar);
  16907.                 subtreeCount += 1;
  16908.             }
  16909.         }
  16910.         return subtreeCount;
  16911.     };
  16912.     module.exports = traverseAllChildren;
  16913. }, function(module, exports, __webpack_require__) {
  16914.     "use strict";
  16915.     function createStoreShape(PropTypes) {
  16916.         return PropTypes.shape({
  16917.             subscribe: PropTypes.func.isRequired,
  16918.             dispatch: PropTypes.func.isRequired,
  16919.             getState: PropTypes.func.isRequired
  16920.         });
  16921.     }
  16922.     exports.__esModule = !0;
  16923.     exports["default"] = createStoreShape;
  16924.     module.exports = exports["default"];
  16925. }, function(module, exports, __webpack_require__) {
  16926.     "use strict";
  16927.     function _interopRequireDefault(obj) {
  16928.         return obj && obj.__esModule ? obj : {
  16929.             "default": obj
  16930.         };
  16931.     }
  16932.     function _classCallCheck(instance, Constructor) {
  16933.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  16934.     }
  16935.     exports.__esModule = !0;
  16936.     var _invariant = __webpack_require__(204), _invariant2 = _interopRequireDefault(_invariant), _utilsIsPlainObject = __webpack_require__(658), _utilsIsPlainObject2 = _interopRequireDefault(_utilsIsPlainObject), ActionTypes = {
  16937.         INIT: "@@redux/INIT"
  16938.     };
  16939.     exports.ActionTypes = ActionTypes;
  16940.     var Store = function() {
  16941.         function Store(reducer, initialState) {
  16942.             _classCallCheck(this, Store);
  16943.             _invariant2["default"]("function" == typeof reducer, "Expected the reducer to be a function.");
  16944.             this.state = initialState;
  16945.             this.listeners = [];
  16946.             this.replaceReducer(reducer);
  16947.         }
  16948.         Store.prototype.getReducer = function() {
  16949.             return this.reducer;
  16950.         };
  16951.         Store.prototype.replaceReducer = function(nextReducer) {
  16952.             this.reducer = nextReducer;
  16953.             this.dispatch({
  16954.                 type: ActionTypes.INIT
  16955.             });
  16956.         };
  16957.         Store.prototype.dispatch = function(action) {
  16958.             _invariant2["default"](_utilsIsPlainObject2["default"](action), "Actions must be plain objects. Use custom middleware for async actions.");
  16959.             var reducer = this.reducer;
  16960.             this.state = reducer(this.state, action);
  16961.             this.listeners.forEach(function(listener) {
  16962.                 return listener();
  16963.             });
  16964.             return action;
  16965.         };
  16966.         Store.prototype.getState = function() {
  16967.             return this.state;
  16968.         };
  16969.         Store.prototype.subscribe = function(listener) {
  16970.             var listeners = this.listeners;
  16971.             listeners.push(listener);
  16972.             return function() {
  16973.                 var index = listeners.indexOf(listener);
  16974.                 listeners.splice(index, 1);
  16975.             };
  16976.         };
  16977.         return Store;
  16978.     }();
  16979.     exports["default"] = Store;
  16980. }, function(module, exports, __webpack_require__) {
  16981.     "use strict";
  16982.     function _interopRequireDefault(obj) {
  16983.         return obj && obj.__esModule ? obj : {
  16984.             "default": obj
  16985.         };
  16986.     }
  16987.     exports.__esModule = !0;
  16988.     var _createStore = __webpack_require__(654), _createStore2 = _interopRequireDefault(_createStore), _utilsCompose = __webpack_require__(226), _utilsCompose2 = _interopRequireDefault(_utilsCompose), _utilsCombineReducers = __webpack_require__(657), _utilsCombineReducers2 = _interopRequireDefault(_utilsCombineReducers), _utilsBindActionCreators = __webpack_require__(656), _utilsBindActionCreators2 = _interopRequireDefault(_utilsBindActionCreators), _utilsApplyMiddleware = __webpack_require__(655), _utilsApplyMiddleware2 = _interopRequireDefault(_utilsApplyMiddleware), _utilsComposeMiddleware = __webpack_require__(316), _utilsComposeMiddleware2 = _interopRequireDefault(_utilsComposeMiddleware);
  16989.     exports.createStore = _createStore2["default"];
  16990.     exports.compose = _utilsCompose2["default"];
  16991.     exports.combineReducers = _utilsCombineReducers2["default"];
  16992.     exports.bindActionCreators = _utilsBindActionCreators2["default"];
  16993.     exports.applyMiddleware = _utilsApplyMiddleware2["default"];
  16994.     exports.composeMiddleware = _utilsComposeMiddleware2["default"];
  16995. }, function(module, exports, __webpack_require__) {
  16996.     "use strict";
  16997.     function composeMiddleware() {
  16998.         for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) middlewares[_key] = arguments[_key];
  16999.         return function(methods) {
  17000.             return function(next) {
  17001.                 return _compose2["default"].apply(undefined, middlewares.map(function(m) {
  17002.                     return m(methods);
  17003.                 }).concat([ next ]));
  17004.             };
  17005.         };
  17006.     }
  17007.     exports.__esModule = !0;
  17008.     exports["default"] = composeMiddleware;
  17009.     var _compose = __webpack_require__(226), _compose2 = function(obj) {
  17010.         return obj && obj.__esModule ? obj : {
  17011.             "default": obj
  17012.         };
  17013.     }(_compose);
  17014.     module.exports = exports["default"];
  17015. }, function(module, exports, __webpack_require__) {
  17016.     "use strict";
  17017.     function mapValues(obj, fn) {
  17018.         return Object.keys(obj).reduce(function(result, key) {
  17019.             result[key] = fn(obj[key], key);
  17020.             return result;
  17021.         }, {});
  17022.     }
  17023.     exports.__esModule = !0;
  17024.     exports["default"] = mapValues;
  17025.     module.exports = exports["default"];
  17026. }, function(module, exports, __webpack_require__) {
  17027.     "use strict";
  17028.     function _interopRequireDefault(obj) {
  17029.         return obj && obj.__esModule ? obj : {
  17030.             "default": obj
  17031.         };
  17032.     }
  17033.     function startInstallAll() {
  17034.         if (_settings2["default"].get("errors.enableSystemCheck").value) (0, _nps.addNPSStart)();
  17035.         (0, _recoverInternet.saveWifiProfile)();
  17036.         return (0, _driversActions.installDriversAndPrograms)({
  17037.             eventAction: "startpage install all clicked",
  17038.             zone: "START_PAGE"
  17039.         });
  17040.     }
  17041.     function startInstallCustom() {
  17042.         var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  17043.         if (_settings2["default"].get("errors.enableSystemCheck").value) (0, _nps.addNPSStart)();
  17044.         (0, _recoverInternet.saveWifiProfile)();
  17045.         if (options.eventAction) _statistics2["default"].event({
  17046.             action: options.eventAction
  17047.         });
  17048.         return (0, _menuActions.navigate)("DRIVERS", {
  17049.             preventSendingEvent: !0
  17050.         });
  17051.     }
  17052.     function expandDrivers() {
  17053.         return function(dispatch, getState) {
  17054.             dispatch({
  17055.                 type: "START_SCREEN_DRIVERS_EXPANDED"
  17056.             });
  17057.         };
  17058.     }
  17059.     function expandPrograms() {
  17060.         return function(dispatch, getState) {
  17061.             dispatch({
  17062.                 type: "START_SCREEN_PROGRAMS_EXPANDED"
  17063.             });
  17064.         };
  17065.     }
  17066.     function openDriversPopover() {
  17067.         return function(dispatch, getState) {
  17068.             dispatch({
  17069.                 type: "START_SCREEN_DRIVERS_POPOVER_OPENED"
  17070.             });
  17071.         };
  17072.     }
  17073.     function openProgramsPopover() {
  17074.         return function(dispatch, getState) {
  17075.             dispatch({
  17076.                 type: "START_SCREEN_PROGRAMS_POPOVER_OPENED"
  17077.             });
  17078.         };
  17079.     }
  17080.     function openDiagnosticsPopover() {
  17081.         return function(dispatch, getState) {
  17082.             dispatch({
  17083.                 type: "START_SCREEN_DIAGNOSTICS_POPOVER_OPENED"
  17084.             });
  17085.         };
  17086.     }
  17087.     function closePopovers() {
  17088.         return function(dispatch, getState) {
  17089.             dispatch({
  17090.                 type: "START_SCREEN_POPOVERS_CLOSED"
  17091.             });
  17092.         };
  17093.     }
  17094.     exports.__esModule = !0;
  17095.     exports.startInstallAll = startInstallAll;
  17096.     exports.startInstallCustom = startInstallCustom;
  17097.     exports.expandDrivers = expandDrivers;
  17098.     exports.expandPrograms = expandPrograms;
  17099.     exports.openDriversPopover = openDriversPopover;
  17100.     exports.openProgramsPopover = openProgramsPopover;
  17101.     exports.openDiagnosticsPopover = openDiagnosticsPopover;
  17102.     exports.closePopovers = closePopovers;
  17103.     var _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _menuActions = __webpack_require__(62), _driversActions = __webpack_require__(228), _nps = __webpack_require__(326), _recoverInternet = __webpack_require__(328), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings);
  17104. }, function(module, exports, __webpack_require__) {
  17105.     "use strict";
  17106.     (function(l) {
  17107.         function _interopRequireDefault(obj) {
  17108.             return obj && obj.__esModule ? obj : {
  17109.                 "default": obj
  17110.             };
  17111.         }
  17112.         function _asyncToGenerator(fn) {
  17113.             return function() {
  17114.                 var gen = fn.apply(this, arguments);
  17115.                 return new Promise(function(resolve, reject) {
  17116.                     function step(key, arg) {
  17117.                         try {
  17118.                             var info = gen[key](arg), value = info.value;
  17119.                         } catch (error) {
  17120.                             reject(error);
  17121.                             return;
  17122.                         }
  17123.                         if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  17124.                             step("next", value);
  17125.                         }, function(err) {
  17126.                             step("throw", err);
  17127.                         });
  17128.                     }
  17129.                     return step("next");
  17130.                 });
  17131.             };
  17132.         }
  17133.         exports.__esModule = !0;
  17134.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _driversPrograms = __webpack_require__(36), _utils = __webpack_require__(23), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  17135.         __webpack_require__(794);
  17136.         exports["default"] = _react2["default"].createClass({
  17137.             displayName: "ProgramRow",
  17138.             mixins: [ __webpack_require__(5) ],
  17139.             propTypes: {
  17140.                 program: _react.PropTypes.object.isRequired,
  17141.                 index: _react.PropTypes.number,
  17142.                 toggleProgram: _react.PropTypes.func.isRequired,
  17143.                 installPrograms: _react.PropTypes.func.isRequired,
  17144.                 confirmProgramInstallation: _react.PropTypes.func,
  17145.                 zone: _react.PropTypes.string.isRequired,
  17146.                 currentLanguage: _react.PropTypes.string.isRequired
  17147.             },
  17148.             componentDidMount: function() {
  17149.                 var _this = this;
  17150.                 setTimeout(function() {
  17151.                     if (_this.refs["program-row_icon-img"]) {
  17152.                         var rowIconImgNode = _this.refs["program-row_icon-img"].getDOMNode();
  17153.                         if (rowIconImgNode && 0 === rowIconImgNode.naturalWidth) rowIconImgNode.src = "img/programs/default-soft.png";
  17154.                     }
  17155.                 }, 1e3);
  17156.             },
  17157.             render: function() {
  17158.                 var _props = this.props, program = _props.program, index = _props.index, toggleProgram = _props.toggleProgram, zone = _props.zone, currentLanguage = _props.currentLanguage, isInstalled = program.isInstalled, icon = program.icon, publisher = program.publisher, rating = program.rating, description = program.description, localizedName = program.localizedName, eula = program.eula, policy = program.policy, localizedDescription = void 0, lang = "ru" === currentLanguage ? "ru" : "en";
  17159.                 localizedDescription = description[lang];
  17160.                 var isChecked = this.getChecked(program), checkboxId = zone + "-program" + index, checkboxAction = "PROTECT_SECURITY_PROGRAMS" === zone ? "protect checkbox used install " + program.name : "soft checkbox used";
  17161.                 return _react2["default"].DOM.tr({
  17162.                     className: "program-row"
  17163.                 }, _react2["default"].DOM.td({
  17164.                     className: "program-row_checkbox"
  17165.                 }, _react2["default"].DOM.span(null, _react2["default"].DOM.input({
  17166.                     type: "checkbox",
  17167.                     className: "custom-control_checkbox-input",
  17168.                     id: checkboxId,
  17169.                     checked: isChecked,
  17170.                     onChange: function(e) {
  17171.                         toggleProgram(program.ID, e.target.checked, zone, {
  17172.                             eventAction: checkboxAction
  17173.                         });
  17174.                     }
  17175.                 }), _react2["default"].DOM.label({
  17176.                     htmlFor: checkboxId,
  17177.                     className: "custom-control_checkbox-input-label"
  17178.                 }))), _react2["default"].DOM.td({
  17179.                     className: "program-row_icon "
  17180.                 }, (0, _Img2["default"])({
  17181.                     src: icon,
  17182.                     width: "40",
  17183.                     height: "40",
  17184.                     className: "program-row_icon-img",
  17185.                     ref: "program-row_icon-img"
  17186.                 })), _react2["default"].DOM.td({
  17187.                     className: "program-row_name",
  17188.                     onClick: function(e) {
  17189.                         toggleProgram(program.ID, !isChecked, zone);
  17190.                     }
  17191.                 }, _react2["default"].DOM.div({
  17192.                     title: program.URL,
  17193.                     htmlFor: "program" + index,
  17194.                     className: "program-row_name-name"
  17195.                 }, localizedName ? localizedName[lang] : program.name), _react2["default"].DOM.div({
  17196.                     className: "program-row_name-publisher"
  17197.                 }, publisher)), _react2["default"].DOM.td({
  17198.                     className: "program-row_rating"
  17199.                 }, this.renderStars(rating)), _react2["default"].DOM.td({
  17200.                     className: "program-row_type"
  17201.                 }, _react2["default"].DOM.div({
  17202.                     className: "program-row_type-text"
  17203.                 }, localizedDescription), eula ? _react2["default"].DOM.a({
  17204.                     href: "#",
  17205.                     className: "program-row_type-link",
  17206.                     onClick: function(e) {
  17207.                         e.stopPropagation();
  17208.                         e.preventDefault();
  17209.                         (0, _utils.goToUrl)(eula);
  17210.                     }
  17211.                 }, l("programs_eula")) : null, policy ? _react2["default"].DOM.a({
  17212.                     href: "#",
  17213.                     className: "program-row_type-link",
  17214.                     onClick: function(e) {
  17215.                         e.stopPropagation();
  17216.                         e.preventDefault();
  17217.                         (0, _utils.goToUrl)(policy);
  17218.                     }
  17219.                 }, l("programs_policy")) : null), _react2["default"].DOM.td({
  17220.                     className: "program-row_btn"
  17221.                 }, !isInstalled ? _react2["default"].DOM.button({
  17222.                     className: "installed-program_uninstall-single",
  17223.                     onClick: this.handleInstallSingleClick
  17224.                 }, _react2["default"].DOM.span({
  17225.                     className: "installed-program_install-single-icon icons-controls"
  17226.                 }, ""), l("programs_btn_install_single")) : _react2["default"].DOM.div({
  17227.                     className: "installed-program_uninstall-single-btn-filler"
  17228.                 }, _react2["default"].DOM.span({
  17229.                     className: "installed-program_install-single-icon icons-controls",
  17230.                     style: {
  17231.                         fontSize: "12px",
  17232.                         color: "#44ad64"
  17233.                     }
  17234.                 }, "✓"), l("programs_btn_installed_single"))));
  17235.             },
  17236.             getChecked: function() {
  17237.                 var _props2 = this.props, program = _props2.program, zone = _props2.zone, isChecked = program.isChecked, isCheckedForProtect = program.isCheckedForProtect, isNotifierChecked = program.isNotifierChecked;
  17238.                 if ((0, _driversPrograms.isNotifier)(program)) if ("DRIVER_UTILITIES" === zone) return isNotifierChecked; else if ("PROGRAMS_PAGE" === zone) return isChecked; else throw new Error("ProgramRow must have proper zone, not " + zone); else if ("PROTECT_SECURITY_PROGRAMS" === zone) return isCheckedForProtect; else return isChecked;
  17239.             },
  17240.             handleInstallSingleClick: function() {
  17241.                 var _this2 = this;
  17242.                 return _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
  17243.                     var _props3, program, installPrograms, confirmProgramInstallation, zone, onProtect, confirmResult;
  17244.                     return regeneratorRuntime.wrap(function(_context) {
  17245.                         for (;;) switch (_context.prev = _context.next) {
  17246.                           case 0:
  17247.                             _props3 = _this2.props, program = _props3.program, installPrograms = _props3.installPrograms,
  17248.                             confirmProgramInstallation = _props3.confirmProgramInstallation, zone = _props3.zone;
  17249.                             onProtect = "PROTECT_SECURITY_PROGRAMS" === zone;
  17250.                             if (onProtect) _statistics2["default"].event({
  17251.                                 action: "protect install clicked " + program.name,
  17252.                                 counters: [ "default", "google.shared" ]
  17253.                             }); else _statistics2["default"].event({
  17254.                                 action: "soft install clicked " + program.name,
  17255.                                 counters: [ "default", "google.shared" ]
  17256.                             });
  17257.                             confirmResult = !0;
  17258.                             if (!program.confirmPopup) {
  17259.                                 _context.next = 8;
  17260.                                 break;
  17261.                             }
  17262.                             _context.next = 7;
  17263.                             return confirmProgramInstallation(program, zone);
  17264.  
  17265.                           case 7:
  17266.                             confirmResult = _context.sent;
  17267.  
  17268.                           case 8:
  17269.                             if (confirmResult) installPrograms([ program ], {
  17270.                                 isSingle: !0
  17271.                             });
  17272.  
  17273.                           case 9:
  17274.                           case "end":
  17275.                             return _context.stop();
  17276.                         }
  17277.                     }, _callee, _this2);
  17278.                 }))();
  17279.             },
  17280.             renderStars: function(starsCount) {
  17281.                 for (var stars = [], i = 0; i < 5; i++) stars.push((0, _Img2["default"])({
  17282.                     className: "drivers-screen_caption-star-icon",
  17283.                     src: i < starsCount ? "img/programs/star-full.png" : "img/programs/star-empty.png"
  17284.                 }));
  17285.                 return stars;
  17286.             }
  17287.         });
  17288.         module.exports = exports["default"];
  17289.     }).call(exports, __webpack_require__(6));
  17290. }, function(module, exports, __webpack_require__) {
  17291.     "use strict";
  17292.     function _classCallCheck(instance, Constructor) {
  17293.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  17294.     }
  17295.     exports.__esModule = !0;
  17296.     var _logs = __webpack_require__(3), _system = __webpack_require__(9), _runExeAsynchronously = __webpack_require__(243), _specialFolders = __webpack_require__(22), _localFiles = __webpack_require__(20), _driverAllow = __webpack_require__(756), _driverAllow2 = function(obj) {
  17297.         return obj && obj.__esModule ? obj : {
  17298.             "default": obj
  17299.         };
  17300.     }(_driverAllow), log = (0, _logs.getLogger)("devcon"), Devcon = function() {
  17301.         function Devcon() {
  17302.             _classCallCheck(this, Devcon);
  17303.         }
  17304.         Devcon.prototype.tempDir = function() {
  17305.             return _system.WshShell.ExpandEnvironmentStrings("%temp%\\drp\\unzip\\drp");
  17306.         };
  17307.         Devcon.prototype.update = function(is64, deviceId, driver, jobId) {
  17308.             var exec = is64 ? "devcon64.exe" : "devcon.exe", inf = this.tempDir() + "\\" + driver.pack + "\\" + driver.directory + driver.inf, re = /^.*(?:(?:VEN|VID).*(?:DEV|PID)|\*|ACPI\\|ROOT\\).*?(?=\\|$)/, match = re.exec(deviceId), hwid = match ? match[0] : deviceId, triggerFile = (0,
  17309.             _localFiles.ensurePath)(_specialFolders.AppFolder + "\\temp") + "\\devcon_" + jobId + ".txt", keys = 'update "' + inf + '" "' + hwid + '"';
  17310.             log.info("update: tools\\" + exec + " " + keys, {
  17311.                 version: exec,
  17312.                 inf: inf,
  17313.                 hwid: hwid
  17314.             }, "update:tools");
  17315.             var driverAllowInterval = setInterval(_driverAllow2["default"], 1e3);
  17316.             return (0, _runExeAsynchronously.runExeAsynchronously)({
  17317.                 exePath: "tools\\" + exec,
  17318.                 keys: keys,
  17319.                 triggerFile: triggerFile
  17320.             }).then(function(exitCode) {
  17321.                 clearInterval(driverAllowInterval);
  17322.                 return exitCode;
  17323.             }).caught(function(err) {
  17324.                 clearInterval(driverAllowInterval);
  17325.                 log.error("update: failed", {
  17326.                     err: err
  17327.                 }, "update:failed");
  17328.                 throw err;
  17329.             });
  17330.         };
  17331.         return Devcon;
  17332.     }();
  17333.     exports["default"] = window.devcon = new Devcon();
  17334.     module.exports = exports["default"];
  17335. }, function(module, exports, __webpack_require__) {
  17336.     "use strict";
  17337.     exports.__esModule = !0;
  17338.     exports["default"] = function(str, nstr, count) {
  17339.         if (!window.language) return str;
  17340.         var ind = Number(window.language.plural(count) || 0), key = str + "_" + ind, bkey = str + "_1";
  17341.         return window.language[key] || window.language[bkey] || key;
  17342.     };
  17343.     module.exports = exports["default"];
  17344. }, function(module, exports, __webpack_require__) {
  17345.     "use strict";
  17346.     exports.__esModule = !0;
  17347.     var _extends = Object.assign || function(target) {
  17348.         for (var i = 1; i < arguments.length; i++) {
  17349.             var source = arguments[i];
  17350.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  17351.         }
  17352.         return target;
  17353.     }, _SettingsData = __webpack_require__(804), _SettingsData2 = function(obj) {
  17354.         return obj && obj.__esModule ? obj : {
  17355.             "default": obj
  17356.         };
  17357.     }(_SettingsData);
  17358.     exports["default"] = function(l) {
  17359.         var res = {};
  17360.         Object.entries(_SettingsData2["default"]).forEach(function(_ref) {
  17361.             var sectionId = _ref[0], section = _ref[1], sectionTitle = void 0;
  17362.             switch (sectionId) {
  17363.               case "general":
  17364.                 sectionTitle = l("settings_common-settings");
  17365.                 break;
  17366.  
  17367.               case "errors":
  17368.                 sectionTitle = l("settings_error");
  17369.                 break;
  17370.  
  17371.               case "driverSelection":
  17372.                 sectionTitle = l("settings_algorithm");
  17373.             }
  17374.             var sectionSettings = {};
  17375.             Object.entries(section.settings).forEach(function(_ref2) {
  17376.                 var settingId = _ref2[0], setting = _ref2[1];
  17377.                 switch (settingId) {
  17378.                   case "language":
  17379.                     sectionSettings[settingId] = _extends({}, setting, {
  17380.                         title: l("settings_language-title"),
  17381.                         caption: l("settings_language-caption"),
  17382.                         anchor: l("settings_language-anchor"),
  17383.                         href: l("settings_language-href")
  17384.                     });
  17385.                     break;
  17386.  
  17387.                   case "enableLogging":
  17388.                     sectionSettings[settingId] = _extends({}, setting, {
  17389.                         title: l("settings_logging-title"),
  17390.                         caption: l("settings_logging-caption"),
  17391.                         href: "custom"
  17392.                     });
  17393.                     break;
  17394.  
  17395.                   case "activateFirebug":
  17396.                     sectionSettings[settingId] = _extends({}, setting, {
  17397.                         title: l("settings_firebug-title"),
  17398.                         caption: l("settings_firebug-caption")
  17399.                     });
  17400.                     break;
  17401.  
  17402.                   case "removeIntallationTempFiles":
  17403.                     sectionSettings[settingId] = _extends({}, setting, {
  17404.                         title: l("settings_cleanup-title"),
  17405.                         caption: l("settings_cleanup-caption")
  17406.                     });
  17407.                     break;
  17408.  
  17409.                   case "enableSoftAndDriverUtilities":
  17410.                     sectionSettings[settingId] = _extends({}, setting, {
  17411.                         title: l("settings_soft-and-utilities-title"),
  17412.                         caption: l("settings_soft-and-utilities-caption"),
  17413.                         anchor: l("settings_soft-and-utilities-anchor"),
  17414.                         href: l("settings_soft-and-utilities-href")
  17415.                     });
  17416.                     break;
  17417.  
  17418.                   case "enableProtect":
  17419.                     sectionSettings[settingId] = _extends({}, setting, {
  17420.                         title: l("settings_protect-title"),
  17421.                         caption: l("settings_protect-caption"),
  17422.                         anchor: l("settings_protect-anchor"),
  17423.                         href: l("settings_protect-href")
  17424.                     });
  17425.                     break;
  17426.  
  17427.                   case "enableDiagnostics":
  17428.                     sectionSettings[settingId] = _extends({}, setting, {
  17429.                         title: l("settings_diagnostics-title"),
  17430.                         caption: l("settings_diagnostics-caption")
  17431.                     });
  17432.                     break;
  17433.  
  17434.                   case "startOnExpertMode":
  17435.                     sectionSettings[settingId] = _extends({}, setting, {
  17436.                         title: l("settings_expert-mode-title"),
  17437.                         caption: l("settings_expert-mode-caption")
  17438.                     });
  17439.                     break;
  17440.  
  17441.                   case "minifyMenu":
  17442.                     sectionSettings[settingId] = _extends({}, setting, {
  17443.                         title: l("settings_minify-menu-title"),
  17444.                         caption: l("settings_minify-menu-caption")
  17445.                     });
  17446.                     break;
  17447.  
  17448.                   case "enableAuthorization":
  17449.                     sectionSettings[settingId] = _extends({}, setting, {
  17450.                         title: l("settings_authorization-title"),
  17451.                         caption: l("settings_authorization-caption")
  17452.                     });
  17453.                     break;
  17454.  
  17455.                   case "enableNews":
  17456.                     sectionSettings[settingId] = _extends({}, setting, {
  17457.                         title: l("settings_news-title"),
  17458.                         caption: l("settings_news-caption")
  17459.                     });
  17460.                     break;
  17461.  
  17462.                   case "selectDriversByDefault":
  17463.                     sectionSettings[settingId] = _extends({}, setting, {
  17464.                         title: l("settings_drivers-title"),
  17465.                         caption: l("settings_drivers-caption")
  17466.                     });
  17467.                     break;
  17468.  
  17469.                   case "selectSoftByDefault":
  17470.                     sectionSettings[settingId] = _extends({}, setting, {
  17471.                         title: l("settings_soft-title"),
  17472.                         caption: l("settings_soft-caption")
  17473.                     });
  17474.                     break;
  17475.  
  17476.                   case "hideInstallationBanners":
  17477.                     sectionSettings[settingId] = _extends({}, setting, {
  17478.                         title: l("settings_banners-title"),
  17479.                         caption: l("settings_banners-caption")
  17480.                     });
  17481.                     break;
  17482.  
  17483.                   case "installNotifier":
  17484.                     sectionSettings[settingId] = _extends({}, setting, {
  17485.                         title: l("settings_notifier-title"),
  17486.                         caption: l("settings_notifier-caption"),
  17487.                         anchor: l("settings_notifier-anchor"),
  17488.                         href: l("settings_notifier-href")
  17489.                     });
  17490.                     break;
  17491.  
  17492.                   case "showBugReport":
  17493.                     sectionSettings[settingId] = _extends({}, setting, {
  17494.                         title: l("settings_bug-report-title"),
  17495.                         caption: l("settings_bug-report-caption"),
  17496.                         anchor: l("settings_bug-report-anchor"),
  17497.                         href: l("settings_bug-report-href")
  17498.                     });
  17499.                     break;
  17500.  
  17501.                   case "createRestorePoint":
  17502.                     sectionSettings[settingId] = _extends({}, setting, {
  17503.                         title: l("settings_restore-point-title"),
  17504.                         caption: l("settings_restore-point-caption")
  17505.                     });
  17506.                     break;
  17507.  
  17508.                   case "createDriversBackup":
  17509.                     sectionSettings[settingId] = _extends({}, setting, {
  17510.                         title: l("settings_drivers-backup-title"),
  17511.                         caption: l("settings_drivers-backup-caption")
  17512.                     });
  17513.                     break;
  17514.  
  17515.                   case "enableSystemCheck":
  17516.                     sectionSettings[settingId] = _extends({}, setting, {
  17517.                         title: l("settings_system-check-title"),
  17518.                         caption: l("settings_system-check-caption"),
  17519.                         anchor: l("settings_system-check-anchor"),
  17520.                         href: l("settings_system-check-href")
  17521.                     });
  17522.                     break;
  17523.  
  17524.                   case "sendStatistics":
  17525.                     sectionSettings[settingId] = _extends({}, setting, {
  17526.                         title: l("settings_statistics-title"),
  17527.                         caption: l("settings_statistics-caption"),
  17528.                         anchor: l("settings_statistics-anchor"),
  17529.                         href: l("settings_statistics-href")
  17530.                     });
  17531.                     break;
  17532.  
  17533.                   case "useMachineLearning":
  17534.                     sectionSettings[settingId] = _extends({}, setting, {
  17535.                         title: l("settings_machine-learning-title"),
  17536.                         caption: l("settings_machine-learning-caption"),
  17537.                         anchor: l("settings_machine-learning-anchor"),
  17538.                         href: l("settings_machine-learning-href")
  17539.                     });
  17540.                     break;
  17541.  
  17542.                   case "analyzeBsods":
  17543.                     sectionSettings[settingId] = _extends({}, setting, {
  17544.                         title: l("settings_bsods-title"),
  17545.                         caption: l("settings_bsods-caption"),
  17546.                         anchor: l("settings_bsods-anchor"),
  17547.                         href: l("settings_bsods-href")
  17548.                     });
  17549.                     break;
  17550.  
  17551.                   case "collectUserDrivers":
  17552.                     sectionSettings[settingId] = _extends({}, setting, {
  17553.                         title: l("settings_collect-drivers-title"),
  17554.                         caption: l("settings_collect-drivers-caption"),
  17555.                         anchor: l("settings_collect-drivers-anchor"),
  17556.                         href: l("settings_collect-drivers-href")
  17557.                     });
  17558.                 }
  17559.             });
  17560.             var sectionData = _extends({}, section, {
  17561.                 sectionTitle: sectionTitle,
  17562.                 settings: sectionSettings
  17563.             });
  17564.             res[sectionId] = sectionData;
  17565.         });
  17566.         return res;
  17567.     };
  17568.     module.exports = exports["default"];
  17569. }, function(module, exports, __webpack_require__) {
  17570.     "use strict";
  17571.     exports.__esModule = !0;
  17572.     var _system = __webpack_require__(9), _processes = __webpack_require__(63);
  17573.     exports["default"] = function() {
  17574.         try {
  17575.             _system.WshShell.AppActivate((0, _processes.getMyPID)());
  17576.         } catch (e) {}
  17577.     };
  17578.     module.exports = exports["default"];
  17579. }, function(module, exports, __webpack_require__) {
  17580.     "use strict";
  17581.     exports.__esModule = !0;
  17582.     var _utils = __webpack_require__(23);
  17583.     exports["default"] = function() {
  17584.         if (!window.Firebug) {
  17585.             var prevOnKeyDown = document.onkeydown;
  17586.             document.onkeydown = function(e) {
  17587.                 e = e || window.event;
  17588.                 if (123 === (e.keyCode ? e.keyCode : e.which)) (0, _utils.inc)("http://update.drp.su/firebug/firebug-lite-debug.js");
  17589.                 prevOnKeyDown(e);
  17590.                 document.onkeydown = prevOnKeyDown;
  17591.             };
  17592.         }
  17593.     };
  17594.     module.exports = exports["default"];
  17595. }, function(module, exports, __webpack_require__) {
  17596.     "use strict";
  17597.     exports.__esModule = !0;
  17598.     exports.fitApplicationWindow = function() {
  17599.         try {
  17600.             var windowWidth = window.screen.availWidth, windowHeight = window.screen.availHeight;
  17601.             window.resizeTo(windowWidth, windowHeight);
  17602.             window.moveTo(0, 0);
  17603.         } catch (e) {}
  17604.     };
  17605. }, function(module, exports, __webpack_require__) {
  17606.     "use strict";
  17607.     function _interopRequireDefault(obj) {
  17608.         return obj && obj.__esModule ? obj : {
  17609.             "default": obj
  17610.         };
  17611.     }
  17612.     exports.__esModule = !0;
  17613.     exports.deleteNPSStart = exports.addNPSStart = undefined;
  17614.     var _logs = __webpack_require__(3), _registry = __webpack_require__(30), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _os = __webpack_require__(13), _shell = __webpack_require__(14), _fso = __webpack_require__(18), _specialFolders = __webpack_require__(22), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), _external = __webpack_require__(230), _external2 = _interopRequireDefault(_external), tempFile = _specialFolders.AppData + "\\DRPSu\\temp\\DRPNPS.xml", getArgs = function() {
  17615.         var date = _settings2["default"].get("driverSelection.analyzeBsods").value ? Date.now() : 0;
  17616.         return '"' + window.npsEndpoint + '" "' + _statistics2["default"].version + '" "' + date + '" "' + _statistics2["default"].sessionId + '"';
  17617.     }, getTaskXML = function(OSVersion) {
  17618.         var expireDate = new Date(Date.now() + 2592e5).toISOString();
  17619.         return '<?xml version="1.0" encoding="UTF-16"?>\n<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">\n  <Triggers>\n    <BootTrigger>\n      <Enabled>true</Enabled>\n      ' + (OSVersion >= 10 ? "<Delay>PT3M</Delay>" : "") + "\n      <EndBoundary>" + expireDate + '</EndBoundary>\n    </BootTrigger>\n  </Triggers>\n  <Principals>\n    <Principal id="Author">\n      <LogonType>InteractiveToken</LogonType>\n      <RunLevel>HighestAvailable</RunLevel>\n    </Principal>\n  </Principals>\n  <Settings>\n    <MultipleInstancesPolicy>StopExisting</MultipleInstancesPolicy>\n    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>\n    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>\n    <AllowHardTerminate>true</AllowHardTerminate>\n    <StartWhenAvailable>false</StartWhenAvailable>\n    <RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>\n    <AllowStartOnDemand>true</AllowStartOnDemand>\n    <Enabled>true</Enabled>\n    <Hidden>false</Hidden>\n    <RunOnlyIfIdle>false</RunOnlyIfIdle>\n    <WakeToRun>false</WakeToRun>\n    <ExecutionTimeLimit>P1D</ExecutionTimeLimit>\n    <Priority>7</Priority>\n    <RestartOnFailure>\n      <Interval>PT1M</Interval>\n      <Count>3</Count>\n    </RestartOnFailure>\n  </Settings>\n  <Actions Context="Author">\n    <Exec>\n      <Command>mshta.exe</Command>\n      <Arguments>' + getArgs() + "</Arguments>\n    </Exec>\n    <Exec>\n      <Command>SCHTASKS</Command>\n      <Arguments>/Delete /TN DRPNPS /F</Arguments>\n    </Exec>\n  </Actions>\n</Task>";
  17620.     }, downloadDumpChk = function() {
  17621.         try {
  17622.             var options = {
  17623.                 url: "http://download.drp.su/updates/dumpchk/dumpchk.zip",
  17624.                 downloadPath: _specialFolders.AppData + "\\DRPSu\\dumpchk",
  17625.                 dirPath: _specialFolders.AppData + "\\DRPSu\\dumpchk",
  17626.                 exePath: "dumpchk.exe"
  17627.             };
  17628.             new _external2["default"](options).Download();
  17629.             (0, _logs.log)("[nps] Downloaded dumpchk:", options);
  17630.         } catch (err) {
  17631.             (0, _logs.log)("[nps] Failed download dumpchk:", err);
  17632.         }
  17633.     }, npsStartAdded = void 0;
  17634.     exports.addNPSStart = function() {
  17635.         if (window.npsEndpoint && !npsStartAdded) {
  17636.             try {
  17637.                 if (_os.OSVersion < 6) {
  17638.                     var com = 'cmd /c start /min cmd /s /c "ping -n 5 8.8.8.8 | find "TTL" > nul && start mshta.exe ' + getArgs() + '"';
  17639.                     (0, _registry.RegWrite)("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\DRPNPS", com);
  17640.                     (0, _logs.log)("[nps] Added nps start in reg:", com);
  17641.                 } else {
  17642.                     var file = _fso.fso.CreateTextFile(tempFile, !0, !0);
  17643.                     file.Write(getTaskXML(_os.OSVersion));
  17644.                     file.Close();
  17645.                     var _com = 'SCHTASKS /Create /TN DRPNPS /XML "' + tempFile + '" /F';
  17646.                     _shell.WshShell.Run(_com, 0, !0);
  17647.                     _fso.fso.DeleteFile(tempFile);
  17648.                     (0, _logs.log)("[nps] Added nps start in scheduler:", _com);
  17649.                 }
  17650.             } catch (err) {
  17651.                 (0, _logs.log)("[nps] Failed add nps start:", err);
  17652.             }
  17653.             npsStartAdded = !0;
  17654.             downloadDumpChk();
  17655.         }
  17656.     }, exports.deleteNPSStart = function() {
  17657.         if (window.npsEndpoint && npsStartAdded) {
  17658.             try {
  17659.                 if (_os.OSVersion < 6) {
  17660.                     (0, _registry.RegDelete)("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\DRPNPS");
  17661.                     (0, _logs.log)("[nps] Deleted nps start to reg");
  17662.                 } else {
  17663.                     _shell.WshShell.Run("SCHTASKS /Delete /TN DRPNPS /F", 0, !0);
  17664.                     (0, _logs.log)("[nps] Deleted nps start from scheduler");
  17665.                 }
  17666.             } catch (err) {
  17667.                 (0, _logs.log)("[nps] Failed delete nps start:", err);
  17668.             }
  17669.             npsStartAdded = !1;
  17670.         }
  17671.     };
  17672. }, function(module, exports, __webpack_require__) {
  17673.     "use strict";
  17674.     exports.__esModule = !0;
  17675.     exports.performNotifierAction = exports.getNotifierSource = undefined;
  17676.     var _extends = Object.assign || function(target) {
  17677.         for (var i = 1; i < arguments.length; i++) {
  17678.             var source = arguments[i];
  17679.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  17680.         }
  17681.         return target;
  17682.     }, _system = __webpack_require__(9), _menuActions = __webpack_require__(62), _programsActions = __webpack_require__(99), folders = [ _system.AppData + "\\DriverPack Notifier\\temp", _system.AppData + "\\DriverPack Cloud\\temp" ], data = void 0, fileIsChecked = void 0, readFile = function(filePath) {
  17683.         var result = void 0;
  17684.         if (_system.fso.FileExists(filePath)) try {
  17685.             if (Date.now() - _system.fso.GetFile(filePath).DateCreated < 6e5) {
  17686.                 var stream = _system.fso.OpenTextFile(filePath, 1, !1), text = stream.ReadAll();
  17687.                 stream.Close();
  17688.                 result = JSON.parse(text);
  17689.             }
  17690.             _system.fso.DeleteFile(filePath);
  17691.         } catch (err) {}
  17692.         return result;
  17693.     }, getData = function() {
  17694.         if (!fileIsChecked) {
  17695.             for (var _iterator = folders, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator](); ;) {
  17696.                 var _ref;
  17697.                 if (_isArray) {
  17698.                     if (_i >= _iterator.length) break;
  17699.                     _ref = _iterator[_i++];
  17700.                 } else {
  17701.                     _i = _iterator.next();
  17702.                     if (_i.done) break;
  17703.                     _ref = _i.value;
  17704.                 }
  17705.                 data = readFile(_ref + "\\driverpack.json");
  17706.                 if (data) break;
  17707.             }
  17708.             fileIsChecked = !0;
  17709.         }
  17710.         return data;
  17711.     };
  17712.     exports.getNotifierSource = function() {
  17713.         var json = getData();
  17714.         return json && json.source;
  17715.     }, exports.performNotifierAction = function() {
  17716.         var json = getData();
  17717.         if (json) if ("open_protect" === json.action) window.store.dispatch((0, _menuActions.navigate)("PROTECT")); else if ("open_programs" === json.action) window.store.dispatch((0,
  17718.         _menuActions.navigate)("PROGRAMS")); else if ("uninstall_single_program" === json.action && json.program) {
  17719.             var _json$program = json.program, Program = _json$program.Program, Version = _json$program.Version, state = window.store.getState(), protect = state.protect, apiData = protect.apiData;
  17720.             if (apiData) {
  17721.                 var installedProgram = apiData.find(function(program) {
  17722.                     var name = program.name, version = program.version;
  17723.                     return name === Program && version === Version;
  17724.                 });
  17725.                 if (installedProgram) {
  17726.                     window.store.dispatch((0, _menuActions.navigate)("PROTECT"));
  17727.                     setTimeout(function() {
  17728.                         window.store.dispatch((0, _programsActions.removeInstalledProgram)(_extends({}, installedProgram)));
  17729.                     }, 2e3);
  17730.                 }
  17731.             }
  17732.         }
  17733.     };
  17734. }, function(module, exports, __webpack_require__) {
  17735.     "use strict";
  17736.     function _interopRequireDefault(obj) {
  17737.         return obj && obj.__esModule ? obj : {
  17738.             "default": obj
  17739.         };
  17740.     }
  17741.     exports.__esModule = !0;
  17742.     exports.recoverWifiProfile = exports.saveWifiProfile = undefined;
  17743.     var _fso = __webpack_require__(18), _shell = __webpack_require__(14), _specialFolders = __webpack_require__(22), _localFiles = __webpack_require__(20), _checkInternet = __webpack_require__(355), _ps = __webpack_require__(89), _ps2 = _interopRequireDefault(_ps), _os = __webpack_require__(13), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), internetPath = _specialFolders.AppData + "\\DRPSu\\Internet\\", wifiIntefaceFullPath = internetPath + "WifiInterface.txt", wifiProfileName = "", wifiIntefaceName = "", wifiAdapterGUID = "";
  17744.     exports.saveWifiProfile = function() {
  17745.         if (_os.OSVersion >= 6) setTimeout(function() {
  17746.             try {
  17747.                 (0, _localFiles.ensurePath)(internetPath);
  17748.                 _shell.WshShell.Run('cmd /c chcp 65001 | netsh wlan show interface > "' + wifiIntefaceFullPath + '"', 0, !1);
  17749.             } catch (err) {}
  17750.             setTimeout(function() {
  17751.                 if (_fso.fso.FileExists(wifiIntefaceFullPath)) {
  17752.                     var textStream = void 0, text = void 0;
  17753.                     try {
  17754.                         textStream = _fso.fso.OpenTextFile(wifiIntefaceFullPath, 1, !0);
  17755.                         text = textStream.ReadAll();
  17756.                         textStream.Close();
  17757.                     } catch (err) {}
  17758.                     try {
  17759.                         wifiProfileName = text.match(/Profile\s+:\s(.*)/i)[1];
  17760.                         wifiIntefaceName = text.match(/Name\s+:\s(.*)/i)[1];
  17761.                         wifiAdapterGUID = text.match(/GUID\s+:\s(.*)/i)[1];
  17762.                         _shell.WshShell.Run("cmd /c chcp 65001 | netsh wlan export profile name=" + wifiProfileName + " folder=" + internetPath, 0, !1);
  17763.                     } catch (err) {}
  17764.                 }
  17765.             }, 3e3);
  17766.         }, 0);
  17767.     }, exports.recoverWifiProfile = function() {
  17768.         if (_os.OSVersion >= 6) (0, _checkInternet.checkInternet)().then(function(internetOn) {
  17769.             if (!internetOn && wifiProfileName.length) {
  17770.                 _statistics2["default"].event({
  17771.                     action: "wifi connection lost"
  17772.                 });
  17773.                 setTimeout(function() {
  17774.                     if (_fso.fso.FileExists(wifiIntefaceFullPath)) {
  17775.                         if (_os.OSVersion >= 6) {
  17776.                             _ps2["default"].init();
  17777.                             if (_os.OSVersion >= 6.2) _ps2["default"].send('$wifi = Get-WmiObject -ComputerName "." -Namespace Root\\StandardCimv2 -class MSFT_NetAdapter | Where-Object {$_.DeviceID -eq "{' + wifiAdapterGUID + '}"}'); else _ps2["default"].send('$wifi = Get-WmiObject -ComputerName "." -Namespace Root\\CIMV2 -class Win32_NetworkAdapter | Where-Object {$_.DeviceID -eq "{' + wifiAdapterGUID + '}"}');
  17778.                             _ps2["default"].send("$wifi.Enable()");
  17779.                         }
  17780.                         setTimeout(function() {
  17781.                             _shell.WshShell.Run('netsh interface set interface "' + wifiIntefaceName + '" enabled', 0, !1);
  17782.                             _shell.WshShell.Run("netsh wlan add profile filename=" + wifiIntefaceFullPath + "\\" + wifiProfileName, 0, !1);
  17783.                             _shell.WshShell.Run("netsh wlan connect name=" + wifiProfileName, 0, !1);
  17784.                         }, 3e3);
  17785.                         setTimeout(function() {
  17786.                             (0, _checkInternet.checkInternet)().then(function(internetOn) {
  17787.                                 if (internetOn) _statistics2["default"].event({
  17788.                                     action: "wifi connection recovered"
  17789.                                 }); else _statistics2["default"].event({
  17790.                                     action: "wifi connection was not recovered"
  17791.                                 });
  17792.                             });
  17793.                         }, 1e4);
  17794.                     }
  17795.                 }, 0);
  17796.             }
  17797.         });
  17798.     };
  17799. }, function(module, exports, __webpack_require__) {
  17800.     "use strict";
  17801.     exports.__esModule = !0;
  17802.     var _statistics = __webpack_require__(15), _statistics2 = function(obj) {
  17803.         return obj && obj.__esModule ? obj : {
  17804.             "default": obj
  17805.         };
  17806.     }(_statistics), allCounters = [].concat(_statistics2["default"].counters), basicCounters = allCounters.filter(function(_ref) {
  17807.         return "events" === _ref.type;
  17808.     });
  17809.     exports["default"] = function(sendStatistics) {
  17810.         _statistics2["default"].counters = sendStatistics ? allCounters : basicCounters;
  17811.     };
  17812.     module.exports = exports["default"];
  17813. }, function(module, exports) {}, , , function(module, exports, __webpack_require__) {
  17814.     "use strict";
  17815.     function _interopRequireDefault(obj) {
  17816.         return obj && obj.__esModule ? obj : {
  17817.             "default": obj
  17818.         };
  17819.     }
  17820.     function _asyncToGenerator(fn) {
  17821.         return function() {
  17822.             var gen = fn.apply(this, arguments);
  17823.             return new Promise(function(resolve, reject) {
  17824.                 function step(key, arg) {
  17825.                     try {
  17826.                         var info = gen[key](arg), value = info.value;
  17827.                     } catch (error) {
  17828.                         reject(error);
  17829.                         return;
  17830.                     }
  17831.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  17832.                         step("next", value);
  17833.                     }, function(err) {
  17834.                         step("throw", err);
  17835.                     });
  17836.                 }
  17837.                 return step("next");
  17838.             });
  17839.         };
  17840.     }
  17841.     var _extends = Object.assign || function(target) {
  17842.         for (var i = 1; i < arguments.length; i++) {
  17843.             var source = arguments[i];
  17844.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  17845.         }
  17846.         return target;
  17847.     };
  17848.     __webpack_require__(729);
  17849.     __webpack_require__(722);
  17850.     __webpack_require__(726);
  17851.     __webpack_require__(351);
  17852.     __webpack_require__(765);
  17853.     var _raven = __webpack_require__(769), _systemScanner = __webpack_require__(86), _systemScanner2 = _interopRequireDefault(_systemScanner), _softPack = __webpack_require__(166), _softPack2 = _interopRequireDefault(_softPack), _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _htaAdapter = __webpack_require__(241), _storeCreator = __webpack_require__(749), _storeCreator2 = _interopRequireDefault(_storeCreator), _Provider = __webpack_require__(746), _Provider2 = _interopRequireDefault(_Provider), _App = __webpack_require__(667), _App2 = _interopRequireDefault(_App), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), _settingsActions = __webpack_require__(165), _menuActions = __webpack_require__(62), _toggleStatistics = __webpack_require__(329), _toggleStatistics2 = _interopRequireDefault(_toggleStatistics), _activateFirebug = __webpack_require__(324), _activateFirebug2 = _interopRequireDefault(_activateFirebug), _getInternalChannel = __webpack_require__(761), _getInternalChannel2 = _interopRequireDefault(_getInternalChannel), _onunload = __webpack_require__(232), _registry = __webpack_require__(30), _shell = __webpack_require__(14), _os = __webpack_require__(13), _retry = __webpack_require__(336), _retry2 = _interopRequireDefault(_retry);
  17854.     __webpack_require__(725);
  17855.     __webpack_require__(720);
  17856.     __webpack_require__(750);
  17857.     var _user = __webpack_require__(231), _user2 = _interopRequireDefault(_user);
  17858.     __webpack_require__(721);
  17859.     try {
  17860.         (0, _onunload.addUnloadListener)(function() {
  17861.             try {
  17862.                 var events = [];
  17863.                 if (!window.store.getState().app.isActivated) events.push(_logs2["default"].info({
  17864.                     action: "application bounced"
  17865.                 }, {}, "driverPackSolution:bounced"));
  17866.                 events.push(_logs2["default"].info({
  17867.                     action: "application closed"
  17868.                 }, {}, "driverPackSolution:closed"));
  17869.                 Promise.all(events)["finally"](function() {
  17870.                     _logs2["default"].onunload();
  17871.                 });
  17872.                 _shell.WshShell.Run("ping -n 3 127.0.0.1", 0, !0);
  17873.             } catch (e) {}
  17874.         });
  17875.     } catch (e) {}
  17876.     window.addUnloadListener = _onunload.addUnloadListener;
  17877.     var store = (0, _storeCreator2["default"])();
  17878.     window.store = store;
  17879.     if (!1) require("./debug")(store);
  17880.     window.offscreenBuffering = !1;
  17881.     var run = function() {
  17882.         var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
  17883.             var cid, uri, _window, version, verType, env, sha, buildDate, softEndpoint, internalChannel, id, reactRender;
  17884.             return regeneratorRuntime.wrap(function(_context) {
  17885.                 for (;;) switch (_context.prev = _context.next) {
  17886.                   case 0:
  17887.                     try {
  17888.                         cid = (0, _registry.RegRead)("HKCU\\Software\\drpsu\\picoID") || "" + Date.now() + Math.random();
  17889.                         uri = "http://www.google-analytics.com/collect?v=1&t=event&ec=pico&ea=webdeploy+done&tid=UA-68879973-12&cid=" + cid + "&el=" + window.version + "&z=" + Math.random().toString().slice(2);
  17890.                         (0, _htaAdapter.request)({
  17891.                             uri: uri
  17892.                         });
  17893.                     } catch (e) {}
  17894.                     _context.prev = 1;
  17895.                     _context.next = 4;
  17896.                     return _user2["default"].fetch();
  17897.  
  17898.                   case 4:
  17899.                     window.store.dispatch({
  17900.                         type: "USER_ACTIVATED"
  17901.                     });
  17902.                     window.store.dispatch({
  17903.                         type: "AUTHORIZED",
  17904.                         payload: _user2["default"]
  17905.                     });
  17906.                     _context.next = 10;
  17907.                     break;
  17908.  
  17909.                   case 8:
  17910.                     _context.prev = 8;
  17911.                     _context.t0 = _context["catch"](1);
  17912.  
  17913.                   case 10:
  17914.                     _context.next = 12;
  17915.                     return _settings2["default"].load();
  17916.  
  17917.                   case 12:
  17918.                     _logs2["default"].logging = _settings2["default"].get("general.enableLogging").value;
  17919.                     _window = window, version = _window.version, verType = _window.verType, env = _window.env,
  17920.                     sha = _window.sha, buildDate = _window.buildDate, softEndpoint = _window.softEndpoint;
  17921.                     _statistics2["default"].init();
  17922.                     _logs2["default"].info("DriverPack Solution " + version + " " + verType, {
  17923.                         driverPackSolution: {
  17924.                             version: version,
  17925.                             verType: verType
  17926.                         }
  17927.                     }, "driverPackSolutionVersion:defined");
  17928.                     _logs2["default"].info("Build " + env + " " + sha + " " + buildDate, {
  17929.                         env: env,
  17930.                         sha: sha,
  17931.                         buildDate: buildDate
  17932.                     }, "driverPackSolutionBuild:defined");
  17933.                     _logs2["default"].info("Soft endpoint " + softEndpoint, {
  17934.                         softEndpoint: softEndpoint
  17935.                     }, "softEndpoint:defined");
  17936.                     _logs2["default"].info(_os.OSCaption + " x" + _os.arch, {
  17937.                         OSCaption: _os.OSCaption,
  17938.                         arch: _os.arch
  17939.                     }, "OS:defined");
  17940.                     _logs2["default"].info("SessionId " + _statistics2["default"].sessionId, {
  17941.                         sessionId: _statistics2["default"].sessionId
  17942.                     }, "sessionId:defined");
  17943.                     if (!1) _statistics2["default"].experiment = "(not set)";
  17944.                     (0, _raven.setRavenContext)(_statistics2["default"]);
  17945.                     (0, _toggleStatistics2["default"])(_settings2["default"].get("driverSelection.sendStatistics").value);
  17946.                     internalChannel = (0, _getInternalChannel2["default"])();
  17947.                     _statistics2["default"].sendOpenedEvent({
  17948.                         namespace: "DriverPackSolution:opened",
  17949.                         override: {
  17950.                             yandex: {
  17951.                                 params: internalChannel ? _extends({}, internalChannel) : {}
  17952.                             }
  17953.                         }
  17954.                     });
  17955.                     if (_user2["default"].profile) {
  17956.                         id = _user2["default"].profile.id;
  17957.                         _logs2["default"].info({
  17958.                             action: "auth fetch succeeded"
  17959.                         }, {
  17960.                             userProfile: {
  17961.                                 id: id
  17962.                             }
  17963.                         }, "userProfile:auth:fetch:succeeded");
  17964.                     } else _logs2["default"].warn("auth fetch failed", {}, "userProfile:auth:fetch:failed");
  17965.                     _logs2["default"].debug("current settings", _settings2["default"].getAll(), "userProfile:settings:current");
  17966.                     _context.prev = 27;
  17967.                     _context.next = 30;
  17968.                     return window.loadLanguage();
  17969.  
  17970.                   case 30:
  17971.                     window.store.dispatch({
  17972.                         type: "CURRENT_LANGUAGE_UPDATED",
  17973.                         payload: window.lang
  17974.                     });
  17975.                     window.store.dispatch((0, _settingsActions.loadSettings)());
  17976.                     reactRender = !1 ? _react2["default"].render : _react2["default"].renderComponent;
  17977.                     reactRender((0, _Provider2["default"])({
  17978.                         store: store
  17979.                     }, function() {
  17980.                         return (0, _App2["default"])(null);
  17981.                     }), document.getElementById("app"));
  17982.                     _context.next = 36;
  17983.                     return _systemScanner2["default"].run();
  17984.  
  17985.                   case 36:
  17986.                     _context.prev = 36;
  17987.                     _context.next = 39;
  17988.                     return (0, _retry2["default"])(function() {
  17989.                         return _softPack2["default"].run();
  17990.                     }, 3);
  17991.  
  17992.                   case 39:
  17993.                     _context.next = 45;
  17994.                     break;
  17995.  
  17996.                   case 41:
  17997.                     _context.prev = 41;
  17998.                     _context.t1 = _context["catch"](36);
  17999.                     _logs2["default"].error({
  18000.                         action: "soft.js failed"
  18001.                     }, {
  18002.                         error: _context.t1
  18003.                     }, "softJs:failed");
  18004.                     throw _context.t1;
  18005.  
  18006.                   case 45:
  18007.                     window.store.dispatch(_settings2["default"].get("general.startOnExpertMode").value ? (0,
  18008.                     _menuActions.navigate)("DRIVERS", {
  18009.                         preventSendingEvent: !0,
  18010.                         startScreenSkipped: !0
  18011.                     }) : (0, _menuActions.navigate)("START"));
  18012.                     if (_settings2["default"].get("general.activateFirebug").value) (0, _activateFirebug2["default"])();
  18013.                     _context.next = 59;
  18014.                     break;
  18015.  
  18016.                   case 49:
  18017.                     _context.prev = 49;
  18018.                     _context.t2 = _context["catch"](27);
  18019.                     if (!("HttpError" === _context.t2.type && "status" in _context.t2)) {
  18020.                         _context.next = 56;
  18021.                         break;
  18022.                     }
  18023.                     _logs2["default"].error({
  18024.                         action: "Screen opened NoInternet"
  18025.                     }, {
  18026.                         error: _context.t2
  18027.                     }, "DriverPackSolution:noInternet");
  18028.                     window.store.dispatch({
  18029.                         type: "NO_INTERNET_DETECTED"
  18030.                     });
  18031.                     _context.next = 59;
  18032.                     break;
  18033.  
  18034.                   case 56:
  18035.                     _logs2["default"].error("DriverPack running failed", {
  18036.                         error: _context.t2
  18037.                     }, "DriverPackSolution:failed");
  18038.                     window.store.dispatch({
  18039.                         type: "RUN_ERROR_DETECTED"
  18040.                     });
  18041.                     throw _context.t2;
  18042.  
  18043.                   case 59:
  18044.                   case "end":
  18045.                     return _context.stop();
  18046.                 }
  18047.             }, _callee, undefined, [ [ 1, 8 ], [ 27, 49 ], [ 36, 41 ] ]);
  18048.         }));
  18049.         return function() {
  18050.             return _ref.apply(this, arguments);
  18051.         };
  18052.     }();
  18053.     setTimeout(function() {
  18054.         run().done();
  18055.     }, 100);
  18056. }, , , function(module, exports, __webpack_require__) {
  18057.     "use strict";
  18058.     function retry(handler) {
  18059.         var tries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1, timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1e3;
  18060.         return handler()["catch"](function(err) {
  18061.             if (tries > 1) return delay(timeout).then(function() {
  18062.                 return retry(handler, tries - 1, timeout);
  18063.             }); else throw err;
  18064.         });
  18065.     }
  18066.     Object.defineProperty(exports, "__esModule", {
  18067.         value: !0
  18068.     });
  18069.     exports["default"] = retry;
  18070.     var delay = function(time) {
  18071.         return new Promise(function(resolve) {
  18072.             return setTimeout(resolve, time);
  18073.         });
  18074.     };
  18075.     module.exports = exports["default"];
  18076. }, function(module, exports, __webpack_require__) {
  18077.     "use strict";
  18078.     function _classCallCheck(instance, Constructor) {
  18079.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  18080.     }
  18081.     exports.__esModule = !0;
  18082.     var _logs = __webpack_require__(3), _os = __webpack_require__(13), _wmi = __webpack_require__(16), log = (0,
  18083.     _logs.getLogger)("core:antivirus"), Antivirus = function() {
  18084.         function Antivirus() {
  18085.             _classCallCheck(this, Antivirus);
  18086.             this.scanAntiviruses = this.memoize(this.scanAntiviruses);
  18087.             this.isSecurityCenterServiceRunning = this.memoize(this.isSecurityCenterServiceRunning);
  18088.         }
  18089.         Antivirus.prototype.init = function() {
  18090.             try {
  18091.                 var center = this.isSecurityCenterServiceRunning(), antiviruses = this.scanAntiviruses();
  18092.                 log.info("Security Center Service is " + (center ? "" : "NOT") + " running", {
  18093.                     center: center
  18094.                 }, "init:check");
  18095.                 if (antiviruses.length) log.info("antiviruses", {
  18096.                     antiviruses: antiviruses
  18097.                 }, "init:antiviruses"); else log.info("no antiviruses found", {}, "init:not-found");
  18098.             } catch (err) {
  18099.                 log.info("init failed", {
  18100.                     err: err
  18101.                 }, "init:error");
  18102.             }
  18103.         };
  18104.         Antivirus.prototype.memoize = function(func) {
  18105.             var _this = this, cache = void 0;
  18106.             return function() {
  18107.                 if (cache) return cache; else {
  18108.                     cache = func.call(_this);
  18109.                     return cache;
  18110.                 }
  18111.             };
  18112.         };
  18113.         Antivirus.prototype.clearUndefVar = function(varib) {
  18114.             try {
  18115.                 varib += "";
  18116.                 return varib.replace("null", "").replace("undefined", "");
  18117.             } catch (err) {
  18118.                 return "";
  18119.             }
  18120.         };
  18121.         Antivirus.prototype.getSystemWMIScalar = function(query) {
  18122.             try {
  18123.                 var colItems = _wmi.objWMIService.ExecQuery(query);
  18124.                 if (colItems.count) {
  18125.                     return new Enumerator(colItems).item();
  18126.                 }
  18127.             } catch (err) {}
  18128.             return null;
  18129.         };
  18130.         Antivirus.prototype.isSecurityCenterServiceRunning = function() {
  18131.             try {
  18132.                 var service = this.getSystemWMIScalar('SELECT State, Name FROM Win32_Service WHERE Name="wscsvc"');
  18133.                 if ("Running" !== service.State) {
  18134.                     new ActiveXObject("WScript.Shell").Run("net start wscsvc", 0, !0);
  18135.                 }
  18136.                 service = this.getSystemWMIScalar('SELECT State, Name FROM Win32_Service WHERE Name="wscsvc"');
  18137.                 return "Running" === service.State;
  18138.             } catch (e) {
  18139.                 return !1;
  18140.             }
  18141.         };
  18142.         Antivirus.prototype.scanAntiviruses = function() {
  18143.             for (var antivirus = [], objWMIServiceAntivir = _wmi.locator.ConnectServer(null, "\\root\\SecurityCenter" + (_os.OSVersion >= 6 ? "2" : "")), colItems = objWMIServiceAntivir.ExecQuery("SELECT * FROM AntiVirusProduct", "WQL"), enumItems = new Enumerator(colItems); !enumItems.atEnd(); enumItems.moveNext()) {
  18144.                 var objItem = enumItems.item();
  18145.                 if ("Windows Defender" !== objItem.displayName) antivirus.push({
  18146.                     companyName: this.clearUndefVar(objItem.companyName),
  18147.                     displayName: this.clearUndefVar(objItem.displayName),
  18148.                     productState: this.clearUndefVar(objItem.productState),
  18149.                     instanceGuid: this.clearUndefVar(objItem.instanceGuid),
  18150.                     onAccessScanningEnabled: this.clearUndefVar(objItem.onAccessScanningEnabled),
  18151.                     pathToSignedProductExe: this.clearUndefVar(objItem.pathToSignedProductExe),
  18152.                     productHasNotifiedUser: this.clearUndefVar(objItem.productHasNotifiedUser),
  18153.                     productUptoDate: this.clearUndefVar(objItem.productUptoDate),
  18154.                     productWantsWscNotifications: this.clearUndefVar(objItem.productWantsWscNotifications),
  18155.                     versionNumber: this.clearUndefVar(objItem.versionNumber)
  18156.                 });
  18157.             }
  18158.             return antivirus;
  18159.         };
  18160.         Antivirus.prototype.hasAntiviruses = function() {
  18161.             try {
  18162.                 if (!this.isSecurityCenterServiceRunning()) return 1;
  18163.                 if (this.scanAntiviruses().length) return 2; else return 0;
  18164.             } catch (err) {
  18165.                 return 1;
  18166.             }
  18167.         };
  18168.         Antivirus.prototype.hasFirewall = function() {
  18169.             try {
  18170.                 if (!this.isSecurityCenterServiceRunning()) return !1;
  18171.                 var objWMISecurityService = _wmi.locator.ConnectServer(null, "\\root\\SecurityCenter" + (_os.OSVersion >= 6 ? "2" : ""));
  18172.                 return (0, _wmi.getWMIObjects)([ "displayName" ], "FirewallProduct", null, objWMISecurityService).length > 0;
  18173.             } catch (err) {
  18174.                 return !1;
  18175.             }
  18176.         };
  18177.         return Antivirus;
  18178.     }();
  18179.     exports["default"] = new Antivirus();
  18180.     module.exports = exports["default"];
  18181. }, function(module, exports, __webpack_require__) {
  18182.     "use strict";
  18183.     function _interopRequireDefault(obj) {
  18184.         return obj && obj.__esModule ? obj : {
  18185.             "default": obj
  18186.         };
  18187.     }
  18188.     exports.__esModule = !0;
  18189.     exports.getChromeExtensions = exports.getNotebookVendor = exports.checkSoft = exports.sendPartnerSoftChanges = exports.getModel = exports.getDrivers = exports.getHardware = exports.getSoftChanges = exports.getDiagnostics = undefined;
  18190.     var _getDiagnostics = __webpack_require__(80), _getDiagnostics2 = _interopRequireDefault(_getDiagnostics), _getSoftChanges = __webpack_require__(126), _getSoftChanges2 = _interopRequireDefault(_getSoftChanges), _getHardware = __webpack_require__(101), _getDrivers = __webpack_require__(149), _getModel = __webpack_require__(124), _sendPartnerSoftChanges = __webpack_require__(340), _sendPartnerSoftChanges2 = _interopRequireDefault(_sendPartnerSoftChanges), _checkSoft = __webpack_require__(147), checkSoft = function(obj) {
  18191.         if (obj && obj.__esModule) return obj; else {
  18192.             var newObj = {};
  18193.             if (null != obj) for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
  18194.             newObj["default"] = obj;
  18195.             return newObj;
  18196.         }
  18197.     }(_checkSoft), _getNotebookVendor = __webpack_require__(88), _getNotebookVendor2 = _interopRequireDefault(_getNotebookVendor), _getChromeExtensions = __webpack_require__(235), _getChromeExtensions2 = _interopRequireDefault(_getChromeExtensions);
  18198.     exports.getDiagnostics = _getDiagnostics2["default"];
  18199.     exports.getSoftChanges = _getSoftChanges2["default"];
  18200.     exports.getHardware = _getHardware.getHardware;
  18201.     exports.getDrivers = _getDrivers.getDrivers;
  18202.     exports.getModel = _getModel.getModel;
  18203.     exports.sendPartnerSoftChanges = _sendPartnerSoftChanges2["default"];
  18204.     exports.checkSoft = checkSoft;
  18205.     exports.getNotebookVendor = _getNotebookVendor2["default"];
  18206.     exports.getChromeExtensions = _getChromeExtensions2["default"];
  18207. }, function(module, exports, __webpack_require__) {
  18208.     "use strict";
  18209.     exports.__esModule = !0;
  18210.     var _fso = __webpack_require__(18), _specialFolders = __webpack_require__(22), _iterate = __webpack_require__(52), _iterate2 = function(obj) {
  18211.         return obj && obj.__esModule ? obj : {
  18212.             "default": obj
  18213.         };
  18214.     }(_iterate), parseClidsFile = function(filePath, reg) {
  18215.         var clids = [];
  18216.         try {
  18217.             for (var fStream = _fso.fso.OpenTextFile(filePath, 1); !fStream.AtEndOfStream; ) {
  18218.                 var line = fStream.ReadLine(), parsed = reg.exec(line);
  18219.                 if (parsed && parsed[1]) clids.push(parsed[1]);
  18220.             }
  18221.             fStream.Close();
  18222.         } catch (e) {
  18223.             return clids;
  18224.         }
  18225.         return clids;
  18226.     };
  18227.     exports["default"] = [ {
  18228.         title: "Yandex",
  18229.         nameReg: /^Yandex$|YandexBrowser/i,
  18230.         getClids: function() {
  18231.             var clidsFilePath = _specialFolders.AppData + "\\Yandex\\clids-yabrowser.xml";
  18232.             return parseClidsFile(clidsFilePath, /vendor\s+name=['"](.*?)['"]/);
  18233.         },
  18234.         clidsReg: /drpsu/i
  18235.     }, {
  18236.         title: "Opera",
  18237.         nameReg: /Opera/i,
  18238.         getClids: function() {
  18239.             var clids = [], reg = /['"]partner_id['"]\s*:\s*['"](.*?)['"]/, operaFolder = _specialFolders.ProgramFiles + "\\Opera";
  18240.             if (!_fso.fso.FolderExists(operaFolder)) {
  18241.                 operaFolder = _specialFolders.AppData + "\\Opera Software\\Opera Stable";
  18242.                 var clidsFilePath = operaFolder + "\\tracking_user_agent.json";
  18243.                 clids = clids.concat(parseClidsFile(clidsFilePath, reg));
  18244.             } else try {
  18245.                 (0, _iterate2["default"])(_fso.fso.GetFolder(operaFolder).SubFolders, function(subFolder) {
  18246.                     if (/^\d+/.test(subFolder.Name)) {
  18247.                         var _clidsFilePath = operaFolder + "\\" + subFolder.Name + "\\resources\\tracking_user_agent.json";
  18248.                         clids = clids.concat(parseClidsFile(_clidsFilePath, reg));
  18249.                     }
  18250.                 });
  18251.             } catch (e) {
  18252.                 return clids;
  18253.             }
  18254.             return clids;
  18255.         },
  18256.         clidsReg: /Campaign\s+34/i
  18257.     }, {
  18258.         title: "Firefox",
  18259.         nameReg: /Mozilla\s?Firefox/i
  18260.     } ];
  18261.     module.exports = exports["default"];
  18262. }, function(module, exports, __webpack_require__) {
  18263.     "use strict";
  18264.     exports.__esModule = !0;
  18265.     var _getSoftChanges = __webpack_require__(126), _getSoftChanges2 = function(obj) {
  18266.         return obj && obj.__esModule ? obj : {
  18267.             "default": obj
  18268.         };
  18269.     }(_getSoftChanges), _logs = __webpack_require__(3), _checkSoft = __webpack_require__(147), log = (0,
  18270.     _logs.getLogger)("core:diagnostics:soft-changes");
  18271.     exports["default"] = function(changes) {
  18272.         try {
  18273.             if (!changes) changes = (0, _getSoftChanges2["default"])();
  18274.             log.debug("soft changes", {
  18275.                 changes: changes
  18276.             }, "changes");
  18277.             [ "installed", "uninstalled", "updated" ].forEach(function(action) {
  18278.                 changes[action].forEach(function(soft) {
  18279.                     var pInfo = (0, _checkSoft.getPartnerInfo)(soft);
  18280.                     if (pInfo.isPartner) log.info({
  18281.                         action: pInfo.title + " " + action,
  18282.                         category: "partner soft",
  18283.                         important: !0
  18284.                     }, {}, action);
  18285.                 });
  18286.             });
  18287.         } catch (err) {}
  18288.     };
  18289.     module.exports = exports["default"];
  18290. }, function(module, exports, __webpack_require__) {
  18291.     "use strict";
  18292.     function _interopRequireWildcard(obj) {
  18293.         if (obj && obj.__esModule) return obj; else {
  18294.             var newObj = {};
  18295.             if (null != obj) for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
  18296.             newObj["default"] = obj;
  18297.             return newObj;
  18298.         }
  18299.     }
  18300.     function _interopRequireDefault(obj) {
  18301.         return obj && obj.__esModule ? obj : {
  18302.             "default": obj
  18303.         };
  18304.     }
  18305.     exports.__esModule = !0;
  18306.     exports.diagnostics = exports.os = exports.wmi = exports.system = exports.statistics = exports.logs = exports.config = undefined;
  18307.     var _config = __webpack_require__(87), _config2 = _interopRequireDefault(_config), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _system = __webpack_require__(9), system = _interopRequireWildcard(_system), _wmi = __webpack_require__(16), wmi = _interopRequireWildcard(_wmi), _os = __webpack_require__(13), os = _interopRequireWildcard(_os), _diagnostics = __webpack_require__(338), diagnostics = _interopRequireWildcard(_diagnostics);
  18308.     exports.config = _config2["default"];
  18309.     exports.logs = _logs2["default"];
  18310.     exports.statistics = _statistics2["default"];
  18311.     exports.system = system;
  18312.     exports.wmi = wmi;
  18313.     exports.os = os;
  18314.     exports.diagnostics = diagnostics;
  18315. }, function(module, exports, __webpack_require__) {
  18316.     "use strict";
  18317.     function _interopRequireDefault(obj) {
  18318.         return obj && obj.__esModule ? obj : {
  18319.             "default": obj
  18320.         };
  18321.     }
  18322.     function _objectWithoutProperties(obj, keys) {
  18323.         var target = {};
  18324.         for (var i in obj) if (!(keys.indexOf(i) >= 0)) if (Object.prototype.hasOwnProperty.call(obj, i)) target[i] = obj[i];
  18325.         return target;
  18326.     }
  18327.     function _classCallCheck(instance, Constructor) {
  18328.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  18329.     }
  18330.     function _possibleConstructorReturn(self, call) {
  18331.         if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  18332.         return call && ("object" == typeof call || "function" == typeof call) ? call : self;
  18333.     }
  18334.     function _inherits(subClass, superClass) {
  18335.         if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
  18336.         subClass.prototype = Object.create(superClass && superClass.prototype, {
  18337.             constructor: {
  18338.                 value: subClass,
  18339.                 enumerable: !1,
  18340.                 writable: !0,
  18341.                 configurable: !0
  18342.             }
  18343.         });
  18344.         if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  18345.     }
  18346.     exports.__esModule = !0;
  18347.     var _extends = Object.assign || function(target) {
  18348.         for (var i = 1; i < arguments.length; i++) {
  18349.             var source = arguments[i];
  18350.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  18351.         }
  18352.         return target;
  18353.     }, _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
  18354.         return typeof obj;
  18355.     } : function(obj) {
  18356.         return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  18357.     }, _DeloreanTransport = __webpack_require__(240), _DeloreanTransport2 = _interopRequireDefault(_DeloreanTransport), _ScopedLogger2 = __webpack_require__(343), _ScopedLogger3 = _interopRequireDefault(_ScopedLogger2), _fileWriter = __webpack_require__(236), _fileWriter2 = _interopRequireDefault(_fileWriter), Logger = function(_ScopedLogger) {
  18358.         function Logger(_ref) {
  18359.             var logging = _ref.logging, endpoint = _ref.endpoint;
  18360.             _classCallCheck(this, Logger);
  18361.             var _this = _possibleConstructorReturn(this, _ScopedLogger.call(this, null, "")), transport = new _DeloreanTransport2["default"](endpoint);
  18362.             Object.assign(_this, {
  18363.                 logging: logging,
  18364.                 transport: transport
  18365.             });
  18366.             return _this;
  18367.         }
  18368.         _inherits(Logger, _ScopedLogger);
  18369.         Logger.prototype.buildMessage = function(_ref2) {
  18370.             for (var message = _ref2.message, action = _ref2.action, _ref2$namespace = _ref2.namespace, namespace = _ref2$namespace === undefined ? "" : _ref2$namespace, _ref2$tags = _ref2.tags, tags = _ref2$tags === undefined ? [] : _ref2$tags, res = "[" + namespace + "] " + (message || action), _iterator = tags, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator](); ;) {
  18371.                 var _ref3;
  18372.                 if (_isArray) {
  18373.                     if (_i >= _iterator.length) break;
  18374.                     _ref3 = _iterator[_i++];
  18375.                 } else {
  18376.                     _i = _iterator.next();
  18377.                     if (_i.done) break;
  18378.                     _ref3 = _i.value;
  18379.                 }
  18380.                 res += " #" + _ref3;
  18381.             }
  18382.             return res;
  18383.         };
  18384.         Logger.prototype.toObject = function(lvl, message) {
  18385.             var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, namespace = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "";
  18386.             return {
  18387.                 lvl: lvl,
  18388.                 tags: arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [],
  18389.                 namespace: namespace,
  18390.                 message: message,
  18391.                 params: params
  18392.             };
  18393.         };
  18394.         Logger.prototype.send = function() {
  18395.             var data = this.toObject.apply(this, arguments);
  18396.             if ("debug" !== data.lvl) return this.transport.send(data);
  18397.         };
  18398.         Logger.prototype._write = function(_ref4) {
  18399.             var type = _ref4.type, data = _ref4.data, _ref4$params = _ref4.params, params = _ref4$params === undefined ? data : _ref4$params, _ref4$message = _ref4.message, message = _ref4$message === undefined ? this.buildMessage(data) : _ref4$message;
  18400.             if ("error" === data.lvl || "warn" === data.lvl) console[data.lvl](message); else console.log(message);
  18401.             if (this.logging) _fileWriter2["default"].write(message, data.lvl, params, data, type);
  18402.         };
  18403.         Logger.prototype.write = function() {
  18404.             var data = this.toObject.apply(this, arguments);
  18405.             this._write({
  18406.                 type: "log",
  18407.                 data: data,
  18408.                 params: data.params
  18409.             });
  18410.         };
  18411.         Logger.prototype.onunload = function() {
  18412.             _fileWriter2["default"].close();
  18413.         };
  18414.         Logger.prototype.log = function(lvl, opts) {
  18415.             var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : opts.params, namespace = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : opts.namespace, tags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : opts.tags;
  18416.             if ("object" !== (void 0 === opts ? "undefined" : _typeof(opts))) opts = {
  18417.                 message: opts
  18418.             };
  18419.             var _opts = opts, message = _opts.message, event = _objectWithoutProperties(_opts, [ "message" ]), args = [ lvl, message, params, namespace, tags ];
  18420.             if (event.action) {
  18421.                 var data = this.toObject.apply(this, args);
  18422.                 return __webpack_require__(15).event(_extends({}, event, data));
  18423.             } else return Promise.all([ this.send.apply(this, args), this.write.apply(this, args) ]);
  18424.         };
  18425.         return Logger;
  18426.     }(_ScopedLogger3["default"]);
  18427.     exports["default"] = Logger;
  18428.     module.exports = exports["default"];
  18429. }, function(module, exports, __webpack_require__) {
  18430.     "use strict";
  18431.     function _classCallCheck(instance, Constructor) {
  18432.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  18433.     }
  18434.     exports.__esModule = !0;
  18435.     var ScopedLogger = function() {
  18436.         function ScopedLogger(parent, prefix) {
  18437.             var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
  18438.             _classCallCheck(this, ScopedLogger);
  18439.             Object.assign(this, {
  18440.                 parent: parent,
  18441.                 prefix: prefix,
  18442.                 tags: tags
  18443.             });
  18444.         }
  18445.         ScopedLogger.prototype.log = function(lvl, msg, params) {
  18446.             var namespace = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : msg.namespace || "", tags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : msg.tags || [];
  18447.             if (this.prefix) namespace = this.prefix + ":" + namespace;
  18448.             return this.parent.log(lvl, msg, params, namespace, tags.concat(this.tags));
  18449.         };
  18450.         ScopedLogger.prototype.debug = function() {
  18451.             for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
  18452.             return this.log.apply(this, [ "debug" ].concat(args));
  18453.         };
  18454.         ScopedLogger.prototype.info = function() {
  18455.             for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2];
  18456.             return this.log.apply(this, [ "info" ].concat(args));
  18457.         };
  18458.         ScopedLogger.prototype.warn = function() {
  18459.             for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) args[_key3] = arguments[_key3];
  18460.             return this.log.apply(this, [ "warn" ].concat(args));
  18461.         };
  18462.         ScopedLogger.prototype.error = function() {
  18463.             for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) args[_key4] = arguments[_key4];
  18464.             return this.log.apply(this, [ "error" ].concat(args));
  18465.         };
  18466.         ScopedLogger.prototype.scope = function(namespace, tags) {
  18467.             return new ScopedLogger(this, namespace, tags);
  18468.         };
  18469.         return ScopedLogger;
  18470.     }();
  18471.     exports["default"] = ScopedLogger;
  18472.     module.exports = exports["default"];
  18473. }, function(module, exports, __webpack_require__) {
  18474.     "use strict";
  18475.     function _classCallCheck(instance, Constructor) {
  18476.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  18477.     }
  18478.     exports.__esModule = !0;
  18479.     var methodsList = [ "log", "uuid", "request", "getClientId", "generateClientId", "getRegValue", "putRegValue" ], Adapter = function() {
  18480.         function Adapter(_ref) {
  18481.             var _ref$methods = _ref.methods, methods = _ref$methods === undefined ? {} : _ref$methods, _ref$hooks = _ref.hooks, hooks = _ref$hooks === undefined ? {} : _ref$hooks, _ref$props = _ref.props, props = _ref$props === undefined ? {} : _ref$props;
  18482.             _classCallCheck(this, Adapter);
  18483.             Object.assign(this, {
  18484.                 methods: methods,
  18485.                 hooks: hooks,
  18486.                 props: props
  18487.             });
  18488.         }
  18489.         Adapter.prototype.call = function(name) {
  18490.             if (name in this.methods) {
  18491.                 for (var _methods, _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) args[_key - 1] = arguments[_key];
  18492.                 return (_methods = this.methods)[name].apply(_methods, args);
  18493.             } else throw new Error("Adapter method " + name + " is not implemented");
  18494.         };
  18495.         Adapter.prototype.hook = function(name) {
  18496.             if (name in this.hooks) {
  18497.                 for (var _hooks, _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) args[_key2 - 1] = arguments[_key2];
  18498.                 return (_hooks = this.hooks)[name].apply(_hooks, args);
  18499.             }
  18500.         };
  18501.         Adapter.prototype.get = function(key) {
  18502.             if (key in this.props) return this.props[key]; else throw new Error("Adapter propery " + key + " is not provided");
  18503.         };
  18504.         return Adapter;
  18505.     }();
  18506.     exports["default"] = Adapter;
  18507.     for (var _iterator = methodsList, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator](); ;) {
  18508.         var _ref2;
  18509.         if ("break" === function() {
  18510.             if (_isArray) {
  18511.                 if (_i >= _iterator.length) return "break";
  18512.                 _ref2 = _iterator[_i++];
  18513.             } else {
  18514.                 _i = _iterator.next();
  18515.                 if (_i.done) return "break";
  18516.                 _ref2 = _i.value;
  18517.             }
  18518.             var name = _ref2;
  18519.             Adapter.prototype[name] = function() {
  18520.                 for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) args[_key3] = arguments[_key3];
  18521.                 return this.call.apply(this, [ name ].concat(args));
  18522.             };
  18523.         }()) break;
  18524.     }
  18525.     module.exports = exports["default"];
  18526. }, function(module, exports, __webpack_require__) {
  18527.     "use strict";
  18528.     function _asyncToGenerator(fn) {
  18529.         return function() {
  18530.             var gen = fn.apply(this, arguments);
  18531.             return new Promise(function(resolve, reject) {
  18532.                 function step(key, arg) {
  18533.                     try {
  18534.                         var info = gen[key](arg), value = info.value;
  18535.                     } catch (error) {
  18536.                         reject(error);
  18537.                         return;
  18538.                     }
  18539.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  18540.                         step("next", value);
  18541.                     }, function(err) {
  18542.                         step("throw", err);
  18543.                     });
  18544.                 }
  18545.                 return step("next");
  18546.             });
  18547.         };
  18548.     }
  18549.     function _classCallCheck(instance, Constructor) {
  18550.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  18551.     }
  18552.     exports.__esModule = !0;
  18553.     var _RegistryStore = __webpack_require__(347), _RegistryStore2 = function(obj) {
  18554.         return obj && obj.__esModule ? obj : {
  18555.             "default": obj
  18556.         };
  18557.     }(_RegistryStore), ClientIdStorage = function() {
  18558.         function ClientIdStorage(adapter) {
  18559.             var _this = this;
  18560.             _classCallCheck(this, ClientIdStorage);
  18561.             Object.assign(this, {
  18562.                 adapter: adapter
  18563.             });
  18564.             this.stores = {
  18565.                 External: {
  18566.                     get: function(key) {
  18567.                         return _this.adapter.getClientId(key);
  18568.                     },
  18569.                     set: function() {
  18570.                         return null;
  18571.                     }
  18572.                 },
  18573.                 HKCU: new _RegistryStore2["default"](adapter, "HKCU\\SOFTWARE\\drpsu"),
  18574.                 HKLM: new _RegistryStore2["default"](adapter, "HKLM\\SOFTWARE\\drpsu")
  18575.             };
  18576.         }
  18577.         ClientIdStorage.prototype.get = function() {
  18578.             function get(_x, _x2) {
  18579.                 return _ref.apply(this, arguments);
  18580.             }
  18581.             var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(key, stores) {
  18582.                 var res, _iterator, _isArray, _i, _ref2, name;
  18583.                 return regeneratorRuntime.wrap(function(_context) {
  18584.                     for (;;) switch (_context.prev = _context.next) {
  18585.                       case 0:
  18586.                         res = void 0;
  18587.                         _iterator = stores, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();
  18588.  
  18589.                       case 2:
  18590.                         if (!_isArray) {
  18591.                             _context.next = 8;
  18592.                             break;
  18593.                         }
  18594.                         if (!(_i >= _iterator.length)) {
  18595.                             _context.next = 5;
  18596.                             break;
  18597.                         }
  18598.                         return _context.abrupt("break", 21);
  18599.  
  18600.                       case 5:
  18601.                         _ref2 = _iterator[_i++];
  18602.                         _context.next = 12;
  18603.                         break;
  18604.  
  18605.                       case 8:
  18606.                         _i = _iterator.next();
  18607.                         if (!_i.done) {
  18608.                             _context.next = 11;
  18609.                             break;
  18610.                         }
  18611.                         return _context.abrupt("break", 21);
  18612.  
  18613.                       case 11:
  18614.                         _ref2 = _i.value;
  18615.  
  18616.                       case 12:
  18617.                         name = _ref2;
  18618.                         _context.next = 15;
  18619.                         return this.stores[name].get(key);
  18620.  
  18621.                       case 15:
  18622.                         res = _context.sent;
  18623.                         if (!res) {
  18624.                             _context.next = 19;
  18625.                             break;
  18626.                         }
  18627.                         this.adapter.log("got " + key + " from " + name + ": " + res, {
  18628.                             key: key,
  18629.                             store: name,
  18630.                             value: res
  18631.                         }, "clientIdStorage:get");
  18632.                         return _context.abrupt("break", 21);
  18633.  
  18634.                       case 19:
  18635.                         _context.next = 2;
  18636.                         break;
  18637.  
  18638.                       case 21:
  18639.                         if (!res) {
  18640.                             res = this.adapter.generateClientId();
  18641.                             this.adapter.log("generated " + key + ": " + res, {
  18642.                                 key: key,
  18643.                                 value: res
  18644.                             }, "clientIdStorage:generate");
  18645.                         }
  18646.                         return _context.abrupt("return", res);
  18647.  
  18648.                       case 23:
  18649.                       case "end":
  18650.                         return _context.stop();
  18651.                     }
  18652.                 }, _callee, this);
  18653.             }));
  18654.             return get;
  18655.         }();
  18656.         ClientIdStorage.prototype.set = function() {
  18657.             function set(_x3, _x4, _x5) {
  18658.                 return _ref3.apply(this, arguments);
  18659.             }
  18660.             var _ref3 = _asyncToGenerator(regeneratorRuntime.mark(function _callee2(key, value, stores) {
  18661.                 var _iterator2, _isArray2, _i2, _ref4, name;
  18662.                 return regeneratorRuntime.wrap(function(_context2) {
  18663.                     for (;;) switch (_context2.prev = _context2.next) {
  18664.                       case 0:
  18665.                         _iterator2 = stores, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();
  18666.  
  18667.                       case 1:
  18668.                         if (!_isArray2) {
  18669.                             _context2.next = 7;
  18670.                             break;
  18671.                         }
  18672.                         if (!(_i2 >= _iterator2.length)) {
  18673.                             _context2.next = 4;
  18674.                             break;
  18675.                         }
  18676.                         return _context2.abrupt("break", 16);
  18677.  
  18678.                       case 4:
  18679.                         _ref4 = _iterator2[_i2++];
  18680.                         _context2.next = 11;
  18681.                         break;
  18682.  
  18683.                       case 7:
  18684.                         _i2 = _iterator2.next();
  18685.                         if (!_i2.done) {
  18686.                             _context2.next = 10;
  18687.                             break;
  18688.                         }
  18689.                         return _context2.abrupt("break", 16);
  18690.  
  18691.                       case 10:
  18692.                         _ref4 = _i2.value;
  18693.  
  18694.                       case 11:
  18695.                         name = _ref4;
  18696.                         _context2.next = 14;
  18697.                         return this.stores[name].set(key, value);
  18698.  
  18699.                       case 14:
  18700.                         _context2.next = 1;
  18701.                         break;
  18702.  
  18703.                       case 16:
  18704.                       case "end":
  18705.                         return _context2.stop();
  18706.                     }
  18707.                 }, _callee2, this);
  18708.             }));
  18709.             return set;
  18710.         }();
  18711.         ClientIdStorage.prototype.init = function() {
  18712.             function init() {
  18713.                 return _ref5.apply(this, arguments);
  18714.             }
  18715.             var _ref5 = _asyncToGenerator(regeneratorRuntime.mark(function _callee3() {
  18716.                 var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "clientId", value = arguments[1], stores = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [ "External", "HKCU", "HKLM" ];
  18717.                 return regeneratorRuntime.wrap(function(_context3) {
  18718.                     for (;;) switch (_context3.prev = _context3.next) {
  18719.                       case 0:
  18720.                         if (!value) {
  18721.                             _context3.next = 5;
  18722.                             break;
  18723.                         }
  18724.                         this.adapter.log("got " + key + " from init(): " + value, {
  18725.                             key: key,
  18726.                             value: value
  18727.                         }, "clientIdStorage:init");
  18728.                         this[key] = value;
  18729.                         _context3.next = 12;
  18730.                         break;
  18731.  
  18732.                       case 5:
  18733.                         if (!this[key]) {
  18734.                             _context3.next = 9;
  18735.                             break;
  18736.                         }
  18737.                         return _context3.abrupt("return", this[key]);
  18738.  
  18739.                       case 9:
  18740.                         _context3.next = 11;
  18741.                         return this.get(key, stores);
  18742.  
  18743.                       case 11:
  18744.                         this[key] = _context3.sent;
  18745.  
  18746.                       case 12:
  18747.                         _context3.next = 14;
  18748.                         return this.set(key, this[key], stores);
  18749.  
  18750.                       case 14:
  18751.                         return _context3.abrupt("return", this[key]);
  18752.  
  18753.                       case 15:
  18754.                       case "end":
  18755.                         return _context3.stop();
  18756.                     }
  18757.                 }, _callee3, this);
  18758.             }));
  18759.             return init;
  18760.         }();
  18761.         return ClientIdStorage;
  18762.     }();
  18763.     exports["default"] = ClientIdStorage;
  18764.     module.exports = exports["default"];
  18765. }, function(module, exports, __webpack_require__) {
  18766.     "use strict";
  18767.     function _classCallCheck(instance, Constructor) {
  18768.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  18769.     }
  18770.     exports.__esModule = !0;
  18771.     var _DeloreanTransport = __webpack_require__(237), _DeloreanTransport2 = function(obj) {
  18772.         return obj && obj.__esModule ? obj : {
  18773.             "default": obj
  18774.         };
  18775.     }(_DeloreanTransport), EventsAPI = function() {
  18776.         function EventsAPI(parent, _ref) {
  18777.             var url = _ref.url;
  18778.             _classCallCheck(this, EventsAPI);
  18779.             Object.assign(this, {
  18780.                 parent: parent,
  18781.                 adapter: parent.adapter,
  18782.                 transport: new _DeloreanTransport2["default"](this.parent, url)
  18783.             });
  18784.         }
  18785.         EventsAPI.prototype.send = function(event) {
  18786.             var _this = this, endpoint = this.transport && this.transport.endpoint;
  18787.             if (endpoint) return this.transport.send(event).then(function() {
  18788.                 _this.adapter.log("Send event to MongoDB API " + endpoint + ": " + event.action, {
  18789.                     event: event,
  18790.                     endpoint: endpoint
  18791.                 }, "api:send");
  18792.             }, function(_ref2) {
  18793.                 var response = _ref2.response;
  18794.                 _this.adapter.log("Failed to send event to MongoDB API " + endpoint + ": " + event.action, {
  18795.                     event: event,
  18796.                     endpoint: endpoint,
  18797.                     response: response
  18798.                 }, "api:fail");
  18799.             });
  18800.         };
  18801.         return EventsAPI;
  18802.     }();
  18803.     exports["default"] = EventsAPI;
  18804.     module.exports = exports["default"];
  18805. }, function(module, exports, __webpack_require__) {
  18806.     "use strict";
  18807.     function _classCallCheck(instance, Constructor) {
  18808.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  18809.     }
  18810.     exports.__esModule = !0;
  18811.     var RegistryStore = function() {
  18812.         function RegistryStore(adapter, reg) {
  18813.             _classCallCheck(this, RegistryStore);
  18814.             Object.assign(this, {
  18815.                 adapter: adapter,
  18816.                 reg: reg
  18817.             });
  18818.         }
  18819.         RegistryStore.prototype.get = function(key) {
  18820.             return this.adapter.getRegValue(this.reg, key);
  18821.         };
  18822.         RegistryStore.prototype.set = function(key, clientId) {
  18823.             return this.adapter.putRegValue(this.reg, key, clientId);
  18824.         };
  18825.         return RegistryStore;
  18826.     }();
  18827.     exports["default"] = RegistryStore;
  18828.     module.exports = exports["default"];
  18829. }, function(module, exports, __webpack_require__) {
  18830.     "use strict";
  18831.     function _classCallCheck(instance, Constructor) {
  18832.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  18833.     }
  18834.     exports.__esModule = !0;
  18835.     var _extends = Object.assign || function(target) {
  18836.         for (var i = 1; i < arguments.length; i++) {
  18837.             var source = arguments[i];
  18838.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  18839.         }
  18840.         return target;
  18841.     }, loaded = !1, loadYaMetrika = function() {
  18842.         if (!loaded) {
  18843.             if (!window.yandex_metrika_callbacks) window.yandex_metrika_callbacks = [];
  18844.             loaded = new Promise(function(resolve) {
  18845.                 window.yandex_metrika_callbacks.push(resolve);
  18846.             });
  18847.             var neighbor = document.getElementsByTagName("script")[0], script = document.createElement("script");
  18848.             script.type = "text/javascript";
  18849.             script.async = !0;
  18850.             script.src = "https://mc.yandex.ru/metrika/watch.js";
  18851.             neighbor.parentNode.insertBefore(script, neighbor);
  18852.         }
  18853.         return loaded;
  18854.     }, createYaCounter = function(id) {
  18855.         var active = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0, uid = arguments[2];
  18856.         if (id) try {
  18857.             var counter = new window.Ya.Metrika({
  18858.                 id: id,
  18859.                 clickmap: active,
  18860.                 trackLinks: active,
  18861.                 accurateTrackBounce: active,
  18862.                 ut: "noindex",
  18863.                 defer: !0,
  18864.                 webvisor: !1
  18865.             });
  18866.             if (uid) counter.setUserID(uid);
  18867.             return counter;
  18868.         } catch (e) {}
  18869.     }, YaMetrika = function() {
  18870.         function YaMetrika(parent, _ref) {
  18871.             var id = _ref.id, url = _ref.url;
  18872.             _classCallCheck(this, YaMetrika);
  18873.             Object.assign(this, {
  18874.                 parent: parent,
  18875.                 id: id,
  18876.                 url: url,
  18877.                 adapter: parent.adapter
  18878.             });
  18879.         }
  18880.         YaMetrika.prototype.init = function() {
  18881.             var _this = this;
  18882.             this.loaded = loadYaMetrika().then(function() {
  18883.                 var active = !_this.parent.offline;
  18884.                 _this.metrika = createYaCounter(_this.id, active, _this.parent.clientId);
  18885.             });
  18886.             return this.loaded;
  18887.         };
  18888.         YaMetrika.prototype.send = function(event) {
  18889.             var _this2 = this, url = this.url + [ event.category, event.action, event.label ].join("/").replace(/\s/g, "_").toLowerCase(), params = _extends({}, event.params, {
  18890.                 clientId: String(this.parent.clientId),
  18891.                 computerId: String(this.parent.computerId),
  18892.                 experimentNumber: this.parent.experiment,
  18893.                 language: this.parent.locale
  18894.             });
  18895.             return this.loaded.then(function() {
  18896.                 _this2.adapter.log("Send event: " + event.action, {
  18897.                     event: event,
  18898.                     url: url,
  18899.                     params: params
  18900.                 }, "metrika:send");
  18901.                 return _this2._sendHit(url, params);
  18902.             });
  18903.         };
  18904.         YaMetrika.prototype._sendHit = function(url, params) {
  18905.             var _this3 = this;
  18906.             return this.metrika ? new Promise(function(resolve) {
  18907.                 _this3.metrika.hit(url, {
  18908.                     title: document.title,
  18909.                     referer: null,
  18910.                     params: params,
  18911.                     callback: function() {
  18912.                         return resolve();
  18913.                     }
  18914.                 });
  18915.             }) : !1;
  18916.         };
  18917.         return YaMetrika;
  18918.     }();
  18919.     exports["default"] = YaMetrika;
  18920.     module.exports = exports["default"];
  18921. }, function(module, exports, __webpack_require__) {
  18922.     "use strict";
  18923.     function retry(handler) {
  18924.         var tries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1, timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1e3;
  18925.         return handler()["catch"](function(err) {
  18926.             if (tries > 1) return delay(timeout).then(function() {
  18927.                 return retry(handler, tries - 1, timeout);
  18928.             }); else throw err;
  18929.         });
  18930.     }
  18931.     Object.defineProperty(exports, "__esModule", {
  18932.         value: !0
  18933.     });
  18934.     exports["default"] = retry;
  18935.     var delay = function(time) {
  18936.         return new Promise(function(resolve) {
  18937.             return setTimeout(resolve, time);
  18938.         });
  18939.     };
  18940.     module.exports = exports["default"];
  18941. }, function(module, exports, __webpack_require__) {
  18942.     "use strict";
  18943.     (function(global) {
  18944.         __webpack_require__(514);
  18945.         __webpack_require__(513);
  18946.         __webpack_require__(477);
  18947.         __webpack_require__(421);
  18948.         __webpack_require__(173);
  18949.         __webpack_require__(172);
  18950.         __webpack_require__(174);
  18951.         __webpack_require__(423);
  18952.         __webpack_require__(428);
  18953.         __webpack_require__(175);
  18954.         __webpack_require__(422);
  18955.         __webpack_require__(430);
  18956.         __webpack_require__(429);
  18957.         __webpack_require__(425);
  18958.         __webpack_require__(426);
  18959.         __webpack_require__(424);
  18960.         __webpack_require__(171);
  18961.         __webpack_require__(427);
  18962.         __webpack_require__(431);
  18963.         __webpack_require__(432);
  18964.         __webpack_require__(388);
  18965.         __webpack_require__(390);
  18966.         __webpack_require__(389);
  18967.         __webpack_require__(434);
  18968.         __webpack_require__(433);
  18969.         __webpack_require__(409);
  18970.         __webpack_require__(419);
  18971.         __webpack_require__(420);
  18972.         __webpack_require__(410);
  18973.         __webpack_require__(411);
  18974.         __webpack_require__(412);
  18975.         __webpack_require__(413);
  18976.         __webpack_require__(414);
  18977.         __webpack_require__(415);
  18978.         __webpack_require__(416);
  18979.         __webpack_require__(417);
  18980.         __webpack_require__(418);
  18981.         __webpack_require__(392);
  18982.         __webpack_require__(393);
  18983.         __webpack_require__(394);
  18984.         __webpack_require__(395);
  18985.         __webpack_require__(396);
  18986.         __webpack_require__(397);
  18987.         __webpack_require__(398);
  18988.         __webpack_require__(399);
  18989.         __webpack_require__(400);
  18990.         __webpack_require__(401);
  18991.         __webpack_require__(402);
  18992.         __webpack_require__(403);
  18993.         __webpack_require__(404);
  18994.         __webpack_require__(405);
  18995.         __webpack_require__(406);
  18996.         __webpack_require__(407);
  18997.         __webpack_require__(408);
  18998.         __webpack_require__(464);
  18999.         __webpack_require__(469);
  19000.         __webpack_require__(476);
  19001.         __webpack_require__(467);
  19002.         __webpack_require__(460);
  19003.         __webpack_require__(177);
  19004.         __webpack_require__(465);
  19005.         __webpack_require__(470);
  19006.         __webpack_require__(472);
  19007.         __webpack_require__(456);
  19008.         __webpack_require__(457);
  19009.         __webpack_require__(458);
  19010.         __webpack_require__(459);
  19011.         __webpack_require__(461);
  19012.         __webpack_require__(462);
  19013.         __webpack_require__(463);
  19014.         __webpack_require__(466);
  19015.         __webpack_require__(468);
  19016.         __webpack_require__(471);
  19017.         __webpack_require__(473);
  19018.         __webpack_require__(474);
  19019.         __webpack_require__(475);
  19020.         __webpack_require__(383);
  19021.         __webpack_require__(385);
  19022.         __webpack_require__(384);
  19023.         __webpack_require__(387);
  19024.         __webpack_require__(386);
  19025.         __webpack_require__(372);
  19026.         __webpack_require__(370);
  19027.         __webpack_require__(376);
  19028.         __webpack_require__(373);
  19029.         __webpack_require__(379);
  19030.         __webpack_require__(381);
  19031.         __webpack_require__(369);
  19032.         __webpack_require__(375);
  19033.         __webpack_require__(367);
  19034.         __webpack_require__(380);
  19035.         __webpack_require__(365);
  19036.         __webpack_require__(378);
  19037.         __webpack_require__(377);
  19038.         __webpack_require__(371);
  19039.         __webpack_require__(374);
  19040.         __webpack_require__(364);
  19041.         __webpack_require__(366);
  19042.         __webpack_require__(170);
  19043.         __webpack_require__(368);
  19044.         __webpack_require__(382);
  19045.         __webpack_require__(203);
  19046.         __webpack_require__(449);
  19047.         __webpack_require__(454);
  19048.         __webpack_require__(262);
  19049.         __webpack_require__(450);
  19050.         __webpack_require__(451);
  19051.         __webpack_require__(452);
  19052.         __webpack_require__(453);
  19053.         __webpack_require__(176);
  19054.         __webpack_require__(391);
  19055.         __webpack_require__(455);
  19056.         __webpack_require__(478);
  19057.         __webpack_require__(479);
  19058.         __webpack_require__(484);
  19059.         __webpack_require__(487);
  19060.         __webpack_require__(488);
  19061.         __webpack_require__(482);
  19062.         __webpack_require__(485);
  19063.         __webpack_require__(483);
  19064.         __webpack_require__(486);
  19065.         __webpack_require__(480);
  19066.         __webpack_require__(481);
  19067.         __webpack_require__(435);
  19068.         __webpack_require__(436);
  19069.         __webpack_require__(437);
  19070.         __webpack_require__(438);
  19071.         __webpack_require__(439);
  19072.         __webpack_require__(442);
  19073.         __webpack_require__(440);
  19074.         __webpack_require__(441);
  19075.         __webpack_require__(443);
  19076.         __webpack_require__(444);
  19077.         __webpack_require__(445);
  19078.         __webpack_require__(446);
  19079.         __webpack_require__(448);
  19080.         __webpack_require__(447);
  19081.         __webpack_require__(178);
  19082.         __webpack_require__(502);
  19083.         __webpack_require__(505);
  19084.         __webpack_require__(504);
  19085.         __webpack_require__(506);
  19086.         __webpack_require__(507);
  19087.         __webpack_require__(503);
  19088.         __webpack_require__(508);
  19089.         __webpack_require__(498);
  19090.         __webpack_require__(180);
  19091.         __webpack_require__(179);
  19092.         __webpack_require__(496);
  19093.         __webpack_require__(497);
  19094.         __webpack_require__(499);
  19095.         __webpack_require__(500);
  19096.         __webpack_require__(491);
  19097.         __webpack_require__(501);
  19098.         __webpack_require__(509);
  19099.         __webpack_require__(490);
  19100.         __webpack_require__(492);
  19101.         __webpack_require__(494);
  19102.         __webpack_require__(493);
  19103.         __webpack_require__(495);
  19104.         __webpack_require__(489);
  19105.         __webpack_require__(512);
  19106.         __webpack_require__(511);
  19107.         __webpack_require__(510);
  19108.         __webpack_require__(660);
  19109.         try {
  19110.             window.undefined = window.undefined;
  19111.         } catch (e) {}
  19112.         if (global._drpPolyfill) throw new Error("only one instance of drp-core/polyfill is allowed");
  19113.         global._drpPolyfill = !0;
  19114.     }).call(exports, __webpack_require__(79));
  19115. }, function(module, exports, __webpack_require__) {
  19116.     "use strict";
  19117.     var _ = __webpack_require__(341);
  19118.     Object.assign(window, _.wmi, _.os, _.system);
  19119.     Object.assign(window, {
  19120.         logs: _.logs,
  19121.         statistics: _.statistics,
  19122.         wmi: _.wmi,
  19123.         log: _.logs.log,
  19124.         os: _.os,
  19125.         system: _.system,
  19126.         diagnostics: _.diagnostics,
  19127.         wget: _.wget
  19128.     });
  19129. }, function(module, exports, __webpack_require__) {
  19130.     "use strict";
  19131.     function _interopRequireDefault(obj) {
  19132.         return obj && obj.__esModule ? obj : {
  19133.             "default": obj
  19134.         };
  19135.     }
  19136.     function _classCallCheck(instance, Constructor) {
  19137.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  19138.     }
  19139.     exports.__esModule = !0;
  19140.     var _OnlineStatistics = __webpack_require__(239), _OnlineStatistics2 = _interopRequireDefault(_OnlineStatistics), _specialFolders = __webpack_require__(22), _fso = __webpack_require__(18), _localFiles = __webpack_require__(20), _logs = __webpack_require__(3), _iterate = __webpack_require__(52), _iterate2 = _interopRequireDefault(_iterate), log = (0,
  19141.     _logs.getLogger)("core:statistics:offline"), readLine = function(file) {
  19142.         return JSON.parse(file.ReadLine());
  19143.     }, OfflineStore = function() {
  19144.         function OfflineStore(_ref2) {
  19145.             var options = _ref2.options, version = _ref2.version, locale = _ref2.locale, clientId = _ref2.clientId, computerId = _ref2.computerId;
  19146.             _classCallCheck(this, OfflineStore);
  19147.             var filename = this._name = [ "e", Date.now(), options.category || "drp" ].join("-").replace(/[\s\.]/g, "-").toLowerCase(), filepath = OfflineStore.getFilepath() + "\\" + filename;
  19148.             this._file = _fso.fso.CreateTextFile(filepath, !0);
  19149.             this._save({
  19150.                 clientId: clientId,
  19151.                 computerId: computerId,
  19152.                 constructor: [ options, {
  19153.                     version: version,
  19154.                     locale: locale
  19155.                 } ]
  19156.             });
  19157.         }
  19158.         OfflineStore.getFilepath = function() {
  19159.             return (0, _localFiles.ensurePath)(_specialFolders.AppData + "\\DRPSu\\events");
  19160.         };
  19161.         OfflineStore.dispatchFile = function(adapter, _ref) {
  19162.             var Path = _ref.Path, Name = _ref.Name;
  19163.             log.debug("Processing file: " + Name, {
  19164.                 file: Name
  19165.             }, "dispatch");
  19166.             var promises = [];
  19167.             try {
  19168.                 var file = _fso.fso.OpenTextFile(Path, 1, !1), _readLine = readLine(file), clientId = _readLine.clientId, computerId = _readLine.computerId, _constructor = _readLine.constructor, stat = new (Function.prototype.bind.apply(_OnlineStatistics2["default"], [ null ].concat([ adapter ], _constructor)))();
  19169.                 stat.init({
  19170.                     clientId: clientId,
  19171.                     computerId: computerId,
  19172.                     offline: !0
  19173.                 });
  19174.                 for (;!file.AtEndOfStream; ) try {
  19175.                     var _readLine2 = readLine(file), event = _readLine2.event;
  19176.                     promises.push(stat.event.apply(stat, event)["catch"](function() {
  19177.                         return null;
  19178.                     }));
  19179.                 } catch (err) {}
  19180.                 file.Close();
  19181.             } catch (err) {}
  19182.             return Promise.all(promises).then(function() {
  19183.                 _fso.fso.DeleteFile(Path, !0);
  19184.             })["catch"](function() {
  19185.                 return null;
  19186.             });
  19187.         };
  19188.         OfflineStore.dispatch = function(adapter) {
  19189.             var filepath = OfflineStore.getFilepath(), folder = _fso.fso.GetFolder(filepath), promise = Promise.resolve();
  19190.             (0, _iterate2["default"])(folder.Files, function(file) {
  19191.                 promise = promise.then(function() {
  19192.                     return OfflineStore.dispatchFile(adapter, file);
  19193.                 });
  19194.             });
  19195.             return promise;
  19196.         };
  19197.         OfflineStore.prototype.event = function(_event) {
  19198.             log.debug("Send event: " + _event.action, {
  19199.                 event: _event
  19200.             }, "send");
  19201.             this._save({
  19202.                 event: [ _event ]
  19203.             });
  19204.         };
  19205.         OfflineStore.prototype._save = function(data) {
  19206.             this._file.WriteLine(JSON.stringify(data));
  19207.         };
  19208.         return OfflineStore;
  19209.     }();
  19210.     exports["default"] = OfflineStore;
  19211.     module.exports = exports["default"];
  19212. }, function(module, exports, __webpack_require__) {
  19213.     "use strict";
  19214.     function _interopRequireDefault(obj) {
  19215.         return obj && obj.__esModule ? obj : {
  19216.             "default": obj
  19217.         };
  19218.     }
  19219.     function _classCallCheck(instance, Constructor) {
  19220.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  19221.     }
  19222.     function _possibleConstructorReturn(self, call) {
  19223.         if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  19224.         return call && ("object" == typeof call || "function" == typeof call) ? call : self;
  19225.     }
  19226.     function _inherits(subClass, superClass) {
  19227.         if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
  19228.         subClass.prototype = Object.create(superClass && superClass.prototype, {
  19229.             constructor: {
  19230.                 value: subClass,
  19231.                 enumerable: !1,
  19232.                 writable: !0,
  19233.                 configurable: !0
  19234.             }
  19235.         });
  19236.         if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  19237.     }
  19238.     exports.__esModule = !0;
  19239.     var _extends = Object.assign || function(target) {
  19240.         for (var i = 1; i < arguments.length; i++) {
  19241.             var source = arguments[i];
  19242.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  19243.         }
  19244.         return target;
  19245.     }, _GoogleAnalytics = __webpack_require__(238), _OnlineStatistics2 = __webpack_require__(239), _OnlineStatistics3 = _interopRequireDefault(_OnlineStatistics2), _OfflineStore = __webpack_require__(352), _OfflineStore2 = _interopRequireDefault(_OfflineStore), Statistics = function(_OnlineStatistics) {
  19246.         function Statistics() {
  19247.             _classCallCheck(this, Statistics);
  19248.             return _possibleConstructorReturn(this, _OnlineStatistics.apply(this, arguments));
  19249.         }
  19250.         _inherits(Statistics, _OnlineStatistics);
  19251.         Statistics.prototype.init = function(opts) {
  19252.             var _this2 = this;
  19253.             _OnlineStatistics.prototype.init.call(this, opts);
  19254.             this._initialized = this._initialized.then(function() {
  19255.                 return _this2.checkConnection();
  19256.             }).then(function(isOnline) {
  19257.                 if (isOnline) return _OfflineStore2["default"].dispatch(_this2.adapter).then(function() {
  19258.                     return !0;
  19259.                 }); else {
  19260.                     _this2._offlineStore = new _OfflineStore2["default"](_this2);
  19261.                     return !1;
  19262.                 }
  19263.             });
  19264.             return this._initialized;
  19265.         };
  19266.         Statistics.prototype.checkConnection = function() {
  19267.             return this.adapter.request({
  19268.                 uri: _GoogleAnalytics.endpoint
  19269.             }).then(function() {
  19270.                 return !0;
  19271.             }, function() {
  19272.                 return !1;
  19273.             });
  19274.         };
  19275.         Statistics.prototype.send = function(event) {
  19276.             var _this3 = this;
  19277.             return this._initialized.then(function(isOnline) {
  19278.                 if (!isOnline && _this3._offlineStore) _this3._offlineStore.event(event); else return _OnlineStatistics.prototype.send.call(_this3, event);
  19279.             });
  19280.         };
  19281.         Statistics.prototype.sendOpenedEvent = function(event) {
  19282.             return this.event(_extends({
  19283.                 lvl: "info",
  19284.                 action: "application opened",
  19285.                 label: this.version,
  19286.                 namespace: "application:opened"
  19287.             }, event), [], !0);
  19288.         };
  19289.         return Statistics;
  19290.     }(_OnlineStatistics3["default"]);
  19291.     exports["default"] = Statistics;
  19292.     module.exports = exports["default"];
  19293. }, function(module, exports, __webpack_require__) {
  19294.     "use strict";
  19295.     exports.__esModule = !0;
  19296.     var _utils = __webpack_require__(23), _fso = __webpack_require__(18), parseClientIdJs = function(text) {
  19297.         var start = text.indexOf('"') + 1, end = text.indexOf('"', start), filename = text.substr(start, end - start);
  19298.         return (0, _utils.ParseSFXName)(filename).slice(-1)[0];
  19299.     };
  19300.     exports["default"] = function(key) {
  19301.         var file = "tools\\modules\\" + key.toLowerCase() + ".js";
  19302.         if (_fso.fso.FileExists(file)) {
  19303.             var text = _fso.fso.GetFile(file);
  19304.             if (text.Size > 0) {
  19305.                 var textStream = text.OpenAsTextStream(1), contents = "";
  19306.                 if (!textStream.AtEndOfStream) contents = textStream.ReadAll();
  19307.                 return parseClientIdJs(contents);
  19308.             }
  19309.         }
  19310.     };
  19311.     module.exports = exports["default"];
  19312. }, function(module, exports, __webpack_require__) {
  19313.     "use strict";
  19314.     exports.__esModule = !0;
  19315.     exports.checkInternet = undefined;
  19316.     var _http = __webpack_require__(102);
  19317.     exports.checkInternet = function() {
  19318.         return (0, _http.httpget)("https://www.google-analytics.com/collect").then(function() {
  19319.             return !0;
  19320.         }, function() {
  19321.             return (0, _http.httpget)("http://www.msftncsi.com/ncsi.txt").then(function() {
  19322.                 return !0;
  19323.             }, function() {
  19324.                 return !1;
  19325.             });
  19326.         });
  19327.     };
  19328. }, function(module, exports, __webpack_require__) {
  19329.     (function(process, global, setImmediate) {
  19330.         !function(e) {
  19331.             if (!0) module.exports = e(); else if ("function" == typeof define && define.amd) define([], e); else {
  19332.                 var f;
  19333.                 "undefined" != typeof window ? f = window : void 0 !== global ? f = global : "undefined" != typeof self && (f = self),
  19334.                 f.Promise = e();
  19335.             }
  19336.         }(function() {
  19337.             var define, module, exports;
  19338.             return function e(t, n, r) {
  19339.                 function s(o, u) {
  19340.                     if (!n[o]) {
  19341.                         if (!t[o]) {
  19342.                             var a = "function" == typeof _dereq_ && _dereq_;
  19343.                             if (!u && a) return a(o, !0);
  19344.                             if (i) return i(o, !0);
  19345.                             var f = new Error("Cannot find module '" + o + "'");
  19346.                             throw f.code = "MODULE_NOT_FOUND", f;
  19347.                         }
  19348.                         var l = n[o] = {
  19349.                             exports: {}
  19350.                         };
  19351.                         t[o][0].call(l.exports, function(e) {
  19352.                             var n = t[o][1][e];
  19353.                             return s(n ? n : e);
  19354.                         }, l, l.exports, e, t, n, r);
  19355.                     }
  19356.                     return n[o].exports;
  19357.                 }
  19358.                 for (var i = "function" == typeof _dereq_ && _dereq_, o = 0; o < r.length; o++) s(r[o]);
  19359.                 return s;
  19360.             }({
  19361.                 1: [ function(_dereq_, module, exports) {
  19362.                     "use strict";
  19363.                     module.exports = function(Promise) {
  19364.                         function any(promises) {
  19365.                             var ret = new SomePromiseArray(promises), promise = ret.promise();
  19366.                             ret.setHowMany(1);
  19367.                             ret.setUnwrap();
  19368.                             ret.init();
  19369.                             return promise;
  19370.                         }
  19371.                         var SomePromiseArray = Promise._SomePromiseArray;
  19372.                         Promise.any = function(promises) {
  19373.                             return any(promises);
  19374.                         };
  19375.                         Promise.prototype.any = function() {
  19376.                             return any(this);
  19377.                         };
  19378.                     };
  19379.                 }, {} ],
  19380.                 2: [ function(_dereq_, module, exports) {
  19381.                     "use strict";
  19382.                     function Async() {
  19383.                         this._isTickUsed = !1;
  19384.                         this._lateQueue = new Queue(16);
  19385.                         this._normalQueue = new Queue(16);
  19386.                         this._trampolineEnabled = !0;
  19387.                         var self = this;
  19388.                         this.drainQueues = function() {
  19389.                             self._drainQueues();
  19390.                         };
  19391.                         this._schedule = schedule.isStatic ? schedule(this.drainQueues) : schedule;
  19392.                     }
  19393.                     function AsyncInvokeLater(fn, receiver, arg) {
  19394.                         this._lateQueue.push(fn, receiver, arg);
  19395.                         this._queueTick();
  19396.                     }
  19397.                     function AsyncInvoke(fn, receiver, arg) {
  19398.                         this._normalQueue.push(fn, receiver, arg);
  19399.                         this._queueTick();
  19400.                     }
  19401.                     function AsyncSettlePromises(promise) {
  19402.                         this._normalQueue._pushOne(promise);
  19403.                         this._queueTick();
  19404.                     }
  19405.                     var firstLineError;
  19406.                     try {
  19407.                         throw new Error();
  19408.                     } catch (e) {
  19409.                         firstLineError = e;
  19410.                     }
  19411.                     var schedule = _dereq_("./schedule.js"), Queue = _dereq_("./queue.js"), util = _dereq_("./util.js");
  19412.                     Async.prototype.disableTrampolineIfNecessary = function() {
  19413.                         if (util.hasDevTools) this._trampolineEnabled = !1;
  19414.                     };
  19415.                     Async.prototype.enableTrampoline = function() {
  19416.                         if (!this._trampolineEnabled) {
  19417.                             this._trampolineEnabled = !0;
  19418.                             this._schedule = function(fn) {
  19419.                                 setTimeout(fn, 0);
  19420.                             };
  19421.                         }
  19422.                     };
  19423.                     Async.prototype.haveItemsQueued = function() {
  19424.                         return this._normalQueue.length() > 0;
  19425.                     };
  19426.                     Async.prototype.throwLater = function(fn, arg) {
  19427.                         if (1 === arguments.length) {
  19428.                             arg = fn;
  19429.                             fn = function() {
  19430.                                 throw arg;
  19431.                             };
  19432.                         }
  19433.                         if ("undefined" != typeof setTimeout) setTimeout(function() {
  19434.                             fn(arg);
  19435.                         }, 0); else try {
  19436.                             this._schedule(function() {
  19437.                                 fn(arg);
  19438.                             });
  19439.                         } catch (e) {
  19440.                             throw new Error("No async scheduler available\n\n    See http://goo.gl/m3OTXk\n");
  19441.                         }
  19442.                     };
  19443.                     if (!util.hasDevTools) {
  19444.                         Async.prototype.invokeLater = AsyncInvokeLater;
  19445.                         Async.prototype.invoke = AsyncInvoke;
  19446.                         Async.prototype.settlePromises = AsyncSettlePromises;
  19447.                     } else {
  19448.                         if (schedule.isStatic) schedule = function(fn) {
  19449.                             setTimeout(fn, 0);
  19450.                         };
  19451.                         Async.prototype.invokeLater = function(fn, receiver, arg) {
  19452.                             if (this._trampolineEnabled) AsyncInvokeLater.call(this, fn, receiver, arg); else this._schedule(function() {
  19453.                                 setTimeout(function() {
  19454.                                     fn.call(receiver, arg);
  19455.                                 }, 100);
  19456.                             });
  19457.                         };
  19458.                         Async.prototype.invoke = function(fn, receiver, arg) {
  19459.                             if (this._trampolineEnabled) AsyncInvoke.call(this, fn, receiver, arg); else this._schedule(function() {
  19460.                                 fn.call(receiver, arg);
  19461.                             });
  19462.                         };
  19463.                         Async.prototype.settlePromises = function(promise) {
  19464.                             if (this._trampolineEnabled) AsyncSettlePromises.call(this, promise); else this._schedule(function() {
  19465.                                 promise._settlePromises();
  19466.                             });
  19467.                         };
  19468.                     }
  19469.                     Async.prototype.invokeFirst = function(fn, receiver, arg) {
  19470.                         this._normalQueue.unshift(fn, receiver, arg);
  19471.                         this._queueTick();
  19472.                     };
  19473.                     Async.prototype._drainQueue = function(queue) {
  19474.                         for (;queue.length() > 0; ) {
  19475.                             var fn = queue.shift();
  19476.                             if ("function" == typeof fn) {
  19477.                                 var receiver = queue.shift(), arg = queue.shift();
  19478.                                 fn.call(receiver, arg);
  19479.                             } else fn._settlePromises();
  19480.                         }
  19481.                     };
  19482.                     Async.prototype._drainQueues = function() {
  19483.                         this._drainQueue(this._normalQueue);
  19484.                         this._reset();
  19485.                         this._drainQueue(this._lateQueue);
  19486.                     };
  19487.                     Async.prototype._queueTick = function() {
  19488.                         if (!this._isTickUsed) {
  19489.                             this._isTickUsed = !0;
  19490.                             this._schedule(this.drainQueues);
  19491.                         }
  19492.                     };
  19493.                     Async.prototype._reset = function() {
  19494.                         this._isTickUsed = !1;
  19495.                     };
  19496.                     module.exports = new Async();
  19497.                     module.exports.firstLineError = firstLineError;
  19498.                 }, {
  19499.                     "./queue.js": 28,
  19500.                     "./schedule.js": 31,
  19501.                     "./util.js": 38
  19502.                 } ],
  19503.                 3: [ function(_dereq_, module, exports) {
  19504.                     "use strict";
  19505.                     module.exports = function(Promise, INTERNAL, tryConvertToPromise) {
  19506.                         var rejectThis = function(_, e) {
  19507.                             this._reject(e);
  19508.                         }, targetRejected = function(e, context) {
  19509.                             context.promiseRejectionQueued = !0;
  19510.                             context.bindingPromise._then(rejectThis, rejectThis, null, this, e);
  19511.                         }, bindingResolved = function(thisArg, context) {
  19512.                             if (this._isPending()) this._resolveCallback(context.target);
  19513.                         }, bindingRejected = function(e, context) {
  19514.                             if (!context.promiseRejectionQueued) this._reject(e);
  19515.                         };
  19516.                         Promise.prototype.bind = function(thisArg) {
  19517.                             var maybePromise = tryConvertToPromise(thisArg), ret = new Promise(INTERNAL);
  19518.                             ret._propagateFrom(this, 1);
  19519.                             var target = this._target();
  19520.                             ret._setBoundTo(maybePromise);
  19521.                             if (maybePromise instanceof Promise) {
  19522.                                 var context = {
  19523.                                     promiseRejectionQueued: !1,
  19524.                                     promise: ret,
  19525.                                     target: target,
  19526.                                     bindingPromise: maybePromise
  19527.                                 };
  19528.                                 target._then(INTERNAL, targetRejected, ret._progress, ret, context);
  19529.                                 maybePromise._then(bindingResolved, bindingRejected, ret._progress, ret, context);
  19530.                             } else ret._resolveCallback(target);
  19531.                             return ret;
  19532.                         };
  19533.                         Promise.prototype._setBoundTo = function(obj) {
  19534.                             if (obj !== undefined) {
  19535.                                 this._bitField = 131072 | this._bitField;
  19536.                                 this._boundTo = obj;
  19537.                             } else this._bitField = -131073 & this._bitField;
  19538.                         };
  19539.                         Promise.prototype._isBound = function() {
  19540.                             return 131072 == (131072 & this._bitField);
  19541.                         };
  19542.                         Promise.bind = function(thisArg, value) {
  19543.                             var maybePromise = tryConvertToPromise(thisArg), ret = new Promise(INTERNAL);
  19544.                             ret._setBoundTo(maybePromise);
  19545.                             if (maybePromise instanceof Promise) maybePromise._then(function() {
  19546.                                 ret._resolveCallback(value);
  19547.                             }, ret._reject, ret._progress, ret, null); else ret._resolveCallback(value);
  19548.                             return ret;
  19549.                         };
  19550.                     };
  19551.                 }, {} ],
  19552.                 4: [ function(_dereq_, module, exports) {
  19553.                     "use strict";
  19554.                     function noConflict() {
  19555.                         try {
  19556.                             if (Promise === bluebird) Promise = old;
  19557.                         } catch (e) {}
  19558.                         return bluebird;
  19559.                     }
  19560.                     var old;
  19561.                     if ("undefined" != typeof Promise) old = Promise;
  19562.                     var bluebird = _dereq_("./promise.js")();
  19563.                     bluebird.noConflict = noConflict;
  19564.                     module.exports = bluebird;
  19565.                 }, {
  19566.                     "./promise.js": 23
  19567.                 } ],
  19568.                 5: [ function(_dereq_, module, exports) {
  19569.                     "use strict";
  19570.                     var cr = Object.create;
  19571.                     if (cr) {
  19572.                         var callerCache = cr(null), getterCache = cr(null);
  19573.                         callerCache[" size"] = getterCache[" size"] = 0;
  19574.                     }
  19575.                     module.exports = function(Promise) {
  19576.                         function ensureMethod(obj, methodName) {
  19577.                             var fn;
  19578.                             if (null != obj) fn = obj[methodName];
  19579.                             if ("function" != typeof fn) {
  19580.                                 var message = "Object " + util.classString(obj) + " has no method '" + util.toString(methodName) + "'";
  19581.                                 throw new Promise.TypeError(message);
  19582.                             }
  19583.                             return fn;
  19584.                         }
  19585.                         function caller(obj) {
  19586.                             return ensureMethod(obj, this.pop()).apply(obj, this);
  19587.                         }
  19588.                         function namedGetter(obj) {
  19589.                             return obj[this];
  19590.                         }
  19591.                         function indexedGetter(obj) {
  19592.                             var index = +this;
  19593.                             if (index < 0) index = Math.max(0, index + obj.length);
  19594.                             return obj[index];
  19595.                         }
  19596.                         var getMethodCaller, getGetter, util = _dereq_("./util.js"), canEvaluate = util.canEvaluate, isIdentifier = util.isIdentifier;
  19597.                         if (!1) {
  19598.                             var makeMethodCaller = function(methodName) {
  19599.                                 return new Function("ensureMethod", "                                    \n        return function(obj) {                                               \n            'use strict'                                                     \n            var len = this.length;                                           \n            ensureMethod(obj, 'methodName');                                 \n            switch(len) {                                                    \n                case 1: return obj.methodName(this[0]);                      \n                case 2: return obj.methodName(this[0], this[1]);             \n                case 3: return obj.methodName(this[0], this[1], this[2]);    \n                case 0: return obj.methodName();                             \n                default:                                                     \n                    return obj.methodName.apply(obj, this);                  \n            }                                                                \n        };                                                                   \n        ".replace(/methodName/g, methodName))(ensureMethod);
  19600.                             }, makeGetter = function(propertyName) {
  19601.                                 return new Function("obj", "                                             \n        'use strict';                                                        \n        return obj.propertyName;                                             \n        ".replace("propertyName", propertyName));
  19602.                             }, getCompiled = function(name, compiler, cache) {
  19603.                                 var ret = cache[name];
  19604.                                 if ("function" != typeof ret) {
  19605.                                     if (!isIdentifier(name)) return null;
  19606.                                     ret = compiler(name);
  19607.                                     cache[name] = ret;
  19608.                                     cache[" size"]++;
  19609.                                     if (cache[" size"] > 512) {
  19610.                                         for (var keys = Object.keys(cache), i = 0; i < 256; ++i) delete cache[keys[i]];
  19611.                                         cache[" size"] = keys.length - 256;
  19612.                                     }
  19613.                                 }
  19614.                                 return ret;
  19615.                             };
  19616.                             getMethodCaller = function(name) {
  19617.                                 return getCompiled(name, makeMethodCaller, callerCache);
  19618.                             };
  19619.                             getGetter = function(name) {
  19620.                                 return getCompiled(name, makeGetter, getterCache);
  19621.                             };
  19622.                         }
  19623.                         Promise.prototype.call = function(methodName) {
  19624.                             for (var $_len = arguments.length, args = new Array($_len - 1), $_i = 1; $_i < $_len; ++$_i) args[$_i - 1] = arguments[$_i];
  19625.                             if (!1) if (canEvaluate) {
  19626.                                 var maybeCaller = getMethodCaller(methodName);
  19627.                                 if (null !== maybeCaller) return this._then(maybeCaller, undefined, undefined, args, undefined);
  19628.                             }
  19629.                             args.push(methodName);
  19630.                             return this._then(caller, undefined, undefined, args, undefined);
  19631.                         };
  19632.                         Promise.prototype.get = function(propertyName) {
  19633.                             var getter, isIndex = "number" == typeof propertyName;
  19634.                             if (!isIndex) if (canEvaluate) {
  19635.                                 var maybeGetter = getGetter(propertyName);
  19636.                                 getter = null !== maybeGetter ? maybeGetter : namedGetter;
  19637.                             } else getter = namedGetter; else getter = indexedGetter;
  19638.                             return this._then(getter, undefined, undefined, propertyName, undefined);
  19639.                         };
  19640.                     };
  19641.                 }, {
  19642.                     "./util.js": 38
  19643.                 } ],
  19644.                 6: [ function(_dereq_, module, exports) {
  19645.                     "use strict";
  19646.                     module.exports = function(Promise) {
  19647.                         var errors = _dereq_("./errors.js"), async = _dereq_("./async.js"), CancellationError = errors.CancellationError;
  19648.                         Promise.prototype._cancel = function(reason) {
  19649.                             if (!this.isCancellable()) return this;
  19650.                             for (var parent, promiseToReject = this; (parent = promiseToReject._cancellationParent) !== undefined && parent.isCancellable(); ) promiseToReject = parent;
  19651.                             this._unsetCancellable();
  19652.                             promiseToReject._target()._rejectCallback(reason, !1, !0);
  19653.                         };
  19654.                         Promise.prototype.cancel = function(reason) {
  19655.                             if (!this.isCancellable()) return this;
  19656.                             if (reason === undefined) reason = new CancellationError();
  19657.                             async.invokeLater(this._cancel, this, reason);
  19658.                             return this;
  19659.                         };
  19660.                         Promise.prototype.cancellable = function() {
  19661.                             if (this._cancellable()) return this;
  19662.                             async.enableTrampoline();
  19663.                             this._setCancellable();
  19664.                             this._cancellationParent = undefined;
  19665.                             return this;
  19666.                         };
  19667.                         Promise.prototype.uncancellable = function() {
  19668.                             var ret = this.then();
  19669.                             ret._unsetCancellable();
  19670.                             return ret;
  19671.                         };
  19672.                         Promise.prototype.fork = function(didFulfill, didReject, didProgress) {
  19673.                             var ret = this._then(didFulfill, didReject, didProgress, undefined, undefined);
  19674.                             ret._setCancellable();
  19675.                             ret._cancellationParent = undefined;
  19676.                             return ret;
  19677.                         };
  19678.                     };
  19679.                 }, {
  19680.                     "./async.js": 2,
  19681.                     "./errors.js": 13
  19682.                 } ],
  19683.                 7: [ function(_dereq_, module, exports) {
  19684.                     "use strict";
  19685.                     module.exports = function() {
  19686.                         function CapturedTrace(parent) {
  19687.                             this._parent = parent;
  19688.                             var length = this._length = 1 + (parent === undefined ? 0 : parent._length);
  19689.                             captureStackTrace(this, CapturedTrace);
  19690.                             if (length > 32) this.uncycle();
  19691.                         }
  19692.                         function reconstructStack(message, stacks) {
  19693.                             for (var i = 0; i < stacks.length - 1; ++i) {
  19694.                                 stacks[i].push("From previous event:");
  19695.                                 stacks[i] = stacks[i].join("\n");
  19696.                             }
  19697.                             if (i < stacks.length) stacks[i] = stacks[i].join("\n");
  19698.                             return message + "\n" + stacks.join("\n");
  19699.                         }
  19700.                         function removeDuplicateOrEmptyJumps(stacks) {
  19701.                             for (var i = 0; i < stacks.length; ++i) if (0 === stacks[i].length || i + 1 < stacks.length && stacks[i][0] === stacks[i + 1][0]) {
  19702.                                 stacks.splice(i, 1);
  19703.                                 i--;
  19704.                             }
  19705.                         }
  19706.                         function removeCommonRoots(stacks) {
  19707.                             for (var current = stacks[0], i = 1; i < stacks.length; ++i) {
  19708.                                 for (var prev = stacks[i], currentLastIndex = current.length - 1, currentLastLine = current[currentLastIndex], commonRootMeetPoint = -1, j = prev.length - 1; j >= 0; --j) if (prev[j] === currentLastLine) {
  19709.                                     commonRootMeetPoint = j;
  19710.                                     break;
  19711.                                 }
  19712.                                 for (var j = commonRootMeetPoint; j >= 0; --j) {
  19713.                                     var line = prev[j];
  19714.                                     if (current[currentLastIndex] === line) {
  19715.                                         current.pop();
  19716.                                         currentLastIndex--;
  19717.                                     } else break;
  19718.                                 }
  19719.                                 current = prev;
  19720.                             }
  19721.                         }
  19722.                         function cleanStack(stack) {
  19723.                             for (var ret = [], i = 0; i < stack.length; ++i) {
  19724.                                 var line = stack[i], isTraceLine = stackFramePattern.test(line) || "    (No stack trace)" === line, isInternalFrame = isTraceLine && shouldIgnore(line);
  19725.                                 if (isTraceLine && !isInternalFrame) {
  19726.                                     if (indentStackFrames && " " !== line.charAt(0)) line = "    " + line;
  19727.                                     ret.push(line);
  19728.                                 }
  19729.                             }
  19730.                             return ret;
  19731.                         }
  19732.                         function stackFramesAsArray(error) {
  19733.                             for (var stack = error.stack.replace(/\s+$/g, "").split("\n"), i = 0; i < stack.length; ++i) {
  19734.                                 var line = stack[i];
  19735.                                 if ("    (No stack trace)" === line || stackFramePattern.test(line)) break;
  19736.                             }
  19737.                             if (i > 0) stack = stack.slice(i);
  19738.                             return stack;
  19739.                         }
  19740.                         function formatNonError(obj) {
  19741.                             var str;
  19742.                             if ("function" == typeof obj) str = "[function " + (obj.name || "anonymous") + "]"; else {
  19743.                                 str = obj.toString();
  19744.                                 if (/\[object [a-zA-Z0-9$_]+\]/.test(str)) try {
  19745.                                     str = JSON.stringify(obj);
  19746.                                 } catch (e) {}
  19747.                                 if (0 === str.length) str = "(empty array)";
  19748.                             }
  19749.                             return "(<" + snip(str) + ">, no stack trace)";
  19750.                         }
  19751.                         function snip(str) {
  19752.                             if (str.length < 41) return str; else return str.substr(0, 38) + "...";
  19753.                         }
  19754.                         function parseLineInfo(line) {
  19755.                             var matches = line.match(parseLineInfoRegex);
  19756.                             if (matches) return {
  19757.                                 fileName: matches[1],
  19758.                                 line: parseInt(matches[2], 10)
  19759.                             };
  19760.                         }
  19761.                         var warn, async = _dereq_("./async.js"), util = _dereq_("./util.js"), bluebirdFramePattern = /[\\\/]bluebird[\\\/]js[\\\/](main|debug|zalgo|instrumented)/, stackFramePattern = null, formatStack = null, indentStackFrames = !1;
  19762.                         util.inherits(CapturedTrace, Error);
  19763.                         CapturedTrace.prototype.uncycle = function() {
  19764.                             var length = this._length;
  19765.                             if (!(length < 2)) {
  19766.                                 for (var nodes = [], stackToIndex = {}, i = 0, node = this; node !== undefined; ++i) {
  19767.                                     nodes.push(node);
  19768.                                     node = node._parent;
  19769.                                 }
  19770.                                 length = this._length = i;
  19771.                                 for (var i = length - 1; i >= 0; --i) {
  19772.                                     var stack = nodes[i].stack;
  19773.                                     if (stackToIndex[stack] === undefined) stackToIndex[stack] = i;
  19774.                                 }
  19775.                                 for (var i = 0; i < length; ++i) {
  19776.                                     var currentStack = nodes[i].stack, index = stackToIndex[currentStack];
  19777.                                     if (index !== undefined && index !== i) {
  19778.                                         if (index > 0) {
  19779.                                             nodes[index - 1]._parent = undefined;
  19780.                                             nodes[index - 1]._length = 1;
  19781.                                         }
  19782.                                         nodes[i]._parent = undefined;
  19783.                                         nodes[i]._length = 1;
  19784.                                         var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;
  19785.                                         if (index < length - 1) {
  19786.                                             cycleEdgeNode._parent = nodes[index + 1];
  19787.                                             cycleEdgeNode._parent.uncycle();
  19788.                                             cycleEdgeNode._length = cycleEdgeNode._parent._length + 1;
  19789.                                         } else {
  19790.                                             cycleEdgeNode._parent = undefined;
  19791.                                             cycleEdgeNode._length = 1;
  19792.                                         }
  19793.                                         for (var currentChildLength = cycleEdgeNode._length + 1, j = i - 2; j >= 0; --j) {
  19794.                                             nodes[j]._length = currentChildLength;
  19795.                                             currentChildLength++;
  19796.                                         }
  19797.                                         return;
  19798.                                     }
  19799.                                 }
  19800.                             }
  19801.                         };
  19802.                         CapturedTrace.prototype.parent = function() {
  19803.                             return this._parent;
  19804.                         };
  19805.                         CapturedTrace.prototype.hasParent = function() {
  19806.                             return this._parent !== undefined;
  19807.                         };
  19808.                         CapturedTrace.prototype.attachExtraTrace = function(error) {
  19809.                             if (!error.__stackCleaned__) {
  19810.                                 this.uncycle();
  19811.                                 for (var parsed = CapturedTrace.parseStackAndMessage(error), message = parsed.message, stacks = [ parsed.stack ], trace = this; trace !== undefined; ) {
  19812.                                     stacks.push(cleanStack(trace.stack.split("\n")));
  19813.                                     trace = trace._parent;
  19814.                                 }
  19815.                                 removeCommonRoots(stacks);
  19816.                                 removeDuplicateOrEmptyJumps(stacks);
  19817.                                 util.notEnumerableProp(error, "stack", reconstructStack(message, stacks));
  19818.                                 util.notEnumerableProp(error, "__stackCleaned__", !0);
  19819.                             }
  19820.                         };
  19821.                         CapturedTrace.parseStackAndMessage = function(error) {
  19822.                             var stack = error.stack, message = error.toString();
  19823.                             stack = "string" == typeof stack && stack.length > 0 ? stackFramesAsArray(error) : [ "    (No stack trace)" ];
  19824.                             return {
  19825.                                 message: message,
  19826.                                 stack: cleanStack(stack)
  19827.                             };
  19828.                         };
  19829.                         CapturedTrace.formatAndLogError = function(error, title) {
  19830.                             if ("undefined" != typeof console) {
  19831.                                 var message;
  19832.                                 if ("object" == typeof error || "function" == typeof error) {
  19833.                                     var stack = error.stack;
  19834.                                     message = title + formatStack(stack, error);
  19835.                                 } else message = title + String(error);
  19836.                                 if ("function" == typeof warn) warn(message); else if ("function" == typeof console.log || "object" == typeof console.log) console.log(message);
  19837.                             }
  19838.                         };
  19839.                         CapturedTrace.unhandledRejection = function(reason) {
  19840.                             CapturedTrace.formatAndLogError(reason, "^--- With additional stack trace: ");
  19841.                         };
  19842.                         CapturedTrace.isSupported = function() {
  19843.                             return "function" == typeof captureStackTrace;
  19844.                         };
  19845.                         CapturedTrace.fireRejectionEvent = function(name, localHandler, reason, promise) {
  19846.                             var localEventFired = !1;
  19847.                             try {
  19848.                                 if ("function" == typeof localHandler) {
  19849.                                     localEventFired = !0;
  19850.                                     if ("rejectionHandled" === name) localHandler(promise); else localHandler(reason, promise);
  19851.                                 }
  19852.                             } catch (e) {
  19853.                                 async.throwLater(e);
  19854.                             }
  19855.                             var globalEventFired = !1;
  19856.                             try {
  19857.                                 globalEventFired = fireGlobalEvent(name, reason, promise);
  19858.                             } catch (e) {
  19859.                                 globalEventFired = !0;
  19860.                                 async.throwLater(e);
  19861.                             }
  19862.                             var domEventFired = !1;
  19863.                             if (fireDomEvent) try {
  19864.                                 domEventFired = fireDomEvent(name.toLowerCase(), {
  19865.                                     reason: reason,
  19866.                                     promise: promise
  19867.                                 });
  19868.                             } catch (e) {
  19869.                                 domEventFired = !0;
  19870.                                 async.throwLater(e);
  19871.                             }
  19872.                             if (!globalEventFired && !localEventFired && !domEventFired && "unhandledRejection" === name) CapturedTrace.formatAndLogError(reason, "Unhandled rejection ");
  19873.                         };
  19874.                         var shouldIgnore = function() {
  19875.                             return !1;
  19876.                         }, parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;
  19877.                         CapturedTrace.setBounds = function(firstLineError, lastLineError) {
  19878.                             if (CapturedTrace.isSupported()) {
  19879.                                 for (var firstFileName, lastFileName, firstStackLines = firstLineError.stack.split("\n"), lastStackLines = lastLineError.stack.split("\n"), firstIndex = -1, lastIndex = -1, i = 0; i < firstStackLines.length; ++i) {
  19880.                                     var result = parseLineInfo(firstStackLines[i]);
  19881.                                     if (result) {
  19882.                                         firstFileName = result.fileName;
  19883.                                         firstIndex = result.line;
  19884.                                         break;
  19885.                                     }
  19886.                                 }
  19887.                                 for (var i = 0; i < lastStackLines.length; ++i) {
  19888.                                     var result = parseLineInfo(lastStackLines[i]);
  19889.                                     if (result) {
  19890.                                         lastFileName = result.fileName;
  19891.                                         lastIndex = result.line;
  19892.                                         break;
  19893.                                     }
  19894.                                 }
  19895.                                 if (!(firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || firstFileName !== lastFileName || firstIndex >= lastIndex)) shouldIgnore = function(line) {
  19896.                                     if (bluebirdFramePattern.test(line)) return !0;
  19897.                                     var info = parseLineInfo(line);
  19898.                                     if (info) if (info.fileName === firstFileName && firstIndex <= info.line && info.line <= lastIndex) return !0;
  19899.                                     return !1;
  19900.                                 };
  19901.                             }
  19902.                         };
  19903.                         var fireDomEvent, captureStackTrace = function() {
  19904.                             var v8stackFramePattern = /^\s*at\s*/, v8stackFormatter = function(stack, error) {
  19905.                                 if ("string" == typeof stack) return stack;
  19906.                                 if (error.name !== undefined && error.message !== undefined) return error.toString(); else return formatNonError(error);
  19907.                             };
  19908.                             if ("number" == typeof Error.stackTraceLimit && "function" == typeof Error.captureStackTrace) {
  19909.                                 Error.stackTraceLimit = Error.stackTraceLimit + 6;
  19910.                                 stackFramePattern = v8stackFramePattern;
  19911.                                 formatStack = v8stackFormatter;
  19912.                                 var captureStackTrace = Error.captureStackTrace;
  19913.                                 shouldIgnore = function(line) {
  19914.                                     return bluebirdFramePattern.test(line);
  19915.                                 };
  19916.                                 return function(receiver, ignoreUntil) {
  19917.                                     Error.stackTraceLimit = Error.stackTraceLimit + 6;
  19918.                                     captureStackTrace(receiver, ignoreUntil);
  19919.                                     Error.stackTraceLimit = Error.stackTraceLimit - 6;
  19920.                                 };
  19921.                             }
  19922.                             var err = new Error();
  19923.                             if ("string" == typeof err.stack && err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) {
  19924.                                 stackFramePattern = /@/;
  19925.                                 formatStack = v8stackFormatter;
  19926.                                 indentStackFrames = !0;
  19927.                                 return function(o) {
  19928.                                     o.stack = new Error().stack;
  19929.                                 };
  19930.                             }
  19931.                             var hasStackAfterThrow;
  19932.                             try {
  19933.                                 throw new Error();
  19934.                             } catch (e) {
  19935.                                 hasStackAfterThrow = "stack" in e;
  19936.                             }
  19937.                             if (!("stack" in err) && hasStackAfterThrow && "number" == typeof Error.stackTraceLimit) {
  19938.                                 stackFramePattern = v8stackFramePattern;
  19939.                                 formatStack = v8stackFormatter;
  19940.                                 return function(o) {
  19941.                                     Error.stackTraceLimit = Error.stackTraceLimit + 6;
  19942.                                     try {
  19943.                                         throw new Error();
  19944.                                     } catch (e) {
  19945.                                         o.stack = e.stack;
  19946.                                     }
  19947.                                     Error.stackTraceLimit = Error.stackTraceLimit - 6;
  19948.                                 };
  19949.                             }
  19950.                             formatStack = function(stack, error) {
  19951.                                 if ("string" == typeof stack) return stack;
  19952.                                 if (("object" == typeof error || "function" == typeof error) && error.name !== undefined && error.message !== undefined) return error.toString(); else return formatNonError(error);
  19953.                             };
  19954.                             return null;
  19955.                         }(), fireGlobalEvent = function() {
  19956.                             if (util.isNode) return function(name, reason, promise) {
  19957.                                 if ("rejectionHandled" === name) return process.emit(name, promise); else return process.emit(name, reason, promise);
  19958.                             }; else {
  19959.                                 var customEventWorks = !1, anyEventWorks = !0;
  19960.                                 try {
  19961.                                     var ev = new self.CustomEvent("test");
  19962.                                     customEventWorks = ev instanceof CustomEvent;
  19963.                                 } catch (e) {}
  19964.                                 if (!customEventWorks) try {
  19965.                                     var event = document.createEvent("CustomEvent");
  19966.                                     event.initCustomEvent("testingtheevent", !1, !0, {});
  19967.                                     self.dispatchEvent(event);
  19968.                                 } catch (e) {
  19969.                                     anyEventWorks = !1;
  19970.                                 }
  19971.                                 if (anyEventWorks) fireDomEvent = function(type, detail) {
  19972.                                     var event;
  19973.                                     if (customEventWorks) event = new self.CustomEvent(type, {
  19974.                                         detail: detail,
  19975.                                         bubbles: !1,
  19976.                                         cancelable: !0
  19977.                                     }); else if (self.dispatchEvent) {
  19978.                                         event = document.createEvent("CustomEvent");
  19979.                                         event.initCustomEvent(type, !1, !0, detail);
  19980.                                     }
  19981.                                     return event ? !self.dispatchEvent(event) : !1;
  19982.                                 };
  19983.                                 var toWindowMethodNameMap = {};
  19984.                                 toWindowMethodNameMap.unhandledRejection = "onunhandledRejection".toLowerCase();
  19985.                                 toWindowMethodNameMap.rejectionHandled = "onrejectionHandled".toLowerCase();
  19986.                                 return function(name, reason, promise) {
  19987.                                     var methodName = toWindowMethodNameMap[name], method = self[methodName];
  19988.                                     if (!method) return !1;
  19989.                                     if ("rejectionHandled" === name) method.call(self, promise); else method.call(self, reason, promise);
  19990.                                     return !0;
  19991.                                 };
  19992.                             }
  19993.                         }();
  19994.                         if ("undefined" != typeof console && "undefined" != typeof console.warn) {
  19995.                             warn = function(message) {
  19996.                                 console.warn(message);
  19997.                             };
  19998.                             if (util.isNode && process.stderr.isTTY) warn = function(message) {
  19999.                                 process.stderr.write("" + message + "\n");
  20000.                             }; else if (!util.isNode && "string" == typeof new Error().stack) warn = function(message) {
  20001.                                 console.warn("%c" + message, "color: red");
  20002.                             };
  20003.                         }
  20004.                         return CapturedTrace;
  20005.                     };
  20006.                 }, {
  20007.                     "./async.js": 2,
  20008.                     "./util.js": 38
  20009.                 } ],
  20010.                 8: [ function(_dereq_, module, exports) {
  20011.                     "use strict";
  20012.                     module.exports = function(NEXT_FILTER) {
  20013.                         function CatchFilter(instances, callback, promise) {
  20014.                             this._instances = instances;
  20015.                             this._callback = callback;
  20016.                             this._promise = promise;
  20017.                         }
  20018.                         function safePredicate(predicate, e) {
  20019.                             var safeObject = {}, retfilter = tryCatch(predicate).call(safeObject, e);
  20020.                             if (retfilter === errorObj) return retfilter;
  20021.                             if (keys(safeObject).length) {
  20022.                                 errorObj.e = new TypeError("Catch filter must inherit from Error or be a simple predicate function\n\n    See http://goo.gl/o84o68\n");
  20023.                                 return errorObj;
  20024.                             }
  20025.                             return retfilter;
  20026.                         }
  20027.                         var util = _dereq_("./util.js"), errors = _dereq_("./errors.js"), tryCatch = util.tryCatch, errorObj = util.errorObj, keys = _dereq_("./es5.js").keys, TypeError = errors.TypeError;
  20028.                         CatchFilter.prototype.doFilter = function(e) {
  20029.                             for (var cb = this._callback, promise = this._promise, boundTo = promise._boundValue(), i = 0, len = this._instances.length; i < len; ++i) {
  20030.                                 var item = this._instances[i], itemIsErrorType = item === Error || null != item && item.prototype instanceof Error;
  20031.                                 if (itemIsErrorType && e instanceof item) {
  20032.                                     var ret = tryCatch(cb).call(boundTo, e);
  20033.                                     if (ret === errorObj) {
  20034.                                         NEXT_FILTER.e = ret.e;
  20035.                                         return NEXT_FILTER;
  20036.                                     }
  20037.                                     return ret;
  20038.                                 } else if ("function" == typeof item && !itemIsErrorType) {
  20039.                                     var shouldHandle = safePredicate(item, e);
  20040.                                     if (shouldHandle === errorObj) {
  20041.                                         e = errorObj.e;
  20042.                                         break;
  20043.                                     } else if (shouldHandle) {
  20044.                                         var ret = tryCatch(cb).call(boundTo, e);
  20045.                                         if (ret === errorObj) {
  20046.                                             NEXT_FILTER.e = ret.e;
  20047.                                             return NEXT_FILTER;
  20048.                                         }
  20049.                                         return ret;
  20050.                                     }
  20051.                                 }
  20052.                             }
  20053.                             NEXT_FILTER.e = e;
  20054.                             return NEXT_FILTER;
  20055.                         };
  20056.                         return CatchFilter;
  20057.                     };
  20058.                 }, {
  20059.                     "./errors.js": 13,
  20060.                     "./es5.js": 14,
  20061.                     "./util.js": 38
  20062.                 } ],
  20063.                 9: [ function(_dereq_, module, exports) {
  20064.                     "use strict";
  20065.                     module.exports = function(Promise, CapturedTrace, isDebugging) {
  20066.                         function Context() {
  20067.                             this._trace = new CapturedTrace(peekContext());
  20068.                         }
  20069.                         function createContext() {
  20070.                             if (isDebugging()) return new Context();
  20071.                         }
  20072.                         function peekContext() {
  20073.                             var lastIndex = contextStack.length - 1;
  20074.                             if (lastIndex >= 0) return contextStack[lastIndex]; else return undefined;
  20075.                         }
  20076.                         var contextStack = [];
  20077.                         Context.prototype._pushContext = function() {
  20078.                             if (isDebugging()) if (this._trace !== undefined) contextStack.push(this._trace);
  20079.                         };
  20080.                         Context.prototype._popContext = function() {
  20081.                             if (isDebugging()) if (this._trace !== undefined) contextStack.pop();
  20082.                         };
  20083.                         Promise.prototype._peekContext = peekContext;
  20084.                         Promise.prototype._pushContext = Context.prototype._pushContext;
  20085.                         Promise.prototype._popContext = Context.prototype._popContext;
  20086.                         return createContext;
  20087.                     };
  20088.                 }, {} ],
  20089.                 10: [ function(_dereq_, module, exports) {
  20090.                     "use strict";
  20091.                     module.exports = function(Promise, CapturedTrace) {
  20092.                         var unhandledRejectionHandled, possiblyUnhandledRejection, getDomain = Promise._getDomain, async = _dereq_("./async.js"), Warning = _dereq_("./errors.js").Warning, util = _dereq_("./util.js"), canAttachTrace = util.canAttachTrace, debugging = util.isNode && (!!process.env.BLUEBIRD_DEBUG || !0);
  20093.                         if (util.isNode && 0 == process.env.BLUEBIRD_DEBUG) debugging = !1;
  20094.                         if (debugging) async.disableTrampolineIfNecessary();
  20095.                         Promise.prototype._ignoreRejections = function() {
  20096.                             this._unsetRejectionIsUnhandled();
  20097.                             this._bitField = 16777216 | this._bitField;
  20098.                         };
  20099.                         Promise.prototype._ensurePossibleRejectionHandled = function() {
  20100.                             if (0 == (16777216 & this._bitField)) {
  20101.                                 this._setRejectionIsUnhandled();
  20102.                                 async.invokeLater(this._notifyUnhandledRejection, this, undefined);
  20103.                             }
  20104.                         };
  20105.                         Promise.prototype._notifyUnhandledRejectionIsHandled = function() {
  20106.                             CapturedTrace.fireRejectionEvent("rejectionHandled", unhandledRejectionHandled, undefined, this);
  20107.                         };
  20108.                         Promise.prototype._notifyUnhandledRejection = function() {
  20109.                             if (this._isRejectionUnhandled()) {
  20110.                                 var reason = this._getCarriedStackTrace() || this._settledValue;
  20111.                                 this._setUnhandledRejectionIsNotified();
  20112.                                 CapturedTrace.fireRejectionEvent("unhandledRejection", possiblyUnhandledRejection, reason, this);
  20113.                             }
  20114.                         };
  20115.                         Promise.prototype._setUnhandledRejectionIsNotified = function() {
  20116.                             this._bitField = 524288 | this._bitField;
  20117.                         };
  20118.                         Promise.prototype._unsetUnhandledRejectionIsNotified = function() {
  20119.                             this._bitField = -524289 & this._bitField;
  20120.                         };
  20121.                         Promise.prototype._isUnhandledRejectionNotified = function() {
  20122.                             return (524288 & this._bitField) > 0;
  20123.                         };
  20124.                         Promise.prototype._setRejectionIsUnhandled = function() {
  20125.                             this._bitField = 2097152 | this._bitField;
  20126.                         };
  20127.                         Promise.prototype._unsetRejectionIsUnhandled = function() {
  20128.                             this._bitField = -2097153 & this._bitField;
  20129.                             if (this._isUnhandledRejectionNotified()) {
  20130.                                 this._unsetUnhandledRejectionIsNotified();
  20131.                                 this._notifyUnhandledRejectionIsHandled();
  20132.                             }
  20133.                         };
  20134.                         Promise.prototype._isRejectionUnhandled = function() {
  20135.                             return (2097152 & this._bitField) > 0;
  20136.                         };
  20137.                         Promise.prototype._setCarriedStackTrace = function(capturedTrace) {
  20138.                             this._bitField = 1048576 | this._bitField;
  20139.                             this._fulfillmentHandler0 = capturedTrace;
  20140.                         };
  20141.                         Promise.prototype._isCarryingStackTrace = function() {
  20142.                             return (1048576 & this._bitField) > 0;
  20143.                         };
  20144.                         Promise.prototype._getCarriedStackTrace = function() {
  20145.                             return this._isCarryingStackTrace() ? this._fulfillmentHandler0 : undefined;
  20146.                         };
  20147.                         Promise.prototype._captureStackTrace = function() {
  20148.                             if (debugging) this._trace = new CapturedTrace(this._peekContext());
  20149.                             return this;
  20150.                         };
  20151.                         Promise.prototype._attachExtraTrace = function(error, ignoreSelf) {
  20152.                             if (debugging && canAttachTrace(error)) {
  20153.                                 var trace = this._trace;
  20154.                                 if (trace !== undefined) if (ignoreSelf) trace = trace._parent;
  20155.                                 if (trace !== undefined) trace.attachExtraTrace(error); else if (!error.__stackCleaned__) {
  20156.                                     var parsed = CapturedTrace.parseStackAndMessage(error);
  20157.                                     util.notEnumerableProp(error, "stack", parsed.message + "\n" + parsed.stack.join("\n"));
  20158.                                     util.notEnumerableProp(error, "__stackCleaned__", !0);
  20159.                                 }
  20160.                             }
  20161.                         };
  20162.                         Promise.prototype._warn = function(message) {
  20163.                             var warning = new Warning(message), ctx = this._peekContext();
  20164.                             if (ctx) ctx.attachExtraTrace(warning); else {
  20165.                                 var parsed = CapturedTrace.parseStackAndMessage(warning);
  20166.                                 warning.stack = parsed.message + "\n" + parsed.stack.join("\n");
  20167.                             }
  20168.                             CapturedTrace.formatAndLogError(warning, "");
  20169.                         };
  20170.                         Promise.onPossiblyUnhandledRejection = function(fn) {
  20171.                             var domain = getDomain();
  20172.                             possiblyUnhandledRejection = "function" == typeof fn ? null === domain ? fn : domain.bind(fn) : undefined;
  20173.                         };
  20174.                         Promise.onUnhandledRejectionHandled = function(fn) {
  20175.                             var domain = getDomain();
  20176.                             unhandledRejectionHandled = "function" == typeof fn ? null === domain ? fn : domain.bind(fn) : undefined;
  20177.                         };
  20178.                         Promise.longStackTraces = function() {
  20179.                             if (async.haveItemsQueued() && !1 === debugging) throw new Error("cannot enable long stack traces after promises have been created\n\n    See http://goo.gl/DT1qyG\n");
  20180.                             debugging = CapturedTrace.isSupported();
  20181.                             if (debugging) async.disableTrampolineIfNecessary();
  20182.                         };
  20183.                         Promise.hasLongStackTraces = function() {
  20184.                             return debugging && CapturedTrace.isSupported();
  20185.                         };
  20186.                         if (!CapturedTrace.isSupported()) {
  20187.                             Promise.longStackTraces = function() {};
  20188.                             debugging = !1;
  20189.                         }
  20190.                         return function() {
  20191.                             return debugging;
  20192.                         };
  20193.                     };
  20194.                 }, {
  20195.                     "./async.js": 2,
  20196.                     "./errors.js": 13,
  20197.                     "./util.js": 38
  20198.                 } ],
  20199.                 11: [ function(_dereq_, module, exports) {
  20200.                     "use strict";
  20201.                     var util = _dereq_("./util.js"), isPrimitive = util.isPrimitive;
  20202.                     module.exports = function(Promise) {
  20203.                         var returner = function() {
  20204.                             return this;
  20205.                         }, thrower = function() {
  20206.                             throw this;
  20207.                         }, returnUndefined = function() {}, throwUndefined = function() {
  20208.                             throw undefined;
  20209.                         }, wrapper = function(value, action) {
  20210.                             if (1 === action) return function() {
  20211.                                 throw value;
  20212.                             }; else if (2 === action) return function() {
  20213.                                 return value;
  20214.                             };
  20215.                         };
  20216.                         Promise.prototype["return"] = Promise.prototype.thenReturn = function(value) {
  20217.                             if (value === undefined) return this.then(returnUndefined);
  20218.                             if (isPrimitive(value)) return this._then(wrapper(value, 2), undefined, undefined, undefined, undefined); else if (value instanceof Promise) value._ignoreRejections();
  20219.                             return this._then(returner, undefined, undefined, value, undefined);
  20220.                         };
  20221.                         Promise.prototype["throw"] = Promise.prototype.thenThrow = function(reason) {
  20222.                             if (reason === undefined) return this.then(throwUndefined);
  20223.                             if (isPrimitive(reason)) return this._then(wrapper(reason, 1), undefined, undefined, undefined, undefined); else return this._then(thrower, undefined, undefined, reason, undefined);
  20224.                         };
  20225.                     };
  20226.                 }, {
  20227.                     "./util.js": 38
  20228.                 } ],
  20229.                 12: [ function(_dereq_, module, exports) {
  20230.                     "use strict";
  20231.                     module.exports = function(Promise, INTERNAL) {
  20232.                         var PromiseReduce = Promise.reduce;
  20233.                         Promise.prototype.each = function(fn) {
  20234.                             return PromiseReduce(this, fn, null, INTERNAL);
  20235.                         };
  20236.                         Promise.each = function(promises, fn) {
  20237.                             return PromiseReduce(promises, fn, null, INTERNAL);
  20238.                         };
  20239.                     };
  20240.                 }, {} ],
  20241.                 13: [ function(_dereq_, module, exports) {
  20242.                     "use strict";
  20243.                     function subError(nameProperty, defaultMessage) {
  20244.                         function SubError(message) {
  20245.                             if (!(this instanceof SubError)) return new SubError(message);
  20246.                             notEnumerableProp(this, "message", "string" == typeof message ? message : defaultMessage);
  20247.                             notEnumerableProp(this, "name", nameProperty);
  20248.                             if (Error.captureStackTrace) Error.captureStackTrace(this, this.constructor); else Error.call(this);
  20249.                         }
  20250.                         inherits(SubError, Error);
  20251.                         return SubError;
  20252.                     }
  20253.                     function OperationalError(message) {
  20254.                         if (!(this instanceof OperationalError)) return new OperationalError(message);
  20255.                         notEnumerableProp(this, "name", "OperationalError");
  20256.                         notEnumerableProp(this, "message", message);
  20257.                         this.cause = message;
  20258.                         this.isOperational = !0;
  20259.                         if (message instanceof Error) {
  20260.                             notEnumerableProp(this, "message", message.message);
  20261.                             notEnumerableProp(this, "stack", message.stack);
  20262.                         } else if (Error.captureStackTrace) Error.captureStackTrace(this, this.constructor);
  20263.                     }
  20264.                     var _TypeError, _RangeError, es5 = _dereq_("./es5.js"), Objectfreeze = es5.freeze, util = _dereq_("./util.js"), inherits = util.inherits, notEnumerableProp = util.notEnumerableProp, Warning = subError("Warning", "warning"), CancellationError = subError("CancellationError", "cancellation error"), TimeoutError = subError("TimeoutError", "timeout error"), AggregateError = subError("AggregateError", "aggregate error");
  20265.                     try {
  20266.                         _TypeError = TypeError;
  20267.                         _RangeError = RangeError;
  20268.                     } catch (e) {
  20269.                         _TypeError = subError("TypeError", "type error");
  20270.                         _RangeError = subError("RangeError", "range error");
  20271.                     }
  20272.                     for (var methods = "join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "), i = 0; i < methods.length; ++i) if ("function" == typeof Array.prototype[methods[i]]) AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];
  20273.                     es5.defineProperty(AggregateError.prototype, "length", {
  20274.                         value: 0,
  20275.                         configurable: !1,
  20276.                         writable: !0,
  20277.                         enumerable: !0
  20278.                     });
  20279.                     AggregateError.prototype.isOperational = !0;
  20280.                     var level = 0;
  20281.                     AggregateError.prototype.toString = function() {
  20282.                         var indent = Array(4 * level + 1).join(" "), ret = "\n" + indent + "AggregateError of:\n";
  20283.                         level++;
  20284.                         indent = Array(4 * level + 1).join(" ");
  20285.                         for (var i = 0; i < this.length; ++i) {
  20286.                             for (var str = this[i] === this ? "[Circular AggregateError]" : this[i] + "", lines = str.split("\n"), j = 0; j < lines.length; ++j) lines[j] = indent + lines[j];
  20287.                             str = lines.join("\n");
  20288.                             ret += str + "\n";
  20289.                         }
  20290.                         level--;
  20291.                         return ret;
  20292.                     };
  20293.                     inherits(OperationalError, Error);
  20294.                     var errorTypes = Error.__BluebirdErrorTypes__;
  20295.                     if (!errorTypes) {
  20296.                         errorTypes = Objectfreeze({
  20297.                             CancellationError: CancellationError,
  20298.                             TimeoutError: TimeoutError,
  20299.                             OperationalError: OperationalError,
  20300.                             RejectionError: OperationalError,
  20301.                             AggregateError: AggregateError
  20302.                         });
  20303.                         notEnumerableProp(Error, "__BluebirdErrorTypes__", errorTypes);
  20304.                     }
  20305.                     module.exports = {
  20306.                         Error: Error,
  20307.                         TypeError: _TypeError,
  20308.                         RangeError: _RangeError,
  20309.                         CancellationError: errorTypes.CancellationError,
  20310.                         OperationalError: errorTypes.OperationalError,
  20311.                         TimeoutError: errorTypes.TimeoutError,
  20312.                         AggregateError: errorTypes.AggregateError,
  20313.                         Warning: Warning
  20314.                     };
  20315.                 }, {
  20316.                     "./es5.js": 14,
  20317.                     "./util.js": 38
  20318.                 } ],
  20319.                 14: [ function(_dereq_, module, exports) {
  20320.                     var isES5 = function() {
  20321.                         "use strict";
  20322.                         return this === undefined;
  20323.                     }();
  20324.                     if (isES5) module.exports = {
  20325.                         freeze: Object.freeze,
  20326.                         defineProperty: Object.defineProperty,
  20327.                         getDescriptor: Object.getOwnPropertyDescriptor,
  20328.                         keys: Object.keys,
  20329.                         names: Object.getOwnPropertyNames,
  20330.                         getPrototypeOf: Object.getPrototypeOf,
  20331.                         isArray: Array.isArray,
  20332.                         isES5: isES5,
  20333.                         propertyIsWritable: function(obj, prop) {
  20334.                             var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
  20335.                             return !(descriptor && !descriptor.writable && !descriptor.set);
  20336.                         }
  20337.                     }; else {
  20338.                         var has = {}.hasOwnProperty, str = {}.toString, proto = {}.constructor.prototype, ObjectKeys = function(o) {
  20339.                             var ret = [];
  20340.                             for (var key in o) if (has.call(o, key)) ret.push(key);
  20341.                             return ret;
  20342.                         }, ObjectGetDescriptor = function(o, key) {
  20343.                             return {
  20344.                                 value: o[key]
  20345.                             };
  20346.                         }, ObjectDefineProperty = function(o, key, desc) {
  20347.                             o[key] = desc.value;
  20348.                             return o;
  20349.                         }, ObjectFreeze = function(obj) {
  20350.                             return obj;
  20351.                         }, ObjectGetPrototypeOf = function(obj) {
  20352.                             try {
  20353.                                 return Object(obj).constructor.prototype;
  20354.                             } catch (e) {
  20355.                                 return proto;
  20356.                             }
  20357.                         }, ArrayIsArray = function(obj) {
  20358.                             try {
  20359.                                 return "[object Array]" === str.call(obj);
  20360.                             } catch (e) {
  20361.                                 return !1;
  20362.                             }
  20363.                         };
  20364.                         module.exports = {
  20365.                             isArray: ArrayIsArray,
  20366.                             keys: ObjectKeys,
  20367.                             names: ObjectKeys,
  20368.                             defineProperty: ObjectDefineProperty,
  20369.                             getDescriptor: ObjectGetDescriptor,
  20370.                             freeze: ObjectFreeze,
  20371.                             getPrototypeOf: ObjectGetPrototypeOf,
  20372.                             isES5: isES5,
  20373.                             propertyIsWritable: function() {
  20374.                                 return !0;
  20375.                             }
  20376.                         };
  20377.                     }
  20378.                 }, {} ],
  20379.                 15: [ function(_dereq_, module, exports) {
  20380.                     "use strict";
  20381.                     module.exports = function(Promise, INTERNAL) {
  20382.                         var PromiseMap = Promise.map;
  20383.                         Promise.prototype.filter = function(fn, options) {
  20384.                             return PromiseMap(this, fn, options, INTERNAL);
  20385.                         };
  20386.                         Promise.filter = function(promises, fn, options) {
  20387.                             return PromiseMap(promises, fn, options, INTERNAL);
  20388.                         };
  20389.                     };
  20390.                 }, {} ],
  20391.                 16: [ function(_dereq_, module, exports) {
  20392.                     "use strict";
  20393.                     module.exports = function(Promise, NEXT_FILTER, tryConvertToPromise) {
  20394.                         function returnThis() {
  20395.                             return this;
  20396.                         }
  20397.                         function throwThis() {
  20398.                             throw this;
  20399.                         }
  20400.                         function return$(r) {
  20401.                             return function() {
  20402.                                 return r;
  20403.                             };
  20404.                         }
  20405.                         function throw$(r) {
  20406.                             return function() {
  20407.                                 throw r;
  20408.                             };
  20409.                         }
  20410.                         function promisedFinally(ret, reasonOrValue, isFulfilled) {
  20411.                             var then;
  20412.                             if (isPrimitive(reasonOrValue)) then = isFulfilled ? return$(reasonOrValue) : throw$(reasonOrValue); else then = isFulfilled ? returnThis : throwThis;
  20413.                             return ret._then(then, thrower, undefined, reasonOrValue, undefined);
  20414.                         }
  20415.                         function finallyHandler(reasonOrValue) {
  20416.                             var promise = this.promise, handler = this.handler, ret = promise._isBound() ? handler.call(promise._boundValue()) : handler();
  20417.                             if (ret !== undefined) {
  20418.                                 var maybePromise = tryConvertToPromise(ret, promise);
  20419.                                 if (maybePromise instanceof Promise) {
  20420.                                     maybePromise = maybePromise._target();
  20421.                                     return promisedFinally(maybePromise, reasonOrValue, promise.isFulfilled());
  20422.                                 }
  20423.                             }
  20424.                             if (promise.isRejected()) {
  20425.                                 NEXT_FILTER.e = reasonOrValue;
  20426.                                 return NEXT_FILTER;
  20427.                             } else return reasonOrValue;
  20428.                         }
  20429.                         function tapHandler(value) {
  20430.                             var promise = this.promise, handler = this.handler, ret = promise._isBound() ? handler.call(promise._boundValue(), value) : handler(value);
  20431.                             if (ret !== undefined) {
  20432.                                 var maybePromise = tryConvertToPromise(ret, promise);
  20433.                                 if (maybePromise instanceof Promise) {
  20434.                                     maybePromise = maybePromise._target();
  20435.                                     return promisedFinally(maybePromise, value, !0);
  20436.                                 }
  20437.                             }
  20438.                             return value;
  20439.                         }
  20440.                         var util = _dereq_("./util.js"), isPrimitive = util.isPrimitive, thrower = util.thrower;
  20441.                         Promise.prototype._passThroughHandler = function(handler, isFinally) {
  20442.                             if ("function" != typeof handler) return this.then();
  20443.                             var promiseAndHandler = {
  20444.                                 promise: this,
  20445.                                 handler: handler
  20446.                             };
  20447.                             return this._then(isFinally ? finallyHandler : tapHandler, isFinally ? finallyHandler : undefined, undefined, promiseAndHandler, undefined);
  20448.                         };
  20449.                         Promise.prototype.lastly = Promise.prototype["finally"] = function(handler) {
  20450.                             return this._passThroughHandler(handler, !0);
  20451.                         };
  20452.                         Promise.prototype.tap = function(handler) {
  20453.                             return this._passThroughHandler(handler, !1);
  20454.                         };
  20455.                     };
  20456.                 }, {
  20457.                     "./util.js": 38
  20458.                 } ],
  20459.                 17: [ function(_dereq_, module, exports) {
  20460.                     "use strict";
  20461.                     module.exports = function(Promise, apiRejection, INTERNAL, tryConvertToPromise) {
  20462.                         function promiseFromYieldHandler(value, yieldHandlers, traceParent) {
  20463.                             for (var i = 0; i < yieldHandlers.length; ++i) {
  20464.                                 traceParent._pushContext();
  20465.                                 var result = tryCatch(yieldHandlers[i])(value);
  20466.                                 traceParent._popContext();
  20467.                                 if (result === errorObj) {
  20468.                                     traceParent._pushContext();
  20469.                                     var ret = Promise.reject(errorObj.e);
  20470.                                     traceParent._popContext();
  20471.                                     return ret;
  20472.                                 }
  20473.                                 var maybePromise = tryConvertToPromise(result, traceParent);
  20474.                                 if (maybePromise instanceof Promise) return maybePromise;
  20475.                             }
  20476.                             return null;
  20477.                         }
  20478.                         function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {
  20479.                             (this._promise = new Promise(INTERNAL))._captureStackTrace();
  20480.                             this._stack = stack;
  20481.                             this._generatorFunction = generatorFunction;
  20482.                             this._receiver = receiver;
  20483.                             this._generator = undefined;
  20484.                             this._yieldHandlers = "function" == typeof yieldHandler ? [ yieldHandler ].concat(yieldHandlers) : yieldHandlers;
  20485.                         }
  20486.                         var errors = _dereq_("./errors.js"), TypeError = errors.TypeError, util = _dereq_("./util.js"), errorObj = util.errorObj, tryCatch = util.tryCatch, yieldHandlers = [];
  20487.                         PromiseSpawn.prototype.promise = function() {
  20488.                             return this._promise;
  20489.                         };
  20490.                         PromiseSpawn.prototype._run = function() {
  20491.                             this._generator = this._generatorFunction.call(this._receiver);
  20492.                             this._receiver = this._generatorFunction = undefined;
  20493.                             this._next(undefined);
  20494.                         };
  20495.                         PromiseSpawn.prototype._continue = function(result) {
  20496.                             if (result === errorObj) return this._promise._rejectCallback(result.e, !1, !0);
  20497.                             var value = result.value;
  20498.                             if (!0 === result.done) this._promise._resolveCallback(value); else {
  20499.                                 var maybePromise = tryConvertToPromise(value, this._promise);
  20500.                                 if (!(maybePromise instanceof Promise)) {
  20501.                                     maybePromise = promiseFromYieldHandler(maybePromise, this._yieldHandlers, this._promise);
  20502.                                     if (null === maybePromise) {
  20503.                                         this._throw(new TypeError("A value %s was yielded that could not be treated as a promise\n\n    See http://goo.gl/4Y4pDk\n\n".replace("%s", value) + "From coroutine:\n" + this._stack.split("\n").slice(1, -7).join("\n")));
  20504.                                         return;
  20505.                                     }
  20506.                                 }
  20507.                                 maybePromise._then(this._next, this._throw, undefined, this, null);
  20508.                             }
  20509.                         };
  20510.                         PromiseSpawn.prototype._throw = function(reason) {
  20511.                             this._promise._attachExtraTrace(reason);
  20512.                             this._promise._pushContext();
  20513.                             var result = tryCatch(this._generator["throw"]).call(this._generator, reason);
  20514.                             this._promise._popContext();
  20515.                             this._continue(result);
  20516.                         };
  20517.                         PromiseSpawn.prototype._next = function(value) {
  20518.                             this._promise._pushContext();
  20519.                             var result = tryCatch(this._generator.next).call(this._generator, value);
  20520.                             this._promise._popContext();
  20521.                             this._continue(result);
  20522.                         };
  20523.                         Promise.coroutine = function(generatorFunction, options) {
  20524.                             if ("function" != typeof generatorFunction) throw new TypeError("generatorFunction must be a function\n\n    See http://goo.gl/6Vqhm0\n");
  20525.                             var yieldHandler = Object(options).yieldHandler, PromiseSpawn$ = PromiseSpawn, stack = new Error().stack;
  20526.                             return function() {
  20527.                                 var generator = generatorFunction.apply(this, arguments), spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, stack);
  20528.                                 spawn._generator = generator;
  20529.                                 spawn._next(undefined);
  20530.                                 return spawn.promise();
  20531.                             };
  20532.                         };
  20533.                         Promise.coroutine.addYieldHandler = function(fn) {
  20534.                             if ("function" != typeof fn) throw new TypeError("fn must be a function\n\n    See http://goo.gl/916lJJ\n");
  20535.                             yieldHandlers.push(fn);
  20536.                         };
  20537.                         Promise.spawn = function(generatorFunction) {
  20538.                             if ("function" != typeof generatorFunction) return apiRejection("generatorFunction must be a function\n\n    See http://goo.gl/6Vqhm0\n");
  20539.                             var spawn = new PromiseSpawn(generatorFunction, this), ret = spawn.promise();
  20540.                             spawn._run(Promise.spawn);
  20541.                             return ret;
  20542.                         };
  20543.                     };
  20544.                 }, {
  20545.                     "./errors.js": 13,
  20546.                     "./util.js": 38
  20547.                 } ],
  20548.                 18: [ function(_dereq_, module, exports) {
  20549.                     "use strict";
  20550.                     module.exports = function(Promise, PromiseArray, tryConvertToPromise, INTERNAL) {
  20551.                         var reject, util = _dereq_("./util.js"), canEvaluate = util.canEvaluate, tryCatch = util.tryCatch, errorObj = util.errorObj;
  20552.                         if (!1) if (canEvaluate) {
  20553.                             for (var thenCallbacks = [], callers = [ undefined ], i = 1; i <= 5; ++i) {
  20554.                                 thenCallbacks.push(function(i) {
  20555.                                     return new Function("value", "holder", "                             \n            'use strict';                                                    \n            holder.pIndex = value;                                           \n            holder.checkFulfillment(this);                                   \n            ".replace(/Index/g, i));
  20556.                                 }(i));
  20557.                                 callers.push(function(count) {
  20558.                                     for (var values = [], i = 1; i <= count; ++i) values.push("holder.p" + i);
  20559.                                     return new Function("holder", "                                      \n            'use strict';                                                    \n            var callback = holder.fn;                                        \n            return callback(values);                                         \n            ".replace(/values/g, values.join(", ")));
  20560.                                 }(i));
  20561.                             }
  20562.                             var Holder = function(total, fn) {
  20563.                                 this.p1 = this.p2 = this.p3 = this.p4 = this.p5 = null;
  20564.                                 this.fn = fn;
  20565.                                 this.total = total;
  20566.                                 this.now = 0;
  20567.                             };
  20568.                             Holder.prototype.callers = callers;
  20569.                             Holder.prototype.checkFulfillment = function(promise) {
  20570.                                 var now = this.now;
  20571.                                 now++;
  20572.                                 var total = this.total;
  20573.                                 if (now >= total) {
  20574.                                     var handler = this.callers[total];
  20575.                                     promise._pushContext();
  20576.                                     var ret = tryCatch(handler)(this);
  20577.                                     promise._popContext();
  20578.                                     if (ret === errorObj) promise._rejectCallback(ret.e, !1, !0); else promise._resolveCallback(ret);
  20579.                                 } else this.now = now;
  20580.                             };
  20581.                             var reject = function(reason) {
  20582.                                 this._reject(reason);
  20583.                             };
  20584.                         }
  20585.                         Promise.join = function() {
  20586.                             var fn, last = arguments.length - 1;
  20587.                             if (last > 0 && "function" == typeof arguments[last]) {
  20588.                                 fn = arguments[last];
  20589.                                 if (!1) if (last < 6 && canEvaluate) {
  20590.                                     var ret = new Promise(INTERNAL);
  20591.                                     ret._captureStackTrace();
  20592.                                     for (var holder = new Holder(last, fn), callbacks = thenCallbacks, i = 0; i < last; ++i) {
  20593.                                         var maybePromise = tryConvertToPromise(arguments[i], ret);
  20594.                                         if (maybePromise instanceof Promise) {
  20595.                                             maybePromise = maybePromise._target();
  20596.                                             if (maybePromise._isPending()) maybePromise._then(callbacks[i], reject, undefined, ret, holder); else if (maybePromise._isFulfilled()) callbacks[i].call(ret, maybePromise._value(), holder); else ret._reject(maybePromise._reason());
  20597.                                         } else callbacks[i].call(ret, maybePromise, holder);
  20598.                                     }
  20599.                                     return ret;
  20600.                                 }
  20601.                             }
  20602.                             for (var $_len = arguments.length, args = new Array($_len), $_i = 0; $_i < $_len; ++$_i) args[$_i] = arguments[$_i];
  20603.                             if (fn) args.pop();
  20604.                             var ret = new PromiseArray(args).promise();
  20605.                             return fn !== undefined ? ret.spread(fn) : ret;
  20606.                         };
  20607.                     };
  20608.                 }, {
  20609.                     "./util.js": 38
  20610.                 } ],
  20611.                 19: [ function(_dereq_, module, exports) {
  20612.                     "use strict";
  20613.                     module.exports = function(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL) {
  20614.                         function MappingPromiseArray(promises, fn, limit, _filter) {
  20615.                             this.constructor$(promises);
  20616.                             this._promise._captureStackTrace();
  20617.                             var domain = getDomain();
  20618.                             this._callback = null === domain ? fn : domain.bind(fn);
  20619.                             this._preservedValues = _filter === INTERNAL ? new Array(this.length()) : null;
  20620.                             this._limit = limit;
  20621.                             this._inFlight = 0;
  20622.                             this._queue = limit >= 1 ? [] : EMPTY_ARRAY;
  20623.                             async.invoke(init, this, undefined);
  20624.                         }
  20625.                         function init() {
  20626.                             this._init$(undefined, -2);
  20627.                         }
  20628.                         function map(promises, fn, options, _filter) {
  20629.                             var limit = "object" == typeof options && null !== options ? options.concurrency : 0;
  20630.                             limit = "number" == typeof limit && isFinite(limit) && limit >= 1 ? limit : 0;
  20631.                             return new MappingPromiseArray(promises, fn, limit, _filter);
  20632.                         }
  20633.                         var getDomain = Promise._getDomain, async = _dereq_("./async.js"), util = _dereq_("./util.js"), tryCatch = util.tryCatch, errorObj = util.errorObj, PENDING = {}, EMPTY_ARRAY = [];
  20634.                         util.inherits(MappingPromiseArray, PromiseArray);
  20635.                         MappingPromiseArray.prototype._init = function() {};
  20636.                         MappingPromiseArray.prototype._promiseFulfilled = function(value, index) {
  20637.                             var values = this._values, length = this.length(), preservedValues = this._preservedValues, limit = this._limit;
  20638.                             if (values[index] === PENDING) {
  20639.                                 values[index] = value;
  20640.                                 if (limit >= 1) {
  20641.                                     this._inFlight--;
  20642.                                     this._drainQueue();
  20643.                                     if (this._isResolved()) return;
  20644.                                 }
  20645.                             } else {
  20646.                                 if (limit >= 1 && this._inFlight >= limit) {
  20647.                                     values[index] = value;
  20648.                                     this._queue.push(index);
  20649.                                     return;
  20650.                                 }
  20651.                                 if (null !== preservedValues) preservedValues[index] = value;
  20652.                                 var callback = this._callback, receiver = this._promise._boundValue();
  20653.                                 this._promise._pushContext();
  20654.                                 var ret = tryCatch(callback).call(receiver, value, index, length);
  20655.                                 this._promise._popContext();
  20656.                                 if (ret === errorObj) return this._reject(ret.e);
  20657.                                 var maybePromise = tryConvertToPromise(ret, this._promise);
  20658.                                 if (maybePromise instanceof Promise) {
  20659.                                     maybePromise = maybePromise._target();
  20660.                                     if (maybePromise._isPending()) {
  20661.                                         if (limit >= 1) this._inFlight++;
  20662.                                         values[index] = PENDING;
  20663.                                         return maybePromise._proxyPromiseArray(this, index);
  20664.                                     } else if (maybePromise._isFulfilled()) ret = maybePromise._value(); else return this._reject(maybePromise._reason());
  20665.                                 }
  20666.                                 values[index] = ret;
  20667.                             }
  20668.                             if (++this._totalResolved >= length) if (null !== preservedValues) this._filter(values, preservedValues); else this._resolve(values);
  20669.                         };
  20670.                         MappingPromiseArray.prototype._drainQueue = function() {
  20671.                             for (var queue = this._queue, limit = this._limit, values = this._values; queue.length > 0 && this._inFlight < limit; ) {
  20672.                                 if (this._isResolved()) return;
  20673.                                 var index = queue.pop();
  20674.                                 this._promiseFulfilled(values[index], index);
  20675.                             }
  20676.                         };
  20677.                         MappingPromiseArray.prototype._filter = function(booleans, values) {
  20678.                             for (var len = values.length, ret = new Array(len), j = 0, i = 0; i < len; ++i) if (booleans[i]) ret[j++] = values[i];
  20679.                             ret.length = j;
  20680.                             this._resolve(ret);
  20681.                         };
  20682.                         MappingPromiseArray.prototype.preservedValues = function() {
  20683.                             return this._preservedValues;
  20684.                         };
  20685.                         Promise.prototype.map = function(fn, options) {
  20686.                             if ("function" != typeof fn) return apiRejection("fn must be a function\n\n    See http://goo.gl/916lJJ\n"); else return map(this, fn, options, null).promise();
  20687.                         };
  20688.                         Promise.map = function(promises, fn, options, _filter) {
  20689.                             if ("function" != typeof fn) return apiRejection("fn must be a function\n\n    See http://goo.gl/916lJJ\n"); else return map(promises, fn, options, _filter).promise();
  20690.                         };
  20691.                     };
  20692.                 }, {
  20693.                     "./async.js": 2,
  20694.                     "./util.js": 38
  20695.                 } ],
  20696.                 20: [ function(_dereq_, module, exports) {
  20697.                     "use strict";
  20698.                     module.exports = function(Promise, INTERNAL, tryConvertToPromise, apiRejection) {
  20699.                         var util = _dereq_("./util.js"), tryCatch = util.tryCatch;
  20700.                         Promise.method = function(fn) {
  20701.                             if ("function" != typeof fn) throw new Promise.TypeError("fn must be a function\n\n    See http://goo.gl/916lJJ\n");
  20702.                             return function() {
  20703.                                 var ret = new Promise(INTERNAL);
  20704.                                 ret._captureStackTrace();
  20705.                                 ret._pushContext();
  20706.                                 var value = tryCatch(fn).apply(this, arguments);
  20707.                                 ret._popContext();
  20708.                                 ret._resolveFromSyncValue(value);
  20709.                                 return ret;
  20710.                             };
  20711.                         };
  20712.                         Promise.attempt = Promise["try"] = function(fn, args, ctx) {
  20713.                             if ("function" != typeof fn) return apiRejection("fn must be a function\n\n    See http://goo.gl/916lJJ\n");
  20714.                             var ret = new Promise(INTERNAL);
  20715.                             ret._captureStackTrace();
  20716.                             ret._pushContext();
  20717.                             var value = util.isArray(args) ? tryCatch(fn).apply(ctx, args) : tryCatch(fn).call(ctx, args);
  20718.                             ret._popContext();
  20719.                             ret._resolveFromSyncValue(value);
  20720.                             return ret;
  20721.                         };
  20722.                         Promise.prototype._resolveFromSyncValue = function(value) {
  20723.                             if (value === util.errorObj) this._rejectCallback(value.e, !1, !0); else this._resolveCallback(value, !0);
  20724.                         };
  20725.                     };
  20726.                 }, {
  20727.                     "./util.js": 38
  20728.                 } ],
  20729.                 21: [ function(_dereq_, module, exports) {
  20730.                     "use strict";
  20731.                     module.exports = function(Promise) {
  20732.                         function spreadAdapter(val, nodeback) {
  20733.                             var promise = this;
  20734.                             if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);
  20735.                             var ret = tryCatch(nodeback).apply(promise._boundValue(), [ null ].concat(val));
  20736.                             if (ret === errorObj) async.throwLater(ret.e);
  20737.                         }
  20738.                         function successAdapter(val, nodeback) {
  20739.                             var promise = this, receiver = promise._boundValue(), ret = val === undefined ? tryCatch(nodeback).call(receiver, null) : tryCatch(nodeback).call(receiver, null, val);
  20740.                             if (ret === errorObj) async.throwLater(ret.e);
  20741.                         }
  20742.                         function errorAdapter(reason, nodeback) {
  20743.                             var promise = this;
  20744.                             if (!reason) {
  20745.                                 var target = promise._target(), newReason = target._getCarriedStackTrace();
  20746.                                 newReason.cause = reason;
  20747.                                 reason = newReason;
  20748.                             }
  20749.                             var ret = tryCatch(nodeback).call(promise._boundValue(), reason);
  20750.                             if (ret === errorObj) async.throwLater(ret.e);
  20751.                         }
  20752.                         var util = _dereq_("./util.js"), async = _dereq_("./async.js"), tryCatch = util.tryCatch, errorObj = util.errorObj;
  20753.                         Promise.prototype.asCallback = Promise.prototype.nodeify = function(nodeback, options) {
  20754.                             if ("function" == typeof nodeback) {
  20755.                                 var adapter = successAdapter;
  20756.                                 if (options !== undefined && Object(options).spread) adapter = spreadAdapter;
  20757.                                 this._then(adapter, errorAdapter, undefined, this, nodeback);
  20758.                             }
  20759.                             return this;
  20760.                         };
  20761.                     };
  20762.                 }, {
  20763.                     "./async.js": 2,
  20764.                     "./util.js": 38
  20765.                 } ],
  20766.                 22: [ function(_dereq_, module, exports) {
  20767.                     "use strict";
  20768.                     module.exports = function(Promise, PromiseArray) {
  20769.                         var util = _dereq_("./util.js"), async = _dereq_("./async.js"), tryCatch = util.tryCatch, errorObj = util.errorObj;
  20770.                         Promise.prototype.progressed = function(handler) {
  20771.                             return this._then(undefined, undefined, handler, undefined, undefined);
  20772.                         };
  20773.                         Promise.prototype._progress = function(progressValue) {
  20774.                             if (!this._isFollowingOrFulfilledOrRejected()) this._target()._progressUnchecked(progressValue);
  20775.                         };
  20776.                         Promise.prototype._progressHandlerAt = function(index) {
  20777.                             return 0 === index ? this._progressHandler0 : this[(index << 2) + index - 5 + 2];
  20778.                         };
  20779.                         Promise.prototype._doProgressWith = function(progression) {
  20780.                             var progressValue = progression.value, handler = progression.handler, promise = progression.promise, receiver = progression.receiver, ret = tryCatch(handler).call(receiver, progressValue);
  20781.                             if (ret === errorObj) {
  20782.                                 if (null != ret.e && "StopProgressPropagation" !== ret.e.name) {
  20783.                                     var trace = util.canAttachTrace(ret.e) ? ret.e : new Error(util.toString(ret.e));
  20784.                                     promise._attachExtraTrace(trace);
  20785.                                     promise._progress(ret.e);
  20786.                                 }
  20787.                             } else if (ret instanceof Promise) ret._then(promise._progress, null, null, promise, undefined); else promise._progress(ret);
  20788.                         };
  20789.                         Promise.prototype._progressUnchecked = function(progressValue) {
  20790.                             for (var len = this._length(), progress = this._progress, i = 0; i < len; i++) {
  20791.                                 var handler = this._progressHandlerAt(i), promise = this._promiseAt(i);
  20792.                                 if (promise instanceof Promise) if ("function" == typeof handler) async.invoke(this._doProgressWith, this, {
  20793.                                     handler: handler,
  20794.                                     promise: promise,
  20795.                                     receiver: this._receiverAt(i),
  20796.                                     value: progressValue
  20797.                                 }); else async.invoke(progress, promise, progressValue); else {
  20798.                                     var receiver = this._receiverAt(i);
  20799.                                     if ("function" == typeof handler) handler.call(receiver, progressValue, promise); else if (receiver instanceof PromiseArray && !receiver._isResolved()) receiver._promiseProgressed(progressValue, promise);
  20800.                                 }
  20801.                             }
  20802.                         };
  20803.                     };
  20804.                 }, {
  20805.                     "./async.js": 2,
  20806.                     "./util.js": 38
  20807.                 } ],
  20808.                 23: [ function(_dereq_, module, exports) {
  20809.                     "use strict";
  20810.                     module.exports = function() {
  20811.                         function Promise(resolver) {
  20812.                             if ("function" != typeof resolver) throw new TypeError("the promise constructor requires a resolver function\n\n    See http://goo.gl/EC22Yn\n");
  20813.                             if (this.constructor !== Promise) throw new TypeError("the promise constructor cannot be invoked directly\n\n    See http://goo.gl/KsIlge\n");
  20814.                             this._bitField = 0;
  20815.                             this._fulfillmentHandler0 = undefined;
  20816.                             this._rejectionHandler0 = undefined;
  20817.                             this._progressHandler0 = undefined;
  20818.                             this._promise0 = undefined;
  20819.                             this._receiver0 = undefined;
  20820.                             this._settledValue = undefined;
  20821.                             if (resolver !== INTERNAL) this._resolveFromResolver(resolver);
  20822.                         }
  20823.                         function fillTypes(value) {
  20824.                             var p = new Promise(INTERNAL);
  20825.                             p._fulfillmentHandler0 = value;
  20826.                             p._rejectionHandler0 = value;
  20827.                             p._progressHandler0 = value;
  20828.                             p._promise0 = value;
  20829.                             p._receiver0 = value;
  20830.                             p._settledValue = value;
  20831.                         }
  20832.                         var getDomain, makeSelfResolutionError = function() {
  20833.                             return new TypeError("circular promise resolution chain\n\n    See http://goo.gl/LhFpo0\n");
  20834.                         }, reflect = function() {
  20835.                             return new Promise.PromiseInspection(this._target());
  20836.                         }, apiRejection = function(msg) {
  20837.                             return Promise.reject(new TypeError(msg));
  20838.                         }, util = _dereq_("./util.js");
  20839.                         if (util.isNode) getDomain = function() {
  20840.                             var ret = process.domain;
  20841.                             if (ret === undefined) ret = null;
  20842.                             return ret;
  20843.                         }; else getDomain = function() {
  20844.                             return null;
  20845.                         };
  20846.                         util.notEnumerableProp(Promise, "_getDomain", getDomain);
  20847.                         var UNDEFINED_BINDING = {}, async = _dereq_("./async.js"), errors = _dereq_("./errors.js"), TypeError = Promise.TypeError = errors.TypeError;
  20848.                         Promise.RangeError = errors.RangeError;
  20849.                         Promise.CancellationError = errors.CancellationError;
  20850.                         Promise.TimeoutError = errors.TimeoutError;
  20851.                         Promise.OperationalError = errors.OperationalError;
  20852.                         Promise.RejectionError = errors.OperationalError;
  20853.                         Promise.AggregateError = errors.AggregateError;
  20854.                         var INTERNAL = function() {}, APPLY = {}, NEXT_FILTER = {
  20855.                             e: null
  20856.                         }, tryConvertToPromise = _dereq_("./thenables.js")(Promise, INTERNAL), PromiseArray = _dereq_("./promise_array.js")(Promise, INTERNAL, tryConvertToPromise, apiRejection), CapturedTrace = _dereq_("./captured_trace.js")(), isDebugging = _dereq_("./debuggability.js")(Promise, CapturedTrace), createContext = _dereq_("./context.js")(Promise, CapturedTrace, isDebugging), CatchFilter = _dereq_("./catch_filter.js")(NEXT_FILTER), PromiseResolver = _dereq_("./promise_resolver.js"), nodebackForPromise = PromiseResolver._nodebackForPromise, errorObj = util.errorObj, tryCatch = util.tryCatch;
  20857.                         Promise.prototype.toString = function() {
  20858.                             return "[object Promise]";
  20859.                         };
  20860.                         Promise.prototype.caught = Promise.prototype["catch"] = function(fn) {
  20861.                             var len = arguments.length;
  20862.                             if (len > 1) {
  20863.                                 var i, catchInstances = new Array(len - 1), j = 0;
  20864.                                 for (i = 0; i < len - 1; ++i) {
  20865.                                     var item = arguments[i];
  20866.                                     if ("function" == typeof item) catchInstances[j++] = item; else return Promise.reject(new TypeError("Catch filter must inherit from Error or be a simple predicate function\n\n    See http://goo.gl/o84o68\n"));
  20867.                                 }
  20868.                                 catchInstances.length = j;
  20869.                                 fn = arguments[i];
  20870.                                 var catchFilter = new CatchFilter(catchInstances, fn, this);
  20871.                                 return this._then(undefined, catchFilter.doFilter, undefined, catchFilter, undefined);
  20872.                             }
  20873.                             return this._then(undefined, fn, undefined, undefined, undefined);
  20874.                         };
  20875.                         Promise.prototype.reflect = function() {
  20876.                             return this._then(reflect, reflect, undefined, this, undefined);
  20877.                         };
  20878.                         Promise.prototype.then = function(didFulfill, didReject, didProgress) {
  20879.                             if (isDebugging() && arguments.length > 0 && "function" != typeof didFulfill && "function" != typeof didReject) {
  20880.                                 var msg = ".then() only accepts functions but was passed: " + util.classString(didFulfill);
  20881.                                 if (arguments.length > 1) msg += ", " + util.classString(didReject);
  20882.                                 this._warn(msg);
  20883.                             }
  20884.                             return this._then(didFulfill, didReject, didProgress, undefined, undefined);
  20885.                         };
  20886.                         Promise.prototype.done = function(didFulfill, didReject, didProgress) {
  20887.                             this._then(didFulfill, didReject, didProgress, undefined, undefined)._setIsFinal();
  20888.                         };
  20889.                         Promise.prototype.spread = function(didFulfill, didReject) {
  20890.                             return this.all()._then(didFulfill, didReject, undefined, APPLY, undefined);
  20891.                         };
  20892.                         Promise.prototype.isCancellable = function() {
  20893.                             return !this.isResolved() && this._cancellable();
  20894.                         };
  20895.                         Promise.prototype.toJSON = function() {
  20896.                             var ret = {
  20897.                                 isFulfilled: !1,
  20898.                                 isRejected: !1,
  20899.                                 fulfillmentValue: undefined,
  20900.                                 rejectionReason: undefined
  20901.                             };
  20902.                             if (this.isFulfilled()) {
  20903.                                 ret.fulfillmentValue = this.value();
  20904.                                 ret.isFulfilled = !0;
  20905.                             } else if (this.isRejected()) {
  20906.                                 ret.rejectionReason = this.reason();
  20907.                                 ret.isRejected = !0;
  20908.                             }
  20909.                             return ret;
  20910.                         };
  20911.                         Promise.prototype.all = function() {
  20912.                             return new PromiseArray(this).promise();
  20913.                         };
  20914.                         Promise.prototype.error = function(fn) {
  20915.                             return this.caught(util.originatesFromRejection, fn);
  20916.                         };
  20917.                         Promise.getNewLibraryCopy = module.exports;
  20918.                         Promise.is = function(val) {
  20919.                             return val instanceof Promise;
  20920.                         };
  20921.                         Promise.fromNode = function(fn) {
  20922.                             var ret = new Promise(INTERNAL), result = tryCatch(fn)(nodebackForPromise(ret));
  20923.                             if (result === errorObj) ret._rejectCallback(result.e, !0, !0);
  20924.                             return ret;
  20925.                         };
  20926.                         Promise.all = function(promises) {
  20927.                             return new PromiseArray(promises).promise();
  20928.                         };
  20929.                         Promise.defer = Promise.pending = function() {
  20930.                             var promise = new Promise(INTERNAL);
  20931.                             return new PromiseResolver(promise);
  20932.                         };
  20933.                         Promise.cast = function(obj) {
  20934.                             var ret = tryConvertToPromise(obj);
  20935.                             if (!(ret instanceof Promise)) {
  20936.                                 var val = ret;
  20937.                                 ret = new Promise(INTERNAL);
  20938.                                 ret._fulfillUnchecked(val);
  20939.                             }
  20940.                             return ret;
  20941.                         };
  20942.                         Promise.resolve = Promise.fulfilled = Promise.cast;
  20943.                         Promise.reject = Promise.rejected = function(reason) {
  20944.                             var ret = new Promise(INTERNAL);
  20945.                             ret._captureStackTrace();
  20946.                             ret._rejectCallback(reason, !0);
  20947.                             return ret;
  20948.                         };
  20949.                         Promise.setScheduler = function(fn) {
  20950.                             if ("function" != typeof fn) throw new TypeError("fn must be a function\n\n    See http://goo.gl/916lJJ\n");
  20951.                             var prev = async._schedule;
  20952.                             async._schedule = fn;
  20953.                             return prev;
  20954.                         };
  20955.                         Promise.prototype._then = function(didFulfill, didReject, didProgress, receiver, internalData) {
  20956.                             var haveInternalData = internalData !== undefined, ret = haveInternalData ? internalData : new Promise(INTERNAL);
  20957.                             if (!haveInternalData) {
  20958.                                 ret._propagateFrom(this, 5);
  20959.                                 ret._captureStackTrace();
  20960.                             }
  20961.                             var target = this._target();
  20962.                             if (target !== this) {
  20963.                                 if (receiver === undefined) receiver = this._boundTo;
  20964.                                 if (!haveInternalData) ret._setIsMigrated();
  20965.                             }
  20966.                             var callbackIndex = target._addCallbacks(didFulfill, didReject, didProgress, ret, receiver, getDomain());
  20967.                             if (target._isResolved() && !target._isSettlePromisesQueued()) async.invoke(target._settlePromiseAtPostResolution, target, callbackIndex);
  20968.                             return ret;
  20969.                         };
  20970.                         Promise.prototype._settlePromiseAtPostResolution = function(index) {
  20971.                             if (this._isRejectionUnhandled()) this._unsetRejectionIsUnhandled();
  20972.                             this._settlePromiseAt(index);
  20973.                         };
  20974.                         Promise.prototype._length = function() {
  20975.                             return 131071 & this._bitField;
  20976.                         };
  20977.                         Promise.prototype._isFollowingOrFulfilledOrRejected = function() {
  20978.                             return (939524096 & this._bitField) > 0;
  20979.                         };
  20980.                         Promise.prototype._isFollowing = function() {
  20981.                             return 536870912 == (536870912 & this._bitField);
  20982.                         };
  20983.                         Promise.prototype._setLength = function(len) {
  20984.                             this._bitField = -131072 & this._bitField | 131071 & len;
  20985.                         };
  20986.                         Promise.prototype._setFulfilled = function() {
  20987.                             this._bitField = 268435456 | this._bitField;
  20988.                         };
  20989.                         Promise.prototype._setRejected = function() {
  20990.                             this._bitField = 134217728 | this._bitField;
  20991.                         };
  20992.                         Promise.prototype._setFollowing = function() {
  20993.                             this._bitField = 536870912 | this._bitField;
  20994.                         };
  20995.                         Promise.prototype._setIsFinal = function() {
  20996.                             this._bitField = 33554432 | this._bitField;
  20997.                         };
  20998.                         Promise.prototype._isFinal = function() {
  20999.                             return (33554432 & this._bitField) > 0;
  21000.                         };
  21001.                         Promise.prototype._cancellable = function() {
  21002.                             return (67108864 & this._bitField) > 0;
  21003.                         };
  21004.                         Promise.prototype._setCancellable = function() {
  21005.                             this._bitField = 67108864 | this._bitField;
  21006.                         };
  21007.                         Promise.prototype._unsetCancellable = function() {
  21008.                             this._bitField = -67108865 & this._bitField;
  21009.                         };
  21010.                         Promise.prototype._setIsMigrated = function() {
  21011.                             this._bitField = 4194304 | this._bitField;
  21012.                         };
  21013.                         Promise.prototype._unsetIsMigrated = function() {
  21014.                             this._bitField = -4194305 & this._bitField;
  21015.                         };
  21016.                         Promise.prototype._isMigrated = function() {
  21017.                             return (4194304 & this._bitField) > 0;
  21018.                         };
  21019.                         Promise.prototype._receiverAt = function(index) {
  21020.                             var ret = 0 === index ? this._receiver0 : this[5 * index - 5 + 4];
  21021.                             if (ret === UNDEFINED_BINDING) return undefined; else if (ret === undefined && this._isBound()) return this._boundValue();
  21022.                             return ret;
  21023.                         };
  21024.                         Promise.prototype._promiseAt = function(index) {
  21025.                             return 0 === index ? this._promise0 : this[5 * index - 5 + 3];
  21026.                         };
  21027.                         Promise.prototype._fulfillmentHandlerAt = function(index) {
  21028.                             return 0 === index ? this._fulfillmentHandler0 : this[5 * index - 5 + 0];
  21029.                         };
  21030.                         Promise.prototype._rejectionHandlerAt = function(index) {
  21031.                             return 0 === index ? this._rejectionHandler0 : this[5 * index - 5 + 1];
  21032.                         };
  21033.                         Promise.prototype._boundValue = function() {
  21034.                             var ret = this._boundTo;
  21035.                             if (ret !== undefined) if (ret instanceof Promise) if (ret.isFulfilled()) return ret.value(); else return undefined;
  21036.                             return ret;
  21037.                         };
  21038.                         Promise.prototype._migrateCallbacks = function(follower, index) {
  21039.                             var fulfill = follower._fulfillmentHandlerAt(index), reject = follower._rejectionHandlerAt(index), progress = follower._progressHandlerAt(index), promise = follower._promiseAt(index), receiver = follower._receiverAt(index);
  21040.                             if (promise instanceof Promise) promise._setIsMigrated();
  21041.                             if (receiver === undefined) receiver = UNDEFINED_BINDING;
  21042.                             this._addCallbacks(fulfill, reject, progress, promise, receiver, null);
  21043.                         };
  21044.                         Promise.prototype._addCallbacks = function(fulfill, reject, progress, promise, receiver, domain) {
  21045.                             var index = this._length();
  21046.                             if (index >= 131066) {
  21047.                                 index = 0;
  21048.                                 this._setLength(0);
  21049.                             }
  21050.                             if (0 === index) {
  21051.                                 this._promise0 = promise;
  21052.                                 if (receiver !== undefined) this._receiver0 = receiver;
  21053.                                 if ("function" == typeof fulfill && !this._isCarryingStackTrace()) this._fulfillmentHandler0 = null === domain ? fulfill : domain.bind(fulfill);
  21054.                                 if ("function" == typeof reject) this._rejectionHandler0 = null === domain ? reject : domain.bind(reject);
  21055.                                 if ("function" == typeof progress) this._progressHandler0 = null === domain ? progress : domain.bind(progress);
  21056.                             } else {
  21057.                                 var base = 5 * index - 5;
  21058.                                 this[base + 3] = promise;
  21059.                                 this[base + 4] = receiver;
  21060.                                 if ("function" == typeof fulfill) this[base + 0] = null === domain ? fulfill : domain.bind(fulfill);
  21061.                                 if ("function" == typeof reject) this[base + 1] = null === domain ? reject : domain.bind(reject);
  21062.                                 if ("function" == typeof progress) this[base + 2] = null === domain ? progress : domain.bind(progress);
  21063.                             }
  21064.                             this._setLength(index + 1);
  21065.                             return index;
  21066.                         };
  21067.                         Promise.prototype._setProxyHandlers = function(receiver, promiseSlotValue) {
  21068.                             var index = this._length();
  21069.                             if (index >= 131066) {
  21070.                                 index = 0;
  21071.                                 this._setLength(0);
  21072.                             }
  21073.                             if (0 === index) {
  21074.                                 this._promise0 = promiseSlotValue;
  21075.                                 this._receiver0 = receiver;
  21076.                             } else {
  21077.                                 var base = 5 * index - 5;
  21078.                                 this[base + 3] = promiseSlotValue;
  21079.                                 this[base + 4] = receiver;
  21080.                             }
  21081.                             this._setLength(index + 1);
  21082.                         };
  21083.                         Promise.prototype._proxyPromiseArray = function(promiseArray, index) {
  21084.                             this._setProxyHandlers(promiseArray, index);
  21085.                         };
  21086.                         Promise.prototype._resolveCallback = function(value, shouldBind) {
  21087.                             if (!this._isFollowingOrFulfilledOrRejected()) {
  21088.                                 if (value === this) return this._rejectCallback(makeSelfResolutionError(), !1, !0);
  21089.                                 var maybePromise = tryConvertToPromise(value, this);
  21090.                                 if (!(maybePromise instanceof Promise)) return this._fulfill(value);
  21091.                                 var propagationFlags = 1 | (shouldBind ? 4 : 0);
  21092.                                 this._propagateFrom(maybePromise, propagationFlags);
  21093.                                 var promise = maybePromise._target();
  21094.                                 if (promise._isPending()) {
  21095.                                     for (var len = this._length(), i = 0; i < len; ++i) promise._migrateCallbacks(this, i);
  21096.                                     this._setFollowing();
  21097.                                     this._setLength(0);
  21098.                                     this._setFollowee(promise);
  21099.                                 } else if (promise._isFulfilled()) this._fulfillUnchecked(promise._value()); else this._rejectUnchecked(promise._reason(), promise._getCarriedStackTrace());
  21100.                             }
  21101.                         };
  21102.                         Promise.prototype._rejectCallback = function(reason, synchronous, shouldNotMarkOriginatingFromRejection) {
  21103.                             if (!shouldNotMarkOriginatingFromRejection) util.markAsOriginatingFromRejection(reason);
  21104.                             var trace = util.ensureErrorObject(reason), hasStack = trace === reason;
  21105.                             this._attachExtraTrace(trace, synchronous ? hasStack : !1);
  21106.                             this._reject(reason, hasStack ? undefined : trace);
  21107.                         };
  21108.                         Promise.prototype._resolveFromResolver = function(resolver) {
  21109.                             var promise = this;
  21110.                             this._captureStackTrace();
  21111.                             this._pushContext();
  21112.                             var synchronous = !0, r = tryCatch(resolver)(function(value) {
  21113.                                 if (null !== promise) {
  21114.                                     promise._resolveCallback(value);
  21115.                                     promise = null;
  21116.                                 }
  21117.                             }, function(reason) {
  21118.                                 if (null !== promise) {
  21119.                                     promise._rejectCallback(reason, synchronous);
  21120.                                     promise = null;
  21121.                                 }
  21122.                             });
  21123.                             synchronous = !1;
  21124.                             this._popContext();
  21125.                             if (r !== undefined && r === errorObj && null !== promise) {
  21126.                                 promise._rejectCallback(r.e, !0, !0);
  21127.                                 promise = null;
  21128.                             }
  21129.                         };
  21130.                         Promise.prototype._settlePromiseFromHandler = function(handler, receiver, value, promise) {
  21131.                             if (!promise._isRejected()) {
  21132.                                 promise._pushContext();
  21133.                                 var x;
  21134.                                 if (receiver === APPLY && !this._isRejected()) x = tryCatch(handler).apply(this._boundValue(), value); else x = tryCatch(handler).call(receiver, value);
  21135.                                 promise._popContext();
  21136.                                 if (x === errorObj || x === promise || x === NEXT_FILTER) {
  21137.                                     var err = x === promise ? makeSelfResolutionError() : x.e;
  21138.                                     promise._rejectCallback(err, !1, !0);
  21139.                                 } else promise._resolveCallback(x);
  21140.                             }
  21141.                         };
  21142.                         Promise.prototype._target = function() {
  21143.                             for (var ret = this; ret._isFollowing(); ) ret = ret._followee();
  21144.                             return ret;
  21145.                         };
  21146.                         Promise.prototype._followee = function() {
  21147.                             return this._rejectionHandler0;
  21148.                         };
  21149.                         Promise.prototype._setFollowee = function(promise) {
  21150.                             this._rejectionHandler0 = promise;
  21151.                         };
  21152.                         Promise.prototype._cleanValues = function() {
  21153.                             if (this._cancellable()) this._cancellationParent = undefined;
  21154.                         };
  21155.                         Promise.prototype._propagateFrom = function(parent, flags) {
  21156.                             if ((1 & flags) > 0 && parent._cancellable()) {
  21157.                                 this._setCancellable();
  21158.                                 this._cancellationParent = parent;
  21159.                             }
  21160.                             if ((4 & flags) > 0 && parent._isBound()) this._setBoundTo(parent._boundTo);
  21161.                         };
  21162.                         Promise.prototype._fulfill = function(value) {
  21163.                             if (!this._isFollowingOrFulfilledOrRejected()) this._fulfillUnchecked(value);
  21164.                         };
  21165.                         Promise.prototype._reject = function(reason, carriedStackTrace) {
  21166.                             if (!this._isFollowingOrFulfilledOrRejected()) this._rejectUnchecked(reason, carriedStackTrace);
  21167.                         };
  21168.                         Promise.prototype._settlePromiseAt = function(index) {
  21169.                             var promise = this._promiseAt(index), isPromise = promise instanceof Promise;
  21170.                             if (isPromise && promise._isMigrated()) {
  21171.                                 promise._unsetIsMigrated();
  21172.                                 return async.invoke(this._settlePromiseAt, this, index);
  21173.                             }
  21174.                             var handler = this._isFulfilled() ? this._fulfillmentHandlerAt(index) : this._rejectionHandlerAt(index), carriedStackTrace = this._isCarryingStackTrace() ? this._getCarriedStackTrace() : undefined, value = this._settledValue, receiver = this._receiverAt(index);
  21175.                             this._clearCallbackDataAtIndex(index);
  21176.                             if ("function" == typeof handler) if (!isPromise) handler.call(receiver, value, promise); else this._settlePromiseFromHandler(handler, receiver, value, promise); else if (receiver instanceof PromiseArray) {
  21177.                                 if (!receiver._isResolved()) if (this._isFulfilled()) receiver._promiseFulfilled(value, promise); else receiver._promiseRejected(value, promise);
  21178.                             } else if (isPromise) if (this._isFulfilled()) promise._fulfill(value); else promise._reject(value, carriedStackTrace);
  21179.                             if (index >= 4 && 4 == (31 & index)) async.invokeLater(this._setLength, this, 0);
  21180.                         };
  21181.                         Promise.prototype._clearCallbackDataAtIndex = function(index) {
  21182.                             if (0 === index) {
  21183.                                 if (!this._isCarryingStackTrace()) this._fulfillmentHandler0 = undefined;
  21184.                                 this._rejectionHandler0 = this._progressHandler0 = this._receiver0 = this._promise0 = undefined;
  21185.                             } else {
  21186.                                 var base = 5 * index - 5;
  21187.                                 this[base + 3] = this[base + 4] = this[base + 0] = this[base + 1] = this[base + 2] = undefined;
  21188.                             }
  21189.                         };
  21190.                         Promise.prototype._isSettlePromisesQueued = function() {
  21191.                             return -1073741824 == (-1073741824 & this._bitField);
  21192.                         };
  21193.                         Promise.prototype._setSettlePromisesQueued = function() {
  21194.                             this._bitField = -1073741824 | this._bitField;
  21195.                         };
  21196.                         Promise.prototype._unsetSettlePromisesQueued = function() {
  21197.                             this._bitField = 1073741823 & this._bitField;
  21198.                         };
  21199.                         Promise.prototype._queueSettlePromises = function() {
  21200.                             async.settlePromises(this);
  21201.                             this._setSettlePromisesQueued();
  21202.                         };
  21203.                         Promise.prototype._fulfillUnchecked = function(value) {
  21204.                             if (value === this) {
  21205.                                 var err = makeSelfResolutionError();
  21206.                                 this._attachExtraTrace(err);
  21207.                                 return this._rejectUnchecked(err, undefined);
  21208.                             }
  21209.                             this._setFulfilled();
  21210.                             this._settledValue = value;
  21211.                             this._cleanValues();
  21212.                             if (this._length() > 0) this._queueSettlePromises();
  21213.                         };
  21214.                         Promise.prototype._rejectUncheckedCheckError = function(reason) {
  21215.                             var trace = util.ensureErrorObject(reason);
  21216.                             this._rejectUnchecked(reason, trace === reason ? undefined : trace);
  21217.                         };
  21218.                         Promise.prototype._rejectUnchecked = function(reason, trace) {
  21219.                             if (reason === this) {
  21220.                                 var err = makeSelfResolutionError();
  21221.                                 this._attachExtraTrace(err);
  21222.                                 return this._rejectUnchecked(err);
  21223.                             }
  21224.                             this._setRejected();
  21225.                             this._settledValue = reason;
  21226.                             this._cleanValues();
  21227.                             if (!this._isFinal()) {
  21228.                                 if (trace !== undefined && trace !== reason) this._setCarriedStackTrace(trace);
  21229.                                 if (this._length() > 0) this._queueSettlePromises(); else this._ensurePossibleRejectionHandled();
  21230.                             } else async.throwLater(function(e) {
  21231.                                 if ("stack" in e) async.invokeFirst(CapturedTrace.unhandledRejection, undefined, e);
  21232.                                 throw e;
  21233.                             }, trace === undefined ? reason : trace);
  21234.                         };
  21235.                         Promise.prototype._settlePromises = function() {
  21236.                             this._unsetSettlePromisesQueued();
  21237.                             for (var len = this._length(), i = 0; i < len; i++) this._settlePromiseAt(i);
  21238.                         };
  21239.                         util.notEnumerableProp(Promise, "_makeSelfResolutionError", makeSelfResolutionError);
  21240.                         _dereq_("./progress.js")(Promise, PromiseArray);
  21241.                         _dereq_("./method.js")(Promise, INTERNAL, tryConvertToPromise, apiRejection);
  21242.                         _dereq_("./bind.js")(Promise, INTERNAL, tryConvertToPromise);
  21243.                         _dereq_("./finally.js")(Promise, NEXT_FILTER, tryConvertToPromise);
  21244.                         _dereq_("./direct_resolve.js")(Promise);
  21245.                         _dereq_("./synchronous_inspection.js")(Promise);
  21246.                         _dereq_("./join.js")(Promise, PromiseArray, tryConvertToPromise, INTERNAL);
  21247.                         Promise.version = "2.11.0";
  21248.                         Promise.Promise = Promise;
  21249.                         _dereq_("./map.js")(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL);
  21250.                         _dereq_("./cancel.js")(Promise);
  21251.                         _dereq_("./using.js")(Promise, apiRejection, tryConvertToPromise, createContext);
  21252.                         _dereq_("./generators.js")(Promise, apiRejection, INTERNAL, tryConvertToPromise);
  21253.                         _dereq_("./nodeify.js")(Promise);
  21254.                         _dereq_("./call_get.js")(Promise);
  21255.                         _dereq_("./props.js")(Promise, PromiseArray, tryConvertToPromise, apiRejection);
  21256.                         _dereq_("./race.js")(Promise, INTERNAL, tryConvertToPromise, apiRejection);
  21257.                         _dereq_("./reduce.js")(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL);
  21258.                         _dereq_("./settle.js")(Promise, PromiseArray);
  21259.                         _dereq_("./some.js")(Promise, PromiseArray, apiRejection);
  21260.                         _dereq_("./promisify.js")(Promise, INTERNAL);
  21261.                         _dereq_("./any.js")(Promise);
  21262.                         _dereq_("./each.js")(Promise, INTERNAL);
  21263.                         _dereq_("./timers.js")(Promise, INTERNAL);
  21264.                         _dereq_("./filter.js")(Promise, INTERNAL);
  21265.                         util.toFastProperties(Promise);
  21266.                         util.toFastProperties(Promise.prototype);
  21267.                         fillTypes({
  21268.                             a: 1
  21269.                         });
  21270.                         fillTypes({
  21271.                             b: 2
  21272.                         });
  21273.                         fillTypes({
  21274.                             c: 3
  21275.                         });
  21276.                         fillTypes(1);
  21277.                         fillTypes(function() {});
  21278.                         fillTypes(undefined);
  21279.                         fillTypes(!1);
  21280.                         fillTypes(new Promise(INTERNAL));
  21281.                         CapturedTrace.setBounds(async.firstLineError, util.lastLineError);
  21282.                         return Promise;
  21283.                     };
  21284.                 }, {
  21285.                     "./any.js": 1,
  21286.                     "./async.js": 2,
  21287.                     "./bind.js": 3,
  21288.                     "./call_get.js": 5,
  21289.                     "./cancel.js": 6,
  21290.                     "./captured_trace.js": 7,
  21291.                     "./catch_filter.js": 8,
  21292.                     "./context.js": 9,
  21293.                     "./debuggability.js": 10,
  21294.                     "./direct_resolve.js": 11,
  21295.                     "./each.js": 12,
  21296.                     "./errors.js": 13,
  21297.                     "./filter.js": 15,
  21298.                     "./finally.js": 16,
  21299.                     "./generators.js": 17,
  21300.                     "./join.js": 18,
  21301.                     "./map.js": 19,
  21302.                     "./method.js": 20,
  21303.                     "./nodeify.js": 21,
  21304.                     "./progress.js": 22,
  21305.                     "./promise_array.js": 24,
  21306.                     "./promise_resolver.js": 25,
  21307.                     "./promisify.js": 26,
  21308.                     "./props.js": 27,
  21309.                     "./race.js": 29,
  21310.                     "./reduce.js": 30,
  21311.                     "./settle.js": 32,
  21312.                     "./some.js": 33,
  21313.                     "./synchronous_inspection.js": 34,
  21314.                     "./thenables.js": 35,
  21315.                     "./timers.js": 36,
  21316.                     "./using.js": 37,
  21317.                     "./util.js": 38
  21318.                 } ],
  21319.                 24: [ function(_dereq_, module, exports) {
  21320.                     "use strict";
  21321.                     module.exports = function(Promise, INTERNAL, tryConvertToPromise, apiRejection) {
  21322.                         function toResolutionValue(val) {
  21323.                             switch (val) {
  21324.                               case -2:
  21325.                                 return [];
  21326.  
  21327.                               case -3:
  21328.                                 return {};
  21329.                             }
  21330.                         }
  21331.                         function PromiseArray(values) {
  21332.                             var parent, promise = this._promise = new Promise(INTERNAL);
  21333.                             if (values instanceof Promise) {
  21334.                                 parent = values;
  21335.                                 promise._propagateFrom(parent, 5);
  21336.                             }
  21337.                             this._values = values;
  21338.                             this._length = 0;
  21339.                             this._totalResolved = 0;
  21340.                             this._init(undefined, -2);
  21341.                         }
  21342.                         var util = _dereq_("./util.js"), isArray = util.isArray;
  21343.                         PromiseArray.prototype.length = function() {
  21344.                             return this._length;
  21345.                         };
  21346.                         PromiseArray.prototype.promise = function() {
  21347.                             return this._promise;
  21348.                         };
  21349.                         PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {
  21350.                             var values = tryConvertToPromise(this._values, this._promise);
  21351.                             if (values instanceof Promise) {
  21352.                                 values = values._target();
  21353.                                 this._values = values;
  21354.                                 if (values._isFulfilled()) {
  21355.                                     values = values._value();
  21356.                                     if (!isArray(values)) {
  21357.                                         var err = new Promise.TypeError("expecting an array, a promise or a thenable\n\n    See http://goo.gl/s8MMhc\n");
  21358.                                         this.__hardReject__(err);
  21359.                                         return;
  21360.                                     }
  21361.                                 } else if (values._isPending()) {
  21362.                                     values._then(init, this._reject, undefined, this, resolveValueIfEmpty);
  21363.                                     return;
  21364.                                 } else {
  21365.                                     this._reject(values._reason());
  21366.                                     return;
  21367.                                 }
  21368.                             } else if (!isArray(values)) {
  21369.                                 this._promise._reject(apiRejection("expecting an array, a promise or a thenable\n\n    See http://goo.gl/s8MMhc\n")._reason());
  21370.                                 return;
  21371.                             }
  21372.                             if (0 !== values.length) {
  21373.                                 var len = this.getActualLength(values.length);
  21374.                                 this._length = len;
  21375.                                 this._values = this.shouldCopyValues() ? new Array(len) : this._values;
  21376.                                 for (var promise = this._promise, i = 0; i < len; ++i) {
  21377.                                     var isResolved = this._isResolved(), maybePromise = tryConvertToPromise(values[i], promise);
  21378.                                     if (maybePromise instanceof Promise) {
  21379.                                         maybePromise = maybePromise._target();
  21380.                                         if (isResolved) maybePromise._ignoreRejections(); else if (maybePromise._isPending()) maybePromise._proxyPromiseArray(this, i); else if (maybePromise._isFulfilled()) this._promiseFulfilled(maybePromise._value(), i); else this._promiseRejected(maybePromise._reason(), i);
  21381.                                     } else if (!isResolved) this._promiseFulfilled(maybePromise, i);
  21382.                                 }
  21383.                             } else if (-5 === resolveValueIfEmpty) this._resolveEmptyArray(); else this._resolve(toResolutionValue(resolveValueIfEmpty));
  21384.                         };
  21385.                         PromiseArray.prototype._isResolved = function() {
  21386.                             return null === this._values;
  21387.                         };
  21388.                         PromiseArray.prototype._resolve = function(value) {
  21389.                             this._values = null;
  21390.                             this._promise._fulfill(value);
  21391.                         };
  21392.                         PromiseArray.prototype.__hardReject__ = PromiseArray.prototype._reject = function(reason) {
  21393.                             this._values = null;
  21394.                             this._promise._rejectCallback(reason, !1, !0);
  21395.                         };
  21396.                         PromiseArray.prototype._promiseProgressed = function(progressValue, index) {
  21397.                             this._promise._progress({
  21398.                                 index: index,
  21399.                                 value: progressValue
  21400.                             });
  21401.                         };
  21402.                         PromiseArray.prototype._promiseFulfilled = function(value, index) {
  21403.                             this._values[index] = value;
  21404.                             if (++this._totalResolved >= this._length) this._resolve(this._values);
  21405.                         };
  21406.                         PromiseArray.prototype._promiseRejected = function(reason, index) {
  21407.                             this._totalResolved++;
  21408.                             this._reject(reason);
  21409.                         };
  21410.                         PromiseArray.prototype.shouldCopyValues = function() {
  21411.                             return !0;
  21412.                         };
  21413.                         PromiseArray.prototype.getActualLength = function(len) {
  21414.                             return len;
  21415.                         };
  21416.                         return PromiseArray;
  21417.                     };
  21418.                 }, {
  21419.                     "./util.js": 38
  21420.                 } ],
  21421.                 25: [ function(_dereq_, module, exports) {
  21422.                     "use strict";
  21423.                     function isUntypedError(obj) {
  21424.                         return obj instanceof Error && es5.getPrototypeOf(obj) === Error.prototype;
  21425.                     }
  21426.                     function wrapAsOperationalError(obj) {
  21427.                         var ret;
  21428.                         if (isUntypedError(obj)) {
  21429.                             ret = new OperationalError(obj);
  21430.                             ret.name = obj.name;
  21431.                             ret.message = obj.message;
  21432.                             ret.stack = obj.stack;
  21433.                             for (var keys = es5.keys(obj), i = 0; i < keys.length; ++i) {
  21434.                                 var key = keys[i];
  21435.                                 if (!rErrorKey.test(key)) ret[key] = obj[key];
  21436.                             }
  21437.                             return ret;
  21438.                         }
  21439.                         util.markAsOriginatingFromRejection(obj);
  21440.                         return obj;
  21441.                     }
  21442.                     function nodebackForPromise(promise) {
  21443.                         return function(err, value) {
  21444.                             if (null !== promise) {
  21445.                                 if (err) {
  21446.                                     var wrapped = wrapAsOperationalError(maybeWrapAsError(err));
  21447.                                     promise._attachExtraTrace(wrapped);
  21448.                                     promise._reject(wrapped);
  21449.                                 } else if (arguments.length > 2) {
  21450.                                     for (var $_len = arguments.length, args = new Array($_len - 1), $_i = 1; $_i < $_len; ++$_i) args[$_i - 1] = arguments[$_i];
  21451.                                     promise._fulfill(args);
  21452.                                 } else promise._fulfill(value);
  21453.                                 promise = null;
  21454.                             }
  21455.                         };
  21456.                     }
  21457.                     var PromiseResolver, util = _dereq_("./util.js"), maybeWrapAsError = util.maybeWrapAsError, errors = _dereq_("./errors.js"), TimeoutError = errors.TimeoutError, OperationalError = errors.OperationalError, haveGetters = util.haveGetters, es5 = _dereq_("./es5.js"), rErrorKey = /^(?:name|message|stack|cause)$/;
  21458.                     if (!haveGetters) PromiseResolver = function(promise) {
  21459.                         this.promise = promise;
  21460.                         this.asCallback = nodebackForPromise(promise);
  21461.                         this.callback = this.asCallback;
  21462.                     }; else PromiseResolver = function(promise) {
  21463.                         this.promise = promise;
  21464.                     };
  21465.                     if (haveGetters) {
  21466.                         var prop = {
  21467.                             get: function() {
  21468.                                 return nodebackForPromise(this.promise);
  21469.                             }
  21470.                         };
  21471.                         es5.defineProperty(PromiseResolver.prototype, "asCallback", prop);
  21472.                         es5.defineProperty(PromiseResolver.prototype, "callback", prop);
  21473.                     }
  21474.                     PromiseResolver._nodebackForPromise = nodebackForPromise;
  21475.                     PromiseResolver.prototype.toString = function() {
  21476.                         return "[object PromiseResolver]";
  21477.                     };
  21478.                     PromiseResolver.prototype.resolve = PromiseResolver.prototype.fulfill = function(value) {
  21479.                         if (!(this instanceof PromiseResolver)) throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\n\n    See http://goo.gl/sdkXL9\n");
  21480.                         this.promise._resolveCallback(value);
  21481.                     };
  21482.                     PromiseResolver.prototype.reject = function(reason) {
  21483.                         if (!(this instanceof PromiseResolver)) throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\n\n    See http://goo.gl/sdkXL9\n");
  21484.                         this.promise._rejectCallback(reason);
  21485.                     };
  21486.                     PromiseResolver.prototype.progress = function(value) {
  21487.                         if (!(this instanceof PromiseResolver)) throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\n\n    See http://goo.gl/sdkXL9\n");
  21488.                         this.promise._progress(value);
  21489.                     };
  21490.                     PromiseResolver.prototype.cancel = function(err) {
  21491.                         this.promise.cancel(err);
  21492.                     };
  21493.                     PromiseResolver.prototype.timeout = function() {
  21494.                         this.reject(new TimeoutError("timeout"));
  21495.                     };
  21496.                     PromiseResolver.prototype.isResolved = function() {
  21497.                         return this.promise.isResolved();
  21498.                     };
  21499.                     PromiseResolver.prototype.toJSON = function() {
  21500.                         return this.promise.toJSON();
  21501.                     };
  21502.                     module.exports = PromiseResolver;
  21503.                 }, {
  21504.                     "./errors.js": 13,
  21505.                     "./es5.js": 14,
  21506.                     "./util.js": 38
  21507.                 } ],
  21508.                 26: [ function(_dereq_, module, exports) {
  21509.                     "use strict";
  21510.                     module.exports = function(Promise, INTERNAL) {
  21511.                         function propsFilter(key) {
  21512.                             return !noCopyPropsPattern.test(key);
  21513.                         }
  21514.                         function isPromisified(fn) {
  21515.                             try {
  21516.                                 return !0 === fn.__isPromisified__;
  21517.                             } catch (e) {
  21518.                                 return !1;
  21519.                             }
  21520.                         }
  21521.                         function hasPromisified(obj, key, suffix) {
  21522.                             var val = util.getDataPropertyOrDefault(obj, key + suffix, defaultPromisified);
  21523.                             return val ? isPromisified(val) : !1;
  21524.                         }
  21525.                         function checkValid(ret, suffix, suffixRegexp) {
  21526.                             for (var i = 0; i < ret.length; i += 2) {
  21527.                                 var key = ret[i];
  21528.                                 if (suffixRegexp.test(key)) for (var keyWithoutAsyncSuffix = key.replace(suffixRegexp, ""), j = 0; j < ret.length; j += 2) if (ret[j] === keyWithoutAsyncSuffix) throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\n\n    See http://goo.gl/iWrZbw\n".replace("%s", suffix));
  21529.                             }
  21530.                         }
  21531.                         function promisifiableMethods(obj, suffix, suffixRegexp, filter) {
  21532.                             for (var keys = util.inheritedDataKeys(obj), ret = [], i = 0; i < keys.length; ++i) {
  21533.                                 var key = keys[i], value = obj[key], passesDefaultFilter = filter === defaultFilter ? !0 : defaultFilter(key, value, obj);
  21534.                                 if ("function" == typeof value && !isPromisified(value) && !hasPromisified(obj, key, suffix) && filter(key, value, obj, passesDefaultFilter)) ret.push(key, value);
  21535.                             }
  21536.                             checkValid(ret, suffix, suffixRegexp);
  21537.                             return ret;
  21538.                         }
  21539.                         function makeNodePromisifiedClosure(callback, receiver, _, fn) {
  21540.                             function promisified() {
  21541.                                 var _receiver = receiver;
  21542.                                 if (receiver === THIS) _receiver = this;
  21543.                                 var promise = new Promise(INTERNAL);
  21544.                                 promise._captureStackTrace();
  21545.                                 var cb = "string" == typeof method && this !== defaultThis ? this[method] : callback, fn = nodebackForPromise(promise);
  21546.                                 try {
  21547.                                     cb.apply(_receiver, withAppended(arguments, fn));
  21548.                                 } catch (e) {
  21549.                                     promise._rejectCallback(maybeWrapAsError(e), !0, !0);
  21550.                                 }
  21551.                                 return promise;
  21552.                             }
  21553.                             var defaultThis = function() {
  21554.                                 return this;
  21555.                             }(), method = callback;
  21556.                             if ("string" == typeof method) callback = fn;
  21557.                             util.notEnumerableProp(promisified, "__isPromisified__", !0);
  21558.                             return promisified;
  21559.                         }
  21560.                         function promisifyAll(obj, suffix, filter, promisifier) {
  21561.                             for (var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + "$"), methods = promisifiableMethods(obj, suffix, suffixRegexp, filter), i = 0, len = methods.length; i < len; i += 2) {
  21562.                                 var key = methods[i], fn = methods[i + 1], promisifiedKey = key + suffix;
  21563.                                 if (promisifier === makeNodePromisified) obj[promisifiedKey] = makeNodePromisified(key, THIS, key, fn, suffix); else {
  21564.                                     var promisified = promisifier(fn, function() {
  21565.                                         return makeNodePromisified(key, THIS, key, fn, suffix);
  21566.                                     });
  21567.                                     util.notEnumerableProp(promisified, "__isPromisified__", !0);
  21568.                                     obj[promisifiedKey] = promisified;
  21569.                                 }
  21570.                             }
  21571.                             util.toFastProperties(obj);
  21572.                             return obj;
  21573.                         }
  21574.                         function promisify(callback, receiver) {
  21575.                             return makeNodePromisified(callback, receiver, undefined, callback);
  21576.                         }
  21577.                         var makeNodePromisifiedEval, THIS = {}, util = _dereq_("./util.js"), nodebackForPromise = _dereq_("./promise_resolver.js")._nodebackForPromise, withAppended = util.withAppended, maybeWrapAsError = util.maybeWrapAsError, canEvaluate = util.canEvaluate, TypeError = _dereq_("./errors").TypeError, defaultPromisified = {
  21578.                             __isPromisified__: !0
  21579.                         }, noCopyProps = [ "arity", "length", "name", "arguments", "caller", "callee", "prototype", "__isPromisified__" ], noCopyPropsPattern = new RegExp("^(?:" + noCopyProps.join("|") + ")$"), defaultFilter = function(name) {
  21580.                             return util.isIdentifier(name) && "_" !== name.charAt(0) && "constructor" !== name;
  21581.                         }, escapeIdentRegex = function(str) {
  21582.                             return str.replace(/([$])/, "\\$");
  21583.                         };
  21584.                         if (!1) {
  21585.                             var switchCaseArgumentOrder = function(likelyArgumentCount) {
  21586.                                 for (var ret = [ likelyArgumentCount ], min = Math.max(0, likelyArgumentCount - 1 - 3), i = likelyArgumentCount - 1; i >= min; --i) ret.push(i);
  21587.                                 for (var i = likelyArgumentCount + 1; i <= 3; ++i) ret.push(i);
  21588.                                 return ret;
  21589.                             }, argumentSequence = function(argumentCount) {
  21590.                                 return util.filledRange(argumentCount, "_arg", "");
  21591.                             }, parameterDeclaration = function(parameterCount) {
  21592.                                 return util.filledRange(Math.max(parameterCount, 3), "_arg", "");
  21593.                             }, parameterCount = function(fn) {
  21594.                                 if ("number" == typeof fn.length) return Math.max(Math.min(fn.length, 1024), 0); else return 0;
  21595.                             };
  21596.                             makeNodePromisifiedEval = function(callback, receiver, originalName, fn) {
  21597.                                 function generateCallForArgumentCount(count) {
  21598.                                     var ret, args = argumentSequence(count).join(", "), comma = count > 0 ? ", " : "";
  21599.                                     if (shouldProxyThis) ret = "ret = callback.call(this, {{args}}, nodeback); break;\n"; else ret = receiver === undefined ? "ret = callback({{args}}, nodeback); break;\n" : "ret = callback.call(receiver, {{args}}, nodeback); break;\n";
  21600.                                     return ret.replace("{{args}}", args).replace(", ", comma);
  21601.                                 }
  21602.                                 var newParameterCount = Math.max(0, parameterCount(fn) - 1), argumentOrder = switchCaseArgumentOrder(newParameterCount), shouldProxyThis = "string" == typeof callback || receiver === THIS, getFunctionCode = "string" == typeof callback ? "this != null ? this['" + callback + "'] : fn" : "fn";
  21603.                                 return new Function("Promise", "fn", "receiver", "withAppended", "maybeWrapAsError", "nodebackForPromise", "tryCatch", "errorObj", "notEnumerableProp", "INTERNAL", "'use strict';                            \n        var ret = function (Parameters) {                                    \n            'use strict';                                                    \n            var len = arguments.length;                                      \n            var promise = new Promise(INTERNAL);                             \n            promise._captureStackTrace();                                    \n            var nodeback = nodebackForPromise(promise);                      \n            var ret;                                                         \n            var callback = tryCatch([GetFunctionCode]);                      \n            switch(len) {                                                    \n                [CodeForSwitchCase]                                          \n            }                                                                \n            if (ret === errorObj) {                                          \n                promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\n            }                                                                \n            return promise;                                                  \n        };                                                                   \n        notEnumerableProp(ret, '__isPromisified__', true);                   \n        return ret;                                                          \n        ".replace("Parameters", parameterDeclaration(newParameterCount)).replace("[CodeForSwitchCase]", function() {
  21604.                                     for (var ret = "", i = 0; i < argumentOrder.length; ++i) ret += "case " + argumentOrder[i] + ":" + generateCallForArgumentCount(argumentOrder[i]);
  21605.                                     ret += "                                                             \n        default:                                                             \n            var args = new Array(len + 1);                                   \n            var i = 0;                                                       \n            for (var i = 0; i < len; ++i) {                                  \n               args[i] = arguments[i];                                       \n            }                                                                \n            args[i] = nodeback;                                              \n            [CodeForCall]                                                    \n            break;                                                           \n        ".replace("[CodeForCall]", shouldProxyThis ? "ret = callback.apply(this, args);\n" : "ret = callback.apply(receiver, args);\n");
  21606.                                     return ret;
  21607.                                 }()).replace("[GetFunctionCode]", getFunctionCode))(Promise, fn, receiver, withAppended, maybeWrapAsError, nodebackForPromise, util.tryCatch, util.errorObj, util.notEnumerableProp, INTERNAL);
  21608.                             };
  21609.                         }
  21610.                         var makeNodePromisified = canEvaluate ? makeNodePromisifiedEval : makeNodePromisifiedClosure;
  21611.                         Promise.promisify = function(fn, receiver) {
  21612.                             if ("function" != typeof fn) throw new TypeError("fn must be a function\n\n    See http://goo.gl/916lJJ\n");
  21613.                             if (isPromisified(fn)) return fn;
  21614.                             var ret = promisify(fn, arguments.length < 2 ? THIS : receiver);
  21615.                             util.copyDescriptors(fn, ret, propsFilter);
  21616.                             return ret;
  21617.                         };
  21618.                         Promise.promisifyAll = function(target, options) {
  21619.                             if ("function" != typeof target && "object" != typeof target) throw new TypeError("the target of promisifyAll must be an object or a function\n\n    See http://goo.gl/9ITlV0\n");
  21620.                             options = Object(options);
  21621.                             var suffix = options.suffix;
  21622.                             if ("string" != typeof suffix) suffix = "Async";
  21623.                             var filter = options.filter;
  21624.                             if ("function" != typeof filter) filter = defaultFilter;
  21625.                             var promisifier = options.promisifier;
  21626.                             if ("function" != typeof promisifier) promisifier = makeNodePromisified;
  21627.                             if (!util.isIdentifier(suffix)) throw new RangeError("suffix must be a valid identifier\n\n    See http://goo.gl/8FZo5V\n");
  21628.                             for (var keys = util.inheritedDataKeys(target), i = 0; i < keys.length; ++i) {
  21629.                                 var value = target[keys[i]];
  21630.                                 if ("constructor" !== keys[i] && util.isClass(value)) {
  21631.                                     promisifyAll(value.prototype, suffix, filter, promisifier);
  21632.                                     promisifyAll(value, suffix, filter, promisifier);
  21633.                                 }
  21634.                             }
  21635.                             return promisifyAll(target, suffix, filter, promisifier);
  21636.                         };
  21637.                     };
  21638.                 }, {
  21639.                     "./errors": 13,
  21640.                     "./promise_resolver.js": 25,
  21641.                     "./util.js": 38
  21642.                 } ],
  21643.                 27: [ function(_dereq_, module, exports) {
  21644.                     "use strict";
  21645.                     module.exports = function(Promise, PromiseArray, tryConvertToPromise, apiRejection) {
  21646.                         function PropertiesPromiseArray(obj) {
  21647.                             for (var keys = es5.keys(obj), len = keys.length, values = new Array(2 * len), i = 0; i < len; ++i) {
  21648.                                 var key = keys[i];
  21649.                                 values[i] = obj[key];
  21650.                                 values[i + len] = key;
  21651.                             }
  21652.                             this.constructor$(values);
  21653.                         }
  21654.                         function props(promises) {
  21655.                             var ret, castValue = tryConvertToPromise(promises);
  21656.                             if (!isObject(castValue)) return apiRejection("cannot await properties of a non-object\n\n    See http://goo.gl/OsFKC8\n"); else if (castValue instanceof Promise) ret = castValue._then(Promise.props, undefined, undefined, undefined, undefined); else ret = new PropertiesPromiseArray(castValue).promise();
  21657.                             if (castValue instanceof Promise) ret._propagateFrom(castValue, 4);
  21658.                             return ret;
  21659.                         }
  21660.                         var util = _dereq_("./util.js"), isObject = util.isObject, es5 = _dereq_("./es5.js");
  21661.                         util.inherits(PropertiesPromiseArray, PromiseArray);
  21662.                         PropertiesPromiseArray.prototype._init = function() {
  21663.                             this._init$(undefined, -3);
  21664.                         };
  21665.                         PropertiesPromiseArray.prototype._promiseFulfilled = function(value, index) {
  21666.                             this._values[index] = value;
  21667.                             if (++this._totalResolved >= this._length) {
  21668.                                 for (var val = {}, keyOffset = this.length(), i = 0, len = this.length(); i < len; ++i) val[this._values[i + keyOffset]] = this._values[i];
  21669.                                 this._resolve(val);
  21670.                             }
  21671.                         };
  21672.                         PropertiesPromiseArray.prototype._promiseProgressed = function(value, index) {
  21673.                             this._promise._progress({
  21674.                                 key: this._values[index + this.length()],
  21675.                                 value: value
  21676.                             });
  21677.                         };
  21678.                         PropertiesPromiseArray.prototype.shouldCopyValues = function() {
  21679.                             return !1;
  21680.                         };
  21681.                         PropertiesPromiseArray.prototype.getActualLength = function(len) {
  21682.                             return len >> 1;
  21683.                         };
  21684.                         Promise.prototype.props = function() {
  21685.                             return props(this);
  21686.                         };
  21687.                         Promise.props = function(promises) {
  21688.                             return props(promises);
  21689.                         };
  21690.                     };
  21691.                 }, {
  21692.                     "./es5.js": 14,
  21693.                     "./util.js": 38
  21694.                 } ],
  21695.                 28: [ function(_dereq_, module, exports) {
  21696.                     "use strict";
  21697.                     function arrayMove(src, srcIndex, dst, dstIndex, len) {
  21698.                         for (var j = 0; j < len; ++j) {
  21699.                             dst[j + dstIndex] = src[j + srcIndex];
  21700.                             src[j + srcIndex] = void 0;
  21701.                         }
  21702.                     }
  21703.                     function Queue(capacity) {
  21704.                         this._capacity = capacity;
  21705.                         this._length = 0;
  21706.                         this._front = 0;
  21707.                     }
  21708.                     Queue.prototype._willBeOverCapacity = function(size) {
  21709.                         return this._capacity < size;
  21710.                     };
  21711.                     Queue.prototype._pushOne = function(arg) {
  21712.                         var length = this.length();
  21713.                         this._checkCapacity(length + 1);
  21714.                         this[this._front + length & this._capacity - 1] = arg;
  21715.                         this._length = length + 1;
  21716.                     };
  21717.                     Queue.prototype._unshiftOne = function(value) {
  21718.                         var capacity = this._capacity;
  21719.                         this._checkCapacity(this.length() + 1);
  21720.                         var front = this._front, i = (front - 1 & capacity - 1 ^ capacity) - capacity;
  21721.                         this[i] = value;
  21722.                         this._front = i;
  21723.                         this._length = this.length() + 1;
  21724.                     };
  21725.                     Queue.prototype.unshift = function(fn, receiver, arg) {
  21726.                         this._unshiftOne(arg);
  21727.                         this._unshiftOne(receiver);
  21728.                         this._unshiftOne(fn);
  21729.                     };
  21730.                     Queue.prototype.push = function(fn, receiver, arg) {
  21731.                         var length = this.length() + 3;
  21732.                         if (!this._willBeOverCapacity(length)) {
  21733.                             var j = this._front + length - 3;
  21734.                             this._checkCapacity(length);
  21735.                             var wrapMask = this._capacity - 1;
  21736.                             this[j + 0 & wrapMask] = fn;
  21737.                             this[j + 1 & wrapMask] = receiver;
  21738.                             this[j + 2 & wrapMask] = arg;
  21739.                             this._length = length;
  21740.                         } else {
  21741.                             this._pushOne(fn);
  21742.                             this._pushOne(receiver);
  21743.                             this._pushOne(arg);
  21744.                         }
  21745.                     };
  21746.                     Queue.prototype.shift = function() {
  21747.                         var front = this._front, ret = this[front];
  21748.                         this[front] = undefined;
  21749.                         this._front = front + 1 & this._capacity - 1;
  21750.                         this._length--;
  21751.                         return ret;
  21752.                     };
  21753.                     Queue.prototype.length = function() {
  21754.                         return this._length;
  21755.                     };
  21756.                     Queue.prototype._checkCapacity = function(size) {
  21757.                         if (this._capacity < size) this._resizeTo(this._capacity << 1);
  21758.                     };
  21759.                     Queue.prototype._resizeTo = function(capacity) {
  21760.                         var oldCapacity = this._capacity;
  21761.                         this._capacity = capacity;
  21762.                         arrayMove(this, 0, this, oldCapacity, this._front + this._length & oldCapacity - 1);
  21763.                     };
  21764.                     module.exports = Queue;
  21765.                 }, {} ],
  21766.                 29: [ function(_dereq_, module, exports) {
  21767.                     "use strict";
  21768.                     module.exports = function(Promise, INTERNAL, tryConvertToPromise, apiRejection) {
  21769.                         function race(promises, parent) {
  21770.                             var maybePromise = tryConvertToPromise(promises);
  21771.                             if (maybePromise instanceof Promise) return raceLater(maybePromise); else if (!isArray(promises)) return apiRejection("expecting an array, a promise or a thenable\n\n    See http://goo.gl/s8MMhc\n");
  21772.                             var ret = new Promise(INTERNAL);
  21773.                             if (parent !== undefined) ret._propagateFrom(parent, 5);
  21774.                             for (var fulfill = ret._fulfill, reject = ret._reject, i = 0, len = promises.length; i < len; ++i) {
  21775.                                 var val = promises[i];
  21776.                                 if (val !== undefined || i in promises) Promise.cast(val)._then(fulfill, reject, undefined, ret, null);
  21777.                             }
  21778.                             return ret;
  21779.                         }
  21780.                         var isArray = _dereq_("./util.js").isArray, raceLater = function(promise) {
  21781.                             return promise.then(function(array) {
  21782.                                 return race(array, promise);
  21783.                             });
  21784.                         };
  21785.                         Promise.race = function(promises) {
  21786.                             return race(promises, undefined);
  21787.                         };
  21788.                         Promise.prototype.race = function() {
  21789.                             return race(this, undefined);
  21790.                         };
  21791.                     };
  21792.                 }, {
  21793.                     "./util.js": 38
  21794.                 } ],
  21795.                 30: [ function(_dereq_, module, exports) {
  21796.                     "use strict";
  21797.                     module.exports = function(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL) {
  21798.                         function ReductionPromiseArray(promises, fn, accum, _each) {
  21799.                             this.constructor$(promises);
  21800.                             this._promise._captureStackTrace();
  21801.                             this._preservedValues = _each === INTERNAL ? [] : null;
  21802.                             this._zerothIsAccum = accum === undefined;
  21803.                             this._gotAccum = !1;
  21804.                             this._reducingIndex = this._zerothIsAccum ? 1 : 0;
  21805.                             this._valuesPhase = undefined;
  21806.                             var maybePromise = tryConvertToPromise(accum, this._promise), rejected = !1, isPromise = maybePromise instanceof Promise;
  21807.                             if (isPromise) {
  21808.                                 maybePromise = maybePromise._target();
  21809.                                 if (maybePromise._isPending()) maybePromise._proxyPromiseArray(this, -1); else if (maybePromise._isFulfilled()) {
  21810.                                     accum = maybePromise._value();
  21811.                                     this._gotAccum = !0;
  21812.                                 } else {
  21813.                                     this._reject(maybePromise._reason());
  21814.                                     rejected = !0;
  21815.                                 }
  21816.                             }
  21817.                             if (!isPromise && !this._zerothIsAccum) this._gotAccum = !0;
  21818.                             var domain = getDomain();
  21819.                             this._callback = null === domain ? fn : domain.bind(fn);
  21820.                             this._accum = accum;
  21821.                             if (!rejected) async.invoke(init, this, undefined);
  21822.                         }
  21823.                         function init() {
  21824.                             this._init$(undefined, -5);
  21825.                         }
  21826.                         function reduce(promises, fn, initialValue, _each) {
  21827.                             if ("function" != typeof fn) return apiRejection("fn must be a function\n\n    See http://goo.gl/916lJJ\n"); else return new ReductionPromiseArray(promises, fn, initialValue, _each).promise();
  21828.                         }
  21829.                         var getDomain = Promise._getDomain, async = _dereq_("./async.js"), util = _dereq_("./util.js"), tryCatch = util.tryCatch, errorObj = util.errorObj;
  21830.                         util.inherits(ReductionPromiseArray, PromiseArray);
  21831.                         ReductionPromiseArray.prototype._init = function() {};
  21832.                         ReductionPromiseArray.prototype._resolveEmptyArray = function() {
  21833.                             if (this._gotAccum || this._zerothIsAccum) this._resolve(null !== this._preservedValues ? [] : this._accum);
  21834.                         };
  21835.                         ReductionPromiseArray.prototype._promiseFulfilled = function(value, index) {
  21836.                             var values = this._values;
  21837.                             values[index] = value;
  21838.                             var valuesPhaseIndex, length = this.length(), preservedValues = this._preservedValues, isEach = null !== preservedValues, gotAccum = this._gotAccum, valuesPhase = this._valuesPhase;
  21839.                             if (!valuesPhase) {
  21840.                                 valuesPhase = this._valuesPhase = new Array(length);
  21841.                                 for (valuesPhaseIndex = 0; valuesPhaseIndex < length; ++valuesPhaseIndex) valuesPhase[valuesPhaseIndex] = 0;
  21842.                             }
  21843.                             valuesPhaseIndex = valuesPhase[index];
  21844.                             if (0 === index && this._zerothIsAccum) {
  21845.                                 this._accum = value;
  21846.                                 this._gotAccum = gotAccum = !0;
  21847.                                 valuesPhase[index] = 0 === valuesPhaseIndex ? 1 : 2;
  21848.                             } else if (-1 === index) {
  21849.                                 this._accum = value;
  21850.                                 this._gotAccum = gotAccum = !0;
  21851.                             } else if (0 === valuesPhaseIndex) valuesPhase[index] = 1; else {
  21852.                                 valuesPhase[index] = 2;
  21853.                                 this._accum = value;
  21854.                             }
  21855.                             if (gotAccum) {
  21856.                                 for (var ret, callback = this._callback, receiver = this._promise._boundValue(), i = this._reducingIndex; i < length; ++i) {
  21857.                                     valuesPhaseIndex = valuesPhase[i];
  21858.                                     if (2 !== valuesPhaseIndex) {
  21859.                                         if (1 !== valuesPhaseIndex) return;
  21860.                                         value = values[i];
  21861.                                         this._promise._pushContext();
  21862.                                         if (isEach) {
  21863.                                             preservedValues.push(value);
  21864.                                             ret = tryCatch(callback).call(receiver, value, i, length);
  21865.                                         } else ret = tryCatch(callback).call(receiver, this._accum, value, i, length);
  21866.                                         this._promise._popContext();
  21867.                                         if (ret === errorObj) return this._reject(ret.e);
  21868.                                         var maybePromise = tryConvertToPromise(ret, this._promise);
  21869.                                         if (maybePromise instanceof Promise) {
  21870.                                             maybePromise = maybePromise._target();
  21871.                                             if (maybePromise._isPending()) {
  21872.                                                 valuesPhase[i] = 4;
  21873.                                                 return maybePromise._proxyPromiseArray(this, i);
  21874.                                             } else if (maybePromise._isFulfilled()) ret = maybePromise._value(); else return this._reject(maybePromise._reason());
  21875.                                         }
  21876.                                         this._reducingIndex = i + 1;
  21877.                                         this._accum = ret;
  21878.                                     } else this._reducingIndex = i + 1;
  21879.                                 }
  21880.                                 this._resolve(isEach ? preservedValues : this._accum);
  21881.                             }
  21882.                         };
  21883.                         Promise.prototype.reduce = function(fn, initialValue) {
  21884.                             return reduce(this, fn, initialValue, null);
  21885.                         };
  21886.                         Promise.reduce = function(promises, fn, initialValue, _each) {
  21887.                             return reduce(promises, fn, initialValue, _each);
  21888.                         };
  21889.                     };
  21890.                 }, {
  21891.                     "./async.js": 2,
  21892.                     "./util.js": 38
  21893.                 } ],
  21894.                 31: [ function(_dereq_, module, exports) {
  21895.                     "use strict";
  21896.                     var schedule, util = _dereq_("./util"), noAsyncScheduler = function() {
  21897.                         throw new Error("No async scheduler available\n\n    See http://goo.gl/m3OTXk\n");
  21898.                     };
  21899.                     if (util.isNode && "undefined" == typeof MutationObserver) {
  21900.                         var GlobalSetImmediate = global.setImmediate, ProcessNextTick = process.nextTick;
  21901.                         schedule = util.isRecentNode ? function(fn) {
  21902.                             GlobalSetImmediate.call(global, fn);
  21903.                         } : function(fn) {
  21904.                             ProcessNextTick.call(process, fn);
  21905.                         };
  21906.                     } else if (!("undefined" == typeof MutationObserver || "undefined" != typeof window && window.navigator && window.navigator.standalone)) {
  21907.                         schedule = function(fn) {
  21908.                             var div = document.createElement("div");
  21909.                             new MutationObserver(fn).observe(div, {
  21910.                                 attributes: !0
  21911.                             });
  21912.                             return function() {
  21913.                                 div.classList.toggle("foo");
  21914.                             };
  21915.                         };
  21916.                         schedule.isStatic = !0;
  21917.                     } else if (void 0 !== setImmediate) schedule = function(fn) {
  21918.                         setImmediate(fn);
  21919.                     }; else if ("undefined" != typeof setTimeout) schedule = function(fn) {
  21920.                         setTimeout(fn, 0);
  21921.                     }; else schedule = noAsyncScheduler;
  21922.                     module.exports = schedule;
  21923.                 }, {
  21924.                     "./util": 38
  21925.                 } ],
  21926.                 32: [ function(_dereq_, module, exports) {
  21927.                     "use strict";
  21928.                     module.exports = function(Promise, PromiseArray) {
  21929.                         function SettledPromiseArray(values) {
  21930.                             this.constructor$(values);
  21931.                         }
  21932.                         var PromiseInspection = Promise.PromiseInspection;
  21933.                         _dereq_("./util.js").inherits(SettledPromiseArray, PromiseArray);
  21934.                         SettledPromiseArray.prototype._promiseResolved = function(index, inspection) {
  21935.                             this._values[index] = inspection;
  21936.                             if (++this._totalResolved >= this._length) this._resolve(this._values);
  21937.                         };
  21938.                         SettledPromiseArray.prototype._promiseFulfilled = function(value, index) {
  21939.                             var ret = new PromiseInspection();
  21940.                             ret._bitField = 268435456;
  21941.                             ret._settledValue = value;
  21942.                             this._promiseResolved(index, ret);
  21943.                         };
  21944.                         SettledPromiseArray.prototype._promiseRejected = function(reason, index) {
  21945.                             var ret = new PromiseInspection();
  21946.                             ret._bitField = 134217728;
  21947.                             ret._settledValue = reason;
  21948.                             this._promiseResolved(index, ret);
  21949.                         };
  21950.                         Promise.settle = function(promises) {
  21951.                             return new SettledPromiseArray(promises).promise();
  21952.                         };
  21953.                         Promise.prototype.settle = function() {
  21954.                             return new SettledPromiseArray(this).promise();
  21955.                         };
  21956.                     };
  21957.                 }, {
  21958.                     "./util.js": 38
  21959.                 } ],
  21960.                 33: [ function(_dereq_, module, exports) {
  21961.                     "use strict";
  21962.                     module.exports = function(Promise, PromiseArray, apiRejection) {
  21963.                         function SomePromiseArray(values) {
  21964.                             this.constructor$(values);
  21965.                             this._howMany = 0;
  21966.                             this._unwrap = !1;
  21967.                             this._initialized = !1;
  21968.                         }
  21969.                         function some(promises, howMany) {
  21970.                             if ((0 | howMany) !== howMany || howMany < 0) return apiRejection("expecting a positive integer\n\n    See http://goo.gl/1wAmHx\n");
  21971.                             var ret = new SomePromiseArray(promises), promise = ret.promise();
  21972.                             ret.setHowMany(howMany);
  21973.                             ret.init();
  21974.                             return promise;
  21975.                         }
  21976.                         var util = _dereq_("./util.js"), RangeError = _dereq_("./errors.js").RangeError, AggregateError = _dereq_("./errors.js").AggregateError, isArray = util.isArray;
  21977.                         util.inherits(SomePromiseArray, PromiseArray);
  21978.                         SomePromiseArray.prototype._init = function() {
  21979.                             if (this._initialized) if (0 !== this._howMany) {
  21980.                                 this._init$(undefined, -5);
  21981.                                 var isArrayResolved = isArray(this._values);
  21982.                                 if (!this._isResolved() && isArrayResolved && this._howMany > this._canPossiblyFulfill()) this._reject(this._getRangeError(this.length()));
  21983.                             } else this._resolve([]);
  21984.                         };
  21985.                         SomePromiseArray.prototype.init = function() {
  21986.                             this._initialized = !0;
  21987.                             this._init();
  21988.                         };
  21989.                         SomePromiseArray.prototype.setUnwrap = function() {
  21990.                             this._unwrap = !0;
  21991.                         };
  21992.                         SomePromiseArray.prototype.howMany = function() {
  21993.                             return this._howMany;
  21994.                         };
  21995.                         SomePromiseArray.prototype.setHowMany = function(count) {
  21996.                             this._howMany = count;
  21997.                         };
  21998.                         SomePromiseArray.prototype._promiseFulfilled = function(value) {
  21999.                             this._addFulfilled(value);
  22000.                             if (this._fulfilled() === this.howMany()) {
  22001.                                 this._values.length = this.howMany();
  22002.                                 if (1 === this.howMany() && this._unwrap) this._resolve(this._values[0]); else this._resolve(this._values);
  22003.                             }
  22004.                         };
  22005.                         SomePromiseArray.prototype._promiseRejected = function(reason) {
  22006.                             this._addRejected(reason);
  22007.                             if (this.howMany() > this._canPossiblyFulfill()) {
  22008.                                 for (var e = new AggregateError(), i = this.length(); i < this._values.length; ++i) e.push(this._values[i]);
  22009.                                 this._reject(e);
  22010.                             }
  22011.                         };
  22012.                         SomePromiseArray.prototype._fulfilled = function() {
  22013.                             return this._totalResolved;
  22014.                         };
  22015.                         SomePromiseArray.prototype._rejected = function() {
  22016.                             return this._values.length - this.length();
  22017.                         };
  22018.                         SomePromiseArray.prototype._addRejected = function(reason) {
  22019.                             this._values.push(reason);
  22020.                         };
  22021.                         SomePromiseArray.prototype._addFulfilled = function(value) {
  22022.                             this._values[this._totalResolved++] = value;
  22023.                         };
  22024.                         SomePromiseArray.prototype._canPossiblyFulfill = function() {
  22025.                             return this.length() - this._rejected();
  22026.                         };
  22027.                         SomePromiseArray.prototype._getRangeError = function(count) {
  22028.                             var message = "Input array must contain at least " + this._howMany + " items but contains only " + count + " items";
  22029.                             return new RangeError(message);
  22030.                         };
  22031.                         SomePromiseArray.prototype._resolveEmptyArray = function() {
  22032.                             this._reject(this._getRangeError(0));
  22033.                         };
  22034.                         Promise.some = function(promises, howMany) {
  22035.                             return some(promises, howMany);
  22036.                         };
  22037.                         Promise.prototype.some = function(howMany) {
  22038.                             return some(this, howMany);
  22039.                         };
  22040.                         Promise._SomePromiseArray = SomePromiseArray;
  22041.                     };
  22042.                 }, {
  22043.                     "./errors.js": 13,
  22044.                     "./util.js": 38
  22045.                 } ],
  22046.                 34: [ function(_dereq_, module, exports) {
  22047.                     "use strict";
  22048.                     module.exports = function(Promise) {
  22049.                         function PromiseInspection(promise) {
  22050.                             if (promise !== undefined) {
  22051.                                 promise = promise._target();
  22052.                                 this._bitField = promise._bitField;
  22053.                                 this._settledValue = promise._settledValue;
  22054.                             } else {
  22055.                                 this._bitField = 0;
  22056.                                 this._settledValue = undefined;
  22057.                             }
  22058.                         }
  22059.                         PromiseInspection.prototype.value = function() {
  22060.                             if (!this.isFulfilled()) throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n    See http://goo.gl/hc1DLj\n");
  22061.                             return this._settledValue;
  22062.                         };
  22063.                         PromiseInspection.prototype.error = PromiseInspection.prototype.reason = function() {
  22064.                             if (!this.isRejected()) throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n    See http://goo.gl/hPuiwB\n");
  22065.                             return this._settledValue;
  22066.                         };
  22067.                         PromiseInspection.prototype.isFulfilled = Promise.prototype._isFulfilled = function() {
  22068.                             return (268435456 & this._bitField) > 0;
  22069.                         };
  22070.                         PromiseInspection.prototype.isRejected = Promise.prototype._isRejected = function() {
  22071.                             return (134217728 & this._bitField) > 0;
  22072.                         };
  22073.                         PromiseInspection.prototype.isPending = Promise.prototype._isPending = function() {
  22074.                             return 0 == (402653184 & this._bitField);
  22075.                         };
  22076.                         PromiseInspection.prototype.isResolved = Promise.prototype._isResolved = function() {
  22077.                             return (402653184 & this._bitField) > 0;
  22078.                         };
  22079.                         Promise.prototype.isPending = function() {
  22080.                             return this._target()._isPending();
  22081.                         };
  22082.                         Promise.prototype.isRejected = function() {
  22083.                             return this._target()._isRejected();
  22084.                         };
  22085.                         Promise.prototype.isFulfilled = function() {
  22086.                             return this._target()._isFulfilled();
  22087.                         };
  22088.                         Promise.prototype.isResolved = function() {
  22089.                             return this._target()._isResolved();
  22090.                         };
  22091.                         Promise.prototype._value = function() {
  22092.                             return this._settledValue;
  22093.                         };
  22094.                         Promise.prototype._reason = function() {
  22095.                             this._unsetRejectionIsUnhandled();
  22096.                             return this._settledValue;
  22097.                         };
  22098.                         Promise.prototype.value = function() {
  22099.                             var target = this._target();
  22100.                             if (!target.isFulfilled()) throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n    See http://goo.gl/hc1DLj\n");
  22101.                             return target._settledValue;
  22102.                         };
  22103.                         Promise.prototype.reason = function() {
  22104.                             var target = this._target();
  22105.                             if (!target.isRejected()) throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n    See http://goo.gl/hPuiwB\n");
  22106.                             target._unsetRejectionIsUnhandled();
  22107.                             return target._settledValue;
  22108.                         };
  22109.                         Promise.PromiseInspection = PromiseInspection;
  22110.                     };
  22111.                 }, {} ],
  22112.                 35: [ function(_dereq_, module, exports) {
  22113.                     "use strict";
  22114.                     module.exports = function(Promise, INTERNAL) {
  22115.                         function tryConvertToPromise(obj, context) {
  22116.                             if (isObject(obj)) {
  22117.                                 if (obj instanceof Promise) return obj; else if (isAnyBluebirdPromise(obj)) {
  22118.                                     var ret = new Promise(INTERNAL);
  22119.                                     obj._then(ret._fulfillUnchecked, ret._rejectUncheckedCheckError, ret._progressUnchecked, ret, null);
  22120.                                     return ret;
  22121.                                 }
  22122.                                 var then = util.tryCatch(getThen)(obj);
  22123.                                 if (then === errorObj) {
  22124.                                     if (context) context._pushContext();
  22125.                                     var ret = Promise.reject(then.e);
  22126.                                     if (context) context._popContext();
  22127.                                     return ret;
  22128.                                 } else if ("function" == typeof then) return doThenable(obj, then, context);
  22129.                             }
  22130.                             return obj;
  22131.                         }
  22132.                         function getThen(obj) {
  22133.                             return obj.then;
  22134.                         }
  22135.                         function isAnyBluebirdPromise(obj) {
  22136.                             return hasProp.call(obj, "_promise0");
  22137.                         }
  22138.                         function doThenable(x, then, context) {
  22139.                             function resolveFromThenable(value) {
  22140.                                 if (promise) {
  22141.                                     promise._resolveCallback(value);
  22142.                                     promise = null;
  22143.                                 }
  22144.                             }
  22145.                             function rejectFromThenable(reason) {
  22146.                                 if (promise) {
  22147.                                     promise._rejectCallback(reason, synchronous, !0);
  22148.                                     promise = null;
  22149.                                 }
  22150.                             }
  22151.                             function progressFromThenable(value) {
  22152.                                 if (promise) if ("function" == typeof promise._progress) promise._progress(value);
  22153.                             }
  22154.                             var promise = new Promise(INTERNAL), ret = promise;
  22155.                             if (context) context._pushContext();
  22156.                             promise._captureStackTrace();
  22157.                             if (context) context._popContext();
  22158.                             var synchronous = !0, result = util.tryCatch(then).call(x, resolveFromThenable, rejectFromThenable, progressFromThenable);
  22159.                             synchronous = !1;
  22160.                             if (promise && result === errorObj) {
  22161.                                 promise._rejectCallback(result.e, !0, !0);
  22162.                                 promise = null;
  22163.                             }
  22164.                             return ret;
  22165.                         }
  22166.                         var util = _dereq_("./util.js"), errorObj = util.errorObj, isObject = util.isObject, hasProp = {}.hasOwnProperty;
  22167.                         return tryConvertToPromise;
  22168.                     };
  22169.                 }, {
  22170.                     "./util.js": 38
  22171.                 } ],
  22172.                 36: [ function(_dereq_, module, exports) {
  22173.                     "use strict";
  22174.                     module.exports = function(Promise, INTERNAL) {
  22175.                         function successClear(value) {
  22176.                             var handle = this;
  22177.                             if (handle instanceof Number) handle = +handle;
  22178.                             clearTimeout(handle);
  22179.                             return value;
  22180.                         }
  22181.                         function failureClear(reason) {
  22182.                             var handle = this;
  22183.                             if (handle instanceof Number) handle = +handle;
  22184.                             clearTimeout(handle);
  22185.                             throw reason;
  22186.                         }
  22187.                         var util = _dereq_("./util.js"), TimeoutError = Promise.TimeoutError, afterTimeout = function(promise, message) {
  22188.                             if (promise.isPending()) {
  22189.                                 var err;
  22190.                                 if (!util.isPrimitive(message) && message instanceof Error) err = message; else {
  22191.                                     if ("string" != typeof message) message = "operation timed out";
  22192.                                     err = new TimeoutError(message);
  22193.                                 }
  22194.                                 util.markAsOriginatingFromRejection(err);
  22195.                                 promise._attachExtraTrace(err);
  22196.                                 promise._cancel(err);
  22197.                             }
  22198.                         }, afterValue = function(value) {
  22199.                             return delay(+this).thenReturn(value);
  22200.                         }, delay = Promise.delay = function(value, ms) {
  22201.                             if (ms === undefined) {
  22202.                                 ms = value;
  22203.                                 value = undefined;
  22204.                                 var ret = new Promise(INTERNAL);
  22205.                                 setTimeout(function() {
  22206.                                     ret._fulfill();
  22207.                                 }, ms);
  22208.                                 return ret;
  22209.                             }
  22210.                             ms = +ms;
  22211.                             return Promise.resolve(value)._then(afterValue, null, null, ms, undefined);
  22212.                         };
  22213.                         Promise.prototype.delay = function(ms) {
  22214.                             return delay(this, ms);
  22215.                         };
  22216.                         Promise.prototype.timeout = function(ms, message) {
  22217.                             ms = +ms;
  22218.                             var ret = this.then().cancellable();
  22219.                             ret._cancellationParent = this;
  22220.                             var handle = setTimeout(function() {
  22221.                                 afterTimeout(ret, message);
  22222.                             }, ms);
  22223.                             return ret._then(successClear, failureClear, undefined, handle, undefined);
  22224.                         };
  22225.                     };
  22226.                 }, {
  22227.                     "./util.js": 38
  22228.                 } ],
  22229.                 37: [ function(_dereq_, module, exports) {
  22230.                     "use strict";
  22231.                     module.exports = function(Promise, apiRejection, tryConvertToPromise, createContext) {
  22232.                         function inspectionMapper(inspections) {
  22233.                             for (var len = inspections.length, i = 0; i < len; ++i) {
  22234.                                 var inspection = inspections[i];
  22235.                                 if (inspection.isRejected()) return Promise.reject(inspection.error());
  22236.                                 inspections[i] = inspection._settledValue;
  22237.                             }
  22238.                             return inspections;
  22239.                         }
  22240.                         function thrower(e) {
  22241.                             setTimeout(function() {
  22242.                                 throw e;
  22243.                             }, 0);
  22244.                         }
  22245.                         function castPreservingDisposable(thenable) {
  22246.                             var maybePromise = tryConvertToPromise(thenable);
  22247.                             if (maybePromise !== thenable && "function" == typeof thenable._isDisposable && "function" == typeof thenable._getDisposer && thenable._isDisposable()) maybePromise._setDisposable(thenable._getDisposer());
  22248.                             return maybePromise;
  22249.                         }
  22250.                         function dispose(resources, inspection) {
  22251.                             function iterator() {
  22252.                                 if (i >= len) return ret.resolve();
  22253.                                 var maybePromise = castPreservingDisposable(resources[i++]);
  22254.                                 if (maybePromise instanceof Promise && maybePromise._isDisposable()) {
  22255.                                     try {
  22256.                                         maybePromise = tryConvertToPromise(maybePromise._getDisposer().tryDispose(inspection), resources.promise);
  22257.                                     } catch (e) {
  22258.                                         return thrower(e);
  22259.                                     }
  22260.                                     if (maybePromise instanceof Promise) return maybePromise._then(iterator, thrower, null, null, null);
  22261.                                 }
  22262.                                 iterator();
  22263.                             }
  22264.                             var i = 0, len = resources.length, ret = Promise.defer();
  22265.                             iterator();
  22266.                             return ret.promise;
  22267.                         }
  22268.                         function disposerSuccess(value) {
  22269.                             var inspection = new PromiseInspection();
  22270.                             inspection._settledValue = value;
  22271.                             inspection._bitField = 268435456;
  22272.                             return dispose(this, inspection).thenReturn(value);
  22273.                         }
  22274.                         function disposerFail(reason) {
  22275.                             var inspection = new PromiseInspection();
  22276.                             inspection._settledValue = reason;
  22277.                             inspection._bitField = 134217728;
  22278.                             return dispose(this, inspection).thenThrow(reason);
  22279.                         }
  22280.                         function Disposer(data, promise, context) {
  22281.                             this._data = data;
  22282.                             this._promise = promise;
  22283.                             this._context = context;
  22284.                         }
  22285.                         function FunctionDisposer(fn, promise, context) {
  22286.                             this.constructor$(fn, promise, context);
  22287.                         }
  22288.                         function maybeUnwrapDisposer(value) {
  22289.                             if (Disposer.isDisposer(value)) {
  22290.                                 this.resources[this.index]._setDisposable(value);
  22291.                                 return value.promise();
  22292.                             }
  22293.                             return value;
  22294.                         }
  22295.                         var TypeError = _dereq_("./errors.js").TypeError, inherits = _dereq_("./util.js").inherits, PromiseInspection = Promise.PromiseInspection;
  22296.                         Disposer.prototype.data = function() {
  22297.                             return this._data;
  22298.                         };
  22299.                         Disposer.prototype.promise = function() {
  22300.                             return this._promise;
  22301.                         };
  22302.                         Disposer.prototype.resource = function() {
  22303.                             if (this.promise().isFulfilled()) return this.promise().value(); else return null;
  22304.                         };
  22305.                         Disposer.prototype.tryDispose = function(inspection) {
  22306.                             var resource = this.resource(), context = this._context;
  22307.                             if (context !== undefined) context._pushContext();
  22308.                             var ret = null !== resource ? this.doDispose(resource, inspection) : null;
  22309.                             if (context !== undefined) context._popContext();
  22310.                             this._promise._unsetDisposable();
  22311.                             this._data = null;
  22312.                             return ret;
  22313.                         };
  22314.                         Disposer.isDisposer = function(d) {
  22315.                             return null != d && "function" == typeof d.resource && "function" == typeof d.tryDispose;
  22316.                         };
  22317.                         inherits(FunctionDisposer, Disposer);
  22318.                         FunctionDisposer.prototype.doDispose = function(resource, inspection) {
  22319.                             return this.data().call(resource, resource, inspection);
  22320.                         };
  22321.                         Promise.using = function() {
  22322.                             var len = arguments.length;
  22323.                             if (len < 2) return apiRejection("you must pass at least 2 arguments to Promise.using");
  22324.                             var fn = arguments[len - 1];
  22325.                             if ("function" != typeof fn) return apiRejection("fn must be a function\n\n    See http://goo.gl/916lJJ\n");
  22326.                             var input, spreadArgs = !0;
  22327.                             if (2 === len && Array.isArray(arguments[0])) {
  22328.                                 input = arguments[0];
  22329.                                 len = input.length;
  22330.                                 spreadArgs = !1;
  22331.                             } else {
  22332.                                 input = arguments;
  22333.                                 len--;
  22334.                             }
  22335.                             for (var resources = new Array(len), i = 0; i < len; ++i) {
  22336.                                 var resource = input[i];
  22337.                                 if (Disposer.isDisposer(resource)) {
  22338.                                     var disposer = resource;
  22339.                                     resource = resource.promise();
  22340.                                     resource._setDisposable(disposer);
  22341.                                 } else {
  22342.                                     var maybePromise = tryConvertToPromise(resource);
  22343.                                     if (maybePromise instanceof Promise) resource = maybePromise._then(maybeUnwrapDisposer, null, null, {
  22344.                                         resources: resources,
  22345.                                         index: i
  22346.                                     }, undefined);
  22347.                                 }
  22348.                                 resources[i] = resource;
  22349.                             }
  22350.                             var promise = Promise.settle(resources).then(inspectionMapper).then(function(vals) {
  22351.                                 promise._pushContext();
  22352.                                 var ret;
  22353.                                 try {
  22354.                                     ret = spreadArgs ? fn.apply(undefined, vals) : fn.call(undefined, vals);
  22355.                                 } finally {
  22356.                                     promise._popContext();
  22357.                                 }
  22358.                                 return ret;
  22359.                             })._then(disposerSuccess, disposerFail, undefined, resources, undefined);
  22360.                             resources.promise = promise;
  22361.                             return promise;
  22362.                         };
  22363.                         Promise.prototype._setDisposable = function(disposer) {
  22364.                             this._bitField = 262144 | this._bitField;
  22365.                             this._disposer = disposer;
  22366.                         };
  22367.                         Promise.prototype._isDisposable = function() {
  22368.                             return (262144 & this._bitField) > 0;
  22369.                         };
  22370.                         Promise.prototype._getDisposer = function() {
  22371.                             return this._disposer;
  22372.                         };
  22373.                         Promise.prototype._unsetDisposable = function() {
  22374.                             this._bitField = -262145 & this._bitField;
  22375.                             this._disposer = undefined;
  22376.                         };
  22377.                         Promise.prototype.disposer = function(fn) {
  22378.                             if ("function" == typeof fn) return new FunctionDisposer(fn, this, createContext());
  22379.                             throw new TypeError();
  22380.                         };
  22381.                     };
  22382.                 }, {
  22383.                     "./errors.js": 13,
  22384.                     "./util.js": 38
  22385.                 } ],
  22386.                 38: [ function(_dereq_, module, exports) {
  22387.                     "use strict";
  22388.                     function tryCatcher() {
  22389.                         try {
  22390.                             var target = tryCatchTarget;
  22391.                             tryCatchTarget = null;
  22392.                             return target.apply(this, arguments);
  22393.                         } catch (e) {
  22394.                             errorObj.e = e;
  22395.                             return errorObj;
  22396.                         }
  22397.                     }
  22398.                     function tryCatch(fn) {
  22399.                         tryCatchTarget = fn;
  22400.                         return tryCatcher;
  22401.                     }
  22402.                     function isPrimitive(val) {
  22403.                         return null == val || !0 === val || !1 === val || "string" == typeof val || "number" == typeof val;
  22404.                     }
  22405.                     function isObject(value) {
  22406.                         return !isPrimitive(value);
  22407.                     }
  22408.                     function maybeWrapAsError(maybeError) {
  22409.                         if (!isPrimitive(maybeError)) return maybeError; else return new Error(safeToString(maybeError));
  22410.                     }
  22411.                     function withAppended(target, appendee) {
  22412.                         var i, len = target.length, ret = new Array(len + 1);
  22413.                         for (i = 0; i < len; ++i) ret[i] = target[i];
  22414.                         ret[i] = appendee;
  22415.                         return ret;
  22416.                     }
  22417.                     function getDataPropertyOrDefault(obj, key, defaultValue) {
  22418.                         if (es5.isES5) {
  22419.                             var desc = Object.getOwnPropertyDescriptor(obj, key);
  22420.                             if (null != desc) return null == desc.get && null == desc.set ? desc.value : defaultValue;
  22421.                         } else return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;
  22422.                     }
  22423.                     function notEnumerableProp(obj, name, value) {
  22424.                         if (isPrimitive(obj)) return obj;
  22425.                         var descriptor = {
  22426.                             value: value,
  22427.                             configurable: !0,
  22428.                             enumerable: !1,
  22429.                             writable: !0
  22430.                         };
  22431.                         es5.defineProperty(obj, name, descriptor);
  22432.                         return obj;
  22433.                     }
  22434.                     function thrower(r) {
  22435.                         throw r;
  22436.                     }
  22437.                     function isClass(fn) {
  22438.                         try {
  22439.                             if ("function" == typeof fn) {
  22440.                                 var keys = es5.names(fn.prototype), hasMethods = es5.isES5 && keys.length > 1, hasMethodsOtherThanConstructor = keys.length > 0 && !(1 === keys.length && "constructor" === keys[0]), hasThisAssignmentAndStaticMethods = thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0;
  22441.                                 if (hasMethods || hasMethodsOtherThanConstructor || hasThisAssignmentAndStaticMethods) return !0;
  22442.                             }
  22443.                             return !1;
  22444.                         } catch (e) {
  22445.                             return !1;
  22446.                         }
  22447.                     }
  22448.                     function toFastProperties(obj) {
  22449.                         function f() {}
  22450.                         f.prototype = obj;
  22451.                         for (var l = 8; l--; ) new f();
  22452.                         return obj;
  22453.                     }
  22454.                     function isIdentifier(str) {
  22455.                         return rident.test(str);
  22456.                     }
  22457.                     function filledRange(count, prefix, suffix) {
  22458.                         for (var ret = new Array(count), i = 0; i < count; ++i) ret[i] = prefix + i + suffix;
  22459.                         return ret;
  22460.                     }
  22461.                     function safeToString(obj) {
  22462.                         try {
  22463.                             return obj + "";
  22464.                         } catch (e) {
  22465.                             return "[no string representation]";
  22466.                         }
  22467.                     }
  22468.                     function markAsOriginatingFromRejection(e) {
  22469.                         try {
  22470.                             notEnumerableProp(e, "isOperational", !0);
  22471.                         } catch (ignore) {}
  22472.                     }
  22473.                     function originatesFromRejection(e) {
  22474.                         if (null == e) return !1; else return e instanceof Error.__BluebirdErrorTypes__.OperationalError || !0 === e.isOperational;
  22475.                     }
  22476.                     function canAttachTrace(obj) {
  22477.                         return obj instanceof Error && es5.propertyIsWritable(obj, "stack");
  22478.                     }
  22479.                     function classString(obj) {
  22480.                         return {}.toString.call(obj);
  22481.                     }
  22482.                     function copyDescriptors(from, to, filter) {
  22483.                         for (var keys = es5.names(from), i = 0; i < keys.length; ++i) {
  22484.                             var key = keys[i];
  22485.                             if (filter(key)) try {
  22486.                                 es5.defineProperty(to, key, es5.getDescriptor(from, key));
  22487.                             } catch (ignore) {}
  22488.                         }
  22489.                     }
  22490.                     var es5 = _dereq_("./es5.js"), canEvaluate = "undefined" == typeof navigator, haveGetters = function() {
  22491.                         try {
  22492.                             var o = {};
  22493.                             es5.defineProperty(o, "f", {
  22494.                                 get: function() {
  22495.                                     return 3;
  22496.                                 }
  22497.                             });
  22498.                             return 3 === o.f;
  22499.                         } catch (e) {
  22500.                             return !1;
  22501.                         }
  22502.                     }(), errorObj = {
  22503.                         e: {}
  22504.                     }, tryCatchTarget, inherits = function(Child, Parent) {
  22505.                         function T() {
  22506.                             this.constructor = Child;
  22507.                             this.constructor$ = Parent;
  22508.                             for (var propertyName in Parent.prototype) if (hasProp.call(Parent.prototype, propertyName) && "$" !== propertyName.charAt(propertyName.length - 1)) this[propertyName + "$"] = Parent.prototype[propertyName];
  22509.                         }
  22510.                         var hasProp = {}.hasOwnProperty;
  22511.                         T.prototype = Parent.prototype;
  22512.                         Child.prototype = new T();
  22513.                         return Child.prototype;
  22514.                     }, inheritedDataKeys = function() {
  22515.                         var excludedPrototypes = [ Array.prototype, Object.prototype, Function.prototype ], isExcludedProto = function(val) {
  22516.                             for (var i = 0; i < excludedPrototypes.length; ++i) if (excludedPrototypes[i] === val) return !0;
  22517.                             return !1;
  22518.                         };
  22519.                         if (es5.isES5) {
  22520.                             var getKeys = Object.getOwnPropertyNames;
  22521.                             return function(obj) {
  22522.                                 for (var ret = [], visitedKeys = Object.create(null); null != obj && !isExcludedProto(obj); ) {
  22523.                                     var keys;
  22524.                                     try {
  22525.                                         keys = getKeys(obj);
  22526.                                     } catch (e) {
  22527.                                         return ret;
  22528.                                     }
  22529.                                     for (var i = 0; i < keys.length; ++i) {
  22530.                                         var key = keys[i];
  22531.                                         if (!visitedKeys[key]) {
  22532.                                             visitedKeys[key] = !0;
  22533.                                             var desc = Object.getOwnPropertyDescriptor(obj, key);
  22534.                                             if (null != desc && null == desc.get && null == desc.set) ret.push(key);
  22535.                                         }
  22536.                                     }
  22537.                                     obj = es5.getPrototypeOf(obj);
  22538.                                 }
  22539.                                 return ret;
  22540.                             };
  22541.                         } else {
  22542.                             var hasProp = {}.hasOwnProperty;
  22543.                             return function(obj) {
  22544.                                 if (isExcludedProto(obj)) return [];
  22545.                                 var ret = [];
  22546.                                 enumeration: for (var key in obj) if (hasProp.call(obj, key)) ret.push(key); else {
  22547.                                     for (var i = 0; i < excludedPrototypes.length; ++i) if (hasProp.call(excludedPrototypes[i], key)) continue enumeration;
  22548.                                     ret.push(key);
  22549.                                 }
  22550.                                 return ret;
  22551.                             };
  22552.                         }
  22553.                     }(), thisAssignmentPattern = /this\s*\.\s*\S+\s*=/, rident = /^[a-z$_][a-z$_0-9]*$/i, ensureErrorObject = function() {
  22554.                         if (!("stack" in new Error())) return function(value) {
  22555.                             if (canAttachTrace(value)) return value;
  22556.                             try {
  22557.                                 throw new Error(safeToString(value));
  22558.                             } catch (err) {
  22559.                                 return err;
  22560.                             }
  22561.                         }; else return function(value) {
  22562.                             if (canAttachTrace(value)) return value; else return new Error(safeToString(value));
  22563.                         };
  22564.                     }(), ret = {
  22565.                         isClass: isClass,
  22566.                         isIdentifier: isIdentifier,
  22567.                         inheritedDataKeys: inheritedDataKeys,
  22568.                         getDataPropertyOrDefault: getDataPropertyOrDefault,
  22569.                         thrower: thrower,
  22570.                         isArray: es5.isArray,
  22571.                         haveGetters: haveGetters,
  22572.                         notEnumerableProp: notEnumerableProp,
  22573.                         isPrimitive: isPrimitive,
  22574.                         isObject: isObject,
  22575.                         canEvaluate: canEvaluate,
  22576.                         errorObj: errorObj,
  22577.                         tryCatch: tryCatch,
  22578.                         inherits: inherits,
  22579.                         withAppended: withAppended,
  22580.                         maybeWrapAsError: maybeWrapAsError,
  22581.                         toFastProperties: toFastProperties,
  22582.                         filledRange: filledRange,
  22583.                         toString: safeToString,
  22584.                         canAttachTrace: canAttachTrace,
  22585.                         ensureErrorObject: ensureErrorObject,
  22586.                         originatesFromRejection: originatesFromRejection,
  22587.                         markAsOriginatingFromRejection: markAsOriginatingFromRejection,
  22588.                         classString: classString,
  22589.                         copyDescriptors: copyDescriptors,
  22590.                         hasDevTools: "undefined" != typeof chrome && chrome && "function" == typeof chrome.loadTimes,
  22591.                         isNode: void 0 !== process && "[object process]" === classString(process).toLowerCase()
  22592.                     };
  22593.                     ret.isRecentNode = ret.isNode && function() {
  22594.                         var version = process.versions.node.split(".").map(Number);
  22595.                         return 0 === version[0] && version[1] > 10 || version[0] > 0;
  22596.                     }();
  22597.                     if (ret.isNode) ret.toFastProperties(process);
  22598.                     try {
  22599.                         throw new Error();
  22600.                     } catch (e) {
  22601.                         ret.lastLineError = e;
  22602.                     }
  22603.                     module.exports = ret;
  22604.                 }, {
  22605.                     "./es5.js": 14
  22606.                 } ]
  22607.             }, {}, [ 4 ])(4);
  22608.         });
  22609.         if ("undefined" != typeof window && null !== window) window.P = window.Promise; else if ("undefined" != typeof self && null !== self) self.P = self.Promise;
  22610.     }).call(exports, __webpack_require__(209), __webpack_require__(79), __webpack_require__(663).setImmediate);
  22611. }, function(module, exports, __webpack_require__) {
  22612.     function Emitter(obj) {
  22613.         if (obj) return mixin(obj);
  22614.     }
  22615.     function mixin(obj) {
  22616.         for (var key in Emitter.prototype) obj[key] = Emitter.prototype[key];
  22617.         return obj;
  22618.     }
  22619.     if (!0) module.exports = Emitter;
  22620.     Emitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) {
  22621.         this._callbacks = this._callbacks || {};
  22622.         (this._callbacks["$" + event] = this._callbacks["$" + event] || []).push(fn);
  22623.         return this;
  22624.     };
  22625.     Emitter.prototype.once = function(event, fn) {
  22626.         function on() {
  22627.             this.off(event, on);
  22628.             fn.apply(this, arguments);
  22629.         }
  22630.         on.fn = fn;
  22631.         this.on(event, on);
  22632.         return this;
  22633.     };
  22634.     Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) {
  22635.         this._callbacks = this._callbacks || {};
  22636.         if (0 == arguments.length) {
  22637.             this._callbacks = {};
  22638.             return this;
  22639.         }
  22640.         var callbacks = this._callbacks["$" + event];
  22641.         if (!callbacks) return this;
  22642.         if (1 == arguments.length) {
  22643.             delete this._callbacks["$" + event];
  22644.             return this;
  22645.         }
  22646.         for (var cb, i = 0; i < callbacks.length; i++) {
  22647.             cb = callbacks[i];
  22648.             if (cb === fn || cb.fn === fn) {
  22649.                 callbacks.splice(i, 1);
  22650.                 break;
  22651.             }
  22652.         }
  22653.         return this;
  22654.     };
  22655.     Emitter.prototype.emit = function(event) {
  22656.         this._callbacks = this._callbacks || {};
  22657.         var args = [].slice.call(arguments, 1), callbacks = this._callbacks["$" + event];
  22658.         if (callbacks) {
  22659.             callbacks = callbacks.slice(0);
  22660.             for (var i = 0, len = callbacks.length; i < len; ++i) callbacks[i].apply(this, args);
  22661.         }
  22662.         return this;
  22663.     };
  22664.     Emitter.prototype.listeners = function(event) {
  22665.         this._callbacks = this._callbacks || {};
  22666.         return this._callbacks["$" + event] || [];
  22667.     };
  22668.     Emitter.prototype.hasListeners = function(event) {
  22669.         return !!this.listeners(event).length;
  22670.     };
  22671. }, function(module, exports, __webpack_require__) {
  22672.     var forOf = __webpack_require__(105);
  22673.     module.exports = function(iter, ITERATOR) {
  22674.         var result = [];
  22675.         forOf(iter, !1, result.push, result, ITERATOR);
  22676.         return result;
  22677.     };
  22678. }, function(module, exports, __webpack_require__) {
  22679.     "use strict";
  22680.     var anObject = __webpack_require__(11), toPrimitive = __webpack_require__(42);
  22681.     module.exports = function(hint) {
  22682.         if ("string" !== hint && "number" !== hint && "default" !== hint) throw TypeError("Incorrect hint");
  22683.         return toPrimitive(anObject(this), "number" != hint);
  22684.     };
  22685. }, function(module, exports, __webpack_require__) {
  22686.     var getKeys = __webpack_require__(47), gOPS = __webpack_require__(110), pIE = __webpack_require__(72);
  22687.     module.exports = function(it) {
  22688.         var result = getKeys(it), getSymbols = gOPS.f;
  22689.         if (getSymbols) for (var key, symbols = getSymbols(it), isEnum = pIE.f, i = 0; symbols.length > i; ) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  22690.         return result;
  22691.     };
  22692. }, function(module, exports, __webpack_require__) {
  22693.     var getKeys = __webpack_require__(47), toIObject = __webpack_require__(24);
  22694.     module.exports = function(object, el) {
  22695.         for (var key, O = toIObject(object), keys = getKeys(O), length = keys.length, index = 0; length > index; ) if (O[key = keys[index++]] === el) return key;
  22696.     };
  22697. }, function(module, exports, __webpack_require__) {
  22698.     "use strict";
  22699.     var path = __webpack_require__(363), invoke = __webpack_require__(106), aFunction = __webpack_require__(31);
  22700.     module.exports = function() {
  22701.         for (var fn = aFunction(this), length = arguments.length, pargs = Array(length), i = 0, _ = path._, holder = !1; length > i; ) if ((pargs[i] = arguments[i++]) === _) holder = !0;
  22702.         return function() {
  22703.             var args, that = this, aLen = arguments.length, j = 0, k = 0;
  22704.             if (!holder && !aLen) return invoke(fn, pargs, that);
  22705.             args = pargs.slice();
  22706.             if (holder) for (;length > j; j++) if (args[j] === _) args[j] = arguments[k++];
  22707.             for (;aLen > k; ) args.push(arguments[k++]);
  22708.             return invoke(fn, args, that);
  22709.         };
  22710.     };
  22711. }, function(module, exports, __webpack_require__) {
  22712.     module.exports = __webpack_require__(2);
  22713. }, function(module, exports, __webpack_require__) {
  22714.     var $export = __webpack_require__(0);
  22715.     $export($export.P, "Array", {
  22716.         copyWithin: __webpack_require__(246)
  22717.     });
  22718.     __webpack_require__(66)("copyWithin");
  22719. }, function(module, exports, __webpack_require__) {
  22720.     "use strict";
  22721.     var $export = __webpack_require__(0), $every = __webpack_require__(53)(4);
  22722.     $export($export.P + $export.F * !__webpack_require__(49)([].every, !0), "Array", {
  22723.         every: function(callbackfn) {
  22724.             return $every(this, callbackfn, arguments[1]);
  22725.         }
  22726.     });
  22727. }, function(module, exports, __webpack_require__) {
  22728.     var $export = __webpack_require__(0);
  22729.     $export($export.P, "Array", {
  22730.         fill: __webpack_require__(188)
  22731.     });
  22732.     __webpack_require__(66)("fill");
  22733. }, function(module, exports, __webpack_require__) {
  22734.     "use strict";
  22735.     var $export = __webpack_require__(0), $filter = __webpack_require__(53)(2);
  22736.     $export($export.P + $export.F * !__webpack_require__(49)([].filter, !0), "Array", {
  22737.         filter: function(callbackfn) {
  22738.             return $filter(this, callbackfn, arguments[1]);
  22739.         }
  22740.     });
  22741. }, function(module, exports, __webpack_require__) {
  22742.     "use strict";
  22743.     var $export = __webpack_require__(0), $find = __webpack_require__(53)(6), KEY = "findIndex", forced = !0;
  22744.     if (KEY in []) Array(1)[KEY](function() {
  22745.         forced = !1;
  22746.     });
  22747.     $export($export.P + $export.F * forced, "Array", {
  22748.         findIndex: function(callbackfn) {
  22749.             return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  22750.         }
  22751.     });
  22752.     __webpack_require__(66)(KEY);
  22753. }, function(module, exports, __webpack_require__) {
  22754.     "use strict";
  22755.     var $export = __webpack_require__(0), $forEach = __webpack_require__(53)(0), STRICT = __webpack_require__(49)([].forEach, !0);
  22756.     $export($export.P + $export.F * !STRICT, "Array", {
  22757.         forEach: function(callbackfn) {
  22758.             return $forEach(this, callbackfn, arguments[1]);
  22759.         }
  22760.     });
  22761. }, function(module, exports, __webpack_require__) {
  22762.     "use strict";
  22763.     var ctx = __webpack_require__(32), $export = __webpack_require__(0), toObject = __webpack_require__(25), call = __webpack_require__(153), isArrayIter = __webpack_require__(131), toLength = __webpack_require__(21), createProperty = __webpack_require__(191), getIterFn = __webpack_require__(138);
  22764.     $export($export.S + $export.F * !__webpack_require__(108)(function(iter) {
  22765.         Array.from(iter);
  22766.     }), "Array", {
  22767.         from: function(arrayLike) {
  22768.             var length, result, step, iterator, O = toObject(arrayLike), C = "function" == typeof this ? this : Array, aLen = arguments.length, mapfn = aLen > 1 ? arguments[1] : undefined, mapping = mapfn !== undefined, index = 0, iterFn = getIterFn(O);
  22769.             if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
  22770.             if (iterFn != undefined && (C != Array || !isArrayIter(iterFn))) for (iterator = iterFn.call(O),
  22771.             result = new C(); !(step = iterator.next()).done; index++) createProperty(result, index, mapping ? call(iterator, mapfn, [ step.value, index ], !0) : step.value); else {
  22772.                 length = toLength(O.length);
  22773.                 for (result = new C(length); length > index; index++) createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
  22774.             }
  22775.             result.length = index;
  22776.             return result;
  22777.         }
  22778.     });
  22779. }, function(module, exports, __webpack_require__) {
  22780.     "use strict";
  22781.     var $export = __webpack_require__(0), $indexOf = __webpack_require__(92)(!1), $native = [].indexOf, NEGATIVE_ZERO = !!$native && 1 / [ 1 ].indexOf(1, -0) < 0;
  22782.     $export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(49)($native)), "Array", {
  22783.         indexOf: function(searchElement) {
  22784.             return NEGATIVE_ZERO ? $native.apply(this, arguments) || 0 : $indexOf(this, searchElement, arguments[1]);
  22785.         }
  22786.     });
  22787. }, function(module, exports, __webpack_require__) {
  22788.     var $export = __webpack_require__(0);
  22789.     $export($export.S, "Array", {
  22790.         isArray: __webpack_require__(132)
  22791.     });
  22792. }, function(module, exports, __webpack_require__) {
  22793.     "use strict";
  22794.     var $export = __webpack_require__(0), toIObject = __webpack_require__(24), arrayJoin = [].join;
  22795.     $export($export.P + $export.F * (__webpack_require__(67) != Object || !__webpack_require__(49)(arrayJoin)), "Array", {
  22796.         join: function(separator) {
  22797.             return arrayJoin.call(toIObject(this), separator === undefined ? "," : separator);
  22798.         }
  22799.     });
  22800. }, function(module, exports, __webpack_require__) {
  22801.     "use strict";
  22802.     var $export = __webpack_require__(0), toIObject = __webpack_require__(24), toInteger = __webpack_require__(50), toLength = __webpack_require__(21), $native = [].lastIndexOf, NEGATIVE_ZERO = !!$native && 1 / [ 1 ].lastIndexOf(1, -0) < 0;
  22803.     $export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(49)($native)), "Array", {
  22804.         lastIndexOf: function(searchElement) {
  22805.             if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;
  22806.             var O = toIObject(this), length = toLength(O.length), index = length - 1;
  22807.             if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));
  22808.             if (index < 0) index = length + index;
  22809.             for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;
  22810.             return -1;
  22811.         }
  22812.     });
  22813. }, function(module, exports, __webpack_require__) {
  22814.     "use strict";
  22815.     var $export = __webpack_require__(0), $map = __webpack_require__(53)(1);
  22816.     $export($export.P + $export.F * !__webpack_require__(49)([].map, !0), "Array", {
  22817.         map: function(callbackfn) {
  22818.             return $map(this, callbackfn, arguments[1]);
  22819.         }
  22820.     });
  22821. }, function(module, exports, __webpack_require__) {
  22822.     "use strict";
  22823.     var $export = __webpack_require__(0), createProperty = __webpack_require__(191);
  22824.     $export($export.S + $export.F * __webpack_require__(8)(function() {
  22825.         function F() {}
  22826.         return !(Array.of.call(F) instanceof F);
  22827.     }), "Array", {
  22828.         of: function() {
  22829.             for (var index = 0, aLen = arguments.length, result = new ("function" == typeof this ? this : Array)(aLen); aLen > index; ) createProperty(result, index, arguments[index++]);
  22830.             result.length = aLen;
  22831.             return result;
  22832.         }
  22833.     });
  22834. }, function(module, exports, __webpack_require__) {
  22835.     "use strict";
  22836.     var $export = __webpack_require__(0), $reduce = __webpack_require__(247);
  22837.     $export($export.P + $export.F * !__webpack_require__(49)([].reduceRight, !0), "Array", {
  22838.         reduceRight: function(callbackfn) {
  22839.             return $reduce(this, callbackfn, arguments.length, arguments[1], !0);
  22840.         }
  22841.     });
  22842. }, function(module, exports, __webpack_require__) {
  22843.     "use strict";
  22844.     var $export = __webpack_require__(0), $reduce = __webpack_require__(247);
  22845.     $export($export.P + $export.F * !__webpack_require__(49)([].reduce, !0), "Array", {
  22846.         reduce: function(callbackfn) {
  22847.             return $reduce(this, callbackfn, arguments.length, arguments[1], !1);
  22848.         }
  22849.     });
  22850. }, function(module, exports, __webpack_require__) {
  22851.     "use strict";
  22852.     var $export = __webpack_require__(0), html = __webpack_require__(129), cof = __webpack_require__(26), toIndex = __webpack_require__(73), toLength = __webpack_require__(21), arraySlice = [].slice;
  22853.     $export($export.P + $export.F * __webpack_require__(8)(function() {
  22854.         if (html) arraySlice.call(html);
  22855.     }), "Array", {
  22856.         slice: function(begin, end) {
  22857.             var len = toLength(this.length), klass = cof(this);
  22858.             end = end === undefined ? len : end;
  22859.             if ("Array" == klass) return arraySlice.call(this, begin, end);
  22860.             for (var start = toIndex(begin, len), upTo = toIndex(end, len), size = toLength(upTo - start), cloned = Array(size), i = 0; i < size; i++) cloned[i] = "String" == klass ? this.charAt(start + i) : this[start + i];
  22861.             return cloned;
  22862.         }
  22863.     });
  22864. }, function(module, exports, __webpack_require__) {
  22865.     "use strict";
  22866.     var $export = __webpack_require__(0), $some = __webpack_require__(53)(3);
  22867.     $export($export.P + $export.F * !__webpack_require__(49)([].some, !0), "Array", {
  22868.         some: function(callbackfn) {
  22869.             return $some(this, callbackfn, arguments[1]);
  22870.         }
  22871.     });
  22872. }, function(module, exports, __webpack_require__) {
  22873.     "use strict";
  22874.     var $export = __webpack_require__(0), aFunction = __webpack_require__(31), toObject = __webpack_require__(25), fails = __webpack_require__(8), $sort = [].sort, test = [ 1, 2, 3 ];
  22875.     $export($export.P + $export.F * (fails(function() {
  22876.         test.sort(undefined);
  22877.     }) || !fails(function() {
  22878.         test.sort(null);
  22879.     }) || !__webpack_require__(49)($sort)), "Array", {
  22880.         sort: function(comparefn) {
  22881.             return comparefn === undefined ? $sort.call(toObject(this)) : $sort.call(toObject(this), aFunction(comparefn));
  22882.         }
  22883.     });
  22884. }, function(module, exports, __webpack_require__) {
  22885.     __webpack_require__(82)("Array");
  22886. }, function(module, exports, __webpack_require__) {
  22887.     var $export = __webpack_require__(0);
  22888.     $export($export.S, "Date", {
  22889.         now: function() {
  22890.             return new Date().getTime();
  22891.         }
  22892.     });
  22893. }, function(module, exports, __webpack_require__) {
  22894.     "use strict";
  22895.     var $export = __webpack_require__(0), fails = __webpack_require__(8), getTime = Date.prototype.getTime, lz = function(num) {
  22896.         return num > 9 ? num : "0" + num;
  22897.     };
  22898.     $export($export.P + $export.F * (fails(function() {
  22899.         return "0385-07-25T07:06:39.999Z" != new Date(-5e13 - 1).toISOString();
  22900.     }) || !fails(function() {
  22901.         new Date(NaN).toISOString();
  22902.     })), "Date", {
  22903.         toISOString: function() {
  22904.             if (!isFinite(getTime.call(this))) throw RangeError("Invalid time value");
  22905.             var d = this, y = d.getUTCFullYear(), m = d.getUTCMilliseconds(), s = y < 0 ? "-" : y > 9999 ? "+" : "";
  22906.             return s + ("00000" + Math.abs(y)).slice(s ? -6 : -4) + "-" + lz(d.getUTCMonth() + 1) + "-" + lz(d.getUTCDate()) + "T" + lz(d.getUTCHours()) + ":" + lz(d.getUTCMinutes()) + ":" + lz(d.getUTCSeconds()) + "." + (m > 99 ? m : "0" + lz(m)) + "Z";
  22907.         }
  22908.     });
  22909. }, function(module, exports, __webpack_require__) {
  22910.     "use strict";
  22911.     var $export = __webpack_require__(0), toObject = __webpack_require__(25), toPrimitive = __webpack_require__(42);
  22912.     $export($export.P + $export.F * __webpack_require__(8)(function() {
  22913.         return null !== new Date(NaN).toJSON() || 1 !== Date.prototype.toJSON.call({
  22914.             toISOString: function() {
  22915.                 return 1;
  22916.             }
  22917.         });
  22918.     }), "Date", {
  22919.         toJSON: function(key) {
  22920.             var O = toObject(this), pv = toPrimitive(O);
  22921.             return "number" == typeof pv && !isFinite(pv) ? null : O.toISOString();
  22922.         }
  22923.     });
  22924. }, function(module, exports, __webpack_require__) {
  22925.     var TO_PRIMITIVE = __webpack_require__(7)("toPrimitive"), proto = Date.prototype;
  22926.     if (!(TO_PRIMITIVE in proto)) __webpack_require__(28)(proto, TO_PRIMITIVE, __webpack_require__(359));
  22927. }, function(module, exports, __webpack_require__) {
  22928.     var DateProto = Date.prototype, $toString = DateProto.toString, getTime = DateProto.getTime;
  22929.     if (new Date(NaN) + "" != "Invalid Date") __webpack_require__(34)(DateProto, "toString", function() {
  22930.         var value = getTime.call(this);
  22931.         return value === value ? $toString.call(this) : "Invalid Date";
  22932.     });
  22933. }, function(module, exports, __webpack_require__) {
  22934.     var $export = __webpack_require__(0);
  22935.     $export($export.P, "Function", {
  22936.         bind: __webpack_require__(248)
  22937.     });
  22938. }, function(module, exports, __webpack_require__) {
  22939.     "use strict";
  22940.     var isObject = __webpack_require__(10), getPrototypeOf = __webpack_require__(71), HAS_INSTANCE = __webpack_require__(7)("hasInstance"), FunctionProto = Function.prototype;
  22941.     if (!(HAS_INSTANCE in FunctionProto)) __webpack_require__(17).f(FunctionProto, HAS_INSTANCE, {
  22942.         value: function(O) {
  22943.             if ("function" != typeof this || !isObject(O)) return !1;
  22944.             if (!isObject(this.prototype)) return O instanceof this;
  22945.             for (;O = getPrototypeOf(O); ) if (this.prototype === O) return !0;
  22946.             return !1;
  22947.         }
  22948.     });
  22949. }, function(module, exports, __webpack_require__) {
  22950.     var dP = __webpack_require__(17).f, createDesc = __webpack_require__(48), has = __webpack_require__(27), FProto = Function.prototype, nameRE = /^\s*function ([^ (]*)/, isExtensible = Object.isExtensible || function() {
  22951.         return !0;
  22952.     };
  22953.     "name" in FProto || __webpack_require__(12) && dP(FProto, "name", {
  22954.         configurable: !0,
  22955.         get: function() {
  22956.             try {
  22957.                 var that = this, name = ("" + that).match(nameRE)[1];
  22958.                 has(that, "name") || !isExtensible(that) || dP(that, "name", createDesc(5, name));
  22959.                 return name;
  22960.             } catch (e) {
  22961.                 return "";
  22962.             }
  22963.         }
  22964.     });
  22965. }, function(module, exports, __webpack_require__) {
  22966.     "use strict";
  22967.     var strong = __webpack_require__(249);
  22968.     module.exports = __webpack_require__(251)("Map", function(get) {
  22969.         return function() {
  22970.             return get(this, arguments.length > 0 ? arguments[0] : undefined);
  22971.         };
  22972.     }, {
  22973.         get: function(key) {
  22974.             var entry = strong.getEntry(this, key);
  22975.             return entry && entry.v;
  22976.         },
  22977.         set: function(key, value) {
  22978.             return strong.def(this, 0 === key ? 0 : key, value);
  22979.         }
  22980.     }, strong, !0);
  22981. }, function(module, exports, __webpack_require__) {
  22982.     var $export = __webpack_require__(0), log1p = __webpack_require__(254), sqrt = Math.sqrt, $acosh = Math.acosh;
  22983.     $export($export.S + $export.F * !($acosh && 710 == Math.floor($acosh(Number.MAX_VALUE)) && $acosh(Infinity) == Infinity), "Math", {
  22984.         acosh: function(x) {
  22985.             return (x = +x) < 1 ? NaN : x > 94906265.62425156 ? Math.log(x) + Math.LN2 : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
  22986.         }
  22987.     });
  22988. }, function(module, exports, __webpack_require__) {
  22989.     function asinh(x) {
  22990.         return !isFinite(x = +x) || 0 == x ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
  22991.     }
  22992.     var $export = __webpack_require__(0), $asinh = Math.asinh;
  22993.     $export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), "Math", {
  22994.         asinh: asinh
  22995.     });
  22996. }, function(module, exports, __webpack_require__) {
  22997.     var $export = __webpack_require__(0), $atanh = Math.atanh;
  22998.     $export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), "Math", {
  22999.         atanh: function(x) {
  23000.             return 0 == (x = +x) ? x : Math.log((1 + x) / (1 - x)) / 2;
  23001.         }
  23002.     });
  23003. }, function(module, exports, __webpack_require__) {
  23004.     var $export = __webpack_require__(0), sign = __webpack_require__(196);
  23005.     $export($export.S, "Math", {
  23006.         cbrt: function(x) {
  23007.             return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
  23008.         }
  23009.     });
  23010. }, function(module, exports, __webpack_require__) {
  23011.     var $export = __webpack_require__(0);
  23012.     $export($export.S, "Math", {
  23013.         clz32: function(x) {
  23014.             return (x >>>= 0) ? 31 - Math.floor(Math.log(x + .5) * Math.LOG2E) : 32;
  23015.         }
  23016.     });
  23017. }, function(module, exports, __webpack_require__) {
  23018.     var $export = __webpack_require__(0), exp = Math.exp;
  23019.     $export($export.S, "Math", {
  23020.         cosh: function(x) {
  23021.             return (exp(x = +x) + exp(-x)) / 2;
  23022.         }
  23023.     });
  23024. }, function(module, exports, __webpack_require__) {
  23025.     var $export = __webpack_require__(0), $expm1 = __webpack_require__(195);
  23026.     $export($export.S + $export.F * ($expm1 != Math.expm1), "Math", {
  23027.         expm1: $expm1
  23028.     });
  23029. }, function(module, exports, __webpack_require__) {
  23030.     var $export = __webpack_require__(0), sign = __webpack_require__(196), pow = Math.pow, EPSILON = pow(2, -52), EPSILON32 = pow(2, -23), MAX32 = pow(2, 127) * (2 - EPSILON32), MIN32 = pow(2, -126), roundTiesToEven = function(n) {
  23031.         return n + 1 / EPSILON - 1 / EPSILON;
  23032.     };
  23033.     $export($export.S, "Math", {
  23034.         fround: function(x) {
  23035.             var a, result, $abs = Math.abs(x), $sign = sign(x);
  23036.             if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
  23037.             a = (1 + EPSILON32 / EPSILON) * $abs;
  23038.             result = a - (a - $abs);
  23039.             if (result > MAX32 || result != result) return $sign * Infinity; else return $sign * result;
  23040.         }
  23041.     });
  23042. }, function(module, exports, __webpack_require__) {
  23043.     var $export = __webpack_require__(0), abs = Math.abs;
  23044.     $export($export.S, "Math", {
  23045.         hypot: function(value1, value2) {
  23046.             for (var arg, div, sum = 0, i = 0, aLen = arguments.length, larg = 0; i < aLen; ) {
  23047.                 arg = abs(arguments[i++]);
  23048.                 if (larg < arg) {
  23049.                     div = larg / arg;
  23050.                     sum = sum * div * div + 1;
  23051.                     larg = arg;
  23052.                 } else if (arg > 0) {
  23053.                     div = arg / larg;
  23054.                     sum += div * div;
  23055.                 } else sum += arg;
  23056.             }
  23057.             return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
  23058.         }
  23059.     });
  23060. }, function(module, exports, __webpack_require__) {
  23061.     var $export = __webpack_require__(0), $imul = Math.imul;
  23062.     $export($export.S + $export.F * __webpack_require__(8)(function() {
  23063.         return -5 != $imul(4294967295, 5) || 2 != $imul.length;
  23064.     }), "Math", {
  23065.         imul: function(x, y) {
  23066.             var xn = +x, yn = +y, xl = 65535 & xn, yl = 65535 & yn;
  23067.             return 0 | xl * yl + ((65535 & xn >>> 16) * yl + xl * (65535 & yn >>> 16) << 16 >>> 0);
  23068.         }
  23069.     });
  23070. }, function(module, exports, __webpack_require__) {
  23071.     var $export = __webpack_require__(0);
  23072.     $export($export.S, "Math", {
  23073.         log10: function(x) {
  23074.             return Math.log(x) / Math.LN10;
  23075.         }
  23076.     });
  23077. }, function(module, exports, __webpack_require__) {
  23078.     var $export = __webpack_require__(0);
  23079.     $export($export.S, "Math", {
  23080.         log1p: __webpack_require__(254)
  23081.     });
  23082. }, function(module, exports, __webpack_require__) {
  23083.     var $export = __webpack_require__(0);
  23084.     $export($export.S, "Math", {
  23085.         log2: function(x) {
  23086.             return Math.log(x) / Math.LN2;
  23087.         }
  23088.     });
  23089. }, function(module, exports, __webpack_require__) {
  23090.     var $export = __webpack_require__(0);
  23091.     $export($export.S, "Math", {
  23092.         sign: __webpack_require__(196)
  23093.     });
  23094. }, function(module, exports, __webpack_require__) {
  23095.     var $export = __webpack_require__(0), expm1 = __webpack_require__(195), exp = Math.exp;
  23096.     $export($export.S + $export.F * __webpack_require__(8)(function() {
  23097.         return -2e-17 != !Math.sinh(-2e-17);
  23098.     }), "Math", {
  23099.         sinh: function(x) {
  23100.             return Math.abs(x = +x) < 1 ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
  23101.         }
  23102.     });
  23103. }, function(module, exports, __webpack_require__) {
  23104.     var $export = __webpack_require__(0), expm1 = __webpack_require__(195), exp = Math.exp;
  23105.     $export($export.S, "Math", {
  23106.         tanh: function(x) {
  23107.             var a = expm1(x = +x), b = expm1(-x);
  23108.             return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
  23109.         }
  23110.     });
  23111. }, function(module, exports, __webpack_require__) {
  23112.     var $export = __webpack_require__(0);
  23113.     $export($export.S, "Math", {
  23114.         trunc: function(it) {
  23115.             return (it > 0 ? Math.floor : Math.ceil)(it);
  23116.         }
  23117.     });
  23118. }, function(module, exports, __webpack_require__) {
  23119.     "use strict";
  23120.     var global = __webpack_require__(2), has = __webpack_require__(27), cof = __webpack_require__(26), inheritIfRequired = __webpack_require__(192), toPrimitive = __webpack_require__(42), fails = __webpack_require__(8), gOPN = __webpack_require__(70).f, gOPD = __webpack_require__(37).f, dP = __webpack_require__(17).f, $trim = __webpack_require__(112).trim, $Number = global.Number, Base = $Number, proto = $Number.prototype, BROKEN_COF = "Number" == cof(__webpack_require__(93)(proto)), TRIM = "trim" in String.prototype, toNumber = function(argument) {
  23121.         var it = toPrimitive(argument, !1);
  23122.         if ("string" == typeof it && it.length > 2) {
  23123.             it = TRIM ? it.trim() : $trim(it, 3);
  23124.             var third, radix, maxCode, first = it.charCodeAt(0);
  23125.             if (43 === first || 45 === first) {
  23126.                 third = it.charCodeAt(2);
  23127.                 if (88 === third || 120 === third) return NaN;
  23128.             } else if (48 === first) {
  23129.                 switch (it.charCodeAt(1)) {
  23130.                   case 66:
  23131.                   case 98:
  23132.                     radix = 2;
  23133.                     maxCode = 49;
  23134.                     break;
  23135.  
  23136.                   case 79:
  23137.                   case 111:
  23138.                     radix = 8;
  23139.                     maxCode = 55;
  23140.                     break;
  23141.  
  23142.                   default:
  23143.                     return +it;
  23144.                 }
  23145.                 for (var code, digits = it.slice(2), i = 0, l = digits.length; i < l; i++) {
  23146.                     code = digits.charCodeAt(i);
  23147.                     if (code < 48 || code > maxCode) return NaN;
  23148.                 }
  23149.                 return parseInt(digits, radix);
  23150.             }
  23151.         }
  23152.         return +it;
  23153.     };
  23154.     if (!$Number(" 0o1") || !$Number("0b1") || $Number("+0x1")) {
  23155.         $Number = function(value) {
  23156.             var it = arguments.length < 1 ? 0 : value, that = this;
  23157.             return that instanceof $Number && (BROKEN_COF ? fails(function() {
  23158.                 proto.valueOf.call(that);
  23159.             }) : "Number" != cof(that)) ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
  23160.         };
  23161.         for (var key, keys = __webpack_require__(12) ? gOPN(Base) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","), j = 0; keys.length > j; j++) if (has(Base, key = keys[j]) && !has($Number, key)) dP($Number, key, gOPD(Base, key));
  23162.         $Number.prototype = proto;
  23163.         proto.constructor = $Number;
  23164.         __webpack_require__(34)(global, "Number", $Number);
  23165.     }
  23166. }, function(module, exports, __webpack_require__) {
  23167.     var $export = __webpack_require__(0);
  23168.     $export($export.S, "Number", {
  23169.         EPSILON: Math.pow(2, -52)
  23170.     });
  23171. }, function(module, exports, __webpack_require__) {
  23172.     var $export = __webpack_require__(0), _isFinite = __webpack_require__(2).isFinite;
  23173.     $export($export.S, "Number", {
  23174.         isFinite: function(it) {
  23175.             return "number" == typeof it && _isFinite(it);
  23176.         }
  23177.     });
  23178. }, function(module, exports, __webpack_require__) {
  23179.     var $export = __webpack_require__(0);
  23180.     $export($export.S, "Number", {
  23181.         isInteger: __webpack_require__(252)
  23182.     });
  23183. }, function(module, exports, __webpack_require__) {
  23184.     var $export = __webpack_require__(0);
  23185.     $export($export.S, "Number", {
  23186.         isNaN: function(number) {
  23187.             return number != number;
  23188.         }
  23189.     });
  23190. }, function(module, exports, __webpack_require__) {
  23191.     var $export = __webpack_require__(0), isInteger = __webpack_require__(252), abs = Math.abs;
  23192.     $export($export.S, "Number", {
  23193.         isSafeInteger: function(number) {
  23194.             return isInteger(number) && abs(number) <= 9007199254740991;
  23195.         }
  23196.     });
  23197. }, function(module, exports, __webpack_require__) {
  23198.     var $export = __webpack_require__(0);
  23199.     $export($export.S, "Number", {
  23200.         MAX_SAFE_INTEGER: 9007199254740991
  23201.     });
  23202. }, function(module, exports, __webpack_require__) {
  23203.     var $export = __webpack_require__(0);
  23204.     $export($export.S, "Number", {
  23205.         MIN_SAFE_INTEGER: -9007199254740991
  23206.     });
  23207. }, function(module, exports, __webpack_require__) {
  23208.     var $export = __webpack_require__(0), $parseFloat = __webpack_require__(256);
  23209.     $export($export.S + $export.F * (Number.parseFloat != $parseFloat), "Number", {
  23210.         parseFloat: $parseFloat
  23211.     });
  23212. }, function(module, exports, __webpack_require__) {
  23213.     var $export = __webpack_require__(0), $parseInt = __webpack_require__(257);
  23214.     $export($export.S + $export.F * (Number.parseInt != $parseInt), "Number", {
  23215.         parseInt: $parseInt
  23216.     });
  23217. }, function(module, exports, __webpack_require__) {
  23218.     "use strict";
  23219.     var $export = __webpack_require__(0), toInteger = __webpack_require__(50), aNumberValue = __webpack_require__(245), repeat = __webpack_require__(200), $toFixed = 1..toFixed, floor = Math.floor, data = [ 0, 0, 0, 0, 0, 0 ], ERROR = "Number.toFixed: incorrect invocation!", multiply = function(n, c) {
  23220.         for (var i = -1, c2 = c; ++i < 6; ) {
  23221.             c2 += n * data[i];
  23222.             data[i] = c2 % 1e7;
  23223.             c2 = floor(c2 / 1e7);
  23224.         }
  23225.     }, divide = function(n) {
  23226.         for (var i = 6, c = 0; --i >= 0; ) {
  23227.             c += data[i];
  23228.             data[i] = floor(c / n);
  23229.             c = c % n * 1e7;
  23230.         }
  23231.     }, numToString = function() {
  23232.         for (var i = 6, s = ""; --i >= 0; ) if ("" !== s || 0 === i || 0 !== data[i]) {
  23233.             var t = String(data[i]);
  23234.             s = "" === s ? t : s + repeat.call("0", 7 - t.length) + t;
  23235.         }
  23236.         return s;
  23237.     }, pow = function(x, n, acc) {
  23238.         return 0 === n ? acc : n % 2 == 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
  23239.     }, log = function(x) {
  23240.         for (var n = 0, x2 = x; x2 >= 4096; ) {
  23241.             n += 12;
  23242.             x2 /= 4096;
  23243.         }
  23244.         for (;x2 >= 2; ) {
  23245.             n += 1;
  23246.             x2 /= 2;
  23247.         }
  23248.         return n;
  23249.     };
  23250.     $export($export.P + $export.F * (!!$toFixed && ("0.000" !== 8e-5.toFixed(3) || "1" !== .9.toFixed(0) || "1.25" !== 1.255.toFixed(2) || "1000000000000000128" !== (0xde0b6b3a7640080).toFixed(0)) || !__webpack_require__(8)(function() {
  23251.         $toFixed.call({});
  23252.     })), "Number", {
  23253.         toFixed: function(fractionDigits) {
  23254.             var e, z, j, k, x = aNumberValue(this, ERROR), f = toInteger(fractionDigits), s = "", m = "0";
  23255.             if (f < 0 || f > 20) throw RangeError(ERROR);
  23256.             if (x != x) return "NaN";
  23257.             if (x <= -1e21 || x >= 1e21) return String(x);
  23258.             if (x < 0) {
  23259.                 s = "-";
  23260.                 x = -x;
  23261.             }
  23262.             if (x > 1e-21) {
  23263.                 e = log(x * pow(2, 69, 1)) - 69;
  23264.                 z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
  23265.                 z *= 4503599627370496;
  23266.                 e = 52 - e;
  23267.                 if (e > 0) {
  23268.                     multiply(0, z);
  23269.                     j = f;
  23270.                     for (;j >= 7; ) {
  23271.                         multiply(1e7, 0);
  23272.                         j -= 7;
  23273.                     }
  23274.                     multiply(pow(10, j, 1), 0);
  23275.                     j = e - 1;
  23276.                     for (;j >= 23; ) {
  23277.                         divide(1 << 23);
  23278.                         j -= 23;
  23279.                     }
  23280.                     divide(1 << j);
  23281.                     multiply(1, 1);
  23282.                     divide(2);
  23283.                     m = numToString();
  23284.                 } else {
  23285.                     multiply(0, z);
  23286.                     multiply(1 << -e, 0);
  23287.                     m = numToString() + repeat.call("0", f);
  23288.                 }
  23289.             }
  23290.             if (f > 0) {
  23291.                 k = m.length;
  23292.                 m = s + (k <= f ? "0." + repeat.call("0", f - k) + m : m.slice(0, k - f) + "." + m.slice(k - f));
  23293.             } else m = s + m;
  23294.             return m;
  23295.         }
  23296.     });
  23297. }, function(module, exports, __webpack_require__) {
  23298.     "use strict";
  23299.     var $export = __webpack_require__(0), $fails = __webpack_require__(8), aNumberValue = __webpack_require__(245), $toPrecision = 1..toPrecision;
  23300.     $export($export.P + $export.F * ($fails(function() {
  23301.         return "1" !== $toPrecision.call(1, undefined);
  23302.     }) || !$fails(function() {
  23303.         $toPrecision.call({});
  23304.     })), "Number", {
  23305.         toPrecision: function(precision) {
  23306.             var that = aNumberValue(this, "Number#toPrecision: incorrect invocation!");
  23307.             return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
  23308.         }
  23309.     });
  23310. }, function(module, exports, __webpack_require__) {
  23311.     var $export = __webpack_require__(0);
  23312.     $export($export.S, "Object", {
  23313.         create: __webpack_require__(93)
  23314.     });
  23315. }, function(module, exports, __webpack_require__) {
  23316.     var isObject = __webpack_require__(10), meta = __webpack_require__(109).onFreeze;
  23317.     __webpack_require__(40)("freeze", function($freeze) {
  23318.         return function(it) {
  23319.             return $freeze && isObject(it) ? $freeze(meta(it)) : it;
  23320.         };
  23321.     });
  23322. }, function(module, exports, __webpack_require__) {
  23323.     var toObject = __webpack_require__(25), $getPrototypeOf = __webpack_require__(71);
  23324.     __webpack_require__(40)("getPrototypeOf", function() {
  23325.         return function(it) {
  23326.             return $getPrototypeOf(toObject(it));
  23327.         };
  23328.     });
  23329. }, function(module, exports, __webpack_require__) {
  23330.     var isObject = __webpack_require__(10);
  23331.     __webpack_require__(40)("isExtensible", function($isExtensible) {
  23332.         return function(it) {
  23333.             return isObject(it) ? $isExtensible ? $isExtensible(it) : !0 : !1;
  23334.         };
  23335.     });
  23336. }, function(module, exports, __webpack_require__) {
  23337.     var isObject = __webpack_require__(10);
  23338.     __webpack_require__(40)("isFrozen", function($isFrozen) {
  23339.         return function(it) {
  23340.             return isObject(it) ? $isFrozen ? $isFrozen(it) : !1 : !0;
  23341.         };
  23342.     });
  23343. }, function(module, exports, __webpack_require__) {
  23344.     var isObject = __webpack_require__(10);
  23345.     __webpack_require__(40)("isSealed", function($isSealed) {
  23346.         return function(it) {
  23347.             return isObject(it) ? $isSealed ? $isSealed(it) : !1 : !0;
  23348.         };
  23349.     });
  23350. }, function(module, exports, __webpack_require__) {
  23351.     var $export = __webpack_require__(0);
  23352.     $export($export.S, "Object", {
  23353.         is: __webpack_require__(258)
  23354.     });
  23355. }, function(module, exports, __webpack_require__) {
  23356.     var toObject = __webpack_require__(25), $keys = __webpack_require__(47);
  23357.     __webpack_require__(40)("keys", function() {
  23358.         return function(it) {
  23359.             return $keys(toObject(it));
  23360.         };
  23361.     });
  23362. }, function(module, exports, __webpack_require__) {
  23363.     var isObject = __webpack_require__(10), meta = __webpack_require__(109).onFreeze;
  23364.     __webpack_require__(40)("preventExtensions", function($preventExtensions) {
  23365.         return function(it) {
  23366.             return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
  23367.         };
  23368.     });
  23369. }, function(module, exports, __webpack_require__) {
  23370.     var isObject = __webpack_require__(10), meta = __webpack_require__(109).onFreeze;
  23371.     __webpack_require__(40)("seal", function($seal) {
  23372.         return function(it) {
  23373.             return $seal && isObject(it) ? $seal(meta(it)) : it;
  23374.         };
  23375.     });
  23376. }, function(module, exports, __webpack_require__) {
  23377.     var $export = __webpack_require__(0);
  23378.     $export($export.S, "Object", {
  23379.         setPrototypeOf: __webpack_require__(198).set
  23380.     });
  23381. }, function(module, exports, __webpack_require__) {
  23382.     "use strict";
  23383.     var classof = __webpack_require__(81), test = {};
  23384.     test[__webpack_require__(7)("toStringTag")] = "z";
  23385.     if (test + "" != "[object z]") __webpack_require__(34)(Object.prototype, "toString", function() {
  23386.         return "[object " + classof(this) + "]";
  23387.     }, !0);
  23388. }, function(module, exports, __webpack_require__) {
  23389.     var $export = __webpack_require__(0), $parseFloat = __webpack_require__(256);
  23390.     $export($export.G + $export.F * (parseFloat != $parseFloat), {
  23391.         parseFloat: $parseFloat
  23392.     });
  23393. }, function(module, exports, __webpack_require__) {
  23394.     var $export = __webpack_require__(0), $parseInt = __webpack_require__(257);
  23395.     $export($export.G + $export.F * (parseInt != $parseInt), {
  23396.         parseInt: $parseInt
  23397.     });
  23398. }, function(module, exports, __webpack_require__) {
  23399.     var $export = __webpack_require__(0), aFunction = __webpack_require__(31), anObject = __webpack_require__(11), rApply = (__webpack_require__(2).Reflect || {}).apply, fApply = Function.apply;
  23400.     $export($export.S + $export.F * !__webpack_require__(8)(function() {
  23401.         rApply(function() {});
  23402.     }), "Reflect", {
  23403.         apply: function(target, thisArgument, argumentsList) {
  23404.             var T = aFunction(target), L = anObject(argumentsList);
  23405.             return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);
  23406.         }
  23407.     });
  23408. }, function(module, exports, __webpack_require__) {
  23409.     var $export = __webpack_require__(0), create = __webpack_require__(93), aFunction = __webpack_require__(31), anObject = __webpack_require__(11), isObject = __webpack_require__(10), fails = __webpack_require__(8), bind = __webpack_require__(248), rConstruct = (__webpack_require__(2).Reflect || {}).construct, NEW_TARGET_BUG = fails(function() {
  23410.         function F() {}
  23411.         return !(rConstruct(function() {}, [], F) instanceof F);
  23412.     }), ARGS_BUG = !fails(function() {
  23413.         rConstruct(function() {});
  23414.     });
  23415.     $export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), "Reflect", {
  23416.         construct: function(Target, args) {
  23417.             aFunction(Target);
  23418.             anObject(args);
  23419.             var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
  23420.             if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
  23421.             if (Target == newTarget) {
  23422.                 switch (args.length) {
  23423.                   case 0:
  23424.                     return new Target();
  23425.  
  23426.                   case 1:
  23427.                     return new Target(args[0]);
  23428.  
  23429.                   case 2:
  23430.                     return new Target(args[0], args[1]);
  23431.  
  23432.                   case 3:
  23433.                     return new Target(args[0], args[1], args[2]);
  23434.  
  23435.                   case 4:
  23436.                     return new Target(args[0], args[1], args[2], args[3]);
  23437.                 }
  23438.                 var $args = [ null ];
  23439.                 $args.push.apply($args, args);
  23440.                 return new (bind.apply(Target, $args))();
  23441.             }
  23442.             var proto = newTarget.prototype, instance = create(isObject(proto) ? proto : Object.prototype), result = Function.apply.call(Target, instance, args);
  23443.             return isObject(result) ? result : instance;
  23444.         }
  23445.     });
  23446. }, function(module, exports, __webpack_require__) {
  23447.     var dP = __webpack_require__(17), $export = __webpack_require__(0), anObject = __webpack_require__(11), toPrimitive = __webpack_require__(42);
  23448.     $export($export.S + $export.F * __webpack_require__(8)(function() {
  23449.         Reflect.defineProperty(dP.f({}, 1, {
  23450.             value: 1
  23451.         }), 1, {
  23452.             value: 2
  23453.         });
  23454.     }), "Reflect", {
  23455.         defineProperty: function(target, propertyKey, attributes) {
  23456.             anObject(target);
  23457.             propertyKey = toPrimitive(propertyKey, !0);
  23458.             anObject(attributes);
  23459.             try {
  23460.                 dP.f(target, propertyKey, attributes);
  23461.                 return !0;
  23462.             } catch (e) {
  23463.                 return !1;
  23464.             }
  23465.         }
  23466.     });
  23467. }, function(module, exports, __webpack_require__) {
  23468.     var $export = __webpack_require__(0), gOPD = __webpack_require__(37).f, anObject = __webpack_require__(11);
  23469.     $export($export.S, "Reflect", {
  23470.         deleteProperty: function(target, propertyKey) {
  23471.             var desc = gOPD(anObject(target), propertyKey);
  23472.             return desc && !desc.configurable ? !1 : delete target[propertyKey];
  23473.         }
  23474.     });
  23475. }, function(module, exports, __webpack_require__) {
  23476.     "use strict";
  23477.     var $export = __webpack_require__(0), anObject = __webpack_require__(11), Enumerate = function(iterated) {
  23478.         this._t = anObject(iterated);
  23479.         this._i = 0;
  23480.         var key, keys = this._k = [];
  23481.         for (key in iterated) keys.push(key);
  23482.     };
  23483.     __webpack_require__(193)(Enumerate, "Object", function() {
  23484.         var key, that = this, keys = that._k;
  23485.         do {
  23486.             if (that._i >= keys.length) return {
  23487.                 value: undefined,
  23488.                 done: !0
  23489.             };
  23490.         } while (!((key = keys[that._i++]) in that._t));
  23491.         return {
  23492.             value: key,
  23493.             done: !1
  23494.         };
  23495.     });
  23496.     $export($export.S, "Reflect", {
  23497.         enumerate: function(target) {
  23498.             return new Enumerate(target);
  23499.         }
  23500.     });
  23501. }, function(module, exports, __webpack_require__) {
  23502.     var gOPD = __webpack_require__(37), $export = __webpack_require__(0), anObject = __webpack_require__(11);
  23503.     $export($export.S, "Reflect", {
  23504.         getOwnPropertyDescriptor: function(target, propertyKey) {
  23505.             return gOPD.f(anObject(target), propertyKey);
  23506.         }
  23507.     });
  23508. }, function(module, exports, __webpack_require__) {
  23509.     var $export = __webpack_require__(0), getProto = __webpack_require__(71), anObject = __webpack_require__(11);
  23510.     $export($export.S, "Reflect", {
  23511.         getPrototypeOf: function(target) {
  23512.             return getProto(anObject(target));
  23513.         }
  23514.     });
  23515. }, function(module, exports, __webpack_require__) {
  23516.     function get(target, propertyKey) {
  23517.         var desc, proto, receiver = arguments.length < 3 ? target : arguments[2];
  23518.         if (anObject(target) === receiver) return target[propertyKey];
  23519.         if (desc = gOPD.f(target, propertyKey)) return has(desc, "value") ? desc.value : desc.get !== undefined ? desc.get.call(receiver) : undefined;
  23520.         if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver); else return;
  23521.     }
  23522.     var gOPD = __webpack_require__(37), getPrototypeOf = __webpack_require__(71), has = __webpack_require__(27), $export = __webpack_require__(0), isObject = __webpack_require__(10), anObject = __webpack_require__(11);
  23523.     $export($export.S, "Reflect", {
  23524.         get: get
  23525.     });
  23526. }, function(module, exports, __webpack_require__) {
  23527.     var $export = __webpack_require__(0);
  23528.     $export($export.S, "Reflect", {
  23529.         has: function(target, propertyKey) {
  23530.             return propertyKey in target;
  23531.         }
  23532.     });
  23533. }, function(module, exports, __webpack_require__) {
  23534.     var $export = __webpack_require__(0), anObject = __webpack_require__(11), $isExtensible = Object.isExtensible;
  23535.     $export($export.S, "Reflect", {
  23536.         isExtensible: function(target) {
  23537.             anObject(target);
  23538.             return $isExtensible ? $isExtensible(target) : !0;
  23539.         }
  23540.     });
  23541. }, function(module, exports, __webpack_require__) {
  23542.     var $export = __webpack_require__(0);
  23543.     $export($export.S, "Reflect", {
  23544.         ownKeys: __webpack_require__(255)
  23545.     });
  23546. }, function(module, exports, __webpack_require__) {
  23547.     var $export = __webpack_require__(0), anObject = __webpack_require__(11), $preventExtensions = Object.preventExtensions;
  23548.     $export($export.S, "Reflect", {
  23549.         preventExtensions: function(target) {
  23550.             anObject(target);
  23551.             try {
  23552.                 if ($preventExtensions) $preventExtensions(target);
  23553.                 return !0;
  23554.             } catch (e) {
  23555.                 return !1;
  23556.             }
  23557.         }
  23558.     });
  23559. }, function(module, exports, __webpack_require__) {
  23560.     var $export = __webpack_require__(0), setProto = __webpack_require__(198);
  23561.     if (setProto) $export($export.S, "Reflect", {
  23562.         setPrototypeOf: function(target, proto) {
  23563.             setProto.check(target, proto);
  23564.             try {
  23565.                 setProto.set(target, proto);
  23566.                 return !0;
  23567.             } catch (e) {
  23568.                 return !1;
  23569.             }
  23570.         }
  23571.     });
  23572. }, function(module, exports, __webpack_require__) {
  23573.     function set(target, propertyKey, V) {
  23574.         var existingDescriptor, proto, receiver = arguments.length < 4 ? target : arguments[3], ownDesc = gOPD.f(anObject(target), propertyKey);
  23575.         if (!ownDesc) {
  23576.             if (isObject(proto = getPrototypeOf(target))) return set(proto, propertyKey, V, receiver);
  23577.             ownDesc = createDesc(0);
  23578.         }
  23579.         if (has(ownDesc, "value")) {
  23580.             if (!1 === ownDesc.writable || !isObject(receiver)) return !1;
  23581.             existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);
  23582.             existingDescriptor.value = V;
  23583.             dP.f(receiver, propertyKey, existingDescriptor);
  23584.             return !0;
  23585.         }
  23586.         return ownDesc.set === undefined ? !1 : (ownDesc.set.call(receiver, V), !0);
  23587.     }
  23588.     var dP = __webpack_require__(17), gOPD = __webpack_require__(37), getPrototypeOf = __webpack_require__(71), has = __webpack_require__(27), $export = __webpack_require__(0), createDesc = __webpack_require__(48), anObject = __webpack_require__(11), isObject = __webpack_require__(10);
  23589.     $export($export.S, "Reflect", {
  23590.         set: set
  23591.     });
  23592. }, function(module, exports, __webpack_require__) {
  23593.     var global = __webpack_require__(2), inheritIfRequired = __webpack_require__(192), dP = __webpack_require__(17).f, gOPN = __webpack_require__(70).f, isRegExp = __webpack_require__(107), $flags = __webpack_require__(152), $RegExp = global.RegExp, Base = $RegExp, proto = $RegExp.prototype, re1 = /a/g, re2 = /a/g, CORRECT_NEW = new $RegExp(re1) !== re1;
  23594.     if (__webpack_require__(12) && (!CORRECT_NEW || __webpack_require__(8)(function() {
  23595.         re2[__webpack_require__(7)("match")] = !1;
  23596.         return $RegExp(re1) != re1 || $RegExp(re2) == re2 || "/a/i" != $RegExp(re1, "i");
  23597.     }))) {
  23598.         $RegExp = function(p, f) {
  23599.             var tiRE = this instanceof $RegExp, piRE = isRegExp(p), fiU = f === undefined;
  23600.             return !tiRE && piRE && p.constructor === $RegExp && fiU ? p : inheritIfRequired(CORRECT_NEW ? new Base(piRE && !fiU ? p.source : p, f) : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f), tiRE ? this : proto, $RegExp);
  23601.         };
  23602.         for (var keys = gOPN(Base), i = 0; keys.length > i; ) !function(key) {
  23603.             key in $RegExp || dP($RegExp, key, {
  23604.                 configurable: !0,
  23605.                 get: function() {
  23606.                     return Base[key];
  23607.                 },
  23608.                 set: function(it) {
  23609.                     Base[key] = it;
  23610.                 }
  23611.             });
  23612.         }(keys[i++]);
  23613.         proto.constructor = $RegExp;
  23614.         $RegExp.prototype = proto;
  23615.         __webpack_require__(34)(global, "RegExp", $RegExp);
  23616.     }
  23617.     __webpack_require__(82)("RegExp");
  23618. }, function(module, exports, __webpack_require__) {
  23619.     __webpack_require__(151)("match", 1, function(defined, MATCH, $match) {
  23620.         return [ function(regexp) {
  23621.             "use strict";
  23622.             var O = defined(this), fn = regexp == undefined ? undefined : regexp[MATCH];
  23623.             return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
  23624.         }, $match ];
  23625.     });
  23626. }, function(module, exports, __webpack_require__) {
  23627.     __webpack_require__(151)("replace", 2, function(defined, REPLACE, $replace) {
  23628.         return [ function(searchValue, replaceValue) {
  23629.             "use strict";
  23630.             var O = defined(this), fn = searchValue == undefined ? undefined : searchValue[REPLACE];
  23631.             return fn !== undefined ? fn.call(searchValue, O, replaceValue) : $replace.call(String(O), searchValue, replaceValue);
  23632.         }, $replace ];
  23633.     });
  23634. }, function(module, exports, __webpack_require__) {
  23635.     __webpack_require__(151)("search", 1, function(defined, SEARCH, $search) {
  23636.         return [ function(regexp) {
  23637.             "use strict";
  23638.             var O = defined(this), fn = regexp == undefined ? undefined : regexp[SEARCH];
  23639.             return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
  23640.         }, $search ];
  23641.     });
  23642. }, function(module, exports, __webpack_require__) {
  23643.     __webpack_require__(151)("split", 2, function(defined, SPLIT, $split) {
  23644.         "use strict";
  23645.         var isRegExp = __webpack_require__(107), _split = $split, $push = [].push, LENGTH = "length";
  23646.         if ("c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1)[LENGTH] || 2 != "ab".split(/(?:ab)*/)[LENGTH] || 4 != ".".split(/(.?)(.?)/)[LENGTH] || ".".split(/()()/)[LENGTH] > 1 || "".split(/.?/)[LENGTH]) {
  23647.             var NPCG = /()??/.exec("")[1] === undefined;
  23648.             $split = function(separator, limit) {
  23649.                 var string = String(this);
  23650.                 if (separator === undefined && 0 === limit) return [];
  23651.                 if (!isRegExp(separator)) return _split.call(string, separator, limit);
  23652.                 var separator2, match, lastIndex, lastLength, i, output = [], flags = (separator.ignoreCase ? "i" : "") + (separator.multiline ? "m" : "") + (separator.unicode ? "u" : "") + (separator.sticky ? "y" : ""), lastLastIndex = 0, splitLimit = limit === undefined ? 4294967295 : limit >>> 0, separatorCopy = new RegExp(separator.source, flags + "g");
  23653.                 if (!NPCG) separator2 = new RegExp("^" + separatorCopy.source + "$(?!\\s)", flags);
  23654.                 for (;match = separatorCopy.exec(string); ) {
  23655.                     lastIndex = match.index + match[0][LENGTH];
  23656.                     if (lastIndex > lastLastIndex) {
  23657.                         output.push(string.slice(lastLastIndex, match.index));
  23658.                         if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function() {
  23659.                             for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;
  23660.                         });
  23661.                         if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
  23662.                         lastLength = match[0][LENGTH];
  23663.                         lastLastIndex = lastIndex;
  23664.                         if (output[LENGTH] >= splitLimit) break;
  23665.                     }
  23666.                     if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++;
  23667.                 }
  23668.                 if (lastLastIndex === string[LENGTH]) {
  23669.                     if (lastLength || !separatorCopy.test("")) output.push("");
  23670.                 } else output.push(string.slice(lastLastIndex));
  23671.                 return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
  23672.             };
  23673.         } else if ("0".split(undefined, 0)[LENGTH]) $split = function(separator, limit) {
  23674.             return separator === undefined && 0 === limit ? [] : _split.call(this, separator, limit);
  23675.         };
  23676.         return [ function(separator, limit) {
  23677.             var O = defined(this), fn = separator == undefined ? undefined : separator[SPLIT];
  23678.             return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);
  23679.         }, $split ];
  23680.     });
  23681. }, function(module, exports, __webpack_require__) {
  23682.     "use strict";
  23683.     __webpack_require__(262);
  23684.     var anObject = __webpack_require__(11), $flags = __webpack_require__(152), DESCRIPTORS = __webpack_require__(12), $toString = /./.toString, define = function(fn) {
  23685.         __webpack_require__(34)(RegExp.prototype, "toString", fn, !0);
  23686.     };
  23687.     if (__webpack_require__(8)(function() {
  23688.         return "/a/b" != $toString.call({
  23689.             source: "a",
  23690.             flags: "b"
  23691.         });
  23692.     })) define(function() {
  23693.         var R = anObject(this);
  23694.         return "/".concat(R.source, "/", "flags" in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
  23695.     }); else if ("toString" != $toString.name) define(function() {
  23696.         return $toString.call(this);
  23697.     });
  23698. }, function(module, exports, __webpack_require__) {
  23699.     "use strict";
  23700.     var strong = __webpack_require__(249);
  23701.     module.exports = __webpack_require__(251)("Set", function(get) {
  23702.         return function() {
  23703.             return get(this, arguments.length > 0 ? arguments[0] : undefined);
  23704.         };
  23705.     }, {
  23706.         add: function(value) {
  23707.             return strong.def(this, value = 0 === value ? 0 : value, value);
  23708.         }
  23709.     }, strong);
  23710. }, function(module, exports, __webpack_require__) {
  23711.     "use strict";
  23712.     __webpack_require__(41)("anchor", function(createHTML) {
  23713.         return function(name) {
  23714.             return createHTML(this, "a", "name", name);
  23715.         };
  23716.     });
  23717. }, function(module, exports, __webpack_require__) {
  23718.     "use strict";
  23719.     __webpack_require__(41)("big", function(createHTML) {
  23720.         return function() {
  23721.             return createHTML(this, "big", "", "");
  23722.         };
  23723.     });
  23724. }, function(module, exports, __webpack_require__) {
  23725.     "use strict";
  23726.     __webpack_require__(41)("blink", function(createHTML) {
  23727.         return function() {
  23728.             return createHTML(this, "blink", "", "");
  23729.         };
  23730.     });
  23731. }, function(module, exports, __webpack_require__) {
  23732.     "use strict";
  23733.     __webpack_require__(41)("bold", function(createHTML) {
  23734.         return function() {
  23735.             return createHTML(this, "b", "", "");
  23736.         };
  23737.     });
  23738. }, function(module, exports, __webpack_require__) {
  23739.     "use strict";
  23740.     var $export = __webpack_require__(0), $at = __webpack_require__(199)(!1);
  23741.     $export($export.P, "String", {
  23742.         codePointAt: function(pos) {
  23743.             return $at(this, pos);
  23744.         }
  23745.     });
  23746. }, function(module, exports, __webpack_require__) {
  23747.     "use strict";
  23748.     __webpack_require__(41)("fixed", function(createHTML) {
  23749.         return function() {
  23750.             return createHTML(this, "tt", "", "");
  23751.         };
  23752.     });
  23753. }, function(module, exports, __webpack_require__) {
  23754.     "use strict";
  23755.     __webpack_require__(41)("fontcolor", function(createHTML) {
  23756.         return function(color) {
  23757.             return createHTML(this, "font", "color", color);
  23758.         };
  23759.     });
  23760. }, function(module, exports, __webpack_require__) {
  23761.     "use strict";
  23762.     __webpack_require__(41)("fontsize", function(createHTML) {
  23763.         return function(size) {
  23764.             return createHTML(this, "font", "size", size);
  23765.         };
  23766.     });
  23767. }, function(module, exports, __webpack_require__) {
  23768.     var $export = __webpack_require__(0), toIndex = __webpack_require__(73), fromCharCode = String.fromCharCode, $fromCodePoint = String.fromCodePoint;
  23769.     $export($export.S + $export.F * (!!$fromCodePoint && 1 != $fromCodePoint.length), "String", {
  23770.         fromCodePoint: function(x) {
  23771.             for (var code, res = [], aLen = arguments.length, i = 0; aLen > i; ) {
  23772.                 code = +arguments[i++];
  23773.                 if (toIndex(code, 1114111) !== code) throw RangeError(code + " is not a valid code point");
  23774.                 res.push(code < 65536 ? fromCharCode(code) : fromCharCode(55296 + ((code -= 65536) >> 10), code % 1024 + 56320));
  23775.             }
  23776.             return res.join("");
  23777.         }
  23778.     });
  23779. }, function(module, exports, __webpack_require__) {
  23780.     "use strict";
  23781.     var $export = __webpack_require__(0), context = __webpack_require__(137);
  23782.     $export($export.P + $export.F * __webpack_require__(128)("includes"), "String", {
  23783.         includes: function(searchString) {
  23784.             return !!~context(this, searchString, "includes").indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
  23785.         }
  23786.     });
  23787. }, function(module, exports, __webpack_require__) {
  23788.     "use strict";
  23789.     __webpack_require__(41)("italics", function(createHTML) {
  23790.         return function() {
  23791.             return createHTML(this, "i", "", "");
  23792.         };
  23793.     });
  23794. }, function(module, exports, __webpack_require__) {
  23795.     "use strict";
  23796.     var $at = __webpack_require__(199)(!0);
  23797.     __webpack_require__(194)(String, "String", function(iterated) {
  23798.         this._t = String(iterated);
  23799.         this._i = 0;
  23800.     }, function() {
  23801.         var point, O = this._t, index = this._i;
  23802.         if (index >= O.length) return {
  23803.             value: undefined,
  23804.             done: !0
  23805.         };
  23806.         point = $at(O, index);
  23807.         this._i += point.length;
  23808.         return {
  23809.             value: point,
  23810.             done: !1
  23811.         };
  23812.     });
  23813. }, function(module, exports, __webpack_require__) {
  23814.     "use strict";
  23815.     __webpack_require__(41)("link", function(createHTML) {
  23816.         return function(url) {
  23817.             return createHTML(this, "a", "href", url);
  23818.         };
  23819.     });
  23820. }, function(module, exports, __webpack_require__) {
  23821.     var $export = __webpack_require__(0), toIObject = __webpack_require__(24), toLength = __webpack_require__(21);
  23822.     $export($export.S, "String", {
  23823.         raw: function(callSite) {
  23824.             for (var tpl = toIObject(callSite.raw), len = toLength(tpl.length), aLen = arguments.length, res = [], i = 0; len > i; ) {
  23825.                 res.push(String(tpl[i++]));
  23826.                 if (i < aLen) res.push(String(arguments[i]));
  23827.             }
  23828.             return res.join("");
  23829.         }
  23830.     });
  23831. }, function(module, exports, __webpack_require__) {
  23832.     var $export = __webpack_require__(0);
  23833.     $export($export.P, "String", {
  23834.         repeat: __webpack_require__(200)
  23835.     });
  23836. }, function(module, exports, __webpack_require__) {
  23837.     "use strict";
  23838.     __webpack_require__(41)("small", function(createHTML) {
  23839.         return function() {
  23840.             return createHTML(this, "small", "", "");
  23841.         };
  23842.     });
  23843. }, function(module, exports, __webpack_require__) {
  23844.     "use strict";
  23845.     var $export = __webpack_require__(0), toLength = __webpack_require__(21), context = __webpack_require__(137), $startsWith = "".startsWith;
  23846.     $export($export.P + $export.F * __webpack_require__(128)("startsWith"), "String", {
  23847.         startsWith: function(searchString) {
  23848.             var that = context(this, searchString, "startsWith"), index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length)), search = String(searchString);
  23849.             return $startsWith ? $startsWith.call(that, search, index) : that.slice(index, index + search.length) === search;
  23850.         }
  23851.     });
  23852. }, function(module, exports, __webpack_require__) {
  23853.     "use strict";
  23854.     __webpack_require__(41)("strike", function(createHTML) {
  23855.         return function() {
  23856.             return createHTML(this, "strike", "", "");
  23857.         };
  23858.     });
  23859. }, function(module, exports, __webpack_require__) {
  23860.     "use strict";
  23861.     __webpack_require__(41)("sub", function(createHTML) {
  23862.         return function() {
  23863.             return createHTML(this, "sub", "", "");
  23864.         };
  23865.     });
  23866. }, function(module, exports, __webpack_require__) {
  23867.     "use strict";
  23868.     __webpack_require__(41)("sup", function(createHTML) {
  23869.         return function() {
  23870.             return createHTML(this, "sup", "", "");
  23871.         };
  23872.     });
  23873. }, function(module, exports, __webpack_require__) {
  23874.     "use strict";
  23875.     __webpack_require__(112)("trim", function($trim) {
  23876.         return function() {
  23877.             return $trim(this, 3);
  23878.         };
  23879.     });
  23880. }, function(module, exports, __webpack_require__) {
  23881.     "use strict";
  23882.     var global = __webpack_require__(2), has = __webpack_require__(27), DESCRIPTORS = __webpack_require__(12), $export = __webpack_require__(0), redefine = __webpack_require__(34), META = __webpack_require__(109).KEY, $fails = __webpack_require__(8), shared = __webpack_require__(111), setToStringTag = __webpack_require__(83), uid = __webpack_require__(51), wks = __webpack_require__(7), wksExt = __webpack_require__(261), wksDefine = __webpack_require__(260), keyOf = __webpack_require__(361), enumKeys = __webpack_require__(360), isArray = __webpack_require__(132), anObject = __webpack_require__(11), toIObject = __webpack_require__(24), toPrimitive = __webpack_require__(42), createDesc = __webpack_require__(48), _create = __webpack_require__(93), gOPNExt = __webpack_require__(157), $GOPD = __webpack_require__(37), $DP = __webpack_require__(17), $keys = __webpack_require__(47), gOPD = $GOPD.f, dP = $DP.f, gOPN = gOPNExt.f, $Symbol = global.Symbol, $JSON = global.JSON, _stringify = $JSON && $JSON.stringify, HIDDEN = wks("_hidden"), TO_PRIMITIVE = wks("toPrimitive"), isEnum = {}.propertyIsEnumerable, SymbolRegistry = shared("symbol-registry"), AllSymbols = shared("symbols"), OPSymbols = shared("op-symbols"), ObjectProto = Object.prototype, USE_NATIVE = "function" == typeof $Symbol, QObject = global.QObject, setter = !QObject || !QObject.prototype || !QObject.prototype.findChild, setSymbolDesc = DESCRIPTORS && $fails(function() {
  23883.         return 7 != _create(dP({}, "a", {
  23884.             get: function() {
  23885.                 return dP(this, "a", {
  23886.                     value: 7
  23887.                 }).a;
  23888.             }
  23889.         })).a;
  23890.     }) ? function(it, key, D) {
  23891.         var protoDesc = gOPD(ObjectProto, key);
  23892.         if (protoDesc) delete ObjectProto[key];
  23893.         dP(it, key, D);
  23894.         if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
  23895.     } : dP, wrap = function(tag) {
  23896.         var sym = AllSymbols[tag] = _create($Symbol.prototype);
  23897.         sym._k = tag;
  23898.         return sym;
  23899.     }, isSymbol = USE_NATIVE && "symbol" == typeof $Symbol.iterator ? function(it) {
  23900.         return "symbol" == typeof it;
  23901.     } : function(it) {
  23902.         return it instanceof $Symbol;
  23903.     }, $defineProperty = function(it, key, D) {
  23904.         if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  23905.         anObject(it);
  23906.         key = toPrimitive(key, !0);
  23907.         anObject(D);
  23908.         if (has(AllSymbols, key)) {
  23909.             if (!D.enumerable) {
  23910.                 if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
  23911.                 it[HIDDEN][key] = !0;
  23912.             } else {
  23913.                 if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = !1;
  23914.                 D = _create(D, {
  23915.                     enumerable: createDesc(0, !1)
  23916.                 });
  23917.             }
  23918.             return setSymbolDesc(it, key, D);
  23919.         }
  23920.         return dP(it, key, D);
  23921.     }, $defineProperties = function(it, P) {
  23922.         anObject(it);
  23923.         for (var key, keys = enumKeys(P = toIObject(P)), i = 0, l = keys.length; l > i; ) $defineProperty(it, key = keys[i++], P[key]);
  23924.         return it;
  23925.     }, $create = function(it, P) {
  23926.         return P === undefined ? _create(it) : $defineProperties(_create(it), P);
  23927.     }, $propertyIsEnumerable = function(key) {
  23928.         var E = isEnum.call(this, key = toPrimitive(key, !0));
  23929.         if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return !1; else return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : !0;
  23930.     }, $getOwnPropertyDescriptor = function(it, key) {
  23931.         it = toIObject(it);
  23932.         key = toPrimitive(key, !0);
  23933.         if (it !== ObjectProto || !has(AllSymbols, key) || has(OPSymbols, key)) {
  23934.             var D = gOPD(it, key);
  23935.             if (D && has(AllSymbols, key) && (!has(it, HIDDEN) || !it[HIDDEN][key])) D.enumerable = !0;
  23936.             return D;
  23937.         }
  23938.     }, $getOwnPropertyNames = function(it) {
  23939.         for (var key, names = gOPN(toIObject(it)), result = [], i = 0; names.length > i; ) if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  23940.         return result;
  23941.     }, $getOwnPropertySymbols = function(it) {
  23942.         for (var key, IS_OP = it === ObjectProto, names = gOPN(IS_OP ? OPSymbols : toIObject(it)), result = [], i = 0; names.length > i; ) if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : !0)) result.push(AllSymbols[key]);
  23943.         return result;
  23944.     };
  23945.     if (!USE_NATIVE) {
  23946.         $Symbol = function() {
  23947.             if (this instanceof $Symbol) throw TypeError("Symbol is not a constructor!");
  23948.             var tag = uid(arguments.length > 0 ? arguments[0] : undefined), $set = function(value) {
  23949.                 if (this === ObjectProto) $set.call(OPSymbols, value);
  23950.                 if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = !1;
  23951.                 setSymbolDesc(this, tag, createDesc(1, value));
  23952.             };
  23953.             if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {
  23954.                 configurable: !0,
  23955.                 set: $set
  23956.             });
  23957.             return wrap(tag);
  23958.         };
  23959.         redefine($Symbol.prototype, "toString", function() {
  23960.             return this._k;
  23961.         });
  23962.         $GOPD.f = $getOwnPropertyDescriptor;
  23963.         $DP.f = $defineProperty;
  23964.         __webpack_require__(70).f = gOPNExt.f = $getOwnPropertyNames;
  23965.         __webpack_require__(72).f = $propertyIsEnumerable;
  23966.         __webpack_require__(110).f = $getOwnPropertySymbols;
  23967.         if (DESCRIPTORS && !__webpack_require__(69)) redefine(ObjectProto, "propertyIsEnumerable", $propertyIsEnumerable, !0);
  23968.         wksExt.f = function(name) {
  23969.             return wrap(wks(name));
  23970.         };
  23971.     }
  23972.     $export($export.G + $export.W + $export.F * !USE_NATIVE, {
  23973.         Symbol: $Symbol
  23974.     });
  23975.     for (var symbols = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), i = 0; symbols.length > i; ) wks(symbols[i++]);
  23976.     for (var symbols = $keys(wks.store), i = 0; symbols.length > i; ) wksDefine(symbols[i++]);
  23977.     $export($export.S + $export.F * !USE_NATIVE, "Symbol", {
  23978.         "for": function(key) {
  23979.             return has(SymbolRegistry, key += "") ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);
  23980.         },
  23981.         keyFor: function(key) {
  23982.             if (isSymbol(key)) return keyOf(SymbolRegistry, key);
  23983.             throw TypeError(key + " is not a symbol!");
  23984.         },
  23985.         useSetter: function() {
  23986.             setter = !0;
  23987.         },
  23988.         useSimple: function() {
  23989.             setter = !1;
  23990.         }
  23991.     });
  23992.     $export($export.S + $export.F * !USE_NATIVE, "Object", {
  23993.         create: $create,
  23994.         defineProperty: $defineProperty,
  23995.         defineProperties: $defineProperties,
  23996.         getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  23997.         getOwnPropertyNames: $getOwnPropertyNames,
  23998.         getOwnPropertySymbols: $getOwnPropertySymbols
  23999.     });
  24000.     $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function() {
  24001.         var S = $Symbol();
  24002.         return "[null]" != _stringify([ S ]) || "{}" != _stringify({
  24003.             a: S
  24004.         }) || "{}" != _stringify(Object(S));
  24005.     })), "JSON", {
  24006.         stringify: function(it) {
  24007.             if (it !== undefined && !isSymbol(it)) {
  24008.                 for (var replacer, $replacer, args = [ it ], i = 1; arguments.length > i; ) args.push(arguments[i++]);
  24009.                 replacer = args[1];
  24010.                 if ("function" == typeof replacer) $replacer = replacer;
  24011.                 if ($replacer || !isArray(replacer)) replacer = function(key, value) {
  24012.                     if ($replacer) value = $replacer.call(this, key, value);
  24013.                     if (!isSymbol(value)) return value;
  24014.                 };
  24015.                 args[1] = replacer;
  24016.                 return _stringify.apply($JSON, args);
  24017.             }
  24018.         }
  24019.     });
  24020.     $Symbol.prototype[TO_PRIMITIVE] || __webpack_require__(28)($Symbol.prototype, TO_PRIMITIVE, $Symbol.prototype.valueOf);
  24021.     setToStringTag($Symbol, "Symbol");
  24022.     setToStringTag(Math, "Math", !0);
  24023.     setToStringTag(global.JSON, "JSON", !0);
  24024. }, function(module, exports, __webpack_require__) {
  24025.     "use strict";
  24026.     var $export = __webpack_require__(0), $typed = __webpack_require__(158), buffer = __webpack_require__(202), anObject = __webpack_require__(11), toIndex = __webpack_require__(73), toLength = __webpack_require__(21), isObject = __webpack_require__(10), ArrayBuffer = __webpack_require__(2).ArrayBuffer, speciesConstructor = __webpack_require__(136), $ArrayBuffer = buffer.ArrayBuffer, $DataView = buffer.DataView, $isView = $typed.ABV && ArrayBuffer.isView, $slice = $ArrayBuffer.prototype.slice, VIEW = $typed.VIEW;
  24027.     $export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), {
  24028.         ArrayBuffer: $ArrayBuffer
  24029.     });
  24030.     $export($export.S + $export.F * !$typed.CONSTR, "ArrayBuffer", {
  24031.         isView: function(it) {
  24032.             return $isView && $isView(it) || isObject(it) && VIEW in it;
  24033.         }
  24034.     });
  24035.     $export($export.P + $export.U + $export.F * __webpack_require__(8)(function() {
  24036.         return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
  24037.     }), "ArrayBuffer", {
  24038.         slice: function(start, end) {
  24039.             if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start);
  24040.             for (var len = anObject(this).byteLength, first = toIndex(start, len), final = toIndex(end === undefined ? len : end, len), result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first)), viewS = new $DataView(this), viewT = new $DataView(result), index = 0; first < final; ) viewT.setUint8(index++, viewS.getUint8(first++));
  24041.             return result;
  24042.         }
  24043.     });
  24044.     __webpack_require__(82)("ArrayBuffer");
  24045. }, function(module, exports, __webpack_require__) {
  24046.     var $export = __webpack_require__(0);
  24047.     $export($export.G + $export.W + $export.F * !__webpack_require__(158).ABV, {
  24048.         DataView: __webpack_require__(202).DataView
  24049.     });
  24050. }, function(module, exports, __webpack_require__) {
  24051.     __webpack_require__(74)("Float32", 4, function(init) {
  24052.         return function(data, byteOffset, length) {
  24053.             return init(this, data, byteOffset, length);
  24054.         };
  24055.     });
  24056. }, function(module, exports, __webpack_require__) {
  24057.     __webpack_require__(74)("Float64", 8, function(init) {
  24058.         return function(data, byteOffset, length) {
  24059.             return init(this, data, byteOffset, length);
  24060.         };
  24061.     });
  24062. }, function(module, exports, __webpack_require__) {
  24063.     __webpack_require__(74)("Int16", 2, function(init) {
  24064.         return function(data, byteOffset, length) {
  24065.             return init(this, data, byteOffset, length);
  24066.         };
  24067.     });
  24068. }, function(module, exports, __webpack_require__) {
  24069.     __webpack_require__(74)("Int32", 4, function(init) {
  24070.         return function(data, byteOffset, length) {
  24071.             return init(this, data, byteOffset, length);
  24072.         };
  24073.     });
  24074. }, function(module, exports, __webpack_require__) {
  24075.     __webpack_require__(74)("Int8", 1, function(init) {
  24076.         return function(data, byteOffset, length) {
  24077.             return init(this, data, byteOffset, length);
  24078.         };
  24079.     });
  24080. }, function(module, exports, __webpack_require__) {
  24081.     __webpack_require__(74)("Uint16", 2, function(init) {
  24082.         return function(data, byteOffset, length) {
  24083.             return init(this, data, byteOffset, length);
  24084.         };
  24085.     });
  24086. }, function(module, exports, __webpack_require__) {
  24087.     __webpack_require__(74)("Uint32", 4, function(init) {
  24088.         return function(data, byteOffset, length) {
  24089.             return init(this, data, byteOffset, length);
  24090.         };
  24091.     });
  24092. }, function(module, exports, __webpack_require__) {
  24093.     __webpack_require__(74)("Uint8", 1, function(init) {
  24094.         return function(data, byteOffset, length) {
  24095.             return init(this, data, byteOffset, length);
  24096.         };
  24097.     });
  24098. }, function(module, exports, __webpack_require__) {
  24099.     __webpack_require__(74)("Uint8", 1, function(init) {
  24100.         return function(data, byteOffset, length) {
  24101.             return init(this, data, byteOffset, length);
  24102.         };
  24103.     }, !0);
  24104. }, function(module, exports, __webpack_require__) {
  24105.     var $export = __webpack_require__(0), microtask = __webpack_require__(154)(), process = __webpack_require__(2).process, isNode = "process" == __webpack_require__(26)(process);
  24106.     $export($export.G, {
  24107.         asap: function(fn) {
  24108.             var domain = isNode && process.domain;
  24109.             microtask(domain ? domain.bind(fn) : fn);
  24110.         }
  24111.     });
  24112. }, function(module, exports, __webpack_require__) {
  24113.     var $export = __webpack_require__(0), cof = __webpack_require__(26);
  24114.     $export($export.S, "Error", {
  24115.         isError: function(it) {
  24116.             return "Error" === cof(it);
  24117.         }
  24118.     });
  24119. }, function(module, exports, __webpack_require__) {
  24120.     var $export = __webpack_require__(0);
  24121.     $export($export.P + $export.R, "Map", {
  24122.         toJSON: __webpack_require__(250)("Map")
  24123.     });
  24124. }, function(module, exports, __webpack_require__) {
  24125.     var $export = __webpack_require__(0);
  24126.     $export($export.S, "Math", {
  24127.         iaddh: function(x0, x1, y0, y1) {
  24128.             var $x0 = x0 >>> 0, $x1 = x1 >>> 0, $y0 = y0 >>> 0;
  24129.             return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
  24130.         }
  24131.     });
  24132. }, function(module, exports, __webpack_require__) {
  24133.     var $export = __webpack_require__(0);
  24134.     $export($export.S, "Math", {
  24135.         imulh: function(u, v) {
  24136.             var $u = +u, $v = +v, u0 = 65535 & $u, v0 = 65535 & $v, u1 = $u >> 16, v1 = $v >> 16, t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
  24137.             return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (65535 & t) >> 16);
  24138.         }
  24139.     });
  24140. }, function(module, exports, __webpack_require__) {
  24141.     var $export = __webpack_require__(0);
  24142.     $export($export.S, "Math", {
  24143.         isubh: function(x0, x1, y0, y1) {
  24144.             var $x0 = x0 >>> 0, $x1 = x1 >>> 0, $y0 = y0 >>> 0;
  24145.             return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
  24146.         }
  24147.     });
  24148. }, function(module, exports, __webpack_require__) {
  24149.     var $export = __webpack_require__(0);
  24150.     $export($export.S, "Math", {
  24151.         umulh: function(u, v) {
  24152.             var $u = +u, $v = +v, u0 = 65535 & $u, v0 = 65535 & $v, u1 = $u >>> 16, v1 = $v >>> 16, t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
  24153.             return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (65535 & t) >>> 16);
  24154.         }
  24155.     });
  24156. }, function(module, exports, __webpack_require__) {
  24157.     "use strict";
  24158.     var $export = __webpack_require__(0), toObject = __webpack_require__(25), aFunction = __webpack_require__(31), $defineProperty = __webpack_require__(17);
  24159.     __webpack_require__(12) && $export($export.P + __webpack_require__(156), "Object", {
  24160.         __defineGetter__: function(P, getter) {
  24161.             $defineProperty.f(toObject(this), P, {
  24162.                 get: aFunction(getter),
  24163.                 enumerable: !0,
  24164.                 configurable: !0
  24165.             });
  24166.         }
  24167.     });
  24168. }, function(module, exports, __webpack_require__) {
  24169.     "use strict";
  24170.     var $export = __webpack_require__(0), toObject = __webpack_require__(25), aFunction = __webpack_require__(31), $defineProperty = __webpack_require__(17);
  24171.     __webpack_require__(12) && $export($export.P + __webpack_require__(156), "Object", {
  24172.         __defineSetter__: function(P, setter) {
  24173.             $defineProperty.f(toObject(this), P, {
  24174.                 set: aFunction(setter),
  24175.                 enumerable: !0,
  24176.                 configurable: !0
  24177.             });
  24178.         }
  24179.     });
  24180. }, function(module, exports, __webpack_require__) {
  24181.     var $export = __webpack_require__(0), ownKeys = __webpack_require__(255), toIObject = __webpack_require__(24), gOPD = __webpack_require__(37), createProperty = __webpack_require__(191);
  24182.     $export($export.S, "Object", {
  24183.         getOwnPropertyDescriptors: function(object) {
  24184.             for (var key, O = toIObject(object), getDesc = gOPD.f, keys = ownKeys(O), result = {}, i = 0; keys.length > i; ) createProperty(result, key = keys[i++], getDesc(O, key));
  24185.             return result;
  24186.         }
  24187.     });
  24188. }, function(module, exports, __webpack_require__) {
  24189.     "use strict";
  24190.     var $export = __webpack_require__(0), toObject = __webpack_require__(25), toPrimitive = __webpack_require__(42), getPrototypeOf = __webpack_require__(71), getOwnPropertyDescriptor = __webpack_require__(37).f;
  24191.     __webpack_require__(12) && $export($export.P + __webpack_require__(156), "Object", {
  24192.         __lookupGetter__: function(P) {
  24193.             var D, O = toObject(this), K = toPrimitive(P, !0);
  24194.             do {
  24195.                 if (D = getOwnPropertyDescriptor(O, K)) return D.get;
  24196.             } while (O = getPrototypeOf(O));
  24197.         }
  24198.     });
  24199. }, function(module, exports, __webpack_require__) {
  24200.     "use strict";
  24201.     var $export = __webpack_require__(0), toObject = __webpack_require__(25), toPrimitive = __webpack_require__(42), getPrototypeOf = __webpack_require__(71), getOwnPropertyDescriptor = __webpack_require__(37).f;
  24202.     __webpack_require__(12) && $export($export.P + __webpack_require__(156), "Object", {
  24203.         __lookupSetter__: function(P) {
  24204.             var D, O = toObject(this), K = toPrimitive(P, !0);
  24205.             do {
  24206.                 if (D = getOwnPropertyDescriptor(O, K)) return D.set;
  24207.             } while (O = getPrototypeOf(O));
  24208.         }
  24209.     });
  24210. }, function(module, exports, __webpack_require__) {
  24211.     var $export = __webpack_require__(0);
  24212.     $export($export.P + $export.R, "Set", {
  24213.         toJSON: __webpack_require__(250)("Set")
  24214.     });
  24215. }, function(module, exports, __webpack_require__) {
  24216.     "use strict";
  24217.     var $export = __webpack_require__(0), $at = __webpack_require__(199)(!0);
  24218.     $export($export.P, "String", {
  24219.         at: function(pos) {
  24220.             return $at(this, pos);
  24221.         }
  24222.     });
  24223. }, function(module, exports, __webpack_require__) {
  24224.     "use strict";
  24225.     var $export = __webpack_require__(0), defined = __webpack_require__(33), toLength = __webpack_require__(21), isRegExp = __webpack_require__(107), getFlags = __webpack_require__(152), RegExpProto = RegExp.prototype, $RegExpStringIterator = function(regexp, string) {
  24226.         this._r = regexp;
  24227.         this._s = string;
  24228.     };
  24229.     __webpack_require__(193)($RegExpStringIterator, "RegExp String", function() {
  24230.         var match = this._r.exec(this._s);
  24231.         return {
  24232.             value: match,
  24233.             done: null === match
  24234.         };
  24235.     });
  24236.     $export($export.P, "String", {
  24237.         matchAll: function(regexp) {
  24238.             defined(this);
  24239.             if (!isRegExp(regexp)) throw TypeError(regexp + " is not a regexp!");
  24240.             var S = String(this), flags = "flags" in RegExpProto ? String(regexp.flags) : getFlags.call(regexp), rx = new RegExp(regexp.source, ~flags.indexOf("g") ? flags : "g" + flags);
  24241.             rx.lastIndex = toLength(regexp.lastIndex);
  24242.             return new $RegExpStringIterator(rx, S);
  24243.         }
  24244.     });
  24245. }, function(module, exports, __webpack_require__) {
  24246.     "use strict";
  24247.     var $export = __webpack_require__(0), $pad = __webpack_require__(259);
  24248.     $export($export.P, "String", {
  24249.         padEnd: function(maxLength) {
  24250.             return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, !1);
  24251.         }
  24252.     });
  24253. }, function(module, exports, __webpack_require__) {
  24254.     "use strict";
  24255.     var $export = __webpack_require__(0), $pad = __webpack_require__(259);
  24256.     $export($export.P, "String", {
  24257.         padStart: function(maxLength) {
  24258.             return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, !0);
  24259.         }
  24260.     });
  24261. }, function(module, exports, __webpack_require__) {
  24262.     "use strict";
  24263.     __webpack_require__(112)("trimLeft", function($trim) {
  24264.         return function() {
  24265.             return $trim(this, 1);
  24266.         };
  24267.     }, "trimStart");
  24268. }, function(module, exports, __webpack_require__) {
  24269.     "use strict";
  24270.     __webpack_require__(112)("trimRight", function($trim) {
  24271.         return function() {
  24272.             return $trim(this, 2);
  24273.         };
  24274.     }, "trimEnd");
  24275. }, function(module, exports, __webpack_require__) {
  24276.     __webpack_require__(260)("asyncIterator");
  24277. }, function(module, exports, __webpack_require__) {
  24278.     var $export = __webpack_require__(0);
  24279.     $export($export.S, "System", {
  24280.         global: __webpack_require__(2)
  24281.     });
  24282. }, function(module, exports, __webpack_require__) {
  24283.     for (var $iterators = __webpack_require__(203), redefine = __webpack_require__(34), global = __webpack_require__(2), hide = __webpack_require__(28), Iterators = __webpack_require__(68), wks = __webpack_require__(7), ITERATOR = wks("iterator"), TO_STRING_TAG = wks("toStringTag"), ArrayValues = Iterators.Array, collections = [ "NodeList", "DOMTokenList", "MediaList", "StyleSheetList", "CSSRuleList" ], i = 0; i < 5; i++) {
  24284.         var key, NAME = collections[i], Collection = global[NAME], proto = Collection && Collection.prototype;
  24285.         if (proto) {
  24286.             if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
  24287.             if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
  24288.             Iterators[NAME] = ArrayValues;
  24289.             for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], !0);
  24290.         }
  24291.     }
  24292. }, function(module, exports, __webpack_require__) {
  24293.     var $export = __webpack_require__(0), $task = __webpack_require__(113);
  24294.     $export($export.G + $export.B, {
  24295.         setImmediate: $task.set,
  24296.         clearImmediate: $task.clear
  24297.     });
  24298. }, function(module, exports, __webpack_require__) {
  24299.     var global = __webpack_require__(2), $export = __webpack_require__(0), invoke = __webpack_require__(106), partial = __webpack_require__(362), navigator = global.navigator, MSIE = !!navigator && /MSIE .\./.test(navigator.userAgent), wrap = function(set) {
  24300.         return MSIE ? function(fn, time) {
  24301.             return set(invoke(partial, [].slice.call(arguments, 2), "function" == typeof fn ? fn : Function(fn)), time);
  24302.         } : set;
  24303.     };
  24304.     $export($export.G + $export.B + $export.F * MSIE, {
  24305.         setTimeout: wrap(global.setTimeout),
  24306.         setInterval: wrap(global.setInterval)
  24307.     });
  24308. }, function(module, exports, __webpack_require__) {
  24309.     var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
  24310.     !function(root, factory) {
  24311.         "use strict";
  24312.         if (!0) __WEBPACK_AMD_DEFINE_FACTORY__ = factory, (__WEBPACK_AMD_DEFINE_RESULT__ = "function" == typeof __WEBPACK_AMD_DEFINE_FACTORY__ ? __WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module) : __WEBPACK_AMD_DEFINE_FACTORY__) !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__); else if ("object" == typeof exports) module.exports = factory(); else root.returnExports = factory();
  24313.     }(this, function() {
  24314.         var isCallable, isRegex, $Array = Array, ArrayPrototype = $Array.prototype, $Object = Object, ObjectPrototype = $Object.prototype, $Function = Function, FunctionPrototype = $Function.prototype, $String = String, StringPrototype = $String.prototype, $Number = Number, NumberPrototype = $Number.prototype, array_slice = ArrayPrototype.slice, array_splice = ArrayPrototype.splice, array_push = ArrayPrototype.push, array_unshift = ArrayPrototype.unshift, array_concat = ArrayPrototype.concat, array_join = ArrayPrototype.join, call = FunctionPrototype.call, apply = FunctionPrototype.apply, max = Math.max, min = Math.min, to_string = ObjectPrototype.toString, hasToStringTag = "function" == typeof Symbol && "symbol" == typeof Symbol.toStringTag, fnToStr = Function.prototype.toString, constructorRegex = /^\s*class /, isES6ClassFn = function(value) {
  24315.             try {
  24316.                 var fnStr = fnToStr.call(value), singleStripped = fnStr.replace(/\/\/.*\n/g, ""), multiStripped = singleStripped.replace(/\/\*[.\s\S]*\*\//g, ""), spaceStripped = multiStripped.replace(/\n/gm, " ").replace(/ {2}/g, " ");
  24317.                 return constructorRegex.test(spaceStripped);
  24318.             } catch (e) {
  24319.                 return !1;
  24320.             }
  24321.         }, tryFunctionObject = function(value) {
  24322.             try {
  24323.                 if (isES6ClassFn(value)) return !1;
  24324.                 fnToStr.call(value);
  24325.                 return !0;
  24326.             } catch (e) {
  24327.                 return !1;
  24328.             }
  24329.         }, isCallable = function(value) {
  24330.             if (!value) return !1;
  24331.             if ("function" != typeof value && "object" != typeof value) return !1;
  24332.             if (hasToStringTag) return tryFunctionObject(value);
  24333.             if (isES6ClassFn(value)) return !1;
  24334.             var strClass = to_string.call(value);
  24335.             return "[object Function]" === strClass || "[object GeneratorFunction]" === strClass;
  24336.         }, regexExec = RegExp.prototype.exec, tryRegexExec = function(value) {
  24337.             try {
  24338.                 regexExec.call(value);
  24339.                 return !0;
  24340.             } catch (e) {
  24341.                 return !1;
  24342.             }
  24343.         };
  24344.         isRegex = function(value) {
  24345.             if ("object" != typeof value) return !1; else return hasToStringTag ? tryRegexExec(value) : "[object RegExp]" === to_string.call(value);
  24346.         };
  24347.         var isString, strValue = String.prototype.valueOf, tryStringObject = function(value) {
  24348.             try {
  24349.                 strValue.call(value);
  24350.                 return !0;
  24351.             } catch (e) {
  24352.                 return !1;
  24353.             }
  24354.         };
  24355.         isString = function(value) {
  24356.             if ("string" == typeof value) return !0;
  24357.             if ("object" != typeof value) return !1; else return hasToStringTag ? tryStringObject(value) : "[object String]" === to_string.call(value);
  24358.         };
  24359.         var supportsDescriptors = $Object.defineProperty && function() {
  24360.             try {
  24361.                 var obj = {};
  24362.                 $Object.defineProperty(obj, "x", {
  24363.                     enumerable: !1,
  24364.                     value: obj
  24365.                 });
  24366.                 for (var _ in obj) return !1;
  24367.                 return obj.x === obj;
  24368.             } catch (e) {
  24369.                 return !1;
  24370.             }
  24371.         }(), defineProperties = function(has) {
  24372.             var defineProperty;
  24373.             if (supportsDescriptors) defineProperty = function(object, name, method, forceAssign) {
  24374.                 if (forceAssign || !(name in object)) $Object.defineProperty(object, name, {
  24375.                     configurable: !0,
  24376.                     enumerable: !1,
  24377.                     writable: !0,
  24378.                     value: method
  24379.                 });
  24380.             }; else defineProperty = function(object, name, method, forceAssign) {
  24381.                 if (forceAssign || !(name in object)) object[name] = method;
  24382.             };
  24383.             return function(object, map, forceAssign) {
  24384.                 for (var name in map) if (has.call(map, name)) defineProperty(object, name, map[name], forceAssign);
  24385.             };
  24386.         }(ObjectPrototype.hasOwnProperty), isPrimitive = function(input) {
  24387.             var type = typeof input;
  24388.             return null === input || "object" !== type && "function" !== type;
  24389.         }, isActualNaN = $Number.isNaN || function(x) {
  24390.             return x !== x;
  24391.         }, ES = {
  24392.             ToInteger: function(num) {
  24393.                 var n = +num;
  24394.                 if (isActualNaN(n)) n = 0; else if (0 !== n && n !== 1 / 0 && n !== -1 / 0) n = (n > 0 || -1) * Math.floor(Math.abs(n));
  24395.                 return n;
  24396.             },
  24397.             ToPrimitive: function(input) {
  24398.                 var val, valueOf, toStr;
  24399.                 if (isPrimitive(input)) return input;
  24400.                 valueOf = input.valueOf;
  24401.                 if (isCallable(valueOf)) {
  24402.                     val = valueOf.call(input);
  24403.                     if (isPrimitive(val)) return val;
  24404.                 }
  24405.                 toStr = input.toString;
  24406.                 if (isCallable(toStr)) {
  24407.                     val = toStr.call(input);
  24408.                     if (isPrimitive(val)) return val;
  24409.                 }
  24410.                 throw new TypeError();
  24411.             },
  24412.             ToObject: function(o) {
  24413.                 if (null == o) throw new TypeError("can't convert " + o + " to object");
  24414.                 return $Object(o);
  24415.             },
  24416.             ToUint32: function(x) {
  24417.                 return x >>> 0;
  24418.             }
  24419.         }, Empty = function() {};
  24420.         defineProperties(FunctionPrototype, {
  24421.             bind: function(that) {
  24422.                 var target = this;
  24423.                 if (!isCallable(target)) throw new TypeError("Function.prototype.bind called on incompatible " + target);
  24424.                 for (var bound, args = array_slice.call(arguments, 1), binder = function() {
  24425.                     if (this instanceof bound) {
  24426.                         var result = apply.call(target, this, array_concat.call(args, array_slice.call(arguments)));
  24427.                         if ($Object(result) === result) return result; else return this;
  24428.                     } else return apply.call(target, that, array_concat.call(args, array_slice.call(arguments)));
  24429.                 }, boundLength = max(0, target.length - args.length), boundArgs = [], i = 0; i < boundLength; i++) array_push.call(boundArgs, "$" + i);
  24430.                 bound = $Function("binder", "return function (" + array_join.call(boundArgs, ",") + "){ return binder.apply(this, arguments); }")(binder);
  24431.                 if (target.prototype) {
  24432.                     Empty.prototype = target.prototype;
  24433.                     bound.prototype = new Empty();
  24434.                     Empty.prototype = null;
  24435.                 }
  24436.                 return bound;
  24437.             }
  24438.         });
  24439.         var owns = call.bind(ObjectPrototype.hasOwnProperty), toStr = call.bind(ObjectPrototype.toString), arraySlice = call.bind(array_slice), arraySliceApply = apply.bind(array_slice), strSlice = call.bind(StringPrototype.slice), strSplit = call.bind(StringPrototype.split), strIndexOf = call.bind(StringPrototype.indexOf), pushCall = call.bind(array_push), isEnum = call.bind(ObjectPrototype.propertyIsEnumerable), arraySort = call.bind(ArrayPrototype.sort), isArray = $Array.isArray || function(obj) {
  24440.             return "[object Array]" === toStr(obj);
  24441.         }, hasUnshiftReturnValueBug = 1 !== [].unshift(0);
  24442.         defineProperties(ArrayPrototype, {
  24443.             unshift: function() {
  24444.                 array_unshift.apply(this, arguments);
  24445.                 return this.length;
  24446.             }
  24447.         }, hasUnshiftReturnValueBug);
  24448.         defineProperties($Array, {
  24449.             isArray: isArray
  24450.         });
  24451.         var boxedString = $Object("a"), splitString = "a" !== boxedString[0] || !(0 in boxedString), properlyBoxesContext = function(method) {
  24452.             var properlyBoxesNonStrict = !0, properlyBoxesStrict = !0, threwException = !1;
  24453.             if (method) try {
  24454.                 method.call("foo", function(_, __, context) {
  24455.                     if ("object" != typeof context) properlyBoxesNonStrict = !1;
  24456.                 });
  24457.                 method.call([ 1 ], function() {
  24458.                     "use strict";
  24459.                     properlyBoxesStrict = "string" == typeof this;
  24460.                 }, "x");
  24461.             } catch (e) {
  24462.                 threwException = !0;
  24463.             }
  24464.             return !!method && !threwException && properlyBoxesNonStrict && properlyBoxesStrict;
  24465.         };
  24466.         defineProperties(ArrayPrototype, {
  24467.             forEach: function(callbackfn) {
  24468.                 var T, object = ES.ToObject(this), self = splitString && isString(this) ? strSplit(this, "") : object, i = -1, length = ES.ToUint32(self.length);
  24469.                 if (arguments.length > 1) T = arguments[1];
  24470.                 if (!isCallable(callbackfn)) throw new TypeError("Array.prototype.forEach callback must be a function");
  24471.                 for (;++i < length; ) if (i in self) if (void 0 === T) callbackfn(self[i], i, object); else callbackfn.call(T, self[i], i, object);
  24472.             }
  24473.         }, !properlyBoxesContext(ArrayPrototype.forEach));
  24474.         defineProperties(ArrayPrototype, {
  24475.             map: function(callbackfn) {
  24476.                 var T, object = ES.ToObject(this), self = splitString && isString(this) ? strSplit(this, "") : object, length = ES.ToUint32(self.length), result = $Array(length);
  24477.                 if (arguments.length > 1) T = arguments[1];
  24478.                 if (!isCallable(callbackfn)) throw new TypeError("Array.prototype.map callback must be a function");
  24479.                 for (var i = 0; i < length; i++) if (i in self) if (void 0 === T) result[i] = callbackfn(self[i], i, object); else result[i] = callbackfn.call(T, self[i], i, object);
  24480.                 return result;
  24481.             }
  24482.         }, !properlyBoxesContext(ArrayPrototype.map));
  24483.         defineProperties(ArrayPrototype, {
  24484.             filter: function(callbackfn) {
  24485.                 var value, T, object = ES.ToObject(this), self = splitString && isString(this) ? strSplit(this, "") : object, length = ES.ToUint32(self.length), result = [];
  24486.                 if (arguments.length > 1) T = arguments[1];
  24487.                 if (!isCallable(callbackfn)) throw new TypeError("Array.prototype.filter callback must be a function");
  24488.                 for (var i = 0; i < length; i++) if (i in self) {
  24489.                     value = self[i];
  24490.                     if (void 0 === T ? callbackfn(value, i, object) : callbackfn.call(T, value, i, object)) pushCall(result, value);
  24491.                 }
  24492.                 return result;
  24493.             }
  24494.         }, !properlyBoxesContext(ArrayPrototype.filter));
  24495.         defineProperties(ArrayPrototype, {
  24496.             every: function(callbackfn) {
  24497.                 var T, object = ES.ToObject(this), self = splitString && isString(this) ? strSplit(this, "") : object, length = ES.ToUint32(self.length);
  24498.                 if (arguments.length > 1) T = arguments[1];
  24499.                 if (!isCallable(callbackfn)) throw new TypeError("Array.prototype.every callback must be a function");
  24500.                 for (var i = 0; i < length; i++) if (i in self && !(void 0 === T ? callbackfn(self[i], i, object) : callbackfn.call(T, self[i], i, object))) return !1;
  24501.                 return !0;
  24502.             }
  24503.         }, !properlyBoxesContext(ArrayPrototype.every));
  24504.         defineProperties(ArrayPrototype, {
  24505.             some: function(callbackfn) {
  24506.                 var T, object = ES.ToObject(this), self = splitString && isString(this) ? strSplit(this, "") : object, length = ES.ToUint32(self.length);
  24507.                 if (arguments.length > 1) T = arguments[1];
  24508.                 if (!isCallable(callbackfn)) throw new TypeError("Array.prototype.some callback must be a function");
  24509.                 for (var i = 0; i < length; i++) if (i in self && (void 0 === T ? callbackfn(self[i], i, object) : callbackfn.call(T, self[i], i, object))) return !0;
  24510.                 return !1;
  24511.             }
  24512.         }, !properlyBoxesContext(ArrayPrototype.some));
  24513.         var reduceCoercesToObject = !1;
  24514.         if (ArrayPrototype.reduce) reduceCoercesToObject = "object" == typeof ArrayPrototype.reduce.call("es5", function(_, __, ___, list) {
  24515.             return list;
  24516.         });
  24517.         defineProperties(ArrayPrototype, {
  24518.             reduce: function(callbackfn) {
  24519.                 var object = ES.ToObject(this), self = splitString && isString(this) ? strSplit(this, "") : object, length = ES.ToUint32(self.length);
  24520.                 if (!isCallable(callbackfn)) throw new TypeError("Array.prototype.reduce callback must be a function");
  24521.                 if (0 === length && 1 === arguments.length) throw new TypeError("reduce of empty array with no initial value");
  24522.                 var result, i = 0;
  24523.                 if (arguments.length >= 2) result = arguments[1]; else for (;;) {
  24524.                     if (i in self) {
  24525.                         result = self[i++];
  24526.                         break;
  24527.                     }
  24528.                     if (++i >= length) throw new TypeError("reduce of empty array with no initial value");
  24529.                 }
  24530.                 for (;i < length; i++) if (i in self) result = callbackfn(result, self[i], i, object);
  24531.                 return result;
  24532.             }
  24533.         }, !reduceCoercesToObject);
  24534.         var reduceRightCoercesToObject = !1;
  24535.         if (ArrayPrototype.reduceRight) reduceRightCoercesToObject = "object" == typeof ArrayPrototype.reduceRight.call("es5", function(_, __, ___, list) {
  24536.             return list;
  24537.         });
  24538.         defineProperties(ArrayPrototype, {
  24539.             reduceRight: function(callbackfn) {
  24540.                 var object = ES.ToObject(this), self = splitString && isString(this) ? strSplit(this, "") : object, length = ES.ToUint32(self.length);
  24541.                 if (!isCallable(callbackfn)) throw new TypeError("Array.prototype.reduceRight callback must be a function");
  24542.                 if (0 === length && 1 === arguments.length) throw new TypeError("reduceRight of empty array with no initial value");
  24543.                 var result, i = length - 1;
  24544.                 if (arguments.length >= 2) result = arguments[1]; else for (;;) {
  24545.                     if (i in self) {
  24546.                         result = self[i--];
  24547.                         break;
  24548.                     }
  24549.                     if (--i < 0) throw new TypeError("reduceRight of empty array with no initial value");
  24550.                 }
  24551.                 if (i < 0) return result;
  24552.                 do {
  24553.                     if (i in self) result = callbackfn(result, self[i], i, object);
  24554.                 } while (i--);
  24555.                 return result;
  24556.             }
  24557.         }, !reduceRightCoercesToObject);
  24558.         var hasFirefox2IndexOfBug = ArrayPrototype.indexOf && -1 !== [ 0, 1 ].indexOf(1, 2);
  24559.         defineProperties(ArrayPrototype, {
  24560.             indexOf: function(searchElement) {
  24561.                 var self = splitString && isString(this) ? strSplit(this, "") : ES.ToObject(this), length = ES.ToUint32(self.length);
  24562.                 if (0 === length) return -1;
  24563.                 var i = 0;
  24564.                 if (arguments.length > 1) i = ES.ToInteger(arguments[1]);
  24565.                 i = i >= 0 ? i : max(0, length + i);
  24566.                 for (;i < length; i++) if (i in self && self[i] === searchElement) return i;
  24567.                 return -1;
  24568.             }
  24569.         }, hasFirefox2IndexOfBug);
  24570.         var hasFirefox2LastIndexOfBug = ArrayPrototype.lastIndexOf && -1 !== [ 0, 1 ].lastIndexOf(0, -3);
  24571.         defineProperties(ArrayPrototype, {
  24572.             lastIndexOf: function(searchElement) {
  24573.                 var self = splitString && isString(this) ? strSplit(this, "") : ES.ToObject(this), length = ES.ToUint32(self.length);
  24574.                 if (0 === length) return -1;
  24575.                 var i = length - 1;
  24576.                 if (arguments.length > 1) i = min(i, ES.ToInteger(arguments[1]));
  24577.                 i = i >= 0 ? i : length - Math.abs(i);
  24578.                 for (;i >= 0; i--) if (i in self && searchElement === self[i]) return i;
  24579.                 return -1;
  24580.             }
  24581.         }, hasFirefox2LastIndexOfBug);
  24582.         var spliceNoopReturnsEmptyArray = function() {
  24583.             var a = [ 1, 2 ], result = a.splice();
  24584.             return 2 === a.length && isArray(result) && 0 === result.length;
  24585.         }();
  24586.         defineProperties(ArrayPrototype, {
  24587.             splice: function(start, deleteCount) {
  24588.                 if (0 === arguments.length) return []; else return array_splice.apply(this, arguments);
  24589.             }
  24590.         }, !spliceNoopReturnsEmptyArray);
  24591.         var spliceWorksWithEmptyObject = function() {
  24592.             var obj = {};
  24593.             ArrayPrototype.splice.call(obj, 0, 0, 1);
  24594.             return 1 === obj.length;
  24595.         }();
  24596.         defineProperties(ArrayPrototype, {
  24597.             splice: function(start, deleteCount) {
  24598.                 if (0 === arguments.length) return [];
  24599.                 var args = arguments;
  24600.                 this.length = max(ES.ToInteger(this.length), 0);
  24601.                 if (arguments.length > 0 && "number" != typeof deleteCount) {
  24602.                     args = arraySlice(arguments);
  24603.                     if (args.length < 2) pushCall(args, this.length - start); else args[1] = ES.ToInteger(deleteCount);
  24604.                 }
  24605.                 return array_splice.apply(this, args);
  24606.             }
  24607.         }, !spliceWorksWithEmptyObject);
  24608.         var spliceWorksWithLargeSparseArrays = function() {
  24609.             var arr = new $Array(1e5);
  24610.             arr[8] = "x";
  24611.             arr.splice(1, 1);
  24612.             return 7 === arr.indexOf("x");
  24613.         }(), spliceWorksWithSmallSparseArrays = function() {
  24614.             var arr = [];
  24615.             arr[256] = "a";
  24616.             arr.splice(257, 0, "b");
  24617.             return "a" === arr[256];
  24618.         }();
  24619.         defineProperties(ArrayPrototype, {
  24620.             splice: function(start, deleteCount) {
  24621.                 for (var from, O = ES.ToObject(this), A = [], len = ES.ToUint32(O.length), relativeStart = ES.ToInteger(start), actualStart = relativeStart < 0 ? max(len + relativeStart, 0) : min(relativeStart, len), actualDeleteCount = min(max(ES.ToInteger(deleteCount), 0), len - actualStart), k = 0; k < actualDeleteCount; ) {
  24622.                     from = $String(actualStart + k);
  24623.                     if (owns(O, from)) A[k] = O[from];
  24624.                     k += 1;
  24625.                 }
  24626.                 var to, items = arraySlice(arguments, 2), itemCount = items.length;
  24627.                 if (itemCount < actualDeleteCount) {
  24628.                     k = actualStart;
  24629.                     for (var maxK = len - actualDeleteCount; k < maxK; ) {
  24630.                         from = $String(k + actualDeleteCount);
  24631.                         to = $String(k + itemCount);
  24632.                         if (owns(O, from)) O[to] = O[from]; else delete O[to];
  24633.                         k += 1;
  24634.                     }
  24635.                     k = len;
  24636.                     for (var minK = len - actualDeleteCount + itemCount; k > minK; ) {
  24637.                         delete O[k - 1];
  24638.                         k -= 1;
  24639.                     }
  24640.                 } else if (itemCount > actualDeleteCount) {
  24641.                     k = len - actualDeleteCount;
  24642.                     for (;k > actualStart; ) {
  24643.                         from = $String(k + actualDeleteCount - 1);
  24644.                         to = $String(k + itemCount - 1);
  24645.                         if (owns(O, from)) O[to] = O[from]; else delete O[to];
  24646.                         k -= 1;
  24647.                     }
  24648.                 }
  24649.                 k = actualStart;
  24650.                 for (var i = 0; i < items.length; ++i) {
  24651.                     O[k] = items[i];
  24652.                     k += 1;
  24653.                 }
  24654.                 O.length = len - actualDeleteCount + itemCount;
  24655.                 return A;
  24656.             }
  24657.         }, !spliceWorksWithLargeSparseArrays || !spliceWorksWithSmallSparseArrays);
  24658.         var hasStringJoinBug, originalJoin = ArrayPrototype.join;
  24659.         try {
  24660.             hasStringJoinBug = "1,2,3" !== Array.prototype.join.call("123", ",");
  24661.         } catch (e) {
  24662.             hasStringJoinBug = !0;
  24663.         }
  24664.         if (hasStringJoinBug) defineProperties(ArrayPrototype, {
  24665.             join: function(separator) {
  24666.                 var sep = void 0 === separator ? "," : separator;
  24667.                 return originalJoin.call(isString(this) ? strSplit(this, "") : this, sep);
  24668.             }
  24669.         }, hasStringJoinBug);
  24670.         var hasJoinUndefinedBug = "1,2" !== [ 1, 2 ].join(undefined);
  24671.         if (hasJoinUndefinedBug) defineProperties(ArrayPrototype, {
  24672.             join: function(separator) {
  24673.                 var sep = void 0 === separator ? "," : separator;
  24674.                 return originalJoin.call(this, sep);
  24675.             }
  24676.         }, hasJoinUndefinedBug);
  24677.         var pushShim = function(item) {
  24678.             for (var O = ES.ToObject(this), n = ES.ToUint32(O.length), i = 0; i < arguments.length; ) {
  24679.                 O[n + i] = arguments[i];
  24680.                 i += 1;
  24681.             }
  24682.             O.length = n + i;
  24683.             return n + i;
  24684.         }, pushIsNotGeneric = function() {
  24685.             var obj = {};
  24686.             return 1 !== Array.prototype.push.call(obj, undefined) || 1 !== obj.length || "undefined" != typeof obj[0] || !owns(obj, 0);
  24687.         }();
  24688.         defineProperties(ArrayPrototype, {
  24689.             push: function(item) {
  24690.                 if (isArray(this)) return array_push.apply(this, arguments); else return pushShim.apply(this, arguments);
  24691.             }
  24692.         }, pushIsNotGeneric);
  24693.         var pushUndefinedIsWeird = function() {
  24694.             var arr = [];
  24695.             return 1 !== arr.push(undefined) || 1 !== arr.length || "undefined" != typeof arr[0] || !owns(arr, 0);
  24696.         }();
  24697.         defineProperties(ArrayPrototype, {
  24698.             push: pushShim
  24699.         }, pushUndefinedIsWeird);
  24700.         defineProperties(ArrayPrototype, {
  24701.             slice: function(start, end) {
  24702.                 var arr = isString(this) ? strSplit(this, "") : this;
  24703.                 return arraySliceApply(arr, arguments);
  24704.             }
  24705.         }, splitString);
  24706.         var sortIgnoresNonFunctions = function() {
  24707.             try {
  24708.                 [ 1, 2 ].sort(null);
  24709.                 [ 1, 2 ].sort({});
  24710.                 return !0;
  24711.             } catch (e) {}
  24712.             return !1;
  24713.         }(), sortThrowsOnRegex = function() {
  24714.             try {
  24715.                 [ 1, 2 ].sort(/a/);
  24716.                 return !1;
  24717.             } catch (e) {}
  24718.             return !0;
  24719.         }(), sortIgnoresUndefined = function() {
  24720.             try {
  24721.                 [ 1, 2 ].sort(undefined);
  24722.                 return !0;
  24723.             } catch (e) {}
  24724.             return !1;
  24725.         }();
  24726.         defineProperties(ArrayPrototype, {
  24727.             sort: function(compareFn) {
  24728.                 if (void 0 === compareFn) return arraySort(this);
  24729.                 if (!isCallable(compareFn)) throw new TypeError("Array.prototype.sort callback must be a function");
  24730.                 return arraySort(this, compareFn);
  24731.             }
  24732.         }, sortIgnoresNonFunctions || !sortIgnoresUndefined || !sortThrowsOnRegex);
  24733.         var hasDontEnumBug = !isEnum({
  24734.             toString: null
  24735.         }, "toString"), hasProtoEnumBug = isEnum(function() {}, "prototype"), hasStringEnumBug = !owns("x", "0"), equalsConstructorPrototype = function(o) {
  24736.             var ctor = o.constructor;
  24737.             return ctor && ctor.prototype === o;
  24738.         }, blacklistedKeys = {
  24739.             $window: !0,
  24740.             $console: !0,
  24741.             $parent: !0,
  24742.             $self: !0,
  24743.             $frame: !0,
  24744.             $frames: !0,
  24745.             $frameElement: !0,
  24746.             $webkitIndexedDB: !0,
  24747.             $webkitStorageInfo: !0,
  24748.             $external: !0
  24749.         }, hasAutomationEqualityBug = function() {
  24750.             if ("undefined" == typeof window) return !1;
  24751.             for (var k in window) try {
  24752.                 if (!blacklistedKeys["$" + k] && owns(window, k) && null !== window[k] && "object" == typeof window[k]) equalsConstructorPrototype(window[k]);
  24753.             } catch (e) {
  24754.                 return !0;
  24755.             }
  24756.             return !1;
  24757.         }(), equalsConstructorPrototypeIfNotBuggy = function(object) {
  24758.             if ("undefined" == typeof window || !hasAutomationEqualityBug) return equalsConstructorPrototype(object);
  24759.             try {
  24760.                 return equalsConstructorPrototype(object);
  24761.             } catch (e) {
  24762.                 return !1;
  24763.             }
  24764.         }, dontEnums = [ "toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor" ], dontEnumsLength = dontEnums.length, isStandardArguments = function(value) {
  24765.             return "[object Arguments]" === toStr(value);
  24766.         }, isLegacyArguments = function(value) {
  24767.             return null !== value && "object" == typeof value && "number" == typeof value.length && value.length >= 0 && !isArray(value) && isCallable(value.callee);
  24768.         }, isArguments = isStandardArguments(arguments) ? isStandardArguments : isLegacyArguments;
  24769.         defineProperties($Object, {
  24770.             keys: function(object) {
  24771.                 var isFn = isCallable(object), isArgs = isArguments(object), isObject = null !== object && "object" == typeof object, isStr = isObject && isString(object);
  24772.                 if (!isObject && !isFn && !isArgs) throw new TypeError("Object.keys called on a non-object");
  24773.                 var theKeys = [], skipProto = hasProtoEnumBug && isFn;
  24774.                 if (isStr && hasStringEnumBug || isArgs) for (var i = 0; i < object.length; ++i) pushCall(theKeys, $String(i));
  24775.                 if (!isArgs) for (var name in object) if ((!skipProto || "prototype" !== name) && owns(object, name)) pushCall(theKeys, $String(name));
  24776.                 if (hasDontEnumBug) for (var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object), j = 0; j < dontEnumsLength; j++) {
  24777.                     var dontEnum = dontEnums[j];
  24778.                     if ((!skipConstructor || "constructor" !== dontEnum) && owns(object, dontEnum)) pushCall(theKeys, dontEnum);
  24779.                 }
  24780.                 return theKeys;
  24781.             }
  24782.         });
  24783.         var keysWorksWithArguments = $Object.keys && function() {
  24784.             return 2 === $Object.keys(arguments).length;
  24785.         }(1, 2), keysHasArgumentsLengthBug = $Object.keys && function() {
  24786.             var argKeys = $Object.keys(arguments);
  24787.             return 1 !== arguments.length || 1 !== argKeys.length || 1 !== argKeys[0];
  24788.         }(1), originalKeys = $Object.keys;
  24789.         defineProperties($Object, {
  24790.             keys: function(object) {
  24791.                 if (isArguments(object)) return originalKeys(arraySlice(object)); else return originalKeys(object);
  24792.             }
  24793.         }, !keysWorksWithArguments || keysHasArgumentsLengthBug);
  24794.         var hasToDateStringFormatBug, hasToStringFormatBug, hasNegativeMonthYearBug = 0 !== new Date(-0xc782b5b342b24).getUTCMonth(), aNegativeTestDate = new Date(-0x55d318d56a724), aPositiveTestDate = new Date(14496624e5), hasToUTCStringFormatBug = "Mon, 01 Jan -45875 11:59:59 GMT" !== aNegativeTestDate.toUTCString();
  24795.         if (aNegativeTestDate.getTimezoneOffset() < -720) {
  24796.             hasToDateStringFormatBug = "Tue Jan 02 -45875" !== aNegativeTestDate.toDateString();
  24797.             hasToStringFormatBug = !/^Thu Dec 10 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/.test(aPositiveTestDate.toString());
  24798.         } else {
  24799.             hasToDateStringFormatBug = "Mon Jan 01 -45875" !== aNegativeTestDate.toDateString();
  24800.             hasToStringFormatBug = !/^Wed Dec 09 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/.test(aPositiveTestDate.toString());
  24801.         }
  24802.         var originalGetFullYear = call.bind(Date.prototype.getFullYear), originalGetMonth = call.bind(Date.prototype.getMonth), originalGetDate = call.bind(Date.prototype.getDate), originalGetUTCFullYear = call.bind(Date.prototype.getUTCFullYear), originalGetUTCMonth = call.bind(Date.prototype.getUTCMonth), originalGetUTCDate = call.bind(Date.prototype.getUTCDate), originalGetUTCDay = call.bind(Date.prototype.getUTCDay), originalGetUTCHours = call.bind(Date.prototype.getUTCHours), originalGetUTCMinutes = call.bind(Date.prototype.getUTCMinutes), originalGetUTCSeconds = call.bind(Date.prototype.getUTCSeconds), originalGetUTCMilliseconds = call.bind(Date.prototype.getUTCMilliseconds), dayName = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], monthName = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], daysInMonth = function(month, year) {
  24803.             return originalGetDate(new Date(year, month, 0));
  24804.         };
  24805.         defineProperties(Date.prototype, {
  24806.             getFullYear: function() {
  24807.                 if (!(this && this instanceof Date)) throw new TypeError("this is not a Date object.");
  24808.                 var year = originalGetFullYear(this);
  24809.                 if (year < 0 && originalGetMonth(this) > 11) return year + 1; else return year;
  24810.             },
  24811.             getMonth: function() {
  24812.                 if (!(this && this instanceof Date)) throw new TypeError("this is not a Date object.");
  24813.                 var year = originalGetFullYear(this), month = originalGetMonth(this);
  24814.                 if (year < 0 && month > 11) return 0; else return month;
  24815.             },
  24816.             getDate: function() {
  24817.                 if (!(this && this instanceof Date)) throw new TypeError("this is not a Date object.");
  24818.                 var year = originalGetFullYear(this), month = originalGetMonth(this), date = originalGetDate(this);
  24819.                 if (year < 0 && month > 11) {
  24820.                     if (12 === month) return date;
  24821.                     return daysInMonth(0, year + 1) - date + 1;
  24822.                 }
  24823.                 return date;
  24824.             },
  24825.             getUTCFullYear: function() {
  24826.                 if (!(this && this instanceof Date)) throw new TypeError("this is not a Date object.");
  24827.                 var year = originalGetUTCFullYear(this);
  24828.                 if (year < 0 && originalGetUTCMonth(this) > 11) return year + 1; else return year;
  24829.             },
  24830.             getUTCMonth: function() {
  24831.                 if (!(this && this instanceof Date)) throw new TypeError("this is not a Date object.");
  24832.                 var year = originalGetUTCFullYear(this), month = originalGetUTCMonth(this);
  24833.                 if (year < 0 && month > 11) return 0; else return month;
  24834.             },
  24835.             getUTCDate: function() {
  24836.                 if (!(this && this instanceof Date)) throw new TypeError("this is not a Date object.");
  24837.                 var year = originalGetUTCFullYear(this), month = originalGetUTCMonth(this), date = originalGetUTCDate(this);
  24838.                 if (year < 0 && month > 11) {
  24839.                     if (12 === month) return date;
  24840.                     return daysInMonth(0, year + 1) - date + 1;
  24841.                 }
  24842.                 return date;
  24843.             }
  24844.         }, hasNegativeMonthYearBug);
  24845.         defineProperties(Date.prototype, {
  24846.             toUTCString: function() {
  24847.                 if (!(this && this instanceof Date)) throw new TypeError("this is not a Date object.");
  24848.                 var day = originalGetUTCDay(this), date = originalGetUTCDate(this), month = originalGetUTCMonth(this), year = originalGetUTCFullYear(this), hour = originalGetUTCHours(this), minute = originalGetUTCMinutes(this), second = originalGetUTCSeconds(this);
  24849.                 return dayName[day] + ", " + (date < 10 ? "0" + date : date) + " " + monthName[month] + " " + year + " " + (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second) + " GMT";
  24850.             }
  24851.         }, hasNegativeMonthYearBug || hasToUTCStringFormatBug);
  24852.         defineProperties(Date.prototype, {
  24853.             toDateString: function() {
  24854.                 if (!(this && this instanceof Date)) throw new TypeError("this is not a Date object.");
  24855.                 var day = this.getDay(), date = this.getDate(), month = this.getMonth(), year = this.getFullYear();
  24856.                 return dayName[day] + " " + monthName[month] + " " + (date < 10 ? "0" + date : date) + " " + year;
  24857.             }
  24858.         }, hasNegativeMonthYearBug || hasToDateStringFormatBug);
  24859.         if (hasNegativeMonthYearBug || hasToStringFormatBug) {
  24860.             Date.prototype.toString = function() {
  24861.                 if (!(this && this instanceof Date)) throw new TypeError("this is not a Date object.");
  24862.                 var day = this.getDay(), date = this.getDate(), month = this.getMonth(), year = this.getFullYear(), hour = this.getHours(), minute = this.getMinutes(), second = this.getSeconds(), timezoneOffset = this.getTimezoneOffset(), hoursOffset = Math.floor(Math.abs(timezoneOffset) / 60), minutesOffset = Math.floor(Math.abs(timezoneOffset) % 60);
  24863.                 return dayName[day] + " " + monthName[month] + " " + (date < 10 ? "0" + date : date) + " " + year + " " + (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second) + " GMT" + (timezoneOffset > 0 ? "-" : "+") + (hoursOffset < 10 ? "0" + hoursOffset : hoursOffset) + (minutesOffset < 10 ? "0" + minutesOffset : minutesOffset);
  24864.             };
  24865.             if (supportsDescriptors) $Object.defineProperty(Date.prototype, "toString", {
  24866.                 configurable: !0,
  24867.                 enumerable: !1,
  24868.                 writable: !0
  24869.             });
  24870.         }
  24871.         var hasNegativeDateBug = Date.prototype.toISOString && -1 === new Date(-621987552e5).toISOString().indexOf("-000001"), hasSafari51DateBug = Date.prototype.toISOString && "1969-12-31T23:59:59.999Z" !== new Date(-1).toISOString(), getTime = call.bind(Date.prototype.getTime);
  24872.         defineProperties(Date.prototype, {
  24873.             toISOString: function() {
  24874.                 if (!isFinite(this) || !isFinite(getTime(this))) throw new RangeError("Date.prototype.toISOString called on non-finite value.");
  24875.                 var year = originalGetUTCFullYear(this), month = originalGetUTCMonth(this);
  24876.                 year += Math.floor(month / 12);
  24877.                 month = (month % 12 + 12) % 12;
  24878.                 var result = [ month + 1, originalGetUTCDate(this), originalGetUTCHours(this), originalGetUTCMinutes(this), originalGetUTCSeconds(this) ];
  24879.                 year = (year < 0 ? "-" : year > 9999 ? "+" : "") + strSlice("00000" + Math.abs(year), 0 <= year && year <= 9999 ? -4 : -6);
  24880.                 for (var i = 0; i < result.length; ++i) result[i] = strSlice("00" + result[i], -2);
  24881.                 return year + "-" + arraySlice(result, 0, 2).join("-") + "T" + arraySlice(result, 2).join(":") + "." + strSlice("000" + originalGetUTCMilliseconds(this), -3) + "Z";
  24882.             }
  24883.         }, hasNegativeDateBug || hasSafari51DateBug);
  24884.         if (!function() {
  24885.             try {
  24886.                 return Date.prototype.toJSON && null === new Date(NaN).toJSON() && -1 !== new Date(-621987552e5).toJSON().indexOf("-000001") && Date.prototype.toJSON.call({
  24887.                     toISOString: function() {
  24888.                         return !0;
  24889.                     }
  24890.                 });
  24891.             } catch (e) {
  24892.                 return !1;
  24893.             }
  24894.         }()) Date.prototype.toJSON = function(key) {
  24895.             var O = $Object(this), tv = ES.ToPrimitive(O);
  24896.             if ("number" == typeof tv && !isFinite(tv)) return null;
  24897.             var toISO = O.toISOString;
  24898.             if (!isCallable(toISO)) throw new TypeError("toISOString property is not callable");
  24899.             return toISO.call(O);
  24900.         };
  24901.         var supportsExtendedYears = 1e15 === Date.parse("+033658-09-27T01:46:40.000Z"), acceptsInvalidDates = !isNaN(Date.parse("2012-04-04T24:00:00.500Z")) || !isNaN(Date.parse("2012-11-31T23:59:59.000Z")) || !isNaN(Date.parse("2012-12-31T23:59:60.000Z"));
  24902.         if (isNaN(Date.parse("2000-01-01T00:00:00.000Z")) || acceptsInvalidDates || !supportsExtendedYears) {
  24903.             var maxSafeUnsigned32Bit = Math.pow(2, 31) - 1, hasSafariSignedIntBug = isActualNaN(new Date(1970, 0, 1, 0, 0, 0, maxSafeUnsigned32Bit + 1).getTime());
  24904.             Date = function(NativeDate) {
  24905.                 var DateShim = function(Y, M, D, h, m, s, ms) {
  24906.                     var date, length = arguments.length;
  24907.                     if (this instanceof NativeDate) {
  24908.                         var seconds = s, millis = ms;
  24909.                         if (hasSafariSignedIntBug && length >= 7 && ms > maxSafeUnsigned32Bit) {
  24910.                             var msToShift = Math.floor(ms / maxSafeUnsigned32Bit) * maxSafeUnsigned32Bit, sToShift = Math.floor(msToShift / 1e3);
  24911.                             seconds += sToShift;
  24912.                             millis -= 1e3 * sToShift;
  24913.                         }
  24914.                         date = 1 === length && $String(Y) === Y ? new NativeDate(DateShim.parse(Y)) : length >= 7 ? new NativeDate(Y, M, D, h, m, seconds, millis) : length >= 6 ? new NativeDate(Y, M, D, h, m, seconds) : length >= 5 ? new NativeDate(Y, M, D, h, m) : length >= 4 ? new NativeDate(Y, M, D, h) : length >= 3 ? new NativeDate(Y, M, D) : length >= 2 ? new NativeDate(Y, M) : length >= 1 ? new NativeDate(Y instanceof NativeDate ? +Y : Y) : new NativeDate();
  24915.                     } else date = NativeDate.apply(this, arguments);
  24916.                     if (!isPrimitive(date)) defineProperties(date, {
  24917.                         constructor: DateShim
  24918.                     }, !0);
  24919.                     return date;
  24920.                 }, isoDateExpression = new RegExp("^(\\d{4}|[+-]\\d{6})(?:-(\\d{2})(?:-(\\d{2})(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:(\\.\\d{1,}))?)?(Z|(?:([-+])(\\d{2}):(\\d{2})))?)?)?)?$"), months = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 ], dayFromMonth = function(year, month) {
  24921.                     var t = month > 1 ? 1 : 0;
  24922.                     return months[month] + Math.floor((year - 1969 + t) / 4) - Math.floor((year - 1901 + t) / 100) + Math.floor((year - 1601 + t) / 400) + 365 * (year - 1970);
  24923.                 }, toUTC = function(t) {
  24924.                     var s = 0, ms = t;
  24925.                     if (hasSafariSignedIntBug && ms > maxSafeUnsigned32Bit) {
  24926.                         var msToShift = Math.floor(ms / maxSafeUnsigned32Bit) * maxSafeUnsigned32Bit, sToShift = Math.floor(msToShift / 1e3);
  24927.                         s += sToShift;
  24928.                         ms -= 1e3 * sToShift;
  24929.                     }
  24930.                     return $Number(new NativeDate(1970, 0, 1, 0, 0, s, ms));
  24931.                 };
  24932.                 for (var key in NativeDate) if (owns(NativeDate, key)) DateShim[key] = NativeDate[key];
  24933.                 defineProperties(DateShim, {
  24934.                     now: NativeDate.now,
  24935.                     UTC: NativeDate.UTC
  24936.                 }, !0);
  24937.                 DateShim.prototype = NativeDate.prototype;
  24938.                 defineProperties(DateShim.prototype, {
  24939.                     constructor: DateShim
  24940.                 }, !0);
  24941.                 defineProperties(DateShim, {
  24942.                     parse: function(string) {
  24943.                         var match = isoDateExpression.exec(string);
  24944.                         if (match) {
  24945.                             var result, year = $Number(match[1]), month = $Number(match[2] || 1) - 1, day = $Number(match[3] || 1) - 1, hour = $Number(match[4] || 0), minute = $Number(match[5] || 0), second = $Number(match[6] || 0), millisecond = Math.floor(1e3 * $Number(match[7] || 0)), isLocalTime = Boolean(match[4] && !match[8]), signOffset = "-" === match[9] ? 1 : -1, hourOffset = $Number(match[10] || 0), minuteOffset = $Number(match[11] || 0);
  24946.                             if (hour < (minute > 0 || second > 0 || millisecond > 0 ? 24 : 25) && minute < 60 && second < 60 && millisecond < 1e3 && month > -1 && month < 12 && hourOffset < 24 && minuteOffset < 60 && day > -1 && day < dayFromMonth(year, month + 1) - dayFromMonth(year, month)) {
  24947.                                 result = 60 * (24 * (dayFromMonth(year, month) + day) + hour + hourOffset * signOffset);
  24948.                                 result = 1e3 * (60 * (result + minute + minuteOffset * signOffset) + second) + millisecond;
  24949.                                 if (isLocalTime) result = toUTC(result);
  24950.                                 if (-864e13 <= result && result <= 864e13) return result;
  24951.                             }
  24952.                             return NaN;
  24953.                         }
  24954.                         return NativeDate.parse.apply(this, arguments);
  24955.                     }
  24956.                 });
  24957.                 return DateShim;
  24958.             }(Date);
  24959.         }
  24960.         if (!Date.now) Date.now = function() {
  24961.             return new Date().getTime();
  24962.         };
  24963.         var hasToFixedBugs = NumberPrototype.toFixed && ("0.000" !== 8e-5.toFixed(3) || "1" !== .9.toFixed(0) || "1.25" !== 1.255.toFixed(2) || "1000000000000000128" !== (0xde0b6b3a7640080).toFixed(0)), toFixedHelpers = {
  24964.             base: 1e7,
  24965.             size: 6,
  24966.             data: [ 0, 0, 0, 0, 0, 0 ],
  24967.             multiply: function(n, c) {
  24968.                 for (var i = -1, c2 = c; ++i < toFixedHelpers.size; ) {
  24969.                     c2 += n * toFixedHelpers.data[i];
  24970.                     toFixedHelpers.data[i] = c2 % toFixedHelpers.base;
  24971.                     c2 = Math.floor(c2 / toFixedHelpers.base);
  24972.                 }
  24973.             },
  24974.             divide: function(n) {
  24975.                 for (var i = toFixedHelpers.size, c = 0; --i >= 0; ) {
  24976.                     c += toFixedHelpers.data[i];
  24977.                     toFixedHelpers.data[i] = Math.floor(c / n);
  24978.                     c = c % n * toFixedHelpers.base;
  24979.                 }
  24980.             },
  24981.             numToString: function() {
  24982.                 for (var i = toFixedHelpers.size, s = ""; --i >= 0; ) if ("" !== s || 0 === i || 0 !== toFixedHelpers.data[i]) {
  24983.                     var t = $String(toFixedHelpers.data[i]);
  24984.                     if ("" === s) s = t; else s += strSlice("0000000", 0, 7 - t.length) + t;
  24985.                 }
  24986.                 return s;
  24987.             },
  24988.             pow: function pow(x, n, acc) {
  24989.                 return 0 === n ? acc : n % 2 == 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
  24990.             },
  24991.             log: function(x) {
  24992.                 for (var n = 0, x2 = x; x2 >= 4096; ) {
  24993.                     n += 12;
  24994.                     x2 /= 4096;
  24995.                 }
  24996.                 for (;x2 >= 2; ) {
  24997.                     n += 1;
  24998.                     x2 /= 2;
  24999.                 }
  25000.                 return n;
  25001.             }
  25002.         };
  25003.         defineProperties(NumberPrototype, {
  25004.             toFixed: function(fractionDigits) {
  25005.                 var f, x, s, m, e, z, j, k;
  25006.                 f = $Number(fractionDigits);
  25007.                 f = isActualNaN(f) ? 0 : Math.floor(f);
  25008.                 if (f < 0 || f > 20) throw new RangeError("Number.toFixed called with invalid number of decimals");
  25009.                 x = $Number(this);
  25010.                 if (isActualNaN(x)) return "NaN";
  25011.                 if (x <= -1e21 || x >= 1e21) return $String(x);
  25012.                 s = "";
  25013.                 if (x < 0) {
  25014.                     s = "-";
  25015.                     x = -x;
  25016.                 }
  25017.                 m = "0";
  25018.                 if (x > 1e-21) {
  25019.                     e = toFixedHelpers.log(x * toFixedHelpers.pow(2, 69, 1)) - 69;
  25020.                     z = e < 0 ? x * toFixedHelpers.pow(2, -e, 1) : x / toFixedHelpers.pow(2, e, 1);
  25021.                     z *= 4503599627370496;
  25022.                     e = 52 - e;
  25023.                     if (e > 0) {
  25024.                         toFixedHelpers.multiply(0, z);
  25025.                         j = f;
  25026.                         for (;j >= 7; ) {
  25027.                             toFixedHelpers.multiply(1e7, 0);
  25028.                             j -= 7;
  25029.                         }
  25030.                         toFixedHelpers.multiply(toFixedHelpers.pow(10, j, 1), 0);
  25031.                         j = e - 1;
  25032.                         for (;j >= 23; ) {
  25033.                             toFixedHelpers.divide(1 << 23);
  25034.                             j -= 23;
  25035.                         }
  25036.                         toFixedHelpers.divide(1 << j);
  25037.                         toFixedHelpers.multiply(1, 1);
  25038.                         toFixedHelpers.divide(2);
  25039.                         m = toFixedHelpers.numToString();
  25040.                     } else {
  25041.                         toFixedHelpers.multiply(0, z);
  25042.                         toFixedHelpers.multiply(1 << -e, 0);
  25043.                         m = toFixedHelpers.numToString() + strSlice("0.00000000000000000000", 2, 2 + f);
  25044.                     }
  25045.                 }
  25046.                 if (f > 0) {
  25047.                     k = m.length;
  25048.                     if (k <= f) m = s + strSlice("0.0000000000000000000", 0, f - k + 2) + m; else m = s + strSlice(m, 0, k - f) + "." + strSlice(m, k - f);
  25049.                 } else m = s + m;
  25050.                 return m;
  25051.             }
  25052.         }, hasToFixedBugs);
  25053.         var hasToPrecisionUndefinedBug = function() {
  25054.             try {
  25055.                 return "1" === 1..toPrecision(undefined);
  25056.             } catch (e) {
  25057.                 return !0;
  25058.             }
  25059.         }(), originalToPrecision = NumberPrototype.toPrecision;
  25060.         defineProperties(NumberPrototype, {
  25061.             toPrecision: function(precision) {
  25062.                 return void 0 === precision ? originalToPrecision.call(this) : originalToPrecision.call(this, precision);
  25063.             }
  25064.         }, hasToPrecisionUndefinedBug);
  25065.         if (2 !== "ab".split(/(?:ab)*/).length || 4 !== ".".split(/(.?)(.?)/).length || "t" === "tesst".split(/(s)*/)[1] || 4 !== "test".split(/(?:)/, -1).length || "".split(/.?/).length || ".".split(/()()/).length > 1) !function() {
  25066.             var compliantExecNpcg = "undefined" == typeof /()??/.exec("")[1], maxSafe32BitInt = Math.pow(2, 32) - 1;
  25067.             StringPrototype.split = function(separator, limit) {
  25068.                 var string = String(this);
  25069.                 if (void 0 === separator && 0 === limit) return [];
  25070.                 if (!isRegex(separator)) return strSplit(this, separator, limit);
  25071.                 var separator2, match, lastIndex, lastLength, output = [], flags = (separator.ignoreCase ? "i" : "") + (separator.multiline ? "m" : "") + (separator.unicode ? "u" : "") + (separator.sticky ? "y" : ""), lastLastIndex = 0, separatorCopy = new RegExp(separator.source, flags + "g");
  25072.                 if (!compliantExecNpcg) separator2 = new RegExp("^" + separatorCopy.source + "$(?!\\s)", flags);
  25073.                 var splitLimit = void 0 === limit ? maxSafe32BitInt : ES.ToUint32(limit);
  25074.                 match = separatorCopy.exec(string);
  25075.                 for (;match; ) {
  25076.                     lastIndex = match.index + match[0].length;
  25077.                     if (lastIndex > lastLastIndex) {
  25078.                         pushCall(output, strSlice(string, lastLastIndex, match.index));
  25079.                         if (!compliantExecNpcg && match.length > 1) match[0].replace(separator2, function() {
  25080.                             for (var i = 1; i < arguments.length - 2; i++) if ("undefined" == typeof arguments[i]) match[i] = void 0;
  25081.                         });
  25082.                         if (match.length > 1 && match.index < string.length) array_push.apply(output, arraySlice(match, 1));
  25083.                         lastLength = match[0].length;
  25084.                         lastLastIndex = lastIndex;
  25085.                         if (output.length >= splitLimit) break;
  25086.                     }
  25087.                     if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++;
  25088.                     match = separatorCopy.exec(string);
  25089.                 }
  25090.                 if (lastLastIndex === string.length) {
  25091.                     if (lastLength || !separatorCopy.test("")) pushCall(output, "");
  25092.                 } else pushCall(output, strSlice(string, lastLastIndex));
  25093.                 return output.length > splitLimit ? arraySlice(output, 0, splitLimit) : output;
  25094.             };
  25095.         }(); else if ("0".split(void 0, 0).length) StringPrototype.split = function(separator, limit) {
  25096.             if (void 0 === separator && 0 === limit) return []; else return strSplit(this, separator, limit);
  25097.         };
  25098.         var str_replace = StringPrototype.replace;
  25099.         if (!function() {
  25100.             var groups = [];
  25101.             "x".replace(/x(.)?/g, function(match, group) {
  25102.                 pushCall(groups, group);
  25103.             });
  25104.             return 1 === groups.length && "undefined" == typeof groups[0];
  25105.         }()) StringPrototype.replace = function(searchValue, replaceValue) {
  25106.             var isFn = isCallable(replaceValue), hasCapturingGroups = isRegex(searchValue) && /\)[*?]/.test(searchValue.source);
  25107.             if (!isFn || !hasCapturingGroups) return str_replace.call(this, searchValue, replaceValue); else {
  25108.                 var wrappedReplaceValue = function(match) {
  25109.                     var length = arguments.length, originalLastIndex = searchValue.lastIndex;
  25110.                     searchValue.lastIndex = 0;
  25111.                     var args = searchValue.exec(match) || [];
  25112.                     searchValue.lastIndex = originalLastIndex;
  25113.                     pushCall(args, arguments[length - 2], arguments[length - 1]);
  25114.                     return replaceValue.apply(this, args);
  25115.                 };
  25116.                 return str_replace.call(this, searchValue, wrappedReplaceValue);
  25117.             }
  25118.         };
  25119.         var string_substr = StringPrototype.substr, hasNegativeSubstrBug = "".substr && "b" !== "0b".substr(-1);
  25120.         defineProperties(StringPrototype, {
  25121.             substr: function(start, length) {
  25122.                 var normalizedStart = start;
  25123.                 if (start < 0) normalizedStart = max(this.length + start, 0);
  25124.                 return string_substr.call(this, normalizedStart, length);
  25125.             }
  25126.         }, hasNegativeSubstrBug);
  25127.         var ws = "\t\n\x0B\f\r   ᠎              \u2028\u2029\ufeff", zeroWidth = "​", wsRegexChars = "[" + ws + "]", trimBeginRegexp = new RegExp("^" + wsRegexChars + wsRegexChars + "*"), trimEndRegexp = new RegExp(wsRegexChars + wsRegexChars + "*$"), hasTrimWhitespaceBug = StringPrototype.trim && (ws.trim() || !zeroWidth.trim());
  25128.         defineProperties(StringPrototype, {
  25129.             trim: function() {
  25130.                 if (void 0 === this || null === this) throw new TypeError("can't convert " + this + " to object");
  25131.                 return $String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
  25132.             }
  25133.         }, hasTrimWhitespaceBug);
  25134.         var trim = call.bind(String.prototype.trim), hasLastIndexBug = StringPrototype.lastIndexOf && -1 !== "abcあい".lastIndexOf("あい", 2);
  25135.         defineProperties(StringPrototype, {
  25136.             lastIndexOf: function(searchString) {
  25137.                 if (void 0 === this || null === this) throw new TypeError("can't convert " + this + " to object");
  25138.                 for (var S = $String(this), searchStr = $String(searchString), numPos = arguments.length > 1 ? $Number(arguments[1]) : NaN, pos = isActualNaN(numPos) ? Infinity : ES.ToInteger(numPos), start = min(max(pos, 0), S.length), searchLen = searchStr.length, k = start + searchLen; k > 0; ) {
  25139.                     k = max(0, k - searchLen);
  25140.                     var index = strIndexOf(strSlice(S, k, start + searchLen), searchStr);
  25141.                     if (-1 !== index) return k + index;
  25142.                 }
  25143.                 return -1;
  25144.             }
  25145.         }, hasLastIndexBug);
  25146.         var originalLastIndexOf = StringPrototype.lastIndexOf;
  25147.         defineProperties(StringPrototype, {
  25148.             lastIndexOf: function(searchString) {
  25149.                 return originalLastIndexOf.apply(this, arguments);
  25150.             }
  25151.         }, 1 !== StringPrototype.lastIndexOf.length);
  25152.         if (8 !== parseInt(ws + "08") || 22 !== parseInt(ws + "0x16")) parseInt = function(origParseInt) {
  25153.             var hexRegex = /^[\-+]?0[xX]/;
  25154.             return function(str, radix) {
  25155.                 var string = trim(String(str)), defaultedRadix = $Number(radix) || (hexRegex.test(string) ? 16 : 10);
  25156.                 return origParseInt(string, defaultedRadix);
  25157.             };
  25158.         }(parseInt);
  25159.         if (1 / parseFloat("-0") != -Infinity) parseFloat = function(origParseFloat) {
  25160.             return function(string) {
  25161.                 var inputString = trim(String(string)), result = origParseFloat(inputString);
  25162.                 return 0 === result && "-" === strSlice(inputString, 0, 1) ? -0 : result;
  25163.             };
  25164.         }(parseFloat);
  25165.         if ("RangeError: test" !== String(new RangeError("test"))) {
  25166.             var errorToStringShim = function() {
  25167.                 if (void 0 === this || null === this) throw new TypeError("can't convert " + this + " to object");
  25168.                 var name = this.name;
  25169.                 if (void 0 === name) name = "Error"; else if ("string" != typeof name) name = $String(name);
  25170.                 var msg = this.message;
  25171.                 if (void 0 === msg) msg = ""; else if ("string" != typeof msg) msg = $String(msg);
  25172.                 if (!name) return msg;
  25173.                 if (!msg) return name; else return name + ": " + msg;
  25174.             };
  25175.             Error.prototype.toString = errorToStringShim;
  25176.         }
  25177.         if (supportsDescriptors) {
  25178.             var ensureNonEnumerable = function(obj, prop) {
  25179.                 if (isEnum(obj, prop)) {
  25180.                     var desc = Object.getOwnPropertyDescriptor(obj, prop);
  25181.                     if (desc.configurable) {
  25182.                         desc.enumerable = !1;
  25183.                         Object.defineProperty(obj, prop, desc);
  25184.                     }
  25185.                 }
  25186.             };
  25187.             ensureNonEnumerable(Error.prototype, "message");
  25188.             if ("" !== Error.prototype.message) Error.prototype.message = "";
  25189.             ensureNonEnumerable(Error.prototype, "name");
  25190.         }
  25191.         if ("/a/gim" !== String(/a/gim)) {
  25192.             var regexToString = function() {
  25193.                 var str = "/" + this.source + "/";
  25194.                 if (this.global) str += "g";
  25195.                 if (this.ignoreCase) str += "i";
  25196.                 if (this.multiline) str += "m";
  25197.                 return str;
  25198.             };
  25199.             RegExp.prototype.toString = regexToString;
  25200.         }
  25201.     });
  25202. }, function(module, exports, __webpack_require__) {
  25203.     (function(module, global) {
  25204.         var __WEBPACK_AMD_DEFINE_RESULT__;
  25205.         (function() {
  25206.             function runInContext(context, exports) {
  25207.                 function has(name) {
  25208.                     if (has[name] !== undef) return has[name];
  25209.                     var isSupported;
  25210.                     if ("bug-string-char-index" == name) isSupported = "a" != "a"[0]; else if ("json" == name) isSupported = has("json-stringify") && has("json-parse"); else {
  25211.                         var value, serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';
  25212.                         if ("json-stringify" == name) {
  25213.                             var stringify = exports.stringify, stringifySupported = "function" == typeof stringify && isExtended;
  25214.                             if (stringifySupported) {
  25215.                                 (value = function() {
  25216.                                     return 1;
  25217.                                 }).toJSON = value;
  25218.                                 try {
  25219.                                     stringifySupported = "0" === stringify(0) && "0" === stringify(new Number()) && '""' == stringify(new String()) && stringify(getClass) === undef && stringify(undef) === undef && stringify() === undef && "1" === stringify(value) && "[1]" == stringify([ value ]) && "[null]" == stringify([ undef ]) && "null" == stringify(null) && "[null,null,null]" == stringify([ undef, getClass, null ]) && stringify({
  25220.                                         a: [ value, !0, !1, null, "\0\b\n\f\r\t" ]
  25221.                                     }) == serialized && "1" === stringify(null, value) && "[\n 1,\n 2\n]" == stringify([ 1, 2 ], null, 1) && '"-271821-04-20T00:00:00.000Z"' == stringify(new Date(-864e13)) && '"+275760-09-13T00:00:00.000Z"' == stringify(new Date(864e13)) && '"-000001-01-01T00:00:00.000Z"' == stringify(new Date(-621987552e5)) && '"1969-12-31T23:59:59.999Z"' == stringify(new Date(-1));
  25222.                                 } catch (exception) {
  25223.                                     stringifySupported = !1;
  25224.                                 }
  25225.                             }
  25226.                             isSupported = stringifySupported;
  25227.                         }
  25228.                         if ("json-parse" == name) {
  25229.                             var parse = exports.parse;
  25230.                             if ("function" == typeof parse) try {
  25231.                                 if (0 === parse("0") && !parse(!1)) {
  25232.                                     value = parse(serialized);
  25233.                                     var parseSupported = 5 == value.a.length && 1 === value.a[0];
  25234.                                     if (parseSupported) {
  25235.                                         try {
  25236.                                             parseSupported = !parse('"\t"');
  25237.                                         } catch (exception) {}
  25238.                                         if (parseSupported) try {
  25239.                                             parseSupported = 1 !== parse("01");
  25240.                                         } catch (exception) {}
  25241.                                         if (parseSupported) try {
  25242.                                             parseSupported = 1 !== parse("1.");
  25243.                                         } catch (exception) {}
  25244.                                     }
  25245.                                 }
  25246.                             } catch (exception) {
  25247.                                 parseSupported = !1;
  25248.                             }
  25249.                             isSupported = parseSupported;
  25250.                         }
  25251.                     }
  25252.                     return has[name] = !!isSupported;
  25253.                 }
  25254.                 context || (context = root.Object());
  25255.                 exports || (exports = root.Object());
  25256.                 var Number = context.Number || root.Number, String = context.String || root.String, Object = context.Object || root.Object, Date = context.Date || root.Date, SyntaxError = context.SyntaxError || root.SyntaxError, TypeError = context.TypeError || root.TypeError, Math = context.Math || root.Math, nativeJSON = context.JSON || root.JSON;
  25257.                 if ("object" == typeof nativeJSON && nativeJSON) {
  25258.                     exports.stringify = nativeJSON.stringify;
  25259.                     exports.parse = nativeJSON.parse;
  25260.                 }
  25261.                 var isProperty, forEach, undef, objectProto = Object.prototype, getClass = objectProto.toString, isExtended = new Date(-0xc782b5b800cec);
  25262.                 try {
  25263.                     isExtended = -109252 == isExtended.getUTCFullYear() && 0 === isExtended.getUTCMonth() && 1 === isExtended.getUTCDate() && 10 == isExtended.getUTCHours() && 37 == isExtended.getUTCMinutes() && 6 == isExtended.getUTCSeconds() && 708 == isExtended.getUTCMilliseconds();
  25264.                 } catch (exception) {}
  25265.                 if (!has("json")) {
  25266.                     var charIndexBuggy = has("bug-string-char-index");
  25267.                     if (!isExtended) var floor = Math.floor, Months = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ], getDay = function(year, month) {
  25268.                         return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400);
  25269.                     };
  25270.                     if (!(isProperty = objectProto.hasOwnProperty)) isProperty = function(property) {
  25271.                         var constructor, members = {};
  25272.                         if ((members.__proto__ = null, members.__proto__ = {
  25273.                             toString: 1
  25274.                         }, members).toString != getClass) isProperty = function(property) {
  25275.                             var original = this.__proto__, result = property in (this.__proto__ = null, this);
  25276.                             this.__proto__ = original;
  25277.                             return result;
  25278.                         }; else {
  25279.                             constructor = members.constructor;
  25280.                             isProperty = function(property) {
  25281.                                 var parent = (this.constructor || constructor).prototype;
  25282.                                 return property in this && !(property in parent && this[property] === parent[property]);
  25283.                             };
  25284.                         }
  25285.                         members = null;
  25286.                         return isProperty.call(this, property);
  25287.                     };
  25288.                     forEach = function(object, callback) {
  25289.                         var Properties, members, property, size = 0;
  25290.                         (Properties = function() {
  25291.                             this.valueOf = 0;
  25292.                         }).prototype.valueOf = 0;
  25293.                         members = new Properties();
  25294.                         for (property in members) if (isProperty.call(members, property)) size++;
  25295.                         Properties = members = null;
  25296.                         if (!size) {
  25297.                             members = [ "valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor" ];
  25298.                             forEach = function(object, callback) {
  25299.                                 var property, length, isFunction = "[object Function]" == getClass.call(object), hasProperty = !isFunction && "function" != typeof object.constructor && objectTypes[typeof object.hasOwnProperty] && object.hasOwnProperty || isProperty;
  25300.                                 for (property in object) if ((!isFunction || "prototype" != property) && hasProperty.call(object, property)) callback(property);
  25301.                                 for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property)) ;
  25302.                             };
  25303.                         } else if (2 == size) forEach = function(object, callback) {
  25304.                             var property, members = {}, isFunction = "[object Function]" == getClass.call(object);
  25305.                             for (property in object) if ((!isFunction || "prototype" != property) && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) callback(property);
  25306.                         }; else forEach = function(object, callback) {
  25307.                             var property, isConstructor, isFunction = "[object Function]" == getClass.call(object);
  25308.                             for (property in object) if ((!isFunction || "prototype" != property) && isProperty.call(object, property) && !(isConstructor = "constructor" === property)) callback(property);
  25309.                             if (isConstructor || isProperty.call(object, property = "constructor")) callback(property);
  25310.                         };
  25311.                         return forEach(object, callback);
  25312.                     };
  25313.                     if (!has("json-stringify")) {
  25314.                         var Escapes = {
  25315.                             92: "\\\\",
  25316.                             34: '\\"',
  25317.                             8: "\\b",
  25318.                             12: "\\f",
  25319.                             10: "\\n",
  25320.                             13: "\\r",
  25321.                             9: "\\t"
  25322.                         }, toPaddedString = function(width, value) {
  25323.                             return ("000000" + (value || 0)).slice(-width);
  25324.                         }, quote = function(value) {
  25325.                             for (var result = '"', index = 0, length = value.length, useCharIndex = !charIndexBuggy || length > 10, symbols = useCharIndex && (charIndexBuggy ? value.split("") : value); index < length; index++) {
  25326.                                 var charCode = value.charCodeAt(index);
  25327.                                 switch (charCode) {
  25328.                                   case 8:
  25329.                                   case 9:
  25330.                                   case 10:
  25331.                                   case 12:
  25332.                                   case 13:
  25333.                                   case 34:
  25334.                                   case 92:
  25335.                                     result += Escapes[charCode];
  25336.                                     break;
  25337.  
  25338.                                   default:
  25339.                                     if (charCode < 32) {
  25340.                                         result += "\\u00" + toPaddedString(2, charCode.toString(16));
  25341.                                         break;
  25342.                                     }
  25343.                                     result += useCharIndex ? symbols[index] : value.charAt(index);
  25344.                                 }
  25345.                             }
  25346.                             return result + '"';
  25347.                         }, serialize = function(property, object, callback, properties, whitespace, indentation, stack) {
  25348.                             var value, className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, result;
  25349.                             try {
  25350.                                 value = object[property];
  25351.                             } catch (exception) {}
  25352.                             if ("object" == typeof value && value) {
  25353.                                 className = getClass.call(value);
  25354.                                 if ("[object Date]" == className && !isProperty.call(value, "toJSON")) if (value > -1 / 0 && value < 1 / 0) {
  25355.                                     if (getDay) {
  25356.                                         date = floor(value / 864e5);
  25357.                                         for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++) ;
  25358.                                         for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++) ;
  25359.                                         date = 1 + date - getDay(year, month);
  25360.                                         time = (value % 864e5 + 864e5) % 864e5;
  25361.                                         hours = floor(time / 36e5) % 24;
  25362.                                         minutes = floor(time / 6e4) % 60;
  25363.                                         seconds = floor(time / 1e3) % 60;
  25364.                                         milliseconds = time % 1e3;
  25365.                                     } else {
  25366.                                         year = value.getUTCFullYear();
  25367.                                         month = value.getUTCMonth();
  25368.                                         date = value.getUTCDate();
  25369.                                         hours = value.getUTCHours();
  25370.                                         minutes = value.getUTCMinutes();
  25371.                                         seconds = value.getUTCSeconds();
  25372.                                         milliseconds = value.getUTCMilliseconds();
  25373.                                     }
  25374.                                     value = (year <= 0 || year >= 1e4 ? (year < 0 ? "-" : "+") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) + "-" + toPaddedString(2, month + 1) + "-" + toPaddedString(2, date) + "T" + toPaddedString(2, hours) + ":" + toPaddedString(2, minutes) + ":" + toPaddedString(2, seconds) + "." + toPaddedString(3, milliseconds) + "Z";
  25375.                                 } else value = null; else if ("function" == typeof value.toJSON && ("[object Number]" != className && "[object String]" != className && "[object Array]" != className || isProperty.call(value, "toJSON"))) value = value.toJSON(property);
  25376.                             }
  25377.                             if (callback) value = callback.call(object, property, value);
  25378.                             if (null === value) return "null";
  25379.                             className = getClass.call(value);
  25380.                             if ("[object Boolean]" == className) return "" + value; else if ("[object Number]" == className) return value > -1 / 0 && value < 1 / 0 ? "" + value : "null"; else if ("[object String]" == className) return quote("" + value);
  25381.                             if ("object" == typeof value) {
  25382.                                 for (length = stack.length; length--; ) if (stack[length] === value) throw TypeError();
  25383.                                 stack.push(value);
  25384.                                 results = [];
  25385.                                 prefix = indentation;
  25386.                                 indentation += whitespace;
  25387.                                 if ("[object Array]" == className) {
  25388.                                     for (index = 0, length = value.length; index < length; index++) {
  25389.                                         element = serialize(index, value, callback, properties, whitespace, indentation, stack);
  25390.                                         results.push(element === undef ? "null" : element);
  25391.                                     }
  25392.                                     result = results.length ? whitespace ? "[\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "]" : "[" + results.join(",") + "]" : "[]";
  25393.                                 } else {
  25394.                                     forEach(properties || value, function(property) {
  25395.                                         var element = serialize(property, value, callback, properties, whitespace, indentation, stack);
  25396.                                         if (element !== undef) results.push(quote(property) + ":" + (whitespace ? " " : "") + element);
  25397.                                     });
  25398.                                     result = results.length ? whitespace ? "{\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "}" : "{" + results.join(",") + "}" : "{}";
  25399.                                 }
  25400.                                 stack.pop();
  25401.                                 return result;
  25402.                             }
  25403.                         };
  25404.                         exports.stringify = function(source, filter, width) {
  25405.                             var whitespace, callback, properties, className;
  25406.                             if (objectTypes[typeof filter] && filter) if ("[object Function]" == (className = getClass.call(filter))) callback = filter; else if ("[object Array]" == className) {
  25407.                                 properties = {};
  25408.                                 for (var value, index = 0, length = filter.length; index < length; value = filter[index++],
  25409.                                 ("[object String]" == (className = getClass.call(value)) || "[object Number]" == className) && (properties[value] = 1)) ;
  25410.                             }
  25411.                             if (width) if ("[object Number]" == (className = getClass.call(width))) {
  25412.                                 if ((width -= width % 1) > 0) for (whitespace = "", width > 10 && (width = 10); whitespace.length < width; whitespace += " ") ;
  25413.                             } else if ("[object String]" == className) whitespace = width.length <= 10 ? width : width.slice(0, 10);
  25414.                             return serialize("", (value = {}, value[""] = source, value), callback, properties, whitespace, "", []);
  25415.                         };
  25416.                     }
  25417.                     if (!has("json-parse")) {
  25418.                         var Index, Source, fromCharCode = String.fromCharCode, Unescapes = {
  25419.                             92: "\\",
  25420.                             34: '"',
  25421.                             47: "/",
  25422.                             98: "\b",
  25423.                             116: "\t",
  25424.                             110: "\n",
  25425.                             102: "\f",
  25426.                             114: "\r"
  25427.                         }, abort = function() {
  25428.                             Index = Source = null;
  25429.                             throw SyntaxError();
  25430.                         }, lex = function() {
  25431.                             for (var value, begin, position, isSigned, charCode, source = Source, length = source.length; Index < length; ) {
  25432.                                 charCode = source.charCodeAt(Index);
  25433.                                 switch (charCode) {
  25434.                                   case 9:
  25435.                                   case 10:
  25436.                                   case 13:
  25437.                                   case 32:
  25438.                                     Index++;
  25439.                                     break;
  25440.  
  25441.                                   case 123:
  25442.                                   case 125:
  25443.                                   case 91:
  25444.                                   case 93:
  25445.                                   case 58:
  25446.                                   case 44:
  25447.                                     value = charIndexBuggy ? source.charAt(Index) : source[Index];
  25448.                                     Index++;
  25449.                                     return value;
  25450.  
  25451.                                   case 34:
  25452.                                     for (value = "@", Index++; Index < length; ) {
  25453.                                         charCode = source.charCodeAt(Index);
  25454.                                         if (charCode < 32) abort(); else if (92 == charCode) {
  25455.                                             charCode = source.charCodeAt(++Index);
  25456.                                             switch (charCode) {
  25457.                                               case 92:
  25458.                                               case 34:
  25459.                                               case 47:
  25460.                                               case 98:
  25461.                                               case 116:
  25462.                                               case 110:
  25463.                                               case 102:
  25464.                                               case 114:
  25465.                                                 value += Unescapes[charCode];
  25466.                                                 Index++;
  25467.                                                 break;
  25468.  
  25469.                                               case 117:
  25470.                                                 begin = ++Index;
  25471.                                                 for (position = Index + 4; Index < position; Index++) {
  25472.                                                     charCode = source.charCodeAt(Index);
  25473.                                                     if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) abort();
  25474.                                                 }
  25475.                                                 value += fromCharCode("0x" + source.slice(begin, Index));
  25476.                                                 break;
  25477.  
  25478.                                               default:
  25479.                                                 abort();
  25480.                                             }
  25481.                                         } else {
  25482.                                             if (34 == charCode) break;
  25483.                                             charCode = source.charCodeAt(Index);
  25484.                                             begin = Index;
  25485.                                             for (;charCode >= 32 && 92 != charCode && 34 != charCode; ) charCode = source.charCodeAt(++Index);
  25486.                                             value += source.slice(begin, Index);
  25487.                                         }
  25488.                                     }
  25489.                                     if (34 == source.charCodeAt(Index)) {
  25490.                                         Index++;
  25491.                                         return value;
  25492.                                     }
  25493.                                     abort();
  25494.  
  25495.                                   default:
  25496.                                     begin = Index;
  25497.                                     if (45 == charCode) {
  25498.                                         isSigned = !0;
  25499.                                         charCode = source.charCodeAt(++Index);
  25500.                                     }
  25501.                                     if (charCode >= 48 && charCode <= 57) {
  25502.                                         if (48 == charCode && (charCode = source.charCodeAt(Index + 1)) >= 48 && charCode <= 57) abort();
  25503.                                         isSigned = !1;
  25504.                                         for (;Index < length && (charCode = source.charCodeAt(Index)) >= 48 && charCode <= 57; Index++) ;
  25505.                                         if (46 == source.charCodeAt(Index)) {
  25506.                                             position = ++Index;
  25507.                                             for (;position < length && (charCode = source.charCodeAt(position)) >= 48 && charCode <= 57; position++) ;
  25508.                                             if (position == Index) abort();
  25509.                                             Index = position;
  25510.                                         }
  25511.                                         charCode = source.charCodeAt(Index);
  25512.                                         if (101 == charCode || 69 == charCode) {
  25513.                                             charCode = source.charCodeAt(++Index);
  25514.                                             if (43 == charCode || 45 == charCode) Index++;
  25515.                                             for (position = Index; position < length && (charCode = source.charCodeAt(position)) >= 48 && charCode <= 57; position++) ;
  25516.                                             if (position == Index) abort();
  25517.                                             Index = position;
  25518.                                         }
  25519.                                         return +source.slice(begin, Index);
  25520.                                     }
  25521.                                     if (isSigned) abort();
  25522.                                     if ("true" == source.slice(Index, Index + 4)) {
  25523.                                         Index += 4;
  25524.                                         return !0;
  25525.                                     } else if ("false" == source.slice(Index, Index + 5)) {
  25526.                                         Index += 5;
  25527.                                         return !1;
  25528.                                     } else if ("null" == source.slice(Index, Index + 4)) {
  25529.                                         Index += 4;
  25530.                                         return null;
  25531.                                     }
  25532.                                     abort();
  25533.                                 }
  25534.                             }
  25535.                             return "$";
  25536.                         }, get = function(value) {
  25537.                             var results, hasMembers;
  25538.                             if ("$" == value) abort();
  25539.                             if ("string" == typeof value) {
  25540.                                 if ("@" == (charIndexBuggy ? value.charAt(0) : value[0])) return value.slice(1);
  25541.                                 if ("[" == value) {
  25542.                                     results = [];
  25543.                                     for (;;hasMembers || (hasMembers = !0)) {
  25544.                                         value = lex();
  25545.                                         if ("]" == value) break;
  25546.                                         if (hasMembers) if ("," == value) {
  25547.                                             value = lex();
  25548.                                             if ("]" == value) abort();
  25549.                                         } else abort();
  25550.                                         if ("," == value) abort();
  25551.                                         results.push(get(value));
  25552.                                     }
  25553.                                     return results;
  25554.                                 } else if ("{" == value) {
  25555.                                     results = {};
  25556.                                     for (;;hasMembers || (hasMembers = !0)) {
  25557.                                         value = lex();
  25558.                                         if ("}" == value) break;
  25559.                                         if (hasMembers) if ("," == value) {
  25560.                                             value = lex();
  25561.                                             if ("}" == value) abort();
  25562.                                         } else abort();
  25563.                                         if ("," == value || "string" != typeof value || "@" != (charIndexBuggy ? value.charAt(0) : value[0]) || ":" != lex()) abort();
  25564.                                         results[value.slice(1)] = get(lex());
  25565.                                     }
  25566.                                     return results;
  25567.                                 }
  25568.                                 abort();
  25569.                             }
  25570.                             return value;
  25571.                         }, update = function(source, property, callback) {
  25572.                             var element = walk(source, property, callback);
  25573.                             if (element === undef) delete source[property]; else source[property] = element;
  25574.                         }, walk = function(source, property, callback) {
  25575.                             var length, value = source[property];
  25576.                             if ("object" == typeof value && value) if ("[object Array]" == getClass.call(value)) for (length = value.length; length--; ) update(value, length, callback); else forEach(value, function(property) {
  25577.                                 update(value, property, callback);
  25578.                             });
  25579.                             return callback.call(source, property, value);
  25580.                         };
  25581.                         exports.parse = function(source, callback) {
  25582.                             var result, value;
  25583.                             Index = 0;
  25584.                             Source = "" + source;
  25585.                             result = get(lex());
  25586.                             if ("$" != lex()) abort();
  25587.                             Index = Source = null;
  25588.                             return callback && "[object Function]" == getClass.call(callback) ? walk((value = {},
  25589.                             value[""] = result, value), "", callback) : result;
  25590.                         };
  25591.                     }
  25592.                 }
  25593.                 exports.runInContext = runInContext;
  25594.                 return exports;
  25595.             }
  25596.             var isLoader = __webpack_require__(807), objectTypes = {
  25597.                 "function": !0,
  25598.                 object: !0
  25599.             }, freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports, root = objectTypes[typeof window] && window || this, freeGlobal = freeExports && objectTypes[typeof module] && module && !module.nodeType && "object" == typeof global && global;
  25600.             if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) root = freeGlobal;
  25601.             if (freeExports && !isLoader) runInContext(root, freeExports); else {
  25602.                 var nativeJSON = root.JSON, previousJSON = root.JSON3, isRestored = !1, JSON3 = runInContext(root, root.JSON3 = {
  25603.                     noConflict: function() {
  25604.                         if (!isRestored) {
  25605.                             isRestored = !0;
  25606.                             root.JSON = nativeJSON;
  25607.                             root.JSON3 = previousJSON;
  25608.                             nativeJSON = previousJSON = null;
  25609.                         }
  25610.                         return JSON3;
  25611.                     }
  25612.                 });
  25613.                 root.JSON = {
  25614.                     parse: JSON3.parse,
  25615.                     stringify: JSON3.stringify
  25616.                 };
  25617.             }
  25618.             if (isLoader) (__WEBPACK_AMD_DEFINE_RESULT__ = function() {
  25619.                 return JSON3;
  25620.             }.call(exports, __webpack_require__, exports, module)) !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);
  25621.         }).call(this);
  25622.     }).call(exports, __webpack_require__(234)(module), __webpack_require__(79));
  25623. }, function(module, exports) {
  25624.     function compact(array) {
  25625.         for (var index = -1, length = array ? array.length : 0, resIndex = -1, result = []; ++index < length; ) {
  25626.             var value = array[index];
  25627.             if (value) result[++resIndex] = value;
  25628.         }
  25629.         return result;
  25630.     }
  25631.     module.exports = compact;
  25632. }, function(module, exports, __webpack_require__) {
  25633.     var createAggregator = __webpack_require__(549), partition = createAggregator(function(result, value, key) {
  25634.         result[key ? 0 : 1].push(value);
  25635.     }, function() {
  25636.         return [ [], [] ];
  25637.     });
  25638.     module.exports = partition;
  25639. }, function(module, exports, __webpack_require__) {
  25640.     var arrayReduce = __webpack_require__(524), baseEach = __webpack_require__(160), createReduce = __webpack_require__(555), reduce = createReduce(arrayReduce, baseEach);
  25641.     module.exports = reduce;
  25642. }, function(module, exports, __webpack_require__) {
  25643.     function sortBy(collection, iteratee, thisArg) {
  25644.         if (null == collection) return [];
  25645.         if (thisArg && isIterateeCall(collection, iteratee, thisArg)) iteratee = undefined;
  25646.         var index = -1;
  25647.         iteratee = baseCallback(iteratee, thisArg, 3);
  25648.         var result = baseMap(collection, function(value, key, collection) {
  25649.             return {
  25650.                 criteria: iteratee(value, key, collection),
  25651.                 index: ++index,
  25652.                 value: value
  25653.             };
  25654.         });
  25655.         return baseSortBy(result, compareAscending);
  25656.     }
  25657.     var baseCallback = __webpack_require__(139), baseMap = __webpack_require__(533), baseSortBy = __webpack_require__(541), compareAscending = __webpack_require__(548), isIterateeCall = __webpack_require__(142);
  25658.     module.exports = sortBy;
  25659. }, function(module, exports, __webpack_require__) {
  25660.     var getNative = __webpack_require__(141), nativeNow = getNative(Date, "now"), now = nativeNow || function() {
  25661.         return new Date().getTime();
  25662.     };
  25663.     module.exports = now;
  25664. }, function(module, exports, __webpack_require__) {
  25665.     function throttle(func, wait, options) {
  25666.         var leading = !0, trailing = !0;
  25667.         if ("function" != typeof func) throw new TypeError(FUNC_ERROR_TEXT);
  25668.         if (!1 === options) leading = !1; else if (isObject(options)) {
  25669.             leading = "leading" in options ? !!options.leading : leading;
  25670.             trailing = "trailing" in options ? !!options.trailing : trailing;
  25671.         }
  25672.         return debounce(func, wait, {
  25673.             leading: leading,
  25674.             maxWait: +wait,
  25675.             trailing: trailing
  25676.         });
  25677.     }
  25678.     var debounce = __webpack_require__(265), isObject = __webpack_require__(39), FUNC_ERROR_TEXT = "Expected a function";
  25679.     module.exports = throttle;
  25680. }, function(module, exports, __webpack_require__) {
  25681.     (function(global) {
  25682.         function SetCache(values) {
  25683.             var length = values ? values.length : 0;
  25684.             this.data = {
  25685.                 hash: nativeCreate(null),
  25686.                 set: new Set()
  25687.             };
  25688.             for (;length--; ) this.push(values[length]);
  25689.         }
  25690.         var cachePush = __webpack_require__(547), getNative = __webpack_require__(141), Set = getNative(global, "Set"), nativeCreate = getNative(Object, "create");
  25691.         SetCache.prototype.push = cachePush;
  25692.         module.exports = SetCache;
  25693.     }).call(exports, __webpack_require__(79));
  25694. }, function(module, exports) {
  25695.     function arrayExtremum(array, iteratee, comparator, exValue) {
  25696.         for (var index = -1, length = array.length, computed = exValue, result = computed; ++index < length; ) {
  25697.             var value = array[index], current = +iteratee(value);
  25698.             if (comparator(current, computed)) {
  25699.                 computed = current;
  25700.                 result = value;
  25701.             }
  25702.         }
  25703.         return result;
  25704.     }
  25705.     module.exports = arrayExtremum;
  25706. }, function(module, exports) {
  25707.     function arrayPush(array, values) {
  25708.         for (var index = -1, length = values.length, offset = array.length; ++index < length; ) array[offset + index] = values[index];
  25709.         return array;
  25710.     }
  25711.     module.exports = arrayPush;
  25712. }, function(module, exports) {
  25713.     function arrayReduce(array, iteratee, accumulator, initFromArray) {
  25714.         var index = -1, length = array.length;
  25715.         if (initFromArray && length) accumulator = array[++index];
  25716.         for (;++index < length; ) accumulator = iteratee(accumulator, array[index], index, array);
  25717.         return accumulator;
  25718.     }
  25719.     module.exports = arrayReduce;
  25720. }, function(module, exports) {
  25721.     function arraySome(array, predicate) {
  25722.         for (var index = -1, length = array.length; ++index < length; ) if (predicate(array[index], index, array)) return !0;
  25723.         return !1;
  25724.     }
  25725.     module.exports = arraySome;
  25726. }, function(module, exports, __webpack_require__) {
  25727.     function baseAssign(object, source) {
  25728.         return null == source ? object : baseCopy(source, keys(source), object);
  25729.     }
  25730.     var baseCopy = __webpack_require__(270), keys = __webpack_require__(95);
  25731.     module.exports = baseAssign;
  25732. }, function(module, exports, __webpack_require__) {
  25733.     function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {
  25734.         var result;
  25735.         if (customizer) result = object ? customizer(value, key, object) : customizer(value);
  25736.         if (result !== undefined) return result;
  25737.         if (!isObject(value)) return value;
  25738.         var isArr = isArray(value);
  25739.         if (isArr) {
  25740.             result = initCloneArray(value);
  25741.             if (!isDeep) return arrayCopy(value, result);
  25742.         } else {
  25743.             var tag = objToString.call(value), isFunc = tag == funcTag;
  25744.             if (tag == objectTag || tag == argsTag || isFunc && !object) {
  25745.                 result = initCloneObject(isFunc ? {} : value);
  25746.                 if (!isDeep) return baseAssign(result, value);
  25747.             } else return cloneableTags[tag] ? initCloneByTag(value, tag, isDeep) : object ? value : {};
  25748.         }
  25749.         stackA || (stackA = []);
  25750.         stackB || (stackB = []);
  25751.         for (var length = stackA.length; length--; ) if (stackA[length] == value) return stackB[length];
  25752.         stackA.push(value);
  25753.         stackB.push(result);
  25754.         (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {
  25755.             result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);
  25756.         });
  25757.         return result;
  25758.     }
  25759.     var arrayCopy = __webpack_require__(268), arrayEach = __webpack_require__(269), baseAssign = __webpack_require__(526), baseForOwn = __webpack_require__(274), initCloneArray = __webpack_require__(561), initCloneByTag = __webpack_require__(562), initCloneObject = __webpack_require__(563), isArray = __webpack_require__(38), isObject = __webpack_require__(39), argsTag = "[object Arguments]", funcTag = "[object Function]", objectTag = "[object Object]", cloneableTags = {};
  25760.     cloneableTags[argsTag] = cloneableTags["[object Array]"] = cloneableTags["[object ArrayBuffer]"] = cloneableTags["[object Boolean]"] = cloneableTags["[object Date]"] = cloneableTags["[object Float32Array]"] = cloneableTags["[object Float64Array]"] = cloneableTags["[object Int8Array]"] = cloneableTags["[object Int16Array]"] = cloneableTags["[object Int32Array]"] = cloneableTags["[object Number]"] = cloneableTags[objectTag] = cloneableTags["[object RegExp]"] = cloneableTags["[object String]"] = cloneableTags["[object Uint8Array]"] = cloneableTags["[object Uint8ClampedArray]"] = cloneableTags["[object Uint16Array]"] = cloneableTags["[object Uint32Array]"] = !0;
  25761.     cloneableTags["[object Error]"] = cloneableTags[funcTag] = cloneableTags["[object Map]"] = cloneableTags["[object Set]"] = cloneableTags["[object WeakMap]"] = !1;
  25762.     var objectProto = Object.prototype, objToString = objectProto.toString;
  25763.     module.exports = baseClone;
  25764. }, function(module, exports) {
  25765.     function baseCompareAscending(value, other) {
  25766.         if (value !== other) {
  25767.             var valIsNull = null === value, valIsUndef = value === undefined, valIsReflexive = value === value, othIsNull = null === other, othIsUndef = other === undefined, othIsReflexive = other === other;
  25768.             if (value > other && !othIsNull || !valIsReflexive || valIsNull && !othIsUndef && othIsReflexive || valIsUndef && othIsReflexive) return 1;
  25769.             if (value < other && !valIsNull || !othIsReflexive || othIsNull && !valIsUndef && valIsReflexive || othIsUndef && valIsReflexive) return -1;
  25770.         }
  25771.         return 0;
  25772.     }
  25773.     module.exports = baseCompareAscending;
  25774. }, function(module, exports, __webpack_require__) {
  25775.     function baseExtremum(collection, iteratee, comparator, exValue) {
  25776.         var computed = exValue, result = computed;
  25777.         baseEach(collection, function(value, index, collection) {
  25778.             var current = +iteratee(value, index, collection);
  25779.             if (comparator(current, computed) || current === exValue && current === result) {
  25780.                 computed = current;
  25781.                 result = value;
  25782.             }
  25783.         });
  25784.         return result;
  25785.     }
  25786.     var baseEach = __webpack_require__(160);
  25787.     module.exports = baseExtremum;
  25788. }, function(module, exports, __webpack_require__) {
  25789.     function baseIndexOf(array, value, fromIndex) {
  25790.         if (value !== value) return indexOfNaN(array, fromIndex);
  25791.         for (var index = fromIndex - 1, length = array.length; ++index < length; ) if (array[index] === value) return index;
  25792.         return -1;
  25793.     }
  25794.     var indexOfNaN = __webpack_require__(560);
  25795.     module.exports = baseIndexOf;
  25796. }, function(module, exports, __webpack_require__) {
  25797.     function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
  25798.         var objIsArr = isArray(object), othIsArr = isArray(other), objTag = arrayTag, othTag = arrayTag;
  25799.         if (!objIsArr) {
  25800.             objTag = objToString.call(object);
  25801.             if (objTag == argsTag) objTag = objectTag; else if (objTag != objectTag) objIsArr = isTypedArray(object);
  25802.         }
  25803.         if (!othIsArr) {
  25804.             othTag = objToString.call(other);
  25805.             if (othTag == argsTag) othTag = objectTag; else if (othTag != objectTag) othIsArr = isTypedArray(other);
  25806.         }
  25807.         var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
  25808.         if (isSameTag && !objIsArr && !objIsObj) return equalByTag(object, other, objTag);
  25809.         if (!isLoose) {
  25810.             var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
  25811.             if (objIsWrapped || othIsWrapped) return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
  25812.         }
  25813.         if (!isSameTag) return !1;
  25814.         stackA || (stackA = []);
  25815.         stackB || (stackB = []);
  25816.         for (var length = stackA.length; length--; ) if (stackA[length] == object) return stackB[length] == other;
  25817.         stackA.push(object);
  25818.         stackB.push(other);
  25819.         var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);
  25820.         stackA.pop();
  25821.         stackB.pop();
  25822.         return result;
  25823.     }
  25824.     var equalArrays = __webpack_require__(556), equalByTag = __webpack_require__(557), equalObjects = __webpack_require__(558), isArray = __webpack_require__(38), isTypedArray = __webpack_require__(207), argsTag = "[object Arguments]", arrayTag = "[object Array]", objectTag = "[object Object]", objectProto = Object.prototype, hasOwnProperty = objectProto.hasOwnProperty, objToString = objectProto.toString;
  25825.     module.exports = baseIsEqualDeep;
  25826. }, function(module, exports, __webpack_require__) {
  25827.     function baseIsMatch(object, matchData, customizer) {
  25828.         var index = matchData.length, length = index, noCustomizer = !customizer;
  25829.         if (null == object) return !length;
  25830.         object = toObject(object);
  25831.         for (;index--; ) {
  25832.             var data = matchData[index];
  25833.             if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) return !1;
  25834.         }
  25835.         for (;++index < length; ) {
  25836.             data = matchData[index];
  25837.             var key = data[0], objValue = object[key], srcValue = data[1];
  25838.             if (noCustomizer && data[2]) {
  25839.                 if (objValue === undefined && !(key in object)) return !1;
  25840.             } else {
  25841.                 var result = customizer ? customizer(objValue, srcValue, key) : undefined;
  25842.                 if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, !0) : result)) return !1;
  25843.             }
  25844.         }
  25845.         return !0;
  25846.     }
  25847.     var baseIsEqual = __webpack_require__(205), toObject = __webpack_require__(76);
  25848.     module.exports = baseIsMatch;
  25849. }, function(module, exports, __webpack_require__) {
  25850.     function baseMap(collection, iteratee) {
  25851.         var index = -1, result = isArrayLike(collection) ? Array(collection.length) : [];
  25852.         baseEach(collection, function(value, key, collection) {
  25853.             result[++index] = iteratee(value, key, collection);
  25854.         });
  25855.         return result;
  25856.     }
  25857.     var baseEach = __webpack_require__(160), isArrayLike = __webpack_require__(75);
  25858.     module.exports = baseMap;
  25859. }, function(module, exports, __webpack_require__) {
  25860.     function baseMatches(source) {
  25861.         var matchData = getMatchData(source);
  25862.         if (1 == matchData.length && matchData[0][2]) {
  25863.             var key = matchData[0][0], value = matchData[0][1];
  25864.             return function(object) {
  25865.                 if (null == object) return !1; else return object[key] === value && (value !== undefined || key in toObject(object));
  25866.             };
  25867.         }
  25868.         return function(object) {
  25869.             return baseIsMatch(object, matchData);
  25870.         };
  25871.     }
  25872.     var baseIsMatch = __webpack_require__(532), getMatchData = __webpack_require__(559), toObject = __webpack_require__(76);
  25873.     module.exports = baseMatches;
  25874. }, function(module, exports, __webpack_require__) {
  25875.     function baseMatchesProperty(path, srcValue) {
  25876.         var isArr = isArray(path), isCommon = isKey(path) && isStrictComparable(srcValue), pathKey = path + "";
  25877.         path = toPath(path);
  25878.         return function(object) {
  25879.             if (null == object) return !1;
  25880.             var key = pathKey;
  25881.             object = toObject(object);
  25882.             if ((isArr || !isCommon) && !(key in object)) {
  25883.                 object = 1 == path.length ? object : baseGet(object, baseSlice(path, 0, -1));
  25884.                 if (null == object) return !1;
  25885.                 key = last(path);
  25886.                 object = toObject(object);
  25887.             }
  25888.             return object[key] === srcValue ? srcValue !== undefined || key in object : baseIsEqual(srcValue, object[key], undefined, !0);
  25889.         };
  25890.     }
  25891.     var baseGet = __webpack_require__(275), baseIsEqual = __webpack_require__(205), baseSlice = __webpack_require__(540), isArray = __webpack_require__(38), isKey = __webpack_require__(278), isStrictComparable = __webpack_require__(279), last = __webpack_require__(264), toObject = __webpack_require__(76), toPath = __webpack_require__(280);
  25892.     module.exports = baseMatchesProperty;
  25893. }, function(module, exports, __webpack_require__) {
  25894.     function baseMerge(object, source, customizer, stackA, stackB) {
  25895.         if (!isObject(object)) return object;
  25896.         var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)), props = isSrcArr ? undefined : keys(source);
  25897.         arrayEach(props || source, function(srcValue, key) {
  25898.             if (props) {
  25899.                 key = srcValue;
  25900.                 srcValue = source[key];
  25901.             }
  25902.             if (isObjectLike(srcValue)) {
  25903.                 stackA || (stackA = []);
  25904.                 stackB || (stackB = []);
  25905.                 baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
  25906.             } else {
  25907.                 var value = object[key], result = customizer ? customizer(value, srcValue, key, object, source) : undefined, isCommon = result === undefined;
  25908.                 if (isCommon) result = srcValue;
  25909.                 if ((result !== undefined || isSrcArr && !(key in object)) && (isCommon || (result === result ? result !== value : value === value))) object[key] = result;
  25910.             }
  25911.         });
  25912.         return object;
  25913.     }
  25914.     var arrayEach = __webpack_require__(269), baseMergeDeep = __webpack_require__(537), isArray = __webpack_require__(38), isArrayLike = __webpack_require__(75), isObject = __webpack_require__(39), isObjectLike = __webpack_require__(54), isTypedArray = __webpack_require__(207), keys = __webpack_require__(95);
  25915.     module.exports = baseMerge;
  25916. }, function(module, exports, __webpack_require__) {
  25917.     function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {
  25918.         for (var length = stackA.length, srcValue = source[key]; length--; ) if (stackA[length] == srcValue) {
  25919.             object[key] = stackB[length];
  25920.             return;
  25921.         }
  25922.         var value = object[key], result = customizer ? customizer(value, srcValue, key, object, source) : undefined, isCommon = result === undefined;
  25923.         if (isCommon) {
  25924.             result = srcValue;
  25925.             if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) result = isArray(value) ? value : isArrayLike(value) ? arrayCopy(value) : []; else if (isPlainObject(srcValue) || isArguments(srcValue)) result = isArguments(value) ? toPlainObject(value) : isPlainObject(value) ? value : {}; else isCommon = !1;
  25926.         }
  25927.         stackA.push(srcValue);
  25928.         stackB.push(result);
  25929.         if (isCommon) object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB); else if (result === result ? result !== value : value === value) object[key] = result;
  25930.     }
  25931.     var arrayCopy = __webpack_require__(268), isArguments = __webpack_require__(115), isArray = __webpack_require__(38), isArrayLike = __webpack_require__(75), isPlainObject = __webpack_require__(574), isTypedArray = __webpack_require__(207), toPlainObject = __webpack_require__(576);
  25932.     module.exports = baseMergeDeep;
  25933. }, function(module, exports, __webpack_require__) {
  25934.     function basePropertyDeep(path) {
  25935.         var pathKey = path + "";
  25936.         path = toPath(path);
  25937.         return function(object) {
  25938.             return baseGet(object, path, pathKey);
  25939.         };
  25940.     }
  25941.     var baseGet = __webpack_require__(275), toPath = __webpack_require__(280);
  25942.     module.exports = basePropertyDeep;
  25943. }, function(module, exports) {
  25944.     function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
  25945.         eachFunc(collection, function(value, index, collection) {
  25946.             accumulator = initFromCollection ? (initFromCollection = !1, value) : iteratee(accumulator, value, index, collection);
  25947.         });
  25948.         return accumulator;
  25949.     }
  25950.     module.exports = baseReduce;
  25951. }, function(module, exports) {
  25952.     function baseSlice(array, start, end) {
  25953.         var index = -1, length = array.length;
  25954.         start = null == start ? 0 : +start || 0;
  25955.         if (start < 0) start = -start > length ? 0 : length + start;
  25956.         end = end === undefined || end > length ? length : +end || 0;
  25957.         if (end < 0) end += length;
  25958.         length = start > end ? 0 : end - start >>> 0;
  25959.         start >>>= 0;
  25960.         for (var result = Array(length); ++index < length; ) result[index] = array[index + start];
  25961.         return result;
  25962.     }
  25963.     module.exports = baseSlice;
  25964. }, function(module, exports) {
  25965.     function baseSortBy(array, comparer) {
  25966.         var length = array.length;
  25967.         array.sort(comparer);
  25968.         for (;length--; ) array[length] = array[length].value;
  25969.         return array;
  25970.     }
  25971.     module.exports = baseSortBy;
  25972. }, function(module, exports) {
  25973.     function baseToString(value) {
  25974.         return null == value ? "" : value + "";
  25975.     }
  25976.     module.exports = baseToString;
  25977. }, function(module, exports, __webpack_require__) {
  25978.     function baseUniq(array, iteratee) {
  25979.         var index = -1, indexOf = baseIndexOf, length = array.length, isCommon = !0, isLarge = isCommon && length >= LARGE_ARRAY_SIZE, seen = isLarge ? createCache() : null, result = [];
  25980.         if (seen) {
  25981.             indexOf = cacheIndexOf;
  25982.             isCommon = !1;
  25983.         } else {
  25984.             isLarge = !1;
  25985.             seen = iteratee ? [] : result;
  25986.         }
  25987.         outer: for (;++index < length; ) {
  25988.             var value = array[index], computed = iteratee ? iteratee(value, index, array) : value;
  25989.             if (isCommon && value === value) {
  25990.                 for (var seenIndex = seen.length; seenIndex--; ) if (seen[seenIndex] === computed) continue outer;
  25991.                 if (iteratee) seen.push(computed);
  25992.                 result.push(value);
  25993.             } else if (indexOf(seen, computed, 0) < 0) {
  25994.                 if (iteratee || isLarge) seen.push(computed);
  25995.                 result.push(value);
  25996.             }
  25997.         }
  25998.         return result;
  25999.     }
  26000.     var baseIndexOf = __webpack_require__(530), cacheIndexOf = __webpack_require__(546), createCache = __webpack_require__(553), LARGE_ARRAY_SIZE = 200;
  26001.     module.exports = baseUniq;
  26002. }, function(module, exports) {
  26003.     function baseValues(object, props) {
  26004.         for (var index = -1, length = props.length, result = Array(length); ++index < length; ) result[index] = object[props[index]];
  26005.         return result;
  26006.     }
  26007.     module.exports = baseValues;
  26008. }, function(module, exports, __webpack_require__) {
  26009.     (function(global) {
  26010.         function bufferClone(buffer) {
  26011.             var result = new ArrayBuffer(buffer.byteLength);
  26012.             new Uint8Array(result).set(new Uint8Array(buffer));
  26013.             return result;
  26014.         }
  26015.         var ArrayBuffer = global.ArrayBuffer, Uint8Array = global.Uint8Array;
  26016.         module.exports = bufferClone;
  26017.     }).call(exports, __webpack_require__(79));
  26018. }, function(module, exports, __webpack_require__) {
  26019.     function cacheIndexOf(cache, value) {
  26020.         var data = cache.data;
  26021.         return ("string" == typeof value || isObject(value) ? data.set.has(value) : data.hash[value]) ? 0 : -1;
  26022.     }
  26023.     var isObject = __webpack_require__(39);
  26024.     module.exports = cacheIndexOf;
  26025. }, function(module, exports, __webpack_require__) {
  26026.     function cachePush(value) {
  26027.         var data = this.data;
  26028.         if ("string" == typeof value || isObject(value)) data.set.add(value); else data.hash[value] = !0;
  26029.     }
  26030.     var isObject = __webpack_require__(39);
  26031.     module.exports = cachePush;
  26032. }, function(module, exports, __webpack_require__) {
  26033.     function compareAscending(object, other) {
  26034.         return baseCompareAscending(object.criteria, other.criteria) || object.index - other.index;
  26035.     }
  26036.     var baseCompareAscending = __webpack_require__(528);
  26037.     module.exports = compareAscending;
  26038. }, function(module, exports, __webpack_require__) {
  26039.     function createAggregator(setter, initializer) {
  26040.         return function(collection, iteratee, thisArg) {
  26041.             var result = initializer ? initializer() : {};
  26042.             iteratee = baseCallback(iteratee, thisArg, 3);
  26043.             if (isArray(collection)) for (var index = -1, length = collection.length; ++index < length; ) {
  26044.                 var value = collection[index];
  26045.                 setter(result, value, iteratee(value, index, collection), collection);
  26046.             } else baseEach(collection, function(value, key, collection) {
  26047.                 setter(result, value, iteratee(value, key, collection), collection);
  26048.             });
  26049.             return result;
  26050.         };
  26051.     }
  26052.     var baseCallback = __webpack_require__(139), baseEach = __webpack_require__(160), isArray = __webpack_require__(38);
  26053.     module.exports = createAggregator;
  26054. }, function(module, exports, __webpack_require__) {
  26055.     function createAssigner(assigner) {
  26056.         return restParam(function(object, sources) {
  26057.             var index = -1, length = null == object ? 0 : sources.length, customizer = length > 2 ? sources[length - 2] : undefined, guard = length > 2 ? sources[2] : undefined, thisArg = length > 1 ? sources[length - 1] : undefined;
  26058.             if ("function" == typeof customizer) {
  26059.                 customizer = bindCallback(customizer, thisArg, 5);
  26060.                 length -= 2;
  26061.             } else {
  26062.                 customizer = "function" == typeof thisArg ? thisArg : undefined;
  26063.                 length -= customizer ? 1 : 0;
  26064.             }
  26065.             if (guard && isIterateeCall(sources[0], sources[1], guard)) {
  26066.                 customizer = length < 3 ? undefined : customizer;
  26067.                 length = 1;
  26068.             }
  26069.             for (;++index < length; ) {
  26070.                 var source = sources[index];
  26071.                 if (source) assigner(object, source, customizer);
  26072.             }
  26073.             return object;
  26074.         });
  26075.     }
  26076.     var bindCallback = __webpack_require__(140), isIterateeCall = __webpack_require__(142), restParam = __webpack_require__(266);
  26077.     module.exports = createAssigner;
  26078. }, function(module, exports, __webpack_require__) {
  26079.     function createBaseEach(eachFunc, fromRight) {
  26080.         return function(collection, iteratee) {
  26081.             var length = collection ? getLength(collection) : 0;
  26082.             if (!isLength(length)) return eachFunc(collection, iteratee);
  26083.             for (var index = fromRight ? length : -1, iterable = toObject(collection); (fromRight ? index-- : ++index < length) && !1 !== iteratee(iterable[index], index, iterable); ) ;
  26084.             return collection;
  26085.         };
  26086.     }
  26087.     var getLength = __webpack_require__(277), isLength = __webpack_require__(114), toObject = __webpack_require__(76);
  26088.     module.exports = createBaseEach;
  26089. }, function(module, exports, __webpack_require__) {
  26090.     function createBaseFor(fromRight) {
  26091.         return function(object, iteratee, keysFunc) {
  26092.             for (var iterable = toObject(object), props = keysFunc(object), length = props.length, index = fromRight ? length : -1; fromRight ? index-- : ++index < length; ) {
  26093.                 var key = props[index];
  26094.                 if (!1 === iteratee(iterable[key], key, iterable)) break;
  26095.             }
  26096.             return object;
  26097.         };
  26098.     }
  26099.     var toObject = __webpack_require__(76);
  26100.     module.exports = createBaseFor;
  26101. }, function(module, exports, __webpack_require__) {
  26102.     (function(global) {
  26103.         function createCache(values) {
  26104.             return nativeCreate && Set ? new SetCache(values) : null;
  26105.         }
  26106.         var SetCache = __webpack_require__(521), getNative = __webpack_require__(141), Set = getNative(global, "Set"), nativeCreate = getNative(Object, "create");
  26107.         module.exports = createCache;
  26108.     }).call(exports, __webpack_require__(79));
  26109. }, function(module, exports, __webpack_require__) {
  26110.     function createExtremum(comparator, exValue) {
  26111.         return function(collection, iteratee, thisArg) {
  26112.             if (thisArg && isIterateeCall(collection, iteratee, thisArg)) iteratee = undefined;
  26113.             iteratee = baseCallback(iteratee, thisArg, 3);
  26114.             if (1 == iteratee.length) {
  26115.                 collection = isArray(collection) ? collection : toIterable(collection);
  26116.                 var result = arrayExtremum(collection, iteratee, comparator, exValue);
  26117.                 if (!collection.length || result !== exValue) return result;
  26118.             }
  26119.             return baseExtremum(collection, iteratee, comparator, exValue);
  26120.         };
  26121.     }
  26122.     var arrayExtremum = __webpack_require__(522), baseCallback = __webpack_require__(139), baseExtremum = __webpack_require__(529), isArray = __webpack_require__(38), isIterateeCall = __webpack_require__(142), toIterable = __webpack_require__(568);
  26123.     module.exports = createExtremum;
  26124. }, function(module, exports, __webpack_require__) {
  26125.     function createReduce(arrayFunc, eachFunc) {
  26126.         return function(collection, iteratee, accumulator, thisArg) {
  26127.             var initFromArray = arguments.length < 3;
  26128.             return "function" == typeof iteratee && thisArg === undefined && isArray(collection) ? arrayFunc(collection, iteratee, accumulator, initFromArray) : baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
  26129.         };
  26130.     }
  26131.     var baseCallback = __webpack_require__(139), baseReduce = __webpack_require__(539), isArray = __webpack_require__(38);
  26132.     module.exports = createReduce;
  26133. }, function(module, exports, __webpack_require__) {
  26134.     function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {
  26135.         var index = -1, arrLength = array.length, othLength = other.length;
  26136.         if (arrLength != othLength && !(isLoose && othLength > arrLength)) return !1;
  26137.         for (;++index < arrLength; ) {
  26138.             var arrValue = array[index], othValue = other[index], result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;
  26139.             if (result !== undefined) {
  26140.                 if (result) continue;
  26141.                 return !1;
  26142.             }
  26143.             if (isLoose) {
  26144.                 if (!arraySome(other, function(othValue) {
  26145.                     return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
  26146.                 })) return !1;
  26147.             } else if (arrValue !== othValue && !equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB)) return !1;
  26148.         }
  26149.         return !0;
  26150.     }
  26151.     var arraySome = __webpack_require__(525);
  26152.     module.exports = equalArrays;
  26153. }, function(module, exports) {
  26154.     function equalByTag(object, other, tag) {
  26155.         switch (tag) {
  26156.           case boolTag:
  26157.           case dateTag:
  26158.             return +object == +other;
  26159.  
  26160.           case errorTag:
  26161.             return object.name == other.name && object.message == other.message;
  26162.  
  26163.           case numberTag:
  26164.             return object != +object ? other != +other : object == +other;
  26165.  
  26166.           case regexpTag:
  26167.           case stringTag:
  26168.             return object == other + "";
  26169.         }
  26170.         return !1;
  26171.     }
  26172.     var boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", numberTag = "[object Number]", regexpTag = "[object RegExp]", stringTag = "[object String]";
  26173.     module.exports = equalByTag;
  26174. }, function(module, exports, __webpack_require__) {
  26175.     function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
  26176.         var objProps = keys(object), objLength = objProps.length;
  26177.         if (objLength != keys(other).length && !isLoose) return !1;
  26178.         for (var index = objLength; index--; ) {
  26179.             var key = objProps[index];
  26180.             if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) return !1;
  26181.         }
  26182.         for (var skipCtor = isLoose; ++index < objLength; ) {
  26183.             key = objProps[index];
  26184.             var objValue = object[key], othValue = other[key], result = customizer ? customizer(isLoose ? othValue : objValue, isLoose ? objValue : othValue, key) : undefined;
  26185.             if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) return !1;
  26186.             skipCtor || (skipCtor = "constructor" == key);
  26187.         }
  26188.         if (!skipCtor) {
  26189.             var objCtor = object.constructor, othCtor = other.constructor;
  26190.             if (objCtor != othCtor && "constructor" in object && "constructor" in other && !("function" == typeof objCtor && objCtor instanceof objCtor && "function" == typeof othCtor && othCtor instanceof othCtor)) return !1;
  26191.         }
  26192.         return !0;
  26193.     }
  26194.     var keys = __webpack_require__(95), objectProto = Object.prototype, hasOwnProperty = objectProto.hasOwnProperty;
  26195.     module.exports = equalObjects;
  26196. }, function(module, exports, __webpack_require__) {
  26197.     function getMatchData(object) {
  26198.         for (var result = pairs(object), length = result.length; length--; ) result[length][2] = isStrictComparable(result[length][1]);
  26199.         return result;
  26200.     }
  26201.     var isStrictComparable = __webpack_require__(279), pairs = __webpack_require__(579);
  26202.     module.exports = getMatchData;
  26203. }, function(module, exports) {
  26204.     function indexOfNaN(array, fromIndex, fromRight) {
  26205.         for (var length = array.length, index = fromIndex + (fromRight ? 0 : -1); fromRight ? index-- : ++index < length; ) {
  26206.             var other = array[index];
  26207.             if (other !== other) return index;
  26208.         }
  26209.         return -1;
  26210.     }
  26211.     module.exports = indexOfNaN;
  26212. }, function(module, exports) {
  26213.     function initCloneArray(array) {
  26214.         var length = array.length, result = new array.constructor(length);
  26215.         if (length && "string" == typeof array[0] && hasOwnProperty.call(array, "index")) {
  26216.             result.index = array.index;
  26217.             result.input = array.input;
  26218.         }
  26219.         return result;
  26220.     }
  26221.     var objectProto = Object.prototype, hasOwnProperty = objectProto.hasOwnProperty;
  26222.     module.exports = initCloneArray;
  26223. }, function(module, exports, __webpack_require__) {
  26224.     function initCloneByTag(object, tag, isDeep) {
  26225.         var Ctor = object.constructor;
  26226.         switch (tag) {
  26227.           case arrayBufferTag:
  26228.             return bufferClone(object);
  26229.  
  26230.           case boolTag:
  26231.           case dateTag:
  26232.             return new Ctor(+object);
  26233.  
  26234.           case float32Tag:
  26235.           case float64Tag:
  26236.           case int8Tag:
  26237.           case int16Tag:
  26238.           case int32Tag:
  26239.           case uint8Tag:
  26240.           case uint8ClampedTag:
  26241.           case uint16Tag:
  26242.           case uint32Tag:
  26243.             var buffer = object.buffer;
  26244.             return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
  26245.  
  26246.           case numberTag:
  26247.           case stringTag:
  26248.             return new Ctor(object);
  26249.  
  26250.           case regexpTag:
  26251.             var result = new Ctor(object.source, reFlags.exec(object));
  26252.             result.lastIndex = object.lastIndex;
  26253.         }
  26254.         return result;
  26255.     }
  26256.     var bufferClone = __webpack_require__(545), boolTag = "[object Boolean]", dateTag = "[object Date]", numberTag = "[object Number]", regexpTag = "[object RegExp]", stringTag = "[object String]", arrayBufferTag = "[object ArrayBuffer]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]", reFlags = /\w*$/;
  26257.     module.exports = initCloneByTag;
  26258. }, function(module, exports) {
  26259.     function initCloneObject(object) {
  26260.         var Ctor = object.constructor;
  26261.         if (!("function" == typeof Ctor && Ctor instanceof Ctor)) Ctor = Object;
  26262.         return new Ctor();
  26263.     }
  26264.     module.exports = initCloneObject;
  26265. }, function(module, exports, __webpack_require__) {
  26266.     function pickByArray(object, props) {
  26267.         object = toObject(object);
  26268.         for (var index = -1, length = props.length, result = {}; ++index < length; ) {
  26269.             var key = props[index];
  26270.             if (key in object) result[key] = object[key];
  26271.         }
  26272.         return result;
  26273.     }
  26274.     var toObject = __webpack_require__(76);
  26275.     module.exports = pickByArray;
  26276. }, function(module, exports, __webpack_require__) {
  26277.     function pickByCallback(object, predicate) {
  26278.         var result = {};
  26279.         baseForIn(object, function(value, key, object) {
  26280.             if (predicate(value, key, object)) result[key] = value;
  26281.         });
  26282.         return result;
  26283.     }
  26284.     var baseForIn = __webpack_require__(273);
  26285.     module.exports = pickByCallback;
  26286. }, function(module, exports, __webpack_require__) {
  26287.     function shimKeys(object) {
  26288.         for (var props = keysIn(object), propsLength = props.length, length = propsLength && object.length, allowIndexes = !!length && isLength(length) && (isArray(object) || isArguments(object)), index = -1, result = []; ++index < propsLength; ) {
  26289.             var key = props[index];
  26290.             if (allowIndexes && isIndex(key, length) || hasOwnProperty.call(object, key)) result.push(key);
  26291.         }
  26292.         return result;
  26293.     }
  26294.     var isArguments = __webpack_require__(115), isArray = __webpack_require__(38), isIndex = __webpack_require__(206), isLength = __webpack_require__(114), keysIn = __webpack_require__(208), objectProto = Object.prototype, hasOwnProperty = objectProto.hasOwnProperty;
  26295.     module.exports = shimKeys;
  26296. }, function(module, exports) {
  26297.     function sortedUniq(array, iteratee) {
  26298.         for (var seen, index = -1, length = array.length, resIndex = -1, result = []; ++index < length; ) {
  26299.             var value = array[index], computed = iteratee ? iteratee(value, index, array) : value;
  26300.             if (!index || seen !== computed) {
  26301.                 seen = computed;
  26302.                 result[++resIndex] = value;
  26303.             }
  26304.         }
  26305.         return result;
  26306.     }
  26307.     module.exports = sortedUniq;
  26308. }, function(module, exports, __webpack_require__) {
  26309.     function toIterable(value) {
  26310.         if (null == value) return [];
  26311.         if (!isArrayLike(value)) return values(value); else return isObject(value) ? value : Object(value);
  26312.     }
  26313.     var isArrayLike = __webpack_require__(75), isObject = __webpack_require__(39), values = __webpack_require__(580);
  26314.     module.exports = toIterable;
  26315. }, function(module, exports, __webpack_require__) {
  26316.     function cloneDeep(value, customizer, thisArg) {
  26317.         return "function" == typeof customizer ? baseClone(value, !0, bindCallback(customizer, thisArg, 3)) : baseClone(value, !0);
  26318.     }
  26319.     var baseClone = __webpack_require__(527), bindCallback = __webpack_require__(140);
  26320.     module.exports = cloneDeep;
  26321. }, function(module, exports) {
  26322.     function gt(value, other) {
  26323.         return value > other;
  26324.     }
  26325.     module.exports = gt;
  26326. }, function(module, exports, __webpack_require__) {
  26327.     function isEmpty(value) {
  26328.         if (null == value) return !0;
  26329.         if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) || isObjectLike(value) && isFunction(value.splice))) return !value.length; else return !keys(value).length;
  26330.     }
  26331.     var isArguments = __webpack_require__(115), isArray = __webpack_require__(38), isArrayLike = __webpack_require__(75), isFunction = __webpack_require__(281), isObjectLike = __webpack_require__(54), isString = __webpack_require__(575), keys = __webpack_require__(95);
  26332.     module.exports = isEmpty;
  26333. }, function(module, exports, __webpack_require__) {
  26334.     function isEqual(value, other, customizer, thisArg) {
  26335.         customizer = "function" == typeof customizer ? bindCallback(customizer, thisArg, 3) : undefined;
  26336.         var result = customizer ? customizer(value, other) : undefined;
  26337.         return result === undefined ? baseIsEqual(value, other, customizer) : !!result;
  26338.     }
  26339.     var baseIsEqual = __webpack_require__(205), bindCallback = __webpack_require__(140);
  26340.     module.exports = isEqual;
  26341. }, function(module, exports, __webpack_require__) {
  26342.     function isNative(value) {
  26343.         if (null == value) return !1;
  26344.         if (isFunction(value)) return reIsNative.test(fnToString.call(value)); else return isObjectLike(value) && reIsHostCtor.test(value);
  26345.     }
  26346.     var isFunction = __webpack_require__(281), isObjectLike = __webpack_require__(54), reIsHostCtor = /^\[object .+?Constructor\]$/, objectProto = Object.prototype, fnToString = Function.prototype.toString, hasOwnProperty = objectProto.hasOwnProperty, reIsNative = RegExp("^" + fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
  26347.     module.exports = isNative;
  26348. }, function(module, exports, __webpack_require__) {
  26349.     function isPlainObject(value) {
  26350.         var Ctor;
  26351.         if (!isObjectLike(value) || objToString.call(value) != objectTag || isArguments(value) || !hasOwnProperty.call(value, "constructor") && "function" == typeof (Ctor = value.constructor) && !(Ctor instanceof Ctor)) return !1;
  26352.         var result;
  26353.         baseForIn(value, function(subValue, key) {
  26354.             result = key;
  26355.         });
  26356.         return result === undefined || hasOwnProperty.call(value, result);
  26357.     }
  26358.     var baseForIn = __webpack_require__(273), isArguments = __webpack_require__(115), isObjectLike = __webpack_require__(54), objectTag = "[object Object]", objectProto = Object.prototype, hasOwnProperty = objectProto.hasOwnProperty, objToString = objectProto.toString;
  26359.     module.exports = isPlainObject;
  26360. }, function(module, exports, __webpack_require__) {
  26361.     function isString(value) {
  26362.         return "string" == typeof value || isObjectLike(value) && objToString.call(value) == stringTag;
  26363.     }
  26364.     var isObjectLike = __webpack_require__(54), stringTag = "[object String]", objectProto = Object.prototype, objToString = objectProto.toString;
  26365.     module.exports = isString;
  26366. }, function(module, exports, __webpack_require__) {
  26367.     function toPlainObject(value) {
  26368.         return baseCopy(value, keysIn(value));
  26369.     }
  26370.     var baseCopy = __webpack_require__(270), keysIn = __webpack_require__(208);
  26371.     module.exports = toPlainObject;
  26372. }, function(module, exports, __webpack_require__) {
  26373.     var createExtremum = __webpack_require__(554), gt = __webpack_require__(570), NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY, max = createExtremum(gt, NEGATIVE_INFINITY);
  26374.     module.exports = max;
  26375. }, function(module, exports, __webpack_require__) {
  26376.     var baseMerge = __webpack_require__(536), createAssigner = __webpack_require__(550), merge = createAssigner(baseMerge);
  26377.     module.exports = merge;
  26378. }, function(module, exports, __webpack_require__) {
  26379.     function pairs(object) {
  26380.         object = toObject(object);
  26381.         for (var index = -1, props = keys(object), length = props.length, result = Array(length); ++index < length; ) {
  26382.             var key = props[index];
  26383.             result[index] = [ key, object[key] ];
  26384.         }
  26385.         return result;
  26386.     }
  26387.     var keys = __webpack_require__(95), toObject = __webpack_require__(76);
  26388.     module.exports = pairs;
  26389. }, function(module, exports, __webpack_require__) {
  26390.     function values(object) {
  26391.         return baseValues(object, keys(object));
  26392.     }
  26393.     var baseValues = __webpack_require__(544), keys = __webpack_require__(95);
  26394.     module.exports = values;
  26395. }, function(module, exports, __webpack_require__) {
  26396.     function property(path) {
  26397.         return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
  26398.     }
  26399.     var baseProperty = __webpack_require__(276), basePropertyDeep = __webpack_require__(538), isKey = __webpack_require__(278);
  26400.     module.exports = property;
  26401. }, function(module, exports, __webpack_require__) {
  26402.     "use strict";
  26403.     function isKeypressCommand(nativeEvent) {
  26404.         return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && !(nativeEvent.ctrlKey && nativeEvent.altKey);
  26405.     }
  26406.     var EventConstants = __webpack_require__(45), EventPropagators = __webpack_require__(117), ExecutionEnvironment = __webpack_require__(35), SyntheticInputEvent = __webpack_require__(625), keyOf = __webpack_require__(85), canUseTextInputEvent = ExecutionEnvironment.canUseDOM && "TextEvent" in window && !("documentMode" in document || function() {
  26407.         var opera = window.opera;
  26408.         return "object" == typeof opera && "function" == typeof opera.version && parseInt(opera.version(), 10) <= 12;
  26409.     }()), SPACEBAR_CHAR = String.fromCharCode(32), topLevelTypes = EventConstants.topLevelTypes, eventTypes = {
  26410.         beforeInput: {
  26411.             phasedRegistrationNames: {
  26412.                 bubbled: keyOf({
  26413.                     onBeforeInput: null
  26414.                 }),
  26415.                 captured: keyOf({
  26416.                     onBeforeInputCapture: null
  26417.                 })
  26418.             },
  26419.             dependencies: [ topLevelTypes.topCompositionEnd, topLevelTypes.topKeyPress, topLevelTypes.topTextInput, topLevelTypes.topPaste ]
  26420.         }
  26421.     }, fallbackChars = null, BeforeInputEventPlugin = {
  26422.         eventTypes: eventTypes,
  26423.         extractEvents: function(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent) {
  26424.             var chars;
  26425.             if (canUseTextInputEvent) switch (topLevelType) {
  26426.               case topLevelTypes.topKeyPress:
  26427.                 var which = nativeEvent.which;
  26428.                 if (32 !== which) return;
  26429.                 chars = String.fromCharCode(which);
  26430.                 break;
  26431.  
  26432.               case topLevelTypes.topTextInput:
  26433.                 chars = nativeEvent.data;
  26434.                 if (chars === SPACEBAR_CHAR) return;
  26435.                 break;
  26436.  
  26437.               default:
  26438.                 return;
  26439.             } else {
  26440.                 switch (topLevelType) {
  26441.                   case topLevelTypes.topPaste:
  26442.                     fallbackChars = null;
  26443.                     break;
  26444.  
  26445.                   case topLevelTypes.topKeyPress:
  26446.                     if (nativeEvent.which && !isKeypressCommand(nativeEvent)) fallbackChars = String.fromCharCode(nativeEvent.which);
  26447.                     break;
  26448.  
  26449.                   case topLevelTypes.topCompositionEnd:
  26450.                     fallbackChars = nativeEvent.data;
  26451.                 }
  26452.                 if (null === fallbackChars) return;
  26453.                 chars = fallbackChars;
  26454.             }
  26455.             if (chars) {
  26456.                 var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, topLevelTargetID, nativeEvent);
  26457.                 event.data = chars;
  26458.                 fallbackChars = null;
  26459.                 EventPropagators.accumulateTwoPhaseDispatches(event);
  26460.                 return event;
  26461.             }
  26462.         }
  26463.     };
  26464.     module.exports = BeforeInputEventPlugin;
  26465. }, function(module, exports, __webpack_require__) {
  26466.     "use strict";
  26467.     function shouldUseChangeEvent(elem) {
  26468.         return "SELECT" === elem.nodeName || "INPUT" === elem.nodeName && "file" === elem.type;
  26469.     }
  26470.     function manualDispatchChangeEvent(nativeEvent) {
  26471.         var event = SyntheticEvent.getPooled(eventTypes.change, activeElementID, nativeEvent);
  26472.         EventPropagators.accumulateTwoPhaseDispatches(event);
  26473.         ReactUpdates.batchedUpdates(runEventInBatch, event);
  26474.     }
  26475.     function runEventInBatch(event) {
  26476.         EventPluginHub.enqueueEvents(event);
  26477.         EventPluginHub.processEventQueue();
  26478.     }
  26479.     function startWatchingForChangeEventIE8(target, targetID) {
  26480.         activeElement = target;
  26481.         activeElementID = targetID;
  26482.         activeElement.attachEvent("onchange", manualDispatchChangeEvent);
  26483.     }
  26484.     function stopWatchingForChangeEventIE8() {
  26485.         if (activeElement) {
  26486.             activeElement.detachEvent("onchange", manualDispatchChangeEvent);
  26487.             activeElement = null;
  26488.             activeElementID = null;
  26489.         }
  26490.     }
  26491.     function getTargetIDForChangeEvent(topLevelType, topLevelTarget, topLevelTargetID) {
  26492.         if (topLevelType === topLevelTypes.topChange) return topLevelTargetID;
  26493.     }
  26494.     function handleEventsForChangeEventIE8(topLevelType, topLevelTarget, topLevelTargetID) {
  26495.         if (topLevelType === topLevelTypes.topFocus) {
  26496.             stopWatchingForChangeEventIE8();
  26497.             startWatchingForChangeEventIE8(topLevelTarget, topLevelTargetID);
  26498.         } else if (topLevelType === topLevelTypes.topBlur) stopWatchingForChangeEventIE8();
  26499.     }
  26500.     function startWatchingForValueChange(target, targetID) {
  26501.         activeElement = target;
  26502.         activeElementID = targetID;
  26503.         activeElementValue = target.value;
  26504.         if ("undefined" != typeof target.constructor) {
  26505.             activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, "value");
  26506.             Object.defineProperty(activeElement, "value", newValueProp);
  26507.         } else {
  26508.             activeElement.attachEvent("onkeyup", handleKeyUp);
  26509.             activeElement.attachEvent("onkeydown", handleKeydown);
  26510.             activeElement.attachEvent("oncut", handleMouseInput);
  26511.             activeElement.attachEvent("onpaste", handleMouseInput);
  26512.             activeElement.attachEvent("oncontextmenu", handleMouseInput);
  26513.             activeElement.attachEvent("onmouseup", handleMouseInput);
  26514.         }
  26515.         activeElement.attachEvent("onpropertychange", handlePropertyChange);
  26516.     }
  26517.     function stopWatchingForValueChange() {
  26518.         if (activeElement) {
  26519.             try {
  26520.                 delete activeElement.value;
  26521.             } catch (err) {}
  26522.             activeElement.detachEvent("onpropertychange", handlePropertyChange);
  26523.             if ("undefined" == typeof activeElement.constructor) {
  26524.                 activeElement.detachEvent("onkeyup", handleKeyUp);
  26525.                 activeElement.detachEvent("onkeydown", handleKeydown);
  26526.                 activeElement.detachEvent("oncut", handleMouseInput);
  26527.                 activeElement.detachEvent("onpaste", handleMouseInput);
  26528.                 activeElement.detachEvent("oncontextmenu", handleMouseInput);
  26529.                 activeElement.detachEvent("onmouseup", handleMouseInput);
  26530.                 activeElementChangeEventTime = null;
  26531.                 activeElementMouseEventTime = null;
  26532.                 activeElementKeyEventTime = null;
  26533.             }
  26534.             activeElement = null;
  26535.             activeElementID = null;
  26536.             activeElementValue = null;
  26537.             activeElementValueProp = null;
  26538.         }
  26539.     }
  26540.     function handleKeydown(nativeEvent) {
  26541.         activeElementKeyEventTime = new Date();
  26542.     }
  26543.     function handleMouseInput(nativeEvent) {
  26544.         activeElementMouseEventTime = null;
  26545.         if (!activeElementKeyEventTime || new Date() - activeElementKeyEventTime > 500) activeElementMouseEventTime = new Date();
  26546.         activeElementKeyEventTime = null;
  26547.     }
  26548.     function handlePropertyChange(nativeEvent) {
  26549.         if ("value" === nativeEvent.propertyName) {
  26550.             var value = nativeEvent.srcElement.value;
  26551.             if (value !== activeElementValue) {
  26552.                 activeElementValue = value;
  26553.                 if ("undefined" != typeof activeElement.constructor) manualDispatchChangeEvent(nativeEvent); else {
  26554.                     if (activeElementMouseEventTime) {
  26555.                         var timediff = new Date() - activeElementMouseEventTime;
  26556.                         activeElementMouseEventTime = null;
  26557.                         if (timediff < 500) {
  26558.                             manualDispatchChangeEvent(nativeEvent);
  26559.                             return;
  26560.                         }
  26561.                     }
  26562.                     activeElementChangeEventTime = new Date();
  26563.                 }
  26564.             }
  26565.         }
  26566.     }
  26567.     function handleKeyUp(nativeEvent) {
  26568.         if (activeElementChangeEventTime) {
  26569.             var timediff = new Date() - activeElementChangeEventTime;
  26570.             activeElementChangeEventTime = null;
  26571.             if (timediff < 500) manualDispatchChangeEvent(nativeEvent);
  26572.         }
  26573.     }
  26574.     function getTargetIDForInputEvent(topLevelType, topLevelTarget, topLevelTargetID) {
  26575.         if (topLevelType === topLevelTypes.topInput) return topLevelTargetID;
  26576.     }
  26577.     function handleEventsForInputEventIE(topLevelType, topLevelTarget, topLevelTargetID) {
  26578.         if (topLevelType === topLevelTypes.topFocus) {
  26579.             stopWatchingForValueChange();
  26580.             startWatchingForValueChange(topLevelTarget, topLevelTargetID);
  26581.         } else if (topLevelType === topLevelTypes.topBlur) stopWatchingForValueChange();
  26582.     }
  26583.     function getTargetIDForInputEventIE(topLevelType, topLevelTarget, topLevelTargetID) {
  26584.         if (topLevelType === topLevelTypes.topSelectionChange || topLevelType === topLevelTypes.topKeyUp || topLevelType === topLevelTypes.topKeyDown) if (activeElement && activeElement.value !== activeElementValue) {
  26585.             activeElementValue = activeElement.value;
  26586.             return activeElementID;
  26587.         }
  26588.     }
  26589.     function shouldUseClickEvent(elem) {
  26590.         return "INPUT" === elem.nodeName && ("checkbox" === elem.type || "radio" === elem.type);
  26591.     }
  26592.     function getTargetIDForClickEvent(topLevelType, topLevelTarget, topLevelTargetID) {
  26593.         if (topLevelType === topLevelTypes.topClick) return topLevelTargetID;
  26594.     }
  26595.     var EventConstants = __webpack_require__(45), EventPluginHub = __webpack_require__(143), EventPropagators = __webpack_require__(117), ExecutionEnvironment = __webpack_require__(35), ReactUpdates = __webpack_require__(122), SyntheticEvent = __webpack_require__(97), isEventSupported = __webpack_require__(222), isTextInputElement = __webpack_require__(307), keyOf = __webpack_require__(85), topLevelTypes = EventConstants.topLevelTypes, eventTypes = {
  26596.         change: {
  26597.             phasedRegistrationNames: {
  26598.                 bubbled: keyOf({
  26599.                     onChange: null
  26600.                 }),
  26601.                 captured: keyOf({
  26602.                     onChangeCapture: null
  26603.                 })
  26604.             },
  26605.             dependencies: [ topLevelTypes.topBlur, topLevelTypes.topChange, topLevelTypes.topClick, topLevelTypes.topFocus, topLevelTypes.topInput, topLevelTypes.topKeyDown, topLevelTypes.topKeyUp, topLevelTypes.topSelectionChange ]
  26606.         }
  26607.     }, activeElement = null, activeElementID = null, activeElementValue = null, activeElementValueProp = null, activeElementChangeEventTime = null, activeElementMouseEventTime = null, activeElementKeyEventTime = null, doesChangeEventBubble = !1;
  26608.     if (ExecutionEnvironment.canUseDOM) doesChangeEventBubble = isEventSupported("change") && (!("documentMode" in document) || document.documentMode > 8);
  26609.     var isInputEventSupported = !1;
  26610.     if (ExecutionEnvironment.canUseDOM) isInputEventSupported = isEventSupported("input") && (!("documentMode" in document) || document.documentMode > 9);
  26611.     var newValueProp = {
  26612.         get: function() {
  26613.             return activeElementValueProp.get.call(this);
  26614.         },
  26615.         set: function(val) {
  26616.             activeElementValue = "" + val;
  26617.             activeElementValueProp.set.call(this, val);
  26618.         }
  26619.     }, ChangeEventPlugin = {
  26620.         eventTypes: eventTypes,
  26621.         extractEvents: function(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent) {
  26622.             var getTargetIDFunc, handleEventFunc;
  26623.             if (shouldUseChangeEvent(topLevelTarget)) if (doesChangeEventBubble) getTargetIDFunc = getTargetIDForChangeEvent; else handleEventFunc = handleEventsForChangeEventIE8; else if (isTextInputElement(topLevelTarget)) if (isInputEventSupported) getTargetIDFunc = getTargetIDForInputEvent; else {
  26624.                 getTargetIDFunc = getTargetIDForInputEventIE;
  26625.                 handleEventFunc = handleEventsForInputEventIE;
  26626.             } else if (shouldUseClickEvent(topLevelTarget)) getTargetIDFunc = getTargetIDForClickEvent;
  26627.             if (getTargetIDFunc) {
  26628.                 var targetID = getTargetIDFunc(topLevelType, topLevelTarget, topLevelTargetID);
  26629.                 if (targetID) {
  26630.                     var event = SyntheticEvent.getPooled(eventTypes.change, targetID, nativeEvent);
  26631.                     EventPropagators.accumulateTwoPhaseDispatches(event);
  26632.                     return event;
  26633.                 }
  26634.             }
  26635.             if (handleEventFunc) handleEventFunc(topLevelType, topLevelTarget, topLevelTargetID);
  26636.         }
  26637.     };
  26638.     module.exports = ChangeEventPlugin;
  26639. }, function(module, exports, __webpack_require__) {
  26640.     "use strict";
  26641.     var nextReactRootIndex = 0, ClientReactRootIndex = {
  26642.         createReactRootIndex: function() {
  26643.             return nextReactRootIndex++;
  26644.         }
  26645.     };
  26646.     module.exports = ClientReactRootIndex;
  26647. }, function(module, exports, __webpack_require__) {
  26648.     "use strict";
  26649.     function getCompositionEventType(topLevelType) {
  26650.         switch (topLevelType) {
  26651.           case topLevelTypes.topCompositionStart:
  26652.             return eventTypes.compositionStart;
  26653.  
  26654.           case topLevelTypes.topCompositionEnd:
  26655.             return eventTypes.compositionEnd;
  26656.  
  26657.           case topLevelTypes.topCompositionUpdate:
  26658.             return eventTypes.compositionUpdate;
  26659.         }
  26660.     }
  26661.     function isFallbackStart(topLevelType, nativeEvent) {
  26662.         return topLevelType === topLevelTypes.topKeyDown && nativeEvent.keyCode === START_KEYCODE;
  26663.     }
  26664.     function isFallbackEnd(topLevelType, nativeEvent) {
  26665.         switch (topLevelType) {
  26666.           case topLevelTypes.topKeyUp:
  26667.             return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);
  26668.  
  26669.           case topLevelTypes.topKeyDown:
  26670.             return nativeEvent.keyCode !== START_KEYCODE;
  26671.  
  26672.           case topLevelTypes.topKeyPress:
  26673.           case topLevelTypes.topMouseDown:
  26674.           case topLevelTypes.topBlur:
  26675.             return !0;
  26676.  
  26677.           default:
  26678.             return !1;
  26679.         }
  26680.     }
  26681.     function FallbackCompositionState(root) {
  26682.         this.root = root;
  26683.         this.startSelection = ReactInputSelection.getSelection(root);
  26684.         this.startValue = this.getText();
  26685.     }
  26686.     var EventConstants = __webpack_require__(45), EventPropagators = __webpack_require__(117), ExecutionEnvironment = __webpack_require__(35), ReactInputSelection = __webpack_require__(215), SyntheticCompositionEvent = __webpack_require__(622), getTextContentAccessor = __webpack_require__(221), keyOf = __webpack_require__(85), END_KEYCODES = [ 9, 13, 27, 32 ], START_KEYCODE = 229, useCompositionEvent = ExecutionEnvironment.canUseDOM && "CompositionEvent" in window, useFallbackData = !useCompositionEvent || "documentMode" in document && document.documentMode > 8 && document.documentMode <= 11, topLevelTypes = EventConstants.topLevelTypes, currentComposition = null, eventTypes = {
  26687.         compositionEnd: {
  26688.             phasedRegistrationNames: {
  26689.                 bubbled: keyOf({
  26690.                     onCompositionEnd: null
  26691.                 }),
  26692.                 captured: keyOf({
  26693.                     onCompositionEndCapture: null
  26694.                 })
  26695.             },
  26696.             dependencies: [ topLevelTypes.topBlur, topLevelTypes.topCompositionEnd, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown ]
  26697.         },
  26698.         compositionStart: {
  26699.             phasedRegistrationNames: {
  26700.                 bubbled: keyOf({
  26701.                     onCompositionStart: null
  26702.                 }),
  26703.                 captured: keyOf({
  26704.                     onCompositionStartCapture: null
  26705.                 })
  26706.             },
  26707.             dependencies: [ topLevelTypes.topBlur, topLevelTypes.topCompositionStart, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown ]
  26708.         },
  26709.         compositionUpdate: {
  26710.             phasedRegistrationNames: {
  26711.                 bubbled: keyOf({
  26712.                     onCompositionUpdate: null
  26713.                 }),
  26714.                 captured: keyOf({
  26715.                     onCompositionUpdateCapture: null
  26716.                 })
  26717.             },
  26718.             dependencies: [ topLevelTypes.topBlur, topLevelTypes.topCompositionUpdate, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown ]
  26719.         }
  26720.     };
  26721.     FallbackCompositionState.prototype.getText = function() {
  26722.         return this.root.value || this.root[getTextContentAccessor()];
  26723.     };
  26724.     FallbackCompositionState.prototype.getData = function() {
  26725.         var endValue = this.getText(), prefixLength = this.startSelection.start, suffixLength = this.startValue.length - this.startSelection.end;
  26726.         return endValue.substr(prefixLength, endValue.length - suffixLength - prefixLength);
  26727.     };
  26728.     var CompositionEventPlugin = {
  26729.         eventTypes: eventTypes,
  26730.         extractEvents: function(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent) {
  26731.             var eventType, data;
  26732.             if (useCompositionEvent) eventType = getCompositionEventType(topLevelType); else if (!currentComposition) {
  26733.                 if (isFallbackStart(topLevelType, nativeEvent)) eventType = eventTypes.compositionStart;
  26734.             } else if (isFallbackEnd(topLevelType, nativeEvent)) eventType = eventTypes.compositionEnd;
  26735.             if (useFallbackData) if (!currentComposition && eventType === eventTypes.compositionStart) currentComposition = new FallbackCompositionState(topLevelTarget); else if (eventType === eventTypes.compositionEnd) if (currentComposition) {
  26736.                 data = currentComposition.getData();
  26737.                 currentComposition = null;
  26738.             }
  26739.             if (eventType) {
  26740.                 var event = SyntheticCompositionEvent.getPooled(eventType, topLevelTargetID, nativeEvent);
  26741.                 if (data) event.data = data;
  26742.                 EventPropagators.accumulateTwoPhaseDispatches(event);
  26743.                 return event;
  26744.             }
  26745.         }
  26746.     };
  26747.     module.exports = CompositionEventPlugin;
  26748. }, function(module, exports, __webpack_require__) {
  26749.     "use strict";
  26750.     function insertChildAt(parentNode, childNode, index) {
  26751.         parentNode.insertBefore(childNode, parentNode.childNodes[index] || null);
  26752.     }
  26753.     var updateTextContent, Danger = __webpack_require__(587), ReactMultiChildUpdateTypes = __webpack_require__(292), getTextContentAccessor = __webpack_require__(221), invariant = __webpack_require__(4), textContentAccessor = getTextContentAccessor();
  26754.     if ("textContent" === textContentAccessor) updateTextContent = function(node, text) {
  26755.         node.textContent = text;
  26756.     }; else updateTextContent = function(node, text) {
  26757.         for (;node.firstChild; ) node.removeChild(node.firstChild);
  26758.         if (text) {
  26759.             var doc = node.ownerDocument || document;
  26760.             node.appendChild(doc.createTextNode(text));
  26761.         }
  26762.     };
  26763.     var DOMChildrenOperations = {
  26764.         dangerouslyReplaceNodeWithMarkup: Danger.dangerouslyReplaceNodeWithMarkup,
  26765.         updateTextContent: updateTextContent,
  26766.         processUpdates: function(updates, markupList) {
  26767.             for (var update, initialChildren = null, updatedChildren = null, i = 0; update = updates[i]; i++) if (update.type === ReactMultiChildUpdateTypes.MOVE_EXISTING || update.type === ReactMultiChildUpdateTypes.REMOVE_NODE) {
  26768.                 var updatedIndex = update.fromIndex, updatedChild = update.parentNode.childNodes[updatedIndex], parentID = update.parentID;
  26769.                 !0 ? invariant(updatedChild, "processUpdates(): Unable to find child %s of element. This probably means the DOM was unexpectedly mutated (e.g., by the browser), usually due to forgetting a <tbody> when using tables, nesting <p> or <a> tags, or using non-SVG elements in an <svg> parent. Try inspecting the child nodes of the element with React ID `%s`.", updatedIndex, parentID) : invariant(updatedChild);
  26770.                 initialChildren = initialChildren || {};
  26771.                 initialChildren[parentID] = initialChildren[parentID] || [];
  26772.                 initialChildren[parentID][updatedIndex] = updatedChild;
  26773.                 updatedChildren = updatedChildren || [];
  26774.                 updatedChildren.push(updatedChild);
  26775.             }
  26776.             var renderedMarkup = Danger.dangerouslyRenderMarkup(markupList);
  26777.             if (updatedChildren) for (var j = 0; j < updatedChildren.length; j++) updatedChildren[j].parentNode.removeChild(updatedChildren[j]);
  26778.             for (var k = 0; update = updates[k]; k++) switch (update.type) {
  26779.               case ReactMultiChildUpdateTypes.INSERT_MARKUP:
  26780.                 insertChildAt(update.parentNode, renderedMarkup[update.markupIndex], update.toIndex);
  26781.                 break;
  26782.  
  26783.               case ReactMultiChildUpdateTypes.MOVE_EXISTING:
  26784.                 insertChildAt(update.parentNode, initialChildren[update.parentID][update.fromIndex], update.toIndex);
  26785.                 break;
  26786.  
  26787.               case ReactMultiChildUpdateTypes.TEXT_CONTENT:
  26788.                 updateTextContent(update.parentNode, update.textContent);
  26789.                 break;
  26790.  
  26791.               case ReactMultiChildUpdateTypes.REMOVE_NODE:
  26792.             }
  26793.         }
  26794.     };
  26795.     module.exports = DOMChildrenOperations;
  26796. }, function(module, exports, __webpack_require__) {
  26797.     "use strict";
  26798.     function getNodeName(markup) {
  26799.         return markup.substring(1, markup.indexOf(" "));
  26800.     }
  26801.     var ExecutionEnvironment = __webpack_require__(35), createNodesFromMarkup = __webpack_require__(633), emptyFunction = __webpack_require__(78), getMarkupWrap = __webpack_require__(304), invariant = __webpack_require__(4), OPEN_TAG_NAME_EXP = /^(<[^ \/>]+)/, Danger = {
  26802.         dangerouslyRenderMarkup: function(markupList) {
  26803.             !0 ? invariant(ExecutionEnvironment.canUseDOM, "dangerouslyRenderMarkup(...): Cannot render markup in a Worker thread. This is likely a bug in the framework. Please report immediately.") : invariant(ExecutionEnvironment.canUseDOM);
  26804.             for (var nodeName, markupByNodeName = {}, i = 0; i < markupList.length; i++) {
  26805.                 !0 ? invariant(markupList[i], "dangerouslyRenderMarkup(...): Missing markup.") : invariant(markupList[i]);
  26806.                 nodeName = getNodeName(markupList[i]);
  26807.                 nodeName = getMarkupWrap(nodeName) ? nodeName : "*";
  26808.                 markupByNodeName[nodeName] = markupByNodeName[nodeName] || [];
  26809.                 markupByNodeName[nodeName][i] = markupList[i];
  26810.             }
  26811.             var resultList = [], resultListAssignmentCount = 0;
  26812.             for (nodeName in markupByNodeName) if (markupByNodeName.hasOwnProperty(nodeName)) {
  26813.                 var markupListByNodeName = markupByNodeName[nodeName];
  26814.                 for (var resultIndex in markupListByNodeName) if (markupListByNodeName.hasOwnProperty(resultIndex)) {
  26815.                     var markup = markupListByNodeName[resultIndex];
  26816.                     markupListByNodeName[resultIndex] = markup.replace(OPEN_TAG_NAME_EXP, '$1 data-danger-index="' + resultIndex + '" ');
  26817.                 }
  26818.                 var renderNodes = createNodesFromMarkup(markupListByNodeName.join(""), emptyFunction);
  26819.                 for (i = 0; i < renderNodes.length; ++i) {
  26820.                     var renderNode = renderNodes[i];
  26821.                     if (renderNode.hasAttribute && renderNode.hasAttribute("data-danger-index") || renderNode.getAttributeNode && null !== renderNode.getAttributeNode("data-danger-index")) {
  26822.                         resultIndex = +renderNode.getAttribute("data-danger-index");
  26823.                         renderNode.removeAttribute("data-danger-index");
  26824.                         !0 ? invariant(!resultList.hasOwnProperty(resultIndex), "Danger: Assigning to an already-occupied result index.") : invariant(!resultList.hasOwnProperty(resultIndex));
  26825.                         resultList[resultIndex] = renderNode;
  26826.                         resultListAssignmentCount += 1;
  26827.                     } else if (!0) console.error("Danger: Discarding unexpected node:", renderNode);
  26828.                 }
  26829.             }
  26830.             !0 ? invariant(resultListAssignmentCount === resultList.length, "Danger: Did not assign to every index of resultList.") : invariant(resultListAssignmentCount === resultList.length);
  26831.             !0 ? invariant(resultList.length === markupList.length, "Danger: Expected markup to render %s nodes, but rendered %s.", markupList.length, resultList.length) : invariant(resultList.length === markupList.length);
  26832.             return resultList;
  26833.         },
  26834.         dangerouslyReplaceNodeWithMarkup: function(oldChild, markup) {
  26835.             !0 ? invariant(ExecutionEnvironment.canUseDOM, "dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. This is likely a bug in the framework. Please report immediately.") : invariant(ExecutionEnvironment.canUseDOM);
  26836.             !0 ? invariant(markup, "dangerouslyReplaceNodeWithMarkup(...): Missing markup.") : invariant(markup);
  26837.             !0 ? invariant("html" !== oldChild.tagName.toLowerCase(), "dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See renderComponentToString().") : invariant("html" !== oldChild.tagName.toLowerCase());
  26838.             var newChild = createNodesFromMarkup(markup, emptyFunction)[0];
  26839.             oldChild.parentNode.replaceChild(newChild, oldChild);
  26840.         }
  26841.     };
  26842.     module.exports = Danger;
  26843. }, function(module, exports, __webpack_require__) {
  26844.     "use strict";
  26845.     var keyOf = __webpack_require__(85), DefaultEventPluginOrder = [ keyOf({
  26846.         ResponderEventPlugin: null
  26847.     }), keyOf({
  26848.         SimpleEventPlugin: null
  26849.     }), keyOf({
  26850.         TapEventPlugin: null
  26851.     }), keyOf({
  26852.         EnterLeaveEventPlugin: null
  26853.     }), keyOf({
  26854.         ChangeEventPlugin: null
  26855.     }), keyOf({
  26856.         SelectEventPlugin: null
  26857.     }), keyOf({
  26858.         CompositionEventPlugin: null
  26859.     }), keyOf({
  26860.         BeforeInputEventPlugin: null
  26861.     }), keyOf({
  26862.         AnalyticsEventPlugin: null
  26863.     }), keyOf({
  26864.         MobileSafariClickEventPlugin: null
  26865.     }) ];
  26866.     module.exports = DefaultEventPluginOrder;
  26867. }, function(module, exports, __webpack_require__) {
  26868.     "use strict";
  26869.     var EventConstants = __webpack_require__(45), EventPropagators = __webpack_require__(117), SyntheticMouseEvent = __webpack_require__(162), ReactMount = __webpack_require__(59), keyOf = __webpack_require__(85), topLevelTypes = EventConstants.topLevelTypes, getFirstReactDOM = ReactMount.getFirstReactDOM, eventTypes = {
  26870.         mouseEnter: {
  26871.             registrationName: keyOf({
  26872.                 onMouseEnter: null
  26873.             }),
  26874.             dependencies: [ topLevelTypes.topMouseOut, topLevelTypes.topMouseOver ]
  26875.         },
  26876.         mouseLeave: {
  26877.             registrationName: keyOf({
  26878.                 onMouseLeave: null
  26879.             }),
  26880.             dependencies: [ topLevelTypes.topMouseOut, topLevelTypes.topMouseOver ]
  26881.         }
  26882.     }, extractedEvents = [ null, null ], EnterLeaveEventPlugin = {
  26883.         eventTypes: eventTypes,
  26884.         extractEvents: function(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent) {
  26885.             if (topLevelType === topLevelTypes.topMouseOver && (nativeEvent.relatedTarget || nativeEvent.fromElement)) return null;
  26886.             if (topLevelType !== topLevelTypes.topMouseOut && topLevelType !== topLevelTypes.topMouseOver) return null;
  26887.             var win;
  26888.             if (topLevelTarget.window === topLevelTarget) win = topLevelTarget; else {
  26889.                 var doc = topLevelTarget.ownerDocument;
  26890.                 if (doc) win = doc.defaultView || doc.parentWindow; else win = window;
  26891.             }
  26892.             var from, to;
  26893.             if (topLevelType === topLevelTypes.topMouseOut) {
  26894.                 from = topLevelTarget;
  26895.                 to = getFirstReactDOM(nativeEvent.relatedTarget || nativeEvent.toElement) || win;
  26896.             } else {
  26897.                 from = win;
  26898.                 to = topLevelTarget;
  26899.             }
  26900.             if (from === to) return null;
  26901.             var fromID = from ? ReactMount.getID(from) : "", toID = to ? ReactMount.getID(to) : "", leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, fromID, nativeEvent);
  26902.             leave.type = "mouseleave";
  26903.             leave.target = from;
  26904.             leave.relatedTarget = to;
  26905.             var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, toID, nativeEvent);
  26906.             enter.type = "mouseenter";
  26907.             enter.target = to;
  26908.             enter.relatedTarget = from;
  26909.             EventPropagators.accumulateEnterLeaveDispatches(leave, enter, fromID, toID);
  26910.             extractedEvents[0] = leave;
  26911.             extractedEvents[1] = enter;
  26912.             return extractedEvents;
  26913.         }
  26914.     };
  26915.     module.exports = EnterLeaveEventPlugin;
  26916. }, function(module, exports, __webpack_require__) {
  26917.     var emptyFunction = __webpack_require__(78), EventListener = {
  26918.         listen: function(target, eventType, callback) {
  26919.             if (target.addEventListener) {
  26920.                 target.addEventListener(eventType, callback, !1);
  26921.                 return {
  26922.                     remove: function() {
  26923.                         target.removeEventListener(eventType, callback, !1);
  26924.                     }
  26925.                 };
  26926.             } else if (target.attachEvent) {
  26927.                 target.attachEvent("on" + eventType, callback);
  26928.                 return {
  26929.                     remove: function() {
  26930.                         target.detachEvent("on" + eventType, callback);
  26931.                     }
  26932.                 };
  26933.             }
  26934.         },
  26935.         capture: function(target, eventType, callback) {
  26936.             if (!target.addEventListener) {
  26937.                 if (!0) console.error("Attempted to listen to events during the capture phase on a browser that does not support the capture phase. Your application will not receive some events.");
  26938.                 return {
  26939.                     remove: emptyFunction
  26940.                 };
  26941.             } else {
  26942.                 target.addEventListener(eventType, callback, !0);
  26943.                 return {
  26944.                     remove: function() {
  26945.                         target.removeEventListener(eventType, callback, !0);
  26946.                     }
  26947.                 };
  26948.             }
  26949.         },
  26950.         registerDefault: function() {}
  26951.     };
  26952.     module.exports = EventListener;
  26953. }, function(module, exports, __webpack_require__) {
  26954.     "use strict";
  26955.     var hasSVG, DOMProperty = __webpack_require__(96), ExecutionEnvironment = __webpack_require__(35), MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE, MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY, HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE, HAS_SIDE_EFFECTS = DOMProperty.injection.HAS_SIDE_EFFECTS, HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE, HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE, HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
  26956.     if (ExecutionEnvironment.canUseDOM) {
  26957.         var implementation = document.implementation;
  26958.         hasSVG = implementation && implementation.hasFeature && implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1");
  26959.     }
  26960.     var HTMLDOMPropertyConfig = {
  26961.         isCustomAttribute: RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),
  26962.         Properties: {
  26963.             accept: null,
  26964.             accessKey: null,
  26965.             action: null,
  26966.             allowFullScreen: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
  26967.             allowTransparency: MUST_USE_ATTRIBUTE,
  26968.             alt: null,
  26969.             async: HAS_BOOLEAN_VALUE,
  26970.             autoComplete: null,
  26971.             autoPlay: HAS_BOOLEAN_VALUE,
  26972.             cellPadding: null,
  26973.             cellSpacing: null,
  26974.             charSet: MUST_USE_ATTRIBUTE,
  26975.             checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
  26976.             className: hasSVG ? MUST_USE_ATTRIBUTE : MUST_USE_PROPERTY,
  26977.             cols: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
  26978.             colSpan: null,
  26979.             content: null,
  26980.             contentEditable: null,
  26981.             contextMenu: MUST_USE_ATTRIBUTE,
  26982.             controls: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
  26983.             coords: null,
  26984.             crossOrigin: null,
  26985.             data: null,
  26986.             dateTime: MUST_USE_ATTRIBUTE,
  26987.             defer: HAS_BOOLEAN_VALUE,
  26988.             dir: null,
  26989.             disabled: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
  26990.             download: HAS_OVERLOADED_BOOLEAN_VALUE,
  26991.             draggable: null,
  26992.             encType: null,
  26993.             form: MUST_USE_ATTRIBUTE,
  26994.             formNoValidate: HAS_BOOLEAN_VALUE,
  26995.             frameBorder: MUST_USE_ATTRIBUTE,
  26996.             height: MUST_USE_ATTRIBUTE,
  26997.             hidden: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
  26998.             href: null,
  26999.             hrefLang: null,
  27000.             htmlFor: null,
  27001.             httpEquiv: null,
  27002.             icon: null,
  27003.             id: MUST_USE_PROPERTY,
  27004.             label: null,
  27005.             lang: null,
  27006.             list: null,
  27007.             loop: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
  27008.             max: null,
  27009.             maxLength: MUST_USE_ATTRIBUTE,
  27010.             media: MUST_USE_ATTRIBUTE,
  27011.             mediaGroup: null,
  27012.             method: null,
  27013.             min: null,
  27014.             multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
  27015.             muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
  27016.             name: null,
  27017.             noValidate: HAS_BOOLEAN_VALUE,
  27018.             open: null,
  27019.             pattern: null,
  27020.             placeholder: null,
  27021.             poster: null,
  27022.             preload: null,
  27023.             radioGroup: null,
  27024.             readOnly: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
  27025.             rel: null,
  27026.             required: HAS_BOOLEAN_VALUE,
  27027.             role: MUST_USE_ATTRIBUTE,
  27028.             rows: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
  27029.             rowSpan: null,
  27030.             sandbox: null,
  27031.             scope: null,
  27032.             scrollLeft: MUST_USE_PROPERTY,
  27033.             scrolling: null,
  27034.             scrollTop: MUST_USE_PROPERTY,
  27035.             seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
  27036.             selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
  27037.             shape: null,
  27038.             size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
  27039.             sizes: MUST_USE_ATTRIBUTE,
  27040.             span: HAS_POSITIVE_NUMERIC_VALUE,
  27041.             spellCheck: null,
  27042.             src: null,
  27043.             srcDoc: MUST_USE_PROPERTY,
  27044.             srcSet: MUST_USE_ATTRIBUTE,
  27045.             start: HAS_NUMERIC_VALUE,
  27046.             step: null,
  27047.             style: null,
  27048.             tabIndex: null,
  27049.             target: null,
  27050.             title: null,
  27051.             type: null,
  27052.             useMap: null,
  27053.             value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,
  27054.             width: MUST_USE_ATTRIBUTE,
  27055.             wmode: MUST_USE_ATTRIBUTE,
  27056.             autoCapitalize: null,
  27057.             autoCorrect: null,
  27058.             itemProp: MUST_USE_ATTRIBUTE,
  27059.             itemScope: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
  27060.             itemType: MUST_USE_ATTRIBUTE,
  27061.             property: null
  27062.         },
  27063.         DOMAttributeNames: {
  27064.             className: "class",
  27065.             htmlFor: "for",
  27066.             httpEquiv: "http-equiv"
  27067.         },
  27068.         DOMPropertyNames: {
  27069.             autoCapitalize: "autocapitalize",
  27070.             autoComplete: "autocomplete",
  27071.             autoCorrect: "autocorrect",
  27072.             autoFocus: "autofocus",
  27073.             autoPlay: "autoplay",
  27074.             encType: "enctype",
  27075.             hrefLang: "hreflang",
  27076.             radioGroup: "radiogroup",
  27077.             spellCheck: "spellcheck",
  27078.             srcDoc: "srcdoc",
  27079.             srcSet: "srcset"
  27080.         }
  27081.     };
  27082.     module.exports = HTMLDOMPropertyConfig;
  27083. }, function(module, exports, __webpack_require__) {
  27084.     "use strict";
  27085.     var EventConstants = __webpack_require__(45), emptyFunction = __webpack_require__(78), topLevelTypes = EventConstants.topLevelTypes, MobileSafariClickEventPlugin = {
  27086.         eventTypes: null,
  27087.         extractEvents: function(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent) {
  27088.             if (topLevelType === topLevelTypes.topTouchStart) {
  27089.                 var target = nativeEvent.target;
  27090.                 if (target && !target.onclick) target.onclick = emptyFunction;
  27091.             }
  27092.         }
  27093.     };
  27094.     module.exports = MobileSafariClickEventPlugin;
  27095. }, function(module, exports, __webpack_require__) {
  27096.     "use strict";
  27097.     function createDescriptor(type, props, children) {
  27098.         var args = Array.prototype.slice.call(arguments, 1);
  27099.         return type.apply(null, args);
  27100.     }
  27101.     var DOMPropertyOperations = __webpack_require__(116), EventPluginUtils = __webpack_require__(211), ReactChildren = __webpack_require__(594), ReactComponent = __webpack_require__(119), ReactCompositeComponent = __webpack_require__(56), ReactContext = __webpack_require__(213), ReactCurrentOwner = __webpack_require__(120), ReactDescriptor = __webpack_require__(58), ReactDOM = __webpack_require__(57), ReactDOMComponent = __webpack_require__(288), ReactDefaultInjection = __webpack_require__(606), ReactInstanceHandles = __webpack_require__(121), ReactMount = __webpack_require__(59), ReactMultiChild = __webpack_require__(291), ReactPerf = __webpack_require__(77), ReactPropTypes = __webpack_require__(296), ReactServerRendering = __webpack_require__(615), ReactTextComponent = __webpack_require__(299), onlyChild = __webpack_require__(645), warning = __webpack_require__(61);
  27102.     ReactDefaultInjection.inject();
  27103.     if (!0) var _warnedForDeprecation = !1;
  27104.     var React = {
  27105.         Children: {
  27106.             map: ReactChildren.map,
  27107.             forEach: ReactChildren.forEach,
  27108.             count: ReactChildren.count,
  27109.             only: onlyChild
  27110.         },
  27111.         DOM: ReactDOM,
  27112.         PropTypes: ReactPropTypes,
  27113.         initializeTouchEvents: function(shouldUseTouch) {
  27114.             EventPluginUtils.useTouchEvents = shouldUseTouch;
  27115.         },
  27116.         createClass: ReactCompositeComponent.createClass,
  27117.         createDescriptor: function() {
  27118.             if (!0) {
  27119.                 warning(_warnedForDeprecation, "React.createDescriptor is deprecated and will be removed in the next version of React. Use React.createElement instead.");
  27120.                 _warnedForDeprecation = !0;
  27121.             }
  27122.             return createDescriptor.apply(this, arguments);
  27123.         },
  27124.         createElement: createDescriptor,
  27125.         constructAndRenderComponent: ReactMount.constructAndRenderComponent,
  27126.         constructAndRenderComponentByID: ReactMount.constructAndRenderComponentByID,
  27127.         renderComponent: ReactPerf.measure("React", "renderComponent", ReactMount.renderComponent),
  27128.         renderComponentToString: ReactServerRendering.renderComponentToString,
  27129.         renderComponentToStaticMarkup: ReactServerRendering.renderComponentToStaticMarkup,
  27130.         unmountComponentAtNode: ReactMount.unmountComponentAtNode,
  27131.         isValidClass: ReactDescriptor.isValidFactory,
  27132.         isValidComponent: ReactDescriptor.isValidDescriptor,
  27133.         withContext: ReactContext.withContext,
  27134.         __internals: {
  27135.             Component: ReactComponent,
  27136.             CurrentOwner: ReactCurrentOwner,
  27137.             DOMComponent: ReactDOMComponent,
  27138.             DOMPropertyOperations: DOMPropertyOperations,
  27139.             InstanceHandles: ReactInstanceHandles,
  27140.             Mount: ReactMount,
  27141.             MultiChild: ReactMultiChild,
  27142.             TextComponent: ReactTextComponent
  27143.         }
  27144.     };
  27145.     if (!0) {
  27146.         if (__webpack_require__(35).canUseDOM && window.top === window.self && navigator.userAgent.indexOf("Chrome") > -1) {
  27147.             console.debug("Download the React DevTools for a better development experience: http://fb.me/react-devtools");
  27148.             var expectedFeatures = [ Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.split, String.prototype.trim, Object.create, Object.freeze ];
  27149.             for (var i in expectedFeatures) if (!expectedFeatures[i]) {
  27150.                 console.error("One or more ES5 shim/shams expected by React are not available: http://fb.me/react-warning-polyfills");
  27151.                 break;
  27152.             }
  27153.         }
  27154.     }
  27155.     React.version = "0.11.2";
  27156.     module.exports = React;
  27157. }, function(module, exports, __webpack_require__) {
  27158.     "use strict";
  27159.     function ForEachBookKeeping(forEachFunction, forEachContext) {
  27160.         this.forEachFunction = forEachFunction;
  27161.         this.forEachContext = forEachContext;
  27162.     }
  27163.     function forEachSingleChild(traverseContext, child, name, i) {
  27164.         var forEachBookKeeping = traverseContext;
  27165.         forEachBookKeeping.forEachFunction.call(forEachBookKeeping.forEachContext, child, i);
  27166.     }
  27167.     function forEachChildren(children, forEachFunc, forEachContext) {
  27168.         if (null == children) return children;
  27169.         var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);
  27170.         traverseAllChildren(children, forEachSingleChild, traverseContext);
  27171.         ForEachBookKeeping.release(traverseContext);
  27172.     }
  27173.     function MapBookKeeping(mapResult, mapFunction, mapContext) {
  27174.         this.mapResult = mapResult;
  27175.         this.mapFunction = mapFunction;
  27176.         this.mapContext = mapContext;
  27177.     }
  27178.     function mapSingleChildIntoContext(traverseContext, child, name, i) {
  27179.         var mapBookKeeping = traverseContext, mapResult = mapBookKeeping.mapResult, keyUnique = !mapResult.hasOwnProperty(name);
  27180.         warning(keyUnique, "ReactChildren.map(...): Encountered two children with the same key, `%s`. Child keys must be unique; when two children share a key, only the first child will be used.", name);
  27181.         if (keyUnique) {
  27182.             var mappedChild = mapBookKeeping.mapFunction.call(mapBookKeeping.mapContext, child, i);
  27183.             mapResult[name] = mappedChild;
  27184.         }
  27185.     }
  27186.     function mapChildren(children, func, context) {
  27187.         if (null == children) return children;
  27188.         var mapResult = {}, traverseContext = MapBookKeeping.getPooled(mapResult, func, context);
  27189.         traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);
  27190.         MapBookKeeping.release(traverseContext);
  27191.         return mapResult;
  27192.     }
  27193.     function forEachSingleChildDummy(traverseContext, child, name, i) {
  27194.         return null;
  27195.     }
  27196.     function countChildren(children, context) {
  27197.         return traverseAllChildren(children, forEachSingleChildDummy, null);
  27198.     }
  27199.     var PooledClass = __webpack_require__(84), traverseAllChildren = __webpack_require__(312), warning = __webpack_require__(61), twoArgumentPooler = PooledClass.twoArgumentPooler, threeArgumentPooler = PooledClass.threeArgumentPooler;
  27200.     PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);
  27201.     PooledClass.addPoolingTo(MapBookKeeping, threeArgumentPooler);
  27202.     var ReactChildren = {
  27203.         forEach: forEachChildren,
  27204.         map: mapChildren,
  27205.         count: countChildren
  27206.     };
  27207.     module.exports = ReactChildren;
  27208. }, function(module, exports, __webpack_require__) {
  27209.     "use strict";
  27210.     var ReactDOMIDOperations = __webpack_require__(598), ReactMarkupChecksum = __webpack_require__(290), ReactMount = __webpack_require__(59), ReactPerf = __webpack_require__(77), ReactReconcileTransaction = __webpack_require__(614), getReactRootElementInContainer = __webpack_require__(305), invariant = __webpack_require__(4), setInnerHTML = __webpack_require__(310), ReactComponentBrowserEnvironment = {
  27211.         ReactReconcileTransaction: ReactReconcileTransaction,
  27212.         BackendIDOperations: ReactDOMIDOperations,
  27213.         unmountIDFromEnvironment: function(rootNodeID) {
  27214.             ReactMount.purgeID(rootNodeID);
  27215.         },
  27216.         mountImageIntoNode: ReactPerf.measure("ReactComponentBrowserEnvironment", "mountImageIntoNode", function(markup, container, shouldReuseMarkup) {
  27217.             !0 ? invariant(container && (1 === container.nodeType || 9 === container.nodeType), "mountComponentIntoNode(...): Target container is not valid.") : invariant(container && (1 === container.nodeType || 9 === container.nodeType));
  27218.             if (shouldReuseMarkup) if (ReactMarkupChecksum.canReuseMarkup(markup, getReactRootElementInContainer(container))) return; else {
  27219.                 !0 ? invariant(9 !== container.nodeType, "You're trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side.") : invariant(9 !== container.nodeType);
  27220.                 if (!0) console.warn("React attempted to use reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server.");
  27221.             }
  27222.             !0 ? invariant(9 !== container.nodeType, "You're trying to render a component to the document but you didn't use server rendering. We can't do this without using server rendering due to cross-browser quirks. See renderComponentToString() for server rendering.") : invariant(9 !== container.nodeType);
  27223.             setInnerHTML(container, markup);
  27224.         })
  27225.     };
  27226.     module.exports = ReactComponentBrowserEnvironment;
  27227. }, function(module, exports, __webpack_require__) {
  27228.     "use strict";
  27229.     var AutoFocusMixin = __webpack_require__(161), ReactBrowserComponentMixin = __webpack_require__(55), ReactCompositeComponent = __webpack_require__(56), ReactDOM = __webpack_require__(57), keyMirror = __webpack_require__(98), button = ReactDOM.button, mouseListenerNames = keyMirror({
  27230.         onClick: !0,
  27231.         onDoubleClick: !0,
  27232.         onMouseDown: !0,
  27233.         onMouseMove: !0,
  27234.         onMouseUp: !0,
  27235.         onClickCapture: !0,
  27236.         onDoubleClickCapture: !0,
  27237.         onMouseDownCapture: !0,
  27238.         onMouseMoveCapture: !0,
  27239.         onMouseUpCapture: !0
  27240.     }), ReactDOMButton = ReactCompositeComponent.createClass({
  27241.         displayName: "ReactDOMButton",
  27242.         mixins: [ AutoFocusMixin, ReactBrowserComponentMixin ],
  27243.         render: function() {
  27244.             var props = {};
  27245.             for (var key in this.props) if (this.props.hasOwnProperty(key) && (!this.props.disabled || !mouseListenerNames[key])) props[key] = this.props[key];
  27246.             return button(props, this.props.children);
  27247.         }
  27248.     });
  27249.     module.exports = ReactDOMButton;
  27250. }, function(module, exports, __webpack_require__) {
  27251.     "use strict";
  27252.     var EventConstants = __webpack_require__(45), LocalEventTrapMixin = __webpack_require__(287), ReactBrowserComponentMixin = __webpack_require__(55), ReactCompositeComponent = __webpack_require__(56), ReactDOM = __webpack_require__(57), form = ReactDOM.form, ReactDOMForm = ReactCompositeComponent.createClass({
  27253.         displayName: "ReactDOMForm",
  27254.         mixins: [ ReactBrowserComponentMixin, LocalEventTrapMixin ],
  27255.         render: function() {
  27256.             return this.transferPropsTo(form(null, this.props.children));
  27257.         },
  27258.         componentDidMount: function() {
  27259.             this.trapBubbledEvent(EventConstants.topLevelTypes.topReset, "reset");
  27260.             this.trapBubbledEvent(EventConstants.topLevelTypes.topSubmit, "submit");
  27261.         }
  27262.     });
  27263.     module.exports = ReactDOMForm;
  27264. }, function(module, exports, __webpack_require__) {
  27265.     "use strict";
  27266.     var CSSPropertyOperations = __webpack_require__(285), DOMChildrenOperations = __webpack_require__(586), DOMPropertyOperations = __webpack_require__(116), ReactMount = __webpack_require__(59), ReactPerf = __webpack_require__(77), invariant = __webpack_require__(4), setInnerHTML = __webpack_require__(310), INVALID_PROPERTY_ERRORS = {
  27267.         dangerouslySetInnerHTML: "`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",
  27268.         style: "`style` must be set using `updateStylesByID()`."
  27269.     }, ReactDOMIDOperations = {
  27270.         updatePropertyByID: ReactPerf.measure("ReactDOMIDOperations", "updatePropertyByID", function(id, name, value) {
  27271.             var node = ReactMount.getNode(id);
  27272.             !0 ? invariant(!INVALID_PROPERTY_ERRORS.hasOwnProperty(name), "updatePropertyByID(...): %s", INVALID_PROPERTY_ERRORS[name]) : invariant(!INVALID_PROPERTY_ERRORS.hasOwnProperty(name));
  27273.             if (null != value) DOMPropertyOperations.setValueForProperty(node, name, value); else DOMPropertyOperations.deleteValueForProperty(node, name);
  27274.         }),
  27275.         deletePropertyByID: ReactPerf.measure("ReactDOMIDOperations", "deletePropertyByID", function(id, name, value) {
  27276.             var node = ReactMount.getNode(id);
  27277.             !0 ? invariant(!INVALID_PROPERTY_ERRORS.hasOwnProperty(name), "updatePropertyByID(...): %s", INVALID_PROPERTY_ERRORS[name]) : invariant(!INVALID_PROPERTY_ERRORS.hasOwnProperty(name));
  27278.             DOMPropertyOperations.deleteValueForProperty(node, name, value);
  27279.         }),
  27280.         updateStylesByID: ReactPerf.measure("ReactDOMIDOperations", "updateStylesByID", function(id, styles) {
  27281.             var node = ReactMount.getNode(id);
  27282.             CSSPropertyOperations.setValueForStyles(node, styles);
  27283.         }),
  27284.         updateInnerHTMLByID: ReactPerf.measure("ReactDOMIDOperations", "updateInnerHTMLByID", function(id, html) {
  27285.             var node = ReactMount.getNode(id);
  27286.             setInnerHTML(node, html);
  27287.         }),
  27288.         updateTextContentByID: ReactPerf.measure("ReactDOMIDOperations", "updateTextContentByID", function(id, content) {
  27289.             var node = ReactMount.getNode(id);
  27290.             DOMChildrenOperations.updateTextContent(node, content);
  27291.         }),
  27292.         dangerouslyReplaceNodeWithMarkupByID: ReactPerf.measure("ReactDOMIDOperations", "dangerouslyReplaceNodeWithMarkupByID", function(id, markup) {
  27293.             var node = ReactMount.getNode(id);
  27294.             DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup(node, markup);
  27295.         }),
  27296.         dangerouslyProcessChildrenUpdates: ReactPerf.measure("ReactDOMIDOperations", "dangerouslyProcessChildrenUpdates", function(updates, markup) {
  27297.             for (var i = 0; i < updates.length; i++) updates[i].parentNode = ReactMount.getNode(updates[i].parentID);
  27298.             DOMChildrenOperations.processUpdates(updates, markup);
  27299.         })
  27300.     };
  27301.     module.exports = ReactDOMIDOperations;
  27302. }, function(module, exports, __webpack_require__) {
  27303.     "use strict";
  27304.     var EventConstants = __webpack_require__(45), LocalEventTrapMixin = __webpack_require__(287), ReactBrowserComponentMixin = __webpack_require__(55), ReactCompositeComponent = __webpack_require__(56), ReactDOM = __webpack_require__(57), img = ReactDOM.img, ReactDOMImg = ReactCompositeComponent.createClass({
  27305.         displayName: "ReactDOMImg",
  27306.         tagName: "IMG",
  27307.         mixins: [ ReactBrowserComponentMixin, LocalEventTrapMixin ],
  27308.         render: function() {
  27309.             return img(this.props);
  27310.         },
  27311.         componentDidMount: function() {
  27312.             this.trapBubbledEvent(EventConstants.topLevelTypes.topLoad, "load");
  27313.             this.trapBubbledEvent(EventConstants.topLevelTypes.topError, "error");
  27314.         }
  27315.     });
  27316.     module.exports = ReactDOMImg;
  27317. }, function(module, exports, __webpack_require__) {
  27318.     "use strict";
  27319.     var AutoFocusMixin = __webpack_require__(161), DOMPropertyOperations = __webpack_require__(116), LinkedValueUtils = __webpack_require__(212), ReactBrowserComponentMixin = __webpack_require__(55), ReactCompositeComponent = __webpack_require__(56), ReactDOM = __webpack_require__(57), ReactMount = __webpack_require__(59), invariant = __webpack_require__(4), merge = __webpack_require__(46), input = ReactDOM.input, instancesByReactID = {}, ReactDOMInput = ReactCompositeComponent.createClass({
  27320.         displayName: "ReactDOMInput",
  27321.         mixins: [ AutoFocusMixin, LinkedValueUtils.Mixin, ReactBrowserComponentMixin ],
  27322.         getInitialState: function() {
  27323.             var defaultValue = this.props.defaultValue;
  27324.             return {
  27325.                 checked: this.props.defaultChecked || !1,
  27326.                 value: null != defaultValue ? defaultValue : null
  27327.             };
  27328.         },
  27329.         shouldComponentUpdate: function() {
  27330.             return !this._isChanging;
  27331.         },
  27332.         render: function() {
  27333.             var props = merge(this.props);
  27334.             props.defaultChecked = null;
  27335.             props.defaultValue = null;
  27336.             var value = LinkedValueUtils.getValue(this);
  27337.             props.value = null != value ? value : this.state.value;
  27338.             var checked = LinkedValueUtils.getChecked(this);
  27339.             props.checked = null != checked ? checked : this.state.checked;
  27340.             props.onChange = this._handleChange;
  27341.             return input(props, this.props.children);
  27342.         },
  27343.         componentDidMount: function() {
  27344.             var id = ReactMount.getID(this.getDOMNode());
  27345.             instancesByReactID[id] = this;
  27346.         },
  27347.         componentWillUnmount: function() {
  27348.             var rootNode = this.getDOMNode(), id = ReactMount.getID(rootNode);
  27349.             delete instancesByReactID[id];
  27350.         },
  27351.         componentDidUpdate: function(prevProps, prevState, prevContext) {
  27352.             var rootNode = this.getDOMNode();
  27353.             if (null != this.props.checked) DOMPropertyOperations.setValueForProperty(rootNode, "checked", this.props.checked || !1);
  27354.             var value = LinkedValueUtils.getValue(this);
  27355.             if (null != value) DOMPropertyOperations.setValueForProperty(rootNode, "value", "" + value);
  27356.         },
  27357.         _handleChange: function(event) {
  27358.             var returnValue, onChange = LinkedValueUtils.getOnChange(this);
  27359.             if (onChange) {
  27360.                 this._isChanging = !0;
  27361.                 returnValue = onChange.call(this, event);
  27362.                 this._isChanging = !1;
  27363.             }
  27364.             this.setState({
  27365.                 checked: event.target.checked,
  27366.                 value: event.target.value
  27367.             });
  27368.             var name = this.props.name;
  27369.             if ("radio" === this.props.type && null != name) {
  27370.                 for (var rootNode = this.getDOMNode(), queryRoot = rootNode; queryRoot.parentNode; ) queryRoot = queryRoot.parentNode;
  27371.                 for (var group = queryRoot.querySelectorAll("input[name=" + JSON.stringify("" + name) + '][type="radio"]'), i = 0, groupLen = group.length; i < groupLen; i++) {
  27372.                     var otherNode = group[i];
  27373.                     if (otherNode !== rootNode && otherNode.form === rootNode.form) {
  27374.                         var otherID = ReactMount.getID(otherNode);
  27375.                         !0 ? invariant(otherID, "ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.") : invariant(otherID);
  27376.                         var otherInstance = instancesByReactID[otherID];
  27377.                         !0 ? invariant(otherInstance, "ReactDOMInput: Unknown radio button ID %s.", otherID) : invariant(otherInstance);
  27378.                         otherInstance.setState({
  27379.                             checked: !1
  27380.                         });
  27381.                     }
  27382.                 }
  27383.             }
  27384.             return returnValue;
  27385.         }
  27386.     });
  27387.     module.exports = ReactDOMInput;
  27388. }, function(module, exports, __webpack_require__) {
  27389.     "use strict";
  27390.     var ReactBrowserComponentMixin = __webpack_require__(55), ReactCompositeComponent = __webpack_require__(56), ReactDOM = __webpack_require__(57), warning = __webpack_require__(61), option = ReactDOM.option, ReactDOMOption = ReactCompositeComponent.createClass({
  27391.         displayName: "ReactDOMOption",
  27392.         mixins: [ ReactBrowserComponentMixin ],
  27393.         componentWillMount: function() {
  27394.             if (!0) warning(null == this.props.selected, "Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>.");
  27395.         },
  27396.         render: function() {
  27397.             return option(this.props, this.props.children);
  27398.         }
  27399.     });
  27400.     module.exports = ReactDOMOption;
  27401. }, function(module, exports, __webpack_require__) {
  27402.     "use strict";
  27403.     function selectValueType(props, propName, componentName) {
  27404.         if (null != props[propName]) if (props.multiple) {
  27405.             if (!Array.isArray(props[propName])) return new Error("The `" + propName + "` prop supplied to <select> must be an array if `multiple` is true.");
  27406.         } else if (Array.isArray(props[propName])) return new Error("The `" + propName + "` prop supplied to <select> must be a scalar value if `multiple` is false.");
  27407.     }
  27408.     function updateOptions(component, propValue) {
  27409.         var selectedValue, i, l, multiple = component.props.multiple, value = null != propValue ? propValue : component.state.value, options = component.getDOMNode().options;
  27410.         if (multiple) {
  27411.             selectedValue = {};
  27412.             for (i = 0, l = value.length; i < l; ++i) selectedValue["" + value[i]] = !0;
  27413.         } else selectedValue = "" + value;
  27414.         for (i = 0, l = options.length; i < l; i++) {
  27415.             var selected = multiple ? selectedValue.hasOwnProperty(options[i].value) : options[i].value === selectedValue;
  27416.             if (selected !== options[i].selected) options[i].selected = selected;
  27417.         }
  27418.     }
  27419.     var AutoFocusMixin = __webpack_require__(161), LinkedValueUtils = __webpack_require__(212), ReactBrowserComponentMixin = __webpack_require__(55), ReactCompositeComponent = __webpack_require__(56), ReactDOM = __webpack_require__(57), merge = __webpack_require__(46), select = ReactDOM.select, ReactDOMSelect = ReactCompositeComponent.createClass({
  27420.         displayName: "ReactDOMSelect",
  27421.         mixins: [ AutoFocusMixin, LinkedValueUtils.Mixin, ReactBrowserComponentMixin ],
  27422.         propTypes: {
  27423.             defaultValue: selectValueType,
  27424.             value: selectValueType
  27425.         },
  27426.         getInitialState: function() {
  27427.             return {
  27428.                 value: this.props.defaultValue || (this.props.multiple ? [] : "")
  27429.             };
  27430.         },
  27431.         componentWillReceiveProps: function(nextProps) {
  27432.             if (!this.props.multiple && nextProps.multiple) this.setState({
  27433.                 value: [ this.state.value ]
  27434.             }); else if (this.props.multiple && !nextProps.multiple) this.setState({
  27435.                 value: this.state.value[0]
  27436.             });
  27437.         },
  27438.         shouldComponentUpdate: function() {
  27439.             return !this._isChanging;
  27440.         },
  27441.         render: function() {
  27442.             var props = merge(this.props);
  27443.             props.onChange = this._handleChange;
  27444.             props.value = null;
  27445.             return select(props, this.props.children);
  27446.         },
  27447.         componentDidMount: function() {
  27448.             updateOptions(this, LinkedValueUtils.getValue(this));
  27449.         },
  27450.         componentDidUpdate: function(prevProps) {
  27451.             var value = LinkedValueUtils.getValue(this), prevMultiple = !!prevProps.multiple, multiple = !!this.props.multiple;
  27452.             if (null != value || prevMultiple !== multiple) updateOptions(this, value);
  27453.         },
  27454.         _handleChange: function(event) {
  27455.             var returnValue, onChange = LinkedValueUtils.getOnChange(this);
  27456.             if (onChange) {
  27457.                 this._isChanging = !0;
  27458.                 returnValue = onChange.call(this, event);
  27459.                 this._isChanging = !1;
  27460.             }
  27461.             var selectedValue;
  27462.             if (this.props.multiple) {
  27463.                 selectedValue = [];
  27464.                 for (var options = event.target.options, i = 0, l = options.length; i < l; i++) if (options[i].selected) selectedValue.push(options[i].value);
  27465.             } else selectedValue = event.target.value;
  27466.             this.setState({
  27467.                 value: selectedValue
  27468.             });
  27469.             return returnValue;
  27470.         }
  27471.     });
  27472.     module.exports = ReactDOMSelect;
  27473. }, function(module, exports, __webpack_require__) {
  27474.     "use strict";
  27475.     function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {
  27476.         return anchorNode === focusNode && anchorOffset === focusOffset;
  27477.     }
  27478.     function getIEOffsets(node) {
  27479.         var selection = document.selection, selectedRange = selection.createRange(), selectedLength = selectedRange.text.length, fromStart = selectedRange.duplicate();
  27480.         fromStart.moveToElementText(node);
  27481.         fromStart.setEndPoint("EndToStart", selectedRange);
  27482.         var startOffset = fromStart.text.length;
  27483.         return {
  27484.             start: startOffset,
  27485.             end: startOffset + selectedLength
  27486.         };
  27487.     }
  27488.     function getModernOffsets(node) {
  27489.         var selection = window.getSelection();
  27490.         if (0 === selection.rangeCount) return null;
  27491.         var anchorNode = selection.anchorNode, anchorOffset = selection.anchorOffset, focusNode = selection.focusNode, focusOffset = selection.focusOffset, currentRange = selection.getRangeAt(0), isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset), rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length, tempRange = currentRange.cloneRange();
  27492.         tempRange.selectNodeContents(node);
  27493.         tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);
  27494.         var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset), start = isTempRangeCollapsed ? 0 : tempRange.toString().length, end = start + rangeLength, detectionRange = document.createRange();
  27495.         detectionRange.setStart(anchorNode, anchorOffset);
  27496.         detectionRange.setEnd(focusNode, focusOffset);
  27497.         var isBackward = detectionRange.collapsed;
  27498.         detectionRange.detach();
  27499.         return {
  27500.             start: isBackward ? end : start,
  27501.             end: isBackward ? start : end
  27502.         };
  27503.     }
  27504.     function setIEOffsets(node, offsets) {
  27505.         var start, end, range = document.selection.createRange().duplicate();
  27506.         if ("undefined" == typeof offsets.end) {
  27507.             start = offsets.start;
  27508.             end = start;
  27509.         } else if (offsets.start > offsets.end) {
  27510.             start = offsets.end;
  27511.             end = offsets.start;
  27512.         } else {
  27513.             start = offsets.start;
  27514.             end = offsets.end;
  27515.         }
  27516.         range.moveToElementText(node);
  27517.         range.moveStart("character", start);
  27518.         range.setEndPoint("EndToStart", range);
  27519.         range.moveEnd("character", end - start);
  27520.         range.select();
  27521.     }
  27522.     function setModernOffsets(node, offsets) {
  27523.         var selection = window.getSelection(), length = node[getTextContentAccessor()].length, start = Math.min(offsets.start, length), end = "undefined" == typeof offsets.end ? start : Math.min(offsets.end, length);
  27524.         if (!selection.extend && start > end) {
  27525.             var temp = end;
  27526.             end = start;
  27527.             start = temp;
  27528.         }
  27529.         var startMarker = getNodeForCharacterOffset(node, start), endMarker = getNodeForCharacterOffset(node, end);
  27530.         if (startMarker && endMarker) {
  27531.             var range = document.createRange();
  27532.             range.setStart(startMarker.node, startMarker.offset);
  27533.             selection.removeAllRanges();
  27534.             if (start > end) {
  27535.                 selection.addRange(range);
  27536.                 selection.extend(endMarker.node, endMarker.offset);
  27537.             } else {
  27538.                 range.setEnd(endMarker.node, endMarker.offset);
  27539.                 selection.addRange(range);
  27540.             }
  27541.             range.detach();
  27542.         }
  27543.     }
  27544.     var ExecutionEnvironment = __webpack_require__(35), getNodeForCharacterOffset = __webpack_require__(638), getTextContentAccessor = __webpack_require__(221), useIEOffsets = ExecutionEnvironment.canUseDOM && document.selection, ReactDOMSelection = {
  27545.         getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,
  27546.         setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets
  27547.     };
  27548.     module.exports = ReactDOMSelection;
  27549. }, function(module, exports, __webpack_require__) {
  27550.     "use strict";
  27551.     var AutoFocusMixin = __webpack_require__(161), DOMPropertyOperations = __webpack_require__(116), LinkedValueUtils = __webpack_require__(212), ReactBrowserComponentMixin = __webpack_require__(55), ReactCompositeComponent = __webpack_require__(56), ReactDOM = __webpack_require__(57), invariant = __webpack_require__(4), merge = __webpack_require__(46), warning = __webpack_require__(61), textarea = ReactDOM.textarea, ReactDOMTextarea = ReactCompositeComponent.createClass({
  27552.         displayName: "ReactDOMTextarea",
  27553.         mixins: [ AutoFocusMixin, LinkedValueUtils.Mixin, ReactBrowserComponentMixin ],
  27554.         getInitialState: function() {
  27555.             var defaultValue = this.props.defaultValue, children = this.props.children;
  27556.             if (null != children) {
  27557.                 if (!0) warning(!1, "Use the `defaultValue` or `value` props instead of setting children on <textarea>.");
  27558.                 !0 ? invariant(null == defaultValue, "If you supply `defaultValue` on a <textarea>, do not pass children.") : invariant(null == defaultValue);
  27559.                 if (Array.isArray(children)) {
  27560.                     !0 ? invariant(children.length <= 1, "<textarea> can only have at most one child.") : invariant(children.length <= 1);
  27561.                     children = children[0];
  27562.                 }
  27563.                 defaultValue = "" + children;
  27564.             }
  27565.             if (null == defaultValue) defaultValue = "";
  27566.             var value = LinkedValueUtils.getValue(this);
  27567.             return {
  27568.                 initialValue: "" + (null != value ? value : defaultValue)
  27569.             };
  27570.         },
  27571.         shouldComponentUpdate: function() {
  27572.             return !this._isChanging;
  27573.         },
  27574.         render: function() {
  27575.             var props = merge(this.props);
  27576.             !0 ? invariant(null == props.dangerouslySetInnerHTML, "`dangerouslySetInnerHTML` does not make sense on <textarea>.") : invariant(null == props.dangerouslySetInnerHTML);
  27577.             props.defaultValue = null;
  27578.             props.value = null;
  27579.             props.onChange = this._handleChange;
  27580.             return textarea(props, this.state.initialValue);
  27581.         },
  27582.         componentDidUpdate: function(prevProps, prevState, prevContext) {
  27583.             var value = LinkedValueUtils.getValue(this);
  27584.             if (null != value) {
  27585.                 var rootNode = this.getDOMNode();
  27586.                 DOMPropertyOperations.setValueForProperty(rootNode, "value", "" + value);
  27587.             }
  27588.         },
  27589.         _handleChange: function(event) {
  27590.             var returnValue, onChange = LinkedValueUtils.getOnChange(this);
  27591.             if (onChange) {
  27592.                 this._isChanging = !0;
  27593.                 returnValue = onChange.call(this, event);
  27594.                 this._isChanging = !1;
  27595.             }
  27596.             this.setState({
  27597.                 value: event.target.value
  27598.             });
  27599.             return returnValue;
  27600.         }
  27601.     });
  27602.     module.exports = ReactDOMTextarea;
  27603. }, function(module, exports, __webpack_require__) {
  27604.     "use strict";
  27605.     function ReactDefaultBatchingStrategyTransaction() {
  27606.         this.reinitializeTransaction();
  27607.     }
  27608.     var ReactUpdates = __webpack_require__(122), Transaction = __webpack_require__(163), emptyFunction = __webpack_require__(78), mixInto = __webpack_require__(60), RESET_BATCHED_UPDATES = {
  27609.         initialize: emptyFunction,
  27610.         close: function() {
  27611.             ReactDefaultBatchingStrategy.isBatchingUpdates = !1;
  27612.         }
  27613.     }, FLUSH_BATCHED_UPDATES = {
  27614.         initialize: emptyFunction,
  27615.         close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)
  27616.     }, TRANSACTION_WRAPPERS = [ FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES ];
  27617.     mixInto(ReactDefaultBatchingStrategyTransaction, Transaction.Mixin);
  27618.     mixInto(ReactDefaultBatchingStrategyTransaction, {
  27619.         getTransactionWrappers: function() {
  27620.             return TRANSACTION_WRAPPERS;
  27621.         }
  27622.     });
  27623.     var transaction = new ReactDefaultBatchingStrategyTransaction(), ReactDefaultBatchingStrategy = {
  27624.         isBatchingUpdates: !1,
  27625.         batchedUpdates: function(callback, a, b) {
  27626.             var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;
  27627.             ReactDefaultBatchingStrategy.isBatchingUpdates = !0;
  27628.             if (alreadyBatchingUpdates) callback(a, b); else transaction.perform(callback, null, a, b);
  27629.         }
  27630.     };
  27631.     module.exports = ReactDefaultBatchingStrategy;
  27632. }, function(module, exports, __webpack_require__) {
  27633.     "use strict";
  27634.     function inject() {
  27635.         ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);
  27636.         ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);
  27637.         ReactInjection.EventPluginHub.injectInstanceHandle(ReactInstanceHandles);
  27638.         ReactInjection.EventPluginHub.injectMount(ReactMount);
  27639.         ReactInjection.EventPluginHub.injectEventPluginsByName({
  27640.             SimpleEventPlugin: SimpleEventPlugin,
  27641.             EnterLeaveEventPlugin: EnterLeaveEventPlugin,
  27642.             ChangeEventPlugin: ChangeEventPlugin,
  27643.             CompositionEventPlugin: CompositionEventPlugin,
  27644.             MobileSafariClickEventPlugin: MobileSafariClickEventPlugin,
  27645.             SelectEventPlugin: SelectEventPlugin,
  27646.             BeforeInputEventPlugin: BeforeInputEventPlugin
  27647.         });
  27648.         ReactInjection.DOM.injectComponentClasses({
  27649.             button: ReactDOMButton,
  27650.             form: ReactDOMForm,
  27651.             img: ReactDOMImg,
  27652.             input: ReactDOMInput,
  27653.             option: ReactDOMOption,
  27654.             select: ReactDOMSelect,
  27655.             textarea: ReactDOMTextarea,
  27656.             html: createFullPageComponent(ReactDOM.html),
  27657.             head: createFullPageComponent(ReactDOM.head),
  27658.             body: createFullPageComponent(ReactDOM.body)
  27659.         });
  27660.         ReactInjection.CompositeComponent.injectMixin(ReactBrowserComponentMixin);
  27661.         ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);
  27662.         ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);
  27663.         ReactInjection.EmptyComponent.injectEmptyComponent(ReactDOM.noscript);
  27664.         ReactInjection.Updates.injectReconcileTransaction(ReactComponentBrowserEnvironment.ReactReconcileTransaction);
  27665.         ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);
  27666.         ReactInjection.RootIndex.injectCreateReactRootIndex(ExecutionEnvironment.canUseDOM ? ClientReactRootIndex.createReactRootIndex : ServerReactRootIndex.createReactRootIndex);
  27667.         ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);
  27668.         if (!0) {
  27669.             if (/[?&]react_perf\b/.test(ExecutionEnvironment.canUseDOM && window.location.href || "")) {
  27670.                 __webpack_require__(607).start();
  27671.             }
  27672.         }
  27673.     }
  27674.     var BeforeInputEventPlugin = __webpack_require__(582), ChangeEventPlugin = __webpack_require__(583), ClientReactRootIndex = __webpack_require__(584), CompositionEventPlugin = __webpack_require__(585), DefaultEventPluginOrder = __webpack_require__(588), EnterLeaveEventPlugin = __webpack_require__(589), ExecutionEnvironment = __webpack_require__(35), HTMLDOMPropertyConfig = __webpack_require__(591), MobileSafariClickEventPlugin = __webpack_require__(592), ReactBrowserComponentMixin = __webpack_require__(55), ReactComponentBrowserEnvironment = __webpack_require__(595), ReactDefaultBatchingStrategy = __webpack_require__(605), ReactDOM = __webpack_require__(57), ReactDOMButton = __webpack_require__(596), ReactDOMForm = __webpack_require__(597), ReactDOMImg = __webpack_require__(599), ReactDOMInput = __webpack_require__(600), ReactDOMOption = __webpack_require__(601), ReactDOMSelect = __webpack_require__(602), ReactDOMTextarea = __webpack_require__(604), ReactEventListener = __webpack_require__(611), ReactInjection = __webpack_require__(612), ReactInstanceHandles = __webpack_require__(121), ReactMount = __webpack_require__(59), SelectEventPlugin = __webpack_require__(618), ServerReactRootIndex = __webpack_require__(619), SimpleEventPlugin = __webpack_require__(620), SVGDOMPropertyConfig = __webpack_require__(617), createFullPageComponent = __webpack_require__(632);
  27675.     module.exports = {
  27676.         inject: inject
  27677.     };
  27678. }, function(module, exports, __webpack_require__) {
  27679.     "use strict";
  27680.     function roundFloat(val) {
  27681.         return Math.floor(100 * val) / 100;
  27682.     }
  27683.     function addValue(obj, key, val) {
  27684.         obj[key] = (obj[key] || 0) + val;
  27685.     }
  27686.     var DOMProperty = __webpack_require__(96), ReactDefaultPerfAnalysis = __webpack_require__(608), ReactMount = __webpack_require__(59), ReactPerf = __webpack_require__(77), performanceNow = __webpack_require__(647), ReactDefaultPerf = {
  27687.         _allMeasurements: [],
  27688.         _mountStack: [ 0 ],
  27689.         _injected: !1,
  27690.         start: function() {
  27691.             if (!ReactDefaultPerf._injected) ReactPerf.injection.injectMeasure(ReactDefaultPerf.measure);
  27692.             ReactDefaultPerf._allMeasurements.length = 0;
  27693.             ReactPerf.enableMeasure = !0;
  27694.         },
  27695.         stop: function() {
  27696.             ReactPerf.enableMeasure = !1;
  27697.         },
  27698.         getLastMeasurements: function() {
  27699.             return ReactDefaultPerf._allMeasurements;
  27700.         },
  27701.         printExclusive: function(measurements) {
  27702.             measurements = measurements || ReactDefaultPerf._allMeasurements;
  27703.             var summary = ReactDefaultPerfAnalysis.getExclusiveSummary(measurements);
  27704.             console.table(summary.map(function(item) {
  27705.                 return {
  27706.                     "Component class name": item.componentName,
  27707.                     "Total inclusive time (ms)": roundFloat(item.inclusive),
  27708.                     "Exclusive mount time (ms)": roundFloat(item.exclusive),
  27709.                     "Exclusive render time (ms)": roundFloat(item.render),
  27710.                     "Mount time per instance (ms)": roundFloat(item.exclusive / item.count),
  27711.                     "Render time per instance (ms)": roundFloat(item.render / item.count),
  27712.                     Instances: item.count
  27713.                 };
  27714.             }));
  27715.         },
  27716.         printInclusive: function(measurements) {
  27717.             measurements = measurements || ReactDefaultPerf._allMeasurements;
  27718.             var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(measurements);
  27719.             console.table(summary.map(function(item) {
  27720.                 return {
  27721.                     "Owner > component": item.componentName,
  27722.                     "Inclusive time (ms)": roundFloat(item.time),
  27723.                     Instances: item.count
  27724.                 };
  27725.             }));
  27726.             console.log("Total time:", ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + " ms");
  27727.         },
  27728.         printWasted: function(measurements) {
  27729.             measurements = measurements || ReactDefaultPerf._allMeasurements;
  27730.             var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(measurements, !0);
  27731.             console.table(summary.map(function(item) {
  27732.                 return {
  27733.                     "Owner > component": item.componentName,
  27734.                     "Wasted time (ms)": item.time,
  27735.                     Instances: item.count
  27736.                 };
  27737.             }));
  27738.             console.log("Total time:", ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + " ms");
  27739.         },
  27740.         printDOM: function(measurements) {
  27741.             measurements = measurements || ReactDefaultPerf._allMeasurements;
  27742.             var summary = ReactDefaultPerfAnalysis.getDOMSummary(measurements);
  27743.             console.table(summary.map(function(item) {
  27744.                 var result = {};
  27745.                 result[DOMProperty.ID_ATTRIBUTE_NAME] = item.id;
  27746.                 result.type = item.type;
  27747.                 result.args = JSON.stringify(item.args);
  27748.                 return result;
  27749.             }));
  27750.             console.log("Total time:", ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + " ms");
  27751.         },
  27752.         _recordWrite: function(id, fnName, totalTime, args) {
  27753.             var writes = ReactDefaultPerf._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1].writes;
  27754.             writes[id] = writes[id] || [];
  27755.             writes[id].push({
  27756.                 type: fnName,
  27757.                 time: totalTime,
  27758.                 args: args
  27759.             });
  27760.         },
  27761.         measure: function(moduleName, fnName, func) {
  27762.             return function() {
  27763.                 var totalTime, rv, start, args = Array.prototype.slice.call(arguments, 0);
  27764.                 if ("_renderNewRootComponent" === fnName || "flushBatchedUpdates" === fnName) {
  27765.                     ReactDefaultPerf._allMeasurements.push({
  27766.                         exclusive: {},
  27767.                         inclusive: {},
  27768.                         render: {},
  27769.                         counts: {},
  27770.                         writes: {},
  27771.                         displayNames: {},
  27772.                         totalTime: 0
  27773.                     });
  27774.                     start = performanceNow();
  27775.                     rv = func.apply(this, args);
  27776.                     ReactDefaultPerf._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1].totalTime = performanceNow() - start;
  27777.                     return rv;
  27778.                 } else if ("ReactDOMIDOperations" === moduleName || "ReactComponentBrowserEnvironment" === moduleName) {
  27779.                     start = performanceNow();
  27780.                     rv = func.apply(this, args);
  27781.                     totalTime = performanceNow() - start;
  27782.                     if ("mountImageIntoNode" === fnName) {
  27783.                         var mountID = ReactMount.getID(args[1]);
  27784.                         ReactDefaultPerf._recordWrite(mountID, fnName, totalTime, args[0]);
  27785.                     } else if ("dangerouslyProcessChildrenUpdates" === fnName) args[0].forEach(function(update) {
  27786.                         var writeArgs = {};
  27787.                         if (null !== update.fromIndex) writeArgs.fromIndex = update.fromIndex;
  27788.                         if (null !== update.toIndex) writeArgs.toIndex = update.toIndex;
  27789.                         if (null !== update.textContent) writeArgs.textContent = update.textContent;
  27790.                         if (null !== update.markupIndex) writeArgs.markup = args[1][update.markupIndex];
  27791.                         ReactDefaultPerf._recordWrite(update.parentID, update.type, totalTime, writeArgs);
  27792.                     }); else ReactDefaultPerf._recordWrite(args[0], fnName, totalTime, Array.prototype.slice.call(args, 1));
  27793.                     return rv;
  27794.                 } else if ("ReactCompositeComponent" === moduleName && ("mountComponent" === fnName || "updateComponent" === fnName || "_renderValidatedComponent" === fnName)) {
  27795.                     var rootNodeID = "mountComponent" === fnName ? args[0] : this._rootNodeID, isRender = "_renderValidatedComponent" === fnName, isMount = "mountComponent" === fnName, mountStack = ReactDefaultPerf._mountStack, entry = ReactDefaultPerf._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1];
  27796.                     if (isRender) addValue(entry.counts, rootNodeID, 1); else if (isMount) mountStack.push(0);
  27797.                     start = performanceNow();
  27798.                     rv = func.apply(this, args);
  27799.                     totalTime = performanceNow() - start;
  27800.                     if (isRender) addValue(entry.render, rootNodeID, totalTime); else if (isMount) {
  27801.                         var subMountTime = mountStack.pop();
  27802.                         mountStack[mountStack.length - 1] += totalTime;
  27803.                         addValue(entry.exclusive, rootNodeID, totalTime - subMountTime);
  27804.                         addValue(entry.inclusive, rootNodeID, totalTime);
  27805.                     } else addValue(entry.inclusive, rootNodeID, totalTime);
  27806.                     entry.displayNames[rootNodeID] = {
  27807.                         current: this.constructor.displayName,
  27808.                         owner: this._owner ? this._owner.constructor.displayName : "<root>"
  27809.                     };
  27810.                     return rv;
  27811.                 } else return func.apply(this, args);
  27812.             };
  27813.         }
  27814.     };
  27815.     module.exports = ReactDefaultPerf;
  27816. }, function(module, exports, __webpack_require__) {
  27817.     function getTotalTime(measurements) {
  27818.         for (var totalTime = 0, i = 0; i < measurements.length; i++) {
  27819.             totalTime += measurements[i].totalTime;
  27820.         }
  27821.         return totalTime;
  27822.     }
  27823.     function getDOMSummary(measurements) {
  27824.         for (var items = [], i = 0; i < measurements.length; i++) {
  27825.             var id, measurement = measurements[i];
  27826.             for (id in measurement.writes) measurement.writes[id].forEach(function(write) {
  27827.                 items.push({
  27828.                     id: id,
  27829.                     type: DOM_OPERATION_TYPES[write.type] || write.type,
  27830.                     args: write.args
  27831.                 });
  27832.             });
  27833.         }
  27834.         return items;
  27835.     }
  27836.     function getExclusiveSummary(measurements) {
  27837.         for (var displayName, candidates = {}, i = 0; i < measurements.length; i++) {
  27838.             var measurement = measurements[i], allIDs = merge(measurement.exclusive, measurement.inclusive);
  27839.             for (var id in allIDs) {
  27840.                 displayName = measurement.displayNames[id].current;
  27841.                 candidates[displayName] = candidates[displayName] || {
  27842.                     componentName: displayName,
  27843.                     inclusive: 0,
  27844.                     exclusive: 0,
  27845.                     render: 0,
  27846.                     count: 0
  27847.                 };
  27848.                 if (measurement.render[id]) candidates[displayName].render += measurement.render[id];
  27849.                 if (measurement.exclusive[id]) candidates[displayName].exclusive += measurement.exclusive[id];
  27850.                 if (measurement.inclusive[id]) candidates[displayName].inclusive += measurement.inclusive[id];
  27851.                 if (measurement.counts[id]) candidates[displayName].count += measurement.counts[id];
  27852.             }
  27853.         }
  27854.         var arr = [];
  27855.         for (displayName in candidates) if (candidates[displayName].exclusive >= DONT_CARE_THRESHOLD) arr.push(candidates[displayName]);
  27856.         arr.sort(function(a, b) {
  27857.             return b.exclusive - a.exclusive;
  27858.         });
  27859.         return arr;
  27860.     }
  27861.     function getInclusiveSummary(measurements, onlyClean) {
  27862.         for (var inclusiveKey, candidates = {}, i = 0; i < measurements.length; i++) {
  27863.             var cleanComponents, measurement = measurements[i], allIDs = merge(measurement.exclusive, measurement.inclusive);
  27864.             if (onlyClean) cleanComponents = getUnchangedComponents(measurement);
  27865.             for (var id in allIDs) if (!onlyClean || cleanComponents[id]) {
  27866.                 var displayName = measurement.displayNames[id];
  27867.                 inclusiveKey = displayName.owner + " > " + displayName.current;
  27868.                 candidates[inclusiveKey] = candidates[inclusiveKey] || {
  27869.                     componentName: inclusiveKey,
  27870.                     time: 0,
  27871.                     count: 0
  27872.                 };
  27873.                 if (measurement.inclusive[id]) candidates[inclusiveKey].time += measurement.inclusive[id];
  27874.                 if (measurement.counts[id]) candidates[inclusiveKey].count += measurement.counts[id];
  27875.             }
  27876.         }
  27877.         var arr = [];
  27878.         for (inclusiveKey in candidates) if (candidates[inclusiveKey].time >= DONT_CARE_THRESHOLD) arr.push(candidates[inclusiveKey]);
  27879.         arr.sort(function(a, b) {
  27880.             return b.time - a.time;
  27881.         });
  27882.         return arr;
  27883.     }
  27884.     function getUnchangedComponents(measurement) {
  27885.         var cleanComponents = {}, dirtyLeafIDs = Object.keys(measurement.writes), allIDs = merge(measurement.exclusive, measurement.inclusive);
  27886.         for (var id in allIDs) {
  27887.             for (var isDirty = !1, i = 0; i < dirtyLeafIDs.length; i++) if (0 === dirtyLeafIDs[i].indexOf(id)) {
  27888.                 isDirty = !0;
  27889.                 break;
  27890.             }
  27891.             if (!isDirty && measurement.counts[id] > 0) cleanComponents[id] = !0;
  27892.         }
  27893.         return cleanComponents;
  27894.     }
  27895.     var merge = __webpack_require__(46), DONT_CARE_THRESHOLD = 1.2, DOM_OPERATION_TYPES = {
  27896.         mountImageIntoNode: "set innerHTML",
  27897.         INSERT_MARKUP: "set innerHTML",
  27898.         MOVE_EXISTING: "move",
  27899.         REMOVE_NODE: "remove",
  27900.         TEXT_CONTENT: "set textContent",
  27901.         updatePropertyByID: "update attribute",
  27902.         deletePropertyByID: "delete attribute",
  27903.         updateStylesByID: "update styles",
  27904.         updateInnerHTMLByID: "set innerHTML",
  27905.         dangerouslyReplaceNodeWithMarkupByID: "replace"
  27906.     }, ReactDefaultPerfAnalysis = {
  27907.         getExclusiveSummary: getExclusiveSummary,
  27908.         getInclusiveSummary: getInclusiveSummary,
  27909.         getDOMSummary: getDOMSummary,
  27910.         getTotalTime: getTotalTime
  27911.     };
  27912.     module.exports = ReactDefaultPerfAnalysis;
  27913. }, function(module, exports, __webpack_require__) {
  27914.     "use strict";
  27915.     var ReactErrorUtils = {
  27916.         guard: function(func, name) {
  27917.             return func;
  27918.         }
  27919.     };
  27920.     module.exports = ReactErrorUtils;
  27921. }, function(module, exports, __webpack_require__) {
  27922.     "use strict";
  27923.     function runEventQueueInBatch(events) {
  27924.         EventPluginHub.enqueueEvents(events);
  27925.         EventPluginHub.processEventQueue();
  27926.     }
  27927.     var EventPluginHub = __webpack_require__(143), ReactEventEmitterMixin = {
  27928.         handleTopLevel: function(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent) {
  27929.             runEventQueueInBatch(EventPluginHub.extractEvents(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent));
  27930.         }
  27931.     };
  27932.     module.exports = ReactEventEmitterMixin;
  27933. }, function(module, exports, __webpack_require__) {
  27934.     "use strict";
  27935.     function findParent(node) {
  27936.         var nodeID = ReactMount.getID(node), rootID = ReactInstanceHandles.getReactRootIDFromNodeID(nodeID), container = ReactMount.findReactContainerForID(rootID);
  27937.         return ReactMount.getFirstReactDOM(container);
  27938.     }
  27939.     function TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {
  27940.         this.topLevelType = topLevelType;
  27941.         this.nativeEvent = nativeEvent;
  27942.         this.ancestors = [];
  27943.     }
  27944.     function handleTopLevelImpl(bookKeeping) {
  27945.         for (var topLevelTarget = ReactMount.getFirstReactDOM(getEventTarget(bookKeeping.nativeEvent)) || window, ancestor = topLevelTarget; ancestor; ) {
  27946.             bookKeeping.ancestors.push(ancestor);
  27947.             ancestor = findParent(ancestor);
  27948.         }
  27949.         for (var i = 0, l = bookKeeping.ancestors.length; i < l; i++) {
  27950.             topLevelTarget = bookKeeping.ancestors[i];
  27951.             var topLevelTargetID = ReactMount.getID(topLevelTarget) || "";
  27952.             ReactEventListener._handleTopLevel(bookKeeping.topLevelType, topLevelTarget, topLevelTargetID, bookKeeping.nativeEvent);
  27953.         }
  27954.     }
  27955.     function scrollValueMonitor(cb) {
  27956.         cb(getUnboundedScrollPosition(window));
  27957.     }
  27958.     var EventListener = __webpack_require__(590), ExecutionEnvironment = __webpack_require__(35), PooledClass = __webpack_require__(84), ReactInstanceHandles = __webpack_require__(121), ReactMount = __webpack_require__(59), ReactUpdates = __webpack_require__(122), getEventTarget = __webpack_require__(220), getUnboundedScrollPosition = __webpack_require__(306);
  27959.     __webpack_require__(60)(TopLevelCallbackBookKeeping, {
  27960.         destructor: function() {
  27961.             this.topLevelType = null;
  27962.             this.nativeEvent = null;
  27963.             this.ancestors.length = 0;
  27964.         }
  27965.     });
  27966.     PooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);
  27967.     var ReactEventListener = {
  27968.         _enabled: !0,
  27969.         _handleTopLevel: null,
  27970.         WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,
  27971.         setHandleTopLevel: function(handleTopLevel) {
  27972.             ReactEventListener._handleTopLevel = handleTopLevel;
  27973.         },
  27974.         setEnabled: function(enabled) {
  27975.             ReactEventListener._enabled = !!enabled;
  27976.         },
  27977.         isEnabled: function() {
  27978.             return ReactEventListener._enabled;
  27979.         },
  27980.         trapBubbledEvent: function(topLevelType, handlerBaseName, handle) {
  27981.             var element = handle;
  27982.             if (element) return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));
  27983.         },
  27984.         trapCapturedEvent: function(topLevelType, handlerBaseName, handle) {
  27985.             var element = handle;
  27986.             if (element) return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));
  27987.         },
  27988.         monitorScrollValue: function(refresh) {
  27989.             var callback = scrollValueMonitor.bind(null, refresh);
  27990.             EventListener.listen(window, "scroll", callback);
  27991.             EventListener.listen(window, "resize", callback);
  27992.         },
  27993.         dispatchEvent: function(topLevelType, nativeEvent) {
  27994.             if (ReactEventListener._enabled) {
  27995.                 var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);
  27996.                 try {
  27997.                     ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);
  27998.                 } finally {
  27999.                     TopLevelCallbackBookKeeping.release(bookKeeping);
  28000.                 }
  28001.             }
  28002.         }
  28003.     };
  28004.     module.exports = ReactEventListener;
  28005. }, function(module, exports, __webpack_require__) {
  28006.     "use strict";
  28007.     var DOMProperty = __webpack_require__(96), EventPluginHub = __webpack_require__(143), ReactComponent = __webpack_require__(119), ReactCompositeComponent = __webpack_require__(56), ReactDOM = __webpack_require__(57), ReactEmptyComponent = __webpack_require__(214), ReactBrowserEventEmitter = __webpack_require__(118), ReactPerf = __webpack_require__(77), ReactRootIndex = __webpack_require__(298), ReactUpdates = __webpack_require__(122), ReactInjection = {
  28008.         Component: ReactComponent.injection,
  28009.         CompositeComponent: ReactCompositeComponent.injection,
  28010.         DOMProperty: DOMProperty.injection,
  28011.         EmptyComponent: ReactEmptyComponent.injection,
  28012.         EventPluginHub: EventPluginHub.injection,
  28013.         DOM: ReactDOM.injection,
  28014.         EventEmitter: ReactBrowserEventEmitter.injection,
  28015.         Perf: ReactPerf.injection,
  28016.         RootIndex: ReactRootIndex.injection,
  28017.         Updates: ReactUpdates.injection
  28018.     };
  28019.     module.exports = ReactInjection;
  28020. }, function(module, exports, __webpack_require__) {
  28021.     "use strict";
  28022.     function createTransferStrategy(mergeStrategy) {
  28023.         return function(props, key, value) {
  28024.             if (!props.hasOwnProperty(key)) props[key] = value; else props[key] = mergeStrategy(props[key], value);
  28025.         };
  28026.     }
  28027.     function transferInto(props, newProps) {
  28028.         for (var thisKey in newProps) if (newProps.hasOwnProperty(thisKey)) {
  28029.             var transferStrategy = TransferStrategies[thisKey];
  28030.             if (transferStrategy && TransferStrategies.hasOwnProperty(thisKey)) transferStrategy(props, thisKey, newProps[thisKey]); else if (!props.hasOwnProperty(thisKey)) props[thisKey] = newProps[thisKey];
  28031.         }
  28032.         return props;
  28033.     }
  28034.     var emptyFunction = __webpack_require__(78), invariant = __webpack_require__(4), joinClasses = __webpack_require__(643), merge = __webpack_require__(46), transferStrategyMerge = createTransferStrategy(function(a, b) {
  28035.         return merge(b, a);
  28036.     }), TransferStrategies = {
  28037.         children: emptyFunction,
  28038.         className: createTransferStrategy(joinClasses),
  28039.         key: emptyFunction,
  28040.         ref: emptyFunction,
  28041.         style: transferStrategyMerge
  28042.     }, ReactPropTransferer = {
  28043.         TransferStrategies: TransferStrategies,
  28044.         mergeProps: function(oldProps, newProps) {
  28045.             return transferInto(merge(oldProps), newProps);
  28046.         },
  28047.         Mixin: {
  28048.             transferPropsTo: function(descriptor) {
  28049.                 !0 ? invariant(descriptor._owner === this, "%s: You can't call transferPropsTo() on a component that you don't own, %s. This usually means you are calling transferPropsTo() on a component passed in as props or children.", this.constructor.displayName, descriptor.type.displayName) : invariant(descriptor._owner === this);
  28050.                 transferInto(descriptor.props, this.props);
  28051.                 return descriptor;
  28052.             }
  28053.         }
  28054.     };
  28055.     module.exports = ReactPropTransferer;
  28056. }, function(module, exports, __webpack_require__) {
  28057.     "use strict";
  28058.     function ReactReconcileTransaction() {
  28059.         this.reinitializeTransaction();
  28060.         this.renderToStaticMarkup = !1;
  28061.         this.reactMountReady = CallbackQueue.getPooled(null);
  28062.         this.putListenerQueue = ReactPutListenerQueue.getPooled();
  28063.     }
  28064.     var CallbackQueue = __webpack_require__(210), PooledClass = __webpack_require__(84), ReactBrowserEventEmitter = __webpack_require__(118), ReactInputSelection = __webpack_require__(215), ReactPutListenerQueue = __webpack_require__(297), Transaction = __webpack_require__(163), mixInto = __webpack_require__(60), SELECTION_RESTORATION = {
  28065.         initialize: ReactInputSelection.getSelectionInformation,
  28066.         close: ReactInputSelection.restoreSelection
  28067.     }, EVENT_SUPPRESSION = {
  28068.         initialize: function() {
  28069.             var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();
  28070.             ReactBrowserEventEmitter.setEnabled(!1);
  28071.             return currentlyEnabled;
  28072.         },
  28073.         close: function(previouslyEnabled) {
  28074.             ReactBrowserEventEmitter.setEnabled(previouslyEnabled);
  28075.         }
  28076.     }, ON_DOM_READY_QUEUEING = {
  28077.         initialize: function() {
  28078.             this.reactMountReady.reset();
  28079.         },
  28080.         close: function() {
  28081.             this.reactMountReady.notifyAll();
  28082.         }
  28083.     }, PUT_LISTENER_QUEUEING = {
  28084.         initialize: function() {
  28085.             this.putListenerQueue.reset();
  28086.         },
  28087.         close: function() {
  28088.             this.putListenerQueue.putListeners();
  28089.         }
  28090.     }, TRANSACTION_WRAPPERS = [ PUT_LISTENER_QUEUEING, SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING ], Mixin = {
  28091.         getTransactionWrappers: function() {
  28092.             return TRANSACTION_WRAPPERS;
  28093.         },
  28094.         getReactMountReady: function() {
  28095.             return this.reactMountReady;
  28096.         },
  28097.         getPutListenerQueue: function() {
  28098.             return this.putListenerQueue;
  28099.         },
  28100.         destructor: function() {
  28101.             CallbackQueue.release(this.reactMountReady);
  28102.             this.reactMountReady = null;
  28103.             ReactPutListenerQueue.release(this.putListenerQueue);
  28104.             this.putListenerQueue = null;
  28105.         }
  28106.     };
  28107.     mixInto(ReactReconcileTransaction, Transaction.Mixin);
  28108.     mixInto(ReactReconcileTransaction, Mixin);
  28109.     PooledClass.addPoolingTo(ReactReconcileTransaction);
  28110.     module.exports = ReactReconcileTransaction;
  28111. }, function(module, exports, __webpack_require__) {
  28112.     "use strict";
  28113.     function renderComponentToString(component) {
  28114.         !0 ? invariant(ReactDescriptor.isValidDescriptor(component), "renderComponentToString(): You must pass a valid ReactComponent.") : invariant(ReactDescriptor.isValidDescriptor(component));
  28115.         !0 ? invariant(!(2 === arguments.length && "function" == typeof arguments[1]), "renderComponentToString(): This function became synchronous and now returns the generated markup. Please remove the second parameter.") : invariant(!(2 === arguments.length && "function" == typeof arguments[1]));
  28116.         var transaction;
  28117.         try {
  28118.             var id = ReactInstanceHandles.createReactRootID();
  28119.             transaction = ReactServerRenderingTransaction.getPooled(!1);
  28120.             return transaction.perform(function() {
  28121.                 var componentInstance = instantiateReactComponent(component), markup = componentInstance.mountComponent(id, transaction, 0);
  28122.                 return ReactMarkupChecksum.addChecksumToMarkup(markup);
  28123.             }, null);
  28124.         } finally {
  28125.             ReactServerRenderingTransaction.release(transaction);
  28126.         }
  28127.     }
  28128.     function renderComponentToStaticMarkup(component) {
  28129.         !0 ? invariant(ReactDescriptor.isValidDescriptor(component), "renderComponentToStaticMarkup(): You must pass a valid ReactComponent.") : invariant(ReactDescriptor.isValidDescriptor(component));
  28130.         var transaction;
  28131.         try {
  28132.             var id = ReactInstanceHandles.createReactRootID();
  28133.             transaction = ReactServerRenderingTransaction.getPooled(!0);
  28134.             return transaction.perform(function() {
  28135.                 return instantiateReactComponent(component).mountComponent(id, transaction, 0);
  28136.             }, null);
  28137.         } finally {
  28138.             ReactServerRenderingTransaction.release(transaction);
  28139.         }
  28140.     }
  28141.     var ReactDescriptor = __webpack_require__(58), ReactInstanceHandles = __webpack_require__(121), ReactMarkupChecksum = __webpack_require__(290), ReactServerRenderingTransaction = __webpack_require__(616), instantiateReactComponent = __webpack_require__(164), invariant = __webpack_require__(4);
  28142.     module.exports = {
  28143.         renderComponentToString: renderComponentToString,
  28144.         renderComponentToStaticMarkup: renderComponentToStaticMarkup
  28145.     };
  28146. }, function(module, exports, __webpack_require__) {
  28147.     "use strict";
  28148.     function ReactServerRenderingTransaction(renderToStaticMarkup) {
  28149.         this.reinitializeTransaction();
  28150.         this.renderToStaticMarkup = renderToStaticMarkup;
  28151.         this.reactMountReady = CallbackQueue.getPooled(null);
  28152.         this.putListenerQueue = ReactPutListenerQueue.getPooled();
  28153.     }
  28154.     var PooledClass = __webpack_require__(84), CallbackQueue = __webpack_require__(210), ReactPutListenerQueue = __webpack_require__(297), Transaction = __webpack_require__(163), emptyFunction = __webpack_require__(78), mixInto = __webpack_require__(60), ON_DOM_READY_QUEUEING = {
  28155.         initialize: function() {
  28156.             this.reactMountReady.reset();
  28157.         },
  28158.         close: emptyFunction
  28159.     }, PUT_LISTENER_QUEUEING = {
  28160.         initialize: function() {
  28161.             this.putListenerQueue.reset();
  28162.         },
  28163.         close: emptyFunction
  28164.     }, TRANSACTION_WRAPPERS = [ PUT_LISTENER_QUEUEING, ON_DOM_READY_QUEUEING ], Mixin = {
  28165.         getTransactionWrappers: function() {
  28166.             return TRANSACTION_WRAPPERS;
  28167.         },
  28168.         getReactMountReady: function() {
  28169.             return this.reactMountReady;
  28170.         },
  28171.         getPutListenerQueue: function() {
  28172.             return this.putListenerQueue;
  28173.         },
  28174.         destructor: function() {
  28175.             CallbackQueue.release(this.reactMountReady);
  28176.             this.reactMountReady = null;
  28177.             ReactPutListenerQueue.release(this.putListenerQueue);
  28178.             this.putListenerQueue = null;
  28179.         }
  28180.     };
  28181.     mixInto(ReactServerRenderingTransaction, Transaction.Mixin);
  28182.     mixInto(ReactServerRenderingTransaction, Mixin);
  28183.     PooledClass.addPoolingTo(ReactServerRenderingTransaction);
  28184.     module.exports = ReactServerRenderingTransaction;
  28185. }, function(module, exports, __webpack_require__) {
  28186.     "use strict";
  28187.     var DOMProperty = __webpack_require__(96), MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE, SVGDOMPropertyConfig = {
  28188.         Properties: {
  28189.             cx: MUST_USE_ATTRIBUTE,
  28190.             cy: MUST_USE_ATTRIBUTE,
  28191.             d: MUST_USE_ATTRIBUTE,
  28192.             dx: MUST_USE_ATTRIBUTE,
  28193.             dy: MUST_USE_ATTRIBUTE,
  28194.             fill: MUST_USE_ATTRIBUTE,
  28195.             fillOpacity: MUST_USE_ATTRIBUTE,
  28196.             fontFamily: MUST_USE_ATTRIBUTE,
  28197.             fontSize: MUST_USE_ATTRIBUTE,
  28198.             fx: MUST_USE_ATTRIBUTE,
  28199.             fy: MUST_USE_ATTRIBUTE,
  28200.             gradientTransform: MUST_USE_ATTRIBUTE,
  28201.             gradientUnits: MUST_USE_ATTRIBUTE,
  28202.             markerEnd: MUST_USE_ATTRIBUTE,
  28203.             markerMid: MUST_USE_ATTRIBUTE,
  28204.             markerStart: MUST_USE_ATTRIBUTE,
  28205.             offset: MUST_USE_ATTRIBUTE,
  28206.             opacity: MUST_USE_ATTRIBUTE,
  28207.             patternContentUnits: MUST_USE_ATTRIBUTE,
  28208.             patternUnits: MUST_USE_ATTRIBUTE,
  28209.             points: MUST_USE_ATTRIBUTE,
  28210.             preserveAspectRatio: MUST_USE_ATTRIBUTE,
  28211.             r: MUST_USE_ATTRIBUTE,
  28212.             rx: MUST_USE_ATTRIBUTE,
  28213.             ry: MUST_USE_ATTRIBUTE,
  28214.             spreadMethod: MUST_USE_ATTRIBUTE,
  28215.             stopColor: MUST_USE_ATTRIBUTE,
  28216.             stopOpacity: MUST_USE_ATTRIBUTE,
  28217.             stroke: MUST_USE_ATTRIBUTE,
  28218.             strokeDasharray: MUST_USE_ATTRIBUTE,
  28219.             strokeLinecap: MUST_USE_ATTRIBUTE,
  28220.             strokeOpacity: MUST_USE_ATTRIBUTE,
  28221.             strokeWidth: MUST_USE_ATTRIBUTE,
  28222.             textAnchor: MUST_USE_ATTRIBUTE,
  28223.             transform: MUST_USE_ATTRIBUTE,
  28224.             version: MUST_USE_ATTRIBUTE,
  28225.             viewBox: MUST_USE_ATTRIBUTE,
  28226.             x1: MUST_USE_ATTRIBUTE,
  28227.             x2: MUST_USE_ATTRIBUTE,
  28228.             x: MUST_USE_ATTRIBUTE,
  28229.             y1: MUST_USE_ATTRIBUTE,
  28230.             y2: MUST_USE_ATTRIBUTE,
  28231.             y: MUST_USE_ATTRIBUTE
  28232.         },
  28233.         DOMAttributeNames: {
  28234.             fillOpacity: "fill-opacity",
  28235.             fontFamily: "font-family",
  28236.             fontSize: "font-size",
  28237.             gradientTransform: "gradientTransform",
  28238.             gradientUnits: "gradientUnits",
  28239.             markerEnd: "marker-end",
  28240.             markerMid: "marker-mid",
  28241.             markerStart: "marker-start",
  28242.             patternContentUnits: "patternContentUnits",
  28243.             patternUnits: "patternUnits",
  28244.             preserveAspectRatio: "preserveAspectRatio",
  28245.             spreadMethod: "spreadMethod",
  28246.             stopColor: "stop-color",
  28247.             stopOpacity: "stop-opacity",
  28248.             strokeDasharray: "stroke-dasharray",
  28249.             strokeLinecap: "stroke-linecap",
  28250.             strokeOpacity: "stroke-opacity",
  28251.             strokeWidth: "stroke-width",
  28252.             textAnchor: "text-anchor",
  28253.             viewBox: "viewBox"
  28254.         }
  28255.     };
  28256.     module.exports = SVGDOMPropertyConfig;
  28257. }, function(module, exports, __webpack_require__) {
  28258.     "use strict";
  28259.     function getSelection(node) {
  28260.         if ("selectionStart" in node && ReactInputSelection.hasSelectionCapabilities(node)) return {
  28261.             start: node.selectionStart,
  28262.             end: node.selectionEnd
  28263.         }; else if (document.selection) {
  28264.             var range = document.selection.createRange();
  28265.             return {
  28266.                 parentElement: range.parentElement(),
  28267.                 text: range.text,
  28268.                 top: range.boundingTop,
  28269.                 left: range.boundingLeft
  28270.             };
  28271.         } else {
  28272.             var selection = window.getSelection();
  28273.             return {
  28274.                 anchorNode: selection.anchorNode,
  28275.                 anchorOffset: selection.anchorOffset,
  28276.                 focusNode: selection.focusNode,
  28277.                 focusOffset: selection.focusOffset
  28278.             };
  28279.         }
  28280.     }
  28281.     function constructSelectEvent(nativeEvent) {
  28282.         if (!mouseDown && null != activeElement && activeElement == getActiveElement()) {
  28283.             var currentSelection = getSelection(activeElement);
  28284.             if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {
  28285.                 lastSelection = currentSelection;
  28286.                 var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementID, nativeEvent);
  28287.                 syntheticEvent.type = "select";
  28288.                 syntheticEvent.target = activeElement;
  28289.                 EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);
  28290.                 return syntheticEvent;
  28291.             }
  28292.         }
  28293.     }
  28294.     var EventConstants = __webpack_require__(45), EventPropagators = __webpack_require__(117), ReactInputSelection = __webpack_require__(215), SyntheticEvent = __webpack_require__(97), getActiveElement = __webpack_require__(303), isTextInputElement = __webpack_require__(307), keyOf = __webpack_require__(85), shallowEqual = __webpack_require__(311), topLevelTypes = EventConstants.topLevelTypes, eventTypes = {
  28295.         select: {
  28296.             phasedRegistrationNames: {
  28297.                 bubbled: keyOf({
  28298.                     onSelect: null
  28299.                 }),
  28300.                 captured: keyOf({
  28301.                     onSelectCapture: null
  28302.                 })
  28303.             },
  28304.             dependencies: [ topLevelTypes.topBlur, topLevelTypes.topContextMenu, topLevelTypes.topFocus, topLevelTypes.topKeyDown, topLevelTypes.topMouseDown, topLevelTypes.topMouseUp, topLevelTypes.topSelectionChange ]
  28305.         }
  28306.     }, activeElement = null, activeElementID = null, lastSelection = null, mouseDown = !1, SelectEventPlugin = {
  28307.         eventTypes: eventTypes,
  28308.         extractEvents: function(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent) {
  28309.             switch (topLevelType) {
  28310.               case topLevelTypes.topFocus:
  28311.                 if (isTextInputElement(topLevelTarget) || "true" === topLevelTarget.contentEditable) {
  28312.                     activeElement = topLevelTarget;
  28313.                     activeElementID = topLevelTargetID;
  28314.                     lastSelection = null;
  28315.                 }
  28316.                 break;
  28317.  
  28318.               case topLevelTypes.topBlur:
  28319.                 activeElement = null;
  28320.                 activeElementID = null;
  28321.                 lastSelection = null;
  28322.                 break;
  28323.  
  28324.               case topLevelTypes.topMouseDown:
  28325.                 mouseDown = !0;
  28326.                 break;
  28327.  
  28328.               case topLevelTypes.topContextMenu:
  28329.               case topLevelTypes.topMouseUp:
  28330.                 mouseDown = !1;
  28331.                 return constructSelectEvent(nativeEvent);
  28332.  
  28333.               case topLevelTypes.topSelectionChange:
  28334.               case topLevelTypes.topKeyDown:
  28335.               case topLevelTypes.topKeyUp:
  28336.                 return constructSelectEvent(nativeEvent);
  28337.             }
  28338.         }
  28339.     };
  28340.     module.exports = SelectEventPlugin;
  28341. }, function(module, exports, __webpack_require__) {
  28342.     "use strict";
  28343.     var GLOBAL_MOUNT_POINT_MAX = Math.pow(2, 53), ServerReactRootIndex = {
  28344.         createReactRootIndex: function() {
  28345.             return Math.ceil(Math.random() * GLOBAL_MOUNT_POINT_MAX);
  28346.         }
  28347.     };
  28348.     module.exports = ServerReactRootIndex;
  28349. }, function(module, exports, __webpack_require__) {
  28350.     "use strict""SimpleEventPlugin: Unhandled event type, `%s`.", topLevelType) : invariant(EventConstructor);
  28351.             var event = EventConstructor.getPooled(dispatchConfig, topLevelTargetID, nativeEvent);
  28352.             EventPropagators.accumulateTwoPhaseDispatches(event);
  28353.             return event;
  28354.         }
  28355.     };
  28356.     module.exports = SimpleEventPlugin;
  28357. }, function(module, exports, __webpack_require__) {
  28358.     "use strict";
  28359.     function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  28360.         SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
  28361.     }
  28362.     var SyntheticEvent = __webpack_require__(97), ClipboardEventInterface = {
  28363.         clipboardData: function(event) {
  28364.             return "clipboardData" in event ? event.clipboardData : window.clipboardData;
  28365.         }
  28366.     };
  28367.     SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);
  28368.     module.exports = SyntheticClipboardEvent;
  28369. }, function(module, exports, __webpack_require__) {
  28370.     "use strict";
  28371.     function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  28372.         SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
  28373.     }
  28374.     var SyntheticEvent = __webpack_require__(97), CompositionEventInterface = {
  28375.         data: null
  28376.     };
  28377.     SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);
  28378.     module.exports = SyntheticCompositionEvent;
  28379. }, function(module, exports, __webpack_require__) {
  28380.     "use strict";
  28381.     function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  28382.         SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
  28383.     }
  28384.     var SyntheticMouseEvent = __webpack_require__(162), DragEventInterface = {
  28385.         dataTransfer: null
  28386.     };
  28387.     SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);
  28388.     module.exports = SyntheticDragEvent;
  28389. }, function(module, exports, __webpack_require__) {
  28390.     "use strict";
  28391.     function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  28392.         SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
  28393.     }
  28394.     var SyntheticUIEvent = __webpack_require__(144), FocusEventInterface = {
  28395.         relatedTarget: null
  28396.     };
  28397.     SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);
  28398.     module.exports = SyntheticFocusEvent;
  28399. }, function(module, exports, __webpack_require__) {
  28400.     "use strict";
  28401.     function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  28402.         SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
  28403.     }
  28404.     var SyntheticEvent = __webpack_require__(97), InputEventInterface = {
  28405.         data: null
  28406.     };
  28407.     SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);
  28408.     module.exports = SyntheticInputEvent;
  28409. }, function(module, exports, __webpack_require__) {
  28410.     "use strict";
  28411.     function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  28412.         SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
  28413.     }
  28414.     var SyntheticUIEvent = __webpack_require__(144), getEventKey = __webpack_require__(637), getEventModifierState = __webpack_require__(219), KeyboardEventInterface = {
  28415.         key: getEventKey,
  28416.         location: null,
  28417.         ctrlKey: null,
  28418.         shiftKey: null,
  28419.         altKey: null,
  28420.         metaKey: null,
  28421.         repeat: null,
  28422.         locale: null,
  28423.         getModifierState: getEventModifierState,
  28424.         charCode: function(event) {
  28425.             if ("keypress" === event.type) return "charCode" in event ? event.charCode : event.keyCode; else return 0;
  28426.         },
  28427.         keyCode: function(event) {
  28428.             if ("keydown" === event.type || "keyup" === event.type) return event.keyCode; else return 0;
  28429.         },
  28430.         which: function(event) {
  28431.             return event.keyCode || event.charCode;
  28432.         }
  28433.     };
  28434.     SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);
  28435.     module.exports = SyntheticKeyboardEvent;
  28436. }, function(module, exports, __webpack_require__) {
  28437.     "use strict";
  28438.     function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  28439.         SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
  28440.     }
  28441.     var SyntheticUIEvent = __webpack_require__(144), getEventModifierState = __webpack_require__(219), TouchEventInterface = {
  28442.         touches: null,
  28443.         targetTouches: null,
  28444.         changedTouches: null,
  28445.         altKey: null,
  28446.         metaKey: null,
  28447.         ctrlKey: null,
  28448.         shiftKey: null,
  28449.         getModifierState: getEventModifierState
  28450.     };
  28451.     SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);
  28452.     module.exports = SyntheticTouchEvent;
  28453. }, function(module, exports, __webpack_require__) {
  28454.     "use strict";
  28455.     function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent) {
  28456.         SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);
  28457.     }
  28458.     var SyntheticMouseEvent = __webpack_require__(162), WheelEventInterface = {
  28459.         deltaX: function(event) {
  28460.             return "deltaX" in event ? event.deltaX : "wheelDeltaX" in event ? -event.wheelDeltaX : 0;
  28461.         },
  28462.         deltaY: function(event) {
  28463.             return "deltaY" in event ? event.deltaY : "wheelDeltaY" in event ? -event.wheelDeltaY : "wheelDelta" in event ? -event.wheelDelta : 0;
  28464.         },
  28465.         deltaZ: null,
  28466.         deltaMode: null
  28467.     };
  28468.     SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
  28469.     module.exports = SyntheticWheelEvent;
  28470. }, function(module, exports, __webpack_require__) {
  28471.     "use strict";
  28472.     function adler32(data) {
  28473.         for (var a = 1, b = 0, i = 0; i < data.length; i++) {
  28474.             a = (a + data.charCodeAt(i)) % MOD;
  28475.             b = (b + a) % MOD;
  28476.         }
  28477.         return a | b << 16;
  28478.     }
  28479.     var MOD = 65521;
  28480.     module.exports = adler32;
  28481. }, function(module, exports, __webpack_require__) {
  28482.     function copyProperties(obj, a, b, c, d, e, f) {
  28483.         obj = obj || {};
  28484.         if (!0) if (f) throw new Error("Too many arguments passed to copyProperties");
  28485.         for (var v, args = [ a, b, c, d, e ], ii = 0; args[ii]; ) {
  28486.             v = args[ii++];
  28487.             for (var k in v) obj[k] = v[k];
  28488.             if (v.hasOwnProperty && v.hasOwnProperty("toString") && "undefined" != typeof v.toString && obj.toString !== v.toString) obj.toString = v.toString;
  28489.         }
  28490.         return obj;
  28491.     }
  28492.     module.exports = copyProperties;
  28493. }, function(module, exports, __webpack_require__) {
  28494.     function hasArrayNature(obj) {
  28495.         return !!obj && ("object" == typeof obj || "function" == typeof obj) && "length" in obj && !("setInterval" in obj) && "number" != typeof obj.nodeType && (Array.isArray(obj) || "callee" in obj || "item" in obj);
  28496.     }
  28497.     function createArrayFrom(obj) {
  28498.         if (!hasArrayNature(obj)) return [ obj ]; else if (Array.isArray(obj)) return obj.slice(); else return toArray(obj);
  28499.     }
  28500.     var toArray = __webpack_require__(648);
  28501.     module.exports = createArrayFrom;
  28502. }, function(module, exports, __webpack_require__) {
  28503.     "use strict";
  28504.     function createFullPageComponent(componentClass) {
  28505.         return ReactCompositeComponent.createClass({
  28506.             displayName: "ReactFullPageComponent" + (componentClass.type.displayName || ""),
  28507.             componentWillUnmount: function() {
  28508.                 !0 ? invariant(!1, "%s tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.", this.constructor.displayName) : invariant(!1);
  28509.             },
  28510.             render: function() {
  28511.                 return this.transferPropsTo(componentClass(null, this.props.children));
  28512.             }
  28513.         });
  28514.     }
  28515.     var ReactCompositeComponent = __webpack_require__(56), invariant = __webpack_require__(4);
  28516.     module.exports = createFullPageComponent;
  28517. }, function(module, exports, __webpack_require__) {
  28518.     function getNodeName(markup) {
  28519.         var nodeNameMatch = markup.match(nodeNamePattern);
  28520.         return nodeNameMatch && nodeNameMatch[1].toLowerCase();
  28521.     }
  28522.     function createNodesFromMarkup(markup, handleScript) {
  28523.         var node = dummyNode;
  28524.         !0 ? invariant(!!dummyNode, "createNodesFromMarkup dummy not initialized") : invariant(!!dummyNode);
  28525.         var nodeName = getNodeName(markup), wrap = nodeName && getMarkupWrap(nodeName);
  28526.         if (wrap) {
  28527.             node.innerHTML = wrap[1] + markup + wrap[2];
  28528.             for (var wrapDepth = wrap[0]; wrapDepth--; ) node = node.lastChild;
  28529.         } else node.innerHTML = markup;
  28530.         var scripts = node.getElementsByTagName("script");
  28531.         if (scripts.length) {
  28532.             !0 ? invariant(handleScript, "createNodesFromMarkup(...): Unexpected <script> element rendered.") : invariant(handleScript);
  28533.             createArrayFrom(scripts).forEach(handleScript);
  28534.         }
  28535.         for (var nodes = createArrayFrom(node.childNodes); node.lastChild; ) node.removeChild(node.lastChild);
  28536.         return nodes;
  28537.     }
  28538.     var ExecutionEnvironment = __webpack_require__(35), createArrayFrom = __webpack_require__(631), getMarkupWrap = __webpack_require__(304), invariant = __webpack_require__(4), dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement("div") : null, nodeNamePattern = /^\s*<(\w+)/;
  28539.     module.exports = createNodesFromMarkup;
  28540. }, function(module, exports, __webpack_require__) {
  28541.     "use strict";
  28542.     function dangerousStyleValue(name, value) {
  28543.         if (null == value || "boolean" == typeof value || "" === value) return "";
  28544.         if (isNaN(value) || 0 === value || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) return "" + value;
  28545.         if ("string" == typeof value) value = value.trim();
  28546.         return value + "px";
  28547.     }
  28548.     var CSSProperty = __webpack_require__(284), isUnitlessNumber = CSSProperty.isUnitlessNumber;
  28549.     module.exports = dangerousStyleValue;
  28550. }, function(module, exports, __webpack_require__) {
  28551.     "use strict";
  28552.     var emptyObject = {};
  28553.     if (!0) Object.freeze(emptyObject);
  28554.     module.exports = emptyObject;
  28555. }, function(module, exports, __webpack_require__) {
  28556.     "use strict";
  28557.     function flattenSingleChildIntoContext(traverseContext, child, name) {
  28558.         var result = traverseContext, keyUnique = !result.hasOwnProperty(name);
  28559.         warning(keyUnique, "flattenChildren(...): Encountered two children with the same key, `%s`. Child keys must be unique; when two children share a key, only the first child will be used.", name);
  28560.         if (keyUnique && null != child) result[name] = child;
  28561.     }
  28562.     function flattenChildren(children) {
  28563.         if (null == children) return children;
  28564.         var result = {};
  28565.         traverseAllChildren(children, flattenSingleChildIntoContext, result);
  28566.         return result;
  28567.     }
  28568.     var traverseAllChildren = __webpack_require__(312), warning = __webpack_require__(61);
  28569.     module.exports = flattenChildren;
  28570. }, function(module, exports, __webpack_require__) {
  28571.     "use strict";
  28572.     function getEventKey(nativeEvent) {
  28573.         if (nativeEvent.key) {
  28574.             var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
  28575.             if ("Unidentified" !== key) return key;
  28576.         }
  28577.         if ("keypress" === nativeEvent.type) {
  28578.             var charCode = "charCode" in nativeEvent ? nativeEvent.charCode : nativeEvent.keyCode;
  28579.             return 13 === charCode ? "Enter" : String.fromCharCode(charCode);
  28580.         }
  28581.         if ("keydown" === nativeEvent.type || "keyup" === nativeEvent.type) return translateToKey[nativeEvent.keyCode] || "Unidentified";
  28582.         !0 ? invariant(!1, "Unexpected keyboard event type: %s", nativeEvent.type) : invariant(!1);
  28583.     }
  28584.     var invariant = __webpack_require__(4), normalizeKey = {
  28585.         Esc: "Escape",
  28586.         Spacebar: " ",
  28587.         Left: "ArrowLeft",
  28588.         Up: "ArrowUp",
  28589.         Right: "ArrowRight",
  28590.         Down: "ArrowDown",
  28591.         Del: "Delete",
  28592.         Win: "OS",
  28593.         Menu: "ContextMenu",
  28594.         Apps: "ContextMenu",
  28595.         Scroll: "ScrollLock",
  28596.         MozPrintableKey: "Unidentified"
  28597.     }, translateToKey = {
  28598.         8: "Backspace",
  28599.         9: "Tab",
  28600.         12: "Clear",
  28601.         13: "Enter",
  28602.         16: "Shift",
  28603.         17: "Control",
  28604.         18: "Alt",
  28605.         19: "Pause",
  28606.         20: "CapsLock",
  28607.         27: "Escape",
  28608.         32: " ",
  28609.         33: "PageUp",
  28610.         34: "PageDown",
  28611.         35: "End",
  28612.         36: "Home",
  28613.         37: "ArrowLeft",
  28614.         38: "ArrowUp",
  28615.         39: "ArrowRight",
  28616.         40: "ArrowDown",
  28617.         45: "Insert",
  28618.         46: "Delete",
  28619.         112: "F1",
  28620.         113: "F2",
  28621.         114: "F3",
  28622.         115: "F4",
  28623.         116: "F5",
  28624.         117: "F6",
  28625.         118: "F7",
  28626.         119: "F8",
  28627.         120: "F9",
  28628.         121: "F10",
  28629.         122: "F11",
  28630.         123: "F12",
  28631.         144: "NumLock",
  28632.         145: "ScrollLock",
  28633.         224: "Meta"
  28634.     };
  28635.     module.exports = getEventKey;
  28636. }, function(module, exports, __webpack_require__) {
  28637.     "use strict";
  28638.     function getLeafNode(node) {
  28639.         for (;node && node.firstChild; ) node = node.firstChild;
  28640.         return node;
  28641.     }
  28642.     function getSiblingNode(node) {
  28643.         for (;node; ) {
  28644.             if (node.nextSibling) return node.nextSibling;
  28645.             node = node.parentNode;
  28646.         }
  28647.     }
  28648.     function getNodeForCharacterOffset(root, offset) {
  28649.         for (var node = getLeafNode(root), nodeStart = 0, nodeEnd = 0; node; ) {
  28650.             if (3 == node.nodeType) {
  28651.                 nodeEnd = nodeStart + node.textContent.length;
  28652.                 if (nodeStart <= offset && nodeEnd >= offset) return {
  28653.                     node: node,
  28654.                     offset: offset - nodeStart
  28655.                 };
  28656.                 nodeStart = nodeEnd;
  28657.             }
  28658.             node = getLeafNode(getSiblingNode(node));
  28659.         }
  28660.     }
  28661.     module.exports = getNodeForCharacterOffset;
  28662. }, function(module, exports) {
  28663.     function hyphenate(string) {
  28664.         return string.replace(_uppercasePattern, "-$1").toLowerCase();
  28665.     }
  28666.     var _uppercasePattern = /([A-Z])/g;
  28667.     module.exports = hyphenate;
  28668. }, function(module, exports, __webpack_require__) {
  28669.     "use strict";
  28670.     function hyphenateStyleName(string) {
  28671.         return hyphenate(string).replace(msPattern, "-ms-");
  28672.     }
  28673.     var hyphenate = __webpack_require__(639), msPattern = /^ms-/;
  28674.     module.exports = hyphenateStyleName;
  28675. }, function(module, exports) {
  28676.     function isNode(object) {
  28677.         return !(!object || !("function" == typeof Node ? object instanceof Node : "object" == typeof object && "number" == typeof object.nodeType && "string" == typeof object.nodeName));
  28678.     }
  28679.     module.exports = isNode;
  28680. }, function(module, exports, __webpack_require__) {
  28681.     function isTextNode(object) {
  28682.         return isNode(object) && 3 == object.nodeType;
  28683.     }
  28684.     var isNode = __webpack_require__(641);
  28685.     module.exports = isTextNode;
  28686. }, function(module, exports, __webpack_require__) {
  28687.     "use strict";
  28688.     function joinClasses(className) {
  28689.         if (!className) className = "";
  28690.         var nextClass, argLength = arguments.length;
  28691.         if (argLength > 1) for (var ii = 1; ii < argLength; ii++) {
  28692.             nextClass = arguments[ii];
  28693.             nextClass && (className += " " + nextClass);
  28694.         }
  28695.         return className;
  28696.     }
  28697.     module.exports = joinClasses;
  28698. }, function(module, exports, __webpack_require__) {
  28699.     "use strict";
  28700.     var invariant = __webpack_require__(4), keyMirror = __webpack_require__(98), isTerminal = function(o) {
  28701.         return "object" != typeof o || null === o;
  28702.     }, mergeHelpers = {
  28703.         MAX_MERGE_DEPTH: 36,
  28704.         isTerminal: isTerminal,
  28705.         normalizeMergeArg: function(arg) {
  28706.             return arg === undefined || null === arg ? {} : arg;
  28707.         },
  28708.         checkMergeArrayArgs: function(one, two) {
  28709.             !0 ? invariant(Array.isArray(one) && Array.isArray(two), "Tried to merge arrays, instead got %s and %s.", one, two) : invariant(Array.isArray(one) && Array.isArray(two));
  28710.         },
  28711.         checkMergeObjectArgs: function(one, two) {
  28712.             mergeHelpers.checkMergeObjectArg(one);
  28713.             mergeHelpers.checkMergeObjectArg(two);
  28714.         },
  28715.         checkMergeObjectArg: function(arg) {
  28716.             !0 ? invariant(!isTerminal(arg) && !Array.isArray(arg), "Tried to merge an object, instead got %s.", arg) : invariant(!isTerminal(arg) && !Array.isArray(arg));
  28717.         },
  28718.         checkMergeIntoObjectArg: function(arg) {
  28719.             !0 ? invariant(!(isTerminal(arg) && "function" != typeof arg || Array.isArray(arg)), "Tried to merge into an object, instead got %s.", arg) : invariant(!(isTerminal(arg) && "function" != typeof arg || Array.isArray(arg)));
  28720.         },
  28721.         checkMergeLevel: function(level) {
  28722.             !0 ? invariant(level < 36, "Maximum deep merge depth exceeded. You may be attempting to merge circular structures in an unsupported way.") : invariant(level < 36);
  28723.         },
  28724.         checkArrayStrategy: function(strategy) {
  28725.             !0 ? invariant(strategy === undefined || strategy in mergeHelpers.ArrayStrategies, "You must provide an array strategy to deep merge functions to instruct the deep merge how to resolve merging two arrays.") : invariant(strategy === undefined || strategy in mergeHelpers.ArrayStrategies);
  28726.         },
  28727.         ArrayStrategies: keyMirror({
  28728.             Clobber: !0,
  28729.             IndexByIndex: !0
  28730.         })
  28731.     };
  28732.     module.exports = mergeHelpers;
  28733. }, function(module, exports, __webpack_require__) {
  28734.     "use strict";
  28735.     function onlyChild(children) {
  28736.         !0 ? invariant(ReactDescriptor.isValidDescriptor(children), "onlyChild must be passed a children with exactly one child.") : invariant(ReactDescriptor.isValidDescriptor(children));
  28737.         return children;
  28738.     }
  28739.     var ReactDescriptor = __webpack_require__(58), invariant = __webpack_require__(4);
  28740.     module.exports = onlyChild;
  28741. }, function(module, exports, __webpack_require__) {
  28742.     "use strict";
  28743.     var performance, ExecutionEnvironment = __webpack_require__(35);
  28744.     if (ExecutionEnvironment.canUseDOM) performance = window.performance || window.msPerformance || window.webkitPerformance;
  28745.     module.exports = performance || {};
  28746. }, function(module, exports, __webpack_require__) {
  28747.     var performance = __webpack_require__(646);
  28748.     if (!performance || !performance.now) performance = Date;
  28749.     var performanceNow = performance.now.bind(performance);
  28750.     module.exports = performanceNow;
  28751. }, function(module, exports, __webpack_require__) {
  28752.     function toArray(obj) {
  28753.         var length = obj.length;
  28754.         !0 ? invariant(!Array.isArray(obj) && ("object" == typeof obj || "function" == typeof obj), "toArray: Array-like object expected") : invariant(!Array.isArray(obj) && ("object" == typeof obj || "function" == typeof obj));
  28755.         !0 ? invariant("number" == typeof length, "toArray: Object needs a length property") : invariant("number" == typeof length);
  28756.         !0 ? invariant(0 === length || length - 1 in obj, "toArray: Object should have keys for indices") : invariant(0 === length || length - 1 in obj);
  28757.         if (obj.hasOwnProperty) try {
  28758.             return Array.prototype.slice.call(obj);
  28759.         } catch (e) {}
  28760.         for (var ret = Array(length), ii = 0; ii < length; ii++) ret[ii] = obj[ii];
  28761.         return ret;
  28762.     }
  28763.     var invariant = __webpack_require__(4);
  28764.     module.exports = toArray;
  28765. }, function(module, exports, __webpack_require__) {
  28766.     "use strict";
  28767.     function isPlainObject(obj) {
  28768.         if (!obj || "object" != typeof obj) return !1;
  28769.         var proto = "function" == typeof obj.constructor ? Object.getPrototypeOf(obj) : Object.prototype;
  28770.         if (null === proto) return !0;
  28771.         var constructor = proto.constructor;
  28772.         return "function" == typeof constructor && constructor instanceof constructor && fnToString(constructor) === fnToString(Object);
  28773.     }
  28774.     exports.__esModule = !0;
  28775.     exports["default"] = isPlainObject;
  28776.     var fnToString = function(fn) {
  28777.         return Function.prototype.toString.call(fn);
  28778.     };
  28779.     module.exports = exports["default"];
  28780. }, function(module, exports, __webpack_require__) {
  28781.     "use strict";
  28782.     function shallowEqual(objA, objB) {
  28783.         if (objA === objB) return !0;
  28784.         var keysA = Object.keys(objA), keysB = Object.keys(objB);
  28785.         if (keysA.length !== keysB.length) return !1;
  28786.         for (var hasOwn = Object.prototype.hasOwnProperty, i = 0; i < keysA.length; i++) if (!hasOwn.call(objB, keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) return !1;
  28787.         return !0;
  28788.     }
  28789.     exports.__esModule = !0;
  28790.     exports["default"] = shallowEqual;
  28791.     module.exports = exports["default"];
  28792. }, function(module, exports, __webpack_require__) {
  28793.     "use strict";
  28794.     function wrapActionCreators(actionCreators) {
  28795.         return function(dispatch) {
  28796.             return _redux.bindActionCreators(actionCreators, dispatch);
  28797.         };
  28798.     }
  28799.     exports.__esModule = !0;
  28800.     exports["default"] = wrapActionCreators;
  28801.     var _redux = __webpack_require__(315);
  28802.     module.exports = exports["default"];
  28803. }, function(module, exports) {
  28804.     module.exports = function(arr, fn, initial) {
  28805.         for (var idx = 0, len = arr.length, curr = 3 == arguments.length ? initial : arr[idx++]; idx < len; ) curr = fn.call(null, curr, arr[idx], ++idx, arr);
  28806.         return curr;
  28807.     };
  28808. }, function(module, exports, __webpack_require__) {
  28809.     "use strict";
  28810.     function thunkMiddleware(_ref) {
  28811.         var dispatch = _ref.dispatch, getState = _ref.getState;
  28812.         return function(next) {
  28813.             return function(action) {
  28814.                 return "function" == typeof action ? action(dispatch, getState) : next(action);
  28815.             };
  28816.         };
  28817.     }
  28818.     exports.__esModule = !0;
  28819.     exports["default"] = thunkMiddleware;
  28820.     module.exports = exports["default"];
  28821. }, function(module, exports, __webpack_require__) {
  28822.     "use strict";
  28823.     function createStore(reducer, initialState) {
  28824.         var store = new _Store2["default"](reducer, initialState);
  28825.         return {
  28826.             dispatch: store.dispatch.bind(store),
  28827.             subscribe: store.subscribe.bind(store),
  28828.             getState: store.getState.bind(store),
  28829.             getReducer: store.getReducer.bind(store),
  28830.             replaceReducer: store.replaceReducer.bind(store)
  28831.         };
  28832.     }
  28833.     exports.__esModule = !0;
  28834.     exports["default"] = createStore;
  28835.     var _Store = __webpack_require__(314), _Store2 = function(obj) {
  28836.         return obj && obj.__esModule ? obj : {
  28837.             "default": obj
  28838.         };
  28839.     }(_Store);
  28840.     module.exports = exports["default"];
  28841. }, function(module, exports, __webpack_require__) {
  28842.     "use strict";
  28843.     function _interopRequireDefault(obj) {
  28844.         return obj && obj.__esModule ? obj : {
  28845.             "default": obj
  28846.         };
  28847.     }
  28848.     function applyMiddleware() {
  28849.         for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) middlewares[_key] = arguments[_key];
  28850.         return function(next) {
  28851.             return function() {
  28852.                 function dispatch(action) {
  28853.                     var methods = {
  28854.                         dispatch: dispatch,
  28855.                         getState: store.getState
  28856.                     };
  28857.                     return _compose2["default"](middleware(methods), store.dispatch)(action);
  28858.                 }
  28859.                 var store = next.apply(undefined, arguments), middleware = _composeMiddleware2["default"].apply(undefined, middlewares);
  28860.                 return _extends({}, store, {
  28861.                     dispatch: dispatch
  28862.                 });
  28863.             };
  28864.         };
  28865.     }
  28866.     exports.__esModule = !0;
  28867.     var _extends = Object.assign || function(target) {
  28868.         for (var i = 1; i < arguments.length; i++) {
  28869.             var source = arguments[i];
  28870.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  28871.         }
  28872.         return target;
  28873.     };
  28874.     exports["default"] = applyMiddleware;
  28875.     var _compose = __webpack_require__(226), _compose2 = _interopRequireDefault(_compose), _composeMiddleware = __webpack_require__(316), _composeMiddleware2 = _interopRequireDefault(_composeMiddleware);
  28876.     module.exports = exports["default"];
  28877. }, function(module, exports, __webpack_require__) {
  28878.     "use strict";
  28879.     function bindActionCreators(actionCreators, dispatch) {
  28880.         return _utilsMapValues2["default"](actionCreators, function(actionCreator) {
  28881.             return function() {
  28882.                 return dispatch(actionCreator.apply(undefined, arguments));
  28883.             };
  28884.         });
  28885.     }
  28886.     exports.__esModule = !0;
  28887.     exports["default"] = bindActionCreators;
  28888.     var _utilsMapValues = __webpack_require__(317), _utilsMapValues2 = function(obj) {
  28889.         return obj && obj.__esModule ? obj : {
  28890.             "default": obj
  28891.         };
  28892.     }(_utilsMapValues);
  28893.     module.exports = exports["default"];
  28894. }, function(module, exports, __webpack_require__) {
  28895.     "use strict";
  28896.     function _interopRequireDefault(obj) {
  28897.         return obj && obj.__esModule ? obj : {
  28898.             "default": obj
  28899.         };
  28900.     }
  28901.     function getErrorMessage(key, action) {
  28902.         var actionType = action && action.type;
  28903.         return 'Reducer "' + key + '" returned undefined handling ' + (actionType && '"' + actionType + '"' || "an action") + ". To ignore an action, you must explicitly return the previous state.";
  28904.     }
  28905.     function combineReducers(reducers) {
  28906.         var finalReducers = _utilsPick2["default"](reducers, function(val) {
  28907.             return "function" == typeof val;
  28908.         });
  28909.         Object.keys(finalReducers).forEach(function(key) {
  28910.             var reducer = finalReducers[key];
  28911.             _invariant2["default"](void 0 !== reducer(undefined, {
  28912.                 type: _Store.ActionTypes.INIT
  28913.             }), 'Reducer "' + key + '" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined.');
  28914.             var type = Math.random().toString(36).substring(7).split("").join(".");
  28915.             _invariant2["default"](void 0 !== reducer(undefined, {
  28916.                 type: type
  28917.             }), 'Reducer "' + key + "\" returned undefined when probed with a random type. Don't try to handle " + _Store.ActionTypes.INIT + ' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined.');
  28918.         });
  28919.         return function(state, action) {
  28920.             if (state === undefined) state = {};
  28921.             return _utilsMapValues2["default"](finalReducers, function(reducer, key) {
  28922.                 var newState = reducer(state[key], action);
  28923.                 _invariant2["default"](void 0 !== newState, getErrorMessage(key, action));
  28924.                 return newState;
  28925.             });
  28926.         };
  28927.     }
  28928.     exports.__esModule = !0;
  28929.     exports["default"] = combineReducers;
  28930.     var _utilsMapValues = __webpack_require__(317), _utilsMapValues2 = _interopRequireDefault(_utilsMapValues), _utilsPick = __webpack_require__(659), _utilsPick2 = _interopRequireDefault(_utilsPick), _invariant = __webpack_require__(204), _invariant2 = _interopRequireDefault(_invariant), _Store = __webpack_require__(314);
  28931.     module.exports = exports["default"];
  28932. }, function(module, exports, __webpack_require__) {
  28933.     "use strict";
  28934.     function isPlainObject(obj) {
  28935.         return obj ? "object" == typeof obj && Object.getPrototypeOf(obj) === Object.prototype : !1;
  28936.     }
  28937.     exports.__esModule = !0;
  28938.     exports["default"] = isPlainObject;
  28939.     module.exports = exports["default"];
  28940. }, function(module, exports, __webpack_require__) {
  28941.     "use strict";
  28942.     function pick(obj, fn) {
  28943.         return Object.keys(obj).reduce(function(result, key) {
  28944.             if (fn(obj[key])) result[key] = obj[key];
  28945.             return result;
  28946.         }, {});
  28947.     }
  28948.     exports.__esModule = !0;
  28949.     exports["default"] = pick;
  28950.     module.exports = exports["default"];
  28951. }, function(module, exports, __webpack_require__) {
  28952.     (function(global) {
  28953.         !function(global) {
  28954.             "use strict";
  28955.             function wrap(innerFn, outerFn, self, tryLocsList) {
  28956.                 var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []);
  28957.                 generator._invoke = makeInvokeMethod(innerFn, self, context);
  28958.                 return generator;
  28959.             }
  28960.             function tryCatch(fn, obj, arg) {
  28961.                 try {
  28962.                     return {
  28963.                         type: "normal",
  28964.                         arg: fn.call(obj, arg)
  28965.                     };
  28966.                 } catch (err) {
  28967.                     return {
  28968.                         type: "throw",
  28969.                         arg: err
  28970.                     };
  28971.                 }
  28972.             }
  28973.             function Generator() {}
  28974.             function GeneratorFunction() {}
  28975.             function GeneratorFunctionPrototype() {}
  28976.             function defineIteratorMethods(prototype) {
  28977.                 [ "next", "throw", "return" ].forEach(function(method) {
  28978.                     prototype[method] = function(arg) {
  28979.                         return this._invoke(method, arg);
  28980.                     };
  28981.                 });
  28982.             }
  28983.             function AsyncIterator(generator) {
  28984.                 function invoke(method, arg, resolve, reject) {
  28985.                     var record = tryCatch(generator[method], generator, arg);
  28986.                     if ("throw" === record.type) reject(record.arg); else {
  28987.                         var result = record.arg, value = result.value;
  28988.                         if (value && "object" == typeof value && hasOwn.call(value, "__await")) return Promise.resolve(value.__await).then(function(value) {
  28989.                             invoke("next", value, resolve, reject);
  28990.                         }, function(err) {
  28991.                             invoke("throw", err, resolve, reject);
  28992.                         }); else return Promise.resolve(value).then(function(unwrapped) {
  28993.                             result.value = unwrapped;
  28994.                             resolve(result);
  28995.                         }, reject);
  28996.                     }
  28997.                 }
  28998.                 function enqueue(method, arg) {
  28999.                     function callInvokeWithMethodAndArg() {
  29000.                         return new Promise(function(resolve, reject) {
  29001.                             invoke(method, arg, resolve, reject);
  29002.                         });
  29003.                     }
  29004.                     return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
  29005.                 }
  29006.                 if ("object" == typeof global.process && global.process.domain) invoke = global.process.domain.bind(invoke);
  29007.                 var previousPromise;
  29008.                 this._invoke = enqueue;
  29009.             }
  29010.             function makeInvokeMethod(innerFn, self, context) {
  29011.                 var state = GenStateSuspendedStart;
  29012.                 return function(method, arg) {
  29013.                     if (state === GenStateExecuting) throw new Error("Generator is already running");
  29014.                     if (state === GenStateCompleted) {
  29015.                         if ("throw" === method) throw arg;
  29016.                         return doneResult();
  29017.                     }
  29018.                     context.method = method;
  29019.                     context.arg = arg;
  29020.                     for (;;) {
  29021.                         var delegate = context.delegate;
  29022.                         if (delegate) {
  29023.                             var delegateResult = maybeInvokeDelegate(delegate, context);
  29024.                             if (delegateResult) {
  29025.                                 if (delegateResult === ContinueSentinel) continue;
  29026.                                 return delegateResult;
  29027.                             }
  29028.                         }
  29029.                         if ("next" === context.method) context.sent = context._sent = context.arg; else if ("throw" === context.method) {
  29030.                             if (state === GenStateSuspendedStart) {
  29031.                                 state = GenStateCompleted;
  29032.                                 throw context.arg;
  29033.                             }
  29034.                             context.dispatchException(context.arg);
  29035.                         } else if ("return" === context.method) context.abrupt("return", context.arg);
  29036.                         state = GenStateExecuting;
  29037.                         var record = tryCatch(innerFn, self, context);
  29038.                         if ("normal" === record.type) {
  29039.                             state = context.done ? GenStateCompleted : GenStateSuspendedYield;
  29040.                             if (record.arg === ContinueSentinel) continue;
  29041.                             return {
  29042.                                 value: record.arg,
  29043.                                 done: context.done
  29044.                             };
  29045.                         } else if ("throw" === record.type) {
  29046.                             state = GenStateCompleted;
  29047.                             context.method = "throw";
  29048.                             context.arg = record.arg;
  29049.                         }
  29050.                     }
  29051.                 };
  29052.             }
  29053.             function maybeInvokeDelegate(delegate, context) {
  29054.                 var method = delegate.iterator[context.method];
  29055.                 if (method === undefined) {
  29056.                     context.delegate = null;
  29057.                     if ("throw" === context.method) {
  29058.                         if (delegate.iterator["return"]) {
  29059.                             context.method = "return";
  29060.                             context.arg = undefined;
  29061.                             maybeInvokeDelegate(delegate, context);
  29062.                             if ("throw" === context.method) return ContinueSentinel;
  29063.                         }
  29064.                         context.method = "throw";
  29065.                         context.arg = new TypeError("The iterator does not provide a 'throw' method");
  29066.                     }
  29067.                     return ContinueSentinel;
  29068.                 }
  29069.                 var record = tryCatch(method, delegate.iterator, context.arg);
  29070.                 if ("throw" === record.type) {
  29071.                     context.method = "throw";
  29072.                     context.arg = record.arg;
  29073.                     context.delegate = null;
  29074.                     return ContinueSentinel;
  29075.                 }
  29076.                 var info = record.arg;
  29077.                 if (!info) {
  29078.                     context.method = "throw";
  29079.                     context.arg = new TypeError("iterator result is not an object");
  29080.                     context.delegate = null;
  29081.                     return ContinueSentinel;
  29082.                 }
  29083.                 if (info.done) {
  29084.                     context[delegate.resultName] = info.value;
  29085.                     context.next = delegate.nextLoc;
  29086.                     if ("return" !== context.method) {
  29087.                         context.method = "next";
  29088.                         context.arg = undefined;
  29089.                     }
  29090.                 } else return info;
  29091.                 context.delegate = null;
  29092.                 return ContinueSentinel;
  29093.             }
  29094.             function pushTryEntry(locs) {
  29095.                 var entry = {
  29096.                     tryLoc: locs[0]
  29097.                 };
  29098.                 if (1 in locs) entry.catchLoc = locs[1];
  29099.                 if (2 in locs) {
  29100.                     entry.finallyLoc = locs[2];
  29101.                     entry.afterLoc = locs[3];
  29102.                 }
  29103.                 this.tryEntries.push(entry);
  29104.             }
  29105.             function resetTryEntry(entry) {
  29106.                 var record = entry.completion || {};
  29107.                 record.type = "normal";
  29108.                 delete record.arg;
  29109.                 entry.completion = record;
  29110.             }
  29111.             function Context(tryLocsList) {
  29112.                 this.tryEntries = [ {
  29113.                     tryLoc: "root"
  29114.                 } ];
  29115.                 tryLocsList.forEach(pushTryEntry, this);
  29116.                 this.reset(!0);
  29117.             }
  29118.             function values(iterable) {
  29119.                 if (iterable) {
  29120.                     var iteratorMethod = iterable[iteratorSymbol];
  29121.                     if (iteratorMethod) return iteratorMethod.call(iterable);
  29122.                     if ("function" == typeof iterable.next) return iterable;
  29123.                     if (!isNaN(iterable.length)) {
  29124.                         var i = -1, next = function next() {
  29125.                             for (;++i < iterable.length; ) if (hasOwn.call(iterable, i)) {
  29126.                                 next.value = iterable[i];
  29127.                                 next.done = !1;
  29128.                                 return next;
  29129.                             }
  29130.                             next.value = undefined;
  29131.                             next.done = !0;
  29132.                             return next;
  29133.                         };
  29134.                         return next.next = next;
  29135.                     }
  29136.                 }
  29137.                 return {
  29138.                     next: doneResult
  29139.                 };
  29140.             }
  29141.             function doneResult() {
  29142.                 return {
  29143.                     value: undefined,
  29144.                     done: !0
  29145.                 };
  29146.             }
  29147.             var undefined, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag", inModule = "object" == typeof module, runtime = global.regeneratorRuntime;
  29148.             if (!runtime) {
  29149.                 runtime = global.regeneratorRuntime = inModule ? module.exports : {};
  29150.                 runtime.wrap = wrap;
  29151.                 var GenStateSuspendedStart = "suspendedStart", GenStateSuspendedYield = "suspendedYield", GenStateExecuting = "executing", GenStateCompleted = "completed", ContinueSentinel = {}, IteratorPrototype = {};
  29152.                 IteratorPrototype[iteratorSymbol] = function() {
  29153.                     return this;
  29154.                 };
  29155.                 var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  29156.                 if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) IteratorPrototype = NativeIteratorPrototype;
  29157.                 var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
  29158.                 GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
  29159.                 GeneratorFunctionPrototype.constructor = GeneratorFunction;
  29160.                 GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction";
  29161.                 runtime.isGeneratorFunction = function(genFun) {
  29162.                     var ctor = "function" == typeof genFun && genFun.constructor;
  29163.                     return ctor ? ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name) : !1;
  29164.                 };
  29165.                 runtime.mark = function(genFun) {
  29166.                     if (Object.setPrototypeOf) Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); else {
  29167.                         genFun.__proto__ = GeneratorFunctionPrototype;
  29168.                         if (!(toStringTagSymbol in genFun)) genFun[toStringTagSymbol] = "GeneratorFunction";
  29169.                     }
  29170.                     genFun.prototype = Object.create(Gp);
  29171.                     return genFun;
  29172.                 };
  29173.                 runtime.awrap = function(arg) {
  29174.                     return {
  29175.                         __await: arg
  29176.                     };
  29177.                 };
  29178.                 defineIteratorMethods(AsyncIterator.prototype);
  29179.                 AsyncIterator.prototype[asyncIteratorSymbol] = function() {
  29180.                     return this;
  29181.                 };
  29182.                 runtime.AsyncIterator = AsyncIterator;
  29183.                 runtime.async = function(innerFn, outerFn, self, tryLocsList) {
  29184.                     var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
  29185.                     return runtime.isGeneratorFunction(outerFn) ? iter : iter.next().then(function(result) {
  29186.                         return result.done ? result.value : iter.next();
  29187.                     });
  29188.                 };
  29189.                 defineIteratorMethods(Gp);
  29190.                 Gp[toStringTagSymbol] = "Generator";
  29191.                 Gp[iteratorSymbol] = function() {
  29192.                     return this;
  29193.                 };
  29194.                 Gp.toString = function() {
  29195.                     return "[object Generator]";
  29196.                 };
  29197.                 runtime.keys = function(object) {
  29198.                     var keys = [];
  29199.                     for (var key in object) keys.push(key);
  29200.                     keys.reverse();
  29201.                     return function next() {
  29202.                         for (;keys.length; ) {
  29203.                             var key = keys.pop();
  29204.                             if (key in object) {
  29205.                                 next.value = key;
  29206.                                 next.done = !1;
  29207.                                 return next;
  29208.                             }
  29209.                         }
  29210.                         next.done = !0;
  29211.                         return next;
  29212.                     };
  29213.                 };
  29214.                 runtime.values = values;
  29215.                 Context.prototype = {
  29216.                     constructor: Context,
  29217.                     reset: function(skipTempReset) {
  29218.                         this.prev = 0;
  29219.                         this.next = 0;
  29220.                         this.sent = this._sent = undefined;
  29221.                         this.done = !1;
  29222.                         this.delegate = null;
  29223.                         this.method = "next";
  29224.                         this.arg = undefined;
  29225.                         this.tryEntries.forEach(resetTryEntry);
  29226.                         if (!skipTempReset) for (var name in this) if ("t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1))) this[name] = undefined;
  29227.                     },
  29228.                     stop: function() {
  29229.                         this.done = !0;
  29230.                         var rootEntry = this.tryEntries[0], rootRecord = rootEntry.completion;
  29231.                         if ("throw" === rootRecord.type) throw rootRecord.arg;
  29232.                         return this.rval;
  29233.                     },
  29234.                     dispatchException: function(exception) {
  29235.                         function handle(loc, caught) {
  29236.                             record.type = "throw";
  29237.                             record.arg = exception;
  29238.                             context.next = loc;
  29239.                             if (caught) {
  29240.                                 context.method = "next";
  29241.                                 context.arg = undefined;
  29242.                             }
  29243.                             return !!caught;
  29244.                         }
  29245.                         if (this.done) throw exception;
  29246.                         for (var context = this, i = this.tryEntries.length - 1; i >= 0; --i) {
  29247.                             var entry = this.tryEntries[i], record = entry.completion;
  29248.                             if ("root" === entry.tryLoc) return handle("end");
  29249.                             if (entry.tryLoc <= this.prev) {
  29250.                                 var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc");
  29251.                                 if (hasCatch && hasFinally) {
  29252.                                     if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); else if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
  29253.                                 } else if (hasCatch) {
  29254.                                     if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
  29255.                                 } else if (hasFinally) {
  29256.                                     if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
  29257.                                 } else throw new Error("try statement without catch or finally");
  29258.                             }
  29259.                         }
  29260.                     },
  29261.                     abrupt: function(type, arg) {
  29262.                         for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  29263.                             var entry = this.tryEntries[i];
  29264.                             if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
  29265.                                 var finallyEntry = entry;
  29266.                                 break;
  29267.                             }
  29268.                         }
  29269.                         if (finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) finallyEntry = null;
  29270.                         var record = finallyEntry ? finallyEntry.completion : {};
  29271.                         record.type = type;
  29272.                         record.arg = arg;
  29273.                         if (finallyEntry) {
  29274.                             this.method = "next";
  29275.                             this.next = finallyEntry.finallyLoc;
  29276.                             return ContinueSentinel;
  29277.                         }
  29278.                         return this.complete(record);
  29279.                     },
  29280.                     complete: function(record, afterLoc) {
  29281.                         if ("throw" === record.type) throw record.arg;
  29282.                         if ("break" === record.type || "continue" === record.type) this.next = record.arg; else if ("return" === record.type) {
  29283.                             this.rval = this.arg = record.arg;
  29284.                             this.method = "return";
  29285.                             this.next = "end";
  29286.                         } else if ("normal" === record.type && afterLoc) this.next = afterLoc;
  29287.                         return ContinueSentinel;
  29288.                     },
  29289.                     finish: function(finallyLoc) {
  29290.                         for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  29291.                             var entry = this.tryEntries[i];
  29292.                             if (entry.finallyLoc === finallyLoc) {
  29293.                                 this.complete(entry.completion, entry.afterLoc);
  29294.                                 resetTryEntry(entry);
  29295.                                 return ContinueSentinel;
  29296.                             }
  29297.                         }
  29298.                     },
  29299.                     "catch": function(tryLoc) {
  29300.                         for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  29301.                             var entry = this.tryEntries[i];
  29302.                             if (entry.tryLoc === tryLoc) {
  29303.                                 var record = entry.completion;
  29304.                                 if ("throw" === record.type) {
  29305.                                     var thrown = record.arg;
  29306.                                     resetTryEntry(entry);
  29307.                                 }
  29308.                                 return thrown;
  29309.                             }
  29310.                         }
  29311.                         throw new Error("illegal catch attempt");
  29312.                     },
  29313.                     delegateYield: function(iterable, resultName, nextLoc) {
  29314.                         this.delegate = {
  29315.                             iterator: values(iterable),
  29316.                             resultName: resultName,
  29317.                             nextLoc: nextLoc
  29318.                         };
  29319.                         if ("next" === this.method) this.arg = undefined;
  29320.                         return ContinueSentinel;
  29321.                     }
  29322.                 };
  29323.             } else if (inModule) module.exports = runtime;
  29324.         }("object" == typeof global ? global : "object" == typeof window ? window : "object" == typeof self ? self : this);
  29325.     }).call(exports, __webpack_require__(79));
  29326. }, function(module, exports, __webpack_require__) {
  29327.     (function(global, process) {
  29328.         !function(global, undefined) {
  29329.             "use strict";
  29330.             function setImmediate(callback) {
  29331.                 if ("function" != typeof callback) callback = new Function("" + callback);
  29332.                 for (var args = new Array(arguments.length - 1), i = 0; i < args.length; i++) args[i] = arguments[i + 1];
  29333.                 var task = {
  29334.                     callback: callback,
  29335.                     args: args
  29336.                 };
  29337.                 tasksByHandle[nextHandle] = task;
  29338.                 registerImmediate(nextHandle);
  29339.                 return nextHandle++;
  29340.             }
  29341.             function clearImmediate(handle) {
  29342.                 delete tasksByHandle[handle];
  29343.             }
  29344.             function run(task) {
  29345.                 var callback = task.callback, args = task.args;
  29346.                 switch (args.length) {
  29347.                   case 0:
  29348.                     callback();
  29349.                     break;
  29350.  
  29351.                   case 1:
  29352.                     callback(args[0]);
  29353.                     break;
  29354.  
  29355.                   case 2:
  29356.                     callback(args[0], args[1]);
  29357.                     break;
  29358.  
  29359.                   case 3:
  29360.                     callback(args[0], args[1], args[2]);
  29361.                     break;
  29362.  
  29363.                   default:
  29364.                     callback.apply(undefined, args);
  29365.                 }
  29366.             }
  29367.             function runIfPresent(handle) {
  29368.                 if (currentlyRunningATask) setTimeout(runIfPresent, 0, handle); else {
  29369.                     var task = tasksByHandle[handle];
  29370.                     if (task) {
  29371.                         currentlyRunningATask = !0;
  29372.                         try {
  29373.                             run(task);
  29374.                         } finally {
  29375.                             clearImmediate(handle);
  29376.                             currentlyRunningATask = !1;
  29377.                         }
  29378.                     }
  29379.                 }
  29380.             }
  29381.             if (!global.setImmediate) {
  29382.                 var registerImmediate, nextHandle = 1, tasksByHandle = {}, currentlyRunningATask = !1, doc = global.document, attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
  29383.                 attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
  29384.                 if ("[object process]" === {}.toString.call(global.process)) !function() {
  29385.                     registerImmediate = function(handle) {
  29386.                         process.nextTick(function() {
  29387.                             runIfPresent(handle);
  29388.                         });
  29389.                     };
  29390.                 }(); else if (function() {
  29391.                     if (global.postMessage && !global.importScripts) {
  29392.                         var postMessageIsAsynchronous = !0, oldOnMessage = global.onmessage;
  29393.                         global.onmessage = function() {
  29394.                             postMessageIsAsynchronous = !1;
  29395.                         };
  29396.                         global.postMessage("", "*");
  29397.                         global.onmessage = oldOnMessage;
  29398.                         return postMessageIsAsynchronous;
  29399.                     }
  29400.                 }()) !function() {
  29401.                     var messagePrefix = "setImmediate$" + Math.random() + "$", onGlobalMessage = function(event) {
  29402.                         if (event.source === global && "string" == typeof event.data && 0 === event.data.indexOf(messagePrefix)) runIfPresent(+event.data.slice(messagePrefix.length));
  29403.                     };
  29404.                     if (global.addEventListener) global.addEventListener("message", onGlobalMessage, !1); else global.attachEvent("onmessage", onGlobalMessage);
  29405.                     registerImmediate = function(handle) {
  29406.                         global.postMessage(messagePrefix + handle, "*");
  29407.                     };
  29408.                 }(); else if (global.MessageChannel) !function() {
  29409.                     var channel = new MessageChannel();
  29410.                     channel.port1.onmessage = function(event) {
  29411.                         runIfPresent(event.data);
  29412.                     };
  29413.                     registerImmediate = function(handle) {
  29414.                         channel.port2.postMessage(handle);
  29415.                     };
  29416.                 }(); else if (doc && "onreadystatechange" in doc.createElement("script")) !function() {
  29417.                     var html = doc.documentElement;
  29418.                     registerImmediate = function(handle) {
  29419.                         var script = doc.createElement("script");
  29420.                         script.onreadystatechange = function() {
  29421.                             runIfPresent(handle);
  29422.                             script.onreadystatechange = null;
  29423.                             html.removeChild(script);
  29424.                             script = null;
  29425.                         };
  29426.                         html.appendChild(script);
  29427.                     };
  29428.                 }(); else !function() {
  29429.                     registerImmediate = function(handle) {
  29430.                         setTimeout(runIfPresent, 0, handle);
  29431.                     };
  29432.                 }();
  29433.                 attachTo.setImmediate = setImmediate;
  29434.                 attachTo.clearImmediate = clearImmediate;
  29435.             }
  29436.         }("undefined" == typeof self ? void 0 === global ? this : global : self);
  29437.     }).call(exports, __webpack_require__(79), __webpack_require__(209));
  29438. }, function(module, exports, __webpack_require__) {
  29439.     function noop() {}
  29440.     function isHost(obj) {
  29441.         switch ({}.toString.call(obj)) {
  29442.           case "[object File]":
  29443.           case "[object Blob]":
  29444.           case "[object FormData]":
  29445.             return !0;
  29446.  
  29447.           default:
  29448.             return !1;
  29449.         }
  29450.     }
  29451.     function isObject(obj) {
  29452.         return obj === Object(obj);
  29453.     }
  29454.     function serialize(obj) {
  29455.         if (!isObject(obj)) return obj;
  29456.         var pairs = [];
  29457.         for (var key in obj) if (null != obj[key]) pushEncodedKeyValuePair(pairs, key, obj[key]);
  29458.         return pairs.join("&");
  29459.     }
  29460.     function pushEncodedKeyValuePair(pairs, key, val) {
  29461.         if (Array.isArray(val)) return val.forEach(function(v) {
  29462.             pushEncodedKeyValuePair(pairs, key, v);
  29463.         });
  29464.         pairs.push(encodeURIComponent(key) + "=" + encodeURIComponent(val));
  29465.     }
  29466.     function parseString(str) {
  29467.         for (var parts, pair, obj = {}, pairs = str.split("&"), i = 0, len = pairs.length; i < len; ++i) {
  29468.             pair = pairs[i];
  29469.             parts = pair.split("=");
  29470.             obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
  29471.         }
  29472.         return obj;
  29473.     }
  29474.     function parseHeader(str) {
  29475.         var index, line, field, val, lines = str.split(/\r?\n/), fields = {};
  29476.         lines.pop();
  29477.         for (var i = 0, len = lines.length; i < len; ++i) {
  29478.             line = lines[i];
  29479.             index = line.indexOf(":");
  29480.             field = line.slice(0, index).toLowerCase();
  29481.             val = trim(line.slice(index + 1));
  29482.             fields[field] = val;
  29483.         }
  29484.         return fields;
  29485.     }
  29486.     function isJSON(mime) {
  29487.         return /[\/+]json\b/.test(mime);
  29488.     }
  29489.     function type(str) {
  29490.         return str.split(/ *; */).shift();
  29491.     }
  29492.     function params(str) {
  29493.         return reduce(str.split(/ *; */), function(obj, str) {
  29494.             var parts = str.split(/ *= */), key = parts.shift(), val = parts.shift();
  29495.             if (key && val) obj[key] = val;
  29496.             return obj;
  29497.         }, {});
  29498.     }
  29499.     function Response(req, options) {
  29500.         options = options || {};
  29501.         this.req = req;
  29502.         this.xhr = this.req.xhr;
  29503.         this.text = "HEAD" != this.req.method && ("" === this.xhr.responseType || "text" === this.xhr.responseType) || "undefined" == typeof this.xhr.responseType ? this.xhr.responseText : null;
  29504.         this.statusText = this.req.xhr.statusText;
  29505.         this.setStatusProperties(this.xhr.status);
  29506.         this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());
  29507.         this.header["content-type"] = this.xhr.getResponseHeader("content-type");
  29508.         this.setHeaderProperties(this.header);
  29509.         this.body = "HEAD" != this.req.method ? this.parseBody(this.text ? this.text : this.xhr.response) : null;
  29510.     }
  29511.     function Request(method, url) {
  29512.         var self = this;
  29513.         Emitter.call(this);
  29514.         this._query = this._query || [];
  29515.         this.method = method;
  29516.         this.url = url;
  29517.         this.header = {};
  29518.         this._header = {};
  29519.         this.on("end", function() {
  29520.             var err = null, res = null;
  29521.             try {
  29522.                 res = new Response(self);
  29523.             } catch (e) {
  29524.                 err = new Error("Parser is unable to parse the response");
  29525.                 err.parse = !0;
  29526.                 err.original = e;
  29527.                 err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;
  29528.                 return self.callback(err);
  29529.             }
  29530.             self.emit("response", res);
  29531.             if (err) return self.callback(err, res);
  29532.             if (res.status >= 200 && res.status < 300) return self.callback(err, res);
  29533.             var new_err = new Error(res.statusText || "Unsuccessful HTTP response");
  29534.             new_err.original = err;
  29535.             new_err.response = res;
  29536.             new_err.status = res.status;
  29537.             self.callback(new_err, res);
  29538.         });
  29539.     }
  29540.     function request(method, url) {
  29541.         if ("function" == typeof url) return new Request("GET", method).end(url);
  29542.         if (1 == arguments.length) return new Request("GET", method); else return new Request(method, url);
  29543.     }
  29544.     function del(url, fn) {
  29545.         var req = request("DELETE", url);
  29546.         if (fn) req.end(fn);
  29547.         return req;
  29548.     }
  29549.     var root, Emitter = __webpack_require__(357), reduce = __webpack_require__(652);
  29550.     if ("undefined" != typeof window) root = window; else if ("undefined" != typeof self) root = self; else root = this;
  29551.     request.getXHR = function() {
  29552.         if (root.XMLHttpRequest && (!root.location || "file:" != root.location.protocol || !root.ActiveXObject)) return new XMLHttpRequest(); else {
  29553.             try {
  29554.                 return new ActiveXObject("Microsoft.XMLHTTP");
  29555.             } catch (e) {}
  29556.             try {
  29557.                 return new ActiveXObject("Msxml2.XMLHTTP.6.0");
  29558.             } catch (e) {}
  29559.             try {
  29560.                 return new ActiveXObject("Msxml2.XMLHTTP.3.0");
  29561.             } catch (e) {}
  29562.             try {
  29563.                 return new ActiveXObject("Msxml2.XMLHTTP");
  29564.             } catch (e) {}
  29565.         }
  29566.         return !1;
  29567.     };
  29568.     var trim = "".trim ? function(s) {
  29569.         return s.trim();
  29570.     } : function(s) {
  29571.         return s.replace(/(^\s*|\s*$)/g, "");
  29572.     };
  29573.     request.serializeObject = serialize;
  29574.     request.parseString = parseString;
  29575.     request.types = {
  29576.         html: "text/html",
  29577.         json: "application/json",
  29578.         xml: "application/xml",
  29579.         urlencoded: "application/x-www-form-urlencoded",
  29580.         form: "application/x-www-form-urlencoded",
  29581.         "form-data": "application/x-www-form-urlencoded"
  29582.     };
  29583.     request.serialize = {
  29584.         "application/x-www-form-urlencoded": serialize,
  29585.         "application/json": JSON.stringify
  29586.     };
  29587.     request.parse = {
  29588.         "application/x-www-form-urlencoded": parseString,
  29589.         "application/json": JSON.parse
  29590.     };
  29591.     Response.prototype.get = function(field) {
  29592.         return this.header[field.toLowerCase()];
  29593.     };
  29594.     Response.prototype.setHeaderProperties = function(header) {
  29595.         var ct = this.header["content-type"] || "";
  29596.         this.type = type(ct);
  29597.         var obj = params(ct);
  29598.         for (var key in obj) this[key] = obj[key];
  29599.     };
  29600.     Response.prototype.parseBody = function(str) {
  29601.         var parse = request.parse[this.type];
  29602.         return parse && str && (str.length || str instanceof Object) ? parse(str) : null;
  29603.     };
  29604.     Response.prototype.setStatusProperties = function(status) {
  29605.         if (1223 === status) status = 204;
  29606.         var type = status / 100 | 0;
  29607.         this.status = this.statusCode = status;
  29608.         this.statusType = type;
  29609.         this.info = 1 == type;
  29610.         this.ok = 2 == type;
  29611.         this.clientError = 4 == type;
  29612.         this.serverError = 5 == type;
  29613.         this.error = 4 == type || 5 == type ? this.toError() : !1;
  29614.         this.accepted = 202 == status;
  29615.         this.noContent = 204 == status;
  29616.         this.badRequest = 400 == status;
  29617.         this.unauthorized = 401 == status;
  29618.         this.notAcceptable = 406 == status;
  29619.         this.notFound = 404 == status;
  29620.         this.forbidden = 403 == status;
  29621.     };
  29622.     Response.prototype.toError = function() {
  29623.         var req = this.req, method = req.method, url = req.url, msg = "cannot " + method + " " + url + " (" + this.status + ")", err = new Error(msg);
  29624.         err.status = this.status;
  29625.         err.method = method;
  29626.         err.url = url;
  29627.         return err;
  29628.     };
  29629.     request.Response = Response;
  29630.     Emitter(Request.prototype);
  29631.     Request.prototype.use = function(fn) {
  29632.         fn(this);
  29633.         return this;
  29634.     };
  29635.     Request.prototype.timeout = function(ms) {
  29636.         this._timeout = ms;
  29637.         return this;
  29638.     };
  29639.     Request.prototype.clearTimeout = function() {
  29640.         this._timeout = 0;
  29641.         clearTimeout(this._timer);
  29642.         return this;
  29643.     };
  29644.     Request.prototype.abort = function() {
  29645.         if (!this.aborted) {
  29646.             this.aborted = !0;
  29647.             this.xhr.abort();
  29648.             this.clearTimeout();
  29649.             this.emit("abort");
  29650.             return this;
  29651.         }
  29652.     };
  29653.     Request.prototype.set = function(field, val) {
  29654.         if (isObject(field)) {
  29655.             for (var key in field) this.set(key, field[key]);
  29656.             return this;
  29657.         }
  29658.         this._header[field.toLowerCase()] = val;
  29659.         this.header[field] = val;
  29660.         return this;
  29661.     };
  29662.     Request.prototype.unset = function(field) {
  29663.         delete this._header[field.toLowerCase()];
  29664.         delete this.header[field];
  29665.         return this;
  29666.     };
  29667.     Request.prototype.getHeader = function(field) {
  29668.         return this._header[field.toLowerCase()];
  29669.     };
  29670.     Request.prototype.type = function(type) {
  29671.         this.set("Content-Type", request.types[type] || type);
  29672.         return this;
  29673.     };
  29674.     Request.prototype.parse = function(fn) {
  29675.         this._parser = fn;
  29676.         return this;
  29677.     };
  29678.     Request.prototype.accept = function(type) {
  29679.         this.set("Accept", request.types[type] || type);
  29680.         return this;
  29681.     };
  29682.     Request.prototype.auth = function(user, pass) {
  29683.         var str = btoa(user + ":" + pass);
  29684.         this.set("Authorization", "Basic " + str);
  29685.         return this;
  29686.     };
  29687.     Request.prototype.query = function(val) {
  29688.         if ("string" != typeof val) val = serialize(val);
  29689.         if (val) this._query.push(val);
  29690.         return this;
  29691.     };
  29692.     Request.prototype.field = function(name, val) {
  29693.         if (!this._formData) this._formData = new root.FormData();
  29694.         this._formData.append(name, val);
  29695.         return this;
  29696.     };
  29697.     Request.prototype.attach = function(field, file, filename) {
  29698.         if (!this._formData) this._formData = new root.FormData();
  29699.         this._formData.append(field, file, filename || file.name);
  29700.         return this;
  29701.     };
  29702.     Request.prototype.send = function(data) {
  29703.         var obj = isObject(data), type = this.getHeader("Content-Type");
  29704.         if (obj && isObject(this._data)) for (var key in data) this._data[key] = data[key]; else if ("string" == typeof data) {
  29705.             if (!type) this.type("form");
  29706.             type = this.getHeader("Content-Type");
  29707.             if ("application/x-www-form-urlencoded" == type) this._data = this._data ? this._data + "&" + data : data; else this._data = (this._data || "") + data;
  29708.         } else this._data = data;
  29709.         if (!obj || isHost(data)) return this;
  29710.         if (!type) this.type("json");
  29711.         return this;
  29712.     };
  29713.     Request.prototype.callback = function(err, res) {
  29714.         var fn = this._callback;
  29715.         this.clearTimeout();
  29716.         fn(err, res);
  29717.     };
  29718.     Request.prototype.crossDomainError = function() {
  29719.         var err = new Error("Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.");
  29720.         err.crossDomain = !0;
  29721.         err.status = this.status;
  29722.         err.method = this.method;
  29723.         err.url = this.url;
  29724.         this.callback(err);
  29725.     };
  29726.     Request.prototype.timeoutError = function() {
  29727.         var timeout = this._timeout, err = new Error("timeout of " + timeout + "ms exceeded");
  29728.         err.timeout = timeout;
  29729.         this.callback(err);
  29730.     };
  29731.     Request.prototype.withCredentials = function() {
  29732.         this._withCredentials = !0;
  29733.         return this;
  29734.     };
  29735.     Request.prototype.end = function(fn) {
  29736.         var self = this, xhr = this.xhr = request.getXHR(), query = this._query.join("&"), timeout = this._timeout, data = this._formData || this._data;
  29737.         this._callback = fn || noop;
  29738.         xhr.onreadystatechange = function() {
  29739.             if (4 == xhr.readyState) {
  29740.                 var status;
  29741.                 try {
  29742.                     status = xhr.status;
  29743.                 } catch (e) {
  29744.                     status = 0;
  29745.                 }
  29746.                 if (0 == status) {
  29747.                     if (self.timedout) return self.timeoutError();
  29748.                     if (self.aborted) return;
  29749.                     return self.crossDomainError();
  29750.                 }
  29751.                 self.emit("end");
  29752.             }
  29753.         };
  29754.         var handleProgress = function(e) {
  29755.             if (e.total > 0) e.percent = e.loaded / e.total * 100;
  29756.             e.direction = "download";
  29757.             self.emit("progress", e);
  29758.         };
  29759.         if (this.hasListeners("progress")) xhr.onprogress = handleProgress;
  29760.         try {
  29761.             if (xhr.upload && this.hasListeners("progress")) xhr.upload.onprogress = handleProgress;
  29762.         } catch (e) {}
  29763.         if (timeout && !this._timer) this._timer = setTimeout(function() {
  29764.             self.timedout = !0;
  29765.             self.abort();
  29766.         }, timeout);
  29767.         if (query) {
  29768.             query = request.serializeObject(query);
  29769.             this.url += ~this.url.indexOf("?") ? "&" + query : "?" + query;
  29770.         }
  29771.         xhr.open(this.method, this.url, !0);
  29772.         if (this._withCredentials) xhr.withCredentials = !0;
  29773.         if ("GET" != this.method && "HEAD" != this.method && "string" != typeof data && !isHost(data)) {
  29774.             var contentType = this.getHeader("Content-Type"), serialize = this._parser || request.serialize[contentType ? contentType.split(";")[0] : ""];
  29775.             if (!serialize && isJSON(contentType)) serialize = request.serialize["application/json"];
  29776.             if (serialize) data = serialize(data);
  29777.         }
  29778.         for (var field in this.header) if (null != this.header[field]) xhr.setRequestHeader(field, this.header[field]);
  29779.         this.emit("request", this);
  29780.         xhr.send(void 0 !== data ? data : null);
  29781.         return this;
  29782.     };
  29783.     Request.prototype.then = function(fulfill, reject) {
  29784.         return this.end(function(err, res) {
  29785.             err ? reject(err) : fulfill(res);
  29786.         });
  29787.     };
  29788.     request.Request = Request;
  29789.     request.get = function(url, data, fn) {
  29790.         var req = request("GET", url);
  29791.         if ("function" == typeof data) fn = data, data = null;
  29792.         if (data) req.query(data);
  29793.         if (fn) req.end(fn);
  29794.         return req;
  29795.     };
  29796.     request.head = function(url, data, fn) {
  29797.         var req = request("HEAD", url);
  29798.         if ("function" == typeof data) fn = data, data = null;
  29799.         if (data) req.send(data);
  29800.         if (fn) req.end(fn);
  29801.         return req;
  29802.     };
  29803.     request.del = del;
  29804.     request["delete"] = del;
  29805.     request.patch = function(url, data, fn) {
  29806.         var req = request("PATCH", url);
  29807.         if ("function" == typeof data) fn = data, data = null;
  29808.         if (data) req.send(data);
  29809.         if (fn) req.end(fn);
  29810.         return req;
  29811.     };
  29812.     request.post = function(url, data, fn) {
  29813.         var req = request("POST", url);
  29814.         if ("function" == typeof data) fn = data, data = null;
  29815.         if (data) req.send(data);
  29816.         if (fn) req.end(fn);
  29817.         return req;
  29818.     };
  29819.     request.put = function(url, data, fn) {
  29820.         var req = request("PUT", url);
  29821.         if ("function" == typeof data) fn = data, data = null;
  29822.         if (data) req.send(data);
  29823.         if (fn) req.end(fn);
  29824.         return req;
  29825.     };
  29826.     module.exports = request;
  29827. }, function(module, exports, __webpack_require__) {
  29828.     function Timeout(id, clearFn) {
  29829.         this._id = id;
  29830.         this._clearFn = clearFn;
  29831.     }
  29832.     var apply = Function.prototype.apply;
  29833.     exports.setTimeout = function() {
  29834.         return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);
  29835.     };
  29836.     exports.setInterval = function() {
  29837.         return new Timeout(apply.call(setInterval, window, arguments), clearInterval);
  29838.     };
  29839.     exports.clearTimeout = exports.clearInterval = function(timeout) {
  29840.         if (timeout) timeout.close();
  29841.     };
  29842.     Timeout.prototype.unref = Timeout.prototype.ref = function() {};
  29843.     Timeout.prototype.close = function() {
  29844.         this._clearFn.call(window, this._id);
  29845.     };
  29846.     exports.enroll = function(item, msecs) {
  29847.         clearTimeout(item._idleTimeoutId);
  29848.         item._idleTimeout = msecs;
  29849.     };
  29850.     exports.unenroll = function(item) {
  29851.         clearTimeout(item._idleTimeoutId);
  29852.         item._idleTimeout = -1;
  29853.     };
  29854.     exports._unrefActive = exports.active = function(item) {
  29855.         clearTimeout(item._idleTimeoutId);
  29856.         var msecs = item._idleTimeout;
  29857.         if (msecs >= 0) item._idleTimeoutId = setTimeout(function() {
  29858.             if (item._onTimeout) item._onTimeout();
  29859.         }, msecs);
  29860.     };
  29861.     __webpack_require__(661);
  29862.     exports.setImmediate = setImmediate;
  29863.     exports.clearImmediate = clearImmediate;
  29864. }, function(module, exports, __webpack_require__) {
  29865.     "use strict";
  29866.     function _interopRequireDefault(obj) {
  29867.         return obj && obj.__esModule ? obj : {
  29868.             "default": obj
  29869.         };
  29870.     }
  29871.     function getInstallationResult() {
  29872.         return function(dispatch, getState) {
  29873.             var _getState = getState(), newDriversState = _getState.drivers, installation = _getState.installation, finalScreen = _getState.finalScreen, itemsContainDrivers = installation.itemsContainDrivers, installationItems = installation.items, oldDriversState = finalScreen.oldDriversState, resultType = void 0, finishedPrograms = void 0, failedPrograms = void 0, finishedDevices = void 0, failedDevices = void 0, missedDevices = void 0;
  29874.             finishedPrograms = installationItems.filter(function(item) {
  29875.                 return !item.isDriver && "done" === item.status;
  29876.             });
  29877.             failedPrograms = installationItems.filter(function(item) {
  29878.                 return !item.isDriver && "error" === item.status;
  29879.             });
  29880.             if (!itemsContainDrivers) if (1 === installationItems.length) resultType = finishedPrograms.length ? "SINGLE_PROGRAM_FINISHED" : "SINGLE_PROGRAM_FAILED"; else resultType = !failedPrograms.length ? resultType = "PROGRAMS_ALL_FINISHED" : finishedPrograms.length ? "PROGRAMS_SOME_FINISHED" : "PROGRAMS_ALL_FAILED"; else {
  29881.                 var installingDeviceIds = (0, _reduce2["default"])(installationItems, function(results, item) {
  29882.                     if (item.isDriver) results.push(item.fullDeviceId);
  29883.                     return results;
  29884.                 }, []);
  29885.                 finishedDevices = [];
  29886.                 failedDevices = [];
  29887.                 missedDevices = [];
  29888.                 newDriversState.devices.forEach(function(device) {
  29889.                     if (installingDeviceIds.includes(device.deviceId)) if ((0, _driversPrograms.isDeviceDriverNotInstalled)(device)) failedDevices.push(_extends({}, device)); else {
  29890.                         var old = oldDriversState.devices.find(function(old) {
  29891.                             return old.deviceId === device.deviceId;
  29892.                         });
  29893.                         finishedDevices.push(_extends({}, device, {
  29894.                             oldDriver: old && old.currentDriver
  29895.                         }));
  29896.                     } else if ((0, _driversPrograms.isDeviceDriverNotInstalled)(device)) missedDevices.push(_extends({}, device));
  29897.                 });
  29898.                 var oldNotInstalled = oldDriversState.devices.filter(_driversPrograms.isDeviceDriverNotInstalled), oldNotInstalledLength = oldNotInstalled.length, notInstalledLength = failedDevices.length + missedDevices.length, singleDriver = 1 === installationItems.length, itemsContainPrograms = finishedPrograms.length + failedPrograms.length > 0;
  29899.                 if (!notInstalledLength) if (itemsContainPrograms) resultType = singleDriver ? "SINGLE_DRIVER_OK_PROGRAMS" : "DRIVERS_OK_PROGRAMS"; else resultType = singleDriver ? "SINGLE_DRIVER_OK" : "DRIVERS_OK"; else if (oldNotInstalledLength > notInstalledLength) resultType = singleDriver ? "SINGLE_DRIVER_BETTER" : "DRIVERS_BETTER"; else resultType = singleDriver ? "SINGLE_DRIVER_NOT_BETTER" : "DRIVERS_NOT_BETTER";
  29900.             }
  29901.             dispatch({
  29902.                 type: "FINAL_SCREEN_GET_INSTALLATION_RESULT",
  29903.                 payload: {
  29904.                     resultType: resultType,
  29905.                     finishedPrograms: finishedPrograms,
  29906.                     failedPrograms: failedPrograms,
  29907.                     finishedDevices: finishedDevices,
  29908.                     failedDevices: failedDevices,
  29909.                     missedDevices: missedDevices
  29910.                 }
  29911.             });
  29912.         };
  29913.     }
  29914.     function repeatLastInstallation() {
  29915.         return function(dispatch, getState) {
  29916.             _logs2["default"].info({
  29917.                 action: "final restart installation clicked"
  29918.             }, {}, "final:restart:installation:clicked");
  29919.             var _getState2 = getState(), finalScreen = _getState2.finalScreen, lastInstallationInput = finalScreen.lastInstallationInput;
  29920.             dispatch(new _Installation2["default"]().run(_extends({}, lastInstallationInput)));
  29921.         };
  29922.     }
  29923.     function hoverFinishedItem(item, isLeaving) {
  29924.         if (item.deviceId) return {
  29925.             type: "FINAL_SCREEN_HOVER_FINISHED_DEVICE",
  29926.             payload: {
  29927.                 deviceId: item.deviceId,
  29928.                 isLeaving: isLeaving
  29929.             }
  29930.         }; else return {
  29931.             type: "FINAL_SCREEN_HOVER_FINISHED_PROGRAM",
  29932.             payload: {
  29933.                 id: item.id,
  29934.                 isLeaving: isLeaving
  29935.             }
  29936.         };
  29937.     }
  29938.     exports.__esModule = !0;
  29939.     var _extends = Object.assign || function(target) {
  29940.         for (var i = 1; i < arguments.length; i++) {
  29941.             var source = arguments[i];
  29942.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  29943.         }
  29944.         return target;
  29945.     };
  29946.     exports.getInstallationResult = getInstallationResult;
  29947.     exports.repeatLastInstallation = repeatLastInstallation;
  29948.     exports.hoverFinishedItem = hoverFinishedItem;
  29949.     var _reduce = __webpack_require__(517), _reduce2 = _interopRequireDefault(_reduce), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _Installation = __webpack_require__(168), _Installation2 = _interopRequireDefault(_Installation), _driversPrograms = __webpack_require__(36);
  29950. }, function(module, exports, __webpack_require__) {
  29951.     "use strict";
  29952.     (function(l) {
  29953.         function _interopRequireDefault(obj) {
  29954.             return obj && obj.__esModule ? obj : {
  29955.                 "default": obj
  29956.             };
  29957.         }
  29958.         function _asyncToGenerator(fn) {
  29959.             return function() {
  29960.                 var gen = fn.apply(this, arguments);
  29961.                 return new Promise(function(resolve, reject) {
  29962.                     function step(key, arg) {
  29963.                         try {
  29964.                             var info = gen[key](arg), value = info.value;
  29965.                         } catch (error) {
  29966.                             reject(error);
  29967.                             return;
  29968.                         }
  29969.                         if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  29970.                             step("next", value);
  29971.                         }, function(err) {
  29972.                             step("throw", err);
  29973.                         });
  29974.                     }
  29975.                     return step("next");
  29976.                 });
  29977.             };
  29978.         }
  29979.         exports.__esModule = !0;
  29980.         exports.openURL = exports.installPlaykeyAndGo = exports.checkPlaykey = exports.hoverGame = exports.loadGamesList = undefined;
  29981.         var _registry = __webpack_require__(30), _utils = __webpack_require__(23), _system = __webpack_require__(9), _wget = __webpack_require__(150), _wget2 = _interopRequireDefault(_wget), _runCommandAsync = __webpack_require__(127), _games = __webpack_require__(724), _games2 = _interopRequireDefault(_games), openURL = (exports.loadGamesList = function() {
  29982.             return {
  29983.                 type: "GAMES_LIST_LOADED",
  29984.                 payload: [].concat((0, _games2["default"])(l))
  29985.             };
  29986.         }, exports.hoverGame = function(id, isLeaving) {
  29987.             return function(dispatch, getState) {
  29988.                 dispatch({
  29989.                     type: "GAMES_HOVER_TOP_GAME",
  29990.                     payload: {
  29991.                         id: id,
  29992.                         isLeaving: isLeaving
  29993.                     }
  29994.                 });
  29995.             };
  29996.         }, exports.checkPlaykey = function() {
  29997.             return {
  29998.                 type: "GAMES_PLAYKEY_CHECKED",
  29999.                 payload: (0, _registry.RegExists)("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{4287A341-688B-4B85-88AB-338966C6B7D8}_is1\\DisplayName")
  30000.             };
  30001.         }, exports.installPlaykeyAndGo = function(urlToGo) {
  30002.             return function() {
  30003.                 var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(dispatch, getState) {
  30004.                     var exeName, link, targetFolder, events, exitCode;
  30005.                     return regeneratorRuntime.wrap(function(_context) {
  30006.                         for (;;) switch (_context.prev = _context.next) {
  30007.                           case 0:
  30008.                             dispatch({
  30009.                                 type: "GAMES_PLAYKEY_INSTALLING"
  30010.                             });
  30011.                             exeName = "Playkey.exe";
  30012.                             link = "http://download.drp.su/soft/" + exeName;
  30013.                             targetFolder = _system.AppData + "\\DRPSu\\PROGRAMS";
  30014.                             events = {
  30015.                                 beforeDownloading: function() {},
  30016.                                 afterDownloading: function() {}
  30017.                             };
  30018.                             _context.next = 7;
  30019.                             return _wget2["default"].downloadFiles(events, targetFolder, [ {
  30020.                                 link: link
  30021.                             } ]);
  30022.  
  30023.                           case 7:
  30024.                             _context.next = 9;
  30025.                             return (0, _runCommandAsync.runCommandAsync)({
  30026.                                 command: '"' + targetFolder + "/" + exeName + '" /verysilent',
  30027.                                 checkInterval: 2e3
  30028.                             });
  30029.  
  30030.                           case 9:
  30031.                             exitCode = _context.sent;
  30032.                             dispatch({
  30033.                                 type: "GAMES_PLAYKEY_INSTALLED",
  30034.                                 payload: 0 === exitCode
  30035.                             });
  30036.                             dispatch(openURL(urlToGo));
  30037.  
  30038.                           case 12:
  30039.                           case "end":
  30040.                             return _context.stop();
  30041.                         }
  30042.                     }, _callee, undefined);
  30043.                 }));
  30044.                 return function(_x, _x2) {
  30045.                     return _ref.apply(this, arguments);
  30046.                 };
  30047.             }();
  30048.         }, exports.openURL = function(url) {
  30049.             return function(dispatch, getState) {
  30050.                 dispatch({
  30051.                     type: "USER_ACTIVATED"
  30052.                 });
  30053.                 (0, _utils.goToUrl)(url);
  30054.             };
  30055.         });
  30056.     }).call(exports, __webpack_require__(6));
  30057. }, function(module, exports, __webpack_require__) {
  30058.     "use strict";
  30059.     function _interopRequireDefault(obj) {
  30060.         return obj && obj.__esModule ? obj : {
  30061.             "default": obj
  30062.         };
  30063.     }
  30064.     function showLeftArrow() {
  30065.         return function(dispatch, getState) {
  30066.             dispatch({
  30067.                 type: "NEW_ORDER_SHOW_LEFT_ARROW"
  30068.             });
  30069.         };
  30070.     }
  30071.     function showRightArrow() {
  30072.         return function(dispatch, getState) {
  30073.             dispatch({
  30074.                 type: "NEW_ORDER_SHOW_RIGTH_ARROW"
  30075.             });
  30076.         };
  30077.     }
  30078.     function hideArrows() {
  30079.         return function(dispatch, getState) {
  30080.             dispatch({
  30081.                 type: "NEW_ORDER_HIDE_ARROWS"
  30082.             });
  30083.         };
  30084.     }
  30085.     function cancelItemInstallation(itemName, itemId, itemStatus) {
  30086.         return function(dispatch, getState) {
  30087.             _statistics2["default"].event({
  30088.                 action: "installation cancel clicked " + itemName
  30089.             });
  30090.             dispatch(new _Installation2["default"]().cancelItem(itemId, itemStatus));
  30091.         };
  30092.     }
  30093.     function confirmPromoInstallation(promo) {
  30094.         return function(dispatch, getState) {
  30095.             dispatch({
  30096.                 type: "NEW_ORDER_INSTALLATION_PROMO_CONFIRMED",
  30097.                 payload: promo
  30098.             });
  30099.         };
  30100.     }
  30101.     function confirmApplicationsRestart(applications) {
  30102.         return function(dispatch, getState) {
  30103.             dispatch({
  30104.                 type: "NEW_ORDER_INSTALLATION_RESTART_APPLICATIONS_CONFIRMED",
  30105.                 payload: applications
  30106.             });
  30107.         };
  30108.     }
  30109.     exports.__esModule = !0;
  30110.     exports.showLeftArrow = showLeftArrow;
  30111.     exports.showRightArrow = showRightArrow;
  30112.     exports.hideArrows = hideArrows;
  30113.     exports.cancelItemInstallation = cancelItemInstallation;
  30114.     exports.confirmPromoInstallation = confirmPromoInstallation;
  30115.     exports.confirmApplicationsRestart = confirmApplicationsRestart;
  30116.     var _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _Installation = __webpack_require__(168), _Installation2 = _interopRequireDefault(_Installation);
  30117. }, function(module, exports, __webpack_require__) {
  30118.     "use strict";
  30119.     function _interopRequireDefault(obj) {
  30120.         return obj && obj.__esModule ? obj : {
  30121.             "default": obj
  30122.         };
  30123.     }
  30124.     exports.__esModule = !0;
  30125.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Router = __webpack_require__(710), _Router2 = _interopRequireDefault(_Router);
  30126.     __webpack_require__(774);
  30127.     var App = _react2["default"].createClass({
  30128.         displayName: "App",
  30129.         render: function() {
  30130.             return (0, _Router2["default"])(null);
  30131.         }
  30132.     });
  30133.     exports["default"] = App;
  30134.     module.exports = exports["default"];
  30135. }, function(module, exports, __webpack_require__) {
  30136.     "use strict";
  30137.     (function(l) {
  30138.         function _interopRequireDefault(obj) {
  30139.             return obj && obj.__esModule ? obj : {
  30140.                 "default": obj
  30141.             };
  30142.         }
  30143.         exports.__esModule = !0;
  30144.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _menuActions = __webpack_require__(62), _appActions = __webpack_require__(123);
  30145.         __webpack_require__(775);
  30146.         var BurgerMenu = _react2["default"].createClass({
  30147.             displayName: "BurgerMenu",
  30148.             mixins: [ __webpack_require__(5) ],
  30149.             propTypes: {
  30150.                 children: _react.PropTypes.any.isRequired,
  30151.                 openSystemMenu: _react.PropTypes.func.isRequired,
  30152.                 toggleBurgerMenu: _react.PropTypes.func.isRequired,
  30153.                 currentLanguage: _react.PropTypes.string.isRequired,
  30154.                 page: _react.PropTypes.string.isRequired
  30155.             },
  30156.             render: function() {
  30157.                 var _props = this.props, openSystemMenu = _props.openSystemMenu, toggleBurgerMenu = _props.toggleBurgerMenu, page = _props.page, showLinks = -1 === [ "INSTALLATION" ].indexOf(page);
  30158.                 return _react2["default"].DOM.div(null, _react2["default"].DOM.div({
  30159.                     className: "semi-transparent-overlay",
  30160.                     onMouseDown: function() {
  30161.                         return toggleBurgerMenu();
  30162.                     }
  30163.                 }), _react2["default"].DOM.div({
  30164.                     className: "burger-menu"
  30165.                 }, _react2["default"].DOM.div({
  30166.                     className: "burger-menu_inner"
  30167.                 }, _react2["default"].DOM.a({
  30168.                     href: "#",
  30169.                     className: "burger-menu_link " + (showLinks ? "" : "burger-menu_link-disabled"),
  30170.                     onClick: function() {
  30171.                         return openSystemMenu("RECOVERY");
  30172.                     },
  30173.                     style: {
  30174.                         marginTop: "18px"
  30175.                     }
  30176.                 }, _react2["default"].DOM.span({
  30177.                     className: "burger-menu_link-icon icons-controls"
  30178.                 }, ""), l("menu_create_recovery_point")), _react2["default"].DOM.a({
  30179.                     href: "#",
  30180.                     className: "burger-menu_link " + (showLinks ? "" : "burger-menu_link-disabled"),
  30181.                     onClick: function() {
  30182.                         return openSystemMenu("BACKUP");
  30183.                     }
  30184.                 }, _react2["default"].DOM.span({
  30185.                     className: "burger-menu_link-icon icons-controls"
  30186.                 }, ""), l("menu_create_drivers_backup")), _react2["default"].DOM.div({
  30187.                     className: "burger-menu_divider " + (showLinks ? "" : "burger-menu_divider-is-hidden")
  30188.                 }), _react2["default"].DOM.a({
  30189.                     href: "#",
  30190.                     className: "burger-menu_link " + (showLinks ? "" : "burger-menu_link-disabled"),
  30191.                     onMouseDown: function() {
  30192.                         return openSystemMenu("UNINSTALL");
  30193.                     }
  30194.                 }, _react2["default"].DOM.span({
  30195.                     className: "burger-menu_link-icon icons-controls"
  30196.                 }, ""), l("menu_add_remove_programs")), _react2["default"].DOM.a({
  30197.                     href: "#",
  30198.                     className: "burger-menu_link " + (showLinks ? "" : "burger-menu_first-link"),
  30199.                     onMouseDown: function() {
  30200.                         return openSystemMenu("DEVICE_MANAGER");
  30201.                     }
  30202.                 }, _react2["default"].DOM.span({
  30203.                     className: "burger-menu_link-icon icons-controls"
  30204.                 }, ""), l("menu_device_manager")), _react2["default"].DOM.a({
  30205.                     href: "#",
  30206.                     className: "burger-menu_link",
  30207.                     onMouseDown: function() {
  30208.                         return openSystemMenu("SYSTEM_PROPERTIES");
  30209.                     }
  30210.                 }, _react2["default"].DOM.span({
  30211.                     className: "burger-menu_link-icon icons-controls"
  30212.                 }, ""), l("menu_system_properties")), _react2["default"].DOM.a({
  30213.                     href: "#",
  30214.                     className: "burger-menu_link",
  30215.                     onMouseDown: function() {
  30216.                         return openSystemMenu("DISPLAY_PROPERTIES");
  30217.                     }
  30218.                 }, _react2["default"].DOM.span({
  30219.                     className: "burger-menu_link-icon icons-controls"
  30220.                 }, ""), l("menu_display_properties")), _react2["default"].DOM.a({
  30221.                     href: "#",
  30222.                     className: "burger-menu_link",
  30223.                     onMouseDown: function() {
  30224.                         return openSystemMenu("POWER_OPTIONS");
  30225.                     }
  30226.                 }, _react2["default"].DOM.span({
  30227.                     className: "burger-menu_link-icon icons-controls"
  30228.                 }, ""), l("menu_power_options")), _react2["default"].DOM.a({
  30229.                     href: "#",
  30230.                     className: "burger-menu_link",
  30231.                     onMouseDown: function() {
  30232.                         return openSystemMenu("NETWORK_CONNECTIONS");
  30233.                     }
  30234.                 }, _react2["default"].DOM.span({
  30235.                     className: "burger-menu_link-icon icons-controls"
  30236.                 }, ""), l("menu_network_connections")), _react2["default"].DOM.a({
  30237.                     href: "#",
  30238.                     className: "burger-menu_link",
  30239.                     onMouseDown: function() {
  30240.                         return openSystemMenu("COMPUTER_MANAGEMENT");
  30241.                     }
  30242.                 }, _react2["default"].DOM.span({
  30243.                     className: "burger-menu_link-icon icons-controls"
  30244.                 }, ""), l("menu_computer_management")), _react2["default"].DOM.a({
  30245.                     href: "#",
  30246.                     className: "burger-menu_link",
  30247.                     onMouseDown: function() {
  30248.                         return openSystemMenu("CONTROL");
  30249.                     }
  30250.                 }, _react2["default"].DOM.span({
  30251.                     className: "burger-menu_link-icon icons-controls"
  30252.                 }, ""), l("menu_control_panel")), _react2["default"].DOM.a({
  30253.                     href: "#",
  30254.                     className: "burger-menu_link",
  30255.                     onMouseDown: function() {
  30256.                         return openSystemMenu("DISK_MANAGEMENT");
  30257.                     }
  30258.                 }, _react2["default"].DOM.span({
  30259.                     className: "burger-menu_link-icon icons-controls"
  30260.                 }, ""), l("menu_disk_management")), _react2["default"].DOM.a({
  30261.                     href: "#",
  30262.                     className: "burger-menu_link",
  30263.                     onMouseDown: function() {
  30264.                         return openSystemMenu("TASK_MANAGER");
  30265.                     }
  30266.                 }, _react2["default"].DOM.span({
  30267.                     className: "burger-menu_link-icon icons-controls"
  30268.                 }, ""), l("menu_task_manager")), _react2["default"].DOM.a({
  30269.                     href: "#",
  30270.                     className: "burger-menu_link",
  30271.                     onMouseDown: function() {
  30272.                         return openSystemMenu("CMD");
  30273.                     }
  30274.                 }, _react2["default"].DOM.span({
  30275.                     className: "burger-menu_link-icon icons-controls"
  30276.                 }, ""), l("menu_cmd")))));
  30277.             }
  30278.         }), mapState = function(state) {
  30279.             return {
  30280.                 page: state.page
  30281.             };
  30282.         }, actions = {
  30283.             openSystemMenu: _menuActions.openSystemMenu,
  30284.             toggleBurgerMenu: _appActions.toggleBurgerMenu
  30285.         };
  30286.         exports["default"] = (0, _connect2["default"])(mapState, actions)(BurgerMenu);
  30287.         module.exports = exports["default"];
  30288.     }).call(exports, __webpack_require__(6));
  30289. }, function(module, exports, __webpack_require__) {
  30290.     "use strict";
  30291.     (function(l) {
  30292.         function _interopRequireDefault(obj) {
  30293.             return obj && obj.__esModule ? obj : {
  30294.                 "default": obj
  30295.             };
  30296.         }
  30297.         function mapState(state) {
  30298.             return {
  30299.                 popup: state.app.popup,
  30300.                 currentLanguage: state.lang.currentLanguage
  30301.             };
  30302.         }
  30303.         exports.__esModule = !0;
  30304.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _programsActions = __webpack_require__(99), _utils = __webpack_require__(23);
  30305.         __webpack_require__(776);
  30306.         var ConfirmPopup = _react2["default"].createClass({
  30307.             displayName: "ConfirmPopup",
  30308.             mixins: [ __webpack_require__(5) ],
  30309.             propTypes: {
  30310.                 popup: _react.PropTypes.object,
  30311.                 togglePopupEula: _react.PropTypes.func.isRequired,
  30312.                 closeConfirmPopup: _react.PropTypes.func.isRequired
  30313.             },
  30314.             componentDidMount: function() {
  30315.                 var _props$popup$data = this.props.popup.data, program = _props$popup$data.program, zone = _props$popup$data.zone, actionParts = [ "confirm popup opened " + program.name ];
  30316.                 switch (zone) {
  30317.                   case "PROGRAMS_PAGE":
  30318.                     actionParts.unshift("soft");
  30319.                     break;
  30320.  
  30321.                   case "PROTECT_SECURITY_PROGRAMS":
  30322.                     actionParts.unshift("protect");
  30323.                     break;
  30324.  
  30325.                   case "INSTALLATION_PAGE":
  30326.                     actionParts.unshift("installation");
  30327.                 }
  30328.                 _statistics2["default"].event({
  30329.                     action: actionParts.join(" ")
  30330.                 });
  30331.             },
  30332.             renderText: function(textParts) {
  30333.                 return _react2["default"].DOM.div({
  30334.                     className: "confirm-popup_description"
  30335.                 }, textParts.map(function(part) {
  30336.                     if (part.href) return _react2["default"].DOM.a({
  30337.                         href: "#",
  30338.                         className: "confirm-popup_description-link",
  30339.                         onClick: function(e) {
  30340.                             e.stopPropagation();
  30341.                             e.preventDefault();
  30342.                             (0, _utils.goToUrl)(part.href);
  30343.                         }
  30344.                     }, part.text); else return part.text;
  30345.                 }));
  30346.             },
  30347.             render: function() {
  30348.                 var _props = this.props, popup = _props.popup, currentLanguage = _props.currentLanguage, togglePopupEula = _props.togglePopupEula, closeConfirmPopup = _props.closeConfirmPopup, isEulaChecked = popup.isEulaChecked, data = popup.data, program = data.program, zone = data.zone, isInstallation = "INSTALLATION_PAGE" === zone, icon = program.icon, name = program.name, publisher = program.publisher, confirmPopup = program.confirmPopup, title = confirmPopup.title, description = confirmPopup.description, eula = confirmPopup.eula || program.eula, policy = confirmPopup.policy || program.policy, lang = "ru" === currentLanguage ? "ru" : "en", localizedTitle = title ? title[lang] : null, localizedDescription = description[lang], text = isInstallation ? l("confirm_popup_install_eula") : l("confirm_popup_eula");
  30349.                 text = text.replace("{{PROGRAM.NAME}}", name);
  30350.                 var linkRegExp = /\{\{LINK[^\}]+\}\}/g;
  30351.                 text = text.replace(linkRegExp, "|$&|");
  30352.                 var textParts = text.split("|"), linkByParam = {
  30353.                     "{{LINK.EULA}}": {
  30354.                         href: eula,
  30355.                         text: l("confirm_popup_eula-link")
  30356.                     },
  30357.                     "{{LINK.POLICY}}": {
  30358.                         href: policy,
  30359.                         text: l("confirm_popup_policy-link")
  30360.                     }
  30361.                 };
  30362.                 textParts = text.split("|").map(function(text) {
  30363.                     return linkByParam[text] || {
  30364.                         text: text
  30365.                     };
  30366.                 });
  30367.                 var actionButtonIcon = isInstallation ? "img/installation/confirm-popup-check-mark.png" : "img/programs/confirm-popup-accept.png", actionButtonText = isInstallation ? l("confirm_popup_install_button_ok") : l("confirm_popup_install_button");
  30368.                 return _react2["default"].DOM.div(null, _react2["default"].DOM.div({
  30369.                     className: "semi-transparent-overlay"
  30370.                 }), _react2["default"].DOM.table({
  30371.                     className: "confirm-popup_popup"
  30372.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  30373.                     className: "confirm-popup_wrapper"
  30374.                 }, _react2["default"].DOM.div({
  30375.                     className: "confirm-popup_inner"
  30376.                 }, _react2["default"].DOM.a({
  30377.                     href: "#",
  30378.                     className: "confirm-popup_close icons-controls",
  30379.                     onClick: function(e) {
  30380.                         e.stopPropagation();
  30381.                         e.preventDefault();
  30382.                         closeConfirmPopup(!1, "close", program, zone);
  30383.                     }
  30384.                 }, "✖"), _react2["default"].DOM.div({
  30385.                     className: "confirm-popup_title"
  30386.                 }, l("confirm_popup_title")), _react2["default"].DOM.div({
  30387.                     className: "confirm-popup_content"
  30388.                 }, _react2["default"].DOM.div({
  30389.                     className: "confirm-popup_soft clearfix"
  30390.                 }, _react2["default"].DOM.div({
  30391.                     className: "confirm-popup_icon-holder"
  30392.                 }, (0, _Img2["default"])({
  30393.                     src: icon,
  30394.                     className: "confirm-popup_icon",
  30395.                     width: "36",
  30396.                     height: "36"
  30397.                 })), _react2["default"].DOM.div({
  30398.                     className: "confirm-popup_soft-text"
  30399.                 }, _react2["default"].DOM.div({
  30400.                     className: "confirm-popup_soft-title"
  30401.                 }, name), _react2["default"].DOM.div({
  30402.                     className: "confirm-popup_soft-vendor"
  30403.                 }, publisher))), localizedTitle ? _react2["default"].DOM.div({
  30404.                     className: "confirm-popup_description-title bold"
  30405.                 }, localizedTitle) : null, isInstallation ? null : _react2["default"].DOM.div({
  30406.                     className: "confirm-popup_description"
  30407.                 }, localizedDescription), isInstallation ? _react2["default"].DOM.table({
  30408.                     className: "confirm-popup_description-table"
  30409.                 }, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  30410.                     className: "confirm-popup_checkbox-cell"
  30411.                 }, _react2["default"].DOM.span(null, _react2["default"].DOM.input({
  30412.                     type: "checkbox",
  30413.                     className: "custom-control_checkbox-input",
  30414.                     id: "confirm-popup_checkbox",
  30415.                     checked: isEulaChecked,
  30416.                     onChange: function(e) {
  30417.                         togglePopupEula(program, zone);
  30418.                     }
  30419.                 }), _react2["default"].DOM.label({
  30420.                     htmlFor: "confirm-popup_checkbox",
  30421.                     className: "custom-control_checkbox-input-label"
  30422.                 }))), _react2["default"].DOM.td(null, this.renderText(textParts)))) : this.renderText(textParts), _react2["default"].DOM.div(null, _react2["default"].DOM.button({
  30423.                     disabled: isEulaChecked ? !1 : "disabled",
  30424.                     onClick: function(e) {
  30425.                         return closeConfirmPopup(!0, "install", program, zone);
  30426.                     },
  30427.                     className: "confirm-popup_button cta-green-btn " + (isEulaChecked ? "" : "cta-green-btn-is-disabled")
  30428.                 }, (0, _Img2["default"])({
  30429.                     src: actionButtonIcon,
  30430.                     className: "confirm-popup_button-icon",
  30431.                     width: "15",
  30432.                     height: "15"
  30433.                 }), actionButtonText)), isInstallation ? null : _react2["default"].DOM.div(null, _react2["default"].DOM.button({
  30434.                     onClick: function(e) {
  30435.                         return closeConfirmPopup(!1, "cancel", program, zone);
  30436.                     },
  30437.                     className: "confirm-popup_button confirm-popup_button-deny"
  30438.                 }, (0, _Img2["default"])({
  30439.                     src: "img/programs/confirm-popup-deny.png",
  30440.                     className: "confirm-popup_button-icon",
  30441.                     width: "15",
  30442.                     height: "15"
  30443.                 }), l("confirm_popup_cancel_button"))))))))));
  30444.             }
  30445.         }), actions = {
  30446.             togglePopupEula: _programsActions.togglePopupEula,
  30447.             closeConfirmPopup: _programsActions.closeConfirmPopup
  30448.         };
  30449.         exports["default"] = (0, _connect2["default"])(mapState, actions)(ConfirmPopup);
  30450.         module.exports = exports["default"];
  30451.     }).call(exports, __webpack_require__(6));
  30452. }, function(module, exports, __webpack_require__) {
  30453.     "use strict";
  30454.     (function(l) {
  30455.         function _interopRequireDefault(obj) {
  30456.             return obj && obj.__esModule ? obj : {
  30457.                 "default": obj
  30458.             };
  30459.         }
  30460.         function getScrollTop() {
  30461.             return document.documentElement && document.documentElement.scrollTop || document.body.scrollTop;
  30462.         }
  30463.         function getNodeOffset(node) {
  30464.             return node.getDOMNode().getBoundingClientRect().top + getScrollTop() - (document.documentElement.clientTop || 0);
  30465.         }
  30466.         function mapState(state) {
  30467.             return {
  30468.                 data: state.diagnostics.data,
  30469.                 isLoading: state.diagnostics.isLoading
  30470.             };
  30471.         }
  30472.         exports.__esModule = !0;
  30473.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _flatten = __webpack_require__(263), _flatten2 = _interopRequireDefault(_flatten), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _diagnosticsActions = __webpack_require__(227), _throttle = __webpack_require__(520), _throttle2 = _interopRequireDefault(_throttle), _ohm = __webpack_require__(728), _ohm2 = _interopRequireDefault(_ohm), _getInternetExplorerVersion = __webpack_require__(100), _getInternetExplorerVersion2 = _interopRequireDefault(_getInternetExplorerVersion);
  30474.         __webpack_require__(777);
  30475.         var Diagnostics = _react2["default"].createClass({
  30476.             displayName: "Diagnostics",
  30477.             mixins: [ __webpack_require__(5) ],
  30478.             propTypes: {
  30479.                 page: _react.PropTypes.string.isRequired,
  30480.                 updateDiagnosticInfo: _react.PropTypes.func.isRequired,
  30481.                 diagnostics: _react.PropTypes.object.isRequired,
  30482.                 currentLanguage: _react.PropTypes.string.isRequired
  30483.             },
  30484.             getInitialState: function() {
  30485.                 return {
  30486.                     documentScrollTop: 0,
  30487.                     expandedBlock: null,
  30488.                     expandedSection: null,
  30489.                     isOpened: !1
  30490.                 };
  30491.             },
  30492.             onOpened: function() {
  30493.                 _ohm2["default"].Run();
  30494.                 var updateDiagnosticInfo = this.props.updateDiagnosticInfo;
  30495.                 this.updateInterval = setInterval(updateDiagnosticInfo, 1e4);
  30496.                 this.scrollHandler = window.onscroll = (0, _throttle2["default"])(this.handleScroll, 1500);
  30497.                 this.calcLayout();
  30498.                 this.calcLayoutTimer = setTimeout(this.calcLayout, 1e3);
  30499.             },
  30500.             onClosed: function() {
  30501.                 try {
  30502.                     clearInterval(this.updateInterval);
  30503.                 } catch (e) {}
  30504.                 try {
  30505.                     clearTimeout(this.calcLayoutTimer);
  30506.                 } catch (e) {}
  30507.                 try {
  30508.                     this.scrollHandler.cancel();
  30509.                 } catch (e) {}
  30510.                 window.onscroll = null;
  30511.             },
  30512.             componentDidMount: function() {
  30513.                 var _this = this;
  30514.                 this.checkIsOpenedInterval = setInterval(function() {
  30515.                     try {
  30516.                         var _props = _this.props, page = _props.page;
  30517.                         if (_props.isLoading) ; else if ("DIAGNOSTICS" === page) {
  30518.                             if (!_this.state.isOpened) {
  30519.                                 _this.setState({
  30520.                                     isOpened: !0
  30521.                                 });
  30522.                                 _this.onOpened();
  30523.                             }
  30524.                         } else if (_this.state.isOpened) {
  30525.                             _this.setState({
  30526.                                 isOpened: !1
  30527.                             });
  30528.                             _this.onClosed();
  30529.                         }
  30530.                     } catch (e) {
  30531.                         clearInterval(_this.interval);
  30532.                     }
  30533.                 }, 2e3);
  30534.             },
  30535.             componentWillUnmount: function() {
  30536.                 try {
  30537.                     clearInterval(this.checkIsOpenedInterval);
  30538.                 } catch (e) {}
  30539.                 this.onClosed();
  30540.             },
  30541.             componentDidUpdate: function() {
  30542.                 var _props2 = this.props, page = _props2.page;
  30543.                 if (!_props2.isLoading && "DIAGNOSTICS" === page) this.calcLayout();
  30544.             },
  30545.             calcLayout: function() {
  30546.                 this.blockOffsets = this.getBlockLayoutFromDOM();
  30547.                 this.sectionOffsets = this.getSectionLayoutFromDOM();
  30548.                 this.handleScroll();
  30549.             },
  30550.             render: function() {
  30551.                 var _this2 = this, _props3 = this.props, page = _props3.page, data = _props3.data, hideComponent = "DIAGNOSTICS" !== page;
  30552.                 return _react2["default"].DOM.td({
  30553.                     className: "app-container " + (hideComponent ? "display-none" : "")
  30554.                 }, _react2["default"].DOM.div({
  30555.                     className: "app-container_inner"
  30556.                 }, _react2["default"].DOM.div(null, _react2["default"].DOM.h1({
  30557.                     className: "screen-title",
  30558.                     onMouseDown: function(e) {
  30559.                         e.preventDefault();
  30560.                     },
  30561.                     id: "top",
  30562.                     style: {
  30563.                         paddingBottom: "20px"
  30564.                     }
  30565.                 }, l("diagnostics_section_title")), _react2["default"].DOM.table({
  30566.                     width: "100%",
  30567.                     style: {
  30568.                         minWidth: "500px",
  30569.                         marginTop: "30px",
  30570.                         marginBottom: "200px"
  30571.                     },
  30572.                     className: "diagnostic_holder"
  30573.                 }, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  30574.                     width: "100%",
  30575.                     style: {
  30576.                         verticalAlign: "top"
  30577.                     }
  30578.                 }, Object.entries(data).map(function(block) {
  30579.                     return _this2.renderBlock(block);
  30580.                 })))))));
  30581.             },
  30582.             renderBlock: function(_ref) {
  30583.                 var _this3 = this, blockName = _ref[0], blockContents = _ref[1];
  30584.                 return _react2["default"].DOM.div(null, _react2["default"].DOM.h1({
  30585.                     className: "screen-title",
  30586.                     style: {
  30587.                         padding: "10px 0"
  30588.                     },
  30589.                     ref: "block_" + blockName
  30590.                 }, blockName), Object.entries(blockContents).map(function(section) {
  30591.                     return _this3.renderSection(section, blockName);
  30592.                 }));
  30593.             },
  30594.             renderSection: function(_ref2, blockName) {
  30595.                 var _this4 = this, sectionName = _ref2[0], sectionContents = _ref2[1];
  30596.                 return _react2["default"].DOM.div(null, _react2["default"].DOM.h3({
  30597.                     ref: "section_" + blockName + "_" + sectionName
  30598.                 }, sectionName), !Array.isArray(sectionContents) ? Object.entries(sectionContents).map(function(table) {
  30599.                     return _this4.renderTable(table);
  30600.                 }) : Object.entries(this.formatArray(sectionContents)).map(function(table) {
  30601.                     return _this4.renderTable(table);
  30602.                 }));
  30603.             },
  30604.             renderTable: function(_ref3) {
  30605.                 var _this5 = this, tableName = _ref3[0], tableContents = _ref3[1];
  30606.                 return _react2["default"].DOM.table({
  30607.                     width: "100%",
  30608.                     className: "diagnostic-list_table"
  30609.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  30610.                     className: "diagnostic-list_table-head",
  30611.                     colSpan: "2"
  30612.                 }, tableName)), (0, _flatten2["default"])(Object.entries(tableContents).map(function(_ref4) {
  30613.                     var propertyName = _ref4[0], singleOrMultiRowValue = _ref4[1];
  30614.                     if (Array.isArray(singleOrMultiRowValue)) return singleOrMultiRowValue.map(function(propertyValue) {
  30615.                         return [ propertyName, propertyValue ];
  30616.                     }); else return [ [ propertyName, singleOrMultiRowValue ] ];
  30617.                 })).map(function(row) {
  30618.                     return _this5.renderRow(row);
  30619.                 })));
  30620.             },
  30621.             renderRow: function(_ref5) {
  30622.                 var propertyName = _ref5[0], propertyValue = _ref5[1];
  30623.                 return _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  30624.                     className: "diagnostic-list_table-cell",
  30625.                     width: "30%"
  30626.                 }, propertyName), _react2["default"].DOM.td({
  30627.                     className: "diagnostic-list_table-cell",
  30628.                     width: "70%"
  30629.                 }, propertyValue));
  30630.             },
  30631.             renderNav: function(blocks) {
  30632.                 var _this6 = this, _state = this.state, documentScrollTop = _state.documentScrollTop, expandedBlock = _state.expandedBlock, expandedSection = _state.expandedSection;
  30633.                 return _react2["default"].DOM.div({
  30634.                     className: "bs-docs-sidebar fixed",
  30635.                     style: this.shouldPolyfillFixed() ? {
  30636.                         position: "absolute",
  30637.                         top: documentScrollTop
  30638.                     } : null
  30639.                 }, _react2["default"].DOM.ul({
  30640.                     id: "sidebar",
  30641.                     className: "nav_list-holder nav nav-stacked"
  30642.                 }, Object.entries(blocks).map(function(_ref6) {
  30643.                     var blockName = _ref6[0], blockContents = _ref6[1];
  30644.                     return _react2["default"].DOM.li({
  30645.                         className: (expandedBlock === "block_" + blockName ? "active" : "") + " nav_list-holder-item"
  30646.                     }, _react2["default"].DOM.a({
  30647.                         href: "#",
  30648.                         className: "nav_list-link",
  30649.                         onClick: function(e) {
  30650.                             return _this6.handleBlockNavigate(e, "block_" + blockName);
  30651.                         }
  30652.                     }, blockName), _react2["default"].DOM.ul({
  30653.                         className: "nav_sublist-holder nav nav-stacked"
  30654.                     }, Object.entries(blockContents).map(function(_ref7) {
  30655.                         var sectionName = _ref7[0];
  30656.                         _ref7[1];
  30657.                         return _react2["default"].DOM.li(null, _react2["default"].DOM.a({
  30658.                             href: "#",
  30659.                             className: "nav_sublist-link " + (expandedSection === "section_" + blockName + "_" + sectionName ? "active" : ""),
  30660.                             onClick: function(e) {
  30661.                                 return _this6.handleNavigate(e, "section_" + blockName + "_" + sectionName);
  30662.                             }
  30663.                         }, sectionName));
  30664.                     })));
  30665.                 })), _react2["default"].DOM.a({
  30666.                     className: "back-to-top",
  30667.                     href: "#",
  30668.                     onClick: this.handleTop
  30669.                 }, "Back to top"));
  30670.             },
  30671.             handleBlockNavigate: function(e, name) {
  30672.                 this.setState({
  30673.                     expandedBlock: name
  30674.                 });
  30675.                 this.handleNavigate(e, name);
  30676.             },
  30677.             handleNavigate: function(e, name) {
  30678.                 e.preventDefault();
  30679.                 var node = this.refs[name], offsetTop = getNodeOffset(node);
  30680.                 window.scrollTo(0, offsetTop);
  30681.                 this.handleScroll();
  30682.             },
  30683.             handleTop: function(e) {
  30684.                 e.preventDefault();
  30685.                 window.scrollTo(0, 0);
  30686.             },
  30687.             handleScroll: function() {
  30688.                 var _findActiveElement = this.findActiveElement(this.blockOffsets), blockName = _findActiveElement[0], blockIndex = _findActiveElement[1], _findActiveElement2 = this.findActiveElement(this.sectionOffsets[blockIndex]), sectionName = _findActiveElement2[0];
  30689.                 this.setState({
  30690.                     documentScrollTop: getScrollTop(),
  30691.                     expandedBlock: "block_" + blockName,
  30692.                     expandedSection: "section_" + blockName + "_" + sectionName
  30693.                 });
  30694.             },
  30695.             findActiveElement: function(offsets) {
  30696.                 var currentOffset = getScrollTop() + 10, match = offsets.findIndex(function(_ref8) {
  30697.                     var offset = (_ref8[0], _ref8[1]);
  30698.                     return currentOffset < offset;
  30699.                 });
  30700.                 if (-1 === match) {
  30701.                     var index = offsets.length - 1;
  30702.                     return [ offsets[index][0], index ];
  30703.                 } else if (0 === match) {
  30704.                     var _offsets$_index = offsets[0], _name = _offsets$_index[0];
  30705.                     return [ _name, 0 ];
  30706.                 } else if (match) {
  30707.                     var _index2 = match - 1, _offsets$_index2 = offsets[_index2], _name2 = _offsets$_index2[0];
  30708.                     return [ _name2, _index2 ];
  30709.                 }
  30710.             },
  30711.             getBlockLayoutFromDOM: function() {
  30712.                 var _this7 = this;
  30713.                 return Object.keys(this.props.data).map(function(blockName) {
  30714.                     return [ blockName, getNodeOffset(_this7.refs["block_" + blockName]) ];
  30715.                 });
  30716.             },
  30717.             getSectionLayoutFromDOM: function() {
  30718.                 var _this8 = this, data = this.props.data;
  30719.                 return Object.entries(data).map(function(_ref9) {
  30720.                     var blockName = _ref9[0], blockContents = _ref9[1];
  30721.                     return Object.entries(blockContents).map(function(_ref10) {
  30722.                         var sectionName = _ref10[0];
  30723.                         _ref10[1];
  30724.                         return [ sectionName, getNodeOffset(_this8.refs["section_" + blockName + "_" + sectionName]) ];
  30725.                     });
  30726.                 });
  30727.             },
  30728.             formatArray: function(arr) {
  30729.                 var res = {};
  30730.                 arr.forEach(function(val, ind) {
  30731.                     res["# " + (ind + 1)] = val;
  30732.                 });
  30733.                 return res;
  30734.             },
  30735.             shouldPolyfillFixed: function() {
  30736.                 var internetExplorerVersion = (0, _getInternetExplorerVersion2["default"])();
  30737.                 if (-1 !== internetExplorerVersion) if (internetExplorerVersion < 9) return !0; else return !1; else return !1;
  30738.             }
  30739.         }), actions = {
  30740.             updateDiagnosticInfo: _diagnosticsActions.updateDiagnosticInfo
  30741.         };
  30742.         exports["default"] = (0, _connect2["default"])(mapState, actions)(Diagnostics);
  30743.         module.exports = exports["default"];
  30744.     }).call(exports, __webpack_require__(6));
  30745. }, function(module, exports, __webpack_require__) {
  30746.     "use strict";
  30747.     (function(l) {
  30748.         function _interopRequireDefault(obj) {
  30749.             return obj && obj.__esModule ? obj : {
  30750.                 "default": obj
  30751.             };
  30752.         }
  30753.         exports.__esModule = !0;
  30754.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _trimVendorName = __webpack_require__(64), _trimVendorName2 = _interopRequireDefault(_trimVendorName), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _deviceClasses = __webpack_require__(184), _deviceClasses2 = _interopRequireDefault(_deviceClasses);
  30755.         exports["default"] = _react2["default"].createClass({
  30756.             displayName: "DeviceRow",
  30757.             mixins: [ __webpack_require__(5) ],
  30758.             propTypes: {
  30759.                 type: _react.PropTypes.string.isRequired,
  30760.                 deviceId: _react.PropTypes.string.isRequired,
  30761.                 isChecked: _react.PropTypes.bool,
  30762.                 isExpanded: _react.PropTypes.bool,
  30763.                 currentDriver: _react.PropTypes.object,
  30764.                 selectedDriver: _react.PropTypes.object,
  30765.                 currentLanguage: _react.PropTypes.string.isRequired,
  30766.                 openDeviceManagerFor: _react.PropTypes.func.isRequired,
  30767.                 toggleDevice: _react.PropTypes.func,
  30768.                 expandDevice: _react.PropTypes.func
  30769.             },
  30770.             renderBrokenDevice: function() {
  30771.                 var _props = this.props, deviceId = _props.deviceId, isExpanded = _props.isExpanded, expandDevice = _props.expandDevice;
  30772.                 return _react2["default"].DOM.tr({
  30773.                     className: "drivers-screen_list-row drivers-screen_list-row-head"
  30774.                 }, _react2["default"].DOM.td({
  30775.                     className: "drivers-screen_list-cell drivers-screen_list-name"
  30776.                 }, _react2["default"].DOM.table(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td(null, _react2["default"].DOM.div({
  30777.                     className: "drivers-screen_list-cell-icon"
  30778.                 }, (0, _Img2["default"])({
  30779.                     src: "img/device-class/undefined-device.png",
  30780.                     className: "drivers-screen_list-info-link-icon",
  30781.                     width: "30",
  30782.                     height: "30"
  30783.                 }))), _react2["default"].DOM.td(null, _react2["default"].DOM.a({
  30784.                     href: "#",
  30785.                     className: "drivers-screen_list-name-title",
  30786.                     onClick: function(e) {
  30787.                         e.stopPropagation();
  30788.                         e.preventDefault();
  30789.                         expandDevice(deviceId, !isExpanded);
  30790.                     }
  30791.                 }, l("drivers_screen_list-name-title-unknown"), !0 ? (0, _Img2["default"])({
  30792.                     src: isExpanded ? "img/screens/icon-driver-row-collapse.png" : "img/screens/icon-driver-row-expand.png",
  30793.                     className: "drivers-screen_list-name-arrow",
  30794.                     width: 13,
  30795.                     height: 6
  30796.                 }) : null), _react2["default"].DOM.div({
  30797.                     className: "drivers-screen_device-info-text-wrapper"
  30798.                 }, _react2["default"].DOM.span({
  30799.                     className: "drivers-screen_list-name-text"
  30800.                 }, deviceId))))), _react2["default"].DOM.div({
  30801.                     className: "drivers-screen_list-border-top"
  30802.                 }), _react2["default"].DOM.div({
  30803.                     className: "drivers-screen_list-border"
  30804.                 })), _react2["default"].DOM.td({
  30805.                     className: "drivers-screen_list-cell"
  30806.                 }, _react2["default"].DOM.div({
  30807.                     className: "drivers-screen_list-border-top"
  30808.                 }), _react2["default"].DOM.div({
  30809.                     className: "drivers-screen_list-border"
  30810.                 })), _react2["default"].DOM.td({
  30811.                     className: "drivers-screen_list-cell drivers-screen_list-cell-version"
  30812.                 }, _react2["default"].DOM.div({
  30813.                     className: "drivers-screen_list-border-top"
  30814.                 }), _react2["default"].DOM.div({
  30815.                     className: "drivers-screen_list-border"
  30816.                 })), _react2["default"].DOM.td({
  30817.                     className: "drivers-screen_list-cell drivers-screen_list-arrow-col"
  30818.                 }, _react2["default"].DOM.div({
  30819.                     className: "drivers-screen_list-border-top"
  30820.                 }), _react2["default"].DOM.div({
  30821.                     className: "drivers-screen_list-border"
  30822.                 })));
  30823.             },
  30824.             render: function() {
  30825.                 var _props2 = this.props, type = _props2.type, deviceId = _props2.deviceId, isChecked = _props2.isChecked, isExpanded = _props2.isExpanded, currentDriver = _props2.currentDriver, selectedDriver = _props2.selectedDriver, openDeviceManagerFor = _props2.openDeviceManagerFor, toggleDevice = _props2.toggleDevice, expandDevice = _props2.expandDevice;
  30826.                 if ("broken" === type) return this.renderBrokenDevice();
  30827.                 var name = selectedDriver.name, deviceClass = selectedDriver["class"], _selectedDriver$manuf = selectedDriver.manufacturer, manufacturer = _selectedDriver$manuf === undefined ? "" : _selectedDriver$manuf, deviceClassName = (0,
  30828.                 _deviceClasses2["default"])(l)[deviceClass].morpher.single.main, title = deviceClassName + " " + (0,
  30829.                 _trimVendorName2["default"])(manufacturer, "", !1), currentVersion = ("notUpdated" === type || "installed" === type ? currentDriver.version : "") || "", currentDate = ("notUpdated" === type || "installed" === type ? currentDriver.date : "") || "", selectedVersion = ("notInstalled" === type || "notUpdated" === type ? selectedDriver.version : "") || "";
  30830.                 return _react2["default"].DOM.tr({
  30831.                     className: "drivers-screen_list-row drivers-screen_list-row-head"
  30832.                 }, _react2["default"].DOM.td({
  30833.                     className: "drivers-screen_list-cell drivers-screen_list-name"
  30834.                 }, _react2["default"].DOM.table(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td(null, _react2["default"].DOM.div({
  30835.                     className: "drivers-screen_list-cell-icon"
  30836.                 }, (0, _Img2["default"])({
  30837.                     src: "img/device-class/" + deviceClass + ".png",
  30838.                     className: "drivers-screen_list-info-link-icon",
  30839.                     width: "30",
  30840.                     height: "30"
  30841.                 }))), _react2["default"].DOM.td(null, _react2["default"].DOM.a({
  30842.                     href: "#",
  30843.                     className: "drivers-screen_list-name-title",
  30844.                     onClick: function(e) {
  30845.                         e.stopPropagation();
  30846.                         e.preventDefault();
  30847.                         expandDevice(deviceId, !isExpanded);
  30848.                     }
  30849.                 }, title, !0 ? (0, _Img2["default"])({
  30850.                     src: isExpanded ? "img/screens/icon-driver-row-collapse.png" : "img/screens/icon-driver-row-expand.png",
  30851.                     className: "drivers-screen_list-name-arrow",
  30852.                     width: 13,
  30853.                     height: 6
  30854.                 }) : null), _react2["default"].DOM.div({
  30855.                     className: "drivers-screen_device-info-text-wrapper"
  30856.                 }, _react2["default"].DOM.a({
  30857.                     href: "#",
  30858.                     className: "drivers-screen_list-name-link",
  30859.                     onClick: function(e) {
  30860.                         e.stopPropagation();
  30861.                         e.preventDefault();
  30862.                         openDeviceManagerFor(deviceId);
  30863.                     }
  30864.                 }, name))))), _react2["default"].DOM.div({
  30865.                     className: "drivers-screen_list-border-top"
  30866.                 }), _react2["default"].DOM.div({
  30867.                     className: "drivers-screen_list-border"
  30868.                 })), _react2["default"].DOM.td({
  30869.                     className: "drivers-screen_list-cell drivers-screen_driver-status"
  30870.                 }, this.renderDeviceCaption({
  30871.                     type: type,
  30872.                     currentVersion: currentVersion,
  30873.                     currentDate: currentDate
  30874.                 }), _react2["default"].DOM.div({
  30875.                     className: "drivers-screen_list-border-top"
  30876.                 }), _react2["default"].DOM.div({
  30877.                     className: "drivers-screen_list-border"
  30878.                 })), _react2["default"].DOM.td({
  30879.                     className: "drivers-screen_list-cell drivers-screen_list-cell-version"
  30880.                 }, this.renderDeviceVersion({
  30881.                     type: type,
  30882.                     selectedVersion: selectedVersion
  30883.                 }), _react2["default"].DOM.div({
  30884.                     className: "drivers-screen_list-border-top"
  30885.                 }), _react2["default"].DOM.div({
  30886.                     className: "drivers-screen_list-border"
  30887.                 })), _react2["default"].DOM.td({
  30888.                     className: "drivers-screen_list-cell drivers-screen_list-arrow-col"
  30889.                 }, "notInstalled" === type || "notUpdated" === type ? _react2["default"].DOM.span(null, _react2["default"].DOM.input({
  30890.                     type: "checkbox",
  30891.                     className: "custom-control_checkbox-input",
  30892.                     id: deviceId,
  30893.                     checked: isChecked,
  30894.                     onChange: function(e) {
  30895.                         toggleDevice(deviceId, e.target.checked);
  30896.                     }
  30897.                 }), _react2["default"].DOM.label({
  30898.                     htmlFor: deviceId,
  30899.                     className: "custom-control_checkbox-input-label"
  30900.                 })) : null, _react2["default"].DOM.div({
  30901.                     className: "drivers-screen_list-border-top"
  30902.                 }), _react2["default"].DOM.div({
  30903.                     className: "drivers-screen_list-border"
  30904.                 })));
  30905.             },
  30906.             renderDeviceCaption: function(_ref) {
  30907.                 var type = _ref.type, currentVersion = _ref.currentVersion;
  30908.                 _ref.currentDate;
  30909.                 switch (type) {
  30910.                   case "notUpdated":
  30911.                     return _react2["default"].DOM.div({
  30912.                         className: "drivers-screen_list-row-install-caption clearfix"
  30913.                     }, _react2["default"].DOM.div({
  30914.                         className: "drivers-screen_install-caption-wrapper"
  30915.                     }, _react2["default"].DOM.div(null, l("device_row_current_version")), _react2["default"].DOM.div(null, currentVersion)), (0,
  30916.                     _Img2["default"])({
  30917.                         src: "img/driver-row-arrow.png",
  30918.                         className: "drivers-screen_list-row-install-icon",
  30919.                         width: "18",
  30920.                         height: "11",
  30921.                         style: {
  30922.                             marginTop: "12px"
  30923.                         }
  30924.                     }));
  30925.  
  30926.                   case "installed":
  30927.                     return _react2["default"].DOM.div({
  30928.                         className: "drivers-screen_list-row-install-caption clearfix"
  30929.                     }, _react2["default"].DOM.div({
  30930.                         className: "drivers-screen_install-caption-wrapper"
  30931.                     }, _react2["default"].DOM.div(null, l("device_row_current_version")), _react2["default"].DOM.div(null, currentVersion)), (0,
  30932.                     _Img2["default"])({
  30933.                         style: {
  30934.                             visibility: "hidden"
  30935.                         },
  30936.                         src: "img/driver-row-arrow.png",
  30937.                         className: "drivers-screen_list-row-install-icon",
  30938.                         width: "18",
  30939.                         height: "11"
  30940.                     }));
  30941.  
  30942.                   default:
  30943.                     return null;
  30944.                 }
  30945.             },
  30946.             renderDeviceVersion: function(_ref2) {
  30947.                 var type = _ref2.type, selectedVersion = _ref2.selectedVersion;
  30948.                 switch (type) {
  30949.                   case "notInstalled":
  30950.                     return _react2["default"].DOM.div({
  30951.                         className: "screen_list-cell-version-text"
  30952.                     }, l("device_row_installation"), _react2["default"].DOM.br(null), selectedVersion);
  30953.  
  30954.                   case "notUpdated":
  30955.                     return _react2["default"].DOM.div({
  30956.                         className: "screen_list-cell-version-text"
  30957.                     }, l("device_row_update"), _react2["default"].DOM.br(null), selectedVersion);
  30958.  
  30959.                   default:
  30960.                     return null;
  30961.                 }
  30962.             },
  30963.             renderDate: function(dateString) {
  30964.                 if (!dateString) return dateString; else return [].concat(dateString.split("-")).reverse().join(".");
  30965.             }
  30966.         });
  30967.         module.exports = exports["default"];
  30968.     }).call(exports, __webpack_require__(6));
  30969. }, function(module, exports, __webpack_require__) {
  30970.     "use strict";
  30971.     (function(l) {
  30972.         function _interopRequireDefault(obj) {
  30973.             return obj && obj.__esModule ? obj : {
  30974.                 "default": obj
  30975.             };
  30976.         }
  30977.         exports.__esModule = !0;
  30978.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _logs = __webpack_require__(3), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _os = __webpack_require__(13), _utils = __webpack_require__(23), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _getDeviceProblemName = __webpack_require__(760), _getDeviceProblemName2 = _interopRequireDefault(_getDeviceProblemName);
  30979.         __webpack_require__(330);
  30980.         exports["default"] = _react2["default"].createClass({
  30981.             displayName: "DriverRow",
  30982.             mixins: [ __webpack_require__(5) ],
  30983.             propTypes: {
  30984.                 id: _react.PropTypes.string.isRequired,
  30985.                 _deviceId: _react.PropTypes.string.isRequired,
  30986.                 driverDeviceId: _react.PropTypes.string.isRequired,
  30987.                 date: _react.PropTypes.string,
  30988.                 manufacturer: _react.PropTypes.string,
  30989.                 version: _react.PropTypes.string,
  30990.                 rank: _react.PropTypes.number,
  30991.                 section: _react.PropTypes.string,
  30992.                 inf: _react.PropTypes.string,
  30993.                 systems: _react.PropTypes.array,
  30994.                 isCurrent: _react.PropTypes.bool,
  30995.                 isRecommended: _react.PropTypes.bool,
  30996.                 isChecked: _react.PropTypes.bool,
  30997.                 menuIsOpened: _react.PropTypes.bool,
  30998.                 problem: _react.PropTypes.string,
  30999.                 driver: _react.PropTypes.object,
  31000.                 currentLanguage: _react.PropTypes.string.isRequired,
  31001.                 selectDeviceDriver: _react.PropTypes.func.isRequired,
  31002.                 viewOptions: _react.PropTypes.object,
  31003.                 openDriverMenu: _react.PropTypes.func.isRequired,
  31004.                 installSingleDriver: _react.PropTypes.func.isRequired,
  31005.                 isLast: _react.PropTypes.bool,
  31006.                 driverIndex: _react.PropTypes.number,
  31007.                 driverLength: _react.PropTypes.number
  31008.             },
  31009.             renderDate: function(dateString) {
  31010.                 if (!dateString) return dateString; else return [].concat(dateString.split("-")).reverse().join(".");
  31011.             },
  31012.             getStarsCount: function(rank) {
  31013.                 var result = 0;
  31014.                 if ("number" == typeof rank) try {
  31015.                     result = 1 + Math.round(4 * rank / 3);
  31016.                 } catch (err) {
  31017.                     (0, _logs.log)("[New drivers screen] calculating driver rank failed:", err);
  31018.                 }
  31019.                 return result;
  31020.             },
  31021.             renderStars: function(starsCount) {
  31022.                 for (var stars = [], i = 0; i < 5; i++) stars.push((0, _Img2["default"])({
  31023.                     key: "driver_row_stars_" + i,
  31024.                     className: "drivers-screen_caption-star-icon",
  31025.                     src: i < starsCount ? "img/programs/star-full.png" : "img/programs/star-empty.png"
  31026.                 }));
  31027.                 return stars;
  31028.             },
  31029.             renderCurrentDriver: function() {
  31030.                 var _props = this.props, driverDeviceId = _props.driverDeviceId, _props$date = _props.date, date = _props$date === undefined ? "" : _props$date, _props$version = _props.version, version = _props$version === undefined ? "" : _props$version, viewOptions = _props.viewOptions, isLast = _props.isLast, driverIndex = _props.driverIndex, driverLength = _props.driverLength;
  31031.                 return _react2["default"].DOM.tr({
  31032.                     className: "drivers-screen_list-row drivers-screen_list-dropdown " + (isLast ? "is-last" : ""),
  31033.                     style: {
  31034.                         zIndex: driverLength - driverIndex
  31035.                     }
  31036.                 }, _react2["default"].DOM.td({
  31037.                     className: "drivers-screen_list-cell drivers-screen_list-name drivers-screen_driver-text drivers-screen_list-name-hide-radio",
  31038.                     title: ""
  31039.                 }, _react2["default"].DOM.input({
  31040.                     type: "radio",
  31041.                     className: "custom-control_radio-input",
  31042.                     style: {
  31043.                         visibility: "hidden"
  31044.                     }
  31045.                 }), _react2["default"].DOM.label({
  31046.                     className: "custom-control_radio-input-label"
  31047.                 }, _react2["default"].DOM.span({
  31048.                     className: "drivers-screen_list-name-label"
  31049.                 }, viewOptions.version ? _react2["default"].DOM.span({
  31050.                     title: l("driver_row_version")
  31051.                 }, l("driver_row_version"), ": ", version) : null, viewOptions.version && viewOptions.date ? " / " : null, viewOptions.date ? _react2["default"].DOM.span({
  31052.                     title: l("driver_row_date")
  31053.                 }, l("driver_row_date"), ": ", this.renderDate(date)) : null, _react2["default"].DOM.br(null), viewOptions.deviceId ? _react2["default"].DOM.span({
  31054.                     title: "DeviceID"
  31055.                 }, driverDeviceId) : null)), _react2["default"].DOM.div({
  31056.                     className: "drivers-screen_list-border"
  31057.                 })), _react2["default"].DOM.td({
  31058.                     className: "drivers-screen_list-cell drivers-screen_driver-status"
  31059.                 }, _react2["default"].DOM.span({
  31060.                     className: "drivers-screen_driver-status-text"
  31061.                 }, l("drivers_row_current_driver")), _react2["default"].DOM.div({
  31062.                     className: "drivers-screen_list-border"
  31063.                 })), _react2["default"].DOM.td({
  31064.                     className: "drivers-screen_list-cell"
  31065.                 }, _react2["default"].DOM.div({
  31066.                     className: "drivers-screen_list-cell-rate"
  31067.                 }, this.renderStars(0)), _react2["default"].DOM.div({
  31068.                     className: "drivers-screen_list-border"
  31069.                 })), _react2["default"].DOM.td({
  31070.                     className: "drivers-screen_list-cell"
  31071.                 }, _react2["default"].DOM.div({
  31072.                     className: "drivers-screen_list-border"
  31073.                 })));
  31074.             },
  31075.             renderPromblem: function() {
  31076.                 var problem = this.props.problem;
  31077.                 return _react2["default"].DOM.tr({
  31078.                     className: "drivers-screen_list-row"
  31079.                 }, _react2["default"].DOM.td({
  31080.                     className: "drivers-screen_list-cell drivers-screen_list-problem",
  31081.                     colSpan: "4"
  31082.                 }, _react2["default"].DOM.div({
  31083.                     className: "drivers-screen_list-problem-text"
  31084.                 }, (0, _getDeviceProblemName2["default"])(l, problem))));
  31085.             },
  31086.             renderSystems: function(systems) {
  31087.                 var result = [];
  31088.                 systems.forEach(function(system) {
  31089.                     var _system$split = system.split("x"), ver = _system$split[0], arch = _system$split[1];
  31090.                     result.push(_os.osVersions[ver] + " (x" + arch + ")");
  31091.                 });
  31092.                 result = "Window " + result.join(", ");
  31093.                 return result;
  31094.             },
  31095.             getDriverState: function(state) {
  31096.                 switch (state) {
  31097.                   case "install":
  31098.                     return l("driver_row_driver-menu-state-install");
  31099.  
  31100.                   case "update":
  31101.                     return l("driver_row_driver-menu-state-update");
  31102.  
  31103.                   case "rollback":
  31104.                     return l("driver_row_driver-menu-state-rollback");
  31105.                 }
  31106.             },
  31107.             render: function() {
  31108.                 var _props2 = this.props, id = _props2.id, _deviceId = _props2._deviceId, driverDeviceId = _props2.driverDeviceId, _props2$date = _props2.date, date = _props2$date === undefined ? "" : _props2$date, manufacturer = _props2.manufacturer, _props2$version = _props2.version, version = _props2$version === undefined ? "" : _props2$version, rank = _props2.rank, inf = _props2.inf, section = _props2.section, systems = _props2.systems, isCurrent = _props2.isCurrent, isRecommended = _props2.isRecommended, isChecked = _props2.isChecked, menuIsOpened = _props2.menuIsOpened, problem = _props2.problem, driver = _props2.driver, currentLanguage = _props2.currentLanguage, selectDeviceDriver = _props2.selectDeviceDriver, viewOptions = _props2.viewOptions, openDriverMenu = _props2.openDriverMenu, installSingleDriver = _props2.installSingleDriver, isLast = _props2.isLast, driverIndex = _props2.driverIndex, driverLength = _props2.driverLength, starsCount = this.getStarsCount(rank), checkboxId = _deviceId + "__" + id;
  31109.                 if (problem) return this.renderPromblem(); else if (isCurrent) return this.renderCurrentDriver(); else {
  31110.                     var device = {
  31111.                         id: _deviceId,
  31112.                         recommendedDriver: driver,
  31113.                         deviceId: driverDeviceId
  31114.                     }, state = driver.state, deviceId = driver.deviceId, catalogUrl = "https://drp.su/" + ("ru" === currentLanguage ? "ru" : "en") + "/hwids/" + encodeURIComponent(deviceId) + "?utm_source=driverpack&utm_campaign=kebab_menu&utm_medium=online";
  31115.                     return _react2["default"].DOM.tr({
  31116.                         className: "drivers-screen_list-row drivers-screen_list-dropdown " + (isRecommended && isChecked ? "is-recommended" : "") + " " + (isChecked ? "is-checked" : "") + " " + (isLast ? "is-last" : ""),
  31117.                         style: {
  31118.                             zIndex: driverLength - driverIndex
  31119.                         },
  31120.                         onClick: function(e) {
  31121.                             return openDriverMenu(id, _deviceId, !1);
  31122.                         }
  31123.                     }, _react2["default"].DOM.td({
  31124.                         className: "drivers-screen_list-cell drivers-screen_list-name drivers-screen_driver-text",
  31125.                         title: ""
  31126.                     }, _react2["default"].DOM.input({
  31127.                         type: "radio",
  31128.                         className: "custom-control_radio-input",
  31129.                         id: checkboxId,
  31130.                         checked: isChecked,
  31131.                         onChange: function(e) {
  31132.                             selectDeviceDriver({
  31133.                                 _deviceId: _deviceId,
  31134.                                 driverId: id
  31135.                             });
  31136.                         }
  31137.                     }), _react2["default"].DOM.label({
  31138.                         htmlFor: checkboxId,
  31139.                         className: "custom-control_radio-input-label"
  31140.                     }, _react2["default"].DOM.span({
  31141.                         className: "drivers-screen_list-name-label"
  31142.                     }, viewOptions.version ? _react2["default"].DOM.span({
  31143.                         title: l("driver_row_version")
  31144.                     }, l("driver_row_version"), ": ", version) : null, viewOptions.version && viewOptions.date ? " / " : null, viewOptions.date ? _react2["default"].DOM.span({
  31145.                         title: l("driver_row_date")
  31146.                     }, l("driver_row_date"), ": ", this.renderDate(date)) : null, viewOptions.deviceId ? _react2["default"].DOM.span(null, _react2["default"].DOM.br(null), _react2["default"].DOM.span({
  31147.                         title: "DeviceID"
  31148.                     }, driverDeviceId)) : null, viewOptions.vendor ? _react2["default"].DOM.span(null, _react2["default"].DOM.br(null), _react2["default"].DOM.span({
  31149.                         title: l("driver_row_vendor")
  31150.                     }, manufacturer)) : null, viewOptions.inf || viewOptions.section ? _react2["default"].DOM.br(null) : null, viewOptions.inf ? _react2["default"].DOM.span({
  31151.                         title: l("driver_row_inf")
  31152.                     }, inf) : null, viewOptions.inf && viewOptions.section ? " / " : null, viewOptions.section ? _react2["default"].DOM.span({
  31153.                         title: l("driver_row_section")
  31154.                     }, section) : null, viewOptions.os ? _react2["default"].DOM.span(null, _react2["default"].DOM.br(null), _react2["default"].DOM.span({
  31155.                         title: l("driver_row_os")
  31156.                     }, this.renderSystems(systems))) : null)), _react2["default"].DOM.div({
  31157.                         className: "drivers-screen_list-border"
  31158.                     })), _react2["default"].DOM.td({
  31159.                         className: "drivers-screen_list-cell drivers-screen_list-driver-recommended drivers-screen_driver-status"
  31160.                     }, _react2["default"].DOM.span({
  31161.                         className: "drivers-screen_driver-status-text"
  31162.                     }, isRecommended ? l("drivers_row_recommended") : ""), _react2["default"].DOM.div({
  31163.                         className: "drivers-screen_list-border"
  31164.                     })), _react2["default"].DOM.td({
  31165.                         className: "drivers-screen_list-cell"
  31166.                     }, _react2["default"].DOM.div({
  31167.                         className: "drivers-screen_list-cell-rate"
  31168.                     }, this.renderStars(starsCount)), _react2["default"].DOM.div({
  31169.                         className: "drivers-screen_list-border"
  31170.                     })), _react2["default"].DOM.td({
  31171.                         className: "drivers-screen_list-cell"
  31172.                     }, _react2["default"].DOM.div({
  31173.                         className: "drivers-screen_driver-menu"
  31174.                     }, _react2["default"].DOM.a({
  31175.                         href: "#",
  31176.                         className: "drivers-screen_driver-menu-button",
  31177.                         onClick: function(e) {
  31178.                             e.stopPropagation();
  31179.                             e.preventDefault();
  31180.                             openDriverMenu(id, _deviceId, !menuIsOpened);
  31181.                         }
  31182.                     }, (0, _Img2["default"])({
  31183.                         src: "img/screens/kebab-icon.png",
  31184.                         width: "5",
  31185.                         height: "19"
  31186.                     })), menuIsOpened ? _react2["default"].DOM.div({
  31187.                         className: "drivers-screen_driver-menu-list"
  31188.                     }, _react2["default"].DOM.a({
  31189.                         href: "#",
  31190.                         className: "drivers-screen_driver-menu-list-link",
  31191.                         onClick: function(e) {
  31192.                             e.stopPropagation();
  31193.                             e.preventDefault();
  31194.                             installSingleDriver(device, {
  31195.                                 recommended: isRecommended,
  31196.                                 alternative: !isRecommended
  31197.                             });
  31198.                         }
  31199.                     }, this.getDriverState(state)), _react2["default"].DOM.a({
  31200.                         href: "#",
  31201.                         className: "drivers-screen_driver-menu-list-link",
  31202.                         onClick: function(e) {
  31203.                             e.stopPropagation();
  31204.                             e.preventDefault();
  31205.                             _statistics2["default"].event({
  31206.                                 action: "drivers catalog link clicked"
  31207.                             });
  31208.                             (0, _utils.goToUrl)(catalogUrl);
  31209.                         }
  31210.                     }, l("driver_row_driver-menu-search"))) : null), _react2["default"].DOM.div({
  31211.                         className: "drivers-screen_list-border"
  31212.                     })));
  31213.                 }
  31214.             }
  31215.         });
  31216.         module.exports = exports["default"];
  31217.     }).call(exports, __webpack_require__(6));
  31218. }, function(module, exports, __webpack_require__) {
  31219.     "use strict";
  31220.     function _interopRequireDefault(obj) {
  31221.         return obj && obj.__esModule ? obj : {
  31222.             "default": obj
  31223.         };
  31224.     }
  31225.     exports.__esModule = !0;
  31226.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _driversPrograms = __webpack_require__(36);
  31227.     exports["default"] = _react2["default"].createClass({
  31228.         displayName: "DriverUtilRow",
  31229.         mixins: [ __webpack_require__(5) ],
  31230.         propTypes: {
  31231.             program: _react.PropTypes.object.isRequired,
  31232.             zone: _react.PropTypes.string.isRequired,
  31233.             currentLanguage: _react.PropTypes.string.isRequired,
  31234.             toggleProgram: _react.PropTypes.func.isRequired
  31235.         },
  31236.         getChecked: function() {
  31237.             var _props = this.props, program = _props.program, zone = _props.zone, isChecked = program.isChecked, isNotifierChecked = program.isNotifierChecked;
  31238.             if ((0, _driversPrograms.isNotifier)(program)) if ("DRIVER_UTILITIES" === zone) return isNotifierChecked; else if ("PROGRAMS_PAGE" === zone) return isChecked; else throw new Error("DriverUtilRow must have proper zone, not " + zone); else return isChecked;
  31239.         },
  31240.         render: function() {
  31241.             var _props2 = this.props, program = _props2.program, zone = _props2.zone, toggleProgram = _props2.toggleProgram, id = program.ID, name = program.name, isChecked = this.getChecked(program);
  31242.             return _react2["default"].DOM.tr({
  31243.                 className: "drivers-screen_list-row drivers-screen_list-row-util"
  31244.             }, _react2["default"].DOM.td({
  31245.                 className: "drivers-screen_list-cell drivers-screen_list-name",
  31246.                 colSpan: "2"
  31247.             }, _react2["default"].DOM.table(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  31248.                 className: "drivers-screen_list-cell-icon"
  31249.             }, (0, _Img2["default"])({
  31250.                 src: "img/device-class/other.png",
  31251.                 className: "drivers-screen_list-info-link-icon",
  31252.                 width: "30",
  31253.                 height: "30"
  31254.             })), _react2["default"].DOM.td(null, _react2["default"].DOM.div({
  31255.                 className: "drivers-screen_list-name-title"
  31256.             }, name)))), _react2["default"].DOM.div({
  31257.                 className: "drivers-screen_list-border-top"
  31258.             }), _react2["default"].DOM.div({
  31259.                 className: "drivers-screen_list-border"
  31260.             })), _react2["default"].DOM.td({
  31261.                 className: "drivers-screen_list-cell drivers-screen_list-arrow-col"
  31262.             }, _react2["default"].DOM.input({
  31263.                 type: "checkbox",
  31264.                 className: "custom-control_checkbox-input",
  31265.                 id: name,
  31266.                 checked: isChecked,
  31267.                 onChange: function(e) {
  31268.                     toggleProgram(id, !isChecked, zone);
  31269.                 }
  31270.             }), _react2["default"].DOM.label({
  31271.                 htmlFor: name,
  31272.                 className: "custom-control_checkbox-input-label"
  31273.             }), _react2["default"].DOM.div({
  31274.                 className: "drivers-screen_list-border-top"
  31275.             }), _react2["default"].DOM.div({
  31276.                 className: "drivers-screen_list-border"
  31277.             })));
  31278.         }
  31279.     });
  31280.     module.exports = exports["default"];
  31281. }, function(module, exports, __webpack_require__) {
  31282.     "use strict";
  31283.     (function(l) {
  31284.         function _interopRequireDefault(obj) {
  31285.             return obj && obj.__esModule ? obj : {
  31286.                 "default": obj
  31287.             };
  31288.         }
  31289.         exports.__esModule = !0;
  31290.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  31291.         __webpack_require__(778);
  31292.         exports["default"] = _react2["default"].createClass({
  31293.             displayName: "DriversFooter",
  31294.             mixins: [ __webpack_require__(5) ],
  31295.             propTypes: {
  31296.                 counter: _react.PropTypes.number.isRequired,
  31297.                 installClickHandler: _react.PropTypes.func.isRequired
  31298.             },
  31299.             render: function() {
  31300.                 var _props = this.props, counter = _props.counter, installClickHandler = _props.installClickHandler, disableButton = !counter;
  31301.                 return _react2["default"].DOM.button({
  31302.                     className: "cta-green-btn cta-btn-68 drivers-footer_btn " + (disableButton ? "cta-green-btn-is-disabled" : ""),
  31303.                     disabled: disableButton,
  31304.                     onClick: function(e) {
  31305.                         installClickHandler();
  31306.                     }
  31307.                 }, (0, _Img2["default"])({
  31308.                     src: "img/programs/btn-icon-install-all-soft.png",
  31309.                     className: "cta-green-btn-install-all-icon",
  31310.                     width: "46",
  31311.                     height: "38"
  31312.                 }), _react2["default"].DOM.span({
  31313.                     className: "cta-green-btn-text drivers-footer_btn-span",
  31314.                     dangerouslySetInnerHTML: {
  31315.                         __html: l("drivers_btn_install_all").replace("{{COUNT}}", counter)
  31316.                     }
  31317.                 }));
  31318.             }
  31319.         });
  31320.         module.exports = exports["default"];
  31321.     }).call(exports, __webpack_require__(6));
  31322. }, function(module, exports, __webpack_require__) {
  31323.     "use strict";
  31324.     (function(l) {
  31325.         function _interopRequireDefault(obj) {
  31326.             return obj && obj.__esModule ? obj : {
  31327.                 "default": obj
  31328.             };
  31329.         }
  31330.         exports.__esModule = !0;
  31331.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  31332.         __webpack_require__(779);
  31333.         exports["default"] = _react2["default"].createClass({
  31334.             displayName: "DriversHeader",
  31335.             mixins: [ __webpack_require__(5) ],
  31336.             propTypes: {
  31337.                 page: _react.PropTypes.string.isRequired,
  31338.                 counter: _react.PropTypes.number.isRequired,
  31339.                 isAdminMode: _react.PropTypes.bool.isRequired,
  31340.                 expertModeClicked: _react.PropTypes.bool.isRequired,
  31341.                 isNotRecommendedVisible: _react.PropTypes.bool.isRequired,
  31342.                 toggleNotRecommendedVisibility: _react.PropTypes.func.isRequired,
  31343.                 toggleAdminMode: _react.PropTypes.func.isRequired,
  31344.                 installClickHandler: _react.PropTypes.func.isRequired,
  31345.                 navigate: _react.PropTypes.func.isRequired
  31346.             },
  31347.             render: function() {
  31348.                 var _props = this.props, counter = _props.counter, isAdminMode = _props.isAdminMode, isNotRecommendedVisible = _props.isNotRecommendedVisible, toggleNotRecommendedVisibility = _props.toggleNotRecommendedVisibility, toggleAdminMode = _props.toggleAdminMode, installClickHandler = _props.installClickHandler, navigate = _props.navigate, disableButton = !counter;
  31349.                 return _react2["default"].DOM.div(null, _react2["default"].DOM.div({
  31350.                     className: "drivers-header"
  31351.                 }, _react2["default"].DOM.div({
  31352.                     style: {
  31353.                         paddingLeft: "32px"
  31354.                     }
  31355.                 }, _react2["default"].DOM.h1({
  31356.                     className: "screen-title"
  31357.                 }, l("drivers_header_driver_for_computer"))), _react2["default"].DOM.table(null, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  31358.                     className: "drivers-header_header-btn"
  31359.                 }, _react2["default"].DOM.button({
  31360.                     className: "cta-green-btn cta-btn-68 drivers-header_btn " + (disableButton ? "cta-green-btn-is-disabled" : ""),
  31361.                     disabled: disableButton,
  31362.                     onClick: function(e) {
  31363.                         installClickHandler();
  31364.                     }
  31365.                 }, (0, _Img2["default"])({
  31366.                     src: "img/programs/btn-icon-install-all-soft.png",
  31367.                     className: "cta-green-btn-install-all-icon",
  31368.                     width: "46",
  31369.                     height: "38"
  31370.                 }), _react2["default"].DOM.span({
  31371.                     className: "cta-green-btn-text drivers-header_btn-span",
  31372.                     dangerouslySetInnerHTML: {
  31373.                         __html: l("drivers_btn_install_all").replace("{{COUNT}}", counter)
  31374.                     }
  31375.                 })), _react2["default"].DOM.div({
  31376.                     className: "drivers-header_btn-caption-holder"
  31377.                 }, _react2["default"].DOM.a({
  31378.                     href: "#",
  31379.                     onClick: function(e) {
  31380.                         e.preventDefault();
  31381.                         navigate("SETTINGS");
  31382.                     },
  31383.                     className: "drivers-header_btn-caption"
  31384.                 }, l("drivers_btn_install_all_caption")))), _react2["default"].DOM.td({
  31385.                     className: "drivers-header_controls"
  31386.                 }, _react2["default"].DOM.div({
  31387.                     className: "drivers-header_controls-switch"
  31388.                 }, _react2["default"].DOM.input({
  31389.                     type: "checkbox",
  31390.                     className: "drivers-header_controls-checkbox custom-control_switch-input",
  31391.                     checked: isNotRecommendedVisible,
  31392.                     id: "drivers-header_controls-checkbox-1",
  31393.                     onChange: function(e) {
  31394.                         toggleNotRecommendedVisibility();
  31395.                     }
  31396.                 }), _react2["default"].DOM.label({
  31397.                     className: "custom-control_switch-label",
  31398.                     htmlFor: "drivers-header_controls-checkbox-1"
  31399.                 }), _react2["default"].DOM.label({
  31400.                     className: "drivers-header_controls-text",
  31401.                     htmlFor: "drivers-header_controls-checkbox-1"
  31402.                 }, l("drivers_header_show_already_installed"))), _react2["default"].DOM.div({
  31403.                     className: "drivers-header_controls-switch"
  31404.                 }, _react2["default"].DOM.input({
  31405.                     type: "checkbox",
  31406.                     className: "drivers-header_controls-checkbox custom-control_switch-input",
  31407.                     checked: isAdminMode,
  31408.                     id: "drivers-header_controls-checkbox-2",
  31409.                     onChange: function(e) {
  31410.                         toggleAdminMode();
  31411.                     }
  31412.                 }), _react2["default"].DOM.label({
  31413.                     className: "custom-control_switch-label",
  31414.                     htmlFor: "drivers-header_controls-checkbox-2"
  31415.                 }), _react2["default"].DOM.label({
  31416.                     className: "drivers-header_controls-text",
  31417.                     htmlFor: "drivers-header_controls-checkbox-2"
  31418.                 }, l("drivers_header_show_additional_info")))))))));
  31419.             }
  31420.         });
  31421.         module.exports = exports["default"];
  31422.     }).call(exports, __webpack_require__(6));
  31423. }, function(module, exports, __webpack_require__) {
  31424.     "use strict";
  31425.     (function(l) {
  31426.         function _interopRequireDefault(obj) {
  31427.             return obj && obj.__esModule ? obj : {
  31428.                 "default": obj
  31429.             };
  31430.         }
  31431.         exports.__esModule = !0;
  31432.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _driversActions = __webpack_require__(228), _programsActions = __webpack_require__(99), _menuActions = __webpack_require__(62), _DriversHeader = __webpack_require__(675), _DriversHeader2 = _interopRequireDefault(_DriversHeader), _DeviceRow = __webpack_require__(671), _DeviceRow2 = _interopRequireDefault(_DeviceRow), _DriverRow = __webpack_require__(672), _DriverRow2 = _interopRequireDefault(_DriverRow), _DriverUtilRow = __webpack_require__(673), _DriverUtilRow2 = _interopRequireDefault(_DriverUtilRow), _DriversFooter = __webpack_require__(674), _DriversFooter2 = _interopRequireDefault(_DriversFooter), _ZeroDrivers = __webpack_require__(677), _ZeroDrivers2 = _interopRequireDefault(_ZeroDrivers), _getViewOptionName = __webpack_require__(678), _getViewOptionName2 = _interopRequireDefault(_getViewOptionName), _driversPrograms = __webpack_require__(36);
  31433.         __webpack_require__(330);
  31434.         var DriversScreen = _react2["default"].createClass({
  31435.             displayName: "DriversScreen",
  31436.             mixins: [ __webpack_require__(5) ],
  31437.             propTypes: {
  31438.                 page: _react.PropTypes.string.isRequired,
  31439.                 drivers: _react.PropTypes.object.isRequired,
  31440.                 programs: _react.PropTypes.array.isRequired,
  31441.                 currentLanguage: _react.PropTypes.string.isRequired,
  31442.                 selectDeviceDriver: _react.PropTypes.func.isRequired,
  31443.                 openDeviceManagerFor: _react.PropTypes.func.isRequired,
  31444.                 toggleDevice: _react.PropTypes.func.isRequired,
  31445.                 expandDevice: _react.PropTypes.func.isRequired,
  31446.                 openDriverMenu: _react.PropTypes.func.isRequired,
  31447.                 toggleNotInstalled: _react.PropTypes.func.isRequired,
  31448.                 toggleNotUpdated: _react.PropTypes.func.isRequired,
  31449.                 toggleNotRecommendedVisibility: _react.PropTypes.func.isRequired,
  31450.                 expandViewOptionsDropdown: _react.PropTypes.func.isRequired,
  31451.                 toggleViewOption: _react.PropTypes.func.isRequired,
  31452.                 toggleProgram: _react.PropTypes.func.isRequired,
  31453.                 toggleDriverUtilities: _react.PropTypes.func.isRequired,
  31454.                 installAll: _react.PropTypes.func.isRequired,
  31455.                 installSingleDriver: _react.PropTypes.func.isRequired,
  31456.                 navigate: _react.PropTypes.func.isRequired,
  31457.                 openSystemMenu: _react.PropTypes.func.isRequired,
  31458.                 expertModeClicked: _react.PropTypes.bool.isRequired,
  31459.                 checkCloudConfirmed: _react.PropTypes.func.isRequired,
  31460.                 checkCloudInstalled: _react.PropTypes.func.isRequired,
  31461.                 installCloud: _react.PropTypes.func.isRequired
  31462.             },
  31463.             install: function(_ref) {
  31464.                 var checkedNotIntalled = _ref.checkedNotIntalled, checkedNotUpdated = _ref.checkedNotUpdated, checkedVisibleUtils = _ref.checkedVisibleUtils, checkedVisiblePrograms = _ref.checkedVisiblePrograms, devices = [].concat(checkedNotIntalled, checkedNotUpdated), programs = [].concat(checkedVisiblePrograms, checkedVisibleUtils);
  31465.                 (0, this.props.installAll)({
  31466.                     devices: devices,
  31467.                     programs: programs,
  31468.                     options: {
  31469.                         eventAction: "drivers install all clicked"
  31470.                     }
  31471.                 });
  31472.             },
  31473.             renderDriversBlock: function(devices, type) {
  31474.                 var _props = this.props, drivers = _props.drivers, selectDeviceDriver = _props.selectDeviceDriver, openDriverMenu = _props.openDriverMenu, openDeviceManagerFor = _props.openDeviceManagerFor, toggleDevice = _props.toggleDevice, expandDevice = _props.expandDevice, installSingleDriver = _props.installSingleDriver, currentLanguage = _props.currentLanguage, viewOptions = drivers.viewOptions, list = [];
  31475.                 devices.forEach(function(device, index) {
  31476.                     var id = device.id, deviceId = device.deviceId, currentDriver = device.currentDriver, otherDrivers = device.otherDrivers, isChecked = device.isChecked, isExpanded = device.isExpanded, problem = device.problem, _deviceId = id, deviceDrivers = (currentDriver ? [ currentDriver ] : []).concat([].concat(otherDrivers)), selectedDriver = "broken" !== type ? deviceDrivers.find(function(driver) {
  31477.                         return !!driver.isChecked;
  31478.                     }) : null, deviceProps = {
  31479.                         key: deviceId + "_rec_" + index,
  31480.                         deviceId: deviceId,
  31481.                         isChecked: isChecked,
  31482.                         isExpanded: isExpanded,
  31483.                         currentDriver: currentDriver,
  31484.                         selectedDriver: selectedDriver,
  31485.                         currentLanguage: currentLanguage,
  31486.                         openDeviceManagerFor: openDeviceManagerFor,
  31487.                         toggleDevice: toggleDevice,
  31488.                         expandDevice: expandDevice,
  31489.                         type: type
  31490.                     };
  31491.                     list.push((0, _DeviceRow2["default"])(deviceProps));
  31492.                     if (isExpanded) if ("broken" === type) list.push((0, _DriverRow2["default"])({
  31493.                         problem: problem
  31494.                     })); else {
  31495.                         var driverLength = deviceDrivers.length;
  31496.                         deviceDrivers.forEach(function(driver, driverIndex) {
  31497.                             var id = driver.id, date = driver.date, manufacturer = driver.manufacturer, version = driver.version, driverDeviceId = driver.deviceId, rank = driver.rank, section = driver.section, inf = driver.inf, systems = driver.systems, isCurrent = driver.isCurrent, isRecommended = driver.isRecommended, isChecked = driver.isChecked, menuIsOpened = driver.menuIsOpened, driverProps = {
  31498.                                 key: "driver_row_" + deviceId + "_rec_" + index + "_" + id,
  31499.                                 openDriverMenu: openDriverMenu,
  31500.                                 id: id,
  31501.                                 date: date,
  31502.                                 manufacturer: manufacturer,
  31503.                                 version: version,
  31504.                                 rank: rank,
  31505.                                 section: section,
  31506.                                 inf: inf,
  31507.                                 systems: systems,
  31508.                                 deviceId: deviceId,
  31509.                                 _deviceId: _deviceId,
  31510.                                 driverDeviceId: driverDeviceId,
  31511.                                 isCurrent: isCurrent,
  31512.                                 isRecommended: isRecommended,
  31513.                                 isChecked: isChecked,
  31514.                                 menuIsOpened: menuIsOpened,
  31515.                                 driver: driver,
  31516.                                 currentLanguage: currentLanguage,
  31517.                                 selectDeviceDriver: selectDeviceDriver,
  31518.                                 installSingleDriver: installSingleDriver,
  31519.                                 viewOptions: viewOptions,
  31520.                                 isLast: driverIndex === driverLength - 1,
  31521.                                 driverLength: driverLength,
  31522.                                 driverIndex: driverIndex
  31523.                             };
  31524.                             list.push((0, _DriverRow2["default"])(driverProps));
  31525.                         });
  31526.                     }
  31527.                 });
  31528.                 return list;
  31529.             },
  31530.             renderNotInstalled: function(_ref2) {
  31531.                 var notInstalled = _ref2.notInstalled, checkedNotIntalled = _ref2.checkedNotIntalled, _props2 = this.props, drivers = _props2.drivers, toggleNotInstalled = _props2.toggleNotInstalled, viewOptionsDropdownIsVisible = drivers.viewOptionsDropdownIsVisible;
  31532.                 return _react2["default"].DOM.table({
  31533.                     className: "drivers-screen_table",
  31534.                     border: "1"
  31535.                 }, _react2["default"].DOM.thead(null, _react2["default"].DOM.tr({
  31536.                     className: "drivers-screen_list-header"
  31537.                 }, _react2["default"].DOM.td({
  31538.                     colSpan: "2",
  31539.                     className: "drivers-screen_list-title"
  31540.                 }, l("drivers_screen_most_important")), _react2["default"].DOM.td({
  31541.                     colSpan: "1",
  31542.                     className: "drivers-screen_list-title-dropdown"
  31543.                 }, viewOptionsDropdownIsVisible ? this.renderDropDown() : null), _react2["default"].DOM.td({
  31544.                     colSpan: "1",
  31545.                     className: "drivers-screen_title-checkbox"
  31546.                 }, _react2["default"].DOM.input({
  31547.                     type: "checkbox",
  31548.                     className: "custom-control_checkbox-input custom-control_checkbox-input-common",
  31549.                     id: "title-not-installed",
  31550.                     checked: checkedNotIntalled.length === notInstalled.length,
  31551.                     onChange: function(e) {
  31552.                         toggleNotInstalled(e.target.checked);
  31553.                     }
  31554.                 }), _react2["default"].DOM.label({
  31555.                     htmlFor: "title-not-installed",
  31556.                     className: "custom-control_checkbox-input-label"
  31557.                 })))), _react2["default"].DOM.tbody({
  31558.                     className: "drivers-screen_table-tbody"
  31559.                 }, this.renderDriversBlock(notInstalled, "notInstalled")));
  31560.             },
  31561.             renderNotUpdated: function(_ref3) {
  31562.                 var notUpdated = _ref3.notUpdated, checkedNotUpdated = _ref3.checkedNotUpdated, toggleNotUpdated = this.props.toggleNotUpdated;
  31563.                 return _react2["default"].DOM.table({
  31564.                     className: "drivers-screen_table",
  31565.                     border: "1"
  31566.                 }, _react2["default"].DOM.thead(null, _react2["default"].DOM.tr({
  31567.                     className: "drivers-screen_list-header"
  31568.                 }, _react2["default"].DOM.td({
  31569.                     colSpan: "3",
  31570.                     className: "drivers-screen_list-title"
  31571.                 }, l("drivers_screen_updates")), _react2["default"].DOM.td({
  31572.                     colSpan: "1",
  31573.                     className: "drivers-screen_title-checkbox"
  31574.                 }, _react2["default"].DOM.input({
  31575.                     type: "checkbox",
  31576.                     className: "custom-control_checkbox-input custom-control_checkbox-input-common",
  31577.                     id: "title-not-updated",
  31578.                     checked: checkedNotUpdated.length === notUpdated.length,
  31579.                     onChange: function(e) {
  31580.                         toggleNotUpdated(e.target.checked);
  31581.                     }
  31582.                 }), _react2["default"].DOM.label({
  31583.                     htmlFor: "title-not-updated",
  31584.                     className: "custom-control_checkbox-input-label"
  31585.                 })))), _react2["default"].DOM.tbody({
  31586.                     className: "drivers-screen_table-tbody"
  31587.                 }, this.renderDriversBlock(notUpdated, "notUpdated")));
  31588.             },
  31589.             renderUtils: function(_ref4) {
  31590.                 var visibleUtils = _ref4.visibleUtils, checkedVisibleUtils = _ref4.checkedVisibleUtils, _props3 = this.props, currentLanguage = _props3.currentLanguage, toggleProgram = _props3.toggleProgram, toggleDriverUtilities = _props3.toggleDriverUtilities, list = [];
  31591.                 visibleUtils.forEach(function(util, index) {
  31592.                     var utilProps = {
  31593.                         key: util.ID + "_" + index,
  31594.                         program: util,
  31595.                         zone: "DRIVER_UTILITIES",
  31596.                         currentLanguage: currentLanguage,
  31597.                         toggleProgram: toggleProgram
  31598.                     };
  31599.                     list.push((0, _DriverUtilRow2["default"])(utilProps));
  31600.                 });
  31601.                 return _react2["default"].DOM.table({
  31602.                     className: "drivers-screen_table",
  31603.                     border: "1"
  31604.                 }, _react2["default"].DOM.thead(null, _react2["default"].DOM.tr({
  31605.                     className: "drivers-screen_list-header"
  31606.                 }, _react2["default"].DOM.td({
  31607.                     colSpan: "2",
  31608.                     className: "drivers-screen_list-title"
  31609.                 }, l("drivers_screen_utils")), _react2["default"].DOM.td({
  31610.                     colSpan: "1",
  31611.                     className: "drivers-screen_title-checkbox"
  31612.                 }, _react2["default"].DOM.input({
  31613.                     type: "checkbox",
  31614.                     className: "custom-control_checkbox-input custom-control_checkbox-input-common",
  31615.                     id: "title-utils",
  31616.                     checked: checkedVisibleUtils.length === visibleUtils.length,
  31617.                     onChange: function(e) {
  31618.                         toggleDriverUtilities(e.target.checked);
  31619.                     }
  31620.                 }), _react2["default"].DOM.label({
  31621.                     htmlFor: "title-utils",
  31622.                     className: "custom-control_checkbox-input-label"
  31623.                 })))), _react2["default"].DOM.tbody({
  31624.                     className: "drivers-screen_table-tbody"
  31625.                 }, list));
  31626.             },
  31627.             renderInstalled: function(_ref5) {
  31628.                 var installed = _ref5.installed;
  31629.                 return _react2["default"].DOM.table({
  31630.                     className: "drivers-screen_table",
  31631.                     border: "1"
  31632.                 }, _react2["default"].DOM.thead(null, _react2["default"].DOM.tr({
  31633.                     className: "drivers-screen_list-header"
  31634.                 }, _react2["default"].DOM.td({
  31635.                     colSpan: "3",
  31636.                     className: "drivers-screen_list-title"
  31637.                 }, l("drivers_screen_installed")), _react2["default"].DOM.td({
  31638.                     colSpan: "1",
  31639.                     className: "drivers-screen_title-checkbox"
  31640.                 }))), _react2["default"].DOM.tbody({
  31641.                     className: "drivers-screen_table-tbody"
  31642.                 }, this.renderDriversBlock(installed, "installed")));
  31643.             },
  31644.             renderNotRecommended: function(_ref6) {
  31645.                 var lowRankedDevices = _ref6.lowRankedDevices, brokenDevices = _ref6.brokenDevices;
  31646.                 return _react2["default"].DOM.table({
  31647.                     className: "drivers-screen_table drivers-screen_table-not-rec",
  31648.                     border: "1"
  31649.                 }, _react2["default"].DOM.thead(null, _react2["default"].DOM.tr({
  31650.                     className: "drivers-screen_list-header"
  31651.                 }, _react2["default"].DOM.td({
  31652.                     colSpan: "3",
  31653.                     className: "drivers-screen_list-title"
  31654.                 }, l("drivers_screen_alternative")), _react2["default"].DOM.td({
  31655.                     colSpan: "1",
  31656.                     className: "drivers-screen_title-checkbox"
  31657.                 }))), _react2["default"].DOM.tbody({
  31658.                     className: "drivers-screen_table-tbody"
  31659.                 }, this.renderDriversBlock(lowRankedDevices, "lowRanked"), this.renderDriversBlock(brokenDevices, "broken")));
  31660.             },
  31661.             renderDropDown: function() {
  31662.                 var _props4 = this.props, drivers = _props4.drivers, expandViewOptionsDropdown = _props4.expandViewOptionsDropdown, toggleViewOption = _props4.toggleViewOption, viewOptionsDropdownIsExpanded = drivers.viewOptionsDropdownIsExpanded, viewOptions = drivers.viewOptions;
  31663.                 return _react2["default"].DOM.div({
  31664.                     className: "drivers-screen__dropdown"
  31665.                 }, _react2["default"].DOM.div({
  31666.                     className: "drivers-screen__label " + (!viewOptionsDropdownIsExpanded ? "" : "drivers-screen__dropdown-is-opened"),
  31667.                     onClick: function(e) {
  31668.                         e.stopPropagation();
  31669.                         expandViewOptionsDropdown(!viewOptionsDropdownIsExpanded);
  31670.                     }
  31671.                 }, _react2["default"].DOM.span({
  31672.                     className: "drivers-screen__label-text"
  31673.                 }, l("drivers_screen_show")), (0, _Img2["default"])({
  31674.                     src: !viewOptionsDropdownIsExpanded ? "img/screens/driver-filter-arrow.png" : "img/screens/driver-filter-arrow-expanded.png",
  31675.                     className: "drivers-screen_list-row-install-icon",
  31676.                     width: "9",
  31677.                     height: "5"
  31678.                 })), viewOptionsDropdownIsExpanded ? _react2["default"].DOM.div({
  31679.                     className: "drivers-screen__list"
  31680.                 }, Object.entries(viewOptions).map(function(_ref7) {
  31681.                     var option = _ref7[0], value = _ref7[1];
  31682.                     return _react2["default"].DOM.div({
  31683.                         className: "drivers-screen__list-item"
  31684.                     }, _react2["default"].DOM.label({
  31685.                         htmlFor: "checkbox-" + option,
  31686.                         className: "drivers-screen__list-label",
  31687.                         onClick: function(e) {
  31688.                             e.stopPropagation();
  31689.                         }
  31690.                     }, _react2["default"].DOM.input({
  31691.                         id: "checkbox-" + option,
  31692.                         type: "checkbox",
  31693.                         checked: value,
  31694.                         onChange: function(e) {
  31695.                             toggleViewOption(option);
  31696.                         }
  31697.                     }), (0, _getViewOptionName2["default"])(l, option)));
  31698.                 })) : null);
  31699.             },
  31700.             render: function() {
  31701.                 var _this = this, _props5 = this.props, page = _props5.page, drivers = _props5.drivers, programs = _props5.programs, currentLanguage = _props5.currentLanguage, hideZeroDrivers = _props5.hideZeroDrivers, toggleAdminMode = _props5.toggleAdminMode, toggleNotRecommendedVisibility = _props5.toggleNotRecommendedVisibility, expandViewOptionsDropdown = _props5.expandViewOptionsDropdown, navigate = _props5.navigate, openSystemMenu = _props5.openSystemMenu, openDriverMenu = _props5.openDriverMenu, expertModeClicked = _props5.expertModeClicked, checkCloudConfirmed = _props5.checkCloudConfirmed, checkCloudInstalled = _props5.checkCloudInstalled, installCloud = _props5.installCloud, zeroDriversVisible = drivers.zeroDriversVisible, isAdminMode = drivers.isAdminMode, isNotRecommendedVisible = drivers.isNotRecommendedVisible, viewOptionsDropdownIsExpanded = drivers.viewOptionsDropdownIsExpanded, devices = drivers.devices, brokenDevices = drivers.brokenDevices, lowRankedDevices = drivers.lowRankedDevices, isCloudConfirmed = drivers.isCloudConfirmed, isCloudInstalled = drivers.isCloudInstalled, notInstalled = (0,
  31702.                 _driversPrograms.filterNotInstalledDriverDevices)(devices), checkedNotIntalled = (0,
  31703.                 _driversPrograms.filterCheckedDrivers)(notInstalled), notUpdated = (0, _driversPrograms.filterNotUpdatedDriverDevices)(devices), checkedNotUpdated = (0,
  31704.                 _driversPrograms.filterCheckedDrivers)(notUpdated), installed = (0, _driversPrograms.filterInstalledDriverDevices)(devices), visibleUtils = (0,
  31705.                 _driversPrograms.filterDriverUtilities)(programs), checkedVisibleUtils = (0, _driversPrograms.filterCheckedDriverUtilities)(programs), checkedVisiblePrograms = (0,
  31706.                 _driversPrograms.filterCheckedSoft)((0, _driversPrograms.filterProgramsPage)(programs)), installingElementsCount = checkedNotIntalled.length + checkedNotUpdated.length + checkedVisibleUtils.length + checkedVisiblePrograms.length, installingElements = {
  31707.                     checkedNotIntalled: checkedNotIntalled,
  31708.                     checkedNotUpdated: checkedNotUpdated,
  31709.                     checkedVisibleUtils: checkedVisibleUtils,
  31710.                     checkedVisiblePrograms: checkedVisiblePrograms
  31711.                 }, hideComponent = "DRIVERS" !== page;
  31712.                 return zeroDriversVisible && !notInstalled.length && !notUpdated.length ? (0, _ZeroDrivers2["default"])({
  31713.                     hideComponent: hideComponent,
  31714.                     currentLanguage: currentLanguage,
  31715.                     hideZeroDrivers: hideZeroDrivers,
  31716.                     navigate: navigate,
  31717.                     openSystemMenu: openSystemMenu
  31718.                 }) : _react2["default"].DOM.td({
  31719.                     className: (hideComponent ? "display-none" : "") + " drivers-screen__wrapper",
  31720.                     onClick: function(e) {
  31721.                         e.stopPropagation();
  31722.                         if (viewOptionsDropdownIsExpanded) expandViewOptionsDropdown(!1);
  31723.                         openDriverMenu(null, null, !1);
  31724.                     }
  31725.                 }, (0, _DriversHeader2["default"])({
  31726.                     page: page,
  31727.                     counter: installingElementsCount,
  31728.                     isAdminMode: isAdminMode,
  31729.                     expertModeClicked: expertModeClicked,
  31730.                     isNotRecommendedVisible: isNotRecommendedVisible,
  31731.                     toggleNotRecommendedVisibility: toggleNotRecommendedVisibility,
  31732.                     toggleAdminMode: toggleAdminMode,
  31733.                     installClickHandler: function() {
  31734.                         return _this.install(installingElements);
  31735.                     },
  31736.                     isCloudConfirmed: isCloudConfirmed,
  31737.                     isCloudInstalled: isCloudInstalled,
  31738.                     checkCloudConfirmed: checkCloudConfirmed,
  31739.                     checkCloudInstalled: checkCloudInstalled,
  31740.                     installCloud: installCloud,
  31741.                     navigate: navigate
  31742.                 }), _react2["default"].DOM.div({
  31743.                     className: "drivers-screen"
  31744.                 }, notInstalled.length ? this.renderNotInstalled({
  31745.                     notInstalled: notInstalled,
  31746.                     checkedNotIntalled: checkedNotIntalled
  31747.                 }) : null, notUpdated.length ? this.renderNotUpdated({
  31748.                     notUpdated: notUpdated,
  31749.                     checkedNotUpdated: checkedNotUpdated
  31750.                 }) : null, visibleUtils.length ? this.renderUtils({
  31751.                     visibleUtils: visibleUtils,
  31752.                     checkedVisibleUtils: checkedVisibleUtils
  31753.                 }) : null), (0, _DriversFooter2["default"])({
  31754.                     page: page,
  31755.                     counter: installingElementsCount,
  31756.                     installClickHandler: function() {
  31757.                         return _this.install(installingElements);
  31758.                     }
  31759.                 }), isNotRecommendedVisible ? _react2["default"].DOM.div({
  31760.                     className: "drivers-screen"
  31761.                 }, installed.length ? this.renderInstalled({
  31762.                     installed: installed
  31763.                 }) : null, this.renderNotRecommended({
  31764.                     lowRankedDevices: lowRankedDevices,
  31765.                     brokenDevices: brokenDevices
  31766.                 })) : null, _react2["default"].DOM.div({
  31767.                     className: "drivers-screen__footer"
  31768.                 }, _react2["default"].DOM.div({
  31769.                     className: "screen-copyright"
  31770.                 }, "Artur Kuzyakov © 2018")));
  31771.             }
  31772.         }), mapState = function(state) {
  31773.             return {
  31774.                 drivers: state.drivers,
  31775.                 programs: state.programs,
  31776.                 expertModeClicked: state.app.expertModeClicked
  31777.             };
  31778.         }, actions = {
  31779.             openDeviceManagerFor: _driversActions.openDeviceManagerFor,
  31780.             selectDeviceDriver: _driversActions.selectDeviceDriver,
  31781.             toggleDevice: _driversActions.toggleDevice,
  31782.             expandDevice: _driversActions.expandDevice,
  31783.             openDriverMenu: _driversActions.openDriverMenu,
  31784.             toggleNotInstalled: _driversActions.toggleNotInstalled,
  31785.             toggleNotUpdated: _driversActions.toggleNotUpdated,
  31786.             toggleNotRecommendedVisibility: _driversActions.toggleNotRecommendedVisibility,
  31787.             expandViewOptionsDropdown: _driversActions.expandViewOptionsDropdown,
  31788.             toggleViewOption: _driversActions.toggleViewOption,
  31789.             toggleProgram: _programsActions.toggleProgram,
  31790.             toggleDriverUtilities: _driversActions.toggleDriverUtilities,
  31791.             hideZeroDrivers: _driversActions.hideZeroDrivers,
  31792.             toggleAdminMode: _driversActions.toggleAdminMode,
  31793.             installAll: _driversActions.installAll,
  31794.             installSingleDriver: _driversActions.installSingleDriver,
  31795.             navigate: _menuActions.navigate,
  31796.             openSystemMenu: _menuActions.openSystemMenu,
  31797.             checkCloudConfirmed: _driversActions.checkCloudConfirmed,
  31798.             checkCloudInstalled: _driversActions.checkCloudInstalled,
  31799.             installCloud: _driversActions.installCloud
  31800.         };
  31801.         exports["default"] = (0, _connect2["default"])(mapState, actions)(DriversScreen);
  31802.         module.exports = exports["default"];
  31803.     }).call(exports, __webpack_require__(6));
  31804. }, function(module, exports, __webpack_require__) {
  31805.     "use strict";
  31806.     (function(l) {
  31807.         function _interopRequireDefault(obj) {
  31808.             return obj && obj.__esModule ? obj : {
  31809.                 "default": obj
  31810.             };
  31811.         }
  31812.         exports.__esModule = !0;
  31813.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics);
  31814.         __webpack_require__(780);
  31815.         exports["default"] = _react2["default"].createClass({
  31816.             displayName: "ZeroDrivers",
  31817.             mixins: [ __webpack_require__(5) ],
  31818.             propTypes: {
  31819.                 hideComponent: _react.PropTypes.bool.isRequired,
  31820.                 currentLanguage: _react.PropTypes.string.isRequired,
  31821.                 hideZeroDrivers: _react.PropTypes.func.isRequired,
  31822.                 navigate: _react.PropTypes.func.isRequired,
  31823.                 openSystemMenu: _react.PropTypes.func.isRequired
  31824.             },
  31825.             render: function() {
  31826.                 var _props = this.props, hideComponent = _props.hideComponent, hideZeroDrivers = _props.hideZeroDrivers, navigate = _props.navigate, openSystemMenu = _props.openSystemMenu, currentLanguage = _props.currentLanguage, msgCaption = void 0;
  31827.                 msgCaption = l("zero-drivers_cta-msg-caption");
  31828.                 var _msgCaption$split = msgCaption.split("{{LINK}}"), msgCaptionLeft = _msgCaption$split[0], msgCaptionRight = _msgCaption$split[1];
  31829.                 return _react2["default"].DOM.td({
  31830.                     className: (hideComponent ? "display-none" : "") + " zero-drivers_wrapper"
  31831.                 }, _react2["default"].DOM.div({
  31832.                     className: "zero-drivers"
  31833.                 }, _react2["default"].DOM.table({
  31834.                     className: "zero-drivers_wrapper-inner"
  31835.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr({
  31836.                     style: {
  31837.                         height: "100%"
  31838.                     }
  31839.                 }, _react2["default"].DOM.td(null, _react2["default"].DOM.div({
  31840.                     className: "zero-drivers_cta"
  31841.                 }, _react2["default"].DOM.div({
  31842.                     className: "zero-drivers_cta-logo"
  31843.                 }, (0, _Img2["default"])({
  31844.                     src: "img/screens/zero-drivers_logo.png",
  31845.                     width: "634",
  31846.                     height: "121"
  31847.                 })), _react2["default"].DOM.div({
  31848.                     className: "zero-drivers_cta-msg"
  31849.                 }, l("zero-drivers_cta-msg")), _react2["default"].DOM.div({
  31850.                     className: "zero-drivers_cta-msg-caption"
  31851.                 }, msgCaptionLeft, _react2["default"].DOM.a({
  31852.                     className: "zero-drivers_cta-msg-caption-link",
  31853.                     href: "#",
  31854.                     onClick: function(e) {
  31855.                         e.preventDefault();
  31856.                         _statistics2["default"].event({
  31857.                             action: "drivers zero reinstall drivers clicked"
  31858.                         });
  31859.                         hideZeroDrivers();
  31860.                     }
  31861.                 }, l("zero-drivers_cta-msg-caption-link")), msgCaptionRight), _react2["default"].DOM.button({
  31862.                     className: "cta-green-btn zero-drivers_cta-btn",
  31863.                     onClick: function() {
  31864.                         _statistics2["default"].event({
  31865.                             action: "drivers zero clean system clicked"
  31866.                         });
  31867.                         navigate("PROTECT");
  31868.                     }
  31869.                 }, _react2["default"].DOM.span({
  31870.                     className: "cta-green-btn-text"
  31871.                 }, l("zero-drivers_cta-btn")), (0, _Img2["default"])({
  31872.                     src: "img/screens/zero-drivers_button-arrow.png",
  31873.                     className: "zero-drivers_cta-btn-icon",
  31874.                     width: "6",
  31875.                     height: "9"
  31876.                 }))))), _react2["default"].DOM.tr({
  31877.                     style: {
  31878.                         height: "1%"
  31879.                     }
  31880.                 }, _react2["default"].DOM.td(null, _react2["default"].DOM.div({
  31881.                     className: "zero-drivers_footer"
  31882.                 }, _react2["default"].DOM.a({
  31883.                     className: "zero-drivers_footer-link",
  31884.                     href: "#",
  31885.                     onClick: function(e) {
  31886.                         e.preventDefault();
  31887.                         _statistics2["default"].event({
  31888.                             action: "drivers zero footer device manager clicked"
  31889.                         });
  31890.                         openSystemMenu("DEVICE_MANAGER", {
  31891.                             preventSendingEvent: !0
  31892.                         });
  31893.                     }
  31894.                 }, (0, _Img2["default"])({
  31895.                     className: "zero-drivers_footer-link-icon",
  31896.                     src: "img/screens/icon-device-manager.png",
  31897.                     width: "13",
  31898.                     height: "13"
  31899.                 }), _react2["default"].DOM.span({
  31900.                     className: "zero-drivers_footer-link-text"
  31901.                 }, l("zero-drivers_footer_device-manager"))), _react2["default"].DOM.a({
  31902.                     className: "zero-drivers_footer-link zero-drivers_footer-link-centered",
  31903.                     href: "#",
  31904.                     onClick: function(e) {
  31905.                         e.preventDefault();
  31906.                         _statistics2["default"].event({
  31907.                             action: "drivers zero footer support clicked"
  31908.                         });
  31909.                         openSystemMenu("FEEDBACK", {
  31910.                             preventSendingEvent: !0,
  31911.                             lang: currentLanguage
  31912.                         });
  31913.                     }
  31914.                 }, (0, _Img2["default"])({
  31915.                     className: "zero-drivers_footer-link-icon",
  31916.                     src: "img/screens/icon-support.png",
  31917.                     width: "13",
  31918.                     height: "13"
  31919.                 }), _react2["default"].DOM.span({
  31920.                     className: "zero-drivers_footer-link-text"
  31921.                 }, l("zero-drivers_footer_support"))), _react2["default"].DOM.a({
  31922.                     className: "zero-drivers_footer-link",
  31923.                     href: "#",
  31924.                     onClick: function(e) {
  31925.                         e.preventDefault();
  31926.                         _statistics2["default"].event({
  31927.                             action: "drivers zero footer system restore clicked"
  31928.                         });
  31929.                         openSystemMenu("RECOVERY", {
  31930.                             preventSendingEvent: !0
  31931.                         });
  31932.                     }
  31933.                 }, (0, _Img2["default"])({
  31934.                     className: "zero-drivers_footer-link-icon",
  31935.                     src: "img/screens/icon-system-restore.png",
  31936.                     width: "13",
  31937.                     height: "13"
  31938.                 }), _react2["default"].DOM.span({
  31939.                     className: "zero-drivers_footer-link-text"
  31940.                 }, l("zero-drivers_footer_system-restore"))))))))));
  31941.             }
  31942.         });
  31943.         module.exports = exports["default"];
  31944.     }).call(exports, __webpack_require__(6));
  31945. }, function(module, exports, __webpack_require__) {
  31946.     "use strict";
  31947.     exports.__esModule = !0;
  31948.     exports["default"] = function(l, option) {
  31949.         var result = void 0;
  31950.         switch (option) {
  31951.           case "vendor":
  31952.             result = l("drivers_screen_view_options_vendor");
  31953.             break;
  31954.  
  31955.           case "version":
  31956.             result = l("drivers_screen_view_options_version");
  31957.             break;
  31958.  
  31959.           case "date":
  31960.             result = l("drivers_screen_view_options_date");
  31961.             break;
  31962.  
  31963.           case "deviceId":
  31964.             result = l("drivers_screen_view_options_device_id");
  31965.             break;
  31966.  
  31967.           case "inf":
  31968.             result = l("drivers_screen_view_options_inf");
  31969.             break;
  31970.  
  31971.           case "section":
  31972.             result = l("drivers_screen_view_options_section");
  31973.             break;
  31974.  
  31975.           case "os":
  31976.             result = l("drivers_screen_view_options_os");
  31977.         }
  31978.         return result;
  31979.     };
  31980.     module.exports = exports["default"];
  31981. }, function(module, exports, __webpack_require__) {
  31982.     "use strict";
  31983.     exports.__esModule = !0;
  31984.     var _DriversScreen = __webpack_require__(676), _DriversScreen2 = function(obj) {
  31985.         return obj && obj.__esModule ? obj : {
  31986.             "default": obj
  31987.         };
  31988.     }(_DriversScreen);
  31989.     exports["default"] = _DriversScreen2["default"];
  31990.     module.exports = exports["default"];
  31991. }, function(module, exports, __webpack_require__) {
  31992.     "use strict";
  31993.     (function(l) {
  31994.         function _interopRequireDefault(obj) {
  31995.             return obj && obj.__esModule ? obj : {
  31996.                 "default": obj
  31997.             };
  31998.         }
  31999.         exports.__esModule = !0;
  32000.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  32001.         __webpack_require__(781);
  32002.         exports["default"] = _react2["default"].createClass({
  32003.             displayName: "FinalPopover",
  32004.             mixins: [ __webpack_require__(5) ],
  32005.             propTypes: {
  32006.                 item: _react.PropTypes.object.isRequired,
  32007.                 currentLanguage: _react.PropTypes.string.isRequired
  32008.             },
  32009.             renderDriverDate: function(date) {
  32010.                 return date ? date.split("-").reverse().join(".") : "";
  32011.             },
  32012.             renderDevicePopover: function() {
  32013.                 var device = this.props.item, oldDriver = device.oldDriver, currentDriver = device.currentDriver, recommendedDriver = device.recommendedDriver, name = recommendedDriver.name;
  32014.                 return _react2["default"].DOM.div({
  32015.                     className: "final-popover"
  32016.                 }, _react2["default"].DOM.div({
  32017.                     className: "final-popover_arrow"
  32018.                 }, (0, _Img2["default"])({
  32019.                     src: "img/screens/arrow-bottom.png",
  32020.                     className: "final-popover_arrow-img",
  32021.                     width: "17",
  32022.                     height: "10"
  32023.                 })), _react2["default"].DOM.div({
  32024.                     className: "final-popover_wrapper"
  32025.                 }, _react2["default"].DOM.div({
  32026.                     className: "final-popover_block"
  32027.                 }, _react2["default"].DOM.div({
  32028.                     className: "final-popover_marked-text"
  32029.                 }, name)), oldDriver ? _react2["default"].DOM.div({
  32030.                     className: "final-popover_block"
  32031.                 }, _react2["default"].DOM.div(null, l("final_popover_old_driver"), ":"), _react2["default"].DOM.div({
  32032.                     className: "final-popover_marked-text"
  32033.                 }, l("version"), ": ", oldDriver.version, " / ", l("date"), ": ", this.renderDriverDate(oldDriver.date))) : null, _react2["default"].DOM.div({
  32034.                     className: "final-popover_block"
  32035.                 }, _react2["default"].DOM.div(null, l("final_popover_new_driver"), ":"), _react2["default"].DOM.div({
  32036.                     className: "final-popover_marked-text"
  32037.                 }, l("version"), ": ", currentDriver.version, " / ", l("date"), ": ", this.renderDriverDate(currentDriver.date))), oldDriver && oldDriver.version === currentDriver.version ? _react2["default"].DOM.div({
  32038.                     className: "final-popover_block"
  32039.                 }, l("final_popover_new_driver_not_installed_caption")) : null));
  32040.             },
  32041.             renderProgramPopover: function() {
  32042.                 var _props = this.props, currentLanguage = _props.currentLanguage, item = _props.item, name = item.name, icon = item.icon, version = item.version, description = item.description, localizedDescription = void 0;
  32043.                 localizedDescription = description["ru" === currentLanguage ? "ru" : "en"];
  32044.                 return _react2["default"].DOM.div({
  32045.                     className: "final-popover"
  32046.                 }, _react2["default"].DOM.div({
  32047.                     className: "final-popover_arrow"
  32048.                 }, (0, _Img2["default"])({
  32049.                     src: "img/screens/arrow-bottom.png",
  32050.                     className: "final-popover_arrow-img",
  32051.                     width: "17",
  32052.                     height: "10"
  32053.                 })), _react2["default"].DOM.div({
  32054.                     className: "final-popover_wrapper"
  32055.                 }, _react2["default"].DOM.div({
  32056.                     className: "final-popover_block"
  32057.                 }, _react2["default"].DOM.div({
  32058.                     className: "final-popover_marked-text"
  32059.                 }, name), (0, _Img2["default"])({
  32060.                     src: icon,
  32061.                     className: "final-popover_soft-icon",
  32062.                     width: "38",
  32063.                     height: "38"
  32064.                 }), version ? _react2["default"].DOM.div(null, l("version"), " ", version) : null), _react2["default"].DOM.div({
  32065.                     className: "final-popover_block"
  32066.                 }, localizedDescription)));
  32067.             },
  32068.             render: function() {
  32069.                 return this.props.item.deviceId ? this.renderDevicePopover() : this.renderProgramPopover();
  32070.             }
  32071.         });
  32072.         module.exports = exports["default"];
  32073.     }).call(exports, __webpack_require__(6));
  32074. }, function(module, exports, __webpack_require__) {
  32075.     "use strict";
  32076.     (function(l, nl) {
  32077.         function _interopRequireDefault(obj) {
  32078.             return obj && obj.__esModule ? obj : {
  32079.                 "default": obj
  32080.             };
  32081.         }
  32082.         function mapState(state) {
  32083.             return {
  32084.                 installation: state.installation,
  32085.                 drivers: state.drivers,
  32086.                 finalScreen: state.finalScreen,
  32087.                 protect: state.protect,
  32088.                 settings: state.settings,
  32089.                 currentLanguage: state.lang.currentLanguage,
  32090.                 isConnected: state.app.isConnected,
  32091.                 isGamer: state.app.isGamer
  32092.             };
  32093.         }
  32094.         exports.__esModule = !0;
  32095.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _FinalPopover = __webpack_require__(680), _FinalPopover2 = _interopRequireDefault(_FinalPopover), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _trimVendorName = __webpack_require__(64), _trimVendorName2 = _interopRequireDefault(_trimVendorName), _deviceClasses = __webpack_require__(184), _deviceClasses2 = _interopRequireDefault(_deviceClasses), _finalActions = __webpack_require__(664), _driversActions = __webpack_require__(228), _menuActions = __webpack_require__(62), _diagnosticsActions = __webpack_require__(227), _appActions = __webpack_require__(123), _driversPrograms = __webpack_require__(36), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), _systemScanner = __webpack_require__(86), _systemScanner2 = _interopRequireDefault(_systemScanner), _system = __webpack_require__(9);
  32096.         __webpack_require__(782);
  32097.         var FinalScreen = _react2["default"].createClass({
  32098.             displayName: "FinalScreen",
  32099.             mixins: [ __webpack_require__(5) ],
  32100.             propTypes: {
  32101.                 installation: _react.PropTypes.object.isRequired,
  32102.                 finalScreen: _react.PropTypes.object.isRequired,
  32103.                 protect: _react.PropTypes.object.isRequired,
  32104.                 currentLanguage: _react.PropTypes.string.isRequired,
  32105.                 isConnected: _react.PropTypes.bool,
  32106.                 isGamer: _react.PropTypes.bool,
  32107.                 getInstallationResult: _react.PropTypes.func.isRequired,
  32108.                 repeatLastInstallation: _react.PropTypes.func.isRequired,
  32109.                 checkConnection: _react.PropTypes.func.isRequired,
  32110.                 loadDiagnosticInfo: _react.PropTypes.func.isRequired,
  32111.                 navigate: _react.PropTypes.func.isRequired,
  32112.                 openSystemMenu: _react.PropTypes.func.isRequired,
  32113.                 installDrivers: _react.PropTypes.func.isRequired,
  32114.                 hoverFinishedItem: _react.PropTypes.func.isRequired
  32115.             },
  32116.             componentDidMount: function() {
  32117.                 var _this = this, _props = this.props, loadDiagnosticInfo = _props.loadDiagnosticInfo, checkConnection = _props.checkConnection, checkGamer = _props.checkGamer, getInstallationResult = _props.getInstallationResult;
  32118.                 loadDiagnosticInfo();
  32119.                 checkConnection();
  32120.                 checkGamer();
  32121.                 getInstallationResult();
  32122.                 setTimeout(function() {
  32123.                     _logs2["default"].info({
  32124.                         action: "final screen opened " + _this.props.finalScreen.resultType.toLowerCase()
  32125.                     }, {}, "final:screen:opened");
  32126.                 }, 0);
  32127.             },
  32128.             getSoundName: function() {
  32129.                 switch (this.props.finalScreen.resultType) {
  32130.                   case "DRIVERS_OK_PROGRAMS":
  32131.                   case "DRIVERS_OK":
  32132.                   case "DRIVERS_BETTER":
  32133.                   case "SINGLE_DRIVER_OK_PROGRAMS":
  32134.                   case "SINGLE_DRIVER_OK":
  32135.                   case "SINGLE_DRIVER_BETTER":
  32136.                   case "PROGRAMS_ALL_FINISHED":
  32137.                   case "PROGRAMS_SOME_FINISHED":
  32138.                   case "SINGLE_PROGRAM_FINISHED":
  32139.                     return _system.WshShell.ExpandEnvironmentStrings("%windir%\\Media\\notify.wav");
  32140.  
  32141.                   case "DRIVERS_NOT_BETTER":
  32142.                   case "SINGLE_DRIVER_NOT_BETTER":
  32143.                   case "PROGRAMS_ALL_FAILED":
  32144.                   case "SINGLE_PROGRAM_FAILED":
  32145.                     return _system.WshShell.ExpandEnvironmentStrings("%windir%\\Media\\chord.wav");
  32146.  
  32147.                   default:
  32148.                     return "";
  32149.                 }
  32150.             },
  32151.             renderTitle: function() {
  32152.                 var finalScreen = this.props.finalScreen, resultType = finalScreen.resultType, finishedPrograms = finalScreen.finishedPrograms, failedPrograms = finalScreen.failedPrograms, finishedDevices = finalScreen.finishedDevices, failedDevices = finalScreen.failedDevices;
  32153.                 switch (resultType) {
  32154.                   case "DRIVERS_OK_PROGRAMS":
  32155.                   case "DRIVERS_OK":
  32156.                   case "SINGLE_DRIVER_OK_PROGRAMS":
  32157.                   case "SINGLE_DRIVER_OK":
  32158.                   case "PROGRAMS_ALL_FINISHED":
  32159.                   case "SINGLE_PROGRAM_FINISHED":
  32160.                     return l("final_computer_setup_ok_title");
  32161.  
  32162.                   case "DRIVERS_BETTER":
  32163.                   case "DRIVERS_NOT_BETTER":
  32164.                     var driversNotBetterMessageText = nl("final_drivers_not_better_title", "final_drivers_not_better_title_n", finishedDevices.length).replace("{{COUNT1}}", finishedDevices.length);
  32165.                     return _react2["default"].DOM.span({
  32166.                         dangerouslySetInnerHTML: {
  32167.                             __html: driversNotBetterMessageText.replace("{{COUNT2}}", finishedDevices.length + failedDevices.length)
  32168.                         }
  32169.                     });
  32170.  
  32171.                   case "SINGLE_DRIVER_BETTER":
  32172.                   case "SINGLE_DRIVER_NOT_BETTER":
  32173.                     return finishedDevices.length ? l("final_single_driver_better_installed_title") : l("final_single_driver_better_not_installed_title");
  32174.  
  32175.                   case "PROGRAMS_SOME_FINISHED":
  32176.                     var programsSomeFinishedMessageText = nl("final_programs_some_finished_title", "final_programs_some_finished_title_n", finishedPrograms.length).replace("{{COUNT1}}", finishedPrograms.length);
  32177.                     return _react2["default"].DOM.span({
  32178.                         dangerouslySetInnerHTML: {
  32179.                             __html: programsSomeFinishedMessageText.replace("{{COUNT2}}", finishedPrograms.length + failedPrograms.length)
  32180.                         }
  32181.                     });
  32182.  
  32183.                   case "PROGRAMS_ALL_FAILED":
  32184.                     return _react2["default"].DOM.span({
  32185.                         dangerouslySetInnerHTML: {
  32186.                             __html: l("final_programs_all_failed_title").replace("{{COUNT}}", finishedPrograms.length + failedPrograms.length)
  32187.                         }
  32188.                     });
  32189.  
  32190.                   case "SINGLE_PROGRAM_FAILED":
  32191.                     return l("final_single_program_failed_title");
  32192.  
  32193.                   default:
  32194.                     return "";
  32195.                 }
  32196.             },
  32197.             renderSubTitle: function() {
  32198.                 var _props2 = this.props, isConnected = _props2.isConnected, finalScreen = _props2.finalScreen, resultType = finalScreen.resultType, finishedPrograms = finalScreen.finishedPrograms, failedDevices = finalScreen.failedDevices, missedDevices = finalScreen.missedDevices, offlineConnected = window.delorean.isLocal && isConnected, restartMessage = offlineConnected ? " " + l("final_offline_restart") : "";
  32199.                 switch (resultType) {
  32200.                   case "DRIVERS_OK_PROGRAMS":
  32201.                     return l("final_drivers_ok_programs_subtitle") + restartMessage;
  32202.  
  32203.                   case "DRIVERS_OK":
  32204.                     return l("final_drivers_ok_subtitle") + restartMessage;
  32205.  
  32206.                   case "DRIVERS_BETTER":
  32207.                   case "DRIVERS_NOT_BETTER":
  32208.                   case "SINGLE_DRIVER_BETTER":
  32209.                   case "SINGLE_DRIVER_NOT_BETTER":
  32210.                     var count = failedDevices.length + missedDevices.length;
  32211.                     return _react2["default"].DOM.span({
  32212.                         dangerouslySetInnerHTML: {
  32213.                             __html: nl("final_drivers_not_better_subtitle", "final_drivers_not_better_subtitle_n", count).replace("{{COUNT}}", count) + restartMessage
  32214.                         }
  32215.                     });
  32216.  
  32217.                   case "SINGLE_DRIVER_OK_PROGRAMS":
  32218.                     return l("final_single_driver_ok_programs_subtitle") + restartMessage;
  32219.  
  32220.                   case "SINGLE_DRIVER_OK":
  32221.                     return l("final_single_driver_ok_subtitle") + restartMessage;
  32222.  
  32223.                   case "PROGRAMS_ALL_FINISHED":
  32224.                     return _react2["default"].DOM.span({
  32225.                         dangerouslySetInnerHTML: {
  32226.                             __html: nl("final_programs_all_finished_subtitle", "final_programs_all_finished_subtitle_n", finishedPrograms.length).replace("{{COUNT}}", finishedPrograms.length + restartMessage)
  32227.                         }
  32228.                     });
  32229.  
  32230.                   case "PROGRAMS_SOME_FINISHED":
  32231.                     return l("final_programs_some_finished_subtitle") + restartMessage;
  32232.  
  32233.                   case "PROGRAMS_ALL_FAILED":
  32234.                     return l("final_programs_all_failed_subtitle") + restartMessage;
  32235.  
  32236.                   case "SINGLE_PROGRAM_FINISHED":
  32237.                     return l("final_single_program_finished_subtitle") + restartMessage;
  32238.  
  32239.                   case "SINGLE_PROGRAM_FAILED":
  32240.                     return l("final_single_program_failed_subtitle") + restartMessage;
  32241.  
  32242.                   default:
  32243.                     return "";
  32244.                 }
  32245.             },
  32246.             renderStatusImage: function() {
  32247.                 switch (this.props.finalScreen.resultType) {
  32248.                   case "DRIVERS_OK_PROGRAMS":
  32249.                   case "DRIVERS_OK":
  32250.                   case "SINGLE_DRIVER_OK_PROGRAMS":
  32251.                   case "SINGLE_DRIVER_OK":
  32252.                   case "PROGRAMS_ALL_FINISHED":
  32253.                   case "SINGLE_PROGRAM_FINISHED":
  32254.                     return (0, _Img2["default"])({
  32255.                         src: "img/final/final_success@2x.png",
  32256.                         className: "final_main-image",
  32257.                         width: "132",
  32258.                         height: "132"
  32259.                     });
  32260.  
  32261.                   case "DRIVERS_BETTER":
  32262.                   case "SINGLE_DRIVER_BETTER":
  32263.                   case "PROGRAMS_SOME_FINISHED":
  32264.                     return (0, _Img2["default"])({
  32265.                         src: "img/final/final_partial-success@2x.png",
  32266.                         className: "final_main-image",
  32267.                         width: "132",
  32268.                         height: "132"
  32269.                     });
  32270.  
  32271.                   case "DRIVERS_NOT_BETTER":
  32272.                   case "SINGLE_DRIVER_NOT_BETTER":
  32273.                   case "PROGRAMS_ALL_FAILED":
  32274.                   case "SINGLE_PROGRAM_FAILED":
  32275.                     return (0, _Img2["default"])({
  32276.                         src: "img/final/final_failure@2x.png",
  32277.                         className: "final_main-image",
  32278.                         width: "132",
  32279.                         height: "132"
  32280.                     });
  32281.  
  32282.                   default:
  32283.                     return null;
  32284.                 }
  32285.             },
  32286.             harmfulProgramsAreInstalled: function() {
  32287.                 var protect = this.props.protect, installed = protect.apiData, harmfulPrograms = (0,
  32288.                 _driversPrograms.filterHarmfulPrograms)(installed);
  32289.                 return !(!harmfulPrograms || !harmfulPrograms.length);
  32290.             },
  32291.             isGameable: function() {
  32292.                 var _props3 = this.props, currentLanguage = _props3.currentLanguage, isGamer = _props3.isGamer;
  32293.                 return [].includes(currentLanguage) && isGamer;
  32294.             },
  32295.             renderCta: function() {
  32296.                 var _this2 = this, _props4 = this.props, isConnected = _props4.isConnected, finalScreen = _props4.finalScreen, settings = _props4.settings, installDrivers = _props4.installDrivers, repeatLastInstallation = _props4.repeatLastInstallation, resultType = finalScreen.resultType, missedDevices = finalScreen.missedDevices, protectEnabled = settings.general.settings.enableProtect.value, offlineConnected = window.delorean.isLocal && isConnected, buttonCaption = !offlineConnected && protectEnabled && !this.isGameable() ? this.harmfulProgramsAreInstalled() ? _react2["default"].DOM.div({
  32297.                     className: "final_main-btn-caption is-harmful"
  32298.                 }, (0, _Img2["default"])({
  32299.                     className: "final_main-btn-caption-icon",
  32300.                     src: "img/final/final_button-warning@2x.png"
  32301.                 }), _react2["default"].DOM.div({
  32302.                     className: "final_main-btn-caption-text"
  32303.                 }, l("final_main_remove_harmful_advice"))) : _react2["default"].DOM.div({
  32304.                     className: "final_main-btn-caption"
  32305.                 }, l("final_main_remove_harmful_caption")) : null, offlineReloadButton = offlineConnected ? _react2["default"].DOM.a({
  32306.                     href: "#",
  32307.                     onClick: function(e) {
  32308.                         e.preventDefault();
  32309.                         window.location.reload();
  32310.                     },
  32311.                     className: "final_main-btn"
  32312.                 }, l("final_main_offline_reload")) : null, nextScreen = !0 ? this.isGameable() ? "GAMES" : protectEnabled ? "PROTECT" : "PROGRAMS" : "PROGRAMS", next = _react2["default"].DOM.div({
  32313.                     className: "final_main-btn-wrapper"
  32314.                 }, _react2["default"].DOM.button({
  32315.                     onClick: function() {
  32316.                         _logs2["default"].info({
  32317.                             action: "final next clicked"
  32318.                         }, {}, "final:next:clicked");
  32319.                         _this2.openNextScreen(nextScreen);
  32320.                     },
  32321.                     className: "cta-green-btn cta-btn-59 final_main-cta"
  32322.                 }, l("final_main_next_btn"), (0, _Img2["default"])({
  32323.                     src: "img/final/final_main-cta-arrow@2x.png",
  32324.                     className: "final_main-cta-icon",
  32325.                     width: "6",
  32326.                     height: "9"
  32327.                 })), buttonCaption, offlineReloadButton), restart = _react2["default"].DOM.div({
  32328.                     className: "final_main-btn-wrapper"
  32329.                 }, _react2["default"].DOM.a({
  32330.                     href: "#",
  32331.                     onClick: function(e) {
  32332.                         e.preventDefault();
  32333.                         repeatLastInstallation();
  32334.                     },
  32335.                     className: "final_main-btn"
  32336.                 }, l("final_restart_installation_btn")), _react2["default"].DOM.a({
  32337.                     href: "#",
  32338.                     onClick: function(e) {
  32339.                         e.preventDefault();
  32340.                         _logs2["default"].info({
  32341.                             action: "final skip clicked"
  32342.                         }, {}, "final:skip:clicked");
  32343.                         _this2.openNextScreen(nextScreen);
  32344.                     },
  32345.                     className: "final_main-btn"
  32346.                 }, l("final_skip_btn")), buttonCaption, offlineReloadButton), installMissed = _react2["default"].DOM.div({
  32347.                     className: "final_main-btn-wrapper"
  32348.                 }, _react2["default"].DOM.button({
  32349.                     onClick: function() {
  32350.                         _logs2["default"].info("final install important drivers clicked", {}, "final:install:important:drivers:clicked");
  32351.                         installDrivers({
  32352.                             eventAction: "final install important drivers clicked"
  32353.                         });
  32354.                     },
  32355.                     className: "cta-green-btn cta-btn-59 final_main-cta"
  32356.                 }, l("final_install_required_drivers_btn")), _react2["default"].DOM.a({
  32357.                     href: "#",
  32358.                     onClick: function(e) {
  32359.                         e.preventDefault();
  32360.                         _logs2["default"].info({
  32361.                             action: "final skip clicked"
  32362.                         }, {}, "final:skip:clicked");
  32363.                         _this2.openNextScreen(nextScreen);
  32364.                     },
  32365.                     className: "final_main-btn"
  32366.                 }, l("final_skip_btn")), buttonCaption, offlineReloadButton);
  32367.                 switch (resultType) {
  32368.                   case "DRIVERS_OK_PROGRAMS":
  32369.                   case "DRIVERS_OK":
  32370.                   case "SINGLE_DRIVER_OK_PROGRAMS":
  32371.                   case "SINGLE_DRIVER_OK":
  32372.                   case "PROGRAMS_ALL_FINISHED":
  32373.                   case "PROGRAMS_SOME_FINISHED":
  32374.                   case "SINGLE_PROGRAM_FINISHED":
  32375.                     return next;
  32376.  
  32377.                   case "PROGRAMS_ALL_FAILED":
  32378.                   case "SINGLE_PROGRAM_FAILED":
  32379.                     return restart;
  32380.  
  32381.                   case "DRIVERS_BETTER":
  32382.                   case "SINGLE_DRIVER_BETTER":
  32383.                     return missedDevices.length ? installMissed : next;
  32384.  
  32385.                   case "DRIVERS_NOT_BETTER":
  32386.                   case "SINGLE_DRIVER_NOT_BETTER":
  32387.                     return missedDevices.length ? installMissed : restart;
  32388.  
  32389.                   default:
  32390.                     return null;
  32391.                 }
  32392.             },
  32393.             renderMainCell: function(nextScreen) {
  32394.                 var _props5 = this.props, installation = _props5.installation, openSystemMenu = _props5.openSystemMenu, currentLanguage = _props5.currentLanguage, rebootNeeded = installation.rebootNeeded, contentHeight = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) - 48;
  32395.                 return _react2["default"].DOM.td({
  32396.                     className: "final_main top-for-header"
  32397.                 }, _react2["default"].DOM.table({
  32398.                     className: "final_main-table",
  32399.                     style: {
  32400.                         height: contentHeight
  32401.                     }
  32402.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr({
  32403.                     className: "final_main-content",
  32404.                     style: {
  32405.                         height: contentHeight - 48
  32406.                     }
  32407.                 }, _react2["default"].DOM.td({
  32408.                     colSpan: "3"
  32409.                 }, _react2["default"].DOM.div({
  32410.                     className: "final_main-scrollabe",
  32411.                     style: {
  32412.                         height: contentHeight - 48
  32413.                     }
  32414.                 }, _react2["default"].DOM.table({
  32415.                     className: "final_main-scrollabe-table"
  32416.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr({
  32417.                     className: "final_main-scrollabe-table-cell"
  32418.                 }, _react2["default"].DOM.td(null, _react2["default"].DOM.div({
  32419.                     className: "final_main-title"
  32420.                 }, this.renderTitle()), _react2["default"].DOM.div({
  32421.                     className: "final_main-subtitle"
  32422.                 }, this.renderSubTitle()), this.renderStatusImage(), this.renderCta(), rebootNeeded ? _react2["default"].DOM.p(null, l("loading_reboot")) : null, !1 ? _react2["default"].DOM.embed({
  32423.                     src: this.getSoundName(),
  32424.                     autoStart: "true",
  32425.                     hidden: "true"
  32426.                 }) : null))))))), _react2["default"].DOM.tr({
  32427.                     className: "final_main-footer"
  32428.                 }, _react2["default"].DOM.td({
  32429.                     className: "final_footer-link-holder"
  32430.                 }, _react2["default"].DOM.a({
  32431.                     className: "final_footer-link",
  32432.                     href: "#",
  32433.                     onClick: function(e) {
  32434.                         e.preventDefault();
  32435.                         _logs2["default"].info({
  32436.                             action: "final footer device manager clicked"
  32437.                         }, {}, "final:footer:device:manager:clicked");
  32438.                         openSystemMenu("DEVICE_MANAGER", {
  32439.                             preventSendingEvent: !0
  32440.                         });
  32441.                     }
  32442.                 }, (0, _Img2["default"])({
  32443.                     className: "final_footer-link-icon",
  32444.                     src: "img/screens/icon-device-manager.png",
  32445.                     width: "13",
  32446.                     height: "13"
  32447.                 }), _react2["default"].DOM.span({
  32448.                     className: "final_footer-link-text"
  32449.                 }, l("zero-drivers_footer_device-manager")))), _react2["default"].DOM.td({
  32450.                     className: "final_footer-link-holder"
  32451.                 }, _react2["default"].DOM.a({
  32452.                     className: "final_footer-link",
  32453.                     href: "#",
  32454.                     onClick: function(e) {
  32455.                         e.preventDefault();
  32456.                         _logs2["default"].info({
  32457.                             action: "final footer support clicked"
  32458.                         }, {}, "final:footer:support:clicked");
  32459.                         openSystemMenu("FEEDBACK", {
  32460.                             preventSendingEvent: !0,
  32461.                             lang: currentLanguage
  32462.                         });
  32463.                     }
  32464.                 }, (0, _Img2["default"])({
  32465.                     className: "final_footer-link-icon",
  32466.                     src: "img/screens/icon-support.png",
  32467.                     width: "13",
  32468.                     height: "13"
  32469.                 }), _react2["default"].DOM.span({
  32470.                     className: "final_footer-link-text"
  32471.                 }, l("zero-drivers_footer_support")))), _react2["default"].DOM.td({
  32472.                     className: "final_footer-link-holder"
  32473.                 }, _react2["default"].DOM.a({
  32474.                     className: "final_footer-link",
  32475.                     href: "#",
  32476.                     onClick: function(e) {
  32477.                         e.preventDefault();
  32478.                         _logs2["default"].info({
  32479.                             action: "final footer system restore clicked"
  32480.                         }, {}, "final:footer:system:restore:clicked");
  32481.                         openSystemMenu("RECOVERY", {
  32482.                             preventSendingEvent: !0
  32483.                         });
  32484.                     }
  32485.                 }, (0, _Img2["default"])({
  32486.                     className: "final_footer-link-icon",
  32487.                     src: "img/screens/icon-system-restore.png",
  32488.                     width: "13",
  32489.                     height: "13"
  32490.                 }), _react2["default"].DOM.span({
  32491.                     className: "final_footer-link-text"
  32492.                 }, l("zero-drivers_footer_system-restore"))))))));
  32493.             },
  32494.             renderFinishedDevices: function() {
  32495.                 var _this3 = this, _props6 = this.props, finalScreen = _props6.finalScreen, currentLanguage = _props6.currentLanguage, finishedDevices = finalScreen.finishedDevices;
  32496.                 return finishedDevices && finishedDevices.length ? _react2["default"].DOM.div({
  32497.                     className: "final_aside-block",
  32498.                     style: {
  32499.                         zIndex: "6"
  32500.                     }
  32501.                 }, _react2["default"].DOM.div({
  32502.                     className: "final_aside-block-list is-success"
  32503.                 }, _react2["default"].DOM.div({
  32504.                     className: "final_aside-title",
  32505.                     dangerouslySetInnerHTML: {
  32506.                         __html: nl("final_aside_installed_drivers_title", "final_aside_installed_drivers_title_n", finishedDevices.length).replace("{{COUNT}}", finishedDevices.length)
  32507.                     }
  32508.                 }), finishedDevices.map(function(device, index) {
  32509.                     var _device$recommendedDr = device.recommendedDriver, deviceClass = _device$recommendedDr["class"], _device$recommendedDr2 = _device$recommendedDr.manufacturer, manufacturer = _device$recommendedDr2 === undefined ? "" : _device$recommendedDr2, deviceClassName = (0,
  32510.                     _deviceClasses2["default"])(l)[deviceClass].morpher.single.main, deviceName = deviceClassName + " " + (0,
  32511.                     _trimVendorName2["default"])(manufacturer, "", !1);
  32512.                     return _react2["default"].DOM.div({
  32513.                         className: "final_aside-list-item",
  32514.                         onMouseEnter: function(e) {
  32515.                             return _this3.handleFinishedItemHover(e, device);
  32516.                         },
  32517.                         onMouseLeave: function(e) {
  32518.                             return _this3.handleFinishedItemHover(e, device, {
  32519.                                 isLeaving: !0
  32520.                             });
  32521.                         },
  32522.                         style: {
  32523.                             zIndex: finishedDevices.length - index
  32524.                         }
  32525.                     }, "• ", deviceName, device.popoverIsOpened ? (0, _FinalPopover2["default"])({
  32526.                         item: device,
  32527.                         currentLanguage: currentLanguage
  32528.                     }) : null);
  32529.                 }))) : null;
  32530.             },
  32531.             renderFailedDevices: function() {
  32532.                 var _props7 = this.props, finalScreen = _props7.finalScreen, openSystemMenu = _props7.openSystemMenu, failedDevices = finalScreen.failedDevices;
  32533.                 return failedDevices && failedDevices.length ? _react2["default"].DOM.div({
  32534.                     className: "final_aside-block",
  32535.                     style: {
  32536.                         zIndex: "5"
  32537.                     }
  32538.                 }, _react2["default"].DOM.div({
  32539.                     className: "final_aside-block-list is-fail"
  32540.                 }, _react2["default"].DOM.div({
  32541.                     className: "final_aside-title"
  32542.                 }, (0, _Img2["default"])({
  32543.                     src: "img/final/final_aside-failure@2x.png",
  32544.                     width: "14",
  32545.                     height: "13",
  32546.                     className: "final_aside-title-icon"
  32547.                 }), l("final_some_drivers_not_installed")), failedDevices.map(function(device) {
  32548.                     var _device$recommendedDr3 = device.recommendedDriver, deviceClass = _device$recommendedDr3["class"], _device$recommendedDr4 = _device$recommendedDr3.manufacturer, manufacturer = _device$recommendedDr4 === undefined ? "" : _device$recommendedDr4, deviceClassName = (0,
  32549.                     _deviceClasses2["default"])(l)[deviceClass].morpher.single.main, deviceName = deviceClassName + " " + (0,
  32550.                     _trimVendorName2["default"])(manufacturer, "", !1);
  32551.                     return _react2["default"].DOM.div({
  32552.                         className: "final_aside-list-item"
  32553.                     }, "• ", deviceName);
  32554.                 })), _react2["default"].DOM.a({
  32555.                     href: "#",
  32556.                     onClick: function(e) {
  32557.                         e.preventDefault();
  32558.                         _logs2["default"].info({
  32559.                             action: "final rollback drivers clicked"
  32560.                         }, {}, "final:rollback:drivers:clicked");
  32561.                         openSystemMenu("RECOVERY", {
  32562.                             preventSendingEvent: !0
  32563.                         });
  32564.                     },
  32565.                     className: "final_aside-btn"
  32566.                 }, _react2["default"].DOM.img({
  32567.                     src: "img/blank.gif",
  32568.                     className: "final_aside-btn-bg"
  32569.                 }), l("final_rollback_drivers"))) : null;
  32570.             },
  32571.             renderMissedDevices: function() {
  32572.                 var finalScreen = this.props.finalScreen, missedDevices = finalScreen.missedDevices;
  32573.                 return missedDevices && missedDevices.length ? _react2["default"].DOM.div({
  32574.                     className: "final_aside-block",
  32575.                     style: {
  32576.                         zIndex: "4"
  32577.                     }
  32578.                 }, _react2["default"].DOM.div({
  32579.                     className: "final_aside-block-list is-fail"
  32580.                 }, _react2["default"].DOM.div({
  32581.                     className: "final_aside-title"
  32582.                 }, (0, _Img2["default"])({
  32583.                     src: "img/final/final_aside-failure@2x.png",
  32584.                     width: "14",
  32585.                     height: "13",
  32586.                     className: "final_aside-title-icon"
  32587.                 }), l("final_required_drivers_not_installed")), missedDevices.map(function(device) {
  32588.                     var _device$recommendedDr5 = device.recommendedDriver, deviceClass = _device$recommendedDr5["class"], _device$recommendedDr6 = _device$recommendedDr5.manufacturer, manufacturer = _device$recommendedDr6 === undefined ? "" : _device$recommendedDr6, deviceClassName = (0,
  32589.                     _deviceClasses2["default"])(l)[deviceClass].morpher.single.main, deviceName = deviceClassName + " " + (0,
  32590.                     _trimVendorName2["default"])(manufacturer, "", !1);
  32591.                     return _react2["default"].DOM.div({
  32592.                         className: "final_aside-list-item"
  32593.                     }, "• ", deviceName);
  32594.                 }))) : null;
  32595.             },
  32596.             renderFinishedPrograms: function() {
  32597.                 var _this4 = this, _props8 = this.props, finalScreen = _props8.finalScreen, installation = _props8.installation, settings = _props8.settings, currentLanguage = _props8.currentLanguage, finishedPrograms = finalScreen.finishedPrograms, itemsContainDrivers = installation.itemsContainDrivers;
  32598.                 return finishedPrograms && finishedPrograms.length ? _react2["default"].DOM.div({
  32599.                     className: "final_aside-block",
  32600.                     style: {
  32601.                         zIndex: "3"
  32602.                     }
  32603.                 }, _react2["default"].DOM.div({
  32604.                     className: "final_aside-block-list is-success"
  32605.                 }, _react2["default"].DOM.div({
  32606.                     className: "final_aside-title",
  32607.                     dangerouslySetInnerHTML: {
  32608.                         __html: nl("final_programs_all_finished_subtitle", "final_programs_all_finished_subtitle_n", finishedPrograms.length).replace("{{COUNT}}", finishedPrograms.length)
  32609.                     }
  32610.                 }), finishedPrograms.map(function(program, index) {
  32611.                     return _react2["default"].DOM.div({
  32612.                         className: "final_aside-list-item",
  32613.                         onMouseEnter: function(e) {
  32614.                             return _this4.handleFinishedItemHover(e, program);
  32615.                         },
  32616.                         onMouseLeave: function(e) {
  32617.                             return _this4.handleFinishedItemHover(e, program, {
  32618.                                 isLeaving: !0
  32619.                             });
  32620.                         },
  32621.                         style: {
  32622.                             zIndex: finishedPrograms.length - index
  32623.                         }
  32624.                     }, "• ", program.name, program.popoverIsOpened ? (0, _FinalPopover2["default"])({
  32625.                         item: program,
  32626.                         currentLanguage: currentLanguage
  32627.                     }) : null);
  32628.                 })), itemsContainDrivers ? _react2["default"].DOM.div({
  32629.                     className: "final_aside-block-list"
  32630.                 }, l("final_aside_installed_drivers_caption")) : null, settings.general.settings.enableProtect.value ? _react2["default"].DOM.a({
  32631.                     href: "#",
  32632.                     onClick: function(e) {
  32633.                         e.preventDefault();
  32634.                         _logs2["default"].info({
  32635.                             action: "final remove harmful programs clicked"
  32636.                         }, {}, "final:remove:harmful:programs:clicked");
  32637.                         _this4.openNextScreen("PROTECT");
  32638.                     },
  32639.                     className: "final_aside-btn"
  32640.                 }, l("final_aside_remove_harmful_programs")) : _react2["default"].DOM.a({
  32641.                     href: "#",
  32642.                     onClick: function(e) {
  32643.                         e.preventDefault();
  32644.                         _logs2["default"].info({
  32645.                             action: "final install more programs clicked"
  32646.                         }, {}, "final:install:more:programs:clicked");
  32647.                         _this4.openNextScreen("PROGRAMS");
  32648.                     },
  32649.                     className: "final_aside-btn"
  32650.                 }, l("final_aside_install_additional_programs"))) : null;
  32651.             },
  32652.             renderFailedPrograms: function() {
  32653.                 var finalScreen = this.props.finalScreen, failedPrograms = finalScreen.failedPrograms;
  32654.                 return failedPrograms && failedPrograms.length ? _react2["default"].DOM.div({
  32655.                     className: "final_aside-block",
  32656.                     style: {
  32657.                         zIndex: "2"
  32658.                     }
  32659.                 }, _react2["default"].DOM.div({
  32660.                     className: "final_aside-block-list"
  32661.                 }, _react2["default"].DOM.div({
  32662.                     className: "final_aside-title"
  32663.                 }, l("final_aside_some_programs_not_installed")), failedPrograms.map(function(program) {
  32664.                     return _react2["default"].DOM.div({
  32665.                         className: "final_aside-list-item"
  32666.                     }, "• ", program.name);
  32667.                 }))) : null;
  32668.             },
  32669.             renderAsideCell: function() {
  32670.                 var _props9 = this.props, drivers = _props9.drivers, installation = _props9.installation, brokenDevices = drivers.brokenDevices, itemsContainDrivers = installation.itemsContainDrivers, contentHeight = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) - 48;
  32671.                 return _react2["default"].DOM.td({
  32672.                     className: "final_aside top-for-header"
  32673.                 }, _react2["default"].DOM.div({
  32674.                     className: "final_aside-scrollabe",
  32675.                     style: {
  32676.                         height: contentHeight
  32677.                     }
  32678.                 }, this.renderFinishedDevices(), this.renderFailedDevices(), this.renderMissedDevices(), this.renderFinishedPrograms(), this.renderFailedPrograms(), brokenDevices.length && itemsContainDrivers ? _react2["default"].DOM.div({
  32679.                     className: "final_aside-block",
  32680.                     style: {
  32681.                         zIndex: "1"
  32682.                     }
  32683.                 }, _react2["default"].DOM.div({
  32684.                     className: "final_aside-block-list"
  32685.                 }, _react2["default"].DOM.div({
  32686.                     className: "final_aside-title"
  32687.                 }, l("final_aside_broken_devices_title")), l("final_aside_broken_devices_caption"))) : null));
  32688.             },
  32689.             handleFinishedItemHover: function(e, item) {
  32690.                 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  32691.                 e.stopPropagation();
  32692.                 this.props.hoverFinishedItem(item, options.isLeaving);
  32693.             },
  32694.             openNextScreen: function(nextScreen) {
  32695.                 var navigate = this.props.navigate;
  32696.                 document.activeElement && document.activeElement.blur();
  32697.                 if (_systemScanner2["default"].lastScanError) {
  32698.                     var err = _systemScanner2["default"].lastScanError;
  32699.                     if ("HttpError" === err.type && "status" in err) {
  32700.                         (0, _logs.log)("[SystemScanner] screen opened NoInternet", err);
  32701.                         _statistics2["default"].event({
  32702.                             action: "Screen opened NoInternet"
  32703.                         });
  32704.                         window.store.dispatch({
  32705.                             type: "NO_INTERNET_DETECTED"
  32706.                         });
  32707.                     } else {
  32708.                         (0, _logs.log)("DriverPack running failed", err);
  32709.                         window.store.dispatch({
  32710.                             type: "RUN_ERROR_DETECTED"
  32711.                         });
  32712.                         throw err;
  32713.                     }
  32714.                 } else navigate(nextScreen);
  32715.             },
  32716.             render: function() {
  32717.                 var _props10 = this.props, installation = _props10.installation, finalScreen = _props10.finalScreen, result = installation.result, resultType = finalScreen.resultType, nextScreen = void 0;
  32718.                 switch (result) {
  32719.                   case "DRIVERS_DONE":
  32720.                     nextScreen = _settings2["default"].get("general.enableProtect").value ? "PROTECT" : "DRIVERS";
  32721.                     break;
  32722.  
  32723.                   case "PROGRAMS_DONE":
  32724.                     nextScreen = _settings2["default"].get("general.enableProtect").value ? "PROTECT" : "PROGRAMS";
  32725.                 }
  32726.                 return resultType ? _react2["default"].DOM.table({
  32727.                     className: "final_wrapper"
  32728.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr({
  32729.                     className: "final_wrapper-fullscreen"
  32730.                 }, this.renderMainCell(nextScreen), this.renderAsideCell()))) : null;
  32731.             }
  32732.         }), actions = {
  32733.             navigate: _menuActions.navigate,
  32734.             openSystemMenu: _menuActions.openSystemMenu,
  32735.             getInstallationResult: _finalActions.getInstallationResult,
  32736.             repeatLastInstallation: _finalActions.repeatLastInstallation,
  32737.             checkConnection: _appActions.checkConnection,
  32738.             checkGamer: _appActions.checkGamer,
  32739.             loadDiagnosticInfo: _diagnosticsActions.loadDiagnosticInfo,
  32740.             installDrivers: _driversActions.installDrivers,
  32741.             hoverFinishedItem: _finalActions.hoverFinishedItem
  32742.         };
  32743.         exports["default"] = (0, _connect2["default"])(mapState, actions)(FinalScreen);
  32744.         module.exports = exports["default"];
  32745.     }).call(exports, __webpack_require__(6), __webpack_require__(321));
  32746. }, function(module, exports, __webpack_require__) {
  32747.     "use strict";
  32748.     exports.__esModule = !0;
  32749.     var _FinalScreen = __webpack_require__(681), _FinalScreen2 = function(obj) {
  32750.         return obj && obj.__esModule ? obj : {
  32751.             "default": obj
  32752.         };
  32753.     }(_FinalScreen);
  32754.     exports["default"] = _FinalScreen2["default"];
  32755.     module.exports = exports["default"];
  32756. }, function(module, exports, __webpack_require__) {
  32757.     "use strict";
  32758.     (function(l) {
  32759.         function _interopRequireDefault(obj) {
  32760.             return obj && obj.__esModule ? obj : {
  32761.                 "default": obj
  32762.             };
  32763.         }
  32764.         function mapState(state) {
  32765.             return {
  32766.                 topGamesList: state.games.topGamesList,
  32767.                 playkeyInstalled: state.games.playkeyInstalled,
  32768.                 playkeyInstalling: state.games.playkeyInstalling
  32769.             };
  32770.         }
  32771.         exports.__esModule = !0;
  32772.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _partition2 = __webpack_require__(516), _partition3 = _interopRequireDefault(_partition2), _gamesActions = __webpack_require__(665), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  32773.         __webpack_require__(783);
  32774.         var GamesScreen = _react2["default"].createClass({
  32775.             displayName: "GamesScreen",
  32776.             mixins: [ __webpack_require__(5) ],
  32777.             propTypes: {
  32778.                 page: _react.PropTypes.string.isRequired,
  32779.                 currentLanguage: _react.PropTypes.string.isRequired,
  32780.                 loadGamesList: _react.PropTypes.func.isRequired,
  32781.                 checkPlaykey: _react.PropTypes.func.isRequired,
  32782.                 hoverGame: _react.PropTypes.func.isRequired,
  32783.                 openURL: _react.PropTypes.func.isRequired,
  32784.                 installPlaykeyAndGo: _react.PropTypes.func.isRequired,
  32785.                 playkeyInstalling: _react.PropTypes.bool.isRequired,
  32786.                 playkeyInstalled: _react.PropTypes.bool.isRequired
  32787.             },
  32788.             componentDidMount: function() {
  32789.                 var _props = this.props, loadGamesList = _props.loadGamesList, checkPlaykey = _props.checkPlaykey;
  32790.                 loadGamesList();
  32791.                 checkPlaykey();
  32792.             },
  32793.             handleMouseMove: function(e, id) {
  32794.                 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  32795.                 (0, this.props.hoverGame)(id, options.isLeaving);
  32796.             },
  32797.             renderGamesList: function(gamesList) {
  32798.                 var _this = this, _props2 = this.props, openURL = _props2.openURL, installPlaykeyAndGo = _props2.installPlaykeyAndGo, playkeyInstalled = _props2.playkeyInstalled;
  32799.                 return gamesList.map(function(game) {
  32800.                     var id = game.id, name = game.name, isFreeDemo = game.isFreeDemo, url = game.url, image = game.image, originalSeller = game.originalSeller, isHovered = game.isHovered, barText = !isHovered ? name : isFreeDemo ? l("games_top_game_free_demo") : l("games_top_game_free_paid").replace("{{SELLER}}", originalSeller);
  32801.                     return _react2["default"].DOM.li({
  32802.                         className: "games_top-game " + (game.isTopGame ? "is-top" : null) + " " + (isHovered ? "games_top-game-hovered" : "") + " ie_inline-block",
  32803.                         onMouseEnter: function(e) {
  32804.                             return _this.handleMouseMove(e, id);
  32805.                         },
  32806.                         onMouseLeave: function(e) {
  32807.                             return _this.handleMouseMove(e, id, {
  32808.                                 isLeaving: !0
  32809.                             });
  32810.                         },
  32811.                         onClick: function(e) {
  32812.                             e.stopPropagation();
  32813.                             e.preventDefault();
  32814.                             _logs2["default"].info({
  32815.                                 action: "games top clicked " + name.toLowerCase()
  32816.                             }, {}, "games:top:clicked:" + name.toLowerCase());
  32817.                             playkeyInstalled ? openURL(url) : installPlaykeyAndGo(url);
  32818.                         }
  32819.                     }, _react2["default"].DOM.div({
  32820.                         className: "games_top-game-overlay"
  32821.                     }), _react2["default"].DOM.div({
  32822.                         className: "games_top-game-bar"
  32823.                     }), _react2["default"].DOM.div({
  32824.                         className: "games_top-game-bar-text " + (isFreeDemo || !isHovered ? "" : "games_top-game-bar-text-paid")
  32825.                     }, barText), _react2["default"].DOM.div({
  32826.                         className: "games_top-game-bar-button"
  32827.                     }, game.isTopGame ? "Попробовать бесплатно" : l("games_top_game_play")), (0, _Img2["default"])({
  32828.                         src: image,
  32829.                         className: "games_top-game-image"
  32830.                     }));
  32831.                 });
  32832.             },
  32833.             render: function() {
  32834.                 var _props3 = this.props, page = _props3.page, topGamesList = _props3.topGamesList, openURL = _props3.openURL, playkeyInstalling = _props3.playkeyInstalling, hideComponent = "GAMES" !== page, _partition = (0,
  32835.                 _partition3["default"])(topGamesList, function(game) {
  32836.                     return game.isTopGame;
  32837.                 }), topGamesPart = _partition[0], otherGamesPart = _partition[1];
  32838.                 return _react2["default"].DOM.td({
  32839.                     className: (hideComponent ? "display-none" : "") + " games-screen__wrapper"
  32840.                 }, playkeyInstalling ? _react2["default"].DOM.div({
  32841.                     className: "games_top-spinner-overlay"
  32842.                 }, (0, _Img2["default"])({
  32843.                     src: "img/loading.gif",
  32844.                     className: "games_top-spinner",
  32845.                     style: {
  32846.                         marginTop: (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) / 2
  32847.                     },
  32848.                     width: "32",
  32849.                     height: "32"
  32850.                 })) : null, _react2["default"].DOM.h1({
  32851.                     className: "games_title",
  32852.                     dangerouslySetInnerHTML: {
  32853.                         __html: l("games_playkey_top_title")
  32854.                     }
  32855.                 }), _react2["default"].DOM.ul({
  32856.                     className: "games_top-list"
  32857.                 }, _react2["default"].DOM.h3({
  32858.                     className: "games_top-list-title"
  32859.                 }, "Попробуйте бесплатные демо-версии"), _react2["default"].DOM.div({
  32860.                     className: "games_top-game-list"
  32861.                 }, this.renderGamesList(topGamesPart)), _react2["default"].DOM.h3({
  32862.                     className: "games_top-list-title"
  32863.                 }, "Другие игры"), _react2["default"].DOM.div({
  32864.                     className: "games_top-game-list"
  32865.                 }, this.renderGamesList(otherGamesPart))), _react2["default"].DOM.a({
  32866.                     className: "games_top-catalog-button",
  32867.                     href: "#",
  32868.                     onClick: function(e) {
  32869.                         e.stopPropagation();
  32870.                         e.preventDefault();
  32871.                         _logs2["default"].info({
  32872.                             action: "games catalog clicked"
  32873.                         }, {}, "games:catalog:clicked");
  32874.                         openURL("https://playkey.net/ru/games/?utm_source=driverpack&utm_medium=referral&utm_campaign=Games");
  32875.                     }
  32876.                 }, (0, _Img2["default"])({
  32877.                     src: "img/games/games-button-icon-green.png",
  32878.                     className: "games_top-catalog-button-icon",
  32879.                     width: "19",
  32880.                     height: "19"
  32881.                 }), (0, _Img2["default"])({
  32882.                     src: "img/games/games-button-icon-white.png",
  32883.                     className: "games_top-catalog-button-icon-hovered",
  32884.                     width: "19",
  32885.                     height: "19"
  32886.                 }), _react2["default"].DOM.span({
  32887.                     className: "games_top-catalog-button-text"
  32888.                 }, l("games_playkey_open_catalog_button"))), _react2["default"].DOM.h1({
  32889.                     className: "games_title",
  32890.                     dangerouslySetInnerHTML: {
  32891.                         __html: l("games_playkey_cloud_title")
  32892.                     }
  32893.                 }), _react2["default"].DOM.div({
  32894.                     className: "games_cloud-img-wrap"
  32895.                 }, _react2["default"].DOM.span({
  32896.                     className: "games_cloud-img-pc-caption"
  32897.                 }, l("games_playkey_cloud_img_pc_caption")), _react2["default"].DOM.span({
  32898.                     className: "games_cloud-img-cloud-caption"
  32899.                 }, l("games_playkey_cloud_img_cloud_caption")), _react2["default"].DOM.span({
  32900.                     className: "games_cloud-img-server-caption"
  32901.                 }, l("games_playkey_cloud_img_server_caption")), _react2["default"].DOM.span({
  32902.                     className: "games_cloud-img-joystick-caption"
  32903.                 }, l("games_playkey_cloud_img_joystick_caption")), (0, _Img2["default"])({
  32904.                     src: "img/games/games-cloud.png",
  32905.                     className: "games_cloud-img",
  32906.                     width: "613",
  32907.                     height: "407"
  32908.                 }), (0, _Img2["default"])({
  32909.                     src: "img/games/games-cloud-big.png",
  32910.                     className: "games_cloud-img-big",
  32911.                     width: "944",
  32912.                     height: "496"
  32913.                 })), _react2["default"].DOM.a({
  32914.                     className: "games_account-button",
  32915.                     href: "#",
  32916.                     onClick: function(e) {
  32917.                         e.stopPropagation();
  32918.                         e.preventDefault();
  32919.                         _logs2["default"].info({
  32920.                             action: "games create account clicked"
  32921.                         }, {}, "games:create:account:clicked");
  32922.                         openURL("https://playkey.net/ru/reg/?utm_source=driverpack&utm_medium=referral&utm_term=reg&utm_campaign=driverpack");
  32923.                     }
  32924.                 }, (0, _Img2["default"])({
  32925.                     src: "img/games/games-button-icon-white.png",
  32926.                     className: "games_account-button-icon",
  32927.                     width: "19",
  32928.                     height: "19"
  32929.                 }), _react2["default"].DOM.span({
  32930.                     className: "games_account-button-text"
  32931.                 }, l("games_playkey_create_account_button"))), (0, _Img2["default"])({
  32932.                     src: "img/games/games-bottom-logo.png",
  32933.                     className: "games_bottom-logo",
  32934.                     width: "193",
  32935.                     height: "55"
  32936.                 }));
  32937.             }
  32938.         }), actions = {
  32939.             loadGamesList: _gamesActions.loadGamesList,
  32940.             checkPlaykey: _gamesActions.checkPlaykey,
  32941.             hoverGame: _gamesActions.hoverGame,
  32942.             openURL: _gamesActions.openURL,
  32943.             installPlaykeyAndGo: _gamesActions.installPlaykeyAndGo
  32944.         };
  32945.         exports["default"] = (0, _connect2["default"])(mapState, actions)(GamesScreen);
  32946.         module.exports = exports["default"];
  32947.     }).call(exports, __webpack_require__(6));
  32948. }, function(module, exports, __webpack_require__) {
  32949.     "use strict";
  32950.     exports.__esModule = !0;
  32951.     exports["default"] = undefined;
  32952.     var _GamesScreen = __webpack_require__(683), _GamesScreen2 = function(obj) {
  32953.         return obj && obj.__esModule ? obj : {
  32954.             "default": obj
  32955.         };
  32956.     }(_GamesScreen);
  32957.     exports["default"] = _GamesScreen2["default"];
  32958.     module.exports = exports["default"];
  32959. }, function(module, exports, __webpack_require__) {
  32960.     "use strict";
  32961.     (function(l) {
  32962.         function _interopRequireDefault(obj) {
  32963.             return obj && obj.__esModule ? obj : {
  32964.                 "default": obj
  32965.             };
  32966.         }
  32967.         exports.__esModule = !0;
  32968.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _ps = __webpack_require__(89), _ps2 = _interopRequireDefault(_ps), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _logs = __webpack_require__(3), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _appActions = __webpack_require__(123), _getInternetExplorerVersion = __webpack_require__(100), _getInternetExplorerVersion2 = _interopRequireDefault(_getInternetExplorerVersion), internetExplorerVersion = (0,
  32969.         _getInternetExplorerVersion2["default"])();
  32970.         __webpack_require__(784);
  32971.         var Header = _react2["default"].createClass({
  32972.             displayName: "Header",
  32973.             mixins: [ __webpack_require__(5) ],
  32974.             propTypes: {
  32975.                 children: _react.PropTypes.any,
  32976.                 currentLanguage: _react.PropTypes.string.isRequired,
  32977.                 toggleBurgerMenu: _react.PropTypes.func.isRequired,
  32978.                 minimizeWindow: _react.PropTypes.func.isRequired,
  32979.                 maximizeWindow: _react.PropTypes.func.isRequired,
  32980.                 closeWindow: _react.PropTypes.func.isRequired,
  32981.                 startWindowDragging: _react.PropTypes.func.isRequired,
  32982.                 page: _react.PropTypes.string.isRequired,
  32983.                 app: _react.PropTypes.object.isRequired,
  32984.                 loading: _react.PropTypes.object.isRequired,
  32985.                 authorize: _react.PropTypes.func.isRequired,
  32986.                 unauthorize: _react.PropTypes.func.isRequired
  32987.             },
  32988.             shouldFixHoverIcon: function() {
  32989.                 if (-1 !== internetExplorerVersion) if (internetExplorerVersion < 10) return !0; else return !1; else return !1;
  32990.             },
  32991.             render: function() {
  32992.                 var _this = this, _props = this.props, toggleBurgerMenu = _props.toggleBurgerMenu, minimizeWindow = _props.minimizeWindow, maximizeWindow = _props.maximizeWindow, closeWindow = _props.closeWindow, startWindowDragging = _props.startWindowDragging, page = _props.page, app = _props.app, loading = _props.loading, user = app.user, now = loading.now;
  32993.                 return "LOADING" !== page && "LOADING_SCREEN" !== page || "NO_INTERNET" === now || "RUN_ERROR" === now ? _react2["default"].DOM.table({
  32994.                     className: "header " + ("INSTALLATION" === page ? "header_installation" : "")
  32995.                 }, _react2["default"].DOM.tr({
  32996.                     onMouseDown: function(e) {
  32997.                         e.stopPropagation();
  32998.                         startWindowDragging(e);
  32999.                     },
  33000.                     onDoubleClick: function(e) {
  33001.                         e.preventDefault();
  33002.                         maximizeWindow();
  33003.                     }
  33004.                 }, _react2["default"].DOM.td({
  33005.                     className: "header_logo"
  33006.                 }, "``", _react2["default"].DOM.div({
  33007.                     className: "header_logo-img",
  33008.                     alt: "DriverPack Solution"
  33009.                 })), _react2["default"].DOM.td({
  33010.                     className: "header_controls"
  33011.                 }, -1 === [ "START" ].indexOf(page) ? user.profile ? _react2["default"].DOM.a({
  33012.                     href: "#",
  33013.                     className: "header_controls-btn header_auth-link",
  33014.                     onClick: function(e) {
  33015.                         _this.handleUnauthorizeClick(e);
  33016.                     },
  33017.                     onMouseDown: function(e) {
  33018.                         return e.stopPropagation();
  33019.                     }
  33020.                 }, user.profile.email) : _react2["default"].DOM.a({
  33021.                     href: "#",
  33022.                     className: "header_controls-btn header_auth-link",
  33023.                     onMouseDown: function(e) {
  33024.                         return e.stopPropagation();
  33025.                     },
  33026.                     onClick: function(e) {
  33027.                         _this.handleAuthorizeClick(e);
  33028.                     }
  33029.                 }, l("header_authorize_button")) : null, -1 === [ "LOADING", "FINAL_SCREEN" ].indexOf(page) ? _react2["default"].DOM.a({
  33030.                     href: "#",
  33031.                     className: "header_controls-btn icons-controls header_controls-btn--burger header_controls-btn--icon " + (app.isBurgerMenuOpened ? "active" : ""),
  33032.                     onMouseDown: function(e) {
  33033.                         e.stopPropagation();
  33034.                         e.preventDefault();
  33035.                         toggleBurgerMenu({
  33036.                             eventAction: "burgermenu clicked",
  33037.                             eventNamespace: "burgermenu:clicked"
  33038.                         });
  33039.                     }
  33040.                 }, "☰") : null, _ps2["default"].available ? _react2["default"].DOM.a({
  33041.                     href: "#",
  33042.                     className: "header_controls-btn icons-controls header_controls-btn--icon",
  33043.                     onMouseDown: function(e) {
  33044.                         e.stopPropagation();
  33045.                         e.preventDefault();
  33046.                         minimizeWindow();
  33047.                     }
  33048.                 }, "⚊") : null, _react2["default"].DOM.a({
  33049.                     href: "#",
  33050.                     className: "header_controls-btn icons-controls header_controls-btn--icon",
  33051.                     onClick: function(e) {
  33052.                         e.preventDefault();
  33053.                         maximizeWindow();
  33054.                     },
  33055.                     onMouseDown: function(e) {
  33056.                         return e.stopPropagation();
  33057.                     }
  33058.                 }, "maximized" === app.windowState ? _react2["default"].DOM.span(null, "") : _react2["default"].DOM.span(null, "◻")), _react2["default"].DOM.a({
  33059.                     href: "#",
  33060.                     className: "header_controls-btn icons-controls header_controls-btn--icon",
  33061.                     onClick: function(e) {
  33062.                         e.stopPropagation();
  33063.                         e.preventDefault();
  33064.                         closeWindow();
  33065.                     }
  33066.                 }, "✖")))) : null;
  33067.             },
  33068.             handleAuthorizeClick: function(e) {
  33069.                 e.stopPropagation();
  33070.                 e.preventDefault();
  33071.                 var authorize = this.props.authorize;
  33072.                 _statistics2["default"].event({
  33073.                     action: "auth authorize clicked"
  33074.                 });
  33075.                 (0, _logs.log)("[auth] authorize clicked");
  33076.                 authorize();
  33077.             },
  33078.             handleUnauthorizeClick: function(e) {
  33079.                 e.preventDefault();
  33080.                 var unauthorize = this.props.unauthorize;
  33081.                 _statistics2["default"].event({
  33082.                     action: "auth unauthorize clicked"
  33083.                 });
  33084.                 (0, _logs.log)("[auth] unauthorize clicked");
  33085.                 if (window.confirm(l("authorize_popup_logout_button"))) {
  33086.                     _statistics2["default"].event({
  33087.                         action: "auth unauthorize confirm ok"
  33088.                     });
  33089.                     (0, _logs.log)("[auth] unauthorize confirm ok");
  33090.                     unauthorize();
  33091.                 } else {
  33092.                     _statistics2["default"].event({
  33093.                         action: "auth unauthorize confirm cancel"
  33094.                     });
  33095.                     (0, _logs.log)("[auth] unauthorize confirm cancel");
  33096.                 }
  33097.             }
  33098.         }), mapState = function(state) {
  33099.             return {
  33100.                 page: state.page,
  33101.                 app: state.app,
  33102.                 loading: state.loading
  33103.             };
  33104.         }, actions = {
  33105.             toggleBurgerMenu: _appActions.toggleBurgerMenu,
  33106.             minimizeWindow: _appActions.minimizeWindow,
  33107.             maximizeWindow: _appActions.maximizeWindow,
  33108.             closeWindow: _appActions.closeWindow,
  33109.             startWindowDragging: _appActions.startWindowDragging,
  33110.             authorize: _appActions.authorize,
  33111.             unauthorize: _appActions.unauthorize
  33112.         };
  33113.         exports["default"] = (0, _connect2["default"])(mapState, actions)(Header);
  33114.         module.exports = exports["default"];
  33115.     }).call(exports, __webpack_require__(6));
  33116. }, function(module, exports, __webpack_require__) {
  33117.     "use strict";
  33118.     (function(l) {
  33119.         function _interopRequireDefault(obj) {
  33120.             return obj && obj.__esModule ? obj : {
  33121.                 "default": obj
  33122.             };
  33123.         }
  33124.         exports.__esModule = !0;
  33125.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _deviceClasses = __webpack_require__(184), _deviceClasses2 = _interopRequireDefault(_deviceClasses), _SoftCategories = __webpack_require__(753), _SoftCategories2 = _interopRequireDefault(_SoftCategories);
  33126.         __webpack_require__(786);
  33127.         exports["default"] = _react2["default"].createClass({
  33128.             displayName: "InstallationHeader",
  33129.             mixins: [ __webpack_require__(5) ],
  33130.             propTypes: {
  33131.                 preparing: _react.PropTypes.bool,
  33132.                 items: _react.PropTypes.array,
  33133.                 itemsContainDrivers: _react.PropTypes.bool,
  33134.                 percents: _react.PropTypes.number.isRequired,
  33135.                 currentLanguage: _react.PropTypes.string.isRequired
  33136.             },
  33137.             getInitialState: function() {
  33138.                 return {
  33139.                     fakePercents: 3
  33140.                 };
  33141.             },
  33142.             progressTick: function() {
  33143.                 try {
  33144.                     var _props = this.props, preparing = _props.preparing, itemsContainDrivers = _props.itemsContainDrivers, fakePercents = this.state.fakePercents, nextPercents = void 0;
  33145.                     if (itemsContainDrivers && preparing) {
  33146.                         nextPercents = Math.min(fakePercents + .3, 10);
  33147.                         this.setState({
  33148.                             fakePercents: nextPercents
  33149.                         });
  33150.                     } else clearInterval(this.progressTimer);
  33151.                 } catch (e) {}
  33152.             },
  33153.             componentDidMount: function() {
  33154.                 this.progressTimer = setInterval(this.progressTick, 300);
  33155.             },
  33156.             componentWillUnmount: function() {
  33157.                 clearInterval(this.progressTimer);
  33158.             },
  33159.             getStatusData: function() {
  33160.                 var items = this.props.items, installing = items.find(function(item) {
  33161.                     return "installing" === item.status;
  33162.                 }), nextStatusData = void 0;
  33163.                 if (installing) nextStatusData = {
  33164.                     isDriver: installing.isDriver,
  33165.                     itemCategory: installing.isDriver ? installing.recommendedDriver["class"] : installing.category.toLowerCase()
  33166.                 }; else nextStatusData = null;
  33167.                 return nextStatusData;
  33168.             },
  33169.             getSubtitle: function(_ref) {
  33170.                 var itemsContainDrivers = _ref.itemsContainDrivers, preparing = _ref.preparing, statusData = _ref.statusData, visiblePercents = _ref.visiblePercents, subtitle = void 0;
  33171.                 if (itemsContainDrivers && preparing) subtitle = l("installation_header_subtitle"); else if (visiblePercents >= 99) subtitle = ""; else if (statusData) {
  33172.                     var isDriver = statusData.isDriver, itemCategory = statusData.itemCategory;
  33173.                     if (isDriver) {
  33174.                         var deviceClassName = (0, _deviceClasses2["default"])(l)[itemCategory].morpher.single["for"];
  33175.                         subtitle = l("installation_header_subtitle_installing-driver").replace("{{CLASS.SINGLE.FOR}}", deviceClassName);
  33176.                     } else if ("drivers" === itemCategory || "system" === itemCategory) {
  33177.                         var softCategoryName = (0, _SoftCategories2["default"])(l)[itemCategory].morpher.plural["for"];
  33178.                         subtitle = l("installation_header_subtitle_installing-program-plural").replace("{{CATEGORY.PLURAL.FOR}}", softCategoryName);
  33179.                     } else {
  33180.                         var _softCategoryName = (0, _SoftCategories2["default"])(l)[itemCategory].morpher.single["for"];
  33181.                         subtitle = l("installation_header_subtitle_installing-program").replace("{{CATEGORY.SINGLE.FOR}}", _softCategoryName);
  33182.                     }
  33183.                 } else subtitle = l("installation_header_subtitle_downloading");
  33184.                 return subtitle;
  33185.             },
  33186.             getVisiblePercents: function() {
  33187.                 var percents = this.props.percents;
  33188.                 return Math.min(Math.max(Math.round(this.state.fakePercents), percents), 99);
  33189.             },
  33190.             render: function() {
  33191.                 var _props2 = this.props, preparing = _props2.preparing, itemsContainDrivers = _props2.itemsContainDrivers, statusData = this.getStatusData(), visiblePercents = this.getVisiblePercents(), title = itemsContainDrivers && preparing ? l("installation_header_preparing") : l("installation_header_title"), subtitle = this.getSubtitle({
  33192.                     itemsContainDrivers: itemsContainDrivers,
  33193.                     preparing: preparing,
  33194.                     statusData: statusData,
  33195.                     visiblePercents: visiblePercents
  33196.                 });
  33197.                 return _react2["default"].DOM.table({
  33198.                     className: "installation-header"
  33199.                 }, _react2["default"].DOM.tr(null, _react2["default"].DOM.td(null, _react2["default"].DOM.div({
  33200.                     className: "installation-header_wrapper"
  33201.                 }, _react2["default"].DOM.h1({
  33202.                     className: "installation-header_title"
  33203.                 }, title), _react2["default"].DOM.p({
  33204.                     className: "installation-header_subtitle",
  33205.                     dangerouslySetInnerHTML: {
  33206.                         __html: subtitle
  33207.                     }
  33208.                 }), _react2["default"].DOM.div({
  33209.                     className: "installation-header_progress-holder"
  33210.                 }, _react2["default"].DOM.div({
  33211.                     className: "installation-header_progress-bg"
  33212.                 }, _react2["default"].DOM.div({
  33213.                     className: "installation-header_progress",
  33214.                     style: {
  33215.                         width: visiblePercents + "%"
  33216.                     }
  33217.                 }), _react2["default"].DOM.div({
  33218.                     className: "installation-header_progress-percents"
  33219.                 }, visiblePercents, "%")))))));
  33220.             }
  33221.         });
  33222.         module.exports = exports["default"];
  33223.     }).call(exports, __webpack_require__(6));
  33224. }, function(module, exports, __webpack_require__) {
  33225.     "use strict";
  33226.     (function(l) {
  33227.         function _interopRequireDefault(obj) {
  33228.             return obj && obj.__esModule ? obj : {
  33229.                 "default": obj
  33230.             };
  33231.         }
  33232.         exports.__esModule = !0;
  33233.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _utils = __webpack_require__(23);
  33234.         __webpack_require__(787);
  33235.         exports["default"] = _react2["default"].createClass({
  33236.             displayName: "InstallationHeaderPromo",
  33237.             mixins: [ __webpack_require__(5) ],
  33238.             propTypes: {
  33239.                 currentLanguage: _react.PropTypes.string.isRequired,
  33240.                 promos: _react.PropTypes.array,
  33241.                 leftArrowIsVisible: _react.PropTypes.bool.isRequired,
  33242.                 rightArrowIsVisible: _react.PropTypes.bool.isRequired,
  33243.                 confirmPromoInstallation: _react.PropTypes.func,
  33244.                 handleMouseMove: _react.PropTypes.func.isRequired,
  33245.                 confirmMinimizing: _react.PropTypes.func.isRequired
  33246.             },
  33247.             getInitialState: function() {
  33248.                 return {
  33249.                     promoHovered: !1,
  33250.                     activeIndex: 0
  33251.                 };
  33252.             },
  33253.             tick: function() {
  33254.                 try {
  33255.                     var _props = this.props, leftArrowIsVisible = _props.leftArrowIsVisible, rightArrowIsVisible = _props.rightArrowIsVisible;
  33256.                     if (!this.state.promoHovered && !leftArrowIsVisible && !rightArrowIsVisible) this.incrementActiveIndex();
  33257.                 } catch (e) {}
  33258.             },
  33259.             componentDidMount: function() {
  33260.                 this.timer = setInterval(this.tick, 6e4);
  33261.             },
  33262.             componentWillUnmount: function() {
  33263.                 clearInterval(this.timer);
  33264.             },
  33265.             setActiveIndex: function(nextActiveIndex) {
  33266.                 var promos = this.props.promos;
  33267.                 this.setState({
  33268.                     activeIndex: nextActiveIndex % promos.length
  33269.                 });
  33270.             },
  33271.             incrementActiveIndex: function() {
  33272.                 var activeIndex = this.state.activeIndex;
  33273.                 this.setActiveIndex(activeIndex + 1);
  33274.             },
  33275.             decrementActiveIndex: function() {
  33276.                 var promos = this.props.promos, activeIndex = this.state.activeIndex, nextActiveIndex = activeIndex > 0 ? activeIndex - 1 : promos.length - 1;
  33277.                 this.setActiveIndex(nextActiveIndex);
  33278.             },
  33279.             renderButton: function() {
  33280.                 var _props2 = this.props, promos = _props2.promos, confirmPromoInstallation = _props2.confirmPromoInstallation, confirmMinimizing = _props2.confirmMinimizing, activeIndex = this.state.activeIndex, activePromo = promos[activeIndex], promoState = activePromo.state;
  33281.                 return _react2["default"].DOM.span(null, "promo" === promoState ? _react2["default"].DOM.a({
  33282.                     href: "javascript:void(0)",
  33283.                     className: "installation-header-promo_btn",
  33284.                     onClick: function(e) {
  33285.                         e.preventDefault();
  33286.                         _statistics2["default"].event({
  33287.                             action: "installation promo clicked " + activePromo.name
  33288.                         });
  33289.                         confirmMinimizing();
  33290.                         activePromo.onClick();
  33291.                     }
  33292.                 }, (0, _Img2["default"])({
  33293.                     src: "img/installation/icon-details.png",
  33294.                     width: "20",
  33295.                     height: "18",
  33296.                     className: "installation-header-promo_btn-icon"
  33297.                 }), _react2["default"].DOM.span({
  33298.                     className: "installation-header-promo_btn-text"
  33299.                 }, l("installation_header_promo_more"))) : "offer" === promoState ? _react2["default"].DOM.a({
  33300.                     href: "javascript:void(0)",
  33301.                     className: "installation-header-promo_btn",
  33302.                     onClick: function(e) {
  33303.                         e.preventDefault();
  33304.                         _statistics2["default"].event({
  33305.                             action: "installation ad clicked " + activePromo.name
  33306.                         });
  33307.                         confirmPromoInstallation(activePromo);
  33308.                     }
  33309.                 }, (0, _Img2["default"])({
  33310.                     src: "img/installation/icon-install.png",
  33311.                     width: "20",
  33312.                     height: "18",
  33313.                     className: "installation-header-promo_btn-icon"
  33314.                 }), _react2["default"].DOM.span({
  33315.                     className: "installation-header-promo_btn-text"
  33316.                 }, l("installation_header_promo_install"))) : _react2["default"].DOM.div({
  33317.                     className: "installation-header-promo_btn is-installed"
  33318.                 }, (0, _Img2["default"])({
  33319.                     src: "img/installation/icon-installed.png",
  33320.                     width: "31",
  33321.                     height: "22",
  33322.                     className: "installation-header-promo_btn-icon"
  33323.                 })));
  33324.             },
  33325.             renderBullets: function() {
  33326.                 var _this = this, promos = this.props.promos, activeIndex = this.state.activeIndex;
  33327.                 return promos.map(function(promo, index) {
  33328.                     return _react2["default"].DOM.a({
  33329.                         key: index,
  33330.                         href: "#",
  33331.                         className: "installation-header-promo_bullet",
  33332.                         onClick: function(e) {
  33333.                             e.stopPropagation();
  33334.                             e.preventDefault();
  33335.                             _statistics2["default"].event({
  33336.                                 action: "installation banner arrow used"
  33337.                             });
  33338.                             _this.setActiveIndex(index);
  33339.                         }
  33340.                     }, (0, _Img2["default"])({
  33341.                         src: activeIndex === index ? "img/installation/banner_bullit-active.png" : "img/installation/banner_bullit-empty.png",
  33342.                         width: "8",
  33343.                         height: "8"
  33344.                     }));
  33345.                 });
  33346.             },
  33347.             renderLinks: function() {
  33348.                 var confirmMinimizing = this.props.confirmMinimizing;
  33349.                 return _react2["default"].DOM.span(null, "Вот что на эту тему думают эксперты:", " ", _react2["default"].DOM.a({
  33350.                     href: "#",
  33351.                     className: "installation-header-promo_text-link",
  33352.                     onClick: function(e) {
  33353.                         e.stopPropagation();
  33354.                         e.preventDefault();
  33355.                         confirmMinimizing();
  33356.                         (0, _utils.goToUrl)("http://www.ixbt.com/news/2015/07/27/driverpack-windows-10.html");
  33357.                     }
  33358.                 }, "ixbt.com"), ",", " ", _react2["default"].DOM.a({
  33359.                     href: "#",
  33360.                     className: "installation-header-promo_text-link",
  33361.                     onClick: function(e) {
  33362.                         e.stopPropagation();
  33363.                         e.preventDefault();
  33364.                         confirmMinimizing();
  33365.                         (0, _utils.goToUrl)("http://www.cnews.ru/news/top/rossijskie_razrabotchiki_reshili_problemu_s_drajverami_v_windows");
  33366.                     }
  33367.                 }, "cnews.ru"), ",", " ", _react2["default"].DOM.a({
  33368.                     href: "#",
  33369.                     className: "installation-header-promo_text-link",
  33370.                     onClick: function(e) {
  33371.                         e.stopPropagation();
  33372.                         e.preventDefault();
  33373.                         confirmMinimizing();
  33374.                         (0, _utils.goToUrl)("https://hi-tech.mail.ru/news/windows-10-drivers-errors/");
  33375.                     }
  33376.                 }, "hi-tech.mail.ru"), ".");
  33377.             },
  33378.             render: function() {
  33379.                 var _this2 = this, _props3 = this.props, promos = _props3.promos, leftArrowIsVisible = _props3.leftArrowIsVisible, rightArrowIsVisible = _props3.rightArrowIsVisible, handleMouseMove = _props3.handleMouseMove, confirmMinimizing = _props3.confirmMinimizing, activeIndex = this.state.activeIndex, activePromo = promos[activeIndex];
  33380.                 if (!activePromo.rendered) {
  33381.                     switch (activePromo.state) {
  33382.                       case "promo":
  33383.                         _statistics2["default"].event({
  33384.                             action: "installation promo showed " + activePromo.name
  33385.                         });
  33386.                         break;
  33387.  
  33388.                       case "offer":
  33389.                         _statistics2["default"].event({
  33390.                             action: "installation ad showed " + activePromo.name
  33391.                         });
  33392.                     }
  33393.                     activePromo.rendered = !0;
  33394.                 }
  33395.                 return _react2["default"].DOM.table({
  33396.                     className: "installation-header-promo_wrapper"
  33397.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  33398.                     className: "installation-header-promo"
  33399.                 }, _react2["default"].DOM.div({
  33400.                     className: "installation-header-promo_centered",
  33401.                     onMouseMove: function(e) {
  33402.                         e.stopPropagation();
  33403.                         e.preventDefault();
  33404.                         _this2.setState({
  33405.                             promoHovered: !0
  33406.                         });
  33407.                         handleMouseMove(e, null);
  33408.                     },
  33409.                     onMouseLeave: function(e) {
  33410.                         e.stopPropagation();
  33411.                         e.preventDefault();
  33412.                         _this2.setState({
  33413.                             promoHovered: !1
  33414.                         });
  33415.                         handleMouseMove(e, null);
  33416.                     }
  33417.                 }, _react2["default"].DOM.a({
  33418.                     href: "#",
  33419.                     className: "installation-header-promo-arrow-left",
  33420.                     onMouseMove: function(e) {
  33421.                         return handleMouseMove(e, "installation_left_arrow");
  33422.                     },
  33423.                     onClick: function(e) {
  33424.                         e.stopPropagation();
  33425.                         e.preventDefault();
  33426.                         _statistics2["default"].event({
  33427.                             action: "installation banner arrow used"
  33428.                         });
  33429.                         _this2.decrementActiveIndex();
  33430.                     }
  33431.                 }, _react2["default"].DOM.img({
  33432.                     src: "img/blank.gif",
  33433.                     className: "installation-header-promo-arrow-bg"
  33434.                 }), leftArrowIsVisible ? (0, _Img2["default"])({
  33435.                     src: "img/installation/banner-arrow-left.png",
  33436.                     width: "27",
  33437.                     height: "55",
  33438.                     className: "installation-header-promo-arrow-icon"
  33439.                 }) : null), _react2["default"].DOM.a({
  33440.                     href: "#",
  33441.                     className: "installation-header-promo-arrow-right",
  33442.                     onMouseMove: function(e) {
  33443.                         return handleMouseMove(e, "installation_right_arrow");
  33444.                     },
  33445.                     onClick: function(e) {
  33446.                         e.stopPropagation();
  33447.                         e.preventDefault();
  33448.                         _statistics2["default"].event({
  33449.                             action: "installation banner arrow used"
  33450.                         });
  33451.                         _this2.incrementActiveIndex();
  33452.                     }
  33453.                 }, _react2["default"].DOM.img({
  33454.                     src: "img/blank.gif",
  33455.                     className: "installation-header-promo-arrow-bg"
  33456.                 }), rightArrowIsVisible ? (0, _Img2["default"])({
  33457.                     src: "img/installation/banner-arrow-right.png",
  33458.                     width: "27",
  33459.                     height: "55",
  33460.                     className: "installation-header-promo-arrow-icon"
  33461.                 }) : null), _react2["default"].DOM.div(null, promos.map(function(promo, index) {
  33462.                     return _react2["default"].DOM.div({
  33463.                         key: index,
  33464.                         className: "installation-header-promo_banner " + (index === activeIndex ? "is-visible" : "")
  33465.                     }, (0, _Img2["default"])({
  33466.                         src: promo.bgImage,
  33467.                         className: "installation-header-promo_bg " + ("Opera" === promo.id ? "installation-header-promo_bg-opera" : "")
  33468.                     }), _react2["default"].DOM.div({
  33469.                         className: "installation-header-promo_caption"
  33470.                     }, _react2["default"].DOM.div({
  33471.                         className: "installation-header-promo_title"
  33472.                     }, promo.title), "Windows 10" === promo.id ? _react2["default"].DOM.div({
  33473.                         className: "installation-header-promo_text"
  33474.                     }, _react2["default"].DOM.span({
  33475.                         dangerouslySetInnerHTML: {
  33476.                             __html: promo.text
  33477.                         }
  33478.                     }), _this2.renderLinks()) : _react2["default"].DOM.div({
  33479.                         className: "installation-header-promo_text",
  33480.                         dangerouslySetInnerHTML: {
  33481.                             __html: promo.text
  33482.                         }
  33483.                     }), "Social" === promo.id ? _react2["default"].DOM.div({
  33484.                         className: "installation-header-promo_social-buttons"
  33485.                     }, "ru" === window.lang ? _react2["default"].DOM.a({
  33486.                         href: "#",
  33487.                         className: "installation-header-promo_social-btn installation-header-promo_social-btn-vk",
  33488.                         onClick: function(e) {
  33489.                             e.stopPropagation();
  33490.                             e.preventDefault();
  33491.                             confirmMinimizing();
  33492.                             (0, _utils.goToUrl)("https://vk.com/driverpacksolution");
  33493.                         }
  33494.                     }, (0, _Img2["default"])({
  33495.                         src: "img/installation/banner_social-vk.png",
  33496.                         width: "30",
  33497.                         height: "37",
  33498.                         className: "installation-header-promo_social-icon"
  33499.                     }), _react2["default"].DOM.span({
  33500.                         className: "installation-header-promo_social-btn-text"
  33501.                     }, "Сообщество ВКонтакте")) : null, _react2["default"].DOM.a({
  33502.                         href: "#",
  33503.                         className: "installation-header-promo_social-btn installation-header-promo_social-btn-fb",
  33504.                         onClick: function(e) {
  33505.                             e.stopPropagation();
  33506.                             e.preventDefault();
  33507.                             confirmMinimizing();
  33508.                             if ("ru" === window.lang) (0, _utils.goToUrl)("https://www.facebook.com/DriverPack.Solution.Russia/?fref=ts"); else (0,
  33509.                             _utils.goToUrl)("https://www.facebook.com/DriverPack.Solution/?fref=ts");
  33510.                         }
  33511.                     }, (0, _Img2["default"])({
  33512.                         src: "img/installation/banner_social-fb.png",
  33513.                         width: "30",
  33514.                         height: "37",
  33515.                         className: "installation-header-promo_social-icon"
  33516.                     }), _react2["default"].DOM.span({
  33517.                         className: "installation-header-promo_social-btn-text"
  33518.                     }, l("installation_header_promo_fb")))) : null, promo.onClick ? _this2.renderButton() : null));
  33519.                 })), _react2["default"].DOM.div({
  33520.                     className: "installation-header-promo_bullets"
  33521.                 }, _react2["default"].DOM.table({
  33522.                     style: {
  33523.                         width: "100%"
  33524.                     }
  33525.                 }, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  33526.                     style: {
  33527.                         textAlign: "center",
  33528.                         verticalAlign: "middle"
  33529.                     }
  33530.                 }, _react2["default"].DOM.div({
  33531.                     className: "installation-header-promo_bullets-centered"
  33532.                 }, this.renderBullets()))))))))));
  33533.             }
  33534.         });
  33535.         module.exports = exports["default"];
  33536.     }).call(exports, __webpack_require__(6));
  33537. }, function(module, exports, __webpack_require__) {
  33538.     "use strict";
  33539.     (function(l) {
  33540.         function _interopRequireDefault(obj) {
  33541.             return obj && obj.__esModule ? obj : {
  33542.                 "default": obj
  33543.             };
  33544.         }
  33545.         exports.__esModule = !0;
  33546.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _getInternetExplorerVersion = __webpack_require__(100), _getInternetExplorerVersion2 = _interopRequireDefault(_getInternetExplorerVersion), _InstallationItemRowIcon = __webpack_require__(690), _InstallationItemRowIcon2 = _interopRequireDefault(_InstallationItemRowIcon), _InstallationItemRowDescription = __webpack_require__(689), _InstallationItemRowDescription2 = _interopRequireDefault(_InstallationItemRowDescription), _InstallationItemRowProgress = __webpack_require__(691), _InstallationItemRowProgress2 = _interopRequireDefault(_InstallationItemRowProgress), _InstallationItemRowStatus = __webpack_require__(692), _InstallationItemRowStatus2 = _interopRequireDefault(_InstallationItemRowStatus), internetExplorerVersion = (0,
  33547.         _getInternetExplorerVersion2["default"])();
  33548.         exports["default"] = _react2["default"].createClass({
  33549.             displayName: "InstallationItemRow",
  33550.             mixins: [ __webpack_require__(5) ],
  33551.             propTypes: {
  33552.                 currentLanguage: _react.PropTypes.string.isRequired,
  33553.                 id: _react.PropTypes.string.isRequired,
  33554.                 name: _react.PropTypes.string,
  33555.                 isRestorePoint: _react.PropTypes.bool,
  33556.                 isDriver: _react.PropTypes.bool,
  33557.                 isPartner: _react.PropTypes.bool,
  33558.                 itemCategory: _react.PropTypes.string.isRequired,
  33559.                 pack: _react.PropTypes.string,
  33560.                 itemDescription: _react.PropTypes.string,
  33561.                 softDescription: _react.PropTypes.object,
  33562.                 softEula: _react.PropTypes.string,
  33563.                 softPolicy: _react.PropTypes.string,
  33564.                 status: _react.PropTypes.string.isRequired,
  33565.                 cancelItemInstallation: _react.PropTypes.func,
  33566.                 restartItemInstallation: _react.PropTypes.func,
  33567.                 downloading: _react.PropTypes.object,
  33568.                 unzipping: _react.PropTypes.object,
  33569.                 error: _react.PropTypes.object,
  33570.                 odd: _react.PropTypes.bool.isRequired
  33571.             },
  33572.             render: function() {
  33573.                 var _props = this.props, currentLanguage = _props.currentLanguage, name = _props.name, status = _props.status, isRestorePoint = _props.isRestorePoint, isDriver = _props.isDriver, isPartner = _props.isPartner, itemCategory = _props.itemCategory, itemDescription = _props.itemDescription, softDescription = _props.softDescription, softEula = _props.softEula, softPolicy = _props.softPolicy, odd = _props.odd, dictionary = {
  33574.                     restore_point: l("installation_item_category_restorepoint"),
  33575.                     bluetooth: l("driver_class_bluetooth"),
  33576.                     cardreader: l("driver_class_cardreader"),
  33577.                     chipset: l("driver_class_chipset"),
  33578.                     inputdev: l("driver_class_inputdev"),
  33579.                     lan: l("driver_class_lan"),
  33580.                     massstorage: l("driver_class_massstorage"),
  33581.                     modem: l("driver_class_modem"),
  33582.                     monitor: l("driver_class_monitor"),
  33583.                     phone: l("driver_class_phone"),
  33584.                     printer: l("driver_class_printer"),
  33585.                     sound: l("driver_class_sound"),
  33586.                     tvtuner: l("driver_class_tvtuner"),
  33587.                     video: l("driver_class_video"),
  33588.                     webcamera: l("driver_class_webcamera"),
  33589.                     wifi: l("driver_class_wifi"),
  33590.                     other: l("driver_class_other"),
  33591.                     archiver: l("soft_category_archiver"),
  33592.                     browser: l("soft_category_browser"),
  33593.                     viewer: l("soft_category_viewer"),
  33594.                     messenger: l("soft_category_messenger"),
  33595.                     internet: l("soft_category_internet"),
  33596.                     player: l("soft_category_player"),
  33597.                     backup: l("soft_category_backup"),
  33598.                     antivirus: l("soft_category_antivirus"),
  33599.                     system: l("soft_category_system"),
  33600.                     drivers: l("soft_category_drivers")
  33601.                 }, category = dictionary[itemCategory.toLowerCase()] || dictionary.other, icon = void 0, description = void 0, lang = "ru" === currentLanguage ? "ru" : "en";
  33602.                 if (isRestorePoint) {
  33603.                     icon = "img/installation/drivers/" + itemCategory + ".png";
  33604.                     description = itemDescription;
  33605.                 } else if (isDriver) {
  33606.                     icon = "img/installation/drivers/" + itemCategory + ".png";
  33607.                     description = name;
  33608.                 } else {
  33609.                     icon = "img/installation/drivers/other.png";
  33610.                     description = softDescription[lang];
  33611.                 }
  33612.                 var descriptionAdditions = {};
  33613.                 if (softEula) descriptionAdditions.eula = softEula;
  33614.                 if (softPolicy) descriptionAdditions.policy = softPolicy;
  33615.                 return _react2["default"].DOM.tr({
  33616.                     className: "installation-list_row " + (odd ? "" : "light")
  33617.                 }, _react2["default"].DOM.td({
  33618.                     style: {
  33619.                         padding: "0"
  33620.                     }
  33621.                 }, _react2["default"].DOM.table({
  33622.                     className: "installation-list_row-centered"
  33623.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr(null, (0, _InstallationItemRowIcon2["default"])({
  33624.                     icon: icon
  33625.                 }), (0, _InstallationItemRowDescription2["default"])({
  33626.                     category: category,
  33627.                     description: isDriver || !description ? name : description,
  33628.                     additions: descriptionAdditions,
  33629.                     currentLanguage: currentLanguage
  33630.                 }), this.renderProgressCol(), (0, _InstallationItemRowStatus2["default"])({
  33631.                     status: status,
  33632.                     currentLanguage: currentLanguage,
  33633.                     isRestorePoint: isRestorePoint
  33634.                 }), _react2["default"].DOM.td({
  33635.                     className: "installation-list_cancel-col"
  33636.                 }, !isDriver && !isRestorePoint && !isPartner && [ "waiting", "downloading", "downloaded" ].includes(status) ? this.renderCancel() : _react2["default"].DOM.div({
  33637.                     style: {
  33638.                         width: "24px"
  33639.                     }
  33640.                 }, " ")))))));
  33641.             },
  33642.             shouldFixHoverIcon: function() {
  33643.                 if (-1 !== internetExplorerVersion) if (internetExplorerVersion < 7) return !0; else return !1; else return !1;
  33644.             },
  33645.             renderProgressCol: function() {
  33646.                 var _props2 = this.props, id = _props2.id, name = _props2.name, isDriver = _props2.isDriver, status = _props2.status, downloading = _props2.downloading, unzipping = _props2.unzipping, error = _props2.error, currentLanguage = _props2.currentLanguage, progressProps = {
  33647.                     id: id,
  33648.                     name: name,
  33649.                     isDriver: isDriver,
  33650.                     status: status,
  33651.                     downloading: downloading,
  33652.                     unzipping: unzipping,
  33653.                     error: error,
  33654.                     currentLanguage: currentLanguage
  33655.                 };
  33656.                 return (0, _InstallationItemRowProgress2["default"])(progressProps);
  33657.             },
  33658.             renderCancel: function() {
  33659.                 var _props3 = this.props, id = _props3.id, name = _props3.name, status = _props3.status, cancelItemInstallation = _props3.cancelItemInstallation;
  33660.                 return _react2["default"].DOM.a({
  33661.                     href: "javascript:void(0)",
  33662.                     className: "installation-list_cancel",
  33663.                     onClick: function(e) {
  33664.                         e.preventDefault();
  33665.                         cancelItemInstallation(name, id, status);
  33666.                     }
  33667.                 }, (0, _Img2["default"])({
  33668.                     src: "img/installation/controls/cancel.png",
  33669.                     width: "24",
  33670.                     height: "24"
  33671.                 }));
  33672.             }
  33673.         });
  33674.         module.exports = exports["default"];
  33675.     }).call(exports, __webpack_require__(6));
  33676. }, function(module, exports, __webpack_require__) {
  33677.     "use strict";
  33678.     (function(l) {
  33679.         exports.__esModule = !0;
  33680.         var _react = __webpack_require__(1), _react2 = function(obj) {
  33681.             return obj && obj.__esModule ? obj : {
  33682.                 "default": obj
  33683.             };
  33684.         }(_react), _utils = __webpack_require__(23);
  33685.         exports["default"] = _react2["default"].createClass({
  33686.             displayName: "InstallationItemRowDescription",
  33687.             mixins: [ __webpack_require__(5) ],
  33688.             propTypes: {
  33689.                 category: _react.PropTypes.string.isRequired,
  33690.                 description: _react.PropTypes.string.isRequired,
  33691.                 additions: _react.PropTypes.object.isRequired,
  33692.                 currentLanguage: _react.PropTypes.string.isRequired
  33693.             },
  33694.             render: function() {
  33695.                 var _props = this.props, category = _props.category, description = _props.description, additions = _props.additions, eula = additions.eula, policy = additions.policy;
  33696.                 return _react2["default"].DOM.td({
  33697.                     className: "installation-list_desc-col"
  33698.                 }, _react2["default"].DOM.div({
  33699.                     className: "installation-list_category"
  33700.                 }, _react2["default"].DOM.span({
  33701.                     className: "installation-list_category-name",
  33702.                     href: "javascript:void(0)",
  33703.                     onClick: function(e) {
  33704.                         e.preventDefault();
  33705.                     }
  33706.                 }, category)), _react2["default"].DOM.div({
  33707.                     className: "installation-list_name"
  33708.                 }, description), eula ? _react2["default"].DOM.div({
  33709.                     className: "installation-list_link-wrapper"
  33710.                 }, _react2["default"].DOM.a({
  33711.                     href: "#",
  33712.                     className: "installation-list_link",
  33713.                     onClick: function(e) {
  33714.                         e.stopPropagation();
  33715.                         e.preventDefault();
  33716.                         (0, _utils.goToUrl)(eula);
  33717.                     }
  33718.                 }, l("installation_item_eula"))) : null, policy ? _react2["default"].DOM.div({
  33719.                     className: "installation-list_link-wrapper"
  33720.                 }, _react2["default"].DOM.a({
  33721.                     href: "#",
  33722.                     className: "installation-list_link",
  33723.                     onClick: function(e) {
  33724.                         e.stopPropagation();
  33725.                         e.preventDefault();
  33726.                         (0, _utils.goToUrl)(policy);
  33727.                     }
  33728.                 }, l("installation_item_policy"))) : null);
  33729.             }
  33730.         });
  33731.         module.exports = exports["default"];
  33732.     }).call(exports, __webpack_require__(6));
  33733. }, function(module, exports, __webpack_require__) {
  33734.     "use strict";
  33735.     function _interopRequireDefault(obj) {
  33736.         return obj && obj.__esModule ? obj : {
  33737.             "default": obj
  33738.         };
  33739.     }
  33740.     exports.__esModule = !0;
  33741.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  33742.     exports["default"] = _react2["default"].createClass({
  33743.         displayName: "InstallationItemRowIcon",
  33744.         mixins: [ __webpack_require__(5) ],
  33745.         propTypes: {
  33746.             icon: _react.PropTypes.string.isRequired
  33747.         },
  33748.         render: function() {
  33749.             var icon = this.props.icon;
  33750.             return _react2["default"].DOM.td({
  33751.                 className: "installation-list_icon-col"
  33752.             }, _react2["default"].DOM.span({
  33753.                 className: "installation-list_icon"
  33754.             }, (0, _Img2["default"])({
  33755.                 src: icon,
  33756.                 width: "56",
  33757.                 height: "56"
  33758.             })));
  33759.         }
  33760.     });
  33761.     module.exports = exports["default"];
  33762. }, function(module, exports, __webpack_require__) {
  33763.     "use strict";
  33764.     (function(l) {
  33765.         function _interopRequireDefault(obj) {
  33766.             return obj && obj.__esModule ? obj : {
  33767.                 "default": obj
  33768.             };
  33769.         }
  33770.         exports.__esModule = !0;
  33771.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _getInternetExplorerVersion = __webpack_require__(100), _getInternetExplorerVersion2 = _interopRequireDefault(_getInternetExplorerVersion), internetExplorerVersion = (0,
  33772.         _getInternetExplorerVersion2["default"])();
  33773.         exports["default"] = _react2["default"].createClass({
  33774.             displayName: "InstallationItemRowProgress",
  33775.             mixins: [ __webpack_require__(5) ],
  33776.             propTypes: {
  33777.                 id: _react.PropTypes.string.isRequired,
  33778.                 name: _react.PropTypes.string,
  33779.                 isDriver: _react.PropTypes.bool,
  33780.                 status: _react.PropTypes.string.isRequired,
  33781.                 downloading: _react.PropTypes.object,
  33782.                 unzipping: _react.PropTypes.object,
  33783.                 error: _react.PropTypes.object,
  33784.                 currentLanguage: _react.PropTypes.string.isRequired
  33785.             },
  33786.             shouldFixProgress: function() {
  33787.                 if (-1 !== internetExplorerVersion) if (internetExplorerVersion < 10) return !0; else return !1; else return !1;
  33788.             },
  33789.             calculateDownloadProgressWidth: function() {
  33790.                 var _props$downloading = this.props.downloading, downloadedSize = _props$downloading.downloadedSize, totalFileSize = _props$downloading.totalFileSize;
  33791.                 return totalFileSize ? Math.min(Math.round(100 * downloadedSize / totalFileSize), 100) : 0;
  33792.             },
  33793.             formatBytes: function(bytes, decimals) {
  33794.                 var kilo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1024;
  33795.                 if (0 === bytes) return "0 B";
  33796.                 var dm = decimals + 1 || 3, sizes = [ "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" ], i = Math.floor(Math.log(bytes) / Math.log(kilo));
  33797.                 return (bytes / Math.pow(kilo, i)).toPrecision(dm) + " " + sizes[i];
  33798.             },
  33799.             formatSpeed: function(bytes, decimals) {
  33800.                 var kilo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1024, bits = 8 * bytes;
  33801.                 if (0 === bits) return "0 bps";
  33802.                 var dm = decimals + 1 || 3, sizes = [ "bps", "kbps", "Mbps", "Gbps" ], i = Math.floor(Math.log(bits) / Math.log(kilo));
  33803.                 return (bits / Math.pow(kilo, i)).toPrecision(dm) + " " + sizes[i];
  33804.             },
  33805.             render: function() {
  33806.                 var _props = this.props, isDriver = _props.isDriver, status = _props.status, downloading = _props.downloading, unzipping = _props.unzipping, error = _props.error, dictionary = {
  33807.                     download: l("installation_error_download"),
  33808.                     unzip: l("installation_error_unzip"),
  33809.                     install: l("installation_error_install"),
  33810.                     system_restore_disabled: l("installation_error_restore_disabled"),
  33811.                     not_created: l("installation_error_restore_not_created")
  33812.                 };
  33813.                 switch (status) {
  33814.                   case "creating":
  33815.                     return _react2["default"].DOM.td({
  33816.                         className: "installation-list_progress-col"
  33817.                     }, _react2["default"].DOM.div({
  33818.                         className: "installation-list_progress-stage"
  33819.                     }, l("installation_progress_stage_creating")), _react2["default"].DOM.div({
  33820.                         className: "installation-list_progress-bg"
  33821.                     }, this.shouldFixProgress() ? _react2["default"].DOM.div({
  33822.                         className: "installation-list_progress",
  33823.                         style: {
  33824.                             width: "100%"
  33825.                         }
  33826.                     }, _react2["default"].DOM.img({
  33827.                         src: "img/installation/statuses/progress.gif",
  33828.                         width: "100%"
  33829.                     })) : _react2["default"].DOM.div({
  33830.                         className: "installation-list_progress installation-list_progress-infinite",
  33831.                         style: {
  33832.                             width: "100%"
  33833.                         }
  33834.                     })), _react2["default"].DOM.div({
  33835.                         className: "installation-list_progress-bottom-spacer"
  33836.                     }));
  33837.  
  33838.                   case "created":
  33839.                     return _react2["default"].DOM.td({
  33840.                         className: "installation-list_progress-col"
  33841.                     }, _react2["default"].DOM.div({
  33842.                         className: "installation-list_progress-stage"
  33843.                     }, l("installation_progress_stage_created")), _react2["default"].DOM.div({
  33844.                         className: "installation-list_progress-bg"
  33845.                     }, _react2["default"].DOM.div({
  33846.                         className: "installation-list_progress installation-list_progress-linear",
  33847.                         style: {
  33848.                             width: "100%"
  33849.                         }
  33850.                     })), _react2["default"].DOM.div({
  33851.                         className: "installation-list_progress-bottom-spacer"
  33852.                     }));
  33853.  
  33854.                   case "waiting":
  33855.                     return _react2["default"].DOM.td({
  33856.                         className: "installation-list_progress-col"
  33857.                     }, _react2["default"].DOM.div({
  33858.                         className: "installation-list_progress-stage"
  33859.                     }, l("installation_progress_stage_waiting")), _react2["default"].DOM.div({
  33860.                         className: "installation-list_progress-bg"
  33861.                     }, _react2["default"].DOM.div({
  33862.                         className: "installation-list_progress installation-list_progress-linear",
  33863.                         style: {
  33864.                             width: "0%"
  33865.                         }
  33866.                     })), _react2["default"].DOM.div({
  33867.                         className: "installation-list_progress-bottom-spacer"
  33868.                     }));
  33869.  
  33870.                   case "downloading":
  33871.                     return _react2["default"].DOM.td({
  33872.                         className: "installation-list_progress-col"
  33873.                     }, _react2["default"].DOM.div({
  33874.                         className: "installation-list_progress-stage"
  33875.                     }, "1/", isDriver ? "3" : "2", " ", l("installation_progress_stage_downloading")), _react2["default"].DOM.div({
  33876.                         className: "installation-list_progress-bg"
  33877.                     }, _react2["default"].DOM.div({
  33878.                         className: "installation-list_progress installation-list_progress-linear",
  33879.                         style: {
  33880.                             width: this.calculateDownloadProgressWidth() + "%"
  33881.                         }
  33882.                     })), _react2["default"].DOM.div({
  33883.                         className: "installation-list_progress-info"
  33884.                     }, l("installation_progress_downloading_speed"), " ", this.formatSpeed(downloading.downloadingSpeed), " · ", this.formatBytes(downloading.downloadedSize), " ", l("installation_progress_downloading_of"), " ", this.formatBytes(downloading.totalFileSize)));
  33885.  
  33886.                   case "downloaded":
  33887.                     return _react2["default"].DOM.td({
  33888.                         className: "installation-list_progress-col"
  33889.                     }, _react2["default"].DOM.div({
  33890.                         className: "installation-list_progress-stage"
  33891.                     }, l("installation_progress_stage_downloaded")), _react2["default"].DOM.div({
  33892.                         className: "installation-list_progress-bg"
  33893.                     }, _react2["default"].DOM.div({
  33894.                         className: "installation-list_progress installation-list_progress-linear",
  33895.                         style: {
  33896.                             width: "0%"
  33897.                         }
  33898.                     })), _react2["default"].DOM.div({
  33899.                         className: "installation-list_progress-bottom-spacer"
  33900.                     }));
  33901.  
  33902.                   case "unzipping":
  33903.                   case "unzipped":
  33904.                     return _react2["default"].DOM.td({
  33905.                         className: "installation-list_progress-col"
  33906.                     }, _react2["default"].DOM.div({
  33907.                         className: "installation-list_progress-stage"
  33908.                     }, "2/3 ", l("installation_progress_stage_unzipping")), _react2["default"].DOM.div({
  33909.                         className: "installation-list_progress-bg"
  33910.                     }, _react2["default"].DOM.div({
  33911.                         className: "installation-list_progress installation-list_progress-linear",
  33912.                         style: {
  33913.                             width: unzipping.unzippedPercents + "%"
  33914.                         }
  33915.                     })), _react2["default"].DOM.div({
  33916.                         className: "installation-list_progress-info"
  33917.                     }, l("installation_progress_unzipping_unzipped"), " ", unzipping.unzippedPercents + " %"));
  33918.  
  33919.                   case "installing":
  33920.                     return _react2["default"].DOM.td({
  33921.                         className: "installation-list_progress-col"
  33922.                     }, _react2["default"].DOM.div({
  33923.                         className: "installation-list_progress-stage"
  33924.                     }, isDriver ? "3/3" : "2/2", " ", l("installation_progress_stage_installing")), _react2["default"].DOM.div({
  33925.                         className: "installation-list_progress-bg"
  33926.                     }, this.shouldFixProgress() ? _react2["default"].DOM.div({
  33927.                         className: "installation-list_progress",
  33928.                         style: {
  33929.                             width: "100%"
  33930.                         }
  33931.                     }, _react2["default"].DOM.img({
  33932.                         src: "img/installation/statuses/progress.gif",
  33933.                         width: "100%"
  33934.                     })) : _react2["default"].DOM.div({
  33935.                         className: "installation-list_progress installation-list_progress-infinite",
  33936.                         style: {
  33937.                             width: "100%"
  33938.                         }
  33939.                     })), _react2["default"].DOM.div({
  33940.                         className: "installation-list_progress-bottom-spacer"
  33941.                     }));
  33942.  
  33943.                   case "done":
  33944.                     return _react2["default"].DOM.td({
  33945.                         className: "installation-list_progress-col"
  33946.                     }, _react2["default"].DOM.div({
  33947.                         className: "installation-list_progress-stage"
  33948.                     }, l("installation_progress_stage_done")), _react2["default"].DOM.div({
  33949.                         className: "installation-list_progress-bg"
  33950.                     }, _react2["default"].DOM.div({
  33951.                         className: "installation-list_progress installation-list_progress-linear",
  33952.                         style: {
  33953.                             width: "100%"
  33954.                         }
  33955.                     })), _react2["default"].DOM.div({
  33956.                         className: "installation-list_progress-bottom-spacer"
  33957.                     }));
  33958.  
  33959.                   case "error":
  33960.                     return _react2["default"].DOM.td({
  33961.                         className: "installation-list_progress-col"
  33962.                     }, _react2["default"].DOM.div({
  33963.                         className: "installation-list_progress-stage"
  33964.                     }, _react2["default"].DOM.span({
  33965.                         style: {
  33966.                             color: "#d95c4c"
  33967.                         }
  33968.                     }, dictionary[error.errorType], " ")));
  33969.  
  33970.                   case "canceled":
  33971.                     return _react2["default"].DOM.td({
  33972.                         className: "installation-list_progress-col"
  33973.                     }, _react2["default"].DOM.div({
  33974.                         className: "installation-list_progress-stage"
  33975.                     }, _react2["default"].DOM.span({
  33976.                         style: {
  33977.                             color: "#555"
  33978.                         }
  33979.                     }, l("installation_canceled"))));
  33980.                 }
  33981.             }
  33982.         });
  33983.         module.exports = exports["default"];
  33984.     }).call(exports, __webpack_require__(6));
  33985. }, function(module, exports, __webpack_require__) {
  33986.     "use strict";
  33987.     function _interopRequireDefault(obj) {
  33988.         return obj && obj.__esModule ? obj : {
  33989.             "default": obj
  33990.         };
  33991.     }
  33992.     exports.__esModule = !0;
  33993.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  33994.     exports["default"] = _react2["default"].createClass({
  33995.         displayName: "InstallationItemRowStatus",
  33996.         mixins: [ __webpack_require__(5) ],
  33997.         propTypes: {
  33998.             status: _react.PropTypes.string.isRequired,
  33999.             currentLanguage: _react.PropTypes.string.isRequired
  34000.         },
  34001.         getInitialState: function() {
  34002.             return {
  34003.                 currentStageStart: 0,
  34004.                 prevStagesDuration: 0,
  34005.                 secondsElapsed: 0
  34006.             };
  34007.         },
  34008.         tick: function() {
  34009.             var status = this.props.status;
  34010.             if ("creating" === status || "downloading" === status || "unzipping" === status || "installing" === status) {
  34011.                 var now = Date.now();
  34012.                 if (0 === this.state.currentStageStart) this.setState({
  34013.                     currentStageStart: now
  34014.                 });
  34015.                 var diff = Math.round((now - this.state.currentStageStart) / 1e3);
  34016.                 this.setState({
  34017.                     secondsElapsed: this.state.prevStagesDuration + diff
  34018.                 });
  34019.             } else if ("created" === status || "done" === status || "error" === status || "canceled" === status) {
  34020.                 this.setState({
  34021.                     currentStageStart: 0,
  34022.                     prevStagesDuration: 0,
  34023.                     secondsElapsed: 0
  34024.                 });
  34025.                 clearInterval(this.interval);
  34026.             } else if ("downloaded" === status && 0 !== this.state.currentStageStart) {
  34027.                 this.setState({
  34028.                     prevStagesDuration: this.state.secondsElapsed
  34029.                 });
  34030.                 this.setState({
  34031.                     currentStageStart: 0
  34032.                 });
  34033.             }
  34034.         },
  34035.         componentDidMount: function() {
  34036.             var _this = this;
  34037.             this.interval = setInterval(function() {
  34038.                 try {
  34039.                     _this.tick();
  34040.                 } catch (e) {
  34041.                     clearInterval(_this.interval);
  34042.                 }
  34043.             }, 1e3);
  34044.         },
  34045.         componentWillUnmount: function() {
  34046.             clearInterval(this.interval);
  34047.         },
  34048.         formatTime: function(seconds) {
  34049.             var hours = this.formatTwoDigits(parseInt(seconds / 3600, 10) % 24), minutes = this.formatTwoDigits(parseInt(seconds / 60, 10) % 60);
  34050.             seconds = this.formatTwoDigits(seconds % 60);
  34051.             return (seconds >= 3600 ? hours + ":" : "") + minutes + ":" + seconds;
  34052.         },
  34053.         formatTwoDigits: function(n) {
  34054.             return n < 10 ? "0" + n : n;
  34055.         },
  34056.         render: function() {
  34057.             return _react2["default"].DOM.td({
  34058.                 className: "installation-list_status-col",
  34059.                 style: {
  34060.                     paddingRight: "48px"
  34061.                 }
  34062.             }, this.renderStatusColContent());
  34063.         },
  34064.         renderStatusColContent: function() {
  34065.             switch (this.props.status) {
  34066.               case "waiting":
  34067.               case "downloaded":
  34068.                 return (0, _Img2["default"])({
  34069.                     className: "installation-list_status-icon",
  34070.                     src: "img/installation/statuses/sleep.png",
  34071.                     width: "40",
  34072.                     height: "24"
  34073.                 });
  34074.  
  34075.               case "creating":
  34076.               case "downloading":
  34077.               case "unzipping":
  34078.               case "unzipped":
  34079.               case "installing":
  34080.                 return _react2["default"].DOM.div({
  34081.                     className: "installation-list_status-timer"
  34082.                 }, this.formatTime(this.state.secondsElapsed));
  34083.  
  34084.               case "created":
  34085.               case "done":
  34086.                 return (0, _Img2["default"])({
  34087.                     className: "installation-list_status-icon",
  34088.                     src: "img/installation/statuses/done.png",
  34089.                     width: "40",
  34090.                     height: "24"
  34091.                 });
  34092.  
  34093.               case "error":
  34094.                 return (0, _Img2["default"])({
  34095.                     className: "installation-list_status-icon",
  34096.                     src: "img/installation/statuses/error.png",
  34097.                     width: "40",
  34098.                     height: "24"
  34099.                 });
  34100.  
  34101.               case "canceled":
  34102.                 return _react2["default"].DOM.div(null);
  34103.             }
  34104.         }
  34105.     });
  34106.     module.exports = exports["default"];
  34107. }, function(module, exports, __webpack_require__) {
  34108.     "use strict";
  34109.     (function(l) {
  34110.         function _interopRequireDefault(obj) {
  34111.             return obj && obj.__esModule ? obj : {
  34112.                 "default": obj
  34113.             };
  34114.         }
  34115.         exports.__esModule = !0;
  34116.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _getInternetExplorerVersion = __webpack_require__(100), _getInternetExplorerVersion2 = _interopRequireDefault(_getInternetExplorerVersion), internetExplorerVersion = (0,
  34117.         _getInternetExplorerVersion2["default"])();
  34118.         exports["default"] = _react2["default"].createClass({
  34119.             displayName: "InstallationTitleTable",
  34120.             mixins: [ __webpack_require__(5) ],
  34121.             propTypes: {
  34122.                 currentLanguage: _react.PropTypes.string.isRequired
  34123.             },
  34124.             shouldFixHoverIcon: function() {
  34125.                 if (-1 !== internetExplorerVersion) if (internetExplorerVersion < 10) return !0; else return !1; else return !1;
  34126.             },
  34127.             render: function() {
  34128.                 return _react2["default"].DOM.table({
  34129.                     id: "installation-title",
  34130.                     className: "installation-title"
  34131.                 }, _react2["default"].DOM.thead(null), _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr({
  34132.                     className: "installation-title_row"
  34133.                 }, _react2["default"].DOM.td({
  34134.                     className: "installation-title_name-col"
  34135.                 }, _react2["default"].DOM.div({
  34136.                     className: "installation-title_name"
  34137.                 }, l("installation_title_name"))), _react2["default"].DOM.td(null), _react2["default"].DOM.td(null), _react2["default"].DOM.td(null))));
  34138.             }
  34139.         });
  34140.         module.exports = exports["default"];
  34141.     }).call(exports, __webpack_require__(6));
  34142. }, function(module, exports, __webpack_require__) {
  34143.     "use strict";
  34144.     (function(l) {
  34145.         function _interopRequireDefault(obj) {
  34146.             return obj && obj.__esModule ? obj : {
  34147.                 "default": obj
  34148.             };
  34149.         }
  34150.         function mapState(state) {
  34151.             return {
  34152.                 installation: state.installation,
  34153.                 settings: state.settings,
  34154.                 currentLanguage: state.lang.currentLanguage
  34155.             };
  34156.         }
  34157.         exports.__esModule = !0;
  34158.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _installationActions = __webpack_require__(666), _appActions = __webpack_require__(123), _InstallationHeader = __webpack_require__(686), _InstallationHeader2 = _interopRequireDefault(_InstallationHeader), _InstallationHeaderPromo = __webpack_require__(687), _InstallationHeaderPromo2 = _interopRequireDefault(_InstallationHeaderPromo), _InstallationTitleTable = __webpack_require__(693), _InstallationTitleTable2 = _interopRequireDefault(_InstallationTitleTable), _InstallationItemRow = __webpack_require__(688), _InstallationItemRow2 = _interopRequireDefault(_InstallationItemRow);
  34159.         __webpack_require__(785);
  34160.         var Installation = _react2["default"].createClass({
  34161.             displayName: "Installation",
  34162.             mixins: [ __webpack_require__(5) ],
  34163.             propTypes: {
  34164.                 installation: _react.PropTypes.object.isRequired,
  34165.                 settings: _react.PropTypes.object.isRequired,
  34166.                 currentLanguage: _react.PropTypes.string.isRequired,
  34167.                 cancelItemInstallation: _react.PropTypes.func,
  34168.                 confirmAvInstallation: _react.PropTypes.bool,
  34169.                 showLeftArrow: _react.PropTypes.func.isRequired,
  34170.                 showRightArrow: _react.PropTypes.func.isRequired,
  34171.                 hideArrows: _react.PropTypes.func.isRequired,
  34172.                 confirmMinimizing: _react.PropTypes.func.isRequired
  34173.             },
  34174.             getStageWeight: function(stage, item) {
  34175.                 switch (stage) {
  34176.                   case "downloading":
  34177.                     return !0 ? 1 : .3;
  34178.  
  34179.                   case "unzipping":
  34180.                     return !item.isDriver ? 0 : !0 ? .3 : 1;
  34181.  
  34182.                   case "installing":
  34183.                     return 1;
  34184.                 }
  34185.             },
  34186.             getStageProgress: function(stage, item) {
  34187.                 var statuses = [ "waiting", "downloading", "downloaded", "unzipping", "unzipped", "installing", "done", "error" ], _item$downloading = item.downloading, downloadedSize = _item$downloading.downloadedSize, totalFileSize = _item$downloading.totalFileSize, unzippedPercents = item.unzipping.unzippedPercents;
  34188.                 switch (stage) {
  34189.                   case "downloading":
  34190.                     return totalFileSize ? Math.min(downloadedSize / totalFileSize, 1) : 0;
  34191.  
  34192.                   case "unzipping":
  34193.                     return !item.isDriver ? 0 : unzippedPercents / 100;
  34194.  
  34195.                   default:
  34196.                     return statuses.indexOf(item.status) > statuses.indexOf(stage) ? 1 : 0;
  34197.                 }
  34198.             },
  34199.             getHeaderPercents: function() {
  34200.                 var _this = this, installation = this.props.installation, items = installation.items, stages = [ "downloading", "unzipping", "installing" ], totalValue = 0, currentValue = 0;
  34201.                 items.forEach(function(item, index) {
  34202.                     stages.forEach(function(stage) {
  34203.                         totalValue += _this.getStageWeight(stage, item);
  34204.                         currentValue += _this.getStageProgress(stage, item) * _this.getStageWeight(stage, item);
  34205.                     });
  34206.                 });
  34207.                 return totalValue ? Math.round(100 * currentValue / totalValue) : 0;
  34208.             },
  34209.             shouldShowPromoBanner: function() {
  34210.                 var _props = this.props, installation = _props.installation, settings = _props.settings, promos = installation.promos;
  34211.                 if (settings.general.settings.hideInstallationBanners.value || !promos || 0 === promos.length) return !1; else return !0;
  34212.             },
  34213.             renderHeader: function() {
  34214.                 var _props2 = this.props, currentLanguage = _props2.currentLanguage, installation = _props2.installation, settings = _props2.settings, confirmPromoInstallation = _props2.confirmPromoInstallation, preparing = installation.preparing, promos = installation.promos, items = installation.items, itemsContainDrivers = installation.itemsContainDrivers, headerProps = {
  34215.                     currentLanguage: currentLanguage,
  34216.                     settings: settings,
  34217.                     preparing: preparing,
  34218.                     percents: this.getHeaderPercents(),
  34219.                     promos: promos,
  34220.                     items: items,
  34221.                     itemsContainDrivers: itemsContainDrivers,
  34222.                     confirmPromoInstallation: confirmPromoInstallation
  34223.                 };
  34224.                 return (0, _InstallationHeader2["default"])(headerProps);
  34225.             },
  34226.             renderInstallationItemsTable: function() {
  34227.                 var itemsContainDrivers = this.props.installation.itemsContainDrivers;
  34228.                 return _react2["default"].DOM.table({
  34229.                     id: "installation-list",
  34230.                     className: "installation-list",
  34231.                     border: "1"
  34232.                 }, _react2["default"].DOM.thead(null), _react2["default"].DOM.tbody(null, itemsContainDrivers ? this.renderRestorePointItem() : null, this.renderInstallationItems()));
  34233.             },
  34234.             renderRestorePointItem: function() {
  34235.                 var _props3 = this.props, currentLanguage = _props3.currentLanguage, installation = _props3.installation, preparing = installation.preparing, restorePointStatus = installation.restorePointStatus, itemProps = {
  34236.                     currentLanguage: currentLanguage,
  34237.                     id: "restore_point",
  34238.                     isRestorePoint: !0,
  34239.                     itemCategory: "restore_point",
  34240.                     itemDescription: l("installation_item_description_restorepoint"),
  34241.                     status: preparing ? "creating" : !restorePointStatus || "ok" !== restorePointStatus.status ? "error" : "created",
  34242.                     error: {
  34243.                         errorType: restorePointStatus && restorePointStatus.status || ""
  34244.                     },
  34245.                     odd: !1
  34246.                 };
  34247.                 return (0, _InstallationItemRow2["default"])(itemProps);
  34248.             },
  34249.             compareInstallationItems: function(item1, item2) {
  34250.                 if (item1.isDriver && !item2.isDriver) return -1;
  34251.                 if (!item1.isDriver && item2.isDriver) return 1;
  34252.                 if ("Drivers" === item1.category && "Drivers" !== item2.category) return -1;
  34253.                 if ("Drivers" !== item1.category && "Drivers" === item2.category) return 1; else return item1.priority - item2.priority;
  34254.             },
  34255.             renderInstallationItems: function() {
  34256.                 var list = [], _props4 = this.props, currentLanguage = _props4.currentLanguage, installation = _props4.installation, cancelItemInstallation = _props4.cancelItemInstallation, items = installation.items, itemsContainDrivers = installation.itemsContainDrivers;
  34257.                 items.sort(this.compareInstallationItems).forEach(function(item, index) {
  34258.                     var id = item.id, name = item.name, isDriver = item.isDriver, isPartner = item.isPartner, status = item.status, error = item.error, downloading = item.downloading, unzipping = item.unzipping, itemProps = {
  34259.                         currentLanguage: currentLanguage,
  34260.                         id: id,
  34261.                         name: name,
  34262.                         isDriver: isDriver,
  34263.                         pack: isDriver ? item.recommendedDriver.pack.replace(/_\d+$/, "") : "",
  34264.                         itemCategory: isDriver ? item.recommendedDriver["class"] : item.category,
  34265.                         softDescription: !isDriver ? item.description : null,
  34266.                         softEula: !isDriver ? item.eula : null,
  34267.                         softPolicy: !isDriver ? item.policy : null,
  34268.                         isPartner: isPartner,
  34269.                         status: status,
  34270.                         error: error,
  34271.                         downloading: downloading,
  34272.                         unzipping: unzipping,
  34273.                         cancelItemInstallation: cancelItemInstallation,
  34274.                         odd: (!itemsContainDrivers ? index : index + 1) % 2 == 1
  34275.                     };
  34276.                     list.push((0, _InstallationItemRow2["default"])(itemProps));
  34277.                 });
  34278.                 return list;
  34279.             },
  34280.             handleMouseMove: function(e, id) {
  34281.                 var _this2 = this;
  34282.                 e.stopPropagation();
  34283.                 if (this.hoveringItemId !== id) {
  34284.                     this.hoveringItemId = id;
  34285.                     clearInterval(this.hoveringTimer);
  34286.                     var closing = null === id;
  34287.                     this.hoveringTimer = setTimeout(function() {
  34288.                         var _props5 = _this2.props, showLeftArrow = _props5.showLeftArrow, showRightArrow = _props5.showRightArrow, hideArrows = _props5.hideArrows;
  34289.                         if ("installation_left_arrow" === id) showLeftArrow(); else if ("installation_right_arrow" === id) showRightArrow(); else hideArrows();
  34290.                     }, closing ? 300 : 50);
  34291.                 }
  34292.             },
  34293.             render: function() {
  34294.                 var _props6 = this.props, installation = _props6.installation, currentLanguage = _props6.currentLanguage, confirmPromoInstallation = _props6.confirmPromoInstallation, confirmMinimizing = _props6.confirmMinimizing, leftArrowIsVisible = installation.leftArrowIsVisible, rightArrowIsVisible = installation.rightArrowIsVisible, promos = installation.promos;
  34295.                 return _react2["default"].DOM.div({
  34296.                     className: "top-for-header positioning-for-header",
  34297.                     style: {
  34298.                         overflow: "hidden"
  34299.                     }
  34300.                 }, _react2["default"].DOM.div({
  34301.                     className: "installation_wrapper",
  34302.                     id: "installation_wrapper"
  34303.                 }, this.renderHeader(), this.shouldShowPromoBanner() ? (0, _InstallationHeaderPromo2["default"])({
  34304.                     promos: promos,
  34305.                     leftArrowIsVisible: leftArrowIsVisible,
  34306.                     rightArrowIsVisible: rightArrowIsVisible,
  34307.                     currentLanguage: currentLanguage,
  34308.                     confirmPromoInstallation: confirmPromoInstallation,
  34309.                     handleMouseMove: this.handleMouseMove,
  34310.                     confirmMinimizing: confirmMinimizing
  34311.                 }) : null, _react2["default"].DOM.div({
  34312.                     className: "installation-table_wrapper",
  34313.                     style: {
  34314.                         display: "block"
  34315.                     }
  34316.                 }, (0, _InstallationTitleTable2["default"])({
  34317.                     currentLanguage: currentLanguage
  34318.                 }), this.renderInstallationItemsTable())));
  34319.             }
  34320.         }), actions = {
  34321.             cancelItemInstallation: _installationActions.cancelItemInstallation,
  34322.             confirmPromoInstallation: _installationActions.confirmPromoInstallation,
  34323.             showLeftArrow: _installationActions.showLeftArrow,
  34324.             showRightArrow: _installationActions.showRightArrow,
  34325.             hideArrows: _installationActions.hideArrows,
  34326.             confirmMinimizing: _appActions.confirmMinimizing
  34327.         };
  34328.         exports["default"] = (0, _connect2["default"])(mapState, actions)(Installation);
  34329.         module.exports = exports["default"];
  34330.     }).call(exports, __webpack_require__(6));
  34331. }, function(module, exports, __webpack_require__) {
  34332.     "use strict";
  34333.     function _interopRequireDefault(obj) {
  34334.         return obj && obj.__esModule ? obj : {
  34335.             "default": obj
  34336.         };
  34337.     }
  34338.     exports.__esModule = !0;
  34339.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Menu = __webpack_require__(699), _Menu2 = _interopRequireDefault(_Menu);
  34340.     __webpack_require__(788);
  34341.     var Layout = _react2["default"].createClass({
  34342.         displayName: "Layout",
  34343.         mixins: [ __webpack_require__(5) ],
  34344.         propTypes: {
  34345.             currentLanguage: _react.PropTypes.string.isRequired,
  34346.             children: _react.PropTypes.any
  34347.         },
  34348.         render: function() {
  34349.             return _react2["default"].DOM.div({
  34350.                 className: "main"
  34351.             }, _react2["default"].DOM.div({
  34352.                 style: {
  34353.                     overflow: "auto",
  34354.                     height: "100%"
  34355.                 }
  34356.             }, _react2["default"].DOM.table({
  34357.                 style: {
  34358.                     width: "100%",
  34359.                     height: "100%"
  34360.                 }
  34361.             }, _react2["default"].DOM.tbody({
  34362.                 style: {
  34363.                     height: "100%"
  34364.                 }
  34365.             }, _react2["default"].DOM.tr({
  34366.                 style: {
  34367.                     height: "100%"
  34368.                 }
  34369.             }, _react2["default"].DOM.td({
  34370.                 className: "menu"
  34371.             }, this.renderMenu()), this.props.children)))));
  34372.         },
  34373.         renderMenu: function() {
  34374.             var currentLanguage = this.props.currentLanguage;
  34375.             return (0, _Menu2["default"])({
  34376.                 currentLanguage: currentLanguage
  34377.             });
  34378.         }
  34379.     });
  34380.     exports["default"] = Layout;
  34381.     module.exports = exports["default"];
  34382. }, function(module, exports, __webpack_require__) {
  34383.     "use strict";
  34384.     (function(l) {
  34385.         function _interopRequireDefault(obj) {
  34386.             return obj && obj.__esModule ? obj : {
  34387.                 "default": obj
  34388.             };
  34389.         }
  34390.         function mapState(state) {
  34391.             return {
  34392.                 loading: state.loading
  34393.             };
  34394.         }
  34395.         exports.__esModule = !0;
  34396.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _menuActions = __webpack_require__(62);
  34397.         __webpack_require__(789);
  34398.         var Loading = _react2["default"].createClass({
  34399.             displayName: "Loading",
  34400.             propTypes: {
  34401.                 loading: _react.PropTypes.object.isRequired,
  34402.                 navigate: _react.PropTypes.func.isRequired,
  34403.                 currentLanguage: _react.PropTypes.string.isRequired
  34404.             },
  34405.             render: function() {
  34406.                 var _this = this, loading = this.props.loading, now = loading.now, backgroundImage = void 0, description = void 0;
  34407.                 switch (now) {
  34408.                   case "BACKUP":
  34409.                     backgroundImage = "url(Tools/load8.gif)";
  34410.                     description = _react2["default"].DOM.span(null, l("loading_backup_drivers"), "...");
  34411.                     break;
  34412.  
  34413.                   case "BACKUP_DONE":
  34414.                     backgroundImage = "none";
  34415.                     description = _react2["default"].DOM.span(null, l("loading_backup_done"), _react2["default"].DOM.br(null), _react2["default"].DOM.button({
  34416.                         className: "button loading-button",
  34417.                         onClick: function() {
  34418.                             _this.openNextScreen("DRIVERS");
  34419.                         }
  34420.                     }, l("loading_button_finish")));
  34421.                     break;
  34422.  
  34423.                   case "BACKUP_FAILED":
  34424.                     backgroundImage = "none";
  34425.                     description = _react2["default"].DOM.span(null, l("loading_backup_failed"), _react2["default"].DOM.br(null), _react2["default"].DOM.button({
  34426.                         className: "button loading-button",
  34427.                         onClick: function() {
  34428.                             _this.openNextScreen("DRIVERS");
  34429.                         }
  34430.                     }, l("loading_button_finish")));
  34431.                     break;
  34432.  
  34433.                   case "RUN_ERROR":
  34434.                     backgroundImage = "none";
  34435.                     description = _react2["default"].DOM.span({
  34436.                         style: {
  34437.                             fontSize: "24px"
  34438.                         },
  34439.                         dangerouslySetInnerHTML: {
  34440.                             __html: l("about_run_error")
  34441.                         }
  34442.                     });
  34443.                     break;
  34444.  
  34445.                   default:
  34446.                     backgroundImage = "url(Tools/load8.gif)";
  34447.                     description = _react2["default"].DOM.span(null);
  34448.                 }
  34449.                 return _react2["default"].DOM.div({
  34450.                     className: "loading",
  34451.                     style: {
  34452.                         backgroundImage: backgroundImage
  34453.                     }
  34454.                 }, _react2["default"].DOM.div({
  34455.                     className: "loading-progress"
  34456.                 }, _react2["default"].DOM.span({
  34457.                     className: "loading-description"
  34458.                 }, description)));
  34459.             },
  34460.             openNextScreen: function(nextScreen) {
  34461.                 var navigate = this.props.navigate;
  34462.                 document.activeElement && document.activeElement.blur();
  34463.                 navigate(nextScreen);
  34464.             }
  34465.         }), actions = {
  34466.             navigate: _menuActions.navigate
  34467.         };
  34468.         exports["default"] = (0, _connect2["default"])(mapState, actions)(Loading);
  34469.         module.exports = exports["default"];
  34470.     }).call(exports, __webpack_require__(6));
  34471. }, function(module, exports, __webpack_require__) {
  34472.     "use strict";
  34473.     (function(l) {
  34474.         function _interopRequireDefault(obj) {
  34475.             return obj && obj.__esModule ? obj : {
  34476.                 "default": obj
  34477.             };
  34478.         }
  34479.         function mapState(state) {
  34480.             return {
  34481.                 loading: state.loading
  34482.             };
  34483.         }
  34484.         exports.__esModule = !0;
  34485.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _utils = __webpack_require__(325);
  34486.         __webpack_require__(790);
  34487.         var LoadingScreen = _react2["default"].createClass({
  34488.             displayName: "LoadingScreen",
  34489.             mixins: [ __webpack_require__(5) ],
  34490.             propTypes: {
  34491.                 progressPercents: _react.PropTypes.number.isRequired,
  34492.                 loading: _react.PropTypes.object.isRequired,
  34493.                 currentLanguage: _react.PropTypes.string.isRequired
  34494.             },
  34495.             getInitialState: function() {
  34496.                 return {
  34497.                     progressPercents: 0
  34498.                 };
  34499.             },
  34500.             componentDidMount: function() {
  34501.                 var _this = this;
  34502.                 document.documentElement.removeAttribute("style");
  34503.                 (0, _utils.fitApplicationWindow)();
  34504.                 this.progressTimer = setInterval(function() {
  34505.                     try {
  34506.                         _this.setState({
  34507.                             progressPercents: _this.state.progressPercents + .3
  34508.                         });
  34509.                         if (_this.state.progressPercents >= 100) clearInterval(_this.progressTimer);
  34510.                     } catch (e) {
  34511.                         clearInterval(_this.progressTimer);
  34512.                     }
  34513.                 }, 20);
  34514.             },
  34515.             componentWillUnmount: function() {
  34516.                 clearInterval(this.progressTimer);
  34517.             },
  34518.             render: function() {
  34519.                 var loading = this.props.loading, status = loading.status, dictionary = {
  34520.                     system_scanning: l("loading_preparing"),
  34521.                     system_scan_finished: l("loading_system_scanning"),
  34522.                     api_response_received: l("loading_sending_api_request"),
  34523.                     installed_programs_scan_finished: l("loading_checking_installed_programs"),
  34524.                     protect_api_response_received: l("loading_ordering_drivers")
  34525.                 };
  34526.                 return _react2["default"].DOM.div({
  34527.                     id: "loading-screen",
  34528.                     className: "loading-screen"
  34529.                 }, _react2["default"].DOM.div({
  34530.                     className: "loading-screen_logo"
  34531.                 }), _react2["default"].DOM.div({
  34532.                     className: "loading-screen_progress-wrapper"
  34533.                 }, _react2["default"].DOM.div({
  34534.                     className: "loading-screen_progress-status"
  34535.                 }, dictionary[status]), _react2["default"].DOM.div({
  34536.                     className: "loading-screen_progress-bg"
  34537.                 }, _react2["default"].DOM.div({
  34538.                     className: "loading-screen_progress loading-screen_progress-linear",
  34539.                     style: {
  34540.                         width: this.state.progressPercents + "%"
  34541.                     }
  34542.                 }))));
  34543.             }
  34544.         });
  34545.         exports["default"] = (0, _connect2["default"])(mapState)(LoadingScreen);
  34546.         module.exports = exports["default"];
  34547.     }).call(exports, __webpack_require__(6));
  34548. }, function(module, exports, __webpack_require__) {
  34549.     "use strict";
  34550.     exports.__esModule = !0;
  34551.     var _LoadingScreen = __webpack_require__(697), _LoadingScreen2 = function(obj) {
  34552.         return obj && obj.__esModule ? obj : {
  34553.             "default": obj
  34554.         };
  34555.     }(_LoadingScreen);
  34556.     exports["default"] = _LoadingScreen2["default"];
  34557.     module.exports = exports["default"];
  34558. }, function(module, exports, __webpack_require__) {
  34559.     "use strict";
  34560.     (function(l) {
  34561.         function _interopRequireDefault(obj) {
  34562.             return obj && obj.__esModule ? obj : {
  34563.                 "default": obj
  34564.             };
  34565.         }
  34566.         function mapState(state) {
  34567.             return {
  34568.                 languages: state.lang.languages,
  34569.                 page: state.page,
  34570.                 app: state.app,
  34571.                 settings: state.settings
  34572.             };
  34573.         }
  34574.         exports.__esModule = !0;
  34575.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _langActions = __webpack_require__(229), _menuActions = __webpack_require__(62), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  34576.         __webpack_require__(791);
  34577.         var Menu = _react2["default"].createClass({
  34578.             displayName: "Menu",
  34579.             propTypes: {
  34580.                 currentLanguage: _react.PropTypes.string.isRequired,
  34581.                 changeLang: _react.PropTypes.func,
  34582.                 languages: _react.PropTypes.array,
  34583.                 loadLanguageList: _react.PropTypes.func,
  34584.                 navigate: _react.PropTypes.func,
  34585.                 openSystemMenu: _react.PropTypes.func,
  34586.                 page: _react.PropTypes.string.isRequired,
  34587.                 app: _react.PropTypes.object.isRequired,
  34588.                 settings: _react.PropTypes.object.isRequired
  34589.             },
  34590.             render: function() {
  34591.                 return _react2["default"].DOM.div({
  34592.                     className: "menu_wrapper"
  34593.                 }, this.renderMainMenu(), this.renderBottomMenu());
  34594.             },
  34595.             renderMainMenu: function() {
  34596.                 var _props = this.props, navigate = _props.navigate, openSystemMenu = _props.openSystemMenu, page = _props.page, settings = _props.settings, currentLanguage = _props.currentLanguage;
  34597.                 return _react2["default"].DOM.div({
  34598.                     onMouseDown: function(e) {
  34599.                         e.preventDefault();
  34600.                     },
  34601.                     className: "menu-navigation_holder"
  34602.                 }, _react2["default"].DOM.div({
  34603.                     className: "menu-navigation"
  34604.                 }, _react2["default"].DOM.a({
  34605.                     href: "#",
  34606.                     onMouseDown: function() {
  34607.                         return navigate("DRIVERS");
  34608.                     },
  34609.                     className: "menu_copyright-btn menu_item_first " + ("DRIVERS" === page ? "active" : ""),
  34610.                     title: l("menu_install_drivers")
  34611.                 }, _react2["default"].DOM.span({
  34612.                     className: "menu_copyright-btn-icon-holder"
  34613.                 }, (0, _Img2["default"])({
  34614.                     src: "img/screens/menu-drivers.png",
  34615.                     className: "menu_copyright-btn-icon menu_copyright-btn-icon-system",
  34616.                     id: "m-pc",
  34617.                     width: 22,
  34618.                     height: 22
  34619.                 })), _react2["default"].DOM.span({
  34620.                     className: "menu_copyright-btn-text"
  34621.                 }, l("menu_drivers"))), _react2["default"].DOM.a({
  34622.                     href: "#",
  34623.                     onMouseDown: function() {
  34624.                         return navigate("PROGRAMS");
  34625.                     },
  34626.                     className: "menu_copyright-btn " + ("PROGRAMS" === page ? "active" : ""),
  34627.                     title: l("menu_install_programs")
  34628.                 }, _react2["default"].DOM.span({
  34629.                     className: "menu_copyright-btn-icon-holder"
  34630.                 }, (0, _Img2["default"])({
  34631.                     src: "img/screens/menu-software.png",
  34632.                     className: "menu_copyright-btn-icon menu_copyright-btn-icon-system",
  34633.                     id: "m-apps",
  34634.                     width: 22,
  34635.                     height: 22
  34636.                 })), _react2["default"].DOM.span({
  34637.                     className: "menu_copyright-btn-text"
  34638.                 }, l("menu_programs"))), settings.general.settings.enableProtect.value ? _react2["default"].DOM.a({
  34639.                     href: "#",
  34640.                     onMouseDown: function() {
  34641.                         return navigate("PROTECT");
  34642.                     },
  34643.                     className: "menu_copyright-btn " + ("PROTECT" === page ? "active" : ""),
  34644.                     title: l("menu_protect_title")
  34645.                 }, _react2["default"].DOM.span({
  34646.                     className: "menu_copyright-btn-icon-holder"
  34647.                 }, (0, _Img2["default"])({
  34648.                     src: "img/screens/menu-protect.png",
  34649.                     className: "menu_copyright-btn-icon menu_copyright-btn-icon-system",
  34650.                     id: "m-protect",
  34651.                     width: 22,
  34652.                     height: 22
  34653.                 })), _react2["default"].DOM.span({
  34654.                     className: "menu_copyright-btn-text"
  34655.                 }, l("menu_protect_clean_up"))) : null, settings.general.settings.enableDiagnostics.value ? _react2["default"].DOM.a({
  34656.                     href: "#",
  34657.                     onMouseDown: function() {
  34658.                         return navigate("DIAGNOSTICS");
  34659.                     },
  34660.                     className: "menu_copyright-btn " + ("DIAGNOSTICS" === page ? "active" : ""),
  34661.                     title: l("menu_computer_diagnostics")
  34662.                 }, _react2["default"].DOM.span({
  34663.                     className: "menu_copyright-btn-icon-holder"
  34664.                 }, (0, _Img2["default"])({
  34665.                     src: "img/screens/menu-diagnostics.png",
  34666.                     className: "menu_copyright-btn-icon menu_copyright-btn-icon-system",
  34667.                     id: "m-toolkit",
  34668.                     width: 22,
  34669.                     height: 22
  34670.                 })), _react2["default"].DOM.span({
  34671.                     className: "menu_copyright-btn-text"
  34672.                 }, l("menu_diagnostics"))) : null, [].includes(currentLanguage) ? _react2["default"].DOM.a({
  34673.                     href: "#",
  34674.                     onMouseDown: function() {
  34675.                         return navigate("GAMES");
  34676.                     },
  34677.                     className: "menu_copyright-btn " + ("GAMES" === page ? "active" : ""),
  34678.                     title: l("menu_cloud_games_title")
  34679.                 }, _react2["default"].DOM.span({
  34680.                     className: "menu_copyright-btn-icon-holder menu_copyright-btn-icon-holder-wide"
  34681.                 }, (0, _Img2["default"])({
  34682.                     src: "img/screens/menu-games.png",
  34683.                     className: "menu_copyright-btn-icon menu_copyright-btn-icon-system",
  34684.                     id: "m-protect",
  34685.                     width: 22,
  34686.                     height: 22
  34687.                 })), _react2["default"].DOM.span({
  34688.                     className: "menu_copyright-btn-text"
  34689.                 }, l("menu_cloud_games")), _react2["default"].DOM.sup({
  34690.                     className: "menu_copyright-btn-text-sup"
  34691.                 }, l("menu_cloud_games_new"))) : null), _react2["default"].DOM.div({
  34692.                     className: "menu-system",
  34693.                     style: {
  34694.                         display: "none"
  34695.                     }
  34696.                 }, _react2["default"].DOM.a({
  34697.                     href: "#",
  34698.                     className: "menu_copyright-btn",
  34699.                     title: l("menu_control_panel"),
  34700.                     onClick: function() {
  34701.                         return openSystemMenu("CONTROL");
  34702.                     }
  34703.                 }, _react2["default"].DOM.span({
  34704.                     className: "menu_copyright-btn-icon-holder"
  34705.                 }, (0, _Img2["default"])({
  34706.                     src: "img/screens/control-panel-grey.png",
  34707.                     className: "menu_copyright-btn-icon",
  34708.                     width: 19,
  34709.                     height: 19
  34710.                 })), _react2["default"].DOM.span({
  34711.                     className: "menu_copyright-btn-text"
  34712.                 }, l("menu_control_panel"))), _react2["default"].DOM.a({
  34713.                     href: "#",
  34714.                     className: "menu_copyright-btn",
  34715.                     title: l("menu_create_recovery_point"),
  34716.                     onClick: function() {
  34717.                         return openSystemMenu("RECOVERY");
  34718.                     }
  34719.                 }, _react2["default"].DOM.span({
  34720.                     className: "menu_copyright-btn-icon-holder"
  34721.                 }, (0, _Img2["default"])({
  34722.                     src: "img/screens/backup-grey.png",
  34723.                     className: "menu_copyright-btn-icon",
  34724.                     width: 19,
  34725.                     height: 18
  34726.                 })), _react2["default"].DOM.span({
  34727.                     className: "menu_copyright-btn-text"
  34728.                 }, l("menu_create_recovery_point"))), _react2["default"].DOM.a({
  34729.                     href: "#",
  34730.                     className: "menu_copyright-btn",
  34731.                     title: l("menu_create_drivers_backup"),
  34732.                     onClick: function() {
  34733.                         return openSystemMenu("BACKUP");
  34734.                     }
  34735.                 }, _react2["default"].DOM.span({
  34736.                     className: "menu_copyright-btn-icon-holder"
  34737.                 }, (0, _Img2["default"])({
  34738.                     src: "img/screens/backup-grey.png",
  34739.                     className: "menu_copyright-btn-icon",
  34740.                     width: 19,
  34741.                     height: 18
  34742.                 })), _react2["default"].DOM.span({
  34743.                     className: "menu_copyright-btn-text"
  34744.                 }, l("menu_create_drivers_backup"))), _react2["default"].DOM.a({
  34745.                     href: "#",
  34746.                     className: "menu_copyright-btn",
  34747.                     title: l("menu_add_remove_programs"),
  34748.                     onClick: function() {
  34749.                         return openSystemMenu("UNINSTALL");
  34750.                     }
  34751.                 }, _react2["default"].DOM.span({
  34752.                     className: "menu_copyright-btn-icon-holder"
  34753.                 }, (0, _Img2["default"])({
  34754.                     src: "img/screens/install-programs-grey.png",
  34755.                     className: "menu_copyright-btn-icon",
  34756.                     width: 16,
  34757.                     height: 19
  34758.                 })), _react2["default"].DOM.span({
  34759.                     className: "menu_copyright-btn-text"
  34760.                 }, l("menu_add_remove_programs")))));
  34761.             },
  34762.             renderBottomMenu: function() {
  34763.                 var _props2 = this.props, navigate = _props2.navigate, page = _props2.page, changeLang = _props2.changeLang, currentLanguage = _props2.currentLanguage, languages = _props2.languages, openSystemMenu = _props2.openSystemMenu, app = _props2.app, language = languages.length ? languages.find(function(_ref) {
  34764.                     return _ref.id === currentLanguage;
  34765.                 }) : null;
  34766.                 return _react2["default"].DOM.div({
  34767.                     className: "menu_copyright"
  34768.                 }, !0 ? null : null, _react2["default"].DOM.br(null), _react2["default"].DOM.a({
  34769.                     href: "#",
  34770.                     onMouseDown: function(e) {
  34771.                         e.preventDefault();
  34772.                         navigate("SETTINGS");
  34773.                     },
  34774.                     className: "menu_copyright-btn " + ("SETTINGS" === page ? "active" : "")
  34775.                 }, _react2["default"].DOM.span({
  34776.                     className: "menu_copyright-btn-icon-holder"
  34777.                 }, (0, _Img2["default"])({
  34778.                     src: "img/screens/menu-settings-icon.png",
  34779.                     className: "menu_copyright-btn-icon",
  34780.                     width: "19",
  34781.                     height: "20"
  34782.                 })), _react2["default"].DOM.span({
  34783.                     className: "menu_copyright-btn-text"
  34784.                 }, l("menu_settings"))), "START" !== page ? _react2["default"].DOM.div({
  34785.                     className: "menu_language"
  34786.                 }, (0, _Img2["default"])({
  34787.                     src: "img/screens/menu-lang-icon.png",
  34788.                     className: "menu_language-icon",
  34789.                     width: "18",
  34790.                     height: "18"
  34791.                 }), (0, _Img2["default"])({
  34792.                     src: "img/screens/menu-lang-arrow.png",
  34793.                     className: "menu_language-label-arrow",
  34794.                     width: "10",
  34795.                     height: "7"
  34796.                 }), _react2["default"].DOM.span({
  34797.                     className: "menu_language-select"
  34798.                 }, _react2["default"].DOM.span({
  34799.                     className: "menu_language-label"
  34800.                 }, language ? language.name : "language"), _react2["default"].DOM.select({
  34801.                     name: "language-menu",
  34802.                     className: !app.isBurgerMenuOpened ? "" : "is-hidden",
  34803.                     onChange: function(e) {
  34804.                         return changeLang(e.target.value, "language clicked");
  34805.                     },
  34806.                     value: currentLanguage,
  34807.                     style: {
  34808.                         fontSize: 14
  34809.                     }
  34810.                 }, this.renderLanguages(languages)))) : null, _react2["default"].DOM.a({
  34811.                     href: "#",
  34812.                     className: "menu_copyright-btn",
  34813.                     onClick: function() {
  34814.                         return openSystemMenu("FEEDBACK", {
  34815.                             lang: currentLanguage
  34816.                         });
  34817.                     }
  34818.                 }, _react2["default"].DOM.span({
  34819.                     className: "menu_copyright-btn-icon-holder"
  34820.                 }, (0, _Img2["default"])({
  34821.                     src: "img/screens/menu-report-icon.png",
  34822.                     className: "menu_copyright-btn-icon",
  34823.                     width: "18",
  34824.                     height: "18"
  34825.                 })), _react2["default"].DOM.span({
  34826.                     className: "menu_copyright-btn-text"
  34827.                 }, l("menu_bugreport"))));
  34828.             },
  34829.             renderLanguages: function(languages) {
  34830.                 return languages.map(function(language) {
  34831.                     return _react2["default"].DOM.option({
  34832.                         key: language.id,
  34833.                         value: language.id
  34834.                     }, language.name);
  34835.                 });
  34836.             },
  34837.             componentDidMount: function() {
  34838.                 (0, this.props.loadLanguageList)();
  34839.             }
  34840.         }), actions = {
  34841.             changeLang: _langActions.changeLang,
  34842.             loadLanguageList: _langActions.loadLanguageList,
  34843.             navigate: _menuActions.navigate,
  34844.             openSystemMenu: _menuActions.openSystemMenu
  34845.         };
  34846.         exports["default"] = (0, _connect2["default"])(mapState, actions)(Menu);
  34847.         module.exports = exports["default"];
  34848.     }).call(exports, __webpack_require__(6));
  34849. }, function(module, exports, __webpack_require__) {
  34850.     "use strict";
  34851.     function _interopRequireDefault(obj) {
  34852.         return obj && obj.__esModule ? obj : {
  34853.             "default": obj
  34854.         };
  34855.     }
  34856.     exports.__esModule = !0;
  34857.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  34858.     __webpack_require__(792);
  34859.     exports["default"] = _react2["default"].createClass({
  34860.         displayName: "MoveToTop",
  34861.         mixins: [ __webpack_require__(5) ],
  34862.         propTypes: {
  34863.             page: _react.PropTypes.string.isRequired,
  34864.             currentLanguage: _react.PropTypes.string.isRequired
  34865.         },
  34866.         render: function() {
  34867.             return _react2["default"].DOM.a({
  34868.                 className: "move-to-top",
  34869.                 href: "#"
  34870.             }, (0, _Img2["default"])({
  34871.                 src: "../../img/screens/move-to-top_arrow.png",
  34872.                 className: "move-to-top_arrow",
  34873.                 width: "7",
  34874.                 height: "12"
  34875.             }), _react2["default"].DOM.span({
  34876.                 className: "move-to-top_text"
  34877.             }, "Наверх"));
  34878.         }
  34879.     });
  34880.     module.exports = exports["default"];
  34881. }, function(module, exports, __webpack_require__) {
  34882.     "use strict";
  34883.     (function(l) {
  34884.         exports.__esModule = !0;
  34885.         var _react = __webpack_require__(1), _react2 = function(obj) {
  34886.             return obj && obj.__esModule ? obj : {
  34887.                 "default": obj
  34888.             };
  34889.         }(_react);
  34890.         __webpack_require__(793);
  34891.         var NoInternetScreen = _react2["default"].createClass({
  34892.             displayName: "NoInternetScreen",
  34893.             mixins: [ __webpack_require__(5) ],
  34894.             propTypes: {
  34895.                 currentLanguage: _react.PropTypes.string.isRequired
  34896.             },
  34897.             render: function() {
  34898.                 return _react2["default"].DOM.div({
  34899.                     className: "top-for-header positioning-for-header"
  34900.                 }, _react2["default"].DOM.div({
  34901.                     className: "no-internet-screen_wrapper"
  34902.                 }, _react2["default"].DOM.table({
  34903.                     className: "no-internet-screen_header"
  34904.                 }, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  34905.                     className: "no-internet-screen_header-icon-col"
  34906.                 }, _react2["default"].DOM.span({
  34907.                     className: "no-internet-screen_header-icon"
  34908.                 }, _react2["default"].DOM.img({
  34909.                     src: "img/no_internet/no_internet-connection.png",
  34910.                     width: "102",
  34911.                     height: "75"
  34912.                 }))), _react2["default"].DOM.td({
  34913.                     className: "no-internet-screen_header-title-col"
  34914.                 }, _react2["default"].DOM.div({
  34915.                     className: "no-internet-screen_header-title"
  34916.                 }, l("no-internet-screen_header-title"))))), _react2["default"].DOM.table({
  34917.                     className: "no-internet-screen_guide"
  34918.                 }, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  34919.                     className: "no-internet-screen_guide-title"
  34920.                 }, _react2["default"].DOM.div(null, l("no-internet-screen_guide-title")))), _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  34921.                     className: "no-internet-screen_guide-steps"
  34922.                 }, _react2["default"].DOM.table(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  34923.                     className: "no-internet-screen_guide-step-num-col bold"
  34924.                 }, _react2["default"].DOM.div(null, l("no-internet-screen_guide-step-1"))), _react2["default"].DOM.td({
  34925.                     className: "no-internet-screen_guide-step-icon-col"
  34926.                 }, _react2["default"].DOM.span({
  34927.                     className: "no-internet-screen_guide-icon"
  34928.                 }, _react2["default"].DOM.img({
  34929.                     src: "img/no_internet/no_internet-step1.png",
  34930.                     width: "105",
  34931.                     height: "65"
  34932.                 }))), _react2["default"].DOM.td({
  34933.                     className: "no-internet-screen_guide-step-action-col"
  34934.                 }, _react2["default"].DOM.div({
  34935.                     dangerouslySetInnerHTML: {
  34936.                         __html: l("no-internet-screen_guide-step-1-action")
  34937.                     }
  34938.                 })))))), _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  34939.                     className: "no-internet-screen_guide-steps"
  34940.                 }, _react2["default"].DOM.table(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  34941.                     className: "no-internet-screen_guide-step-num-col bold"
  34942.                 }, _react2["default"].DOM.div(null, l("no-internet-screen_guide-step-2"))), _react2["default"].DOM.td({
  34943.                     className: "no-internet-screen_guide-step-icon-col"
  34944.                 }, _react2["default"].DOM.span({
  34945.                     className: "no-internet-screen_guide-icon"
  34946.                 }, _react2["default"].DOM.img({
  34947.                     src: "img/no_internet/no_internet-step2.png",
  34948.                     width: "105",
  34949.                     height: "65"
  34950.                 }))), _react2["default"].DOM.td({
  34951.                     className: "no-internet-screen_guide-step-action-col"
  34952.                 }, _react2["default"].DOM.div({
  34953.                     dangerouslySetInnerHTML: {
  34954.                         __html: l("no-internet-screen_guide-step-2-action")
  34955.                     }
  34956.                 })))))), _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  34957.                     className: "no-internet-screen_guide-steps no-internet-bottom-row"
  34958.                 }, _react2["default"].DOM.table(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  34959.                     className: "no-internet-screen_guide-step-num-col bold"
  34960.                 }, _react2["default"].DOM.div(null, l("no-internet-screen_guide-step-complete"))), _react2["default"].DOM.td({
  34961.                     className: "no-internet-screen_guide-step-icon-col"
  34962.                 }, _react2["default"].DOM.span({
  34963.                     className: "no-internet-screen_guide-icon"
  34964.                 }, _react2["default"].DOM.img({
  34965.                     src: "img/no_internet/no_internet-complete.png",
  34966.                     width: "105",
  34967.                     height: "65"
  34968.                 }))), _react2["default"].DOM.td({
  34969.                     className: "no-internet-screen_guide-step-action-col"
  34970.                 }, _react2["default"].DOM.div({
  34971.                     dangerouslySetInnerHTML: {
  34972.                         __html: l("no-internet-screen_guide-step-complete-action")
  34973.                     }
  34974.                 })))))))));
  34975.             }
  34976.         });
  34977.         exports["default"] = NoInternetScreen;
  34978.         module.exports = exports["default"];
  34979.     }).call(exports, __webpack_require__(6));
  34980. }, function(module, exports, __webpack_require__) {
  34981.     "use strict";
  34982.     exports.__esModule = !0;
  34983.     var _NoInternetScreen = __webpack_require__(701), _NoInternetScreen2 = function(obj) {
  34984.         return obj && obj.__esModule ? obj : {
  34985.             "default": obj
  34986.         };
  34987.     }(_NoInternetScreen);
  34988.     exports["default"] = _NoInternetScreen2["default"];
  34989.     module.exports = exports["default"];
  34990. }, function(module, exports, __webpack_require__) {
  34991.     "use strict";
  34992.     (function(l) {
  34993.         function _interopRequireDefault(obj) {
  34994.             return obj && obj.__esModule ? obj : {
  34995.                 "default": obj
  34996.             };
  34997.         }
  34998.         exports.__esModule = !0;
  34999.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _driversPrograms = __webpack_require__(36), _ProgramRow = __webpack_require__(319), _ProgramRow2 = _interopRequireDefault(_ProgramRow);
  35000.         __webpack_require__(795);
  35001.         exports["default"] = _react2["default"].createClass({
  35002.             displayName: "Programs",
  35003.             mixins: [ __webpack_require__(5) ],
  35004.             propTypes: {
  35005.                 page: _react.PropTypes.string.isRequired,
  35006.                 programs: _react.PropTypes.array.isRequired,
  35007.                 toggleProgram: _react.PropTypes.func.isRequired,
  35008.                 installPrograms: _react.PropTypes.func.isRequired,
  35009.                 confirmProgramInstallation: _react.PropTypes.func.isRequired,
  35010.                 currentLanguage: _react.PropTypes.string.isRequired
  35011.             },
  35012.             render: function() {
  35013.                 var _this = this, _props = this.props, page = _props.page, programs = _props.programs, visiblePrograms = (0,
  35014.                 _driversPrograms.filterProgramsPage)(programs), checkedPrograms = (0, _driversPrograms.filterCheckedSoft)(visiblePrograms), checkedProgramsCount = checkedPrograms.length, hideComponent = "PROGRAMS" !== page, windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
  35015.                 return _react2["default"].DOM.td({
  35016.                     className: hideComponent ? "display-none" : ""
  35017.                 }, _react2["default"].DOM.div({
  35018.                     className: "programs"
  35019.                 }, _react2["default"].DOM.div({
  35020.                     style: {
  35021.                         paddingLeft: "32px"
  35022.                     }
  35023.                 }, _react2["default"].DOM.h1({
  35024.                     className: "screen-title"
  35025.                 }, l("programs_header_text_title"))), windowWidth > 1350 ? _react2["default"].DOM.div({
  35026.                     className: "programs_header_bg"
  35027.                 }, (0, _Img2["default"])({
  35028.                     src: "img/programs/soft-bg.png",
  35029.                     width: "144",
  35030.                     height: "144"
  35031.                 })) : "", _react2["default"].DOM.table({
  35032.                     className: "programs_wrapper",
  35033.                     border: "1"
  35034.                 }, _react2["default"].DOM.thead(null, _react2["default"].DOM.tr({
  35035.                     className: "programs_header"
  35036.                 }, _react2["default"].DOM.td({
  35037.                     colSpan: "4",
  35038.                     className: "programs_header-btn"
  35039.                 }, _react2["default"].DOM.button({
  35040.                     className: "cta-green-btn cta-btn-68 programs_btn " + (0 === checkedProgramsCount ? "cta-green-btn-is-disabled" : ""),
  35041.                     onClick: function() {
  35042.                         return _this.handleInstallAllClick(checkedPrograms);
  35043.                     },
  35044.                     disabled: 0 === checkedProgramsCount
  35045.                 }, (0, _Img2["default"])({
  35046.                     src: "img/programs/btn-icon-install-all-soft.png",
  35047.                     className: "cta-green-btn-install-all-icon",
  35048.                     width: "46",
  35049.                     height: "38"
  35050.                 }), _react2["default"].DOM.span({
  35051.                     className: "cta-green-btn-text programs_btn-span",
  35052.                     dangerouslySetInnerHTML: {
  35053.                         __html: l("programs_btn_install_all").replace("{{COUNT}}", checkedProgramsCount)
  35054.                     }
  35055.                 }))), _react2["default"].DOM.td({
  35056.                     colSpan: "2",
  35057.                     className: "programs_header-text"
  35058.                 }, _react2["default"].DOM.div({
  35059.                     className: "programs_text",
  35060.                     dangerouslySetInnerHTML: {
  35061.                         __html: l("programs_header_text_caption")
  35062.                     }
  35063.                 }))), _react2["default"].DOM.tr({
  35064.                     className: "programs_list-header"
  35065.                 }, _react2["default"].DOM.td({
  35066.                     colSpan: "1",
  35067.                     className: "drivers-screen_title-checkbox"
  35068.                 }, _react2["default"].DOM.label({
  35069.                     className: "custom-control_checkbox-input-label"
  35070.                 })), _react2["default"].DOM.td({
  35071.                     colSpan: "6",
  35072.                     className: "programs_list-title"
  35073.                 }, l("drivers_program_counter")))), _react2["default"].DOM.tbody({
  35074.                     className: "programs_list"
  35075.                 }, this.renderProgramsRows(visiblePrograms, "PROGRAMS_PAGE"), _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  35076.                     colSpan: "6",
  35077.                     height: "62"
  35078.                 })))), _react2["default"].DOM.div({
  35079.                     className: "programs_footer"
  35080.                 }, _react2["default"].DOM.div({
  35081.                     className: "screen-copyright"
  35082.                 }, "Artur Kuzyakov © 2018"))));
  35083.             },
  35084.             renderProgramsRows: function(visiblePrograms, zone) {
  35085.                 var list = [], _props2 = this.props, toggleProgram = _props2.toggleProgram, installPrograms = _props2.installPrograms, confirmProgramInstallation = _props2.confirmProgramInstallation, currentLanguage = _props2.currentLanguage;
  35086.                 visiblePrograms.forEach(function(program, index) {
  35087.                     list.push((0, _ProgramRow2["default"])({
  35088.                         key: "program" + index,
  35089.                         program: program,
  35090.                         index: index,
  35091.                         confirmProgramInstallation: confirmProgramInstallation,
  35092.                         toggleProgram: toggleProgram,
  35093.                         installPrograms: installPrograms,
  35094.                         zone: zone,
  35095.                         currentLanguage: currentLanguage
  35096.                     }));
  35097.                 });
  35098.                 return list;
  35099.             },
  35100.             handleInstallAllClick: function(programs) {
  35101.                 return (0, this.props.installPrograms)(programs, {
  35102.                     eventAction: "soft install all clicked"
  35103.                 });
  35104.             }
  35105.         });
  35106.         module.exports = exports["default"];
  35107.     }).call(exports, __webpack_require__(6));
  35108. }, function(module, exports, __webpack_require__) {
  35109.     "use strict";
  35110.     function _interopRequireDefault(obj) {
  35111.         return obj && obj.__esModule ? obj : {
  35112.             "default": obj
  35113.         };
  35114.     }
  35115.     exports.__esModule = !0;
  35116.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _programsActions = __webpack_require__(99), _Programs = __webpack_require__(703), _Programs2 = _interopRequireDefault(_Programs), ProgramsScreen = _react2["default"].createClass({
  35117.         displayName: "ProgramsScreen",
  35118.         mixins: [ __webpack_require__(5) ],
  35119.         propTypes: {
  35120.             page: _react.PropTypes.string.isRequired,
  35121.             programs: _react.PropTypes.array.isRequired,
  35122.             toggleProgram: _react.PropTypes.func.isRequired,
  35123.             installPrograms: _react.PropTypes.func.isRequired,
  35124.             confirmProgramInstallation: _react.PropTypes.func.isRequired,
  35125.             currentLanguage: _react.PropTypes.string.isRequired
  35126.         },
  35127.         render: function() {
  35128.             var _props = this.props, page = _props.page, programs = _props.programs, toggleProgram = _props.toggleProgram, installPrograms = _props.installPrograms, confirmProgramInstallation = _props.confirmProgramInstallation, currentLanguage = _props.currentLanguage;
  35129.             return (0, _Programs2["default"])({
  35130.                 page: page,
  35131.                 programs: programs,
  35132.                 toggleProgram: toggleProgram,
  35133.                 installPrograms: installPrograms,
  35134.                 confirmProgramInstallation: confirmProgramInstallation,
  35135.                 currentLanguage: currentLanguage
  35136.             });
  35137.         }
  35138.     }), mapState = function(state) {
  35139.         return {
  35140.             programs: state.programs
  35141.         };
  35142.     }, actions = {
  35143.         toggleProgram: _programsActions.toggleProgram,
  35144.         installPrograms: _programsActions.installPrograms,
  35145.         confirmProgramInstallation: _programsActions.confirmProgramInstallation
  35146.     };
  35147.     exports["default"] = (0, _connect2["default"])(mapState, actions)(ProgramsScreen);
  35148.     module.exports = exports["default"];
  35149. }, function(module, exports, __webpack_require__) {
  35150.     "use strict";
  35151.     exports.__esModule = !0;
  35152.     var _ProgramsScreen = __webpack_require__(704), _ProgramsScreen2 = function(obj) {
  35153.         return obj && obj.__esModule ? obj : {
  35154.             "default": obj
  35155.         };
  35156.     }(_ProgramsScreen);
  35157.     exports["default"] = _ProgramsScreen2["default"];
  35158.     module.exports = exports["default"];
  35159. }, function(module, exports, __webpack_require__) {
  35160.     "use strict";
  35161.     (function(l) {
  35162.         function _interopRequireDefault(obj) {
  35163.             return obj && obj.__esModule ? obj : {
  35164.                 "default": obj
  35165.             };
  35166.         }
  35167.         exports.__esModule = !0;
  35168.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics);
  35169.         __webpack_require__(796);
  35170.         exports["default"] = _react2["default"].createClass({
  35171.             displayName: "InstalledProgramRow",
  35172.             mixins: [ __webpack_require__(5) ],
  35173.             propTypes: {
  35174.                 index: _react.PropTypes.number.isRequired,
  35175.                 isActiveRemoving: _react.PropTypes.bool.isRequired,
  35176.                 isActiveRemovingAll: _react.PropTypes.bool.isRequired,
  35177.                 program: _react.PropTypes.object.isRequired,
  35178.                 toggleInstalledProgram: _react.PropTypes.func.isRequired,
  35179.                 expandInstalledProgram: _react.PropTypes.func.isRequired,
  35180.                 removeInstalledProgram: _react.PropTypes.func.isRequired,
  35181.                 currentLanguage: _react.PropTypes.string.isRequired
  35182.             },
  35183.             render: function() {
  35184.                 var _props = this.props, index = _props.index, isActiveRemoving = _props.isActiveRemoving, isActiveRemovingAll = _props.isActiveRemovingAll, program = _props.program, toggleInstalledProgram = _props.toggleInstalledProgram, expandInstalledProgram = _props.expandInstalledProgram, removeInstalledProgram = _props.removeInstalledProgram, id = program.id, name = program.name, version = program.version, publisher = program.publisher, installDate = program.installDate, icon = program.icon, uninstallString = program.uninstallString, regPath = program.regPath, uninstallPercents = program.uninstallPercents, removalRate = program.removalRate, starsCount = program.starsCount, size = program.size, isHarmful = program.isHarmful, isChecked = program.isChecked, isRemoving = program.isRemoving, isExpanded = program.isExpanded;
  35185.                 return _react2["default"].DOM.tr({
  35186.                     className: (isExpanded ? "installed-program_row-expanded" : "") + " installed-program_row"
  35187.                 }, _react2["default"].DOM.td({
  35188.                     className: "installed-program_border-wrapper"
  35189.                 }, _react2["default"].DOM.div({
  35190.                     className: "installed-program_border",
  35191.                     style: {
  35192.                         backgroundColor: "large" === removalRate ? "#ee434a" : "middle" === removalRate ? "#fbc32e" : "#139142"
  35193.                     }
  35194.                 })), _react2["default"].DOM.td({
  35195.                     className: "installed-program_checkbox"
  35196.                 }, _react2["default"].DOM.span(null, _react2["default"].DOM.input({
  35197.                     type: "checkbox",
  35198.                     className: "custom-control_checkbox-input",
  35199.                     id: "installed_program" + index,
  35200.                     checked: isChecked,
  35201.                     disabled: isActiveRemoving || isActiveRemovingAll,
  35202.                     onChange: function(e) {
  35203.                         toggleInstalledProgram(id, e.target.checked);
  35204.                     }
  35205.                 }), _react2["default"].DOM.label({
  35206.                     htmlFor: "installed_program" + index,
  35207.                     className: "custom-control_checkbox-input-label"
  35208.                 }))), _react2["default"].DOM.td({
  35209.                     className: "installed-program_icon"
  35210.                 }, (0, _Img2["default"])({
  35211.                     src: icon || "img/programs/default-soft.png",
  35212.                     width: "36",
  35213.                     height: "36"
  35214.                 })), _react2["default"].DOM.td({
  35215.                     className: "installed-program_info"
  35216.                 }, _react2["default"].DOM.div({
  35217.                     className: "installed-program_name"
  35218.                 }, name), _react2["default"].DOM.div({
  35219.                     className: "installed-program_caption"
  35220.                 }, _react2["default"].DOM.p(null, _react2["default"].DOM.span({
  35221.                     className: "installed-program_caption-label"
  35222.                 }, l("protect_row_rating"), " "), this.renderStars(starsCount)), size ? _react2["default"].DOM.p(null, _react2["default"].DOM.span({
  35223.                     className: "installed-program_caption-label"
  35224.                 }, l("protect_row_size"), " "), size) : _react2["default"].DOM.span(null), publisher ? _react2["default"].DOM.p(null, _react2["default"].DOM.span({
  35225.                     className: "installed-program_caption-label"
  35226.                 }, l("protect_row_publisher"), " "), publisher) : _react2["default"].DOM.span(null), version ? _react2["default"].DOM.p(null, _react2["default"].DOM.span({
  35227.                     className: "installed-program_caption-label"
  35228.                 }, l("protect_row_version"), " "), version) : _react2["default"].DOM.span(null), installDate ? _react2["default"].DOM.p(null, _react2["default"].DOM.span({
  35229.                     className: "installed-program_caption-label"
  35230.                 }, l("protect_row_install_date"), " "), installDate) : _react2["default"].DOM.span(null))), _react2["default"].DOM.td({
  35231.                     className: "installed-program-row_rating"
  35232.                 }, _react2["default"].DOM.div(null, "large" === removalRate ? _react2["default"].DOM.div({
  35233.                     className: "installed-program-row_rating-label",
  35234.                     title: uninstallPercents + "%"
  35235.                 }, l("protect_rating_level_large")) : "middle" === removalRate ? _react2["default"].DOM.div({
  35236.                     className: "installed-program-row_rating-label",
  35237.                     title: uninstallPercents + "%"
  35238.                 }, l("protect_rating_level_middle")) : _react2["default"].DOM.div({
  35239.                     className: "installed-program-row_rating-label",
  35240.                     title: uninstallPercents + "%"
  35241.                 }, l("protect_rating_level_small")), _react2["default"].DOM.div({
  35242.                     className: "installed-program-row_rating-bg"
  35243.                 }, _react2["default"].DOM.div({
  35244.                     className: "installed-program_row_rating-value",
  35245.                     style: {
  35246.                         width: uninstallPercents + "%",
  35247.                         backgroundColor: "large" === removalRate ? "#ee434a" : "middle" === removalRate ? "#fbc32e" : "#139142"
  35248.                     }
  35249.                 }))), isHarmful ? _react2["default"].DOM.div({
  35250.                     className: "installed-program-row_rating-caption"
  35251.                 }, _react2["default"].DOM.p({
  35252.                     style: {
  35253.                         paddingBottom: "24"
  35254.                     }
  35255.                 }, l("protect_rating_level_large_caption"))) : null), _react2["default"].DOM.td({
  35256.                     className: "installed-program_uninstall-single-col"
  35257.                 }, isRemoving || isActiveRemovingAll && isChecked ? _react2["default"].DOM.button({
  35258.                     className: "installed-program_uninstall-single installed-program_uninstall-single-is-loading"
  35259.                 }, _react2["default"].DOM.span({
  35260.                     className: "installed-program_install-single-icon icons-controls",
  35261.                     style: {
  35262.                         visibility: "hidden"
  35263.                     }
  35264.                 }, ""), _react2["default"].DOM.span({
  35265.                     style: {
  35266.                         visibility: "hidden"
  35267.                     }
  35268.                 }, l("protect_uninstall_single")), _react2["default"].DOM.i({
  35269.                     className: "installed-program_uninstall-single-loader",
  35270.                     style: {
  35271.                         backgroundImage: "url(img/programs/rolling-remove-single.gif)"
  35272.                     }
  35273.                 })) : isActiveRemoving && !isRemoving || isActiveRemovingAll && !isChecked ? _react2["default"].DOM.button({
  35274.                     className: "installed-program_uninstall-single installed-program_uninstall-single-is-disabled",
  35275.                     disabled: "disabled",
  35276.                     onClick: function(e) {
  35277.                         var params = {
  35278.                             "manual uninstall": uninstallPercents
  35279.                         };
  35280.                         _statistics2["default"].event({
  35281.                             action: "protect uninstall " + name + " clicked",
  35282.                             params: params
  35283.                         });
  35284.                         removeInstalledProgram({
  35285.                             id: id,
  35286.                             name: name,
  35287.                             uninstallPercents: uninstallPercents,
  35288.                             uninstallString: uninstallString,
  35289.                             regPath: regPath
  35290.                         });
  35291.                     }
  35292.                 }, _react2["default"].DOM.span({
  35293.                     className: "installed-program_install-single-icon icons-controls"
  35294.                 }, ""), l("protect_uninstall_single")) : _react2["default"].DOM.button({
  35295.                     className: "installed-program_uninstall-single",
  35296.                     onClick: function(e) {
  35297.                         var params = {
  35298.                             "manual uninstall": uninstallPercents
  35299.                         };
  35300.                         _statistics2["default"].event({
  35301.                             action: "protect uninstall " + name + " clicked",
  35302.                             params: params
  35303.                         });
  35304.                         removeInstalledProgram({
  35305.                             id: id,
  35306.                             name: name,
  35307.                             uninstallPercents: uninstallPercents,
  35308.                             uninstallString: uninstallString,
  35309.                             regPath: regPath
  35310.                         });
  35311.                     }
  35312.                 }, _react2["default"].DOM.span({
  35313.                     className: "installed-program_install-single-icon icons-controls"
  35314.                 }, ""), l("protect_uninstall_single"))), _react2["default"].DOM.td({
  35315.                     className: "installed-program-row_cell installed-program-row_arrow-col"
  35316.                 }, _react2["default"].DOM.a({
  35317.                     href: "javascript:void(0)",
  35318.                     className: "installed-program-row_arrow",
  35319.                     onClick: function(e) {
  35320.                         e.preventDefault();
  35321.                         expandInstalledProgram(id, !isExpanded);
  35322.                     }
  35323.                 }, (0, _Img2["default"])({
  35324.                     src: !isExpanded ? "img/programs/arrow-expand.png" : "img/programs/arrow-collapse.png",
  35325.                     width: "24",
  35326.                     height: "16"
  35327.                 }))));
  35328.             },
  35329.             renderStars: function(starsCount) {
  35330.                 for (var stars = [], i = 0; i < 5; i++) stars.push((0, _Img2["default"])({
  35331.                     className: "installed-program_caption-star-icon",
  35332.                     src: i < starsCount ? "img/programs/star-full-protect.png" : "img/programs/star-empty-protect.png"
  35333.                 }));
  35334.                 return stars;
  35335.             }
  35336.         });
  35337.         module.exports = exports["default"];
  35338.     }).call(exports, __webpack_require__(6));
  35339. }, function(module, exports, __webpack_require__) {
  35340.     "use strict";
  35341.     (function(l) {
  35342.         function _interopRequireDefault(obj) {
  35343.             return obj && obj.__esModule ? obj : {
  35344.                 "default": obj
  35345.             };
  35346.         }
  35347.         function _asyncToGenerator(fn) {
  35348.             return function() {
  35349.                 var gen = fn.apply(this, arguments);
  35350.                 return new Promise(function(resolve, reject) {
  35351.                     function step(key, arg) {
  35352.                         try {
  35353.                             var info = gen[key](arg), value = info.value;
  35354.                         } catch (error) {
  35355.                             reject(error);
  35356.                             return;
  35357.                         }
  35358.                         if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  35359.                             step("next", value);
  35360.                         }, function(err) {
  35361.                             step("throw", err);
  35362.                         });
  35363.                     }
  35364.                     return step("next");
  35365.                 });
  35366.             };
  35367.         }
  35368.         exports.__esModule = !0;
  35369.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _lodash = __webpack_require__(267), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _InstalledProgramRow = __webpack_require__(706), _InstalledProgramRow2 = _interopRequireDefault(_InstalledProgramRow), _driversPrograms = __webpack_require__(36);
  35370.         __webpack_require__(797);
  35371.         exports["default"] = _react2["default"].createClass({
  35372.             displayName: "InstalledPrograms",
  35373.             mixins: [ __webpack_require__(5) ],
  35374.             propTypes: {
  35375.                 isUsefulHidden: _react.PropTypes.bool.isRequired,
  35376.                 toggleInstalledProgram: _react.PropTypes.func.isRequired,
  35377.                 isActiveRemoving: _react.PropTypes.bool.isRequired,
  35378.                 isActiveRemovingAll: _react.PropTypes.bool.isRequired,
  35379.                 isAPIFailed: _react.PropTypes.bool.isRequired,
  35380.                 installedProgramsExpanded: _react.PropTypes.bool.isRequired,
  35381.                 installed: _react.PropTypes.array.isRequired,
  35382.                 securityPrograms: _react.PropTypes.array.isRequired,
  35383.                 confirmProgramInstallation: _react.PropTypes.func.isRequired,
  35384.                 toggleSecurityProgram: _react.PropTypes.func.isRequired,
  35385.                 toggleUsefulPrograms: _react.PropTypes.func.isRequired,
  35386.                 installPrograms: _react.PropTypes.func.isRequired,
  35387.                 expandInstalledProgram: _react.PropTypes.func.isRequired,
  35388.                 expandAllInstalledPrograms: _react.PropTypes.func.isRequired,
  35389.                 removeInstalledProgram: _react.PropTypes.func.isRequired,
  35390.                 removeAllHarmfulPrograms: _react.PropTypes.func.isRequired,
  35391.                 currentLanguage: _react.PropTypes.string.isRequired
  35392.             },
  35393.             getInstalledPrograms: function() {
  35394.                 var _props = this.props, isUsefulHidden = _props.isUsefulHidden, installed = _props.installed;
  35395.                 return isUsefulHidden ? (0, _driversPrograms.filterSuspiciousPrograms)(installed) : installed;
  35396.             },
  35397.             getSecutiryProgramsToInstall: function() {
  35398.                 return this.props.securityPrograms.filter(function(program) {
  35399.                     return program.isCheckedForProtect;
  35400.                 });
  35401.             },
  35402.             renderMainButton: function(args) {
  35403.                 var isActiveRemoving = args.isActiveRemoving, isActiveRemovingAll = args.isActiveRemovingAll, checkedPrograms = args.checkedPrograms, checkedSecurityPrograms = args.checkedSecurityPrograms, button = void 0;
  35404.                 if (isActiveRemoving || 0 === checkedPrograms.length && !isActiveRemovingAll && 0 === checkedSecurityPrograms.length) button = _react2["default"].DOM.button({
  35405.                     className: "programs-list_head-btn cta-green-btn cta-btn-68 cta-green-btn-is-disabled",
  35406.                     disabled: "disabled",
  35407.                     onClick: this.handleProtectAndCleanClick
  35408.                 }, (0, _Img2["default"])({
  35409.                     src: "img/programs/btn-icon.png",
  35410.                     className: "cta-green-btn-clean-icon",
  35411.                     width: "46",
  35412.                     height: "38"
  35413.                 }), _react2["default"].DOM.span({
  35414.                     className: "programs-list_head-btn-text"
  35415.                 }, l("protect_clean_up_btn"))); else if (isActiveRemovingAll) button = _react2["default"].DOM.button({
  35416.                     className: "programs-list_head-btn cta-green-btn cta-btn-68 cta-green-btn-is-loading",
  35417.                     disabled: "disabled",
  35418.                     onClick: this.handleProtectAndCleanClick
  35419.                 }, (0, _Img2["default"])({
  35420.                     src: "img/programs/btn-icon.png",
  35421.                     className: "cta-green-btn-clean-icon",
  35422.                     style: {
  35423.                         visibility: "hidden"
  35424.                     },
  35425.                     width: "46",
  35426.                     height: "38"
  35427.                 }), _react2["default"].DOM.span({
  35428.                     className: "cta-green-btn-text",
  35429.                     style: {
  35430.                         visibility: "hidden"
  35431.                     }
  35432.                 }, l("protect_clean_up_btn")), _react2["default"].DOM.i({
  35433.                     className: "cta-green-btn-icon",
  35434.                     style: {
  35435.                         backgroundImage: "url(img/programs/rolling.gif)"
  35436.                     }
  35437.                 })); else button = _react2["default"].DOM.button({
  35438.                     className: "programs-list_head-btn cta-green-btn cta-btn-68",
  35439.                     onClick: this.handleProtectAndCleanClick
  35440.                 }, (0, _Img2["default"])({
  35441.                     src: "img/programs/btn-icon.png",
  35442.                     className: "cta-green-btn-clean-icon",
  35443.                     style: {
  35444.                         visibility: "visible"
  35445.                     },
  35446.                     width: "46",
  35447.                     height: "38"
  35448.                 }), _react2["default"].DOM.span({
  35449.                     className: "cta-green-btn-text"
  35450.                 }, l("protect_clean_up_btn")));
  35451.                 return button;
  35452.             },
  35453.             renderMainButtonCaptions: function(args) {
  35454.                 var checkedPrograms = args.checkedPrograms, checkedSecurityPrograms = args.checkedSecurityPrograms, checkedInstalledCount = checkedPrograms.length, checkedSecurityCount = checkedSecurityPrograms.length;
  35455.                 return checkedInstalledCount || checkedSecurityCount ? _react2["default"].DOM.div({
  35456.                     className: "programs-list_head-title"
  35457.                 }, checkedInstalledCount ? _react2["default"].DOM.div({
  35458.                     dangerouslySetInnerHTML: {
  35459.                         __html: l("protect_remove_all_btn_uninstalling").replace("{{COUNT}}", checkedInstalledCount)
  35460.                     }
  35461.                 }) : null, checkedSecurityCount ? _react2["default"].DOM.div({
  35462.                     dangerouslySetInnerHTML: {
  35463.                         __html: l("protect_remove_all_btn_installing").replace("{{COUNT}}", checkedSecurityCount)
  35464.                     }
  35465.                 }) : null) : null;
  35466.             },
  35467.             renderInstalledProgramsRows: function(args) {
  35468.                 var list = [], _props2 = this.props, isActiveRemoving = _props2.isActiveRemoving, isActiveRemovingAll = _props2.isActiveRemovingAll, installedProgramsExpanded = _props2.installedProgramsExpanded, toggleInstalledProgram = _props2.toggleInstalledProgram, expandInstalledProgram = _props2.expandInstalledProgram, removeInstalledProgram = _props2.removeInstalledProgram, currentLanguage = _props2.currentLanguage, isAPIFailed = args.isAPIFailed, harmfulPrograms = args.harmfulPrograms, programs = args.programs;
  35469.                 if (isAPIFailed) return _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  35470.                     className: "installed-programs_info-wrapper"
  35471.                 }, _react2["default"].DOM.div({
  35472.                     className: "installed-programs_info"
  35473.                 }, (0, _Img2["default"])({
  35474.                     src: "img/programs/installed-programs_info-warn.png",
  35475.                     className: "installed-programs_info-img"
  35476.                 }), _react2["default"].DOM.div({
  35477.                     className: "installed-programs_info-warn-text"
  35478.                 }, l("protect_installed-programs_api_failed"))))); else if (!harmfulPrograms.length) return _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  35479.                     className: "installed-programs_info-wrapper"
  35480.                 }, _react2["default"].DOM.div({
  35481.                     className: "installed-programs_info"
  35482.                 }, (0, _Img2["default"])({
  35483.                     src: "img/programs/installed-programs_info-success.png",
  35484.                     className: "installed-programs_info-img"
  35485.                 }), _react2["default"].DOM.div({
  35486.                     className: "installed-programs_info-success-text"
  35487.                 }, l("protect_installed-programs_no_harmful"))))); else {
  35488.                     programs.forEach(function(program, index) {
  35489.                         if (installedProgramsExpanded || index < 14) list.push((0, _InstalledProgramRow2["default"])({
  35490.                             key: "installed_program" + index,
  35491.                             program: program,
  35492.                             index: index,
  35493.                             isActiveRemoving: isActiveRemoving,
  35494.                             isActiveRemovingAll: isActiveRemovingAll,
  35495.                             toggleInstalledProgram: toggleInstalledProgram,
  35496.                             expandInstalledProgram: expandInstalledProgram,
  35497.                             removeInstalledProgram: removeInstalledProgram,
  35498.                             currentLanguage: currentLanguage
  35499.                         }));
  35500.                     });
  35501.                     return list;
  35502.                 }
  35503.             },
  35504.             collectInstallList: function() {
  35505.                 var _this = this;
  35506.                 return _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
  35507.                     var list, _props3, confirmProgramInstallation, toggleSecurityProgram, checkedPrograms, _iterator, _isArray, _i, _ref, program, confirmResult;
  35508.                     return regeneratorRuntime.wrap(function(_context) {
  35509.                         for (;;) switch (_context.prev = _context.next) {
  35510.                           case 0:
  35511.                             list = [];
  35512.                             _props3 = _this.props, confirmProgramInstallation = _props3.confirmProgramInstallation,
  35513.                             toggleSecurityProgram = _props3.toggleSecurityProgram;
  35514.                             checkedPrograms = _this.getSecutiryProgramsToInstall();
  35515.                             _iterator = checkedPrograms, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();
  35516.  
  35517.                           case 4:
  35518.                             if (!_isArray) {
  35519.                                 _context.next = 10;
  35520.                                 break;
  35521.                             }
  35522.                             if (!(_i >= _iterator.length)) {
  35523.                                 _context.next = 7;
  35524.                                 break;
  35525.                             }
  35526.                             return _context.abrupt("break", 23);
  35527.  
  35528.                           case 7:
  35529.                             _ref = _iterator[_i++];
  35530.                             _context.next = 14;
  35531.                             break;
  35532.  
  35533.                           case 10:
  35534.                             _i = _iterator.next();
  35535.                             if (!_i.done) {
  35536.                                 _context.next = 13;
  35537.                                 break;
  35538.                             }
  35539.                             return _context.abrupt("break", 23);
  35540.  
  35541.                           case 13:
  35542.                             _ref = _i.value;
  35543.  
  35544.                           case 14:
  35545.                             program = _ref;
  35546.                             confirmResult = !0;
  35547.                             if (!(0, _lodash.get)(program, "protect.popup")) {
  35548.                                 _context.next = 20;
  35549.                                 break;
  35550.                             }
  35551.                             _context.next = 19;
  35552.                             return confirmProgramInstallation(program);
  35553.  
  35554.                           case 19:
  35555.                             confirmResult = _context.sent;
  35556.  
  35557.                           case 20:
  35558.                             if (confirmResult) list.push(program); else toggleSecurityProgram(program.ID, !1);
  35559.  
  35560.                           case 21:
  35561.                             _context.next = 4;
  35562.                             break;
  35563.  
  35564.                           case 23:
  35565.                             return _context.abrupt("return", list);
  35566.  
  35567.                           case 24:
  35568.                           case "end":
  35569.                             return _context.stop();
  35570.                         }
  35571.                     }, _callee, _this);
  35572.                 }))();
  35573.             },
  35574.             handleProtectAndCleanClick: function() {
  35575.                 var _this2 = this;
  35576.                 return _asyncToGenerator(regeneratorRuntime.mark(function _callee2() {
  35577.                     var _props4, removeAllHarmfulPrograms, installPrograms, programs, checkedPrograms, installList;
  35578.                     return regeneratorRuntime.wrap(function(_context2) {
  35579.                         for (;;) switch (_context2.prev = _context2.next) {
  35580.                           case 0:
  35581.                             _props4 = _this2.props, removeAllHarmfulPrograms = _props4.removeAllHarmfulPrograms,
  35582.                             installPrograms = _props4.installPrograms;
  35583.                             programs = _this2.getInstalledPrograms();
  35584.                             checkedPrograms = (0, _driversPrograms.filterCheckedInstalledPrograms)(programs);
  35585.                             _context2.next = 5;
  35586.                             return removeAllHarmfulPrograms(checkedPrograms);
  35587.  
  35588.                           case 5:
  35589.                             _context2.next = 7;
  35590.                             return _this2.collectInstallList();
  35591.  
  35592.                           case 7:
  35593.                             installList = _context2.sent;
  35594.                             if (installList.length) installPrograms(installList);
  35595.  
  35596.                           case 9:
  35597.                           case "end":
  35598.                             return _context2.stop();
  35599.                         }
  35600.                     }, _callee2, _this2);
  35601.                 }))();
  35602.             },
  35603.             render: function() {
  35604.                 var _props5 = this.props, isAPIFailed = _props5.isAPIFailed, isActiveRemoving = _props5.isActiveRemoving, isActiveRemovingAll = _props5.isActiveRemovingAll, isUsefulHidden = _props5.isUsefulHidden, installedProgramsExpanded = _props5.installedProgramsExpanded, toggleUsefulPrograms = _props5.toggleUsefulPrograms, expandAllInstalledPrograms = _props5.expandAllInstalledPrograms, programs = this.getInstalledPrograms(), harmfulPrograms = (0,
  35605.                 _driversPrograms.filterHarmfulPrograms)(programs), checkedSecurityPrograms = this.getSecutiryProgramsToInstall(programs), checkedPrograms = (0,
  35606.                 _driversPrograms.filterCheckedInstalledPrograms)(programs), hiddenProgramsNumber = programs.length - 14, switchId = "protect_installed-programs_switch", windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
  35607.                 return _react2["default"].DOM.div({
  35608.                     style: {
  35609.                         width: "100%",
  35610.                         backgroundColor: "#FFFFFF"
  35611.                     }
  35612.                 }, _react2["default"].DOM.div({
  35613.                     className: "program-header clearfix"
  35614.                 }, windowWidth > 1275 ? _react2["default"].DOM.div({
  35615.                     className: "program-header_bg"
  35616.                 }, (0, _Img2["default"])({
  35617.                     src: "img/programs/protector-bg.png",
  35618.                     width: "130",
  35619.                     height: "160"
  35620.                 })) : "", _react2["default"].DOM.div({
  35621.                     className: "program-header_wrapper"
  35622.                 }, _react2["default"].DOM.div({
  35623.                     className: "program-header_title-wrapper"
  35624.                 }, _react2["default"].DOM.h1({
  35625.                     className: "screen-title",
  35626.                     dangerouslySetInnerHTML: {
  35627.                         __html: l("protect_clean_up_header_title")
  35628.                     }
  35629.                 }), _react2["default"].DOM.p({
  35630.                     className: "program-header_caption"
  35631.                 }, l("protect_clean_up_header_caption"))), _react2["default"].DOM.div({
  35632.                     className: "installed-program_head-title-holder clearfix"
  35633.                 }, this.renderMainButton({
  35634.                     isAPIFailed: isAPIFailed,
  35635.                     isActiveRemoving: isActiveRemoving,
  35636.                     isActiveRemovingAll: isActiveRemovingAll,
  35637.                     programs: programs,
  35638.                     checkedPrograms: checkedPrograms,
  35639.                     checkedSecurityPrograms: checkedSecurityPrograms
  35640.                 }), this.renderMainButtonCaptions({
  35641.                     checkedPrograms: checkedPrograms,
  35642.                     checkedSecurityPrograms: checkedSecurityPrograms
  35643.                 })))), _react2["default"].DOM.div({
  35644.                     className: "installed-program_wrapper"
  35645.                 }, _react2["default"].DOM.div({
  35646.                     className: "clearfix"
  35647.                 }, _react2["default"].DOM.div({
  35648.                     className: "installed-program_list-title"
  35649.                 }, l("protect_installed_programs_title")), _react2["default"].DOM.div({
  35650.                     className: "installed-program_switch-wrapper"
  35651.                 }, _react2["default"].DOM.input({
  35652.                     type: "checkbox",
  35653.                     className: "installed-program_switch-checkbox custom-control_switch-input",
  35654.                     id: switchId,
  35655.                     checked: isUsefulHidden,
  35656.                     onChange: function(e) {
  35657.                         toggleUsefulPrograms();
  35658.                     }
  35659.                 }), _react2["default"].DOM.label({
  35660.                     className: "custom-control_switch-label",
  35661.                     htmlFor: switchId
  35662.                 }), _react2["default"].DOM.label({
  35663.                     className: "drivers-header_controls-text",
  35664.                     htmlFor: switchId
  35665.                 }, l("protect_installed_programs_switch")))), _react2["default"].DOM.table({
  35666.                     border: "1",
  35667.                     className: "installed-program"
  35668.                 }, _react2["default"].DOM.tbody(null, this.renderInstalledProgramsRows({
  35669.                     isAPIFailed: isAPIFailed,
  35670.                     harmfulPrograms: harmfulPrograms,
  35671.                     programs: programs
  35672.                 }), hiddenProgramsNumber > 0 && !installedProgramsExpanded && harmfulPrograms.length > 0 ? _react2["default"].DOM.tr({
  35673.                     className: "installed-program_expand-row"
  35674.                 }, _react2["default"].DOM.td({
  35675.                     colSpan: "7",
  35676.                     style: {
  35677.                         width: "100%",
  35678.                         padding: "0"
  35679.                     }
  35680.                 }, _react2["default"].DOM.a({
  35681.                     href: "javascript:void(0)",
  35682.                     className: "installed-program_expand-row-link",
  35683.                     onMouseDown: function(e) {
  35684.                         e.preventDefault();
  35685.                         expandAllInstalledPrograms();
  35686.                     }
  35687.                 }, _react2["default"].DOM.table({
  35688.                     style: {
  35689.                         height: "100%",
  35690.                         width: "100%"
  35691.                     }
  35692.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr({
  35693.                     style: {
  35694.                         verticalAlign: "middle",
  35695.                         textAlign: "center"
  35696.                     }
  35697.                 }, _react2["default"].DOM.td(null, (0, _Img2["default"])({
  35698.                     src: "img/programs/expand-all.png",
  35699.                     width: "17",
  35700.                     height: "10",
  35701.                     className: "installed-program_expand-row-icon"
  35702.                 }), _react2["default"].DOM.span({
  35703.                     className: "installed-program_expand-row-link-text"
  35704.                 }, l("protect_show_more"))))))))) : _react2["default"].DOM.tr({
  35705.                     style: {
  35706.                         fontSize: "0"
  35707.                     }
  35708.                 }, " ")))));
  35709.             }
  35710.         });
  35711.         module.exports = exports["default"];
  35712.     }).call(exports, __webpack_require__(6));
  35713. }, function(module, exports, __webpack_require__) {
  35714.     "use strict";
  35715.     (function(l) {
  35716.         function _interopRequireDefault(obj) {
  35717.             return obj && obj.__esModule ? obj : {
  35718.                 "default": obj
  35719.             };
  35720.         }
  35721.         exports.__esModule = !0;
  35722.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _programsActions = __webpack_require__(99), _InstalledPrograms = __webpack_require__(707), _InstalledPrograms2 = _interopRequireDefault(_InstalledPrograms), _ProgramRow = __webpack_require__(319), _ProgramRow2 = _interopRequireDefault(_ProgramRow), _driversPrograms = __webpack_require__(36);
  35723.         __webpack_require__(798);
  35724.         var filterSecutiryPrograms = function(programs) {
  35725.             return (0, _driversPrograms.filterProgramsPage)((0, _driversPrograms.filterProtectPrograms)(programs));
  35726.         }, ProtectScreen = _react2["default"].createClass({
  35727.             displayName: "ProtectScreen",
  35728.             mixins: [ __webpack_require__(5) ],
  35729.             propTypes: {
  35730.                 page: _react.PropTypes.string.isRequired,
  35731.                 toggleUsefulPrograms: _react.PropTypes.func.isRequired,
  35732.                 toggleInstalledProgram: _react.PropTypes.func.isRequired,
  35733.                 expandInstalledProgram: _react.PropTypes.func.isRequired,
  35734.                 expandAllInstalledPrograms: _react.PropTypes.func.isRequired,
  35735.                 installPrograms: _react.PropTypes.func.isRequired,
  35736.                 resetProtectScreen: _react.PropTypes.func.isRequired,
  35737.                 removeInstalledProgram: _react.PropTypes.func.isRequired,
  35738.                 removeAllHarmfulPrograms: _react.PropTypes.func.isRequired,
  35739.                 securityPrograms: _react.PropTypes.array.isRequired,
  35740.                 confirmProgramInstallation: _react.PropTypes.func.isRequired,
  35741.                 toggleSecurityProgram: _react.PropTypes.func.isRequired,
  35742.                 currentLanguage: _react.PropTypes.string.isRequired
  35743.             },
  35744.             renderSecurityPrograms: function() {
  35745.                 var list = [], _props = this.props, securityPrograms = _props.securityPrograms, toggleSecurityProgram = _props.toggleSecurityProgram, installPrograms = _props.installPrograms, confirmProgramInstallation = _props.confirmProgramInstallation, currentLanguage = _props.currentLanguage;
  35746.                 securityPrograms.forEach(function(program, index) {
  35747.                     list.push((0, _ProgramRow2["default"])({
  35748.                         key: "program" + index,
  35749.                         program: program,
  35750.                         index: index,
  35751.                         confirmProgramInstallation: confirmProgramInstallation,
  35752.                         toggleProgram: toggleSecurityProgram,
  35753.                         installPrograms: installPrograms,
  35754.                         zone: "PROTECT_SECURITY_PROGRAMS",
  35755.                         currentLanguage: currentLanguage
  35756.                     }));
  35757.                 });
  35758.                 return _react2["default"].DOM.div({
  35759.                     className: "protect-screen_programs_list"
  35760.                 }, _react2["default"].DOM.div({
  35761.                     className: "installed-program_list-title"
  35762.                 }, l("protect_security_programs_title")), _react2["default"].DOM.table({
  35763.                     className: "programs_wrapper",
  35764.                     border: "1"
  35765.                 }, _react2["default"].DOM.tbody({
  35766.                     className: "programs_list"
  35767.                 }, list)));
  35768.             },
  35769.             render: function() {
  35770.                 var _props2 = this.props, page = _props2.page, protect = _props2.protect, securityPrograms = _props2.securityPrograms, confirmProgramInstallation = _props2.confirmProgramInstallation, toggleSecurityProgram = _props2.toggleSecurityProgram, installPrograms = _props2.installPrograms, toggleUsefulPrograms = _props2.toggleUsefulPrograms, toggleInstalledProgram = _props2.toggleInstalledProgram, expandInstalledProgram = _props2.expandInstalledProgram, expandAllInstalledPrograms = _props2.expandAllInstalledPrograms, removeInstalledProgram = _props2.removeInstalledProgram, removeAllHarmfulPrograms = _props2.removeAllHarmfulPrograms, currentLanguage = _props2.currentLanguage, isUsefulHidden = protect.isUsefulHidden, isAPIFailed = protect.isAPIFailed, apiData = protect.apiData, isActiveRemoving = protect.isActiveRemoving, isActiveRemovingAll = protect.isActiveRemovingAll, installedProgramsExpanded = protect.installedProgramsExpanded, isUninstallRatePopoverOpened = protect.isUninstallRatePopoverOpened, hideComponent = "PROTECT" !== page;
  35771.                 return _react2["default"].DOM.td({
  35772.                     className: "app-container " + (hideComponent ? "display-none" : "")
  35773.                 }, (0, _InstalledPrograms2["default"])({
  35774.                     isUsefulHidden: isUsefulHidden,
  35775.                     isActiveRemoving: isActiveRemoving,
  35776.                     isActiveRemovingAll: isActiveRemovingAll,
  35777.                     installedProgramsExpanded: installedProgramsExpanded,
  35778.                     isUninstallRatePopoverOpened: isUninstallRatePopoverOpened,
  35779.                     isAPIFailed: isAPIFailed,
  35780.                     installed: apiData,
  35781.                     securityPrograms: securityPrograms,
  35782.                     confirmProgramInstallation: confirmProgramInstallation,
  35783.                     toggleSecurityProgram: toggleSecurityProgram,
  35784.                     toggleUsefulPrograms: toggleUsefulPrograms,
  35785.                     installPrograms: installPrograms,
  35786.                     toggleInstalledProgram: toggleInstalledProgram,
  35787.                     expandInstalledProgram: expandInstalledProgram,
  35788.                     expandAllInstalledPrograms: expandAllInstalledPrograms,
  35789.                     removeInstalledProgram: removeInstalledProgram,
  35790.                     removeAllHarmfulPrograms: removeAllHarmfulPrograms,
  35791.                     currentLanguage: currentLanguage
  35792.                 }), this.renderSecurityPrograms());
  35793.             },
  35794.             componentDidMount: function() {
  35795.                 (0, this.props.resetProtectScreen)();
  35796.             }
  35797.         }), mapState = function(state) {
  35798.             return {
  35799.                 protect: state.protect,
  35800.                 securityPrograms: filterSecutiryPrograms(state.programs)
  35801.             };
  35802.         }, actions = {
  35803.             toggleUsefulPrograms: _programsActions.toggleUsefulPrograms,
  35804.             toggleInstalledProgram: _programsActions.toggleInstalledProgram,
  35805.             expandInstalledProgram: _programsActions.expandInstalledProgram,
  35806.             expandAllInstalledPrograms: _programsActions.expandAllInstalledPrograms,
  35807.             resetProtectScreen: _programsActions.resetProtectScreen,
  35808.             removeInstalledProgram: _programsActions.removeInstalledProgram,
  35809.             removeAllHarmfulPrograms: _programsActions.removeAllHarmfulPrograms,
  35810.             confirmProgramInstallation: _programsActions.confirmProgramInstallation,
  35811.             toggleSecurityProgram: _programsActions.toggleSecurityProgram,
  35812.             installPrograms: _programsActions.installPrograms
  35813.         };
  35814.         exports["default"] = (0, _connect2["default"])(mapState, actions)(ProtectScreen);
  35815.         module.exports = exports["default"];
  35816.     }).call(exports, __webpack_require__(6));
  35817. }, function(module, exports, __webpack_require__) {
  35818.     "use strict";
  35819.     exports.__esModule = !0;
  35820.     var _ProtectScreen = __webpack_require__(708), _ProtectScreen2 = function(obj) {
  35821.         return obj && obj.__esModule ? obj : {
  35822.             "default": obj
  35823.         };
  35824.     }(_ProtectScreen);
  35825.     exports["default"] = _ProtectScreen2["default"];
  35826.     module.exports = exports["default"];
  35827. }, function(module, exports, __webpack_require__) {
  35828.     "use strict";
  35829.     function _interopRequireDefault(obj) {
  35830.         return obj && obj.__esModule ? obj : {
  35831.             "default": obj
  35832.         };
  35833.     }
  35834.     function mapState(state) {
  35835.         return {
  35836.             page: state.page,
  35837.             app: state.app,
  35838.             currentLanguage: state.lang.currentLanguage
  35839.         };
  35840.     }
  35841.     exports.__esModule = !0;
  35842.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _diagnosticsActions = __webpack_require__(227), _Header = __webpack_require__(685), _Header2 = _interopRequireDefault(_Header), _BurgerMenu = __webpack_require__(668), _BurgerMenu2 = _interopRequireDefault(_BurgerMenu), _ConfirmPopup = __webpack_require__(669), _ConfirmPopup2 = _interopRequireDefault(_ConfirmPopup), _Start = __webpack_require__(715), _Start2 = _interopRequireDefault(_Start), _Layout = __webpack_require__(695), _Layout2 = _interopRequireDefault(_Layout), _DriversScreen = __webpack_require__(679), _DriversScreen2 = _interopRequireDefault(_DriversScreen), _ProgramsScreen = __webpack_require__(705), _ProgramsScreen2 = _interopRequireDefault(_ProgramsScreen), _ProtectScreen = __webpack_require__(709), _ProtectScreen2 = _interopRequireDefault(_ProtectScreen), _Diagnostics = __webpack_require__(670), _Diagnostics2 = _interopRequireDefault(_Diagnostics), _GamesScreen = __webpack_require__(684), _GamesScreen2 = _interopRequireDefault(_GamesScreen), _SettingsScreen = __webpack_require__(714), _SettingsScreen2 = _interopRequireDefault(_SettingsScreen), _Loading = __webpack_require__(696), _Loading2 = _interopRequireDefault(_Loading), _LoadingScreen = __webpack_require__(698), _LoadingScreen2 = _interopRequireDefault(_LoadingScreen), _Installation = __webpack_require__(694), _Installation2 = _interopRequireDefault(_Installation), _FinalScreen = __webpack_require__(682), _FinalScreen2 = _interopRequireDefault(_FinalScreen), _NoInternetScreen = __webpack_require__(702), _NoInternetScreen2 = _interopRequireDefault(_NoInternetScreen), _debounce = __webpack_require__(265), _debounce2 = _interopRequireDefault(_debounce), _emulateMediaQuery = __webpack_require__(757), _emulateMediaQuery2 = _interopRequireDefault(_emulateMediaQuery), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), _handleClasses = __webpack_require__(169), Router = _react2["default"].createClass({
  35843.         displayName: "Router",
  35844.         mixins: [ __webpack_require__(5) ],
  35845.         propTypes: {
  35846.             dispatch: _react.PropTypes.func,
  35847.             loadDiagnosticInfo: _react.PropTypes.func.isRequired,
  35848.             page: _react.PropTypes.string.isRequired,
  35849.             state: _react.PropTypes.any,
  35850.             app: _react.PropTypes.object.isRequired,
  35851.             currentLanguage: _react.PropTypes.string.isRequired
  35852.         },
  35853.         componentDidMount: function() {
  35854.             (0, this.props.loadDiagnosticInfo)();
  35855.             (0, _emulateMediaQuery2["default"])();
  35856.             window.onresize = (0, _debounce2["default"])(_emulateMediaQuery2["default"], 200);
  35857.             if (_settings2["default"].get("general.minifyMenu").value) (0, _handleClasses.addClass)(document.body, "minify-menu");
  35858.         },
  35859.         renderPopup: function(popup) {
  35860.             var isOpened = popup.isOpened, name = popup.name, data = popup.data, component = null;
  35861.             if (isOpened) switch (name) {
  35862.               case "CONFIRM_INSTALL_PROGRAM":
  35863.                 component = (0, _ConfirmPopup2["default"])(data);
  35864.             }
  35865.             return component;
  35866.         },
  35867.         renderPage: function(page, currentLanguage) {
  35868.             switch (page) {
  35869.               case "START":
  35870.               case "DRIVERS":
  35871.               case "PROGRAMS":
  35872.               case "PROTECT":
  35873.               case "DIAGNOSTICS":
  35874.               case "GAMES":
  35875.               case "SETTINGS":
  35876.                 return _react2["default"].DOM.div({
  35877.                     style: {
  35878.                         height: "100%"
  35879.                     }
  35880.                 }, "START" === page ? (0, _Start2["default"])({
  35881.                     currentLanguage: currentLanguage
  35882.                 }) : null, (0, _Layout2["default"])({
  35883.                     page: page,
  35884.                     currentLanguage: currentLanguage
  35885.                 }, (0, _DriversScreen2["default"])({
  35886.                     page: page,
  35887.                     currentLanguage: currentLanguage
  35888.                 }), (0, _ProgramsScreen2["default"])({
  35889.                     page: page,
  35890.                     currentLanguage: currentLanguage
  35891.                 }), (0, _ProtectScreen2["default"])({
  35892.                     page: page,
  35893.                     currentLanguage: currentLanguage
  35894.                 }), (0, _Diagnostics2["default"])({
  35895.                     page: page,
  35896.                     currentLanguage: currentLanguage
  35897.                 }), "ru" === currentLanguage ? (0, _GamesScreen2["default"])({
  35898.                     page: page,
  35899.                     currentLanguage: currentLanguage
  35900.                 }) : null, (0, _SettingsScreen2["default"])({
  35901.                     page: page,
  35902.                     currentLanguage: currentLanguage
  35903.                 })));
  35904.  
  35905.               case "LOADING":
  35906.                 return (0, _Loading2["default"])({
  35907.                     currentLanguage: currentLanguage
  35908.                 });
  35909.  
  35910.               case "LOADING_SCREEN":
  35911.                 return (0, _LoadingScreen2["default"])({
  35912.                     currentLanguage: currentLanguage
  35913.                 });
  35914.  
  35915.               case "INSTALLATION":
  35916.                 return (0, _Installation2["default"])({
  35917.                     currentLanguage: currentLanguage
  35918.                 });
  35919.  
  35920.               case "FINAL_SCREEN":
  35921.                 return (0, _FinalScreen2["default"])({
  35922.                     currentLanguage: currentLanguage
  35923.                 });
  35924.  
  35925.               case "NO_INTERNET_SCREEN":
  35926.                 return (0, _NoInternetScreen2["default"])({
  35927.                     currentLanguage: currentLanguage
  35928.                 });
  35929.  
  35930.               default:
  35931.                 return _react2["default"].DOM.div(null);
  35932.             }
  35933.         },
  35934.         render: function() {
  35935.             var _props = this.props, app = _props.app, page = _props.page, currentLanguage = _props.currentLanguage;
  35936.             return _react2["default"].DOM.div({
  35937.                 style: {
  35938.                     height: "100%",
  35939.                     position: "relative"
  35940.                 }
  35941.             }, (0, _Header2["default"])({
  35942.                 currentLanguage: currentLanguage
  35943.             }), this.renderPage(page, currentLanguage), app.isBurgerMenuOpened ? (0, _BurgerMenu2["default"])({
  35944.                 currentLanguage: currentLanguage
  35945.             }) : null, this.renderPopup(app.popup), _react2["default"].DOM.div({
  35946.                 className: "app_border-top"
  35947.             }), _react2["default"].DOM.div({
  35948.                 className: "app_border-right"
  35949.             }), _react2["default"].DOM.div({
  35950.                 className: "app_border-bottom"
  35951.             }), _react2["default"].DOM.div({
  35952.                 className: "app_border-left"
  35953.             }));
  35954.         }
  35955.     }), actions = {
  35956.         loadDiagnosticInfo: _diagnosticsActions.loadDiagnosticInfo
  35957.     };
  35958.     exports["default"] = (0, _connect2["default"])(mapState, actions)(Router);
  35959.     module.exports = exports["default"];
  35960. }, function(module, exports, __webpack_require__) {
  35961.     "use strict";
  35962.     function _interopRequireDefault(obj) {
  35963.         return obj && obj.__esModule ? obj : {
  35964.             "default": obj
  35965.         };
  35966.     }
  35967.     exports.__esModule = !0;
  35968.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _last = __webpack_require__(264), _last2 = _interopRequireDefault(_last), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _utils = __webpack_require__(23), _logs = __webpack_require__(3), _openFolder = __webpack_require__(766), _openFolder2 = _interopRequireDefault(_openFolder);
  35969.     exports["default"] = _react2["default"].createClass({
  35970.         displayName: "SettingRow",
  35971.         propTypes: {
  35972.             keyPath: _react.PropTypes.string.isRequired,
  35973.             setting: _react.PropTypes.object.isRequired,
  35974.             currentLanguage: _react.PropTypes.string.isRequired,
  35975.             languages: _react.PropTypes.array,
  35976.             changeSetting: _react.PropTypes.func.isRequired,
  35977.             changeLang: _react.PropTypes.func.isRequired
  35978.         },
  35979.         renderLanguages: function(languages) {
  35980.             return languages.map(function(language) {
  35981.                 return _react2["default"].DOM.option({
  35982.                     key: language.id,
  35983.                     value: language.id
  35984.                 }, language.name);
  35985.             });
  35986.         },
  35987.         render: function() {
  35988.             var _props = this.props, keyPath = _props.keyPath, setting = _props.setting, currentLanguage = _props.currentLanguage, languages = _props.languages, changeSetting = _props.changeSetting, changeLang = _props.changeLang, type = setting.type, value = setting.value, disabled = setting.disabled, title = setting.title, caption = setting.caption, anchor = setting.anchor, href = setting.href, name = (0,
  35989.             _last2["default"])(keyPath.split(".")), customLink = "custom" === href;
  35990.             return _react2["default"].DOM.tr({
  35991.                 className: "settings-screen_row " + (disabled ? "is-disabled" : "")
  35992.             }, _react2["default"].DOM.td({
  35993.                 className: "settings-screen_cell-text"
  35994.             }, _react2["default"].DOM.div({
  35995.                 className: "settings-screen_cell-title"
  35996.             }, title), _react2["default"].DOM.div({
  35997.                 className: "settings-screen_cell-caption"
  35998.             }, caption + " ", _react2["default"].DOM.a({
  35999.                 href: "#",
  36000.                 className: "settings-screen_link",
  36001.                 onClick: function(e) {
  36002.                     e.stopPropagation();
  36003.                     e.preventDefault();
  36004.                     !customLink ? (0, _utils.goToUrl)(href) : (0, _openFolder2["default"])(_logs.logFolder);
  36005.                 }
  36006.             }, !customLink ? anchor : _logs.logFolder))), "language" === type ? _react2["default"].DOM.td({
  36007.                 className: "settings-screen_cell-control"
  36008.             }, _react2["default"].DOM.div({
  36009.                 className: "settings-screen_select"
  36010.             }, (0, _Img2["default"])({
  36011.                 src: "img/screens/arrow-start-screen-toggle.png",
  36012.                 className: "settings-screen_select-arrow",
  36013.                 width: "8",
  36014.                 height: "4"
  36015.             }), _react2["default"].DOM.select({
  36016.                 onChange: function(e) {
  36017.                     _statistics2["default"].event({
  36018.                         action: "settings clicked " + name.toLowerCase()
  36019.                     });
  36020.                     var value = e.target.value;
  36021.                     changeLang(value);
  36022.                     changeSetting(keyPath, setting, value);
  36023.                 },
  36024.                 value: currentLanguage
  36025.             }, this.renderLanguages(languages)))) : _react2["default"].DOM.td({
  36026.                 className: "settings-screen_cell-control"
  36027.             }, _react2["default"].DOM.div({
  36028.                 className: "settings-screen_cell-control-switch"
  36029.             }, _react2["default"].DOM.input({
  36030.                 type: "checkbox",
  36031.                 className: "custom-control_switch-input",
  36032.                 id: keyPath,
  36033.                 checked: value,
  36034.                 disabled: disabled,
  36035.                 onChange: function(e) {
  36036.                     _statistics2["default"].event({
  36037.                         action: "settings clicked " + name.toLowerCase()
  36038.                     });
  36039.                     changeSetting(keyPath, setting, e.target.checked);
  36040.                 }
  36041.             }), _react2["default"].DOM.label({
  36042.                 className: "custom-control_switch-label",
  36043.                 htmlFor: keyPath
  36044.             }))));
  36045.         }
  36046.     });
  36047.     module.exports = exports["default"];
  36048. }, function(module, exports, __webpack_require__) {
  36049.     "use strict";
  36050.     (function(l) {
  36051.         function _interopRequireDefault(obj) {
  36052.             return obj && obj.__esModule ? obj : {
  36053.                 "default": obj
  36054.             };
  36055.         }
  36056.         exports.__esModule = !0;
  36057.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  36058.         __webpack_require__(799);
  36059.         exports["default"] = _react2["default"].createClass({
  36060.             displayName: "SettingsHeader",
  36061.             mixins: [ __webpack_require__(5) ],
  36062.             propTypes: {
  36063.                 page: _react.PropTypes.string.isRequired,
  36064.                 currentLanguage: _react.PropTypes.string.isRequired
  36065.             },
  36066.             render: function() {
  36067.                 return _react2["default"].DOM.div({
  36068.                     className: "settings-header"
  36069.                 }, _react2["default"].DOM.div({
  36070.                     style: {
  36071.                         paddingLeft: "32px"
  36072.                     }
  36073.                 }, _react2["default"].DOM.h1({
  36074.                     className: "screen-title"
  36075.                 }, l("settings-header_title")), _react2["default"].DOM.p({
  36076.                     className: "settings-header_caption"
  36077.                 }, l("settings-header_caption"))), _react2["default"].DOM.div({
  36078.                     className: "settings-header_bg"
  36079.                 }, (0, _Img2["default"])({
  36080.                     src: "img/screens/settings-bg.png",
  36081.                     width: "144",
  36082.                     height: "135"
  36083.                 })));
  36084.             }
  36085.         });
  36086.         module.exports = exports["default"];
  36087.     }).call(exports, __webpack_require__(6));
  36088. }, function(module, exports, __webpack_require__) {
  36089.     "use strict";
  36090.     (function(l) {
  36091.         function _interopRequireDefault(obj) {
  36092.             return obj && obj.__esModule ? obj : {
  36093.                 "default": obj
  36094.             };
  36095.         }
  36096.         exports.__esModule = !0;
  36097.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _utils = __webpack_require__(23), _settingsActions = __webpack_require__(165), _langActions = __webpack_require__(229), _MoveToTop = __webpack_require__(700), _MoveToTop2 = _interopRequireDefault(_MoveToTop), _SettingsHeader = __webpack_require__(712), _SettingsHeader2 = _interopRequireDefault(_SettingsHeader), _SettingRow = __webpack_require__(711), _SettingRow2 = _interopRequireDefault(_SettingRow);
  36098.         __webpack_require__(800);
  36099.         var SettingsScreen = _react2["default"].createClass({
  36100.             displayName: "SettingsScreen",
  36101.             mixins: [ __webpack_require__(5) ],
  36102.             propTypes: {
  36103.                 page: _react.PropTypes.string.isRequired,
  36104.                 currentLanguage: _react.PropTypes.string.isRequired,
  36105.                 languages: _react.PropTypes.array,
  36106.                 changeSetting: _react.PropTypes.func.isRequired,
  36107.                 changeLang: _react.PropTypes.func.isRequired
  36108.             },
  36109.             renderSection: function(_ref) {
  36110.                 var sectionId = _ref.sectionId, section = _ref.section, sectionTitle = section.sectionTitle, sectionSettings = section.settings, _props = this.props, currentLanguage = _props.currentLanguage, languages = _props.languages, changeSetting = _props.changeSetting, changeLang = _props.changeLang;
  36111.                 return _react2["default"].DOM.div({
  36112.                     className: "settings-screen"
  36113.                 }, _react2["default"].DOM.table({
  36114.                     className: "settings-screen_table"
  36115.                 }, _react2["default"].DOM.thead(null, _react2["default"].DOM.tr({
  36116.                     className: "settings-screen_header"
  36117.                 }, _react2["default"].DOM.td({
  36118.                     colSpan: "2",
  36119.                     className: "settings-screen_title"
  36120.                 }, sectionTitle))), _react2["default"].DOM.tbody(null, Object.entries(sectionSettings).map(function(_ref2) {
  36121.                     var settingId = _ref2[0], setting = _ref2[1], keyPath = sectionId + "." + settingId;
  36122.                     return (0, _SettingRow2["default"])({
  36123.                         key: keyPath,
  36124.                         keyPath: keyPath,
  36125.                         setting: setting,
  36126.                         currentLanguage: currentLanguage,
  36127.                         languages: languages,
  36128.                         changeSetting: changeSetting,
  36129.                         changeLang: changeLang
  36130.                     });
  36131.                 }))));
  36132.             },
  36133.             render: function() {
  36134.                 var _this = this, _props2 = this.props, page = _props2.page, settings = _props2.settings, currentLanguage = _props2.currentLanguage, hideComponent = "SETTINGS" !== page, licenseUrl = "https://drp.su/" + ("ru" === currentLanguage ? "ru" : "en") + "/info/terms-of-use";
  36135.                 return _react2["default"].DOM.td({
  36136.                     className: (hideComponent ? "display-none" : "") + " settings-screen__wrapper"
  36137.                 }, (0, _MoveToTop2["default"])({
  36138.                     page: page,
  36139.                     currentLanguage: currentLanguage
  36140.                 }), (0, _SettingsHeader2["default"])({
  36141.                     page: page,
  36142.                     currentLanguage: currentLanguage
  36143.                 }), Object.entries(settings).map(function(_ref3) {
  36144.                     var sectionId = _ref3[0], section = _ref3[1];
  36145.                     return _this.renderSection({
  36146.                         sectionId: sectionId,
  36147.                         section: section
  36148.                     });
  36149.                 }), _react2["default"].DOM.div({
  36150.                     className: "settings-screen__footer clearfix"
  36151.                 }, _react2["default"].DOM.div({
  36152.                     className: "settings-screen__footer-copyright"
  36153.                 }, "Artur Kuzyakov © 2018"), _react2["default"].DOM.a({
  36154.                     href: "#",
  36155.                     className: "settings-screen__footer-license",
  36156.                     onClick: function(e) {
  36157.                         e.stopPropagation();
  36158.                         e.preventDefault();
  36159.                         (0, _utils.goToUrl)(licenseUrl);
  36160.                     }
  36161.                 }, l("settings-screen_license"))));
  36162.             }
  36163.         }), mapState = function(state) {
  36164.             return {
  36165.                 settings: state.settings,
  36166.                 languages: state.lang.languages
  36167.             };
  36168.         }, actions = {
  36169.             changeSetting: _settingsActions.changeSetting,
  36170.             changeLang: _langActions.changeLang
  36171.         };
  36172.         exports["default"] = (0, _connect2["default"])(mapState, actions)(SettingsScreen);
  36173.         module.exports = exports["default"];
  36174.     }).call(exports, __webpack_require__(6));
  36175. }, function(module, exports, __webpack_require__) {
  36176.     "use strict";
  36177.     exports.__esModule = !0;
  36178.     var _SettingsScreen = __webpack_require__(713), _SettingsScreen2 = function(obj) {
  36179.         return obj && obj.__esModule ? obj : {
  36180.             "default": obj
  36181.         };
  36182.     }(_SettingsScreen);
  36183.     exports["default"] = _SettingsScreen2["default"];
  36184.     module.exports = exports["default"];
  36185. }, function(module, exports, __webpack_require__) {
  36186.     "use strict";
  36187.     (function(l, nl) {
  36188.         function _interopRequireDefault(obj) {
  36189.             return obj && obj.__esModule ? obj : {
  36190.                 "default": obj
  36191.             };
  36192.         }
  36193.         function mapState(state) {
  36194.             return {
  36195.                 start: state.start,
  36196.                 drivers: state.drivers,
  36197.                 programs: state.programs,
  36198.                 languages: state.lang.languages,
  36199.                 currentLanguage: state.lang.currentLanguage,
  36200.                 model: (0, _getModel.getModel)(),
  36201.                 app: state.app
  36202.             };
  36203.         }
  36204.         exports.__esModule = !0;
  36205.         var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _system = __webpack_require__(9), _getModel = __webpack_require__(124), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _cmd = __webpack_require__(242), _startActions = __webpack_require__(318), _programsActions = __webpack_require__(99), _appActions = __webpack_require__(123), _menuActions = __webpack_require__(62), _connect = __webpack_require__(29), _connect2 = _interopRequireDefault(_connect), _driversPrograms = __webpack_require__(36), _langActions = __webpack_require__(229), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img), _StartPopover = __webpack_require__(716), _StartPopover2 = _interopRequireDefault(_StartPopover), _handleClasses = __webpack_require__(169), _getInternetExplorerVersion = __webpack_require__(100), _getInternetExplorerVersion2 = _interopRequireDefault(_getInternetExplorerVersion), _utils = __webpack_require__(325), _processNotifierFile = __webpack_require__(327), _utils2 = __webpack_require__(23), _prepareDiagDataParam = __webpack_require__(767), _prepareDiagDataParam2 = _interopRequireDefault(_prepareDiagDataParam), _processes = __webpack_require__(63);
  36206.         __webpack_require__(801);
  36207.         var internetExplorerVersion = (0, _getInternetExplorerVersion2["default"])(), Start = _react2["default"].createClass({
  36208.             displayName: "Start",
  36209.             propTypes: {
  36210.                 start: _react.PropTypes.object.isRequired,
  36211.                 drivers: _react.PropTypes.object,
  36212.                 programs: _react.PropTypes.array,
  36213.                 startInstallAll: _react.PropTypes.func,
  36214.                 startInstallCustom: _react.PropTypes.func,
  36215.                 startExpertMode: _react.PropTypes.func,
  36216.                 expandDrivers: _react.PropTypes.func.isRequired,
  36217.                 expandPrograms: _react.PropTypes.func.isRequired,
  36218.                 openDriversPopover: _react.PropTypes.func.isRequired,
  36219.                 openProgramsPopover: _react.PropTypes.func.isRequired,
  36220.                 openDiagnosticsPopover: _react.PropTypes.func.isRequired,
  36221.                 closePopovers: _react.PropTypes.func.isRequired,
  36222.                 toggleProgramEula: _react.PropTypes.func.isRequired,
  36223.                 changeLang: _react.PropTypes.func,
  36224.                 languages: _react.PropTypes.array,
  36225.                 currentLanguage: _react.PropTypes.string.isRequired,
  36226.                 loadLanguageList: _react.PropTypes.func.isRequired,
  36227.                 model: _react.PropTypes.object.isRequired,
  36228.                 app: _react.PropTypes.object.isRequired
  36229.             },
  36230.             shouldFixHoverIcon: function() {
  36231.                 if (-1 !== internetExplorerVersion) if (internetExplorerVersion < 10) return !0; else return !1; else return !1;
  36232.             },
  36233.             getModelName: function() {
  36234.                 var model = this.props.model;
  36235.                 if ("Notebook" !== model.type || "Noname" === model.vendor || "Unknown" === model.name) return l("start_title_default_model"); else return model.vendor + " " + model.name;
  36236.             },
  36237.             render: function() {
  36238.                 var _this = this;
  36239.                 try {
  36240.                     _system.WshShell.AppActivate((0, _processes.getMyPID)());
  36241.                 } catch (err) {}
  36242.                 var _props = this.props, startInstallAll = _props.startInstallAll, startExpertMode = _props.startExpertMode, drivers = _props.drivers, programs = _props.programs, app = _props.app, start = _props.start, driversIsExpanded = start.driversIsExpanded, programsIsExpanded = start.programsIsExpanded, devices = drivers.devices, checkedDrivers = (0,
  36243.                 _driversPrograms.filterCheckedDrivers)(devices), checkedPrograms = (0, _driversPrograms.filterCheckedPrograms)(programs), visibleDrivers = driversIsExpanded ? checkedDrivers : checkedDrivers.slice(0, 4), visiblePrograms = programsIsExpanded ? checkedPrograms : checkedPrograms.slice(0, 4), deferredPrograms = (0,
  36244.                 _driversPrograms.filterVisibleStartScreenDeferredPrograms)(programs), driversCount = (0,
  36245.                 _driversPrograms.countCheckedDrivers)(devices, programs), _props2 = this.props, changeLang = _props2.changeLang, languages = _props2.languages, currentLanguage = _props2.currentLanguage, language = languages.length ? languages.find(function(_ref) {
  36246.                     return _ref.id === currentLanguage;
  36247.                 }) : null, licenseUrl = "https://drp.su/" + ("ru" === currentLanguage ? "ru" : "en") + "/info/terms-of-use";
  36248.                 return _react2["default"].DOM.div({
  36249.                     id: "Start",
  36250.                     className: "start top-for-header positioning-for-header",
  36251.                     style: {
  36252.                         textAlign: "center"
  36253.                     }
  36254.                 }, _react2["default"].DOM.div({
  36255.                     className: "start_wrapper"
  36256.                 }, _react2["default"].DOM.table({
  36257.                     className: "start_wrapper-inner"
  36258.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr(null, _react2["default"].DOM.td({
  36259.                     className: "start_cta-block"
  36260.                 }, _react2["default"].DOM.p({
  36261.                     className: "start_msg start_msg-cta-1",
  36262.                     dangerouslySetInnerHTML: {
  36263.                         __html: l("start_title").replace("{{MODEL}}", this.getModelName())
  36264.                     }
  36265.                 }), driversCount > 0 ? _react2["default"].DOM.button({
  36266.                     className: "cta-green-btn cta-btn-68 start_wrapper-button",
  36267.                     onClick: function() {
  36268.                         return startInstallAll();
  36269.                     }
  36270.                 }, (0, _Img2["default"])({
  36271.                     src: "img/programs/btn-icon-install-all-soft.png",
  36272.                     className: "cta-green-btn-install-all-icon start_wrapper-button-icon",
  36273.                     width: "46",
  36274.                     height: "38"
  36275.                 }), _react2["default"].DOM.span({
  36276.                     className: "cta-green-btn-text"
  36277.                 }, l("start_button_install"))) : null, _react2["default"].DOM.div({
  36278.                     className: "start_cta-caption"
  36279.                 }, _react2["default"].DOM.div({
  36280.                     dangerouslySetInnerHTML: {
  36281.                         __html: l("start_caption")
  36282.                     }
  36283.                 }))), _react2["default"].DOM.td({
  36284.                     className: "start_list",
  36285.                     onMouseMove: function(e) {
  36286.                         return _this.handleMouseMove(e, null);
  36287.                     },
  36288.                     onMouseLeave: function(e) {
  36289.                         return _this.handleMouseMove(e, null);
  36290.                     }
  36291.                 }, this.renderDrivers({
  36292.                     devices: visibleDrivers,
  36293.                     totalCount: checkedDrivers.length
  36294.                 }), this.renderPrograms({
  36295.                     programs: visiblePrograms,
  36296.                     totalCount: checkedPrograms.length,
  36297.                     deferredPrograms: deferredPrograms
  36298.                 }), this.renderDiagnostics()))))), _react2["default"].DOM.div({
  36299.                     className: "footer"
  36300.                 }, _react2["default"].DOM.div({
  36301.                     className: "footer_meta"
  36302.                 }, _react2["default"].DOM.span({
  36303.                     className: "footer_meta-lang"
  36304.                 }, this.shouldFixHoverIcon() ? (0, _Img2["default"])({
  36305.                     src: "img/screens/globe_normal.png",
  36306.                     className: "footer_meta-lang-icon",
  36307.                     width: "16",
  36308.                     height: "16",
  36309.                     style: {
  36310.                         verticalAlign: "top",
  36311.                         marginRight: "9px",
  36312.                         marginTop: "4px"
  36313.                     }
  36314.                 }) : _react2["default"].DOM.i({
  36315.                     className: "footer_meta-lang-icon",
  36316.                     width: "16",
  36317.                     height: "16"
  36318.                 }), _react2["default"].DOM.span({
  36319.                     className: "footer_meta-lang-select"
  36320.                 }, _react2["default"].DOM.span({
  36321.                     className: "footer_meta-lang-label"
  36322.                 }, language ? language.name : "English", _react2["default"].DOM.i({
  36323.                     className: "footer_meta-lang-label-arrow"
  36324.                 })), _react2["default"].DOM.select({
  36325.                     name: "language",
  36326.                     className: !app.isBurgerMenuOpened ? "" : "is-hidden",
  36327.                     onChange: function(e) {
  36328.                         return changeLang(e.target.value, "startpage language clicked");
  36329.                     },
  36330.                     value: currentLanguage,
  36331.                     style: {
  36332.                         fontSize: 14
  36333.                     }
  36334.                 }, this.renderLanguages(languages)))), this.shouldFixHoverIcon() ? (0, _Img2["default"])({
  36335.                     src: "img/screens/trusted.png",
  36336.                     className: "footer_meta-trusted",
  36337.                     width: "128",
  36338.                     height: "24"
  36339.                 }) : _react2["default"].DOM.i({
  36340.                     className: "footer_meta-trusted-icon",
  36341.                     width: "128",
  36342.                     height: "24"
  36343.                 })), _react2["default"].DOM.a({
  36344.                     href: "#",
  36345.                     className: "footer_license",
  36346.                     onClick: function(e) {
  36347.                         e.stopPropagation();
  36348.                         e.preventDefault();
  36349.                         (0, _utils2.goToUrl)(licenseUrl);
  36350.                     }
  36351.                 }, l("start_license")), _react2["default"].DOM.a({
  36352.                     className: "footer_expert " + ("ru" !== currentLanguage ? "has-border" : ""),
  36353.                     href: "#",
  36354.                     onClick: function() {
  36355.                         return startExpertMode({
  36356.                             eventAction: "startpage expertmode clicked"
  36357.                         });
  36358.                     }
  36359.                 }, this.shouldFixHoverIcon() ? (0, _Img2["default"])({
  36360.                     src: "img/screens/expert_normal.png",
  36361.                     width: "15",
  36362.                     height: "15",
  36363.                     style: {
  36364.                         verticalAlign: "middle",
  36365.                         marginRight: "9px"
  36366.                     }
  36367.                 }) : _react2["default"].DOM.i({
  36368.                     className: "footer_expert-icon",
  36369.                     width: "15",
  36370.                     height: "15"
  36371.                 }), l("start_expert_mode"))));
  36372.             },
  36373.             renderDrivers: function(_ref2) {
  36374.                 var _this2 = this, devices = _ref2.devices, totalCount = _ref2.totalCount, _props3 = this.props, start = _props3.start, expandDrivers = _props3.expandDrivers, currentLanguage = _props3.currentLanguage, driversIsExpanded = start.driversIsExpanded, driversPopoverIsOpened = start.driversPopoverIsOpened;
  36375.                 return devices.length ? _react2["default"].DOM.div({
  36376.                     className: "start_list-block"
  36377.                 }, _react2["default"].DOM.div({
  36378.                     className: "start_list-title"
  36379.                 }, _react2["default"].DOM.span({
  36380.                     dangerouslySetInnerHTML: {
  36381.                         __html: nl("start_drivers_title", "start_drivers_title_n", totalCount).replace("{{COUNT}}", totalCount)
  36382.                     }
  36383.                 }), _react2["default"].DOM.a({
  36384.                     href: "#",
  36385.                     className: "start_list-block-icon",
  36386.                     onMouseMove: function(e) {
  36387.                         return _this2.handleMouseMove(e, "start_drivers_popover");
  36388.                     }
  36389.                 }, (0, _Img2["default"])({
  36390.                     src: "img/screens/start-info.png",
  36391.                     className: "list_info-link-icon",
  36392.                     width: "18",
  36393.                     height: "17"
  36394.                 }), driversPopoverIsOpened ? (0, _StartPopover2["default"])({
  36395.                     message: l("start_drivers_popover"),
  36396.                     onMouseMove: function(e) {
  36397.                         return _this2.handleMouseMove(e, "start_drivers_popover");
  36398.                     }
  36399.                 }) : null)), _react2["default"].DOM.ul({
  36400.                     className: "start_list-items"
  36401.                 }, devices.map(function(device, index) {
  36402.                     return _react2["default"].DOM.li({
  36403.                         key: "start_screen_device_" + device.id + "_" + index,
  36404.                         className: "start_list-item " + ("ru" !== currentLanguage ? "clickable" : "")
  36405.                     }, "ru" === currentLanguage ? _react2["default"].DOM.span(null, "• " + device.recommendedDriver.name) : _react2["default"].DOM.span({
  36406.                         onClick: function(e) {
  36407.                             e.preventDefault();
  36408.                             _statistics2["default"].event({
  36409.                                 action: "startpage drivers clicked"
  36410.                             });
  36411.                             window.store.dispatch((0, _menuActions.navigate)("DRIVERS"));
  36412.                         }
  36413.                     }, "• " + device.recommendedDriver.name));
  36414.                 })), !driversIsExpanded && totalCount > 4 ? _react2["default"].DOM.a({
  36415.                     href: "#",
  36416.                     className: "start_list-item-toggle",
  36417.                     onClick: function(e) {
  36418.                         e.preventDefault();
  36419.                         expandDrivers();
  36420.                     }
  36421.                 }, (0, _Img2["default"])({
  36422.                     src: "img/screens/arrow-start-screen-toggle.png",
  36423.                     width: "15",
  36424.                     height: "6",
  36425.                     className: "start_list-item-toggle-arrow"
  36426.                 })) : null) : null;
  36427.             },
  36428.             renderText: function(textParts) {
  36429.                 return _react2["default"].DOM.div({
  36430.                     className: "start_list-accept-text"
  36431.                 }, textParts.map(function(part) {
  36432.                     if (part.href) return _react2["default"].DOM.a({
  36433.                         href: "#",
  36434.                         className: "start_list-accept-wrapper-link",
  36435.                         onClick: function(e) {
  36436.                             e.stopPropagation();
  36437.                             e.preventDefault();
  36438.                             (0, _utils2.goToUrl)(part.href);
  36439.                         }
  36440.                     }, part.text); else return part.text;
  36441.                 }));
  36442.             },
  36443.             renderEulas: function(_ref3) {
  36444.                 var _this3 = this, deferredPrograms = _ref3.deferredPrograms, toggleProgramEula = _ref3.toggleProgramEula;
  36445.                 return _react2["default"].DOM.div({
  36446.                     className: "start_list-accept-wrapper"
  36447.                 }, deferredPrograms.map(function(program) {
  36448.                     var id = program.id, name = program.name, confirmPopup = program.confirmPopup, isEulaChecked = program.isEulaChecked, eula = confirmPopup.eula || program.eula, policy = confirmPopup.policy || program.policy, text = l("confirm_popup_install_eula");
  36449.                     text = text.replace("{{PROGRAM.NAME}}", name);
  36450.                     var linkRegExp = /\{\{LINK[^\}]+\}\}/g;
  36451.                     text = text.replace(linkRegExp, "|$&|");
  36452.                     var textParts = text.split("|"), linkByParam = {
  36453.                         "{{LINK.EULA}}": {
  36454.                             href: eula,
  36455.                             text: l("confirm_popup_eula-link")
  36456.                         },
  36457.                         "{{LINK.POLICY}}": {
  36458.                             href: policy,
  36459.                             text: l("confirm_popup_policy-link")
  36460.                         }
  36461.                     };
  36462.                     textParts = text.split("|").map(function(text) {
  36463.                         return linkByParam[text] || {
  36464.                             text: text
  36465.                         };
  36466.                     });
  36467.                     var checkboxId = "start_program-eula-checkbox-" + id;
  36468.                     return _react2["default"].DOM.div(null, _react2["default"].DOM.div({
  36469.                         className: "start_list-accept-item"
  36470.                     }, _react2["default"].DOM.div({
  36471.                         className: "start_list-accept-checkbox"
  36472.                     }, _react2["default"].DOM.input({
  36473.                         type: "checkbox",
  36474.                         className: "custom-control_checkbox-input",
  36475.                         id: checkboxId,
  36476.                         checked: isEulaChecked,
  36477.                         onChange: function(e) {
  36478.                             _statistics2["default"].event({
  36479.                                 action: "startpage eula checkbox used " + name
  36480.                             });
  36481.                             toggleProgramEula(id, !isEulaChecked);
  36482.                         }
  36483.                     }), _react2["default"].DOM.label({
  36484.                         htmlFor: checkboxId,
  36485.                         className: "custom-control_checkbox-input-label"
  36486.                     })), _this3.renderText(textParts)));
  36487.                 }));
  36488.             },
  36489.             renderPrograms: function(_ref4) {
  36490.                 var _this4 = this, programs = _ref4.programs, totalCount = _ref4.totalCount, deferredPrograms = _ref4.deferredPrograms, _props4 = this.props, start = _props4.start, expandPrograms = _props4.expandPrograms, toggleProgramEula = _props4.toggleProgramEula, currentLanguage = _props4.currentLanguage, programsIsExpanded = start.programsIsExpanded, programsPopoverIsOpened = start.programsPopoverIsOpened, descriptionLanguage = "ru" === currentLanguage ? "ru" : "en";
  36491.                 return programs.length ? _react2["default"].DOM.div({
  36492.                     className: "start_list-block"
  36493.                 }, _react2["default"].DOM.div({
  36494.                     className: "start_list-title"
  36495.                 }, _react2["default"].DOM.span({
  36496.                     dangerouslySetInnerHTML: {
  36497.                         __html: nl("start_programs_title", "start_programs_title_n", totalCount).replace("{{COUNT}}", totalCount)
  36498.                     }
  36499.                 }), _react2["default"].DOM.a({
  36500.                     href: "#",
  36501.                     className: "start_list-block-icon",
  36502.                     onMouseMove: function(e) {
  36503.                         return _this4.handleMouseMove(e, "start_programs_popover");
  36504.                     }
  36505.                 }, (0, _Img2["default"])({
  36506.                     src: "img/screens/start-info.png",
  36507.                     className: "list_info-link-icon",
  36508.                     width: "18",
  36509.                     height: "17"
  36510.                 }), programsPopoverIsOpened ? (0, _StartPopover2["default"])({
  36511.                     message: l("start_programs_popover"),
  36512.                     onMouseMove: function(e) {
  36513.                         return _this4.handleMouseMove(e, "start_programs_popover");
  36514.                     }
  36515.                 }) : null)), _react2["default"].DOM.ul({
  36516.                     className: "start_list-items"
  36517.                 }, programs.map(function(program) {
  36518.                     return _react2["default"].DOM.li({
  36519.                         key: program.id,
  36520.                         className: "start_list-item " + ("ru" !== currentLanguage ? "clickable" : "")
  36521.                     }, "ru" === currentLanguage ? _react2["default"].DOM.span({
  36522.                         className: "start_list-item-text"
  36523.                     }, "• " + (program.localizedName ? program.localizedName[descriptionLanguage] : program.name)) : _react2["default"].DOM.span({
  36524.                         className: "start_list-item-text",
  36525.                         onClick: function(e) {
  36526.                             e.preventDefault();
  36527.                             _statistics2["default"].event({
  36528.                                 action: "startpage programs clicked"
  36529.                             });
  36530.                             window.store.dispatch((0, _menuActions.navigate)("PROGRAMS"));
  36531.                         }
  36532.                     }, "• " + (program.localizedName ? program.localizedName[descriptionLanguage] : program.name)), program.eula ? _react2["default"].DOM.a({
  36533.                         href: "#",
  36534.                         className: "start_list-item-link",
  36535.                         onClick: function(e) {
  36536.                             e.stopPropagation();
  36537.                             e.preventDefault();
  36538.                             (0, _utils2.goToUrl)(program.eula);
  36539.                         }
  36540.                     }, l("start_programs_eula")) : null, program.policy ? _react2["default"].DOM.a({
  36541.                         href: "#",
  36542.                         className: "start_list-item-link",
  36543.                         onClick: function(e) {
  36544.                             e.stopPropagation();
  36545.                             e.preventDefault();
  36546.                             (0, _utils2.goToUrl)(program.policy);
  36547.                         }
  36548.                     }, l("start_programs_policy")) : null);
  36549.                 })), !programsIsExpanded && totalCount > 4 ? _react2["default"].DOM.a({
  36550.                     href: "#",
  36551.                     className: "start_list-item-toggle",
  36552.                     onClick: function(e) {
  36553.                         e.preventDefault();
  36554.                         expandPrograms();
  36555.                     }
  36556.                 }, (0, _Img2["default"])({
  36557.                     src: "img/screens/arrow-start-screen-toggle.png",
  36558.                     width: "15",
  36559.                     height: "6",
  36560.                     className: "start_list-item-toggle-arrow"
  36561.                 })) : null, this.renderEulas({
  36562.                     deferredPrograms: deferredPrograms,
  36563.                     toggleProgramEula: toggleProgramEula
  36564.                 })) : null;
  36565.             },
  36566.             renderDiagnostics: function() {
  36567.                 var _this5 = this, _props5 = this.props, start = _props5.start, currentLanguage = _props5.currentLanguage, diagnosticsPopoverIsOpened = start.diagnosticsPopoverIsOpened;
  36568.                 return _react2["default"].DOM.div({
  36569.                     className: "start_list-block"
  36570.                 }, _react2["default"].DOM.div({
  36571.                     className: "start_list-title"
  36572.                 }, l("start_diagnostics_title"), _react2["default"].DOM.a({
  36573.                     href: "#",
  36574.                     className: "start_list-block-icon",
  36575.                     onMouseMove: function(e) {
  36576.                         return _this5.handleMouseMove(e, "start_diagnostics_popover");
  36577.                     }
  36578.                 }, (0, _Img2["default"])({
  36579.                     src: "img/screens/start-info.png",
  36580.                     className: "list_info-link-icon",
  36581.                     width: "18",
  36582.                     height: "17"
  36583.                 }), diagnosticsPopoverIsOpened ? (0, _StartPopover2["default"])({
  36584.                     message: l("start_diagnostics_popover"),
  36585.                     onMouseMove: function(e) {
  36586.                         return _this5.handleMouseMove(e, "start_diagnostics_popover");
  36587.                     }
  36588.                 }) : null)), _react2["default"].DOM.ul({
  36589.                     className: "start_list-items"
  36590.                 }, _react2["default"].DOM.li({
  36591.                     key: "start_diagnostics_network",
  36592.                     className: "start_list-item " + ("ru" !== currentLanguage ? "clickable" : "")
  36593.                 }, "ru" === currentLanguage ? _react2["default"].DOM.span(null, "• " + l("start_diagnostics_network")) : _react2["default"].DOM.span({
  36594.                     onClick: function(e) {
  36595.                         e.preventDefault();
  36596.                         window.store.dispatch((0, _menuActions.navigate)("DIAGNOSTICS"));
  36597.                         _statistics2["default"].event({
  36598.                             action: "startrpage diagnostics clicked"
  36599.                         });
  36600.                     }
  36601.                 }, "• " + l("start_diagnostics_network"))), _react2["default"].DOM.li({
  36602.                     key: "start_diagnostics_video",
  36603.                     className: "start_list-item " + ("ru" !== currentLanguage ? "clickable" : "")
  36604.                 }, "ru" === currentLanguage ? _react2["default"].DOM.span(null, "• " + l("start_diagnostics_video")) : _react2["default"].DOM.span({
  36605.                     onClick: function(e) {
  36606.                         e.preventDefault();
  36607.                         window.store.dispatch((0, _menuActions.navigate)("DIAGNOSTICS"));
  36608.                         _statistics2["default"].event({
  36609.                             action: "startrpage diagnostics clicked"
  36610.                         });
  36611.                     }
  36612.                 }, "• " + l("start_diagnostics_video"))), _react2["default"].DOM.li({
  36613.                     key: "start_diagnostics_audio",
  36614.                     className: "start_list-item " + ("ru" !== currentLanguage ? "clickable" : "")
  36615.                 }, "ru" === currentLanguage ? _react2["default"].DOM.span(null, "• " + l("start_diagnostics_audio")) : _react2["default"].DOM.span({
  36616.                     onClick: function(e) {
  36617.                         e.preventDefault();
  36618.                         window.store.dispatch((0, _menuActions.navigate)("DIAGNOSTICS"));
  36619.                         _statistics2["default"].event({
  36620.                             action: "startrpage diagnostics clicked"
  36621.                         });
  36622.                     }
  36623.                 }, "• " + l("start_diagnostics_audio"))), _react2["default"].DOM.li({
  36624.                     key: "start_diagnostics_other",
  36625.                     className: "start_list-item " + ("ru" !== currentLanguage ? "clickable" : "")
  36626.                 }, "ru" === currentLanguage ? _react2["default"].DOM.span(null, "• " + l("start_diagnostics_other")) : _react2["default"].DOM.span({
  36627.                     onClick: function(e) {
  36628.                         e.preventDefault();
  36629.                         window.store.dispatch((0, _menuActions.navigate)("DIAGNOSTICS"));
  36630.                         _statistics2["default"].event({
  36631.                             action: "startrpage diagnostics clicked"
  36632.                         });
  36633.                     }
  36634.                 }, "• " + l("start_diagnostics_other")))));
  36635.             },
  36636.             renderLanguages: function(languages) {
  36637.                 return languages.map(function(language) {
  36638.                     return _react2["default"].DOM.option({
  36639.                         key: language.id,
  36640.                         value: language.id
  36641.                     }, language.name);
  36642.                 });
  36643.             },
  36644.             handleMouseMove: function(e, id) {
  36645.                 var _this6 = this;
  36646.                 e.stopPropagation();
  36647.                 if (this.hoveringItemId !== id) {
  36648.                     this.hoveringItemId = id;
  36649.                     clearInterval(this.hoveringTimer);
  36650.                     var closing = null === id;
  36651.                     this.hoveringTimer = setTimeout(function() {
  36652.                         var _props6 = _this6.props, openDriversPopover = _props6.openDriversPopover, openProgramsPopover = _props6.openProgramsPopover, openDiagnosticsPopover = _props6.openDiagnosticsPopover, closePopovers = _props6.closePopovers;
  36653.                         if ("start_drivers_popover" === id) openDriversPopover(); else if ("start_programs_popover" === id) openProgramsPopover(); else if ("start_diagnostics_popover" === id) openDiagnosticsPopover(); else closePopovers();
  36654.                     }, closing ? 300 : 50);
  36655.                 }
  36656.             },
  36657.             componentDidMount: function() {
  36658.                 var loadLanguageList = this.props.loadLanguageList;
  36659.                 this.sendStartpageOpenedEvent();
  36660.                 (0, _utils.fitApplicationWindow)();
  36661.                 loadLanguageList();
  36662.                 if (this.shouldShowPromoBannerYaRu) (0, _handleClasses.addClass)(document.body, "auto-height");
  36663.                 var Reg = "HKCU\\SOFTWARE\\drpsu\\";
  36664.                 if (void 0 !== (0, _system.RegRead)(Reg + "RunOnce")) _statistics2["default"].event({
  36665.                     action: "webdeploy on old version"
  36666.                 });
  36667.                 var runOnce = (0, _system.RegRead)(Reg + "RunOnce");
  36668.                 if ("InstallAll" === runOnce) {
  36669.                     (0, _system.RegWrite)(Reg + "RunOnce", "null");
  36670.                     this.props.startInstallAll();
  36671.                 } else if ("InstallCustom" === runOnce) {
  36672.                     (0, _system.RegWrite)(Reg + "RunOnce", "null");
  36673.                     this.props.startInstallCustom();
  36674.                 }
  36675.                 if (void 0 !== (0, _system.RegRead)(Reg + "oldVer")) {
  36676.                     var oldVer = (0, _system.RegRead)(Reg + "oldVer");
  36677.                     if ("null" !== oldVer) {
  36678.                         _statistics2["default"].event({
  36679.                             action: "webdeploy on old version: " + oldVer
  36680.                         });
  36681.                         (0, _system.RegWrite)(Reg + "oldVer", "null");
  36682.                     }
  36683.                 }
  36684.                 var cmdArgsArr = (0, _cmd.ParseCMD)(decodeURIComponent(window.location.hash));
  36685.                 if (-1 !== cmdArgsArr.indexOf("InstallAll")) this.props.startInstallAll(); else if (-1 !== cmdArgsArr.indexOf("RunDrivers")) window.store.dispatch((0,
  36686.                 _menuActions.navigate)("DRIVERS")); else if (-1 !== cmdArgsArr.indexOf("RunProtect")) window.store.dispatch((0,
  36687.                 _menuActions.navigate)("PROTECT"));
  36688.                 (0, _processNotifierFile.performNotifierAction)();
  36689.             },
  36690.             componentWillUnmount: function() {
  36691.                 if (this.shouldShowPromoBannerYaRu) (0, _handleClasses.removeClass)(document.body, "auto-height");
  36692.             },
  36693.             sendStartpageOpenedEvent: function() {
  36694.                 var params = {
  36695.                     modelName: this.getModelName()
  36696.                 }, metrikaParams = Object.assign({}, params);
  36697.                 try {
  36698.                     var diagnosticsData = window.store.getState().diagnostics.data;
  36699.                     params.diagnostics = diagnosticsData;
  36700.                     metrikaParams.diagnostics = (0, _prepareDiagDataParam2["default"])(diagnosticsData);
  36701.                 } catch (error) {
  36702.                     _logs2["default"].error("Error getting diagnostics data", {
  36703.                         error: error
  36704.                     }, "diagnostics:error");
  36705.                 }
  36706.                 _logs2["default"].info({
  36707.                     action: "startpage screen opened",
  36708.                     namespace: "startpage:screen:opened",
  36709.                     params: params,
  36710.                     override: {
  36711.                         yandex: {
  36712.                             params: metrikaParams
  36713.                         }
  36714.                     }
  36715.                 });
  36716.             },
  36717.             shouldShowPromoBannerYaRu: function() {
  36718.                 var currentLanguage = this.props.currentLanguage, targetingCountries = [ "RU", "AZ", "AM", "BY", "KZ", "KG", "MD", "TJ", "TM", "UZ", "UA", "GE", "AB", "OS" ], geo = window.geoip.geoip_country_code.toUpperCase(), result = !1;
  36719.                 if (window.isOnline) result = "ru" === currentLanguage || -1 !== targetingCountries.indexOf(geo);
  36720.                 return result;
  36721.             },
  36722.             shouldShowPromoBannerYaUSA: function() {
  36723.                 var currentLanguage = this.props.currentLanguage, targetingCountries = [ "US" ], geo = window.geoip.geoip_country_code.toUpperCase(), result = !1;
  36724.                 if (window.isOnline) result = "en" === currentLanguage && -1 !== targetingCountries.indexOf(geo);
  36725.                 return result;
  36726.             },
  36727.             renderExperiment: function() {
  36728.                 if (this.shouldShowPromoBannerYaRu()) return this.renderPromoBannerYaRu(); else if (this.shouldShowPromoBannerYaUSA()) return this.renderPromoBannerUSA(); else return;
  36729.             },
  36730.             renderPromoBannerYaRu: function() {
  36731.                 return _react2["default"].DOM.div({
  36732.                     className: "start_promo-banner"
  36733.                 }, _react2["default"].DOM.table({
  36734.                     style: {
  36735.                         borderSpacing: 0
  36736.                     }
  36737.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr({
  36738.                     className: "start_promo-banner-caption"
  36739.                 }, _react2["default"].DOM.td({
  36740.                     className: "start_promo-banner-logo-holder"
  36741.                 }, (0, _Img2["default"])({
  36742.                     src: "img/screens/ya-promo-logo.png",
  36743.                     className: "start_promo-banner-logo",
  36744.                     width: "108",
  36745.                     height: "57"
  36746.                 })), _react2["default"].DOM.td({
  36747.                     className: "start_promo-banner-text"
  36748.                 }, "Быстрый браузер с технологией активной защиты Protect предупредит об опасных сайтах.", _react2["default"].DOM.p({
  36749.                     className: "start_promo-banner-footer"
  36750.                 }, "Нажимая на кнопку «Установить автоматически» или «Режим эксперта», вы принимаете ", _react2["default"].DOM.a({
  36751.                     href: "#",
  36752.                     onClick: function() {
  36753.                         return _system.WshShell.Run("https://drp.su/ru/info/terms-of-use");
  36754.                     }
  36755.                 }, "пользовательское соглашение"), ". Используя автоматическую установку, вы соглашаетесь на установку Яндекс.Браузера."))))));
  36756.             },
  36757.             renderPromoBannerUSA: function() {
  36758.                 return _react2["default"].DOM.div({
  36759.                     className: "start_promo-banner-usa"
  36760.                 }, _react2["default"].DOM.table({
  36761.                     style: {
  36762.                         borderSpacing: 0
  36763.                     }
  36764.                 }, _react2["default"].DOM.tbody(null, _react2["default"].DOM.tr({
  36765.                     className: "start_promo-banner-usa-caption"
  36766.                 }, _react2["default"].DOM.td({
  36767.                     className: "start_promo-banner-usa-logo-holder"
  36768.                 }, (0, _Img2["default"])({
  36769.                     src: "img/screens/yandex_logo.png",
  36770.                     className: "start_promo-banner-usa-logo",
  36771.                     width: "72",
  36772.                     height: "72"
  36773.                 }), _react2["default"].DOM.p({
  36774.                     className: "start_promo-banner-usa-logo-label"
  36775.                 }, "Yandex.Browser")), _react2["default"].DOM.td({
  36776.                     className: "start_promo-banner-usa-text"
  36777.                 }, _react2["default"].DOM.p({
  36778.                     className: "start_promo-banner-usa-title"
  36779.                 }, "FAST&EASY WEB BROWSER", _react2["default"].DOM.br(null), "FOR ALL DEVICES"), _react2["default"].DOM.div({
  36780.                     className: "start_promo-banner-usa-features"
  36781.                 }, _react2["default"].DOM.span({
  36782.                     style: {
  36783.                         marginRight: "31px"
  36784.                     }
  36785.                 }, (0, _Img2["default"])({
  36786.                     src: "img/screens/checkbox.png",
  36787.                     className: "start_promo-banner-icon",
  36788.                     width: "16",
  36789.                     height: "16"
  36790.                 }), "Intuitive"), _react2["default"].DOM.span({
  36791.                     style: {
  36792.                         marginRight: "23px"
  36793.                     }
  36794.                 }, (0, _Img2["default"])({
  36795.                     src: "img/screens/checkbox.png",
  36796.                     className: "start_promo-banner-icon",
  36797.                     width: "16",
  36798.                     height: "16"
  36799.                 }), "Quick"), _react2["default"].DOM.span(null, (0, _Img2["default"])({
  36800.                     src: "img/screens/checkbox.png",
  36801.                     className: "start_promo-banner-icon",
  36802.                     width: "16",
  36803.                     height: "16"
  36804.                 }), "Secure")), _react2["default"].DOM.p({
  36805.                     className: "start_promo-banner-usa-footer"
  36806.                 }, 'By clicking "Install automatically" or "Expert Mode", you agree to the ', _react2["default"].DOM.a({
  36807.                     href: "#",
  36808.                     onClick: function() {
  36809.                         return _system.WshShell.Run("http://drp.su/about.htm#License");
  36810.                     }
  36811.                 }, "user agreement"), ". Using the automatic installation, you agree to the installation of Yandex Browser."))))));
  36812.             }
  36813.         }), actions = {
  36814.             startInstallAll: _startActions.startInstallAll,
  36815.             startInstallCustom: _startActions.startInstallCustom,
  36816.             startExpertMode: _appActions.startExpertMode,
  36817.             expandDrivers: _startActions.expandDrivers,
  36818.             expandPrograms: _startActions.expandPrograms,
  36819.             openDriversPopover: _startActions.openDriversPopover,
  36820.             openProgramsPopover: _startActions.openProgramsPopover,
  36821.             openDiagnosticsPopover: _startActions.openDiagnosticsPopover,
  36822.             closePopovers: _startActions.closePopovers,
  36823.             toggleProgramEula: _programsActions.toggleProgramEula,
  36824.             changeLang: _langActions.changeLang,
  36825.             loadLanguageList: _langActions.loadLanguageList
  36826.         };
  36827.         exports["default"] = (0, _connect2["default"])(mapState, actions)(Start);
  36828.         module.exports = exports["default"];
  36829.     }).call(exports, __webpack_require__(6), __webpack_require__(321));
  36830. }, function(module, exports, __webpack_require__) {
  36831.     "use strict";
  36832.     function _interopRequireDefault(obj) {
  36833.         return obj && obj.__esModule ? obj : {
  36834.             "default": obj
  36835.         };
  36836.     }
  36837.     exports.__esModule = !0;
  36838.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _Img = __webpack_require__(19), _Img2 = _interopRequireDefault(_Img);
  36839.     __webpack_require__(802);
  36840.     exports["default"] = _react2["default"].createClass({
  36841.         displayName: "StartPopover",
  36842.         mixins: [ __webpack_require__(5) ],
  36843.         propTypes: {
  36844.             message: _react.PropTypes.string.isRequired,
  36845.             onMouseMove: _react.PropTypes.func.isRequired
  36846.         },
  36847.         render: function() {
  36848.             var _props = this.props, message = _props.message, onMouseMove = _props.onMouseMove;
  36849.             return _react2["default"].DOM.div({
  36850.                 onMouseMove: onMouseMove,
  36851.                 className: "start-popover"
  36852.             }, _react2["default"].DOM.div({
  36853.                 className: "start-popover_arrow"
  36854.             }, (0, _Img2["default"])({
  36855.                 src: "img/screens/arrow-bottom.png",
  36856.                 width: "17",
  36857.                 height: "10"
  36858.             })), message);
  36859.         }
  36860.     });
  36861.     module.exports = exports["default"];
  36862. }, , function(module, exports, __webpack_require__) {
  36863.     "use strict";
  36864.     exports.__esModule = !0;
  36865.     exports["default"] = {
  36866.         FSO_FOR_READING: 1,
  36867.         FSO_FOR_WRITING: 2,
  36868.         FSO_CREATE: !0,
  36869.         FSO_DONT_CREATE: !1
  36870.     };
  36871.     module.exports = exports["default"];
  36872. }, function(module, exports, __webpack_require__) {
  36873.     "use strict";
  36874.     function _interopRequireDefault(obj) {
  36875.         return obj && obj.__esModule ? obj : {
  36876.             "default": obj
  36877.         };
  36878.     }
  36879.     function _classCallCheck(instance, Constructor) {
  36880.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  36881.     }
  36882.     function _possibleConstructorReturn(self, call) {
  36883.         if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  36884.         return call && ("object" == typeof call || "function" == typeof call) ? call : self;
  36885.     }
  36886.     function _inherits(subClass, superClass) {
  36887.         if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
  36888.         subClass.prototype = Object.create(superClass && superClass.prototype, {
  36889.             constructor: {
  36890.                 value: subClass,
  36891.                 enumerable: !1,
  36892.                 writable: !0,
  36893.                 configurable: !0
  36894.             }
  36895.         });
  36896.         if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  36897.     }
  36898.     exports.__esModule = !0;
  36899.     var _system = __webpack_require__(9), _os = __webpack_require__(13), _logs = __webpack_require__(3), _external = __webpack_require__(230), _external2 = _interopRequireDefault(_external), _slugify = __webpack_require__(770), _slugify2 = _interopRequireDefault(_slugify), log = (0,
  36900.     _logs.getLogger)("ddriver"), toFixed = function(num) {
  36901.         return ("0" + num).slice(-2);
  36902.     }, DDriver = function(_External) {
  36903.         function DDriver() {
  36904.             _classCallCheck(this, DDriver);
  36905.             var options = {
  36906.                 url: "http://download.drp.su/updates/ddriver/ddriver2.zip",
  36907.                 downloadPath: _system.AppData + "\\DRPSu\\ddriver",
  36908.                 dirPath: _system.WshShell.CurrentDirectory.split("\\").slice(0, -1).join("\\") + "\\bin\\tools\\ddriver",
  36909.                 exePath: "ddriver.bat"
  36910.             }, _this = _possibleConstructorReturn(this, _External.call(this, options));
  36911.             _this.backupPath = _system.WshShell.SpecialFolders("MyDocuments") + "\\DriverPack\\Backups";
  36912.             _this.tempDir = _system.WshShell.ExpandEnvironmentStrings("%temp%\\drp\\DRPSuPacker");
  36913.             _this.tempZip = _this.tempDir + "\\pack.7z";
  36914.             return _this;
  36915.         }
  36916.         _inherits(DDriver, _External);
  36917.         DDriver.prototype.CreateFilename = function() {
  36918.             var today = new Date();
  36919.             return [ "DriverPack", "Backup", [ today.getFullYear(), toFixed(today.getMonth() + 1), toFixed(today.getDate()) ].join(""), [ toFixed(today.getHours()), toFixed(today.getMinutes()), toFixed(today.getSeconds()) ].join("") ].join("_") + ".exe";
  36920.         };
  36921.         DDriver.prototype.Collect = function() {
  36922.             var dir = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.tempDir, subdir = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "\\pack\\drivers";
  36923.             log.info("executing", {
  36924.                 exePath: this.exePath
  36925.             }, "start");
  36926.             _system.WshShell.Run('cmd /C RD /S /Q "' + dir + '"', 0, !0);
  36927.             var target = "" + dir + subdir;
  36928.             _system.WshShell.Run('cmd /C "' + this.exePath + ' "' + target + '""', 0, !0);
  36929.             _system.WshShell.Run('cmd /C "FOR /D %D IN ("' + target + '\\*") DO (XCOPY "%D\\*" "' + target + '\\" /E /Y /C && RD /S /Q "%D")"', 0, !0);
  36930.         };
  36931.         DDriver.prototype.Backup = function() {
  36932.             this.Collect();
  36933.             var filename = this.CreateFilename();
  36934.             log.info("packing to " + filename, {
  36935.                 filename: filename
  36936.             }, "packing");
  36937.             _system.WshShell.Run(this.dirPath + '\\7za.exe x -y -o"' + this.tempDir + '\\pack" "' + this.dirPath + '\\packer.7z"', 0, !0);
  36938.             _system.WshShell.Run(this.dirPath + '\\7za.exe a "' + this.tempZip + '" "' + this.tempDir + '\\pack\\*"', 0, !0);
  36939.             _system.WshShell.Run('cmd /C mkdir "' + this.backupPath + '"', 0, !0);
  36940.             _system.WshShell.Run('cmd /C copy /b "' + this.dirPath + '\\7zsd.sfx" + "' + this.dirPath + '\\sfxconfig" + "' + this.tempZip + '" "' + this.backupPath + "\\" + filename + '"', 0, !0);
  36941.             log.info("packed to " + filename, {
  36942.                 filename: filename
  36943.             }, "packed");
  36944.         };
  36945.         DDriver.prototype.RunCollect = function() {
  36946.             var _this2 = this, dir = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.tempDir;
  36947.             return _External.prototype.Download.call(this).then(function() {
  36948.                 _this2.Collect(dir, "");
  36949.             });
  36950.         };
  36951.         DDriver.prototype.PackOne = function(toDir, _ref) {
  36952.             var deviceId = _ref.deviceId, name = _ref.name, version = _ref.version, date = _ref.date, inf = _ref.inf, dir = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.tempDir;
  36953.             try {
  36954.                 var command = 'dir "' + dir + "\\" + inf + '" /S /B', tempFile = _system.AppData + "\\DRPSu\\temp\\dir-" + inf + ".txt";
  36955.                 _system.WshShell.Run('cmd /C "' + command + ' > "' + tempFile + '""', 0, !0);
  36956.                 var file = _system.fso.OpenTextFile(tempFile, 1, !0);
  36957.                 if (file.AtEndOfStream) return;
  36958.                 var text = file.ReadAll();
  36959.                 file.close();
  36960.                 if (-1 !== text.indexOf(inf)) {
  36961.                     var path = text.replace(dir, ""), parts = path.split("\\"), zippingDir = [ dir, parts[1], parts[2] ].join("\\"), zipName = (0,
  36962.                     _slugify2["default"])([ parts[1], _os.OSVersion + "x" + _os.arch, name, "deviceId:" + deviceId, "version:" + version, "date:" + date ].join("_")) + ".zip", zipPath = toDir + "\\" + zipName;
  36963.                     _system.WshShell.Run(this.dirPath + '\\driverpack-7za.exe a "' + zipPath + '" "' + zippingDir + '\\*"', 0, !0);
  36964.                     return zipPath;
  36965.                 }
  36966.             } catch (err) {
  36967.                 return;
  36968.             }
  36969.         };
  36970.         DDriver.prototype.Run = function() {
  36971.             var _this3 = this;
  36972.             return _External.prototype.Download.call(this).then(function() {
  36973.                 _this3.Backup();
  36974.                 _system.WshShell.Run('cmd /C explorer "' + _this3.backupPath + '"', 1, !1);
  36975.             });
  36976.         };
  36977.         return DDriver;
  36978.     }(_external2["default"]);
  36979.     exports["default"] = new DDriver();
  36980.     module.exports = exports["default"];
  36981. }, function(module, exports, __webpack_require__) {
  36982.     "use strict";
  36983.     function _interopRequireDefault(obj) {
  36984.         return obj && obj.__esModule ? obj : {
  36985.             "default": obj
  36986.         };
  36987.     }
  36988.     function _objectWithoutProperties(obj, keys) {
  36989.         var target = {};
  36990.         for (var i in obj) if (!(keys.indexOf(i) >= 0)) if (Object.prototype.hasOwnProperty.call(obj, i)) target[i] = obj[i];
  36991.         return target;
  36992.     }
  36993.     function _classCallCheck(instance, Constructor) {
  36994.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  36995.     }
  36996.     var _extends = Object.assign || function(target) {
  36997.         for (var i = 1; i < arguments.length; i++) {
  36998.             var source = arguments[i];
  36999.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  37000.         }
  37001.         return target;
  37002.     }, _system = __webpack_require__(9), _DeloreanTransport = __webpack_require__(240), _DeloreanTransport2 = _interopRequireDefault(_DeloreanTransport), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _constants = __webpack_require__(718), _constants2 = _interopRequireDefault(_constants), Delorean = function() {
  37003.         function Delorean() {
  37004.             _classCallCheck(this, Delorean);
  37005.         }
  37006.         Delorean.prototype.generateJobId = function() {
  37007.             return +Math.round(1e5 * Math.random());
  37008.         };
  37009.         Delorean.prototype.pathToInputFile = function(id) {
  37010.             return _system.AppData + "\\DRPSu\\temp\\delorean_input_" + id + ".log";
  37011.         };
  37012.         Delorean.prototype.pathToOutputFile = function(id) {
  37013.             return _system.AppData + "\\DRPSu\\temp\\delorean_output_" + id + ".log";
  37014.         };
  37015.         Delorean.prototype.pathToErrorFile = function(id) {
  37016.             return _system.AppData + "\\DRPSu\\temp\\delorean_error_" + id + ".log";
  37017.         };
  37018.         Delorean.prototype.wrapInCmd = function(command) {
  37019.             return 'cmd /c "' + command + '"';
  37020.         };
  37021.         Delorean.prototype.send = function(endpoint, data) {
  37022.             return new _DeloreanTransport2["default"](endpoint, 3).send(data);
  37023.         };
  37024.         Delorean.prototype.run = function(_ref) {
  37025.             var _this = this, markers = _ref.markers, query = _objectWithoutProperties(_ref, [ "markers" ]);
  37026.             query = _extends({}, query, {
  37027.                 markers: markers ? [].concat(markers, [ "hooks" ]) : [ "hooks" ],
  37028.                 useRank: {
  37029.                     filter: !1,
  37030.                     sort: !0
  37031.                 }
  37032.             });
  37033.             var remoteConfirmShowed = "undefined" != typeof this.confirmRemote;
  37034.             _logs2["default"]._write({
  37035.                 type: "drivers",
  37036.                 data: query,
  37037.                 message: "delorean drivers query"
  37038.             });
  37039.             return (!0 ? this.runRemote(query) : this.runRemote(query).then(function(result) {
  37040.                 if (!remoteConfirmShowed) _this.confirmRemote = confirm(l("delorean_use_remote_confirm"));
  37041.                 return _this.confirmRemote ? result : _this.runLocal(query);
  37042.             })["catch"](function(err) {
  37043.                 if (!remoteConfirmShowed) _this.confirmRemote = !1;
  37044.                 return _this.runLocal(query);
  37045.             })).then(function(data) {
  37046.                 return data.map(function(item, index) {
  37047.                     var _query$devices$index = query.devices[index], status = _query$devices$index.status, statusCode = _query$devices$index.statusCode, isProblemDevice = _query$devices$index.isProblemDevice;
  37048.                     return _extends({
  37049.                         status: status,
  37050.                         statusCode: statusCode,
  37051.                         isProblemDevice: isProblemDevice
  37052.                     }, item);
  37053.                 });
  37054.             });
  37055.         };
  37056.         Delorean.prototype.runRemote = function(query) {
  37057.             this.isLocal = !1;
  37058.             var apiEndpoint = window.apiEndpoint + "/select";
  37059.             _logs2["default"].info("run remote", {
  37060.                 apiEndpoint: apiEndpoint
  37061.             }, "driversApi:request:sent");
  37062.             return this.send(apiEndpoint, query).then(function(_ref2) {
  37063.                 var body = _ref2.body, problemDevices = 0, errorDevices = 0, errorDevicesApiFailed = 0;
  37064.                 query.devices.forEach(function(_ref3, index) {
  37065.                     var statusCode = _ref3.statusCode;
  37066.                     if (_ref3.isProblemDevice) problemDevices++; else if (![ 0, 22 ].includes(statusCode)) {
  37067.                         errorDevices++;
  37068.                         if (body.data[index].drivers.length) errorDevicesApiFailed++;
  37069.                     }
  37070.                 });
  37071.                 _logs2["default"].info({
  37072.                     action: "api response recieved"
  37073.                 }, {
  37074.                     problemDevices: problemDevices,
  37075.                     errorDevices: errorDevices,
  37076.                     errorDevicesApiFailed: errorDevicesApiFailed
  37077.                 }, "driversApi:response:recieved");
  37078.                 return body.data;
  37079.             });
  37080.         };
  37081.         Delorean.prototype.runLocal = function(query) {
  37082.             var _this2 = this;
  37083.             if (!1) {
  37084.                 this.isLocal = !0;
  37085.                 _logs2["default"].info("run local:", {}, "driversApi:run:local");
  37086.                 return new Promise(function(resolve, reject) {
  37087.                     var jobId = _this2.generateJobId(), inputFile = _this2.pathToInputFile(jobId), outputFile = _this2.pathToOutputFile(jobId), errorFile = _this2.pathToErrorFile(jobId);
  37088.                     if (!_system.fso.FolderExists(_system.AppData + "\\DRPSu\\temp")) _system.fso.CreateFolder(_system.AppData + "\\DRPSu\\temp");
  37089.                     var inputFileDescriptor = _system.fso.OpenTextFile(inputFile, _constants2["default"].FSO_FOR_WRITING, _constants2["default"].FSO_CREATE);
  37090.                     inputFileDescriptor.WriteLine(JSON.stringify(query));
  37091.                     inputFileDescriptor.Close();
  37092.                     var deloreanCommand = '..\\catalog\\node ../catalog/cli -d ../index/db.sqlite -i "' + inputFile + '" >"' + outputFile + '" 2>"' + errorFile + '"', command = _this2.wrapInCmd(deloreanCommand);
  37093.                     _logs2["default"].info("Running: " + command, {
  37094.                         command: command
  37095.                     }, "driversApi:run:local:command");
  37096.                     _system.WshShell.Run(command, 0, !0);
  37097.                     var outputFileDescriptor = _system.fso.OpenTextFile(outputFile, _constants2["default"].FSO_FOR_READING, _constants2["default"].FSO_DONT_CREATE), errorFileDescriptor = _system.fso.OpenTextFile(errorFile, _constants2["default"].FSO_FOR_READING, _constants2["default"].FSO_CREATE);
  37098.                     if (!outputFileDescriptor.AtEndOfStream) {
  37099.                         var outputContents = outputFileDescriptor.ReadAll();
  37100.                         resolve(JSON.parse(outputContents));
  37101.                     } else if (!errorFileDescriptor.AtEndOfStream) {
  37102.                         var errorContents = errorFileDescriptor.ReadAll();
  37103.                         reject(errorContents);
  37104.                     } else reject(new Error("No output"));
  37105.                 });
  37106.             } else throw new Error("Called delorean.runLocal in online");
  37107.         };
  37108.         Delorean.prototype.formatNumberWithLeadingZero = function(number) {
  37109.             return number >= 10 ? number : "0" + number;
  37110.         };
  37111.         Delorean.prototype.parseDate = function(dateStr) {
  37112.             var dt = dateStr.split(/[: T-]/).map(function(x) {
  37113.                 return parseFloat(x);
  37114.             });
  37115.             return new Date(dt[0], dt[1] - 1, dt[2], dt[3] || 0, dt[4] || 0, dt[5] || 0, 0);
  37116.         };
  37117.         Delorean.prototype.formatDate = function(date) {
  37118.             if (!date) return "";
  37119.             var parsed = this.parseDate(date);
  37120.             return [ parsed.getFullYear(), this.formatNumberWithLeadingZero(parsed.getMonth() + 1), this.formatNumberWithLeadingZero(parsed.getDate()) ].join("-");
  37121.         };
  37122.         Delorean.prototype.prepareData = function(data, curDriversArray) {
  37123.             var _this3 = this;
  37124.             _logs2["default"].debug("prepareData", {
  37125.                 data: data,
  37126.                 curDriversArray: curDriversArray
  37127.             }, "driversApi:prepareData");
  37128.             var curDrivers = {};
  37129.             curDriversArray.forEach(function(current) {
  37130.                 curDrivers[current.deviceId] = current;
  37131.             });
  37132.             var result = {
  37133.                 devices: [],
  37134.                 lowRanked: [],
  37135.                 broken: []
  37136.             };
  37137.             window.newdrivers = [];
  37138.             data.forEach(function(_ref4) {
  37139.                 var fullDeviceId = _ref4.deviceId, hardwareId = _ref4.hardwareId, statusCode = _ref4.statusCode, drivers = _ref4.drivers, isProblemDevice = _ref4.isProblemDevice;
  37140.                 if (!isProblemDevice) {
  37141.                     var current = curDrivers[fullDeviceId];
  37142.                     if (drivers[0]) {
  37143.                         var recommended = [], notRecommended = [];
  37144.                         drivers.forEach(function(_ref5) {
  37145.                             var link = _ref5.link, date = _ref5.date, driver = _objectWithoutProperties(_ref5, [ "link", "date" ]), patched = _extends({}, driver, {
  37146.                                 fullDeviceId: fullDeviceId,
  37147.                                 hardwareId: hardwareId,
  37148.                                 statusCode: statusCode,
  37149.                                 link: "http://download.drp.su/driverpacks/repack" + link,
  37150.                                 date: _this3.formatDate(date)
  37151.                             });
  37152.                             0 === driver.rank ? notRecommended.push(patched) : recommended.push(patched);
  37153.                         });
  37154.                         if (recommended.length > 0) result.devices.push([ recommended, current ]);
  37155.                         if (notRecommended.length > 0) result.lowRanked.push([ notRecommended, current ]);
  37156.                     } else if (current && !/microsoft|standard/i.test(current.manufacturer)) window.newdrivers.push(current);
  37157.                 } else result.broken.push({
  37158.                     deviceId: fullDeviceId,
  37159.                     hardwareId: hardwareId,
  37160.                     statusCode: statusCode,
  37161.                     drivers: drivers,
  37162.                     problem: isProblemDevice
  37163.                 });
  37164.             });
  37165.             return result;
  37166.         };
  37167.         Delorean.prototype.runProtect = function(query) {
  37168.             _logs2["default"]._write({
  37169.                 type: "soft",
  37170.                 data: query,
  37171.                 message: "Protect - soft query"
  37172.             });
  37173.             var apiEndpoint = window.apiEndpoint + "/cleaner";
  37174.             _logs2["default"].info("run protect", {
  37175.                 apiEndpoint: apiEndpoint
  37176.             }, "protectApi:request:sent", [ "protect" ]);
  37177.             return this.send(apiEndpoint, query).then(function(_ref6) {
  37178.                 var body = _ref6.body, data = body.data;
  37179.                 _logs2["default"].info({
  37180.                     action: "protect api response recieved"
  37181.                 }, {}, "protectApi:response:recieved");
  37182.                 return data;
  37183.             });
  37184.         };
  37185.         Delorean.prototype.convertProtectOutput = function(data) {
  37186.             _logs2["default"].debug("Protect - convert output", {
  37187.                 data: data
  37188.             }, "protectApi:convertOutput", [ "protect" ]);
  37189.             return data.map(function(program) {
  37190.                 return {
  37191.                     name: program.Program,
  37192.                     version: program.Version || "",
  37193.                     publisher: program.Publisher || "",
  37194.                     installDate: program["Install Date"] || "",
  37195.                     icon: program.imageurl || "",
  37196.                     uninstallString: program.Uninstaller || "",
  37197.                     uninstallPercents: program.uninstallrate || 0,
  37198.                     rating: program.overallsentiment || 0,
  37199.                     size: program.Size || "",
  37200.                     regPath: program["Registry Path"] || "",
  37201.                     isFound: program.isFound
  37202.                 };
  37203.             });
  37204.         };
  37205.         return Delorean;
  37206.     }();
  37207.     window.delorean = new Delorean();
  37208. }, function(module, exports, __webpack_require__) {
  37209.     "use strict";
  37210.     function _asyncToGenerator(fn) {
  37211.         return function() {
  37212.             var gen = fn.apply(this, arguments);
  37213.             return new Promise(function(resolve, reject) {
  37214.                 function step(key, arg) {
  37215.                     try {
  37216.                         var info = gen[key](arg), value = info.value;
  37217.                     } catch (error) {
  37218.                         reject(error);
  37219.                         return;
  37220.                     }
  37221.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  37222.                         step("next", value);
  37223.                     }, function(err) {
  37224.                         step("throw", err);
  37225.                     });
  37226.                 }
  37227.                 return step("next");
  37228.             });
  37229.         };
  37230.     }
  37231.     exports.__esModule = !0;
  37232.     var getRandomFromInterval = function(min, max) {
  37233.         return Math.floor(Math.random() * (max - min + 1) + min);
  37234.     };
  37235.     exports.runCommandAsync = function() {
  37236.         return new Promise(function(resolve) {
  37237.             setTimeout(function() {
  37238.                 return resolve(0);
  37239.             }, getRandomFromInterval(0, 20));
  37240.         });
  37241.     };
  37242.     if ("undefined" != typeof emulatingIE) {
  37243.         window.log = console.log.bind(console);
  37244.         var _sendYaMetrika;
  37245.         if (window.statistics) _sendYaMetrika = window.statistics.sendYaMetrika;
  37246.         if (window.statistics) window.statistics.sendUrl = function() {};
  37247.         if (window.statistics) window.statistics.sendYaMetrika = function(event) {
  37248.             if (window.yaCounter) window.yaCounter.hit = function() {};
  37249.             _sendYaMetrika(event);
  37250.         };
  37251.         var wget = __webpack_require__(150);
  37252.         wget.stopDownloading = function() {};
  37253.         wget.getDownloadFileSize = function() {
  37254.             return Promise.resolve(5e4);
  37255.         };
  37256.         wget.downloadFiles = function() {
  37257.             return new Promise(function(resolve, reject) {
  37258.                 setTimeout(Math.random() < .5 ? resolve : reject, getRandomFromInterval(0, 20));
  37259.             });
  37260.         };
  37261.         var unzip = __webpack_require__(167);
  37262.         unzip.run7z = function() {
  37263.             return Promise.resolve(0);
  37264.         };
  37265.         unzip.checkZipArchiveFilesCount = function() {
  37266.             return function(dispatch) {};
  37267.         };
  37268.         unzip.watchUnzippedPartFilesCount = function() {
  37269.             return function(dispatch) {};
  37270.         };
  37271.         __webpack_require__(320).update = function() {
  37272.             return Promise.resolve(0);
  37273.         };
  37274.         __webpack_require__(86).run = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
  37275.             var driversData, protect;
  37276.             return regeneratorRuntime.wrap(function(_context) {
  37277.                 for (;;) switch (_context.prev = _context.next) {
  37278.                   case 0:
  37279.                     driversData = __webpack_require__(808);
  37280.                     window.store.dispatch({
  37281.                         type: "DRIVERS_SCAN_SUCCESS",
  37282.                         payload: driversData
  37283.                     });
  37284.                     protect = __webpack_require__(809);
  37285.                     window.store.dispatch({
  37286.                         type: "INSTALLED_PROGRAMS_SCAN_FINISHED",
  37287.                         payload: protect
  37288.                     });
  37289.  
  37290.                   case 4:
  37291.                   case "end":
  37292.                     return _context.stop();
  37293.                 }
  37294.             }, _callee, undefined);
  37295.         }));
  37296.         var softPack = __webpack_require__(166);
  37297.         softPack.run = function() {
  37298.             return new Promise(function(resolve, reject) {
  37299.                 window.log("softJs called", {}, "softJs:called");
  37300.                 window.SoftPack.jsonCallback = function(json) {
  37301.                     window.log("softJs callback with JSON", {
  37302.                         json: json
  37303.                     }, "softJs:callback");
  37304.                     window.log("GeoIp set", {
  37305.                         geoip: window.geoip
  37306.                     }, "geoip:set");
  37307.                     softPack.soft = json;
  37308.                     softPack.applyAll();
  37309.                     resolve();
  37310.                 };
  37311.                 setTimeout(function() {
  37312.                     __webpack_require__(723);
  37313.                 }, 100);
  37314.             });
  37315.         };
  37316.         softPack.applyTargeting = function(json) {
  37317.             json.forEach(function(item, i, json) {
  37318.                 if (json[i].CheckedDefaultIf) try {
  37319.                     json[i].isVisible = json[i].IsChecked = json[i].CheckedDefaultIf({
  37320.                         antivirus: window.antivirus,
  37321.                         geoip: window.isOnline ? window.geoip : window.geoipOffline,
  37322.                         os: window.os,
  37323.                         system: window.system,
  37324.                         wmi: window.wmi,
  37325.                         diagnostics: window.diagnostics
  37326.                     });
  37327.                 } catch (err) {
  37328.                     json[i].isVisible = !0;
  37329.                     json[i].IsChecked = json[i].CheckedDefault;
  37330.                     window.log("[SoftPack] CheckedDefaultIf failed", err);
  37331.                 } else {
  37332.                     json[i].isVisible = !0;
  37333.                     json[i].IsChecked = json[i].CheckedDefault;
  37334.                 }
  37335.             });
  37336.             window.log("[SoftPack] Targeting applied", json);
  37337.             return json;
  37338.         };
  37339.         softPack.applyAll = function() {
  37340.             var programs = softPack.applyTargeting(softPack.soft);
  37341.             window.store.dispatch({
  37342.                 type: "PROGRAMS_LOADED",
  37343.                 payload: programs
  37344.             });
  37345.         };
  37346.         var load = function(filename) {
  37347.             return new Promise(function(resolve) {
  37348.                 var script = document.createElement("script");
  37349.                 script.src = filename;
  37350.                 script.type = "text/javascript";
  37351.                 document.documentElement.insertBefore(script, document.documentElement.lastChild);
  37352.                 script.onload = script.onerror = function() {
  37353.                     if (!script.executed) {
  37354.                         script.executed = !0;
  37355.                         resolve();
  37356.                     }
  37357.                 };
  37358.                 script.onreadystatechange = function() {
  37359.                     if ("complete" === script.readyState) script.onload();
  37360.                     if ("loaded" === script.readyState) {
  37361.                         setTimeout(script.onload, 0);
  37362.                         script.onreadystatechange = null;
  37363.                     }
  37364.                 };
  37365.             });
  37366.         };
  37367.         window.loadLanguage = function() {
  37368.             var _ref2 = _asyncToGenerator(regeneratorRuntime.mark(function _callee2(lang) {
  37369.                 var langQueue, _iterator, _isArray, _i, _ref3, l, language;
  37370.                 return regeneratorRuntime.wrap(function(_context2) {
  37371.                     for (;;) switch (_context2.prev = _context2.next) {
  37372.                       case 0:
  37373.                         if (!lang) lang = "ru";
  37374.                         langQueue = [ lang ];
  37375.                         if (-1 !== lang.indexOf("-")) langQueue.unshift(lang.split("-")[0]);
  37376.                         if (!lang.startsWith("ru") && !lang.startsWith("en")) [ "uk", "az", "by", "hy", "ka" ].some(function(l) {
  37377.                             lang.startsWith(l);
  37378.                         }) ? langQueue.unshift("ru") : langQueue.unshift("en");
  37379.                         _iterator = langQueue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();
  37380.  
  37381.                       case 5:
  37382.                         if (!_isArray) {
  37383.                             _context2.next = 11;
  37384.                             break;
  37385.                         }
  37386.                         if (!(_i >= _iterator.length)) {
  37387.                             _context2.next = 8;
  37388.                             break;
  37389.                         }
  37390.                         return _context2.abrupt("break", 21);
  37391.  
  37392.                       case 8:
  37393.                         _ref3 = _iterator[_i++];
  37394.                         _context2.next = 15;
  37395.                         break;
  37396.  
  37397.                       case 11:
  37398.                         _i = _iterator.next();
  37399.                         if (!_i.done) {
  37400.                             _context2.next = 14;
  37401.                             break;
  37402.                         }
  37403.                         return _context2.abrupt("break", 21);
  37404.  
  37405.                       case 14:
  37406.                         _ref3 = _i.value;
  37407.  
  37408.                       case 15:
  37409.                         l = _ref3;
  37410.                         if (window.languages[l]) {
  37411.                             _context2.next = 19;
  37412.                             break;
  37413.                         }
  37414.                         _context2.next = 19;
  37415.                         return load("languages/" + l + ".js");
  37416.  
  37417.                       case 19:
  37418.                         _context2.next = 5;
  37419.                         break;
  37420.  
  37421.                       case 21:
  37422.                         langQueue = langQueue.filter(function(l) {
  37423.                             return window.languages[l];
  37424.                         });
  37425.                         lang = langQueue[langQueue.length - 1];
  37426.                         language = {};
  37427.                         langQueue.forEach(function(l) {
  37428.                             Object.assign(language, window.languages[l]);
  37429.                         });
  37430.                         window.lang = lang;
  37431.                         window.language = language;
  37432.                         Object.entries(language).forEach(function(_ref4) {
  37433.                             var key = _ref4[0], value = _ref4[1], el = document.getElementById(key);
  37434.                             if (el) el.innerHTML = value;
  37435.                         });
  37436.  
  37437.                       case 28:
  37438.                       case "end":
  37439.                         return _context2.stop();
  37440.                     }
  37441.                 }, _callee2, undefined);
  37442.             }));
  37443.             return function(_x) {
  37444.                 return _ref2.apply(this, arguments);
  37445.             };
  37446.         }();
  37447.         window.changeLanguage = function() {
  37448.             var _ref5 = _asyncToGenerator(regeneratorRuntime.mark(function _callee3(lang) {
  37449.                 return regeneratorRuntime.wrap(function(_context3) {
  37450.                     for (;;) switch (_context3.prev = _context3.next) {
  37451.                       case 0:
  37452.                         _context3.next = 2;
  37453.                         return window.loadLanguage(lang);
  37454.  
  37455.                       case 2:
  37456.                       case "end":
  37457.                         return _context3.stop();
  37458.                     }
  37459.                 }, _callee3, undefined);
  37460.             }));
  37461.             return function(_x2) {
  37462.                 return _ref5.apply(this, arguments);
  37463.             };
  37464.         }();
  37465.         if (window.wget) window.wget.tick = function() {
  37466.             var _this = this;
  37467.             Object.keys(this.onDownloaded).forEach(function(jobId) {
  37468.                 if (Math.random() < .91) _this.onDownloaded[jobId]();
  37469.             });
  37470.         };
  37471.     }
  37472. }, function(module, exports, __webpack_require__) {
  37473.     "use strict";
  37474.     var hasActiveX = void 0;
  37475.     try {
  37476.         hasActiveX = new window.ActiveXObject("WScript.Shell");
  37477.     } catch (e) {
  37478.         hasActiveX = !1;
  37479.     }
  37480.     if (!hasActiveX) {
  37481.         window.emulatingIE = !0;
  37482.         try {
  37483.             window._localStorage = window.localStorage || {};
  37484.         } catch (e) {
  37485.             try {
  37486.                 window._localStorage = {};
  37487.             } catch (e2) {}
  37488.         }
  37489.         window.console = window.console || {
  37490.             log: function() {}
  37491.         };
  37492.         window.ActiveXObject = function(name) {
  37493.             switch (name) {
  37494.               case "WScript.Shell":
  37495.                 return {
  37496.                     Environment: function() {
  37497.                         return function() {};
  37498.                     },
  37499.                     ExpandEnvironmentStrings: function() {},
  37500.                     RegRead: function(key) {
  37501.                         switch (key) {
  37502.                           case "HKCU\\Control Panel\\International\\Locale":
  37503.                             return "0419";
  37504.  
  37505.                           case "HKCU\\SOFTWARE\\drpsu\\lang":
  37506.                             return window._localStorage.lang;
  37507.                         }
  37508.                     },
  37509.                     RegWrite: function(key, value) {
  37510.                         switch (key) {
  37511.                           case "HKCU\\SOFTWARE\\drpsu\\lang":
  37512.                             window._localStorage.lang = value;
  37513.                         }
  37514.                     },
  37515.                     Exec: function() {},
  37516.                     Run: function() {
  37517.                         return 0;
  37518.                     },
  37519.                     run: function() {},
  37520.                     SpecialFolders: function(name) {
  37521.                         if ("AppData" === name) return "C:\\Documents and Settings\\Administrator\\Application Data";
  37522.                     },
  37523.                     CurrentDirectory: ""
  37524.                 };
  37525.  
  37526.               case "Shell.Application":
  37527.                 return {
  37528.                     ShellExecute: function() {
  37529.                         return 0;
  37530.                     },
  37531.                     NameSpace: function() {
  37532.                         return {
  37533.                             Self: {}
  37534.                         };
  37535.                     }
  37536.                 };
  37537.  
  37538.               case "WbemScripting.SWbemLocator":
  37539.                 return {
  37540.                     ConnectServer: function() {
  37541.                         return {
  37542.                             ExecQuery: function(query) {
  37543.                                 if (/Win32_OperatingSystem/.test(query)) return [ {
  37544.                                     Caption: "Windows XP",
  37545.                                     Version: "5.1"
  37546.                                 } ];
  37547.                                 if (/Win32_ComputerSystem/.test(query)) return [ {
  37548.                                     Caption: "Emulator",
  37549.                                     Name: "Emulator",
  37550.                                     Vendor: "Emulator",
  37551.                                     Version: "Emulator",
  37552.                                     Model: "Lenovo IdeaPad S110",
  37553.                                     TotalPhysicalMemory: 1e9,
  37554.                                     Manufacturer: "Emulator"
  37555.                                 } ];
  37556.                                 if (/Win32_Processor/.test(query)) return [ {
  37557.                                     Name: "Intel(R) Core(TM) i3 CPU M350 @2,27CHz"
  37558.                                 } ];
  37559.                                 if (/Win32_BIOS/.test(query)) return [ {
  37560.                                     Manufacturer: "ACER",
  37561.                                     SMBIOSBIOSVersion: "1.0",
  37562.                                     ReleaseDate: "2000-01-01"
  37563.                                 } ];
  37564.                                 if (/Win32_VideoController/.test(query)) return [ {
  37565.                                     Caption: "NVidia GeForce 9600 GT",
  37566.                                     AdapterRAM: 536870912
  37567.                                 } ];
  37568.                                 if (/Win32_DiskDrive/.test(query)) return [ {
  37569.                                     Model: "ST32171W",
  37570.                                     Status: "OK"
  37571.                                 } ];
  37572.                                 if (/Win32_PnPSignedDriver/.test(query) || /Win32_PnPEntity/.test(query)) {
  37573.                                     return [ "ACPI\\PNP0A03", "PCI\\VEN_8086&DEV_1237&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_7000&SUBSYS_00000000&REV_00", "ACPI\\PNP0303", "ACPI\\PNP0200", "ACPI\\PNP0F03", "ACPI\\PNP0400", "ACPI\\PNP0100", "ACPI\\PNP0000", "PCI\\VEN_8086&DEV_7111&SUBSYS_00000000&REV_01", "PCI\\VEN_80EE&DEV_BEEF&SUBSYS_00000000&REV_00", "PCI\\VEN_1022&DEV_2000&SUBSYS_20001022&REV_40", "PCI\\VEN_80EE&DEV_CAFE&SUBSYS_00000000&REV_00", "PCI\\VEN_8086&DEV_2415&SUBSYS_00008086&REV_01", "PCI\\VEN_106B&DEV_003F&SUBSYS_00000000&REV_00", "USB\\ROOT_HUB&VID106B&PID003F&REV0000", "USB\\VID_80EE&PID_0021&REV_0100", "ACPI\\ACPI0003", "ACPI\\FIXEDBUTTON", "ACPI\\GENUINEINTEL_\\_X86_FAMILY_6_MODEL_45" ].map(function(x) {
  37574.                                         var fn = function() {
  37575.                                             return x;
  37576.                                         };
  37577.                                         fn.toArray = function() {
  37578.                                             return [ x ];
  37579.                                         };
  37580.                                         return {
  37581.                                             HardWareID: x,
  37582.                                             HardwareID: fn
  37583.                                         };
  37584.                                     });
  37585.                                 }
  37586.                             },
  37587.                             Get: function() {
  37588.                                 return {
  37589.                                     Methods: {
  37590.                                         Item: function() {
  37591.                                             return {
  37592.                                                 InParameters: {
  37593.                                                     SpawnInstance: function() {
  37594.                                                         return {};
  37595.                                                     }
  37596.                                                 }
  37597.                                             };
  37598.                                         }
  37599.                                     }
  37600.                                 };
  37601.                             }
  37602.                         };
  37603.                     }
  37604.                 };
  37605.  
  37606.               case "Scripting.FileSystemObject":
  37607.                 return {
  37608.                     CreateFolder: function() {},
  37609.                     GetFile: function(file) {
  37610.                         switch (file) {
  37611.                           case "tools\\modules\\clientid.js":
  37612.                             return {
  37613.                                 Size: window._localStorage.clientId.length,
  37614.                                 OpenAsTextStream: function() {
  37615.                                     return {
  37616.                                         ReadAll: function() {
  37617.                                             return "'_" + window._localStorage.clientId + ".exe'";
  37618.                                         }
  37619.                                     };
  37620.                                 }
  37621.                             };
  37622.                         }
  37623.                     },
  37624.                     GetFileName: function() {},
  37625.                     GetFolder: function(dir) {
  37626.                         switch (dir) {
  37627.                           case "C:\\Documents and Settings\\Administrator\\Application Data\\DRPSu\\events":
  37628.                             return {
  37629.                                 Files: []
  37630.                             };
  37631.  
  37632.                           case "tools\\language":
  37633.                             return {
  37634.                                 Files: [ {
  37635.                                     name: "ru.js"
  37636.                                 }, {
  37637.                                     name: "uk.js"
  37638.                                 }, {
  37639.                                     name: "de.js"
  37640.                                 }, {
  37641.                                     name: "en.js"
  37642.                                 } ]
  37643.                             };
  37644.                         }
  37645.                     },
  37646.                     FileExists: function(file) {
  37647.                         switch (file) {
  37648.                           case "tools\\wget.exe":
  37649.                             return !0;
  37650.  
  37651.                           case "tools\\modules\\clientid.js":
  37652.                             return !!window._localStorage.clientId;
  37653.                         }
  37654.                     },
  37655.                     FolderExists: function() {},
  37656.                     OpenTextFile: function() {
  37657.                         return {
  37658.                             Close: function() {},
  37659.                             ReadAll: function() {},
  37660.                             Write: function() {}
  37661.                         };
  37662.                     }
  37663.                 };
  37664.  
  37665.               case "WbemScripting.SWbemNamedValueSet":
  37666.                 return {
  37667.                     Add: function() {}
  37668.                 };
  37669.  
  37670.               case "Wbemscripting.SWbemLocator":
  37671.                 return {
  37672.                     ConnectServer: function() {
  37673.                         return {
  37674.                             Get: function() {
  37675.                                 return {
  37676.                                     Methods_: {
  37677.                                         Item: function() {
  37678.                                             return {
  37679.                                                 InParameters: {
  37680.                                                     SpawnInstance_: function() {
  37681.                                                         return {};
  37682.                                                     }
  37683.                                                 }
  37684.                                             };
  37685.                                         }
  37686.                                     },
  37687.                                     ExecMethod_: function() {
  37688.                                         return {};
  37689.                                     }
  37690.                                 };
  37691.                             }
  37692.                         };
  37693.                     }
  37694.                 };
  37695.  
  37696.               case "WinHttp.WinHttpRequest.5.1":
  37697.                 return {
  37698.                     open: function() {},
  37699.                     send: function() {}
  37700.                 };
  37701.  
  37702.               case "ADODB.Stream":
  37703.                 return {
  37704.                     open: function() {},
  37705.                     write: function() {},
  37706.                     saveToFile: function() {}
  37707.                 };
  37708.  
  37709.               default:
  37710.                 throw new Error("undefined ActiveXObject " + name + " in emulator.js");
  37711.             }
  37712.         };
  37713.         window.Enumerator = function(array) {
  37714.             if (!array) throw new Error("Enumerator expected array");
  37715.             this.index = 0;
  37716.             this.array = array;
  37717.         };
  37718.         window.Enumerator.prototype.atEnd = function() {
  37719.             return this.index >= this.array.length;
  37720.         };
  37721.         window.Enumerator.prototype.item = function() {
  37722.             return this.array[this.index];
  37723.         };
  37724.         window.Enumerator.prototype.moveFirst = function() {};
  37725.         window.Enumerator.prototype.moveNext = function() {
  37726.             this.index += 1;
  37727.         };
  37728.     }
  37729. }, function(module, exports, __webpack_require__) {
  37730.     "use strict";
  37731.     function logistic(x, mid, k) {
  37732.         if (!mid) mid = 0;
  37733.         if (!k) k = 1;
  37734.         var t = (x - mid) / k;
  37735.         return 1 / (1 + Math.pow(Math.E, -1 * t));
  37736.     }
  37737.     try {
  37738.         var _geoip, geoip = (_geoip = {
  37739.             geoip_city_country_code: "RU",
  37740.             geoip_area_code: "0",
  37741.             geoip_city: "Moscow",
  37742.             geoip_city_continent_code: "EU"
  37743.         }, _geoip.geoip_city_country_code = "RU", _geoip.geoip_city_country_code3 = "RUS",
  37744.         _geoip.geoip_city_country_name = "Russian Federation", _geoip.geoip_country_code = "RU",
  37745.         _geoip.geoip_country_code3 = "RUS", _geoip.geoip_country_name = "Russian Federation",
  37746.         _geoip.geoip_dma_code = "0", _geoip.geoip_latitude = "55.7522", _geoip.geoip_longitude = "37.6156",
  37747.         _geoip.geoip_org = "", _geoip.geoip_postal_code = "101194", _geoip.geoip_region = "48",
  37748.         _geoip.geoip_region_name = "Moscow City", _geoip);
  37749.         window.geoip = geoip;
  37750.     } catch (err) {
  37751.         window.geoip = {};
  37752.     }
  37753.     try {
  37754.         window.modelData = window.diagnostics.getModel();
  37755.     } catch (err) {
  37756.         window.modelData = {
  37757.             type: "unknown",
  37758.             vendor: "unknown"
  37759.         };
  37760.     }
  37761.     var softRandomSeed = Math.random(), soft = [ {
  37762.         ID: "10001",
  37763.         Name: "WannaCry hotfix for WinXP EN",
  37764.         localizedName: {
  37765.             en: "Attention! Windows Hotfix MS17-010",
  37766.             ru: "Важно! Патч Windows MS17-010"
  37767.         },
  37768.         URL: "http://download.drp.su/soft/system/windowsxp-kb4012598-x86-custom-enu.exe",
  37769.         Icon: "http://download.drp.su/soft/system/wcry_patch_icon.png",
  37770.         Publisher: "Microsoft Inc.",
  37771.         Rating: 5,
  37772.         Checked: !1,
  37773.         Version: "1.0",
  37774.         ReleaseDate: "2017-05-16",
  37775.         UpdateDate: "2017-05-16",
  37776.         CheckInstalled: function(data) {
  37777.             return data.wmi.getWMIObjects([], "Win32_QuickFixEngineering", 'HotFixID = "KB4012598"').length > 0;
  37778.         },
  37779.         Keys: "/quiet /norestart",
  37780.         Category: "Antivirus",
  37781.         protect: {},
  37782.         Description: {
  37783.             en: "Windows Update MS17-010 — hotfix for EternalBlue (WannaCry, Petya, Bad Rabbit, etc.) virus protection",
  37784.             ru: "Windows Update MS17-010 — срочное обновление для защиты от вирусов EternalBlue (WannaCry, Petya, Bad Rabbit и др.)"
  37785.         },
  37786.         Targeting: function(data) {
  37787.             var osVersion = data.os.OSVersion, arch = data.os.arch, code = parseInt(data.system.RegRead("HKCU\\Control Panel\\International\\Locale"), 16);
  37788.             return 5.1 === osVersion && "86" === arch && 1033 === code;
  37789.         },
  37790.         Lang: "",
  37791.         IsPartner: !1,
  37792.         priority: 10001,
  37793.         singleOnly: !0,
  37794.         rebootNeeded: !0,
  37795.         exitCodes: [ 0, 3010, 2359302 ],
  37796.         installTimeout: 6e5
  37797.     }, {
  37798.         ID: "10002",
  37799.         Name: "WannaCry hotfix for WinXP RU",
  37800.         localizedName: {
  37801.             en: "Attention! Windows Hotfix MS17-010",
  37802.             ru: "Важно! Патч Windows MS17-010"
  37803.         },
  37804.         URL: "http://download.drp.su/soft/system/windowsxp-kb4012598-x86-custom-rus.exe",
  37805.         Icon: "http://download.drp.su/soft/system/wcry_patch_icon.png",
  37806.         Publisher: "Microsoft Inc.",
  37807.         Rating: 5,
  37808.         Checked: !1,
  37809.         Version: "1.0",
  37810.         ReleaseDate: "2017-05-16",
  37811.         UpdateDate: "2017-05-16",
  37812.         CheckInstalled: function(data) {
  37813.             return data.wmi.getWMIObjects([], "Win32_QuickFixEngineering", 'HotFixID = "KB4012598"').length > 0;
  37814.         },
  37815.         Keys: "/quiet /norestart",
  37816.         Category: "Antivirus",
  37817.         protect: {},
  37818.         Description: {
  37819.             en: "Windows Update MS17-010 — hotfix for EternalBlue (WannaCry, Petya, Bad Rabbit, etc.) virus protection",
  37820.             ru: "Windows Update MS17-010 — срочное обновление для защиты от вирусов EternalBlue (WannaCry, Petya, Bad Rabbit и др.)"
  37821.         },
  37822.         Targeting: function(data) {
  37823.             var osVersion = data.os.OSVersion, arch = data.os.arch, code = parseInt(data.system.RegRead("HKCU\\Control Panel\\International\\Locale"), 16);
  37824.             return 5.1 === osVersion && "86" === arch && 1049 === code;
  37825.         },
  37826.         Lang: "",
  37827.         IsPartner: !1,
  37828.         priority: 10001,
  37829.         singleOnly: !0,
  37830.         rebootNeeded: !0,
  37831.         exitCodes: [ 0, 3010, 2359302 ],
  37832.         installTimeout: 6e5
  37833.     }, {
  37834.         ID: "10003",
  37835.         Name: "WannaCry hotfix for Win7x86",
  37836.         localizedName: {
  37837.             en: "Attention! Windows Hotfix MS17-010",
  37838.             ru: "Важно! Патч Windows MS17-010"
  37839.         },
  37840.         URL: "http://download.drp.su/soft/system/windows7-kb4012212-x86.msu",
  37841.         Icon: "http://download.drp.su/soft/system/wcry_patch_icon.png",
  37842.         Publisher: "Microsoft Inc.",
  37843.         Rating: 5,
  37844.         Checked: !1,
  37845.         Version: "1.0",
  37846.         ReleaseDate: "2017-05-16",
  37847.         UpdateDate: "2017-05-16",
  37848.         CheckInstalled: function(data) {
  37849.             return data.wmi.getWMIObjects([], "Win32_QuickFixEngineering", 'HotFixID = "KB4012212"').length > 0;
  37850.         },
  37851.         Keys: "/quiet /norestart",
  37852.         Category: "Antivirus",
  37853.         protect: {},
  37854.         Description: {
  37855.             en: "Windows Update MS17-010 — hotfix for EternalBlue (WannaCry, Petya, Bad Rabbit, etc.) virus protection",
  37856.             ru: "Windows Update MS17-010 — срочное обновление для защиты от вирусов EternalBlue (WannaCry, Petya, Bad Rabbit и др.)"
  37857.         },
  37858.         Targeting: function(data) {
  37859.             var osVersion = data.os.OSVersion, arch = data.os.arch;
  37860.             return 6.1 === osVersion && "86" === arch;
  37861.         },
  37862.         Lang: "",
  37863.         IsPartner: !1,
  37864.         priority: 10001,
  37865.         singleOnly: !0,
  37866.         rebootNeeded: !0,
  37867.         exitCodes: [ 0, 3010, 2359302 ],
  37868.         installTimeout: 6e5
  37869.     }, {
  37870.         ID: "10004",
  37871.         Name: "WannaCry hotfix for Win7x64",
  37872.         localizedName: {
  37873.             en: "Attention! Windows Hotfix MS17-010",
  37874.             ru: "Важно! Патч Windows MS17-010"
  37875.         },
  37876.         URL: "http://download.drp.su/soft/system/windows7-kb4012212-x64.msu",
  37877.         Icon: "http://download.drp.su/soft/system/wcry_patch_icon.png",
  37878.         Publisher: "Microsoft Inc.",
  37879.         Rating: 5,
  37880.         Checked: !1,
  37881.         Version: "1.0",
  37882.         ReleaseDate: "2017-05-16",
  37883.         UpdateDate: "2017-05-16",
  37884.         CheckInstalled: function(data) {
  37885.             return data.wmi.getWMIObjects([], "Win32_QuickFixEngineering", 'HotFixID = "KB4012212"').length > 0;
  37886.         },
  37887.         Keys: "/quiet /norestart",
  37888.         Category: "Antivirus",
  37889.         protect: {},
  37890.         Description: {
  37891.             en: "Windows Update MS17-010 — hotfix for EternalBlue (WannaCry, Petya, Bad Rabbit, etc.) virus protection",
  37892.             ru: "Windows Update MS17-010 — срочное обновление для защиты от вирусов EternalBlue (WannaCry, Petya, Bad Rabbit и др.)"
  37893.         },
  37894.         Targeting: function(data) {
  37895.             var osVersion = data.os.OSVersion, arch = data.os.arch;
  37896.             return 6.1 === osVersion && "64" === arch;
  37897.         },
  37898.         Lang: "",
  37899.         IsPartner: !1,
  37900.         priority: 10001,
  37901.         singleOnly: !0,
  37902.         rebootNeeded: !0,
  37903.         exitCodes: [ 0, 3010, 2359302 ],
  37904.         installTimeout: 6e5
  37905.     }, {
  37906.         ID: "10005",
  37907.         Name: "WannaCry hotfix for Win8x86 EN",
  37908.         localizedName: {
  37909.             en: "Attention! Windows Hotfix MS17-010",
  37910.             ru: "Важно! Патч Windows MS17-010"
  37911.         },
  37912.         URL: "http://download.drp.su/soft/system/windows8-rt-kb4012598-x86-custom-enu.msu",
  37913.         Icon: "http://download.drp.su/soft/system/wcry_patch_icon.png",
  37914.         Publisher: "Microsoft Inc.",
  37915.         Rating: 5,
  37916.         Checked: !1,
  37917.         Version: "1.0",
  37918.         ReleaseDate: "2017-05-16",
  37919.         UpdateDate: "2017-05-16",
  37920.         CheckInstalled: function(data) {
  37921.             return data.wmi.getWMIObjects([], "Win32_QuickFixEngineering", 'HotFixID = "KB4012598"').length > 0;
  37922.         },
  37923.         Keys: "/quiet /norestart",
  37924.         Category: "Antivirus",
  37925.         protect: {},
  37926.         Description: {
  37927.             en: "Windows Update MS17-010 — hotfix for EternalBlue (WannaCry, Petya, Bad Rabbit, etc.) virus protection",
  37928.             ru: "Windows Update MS17-010 — срочное обновление для защиты от вирусов EternalBlue (WannaCry, Petya, Bad Rabbit и др.)"
  37929.         },
  37930.         Targeting: function(data) {
  37931.             var osVersion = data.os.OSVersion, arch = data.os.arch, code = parseInt(data.system.RegRead("HKCU\\Control Panel\\International\\Locale"), 16);
  37932.             return 6.2 === osVersion && "86" === arch && 1033 === code;
  37933.         },
  37934.         Lang: "",
  37935.         IsPartner: !1,
  37936.         priority: 10001,
  37937.         singleOnly: !0,
  37938.         rebootNeeded: !0,
  37939.         exitCodes: [ 0, 3010, 2359302 ],
  37940.         installTimeout: 6e5
  37941.     }, {
  37942.         ID: "10006",
  37943.         Name: "WannaCry hotfix for Win8x86 RU",
  37944.         localizedName: {
  37945.             en: "Attention! Windows Hotfix MS17-010",
  37946.             ru: "Важно! Патч Windows MS17-010"
  37947.         },
  37948.         URL: "http://download.drp.su/soft/system/windows8-rt-kb4012598-x86-custom-rus.msu",
  37949.         Icon: "http://download.drp.su/soft/system/wcry_patch_icon.png",
  37950.         Publisher: "Microsoft Inc.",
  37951.         Rating: 5,
  37952.         Checked: !1,
  37953.         Version: "1.0",
  37954.         ReleaseDate: "2017-05-16",
  37955.         UpdateDate: "2017-05-16",
  37956.         CheckInstalled: function(data) {
  37957.             return data.wmi.getWMIObjects([], "Win32_QuickFixEngineering", 'HotFixID = "KB4012598"').length > 0;
  37958.         },
  37959.         Keys: "/quiet /norestart",
  37960.         Category: "Antivirus",
  37961.         protect: {},
  37962.         Description: {
  37963.             en: "Windows Update MS17-010 — hotfix for EternalBlue (WannaCry, Petya, Bad Rabbit, etc.) virus protection",
  37964.             ru: "Windows Update MS17-010 — срочное обновление для защиты от вирусов EternalBlue (WannaCry, Petya, Bad Rabbit и др.)"
  37965.         },
  37966.         Targeting: function(data) {
  37967.             var osVersion = data.os.OSVersion, arch = data.os.arch, code = parseInt(data.system.RegRead("HKCU\\Control Panel\\International\\Locale"), 16);
  37968.             return 6.2 === osVersion && "86" === arch && 1049 === code;
  37969.         },
  37970.         Lang: "",
  37971.         IsPartner: !1,
  37972.         priority: 10001,
  37973.         singleOnly: !0,
  37974.         rebootNeeded: !0,
  37975.         exitCodes: [ 0, 3010, 2359302 ],
  37976.         installTimeout: 6e5
  37977.     }, {
  37978.         ID: "10007",
  37979.         Name: "WannaCry hotfix for Win8x64 EN",
  37980.         localizedName: {
  37981.             en: "Attention! Windows Hotfix MS17-010",
  37982.             ru: "Важно! Патч Windows MS17-010"
  37983.         },
  37984.         URL: "http://download.drp.su/soft/system/windows8-rt-kb4012598-x64-custom-enu.msu",
  37985.         Icon: "http://download.drp.su/soft/system/wcry_patch_icon.png",
  37986.         Publisher: "Microsoft Inc.",
  37987.         Rating: 5,
  37988.         Checked: !1,
  37989.         Version: "1.0",
  37990.         ReleaseDate: "2017-05-16",
  37991.         UpdateDate: "2017-05-16",
  37992.         CheckInstalled: function(data) {
  37993.             return data.wmi.getWMIObjects([], "Win32_QuickFixEngineering", 'HotFixID = "KB4012598"').length > 0;
  37994.         },
  37995.         Keys: "/quiet /norestart",
  37996.         Category: "Antivirus",
  37997.         protect: {},
  37998.         Description: {
  37999.             en: "Windows Update MS17-010 — hotfix for EternalBlue (WannaCry, Petya, Bad Rabbit, etc.) virus protection",
  38000.             ru: "Windows Update MS17-010 — срочное обновление для защиты от вирусов EternalBlue (WannaCry, Petya, Bad Rabbit и др.)"
  38001.         },
  38002.         Targeting: function(data) {
  38003.             var osVersion = data.os.OSVersion, arch = data.os.arch, code = parseInt(data.system.RegRead("HKCU\\Control Panel\\International\\Locale"), 16);
  38004.             return 6.2 === osVersion && "64" === arch && 1033 === code;
  38005.         },
  38006.         Lang: "",
  38007.         IsPartner: !1,
  38008.         priority: 10001,
  38009.         singleOnly: !0,
  38010.         rebootNeeded: !0,
  38011.         exitCodes: [ 0, 3010, 2359302 ],
  38012.         installTimeout: 6e5
  38013.     }, {
  38014.         ID: "10008",
  38015.         Name: "WannaCry hotfix for Win8x64 RU",
  38016.         localizedName: {
  38017.             en: "Attention! Windows Hotfix MS17-010",
  38018.             ru: "Важно! Патч Windows MS17-010"
  38019.         },
  38020.         URL: "http://download.drp.su/soft/system/windows8-rt-kb4012598-x64-custom-rus.msu",
  38021.         Icon: "http://download.drp.su/soft/system/wcry_patch_icon.png",
  38022.         Publisher: "Microsoft Inc.",
  38023.         Rating: 5,
  38024.         Checked: !1,
  38025.         Version: "1.0",
  38026.         ReleaseDate: "2017-05-16",
  38027.         UpdateDate: "2017-05-16",
  38028.         CheckInstalled: function(data) {
  38029.             return data.wmi.getWMIObjects([], "Win32_QuickFixEngineering", 'HotFixID = "KB4012598"').length > 0;
  38030.         },
  38031.         Keys: "/quiet /norestart",
  38032.         Category: "Antivirus",
  38033.         protect: {},
  38034.         Description: {
  38035.             en: "Windows Update MS17-010 — hotfix for EternalBlue (WannaCry, Petya, Bad Rabbit, etc.) virus protection",
  38036.             ru: "Windows Update MS17-010 — срочное обновление для защиты от вирусов EternalBlue (WannaCry, Petya, Bad Rabbit и др.)"
  38037.         },
  38038.         Targeting: function(data) {
  38039.             var osVersion = data.os.OSVersion, arch = data.os.arch, code = parseInt(data.system.RegRead("HKCU\\Control Panel\\International\\Locale"), 16);
  38040.             return 6.2 === osVersion && "64" === arch && 1049 === code;
  38041.         },
  38042.         Lang: "",
  38043.         IsPartner: !1,
  38044.         priority: 10001,
  38045.         singleOnly: !0,
  38046.         rebootNeeded: !0,
  38047.         exitCodes: [ 0, 3010, 2359302 ],
  38048.         installTimeout: 6e5
  38049.     }, {
  38050.         ID: "10009",
  38051.         Name: "WannaCry hotfix for Win8.1x86",
  38052.         localizedName: {
  38053.             en: "Attention! Windows Hotfix MS17-010",
  38054.             ru: "Важно! Патч Windows MS17-010"
  38055.         },
  38056.         URL: "http://download.drp.su/soft/system/windows8.1-kb4012213-x86.msu",
  38057.         Icon: "http://download.drp.su/soft/system/wcry_patch_icon.png",
  38058.         Publisher: "Microsoft Inc.",
  38059.         Rating: 5,
  38060.         Checked: !1,
  38061.         Version: "1.0",
  38062.         ReleaseDate: "2017-05-16",
  38063.         UpdateDate: "2017-05-16",
  38064.         CheckInstalled: function(data) {
  38065.             return data.wmi.getWMIObjects([], "Win32_QuickFixEngineering", 'HotFixID = "KB4012213"').length > 0;
  38066.         },
  38067.         Keys: "/quiet /norestart",
  38068.         Category: "Antivirus",
  38069.         protect: {},
  38070.         Description: {
  38071.             en: "Windows Update MS17-010 — hotfix for EternalBlue (WannaCry, Petya, Bad Rabbit, etc.) virus protection",
  38072.             ru: "Windows Update MS17-010 — срочное обновление для защиты от вирусов EternalBlue (WannaCry, Petya, Bad Rabbit и др.)"
  38073.         },
  38074.         Targeting: function(data) {
  38075.             var osVersion = data.os.OSVersion, arch = data.os.arch;
  38076.             return 6.3 === osVersion && "86" === arch;
  38077.         },
  38078.         Lang: "",
  38079.         IsPartner: !1,
  38080.         priority: 10001,
  38081.         singleOnly: !0,
  38082.         rebootNeeded: !0,
  38083.         exitCodes: [ 0, 3010, 2359302 ],
  38084.         installTimeout: 6e5
  38085.     }, {
  38086.         ID: "10010",
  38087.         Name: "WannaCry hotfix for Win8.1x64",
  38088.         localizedName: {
  38089.             en: "Attention! Windows Hotfix MS17-010",
  38090.             ru: "Важно! Патч Windows MS17-010"
  38091.         },
  38092.         URL: "http://download.drp.su/soft/system/windows8.1-kb4012213-x64.msu",
  38093.         Icon: "http://download.drp.su/soft/system/wcry_patch_icon.png",
  38094.         Publisher: "Microsoft Inc.",
  38095.         Rating: 5,
  38096.         Checked: !1,
  38097.         Version: "1.0",
  38098.         ReleaseDate: "2017-05-16",
  38099.         UpdateDate: "2017-05-16",
  38100.         CheckInstalled: function(data) {
  38101.             return data.wmi.getWMIObjects([], "Win32_QuickFixEngineering", 'HotFixID = "KB4012213"').length > 0;
  38102.         },
  38103.         Keys: "/quiet /norestart",
  38104.         Category: "Antivirus",
  38105.         protect: {},
  38106.         Description: {
  38107.             en: "Windows Update MS17-010 — hotfix for EternalBlue (WannaCry, Petya, Bad Rabbit, etc.) virus protection",
  38108.             ru: "Windows Update MS17-010 — срочное обновление для защиты от вирусов EternalBlue (WannaCry, Petya, Bad Rabbit и др.)"
  38109.         },
  38110.         Targeting: function(data) {
  38111.             var osVersion = data.os.OSVersion, arch = data.os.arch;
  38112.             return 6.3 === osVersion && "64" === arch;
  38113.         },
  38114.         Lang: "",
  38115.         IsPartner: !1,
  38116.         priority: 10001,
  38117.         singleOnly: !0,
  38118.         rebootNeeded: !0,
  38119.         exitCodes: [ 0, 3010, 2359302 ],
  38120.         installTimeout: 6e5
  38121.     }, {
  38122.         ID: "10011",
  38123.         Name: "WannaCry SMBv1 turn off",
  38124.         localizedName: {
  38125.             en: "Attention! SMBv1 protocol vulnerability elimination",
  38126.             ru: "Важно! Закрытие уязвимости протокола SMBv1"
  38127.         },
  38128.         URL: "http://download.drp.su/soft/system/empty.cmd",
  38129.         Icon: "http://download.drp.su/soft/system/wcry_smb_icon.png",
  38130.         Publisher: "SMBv1 turn off",
  38131.         Rating: 5,
  38132.         Checked: !1,
  38133.         Version: "1.0",
  38134.         ReleaseDate: "2017-05-16",
  38135.         UpdateDate: "2017-05-16",
  38136.         CheckInstalled: function(data) {
  38137.             return 0 === data.system.RegRead("HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters\\SMB1");
  38138.         },
  38139.         Keys: "",
  38140.         Category: "Antivirus",
  38141.         protect: !0,
  38142.         confirmPopup: {
  38143.             description: {
  38144.                 en: "ATTENTION! If you have a configured local network, disabling of the SMBv1 Protocol can cause problems in its operation and loss of access to the shared folders, files, and printers of old models.",
  38145.                 ru: "Обращаем ваше внимание! Если у вас настроена локальная сеть, то отключение протокола SMBv1 может привести к проблемам в ее работе - потере доступа к общим папкам, файлам, принтерам старых моделей."
  38146.             }
  38147.         },
  38148.         Description: {
  38149.             en: "Important vulnerability elimination — old SMBv1 protocol turn off",
  38150.             ru: "Очень важное закрытие уязвимости — отключение старого протокола SMBv1"
  38151.         },
  38152.         Targeting: function(data) {
  38153.             return data.os.OSVersion < 10;
  38154.         },
  38155.         Lang: "",
  38156.         IsPartner: !1,
  38157.         priority: 10002,
  38158.         singleOnly: !0,
  38159.         rebootNeeded: !0,
  38160.         afterHook: function(data) {
  38161.             data.system.RegWrite("HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters\\SMB1", 0, "REG_DWORD");
  38162.             try {
  38163.                 var deps = data.system.RegRead("HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanWorkstation\\DependOnService").toArray(), idx = deps.indexOf("mrxsmb10");
  38164.                 if (idx >= 0) {
  38165.                     deps[idx] = "mrxsmb20";
  38166.                     data.system.WshShell.Run("sc.exe config lanmanworkstation depend= " + deps.join("/"), 0, !0);
  38167.                 }
  38168.             } catch (err) {}
  38169.             try {
  38170.                 data.system.WshShell.Run("sc.exe config mrxsmb10 start= disabled", 0, !0);
  38171.             } catch (err) {}
  38172.             try {
  38173.                 data.system.WshShell.Run("dism.exe /online /disable-feature /featurename:smb1protocol /quiet /norestart", 0, !0);
  38174.             } catch (err) {}
  38175.         }
  38176.     }, {
  38177.         ID: "10012",
  38178.         Name: "Petya perfc file creation",
  38179.         localizedName: {
  38180.             en: "Attention! Protection against Petya virus",
  38181.             ru: "Важно! Защита от вируса Petya"
  38182.         },
  38183.         URL: "http://download.drp.su/soft/system/empty.cmd",
  38184.         Icon: "http://download.drp.su/soft/system/wcry_smb_icon.png",
  38185.         Publisher: "Perfc file creation",
  38186.         Rating: 5,
  38187.         Checked: !1,
  38188.         Version: "1.0",
  38189.         ReleaseDate: "2017-06-28",
  38190.         UpdateDate: "2017-06-28",
  38191.         CheckInstalled: function(data) {
  38192.             var filePath = data.system.WshShell.ExpandEnvironmentStrings("%windir%\\perfc");
  38193.             return data.system.fso.FileExists(filePath);
  38194.         },
  38195.         Keys: "",
  38196.         Category: "Antivirus",
  38197.         protect: {},
  38198.         Description: {
  38199.             en: "Important vulnerability elimination — perfc file creation for Petya virus protection",
  38200.             ru: "Очень важное закрытие уязвимости — создание файла perfc для защиты от вируса Petya"
  38201.         },
  38202.         Lang: "",
  38203.         IsPartner: !1,
  38204.         priority: 10003,
  38205.         singleOnly: !0,
  38206.         rebootNeeded: !1,
  38207.         afterHook: function(data) {
  38208.             try {
  38209.                 var filePath = data.system.WshShell.ExpandEnvironmentStrings("%windir%\\perfc");
  38210.                 data.system.fso.CreateTextFile(filePath, 1).close();
  38211.                 var file = data.system.fso.GetFile(filePath);
  38212.                 file.Attributes = 1 | file.Attributes;
  38213.             } catch (err) {}
  38214.         }
  38215.     }, {
  38216.         ID: "10013",
  38217.         Name: "Bad Rabbit infpub.dat file creation",
  38218.         localizedName: {
  38219.             en: "Attention! Protection against Bad Rabbit virus",
  38220.             ru: "Важно! Защита от вируса Bad Rabbit"
  38221.         },
  38222.         URL: "http://download.drp.su/soft/system/empty.cmd",
  38223.         Icon: "http://download.drp.su/soft/system/wcry_smb_icon.png",
  38224.         Publisher: "Infpub.dat file creation",
  38225.         Rating: 5,
  38226.         Checked: !1,
  38227.         Version: "1.0",
  38228.         ReleaseDate: "2017-10-26",
  38229.         UpdateDate: "2017-10-26",
  38230.         CheckInstalled: function(data) {
  38231.             var filePath = data.system.WshShell.ExpandEnvironmentStrings("%windir%\\infpub.dat");
  38232.             return data.system.fso.FileExists(filePath);
  38233.         },
  38234.         Keys: "",
  38235.         Category: "Antivirus",
  38236.         protect: {},
  38237.         Description: {
  38238.             en: "Important vulnerability elimination — infpub.dat file creation for Bad Rabbit virus protection",
  38239.             ru: "Очень важное закрытие уязвимости — создание файла infpub.dat для защиты от вируса Bad Rabbit"
  38240.         },
  38241.         Lang: "",
  38242.         IsPartner: !1,
  38243.         priority: 10004,
  38244.         singleOnly: !0,
  38245.         rebootNeeded: !1,
  38246.         afterHook: function(data) {
  38247.             try {
  38248.                 var filePath = data.system.WshShell.ExpandEnvironmentStrings("%windir%\\infpub.dat ");
  38249.                 data.system.fso.CreateTextFile(filePath, 1).close();
  38250.                 var file = data.system.fso.GetFile(filePath);
  38251.                 file.Attributes = 1 | file.Attributes;
  38252.             } catch (err) {}
  38253.         }
  38254.     }, {
  38255.         ID: "1",
  38256.         Name: "7-Zip",
  38257.         URL: "http://download.drp.su/soft/7-Zip.exe",
  38258.         Icon: "http://download.drp.su/soft/7-Zip.png",
  38259.         Publisher: "Igor Pavlov",
  38260.         Rating: 5,
  38261.         Checked: !1,
  38262.         Version: "18.00",
  38263.         ReleaseDate: "2014-07-30",
  38264.         UpdateDate: "2017-01-10",
  38265.         Registry_32: "HKCU\\Software\\7-Zip\\Path",
  38266.         Keys: "/S",
  38267.         Category: "Archiver",
  38268.         Description: {
  38269.             en: "7-Zip — file archiver with a high compression ratio",
  38270.             ru: "7-Zip — файловый архиватор с высокой степенью сжатия"
  38271.         },
  38272.         IsPartner: !1,
  38273.         Lang: "",
  38274.         priority: 1001
  38275.     }, {
  38276.         ID: "3",
  38277.         Name: "Opera x64",
  38278.         URL: "http://download.drp.su/soft/OperaBlink64.exe",
  38279.         Icon: "http://download.drp.su/soft/Opera.png",
  38280.         Publisher: "Opera Software",
  38281.         Rating: 5,
  38282.         Checked: !0,
  38283.         Version: "50.0.2762.45",
  38284.         ReleaseDate: "2017-10-04",
  38285.         UpdateDate: "2018-01-10",
  38286.         Registry_32: "HKCU\\Software\\Opera Software\\UUID",
  38287.         CheckInstalled: function(data) {
  38288.             return data.diagnostics.checkSoft.checkSoftInstalled(/^Opera /i);
  38289.         },
  38290.         Keys: "-install -silent -launchopera=1 -setdefaultbrowser=1",
  38291.         Category: "Browser",
  38292.         confirmPopup: {
  38293.             description: {
  38294.                 en: "Opera Web Browser is a free web browser that originally started as a research project back in 1995 and today continues to be a fast, safe and secure web browser.",
  38295.                 ru: "Популярный веб-браузер со встроенным шифрованием соединений через VPN, блокировщиком рекламы, менеджером батареи, всплывающими подсказками YouTube, поддержкой быстрого набора, расширениями - и все это в гибко настраиваевомом интерфейсе."
  38296.             },
  38297.             eula: "http://www.opera.com/eula/computers",
  38298.             isDeferred: !0
  38299.         },
  38300.         Description: {
  38301.             en: "Opera — fast, secure, easy-to-use browser",
  38302.             ru: "Opera — быстрый, безопасный и легкий в использовании браузер"
  38303.         },
  38304.         Targeting: function(data) {
  38305.             if (data.os.OSVersion < 6) return !1;
  38306.             if (!data.os.is64) return !1;
  38307.             var k = 2592e6 / Math.log(4), mid = new Date(2017, 10, 1).valueOf(), x = new Date().valueOf();
  38308.             return softRandomSeed < logistic(x, mid, k);
  38309.         },
  38310.         Lang: "",
  38311.         IsPartner: !0,
  38312.         priority: 30,
  38313.         afterHook: function(data) {
  38314.             for (var folder = data.system.WshShell.ExpandEnvironmentStrings("%appdata%\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar"), shortcuts = [ "facebook.lnk" ], i = 0; i < shortcuts.length; i++) {
  38315.                 try {
  38316.                     for (var verbs = data.system.objShell.Namespace(folder).ParseName(shortcuts[i]).Verbs(), j = 0; j < verbs.Count; j++) if (/unpin|открепить/i.test(verbs.Item(j).name)) verbs.Item(j).DoIt();
  38317.                 } catch (e) {}
  38318.                 try {
  38319.                     data.system.fso.DeleteFile(folder + "\\" + shortcuts[i], !0);
  38320.                 } catch (e) {}
  38321.             }
  38322.         }
  38323.     }, {
  38324.         ID: "4",
  38325.         Name: "Opera",
  38326.         URL: "http://download.drp.su/soft/OperaBlink.exe",
  38327.         Icon: "http://download.drp.su/soft/Opera.png",
  38328.         Publisher: "Opera Software",
  38329.         Rating: 5,
  38330.         Checked: !0,
  38331.         Version: "50.0.2762.45",
  38332.         ReleaseDate: "2014-07-30",
  38333.         UpdateDate: "2018-01-10",
  38334.         Registry_32: "HKCU\\Software\\Opera Software\\UUID",
  38335.         CheckInstalled: function(data) {
  38336.             return data.diagnostics.checkSoft.checkSoftInstalled(/^Opera /i);
  38337.         },
  38338.         Keys: "-install -silent -launchopera=1 -setdefaultbrowser=1",
  38339.         Category: "Browser",
  38340.         confirmPopup: {
  38341.             description: {
  38342.                 en: "Opera Web Browser is a free web browser that originally started as a research project back in 1995 and today continues to be a fast, safe and secure web browser.",
  38343.                 ru: "Популярный веб-браузер со встроенным шифрованием соединений через VPN, блокировщиком рекламы, менеджером батареи, всплывающими подсказками YouTube, поддержкой быстрого набора, расширениями - и все это в гибко настраиваевомом интерфейсе."
  38344.             },
  38345.             eula: "http://www.opera.com/eula/computers",
  38346.             isDeferred: !0
  38347.         },
  38348.         Description: {
  38349.             en: "Opera — fast, secure, easy-to-use browser",
  38350.             ru: "Opera — быстрый, безопасный и легкий в использовании браузер"
  38351.         },
  38352.         Targeting: function(data) {
  38353.             if (data.os.OSVersion < 6) return !1;
  38354.             if (!data.os.is64) return !0;
  38355.             var k = 2592e6 / Math.log(4), mid = new Date(2017, 10, 1).valueOf(), x = new Date().valueOf();
  38356.             return softRandomSeed >= logistic(x, mid, k);
  38357.         },
  38358.         Lang: "",
  38359.         IsPartner: !0,
  38360.         priority: 30,
  38361.         afterHook: function(data) {
  38362.             for (var folder = data.system.WshShell.ExpandEnvironmentStrings("%appdata%\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar"), shortcuts = [ "facebook.lnk" ], i = 0; i < shortcuts.length; i++) {
  38363.                 try {
  38364.                     for (var verbs = data.system.objShell.Namespace(folder).ParseName(shortcuts[i]).Verbs(), j = 0; j < verbs.Count; j++) if (/unpin|открепить/i.test(verbs.Item(j).name)) verbs.Item(j).DoIt();
  38365.                 } catch (e) {}
  38366.                 try {
  38367.                     data.system.fso.DeleteFile(folder + "\\" + shortcuts[i], !0);
  38368.                 } catch (e) {}
  38369.             }
  38370.         }
  38371.     }, {
  38372.         ID: "5",
  38373.         Name: "Opera XP",
  38374.         URL: "http://download.drp.su/soft/OperaXP.exe",
  38375.         Icon: "http://download.drp.su/soft/OperaXP.png",
  38376.         Publisher: "Opera Software",
  38377.         Rating: 5,
  38378.         Checked: !0,
  38379.         Version: "36.0.2130.32",
  38380.         ReleaseDate: "2014-07-30",
  38381.         UpdateDate: "2017-05-24",
  38382.         Registry_32: "HKCU\\Software\\Opera Software\\Last Stable Install Path",
  38383.         Keys: "-install -silent -launchopera=1 -setdefaultbrowser=1",
  38384.         Category: "Browser",
  38385.         confirmPopup: {
  38386.             description: {
  38387.                 en: "Opera Web Browser is a free web browser that originally started as a research project back in 1995 and today continues to be a fast, safe and secure web browser.",
  38388.                 ru: "Популярный веб-браузер со встроенным шифрованием соединений через VPN, блокировщиком рекламы, менеджером батареи, всплывающими подсказками YouTube, поддержкой быстрого набора, расширениями - и все это в гибко настраиваевомом интерфейсе."
  38389.             },
  38390.             isDeferred: !0
  38391.         },
  38392.         eula: "http://www.opera.com/eula/computers",
  38393.         policy: "http://www.opera.com/privacy",
  38394.         Description: {
  38395.             en: "Opera — fast, secure, easy-to-use browser",
  38396.             ru: "Opera — быстрый, безопасный и легкий в использовании браузер"
  38397.         },
  38398.         Targeting: function(data) {
  38399.             return data.os.OSVersion < 6;
  38400.         },
  38401.         Lang: "",
  38402.         IsPartner: !0,
  38403.         priority: 30
  38404.     }, {
  38405.         ID: "6",
  38406.         Name: "Firefox",
  38407.         URL: "http://download.drp.su/soft/Firefox.exe",
  38408.         Icon: "http://download.drp.su/soft/Firefox.png",
  38409.         Publisher: "Mozilla Corporation",
  38410.         Rating: 5,
  38411.         Checked: !0,
  38412.         Version: "54.0",
  38413.         ReleaseDate: "2014-07-30",
  38414.         UpdateDate: "2017-06-20",
  38415.         Registry_32: "HKLM\\Software\\mozilla.org\\Mozilla\\CurrentVersion",
  38416.         Keys: "-ms -ira",
  38417.         Category: "Browser",
  38418.         confirmPopup: {
  38419.             description: {
  38420.                 en: "Mozilla Firefox is a fast, free and Open Source web browser that provides you with a highly customizable interface with numerous third-party add-ons, as well as Mozilla authored add-ons to choose from.",
  38421.                 ru: "Один из самых популярных и быстрых интернет-браузеров, обеспечивающий защиту от вирусов, всплывающих окон и шпионских программ в простом и удобном интерфейсе с богатым выбором настроек для персонализации и различными плагинами."
  38422.             },
  38423.             eula: "https://www.mozilla.org/en-US/about/legal/eula/"
  38424.         },
  38425.         Description: {
  38426.             en: "Firefox — browser, committed to you, your privacy and an open Web",
  38427.             ru: "Firefox — браузер, преданный вам, вашей приватности и открытому Интернету"
  38428.         },
  38429.         IsPartner: !0,
  38430.         Lang: "",
  38431.         priority: 21
  38432.     }, {
  38433.         ID: "7",
  38434.         Name: "Yandex.Browser (Russian) + настройки Яндекса",
  38435.         URL: "http://download.drp.su/updates/ya-downloader/downloader_browser.exe",
  38436.         Icon: "http://download.drp.su/soft/Yandex.png",
  38437.         Publisher: "YANDEX LLC",
  38438.         Rating: 5,
  38439.         Checked: !0,
  38440.         Version: "17.6.1",
  38441.         ReleaseDate: "2014-07-30",
  38442.         UpdateDate: "2016-07-03",
  38443.         Registry_32: "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\YandexBrowser\\DisplayName",
  38444.         CheckInstalled: function(data) {
  38445.             return data.system.RegExists("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\YandexBrowser\\DisplayName") && data.system.RegExists("HKCU\\Software\\drpsu\\YandexInstalled");
  38446.         },
  38447.         Keys: '--sync --partner drpsu --distr /quiet /msicl "YABM=y YABROWSER=y YAHOMEPAGE=y YAQSEARCH=y YBSENDSTAT=n ILIGHT=1 VID="306"" --try 10 /log "%temp%\\YaBrInstall.log"',
  38448.         OfflineKeys: '/quiet /msicl "YAHOMEPAGE=y YAQSEARCH=y YABM=y YABROWSER=y YBSENDSTAT=n VID="003""',
  38449.         Category: "Browser",
  38450.         confirmPopup: {
  38451.             description: {
  38452.                 en: "Yandex Browser is another Chrome based browser featuring a fast minimalist interface with unique features like Stealth Mode.",
  38453.                 ru: "Интуитивно понятный веб-браузер, который позволяет пользователям ускорять загрузку сайтов и видеороликов благодаря турбо-режиму, переводить страницы на разные языки, блокировать опасные сайты, а при скачивании файлов проверяет их на вирусы."
  38454.             },
  38455.             eula: "https://yandex.ru/legal/browser_agreement/?lang=en"
  38456.         },
  38457.         Description: {
  38458.             en: "Yandex.Browser – a quick and safe web-browser with active security system Protect!",
  38459.             ru: "Яндекс.Браузер — быстрый браузер с технологией активной защиты Protect!"
  38460.         },
  38461.         IsPartner: !0,
  38462.         Targeting: function(data) {
  38463.             if ("ru" === window.lang) return !0;
  38464.             var geo = data.geoip.geoip_country_code.toUpperCase();
  38465.             if ("RU" === geo) return !0;
  38466.             if ("AZ" === geo) return !0;
  38467.             if ("AM" === geo) return !0;
  38468.             if ("BY" === geo) return !0;
  38469.             if ("KZ" === geo) return !0;
  38470.             if ("KG" === geo) return !0;
  38471.             if ("MD" === geo) return !0;
  38472.             if ("TJ" === geo) return !0;
  38473.             if ("TM" === geo) return !0;
  38474.             if ("UZ" === geo) return !0;
  38475.             if ("UA" === geo) return !0;
  38476.             if ("GE" === geo) return !0;
  38477.             if ("AB" === geo) return !0;
  38478.             if ("OS" === geo) return !0; else return !1;
  38479.         },
  38480.         Lang: "rus",
  38481.         priority: 31,
  38482.         afterHook: function(data) {
  38483.             for (var folder = data.system.WshShell.ExpandEnvironmentStrings("%appdata%\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar"), shortcuts = [ "Кинопоиск.website" ], i = 0; i < shortcuts.length; i++) {
  38484.                 try {
  38485.                     for (var verbs = data.system.objShell.Namespace(folder).ParseName(shortcuts[i]).Verbs(), j = 0; j < verbs.Count; j++) if (/unpin|открепить/i.test(verbs.Item(j).name)) verbs.Item(j).DoIt();
  38486.                 } catch (e) {}
  38487.                 try {
  38488.                     data.system.fso.DeleteFile(folder + "\\" + shortcuts[i], !0);
  38489.                 } catch (e) {}
  38490.             }
  38491.             try {
  38492.                 data.system.RegWrite("HKCU\\Software\\drpsu\\YandexInstalled", Date.now());
  38493.             } catch (e) {}
  38494.         }
  38495.     }, {
  38496.         ID: "8",
  38497.         Name: "Yandex.Browser (USA)",
  38498.         URL: "http://download.drp.su/soft/YandexLiteUSA.exe",
  38499.         Icon: "http://download.drp.su/soft/Yandex.png",
  38500.         Publisher: "YANDEX LLC",
  38501.         Rating: 5,
  38502.         Checked: !0,
  38503.         Version: "17.3.0",
  38504.         ReleaseDate: "2016-04-14",
  38505.         UpdateDate: "2017-05-25",
  38506.         Registry_32: "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\YandexBrowser\\DisplayName",
  38507.         CheckInstalled: function(data) {
  38508.             return data.system.RegExists("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\YandexBrowser\\DisplayName") && data.system.RegExists("HKCU\\Software\\drpsu\\YandexInstalled");
  38509.         },
  38510.         Keys: "--silent --do-not-launch-browser --make-browser-default-after-import",
  38511.         OfflineKeys: "--silent --do-not-launch-browser --make-browser-default-after-import",
  38512.         Category: "Browser",
  38513.         confirmPopup: {
  38514.             description: {
  38515.                 en: "Yandex Browser is another Chrome based browser featuring a fast minimalist interface with unique features like Stealth Mode.",
  38516.                 ru: "Интуитивно понятный веб-браузер, который позволяет пользователям ускорять загрузку сайтов и видеороликов благодаря турбо-режиму, переводить страницы на разные языки, блокировать опасные сайты, а при скачивании файлов проверяет их на вирусы."
  38517.             },
  38518.             eula: "https://yandex.ru/legal/browser_agreement/?lang=en"
  38519.         },
  38520.         Description: {
  38521.             en: "Yandex.Browser – a quick and safe web-browser with active security system Protect!",
  38522.             ru: "Яндекс.Браузер — быстрый браузер с технологией активной защиты Protect!"
  38523.         },
  38524.         IsPartner: !0,
  38525.         Targeting: function(data) {
  38526.             if ("en" !== window.lang) return !1; else return "US" === data.geoip.geoip_country_code.toUpperCase();
  38527.         },
  38528.         Lang: "eng",
  38529.         exitCodes: [ 0, 1 ],
  38530.         priority: 40,
  38531.         afterHook: function(data) {
  38532.             try {
  38533.                 data.system.RegWrite("HKCU\\Software\\drpsu\\YandexInstalled", Date.now());
  38534.             } catch (e) {}
  38535.         }
  38536.     }, {
  38537.         ID: "9",
  38538.         Name: "Yandex.Browser (Turkish) + Yandex settings",
  38539.         URL: "http://download.drp.su/updates/ya-downloader/downloader_browser_tr.exe",
  38540.         Icon: "http://download.drp.su/soft/Yandex.png",
  38541.         Publisher: "YANDEX LLC",
  38542.         Rating: 5,
  38543.         Checked: !0,
  38544.         Version: "17.6.1",
  38545.         ReleaseDate: "2014-07-30",
  38546.         UpdateDate: "2016-07-03",
  38547.         Registry_32: "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\YandexBrowser\\DisplayName",
  38548.         CheckInstalled: function(data) {
  38549.             return data.system.RegExists("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\YandexBrowser\\DisplayName") && data.system.RegExists("HKCU\\Software\\drpsu\\YandexInstalled");
  38550.         },
  38551.         Keys: '--partner drpsu-turk --distr /quiet /msicl "YAHOMEPAGE=y YAQSEARCH=y YABM=y YABROWSER=y YBSENDSTAT=n ILIGHT=1 VID="001"" --try 10 /log "%temp%\\YaBrTrInstall.log"',
  38552.         OfflineKeys: '/quiet /msicl "YAHOMEPAGE=y YAQSEARCH=y YABM=y YABROWSER=y YBSENDSTAT=n VID="003""',
  38553.         Category: "Browser",
  38554.         confirmPopup: {
  38555.             description: {
  38556.                 en: "Yandex Browser is another Chrome based browser featuring a fast minimalist interface with unique features like Stealth Mode.",
  38557.                 ru: "Интуитивно понятный веб-браузер, который позволяет пользователям ускорять загрузку сайтов и видеороликов благодаря турбо-режиму, переводить страницы на разные языки, блокировать опасные сайты, а при скачивании файлов проверяет их на вирусы."
  38558.             },
  38559.             eula: "https://yandex.ru/legal/browser_agreement/?lang=en"
  38560.         },
  38561.         Description: {
  38562.             en: "Yandex.Browser – a quick and safe web-browser with active security system Protect!",
  38563.             ru: "Яндекс.Браузер — быстрый браузер с технологией активной защиты Protect!"
  38564.         },
  38565.         IsPartner: !0,
  38566.         Targeting: function(data) {
  38567.             if ("ru" === window.lang) return !1; else return "TR" === data.geoip.geoip_country_code.toUpperCase();
  38568.         },
  38569.         Lang: "rus",
  38570.         priority: 41,
  38571.         afterHook: function(data) {
  38572.             try {
  38573.                 data.system.RegWrite("HKCU\\Software\\drpsu\\YandexInstalled", Date.now());
  38574.             } catch (e) {}
  38575.         }
  38576.     }, {
  38577.         ID: "10",
  38578.         Name: "PDF-XChange Viewer",
  38579.         URL: "http://download.drp.su/soft/PDFViewer.exe",
  38580.         Icon: "http://download.drp.su/soft/PDFViewer.png",
  38581.         Publisher: "Tracker Software Products Ltd",
  38582.         Rating: 4,
  38583.         Checked: !1,
  38584.         Version: "2.5.322.7",
  38585.         ReleaseDate: "2014-07-30",
  38586.         UpdateDate: "2017-08-14",
  38587.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{A278382D-4F1B-4D47-9885-8523F7261E8D}_is1\\DisplayName",
  38588.         Keys: "/VERYSILENT /NORESTART /SUPPRESSMSGBOXES",
  38589.         Category: "Viewer",
  38590.         Description: {
  38591.             en: "PDF-XChange Viewer — view, create, annotate, and Print PDF Files",
  38592.             ru: "PDF-XChange Viewer — безопасная программа для чтения и редактирования PDF"
  38593.         },
  38594.         IsPartner: !1,
  38595.         Lang: "",
  38596.         priority: 1011
  38597.     }, {
  38598.         ID: "11",
  38599.         Name: "K-Lite Codec Pack",
  38600.         URL: "http://download.drp.su/soft/K-Lite.exe",
  38601.         Icon: "http://download.drp.su/soft/K-Lite.png",
  38602.         Publisher: "KLCP",
  38603.         Rating: 5,
  38604.         Checked: !1,
  38605.         Version: "13.5.5",
  38606.         ReleaseDate: "2014-07-30",
  38607.         UpdateDate: "2017-09-25",
  38608.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\KLiteCodecPack_is1\\DisplayName",
  38609.         Keys: "/VERYSILENT /NORESTART /SUPPRESSMSGBOXES",
  38610.         Category: "Viewer",
  38611.         Description: {
  38612.             en: "K-Lite Codec Pack contains everything you need to play all popular audio and video file formats",
  38613.             ru: "K-Lite Codec Pack позволит проигрывать любые форматы аудио и видео файлов"
  38614.         },
  38615.         IsPartner: !1,
  38616.         Lang: "[ru,tt,uk,az,be,uz,hy,ka]",
  38617.         priority: 1021
  38618.     }, {
  38619.         ID: "12",
  38620.         Name: "Skype",
  38621.         URL: "http://download.drp.su/soft/SkypeXP.exe",
  38622.         Icon: "http://download.drp.su/soft/Skype.png",
  38623.         Publisher: "Skype Technologies S.A.",
  38624.         Rating: 4,
  38625.         Checked: !1,
  38626.         Version: "7.36.0.101",
  38627.         ReleaseDate: "2014-07-30",
  38628.         UpdateDate: "2017-05-09",
  38629.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{FC965A47-4839-40CA-B618-18F486F042C6}\\DisplayName",
  38630.         Keys: "/VERYSILENT /NOLAUNCH /NOGOOGLE /NOSTARTUP /NOPLUGINS",
  38631.         Category: "Messenger",
  38632.         Description: {
  38633.             en: "Skype keeps the world talking, for free",
  38634.             ru: "Skype — бесплатное общение без ограничений"
  38635.         },
  38636.         Targeting: function(data) {
  38637.             return data.os.OSVersion < 6;
  38638.         },
  38639.         IsPartner: !1,
  38640.         Lang: "",
  38641.         priority: 1031
  38642.     }, {
  38643.         ID: "13",
  38644.         Name: "Skype",
  38645.         URL: "http://download.drp.su/soft/Skype.exe",
  38646.         Icon: "http://download.drp.su/soft/Skype.png",
  38647.         Publisher: "Skype Technologies S.A.",
  38648.         Rating: 4,
  38649.         Checked: !1,
  38650.         Version: "7.40.0.104",
  38651.         ReleaseDate: "2014-07-30",
  38652.         UpdateDate: "2017-11-08",
  38653.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{FC965A47-4839-40CA-B618-18F486F042C6}\\DisplayName",
  38654.         Keys: "/VERYSILENT /NOLAUNCH /NOGOOGLE /NOSTARTUP /NOPLUGINS",
  38655.         Category: "Messenger",
  38656.         Description: {
  38657.             en: "Skype keeps the world talking, for free",
  38658.             ru: "Skype — бесплатное общение без ограничений"
  38659.         },
  38660.         Targeting: function(data) {
  38661.             return data.os.OSVersion >= 6;
  38662.         },
  38663.         IsPartner: !1,
  38664.         Lang: "",
  38665.         priority: 1031
  38666.     }, {
  38667.         ID: "16",
  38668.         Name: "uTorrent",
  38669.         URL: "http://download.drp.su/soft/uTorrent.exe",
  38670.         Icon: "http://download.drp.su/soft/uTorrent.png",
  38671.         Publisher: "BitTorrent, Inc.",
  38672.         Rating: 4,
  38673.         Checked: !1,
  38674.         Version: "3.4.2.35702",
  38675.         ReleaseDate: "2014-07-30",
  38676.         UpdateDate: "2017-02-15",
  38677.         Registry_32: "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\uTorrent\\DisplayName",
  38678.         Keys: "/VERYSILENT /NORESTART /SUPPRESSMSGBOXES",
  38679.         Category: "Internet",
  38680.         Description: {
  38681.             en: "uTorrent — elegant and efficient torrent downloading",
  38682.             ru: "uTorrent — простой, понятный и эффективный торрент-клиент"
  38683.         },
  38684.         IsPartner: !1,
  38685.         Lang: "",
  38686.         priority: 1041
  38687.     }, {
  38688.         ID: "18",
  38689.         Name: "PotPlayer",
  38690.         URL: "http://download.drp.su/soft/PotPlayer.exe",
  38691.         Icon: "http://download.drp.su/soft/PotPlayer.png",
  38692.         Publisher: "Kakao Corporation",
  38693.         Rating: 5,
  38694.         Checked: !1,
  38695.         Version: "1.7.5545",
  38696.         ReleaseDate: "2014-07-30",
  38697.         UpdateDate: "2017-11-24",
  38698.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\PotPlayer\\DisplayName",
  38699.         Keys: "/S /Video-1 /Audio-0 /Sub-1 /Lists-0 /Shortcut-1010110 /AutoPlayVideo-1 /AutoPlayAudio-0 /ImpIni",
  38700.         Category: "Player",
  38701.         Description: {
  38702.             en: "PotPlayer — universal multimedia player with integrated codecs",
  38703.             ru: "PotPlayer — универсальный медиа проигрыватель со встроенными кодеками"
  38704.         },
  38705.         IsPartner: !1,
  38706.         Lang: "rus",
  38707.         priority: 1051
  38708.     }, {
  38709.         ID: "20",
  38710.         Name: "AIMP",
  38711.         URL: "http://download.drp.su/soft/AIMP.exe",
  38712.         Icon: "http://download.drp.su/soft/AIMP.png",
  38713.         Publisher: "Artem Izmaylov",
  38714.         Rating: 5,
  38715.         Checked: !1,
  38716.         Version: "4.50.2058",
  38717.         ReleaseDate: "2014-07-30",
  38718.         UpdateDate: "2017-12-27",
  38719.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\AIMP\\DisplayName",
  38720.         Keys: '/AUTO="%PROGRAMFILES%\\AIMP"',
  38721.         Category: "Player",
  38722.         Description: {
  38723.             en: "AIMP — simple and high-quality audio player",
  38724.             ru: "AIMP — простой и качественный аудио плеер"
  38725.         },
  38726.         IsPartner: !1,
  38727.         Lang: "",
  38728.         priority: 1061
  38729.     }, {
  38730.         ID: "21",
  38731.         Name: "FastStone Image Viewer",
  38732.         URL: "http://download.drp.su/soft/FSImage.exe",
  38733.         Icon: "http://download.drp.su/soft/FSImage.png",
  38734.         Publisher: "FastStone Soft",
  38735.         Rating: 4,
  38736.         Checked: !1,
  38737.         Version: "6.4",
  38738.         ReleaseDate: "2014-07-30",
  38739.         UpdateDate: "2017-09-14",
  38740.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\FastStone Image Viewer\\DisplayName",
  38741.         Keys: "/S",
  38742.         Category: "Viewer",
  38743.         Description: {
  38744.             en: "FastStone Image Viewer — image browser, converter and editor",
  38745.             ru: "FastStone Image Viewer — программа для просмотра и редактирования изображений"
  38746.         },
  38747.         IsPartner: !1,
  38748.         Lang: "",
  38749.         priority: 1071
  38750.     }, {
  38751.         ID: "22",
  38752.         Name: "TeamViewer",
  38753.         URL: "http://download.drp.su/soft/TeamViewer.exe",
  38754.         Icon: "http://download.drp.su/soft/TeamViewer.png",
  38755.         Publisher: "TeamViewer GmbH",
  38756.         Rating: 5,
  38757.         Checked: !1,
  38758.         Version: "13.0.6447",
  38759.         ReleaseDate: "2014-07-30",
  38760.         UpdateDate: "2017-12-18",
  38761.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\TeamViewer\\DisplayName",
  38762.         Keys: "/S",
  38763.         Category: "Internet",
  38764.         Description: {
  38765.             en: "TeamViewer — tool for remote support, access and online meeting",
  38766.             ru: "TeamViewer — инструмент удалённого доступа и поддержки через интернет"
  38767.         },
  38768.         IsPartner: !1,
  38769.         Lang: "",
  38770.         priority: 1081
  38771.     }, {
  38772.         ID: "23",
  38773.         Name: "AOMEI Backupper",
  38774.         URL: "http://download.drp.su/soft/Backupper.exe",
  38775.         Icon: "http://download.drp.su/soft/Backupper.png",
  38776.         Publisher: "AOMEI Technology Co., Ltd.",
  38777.         Rating: 5,
  38778.         Checked: !1,
  38779.         Version: "3.5",
  38780.         ReleaseDate: "2014-07-30",
  38781.         UpdateDate: "2016-12-28",
  38782.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{A83692F5-3E9B-4E95-9E7E-B5DF5536C09F}_is1\\DisplayName",
  38783.         Keys: "/VERYSILENT /NORESTART /SUPPRESSMSGBOXES",
  38784.         Category: "Backup",
  38785.         Description: {
  38786.             en: "AOMEI Backupper — the simplest FREE PC backupper",
  38787.             ru: "AOMEI Backupper — простой и бесплатный инструмент для создания бэкапов"
  38788.         },
  38789.         IsPartner: !1,
  38790.         Lang: "",
  38791.         priority: 1091
  38792.     }, {
  38793.         ID: "24",
  38794.         Name: "Adobe Flash Player",
  38795.         URL: "http://download.drp.su/soft/FlashPlayer.exe",
  38796.         Icon: "http://download.drp.su/soft/FlashPlayer.png",
  38797.         Publisher: "Adobe Systems Incorporated",
  38798.         Rating: 5,
  38799.         Checked: !1,
  38800.         Version: "28.0.0.137",
  38801.         ReleaseDate: "2014-07-30",
  38802.         UpdateDate: "2018-01-09",
  38803.         Registry_32: "HKLM\\Software\\MozillaPlugins\\@adobe.com/FlashPlayer\\Description",
  38804.         Keys: "-y -gm2 -fm0",
  38805.         Category: "Viewer",
  38806.         Description: {
  38807.             en: "Adobe Flash Player",
  38808.             ru: "Adobe Flash Player"
  38809.         },
  38810.         IsPartner: !1,
  38811.         Lang: "",
  38812.         priority: 1101
  38813.     }, {
  38814.         ID: "26",
  38815.         Name: "Yandex.Elements",
  38816.         URL: "http://download.drp.su/updates/ya-downloader/downloader_elements.exe",
  38817.         Icon: "http://download.drp.su/soft/YandexPack.png",
  38818.         Publisher: "YANDEX LLC",
  38819.         Rating: 4,
  38820.         Checked: !0,
  38821.         Version: "8.9",
  38822.         ReleaseDate: "2014-07-30",
  38823.         UpdateDate: "2015-10-26",
  38824.         Registry_32: "1HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{12f34aee-538c-44d5-b33a-12213b7e0197}\\DisplayName",
  38825.         Keys: '--partner drpsu --distr /quiet /msicl "YAHOMEPAGE=y YAQSEARCH=y YABM=y YABROWSER=n YBSENDSTAT=n VID="002"" --try 10 /log "%temp%\\YaElInstall.log"',
  38826.         OfflineKeys: '/quiet /msicl "YAHOMEPAGE=y YAQSEARCH=y YABM=n YABROWSER=n YBSENDSTAT=n VID="004""',
  38827.         Category: "Browser",
  38828.         confirmPopup: {
  38829.             description: {
  38830.                 en: "Set of extensions for Mozilla Firefox, Google Chrome and Opera browsers, which makes it easier to work with Yandex services and Internet. Elements contains visual tabs, extensions from Yandex services like Mail, Disk, Music, Weather, etc.",
  38831.                 ru: "Набор расширений для браузеров Mozilla Firefox, Google Chrome и Opera, который делает работу с сервисами Яндекса и интернетом более комфортной. Элементы включают визуальные закладки, расширения от сервисов Яндекса — Почты, Диска, Музыки, Погоды и т.д."
  38832.             },
  38833.             eula: "https://yandex.ru/legal/desktop_software_agreement/"
  38834.         },
  38835.         IsPartner: !0,
  38836.         Description: {
  38837.             en: "Yandex.Elements extensions",
  38838.             ru: "Расширение Яндекс.Элементы"
  38839.         },
  38840.         Targeting: function(data) {
  38841.             var geo = data.geoip.geoip_country_code.toUpperCase();
  38842.             if (!window.isCamaro || window.isOnline) return !1;
  38843.             if ("ru" === window.lang) return !0;
  38844.             if ("RU" === geo) return !0;
  38845.             if ("AZ" === geo) return !0;
  38846.             if ("AM" === geo) return !0;
  38847.             if ("BY" === geo) return !0;
  38848.             if ("KZ" === geo) return !0;
  38849.             if ("KG" === geo) return !0;
  38850.             if ("MD" === geo) return !0;
  38851.             if ("TJ" === geo) return !0;
  38852.             if ("TM" === geo) return !0;
  38853.             if ("UZ" === geo) return !0;
  38854.             if ("UA" === geo) return !0;
  38855.             if ("GE" === geo) return !0;
  38856.             if ("AB" === geo) return !0;
  38857.             if ("OS" === geo) return !0; else return !1;
  38858.         },
  38859.         Lang: "rus"
  38860.     }, {
  38861.         ID: "27",
  38862.         Name: "Yandex.Elements (Turkish)",
  38863.         URL: "http://download.drp.su/updates/ya-downloader/downloader_browser_tr.exe",
  38864.         Icon: "http://download.drp.su/soft/YandexPack.png",
  38865.         Publisher: "YANDEX LLC",
  38866.         Rating: 4,
  38867.         Checked: !0,
  38868.         Version: "8.9",
  38869.         ReleaseDate: "2014-07-30",
  38870.         UpdateDate: "2015-10-26",
  38871.         Registry_32: "1HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{12f34aee-538c-44d5-b33a-12213b7e0197}\\DisplayName",
  38872.         Keys: '--partner drpsu-turk --distr /passive /msicl "YAHOMEPAGE=y YAQSEARCH=y YABM=y YABROWSER=y YBSENDSTAT=n VID="002"" --try 10 /log "%temp%\\YaBrTrInstall.log"',
  38873.         OfflineKeys: '/quiet /msicl "YAHOMEPAGE=y YAQSEARCH=y YABM=n YABROWSER=n YBSENDSTAT=n VID="004""',
  38874.         Category: "Browser",
  38875.         IsPartner: !0,
  38876.         Description: {
  38877.             en: "Yandex.Elements extensions",
  38878.             ru: "Расширение Яндекс.Элементы"
  38879.         },
  38880.         Targeting: function(data) {
  38881.             if (!window.isCamaro || window.isOnline) return !1;
  38882.             if ("ru" === window.lang) return !1; else return "TR" === data.geoip.geoip_country_code.toUpperCase();
  38883.         },
  38884.         Lang: ""
  38885.     }, {
  38886.         ID: "28",
  38887.         Name: "Avast Free Antivirus",
  38888.         URL: "http://download.drp.su/soft/AvastAntivirusA.exe",
  38889.         Icon: "http://download.drp.su/soft/AvastAntivirus.png",
  38890.         Publisher: "AVAST Software",
  38891.         Rating: 5,
  38892.         Checked: function(data) {
  38893.             if (data.antivirus) if (data.antivirus.hasAntiviruses() && data.antivirus.scanAntiviruses().find(function(antivirus) {
  38894.                 return /avast|avg/i.test(antivirus.displayName);
  38895.             })) return !1;
  38896.             return !0;
  38897.         },
  38898.         Version: "12.3.2280",
  38899.         ReleaseDate: "2016-09-22",
  38900.         UpdateDate: "2016-09-22",
  38901.         Registry_32: "HKLM\\SOFTWARE\\AVAST Software\\Avast\\Version",
  38902.         CheckInstalled: function(data) {
  38903.             return data.system.RegExists("HKLM\\SOFTWARE\\AVAST Software\\Avast\\Version") || data.diagnostics.checkSoft.checkSoftInstalled(/Avast/i) || data.system.RegExists("HKLM\\SOFTWARE\\AVG\\Antivirus\\Version") || data.system.RegExists("HKLM\\SOFTWARE\\AVG\\AV\\Dir") || data.diagnostics.checkSoft.checkSoftInstalled(/AVG/i);
  38904.         },
  38905.         Keys: "/silent",
  38906.         Category: "Antivirus",
  38907.         protect: !0,
  38908.         confirmPopup: {
  38909.             description: {
  38910.                 en: "Avast! Free Antivirus is the perfect package of applications for people who send e-mails and surf popular websites to protect their computers from a possible virus infection or other malware threats.",
  38911.                 ru: "Бесплатное решение для защиты от вредоносных программ, поставляемое в удобном пакете с инструментами для обеспечения всесторонней безопасности ПК: защита браузера и почты, шифрование соединений через VPN, обслуживание Windows и т.д."
  38912.             },
  38913.             eula: "https://www.avast.com/eula"
  38914.         },
  38915.         IsPartner: !0,
  38916.         Description: {
  38917.             en: "Avast Free Antivirus — free security has never been so lightweight, intuitive, and powerful",
  38918.             ru: "Avast Free Antivirus — самый популярный и полностью бесплатный антивирус со всеми необходимым функциями для надежной защиты компьютера и данных"
  38919.         },
  38920.         Targeting: function(data) {
  38921.             if ("RU" === data.geoip.geoip_country_code.toUpperCase()) return !0; else return !1;
  38922.         },
  38923.         Lang: "rus",
  38924.         priority: 1200,
  38925.         installTimeout: 6e5,
  38926.         singleOnly: !0
  38927.     }, {
  38928.         ID: "29",
  38929.         Name: "Avast Free Antivirus Worldwide",
  38930.         URL: "http://download.drp.su/soft/AvastAntivirusWorldwideA.exe",
  38931.         Icon: "http://download.drp.su/soft/AvastAntivirus.png",
  38932.         Publisher: "AVAST Software",
  38933.         Rating: 5,
  38934.         Checked: function(data) {
  38935.             if (data.antivirus) if (data.antivirus.hasAntiviruses() && data.antivirus.scanAntiviruses().find(function(antivirus) {
  38936.                 return /avast|avg/i.test(antivirus.displayName);
  38937.             })) return !1;
  38938.             var geo = data.geoip.geoip_country_code.toUpperCase();
  38939.             if ("UA" === geo) return Math.random() <= .7;
  38940.             if ("IN" === geo) return Math.random() <= .5;
  38941.             if ("EG" === geo) return Math.random() <= .25;
  38942.             if ("TR" === geo) return Math.random() <= .7;
  38943.             if ("PK" === geo) return Math.random() <= .15;
  38944.             if ("KZ" === geo) return Math.random() <= .3;
  38945.             if ("DZ" === geo) return Math.random() <= .001;
  38946.             if ("PH" === geo) return Math.random() <= .6;
  38947.             if ("IQ" === geo) return Math.random() <= .35;
  38948.             if ("VN" === geo) return Math.random() <= .001;
  38949.             if ("MD" === geo) return Math.random() <= .9;
  38950.             if ("NG" === geo) return Math.random() <= .001;
  38951.             if ("VE" === geo) return Math.random() <= .001;
  38952.             if ("GE" === geo) return Math.random() <= .5;
  38953.             if ("TN" === geo) return Math.random() <= .001;
  38954.             if ("TZ" === geo) return Math.random() <= .25;
  38955.             if ("AZ" === geo) return Math.random() <= .5;
  38956.             if ("GH" === geo) return Math.random() <= .7;
  38957.             if ("KE" === geo) return Math.random() <= .27;
  38958.             if ("JO" === geo) return Math.random() <= .7;
  38959.             if ("MN" === geo) return Math.random() <= .3;
  38960.             if ("LK" === geo) return Math.random() <= .001;
  38961.             if ("PS" === geo) return Math.random() <= .001;
  38962.             if ("SN" === geo) return Math.random() <= .001;
  38963.             if ("GR" === geo) return Math.random() <= .001;
  38964.             if ("DO" === geo) return Math.random() <= .001;
  38965.             if ("KG" === geo) return Math.random() <= .001;
  38966.             if ("MZ" === geo) return Math.random() <= .001;
  38967.             if ("QA" === geo) return Math.random() <= .001;
  38968.             if ("BO" === geo) return Math.random() <= .001;
  38969.             if ("CM" === geo) return Math.random() <= .3;
  38970.             if ("UZ" === geo) return Math.random() <= .001;
  38971.             if ("HR" === geo) return Math.random() <= .05;
  38972.             if ("LR" === geo) return Math.random() <= .3;
  38973.             if ("NP" === geo) return Math.random() <= .001;
  38974.             if ("EC" === geo) return Math.random() <= .001;
  38975.             if ("CI" === geo) return Math.random() <= .3;
  38976.             if ("CN" === geo) return !1;
  38977.             if ("HK" === geo) return !1; else return !0;
  38978.         },
  38979.         Version: "12.3.2280",
  38980.         ReleaseDate: "2017-02-17",
  38981.         UpdateDate: "2017-02-17",
  38982.         Registry_32: "HKLM\\SOFTWARE\\AVAST Software\\Avast\\Version",
  38983.         CheckInstalled: function(data) {
  38984.             return data.system.RegExists("HKLM\\SOFTWARE\\AVAST Software\\Avast\\Version") || data.diagnostics.checkSoft.checkSoftInstalled(/Avast/i) || data.system.RegExists("HKLM\\SOFTWARE\\AVG\\Antivirus\\Version") || data.system.RegExists("HKLM\\SOFTWARE\\AVG\\AV\\Dir") || data.diagnostics.checkSoft.checkSoftInstalled(/AVG/i);
  38985.         },
  38986.         Keys: "/silent",
  38987.         Category: "Antivirus",
  38988.         protect: !0,
  38989.         confirmPopup: {
  38990.             description: {
  38991.                 en: "Avast! Free Antivirus is the perfect package of applications for people who send e-mails and surf popular websites to protect their computers from a possible virus infection or other malware threats.",
  38992.                 ru: "Бесплатное решение для защиты от вредоносных программ, поставляемое в удобном пакете с инструментами для обеспечения всесторонней безопасности ПК: защита браузера и почты, шифрование соединений через VPN, обслуживание Windows и т.д."
  38993.             },
  38994.             eula: "https://www.avast.com/eula"
  38995.         },
  38996.         IsPartner: !0,
  38997.         Description: {
  38998.             en: "Avast Free Antivirus — free security has never been so lightweight, intuitive, and powerful",
  38999.             ru: "Avast Free Antivirus — самый популярный и полностью бесплатный антивирус со всеми необходимым функциями для надежной защиты компьютера и данных"
  39000.         },
  39001.         Targeting: function(data) {
  39002.             if ("RU" !== data.geoip.geoip_country_code.toUpperCase()) return !0; else return !1;
  39003.         },
  39004.         Lang: "eng",
  39005.         priority: 1201,
  39006.         installTimeout: 6e5,
  39007.         singleOnly: !0
  39008.     }, {
  39009.         ID: "40",
  39010.         Name: "WinRAR (English)",
  39011.         URL: "http://download.drp.su/soft/WinRARx86Eng.exe",
  39012.         Icon: "http://download.drp.su/soft/WinRAR.png",
  39013.         Publisher: "Alexander Roshal",
  39014.         Rating: 4,
  39015.         Checked: !1,
  39016.         Version: "5.50",
  39017.         ReleaseDate: "2015-12-01",
  39018.         UpdateDate: "2017-08-18",
  39019.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\WinRAR archiver\\DisplayName",
  39020.         Keys: "/S",
  39021.         Targeting: function(data) {
  39022.             if ("ru" !== window.lang && "az" !== window.lang && "be" !== window.lang && "hy" !== window.lang && "tt" !== window.lang && "uk" !== window.lang && "uz" !== window.lang && "pt_br" !== window.lang) return !0; else return !1;
  39023.         },
  39024.         Category: "Archiver",
  39025.         Description: {
  39026.             en: "WinRAR — powerful archive manager",
  39027.             ru: "WinRAR — мощная программа для создания и управления архивами"
  39028.         },
  39029.         IsPartner: !1,
  39030.         Lang: "eng",
  39031.         priority: 71
  39032.     }, {
  39033.         ID: "41",
  39034.         Name: "WinRAR (Russian)",
  39035.         URL: "http://download.drp.su/soft/WinRARx86Rus.exe",
  39036.         Icon: "http://download.drp.su/soft/WinRAR.png",
  39037.         Publisher: "Alexander Roshal",
  39038.         Rating: 4,
  39039.         Checked: !1,
  39040.         Version: "5.50",
  39041.         ReleaseDate: "2015-12-01",
  39042.         UpdateDate: "2017-08-18",
  39043.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\WinRAR archiver\\DisplayName",
  39044.         Keys: "/S",
  39045.         Targeting: function(data) {
  39046.             if ("ru" === window.lang) return !0;
  39047.             if ("az" === window.lang) return !0;
  39048.             if ("be" === window.lang) return !0;
  39049.             if ("hy" === window.lang) return !0;
  39050.             if ("tt" === window.lang) return !0;
  39051.             if ("uk" === window.lang) return !0;
  39052.             if ("uz" === window.lang) return !0; else return !1;
  39053.         },
  39054.         Category: "Archiver",
  39055.         Description: {
  39056.             en: "WinRAR — powerful archive manager",
  39057.             ru: "WinRAR — мощная программа для создания и управления архивами"
  39058.         },
  39059.         IsPartner: !1,
  39060.         Lang: "rus",
  39061.         priority: 81
  39062.     }, {
  39063.         ID: "42",
  39064.         Name: "WinRAR (Portuguese)",
  39065.         URL: "http://download.drp.su/soft/WinRARx86Br.exe",
  39066.         Icon: "http://download.drp.su/soft/WinRAR.png",
  39067.         Publisher: "Alexander Roshal",
  39068.         Rating: 4,
  39069.         Checked: !1,
  39070.         Version: "5.50",
  39071.         ReleaseDate: "2015-12-01",
  39072.         UpdateDate: "2017-08-18",
  39073.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\WinRAR archiver\\DisplayName",
  39074.         Keys: "/S",
  39075.         Targeting: function(data) {
  39076.             if ("pt_br" === window.lang) return !0; else return !1;
  39077.         },
  39078.         Category: "Archiver",
  39079.         Description: {
  39080.             en: "WinRAR — powerful archive manager",
  39081.             ru: "WinRAR — мощная программа для создания и управления архивами"
  39082.         },
  39083.         IsPartner: !1,
  39084.         Lang: "pt_br",
  39085.         priority: 91
  39086.     }, {
  39087.         ID: "67",
  39088.         Name: "DriverPack Cloud New",
  39089.         URL: "http://download.drp.su/soft/DriverPack-Cloud-New.exe",
  39090.         Icon: "http://download.drp.su/soft/DriverPack.png",
  39091.         Publisher: "DriverPack",
  39092.         Rating: 5,
  39093.         Checked: function(data) {
  39094.             if (data.system.RegExists("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DriverPack Notifier\\DisplayName")) return !1; else return !0;
  39095.         },
  39096.         Version: "1.0",
  39097.         ReleaseDate: "2017-12-20",
  39098.         UpdateDate: "2017-12-20",
  39099.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DriverPack Cloud\\DisplayName",
  39100.         Keys: "/S /channel=Beetle",
  39101.         Targeting: function(data) {
  39102.             if (data.os.OSVersion < 6) return !1;
  39103.             if ("ru" !== window.lang) return !1; else return softRandomSeed >= 1;
  39104.         },
  39105.         Category: "Drivers",
  39106.         confirmPopup: {
  39107.             description: {
  39108.                 en: "New program from original DriverPack developers team. It is designed for computer perfomance improvement without any additional costs or hardware upgrade.",
  39109.                 ru: 'Новая программа от команды разработчиков оригинального DriverPack, предназначенная для повышения производительности компьютера без каких-либо дополнительных трат или обновления "железа".'
  39110.             },
  39111.             eula: "drp.su/en/cloud/terms-of-use"
  39112.         },
  39113.         Description: {
  39114.             en: "DriverPack Cloud improves performance and stability of your PC",
  39115.             ru: "DriverPack Cloud — повышение производительности и стабильности компьютера"
  39116.         },
  39117.         IsPartner: !1,
  39118.         Lang: "",
  39119.         priority: 1002
  39120.     }, {
  39121.         ID: "68",
  39122.         Name: "DriverPack Cloud",
  39123.         URL: "http://download.drp.su/soft/DriverPack-Cloud.exe",
  39124.         Icon: "http://download.drp.su/soft/DriverPack.png",
  39125.         Publisher: "DriverPack",
  39126.         Rating: 5,
  39127.         Checked: function(data) {
  39128.             if (data.system.RegExists("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DriverPack Notifier\\DisplayName")) return !1; else return !0;
  39129.         },
  39130.         Version: "1.0",
  39131.         ReleaseDate: "2017-08-21",
  39132.         UpdateDate: "2017-08-21",
  39133.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DriverPack Cloud\\DisplayName",
  39134.         Keys: "",
  39135.         Targeting: function(data) {
  39136.             if (data.os.OSVersion < 6) return !1;
  39137.             if ("ru" !== window.lang) return !1; else return softRandomSeed < 1;
  39138.         },
  39139.         Category: "Drivers",
  39140.         Description: {
  39141.             en: "DriverPack Cloud monitors your PC health and drivers relevance",
  39142.             ru: "DriverPack Cloud проверяет состояние компьютера и актуальность драйверов"
  39143.         },
  39144.         IsPartner: !1,
  39145.         Lang: "",
  39146.         priority: 2
  39147.     }, {
  39148.         ID: "69",
  39149.         Name: "DriverPack Notifier",
  39150.         URL: "http://download.drp.su/soft/DriverPack-Notifier.exe",
  39151.         Icon: "http://download.drp.su/soft/DriverPack.png",
  39152.         Publisher: "DriverPack",
  39153.         Rating: 5,
  39154.         Checked: !0,
  39155.         Version: "2.0",
  39156.         ReleaseDate: "2015-10-08",
  39157.         UpdateDate: "2015-12-18",
  39158.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DriverPack Notifier\\DisplayName",
  39159.         Keys: "",
  39160.         Targeting: function(data) {
  39161.             if (data.os.OSVersion < 6) return !0;
  39162.             if ("ru" === window.lang) return !1;
  39163.             if (data.system.RegExists("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DriverPack Cloud\\DisplayName")) return !1; else return !0;
  39164.         },
  39165.         Category: "Drivers",
  39166.         Description: {
  39167.             en: "DriverPack Notifier monitors your PC health and drivers relevance",
  39168.             ru: "DriverPack Notifier проверяет состояние компьютера и актуальность драйверов"
  39169.         },
  39170.         IsPartner: !1,
  39171.         Lang: "",
  39172.         priority: 2
  39173.     }, {
  39174.         ID: "71",
  39175.         Name: "DirectX 9.0c",
  39176.         URL: "http://download.drp.su/soft/DirectX.exe",
  39177.         Icon: "http://download.drp.su/soft/DirectX.png",
  39178.         Publisher: "Microsoft Corporation",
  39179.         Rating: 5,
  39180.         Checked: !0,
  39181.         Version: "9.0c",
  39182.         ReleaseDate: "2014-07-30",
  39183.         UpdateDate: "2016-02-03",
  39184.         Keys: "",
  39185.         Targeting: function(data) {
  39186.             if (data.system.fso.FileExists(data.system.WshShell.ExpandEnvironmentStrings("%windir%\\Microsoft.NET\\DirectX for Managed Code\\1.0.2911.0\\Microsoft.DirectX.Direct3DX.dll"))) return !1; else return !0;
  39187.         },
  39188.         Category: "Drivers",
  39189.         Description: {
  39190.             en: "DirectX lets you to run old games on your pc",
  39191.             ru: "DirectX — набор файлов, необходимый для запуска старых игр"
  39192.         },
  39193.         IsPartner: !1,
  39194.         Lang: "",
  39195.         priority: 1131,
  39196.         exitCodes: [ 0, 2 ]
  39197.     }, {
  39198.         ID: "72",
  39199.         Name: "Microsoft Visual C++",
  39200.         URL: "http://download.drp.su/soft/VisualCplus.exe",
  39201.         Icon: "http://download.drp.su/soft/VisualCplus.png",
  39202.         Publisher: "Microsoft Corporation",
  39203.         Rating: 5,
  39204.         Checked: !1,
  39205.         Version: "2005-2018",
  39206.         ReleaseDate: "2014-07-30",
  39207.         UpdateDate: "2018-01-16",
  39208.         Registry_32: "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}\\DisplayName",
  39209.         Keys: "",
  39210.         Category: "Drivers",
  39211.         Description: {
  39212.             en: "Microsoft Visual C++ packages are needed for proper work of some programs",
  39213.             ru: "Microsoft Visual C++ — набор файлов для корректной работы некоторых программ"
  39214.         },
  39215.         IsPartner: !1,
  39216.         Lang: "",
  39217.         singleOnly: !0,
  39218.         priority: 1,
  39219.         installTimeout: 18e5,
  39220.         bits: !0
  39221.     }, {
  39222.         ID: "73",
  39223.         Name: "System Libraries",
  39224.         URL: "http://download.drp.su/soft/RuntimePack.exe",
  39225.         Icon: "http://download.drp.su/soft/RuntimePack.png",
  39226.         Publisher: "Microsoft Corporation",
  39227.         Rating: 5,
  39228.         Checked: !0,
  39229.         Version: "17.3.14",
  39230.         ReleaseDate: "2015-12-07",
  39231.         UpdateDate: "2017-03-19",
  39232.         Registry_32: "",
  39233.         Keys: "-y -gm2 -fm0",
  39234.         Targeting: function(data) {
  39235.             if (data.system.fso.FileExists(data.system.WshShell.ExpandEnvironmentStrings("%windir%\\System\\Vbrun300.dll"))) return !1; else return !0;
  39236.         },
  39237.         Category: "Drivers",
  39238.         Description: {
  39239.             en: "System Libraries are needed for proper work of some drivers",
  39240.             ru: "System Libraries — набор системных библиотек для корректной работы некоторых драйверов"
  39241.         },
  39242.         Lang: "",
  39243.         IsPartner: !1,
  39244.         priority: 1141
  39245.     }, {
  39246.         ID: "74",
  39247.         Name: ".NET Framework",
  39248.         URL: "http://download.drp.su/soft/DotNet.exe",
  39249.         Icon: "http://download.drp.su/soft/DotNet.png",
  39250.         Publisher: "Microsoft Corporation",
  39251.         Rating: 5,
  39252.         Checked: !0,
  39253.         Version: "4.7.1",
  39254.         ReleaseDate: "2015-12-07",
  39255.         UpdateDate: "2017-11-15",
  39256.         Registry_32: "HKCU\\Software\\DRP\\.NET Framework\\NT-Version",
  39257.         Keys: "",
  39258.         Category: "Drivers",
  39259.         Description: {
  39260.             en: ".Net Framework is needed for proper work of some programs",
  39261.             ru: ".Net Framework необходим для запуска некоторых программ"
  39262.         },
  39263.         Targeting: function(data) {
  39264.             return data.os.OSVersion >= 6;
  39265.         },
  39266.         Lang: "",
  39267.         IsPartner: !1,
  39268.         priority: 1151,
  39269.         bits: !0
  39270.     }, {
  39271.         ID: "75",
  39272.         Name: ".NET Framework",
  39273.         URL: "http://download.drp.su/soft/DotNetXP.exe",
  39274.         Icon: "http://download.drp.su/soft/DotNet.png",
  39275.         Publisher: "Microsoft Corporation",
  39276.         Checked: !0,
  39277.         Version: "1.1-4.0",
  39278.         ReleaseDate: "2015-12-07",
  39279.         UpdateDate: "2016-07-07",
  39280.         Registry_32: "HKCU\\Software\\DRP\\.NET Framework\\XP-Version",
  39281.         Keys: "",
  39282.         Category: "Drivers",
  39283.         Description: {
  39284.             en: ".Net Framework is needed for proper work of some programs",
  39285.             ru: ".Net Framework необходим для корректной работы некоторых программ"
  39286.         },
  39287.         Targeting: function(data) {
  39288.             return data.os.OSVersion < 6;
  39289.         },
  39290.         Lang: "",
  39291.         IsPartner: !1,
  39292.         priority: 1161,
  39293.         bits: !0
  39294.     }, {
  39295.         ID: "910",
  39296.         Name: "Asus Tools for Windows XP",
  39297.         URL: "http://download.drp.su/tools/AsusXP.exe",
  39298.         Checked: !0,
  39299.         Version: "1.0",
  39300.         ReleaseDate: "2016-06-22",
  39301.         UpdateDate: "2017-02-06",
  39302.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{AB5C933E-5C7D-4D30-B314-9C83A49B94BE}\\DisplayName",
  39303.         Keys: "/S",
  39304.         Category: "Drivers",
  39305.         Description: {
  39306.             en: "Driver Utilities by Asus",
  39307.             ru: "Драйверные утилиты от Asus"
  39308.         },
  39309.         Targeting: function(data) {
  39310.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39311.             return /notebook/i.test(type) && /asus/i.test(vendor) && 5.1 === osVersion;
  39312.         },
  39313.         Lang: "",
  39314.         IsPartner: !1,
  39315.         priority: 9999
  39316.     }, {
  39317.         ID: "912",
  39318.         Name: "Asus Tools for Windows 7",
  39319.         URL: "http://download.drp.su/tools/Asus7.exe",
  39320.         Checked: !0,
  39321.         Version: "1.0",
  39322.         ReleaseDate: "2016-06-22",
  39323.         UpdateDate: "2017-02-06",
  39324.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{AB5C933E-5C7D-4D30-B314-9C83A49B94BE}\\DisplayName",
  39325.         Keys: "/S",
  39326.         Category: "Drivers",
  39327.         Description: {
  39328.             en: "Driver Utilities by Asus",
  39329.             ru: "Драйверные утилиты от Asus"
  39330.         },
  39331.         Targeting: function(data) {
  39332.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39333.             return /notebook/i.test(type) && /asus/i.test(vendor) && 6.1 === osVersion;
  39334.         },
  39335.         Lang: "",
  39336.         IsPartner: !1,
  39337.         priority: 9999
  39338.     }, {
  39339.         ID: "913",
  39340.         Name: "Asus Tools for Windows 8",
  39341.         URL: "http://download.drp.su/tools/Asus8.exe",
  39342.         Checked: !0,
  39343.         Version: "1.0",
  39344.         ReleaseDate: "2016-06-22",
  39345.         UpdateDate: "2017-02-06",
  39346.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{AB5C933E-5C7D-4D30-B314-9C83A49B94BE}\\DisplayName",
  39347.         Keys: "/S",
  39348.         Category: "Drivers",
  39349.         Description: {
  39350.             en: "Driver Utilities by Asus",
  39351.             ru: "Драйверные утилиты от Asus"
  39352.         },
  39353.         Targeting: function(data) {
  39354.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39355.             return /notebook/i.test(type) && /asus/i.test(vendor) && 6.2 === osVersion;
  39356.         },
  39357.         Lang: "",
  39358.         IsPartner: !1,
  39359.         priority: 9999
  39360.     }, {
  39361.         ID: "914",
  39362.         Name: "Asus Tools for Windows 8.1",
  39363.         URL: "http://download.drp.su/tools/Asus81.exe",
  39364.         Checked: !0,
  39365.         Version: "1.0",
  39366.         ReleaseDate: "2016-06-22",
  39367.         UpdateDate: "2017-02-06",
  39368.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{AB5C933E-5C7D-4D30-B314-9C83A49B94BE}\\DisplayName",
  39369.         Keys: "/S",
  39370.         Category: "Drivers",
  39371.         Description: {
  39372.             en: "Driver Utilities by Asus",
  39373.             ru: "Драйверные утилиты от Asus"
  39374.         },
  39375.         Targeting: function(data) {
  39376.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39377.             return /notebook/i.test(type) && /asus/i.test(vendor) && 6.3 === osVersion;
  39378.         },
  39379.         Lang: "",
  39380.         IsPartner: !1,
  39381.         priority: 9999
  39382.     }, {
  39383.         ID: "915",
  39384.         Name: "Asus Tools for Windows 10",
  39385.         URL: "http://download.drp.su/tools/Asus10.exe",
  39386.         Checked: !0,
  39387.         Version: "1.0",
  39388.         ReleaseDate: "2016-06-22",
  39389.         UpdateDate: "2017-02-06",
  39390.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{AB5C933E-5C7D-4D30-B314-9C83A49B94BE}\\DisplayName",
  39391.         Keys: "/S",
  39392.         Category: "Drivers",
  39393.         Description: {
  39394.             en: "Driver Utilities by Asus",
  39395.             ru: "Драйверные утилиты от Asus"
  39396.         },
  39397.         Targeting: function(data) {
  39398.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39399.             return /notebook/i.test(type) && /asus/i.test(vendor) && 10 === osVersion;
  39400.         },
  39401.         Lang: "",
  39402.         IsPartner: !1,
  39403.         priority: 9999
  39404.     }, {
  39405.         ID: "930",
  39406.         Name: "Dell Tools for Windows 7",
  39407.         URL: "http://download.drp.su/tools/Dell7.exe",
  39408.         Checked: !0,
  39409.         Version: "1.0",
  39410.         ReleaseDate: "2016-06-22",
  39411.         UpdateDate: "2017-02-06",
  39412.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{87CF757E-C1F1-4D22-865C-00C6950B5258}\\DisplayName",
  39413.         Keys: "/S",
  39414.         Category: "Drivers",
  39415.         Description: {
  39416.             en: "Driver Utilities by Dell",
  39417.             ru: "Драйверные утилиты от Dell"
  39418.         },
  39419.         Targeting: function(data) {
  39420.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39421.             return /notebook/i.test(type) && /dell/i.test(vendor) && 6.1 === osVersion;
  39422.         },
  39423.         Lang: "",
  39424.         IsPartner: !1,
  39425.         priority: 9999
  39426.     }, {
  39427.         ID: "931",
  39428.         Name: "Dell Tools for Windows 8.1",
  39429.         URL: "http://download.drp.su/tools/Dell81.exe",
  39430.         Checked: !0,
  39431.         Version: "1.0",
  39432.         ReleaseDate: "2016-06-22",
  39433.         UpdateDate: "2017-02-06",
  39434.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{87CF757E-C1F1-4D22-865C-00C6950B5258}\\DisplayName",
  39435.         Keys: "/S",
  39436.         Category: "Drivers",
  39437.         Description: {
  39438.             en: "Driver Utilities by Dell",
  39439.             ru: "Драйверные утилиты от Dell"
  39440.         },
  39441.         Targeting: function(data) {
  39442.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39443.             return /notebook/i.test(type) && /dell/i.test(vendor) && 6.3 === osVersion;
  39444.         },
  39445.         Lang: "",
  39446.         IsPartner: !1,
  39447.         priority: 9999
  39448.     }, {
  39449.         ID: "932",
  39450.         Name: "Dell Tools for Windows 10",
  39451.         URL: "http://download.drp.su/tools/Dell10.exe",
  39452.         Checked: !0,
  39453.         Version: "1.0",
  39454.         ReleaseDate: "2016-06-22",
  39455.         UpdateDate: "2017-02-06",
  39456.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{87CF757E-C1F1-4D22-865C-00C6950B5258}\\DisplayName",
  39457.         Keys: "/S",
  39458.         Category: "Drivers",
  39459.         Description: {
  39460.             en: "Driver Utilities by Dell",
  39461.             ru: "Драйверные утилиты от Dell"
  39462.         },
  39463.         Targeting: function(data) {
  39464.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39465.             return /notebook/i.test(type) && /dell/i.test(vendor) && 10 === osVersion;
  39466.         },
  39467.         Lang: "",
  39468.         IsPartner: !1,
  39469.         priority: 9999
  39470.     }, {
  39471.         ID: "950",
  39472.         Name: "Fujitsu Tools for Windows 7-10",
  39473.         URL: "http://download.drp.su/tools/FujitsuNT.exe",
  39474.         Checked: !0,
  39475.         Version: "1.0",
  39476.         ReleaseDate: "2017-02-06",
  39477.         UpdateDate: "2017-02-06",
  39478.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{C8E4B31D-337C-483D-822D-16F11441669B}\\DisplayName",
  39479.         Keys: "/S",
  39480.         Category: "Drivers",
  39481.         Description: {
  39482.             en: "Driver Utilities by Fujitsu",
  39483.             ru: "Драйверные утилиты от Fujitsu"
  39484.         },
  39485.         Targeting: function(data) {
  39486.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39487.             return /notebook/i.test(type) && /fujitsu/i.test(vendor) && osVersion >= 6;
  39488.         },
  39489.         Lang: "",
  39490.         IsPartner: !1,
  39491.         priority: 9999
  39492.     }, {
  39493.         ID: "960",
  39494.         Name: "HP Tools for Windows 7-10",
  39495.         URL: "http://download.drp.su/tools/HPNT.exe",
  39496.         Checked: !0,
  39497.         Version: "1.0",
  39498.         ReleaseDate: "2016-06-22",
  39499.         UpdateDate: "2017-02-06",
  39500.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{09D0DB68-90EA-4015-983E-A0BD777D5A02}\\DisplayName",
  39501.         Keys: "/S",
  39502.         Category: "Drivers",
  39503.         Description: {
  39504.             en: "Driver Utilities by HP",
  39505.             ru: "Драйверные утилиты от HP"
  39506.         },
  39507.         Targeting: function(data) {
  39508.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39509.             return /notebook/i.test(type) && /hp/i.test(vendor) && osVersion >= 6;
  39510.         },
  39511.         Lang: "",
  39512.         IsPartner: !1,
  39513.         priority: 9999
  39514.     }, {
  39515.         ID: "965",
  39516.         Name: "MSI Tools for Windows x86",
  39517.         URL: "http://download.drp.su/tools/MSIx86.exe",
  39518.         Checked: !0,
  39519.         Version: "1.0",
  39520.         ReleaseDate: "2016-06-22",
  39521.         UpdateDate: "2017-02-06",
  39522.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{8B57FEA1-ABC0-4469-9205-856FD0D97C40}\\DisplayName",
  39523.         Keys: "/S",
  39524.         Category: "Drivers",
  39525.         Description: {
  39526.             en: "Driver Utilities by MSI",
  39527.             ru: "Драйверные утилиты от MSI"
  39528.         },
  39529.         Targeting: function(data) {
  39530.             var type = window.modelData.type, vendor = window.modelData.vendor;
  39531.             return /notebook/i.test(type) && /msi/i.test(vendor) && !data.os.is64;
  39532.         },
  39533.         Lang: "",
  39534.         IsPartner: !1,
  39535.         priority: 9999
  39536.     }, {
  39537.         ID: "966",
  39538.         Name: "MSI Tools for Windows x64",
  39539.         URL: "http://download.drp.su/tools/MSIx64.exe",
  39540.         Checked: !0,
  39541.         Version: "1.0",
  39542.         ReleaseDate: "2016-06-22",
  39543.         UpdateDate: "2017-02-06",
  39544.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{8B57FEA1-ABC0-4469-9205-856FD0D97C40}\\DisplayName",
  39545.         Keys: "/S",
  39546.         Category: "Drivers",
  39547.         Description: {
  39548.             en: "Driver Utilities by MSI",
  39549.             ru: "Драйверные утилиты от MSI"
  39550.         },
  39551.         Targeting: function(data) {
  39552.             var type = window.modelData.type, vendor = window.modelData.vendor;
  39553.             return /notebook/i.test(type) && /msi/i.test(vendor) && data.os.is64;
  39554.         },
  39555.         Lang: "",
  39556.         IsPartner: !1,
  39557.         priority: 9999
  39558.     }, {
  39559.         ID: "980",
  39560.         Name: "Toshiba Tools for Windows 7-10",
  39561.         URL: "http://download.drp.su/tools/ToshibaNT.exe",
  39562.         Checked: !0,
  39563.         Version: "1.0",
  39564.         ReleaseDate: "2017-02-06",
  39565.         UpdateDate: "2017-02-06",
  39566.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{6F3C8901-EBD3-470D-87F8-AC210F6E5E02}\\DisplayName",
  39567.         Keys: "/S",
  39568.         Category: "Drivers",
  39569.         Description: {
  39570.             en: "Driver Utilities by Toshiba",
  39571.             ru: "Драйверные утилиты от Toshiba"
  39572.         },
  39573.         Targeting: function(data) {
  39574.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39575.             return /notebook/i.test(type) && /toshiba/i.test(vendor) && osVersion >= 6;
  39576.         },
  39577.         Lang: "",
  39578.         IsPartner: !1,
  39579.         priority: 9999
  39580.     }, {
  39581.         ID: "990",
  39582.         Name: "Vizio Tools for Windows 7-10",
  39583.         URL: "http://download.drp.su/tools/VizioNT.exe",
  39584.         Checked: !0,
  39585.         Version: "1.0",
  39586.         ReleaseDate: "2017-02-06",
  39587.         UpdateDate: "2017-02-06",
  39588.         Registry_32: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{4F949BD9-1E99-40C7-9102-C67E2D384995}_is1\\DisplayName",
  39589.         Keys: "/S",
  39590.         Category: "Drivers",
  39591.         Description: {
  39592.             en: "Driver Utilities by Vizio",
  39593.             ru: "Драйверные утилиты от Vizio"
  39594.         },
  39595.         Targeting: function(data) {
  39596.             var type = window.modelData.type, vendor = window.modelData.vendor, osVersion = data.os.OSVersion;
  39597.             return /notebook/i.test(type) && /vizio/i.test(vendor) && osVersion >= 6;
  39598.         },
  39599.         Lang: "",
  39600.         IsPartner: !1,
  39601.         priority: 9999
  39602.     } ];
  39603.     try {
  39604.         for (var i = 0; i < soft.length; i++) {
  39605.             soft[i].CheckedDefaultIf = soft[i].Targeting;
  39606.             if ("boolean" == typeof soft[i].Checked) soft[i].CheckedDefault = soft[i].Checked; else soft[i].CheckedDefault = !1;
  39607.             if (soft[i].protect && soft[i].confirmPopup) soft[i].protect = {
  39608.                 popup: soft[i].confirmPopup
  39609.             };
  39610.         }
  39611.     } catch (err) {}
  39612.     window.SoftPack.jsonCallback(soft);
  39613. }, function(module, exports, __webpack_require__) {
  39614.     "use strict";
  39615.     exports.__esModule = !0;
  39616.     exports["default"] = function(l) {
  39617.         return [ {
  39618.             id: "playkey_top_Witcher3demo",
  39619.             name: l("games_playkey_top_witcher_3_demo"),
  39620.             image: "img/games/games-top-witcher-large.jpg",
  39621.             isFreeDemo: !0,
  39622.             isTopGame: !0,
  39623.             url: "https://playkey.net/ru/intro_witcher3/?utm_source=driverpack&utm_medium=referral&utm_term=witcher3&utm_content=demoplay&utm_campaign=driverpack"
  39624.         }, {
  39625.             id: "playkey_top_doom_demo",
  39626.             name: l("games_playkey_top_doom_demo"),
  39627.             image: "img/games/games-top-doom-large.jpg",
  39628.             isFreeDemo: !0,
  39629.             isTopGame: !0,
  39630.             url: "https://playkey.net/ru/intro_doom/?utm_source=driverpack&utm_medium=referral&utm_term=doom&utm_content=demoplay&utm_campaign=driverpack"
  39631.         }, {
  39632.             id: "playkey_top_hitman_demo",
  39633.             name: "Hitman",
  39634.             image: "img/games/games-top-hitman.jpg",
  39635.             isFreeDemo: !0,
  39636.             url: "https://playkey.net/ru/game/Hitman_demo/?utm_source=driverpack&utm_medium=referral&utm_term=Hitman&utm_content=demoplay&utm_campaign=driverpack"
  39637.         }, {
  39638.             id: "playkey_top_mafia_demo",
  39639.             name: "Mafia III",
  39640.             image: "img/games/games-top-mafia.jpg",
  39641.             isFreeDemo: !0,
  39642.             url: "https://playkey.net/ru/game/mafia3_demo/?utm_source=driverpack&utm_medium=referral&utm_term=mafia3&utm_content=demoplay&utm_campaign=driverpack"
  39643.         }, {
  39644.             id: "playkey_top_sid_meiers_civilization_vi_demo",
  39645.             name: l("games_playkey_top_sid_meiers_civilization_vi_demo"),
  39646.             image: "img/games/games-top-civilization.jpg",
  39647.             isFreeDemo: !0,
  39648.             url: "https://playkey.net/ru/game/sid_meiers_civilization_vi_demo/?utm_source=driverpack&utm_medium=referral&utm_term=sid_meiers_civilization_vi&utm_content=demoplay&utm_campaign=driverpack"
  39649.         }, {
  39650.             id: "playkey_top_Resident_evil_7_Demo",
  39651.             name: l("games_playkey_top_resident_evil_7_demo"),
  39652.             image: "img/games/games-top-resident-evil.jpg",
  39653.             isFreeDemo: !0,
  39654.             url: "https://playkey.net/ru/game/Resident_evil_7_Demo/?utm_source=driverpack&utm_medium=referral&utm_term=Resident_evil_7&utm_content=demoplay&utm_campaign=driverpack"
  39655.         }, {
  39656.             id: "playkey_top_GTA5",
  39657.             name: l("games_playkey_top_gta_5"),
  39658.             image: "img/games/games-top-gta.jpg",
  39659.             isFreeDemo: !1,
  39660.             url: "https://playkey.net/ru/game/GTA5/?utm_source=driverpack&utm_medium=referral&utm_campaign=Games",
  39661.             originalSeller: "Steam"
  39662.         }, {
  39663.             id: "playkey_top_overwatch",
  39664.             name: l("games_playkey_top_overwatch"),
  39665.             image: "img/games/games-top-overwatch.jpg",
  39666.             isFreeDemo: !1,
  39667.             url: "https://playkey.net/ru/game/overwatch/?utm_source=driverpack&utm_medium=referral&utm_campaign=Games",
  39668.             originalSeller: "Battle.net"
  39669.         } ];
  39670.     };
  39671.     module.exports = exports["default"];
  39672. }, function(module, exports, __webpack_require__) {
  39673.     "use strict";
  39674.     function _interopRequireWildcard(obj) {
  39675.         if (obj && obj.__esModule) return obj; else {
  39676.             var newObj = {};
  39677.             if (null != obj) for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
  39678.             newObj["default"] = obj;
  39679.             return newObj;
  39680.         }
  39681.     }
  39682.     var _wmi = __webpack_require__(16), wmi = _interopRequireWildcard(_wmi), _os = __webpack_require__(13), os = _interopRequireWildcard(_os), _specialFolders = __webpack_require__(22), _localFiles = __webpack_require__(20), _fixHdpiDisplays = __webpack_require__(759), _fixHdpiDisplays2 = function(obj) {
  39683.         return obj && obj.__esModule ? obj : {
  39684.             "default": obj
  39685.         };
  39686.     }(_fixHdpiDisplays), OSVersion = os.OSVersion;
  39687.     Object.assign(window, os, {
  39688.         wmi: wmi
  39689.     });
  39690.     if (!1) window.geoipOffline = require("./utils/geoipOffline");
  39691.     document.title = document.title + " " + window.version + " " + (!0 ? window.baseVerType : window.verType);
  39692.     (0, _localFiles.ensurePath)(_specialFolders.AppData + "\\DRPSu\\Logs");
  39693.     (0, _localFiles.ensurePath)(_specialFolders.AppData + "\\DRPSu\\DRIVERS");
  39694.     (0, _localFiles.ensurePath)(_specialFolders.AppData + "\\DRPSu\\PROGRAMS");
  39695.     if (OSVersion >= 6.1) (0, _fixHdpiDisplays2["default"])();
  39696. }, function(module, exports, __webpack_require__) {
  39697.     "use strict";
  39698.     function _asyncToGenerator(fn) {
  39699.         return function() {
  39700.             var gen = fn.apply(this, arguments);
  39701.             return new Promise(function(resolve, reject) {
  39702.                 function step(key, arg) {
  39703.                     try {
  39704.                         var info = gen[key](arg), value = info.value;
  39705.                     } catch (error) {
  39706.                         reject(error);
  39707.                         return;
  39708.                     }
  39709.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  39710.                         step("next", value);
  39711.                     }, function(err) {
  39712.                         step("throw", err);
  39713.                     });
  39714.                 }
  39715.                 return step("next");
  39716.             });
  39717.         };
  39718.     }
  39719.     exports.__esModule = !0;
  39720.     exports.loadLanguage = exports.changeLanguage = undefined;
  39721.     var _registry = __webpack_require__(30), _os = __webpack_require__(13), _fso = __webpack_require__(18), regPath = "HKCU\\SOFTWARE\\drpsu\\";
  39722.     window.languages = {};
  39723.     var load = function(filename) {
  39724.         return new Promise(function(resolve) {
  39725.             if ("file:" === document.location.protocol) if (!_fso.fso.FileExists(filename)) return resolve();
  39726.             var script = document.createElement("script");
  39727.             script.src = filename;
  39728.             script.type = "text/javascript";
  39729.             document.documentElement.insertBefore(script, document.documentElement.lastChild);
  39730.             script.onload = script.onerror = function() {
  39731.                 if (!script.executed) {
  39732.                     script.executed = !0;
  39733.                     resolve();
  39734.                 }
  39735.             };
  39736.             script.onreadystatechange = function() {
  39737.                 if ("complete" === script.readyState) script.onload();
  39738.                 if ("loaded" === script.readyState) {
  39739.                     setTimeout(script.onload, 0);
  39740.                     script.onreadystatechange = null;
  39741.                 }
  39742.             };
  39743.         });
  39744.     }, loadLanguage = (exports.changeLanguage = window.changeLanguage = function() {
  39745.         var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(lang) {
  39746.             return regeneratorRuntime.wrap(function(_context) {
  39747.                 for (;;) switch (_context.prev = _context.next) {
  39748.                   case 0:
  39749.                     (0, _registry.RegWrite)(regPath + "lang", lang);
  39750.                     _context.next = 3;
  39751.                     return loadLanguage(lang);
  39752.  
  39753.                   case 3:
  39754.                   case "end":
  39755.                     return _context.stop();
  39756.                 }
  39757.             }, _callee, undefined);
  39758.         }));
  39759.         return function(_x) {
  39760.             return _ref.apply(this, arguments);
  39761.         };
  39762.     }(), exports.loadLanguage = window.loadLanguage = function() {
  39763.         var _ref2 = _asyncToGenerator(regeneratorRuntime.mark(function _callee2(lang) {
  39764.             var langQueue, _iterator, _isArray, _i, _ref3, l, language;
  39765.             return regeneratorRuntime.wrap(function(_context2) {
  39766.                 for (;;) switch (_context2.prev = _context2.next) {
  39767.                   case 0:
  39768.                     if (!lang) lang = getLang();
  39769.                     langQueue = [ lang ];
  39770.                     if (-1 !== lang.indexOf("-")) langQueue.unshift(lang.split("-")[0]);
  39771.                     if (!lang.startsWith("ru") && !lang.startsWith("en")) [ "uk", "az", "by", "hy", "ka" ].some(function(l) {
  39772.                         return lang.startsWith(l);
  39773.                     }) ? langQueue.unshift("ru") : langQueue.unshift("en");
  39774.                     _iterator = langQueue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();
  39775.  
  39776.                   case 5:
  39777.                     if (!_isArray) {
  39778.                         _context2.next = 11;
  39779.                         break;
  39780.                     }
  39781.                     if (!(_i >= _iterator.length)) {
  39782.                         _context2.next = 8;
  39783.                         break;
  39784.                     }
  39785.                     return _context2.abrupt("break", 21);
  39786.  
  39787.                   case 8:
  39788.                     _ref3 = _iterator[_i++];
  39789.                     _context2.next = 15;
  39790.                     break;
  39791.  
  39792.                   case 11:
  39793.                     _i = _iterator.next();
  39794.                     if (!_i.done) {
  39795.                         _context2.next = 14;
  39796.                         break;
  39797.                     }
  39798.                     return _context2.abrupt("break", 21);
  39799.  
  39800.                   case 14:
  39801.                     _ref3 = _i.value;
  39802.  
  39803.                   case 15:
  39804.                     l = _ref3;
  39805.                     if (window.languages[l]) {
  39806.                         _context2.next = 19;
  39807.                         break;
  39808.                     }
  39809.                     _context2.next = 19;
  39810.                     return load("languages/" + l + ".js");
  39811.  
  39812.                   case 19:
  39813.                     _context2.next = 5;
  39814.                     break;
  39815.  
  39816.                   case 21:
  39817.                     langQueue = langQueue.filter(function(l) {
  39818.                         return window.languages[l];
  39819.                     });
  39820.                     lang = langQueue[langQueue.length - 1];
  39821.                     language = {};
  39822.                     langQueue.forEach(function(l) {
  39823.                         Object.assign(language, window.languages[l]);
  39824.                     });
  39825.                     window.lang = lang;
  39826.                     window.language = language;
  39827.                     Object.entries(language).forEach(function(_ref4) {
  39828.                         var key = _ref4[0], value = _ref4[1], el = document.getElementById(key);
  39829.                         if (el) el.innerHTML = value;
  39830.                     });
  39831.  
  39832.                   case 28:
  39833.                   case "end":
  39834.                     return _context2.stop();
  39835.                 }
  39836.             }, _callee2, undefined);
  39837.         }));
  39838.         return function(_x2) {
  39839.             return _ref2.apply(this, arguments);
  39840.         };
  39841.     }()), getLang = function() {
  39842.         if ((0, _registry.RegExists)(regPath + "lang")) return (0, _registry.RegRead)(regPath + "lang");
  39843.         if (_os.OSVersion >= 6) return (0, _registry.RegRead)("HKCU\\Control Panel\\International\\LocaleName").toLowerCase(); else {
  39844.             if (-1 !== [ 1079, 44, 29740, 2092, 30764, 1068, 25, 1049, 2073, 34, 1058, 1067, 1059 ].indexOf(parseInt((0,
  39845.             _registry.RegRead)("HKCU\\Control Panel\\International\\Locale"), 16))) return "ru";
  39846.         }
  39847.         return "en";
  39848.     };
  39849. }, function(module, exports, __webpack_require__) {
  39850.     "use strict";
  39851.     var run = function() {
  39852.         __webpack_require__(333);
  39853.     };
  39854.     if (window.__LEGACY_BROWSER__) {
  39855.         var doLoad = function() {
  39856.             return setTimeout(run, 0);
  39857.         };
  39858.         if (window.addEventListener) window.addEventListener("load", doLoad, !1); else if (window.attachEvent) window.attachEvent("onload", doLoad); else if (window.onLoad) window.onload = doLoad;
  39859.     } else run();
  39860. }, function(module, exports, __webpack_require__) {
  39861.     "use strict";
  39862.     function _classCallCheck(instance, Constructor) {
  39863.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  39864.     }
  39865.     function _possibleConstructorReturn(self, call) {
  39866.         if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  39867.         return call && ("object" == typeof call || "function" == typeof call) ? call : self;
  39868.     }
  39869.     function _inherits(subClass, superClass) {
  39870.         if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
  39871.         subClass.prototype = Object.create(superClass && superClass.prototype, {
  39872.             constructor: {
  39873.                 value: subClass,
  39874.                 enumerable: !1,
  39875.                 writable: !0,
  39876.                 configurable: !0
  39877.             }
  39878.         });
  39879.         if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  39880.     }
  39881.     exports.__esModule = !0;
  39882.     var _system = __webpack_require__(9), _logs = __webpack_require__(3), _onunload = __webpack_require__(232), _external = __webpack_require__(230), _external2 = function(obj) {
  39883.         return obj && obj.__esModule ? obj : {
  39884.             "default": obj
  39885.         };
  39886.     }(_external), log = (0, _logs.getLogger)("OHM"), dotNetPaths = [ "HKLM\\Software\\Microsoft\\NET Framework Setup\\NDP\\v2.0.50727\\", "HKLM\\Software\\Microsoft\\NET Framework Setup\\NDP\\v4\\" ], OHM = function(_External) {
  39887.         function OHM() {
  39888.             _classCallCheck(this, OHM);
  39889.             var options = {
  39890.                 url: "http://download.drp.su/updates/ohm/openhardwaremonitor.zip",
  39891.                 downloadPath: _system.AppData + "\\DRPSu\\ohm",
  39892.                 dirPath: _system.WshShell.CurrentDirectory.split("\\").slice(0, -1).join("\\") + "\\bin\\tools\\openhardwaremonitor",
  39893.                 exePath: "OpenHardwareMonitor.exe"
  39894.             };
  39895.             return _possibleConstructorReturn(this, _External.call(this, options));
  39896.         }
  39897.         _inherits(OHM, _External);
  39898.         OHM.prototype.Run = function() {
  39899.             var _this2 = this;
  39900.             if (this.handler) return Promise.resolve();
  39901.             if (dotNetPaths.every(function(dotNetPath) {
  39902.                 return !(0, _system.RegExists)(dotNetPath);
  39903.             })) {
  39904.                 log.info(".NET Framework not installed", {}, "DotNetNotInstalled", [ "DotNet" ]);
  39905.                 return Promise.resolve();
  39906.             }
  39907.             return _External.prototype.Download.call(this).then(function() {
  39908.                 var exePath = _this2.exePath;
  39909.                 log.info("executing " + exePath, {
  39910.                     exePath: exePath
  39911.                 }, "executing");
  39912.                 _this2.handler = _system.WshShell.Exec(exePath);
  39913.             })["finally"](function() {
  39914.                 (0, _onunload.addUnloadListener)(function() {
  39915.                     _this2.Stop();
  39916.                 });
  39917.             });
  39918.         };
  39919.         OHM.prototype.Stop = function() {
  39920.             try {
  39921.                 if (this.handler) {
  39922.                     log.info("stopping", {}, "stopping");
  39923.                     this.handler.Terminate();
  39924.                     delete this.handler;
  39925.                 }
  39926.             } catch (error) {
  39927.                 log.error("stopping failed", {
  39928.                     error: error
  39929.                 }, "stopping:failed");
  39930.             }
  39931.         };
  39932.         return OHM;
  39933.     }(_external2["default"]);
  39934.     exports["default"] = new OHM();
  39935.     module.exports = exports["default"];
  39936. }, function(module, exports, __webpack_require__) {
  39937.     "use strict";
  39938.     __webpack_require__(350);
  39939.     var _bluebird = __webpack_require__(356), _bluebird2 = function(obj) {
  39940.         return obj && obj.__esModule ? obj : {
  39941.             "default": obj
  39942.         };
  39943.     }(_bluebird);
  39944.     window.Promise = _bluebird2["default"];
  39945.     var noop = function() {};
  39946.     window.console = window.console || {};
  39947.     if (!window.console.log) window.console.log = window.echo || noop;
  39948.     if (!window.console.warn) window.console.warn = window.echo || noop;
  39949.     if (!window.console.error) window.console.error = window.echo || noop;
  39950. }, , function(module, exports, __webpack_require__) {
  39951.     "use strict";
  39952.     (function(l) {
  39953.         exports.__esModule = !0;
  39954.         var _os = __webpack_require__(13), openSite = function(url) {
  39955.             var WshShell = window.WshShell;
  39956.             try {
  39957.                 WshShell.run(url, 1, !1);
  39958.             } catch (e) {}
  39959.         }, localeSwitch = function(locale, params) {
  39960.             if (params[locale]) return params[locale]; else return params["default"];
  39961.         };
  39962.         exports["default"] = function(locale) {
  39963.             return [ {
  39964.                 id: "Cloud",
  39965.                 title: l("installation_header_promo_title_cloud"),
  39966.                 text: l("installation_header_promo_text_cloud"),
  39967.                 bgImage: "img/installation/banner_cloud-bg.jpg",
  39968.                 onClick: function() {
  39969.                     return openSite("https://drp.su/ru/cloud");
  39970.                 },
  39971.                 priority: _os.OSVersion < 6 ? 0 : localeSwitch(locale, {
  39972.                     ru: 1,
  39973.                     "default": 0
  39974.                 })
  39975.             }, {
  39976.                 id: "Avast Free Antivirus",
  39977.                 softId: "28",
  39978.                 title: l("installation_header_promo_title_avast"),
  39979.                 text: l("installation_header_promo_text_avast"),
  39980.                 bgImage: "img/installation/banner_avast-bg.jpg",
  39981.                 onClick: function() {
  39982.                     return openSite("https://www.avast.ru/free-antivirus-download");
  39983.                 },
  39984.                 patchLink: function(link) {
  39985.                     return link.replace(/A\.exe$/, "B.exe");
  39986.                 },
  39987.                 priority: localeSwitch(locale, {
  39988.                     ru: 10,
  39989.                     en: 10,
  39990.                     de: 10,
  39991.                     fr: 10,
  39992.                     es: 10,
  39993.                     "pt-br": 10,
  39994.                     "default": 0
  39995.                 })
  39996.             }, {
  39997.                 id: "Avast Free Antivirus",
  39998.                 softId: "29",
  39999.                 title: l("installation_header_promo_title_avast"),
  40000.                 text: l("installation_header_promo_text_avast"),
  40001.                 bgImage: "img/installation/banner_avast-bg.jpg",
  40002.                 onClick: function() {
  40003.                     return openSite("https://www.avast.com/free-antivirus-download");
  40004.                 },
  40005.                 patchLink: function(link) {
  40006.                     return link.replace(/A\.exe$/, "C.exe");
  40007.                 },
  40008.                 priority: localeSwitch(locale, {
  40009.                     ru: 10,
  40010.                     en: 10,
  40011.                     de: 10,
  40012.                     fr: 10,
  40013.                     es: 10,
  40014.                     "pt-br": 10,
  40015.                     "default": 0
  40016.                 })
  40017.             }, {
  40018.                 id: "Catalog",
  40019.                 title: l("installation_header_promo_title_catalog"),
  40020.                 text: l("installation_header_promo_text_catalog"),
  40021.                 bgImage: localeSwitch(locale, {
  40022.                     ru: "img/installation/banner_catalog-bg-ru.jpg",
  40023.                     "pt-br": "img/installation/banner_catalog-bg-pt-br.jpg",
  40024.                     "default": "img/installation/banner_catalog-bg-en.jpg"
  40025.                 }),
  40026.                 onClick: function() {
  40027.                     return openSite("https://drp.su/ru/catalog");
  40028.                 },
  40029.                 priority: localeSwitch(locale, {
  40030.                     ru: 20,
  40031.                     en: 20,
  40032.                     de: 20,
  40033.                     fr: 20,
  40034.                     es: 20,
  40035.                     "pt-br": 20,
  40036.                     "default": 0
  40037.                 })
  40038.             }, {
  40039.                 id: "Authorization",
  40040.                 title: l("installation_header_promo_title_authorization"),
  40041.                 text: l("installation_header_promo_text_authorization"),
  40042.                 bgImage: "img/installation/banner_auth-bg.jpg",
  40043.                 onClick: function() {
  40044.                     return openSite("https://vk.com/driverpacksolution?w=wall-29220845_63691");
  40045.                 },
  40046.                 priority: localeSwitch(locale, {
  40047.                     ru: 30,
  40048.                     "default": 0
  40049.                 })
  40050.             }, {
  40051.                 id: "Opera",
  40052.                 softId: "3",
  40053.                 title: l("installation_header_promo_title_opera"),
  40054.                 text: l("installation_header_promo_text_opera"),
  40055.                 bgImage: "img/installation/banner_opera-bg.gif",
  40056.                 onClick: function() {
  40057.                     return openSite("http://www.opera.com/ru/computer/features");
  40058.                 },
  40059.                 priority: localeSwitch(locale, {
  40060.                     ru: 35,
  40061.                     "default": 0
  40062.                 })
  40063.             }, {
  40064.                 id: "Opera",
  40065.                 softId: "4",
  40066.                 title: l("installation_header_promo_title_opera"),
  40067.                 text: l("installation_header_promo_text_opera"),
  40068.                 bgImage: "img/installation/banner_opera-bg.gif",
  40069.                 onClick: function() {
  40070.                     return openSite("http://www.opera.com/ru/computer/features");
  40071.                 },
  40072.                 priority: localeSwitch(locale, {
  40073.                     ru: 35,
  40074.                     "default": 0
  40075.                 })
  40076.             }, {
  40077.                 id: "Opera",
  40078.                 softId: "5",
  40079.                 title: l("installation_header_promo_title_opera"),
  40080.                 text: l("installation_header_promo_text_opera"),
  40081.                 bgImage: "img/installation/banner_opera-bg.gif",
  40082.                 onClick: function() {
  40083.                     return openSite("http://www.opera.com/ru/computer/features");
  40084.                 },
  40085.                 priority: localeSwitch(locale, {
  40086.                     ru: 36,
  40087.                     "default": 0
  40088.                 })
  40089.             }, {
  40090.                 id: "How it works",
  40091.                 title: l("installation_header_promo_title_how_it_works"),
  40092.                 text: l("installation_header_promo_text_how_it_works"),
  40093.                 bgImage: "img/installation/banner_how-it-works-bg.jpg",
  40094.                 priority: localeSwitch(locale, {
  40095.                     ru: 40,
  40096.                     "default": 0
  40097.                 })
  40098.             }, {
  40099.                 id: "Windows 10",
  40100.                 title: l("installation_header_promo_title_win_10"),
  40101.                 text: l("installation_header_promo_text_win_10"),
  40102.                 bgImage: "img/installation/banner_win-10-bg.jpg",
  40103.                 priority: localeSwitch(locale, {
  40104.                     ru: 50,
  40105.                     "default": 0
  40106.                 })
  40107.             }, {
  40108.                 id: "Social",
  40109.                 title: l("installation_header_promo_title_social"),
  40110.                 text: l("installation_header_promo_text_social"),
  40111.                 bgImage: localeSwitch(locale, {
  40112.                     ru: "img/installation/banner_social-bg-ru.jpg",
  40113.                     "default": "img/installation/banner_social-bg-en.jpg"
  40114.                 }),
  40115.                 priority: localeSwitch(locale, {
  40116.                     ru: 60,
  40117.                     en: 60,
  40118.                     de: 60,
  40119.                     fr: 60,
  40120.                     es: 60,
  40121.                     "pt-br": 60,
  40122.                     "default": 0
  40123.                 })
  40124.             }, {
  40125.                 id: "DriverPack Protect",
  40126.                 title: l("installation_header_promo_title_protect"),
  40127.                 text: l("installation_header_promo_text_protect"),
  40128.                 onClick: localeSwitch(locale, {
  40129.                     ru: function() {
  40130.                         return openSite("https://vk.com/driverpacksolution?w=wall-29220845_58256");
  40131.                     },
  40132.                     "default": undefined
  40133.                 }),
  40134.                 bgImage: localeSwitch(locale, {
  40135.                     ru: "img/installation/banner_protect-bg-ru.jpg",
  40136.                     de: "img/installation/banner_protect-bg-de.jpg",
  40137.                     fr: "img/installation/banner_protect-bg-fr.jpg",
  40138.                     es: "img/installation/banner_protect-bg-es.jpg",
  40139.                     "pt-br": "img/installation/banner_protect-bg-pt-br.jpg",
  40140.                     "default": "img/installation/banner_protect-bg-en.jpg"
  40141.                 }),
  40142.                 priority: localeSwitch(locale, {
  40143.                     ru: 70,
  40144.                     en: 70,
  40145.                     de: 70,
  40146.                     fr: 70,
  40147.                     es: 70,
  40148.                     "pt-br": 70,
  40149.                     "default": 0
  40150.                 })
  40151.             }, {
  40152.                 id: "Restore point",
  40153.                 title: l("installation_header_promo_title_restore"),
  40154.                 text: l("installation_header_promo_text_restore"),
  40155.                 bgImage: "img/installation/banner_restore-bg.jpg",
  40156.                 priority: localeSwitch(locale, {
  40157.                     ru: 80,
  40158.                     "default": 0
  40159.                 })
  40160.             }, {
  40161.                 id: "Browsers",
  40162.                 title: l("installation_header_promo_title_browsers"),
  40163.                 text: l("installation_header_promo_text_browsers"),
  40164.                 bgImage: "img/installation/banner_browsers-bg.jpg",
  40165.                 priority: localeSwitch(locale, {
  40166.                     ru: 90,
  40167.                     "default": 0
  40168.                 })
  40169.             }, {
  40170.                 id: "DriverPack for all",
  40171.                 title: l("installation_header_promo_title_driverpack_for_all"),
  40172.                 text: l("installation_header_promo_text_driverpack_for_all"),
  40173.                 bgImage: "img/installation/banner_driverpack-for-all-bg.jpg",
  40174.                 onClick: function() {
  40175.                     return openSite("https://vk.com/driverpacksolution?w=wall-29220845_61453");
  40176.                 },
  40177.                 priority: localeSwitch(locale, {
  40178.                     ru: 100,
  40179.                     "default": 0
  40180.                 })
  40181.             } ];
  40182.         };
  40183.         module.exports = exports["default"];
  40184.     }).call(exports, __webpack_require__(6));
  40185. }, function(module, exports, __webpack_require__) {
  40186.     "use strict";
  40187.     exports.__esModule = !0;
  40188.     var _extends = Object.assign || function(target) {
  40189.         for (var i = 1; i < arguments.length; i++) {
  40190.             var source = arguments[i];
  40191.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  40192.         }
  40193.         return target;
  40194.     }, initialState = {
  40195.         windowState: "maximized",
  40196.         isBurgerMenuOpened: !1,
  40197.         popup: {
  40198.             isOpened: !1,
  40199.             isEulaChecked: !0
  40200.         },
  40201.         authorizing: !1,
  40202.         user: {},
  40203.         isGamer: !1,
  40204.         isActivated: !1,
  40205.         expertModeClicked: !1
  40206.     };
  40207.     exports["default"] = function() {
  40208.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState, action = arguments[1];
  40209.         switch (action.type) {
  40210.           case "WINDOW_PARAMETERS_UPDATED":
  40211.             return _extends({}, state, action.payload);
  40212.  
  40213.           case "WINDOW_STATE_CHANGED":
  40214.             return _extends({}, state, {
  40215.                 windowState: action.payload.windowState
  40216.             });
  40217.  
  40218.           case "START_SCREEN_CLOSE_CLICKED":
  40219.             return _extends({}, state, {
  40220.                 isBurgerMenuOpened: !1
  40221.             });
  40222.  
  40223.           case "BURGER_MENU_TOGGLED":
  40224.             return _extends({}, state, {
  40225.                 isBurgerMenuOpened: !state.isBurgerMenuOpened
  40226.             });
  40227.  
  40228.           case "CONFIRM_POPUP_OPEN":
  40229.             return _extends({}, state, {
  40230.                 popup: {
  40231.                     isOpened: !0,
  40232.                     isEulaChecked: !0,
  40233.                     name: "CONFIRM_INSTALL_PROGRAM",
  40234.                     data: _extends({}, action.payload)
  40235.                 }
  40236.             });
  40237.  
  40238.           case "NEW_ORDER_DRIVERS_INSTALL_ALL_SUCCESS":
  40239.           case "NEW_ORDER_PROGRAMS_INSTALL_ALL_SUCCESS":
  40240.           case "CONFIRM_POPUP_CLOSE":
  40241.             return _extends({}, state, {
  40242.                 popup: {
  40243.                     isOpened: !1,
  40244.                     name: "CONFIRM_INSTALL_PROGRAM",
  40245.                     result: action.payload && action.payload.result || !1
  40246.                 }
  40247.             });
  40248.  
  40249.           case "CONFIRM_POPUP_OPEN_TOGGLE_EULA":
  40250.             return _extends({}, state, {
  40251.                 popup: _extends({}, state.popup, {
  40252.                     isEulaChecked: !state.popup.isEulaChecked
  40253.                 })
  40254.             });
  40255.  
  40256.           case "CONNECTION_CHECKED":
  40257.             return _extends({}, state, {
  40258.                 isConnected: action.payload
  40259.             });
  40260.  
  40261.           case "AUTHORIZATION_STARTED":
  40262.             return _extends({}, state, {
  40263.                 authorizing: !0
  40264.             });
  40265.  
  40266.           case "AUTHORIZED":
  40267.           case "UNAUTHORIZED":
  40268.             return _extends({}, state, {
  40269.                 authorizing: !1,
  40270.                 user: action.payload
  40271.             });
  40272.  
  40273.           case "USER_ACTIVATED":
  40274.             return _extends({}, state, {
  40275.                 isActivated: !0
  40276.             });
  40277.  
  40278.           case "EXPERT_MODE_CLICKED":
  40279.             return _extends({}, state, {
  40280.                 expertModeClicked: !0
  40281.             });
  40282.  
  40283.           case "GAMER_CHECKED":
  40284.             return _extends({}, state, {
  40285.                 isGamer: action.payload
  40286.             });
  40287.  
  40288.           default:
  40289.             return state;
  40290.         }
  40291.     };
  40292.     module.exports = exports["default"];
  40293. }, function(module, exports, __webpack_require__) {
  40294.     "use strict";
  40295.     exports.__esModule = !0;
  40296.     var _merge = __webpack_require__(578), _merge2 = function(obj) {
  40297.         return obj && obj.__esModule ? obj : {
  40298.             "default": obj
  40299.         };
  40300.     }(_merge);
  40301.     exports["default"] = function() {
  40302.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
  40303.             isLoading: !0,
  40304.             data: {},
  40305.             videos: [ {} ],
  40306.             disks: [ {} ]
  40307.         }, action = arguments[1];
  40308.         switch (action.type) {
  40309.           case "DIAGNOSTICS_LOAD_SUCCESS":
  40310.             return {
  40311.                 data: action.payload,
  40312.                 isLoading: !1
  40313.             };
  40314.  
  40315.           case "DIAGNOSTICS_UPDATE_SUCCESS":
  40316.             return {
  40317.                 data: (0, _merge2["default"])({}, state.data, action.payload),
  40318.                 isLoading: !1
  40319.             };
  40320.  
  40321.           default:
  40322.             return state;
  40323.         }
  40324.     };
  40325.     module.exports = exports["default"];
  40326. }, function(module, exports, __webpack_require__) {
  40327.     "use strict";
  40328.     function _interopRequireDefault(obj) {
  40329.         return obj && obj.__esModule ? obj : {
  40330.             "default": obj
  40331.         };
  40332.     }
  40333.     function setDriverId(driver) {
  40334.         return _extends({}, driver, {
  40335.             id: driver.link
  40336.         });
  40337.     }
  40338.     function currentDriverIdDefault(currentDriver) {
  40339.         var manufacturer = currentDriver.manufacturer;
  40340.         return currentDriver.version.startsWith(_os.OSVersionS) && /microsoft|standard/i.test(manufacturer);
  40341.     }
  40342.     function updateState(driver, currentDriver) {
  40343.         if (!currentDriver || currentDriverIdDefault(currentDriver)) return _extends({}, driver, {
  40344.             state: "install"
  40345.         }); else if (currentDriver.date === driver.date || currentDriver.version === driver.version) return _extends({}, driver, {
  40346.             state: "installed"
  40347.         }); else if (currentDriver.date < driver.date) return _extends({}, driver, {
  40348.             state: "update"
  40349.         }); else return _extends({}, driver, {
  40350.             state: "rollback"
  40351.         });
  40352.     }
  40353.     function compareDrivers(a, b) {
  40354.         var diff = states[a.recommendedDriver.state] - states[b.recommendedDriver.state];
  40355.         if (0 !== diff) return diff;
  40356.         if (a.recommendedDriver["class"] > b.recommendedDriver["class"]) return 1;
  40357.         if (a.recommendedDriver["class"] < b.recommendedDriver["class"]) return -1;
  40358.         if (a.recommendedDriver.name > b.recommendedDriver.name) return 1;
  40359.         if (a.recommendedDriver.name < b.recommendedDriver.name) return -1; else return 0;
  40360.     }
  40361.     function shouldInstall(recommendedDriver) {
  40362.         var hasErrorDevices = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !1;
  40363.         if ("install" === recommendedDriver.state) return !0;
  40364.         if ("update" === recommendedDriver.state && !hasErrorDevices) return !0;
  40365.         if ("installed" !== recommendedDriver.state && ![ 0, 22 ].includes(recommendedDriver.statusCode)) return !0; else return !1;
  40366.     }
  40367.     function checkDownloaded(driver) {
  40368.         var path = "..\\drivers\\" + driver.pack + ".7z";
  40369.         if (!_system.fso.FileExists(path)) driver = Object.assign({}, driver, {
  40370.             name: "[Not downloaded] " + driver.name
  40371.         });
  40372.         return driver;
  40373.     }
  40374.     function constructDeviceItem(_ref) {
  40375.         var item = _ref.item, index = _ref.index, hasErrorDevices = _ref.hasErrorDevices, isLowRanked = _ref.isLowRanked, drpDrivers = item[0], currentDriver = item[1];
  40376.         drpDrivers = (0, _uniq2["default"])(drpDrivers, function(driver) {
  40377.             return [ driver.link, driver.inf ].join(":");
  40378.         });
  40379.         drpDrivers = drpDrivers.map(function(driver) {
  40380.             return updateState(setDriverId(driver), currentDriver);
  40381.         });
  40382.         if (!1) drpDrivers = drpDrivers.map(checkDownloaded);
  40383.         var recommendedDriver = drpDrivers[0], otherDrivers = drpDrivers;
  40384.         recommendedDriver.isRecommended = !isLowRanked;
  40385.         recommendedDriver.isChecked = !0;
  40386.         var isCheckedByDefault = !isLowRanked && shouldInstall(recommendedDriver, hasErrorDevices);
  40387.         currentDriver = currentDriver && _extends({}, currentDriver, {
  40388.             id: "current_" + recommendedDriver.id,
  40389.             isCurrent: !0
  40390.         });
  40391.         return {
  40392.             id: (isLowRanked ? "low_ranked_" : "") + index + "__" + recommendedDriver.fullDeviceId,
  40393.             deviceId: recommendedDriver.fullDeviceId,
  40394.             isCheckedByDefault: isCheckedByDefault,
  40395.             isChecked: isCheckedByDefault && !_settings2["default"].get("general.selectDriversByDefault").value,
  40396.             currentDriver: currentDriver,
  40397.             recommendedDriver: recommendedDriver,
  40398.             otherDrivers: otherDrivers
  40399.         };
  40400.     }
  40401.     exports.__esModule = !0;
  40402.     var _extends = Object.assign || function(target) {
  40403.         for (var i = 1; i < arguments.length; i++) {
  40404.             var source = arguments[i];
  40405.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  40406.         }
  40407.         return target;
  40408.     }, _system = __webpack_require__(9), _os = __webpack_require__(13), _uniq = __webpack_require__(159), _uniq2 = _interopRequireDefault(_uniq), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), _driversPrograms = __webpack_require__(36), initialState = {
  40409.         zeroDriversVisible: !0,
  40410.         isAdminMode: !1,
  40411.         isNotRecommendedVisible: !1,
  40412.         viewOptionsDropdownIsVisible: !1,
  40413.         viewOptionsDropdownIsExpanded: !1,
  40414.         viewOptions: {
  40415.             vendor: !1,
  40416.             version: !0,
  40417.             date: !0,
  40418.             deviceId: !0,
  40419.             inf: !1,
  40420.             section: !1,
  40421.             os: !1
  40422.         },
  40423.         devices: []
  40424.     }, states = {
  40425.         install: 1,
  40426.         update: 2,
  40427.         installed: 3,
  40428.         rollback: 4
  40429.     }, devices = void 0, lowRankedDevices = void 0, brokenDevices = void 0, drivers = void 0;
  40430.     exports["default"] = function() {
  40431.         var _extends2, state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState, action = arguments[1];
  40432.         switch (action.type) {
  40433.           case "DRIVERS_SCAN_SUCCESS":
  40434.             var _action$payload = action.payload, normalDevices = _action$payload.devices, lowRanked = _action$payload.lowRanked, broken = _action$payload.broken, hasErrorDevices = normalDevices.some(function(_ref2) {
  40435.                 return ![ 0, 22 ].includes(_ref2[0][0].statusCode);
  40436.             });
  40437.             devices = normalDevices.map(function(item, index) {
  40438.                 return constructDeviceItem({
  40439.                     item: item,
  40440.                     index: index,
  40441.                     hasErrorDevices: hasErrorDevices
  40442.                 });
  40443.             }).sort(compareDrivers);
  40444.             lowRankedDevices = lowRanked.map(function(item, index) {
  40445.                 return constructDeviceItem({
  40446.                     item: item,
  40447.                     index: index,
  40448.                     hasErrorDevices: hasErrorDevices,
  40449.                     isLowRanked: !0
  40450.                 });
  40451.             }).sort(compareDrivers);
  40452.             brokenDevices = broken.map(function(device, index) {
  40453.                 return _extends({}, device, {
  40454.                     id: "broken_" + index + "_" + device.fullDeviceId
  40455.                 });
  40456.             });
  40457.             return _extends({}, state, {
  40458.                 devices: devices,
  40459.                 lowRankedDevices: lowRankedDevices,
  40460.                 brokenDevices: brokenDevices
  40461.             });
  40462.  
  40463.           case "DRIVERS_EXPAND_DEVICE":
  40464.             devices = state.devices.map(function(item) {
  40465.                 if (item.deviceId === action.id) return _extends({}, item, {
  40466.                     isExpanded: action.expanded
  40467.                 }); else return item;
  40468.             });
  40469.             brokenDevices = state.brokenDevices.map(function(item) {
  40470.                 if (item.deviceId === action.id) return _extends({}, item, {
  40471.                     isExpanded: action.expanded
  40472.                 }); else return item;
  40473.             });
  40474.             lowRankedDevices = state.lowRankedDevices.map(function(item) {
  40475.                 if (item.deviceId === action.id) return _extends({}, item, {
  40476.                     isExpanded: action.expanded
  40477.                 }); else return item;
  40478.             });
  40479.             return _extends({}, state, {
  40480.                 devices: devices,
  40481.                 brokenDevices: brokenDevices,
  40482.                 lowRankedDevices: lowRankedDevices
  40483.             });
  40484.  
  40485.           case "DRIVERS_INFO_OPEN":
  40486.             devices = state.devices.map(function(item) {
  40487.                 if (item.deviceId === action.id) return _extends({}, item, {
  40488.                     isInfoOpened: action.index
  40489.                 }); else if (!1 !== item.isInfoOpened) return _extends({}, item, {
  40490.                     isInfoOpened: !1
  40491.                 }); else return item;
  40492.             });
  40493.             return _extends({}, state, {
  40494.                 devices: devices
  40495.             });
  40496.  
  40497.           case "DRIVERS_DEVICE_DRIVER_SELECTED":
  40498.             devices = state.devices.map(function(item) {
  40499.                 if (item.id === action._deviceId) return _extends({}, item, {
  40500.                     otherDrivers: item.otherDrivers.map(function(driver) {
  40501.                         return _extends({}, driver, {
  40502.                             isChecked: driver.id === action.driverId
  40503.                         });
  40504.                     })
  40505.                 }); else return item;
  40506.             });
  40507.             lowRankedDevices = state.lowRankedDevices.map(function(item) {
  40508.                 if (item.id === action._deviceId) return _extends({}, item, {
  40509.                     otherDrivers: item.otherDrivers.map(function(driver) {
  40510.                         return _extends({}, driver, {
  40511.                             isChecked: driver.id === action.driverId
  40512.                         });
  40513.                     })
  40514.                 }); else return item;
  40515.             });
  40516.             return _extends({}, state, {
  40517.                 devices: devices,
  40518.                 lowRankedDevices: lowRankedDevices
  40519.             });
  40520.  
  40521.           case "DRIVERS_TOGGLE_DEVICE":
  40522.             devices = state.devices.map(function(item) {
  40523.                 if (item.deviceId === action.id) return _extends({}, item, {
  40524.                     isChecked: action.checked
  40525.                 }); else return item;
  40526.             });
  40527.             lowRankedDevices = state.lowRankedDevices.map(function(item) {
  40528.                 if (item.deviceId === action.id) return _extends({}, item, {
  40529.                     isChecked: action.checked
  40530.                 }); else return item;
  40531.             });
  40532.             return _extends({}, state, {
  40533.                 devices: devices,
  40534.                 lowRankedDevices: lowRankedDevices
  40535.             });
  40536.  
  40537.           case "DRIVERS_TOGGLE_NOT_INSTALLED":
  40538.             devices = state.devices.map(function(item) {
  40539.                 return _extends({}, item, {
  40540.                     isChecked: (0, _driversPrograms.isDeviceDriverNotInstalled)(item) ? action.payload.isChecked : item.isChecked
  40541.                 });
  40542.             });
  40543.             return _extends({}, state, {
  40544.                 devices: devices
  40545.             });
  40546.  
  40547.           case "DRIVERS_TOGGLE_NOT_UPDATED":
  40548.             devices = state.devices.map(function(item) {
  40549.                 return _extends({}, item, {
  40550.                     isChecked: (0, _driversPrograms.isDeviceDriverNotUpdated)(item) ? action.payload.isChecked : item.isChecked
  40551.                 });
  40552.             });
  40553.             return _extends({}, state, {
  40554.                 devices: devices
  40555.             });
  40556.  
  40557.           case "DRIVERS_TOGGLE_NOT_RECOMMENDED_VISIBILITY":
  40558.             return _extends({}, state, {
  40559.                 isNotRecommendedVisible: !state.isNotRecommendedVisible
  40560.             });
  40561.  
  40562.           case "DRIVERS_CHECK_ALL_TOGGLED":
  40563.             devices = state.devices.map(function(item) {
  40564.                 return _extends({}, item, {
  40565.                     isChecked: action.payload.isChecked
  40566.                 });
  40567.             });
  40568.             return _extends({}, state, {
  40569.                 devices: devices
  40570.             });
  40571.  
  40572.           case "DRIVERS_HIDE_ZERO_DRIVERS":
  40573.             return _extends({}, state, {
  40574.                 zeroDriversVisible: !1
  40575.             });
  40576.  
  40577.           case "NAVIGATE":
  40578.             return _extends({}, state, {
  40579.                 zeroDriversVisible: !0
  40580.             });
  40581.  
  40582.           case "DRIVERS_TOGGLE_ADMIN_MODE":
  40583.             devices = state.devices.map(function(item) {
  40584.                 return _extends({}, item, {
  40585.                     isExpanded: !state.isAdminMode
  40586.                 });
  40587.             });
  40588.             brokenDevices = state.brokenDevices.map(function(item) {
  40589.                 return _extends({}, item, {
  40590.                     isExpanded: !state.isAdminMode
  40591.                 });
  40592.             });
  40593.             lowRankedDevices = state.lowRankedDevices.map(function(item) {
  40594.                 return _extends({}, item, {
  40595.                     isExpanded: !state.isAdminMode
  40596.                 });
  40597.             });
  40598.             return _extends({}, state, {
  40599.                 isAdminMode: !state.isAdminMode,
  40600.                 viewOptionsDropdownIsVisible: !state.viewOptionsDropdownIsVisible,
  40601.                 devices: devices,
  40602.                 brokenDevices: brokenDevices,
  40603.                 lowRankedDevices: lowRankedDevices
  40604.             });
  40605.  
  40606.           case "DRIVERS_EXPAND_VIEW_OPTIONS_DROPDOWN":
  40607.             return _extends({}, state, {
  40608.                 viewOptionsDropdownIsExpanded: action.payload.isExpanded
  40609.             });
  40610.  
  40611.           case "DRIVERS_TOGGLE_VIEW_OPTION":
  40612.             return _extends({}, state, {
  40613.                 viewOptions: _extends({}, state.viewOptions, (_extends2 = {}, _extends2[action.payload.optionName] = !state.viewOptions[action.payload.optionName],
  40614.                 _extends2))
  40615.             });
  40616.  
  40617.           case "DRIVERS_OPEN_DRIVER_MENU":
  40618.             devices = state.devices.map(function(item) {
  40619.                 drivers = item.otherDrivers.map(function(driver) {
  40620.                     return _extends({}, driver, {
  40621.                         menuIsOpened: action.payload._deviceId === item.id && driver.id === action.payload.id && action.payload.isOpened
  40622.                     });
  40623.                 });
  40624.                 return _extends({}, item, {
  40625.                     otherDrivers: drivers
  40626.                 });
  40627.             });
  40628.             lowRankedDevices = state.lowRankedDevices.map(function(item) {
  40629.                 drivers = item.otherDrivers.map(function(driver) {
  40630.                     return _extends({}, driver, {
  40631.                         menuIsOpened: action.payload._deviceId === item.id && driver.id === action.payload.id && action.payload.isOpened
  40632.                     });
  40633.                 });
  40634.                 return _extends({}, item, {
  40635.                     otherDrivers: drivers
  40636.                 });
  40637.             });
  40638.             return _extends({}, state, {
  40639.                 devices: devices,
  40640.                 lowRankedDevices: lowRankedDevices
  40641.             });
  40642.  
  40643.           case "SETTINGS_SET_SETTING":
  40644.             devices = state.devices;
  40645.             if ("general.selectDriversByDefault" === action.payload.keyPath) devices = state.devices.map(function(item) {
  40646.                 return _extends({}, item, {
  40647.                     isChecked: !action.payload.data.value ? item.isCheckedByDefault : !1
  40648.                 });
  40649.             });
  40650.             return _extends({}, state, {
  40651.                 devices: devices
  40652.             });
  40653.  
  40654.           case "NEW_ORDER_DRIVERS_INSTALL_ALL_SUCCESS":
  40655.           case "NEW_ORDER_PROGRAMS_INSTALL_ALL_SUCCESS":
  40656.             return _extends({}, state, {
  40657.                 isAdminMode: !1
  40658.             });
  40659.  
  40660.           default:
  40661.             return state;
  40662.         }
  40663.     };
  40664.     module.exports = exports["default"];
  40665. }, function(module, exports, __webpack_require__) {
  40666.     "use strict";
  40667.     exports.__esModule = !0;
  40668.     var _extends = Object.assign || function(target) {
  40669.         for (var i = 1; i < arguments.length; i++) {
  40670.             var source = arguments[i];
  40671.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  40672.         }
  40673.         return target;
  40674.     }, initialState = {}, finishedDevices = void 0, finishedPrograms = void 0;
  40675.     exports["default"] = function() {
  40676.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState, action = arguments[1];
  40677.         switch (action.type) {
  40678.           case "NEW_ORDER_INSTALL_ALL_START":
  40679.             return _extends({}, state, {
  40680.                 resultType: null,
  40681.                 lastInstallationInput: action.payload.inputData,
  40682.                 oldDriversState: action.payload.driversState
  40683.             });
  40684.  
  40685.           case "FINAL_SCREEN_GET_INSTALLATION_RESULT":
  40686.             return _extends({}, state, action.payload);
  40687.  
  40688.           case "FINAL_SCREEN_HOVER_FINISHED_DEVICE":
  40689.             finishedDevices = state.finishedDevices.map(function(item) {
  40690.                 if (action.payload.deviceId === item.deviceId) return _extends({}, item, {
  40691.                     popoverIsOpened: !action.payload.isLeaving
  40692.                 }); else return item;
  40693.             });
  40694.             return _extends({}, state, {
  40695.                 finishedDevices: finishedDevices
  40696.             });
  40697.  
  40698.           case "FINAL_SCREEN_HOVER_FINISHED_PROGRAM":
  40699.             finishedPrograms = state.finishedPrograms.map(function(item) {
  40700.                 if (action.payload.id === item.id) return _extends({}, item, {
  40701.                     popoverIsOpened: !action.payload.isLeaving
  40702.                 }); else return item;
  40703.             });
  40704.             return _extends({}, state, {
  40705.                 finishedPrograms: finishedPrograms
  40706.             });
  40707.  
  40708.           default:
  40709.             return state;
  40710.         }
  40711.     };
  40712.     module.exports = exports["default"];
  40713. }, function(module, exports, __webpack_require__) {
  40714.     "use strict";
  40715.     exports.__esModule = !0;
  40716.     var _extends = Object.assign || function(target) {
  40717.         for (var i = 1; i < arguments.length; i++) {
  40718.             var source = arguments[i];
  40719.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  40720.         }
  40721.         return target;
  40722.     }, defaultState = {
  40723.         playkeyInstalling: !1,
  40724.         playkeyInstalled: !1,
  40725.         topGamesList: []
  40726.     };
  40727.     exports["default"] = function() {
  40728.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState, action = arguments[1];
  40729.         switch (action.type) {
  40730.           case "GAMES_LIST_LOADED":
  40731.             return _extends({}, state, {
  40732.                 topGamesList: action.payload
  40733.             });
  40734.  
  40735.           case "GAMES_HOVER_TOP_GAME":
  40736.             return _extends({}, state, {
  40737.                 topGamesList: state.topGamesList.map(function(item) {
  40738.                     return _extends({}, item, {
  40739.                         isHovered: action.payload.id === item.id && !action.payload.isLeaving
  40740.                     });
  40741.                 })
  40742.             });
  40743.  
  40744.           case "GAMES_PLAYKEY_INSTALLING":
  40745.             return _extends({}, state, {
  40746.                 playkeyInstalling: !0
  40747.             });
  40748.  
  40749.           case "GAMES_PLAYKEY_CHECKED":
  40750.           case "GAMES_PLAYKEY_INSTALLED":
  40751.             return _extends({}, state, {
  40752.                 playkeyInstalling: !1,
  40753.                 playkeyInstalled: action.payload
  40754.             });
  40755.  
  40756.           default:
  40757.             return state;
  40758.         }
  40759.     };
  40760.     module.exports = exports["default"];
  40761. }, function(module, exports, __webpack_require__) {
  40762.     "use strict";
  40763.     function _interopRequireDefault(obj) {
  40764.         return obj && obj.__esModule ? obj : {
  40765.             "default": obj
  40766.         };
  40767.     }
  40768.     exports.__esModule = !0;
  40769.     exports.games = exports.settings = exports.finalScreen = exports.installation = exports.diagnostics = exports.loading = exports.programs = exports.protect = exports.drivers = exports.lang = exports.page = exports.start = exports.app = undefined;
  40770.     var _app = __webpack_require__(732), _app2 = _interopRequireDefault(_app), _start = __webpack_require__(745), _start2 = _interopRequireDefault(_start), _page = __webpack_require__(741), _page2 = _interopRequireDefault(_page), _lang = __webpack_require__(739), _lang2 = _interopRequireDefault(_lang), _drivers = __webpack_require__(734), _drivers2 = _interopRequireDefault(_drivers), _protect = __webpack_require__(743), _protect2 = _interopRequireDefault(_protect), _programs = __webpack_require__(742), _programs2 = _interopRequireDefault(_programs), _loading = __webpack_require__(740), _loading2 = _interopRequireDefault(_loading), _diagnostics = __webpack_require__(733), _diagnostics2 = _interopRequireDefault(_diagnostics), _installation = __webpack_require__(738), _installation2 = _interopRequireDefault(_installation), _finalScreen = __webpack_require__(735), _finalScreen2 = _interopRequireDefault(_finalScreen), _settings = __webpack_require__(744), _settings2 = _interopRequireDefault(_settings), _games = __webpack_require__(736), _games2 = _interopRequireDefault(_games);
  40771.     exports.app = _app2["default"];
  40772.     exports.start = _start2["default"];
  40773.     exports.page = _page2["default"];
  40774.     exports.lang = _lang2["default"];
  40775.     exports.drivers = _drivers2["default"];
  40776.     exports.protect = _protect2["default"];
  40777.     exports.programs = _programs2["default"];
  40778.     exports.loading = _loading2["default"];
  40779.     exports.diagnostics = _diagnostics2["default"];
  40780.     exports.installation = _installation2["default"];
  40781.     exports.finalScreen = _finalScreen2["default"];
  40782.     exports.settings = _settings2["default"];
  40783.     exports.games = _games2["default"];
  40784. }, function(module, exports, __webpack_require__) {
  40785.     "use strict";
  40786.     exports.__esModule = !0;
  40787.     var _extends = Object.assign || function(target) {
  40788.         for (var i = 1; i < arguments.length; i++) {
  40789.             var source = arguments[i];
  40790.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  40791.         }
  40792.         return target;
  40793.     }, _driversPrograms = __webpack_require__(36), initialState = {
  40794.         preparing: !0,
  40795.         itemsContainDrivers: !1,
  40796.         itemsContainPrograms: !1,
  40797.         rebootNeeded: !1,
  40798.         leftArrowIsVisible: !1,
  40799.         rightArrowIsVisible: !1
  40800.     };
  40801.     exports["default"] = function() {
  40802.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState, action = arguments[1], items = void 0;
  40803.         switch (action.type) {
  40804.           case "NEW_ORDER_SHOW_LEFT_ARROW":
  40805.             return _extends({}, state, {
  40806.                 leftArrowIsVisible: !0,
  40807.                 rightArrowIsVisible: !1
  40808.             });
  40809.  
  40810.           case "NEW_ORDER_SHOW_RIGTH_ARROW":
  40811.             return _extends({}, state, {
  40812.                 leftArrowIsVisible: !1,
  40813.                 rightArrowIsVisible: !0
  40814.             });
  40815.  
  40816.           case "NEW_ORDER_HIDE_ARROWS":
  40817.             return _extends({}, state, {
  40818.                 leftArrowIsVisible: !1,
  40819.                 rightArrowIsVisible: !1
  40820.             });
  40821.  
  40822.           case "NEW_ORDER_RESTART_APPLICATIONS_CONFIRMED":
  40823.             return _extends({}, state, {
  40824.                 restartingApplications: action.payload
  40825.             });
  40826.  
  40827.           case "NEW_ORDER_PREPARING_FINISHED":
  40828.             return _extends({}, state, {
  40829.                 preparing: !1,
  40830.                 restorePointStatus: action.payload
  40831.             });
  40832.  
  40833.           case "NEW_ORDER_INSTALL_ALL_START":
  40834.             return _extends({}, state, {
  40835.                 preparing: !0,
  40836.                 result: null,
  40837.                 totalDrivers: action.payload.totalDrivers,
  40838.                 successDrivers: 0,
  40839.                 isYandexInstalled: !1,
  40840.                 items: action.payload.items,
  40841.                 itemsContainDrivers: action.payload.itemsContainDrivers,
  40842.                 itemsContainPrograms: action.payload.itemsContainPrograms
  40843.             });
  40844.  
  40845.           case "NEW_ORDER_DRIVER_DOWNLOAD_STARTED":
  40846.           case "NEW_ORDER_DRIVER_DOWNLOAD_FINISHED":
  40847.           case "NEW_ORDER_DRIVER_UNZIPPING_STARTED":
  40848.           case "NEW_ORDER_DRIVER_UNZIPPING_FINISHED":
  40849.           case "NEW_ORDER_DRIVER_INSTALLATION_STARTED":
  40850.           case "NEW_ORDER_PROGRAM_DOWNLOAD_STARTED":
  40851.           case "NEW_ORDER_PROGRAM_DOWNLOAD_FINISHED":
  40852.           case "NEW_ORDER_PROGRAM_INSTALLATION_FINISHED":
  40853.             items = state.items.map(function(item) {
  40854.                 if (item.id === action.payload.id) return _extends({}, item, {
  40855.                     status: action.meta.status,
  40856.                     rebootNeeded: action.meta.rebootNeeded
  40857.                 }); else return item;
  40858.             });
  40859.             return _extends({}, state, {
  40860.                 items: items,
  40861.                 rebootNeeded: state.rebootNeeded || action.meta.rebootNeeded
  40862.             });
  40863.  
  40864.           case "NEW_ORDER_DRIVER_DOWNLOAD_FAILED":
  40865.           case "NEW_ORDER_DRIVER_UNZIPPING_FAILED":
  40866.           case "NEW_ORDER_DRIVER_INSTALLATION_FAILED":
  40867.           case "NEW_ORDER_PROGRAM_DOWNLOAD_FAILED":
  40868.           case "NEW_ORDER_PROGRAM_INSTALLATION_FAILED":
  40869.             items = state.items.map(function(item) {
  40870.                 if (item.id === action.payload.id) return _extends({}, item, {
  40871.                     status: action.meta.status,
  40872.                     error: {
  40873.                         errorType: action.meta.errorType
  40874.                     }
  40875.                 }); else return item;
  40876.             });
  40877.             return _extends({}, state, {
  40878.                 items: items
  40879.             });
  40880.  
  40881.           case "NEW_ORDER_PROGRAM_INSTALLATION_STARTED":
  40882.             items = state.items.map(function(item) {
  40883.                 if (item.id === action.payload.id) return _extends({}, item, {
  40884.                     status: action.meta.status
  40885.                 }); else return item;
  40886.             });
  40887.             return _extends({}, state, {
  40888.                 items: items,
  40889.                 isYandexInstalled: state.isYandexInstalled || (0, _driversPrograms.isYandexBrowser)(action.payload)
  40890.             });
  40891.  
  40892.           case "NEW_ORDER_DRIVER_INSTALLATION_FINISHED":
  40893.             items = state.items.map(function(item) {
  40894.                 if (item.id === action.payload.id) {
  40895.                     var _action$meta = action.meta, status = _action$meta.status, rebootNeeded = _action$meta.rebootNeeded;
  40896.                     return _extends({}, item, {
  40897.                         status: status,
  40898.                         rebootNeeded: rebootNeeded
  40899.                     });
  40900.                 } else return item;
  40901.             });
  40902.             return _extends({}, state, {
  40903.                 items: items,
  40904.                 rebootNeeded: state.rebootNeeded || action.meta.rebootNeeded,
  40905.                 successDrivers: state.successDrivers + 1
  40906.             });
  40907.  
  40908.           case "NEW_ORDER_DRIVERS_INSTALL_ALL_SUCCESS":
  40909.             return _extends({}, state, {
  40910.                 result: "DRIVERS_DONE"
  40911.             });
  40912.  
  40913.           case "NEW_ORDER_PROGRAMS_INSTALL_ALL_SUCCESS":
  40914.             return _extends({}, state, {
  40915.                 result: "PROGRAMS_DONE"
  40916.             });
  40917.  
  40918.           case "NEW_ORDER_ITEM_CANCELED":
  40919.             items = state.items.map(function(item) {
  40920.                 if (item.id === action.payload.id) return _extends({}, item, {
  40921.                     status: "canceled"
  40922.                 }); else return item;
  40923.             });
  40924.             return _extends({}, state, {
  40925.                 items: items
  40926.             });
  40927.  
  40928.           case "NEW_ORDER_DOWNLOAD_FILE_SIZE_RECEIVED":
  40929.             items = state.items.map(function(item) {
  40930.                 if (item.id === action.payload.id) return _extends({}, item, {
  40931.                     downloading: _extends({}, item.downloading, {
  40932.                         totalFileSize: action.meta.totalFileSize
  40933.                     })
  40934.                 }); else return item;
  40935.             });
  40936.             return _extends({}, state, {
  40937.                 items: items
  40938.             });
  40939.  
  40940.           case "NEW_ORDER_DOWNLOAD_FILE_UPDATED":
  40941.             items = state.items.map(function(item) {
  40942.                 if (item.id === action.payload.id) return _extends({}, item, {
  40943.                     downloading: _extends({}, item.downloading, {
  40944.                         timeElapsed: action.meta.timeElapsed,
  40945.                         downloadedSize: action.meta.downloadedSize,
  40946.                         downloadingSpeed: action.meta.downloadingSpeed
  40947.                     })
  40948.                 }); else return item;
  40949.             });
  40950.             return _extends({}, state, {
  40951.                 items: items
  40952.             });
  40953.  
  40954.           case "NEW_ORDER_ZIP_TOTAL_COUNT_RECEIVED":
  40955.             items = state.items.map(function(item) {
  40956.                 if (item.id === action.payload.id) return _extends({}, item, {
  40957.                     unzipping: _extends({}, item.unzipping, {
  40958.                         totalCount: action.meta.totalCount
  40959.                     })
  40960.                 }); else return item;
  40961.             });
  40962.             return _extends({}, state, {
  40963.                 items: items
  40964.             });
  40965.  
  40966.           case "NEW_ORDER_UNZIPPED_PART_UPDATED":
  40967.             items = state.items.map(function(item) {
  40968.                 if (item.id === action.payload.id) return _extends({}, item, {
  40969.                     unzipping: _extends({}, item.unzipping, {
  40970.                         unzippedPercents: item.unzipping.totalCount ? Math.min(Math.max(Math.round(100 * action.meta.unzippedCount / item.unzipping.totalCount), item.unzipping.unzippedPercents), 100) : 0
  40971.                     })
  40972.                 }); else return item;
  40973.             });
  40974.             return _extends({}, state, {
  40975.                 items: items
  40976.             });
  40977.  
  40978.           case "NEW_ORDER_INSTALLATION_PROMOS_LOADED":
  40979.             return _extends({}, state, {
  40980.                 promos: action.promos
  40981.             });
  40982.  
  40983.           case "NEW_ORDER_INSTALLATION_PROMO_CONFIRMED":
  40984.             var promos = state.promos.map(function(promo) {
  40985.                 if (promo.id === action.payload.id) return _extends({}, promo, {
  40986.                     state: "confirmed"
  40987.                 }); else return promo;
  40988.             });
  40989.             return _extends({}, state, {
  40990.                 promos: promos
  40991.             });
  40992.  
  40993.           case "ERROR_DEVICES_COUNT_RECEIVED":
  40994.             return _extends({}, state, {
  40995.                 errorDevicesCount: action.meta.count
  40996.             });
  40997.  
  40998.           default:
  40999.             return state;
  41000.         }
  41001.     };
  41002.     module.exports = exports["default"];
  41003. }, function(module, exports, __webpack_require__) {
  41004.     "use strict";
  41005.     exports.__esModule = !0;
  41006.     var _extends = Object.assign || function(target) {
  41007.         for (var i = 1; i < arguments.length; i++) {
  41008.             var source = arguments[i];
  41009.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  41010.         }
  41011.         return target;
  41012.     }, defaultState = {
  41013.         languages: []
  41014.     };
  41015.     exports["default"] = function() {
  41016.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState, action = arguments[1];
  41017.         switch (action.type) {
  41018.           case "CURRENT_LANGUAGE_UPDATED":
  41019.             return _extends({}, state, {
  41020.                 currentLanguage: action.payload
  41021.             });
  41022.  
  41023.           case "MENU_LANGUAGES_LIST_LOADED":
  41024.             return _extends({}, state, {
  41025.                 languages: action.payload
  41026.             });
  41027.  
  41028.           default:
  41029.             return state;
  41030.         }
  41031.     };
  41032.     module.exports = exports["default"];
  41033. }, function(module, exports, __webpack_require__) {
  41034.     "use strict";
  41035.     exports.__esModule = !0;
  41036.     var _extends = Object.assign || function(target) {
  41037.         for (var i = 1; i < arguments.length; i++) {
  41038.             var source = arguments[i];
  41039.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  41040.         }
  41041.         return target;
  41042.     };
  41043.     exports["default"] = function() {
  41044.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
  41045.             status: "system_scanning"
  41046.         }, action = arguments[1];
  41047.         switch (action.type) {
  41048.           case "BACKUP_START":
  41049.             return _extends({}, state, {
  41050.                 now: "BACKUP"
  41051.             });
  41052.  
  41053.           case "BACKUP_SUCCESS":
  41054.             return _extends({}, state, {
  41055.                 now: "BACKUP_DONE"
  41056.             });
  41057.  
  41058.           case "BACKUP_FAILED":
  41059.             return _extends({}, state, {
  41060.                 now: "BACKUP_FAILED"
  41061.             });
  41062.  
  41063.           case "RUN_ERROR_DETECTED":
  41064.             return _extends({}, state, {
  41065.                 now: "RUN_ERROR"
  41066.             });
  41067.  
  41068.           case "LOADING_STATUS_UPDATED":
  41069.             return _extends({}, state, {
  41070.                 status: action.payload.status
  41071.             });
  41072.  
  41073.           case "DRIVERS_SCAN_SUCCESS":
  41074.             return _extends({}, state, {
  41075.                 status: "api_response_received"
  41076.             });
  41077.  
  41078.           case "INSTALLED_PROGRAMS_SCAN_FINISHED":
  41079.             return _extends({}, state, {
  41080.                 status: "protect_api_response_received"
  41081.             });
  41082.  
  41083.           default:
  41084.             return state;
  41085.         }
  41086.     };
  41087.     module.exports = exports["default"];
  41088. }, function(module, exports, __webpack_require__) {
  41089.     "use strict";
  41090.     exports.__esModule = !0;
  41091.     exports["default"] = function() {
  41092.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "LOADING_SCREEN", action = arguments[1];
  41093.         switch (action.type) {
  41094.           case "NAVIGATE":
  41095.             return action.page;
  41096.  
  41097.           case "NEW_ORDER_INSTALL_ALL_START":
  41098.             return "INSTALLATION";
  41099.  
  41100.           case "NEW_ORDER_DRIVERS_INSTALL_ALL_SUCCESS":
  41101.           case "NEW_ORDER_PROGRAMS_INSTALL_ALL_SUCCESS":
  41102.             return "FINAL_SCREEN";
  41103.  
  41104.           case "BACKUP_START":
  41105.             return "LOADING";
  41106.  
  41107.           case "NO_INTERNET_DETECTED":
  41108.             return "NO_INTERNET_SCREEN";
  41109.  
  41110.           default:
  41111.             return state;
  41112.         }
  41113.     };
  41114.     module.exports = exports["default"];
  41115. }, function(module, exports, __webpack_require__) {
  41116.     "use strict";
  41117.     function checkDownloaded(program) {
  41118.         var fileName = program.link.split("/").slice(-1)[0], path = "..\\programs\\" + fileName;
  41119.         if (!_system.fso.FileExists(path)) program = Object.assign({}, program, {
  41120.             name: "[Not downloaded] " + program.name,
  41121.             isChecked: program.isChecked && !window.delorean.isLocal
  41122.         });
  41123.         return program;
  41124.     }
  41125.     function remapAttrs(item) {
  41126.         var isChecked = !item.isInstalled && item.IsChecked && ((0, _driversPrograms.isDriverUtility)(item) && !(0,
  41127.         _driversPrograms.isNotifier)(item) || !_settings2["default"].get("general.selectSoftByDefault").value);
  41128.         return _extends({}, item, {
  41129.             link: item.URL,
  41130.             URL: undefined,
  41131.             name: item.Name,
  41132.             Name: undefined,
  41133.             version: item.Version,
  41134.             category: item.Category,
  41135.             Category: undefined,
  41136.             isCheckedByDefault: item.IsChecked,
  41137.             isChecked: isChecked,
  41138.             IsChecked: undefined,
  41139.             isCheckedForProtect: !item.isInstalled,
  41140.             isPartner: item.IsPartner,
  41141.             id: item.ID,
  41142.             description: item.Description,
  41143.             icon: item.Icon,
  41144.             publisher: item.Publisher,
  41145.             rating: item.Rating,
  41146.             isEulaChecked: (0, _driversPrograms.isVisibleStartScreenDeferredProgram)(item)
  41147.         });
  41148.     }
  41149.     function patchIfNotifier(item) {
  41150.         if ((0, _driversPrograms.isNotifier)(item)) return _extends({}, item, {
  41151.             isChecked: item.isChecked && _settings2["default"].get("general.installNotifier").value,
  41152.             isNotifierChecked: item.isCheckedByDefault && _settings2["default"].get("general.installNotifier").value
  41153.         }); else return item;
  41154.     }
  41155.     exports.__esModule = !0;
  41156.     var _extends = Object.assign || function(target) {
  41157.         for (var i = 1; i < arguments.length; i++) {
  41158.             var source = arguments[i];
  41159.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  41160.         }
  41161.         return target;
  41162.     }, _system = __webpack_require__(9), _driversPrograms = __webpack_require__(36), _settings = __webpack_require__(43), _settings2 = function(obj) {
  41163.         return obj && obj.__esModule ? obj : {
  41164.             "default": obj
  41165.         };
  41166.     }(_settings);
  41167.     exports["default"] = function() {
  41168.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [], action = arguments[1];
  41169.         switch (action.type) {
  41170.           case "PROGRAMS_LOADED":
  41171.             return action.payload.map(function(program) {
  41172.                 program = remapAttrs(program);
  41173.                 if (!1) program = checkDownloaded(program);
  41174.                 program = patchIfNotifier(program);
  41175.                 return program;
  41176.             });
  41177.  
  41178.           case "PROGRAMS_TOGGLED":
  41179.             return state.map(function(item) {
  41180.                 if (item.ID === action.payload.id) {
  41181.                     var _action$payload = action.payload, checked = _action$payload.checked, zone = _action$payload.zone, isChecked = item.isChecked, isNotifierChecked = item.isNotifierChecked;
  41182.                     if ((0, _driversPrograms.isNotifier)(item)) if ("DRIVER_UTILITIES" === zone) isNotifierChecked = checked; else if ("PROGRAMS_PAGE" === zone) isChecked = checked; else throw new Error("ProgramRow must have proper zone, not " + zone); else isChecked = checked;
  41183.                     return _extends({}, item, {
  41184.                         isNotifierChecked: isNotifierChecked,
  41185.                         isChecked: isChecked
  41186.                     });
  41187.                 } else return item;
  41188.             });
  41189.  
  41190.           case "NEW_ORDER_PROGRAM_INSTALLATION_FINISHED":
  41191.             return state.map(function(item) {
  41192.                 if (item.ID === action.payload.id) return _extends({}, item, {
  41193.                     isInstalled: !0
  41194.                 }); else return item;
  41195.             });
  41196.  
  41197.           case "TOGGLE_DRIVER_UTILITIES":
  41198.             return state.map(function(item) {
  41199.                 if ((0, _driversPrograms.isDriverUtility)(item)) if ((0, _driversPrograms.isNotifier)(item)) return _extends({}, item, {
  41200.                     isNotifierChecked: action.payload.isChecked
  41201.                 }); else return _extends({}, item, {
  41202.                     isChecked: action.payload.isChecked
  41203.                 }); else return item;
  41204.             });
  41205.  
  41206.           case "SETTINGS_SET_SETTING":
  41207.             if ("general.installNotifier" === action.payload.keyPath) return state.map(function(item) {
  41208.                 if ((0, _driversPrograms.isNotifier)(item)) return _extends({}, item, {
  41209.                     isChecked: action.payload.data.value,
  41210.                     isNotifierChecked: action.payload.data.value
  41211.                 }); else return item;
  41212.             }); else if ("general.selectSoftByDefault" === action.payload.keyPath) return state.map(function(item) {
  41213.                 if ((0, _driversPrograms.isDriverUtility)(item)) if ((0, _driversPrograms.isNotifier)(item)) return _extends({}, item, {
  41214.                     isChecked: item.isCheckedByDefault && !action.payload.data.value && _settings2["default"].get("general.installNotifier").value
  41215.                 }); else return item; else return _extends({}, item, {
  41216.                     isChecked: !action.payload.data.value ? item.isCheckedByDefault : !1
  41217.                 });
  41218.             }); else return state;
  41219.  
  41220.           case "PROTECT_TOGGLE_SECURITY_PROGRAM":
  41221.             return state.map(function(item) {
  41222.                 return item.ID === action.payload.id ? _extends({}, item, {
  41223.                     isCheckedForProtect: action.payload.isChecked
  41224.                 }) : item;
  41225.             });
  41226.  
  41227.           case "TOGGLE_PROGRAM_EULA":
  41228.             return state.map(function(item) {
  41229.                 return item.ID === action.payload.id ? _extends({}, item, {
  41230.                     isEulaChecked: action.payload.isEulaChecked
  41231.                 }) : item;
  41232.             });
  41233.  
  41234.           default:
  41235.             return state;
  41236.         }
  41237.     };
  41238.     module.exports = exports["default"];
  41239. }, function(module, exports, __webpack_require__) {
  41240.     "use strict";
  41241.     exports.__esModule = !0;
  41242.     var _extends = Object.assign || function(target) {
  41243.         for (var i = 1; i < arguments.length; i++) {
  41244.             var source = arguments[i];
  41245.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  41246.         }
  41247.         return target;
  41248.     }, initialState = {
  41249.         isUsefulHidden: !0,
  41250.         isActiveRemoving: !1,
  41251.         isActiveRemovingAll: !1,
  41252.         isActiveBrowserCleaning: !1,
  41253.         installedProgramsExpanded: !1,
  41254.         isUninstallRatePopoverOpened: !1,
  41255.         isAPIFailed: !0,
  41256.         apiData: []
  41257.     }, getRemovalRate = function(item) {
  41258.         var removalRate = void 0;
  41259.         if (item.uninstallPercents >= 70) removalRate = "large"; else if (item.uninstallPercents >= 50 && item.uninstallPercents < 70) removalRate = "middle"; else removalRate = "small";
  41260.         return removalRate;
  41261.     }, comparePrograms = function(a, b) {
  41262.         return b.uninstallPercents - a.uninstallPercents;
  41263.     };
  41264.     exports["default"] = function() {
  41265.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState, action = arguments[1];
  41266.         switch (action.type) {
  41267.           case "INSTALLED_PROGRAMS_SCAN_FINISHED":
  41268.             var currentId = 0, removalRate = void 0;
  41269.             return _extends({}, state, {
  41270.                 isAPIFailed: !action.payload,
  41271.                 apiData: action.payload ? action.payload.map(function(program) {
  41272.                     currentId++;
  41273.                     removalRate = getRemovalRate(program);
  41274.                     return _extends({}, program, {
  41275.                         id: currentId,
  41276.                         removalRate: removalRate,
  41277.                         isHarmful: "large" === removalRate,
  41278.                         isChecked: "large" === removalRate,
  41279.                         starsCount: Math.round(program.rating / 60),
  41280.                         isRemoving: !1,
  41281.                         isExpanded: !1
  41282.                     });
  41283.                 }).sort(comparePrograms) : []
  41284.             });
  41285.  
  41286.           case "PROTECT_SCREEN_RESET":
  41287.             return _extends({}, state, {
  41288.                 apiData: state.apiData.map(function(item) {
  41289.                     return _extends({}, item, {
  41290.                         isChecked: item.isHarmful
  41291.                     });
  41292.                 })
  41293.             });
  41294.  
  41295.           case "PROTECT_SCREEN_TOGGLE_USEFUL_PROGRAMS":
  41296.             return _extends({}, state, {
  41297.                 isUsefulHidden: !state.isUsefulHidden
  41298.             });
  41299.  
  41300.           case "INSTALLED_PROGRAM_TOGGLED":
  41301.             return _extends({}, state, {
  41302.                 apiData: state.apiData.map(function(item) {
  41303.                     if (item.id === action.payload.id) return _extends({}, item, {
  41304.                         isChecked: action.payload.isChecked
  41305.                     }); else return item;
  41306.                 })
  41307.             });
  41308.  
  41309.           case "INSTALLED_PROGRAM_EXPANDED":
  41310.             return _extends({}, state, {
  41311.                 apiData: state.apiData.map(function(item) {
  41312.                     if (item.id === action.payload.id) return _extends({}, item, {
  41313.                         isExpanded: action.payload.isExpanded
  41314.                     }); else return item;
  41315.                 })
  41316.             });
  41317.  
  41318.           case "INSTALLED_PROGRAM_REMOVING_STARTED":
  41319.             return _extends({}, state, {
  41320.                 isActiveRemoving: !0,
  41321.                 apiData: state.apiData.map(function(item) {
  41322.                     if (item.id === action.payload.id) return _extends({}, item, {
  41323.                         isRemoving: !0
  41324.                     }); else return item;
  41325.                 })
  41326.             });
  41327.  
  41328.           case "INSTALLED_PROGRAM_REMOVING_SUCCESS":
  41329.           case "INSTALLED_PROGRAM_REMOVING_FAILED":
  41330.             return _extends({}, state, {
  41331.                 isActiveRemoving: !1,
  41332.                 apiData: state.apiData.filter(function(item) {
  41333.                     return item.id !== action.payload.id;
  41334.                 })
  41335.             });
  41336.  
  41337.           case "REMOVING_ALL_HARMFUL_PROGRAMS_STARTED":
  41338.             return _extends({}, state, {
  41339.                 isActiveRemovingAll: !0
  41340.             });
  41341.  
  41342.           case "REMOVING_ALL_HARMFUL_PROGRAMS_FINISHED":
  41343.             return _extends({}, state, {
  41344.                 isActiveRemovingAll: !1
  41345.             });
  41346.  
  41347.           case "REMOVING_HARMFUL_PROGRAM_SUCCESS":
  41348.             return _extends({}, state, {
  41349.                 apiData: state.apiData.filter(function(item) {
  41350.                     return item.id !== action.payload.id;
  41351.                 })
  41352.             });
  41353.  
  41354.           case "CHROME_CLEANING_STARTED":
  41355.             return _extends({}, state, {
  41356.                 isActiveBrowserCleaning: !0
  41357.             });
  41358.  
  41359.           case "CHROME_CLEANING_FINISHED":
  41360.             return _extends({}, state, {
  41361.                 isActiveBrowserCleaning: !1
  41362.             });
  41363.  
  41364.           case "ALL_INSTALLED_PROGRAMS_EXPANDED":
  41365.             return _extends({}, state, {
  41366.                 installedProgramsExpanded: !state.installedProgramsExpanded
  41367.             });
  41368.  
  41369.           case "UNINSTALL_RATE_POPOVER_TOGGLED":
  41370.             return _extends({}, state, {
  41371.                 isUninstallRatePopoverOpened: action.payload.isOpened
  41372.             });
  41373.  
  41374.           default:
  41375.             return state;
  41376.         }
  41377.     };
  41378.     module.exports = exports["default"];
  41379. }, function(module, exports, __webpack_require__) {
  41380.     "use strict";
  41381.     exports.__esModule = !0;
  41382.     var _extends = Object.assign || function(target) {
  41383.         for (var i = 1; i < arguments.length; i++) {
  41384.             var source = arguments[i];
  41385.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  41386.         }
  41387.         return target;
  41388.     }, prepareSettings = function(_ref) {
  41389.         var settingsData = _ref.settingsData, settings = _ref.settings, result = _extends({}, settingsData);
  41390.         Object.entries(settingsData).forEach(function(_ref2) {
  41391.             var sectionId = _ref2[0], section = _ref2[1];
  41392.             Object.entries(section.settings).forEach(function(_ref3) {
  41393.                 var settingId = _ref3[0], setting = _ref3[1], currentSetting = settings[sectionId][settingId], extendedSetting = _extends({}, setting, currentSetting);
  41394.                 result[sectionId].settings[settingId] = extendedSetting;
  41395.             });
  41396.         });
  41397.         return result;
  41398.     }, newState = void 0, data = void 0, sectionId = void 0, settingId = void 0;
  41399.     exports["default"] = function() {
  41400.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, action = arguments[1];
  41401.         switch (action.type) {
  41402.           case "SETTINGS_LOADED":
  41403.             return _extends({}, state, prepareSettings(action.payload));
  41404.  
  41405.           case "SETTINGS_SET_SETTING":
  41406.             var _action$payload$keyPa = action.payload.keyPath.split(".");
  41407.             sectionId = _action$payload$keyPa[0];
  41408.             settingId = _action$payload$keyPa[1];
  41409.             data = action.payload.data;
  41410.             newState = _extends({}, state);
  41411.             newState[sectionId].settings[settingId] = _extends({}, newState[sectionId].settings[settingId], data);
  41412.             return newState;
  41413.  
  41414.           case "SETTINGS_DISABLE_SETTING":
  41415.             var _action$payload$keyPa2 = action.payload.keyPath.split(".");
  41416.             sectionId = _action$payload$keyPa2[0];
  41417.             settingId = _action$payload$keyPa2[1];
  41418.             data = action.payload.data;
  41419.             newState = _extends({}, state);
  41420.             newState[sectionId].settings[settingId] = _extends({}, newState[sectionId].settings[settingId], data, {
  41421.                 disabled: !0
  41422.             });
  41423.             return newState;
  41424.  
  41425.           case "SETTINGS_ENABLE_SETTING":
  41426.             var _action$payload$keyPa3 = action.payload.keyPath.split(".");
  41427.             sectionId = _action$payload$keyPa3[0];
  41428.             settingId = _action$payload$keyPa3[1];
  41429.             data = action.payload.data;
  41430.             newState = _extends({}, state);
  41431.             newState[sectionId].settings[settingId] = _extends({}, newState[sectionId].settings[settingId], {
  41432.                 value: newState[sectionId].settings[settingId].defaultValue,
  41433.                 disabled: !1
  41434.             });
  41435.             return newState;
  41436.  
  41437.           default:
  41438.             return state;
  41439.         }
  41440.     };
  41441.     module.exports = exports["default"];
  41442. }, function(module, exports, __webpack_require__) {
  41443.     "use strict";
  41444.     exports.__esModule = !0;
  41445.     var _extends = Object.assign || function(target) {
  41446.         for (var i = 1; i < arguments.length; i++) {
  41447.             var source = arguments[i];
  41448.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  41449.         }
  41450.         return target;
  41451.     }, initialState = {
  41452.         driversIsExpanded: !1,
  41453.         programsIsExpanded: !1,
  41454.         driversPopoverIsOpened: !1,
  41455.         programsPopoverIsOpened: !1,
  41456.         diagnosticsPopoverIsOpened: !1
  41457.     };
  41458.     exports["default"] = function() {
  41459.         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
  41460.         switch (arguments[1].type) {
  41461.           case "START_SCREEN_DRIVERS_POPOVER_OPENED":
  41462.             return _extends({}, state, {
  41463.                 driversPopoverIsOpened: !0,
  41464.                 programsPopoverIsOpened: !1,
  41465.                 diagnosticsPopoverIsOpened: !1
  41466.             });
  41467.  
  41468.           case "START_SCREEN_PROGRAMS_POPOVER_OPENED":
  41469.             return _extends({}, state, {
  41470.                 driversPopoverIsOpened: !1,
  41471.                 programsPopoverIsOpened: !0,
  41472.                 diagnosticsPopoverIsOpened: !1
  41473.             });
  41474.  
  41475.           case "START_SCREEN_DIAGNOSTICS_POPOVER_OPENED":
  41476.             return _extends({}, state, {
  41477.                 driversPopoverIsOpened: !1,
  41478.                 programsPopoverIsOpened: !1,
  41479.                 diagnosticsPopoverIsOpened: !0
  41480.             });
  41481.  
  41482.           case "START_SCREEN_POPOVERS_CLOSED":
  41483.             return _extends({}, state, {
  41484.                 driversPopoverIsOpened: !1,
  41485.                 programsPopoverIsOpened: !1,
  41486.                 diagnosticsPopoverIsOpened: !1
  41487.             });
  41488.  
  41489.           case "START_SCREEN_DRIVERS_EXPANDED":
  41490.             return _extends({}, state, {
  41491.                 driversIsExpanded: !0
  41492.             });
  41493.  
  41494.           case "START_SCREEN_PROGRAMS_EXPANDED":
  41495.             return _extends({}, state, {
  41496.                 programsIsExpanded: !0
  41497.             });
  41498.  
  41499.           default:
  41500.             return state;
  41501.         }
  41502.     };
  41503.     module.exports = exports["default"];
  41504. }, function(module, exports, __webpack_require__) {
  41505.     "use strict";
  41506.     function _interopRequireDefault(obj) {
  41507.         return obj && obj.__esModule ? obj : {
  41508.             "default": obj
  41509.         };
  41510.     }
  41511.     exports.__esModule = !0;
  41512.     var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _createProvider = __webpack_require__(748), _createProvider2 = _interopRequireDefault(_createProvider);
  41513.     exports["default"] = (0, _createProvider2["default"])(_react2["default"]);
  41514.     module.exports = exports["default"];
  41515. }, function(module, exports, __webpack_require__) {
  41516.     "use strict";
  41517.     (function(process) {
  41518.         function _interopRequireDefault(obj) {
  41519.             return obj && obj.__esModule ? obj : {
  41520.                 "default": obj
  41521.             };
  41522.         }
  41523.         function getDisplayName(Component) {
  41524.             return Component.displayName || Component.name || "Component";
  41525.         }
  41526.         function createConnect(React) {
  41527.             var PropTypes = React.PropTypes, storeShape = (0, _createStoreShape2["default"])(PropTypes);
  41528.             return function(mapStateToProps, mapDispatchToProps, mergeProps) {
  41529.                 function computeStateProps(store, props) {
  41530.                     var state = store.getState(), stateProps = shouldUpdateStateProps ? finalMapStateToProps(state, props) : finalMapStateToProps(state);
  41531.                     (0, _invariant2["default"])((0, _isPlainObject2["default"])(stateProps), "`mapStateToProps` must return an object. Instead received %s.", stateProps);
  41532.                     return stateProps;
  41533.                 }
  41534.                 function computeDispatchProps(store, props) {
  41535.                     var dispatch = store.dispatch, dispatchProps = shouldUpdateDispatchProps ? finalMapDispatchToProps(dispatch, props) : finalMapDispatchToProps(dispatch);
  41536.                     (0, _invariant2["default"])((0, _isPlainObject2["default"])(dispatchProps), "`mapDispatchToProps` must return an object. Instead received %s.", dispatchProps);
  41537.                     return dispatchProps;
  41538.                 }
  41539.                 function _computeNextState(stateProps, dispatchProps, parentProps) {
  41540.                     var mergedProps = finalMergeProps(stateProps, dispatchProps, parentProps);
  41541.                     (0, _invariant2["default"])((0, _isPlainObject2["default"])(mergedProps), "`mergeProps` must return an object. Instead received %s.", mergedProps);
  41542.                     return mergedProps;
  41543.                 }
  41544.                 var shouldSubscribe = Boolean(mapStateToProps), finalMapStateToProps = mapStateToProps || defaultMapStateToProps, finalMapDispatchToProps = (0,
  41545.                 _isPlainObject2["default"])(mapDispatchToProps) ? (0, _wrapActionCreators2["default"])(mapDispatchToProps) : mapDispatchToProps || defaultMapDispatchToProps, finalMergeProps = mergeProps || defaultMergeProps, shouldUpdateStateProps = finalMapStateToProps.length > 1, shouldUpdateDispatchProps = finalMapDispatchToProps.length > 1, version = nextVersion++;
  41546.                 return function(WrappedComponent) {
  41547.                     var Connect = React.createClass({
  41548.                         displayName: "Connect(" + getDisplayName(WrappedComponent) + ")",
  41549.                         WrappedComponent: WrappedComponent,
  41550.                         contextTypes: {
  41551.                             store: storeShape
  41552.                         },
  41553.                         propTypes: {
  41554.                             store: storeShape
  41555.                         },
  41556.                         shouldComponentUpdate: function(nextProps, nextState) {
  41557.                             return !(0, _shallowEqual2["default"])(this.state.props, nextState.props);
  41558.                         },
  41559.                         getInitialState: function() {
  41560.                             var props = this.props, context = this.context;
  41561.                             this.version = version;
  41562.                             this.store = props.store || context.store;
  41563.                             (0, _invariant2["default"])(this.store, 'Could not find "store" in either the context or props of "' + this.constructor.displayName + '". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "' + this.constructor.displayName + '".');
  41564.                             this.stateProps = computeStateProps(this.store, props);
  41565.                             this.dispatchProps = computeDispatchProps(this.store, props);
  41566.                             return {
  41567.                                 props: this.computeNextState()
  41568.                             };
  41569.                         },
  41570.                         computeNextState: function() {
  41571.                             var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;
  41572.                             return _computeNextState(this.stateProps, this.dispatchProps, props);
  41573.                         },
  41574.                         updateStateProps: function() {
  41575.                             var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props, nextStateProps = computeStateProps(this.store, props);
  41576.                             if ((0, _shallowEqual2["default"])(nextStateProps, this.stateProps)) return !1;
  41577.                             this.stateProps = nextStateProps;
  41578.                             return !0;
  41579.                         },
  41580.                         updateDispatchProps: function() {
  41581.                             var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props, nextDispatchProps = computeDispatchProps(this.store, props);
  41582.                             if ((0, _shallowEqual2["default"])(nextDispatchProps, this.dispatchProps)) return !1;
  41583.                             this.dispatchProps = nextDispatchProps;
  41584.                             return !0;
  41585.                         },
  41586.                         updateState: function() {
  41587.                             var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props, nextState = this.computeNextState(props);
  41588.                             if (!(0, _shallowEqual2["default"])(nextState, this.state.props)) this.setState({
  41589.                                 props: nextState
  41590.                             });
  41591.                         },
  41592.                         isSubscribed: function() {
  41593.                             return "function" == typeof this.unsubscribe;
  41594.                         },
  41595.                         trySubscribe: function() {
  41596.                             if (shouldSubscribe && !this.unsubscribe) {
  41597.                                 this.unsubscribe = this.store.subscribe(this.handleChange);
  41598.                                 this.handleChange();
  41599.                             }
  41600.                         },
  41601.                         tryUnsubscribe: function() {
  41602.                             if (this.unsubscribe) {
  41603.                                 this.unsubscribe();
  41604.                                 this.unsubscribe = null;
  41605.                             }
  41606.                         },
  41607.                         componentDidMount: function() {
  41608.                             this.trySubscribe();
  41609.                         },
  41610.                         componentWillReceiveProps: function(nextProps) {
  41611.                             if (!(0, _shallowEqual2["default"])(nextProps, this.props)) {
  41612.                                 if (shouldUpdateStateProps) this.updateStateProps(nextProps);
  41613.                                 if (shouldUpdateDispatchProps) this.updateDispatchProps(nextProps);
  41614.                                 this.updateState(nextProps);
  41615.                             }
  41616.                         },
  41617.                         componentWillUnmount: function() {
  41618.                             this.tryUnsubscribe();
  41619.                         },
  41620.                         handleChange: function() {
  41621.                             if (this.updateStateProps()) this.updateState();
  41622.                         },
  41623.                         getWrappedInstance: function() {
  41624.                             return this.refs.wrappedInstance;
  41625.                         },
  41626.                         render: function() {
  41627.                             return WrappedComponent(_extends({
  41628.                                 ref: "wrappedInstance"
  41629.                             }, this.state.props));
  41630.                         }
  41631.                     });
  41632.                     if (void 0 !== process && "undefined" != typeof process.env) Connect.prototype.componentWillUpdate = function() {
  41633.                         if (this.version !== version) {
  41634.                             this.version = version;
  41635.                             this.trySubscribe();
  41636.                             this.updateStateProps();
  41637.                             this.updateDispatchProps();
  41638.                             this.updateState();
  41639.                         }
  41640.                     };
  41641.                     return Connect;
  41642.                 };
  41643.             };
  41644.         }
  41645.         exports.__esModule = !0;
  41646.         var _extends = Object.assign || function(target) {
  41647.             for (var i = 1; i < arguments.length; i++) {
  41648.                 var source = arguments[i];
  41649.                 for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  41650.             }
  41651.             return target;
  41652.         };
  41653.         exports["default"] = createConnect;
  41654.         var _createStoreShape = __webpack_require__(313), _createStoreShape2 = _interopRequireDefault(_createStoreShape), _shallowEqual = __webpack_require__(650), _shallowEqual2 = _interopRequireDefault(_shallowEqual), _isPlainObject = __webpack_require__(649), _isPlainObject2 = _interopRequireDefault(_isPlainObject), _wrapActionCreators = __webpack_require__(651), _wrapActionCreators2 = _interopRequireDefault(_wrapActionCreators), _invariant = __webpack_require__(204), _invariant2 = _interopRequireDefault(_invariant), defaultMapStateToProps = function() {
  41655.             return {};
  41656.         }, defaultMapDispatchToProps = function(dispatch) {
  41657.             return {
  41658.                 dispatch: dispatch
  41659.             };
  41660.         }, defaultMergeProps = function(stateProps, dispatchProps, parentProps) {
  41661.             return _extends({}, parentProps, stateProps, dispatchProps);
  41662.         }, nextVersion = 0;
  41663.         module.exports = exports["default"];
  41664.     }).call(exports, __webpack_require__(209));
  41665. }, function(module, exports, __webpack_require__) {
  41666.     "use strict";
  41667.     function createProvider(React) {
  41668.         var PropTypes = React.PropTypes, storeShape = (0, _createStoreShape2["default"])(PropTypes);
  41669.         return React.createClass({
  41670.             childContextTypes: {
  41671.                 store: storeShape.isRequired
  41672.             },
  41673.             propTypes: {
  41674.                 children: PropTypes.func.isRequired,
  41675.                 store: storeShape.isRequired
  41676.             },
  41677.             getChildContext: function() {
  41678.                 return {
  41679.                     store: this.state.store
  41680.                 };
  41681.             },
  41682.             getInitialState: function() {
  41683.                 return {
  41684.                     store: this.props.store
  41685.                 };
  41686.             },
  41687.             componentWillReceiveProps: function(nextProps) {
  41688.                 var store = this.state.store, nextStore = nextProps.store;
  41689.                 if (store !== nextStore) {
  41690.                     var nextReducer = nextStore.getReducer();
  41691.                     store.replaceReducer(nextReducer);
  41692.                 }
  41693.             },
  41694.             render: function() {
  41695.                 return (0, this.props.children)();
  41696.             }
  41697.         });
  41698.     }
  41699.     exports.__esModule = !0;
  41700.     exports["default"] = createProvider;
  41701.     var _createStoreShape = __webpack_require__(313), _createStoreShape2 = function(obj) {
  41702.         return obj && obj.__esModule ? obj : {
  41703.             "default": obj
  41704.         };
  41705.     }(_createStoreShape);
  41706.     module.exports = exports["default"];
  41707. }, function(module, exports, __webpack_require__) {
  41708.     "use strict";
  41709.     exports.__esModule = !0;
  41710.     var _redux = __webpack_require__(315), _reduxThunk = __webpack_require__(653), _reduxThunk2 = function(obj) {
  41711.         return obj && obj.__esModule ? obj : {
  41712.             "default": obj
  41713.         };
  41714.     }(_reduxThunk), _index = __webpack_require__(737), reducers = function(obj) {
  41715.         if (obj && obj.__esModule) return obj; else {
  41716.             var newObj = {};
  41717.             if (null != obj) for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
  41718.             newObj["default"] = obj;
  41719.             return newObj;
  41720.         }
  41721.     }(_index), enhancedCreateStore = void 0;
  41722.     if (!1) {
  41723.         var _require = require("redux"), compose = _require.compose;
  41724.         enhancedCreateStore = compose((0, _redux.applyMiddleware)(_reduxThunk2["default"]), require("redux-devtools").devTools(), require("redux-devtools").persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/)), _redux.createStore);
  41725.     } else enhancedCreateStore = (0, _redux.applyMiddleware)(_reduxThunk2["default"])(_redux.createStore);
  41726.     exports["default"] = function(initialState) {
  41727.         var reducer = (0, _redux.combineReducers)(reducers), store = enhancedCreateStore(reducer, initialState);
  41728.         if (!1) module.hot.accept("../reducers/index", function() {
  41729.             store.replaceReducer((0, _redux.combineReducers)(require("../reducers/index")));
  41730.         });
  41731.         return store;
  41732.     };
  41733.     module.exports = exports["default"];
  41734. }, function(module, exports, __webpack_require__) {
  41735.     "use strict";
  41736.     function _classCallCheck(instance, Constructor) {
  41737.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  41738.     }
  41739.     exports.__esModule = !0;
  41740.     var _logs = __webpack_require__(3), _system = __webpack_require__(9), _specialFolders = __webpack_require__(22), _localFiles = __webpack_require__(20), log = (0,
  41741.     _logs.getLogger)("snapshot"), toFixed = function(num) {
  41742.         return ("0" + num).slice(-2);
  41743.     }, Snapshot = function() {
  41744.         function Snapshot() {
  41745.             _classCallCheck(this, Snapshot);
  41746.             this.diagnosticsDir = _specialFolders.AppFolder + "\\diagnostics";
  41747.             this.snaphotsDir = _specialFolders.AppFolder + "\\snapshots";
  41748.         }
  41749.         Snapshot.prototype.createFilename = function() {
  41750.             var today = new Date();
  41751.             return [ "DriverPack", "Snapshot", [ today.getFullYear(), toFixed(today.getMonth() + 1), toFixed(today.getDate()) ].join(""), [ toFixed(today.getHours()), toFixed(today.getMinutes()), toFixed(today.getSeconds()) ].join("") ].join("_") + ".zip";
  41752.         };
  41753.         Snapshot.prototype.create = function() {
  41754.             try {
  41755.                 (0, _localFiles.ensurePath)(this.snaphotsDir);
  41756.                 var zipFilePath = this.snaphotsDir + "\\" + this.createFilename();
  41757.                 _system.WshShell.Run('tools\\driverpack-7za.exe a "' + zipFilePath + '" "' + this.diagnosticsDir + '\\*"', 0, !0);
  41758.                 log.info("snapshot created " + zipFilePath, {
  41759.                     zipFilePath: zipFilePath
  41760.                 }, "created");
  41761.             } catch (error) {
  41762.                 log.error("snapshot failed", {
  41763.                     error: error
  41764.                 }, "failed");
  41765.             }
  41766.         };
  41767.         Snapshot.prototype.apply = function() {
  41768.             this.load(this.getFile());
  41769.         };
  41770.         Snapshot.prototype.getFile = function() {
  41771.             return _system.WshShell.Exec("mshta.exe \"about: <input type=file id=X><script>X.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(X.value);close();resizeTo(0,0);<\/script>\"").StdOut.ReadAll().trim();
  41772.         };
  41773.         Snapshot.prototype.load = function(filePath) {
  41774.             if (filePath && filePath.endsWith("zip")) {
  41775.                 _system.WshShell.Run('tools\\driverpack-7za.exe e "' + filePath + '" -o"' + this.diagnosticsDir + '" *.json -y', 0, !0);
  41776.                 var prevCurDir = _system.WshShell.CurrentDirectory;
  41777.                 _system.WshShell.CurrentDirectory = this.diagnosticsDir;
  41778.                 _system.WshShell.Run('cmd /c "for %f in (.\\*) do copy /y /b %f+,,"', 0, !0);
  41779.                 _system.WshShell.CurrentDirectory = prevCurDir;
  41780.                 log.info("snapshot loaded " + filePath, {
  41781.                     filePath: filePath
  41782.                 }, "loaded");
  41783.                 window.onbeforeunload = null;
  41784.                 window.location.reload();
  41785.             }
  41786.         };
  41787.         return Snapshot;
  41788.     }();
  41789.     exports["default"] = window.snapshot = new Snapshot();
  41790.     module.exports = exports["default"];
  41791. }, function(module, exports, __webpack_require__) {
  41792.     "use strict";
  41793.     function _interopRequireDefault(obj) {
  41794.         return obj && obj.__esModule ? obj : {
  41795.             "default": obj
  41796.         };
  41797.     }
  41798.     function _asyncToGenerator(fn) {
  41799.         return function() {
  41800.             var gen = fn.apply(this, arguments);
  41801.             return new Promise(function(resolve, reject) {
  41802.                 function step(key, arg) {
  41803.                     try {
  41804.                         var info = gen[key](arg), value = info.value;
  41805.                     } catch (error) {
  41806.                         reject(error);
  41807.                         return;
  41808.                     }
  41809.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  41810.                         step("next", value);
  41811.                     }, function(err) {
  41812.                         step("throw", err);
  41813.                     });
  41814.                 }
  41815.                 return step("next");
  41816.             });
  41817.         };
  41818.     }
  41819.     function _classCallCheck(instance, Constructor) {
  41820.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  41821.     }
  41822.     exports.__esModule = !0;
  41823.     var _extends = Object.assign || function(target) {
  41824.         for (var i = 1; i < arguments.length; i++) {
  41825.             var source = arguments[i];
  41826.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  41827.         }
  41828.         return target;
  41829.     }, _pick = __webpack_require__(282), _pick2 = _interopRequireDefault(_pick), _logs = __webpack_require__(3), _system = __webpack_require__(9), _specialFolders = __webpack_require__(22), _localFiles = __webpack_require__(20), _devcon = __webpack_require__(320), _devcon2 = _interopRequireDefault(_devcon), _wget = __webpack_require__(150), _wget2 = _interopRequireDefault(_wget), _unzip = __webpack_require__(167), _unzip2 = _interopRequireDefault(_unzip), _systemScanner = __webpack_require__(86), _systemScanner2 = _interopRequireDefault(_systemScanner), _softPack = __webpack_require__(166), _softPack2 = _interopRequireDefault(_softPack), _recoverInternet = __webpack_require__(328), _SetupAPILog = __webpack_require__(752), _SetupAPILog2 = _interopRequireDefault(_SetupAPILog), _getHardware = __webpack_require__(101), _ref = !1 ? require("../emulator/emulator-patcher") : __webpack_require__(127), runCommandAsync = _ref.runCommandAsync, log = (0,
  41830.     _logs.getLogger)("newOrder"), successSetupRe = /^\s*!!!/, devconRe = /devcon(?:64)?\.exe/, setupAPILog = void 0, InstallingItem = function() {
  41831.         function InstallingItem(item, installationSessionId) {
  41832.             _classCallCheck(this, InstallingItem);
  41833.             Object.assign(this, item, {
  41834.                 installationSessionId: installationSessionId,
  41835.                 setupapi: {}
  41836.             });
  41837.             this.init();
  41838.         }
  41839.         InstallingItem.prototype.init = function() {
  41840.             var _this = this;
  41841.             this.status = "waiting";
  41842.             this.isAwaitingInstalling = !1;
  41843.             this.jobId = this.generateJobId();
  41844.             if (this.isDriver) this.recommendedDriver.jobId = this.jobId;
  41845.             this.downloadPromise = new Promise(function(resolve, reject) {
  41846.                 _this.downloadDeferred = {
  41847.                     resolve: resolve,
  41848.                     reject: reject
  41849.                 };
  41850.             });
  41851.             this.unzipPromise = new Promise(function(resolve, reject) {
  41852.                 _this.unzipDeferred = {
  41853.                     resolve: resolve,
  41854.                     reject: reject
  41855.                 };
  41856.             });
  41857.             this.installStartTrigger = new Promise(function(resolve, reject) {
  41858.                 _this.installStartDeferred = {
  41859.                     resolve: resolve,
  41860.                     reject: reject
  41861.                 };
  41862.             });
  41863.         };
  41864.         InstallingItem.prototype.download = function() {
  41865.             var _this2 = this;
  41866.             (0, _recoverInternet.recoverWifiProfile)();
  41867.             return function() {
  41868.                 var _ref2 = _asyncToGenerator(regeneratorRuntime.mark(function _callee(dispatch) {
  41869.                     var type, name, installationSessionId, downloadPromise;
  41870.                     return regeneratorRuntime.wrap(function(_context) {
  41871.                         for (;;) switch (_context.prev = _context.next) {
  41872.                           case 0:
  41873.                             if ("waiting" !== _this2.status) {
  41874.                                 _context.next = 20;
  41875.                                 break;
  41876.                             }
  41877.                             _this2.status = "downloading";
  41878.                             type = _this2.isDriver ? "driver" : "soft";
  41879.                             name = _this2.name, installationSessionId = _this2.installationSessionId;
  41880.                             downloadPromise = _this2.isDriver ? dispatch(_this2.downloadDriver()) : dispatch(_this2.downloadProgram());
  41881.                             _context.prev = 5;
  41882.                             _context.next = 8;
  41883.                             return downloadPromise;
  41884.  
  41885.                           case 8:
  41886.                             _this2.status = "downloaded";
  41887.                             log.info("downloaded: " + name, {
  41888.                                 name: name,
  41889.                                 installationSessionId: installationSessionId
  41890.                             }, type + ":download:finished");
  41891.                             _this2.downloadDeferred.resolve();
  41892.                             _context.next = 17;
  41893.                             break;
  41894.  
  41895.                           case 13:
  41896.                             _context.prev = 13;
  41897.                             _context.t0 = _context["catch"](5);
  41898.                             _this2.status = "error";
  41899.                             _this2.downloadDeferred.reject();
  41900.  
  41901.                           case 17:
  41902.                             _context.prev = 17;
  41903.                             clearInterval(_this2.downloadingTimer);
  41904.                             return _context.finish(17);
  41905.  
  41906.                           case 20:
  41907.                             return _context.abrupt("return", !0);
  41908.  
  41909.                           case 21:
  41910.                           case "end":
  41911.                             return _context.stop();
  41912.                         }
  41913.                     }, _callee, _this2, [ [ 5, 13, 17, 20 ] ]);
  41914.                 }));
  41915.                 return function(_x) {
  41916.                     return _ref2.apply(this, arguments);
  41917.                 };
  41918.             }();
  41919.         };
  41920.         InstallingItem.prototype.getDriverStatistics = function() {
  41921.             function getDriverStatistics() {
  41922.                 return _ref3.apply(this, arguments);
  41923.             }
  41924.             var _ref3 = _asyncToGenerator(regeneratorRuntime.mark(function _callee2() {
  41925.                 var deviceId, recommendedDriver, pack, directory, inf, version, hardwareId, deviceStatus, _systemScanner$query, model, windows;
  41926.                 return regeneratorRuntime.wrap(function(_context2) {
  41927.                     for (;;) switch (_context2.prev = _context2.next) {
  41928.                       case 0:
  41929.                         deviceId = this.deviceId, recommendedDriver = this.recommendedDriver;
  41930.                         pack = recommendedDriver.pack, directory = recommendedDriver.directory, inf = recommendedDriver.inf,
  41931.                         version = recommendedDriver.version, hardwareId = recommendedDriver.hardwareId;
  41932.                         _context2.next = 4;
  41933.                         return (0, _getHardware.getDevicesStatus)([ deviceId ])[0];
  41934.  
  41935.                       case 4:
  41936.                         deviceStatus = _context2.sent;
  41937.                         _systemScanner$query = _systemScanner2["default"].query, model = _systemScanner$query.model,
  41938.                         windows = _systemScanner$query.windows;
  41939.                         return _context2.abrupt("return", {
  41940.                             model: (0, _pick2["default"])(model, [ "type", "vendor" ]),
  41941.                             windows: windows,
  41942.                             device: {
  41943.                                 deviceId: deviceId,
  41944.                                 hardwareId: hardwareId,
  41945.                                 status: (0, _pick2["default"])(deviceStatus, [ "status", "statusCode" ])
  41946.                             },
  41947.                             driver: {
  41948.                                 pack: pack,
  41949.                                 directory: directory,
  41950.                                 inf: inf,
  41951.                                 version: version
  41952.                             }
  41953.                         });
  41954.  
  41955.                       case 7:
  41956.                       case "end":
  41957.                         return _context2.stop();
  41958.                     }
  41959.                 }, _callee2, this);
  41960.             }));
  41961.             return getDriverStatistics;
  41962.         }();
  41963.         InstallingItem.prototype.sendDriverInstallationStatus = function() {
  41964.             function sendDriverInstallationStatus(_x2) {
  41965.                 return _ref4.apply(this, arguments);
  41966.             }
  41967.             var _ref4 = _asyncToGenerator(regeneratorRuntime.mark(function _callee3(state) {
  41968.                 var name, installationSessionId, status, setupapi, driverStatistics;
  41969.                 return regeneratorRuntime.wrap(function(_context3) {
  41970.                     for (;;) switch (_context3.prev = _context3.next) {
  41971.                       case 0:
  41972.                         if (this.isDriver) {
  41973.                             _context3.next = 2;
  41974.                             break;
  41975.                         }
  41976.                         return _context3.abrupt("return");
  41977.  
  41978.                       case 2:
  41979.                         if ([ "started", "finished" ].includes(state)) {
  41980.                             _context3.next = 4;
  41981.                             break;
  41982.                         }
  41983.                         return _context3.abrupt("return");
  41984.  
  41985.                       case 4:
  41986.                         name = this.name, installationSessionId = this.installationSessionId, status = this.status,
  41987.                         setupapi = this.setupapi;
  41988.                         _context3.prev = 5;
  41989.                         _context3.next = 8;
  41990.                         return this.getDriverStatistics();
  41991.  
  41992.                       case 8:
  41993.                         driverStatistics = _context3.sent;
  41994.                         if ("finished" === state) Object.assign(driverStatistics, {
  41995.                             success: "error" !== status || "SUCCESS" === setupapi.status,
  41996.                             devcon: {
  41997.                                 status: status
  41998.                             },
  41999.                             setupapi: {
  42000.                                 status: setupapi.status,
  42001.                                 log: setupapi.log && setupapi.log.join("\n")
  42002.                             }
  42003.                         });
  42004.                         log.info({
  42005.                             action: "driver installation " + state,
  42006.                             namespace: "driver:installation:" + state + ":summary",
  42007.                             params: {
  42008.                                 driverStatistics: driverStatistics,
  42009.                                 installationSessionId: installationSessionId
  42010.                             },
  42011.                             counters: [ "events.default" ]
  42012.                         });
  42013.                         _context3.next = 16;
  42014.                         break;
  42015.  
  42016.                       case 13:
  42017.                         _context3.prev = 13;
  42018.                         _context3.t0 = _context3["catch"](5);
  42019.                         log.error("sendDriverInstallationStatus failed", {
  42020.                             state: state,
  42021.                             name: name,
  42022.                             installationSessionId: installationSessionId,
  42023.                             error: _context3.t0
  42024.                         }, "driver:sendDriverInstallationStatus:" + state + ":failed");
  42025.  
  42026.                       case 16:
  42027.                       case "end":
  42028.                         return _context3.stop();
  42029.                     }
  42030.                 }, _callee3, this, [ [ 5, 13 ] ]);
  42031.             }));
  42032.             return sendDriverInstallationStatus;
  42033.         }();
  42034.         InstallingItem.prototype.sendPartnerStatistics = function(lvl, event, params, namespace) {
  42035.             var tags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [ "partner" ];
  42036.             return log[lvl](_extends({}, event, {
  42037.                 counters: [ "default", "partner" ]
  42038.             }), params, namespace, tags);
  42039.         };
  42040.         InstallingItem.prototype.install = function() {
  42041.             var _this3 = this;
  42042.             return function() {
  42043.                 var _ref5 = _asyncToGenerator(regeneratorRuntime.mark(function _callee4(dispatch, getState) {
  42044.                     var name, installationSessionId;
  42045.                     return regeneratorRuntime.wrap(function(_context4) {
  42046.                         for (;;) switch (_context4.prev = _context4.next) {
  42047.                           case 0:
  42048.                             name = _this3.name, installationSessionId = _this3.installationSessionId;
  42049.                             if (_this3.isAwaitingInstalling) {
  42050.                                 _context4.next = 48;
  42051.                                 break;
  42052.                             }
  42053.                             _this3.isAwaitingInstalling = !0;
  42054.                             _context4.prev = 3;
  42055.                             _context4.next = 6;
  42056.                             return _this3.downloadPromise;
  42057.  
  42058.                           case 6:
  42059.                             if ("downloaded" !== _this3.status) {
  42060.                                 _context4.next = 44;
  42061.                                 break;
  42062.                             }
  42063.                             if (!_this3.isDriver) {
  42064.                                 _context4.next = 32;
  42065.                                 break;
  42066.                             }
  42067.                             _context4.prev = 8;
  42068.                             dispatch(_this3.unzip());
  42069.                             _context4.next = 12;
  42070.                             return _this3.unzipPromise;
  42071.  
  42072.                           case 12:
  42073.                             _this3.status = "installing";
  42074.                             _this3.installStartDeferred.resolve();
  42075.                             _context4.next = 16;
  42076.                             return Promise.resolve().delay(0);
  42077.  
  42078.                           case 16:
  42079.                             log.info("installing: " + name, {
  42080.                                 name: name,
  42081.                                 installationSessionId: installationSessionId
  42082.                             }, "driver:installation:started");
  42083.                             _context4.next = 19;
  42084.                             return _this3.sendDriverInstallationStatus("started");
  42085.  
  42086.                           case 19:
  42087.                             _context4.next = 21;
  42088.                             return dispatch(_this3.installDriver());
  42089.  
  42090.                           case 21:
  42091.                             log.info("installed: " + name, {
  42092.                                 name: name,
  42093.                                 installationSessionId: installationSessionId
  42094.                             }, "driver:installation:finished");
  42095.                             _context4.next = 28;
  42096.                             break;
  42097.  
  42098.                           case 24:
  42099.                             _context4.prev = 24;
  42100.                             _context4.t0 = _context4["catch"](8);
  42101.                             _this3.status = "error";
  42102.                             log.error("error installing " + name, {
  42103.                                 name: name,
  42104.                                 installationSessionId: installationSessionId,
  42105.                                 error: _context4.t0
  42106.                             }, "driver:installation:failed");
  42107.  
  42108.                           case 28:
  42109.                             _context4.next = 30;
  42110.                             return _this3.sendDriverInstallationStatus("finished");
  42111.  
  42112.                           case 30:
  42113.                             _context4.next = 44;
  42114.                             break;
  42115.  
  42116.                           case 32:
  42117.                             _context4.prev = 32;
  42118.                             _this3.installStartDeferred.resolve();
  42119.                             _context4.next = 36;
  42120.                             return Promise.resolve().delay(0);
  42121.  
  42122.                           case 36:
  42123.                             _context4.next = 38;
  42124.                             return dispatch(_this3.installProgram());
  42125.  
  42126.                           case 38:
  42127.                             _context4.next = 44;
  42128.                             break;
  42129.  
  42130.                           case 40:
  42131.                             _context4.prev = 40;
  42132.                             _context4.t1 = _context4["catch"](32);
  42133.                             _this3.status = "error";
  42134.                             log.error("error installing " + name, {
  42135.                                 name: name,
  42136.                                 installationSessionId: installationSessionId,
  42137.                                 error: _context4.t1
  42138.                             }, "soft:installation:failed");
  42139.  
  42140.                           case 44:
  42141.                             _context4.next = 48;
  42142.                             break;
  42143.  
  42144.                           case 46:
  42145.                             _context4.prev = 46;
  42146.                             _context4.t2 = _context4["catch"](3);
  42147.  
  42148.                           case 48:
  42149.                             return _context4.abrupt("return", !0);
  42150.  
  42151.                           case 49:
  42152.                           case "end":
  42153.                             return _context4.stop();
  42154.                         }
  42155.                     }, _callee4, _this3, [ [ 3, 46 ], [ 8, 24 ], [ 32, 40 ] ]);
  42156.                 }));
  42157.                 return function(_x4, _x5) {
  42158.                     return _ref5.apply(this, arguments);
  42159.                 };
  42160.             }();
  42161.         };
  42162.         InstallingItem.prototype.unzip = function() {
  42163.             var _this4 = this;
  42164.             return function() {
  42165.                 var _ref6 = _asyncToGenerator(regeneratorRuntime.mark(function _callee5(dispatch) {
  42166.                     var type, name, installationSessionId;
  42167.                     return regeneratorRuntime.wrap(function(_context5) {
  42168.                         for (;;) switch (_context5.prev = _context5.next) {
  42169.                           case 0:
  42170.                             _this4.status = "unzipping";
  42171.                             type = _this4.isDriver ? "driver" : "soft";
  42172.                             name = _this4.name, installationSessionId = _this4.installationSessionId;
  42173.                             log.info("unzipping: " + name, {
  42174.                                 name: name,
  42175.                                 installationSessionId: installationSessionId
  42176.                             }, type + ":unzipping:started");
  42177.                             _context5.prev = 4;
  42178.                             _context5.next = 7;
  42179.                             return dispatch(_this4.unzipDriver());
  42180.  
  42181.                           case 7:
  42182.                             log.info("unzipped: " + name, {
  42183.                                 name: name,
  42184.                                 installationSessionId: installationSessionId
  42185.                             }, type + ":unzipping:finished");
  42186.                             _this4.unzipDeferred.resolve();
  42187.                             _context5.next = 16;
  42188.                             break;
  42189.  
  42190.                           case 11:
  42191.                             _context5.prev = 11;
  42192.                             _context5.t0 = _context5["catch"](4);
  42193.                             _this4.status = "error";
  42194.                             log.error("error unzipping " + name, {
  42195.                                 name: name,
  42196.                                 installationSessionId: installationSessionId,
  42197.                                 error: _context5.t0
  42198.                             }, type + ":unzipping:failed");
  42199.                             _this4.unzipDeferred.reject();
  42200.  
  42201.                           case 16:
  42202.                             _context5.prev = 16;
  42203.                             clearInterval(_this4.unzippingTimer);
  42204.                             return _context5.finish(16);
  42205.  
  42206.                           case 19:
  42207.                           case "end":
  42208.                             return _context5.stop();
  42209.                         }
  42210.                     }, _callee5, _this4, [ [ 4, 11, 16, 19 ] ]);
  42211.                 }));
  42212.                 return function(_x6) {
  42213.                     return _ref6.apply(this, arguments);
  42214.                 };
  42215.             }();
  42216.         };
  42217.         InstallingItem.prototype.cancel = function() {
  42218.             var _this5 = this;
  42219.             return function(dispatch) {
  42220.                 var prevStatus = _this5.status;
  42221.                 _this5.status = "canceled";
  42222.                 if ("waiting" === prevStatus) _this5.downloadDeferred.reject(); else if ("downloading" === prevStatus) {
  42223.                     clearInterval(_this5.downloadingTimer);
  42224.                     _this5.downloadDeferred.reject();
  42225.                     var url = _this5.isDriver ? _this5.recommendedDriver.link : _this5.link;
  42226.                     setTimeout(function() {
  42227.                         _wget2["default"].stopDownloading(url, _this5.jobId);
  42228.                     }, 0);
  42229.                 }
  42230.             };
  42231.         };
  42232.         InstallingItem.prototype.generateJobId = function() {
  42233.             return +Math.round(1e5 * Math.random());
  42234.         };
  42235.         InstallingItem.prototype.checkDownloadFileSize = function(url) {
  42236.             var _this6 = this;
  42237.             return function(dispatch) {
  42238.                 _wget2["default"].getDownloadFileSize(url).then(function(fileSize) {
  42239.                     dispatch({
  42240.                         type: "NEW_ORDER_DOWNLOAD_FILE_SIZE_RECEIVED",
  42241.                         payload: _this6,
  42242.                         meta: {
  42243.                             id: _this6.id,
  42244.                             totalFileSize: fileSize
  42245.                         }
  42246.                     });
  42247.                 });
  42248.             };
  42249.         };
  42250.         InstallingItem.prototype.watchDownloadingFileSize = function() {
  42251.             var _this7 = this;
  42252.             return function(dispatch) {
  42253.                 var timeElapsed = 0, url = _this7.isDriver ? _this7.recommendedDriver.link : _this7.link, fileName = url.split("/").slice(-1)[0], localPath = _this7.isDriver ? _systemScanner2["default"].getDriversPath() + "\\" + fileName : _softPack2["default"].getSoftPath() + "\\" + fileName, downloadedSize = 0, prevDownloadedSize = void 0, downloadingSpeed = void 0;
  42254.                 _this7.downloadingTimer = setInterval(function() {
  42255.                     timeElapsed += 1e3;
  42256.                     if (_system.fso.FileExists(localPath)) {
  42257.                         prevDownloadedSize = downloadedSize;
  42258.                         downloadedSize = _system.fso.GetFile(localPath).Size;
  42259.                         downloadingSpeed = Math.round(1e3 * (downloadedSize - prevDownloadedSize) / 1e3);
  42260.                         dispatch({
  42261.                             type: "NEW_ORDER_DOWNLOAD_FILE_UPDATED",
  42262.                             payload: _this7,
  42263.                             meta: {
  42264.                                 id: _this7.id,
  42265.                                 timeElapsed: timeElapsed,
  42266.                                 downloadedSize: downloadedSize,
  42267.                                 downloadingSpeed: downloadingSpeed
  42268.                             }
  42269.                         });
  42270.                     }
  42271.                 }, 1e3);
  42272.             };
  42273.         };
  42274.         InstallingItem.prototype.downloadProgram = function() {
  42275.             var _this8 = this;
  42276.             return function(dispatch) {
  42277.                 var program = _this8;
  42278.                 dispatch({
  42279.                     type: "NEW_ORDER_PROGRAM_DOWNLOAD_STARTED",
  42280.                     payload: program,
  42281.                     meta: {
  42282.                         status: "downloading"
  42283.                     }
  42284.                 });
  42285.                 var name = program.name, installationSessionId = program.installationSessionId, download = void 0, fileName = program.link.split("/").slice(-1)[0];
  42286.                 try {
  42287.                     _system.fso.copyFile("..\\programs\\" + fileName, _softPack2["default"].getSoftPath() + "\\" + fileName, !0);
  42288.                     log.info("copying: " + name, {
  42289.                         name: name,
  42290.                         installationSessionId: installationSessionId
  42291.                     }, "soft:copying:finished");
  42292.                     download = Promise.resolve();
  42293.                 } catch (e) {
  42294.                     var events = {
  42295.                         beforeDownloading: function() {},
  42296.                         afterDownloading: function() {}
  42297.                     };
  42298.                     dispatch(_this8.checkDownloadFileSize(program.link));
  42299.                     download = _wget2["default"].downloadFiles(events, _softPack2["default"].getSoftPath(), [ program ]);
  42300.                     dispatch(_this8.watchDownloadingFileSize());
  42301.                     log.info({
  42302.                         action: "soft download started " + name
  42303.                     }, {
  42304.                         installationSessionId: installationSessionId,
  42305.                         extra: {
  42306.                             name: name
  42307.                         }
  42308.                     }, "soft:download:started");
  42309.                     if (program.isPartner) _this8.sendPartnerStatistics("info", {
  42310.                         action: "soft download started partner " + name
  42311.                     }, {
  42312.                         installationSessionId: installationSessionId,
  42313.                         extra: {
  42314.                             name: name
  42315.                         }
  42316.                     }, "partnerSoft:download:started");
  42317.                 }
  42318.                 return download.then(function() {
  42319.                     if ("canceled" !== program.status) dispatch({
  42320.                         type: "NEW_ORDER_PROGRAM_DOWNLOAD_FINISHED",
  42321.                         payload: program,
  42322.                         meta: {
  42323.                             status: "downloaded"
  42324.                         }
  42325.                     });
  42326.                 }).caught(function(error) {
  42327.                     if ("canceled" !== program.status) {
  42328.                         log.error({
  42329.                             action: "installation download failed " + name
  42330.                         }, {
  42331.                             installationSessionId: installationSessionId,
  42332.                             extra: {
  42333.                                 name: name,
  42334.                                 error: error
  42335.                             }
  42336.                         }, "soft:download:failed");
  42337.                         dispatch({
  42338.                             type: "NEW_ORDER_PROGRAM_DOWNLOAD_FAILED",
  42339.                             payload: program,
  42340.                             meta: {
  42341.                                 status: "error",
  42342.                                 errorType: "download"
  42343.                             }
  42344.                         });
  42345.                         throw error;
  42346.                     }
  42347.                 });
  42348.             };
  42349.         };
  42350.         InstallingItem.prototype.installProgram = function() {
  42351.             var _this9 = this;
  42352.             return function(dispatch) {
  42353.                 return new Promise(function(resolve, reject) {
  42354.                     (0, _recoverInternet.recoverWifiProfile)();
  42355.                     var program = _this9, name = program.name, installationSessionId = program.installationSessionId, startTime = Date.now();
  42356.                     dispatch({
  42357.                         type: "NEW_ORDER_PROGRAM_INSTALLATION_STARTED",
  42358.                         payload: program,
  42359.                         meta: {
  42360.                             status: "installing"
  42361.                         }
  42362.                     });
  42363.                     log.info({
  42364.                         action: "soft installation started " + name
  42365.                     }, {
  42366.                         installationSessionId: installationSessionId,
  42367.                         extra: {
  42368.                             name: name
  42369.                         }
  42370.                     }, "soft:installation:started");
  42371.                     if (program.isPartner) _this9.sendPartnerStatistics("info", {
  42372.                         action: "soft installation started partner " + name
  42373.                     }, {
  42374.                         installationSessionId: installationSessionId,
  42375.                         extra: {
  42376.                             name: name
  42377.                         }
  42378.                     }, "partnerSoft:installation:started");
  42379.                     var fileName = program.link.split("/").slice(-1)[0], keys = program.Keys;
  42380.                     if (_system.fso.FileExists("..\\programs\\" + fileName)) keys = program.OfflineKeys ? program.OfflineKeys : program.Keys;
  42381.                     var exePath = _softPack2["default"].getSoftPath() + "\\" + fileName, triggerFile = (0,
  42382.                     _localFiles.ensurePath)(_specialFolders.AppFolder + "\\temp") + "\\installing_" + _this9.jobId + ".txt", timeout = program.installTimeout || 3e5;
  42383.                     log.info("Running command: " + name, {
  42384.                         name: name,
  42385.                         installationSessionId: installationSessionId,
  42386.                         exePath: exePath
  42387.                     }, "soft:installation:runCommand");
  42388.                     runCommandAsync({
  42389.                         command: '"' + exePath + '" ' + keys,
  42390.                         triggerFile: triggerFile,
  42391.                         checkInterval: 1e3,
  42392.                         timeout: timeout
  42393.                     }).then(function(exitCode) {
  42394.                         if (program.exitCodes && -1 !== program.exitCodes.indexOf(exitCode) || 0 === exitCode) {
  42395.                             dispatch({
  42396.                                 type: "NEW_ORDER_PROGRAM_INSTALLATION_FINISHED",
  42397.                                 payload: program,
  42398.                                 meta: {
  42399.                                     rebootNeeded: program.rebootNeeded,
  42400.                                     status: "done"
  42401.                                 }
  42402.                             });
  42403.                             resolve();
  42404.                             var duration = (Date.now() - startTime) % 1e3;
  42405.                             log.info({
  42406.                                 action: "soft installation finished " + name
  42407.                             }, {
  42408.                                 installationSessionId: installationSessionId,
  42409.                                 extra: {
  42410.                                     name: name,
  42411.                                     duration: duration
  42412.                                 }
  42413.                             }, "soft:installation:finished");
  42414.                             if (program.isPartner) _this9.sendPartnerStatistics("info", {
  42415.                                 action: "soft installation finished partner " + name
  42416.                             }, {
  42417.                                 installationSessionId: installationSessionId,
  42418.                                 extra: {
  42419.                                     name: name
  42420.                                 }
  42421.                             }, "partnerSoft:installation:finished");
  42422.                             try {
  42423.                                 if (program.afterHook) {
  42424.                                     var hookData = {
  42425.                                         statistics: window.statistics,
  42426.                                         geoip: window.isOnline ? window.geoip : window.geoipOffline,
  42427.                                         os: window.os,
  42428.                                         system: window.system,
  42429.                                         wmi: window.wmi,
  42430.                                         diagnostics: window.diagnostics
  42431.                                     };
  42432.                                     program.afterHook(hookData);
  42433.                                 }
  42434.                             } catch (err) {}
  42435.                         } else {
  42436.                             dispatch({
  42437.                                 type: "NEW_ORDER_PROGRAM_INSTALLATION_FAILED",
  42438.                                 payload: program,
  42439.                                 meta: {
  42440.                                     status: "error",
  42441.                                     errorType: "install"
  42442.                                 }
  42443.                             });
  42444.                             reject();
  42445.                             log.error({
  42446.                                 action: "soft installation failed " + name
  42447.                             }, {
  42448.                                 installationSessionId: installationSessionId,
  42449.                                 extra: {
  42450.                                     name: name,
  42451.                                     exitCode: "" + exitCode
  42452.                                 }
  42453.                             }, "soft:installation:failed");
  42454.                             if (program.isPartner) {
  42455.                                 var partnerFail = {};
  42456.                                 partnerFail[name] = {
  42457.                                     exitCode: "" + exitCode
  42458.                                 };
  42459.                                 _this9.sendPartnerStatistics("error", {
  42460.                                     action: "soft installation failed partner " + name
  42461.                                 }, {
  42462.                                     installationSessionId: installationSessionId,
  42463.                                     partnerFail: partnerFail,
  42464.                                     extra: {
  42465.                                         name: name,
  42466.                                         exitCode: "" + exitCode
  42467.                                     }
  42468.                                 }, "partnerSoft:installation:failed");
  42469.                             }
  42470.                         }
  42471.                     }).caught(function(error) {
  42472.                         dispatch({
  42473.                             type: "NEW_ORDER_PROGRAM_INSTALLATION_FAILED",
  42474.                             payload: program,
  42475.                             meta: {
  42476.                                 status: "error",
  42477.                                 errorType: "install"
  42478.                             }
  42479.                         });
  42480.                         reject();
  42481.                         log.error({
  42482.                             action: "soft installation failed " + name
  42483.                         }, {
  42484.                             installationSessionId: installationSessionId,
  42485.                             extra: {
  42486.                                 name: name,
  42487.                                 error: error
  42488.                             }
  42489.                         }, "soft:installation:failed");
  42490.                         if (program.isPartner) {
  42491.                             var partnerFail = {};
  42492.                             partnerFail[name] = {
  42493.                                 error: error
  42494.                             };
  42495.                             _this9.sendPartnerStatistics("error", {
  42496.                                 action: "soft installation failed partner " + name
  42497.                             }, {
  42498.                                 installationSessionId: installationSessionId,
  42499.                                 partnerFail: partnerFail,
  42500.                                 extra: {
  42501.                                     name: name,
  42502.                                     error: error
  42503.                                 }
  42504.                             }, "partnerSoft:installation:failed");
  42505.                         }
  42506.                     });
  42507.                 });
  42508.             };
  42509.         };
  42510.         InstallingItem.prototype.downloadDriver = function() {
  42511.             var _this10 = this;
  42512.             return function(dispatch) {
  42513.                 var device = _this10, driver = device.recommendedDriver, installationSessionId = _this10.installationSessionId;
  42514.                 dispatch({
  42515.                     type: "NEW_ORDER_DRIVER_DOWNLOAD_STARTED",
  42516.                     payload: device,
  42517.                     meta: {
  42518.                         status: "downloading"
  42519.                     }
  42520.                 });
  42521.                 var download = void 0;
  42522.                 if (_system.fso.FileExists("..\\drivers\\" + driver.pack + ".7z")) download = Promise.resolve(); else {
  42523.                     var events = {
  42524.                         beforeDownloading: function() {},
  42525.                         afterDownloading: function() {}
  42526.                     };
  42527.                     log.info("driver download started", {
  42528.                         installationSessionId: installationSessionId,
  42529.                         link: driver.link,
  42530.                         name: driver.name
  42531.                     }, "driver:download:started");
  42532.                     dispatch(_this10.checkDownloadFileSize(driver.link));
  42533.                     download = _wget2["default"].downloadFiles(events, _systemScanner2["default"].getDriversPath(), [ driver ]);
  42534.                     dispatch(_this10.watchDownloadingFileSize());
  42535.                 }
  42536.                 return download.then(function() {
  42537.                     if ("canceled" !== device.status) dispatch({
  42538.                         type: "NEW_ORDER_DRIVER_DOWNLOAD_FINISHED",
  42539.                         payload: device,
  42540.                         meta: {
  42541.                             status: "downloaded"
  42542.                         }
  42543.                     });
  42544.                 }).caught(function(error) {
  42545.                     if ("canceled" !== device.status) {
  42546.                         log.error({
  42547.                             action: "installation download failed " + driver.name
  42548.                         }, {
  42549.                             installationSessionId: installationSessionId,
  42550.                             extra: {
  42551.                                 link: driver.link,
  42552.                                 name: driver.name,
  42553.                                 error: error
  42554.                             }
  42555.                         }, "driver:download:failed");
  42556.                         dispatch({
  42557.                             type: "NEW_ORDER_DRIVER_DOWNLOAD_FAILED",
  42558.                             payload: device,
  42559.                             meta: {
  42560.                                 status: "error",
  42561.                                 errorType: "download"
  42562.                             }
  42563.                         });
  42564.                         throw error;
  42565.                     }
  42566.                 });
  42567.             };
  42568.         };
  42569.         InstallingItem.prototype.unzipDriver = function() {
  42570.             var _this11 = this;
  42571.             return function(dispatch) {
  42572.                 return new Promise(function(resolve, reject) {
  42573.                     var device = _this11, driver = device.recommendedDriver, installationSessionId = _this11.installationSessionId;
  42574.                     dispatch(_unzip2["default"].checkZipArchiveFilesCount(device));
  42575.                     dispatch(_unzip2["default"].watchUnzippedPartFilesCount(device));
  42576.                     var unzipPromise = void 0;
  42577.                     dispatch({
  42578.                         type: "NEW_ORDER_DRIVER_UNZIPPING_STARTED",
  42579.                         payload: device,
  42580.                         meta: {
  42581.                             status: "unzipping"
  42582.                         }
  42583.                     });
  42584.                     if (_system.fso.FileExists("..\\drivers\\" + driver.pack + ".7z")) unzipPromise = _unzip2["default"].unzipFromPack(driver.pack, driver.directory, _this11.jobId); else {
  42585.                         var zipName = driver.link.split("/").slice(-1);
  42586.                         unzipPromise = _unzip2["default"].run7z(driver.pack, _systemScanner2["default"].getDriversPath() + "\\" + zipName, "", _this11.jobId);
  42587.                     }
  42588.                     unzipPromise.then(function(exitCode) {
  42589.                         if (0 === exitCode) {
  42590.                             if ("canceled" !== device.status) {
  42591.                                 dispatch({
  42592.                                     type: "NEW_ORDER_DRIVER_UNZIPPING_FINISHED",
  42593.                                     payload: device,
  42594.                                     meta: {
  42595.                                         status: "unzipped"
  42596.                                     }
  42597.                                 });
  42598.                                 resolve();
  42599.                             }
  42600.                         } else if ("canceled" !== device.status) {
  42601.                             log.error("unzip: unzipResult error = " + exitCode, {
  42602.                                 installationSessionId: installationSessionId,
  42603.                                 exitCode: exitCode,
  42604.                                 driver: (0, _pick2["default"])(driver, "pack", "directory", "inf", "version"),
  42605.                                 name: driver.name
  42606.                             }, "driver:unzip:failed");
  42607.                             dispatch({
  42608.                                 type: "NEW_ORDER_DRIVER_UNZIPPING_FAILED",
  42609.                                 payload: device,
  42610.                                 meta: {
  42611.                                     status: "error",
  42612.                                     errorType: "unzip"
  42613.                                 }
  42614.                             });
  42615.                             reject();
  42616.                         }
  42617.                     }).caught(function(err) {
  42618.                         reject(err);
  42619.                     });
  42620.                 });
  42621.             };
  42622.         };
  42623.         InstallingItem.prototype.makeHook = function() {
  42624.             function makeHook(_x7, _x8, _x9, _x10) {
  42625.                 return _ref7.apply(this, arguments);
  42626.             }
  42627.             var _ref7 = _asyncToGenerator(regeneratorRuntime.mark(function _callee6(type, cmd, driver, installationSessionId) {
  42628.                 var exePath, exitCode;
  42629.                 return regeneratorRuntime.wrap(function(_context6) {
  42630.                     for (;;) switch (_context6.prev = _context6.next) {
  42631.                       case 0:
  42632.                         exePath = _system.WshShell.ExpandEnvironmentStrings("%temp%") + "\\drp\\unzip\\drp\\" + driver.pack + "\\" + driver.directory + cmd;
  42633.                         log.info("Running " + type + " hook: " + exePath, {
  42634.                             installationSessionId: installationSessionId,
  42635.                             type: type,
  42636.                             exePath: exePath,
  42637.                             driver: (0, _pick2["default"])(driver, "pack", "directory", "inf", "version"),
  42638.                             name: driver.name
  42639.                         }, "driver:makeHook");
  42640.                         _context6.next = 4;
  42641.                         return runCommandAsync({
  42642.                             command: exePath
  42643.                         });
  42644.  
  42645.                       case 4:
  42646.                         exitCode = _context6.sent;
  42647.                         if (0 !== exitCode) {
  42648.                             _context6.next = 7;
  42649.                             break;
  42650.                         }
  42651.                         return _context6.abrupt("return");
  42652.  
  42653.                       case 7:
  42654.                         throw new Error("Failed " + type + " hook " + cmd + " with exitCode " + exitCode);
  42655.  
  42656.                       case 8:
  42657.                       case "end":
  42658.                         return _context6.stop();
  42659.                     }
  42660.                 }, _callee6, this);
  42661.             }));
  42662.             return makeHook;
  42663.         }();
  42664.         InstallingItem.prototype.installDriver = function() {
  42665.             var _this12 = this;
  42666.             return function() {
  42667.                 var _ref8 = _asyncToGenerator(regeneratorRuntime.mark(function _callee7(dispatch) {
  42668.                     var device, deviceId, installationSessionId, driver, installationHooks, startTime, _iterator, _isArray, _i, _ref9, hook, duration, rebootNeeded, _startTime, _iterator2, _isArray2, _i2, _ref10, _hook, _duration, success, exitCode, _startTime2, _iterator3, _isArray3, _i3, _ref12, _hook2, _duration2, tool, driverStatistics;
  42669.                     return regeneratorRuntime.wrap(function(_context7) {
  42670.                         for (;;) switch (_context7.prev = _context7.next) {
  42671.                           case 0:
  42672.                             device = _this12;
  42673.                             deviceId = device.deviceId, installationSessionId = device.installationSessionId;
  42674.                             driver = device.recommendedDriver;
  42675.                             installationHooks = driver.installationHooks;
  42676.                             dispatch({
  42677.                                 type: "NEW_ORDER_DRIVER_INSTALLATION_STARTED",
  42678.                                 payload: device,
  42679.                                 meta: {
  42680.                                     status: "installing"
  42681.                                 }
  42682.                             });
  42683.                             _context7.prev = 5;
  42684.                             if (!installationHooks || !installationHooks.before) {
  42685.                                 _context7.next = 26;
  42686.                                 break;
  42687.                             }
  42688.                             startTime = Date.now();
  42689.                             _iterator = installationHooks.before, _isArray = Array.isArray(_iterator), _i = 0,
  42690.                             _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();
  42691.  
  42692.                           case 9:
  42693.                             if (!_isArray) {
  42694.                                 _context7.next = 15;
  42695.                                 break;
  42696.                             }
  42697.                             if (!(_i >= _iterator.length)) {
  42698.                                 _context7.next = 12;
  42699.                                 break;
  42700.                             }
  42701.                             return _context7.abrupt("break", 24);
  42702.  
  42703.                           case 12:
  42704.                             _ref9 = _iterator[_i++];
  42705.                             _context7.next = 19;
  42706.                             break;
  42707.  
  42708.                           case 15:
  42709.                             _i = _iterator.next();
  42710.                             if (!_i.done) {
  42711.                                 _context7.next = 18;
  42712.                                 break;
  42713.                             }
  42714.                             return _context7.abrupt("break", 24);
  42715.  
  42716.                           case 18:
  42717.                             _ref9 = _i.value;
  42718.  
  42719.                           case 19:
  42720.                             hook = _ref9;
  42721.                             _context7.next = 22;
  42722.                             return _this12.makeHook("before", hook, driver, installationSessionId);
  42723.  
  42724.                           case 22:
  42725.                             _context7.next = 9;
  42726.                             break;
  42727.  
  42728.                           case 24:
  42729.                             duration = (Date.now() - startTime) % 1e3;
  42730.                             log.info({
  42731.                                 action: "installation before hooks used"
  42732.                             }, {
  42733.                                 installationSessionId: installationSessionId,
  42734.                                 extra: {
  42735.                                     name: driver.name,
  42736.                                     duration: duration
  42737.                                 }
  42738.                             }, "driver:installation:hook:before:used");
  42739.  
  42740.                           case 26:
  42741.                             rebootNeeded = void 0;
  42742.                             if (!installationHooks || !installationHooks.instead) {
  42743.                                 _context7.next = 49;
  42744.                                 break;
  42745.                             }
  42746.                             _startTime = Date.now();
  42747.                             _iterator2 = installationHooks.instead, _isArray2 = Array.isArray(_iterator2), _i2 = 0,
  42748.                             _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();
  42749.  
  42750.                           case 30:
  42751.                             if (!_isArray2) {
  42752.                                 _context7.next = 36;
  42753.                                 break;
  42754.                             }
  42755.                             if (!(_i2 >= _iterator2.length)) {
  42756.                                 _context7.next = 33;
  42757.                                 break;
  42758.                             }
  42759.                             return _context7.abrupt("break", 45);
  42760.  
  42761.                           case 33:
  42762.                             _ref10 = _iterator2[_i2++];
  42763.                             _context7.next = 40;
  42764.                             break;
  42765.  
  42766.                           case 36:
  42767.                             _i2 = _iterator2.next();
  42768.                             if (!_i2.done) {
  42769.                                 _context7.next = 39;
  42770.                                 break;
  42771.                             }
  42772.                             return _context7.abrupt("break", 45);
  42773.  
  42774.                           case 39:
  42775.                             _ref10 = _i2.value;
  42776.  
  42777.                           case 40:
  42778.                             _hook = _ref10;
  42779.                             _context7.next = 43;
  42780.                             return _this12.makeHook("instead", _hook, driver, installationSessionId);
  42781.  
  42782.                           case 43:
  42783.                             _context7.next = 30;
  42784.                             break;
  42785.  
  42786.                           case 45:
  42787.                             _duration = (Date.now() - _startTime) % 1e3;
  42788.                             log.info({
  42789.                                 action: "installation instead hooks used"
  42790.                             }, {
  42791.                                 installationSessionId: installationSessionId,
  42792.                                 extra: {
  42793.                                     name: driver.name,
  42794.                                     duration: _duration
  42795.                                 }
  42796.                             }, "driver:installation:hook:instead:used");
  42797.                             _context7.next = 76;
  42798.                             break;
  42799.  
  42800.                           case 49:
  42801.                             success = void 0;
  42802.                             if (!setupAPILog) setupAPILog = new _SetupAPILog2["default"]();
  42803.                             setupAPILog.toEnd();
  42804.                             _context7.next = 54;
  42805.                             return _devcon2["default"].update(is64, deviceId, driver, _this12.jobId);
  42806.  
  42807.                           case 54:
  42808.                             exitCode = _context7.sent;
  42809.                             _this12.setupapi = setupAPILog.parseAll().find(function(_ref11) {
  42810.                                 var header = _ref11.header, log = _ref11.log;
  42811.                                 return 0 === header.indexOf("Device Install") && driver.hardwareId.some(function(hwid) {
  42812.                                     return header.indexOf(hwid) > -1;
  42813.                                 }) && log.some(function(l) {
  42814.                                     return devconRe.test(l);
  42815.                                 });
  42816.                             }) || {
  42817.                                 log: []
  42818.                             };
  42819.                             _context7.t0 = exitCode;
  42820.                             _context7.next = 0 === _context7.t0 ? 59 : 1 === _context7.t0 ? 63 : 2 === _context7.t0 ? 67 : 3 === _context7.t0 ? 67 : 70;
  42821.                             break;
  42822.  
  42823.                           case 59:
  42824.                             success = !0;
  42825.                             rebootNeeded = !1;
  42826.                             log.info("success", {
  42827.                                 rebootNeeded: rebootNeeded,
  42828.                                 installationSessionId: installationSessionId,
  42829.                                 driver: (0, _pick2["default"])(driver, "pack", "directory", "inf", "version"),
  42830.                                 name: driver.name
  42831.                             }, "devcon:update:succeeded");
  42832.                             return _context7.abrupt("break", 70);
  42833.  
  42834.                           case 63:
  42835.                             success = !0;
  42836.                             rebootNeeded = !0;
  42837.                             log.info("success", {
  42838.                                 rebootNeeded: rebootNeeded,
  42839.                                 installationSessionId: installationSessionId,
  42840.                                 driver: (0, _pick2["default"])(driver, "pack", "directory", "inf", "version"),
  42841.                                 name: driver.name
  42842.                             }, "devcon:update:succeeded:rebootNeeded");
  42843.                             return _context7.abrupt("break", 70);
  42844.  
  42845.                           case 67:
  42846.                             success = !1;
  42847.                             rebootNeeded = !1;
  42848.                             return _context7.abrupt("break", 70);
  42849.  
  42850.                           case 70:
  42851.                             if (!success) {
  42852.                                 _context7.next = 75;
  42853.                                 break;
  42854.                             }
  42855.                             (0, _recoverInternet.recoverWifiProfile)();
  42856.                             if ("SUCCESS" === _this12.setupapi.status) _this12.setupapi.log = _this12.setupapi.log.filter(function(l) {
  42857.                                 return successSetupRe.test(l);
  42858.                             });
  42859.                             _context7.next = 76;
  42860.                             break;
  42861.  
  42862.                           case 75:
  42863.                             throw new Error("Devcon failed");
  42864.  
  42865.                           case 76:
  42866.                             if (!installationHooks || !installationHooks.after) {
  42867.                                 _context7.next = 96;
  42868.                                 break;
  42869.                             }
  42870.                             _startTime2 = Date.now();
  42871.                             _iterator3 = installationHooks.after, _isArray3 = Array.isArray(_iterator3), _i3 = 0,
  42872.                             _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();
  42873.  
  42874.                           case 79:
  42875.                             if (!_isArray3) {
  42876.                                 _context7.next = 85;
  42877.                                 break;
  42878.                             }
  42879.                             if (!(_i3 >= _iterator3.length)) {
  42880.                                 _context7.next = 82;
  42881.                                 break;
  42882.                             }
  42883.                             return _context7.abrupt("break", 94);
  42884.  
  42885.                           case 82:
  42886.                             _ref12 = _iterator3[_i3++];
  42887.                             _context7.next = 89;
  42888.                             break;
  42889.  
  42890.                           case 85:
  42891.                             _i3 = _iterator3.next();
  42892.                             if (!_i3.done) {
  42893.                                 _context7.next = 88;
  42894.                                 break;
  42895.                             }
  42896.                             return _context7.abrupt("break", 94);
  42897.  
  42898.                           case 88:
  42899.                             _ref12 = _i3.value;
  42900.  
  42901.                           case 89:
  42902.                             _hook2 = _ref12;
  42903.                             _context7.next = 92;
  42904.                             return _this12.makeHook("after", _hook2, driver, installationSessionId);
  42905.  
  42906.                           case 92:
  42907.                             _context7.next = 79;
  42908.                             break;
  42909.  
  42910.                           case 94:
  42911.                             _duration2 = (Date.now() - _startTime2) % 1e3;
  42912.                             log.info({
  42913.                                 action: "installation after hooks used"
  42914.                             }, {
  42915.                                 installationSessionId: installationSessionId,
  42916.                                 extra: {
  42917.                                     name: driver.name,
  42918.                                     duration: _duration2
  42919.                                 }
  42920.                             }, "driver:installation:hook:after:used");
  42921.  
  42922.                           case 96:
  42923.                             dispatch({
  42924.                                 type: "NEW_ORDER_DRIVER_INSTALLATION_FINISHED",
  42925.                                 payload: device,
  42926.                                 meta: {
  42927.                                     id: deviceId,
  42928.                                     rebootNeeded: rebootNeeded,
  42929.                                     status: "done"
  42930.                                 }
  42931.                             });
  42932.                             return _context7.abrupt("return");
  42933.  
  42934.                           case 100:
  42935.                             _context7.prev = 100;
  42936.                             _context7.t1 = _context7["catch"](5);
  42937.                             (0, _recoverInternet.recoverWifiProfile)();
  42938.                             tool = /^devcon/i.test(_context7.t1.message) ? "devcon" : "hook";
  42939.                             _context7.next = 106;
  42940.                             return _this12.getDriverStatistics();
  42941.  
  42942.                           case 106:
  42943.                             driverStatistics = _context7.sent;
  42944.                             log.error({
  42945.                                 action: "driver installation failed"
  42946.                             }, {
  42947.                                 installationSessionId: installationSessionId,
  42948.                                 extra: {
  42949.                                     driverStatistics: driverStatistics,
  42950.                                     error: _context7.t1
  42951.                                 }
  42952.                             }, tool + ":update:failed");
  42953.                             dispatch({
  42954.                                 type: "NEW_ORDER_DRIVER_INSTALLATION_FAILED",
  42955.                                 payload: device,
  42956.                                 meta: {
  42957.                                     status: "error",
  42958.                                     errorType: "install"
  42959.                                 }
  42960.                             });
  42961.                             throw _context7.t1;
  42962.  
  42963.                           case 110:
  42964.                           case "end":
  42965.                             return _context7.stop();
  42966.                         }
  42967.                     }, _callee7, _this12, [ [ 5, 100 ] ]);
  42968.                 }));
  42969.                 return function(_x11) {
  42970.                     return _ref8.apply(this, arguments);
  42971.                 };
  42972.             }();
  42973.         };
  42974.         return InstallingItem;
  42975.     }();
  42976.     exports["default"] = InstallingItem;
  42977.     module.exports = exports["default"];
  42978. }, function(module, exports, __webpack_require__) {
  42979.     "use strict";
  42980.     function _classCallCheck(instance, Constructor) {
  42981.         if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
  42982.     }
  42983.     exports.__esModule = !0;
  42984.     var _shell = __webpack_require__(14), _fso = __webpack_require__(18), _os = __webpack_require__(13), windir = _shell.WshShell.ExpandEnvironmentStrings("%windir%"), filepath = windir + "\\Inf\\setupapi.dev.log", footerRe = /^Exit status: (.+)$/, re = {
  42985.         start: /^>>>\s+\x5b([^\x5b]+)\x5d/,
  42986.         end: /^<<<\s+\x5b([^\x5b]+)\x5d/
  42987.     }, SetupAPILog = function() {
  42988.         function SetupAPILog() {
  42989.             _classCallCheck(this, SetupAPILog);
  42990.             if (_os.OSVersion >= 6) {
  42991.                 try {
  42992.                     this.file = _fso.fso.OpenTextFile(filepath, 1, !1, 0);
  42993.                 } catch (err) {}
  42994.                 this.toEnd();
  42995.             }
  42996.         }
  42997.         SetupAPILog.matchPart = function(part, lines) {
  42998.             for (var prev = []; lines.length > 0; ) {
  42999.                 var curr = lines.shift(), m = re[part].exec(curr);
  43000.                 if (m) return [ m[1], prev ]; else prev.push(curr);
  43001.             }
  43002.             return [];
  43003.         };
  43004.         SetupAPILog.parseLog = function(lines) {
  43005.             for (var res = []; lines.length > 0; ) {
  43006.                 var _SetupAPILog$matchPar = SetupAPILog.matchPart("start", lines), header = _SetupAPILog$matchPar[0];
  43007.                 if (!header) break;
  43008.                 var _SetupAPILog$matchPar2 = SetupAPILog.matchPart("end", lines), footer = _SetupAPILog$matchPar2[0], log = _SetupAPILog$matchPar2[1];
  43009.                 if (!footer) break;
  43010.                 var m = footerRe.exec(footer);
  43011.                 res.push({
  43012.                     header: header,
  43013.                     log: log,
  43014.                     status: m && m[1]
  43015.                 });
  43016.             }
  43017.             return res;
  43018.         };
  43019.         SetupAPILog.prototype.toEnd = function() {
  43020.             if (this.file) for (;!this.file.AtEndOfStream; ) this.file.SkipLine();
  43021.         };
  43022.         SetupAPILog.prototype.readAll = function() {
  43023.             var lines = [];
  43024.             if (this.file) for (;!this.file.AtEndOfStream; ) lines.push(this.file.ReadLine());
  43025.             return lines;
  43026.         };
  43027.         SetupAPILog.prototype.parseAll = function(filter) {
  43028.             return SetupAPILog.parseLog(this.readAll());
  43029.         };
  43030.         SetupAPILog.prototype.close = function() {
  43031.             if (this.file) this.file.Close();
  43032.             this.file = null;
  43033.         };
  43034.         return SetupAPILog;
  43035.     }();
  43036.     exports["default"] = SetupAPILog;
  43037.     module.exports = exports["default"];
  43038. }, function(module, exports, __webpack_require__) {
  43039.     "use strict";
  43040.     exports.__esModule = !0;
  43041.     var _SoftCategories = __webpack_require__(805), _SoftCategories2 = function(obj) {
  43042.         return obj && obj.__esModule ? obj : {
  43043.             "default": obj
  43044.         };
  43045.     }(_SoftCategories);
  43046.     exports["default"] = function(l) {
  43047.         var res = {};
  43048.         _SoftCategories2["default"].forEach(function(_ref) {
  43049.             var id = _ref.id;
  43050.             switch (id) {
  43051.               case "archiver":
  43052.                 res[id] = {
  43053.                     morpher: {
  43054.                         single: {
  43055.                             "for": l("softcategories_archiver-single-for")
  43056.                         }
  43057.                     }
  43058.                 };
  43059.                 break;
  43060.  
  43061.               case "browser":
  43062.                 res[id] = {
  43063.                     morpher: {
  43064.                         single: {
  43065.                             "for": l("softcategories_browser-single-for")
  43066.                         }
  43067.                     }
  43068.                 };
  43069.                 break;
  43070.  
  43071.               case "viewer":
  43072.                 res[id] = {
  43073.                     morpher: {
  43074.                         single: {
  43075.                             "for": l("softcategories_viewer-single-for")
  43076.                         }
  43077.                     }
  43078.                 };
  43079.                 break;
  43080.  
  43081.               case "messenger":
  43082.                 res[id] = {
  43083.                     morpher: {
  43084.                         single: {
  43085.                             "for": l("softcategories_messenger-single-for")
  43086.                         }
  43087.                     }
  43088.                 };
  43089.                 break;
  43090.  
  43091.               case "internet":
  43092.                 res[id] = {
  43093.                     morpher: {
  43094.                         single: {
  43095.                             "for": l("softcategories_internet-single-for")
  43096.                         }
  43097.                     }
  43098.                 };
  43099.                 break;
  43100.  
  43101.               case "player":
  43102.                 res[id] = {
  43103.                     morpher: {
  43104.                         single: {
  43105.                             "for": l("softcategories_player-single-for")
  43106.                         }
  43107.                     }
  43108.                 };
  43109.                 break;
  43110.  
  43111.               case "backup":
  43112.                 res[id] = {
  43113.                     morpher: {
  43114.                         single: {
  43115.                             "for": l("softcategories_backup-single-for")
  43116.                         }
  43117.                     }
  43118.                 };
  43119.                 break;
  43120.  
  43121.               case "antivirus":
  43122.                 res[id] = {
  43123.                     morpher: {
  43124.                         single: {
  43125.                             "for": l("softcategories_antivirus-single-for")
  43126.                         }
  43127.                     }
  43128.                 };
  43129.                 break;
  43130.  
  43131.               case "system":
  43132.                 res[id] = {
  43133.                     morpher: {
  43134.                         plural: {
  43135.                             "for": l("softcategories_system-plural-for")
  43136.                         }
  43137.                     }
  43138.                 };
  43139.                 break;
  43140.  
  43141.               case "drivers":
  43142.                 res[id] = {
  43143.                     morpher: {
  43144.                         plural: {
  43145.                             "for": l("softcategories_drivers-plural-for")
  43146.                         }
  43147.                     }
  43148.                 };
  43149.             }
  43150.         });
  43151.         return res;
  43152.     };
  43153.     module.exports = exports["default"];
  43154. }, function(module, exports, __webpack_require__) {
  43155.     "use strict";
  43156.     (function(l) {
  43157.         exports.__esModule = !0;
  43158.         exports.restartApplications = exports.showApplicationsRestartConfirm = undefined;
  43159.         var _system = __webpack_require__(9), _wmi = __webpack_require__(16), _logs = __webpack_require__(3), _flatten = __webpack_require__(263), _flatten2 = function(obj) {
  43160.             return obj && obj.__esModule ? obj : {
  43161.                 "default": obj
  43162.             };
  43163.         }(_flatten), log = (0, _logs.getLogger)("newOrder:installation:applicationsRestartConfirm"), needsRestart = [ {
  43164.             id: "Yandex.Browser Russian",
  43165.             softId: "7",
  43166.             restarts: [ {
  43167.                 name: "Google Chrome",
  43168.                 processName: "chrome.exe",
  43169.                 getRestartCMD: function(_ref) {
  43170.                     return '"' + _ref.ExecutablePath + '" --restore-last-session';
  43171.                 }
  43172.             } ],
  43173.             patchProgram: function(program) {
  43174.                 program.Keys = program.Keys + " --sync";
  43175.             }
  43176.         } ];
  43177.         exports.showApplicationsRestartConfirm = function(programs) {
  43178.             var restartingApps = [], patchedPrograms = programs.slice(0);
  43179.             needsRestart.forEach(function(prog) {
  43180.                 var program = patchedPrograms.find(function(p) {
  43181.                     return p.ID === prog.softId;
  43182.                 });
  43183.                 if (program) {
  43184.                     var needsPatch = !1;
  43185.                     prog.restarts.forEach(function(app) {
  43186.                         var proc = (0, _wmi.getWMIObjects)([ "ExecutablePath", "CommandLine" ], "Win32_Process", 'Name = "' + app.processName + '"')[0];
  43187.                         if (proc) {
  43188.                             app.restartCMD = app.getRestartCMD(proc);
  43189.                             restartingApps.push(app);
  43190.                             needsPatch = !0;
  43191.                         }
  43192.                     });
  43193.                     if (needsPatch) prog.patchProgram(program);
  43194.                 }
  43195.             });
  43196.             restartingApps = (0, _flatten2["default"])(restartingApps);
  43197.             log.info("Collected apps", restartingApps);
  43198.             log.debug("Patched programs", patchedPrograms);
  43199.             var click = 0;
  43200.             if (restartingApps.length > 0) {
  43201.                 log.info({
  43202.                     action: "installation programs alert shown"
  43203.                 });
  43204.                 click = _system.WshShell.Popup([ l("installation_application_restart_confirm_text_1"), "", l("installation_application_restart_confirm_text_2"), "", restartingApps.map(function(app) {
  43205.                     return "- " + app.name;
  43206.                 }).join("\n") ].join("\n"), 15, l("installation_application_restart_confirm_title"), 52);
  43207.             }
  43208.             switch (click) {
  43209.               case 0:
  43210.                 restartingApps = [];
  43211.                 patchedPrograms = programs;
  43212.                 break;
  43213.  
  43214.               case -1:
  43215.                 log.info({
  43216.                     action: "installation programs alert auto canceled"
  43217.                 });
  43218.                 restartingApps = [];
  43219.                 patchedPrograms = programs;
  43220.                 break;
  43221.  
  43222.               case 6:
  43223.                 log.info({
  43224.                     action: "installation programs alert accepted"
  43225.                 });
  43226.                 break;
  43227.  
  43228.               case 7:
  43229.                 log.info({
  43230.                     action: "installation programs alert canceled"
  43231.                 });
  43232.                 restartingApps = [];
  43233.                 patchedPrograms = programs;
  43234.                 break;
  43235.  
  43236.               default:
  43237.                 restartingApps = [];
  43238.                 patchedPrograms = programs;
  43239.             }
  43240.             restartingApps.forEach(function(app) {
  43241.                 log.info("Killing app", app);
  43242.                 var cmd = 'taskkill /F /IM "' + app.processName + '"';
  43243.                 _system.WshShell.Run(cmd, 0, !0);
  43244.             });
  43245.             return {
  43246.                 restartingApps: restartingApps,
  43247.                 patchedPrograms: patchedPrograms
  43248.             };
  43249.         }, exports.restartApplications = function() {
  43250.             (arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []).forEach(function(app) {
  43251.                 log.info("Restarting app", app);
  43252.                 _system.WshShell.Run(app.restartCMD, 2, !1);
  43253.             });
  43254.         };
  43255.     }).call(exports, __webpack_require__(6));
  43256. }, function(module, exports, __webpack_require__) {
  43257.     "use strict";
  43258.     exports.__esModule = !0;
  43259.     var _system = __webpack_require__(9), _logs = __webpack_require__(3), _runCommandAsync = __webpack_require__(127);
  43260.     exports["default"] = function(fn) {
  43261.         return function() {
  43262.             var gen = fn.apply(this, arguments);
  43263.             return new Promise(function(resolve, reject) {
  43264.                 function step(key, arg) {
  43265.                     try {
  43266.                         var info = gen[key](arg), value = info.value;
  43267.                     } catch (error) {
  43268.                         reject(error);
  43269.                         return;
  43270.                     }
  43271.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  43272.                         step("next", value);
  43273.                     }, function(err) {
  43274.                         step("throw", err);
  43275.                     });
  43276.                 }
  43277.                 return step("next");
  43278.             });
  43279.         };
  43280.     }(regeneratorRuntime.mark(function _callee() {
  43281.         var result, com;
  43282.         return regeneratorRuntime.wrap(function(_context) {
  43283.             for (;;) switch (_context.prev = _context.next) {
  43284.               case 0:
  43285.                 result = void 0;
  43286.                 _context.prev = 1;
  43287.                 if ("1" !== (0, _system.RegRead)("HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\\DisableSR")) {
  43288.                     _context.next = 7;
  43289.                     break;
  43290.                 }
  43291.                 (0, _logs.log)("[restore] System Restore disabled");
  43292.                 result = {
  43293.                     status: "system_restore_disabled"
  43294.                 };
  43295.                 _context.next = 12;
  43296.                 break;
  43297.  
  43298.               case 7:
  43299.                 com = 'wmic.exe /Namespace:\\\\root\\default Path SystemRestore Call CreateRestorePoint "DriverPack ' + window.version + '", 100, 10';
  43300.                 _context.next = 10;
  43301.                 return (0, _runCommandAsync.runCommandAsync)({
  43302.                     command: com,
  43303.                     timeout: 6e5
  43304.                 });
  43305.  
  43306.               case 10:
  43307.                 (0, _logs.log)("[restore] Restore Point created");
  43308.                 result = {
  43309.                     status: "ok"
  43310.                 };
  43311.  
  43312.               case 12:
  43313.                 _context.next = 18;
  43314.                 break;
  43315.  
  43316.               case 14:
  43317.                 _context.prev = 14;
  43318.                 _context.t0 = _context["catch"](1);
  43319.                 (0, _logs.log)("[restore] Restore Point not created", _context.t0);
  43320.                 result = {
  43321.                     status: "not_created"
  43322.                 };
  43323.  
  43324.               case 18:
  43325.                 return _context.abrupt("return", result);
  43326.  
  43327.               case 19:
  43328.               case "end":
  43329.                 return _context.stop();
  43330.             }
  43331.         }, _callee, undefined, [ [ 1, 14 ] ]);
  43332.     }));
  43333.     module.exports = exports["default"];
  43334. }, function(module, exports, __webpack_require__) {
  43335.     "use strict";
  43336.     exports.__esModule = !0;
  43337.     var _logs = __webpack_require__(3), _statistics = __webpack_require__(15), _statistics2 = function(obj) {
  43338.         return obj && obj.__esModule ? obj : {
  43339.             "default": obj
  43340.         };
  43341.     }(_statistics), _shell = __webpack_require__(14), _processes = __webpack_require__(63), _wmi = __webpack_require__(16), _os = __webpack_require__(13);
  43342.     exports["default"] = function() {
  43343.         if (_os.OSVersion >= 6 && _os.OSVersion < 10) {
  43344.             var processes = (0, _wmi.getWMIObjects)([ "ProcessId", "CommandLine" ], "Win32_Process", 'CommandLine LIKE "%pnpui.dll,InstallSecurityPromptRunDllW%"');
  43345.             processes.forEach(function(_ref) {
  43346.                 var ProcessId = _ref.ProcessId, CommandLine = _ref.CommandLine, reg = /pnpui\.dll,InstallSecurityPromptRunDllW\s+(\d+)/i, keys = "{TAB}{ENTER}";
  43347.                 switch (reg.exec(CommandLine)[1]) {
  43348.                   case "10":
  43349.                     keys = "{TAB}{ENTER}";
  43350.                     break;
  43351.  
  43352.                   case "20":
  43353.                     keys = "{TAB 3}{ENTER}";
  43354.                 }
  43355.                 if (_shell.WshShell.AppActivate(ProcessId)) {
  43356.                     _shell.WshShell.SendKeys(keys);
  43357.                     (0, _logs.log)("[driver allow] clicked");
  43358.                     _statistics2["default"].event({
  43359.                         action: "installation autoallow clicked"
  43360.                     });
  43361.                 }
  43362.             });
  43363.             if (processes.length > 0) _shell.WshShell.AppActivate((0, _processes.getMyPID)());
  43364.         }
  43365.     };
  43366.     module.exports = exports["default"];
  43367. }, function(module, exports, __webpack_require__) {
  43368.     "use strict";
  43369.     function emulateMediaQuery() {
  43370.         var windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
  43371.         if (windowWidth < 800) {
  43372.             (0, _handleClasses.addClass)(document.body, "window-max-width-800");
  43373.             (0, _handleClasses.removeClass)(document.body, "window-min-width-800");
  43374.             (0, _handleClasses.removeClass)(document.body, "window-min-width-1024");
  43375.             (0, _handleClasses.removeClass)(document.body, "window-min-width-1200");
  43376.         } else if (windowWidth >= 800 && windowWidth < 1024) {
  43377.             (0, _handleClasses.removeClass)(document.body, "window-max-width-800");
  43378.             (0, _handleClasses.addClass)(document.body, "window-min-width-800");
  43379.             (0, _handleClasses.removeClass)(document.body, "window-min-width-1024");
  43380.             (0, _handleClasses.removeClass)(document.body, "window-min-width-1200");
  43381.         } else if (windowWidth >= 1024 && windowWidth < 1200) {
  43382.             (0, _handleClasses.removeClass)(document.body, "window-max-width-800");
  43383.             (0, _handleClasses.addClass)(document.body, "window-min-width-1024");
  43384.             (0, _handleClasses.removeClass)(document.body, "window-min-width-800");
  43385.             (0, _handleClasses.removeClass)(document.body, "window-min-width-1200");
  43386.         } else {
  43387.             (0, _handleClasses.removeClass)(document.body, "window-max-width-800");
  43388.             (0, _handleClasses.removeClass)(document.body, "window-min-width-800");
  43389.             (0, _handleClasses.removeClass)(document.body, "window-min-width-1024");
  43390.             (0, _handleClasses.addClass)(document.body, "window-min-width-1200");
  43391.         }
  43392.     }
  43393.     exports.__esModule = !0;
  43394.     exports["default"] = emulateMediaQuery;
  43395.     var _handleClasses = __webpack_require__(169);
  43396.     module.exports = exports["default"];
  43397. }, function(module, exports, __webpack_require__) {
  43398.     "use strict";
  43399.     exports.__esModule = !0;
  43400.     exports.addEvent = function(element, type, handler) {
  43401.         if (element.addEventListener) element.addEventListener(type, handler, !1); else element.attachEvent("on" + type, handler);
  43402.     }, exports.removeEvent = function(element, type, handler) {
  43403.         if (element.removeEventListener) element.removeEventListener(type, handler, !1); else element.detachEvent("on" + type, handler);
  43404.     };
  43405. }, function(module, exports, __webpack_require__) {
  43406.     "use strict";
  43407.     exports.__esModule = !0;
  43408.     var _system = __webpack_require__(9), _processes = __webpack_require__(63);
  43409.     exports["default"] = function(fn) {
  43410.         return function() {
  43411.             var gen = fn.apply(this, arguments);
  43412.             return new Promise(function(resolve, reject) {
  43413.                 function step(key, arg) {
  43414.                     try {
  43415.                         var info = gen[key](arg), value = info.value;
  43416.                     } catch (error) {
  43417.                         reject(error);
  43418.                         return;
  43419.                     }
  43420.                     if (info.done) resolve(value); else return Promise.resolve(value).then(function(value) {
  43421.                         step("next", value);
  43422.                     }, function(err) {
  43423.                         step("throw", err);
  43424.                     });
  43425.                 }
  43426.                 return step("next");
  43427.             });
  43428.         };
  43429.     }(regeneratorRuntime.mark(function _callee() {
  43430.         var appliedDPI;
  43431.         return regeneratorRuntime.wrap(function(_context) {
  43432.             for (;;) switch (_context.prev = _context.next) {
  43433.               case 0:
  43434.                 appliedDPI = (0, _system.RegRead)("HKEY_CURRENT_USER\\Control Panel\\Desktop\\WindowMetrics\\AppliedDPI");
  43435.                 if (!(window.screen.width <= 800 || window.screen.height <= 600 || appliedDPI > 96)) {
  43436.                     _context.next = 8;
  43437.                     break;
  43438.                 }
  43439.                 _system.WshShell.AppActivate((0, _processes.getMyPID)());
  43440.                 _context.next = 5;
  43441.                 return Promise.resolve().delay(100);
  43442.  
  43443.               case 5:
  43444.                 _system.WshShell.SendKeys("^(0)");
  43445.                 _context.next = 8;
  43446.                 return Promise.resolve().delay(50);
  43447.  
  43448.               case 8:
  43449.                 if (!(window.screen.width <= 800 || window.screen.height <= 600)) {
  43450.                     _context.next = 17;
  43451.                     break;
  43452.                 }
  43453.                 _system.WshShell.AppActivate((0, _processes.getMyPID)());
  43454.                 _context.next = 12;
  43455.                 return Promise.resolve().delay(100);
  43456.  
  43457.               case 12:
  43458.                 _system.WshShell.SendKeys("^(0{-})");
  43459.                 _context.next = 15;
  43460.                 return Promise.resolve().delay(50);
  43461.  
  43462.               case 15:
  43463.                 _context.next = 25;
  43464.                 break;
  43465.  
  43466.               case 17:
  43467.                 if (!(appliedDPI > 96)) {
  43468.                     _context.next = 25;
  43469.                     break;
  43470.                 }
  43471.                 _system.WshShell.AppActivate((0, _processes.getMyPID)());
  43472.                 _context.next = 21;
  43473.                 return Promise.resolve().delay(100);
  43474.  
  43475.               case 21:
  43476.                 _system.WshShell.SendKeys("^(0{+}{+}{+}{+})");
  43477.                 _context.next = 24;
  43478.                 return Promise.resolve().delay(50);
  43479.  
  43480.               case 24:
  43481.                 window.scrollTo(0, 0);
  43482.  
  43483.               case 25:
  43484.               case "end":
  43485.                 return _context.stop();
  43486.             }
  43487.         }, _callee, undefined);
  43488.     }));
  43489.     module.exports = exports["default"];
  43490. }, function(module, exports, __webpack_require__) {
  43491.     "use strict";
  43492.     exports.__esModule = !0;
  43493.     exports["default"] = function(l, problem) {
  43494.         var result = void 0;
  43495.         switch (problem) {
  43496.           case "usb_connection":
  43497.             result = l("deviceproblems_usb_connection");
  43498.             break;
  43499.  
  43500.           case "root_legacy":
  43501.             result = l("deviceproblems_root_legacy");
  43502.             break;
  43503.  
  43504.           case "vpn_no_need_drivers":
  43505.             result = l("deviceproblems_vpn_no_need_drivers");
  43506.             break;
  43507.  
  43508.           case "damaged_system_driver":
  43509.             result = l("deviceproblems_damaged_system_driver");
  43510.             break;
  43511.  
  43512.           case "usb_unknown_vendor":
  43513.             result = l("deviceproblems_usb_unknown_vendor");
  43514.             break;
  43515.  
  43516.           case "sound_card":
  43517.             result = l("deviceproblems_sound_card");
  43518.         }
  43519.         return result;
  43520.     };
  43521.     module.exports = exports["default"];
  43522. }, function(module, exports, __webpack_require__) {
  43523.     "use strict";
  43524.     exports.__esModule = !0;
  43525.     var _processNotifierFile = __webpack_require__(327);
  43526.     exports["default"] = function() {
  43527.         var result = void 0, notifierSouce = (0, _processNotifierFile.getNotifierSource)();
  43528.         if (notifierSouce) result = {
  43529.             "Internal Channel": {
  43530.                 Notifier: notifierSouce
  43531.             }
  43532.         };
  43533.         return result;
  43534.     };
  43535.     module.exports = exports["default"];
  43536. }, function(module, exports, __webpack_require__) {
  43537.     "use strict";
  43538.     exports.__esModule = !0;
  43539.     var mapDevice = function(device, isBroken) {
  43540.         var result = {}, deviceId = device.deviceId, currentDriver = device.currentDriver, problem = device.problem, current = null;
  43541.         if (currentDriver) {
  43542.             current = {
  43543.                 driverDeviceId: currentDriver.deviceId,
  43544.                 name: currentDriver.name,
  43545.                 date: currentDriver.date,
  43546.                 version: currentDriver.version,
  43547.                 manufacturer: currentDriver.manufacturer
  43548.             };
  43549.         }
  43550.         result.deviceId = deviceId;
  43551.         if (isBroken) result.problem = problem; else result.currentDriver = current;
  43552.         return result;
  43553.     };
  43554.     exports["default"] = function() {
  43555.         var result = {}, state = window.store.getState(), driversState = state.drivers;
  43556.         if (driversState) {
  43557.             var devices = driversState.devices, lowRankedDevices = driversState.lowRankedDevices, brokenDevices = driversState.brokenDevices;
  43558.             result.devices = devices.map(function(device) {
  43559.                 return mapDevice(device);
  43560.             });
  43561.             result.lowRankedDevices = lowRankedDevices.map(function(device) {
  43562.                 return mapDevice(device);
  43563.             });
  43564.             result.brokenDevices = brokenDevices.map(function(device) {
  43565.                 return mapDevice(device, !0);
  43566.             });
  43567.         }
  43568.         return result;
  43569.     };
  43570.     module.exports = exports["default"];
  43571. }, function(module, exports, __webpack_require__) {
  43572.     "use strict";
  43573.     exports.__esModule = !0;
  43574.     exports.getOffered = function(_ref, softId) {
  43575.         var programs = _ref.programs;
  43576.         if (programs) return programs.find(function(_ref2) {
  43577.             var id = _ref2.id, isVisible = _ref2.isVisible;
  43578.             return id === softId && isVisible;
  43579.         });
  43580.     }, exports.getInstalling = function(_ref3, softId) {
  43581.         var installation = _ref3.installation;
  43582.         if (installation && installation.items) return installation.items.find(function(_ref4) {
  43583.             return _ref4.id === softId;
  43584.         });
  43585.     };
  43586. }, function(module, exports, __webpack_require__) {
  43587.     "use strict";
  43588.     exports.__esModule = !0;
  43589.     exports.startBitsDownloading = exports.joinBitsString = undefined;
  43590.     var _system = __webpack_require__(9);
  43591.     exports.joinBitsString = function(bitsSoftArr) {
  43592.         var jobName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "drp_bits_job", bitsString = "bitsadmin /cancel " + jobName + " & timeout 3 && bitsadmin /create " + jobName + " ", downloadString = "", execString = "";
  43593.         bitsSoftArr.forEach(function(program) {
  43594.             var programName = program.link.split("/").slice(-1)[0];
  43595.             downloadString += " && bitsadmin /addfile " + jobName + ' "' + program.link + '" "%AppData%\\DRPsu\\PROGRAMS\\' + programName + '"';
  43596.             execString += '& start \\"\\" \\"%AppData%\\DRPsu\\PROGRAMS\\' + programName + '\\" ' + program.Keys.replace(/"/g, '\\"') + " ";
  43597.         });
  43598.         bitsString += downloadString;
  43599.         bitsString += " && bitsadmin /SETMINRETRYDELAY " + jobName + " 88000 && bitsadmin /SETNOTIFYCMDLINE " + jobName + ' "cmd.exe" "/c start /min cmd /c bitsadmin /complete ' + jobName + " && timeout 3 &";
  43600.         bitsString += execString;
  43601.         bitsString += ' " && bitsadmin /resume ' + jobName;
  43602.         return bitsString;
  43603.     }, exports.startBitsDownloading = function(bitsString) {
  43604.         if (bitsString) _system.WshShell.Run("cmd /c " + bitsString, 0, !1);
  43605.     };
  43606. }, function(module, exports, __webpack_require__) {
  43607.     "use strict";
  43608.     function _interopRequireDefault(obj) {
  43609.         return obj && obj.__esModule ? obj : {
  43610.             "default": obj
  43611.         };
  43612.     }
  43613.     var _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _statistics = __webpack_require__(15), _statistics2 = _interopRequireDefault(_statistics), _os = __webpack_require__(13), _utils = __webpack_require__(23), _getInternetExplorerVersion = __webpack_require__(100), _getInternetExplorerVersion2 = _interopRequireDefault(_getInternetExplorerVersion), _settings = __webpack_require__(43), _settings2 = _interopRequireDefault(_settings), showBugreportHTA = function(msg, url, linenumber, lfnE) {
  43614.         var errorInfo = {
  43615.             DRPVersion: window.version,
  43616.             DRPVerType: window.verType,
  43617.             sessionId: _statistics2["default"].sessionId,
  43618.             lang: window.lang,
  43619.             logfile: _logs2["default"].logfile ? _logs2["default"].logfile : null,
  43620.             dialogMode: 2,
  43621.             msg: msg,
  43622.             url: url,
  43623.             linenumber: linenumber,
  43624.             lfnE: lfnE
  43625.         };
  43626.         window.showModelessDialog("Tools/modules/bugreport.hta", errorInfo, "status:false;dialogWidth:670px;dialogHeight:600px;resizable:yes;scroll:yes;");
  43627.     };
  43628.     window.onerror = function(msg, url, linenumber) {
  43629.         var shortUrl = url.split("/").slice(-1)[0];
  43630.         shortUrl = shortUrl.split("\\").slice(-1)[0];
  43631.         var lfn = "";
  43632.         try {
  43633.             if (arguments.callee.caller) lfn = arguments.callee.caller.toString().match(/function ([^(]*)\(/)[1];
  43634.         } catch (e) {}
  43635.         try {
  43636.             var _shortUrl, _javascriptException, params = {
  43637.                 "javascript exception": (_javascriptException = {}, _javascriptException[shortUrl] = (_shortUrl = {},
  43638.                 _shortUrl[linenumber] = msg, _shortUrl), _javascriptException)
  43639.             };
  43640.             _statistics2["default"].event({
  43641.                 action: "javascript exception",
  43642.                 params: params
  43643.             });
  43644.         } catch (e) {}
  43645.         if (_settings2["default"].get("errors.showBugReport").value) showBugreportHTA(msg, shortUrl, linenumber, lfn);
  43646.         (0, _logs.log)("!!! ERROR !!! " + msg + "\r\n Module: " + url + " \r\n  Line: " + linenumber);
  43647.         return !0;
  43648.     };
  43649.     var prevOnError = window.onerror;
  43650.     window.onerror = function(msg, url, linenumber) {
  43651.         var _OSCSDVersion = _os.OSCSDVersion.replace(/Service Pack /i, "SP"), OSVersionEr = _os.OSCaption + " " + _OSCSDVersion + " " + _os.OSArchitecture, JSVersion = ScriptEngine() + " " + ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion(), DRPVersion = window.version + " " + window.verType, description = OSVersionEr + " IE: " + (0,
  43652.         _getInternetExplorerVersion2["default"])() + " " + JSVersion, reportScriptURL = "http://static.drp.su/update/error-catch/?script=" + encodeURIComponent(url) + "&line=" + encodeURIComponent(linenumber) + "&DRP_version=" + encodeURIComponent(DRPVersion) + "&message=" + encodeURIComponent(msg) + "&description=" + encodeURIComponent(description);
  43653.         (0, _logs.log)([ reportScriptURL ]);
  43654.         (0, _utils.inc)(reportScriptURL);
  43655.         prevOnError(msg, url, linenumber);
  43656.         return !0;
  43657.     };
  43658. }, function(module, exports, __webpack_require__) {
  43659.     "use strict";
  43660.     exports.__esModule = !0;
  43661.     var _system = __webpack_require__(9), _utils = __webpack_require__(23);
  43662.     exports["default"] = function(path) {
  43663.         var command = (0, _utils.wrapInCmd)('explorer "' + path + '"');
  43664.         setTimeout(function() {
  43665.             _system.WshShell.Run(command, 0, !1);
  43666.         }, 0);
  43667.     };
  43668.     module.exports = exports["default"];
  43669. }, function(module, exports, __webpack_require__) {
  43670.     "use strict";
  43671.     function _interopRequireDefault(obj) {
  43672.         return obj && obj.__esModule ? obj : {
  43673.             "default": obj
  43674.         };
  43675.     }
  43676.     exports.__esModule = !0;
  43677.     var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
  43678.         return typeof obj;
  43679.     } : function(obj) {
  43680.         return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  43681.     }, _getNotebookVendor = __webpack_require__(88), _getNotebookVendor2 = _interopRequireDefault(_getNotebookVendor), _compact = __webpack_require__(515), _compact2 = _interopRequireDefault(_compact), _cloneDeep = __webpack_require__(569), _cloneDeep2 = _interopRequireDefault(_cloneDeep), formatDate = function(date) {
  43682.         var res = {
  43683.             timestamp: date.valueOf()
  43684.         };
  43685.         res["" + date.getFullYear()] = {};
  43686.         res["" + date.getFullYear()]["" + (date.getMonth() + 1)] = "" + date.getDate();
  43687.         return res;
  43688.     }, formatSecurity = function(value) {
  43689.         var vendor = value.Name.split(" ")[0], type = /windows|microsoft/i.test(vendor) ? "Native" : "Other", res = {};
  43690.         res[type] = {
  43691.             Active: value.Active,
  43692.             UpToDate: value.UpToDate
  43693.         };
  43694.         res[type][vendor] = {};
  43695.         res[type][vendor][value.Name] = {
  43696.             Active: value.Active,
  43697.             UpToDate: value.UpToDate
  43698.         };
  43699.         return res;
  43700.     }, modifyMap = {
  43701.         Computer: {
  43702.             Summary: {
  43703.                 Computer: {
  43704.                     "Computer Name": undefined,
  43705.                     "User Name": undefined,
  43706.                     "Date / Time": undefined,
  43707.                     "Logon Domain": undefined,
  43708.                     "Operating System": undefined,
  43709.                     "OS Service Pack": undefined,
  43710.                     "Internet Explorer": function(version) {
  43711.                         var res = {};
  43712.                         if (version) {
  43713.                             var _version$split = version.split("."), prim = _version$split[0], sec = _version$split.slice(1);
  43714.                             res[prim] = sec.join(".");
  43715.                         } else res.other = version;
  43716.                         return res;
  43717.                     }
  43718.                 },
  43719.                 Display: {
  43720.                     "Video Adapter": undefined,
  43721.                     Monitor: undefined
  43722.                 },
  43723.                 Motherboard: {
  43724.                     "Motherboard Name": undefined,
  43725.                     "CPU Type": function(value) {
  43726.                         var _value$split = value.split(",");
  43727.                         return {
  43728.                             Name: _value$split[0],
  43729.                             MaxClockSpeed: _value$split[1],
  43730.                             NumberOfCores: _value$split[2]
  43731.                         };
  43732.                     },
  43733.                     "System Memory": function(value) {
  43734.                         return parseInt(value, 10);
  43735.                     },
  43736.                     "BIOS Type": function(value) {
  43737.                         var parts = /\((\d+)\.(\d+)\.(\d+)\)$/.exec(value);
  43738.                         if (parts && 4 === parts.length) return formatDate(new Date(parseInt(parts[1]), parseInt(parts[2]) - 1, parseInt(parts[3]))); else return {};
  43739.                     },
  43740.                     "BIOS Date": "BIOS Type"
  43741.                 },
  43742.                 DMI: {
  43743.                     "DMI System UUID": undefined,
  43744.                     "DMI System Serial Number": undefined,
  43745.                     "DMI Chassis Serial Number": undefined,
  43746.                     "DMI Motherboard Serial Number": undefined,
  43747.                     "DMI Motherboard Version": undefined,
  43748.                     "DMI System Version": undefined,
  43749.                     "DMI Chassis Version": undefined,
  43750.                     "DMI Chassis Asset Tag": undefined,
  43751.                     "DMI BIOS Version": undefined,
  43752.                     "DMI BIOS Vendor": function(value) {
  43753.                         return (0, _getNotebookVendor2["default"])(value);
  43754.                     }
  43755.                 },
  43756.                 "Power Management": {
  43757.                     "Battery Properties": {
  43758.                         "Unique ID": undefined,
  43759.                         "Device Name": undefined,
  43760.                         "Current Capacity": function(value) {
  43761.                             return parseInt(value, 10);
  43762.                         },
  43763.                         "Fully Charged Capacity": function(value) {
  43764.                             return parseInt(value, 10);
  43765.                         },
  43766.                         "Designed Capacity": function(value) {
  43767.                             return parseInt(value, 10);
  43768.                         },
  43769.                         "Battery Voltage": function(value) {
  43770.                             return parseInt(value, 10);
  43771.                         }
  43772.                     },
  43773.                     "Power Management Properties": {
  43774.                         "Current Power Source": undefined,
  43775.                         "Battery Status": function(value) {
  43776.                             return parseInt(value, 10);
  43777.                         },
  43778.                         "Remaining Battery Lifetime": function(value) {
  43779.                             return parseInt(value, 10);
  43780.                         }
  43781.                     }
  43782.                 },
  43783.                 Input: {
  43784.                     Keyboard: undefined,
  43785.                     Mouse: undefined
  43786.                 },
  43787.                 Multimedia: {
  43788.                     "Audio Adapter": undefined
  43789.                 },
  43790.                 Network: {
  43791.                     "Network Adapter": undefined
  43792.                 },
  43793.                 Storage: {
  43794.                     "IDE Controller": undefined,
  43795.                     "Disk Drive": function(value) {
  43796.                         var parts = /^(.+) \(SMART (\w+)\)$/.exec(value);
  43797.                         if (parts && 3 === parts.length) return {
  43798.                             SMART: parts[2]
  43799.                         }; else return null;
  43800.                     }
  43801.                 },
  43802.                 Peripherals: {
  43803.                     Battery: undefined,
  43804.                     "USB Controller": function(value) {
  43805.                         var parts = /^(.+) USB 3\./.exec(value);
  43806.                         if (parts && 2 === parts.length) return {
  43807.                             "USB 3": (0, _getNotebookVendor2["default"])(parts[1])
  43808.                         }; else return null;
  43809.                     }
  43810.                 },
  43811.                 Partitions: {
  43812.                     Partition: function(value) {
  43813.                         var parts = /^(\w)(:|) \((\w+)\) (.+) GB \((.+) GB free\)$/.exec(value);
  43814.                         if (parts && 6 === parts.length) {
  43815.                             if ("undefined" === parts[3]) parts[3] = "Other";
  43816.                             if ("NaN" === parts[4] && "NaN" === parts[5]) return null;
  43817.                             var res = {
  43818.                                 "File System": {}
  43819.                             };
  43820.                             res["File System"][parts[3]] = {};
  43821.                             res["File System"][parts[3]][parts[1]] = {
  43822.                                 Total: parseFloat(parts[4]),
  43823.                                 Free: parseFloat(parts[5])
  43824.                             };
  43825.                             return res;
  43826.                         }
  43827.                         return null;
  43828.                     }
  43829.                 },
  43830.                 Temperature: undefined
  43831.             }
  43832.         },
  43833.         "Operating System": {
  43834.             "Operating System": {
  43835.                 "Current Session": {
  43836.                     "Computer Name": undefined,
  43837.                     "User Name": undefined,
  43838.                     "Logon Domain": undefined,
  43839.                     UpTime: undefined,
  43840.                     "Last Reboot Reason": function(value) {
  43841.                         return value.split(":")[0];
  43842.                     }
  43843.                 },
  43844.                 "Operating System Properties": {
  43845.                     "OS Name": undefined,
  43846.                     "OS Kernel Type": undefined,
  43847.                     "OS Version": function(value) {
  43848.                         var _value$split2 = value.split(".");
  43849.                         return _value$split2[0] + "." + _value$split2[1];
  43850.                     },
  43851.                     "OS Root": function(value) {
  43852.                         return value.toLowerCase();
  43853.                     },
  43854.                     "OS Service Pack": function(value) {
  43855.                         var parts = /^Service Pack (\w+)/.exec(value);
  43856.                         if (parts && 2 === parts.length) return parts[1]; else return "0";
  43857.                     },
  43858.                     "OS Installation Date": function(value) {
  43859.                         return formatDate(new Date(value));
  43860.                     }
  43861.                 }
  43862.             },
  43863.             UpTime: {
  43864.                 "Current Session": {
  43865.                     "Last Boot Time": function(value) {
  43866.                         return formatDate(new Date(value));
  43867.                     },
  43868.                     "Current Time": function(value) {
  43869.                         return formatDate(new Date(value));
  43870.                     },
  43871.                     UpTime: function(value) {
  43872.                         var parts = /^(\d+) sec/.exec(value);
  43873.                         if (parts && 2 === parts.length) return Math.floor(parseInt(parts[1]) / 60); else return null;
  43874.                     },
  43875.                     "UpTime Minutes": "UpTime"
  43876.                 }
  43877.             },
  43878.             "Weekly Errors": function(error) {
  43879.                 var _error$Type = error.Type, Type = _error$Type === undefined ? "Critical" : _error$Type, Level = error.Level, Source = error.Source, _error$Code = error.Code, Code = _error$Code === undefined ? "unknown" : _error$Code, Count = error.Count, res = {};
  43880.                 res[Type] = {};
  43881.                 res[Type][Level] = {};
  43882.                 res[Type][Level][Source] = {};
  43883.                 res[Type][Level][Source][Code] = Count;
  43884.                 return res;
  43885.             },
  43886.             "Daily Errors": function(error) {
  43887.                 var _error$Type2 = error.Type, Type = _error$Type2 === undefined ? "Critical" : _error$Type2, Level = error.Level, Source = error.Source, _error$Code2 = error.Code, Code = _error$Code2 === undefined ? "unknown" : _error$Code2, Count = error.Count;
  43888.                 if ("Критический" === Type) Type = "Critical";
  43889.                 if ("Ошибка" === Type) Type = "Error";
  43890.                 var res = {};
  43891.                 res[Type] = {};
  43892.                 res[Type][Level] = {};
  43893.                 res[Type][Level][Source] = {};
  43894.                 res[Type][Level][Source][Code] = Count;
  43895.                 return res;
  43896.             }
  43897.         },
  43898.         Display: {
  43899.             "Windows Video": {
  43900.                 "Driver Name": undefined,
  43901.                 "Video Mode": undefined,
  43902.                 "Memory Size": function(value) {
  43903.                     return parseInt(value, 10);
  43904.                 },
  43905.                 "Driver Date": function(value) {
  43906.                     return formatDate(new Date(value));
  43907.                 },
  43908.                 Description: function(value) {
  43909.                     if (/intel/i.test(value)) return {
  43910.                         Intel: value
  43911.                     };
  43912.                     if (/nvidia/i.test(value)) return {
  43913.                         NVIDIA: value
  43914.                     };
  43915.                     if (/ati|amd/i.test(value)) return {
  43916.                         AMD: value
  43917.                     }; else return {
  43918.                         Other: value
  43919.                     };
  43920.                 },
  43921.                 Vendor: "Description"
  43922.             },
  43923.             Monitor: {
  43924.                 "Monitor Name": undefined,
  43925.                 "Monitor Type": undefined
  43926.             }
  43927.         },
  43928.         Security: {
  43929.             "Windows Security": {
  43930.                 "Operating System Properties": {
  43931.                     "OS Name": undefined,
  43932.                     "OS Service Pack": undefined
  43933.                 }
  43934.             },
  43935.             "Anti-Virus": function(value) {
  43936.                 return formatSecurity(value);
  43937.             },
  43938.             "Anti-Spyware": function(value) {
  43939.                 return formatSecurity(value);
  43940.             },
  43941.             Firewall: function(value) {
  43942.                 return formatSecurity(value);
  43943.             }
  43944.         },
  43945.         "Power Management": {
  43946.             "Battery Properties": {
  43947.                 Manufacturer: undefined
  43948.             }
  43949.         }
  43950.     }, modifyByMap = function modifyByMap(obj, modifyMapObj) {
  43951.         Object.keys(modifyMapObj).forEach(function(key) {
  43952.             switch (_typeof(modifyMapObj[key])) {
  43953.               case "object":
  43954.                 if (obj[key]) if (Array.isArray(obj[key])) obj[key].forEach(function(elem) {
  43955.                     return modifyByMap(elem, modifyMapObj[key]);
  43956.                 }); else modifyByMap(obj[key], modifyMapObj[key]);
  43957.                 break;
  43958.  
  43959.               case "function":
  43960.                 try {
  43961.                     if (Array.isArray(obj[key])) obj[key] = (0, _compact2["default"])(obj[key].map(modifyMapObj[key])); else obj[key] = modifyMapObj[key](obj[key]);
  43962.                 } catch (err) {}
  43963.                 break;
  43964.  
  43965.               case "string":
  43966.                 try {
  43967.                     obj[key] = obj[modifyMapObj[key]];
  43968.                     delete obj[modifyMapObj[key]];
  43969.                 } catch (err) {}
  43970.                 break;
  43971.  
  43972.               case "undefined":
  43973.                 try {
  43974.                     delete obj[key];
  43975.                 } catch (err) {}
  43976.             }
  43977.         });
  43978.     };
  43979.     exports["default"] = function(raw) {
  43980.         var data = (0, _cloneDeep2["default"])(raw);
  43981.         try {
  43982.             modifyByMap(data, modifyMap);
  43983.         } catch (err) {}
  43984.         return data;
  43985.     };
  43986.     module.exports = exports["default"];
  43987. }, function(module, exports, __webpack_require__) {
  43988.     "use strict";
  43989.     function compareItems(a, b) {
  43990.         return a.priority - b.priority;
  43991.     }
  43992.     function compareDriversByPackName(a, b) {
  43993.         return a.packName < b.packName ? -1 : 1;
  43994.     }
  43995.     function patchDrivers(drivers, startPriorityValue) {
  43996.         var nextPriorityValue = startPriorityValue;
  43997.         return drivers.slice(0).map(function(driver) {
  43998.             return _extends({}, driver, {
  43999.                 id: driver.deviceId,
  44000.                 fullDeviceId: driver.recommendedDriver.fullDeviceId,
  44001.                 singleOnly: !0,
  44002.                 isDriver: !0,
  44003.                 packName: driver.recommendedDriver.pack,
  44004.                 name: driver.recommendedDriver.name
  44005.             });
  44006.         }).sort(compareDriversByPackName).map(function(driver) {
  44007.             nextPriorityValue++;
  44008.             return _extends({}, driver, {
  44009.                 priority: "lan" === driver.recommendedDriver["class"] ? MAX_VALUE - 1 : "wifi" === driver.recommendedDriver["class"] ? MAX_VALUE : nextPriorityValue
  44010.             });
  44011.         });
  44012.     }
  44013.     function patchPrograms(programs) {
  44014.         return programs.slice(0).map(function(program) {
  44015.             return _extends({}, program, {
  44016.                 priority: "Antivirus" !== program.category && program.priority || MAX_VALUE - 2
  44017.             });
  44018.         });
  44019.     }
  44020.     function getStartPriorityValue(programs) {
  44021.         var partnerPrograms = programs.filter(function(program) {
  44022.             return program.isPartner && "Antivirus" !== program.category;
  44023.         });
  44024.         return partnerPrograms.length ? (0, _max2["default"])(partnerPrograms, "priority").priority : 2;
  44025.     }
  44026.     function setItemsState(items) {
  44027.         return items.slice(0).map(function(item) {
  44028.             return _extends({}, item, {
  44029.                 status: "waiting",
  44030.                 downloading: {
  44031.                     totalFileSize: 0,
  44032.                     downloadedSize: 0,
  44033.                     downloadingSpeed: 0
  44034.                 },
  44035.                 unzipping: {
  44036.                     totalCount: 0,
  44037.                     unzippedPercents: 0
  44038.                 },
  44039.                 error: {
  44040.                     errorType: null
  44041.                 }
  44042.             });
  44043.         });
  44044.     }
  44045.     exports.__esModule = !0;
  44046.     var _extends = Object.assign || function(target) {
  44047.         for (var i = 1; i < arguments.length; i++) {
  44048.             var source = arguments[i];
  44049.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  44050.         }
  44051.         return target;
  44052.     };
  44053.     exports["default"] = function(_ref) {
  44054.         var drivers = _ref.drivers, programs = _ref.programs;
  44055.         return setItemsState([].concat(patchDrivers(drivers, getStartPriorityValue(programs)), patchPrograms(programs)).sort(compareItems));
  44056.     };
  44057.     var _max = __webpack_require__(577), _max2 = function(obj) {
  44058.         return obj && obj.__esModule ? obj : {
  44059.             "default": obj
  44060.         };
  44061.     }(_max), MAX_VALUE = 1e9;
  44062.     module.exports = exports["default"];
  44063. }, function(module, exports, __webpack_require__) {
  44064.     "use strict";
  44065.     function _interopRequireDefault(obj) {
  44066.         return obj && obj.__esModule ? obj : {
  44067.             "default": obj
  44068.         };
  44069.     }
  44070.     function httppost(url, params) {
  44071.         var originalCrossdomainValue = _system.WshShell.RegRead(REGISTRY_KEY_FOR_CROSSDOMAIN_ON_LOCAL_ZONE);
  44072.         _system.WshShell.RegWrite(REGISTRY_KEY_FOR_CROSSDOMAIN_ON_LOCAL_ZONE, 0, "REG_DWORD");
  44073.         var http = new window.XMLHttpRequest();
  44074.         http.open("POST", url, !0);
  44075.         http.setRequestHeader("Content-type", "application/json");
  44076.         http.setRequestHeader("Content-length", params.length);
  44077.         http.setRequestHeader("Connection", "close");
  44078.         http.send(params);
  44079.         if (0 !== originalCrossdomainValue) _system.WshShell.RegWrite(REGISTRY_KEY_FOR_CROSSDOMAIN_ON_LOCAL_ZONE, originalCrossdomainValue, "REG_DWORD");
  44080.     }
  44081.     function urlencode(o) {
  44082.         var pairs = [];
  44083.         Object.entries(o).forEach(function(_ref) {
  44084.             var key = _ref[0], value = _ref[1];
  44085.             pairs.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
  44086.         });
  44087.         return pairs.join("&");
  44088.     }
  44089.     exports.__esModule = !0;
  44090.     exports.setRavenContext = undefined;
  44091.     var _extends = Object.assign || function(target) {
  44092.         for (var i = 1; i < arguments.length; i++) {
  44093.             var source = arguments[i];
  44094.             for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
  44095.         }
  44096.         return target;
  44097.     }, _system = __webpack_require__(9), _logs = __webpack_require__(3), _logs2 = _interopRequireDefault(_logs), _raven = __webpack_require__(772), _raven2 = _interopRequireDefault(_raven), _os = __webpack_require__(13), ScriptEngine = window.ScriptEngine, ScriptEngineMajorVersion = window.ScriptEngineMajorVersion, ScriptEngineMinorVersion = window.ScriptEngineMinorVersion;
  44098.     window.TraceKit.report.subscribe(function(stackInfo) {
  44099.         _logs2["default"].error("Unhandled JS-exception, catched by raven", {
  44100.             stackInfo: stackInfo
  44101.         }, "jsException");
  44102.     });
  44103.     var projectConfig = !0 ? {
  44104.         sentry_dsn: "http://9cb31aee70244b7e9b721f3ff5b1a49f@sentry.drp.su/3",
  44105.         sentry_secret: "6d47d40d3ba94a16b3e15d4f09165eee"
  44106.     } : {
  44107.         sentry_dsn: "http://6d3b4fe6d1bf4a1dafb737cfc834f7f2@sentry.drp.su/2",
  44108.         sentry_secret: "4bc6c5d74cec466593974c512dccba0c"
  44109.     }, REGISTRY_KEY_FOR_CROSSDOMAIN_ON_LOCAL_ZONE = "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\1\\1406", transport = function(opts) {
  44110.         try {
  44111.             var auth = _extends({}, opts.auth, {
  44112.                 sentry_secret: projectConfig.sentry_secret
  44113.             });
  44114.             httppost(opts.url + "?" + urlencode(auth), JSON.stringify(opts.data));
  44115.         } catch (err) {}
  44116.     }, ravenConfig = {
  44117.         linesOfContext: 11,
  44118.         fetchContext: !0,
  44119.         tags: {
  44120.             os: function() {
  44121.                 var servicePack = _os.OSCSDVersion.replace(/Service Pack /i, "SP");
  44122.                 return _os.OSCaption + " " + servicePack;
  44123.             }(),
  44124.             js: function() {
  44125.                 if (!ScriptEngine) return "Browser"; else return ScriptEngine() + " " + ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion();
  44126.             }(),
  44127.             version: window.version,
  44128.             arch: _os.is64 ? "x64" : "x86"
  44129.         },
  44130.         transport: transport
  44131.     };
  44132.     if (!0) _raven2["default"].config(projectConfig.sentry_dsn, ravenConfig).install();
  44133.     exports.setRavenContext = function(_ref2) {
  44134.         var clientId = _ref2.clientId, computerId = _ref2.computerId, sessionId = _ref2.sessionId, experiment = _ref2.experiment;
  44135.         _raven2["default"].setExtraContext({
  44136.             clientId: clientId,
  44137.             computerId: computerId,
  44138.             sessionId: sessionId,
  44139.             experiment: experiment
  44140.         });
  44141.         _raven2["default"].setUserContext({
  44142.             id: computerId
  44143.         });
  44144.     };
  44145.     exports["default"] = _raven2["default"];
  44146. }, function(module, exports, __webpack_require__) {
  44147.     "use strict";
  44148.     exports.__esModule = !0;
  44149.     exports["default"] = function(str) {
  44150.         return str.replace(/(^\W+|\W+$)/, "").replace(/\W+/g, "-").toLowerCase();
  44151.     };
  44152.     module.exports = exports["default"];
  44153. }, function(module, exports, __webpack_require__) {
  44154.     "use strict";
  44155.     exports.__esModule = !0;
  44156.     exports.uninstallProgram = undefined;
  44157.     var _system = __webpack_require__(9), _wmiRegistry = __webpack_require__(90), _wmi = __webpack_require__(16), _logs = __webpack_require__(3);
  44158.     exports.uninstallProgram = function(_ref) {
  44159.         var uninstallString = _ref.uninstallString, regPath = _ref.regPath;
  44160.         return new Promise(function(resolve, reject) {
  44161.             if (-1 !== uninstallString.search(/uninst\.exe/i)) uninstallString += " -s "; else if (-1 !== uninstallString.search(/unins\d\d\d\.exe/i)) uninstallString += " /VERYSILENT /SUPPRESSMSGBOXES /NORESTART "; else if (-1 !== uninstallString.search(/MsiExec\.exe/i)) uninstallString = uninstallString.replace(/\/I/, " /x ").concat(" /qn /norestart ");
  44162.             (0, _logs.log)("[Protect] running: " + uninstallString);
  44163.             var command = uninstallString, wshExec = _system.WshShell.Exec(command), parentPid = wshExec.ProcessId, checkTimeoutTimer = void 0, uninstallProcesses = void 0, checkIntevalTimer = setInterval(function() {
  44164.                 uninstallProcesses = (0, _wmi.getWMIObjects)([ "ParentProcessId" ], "Win32_Process", 'ProcessId = "' + parentPid + '" OR ParentProcessId = "' + parentPid + '"');
  44165.                 if (!uninstallProcesses.length) {
  44166.                     clearInterval(checkIntevalTimer);
  44167.                     clearTimeout(checkTimeoutTimer);
  44168.                     !(0, _wmiRegistry.wmiRegRead)(regPath + "DisplayName") ? resolve() : reject();
  44169.                 }
  44170.             }, 3e3);
  44171.             checkTimeoutTimer = setTimeout(function() {
  44172.                 clearInterval(checkIntevalTimer);
  44173.                 clearTimeout(checkTimeoutTimer);
  44174.                 reject(new Error("[Protect] uninstall timeout"));
  44175.             }, 3e5);
  44176.         });
  44177.     };
  44178. }, function(module, exports, __webpack_require__) {
  44179.     "use strict";
  44180.     var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__, _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
  44181.         return typeof obj;
  44182.     } : function(obj) {
  44183.         return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  44184.     };
  44185.     !function(window, undefined) {
  44186.         function triggerEvent(eventType, options) {
  44187.             var event, key;
  44188.             options = options || {};
  44189.             eventType = "raven" + eventType.substr(0, 1).toUpperCase() + eventType.substr(1);
  44190.             if (document.createEvent) {
  44191.                 event = document.createEvent("HTMLEvents");
  44192.                 event.initEvent(eventType, !0, !0);
  44193.             } else {
  44194.                 event = document.createEventObject();
  44195.                 event.eventType = eventType;
  44196.             }
  44197.             for (key in options) if (hasKey(options, key)) event[key] = options[key];
  44198.             if (document.createEvent) document.dispatchEvent(event); else try {
  44199.                 document.fireEvent("on" + event.eventType.toLowerCase(), event);
  44200.             } catch (e) {}
  44201.         }
  44202.         function RavenConfigError(message) {
  44203.             this.name = "RavenConfigError";
  44204.             this.message = message;
  44205.         }
  44206.         function parseDSN(str) {
  44207.             var m = dsnPattern.exec(str), dsn = {}, i = 7;
  44208.             try {
  44209.                 for (;i--; ) dsn[dsnKeys[i]] = m[i] || "";
  44210.             } catch (e) {
  44211.                 throw new RavenConfigError("Invalid DSN: " + str);
  44212.             }
  44213.             if (dsn.pass) throw new RavenConfigError("Do not specify your private key in the DSN!");
  44214.             return dsn;
  44215.         }
  44216.         function isUndefined(what) {
  44217.             return void 0 === what;
  44218.         }
  44219.         function isFunction(what) {
  44220.             return "function" == typeof what;
  44221.         }
  44222.         function isString(what) {
  44223.             return "[object String]" === objectPrototype.toString.call(what);
  44224.         }
  44225.         function isObject(what) {
  44226.             return "object" === (void 0 === what ? "undefined" : _typeof(what)) && null !== what;
  44227.         }
  44228.         function isEmptyObject(what) {
  44229.             for (var k in what) return !1;
  44230.             return !0;
  44231.         }
  44232.         function isError(what) {
  44233.             return isObject(what) && "[object Error]" === objectPrototype.toString.call(what) || what instanceof Error;
  44234.         }
  44235.         function hasKey(object, key) {
  44236.             return objectPrototype.hasOwnProperty.call(object, key);
  44237.         }
  44238.         function each(obj, callback) {
  44239.             var i, j;
  44240.             if (isUndefined(obj.length)) {
  44241.                 for (i in obj) if (hasKey(obj, i)) callback.call(null, i, obj[i]);
  44242.             } else {
  44243.                 j = obj.length;
  44244.                 if (j) for (i = 0; i < j; i++) callback.call(null, i, obj[i]);
  44245.             }
  44246.         }
  44247.         function handleStackInfo(stackInfo, options) {
  44248.             var frames = [];
  44249.             if (stackInfo.stack && stackInfo.stack.length) each(stackInfo.stack, function(i, stack) {
  44250.                 var frame = normalizeFrame(stack);
  44251.                 if (frame) frames.push(frame);
  44252.             });
  44253.             triggerEvent("handle", {
  44254.                 stackInfo: stackInfo,
  44255.                 options: options
  44256.             });
  44257.             processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options);
  44258.         }
  44259.         function normalizeFrame(frame) {
  44260.             if (frame.url) {
  44261.                 var i, normalized = {
  44262.                     filename: frame.url,
  44263.                     lineno: frame.line,
  44264.                     colno: frame.column,
  44265.                     "function": frame.func || "?"
  44266.                 }, context = extractContextFromFrame(frame);
  44267.                 if (context) {
  44268.                     var keys = [ "pre_context", "context_line", "post_context" ];
  44269.                     i = 3;
  44270.                     for (;i--; ) normalized[keys[i]] = context[i];
  44271.                 }
  44272.                 normalized.in_app = !(globalOptions.includePaths.test && !globalOptions.includePaths.test(normalized.filename) || /(Raven|TraceKit)\./.test(normalized["function"]) || /raven\.(min\.)?js$/.test(normalized.filename));
  44273.                 return normalized;
  44274.             }
  44275.         }
  44276.         function extractContextFromFrame(frame) {
  44277.             if (frame.context && globalOptions.fetchContext) {
  44278.                 for (var context = frame.context, pivot = ~~(context.length / 2), i = context.length, isMinified = !1; i--; ) if (context[i].length > 3e3) {
  44279.                     isMinified = !0;
  44280.                     break;
  44281.                 }
  44282.                 if (isMinified) {
  44283.                     if (isUndefined(frame.column)) return;
  44284.                     return [ [], context[pivot].substr(frame.column, 50), [] ];
  44285.                 }
  44286.                 return [ context.slice(0, pivot), context[pivot], context.slice(pivot + 1) ];
  44287.             }
  44288.         }
  44289.         function processException(type, message, fileurl, lineno, frames, options) {
  44290.             var stacktrace, fullMessage;
  44291.             if (!globalOptions.ignoreErrors.test || !globalOptions.ignoreErrors.test(message)) {
  44292.                 message += "";
  44293.                 message = truncate(message, globalOptions.maxMessageLength);
  44294.                 fullMessage = type + ": " + message;
  44295.                 fullMessage = truncate(fullMessage, globalOptions.maxMessageLength);
  44296.                 if (frames && frames.length) {
  44297.                     fileurl = frames[0].filename || fileurl;
  44298.                     frames.reverse();
  44299.                     stacktrace = {
  44300.                         frames: frames
  44301.                     };
  44302.                 } else if (fileurl) stacktrace = {
  44303.                     frames: [ {
  44304.                         filename: fileurl,
  44305.                         lineno: lineno,
  44306.                         in_app: !0
  44307.                     } ]
  44308.                 };
  44309.                 if (!globalOptions.ignoreUrls.test || !globalOptions.ignoreUrls.test(fileurl)) if (!globalOptions.whitelistUrls.test || globalOptions.whitelistUrls.test(fileurl)) send(objectMerge({
  44310.                     exception: {
  44311.                         type: type,
  44312.                         value: message
  44313.                     },
  44314.                     stacktrace: stacktrace,
  44315.                     culprit: fileurl,
  44316.                     message: fullMessage
  44317.                 }, options));
  44318.             }
  44319.         }
  44320.         function objectMerge(obj1, obj2) {
  44321.             if (!obj2) return obj1;
  44322.             each(obj2, function(key, value) {
  44323.                 obj1[key] = value;
  44324.             });
  44325.             return obj1;
  44326.         }
  44327.         function truncate(str, max) {
  44328.             return str.length <= max ? str : str.substr(0, max) + "…";
  44329.         }
  44330.         function now() {
  44331.             return +new Date();
  44332.         }
  44333.         function getHttpData() {
  44334.             if (document.location && document.location.href) {
  44335.                 var http = {
  44336.                     headers: {
  44337.                         "User-Agent": navigator.userAgent
  44338.                     }
  44339.                 };
  44340.                 http.url = document.location.href;
  44341.                 if (document.referrer) http.headers.Referer = document.referrer;
  44342.                 return http;
  44343.             }
  44344.         }
  44345.         function send(data) {
  44346.             var baseData = {
  44347.                 project: globalProject,
  44348.                 logger: globalOptions.logger,
  44349.                 platform: "javascript"
  44350.             }, http = getHttpData();
  44351.             if (http) baseData.request = http;
  44352.             data = objectMerge(baseData, data);
  44353.             data.tags = objectMerge(objectMerge({}, globalOptions.tags), data.tags);
  44354.             data.extra = objectMerge(objectMerge({}, globalOptions.extra), data.extra);
  44355.             data.extra = objectMerge({
  44356.                 "session:duration": now() - startTime
  44357.             }, data.extra);
  44358.             if (isEmptyObject(data.tags)) delete data.tags;
  44359.             if (globalUser) data.user = globalUser;
  44360.             if (globalOptions.release) data.release = globalOptions.release;
  44361.             if (isFunction(globalOptions.dataCallback)) data = globalOptions.dataCallback(data) || data;
  44362.             if (data && !isEmptyObject(data)) if (!isFunction(globalOptions.shouldSendCallback) || globalOptions.shouldSendCallback(data)) {
  44363.                 _lastEventId = data.event_id || (data.event_id = uuid4());
  44364.                 logDebug("debug", "Raven about to send:", data);
  44365.                 if (_isSetup()) (globalOptions.transport || makeRequest)({
  44366.                     url: globalServer,
  44367.                     auth: {
  44368.                         sentry_version: "4",
  44369.                         sentry_client: "raven-js/" + Raven.VERSION,
  44370.                         sentry_key: globalKey
  44371.                     },
  44372.                     data: data,
  44373.                     options: globalOptions,
  44374.                     onSuccess: function() {
  44375.                         triggerEvent("success", {
  44376.                             data: data,
  44377.                             src: globalServer
  44378.                         });
  44379.                     },
  44380.                     onError: function() {
  44381.                         triggerEvent("failure", {
  44382.                             data: data,
  44383.                             src: globalServer
  44384.                         });
  44385.                     }
  44386.                 });
  44387.             }
  44388.         }
  44389.         function makeRequest(opts) {
  44390.             opts.auth.sentry_data = JSON.stringify(opts.data);
  44391.             var img = newImage(), src = opts.url + "?" + urlencode(opts.auth);
  44392.             if (opts.options.crossOrigin || "" === opts.options.crossOrigin) img.crossOrigin = opts.options.crossOrigin;
  44393.             img.onload = opts.onSuccess;
  44394.             img.onerror = img.onabort = opts.onError;
  44395.             img.src = src;
  44396.         }
  44397.         function newImage() {
  44398.             return document.createElement("img");
  44399.         }
  44400.         function _isSetup() {
  44401.             if (!hasJSON) return !1;
  44402.             if (!globalServer) {
  44403.                 if (!ravenNotConfiguredError) logDebug("error", "Error: Raven has not been configured.");
  44404.                 ravenNotConfiguredError = !0;
  44405.                 return !1;
  44406.             }
  44407.             return !0;
  44408.         }
  44409.         function joinRegExp(patterns) {
  44410.             for (var pattern, sources = [], i = 0, len = patterns.length; i < len; i++) {
  44411.                 pattern = patterns[i];
  44412.                 if (isString(pattern)) sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1")); else if (pattern && pattern.source) sources.push(pattern.source);
  44413.             }
  44414.             return new RegExp(sources.join("|"), "i");
  44415.         }
  44416.         function uuid4() {
  44417.             var crypto = window.crypto || window.msCrypto;
  44418.             if (!isUndefined(crypto) && crypto.getRandomValues) {
  44419.                 var arr = new Uint16Array(8);
  44420.                 crypto.getRandomValues(arr);
  44421.                 arr[3] = 4095 & arr[3] | 16384;
  44422.                 arr[4] = 16383 & arr[4] | 32768;
  44423.                 var pad = function(num) {
  44424.                     for (var v = num.toString(16); v.length < 4; ) v = "0" + v;
  44425.                     return v;
  44426.                 };
  44427.                 return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]);
  44428.             } else return "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g, function(c) {
  44429.                 var r = 16 * Math.random() | 0;
  44430.                 return ("x" == c ? r : 3 & r | 8).toString(16);
  44431.             });
  44432.         }
  44433.         function logDebug(level) {
  44434.             if (originalConsoleMethods[level] && Raven.debug) originalConsoleMethods[level].apply(originalConsole, _slice.call(arguments, 1));
  44435.         }
  44436.         function urlencode(o) {
  44437.             var pairs = [];
  44438.             each(o, function(key, value) {
  44439.                 pairs.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
  44440.             });
  44441.             return pairs.join("&");
  44442.         }
  44443.         var TraceKit = {
  44444.             remoteFetching: !1,
  44445.             collectWindowErrors: !0,
  44446.             linesOfContext: 7,
  44447.             debug: !1
  44448.         };
  44449.         window.TraceKit = TraceKit;
  44450.         var _slice = [].slice, UNKNOWN_FUNCTION = "?";
  44451.         TraceKit.wrap = function(func) {
  44452.             function wrapped() {
  44453.                 try {
  44454.                     return func.apply(this, arguments);
  44455.                 } catch (e) {
  44456.                     TraceKit.report(e);
  44457.                     throw e;
  44458.                 }
  44459.             }
  44460.             return wrapped;
  44461.         };
  44462.         TraceKit.report = function() {
  44463.             function subscribe(handler) {
  44464.                 installGlobalHandler();
  44465.                 handlers.push(handler);
  44466.             }
  44467.             function unsubscribe(handler) {
  44468.                 for (var i = handlers.length - 1; i >= 0; --i) if (handlers[i] === handler) handlers.splice(i, 1);
  44469.             }
  44470.             function unsubscribeAll() {
  44471.                 uninstallGlobalHandler();
  44472.                 handlers = [];
  44473.             }
  44474.             function notifyHandlers(stack, isWindowError) {
  44475.                 var exception = null;
  44476.                 if (!isWindowError || TraceKit.collectWindowErrors) {
  44477.                     for (var i in handlers) if (hasKey(handlers, i)) try {
  44478.                         handlers[i].apply(null, [ stack ].concat(_slice.call(arguments, 2)));
  44479.                     } catch (inner) {
  44480.                         exception = inner;
  44481.                     }
  44482.                     if (exception) throw exception;
  44483.                 }
  44484.             }
  44485.             function traceKitWindowOnError(message, url, lineNo, colNo, ex) {
  44486.                 var stack = null;
  44487.                 if (lastExceptionStack) {
  44488.                     TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);
  44489.                     processLastException();
  44490.                 } else if (ex) {
  44491.                     stack = TraceKit.computeStackTrace(ex);
  44492.                     notifyHandlers(stack, !0);
  44493.                 } else {
  44494.                     var location = {
  44495.                         url: url,
  44496.                         line: lineNo,
  44497.                         column: colNo
  44498.                     };
  44499.                     if (-1 !== location.url.indexOf(".hta") || -1 !== location.url.indexOf(".html")) location.url = "drp.js";
  44500.                     location.func = TraceKit.computeStackTrace.guessFunctionName(location.url, location.line);
  44501.                     location.context = TraceKit.computeStackTrace.gatherContext(location.url, location.line);
  44502.                     stack = {
  44503.                         message: message,
  44504.                         url: document.location.href,
  44505.                         stack: [ location ]
  44506.                     };
  44507.                     var other = TraceKit.computeStackTrace(stack);
  44508.                     stack.stack = stack.stack.concat(other.stack);
  44509.                     notifyHandlers(stack, !0);
  44510.                 }
  44511.                 if (_oldOnerrorHandler) return _oldOnerrorHandler.apply(this, arguments); else return !1;
  44512.             }
  44513.             function installGlobalHandler() {
  44514.                 if (!_onErrorHandlerInstalled) {
  44515.                     _oldOnerrorHandler = window.onerror;
  44516.                     window.onerror = traceKitWindowOnError;
  44517.                     _onErrorHandlerInstalled = !0;
  44518.                 }
  44519.             }
  44520.             function uninstallGlobalHandler() {
  44521.                 if (_onErrorHandlerInstalled) {
  44522.                     window.onerror = _oldOnerrorHandler;
  44523.                     _onErrorHandlerInstalled = !1;
  44524.                     _oldOnerrorHandler = undefined;
  44525.                 }
  44526.             }
  44527.             function processLastException() {
  44528.                 var _lastExceptionStack = lastExceptionStack, _lastArgs = lastArgs;
  44529.                 lastArgs = null;
  44530.                 lastExceptionStack = null;
  44531.                 lastException = null;
  44532.                 notifyHandlers.apply(null, [ _lastExceptionStack, !1 ].concat(_lastArgs));
  44533.             }
  44534.             function report(ex, rethrow) {
  44535.                 var args = _slice.call(arguments, 1);
  44536.                 if (lastExceptionStack) if (lastException === ex) return; else processLastException();
  44537.                 var stack = TraceKit.computeStackTrace(ex);
  44538.                 lastExceptionStack = stack;
  44539.                 lastException = ex;
  44540.                 lastArgs = args;
  44541.                 window.setTimeout(function() {
  44542.                     if (lastException === ex) processLastException();
  44543.                 }, stack.incomplete ? 2e3 : 0);
  44544.                 if (!1 !== rethrow) throw ex;
  44545.             }
  44546.             var _oldOnerrorHandler, _onErrorHandlerInstalled, handlers = [], lastArgs = null, lastException = null, lastExceptionStack = null;
  44547.             report.subscribe = subscribe;
  44548.             report.unsubscribe = unsubscribe;
  44549.             report.uninstall = unsubscribeAll;
  44550.             return report;
  44551.         }();
  44552.         TraceKit.computeStackTrace = function() {
  44553.             function loadSource(url) {
  44554.                 if (!TraceKit.remoteFetching) return "";
  44555.                 if (0 === url.indexOf("http")) return "";
  44556.                 try {
  44557.                     var request = function() {
  44558.                         try {
  44559.                             return new window.XMLHttpRequest();
  44560.                         } catch (e) {
  44561.                             return new window.ActiveXObject("Microsoft.XMLHTTP");
  44562.                         }
  44563.                     }();
  44564.                     request.open("GET", url, !1);
  44565.                     request.send("");
  44566.                     return request.responseText;
  44567.                 } catch (e) {
  44568.                     return "";
  44569.                 }
  44570.             }
  44571.             function getSource(url) {
  44572.                 if (!isString(url)) return [];
  44573.                 if (!hasKey(sourceCache, url)) {
  44574.                     var source = "", domain = "";
  44575.                     try {
  44576.                         domain = document.domain;
  44577.                     } catch (e) {}
  44578.                     if (-1 !== url.indexOf(domain)) source = loadSource(url);
  44579.                     sourceCache[url] = source ? source.split("\n") : [];
  44580.                 }
  44581.                 return sourceCache[url];
  44582.             }
  44583.             function guessFunctionName(url, lineNo) {
  44584.                 var m, reFunctionArgNames = /function ([^(]*)\(([^)]*)\)/, reGuessFunction = /['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/, line = "", source = getSource(url);
  44585.                 if (!source.length) return UNKNOWN_FUNCTION;
  44586.                 for (var i = 0; i < 10; ++i) {
  44587.                     line = source[lineNo - i] + line;
  44588.                     if (!isUndefined(line)) if (m = reGuessFunction.exec(line)) return m[1]; else if (m = reFunctionArgNames.exec(line)) return m[1];
  44589.                 }
  44590.                 return UNKNOWN_FUNCTION;
  44591.             }
  44592.             function gatherContext(url, line) {
  44593.                 var source = getSource(url);
  44594.                 if (!source.length) return null;
  44595.                 var context = [], linesBefore = Math.floor(TraceKit.linesOfContext / 2), linesAfter = linesBefore + TraceKit.linesOfContext % 2, start = Math.max(0, line - linesBefore - 1), end = Math.min(source.length, line + linesAfter - 1);
  44596.                 line -= 1;
  44597.                 for (var i = start; i < end; ++i) if (!isUndefined(source[i])) context.push(source[i]);
  44598.                 return context.length > 0 ? context : null;
  44599.             }
  44600.             function escapeRegExp(text) {
  44601.                 return text.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g, "\\$&");
  44602.             }
  44603.             function escapeCodeAsRegExpForMatchingInsideHTML(body) {
  44604.                 return escapeRegExp(body).replace("<", "(?:<|&lt;)").replace(">", "(?:>|&gt;)").replace("&", "(?:&|&amp;)").replace('"', '(?:"|&quot;)').replace(/\s+/g, "\\s+");
  44605.             }
  44606.             function findSourceInUrls(re, urls) {
  44607.                 for (var source, m, i = 0, j = urls.length; i < j; ++i) if ((source = getSource(urls[i])).length) {
  44608.                     source = source.join("\n");
  44609.                     if (m = re.exec(source)) return {
  44610.                         url: urls[i],
  44611.                         line: source.substring(0, m.index).split("\n").length,
  44612.                         column: m.index - source.lastIndexOf("\n", m.index) - 1
  44613.                     };
  44614.                 }
  44615.                 return null;
  44616.             }
  44617.             function findSourceInLine(fragment, url, line) {
  44618.                 var m, source = getSource(url), re = new RegExp("\\b" + escapeRegExp(fragment) + "\\b");
  44619.                 line -= 1;
  44620.                 if (source && source.length > line && (m = re.exec(source[line]))) return m.index; else return null;
  44621.             }
  44622.             function findSourceByFunctionBody(func) {
  44623.                 for (var body, re, parts, result, urls = [ window.location.href ], scripts = document.getElementsByTagName("script"), code = "" + func, codeRE = /^function(?:\s+([\w$]+))?\s*\(([\w\s,]*)\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/, eventRE = /^function on([\w$]+)\s*\(event\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/, i = 0; i < scripts.length; ++i) {
  44624.                     var script = scripts[i];
  44625.                     if (script.src) urls.push(script.src);
  44626.                 }
  44627.                 if (!(parts = codeRE.exec(code))) re = new RegExp(escapeRegExp(code).replace(/\s+/g, "\\s+")); else {
  44628.                     var name = parts[1] ? "\\s+" + parts[1] : "", args = parts[2].split(",").join("\\s*,\\s*");
  44629.                     body = escapeRegExp(parts[3]).replace(/;$/, ";?");
  44630.                     re = new RegExp("function" + name + "\\s*\\(\\s*" + args + "\\s*\\)\\s*{\\s*" + body + "\\s*}");
  44631.                 }
  44632.                 if (result = findSourceInUrls(re, urls)) return result;
  44633.                 if (parts = eventRE.exec(code)) {
  44634.                     var event = parts[1];
  44635.                     body = escapeCodeAsRegExpForMatchingInsideHTML(parts[2]);
  44636.                     re = new RegExp("on" + event + "=[\\'\"]\\s*" + body + "\\s*[\\'\"]", "i");
  44637.                     if (result = findSourceInUrls(re, urls[0])) return result;
  44638.                     re = new RegExp(body);
  44639.                     if (result = findSourceInUrls(re, urls)) return result;
  44640.                 }
  44641.                 return null;
  44642.             }
  44643.             function computeStackTraceFromStackProp(ex) {
  44644.                 if (!isUndefined(ex.stack) && ex.stack) {
  44645.                     for (var parts, element, chrome = /^\s*at (.*?) ?\(?((?:(?:file|https?|chrome-extension):.*?)|<anonymous>):(\d+)(?::(\d+))?\)?\s*$/i, gecko = /^\s*(.*?)(?:\((.*?)\))?@((?:file|https?|chrome).*?):(\d+)(?::(\d+))?\s*$/i, winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:ms-appx|http|https):.*?):(\d+)(?::(\d+))?\)?\s*$/i, lines = ex.stack.split("\n"), stack = [], reference = /^(.*) is undefined$/.exec(ex.message), i = 0, j = lines.length; i < j; ++i) {
  44646.                         if (parts = gecko.exec(lines[i])) element = {
  44647.                             url: parts[3],
  44648.                             func: parts[1] || UNKNOWN_FUNCTION,
  44649.                             args: parts[2] ? parts[2].split(",") : "",
  44650.                             line: +parts[4],
  44651.                             column: parts[5] ? +parts[5] : null
  44652.                         }; else if (parts = chrome.exec(lines[i])) element = {
  44653.                             url: parts[2],
  44654.                             func: parts[1] || UNKNOWN_FUNCTION,
  44655.                             line: +parts[3],
  44656.                             column: parts[4] ? +parts[4] : null
  44657.                         }; else if (parts = winjs.exec(lines[i])) element = {
  44658.                             url: parts[2],
  44659.                             func: parts[1] || UNKNOWN_FUNCTION,
  44660.                             line: +parts[3],
  44661.                             column: parts[4] ? +parts[4] : null
  44662.                         }; else continue;
  44663.                         if (!element.func && element.line) element.func = guessFunctionName(element.url, element.line);
  44664.                         if (element.line) element.context = gatherContext(element.url, element.line);
  44665.                         stack.push(element);
  44666.                     }
  44667.                     if (!stack.length) return null;
  44668.                     if (stack[0].line && !stack[0].column && reference) stack[0].column = findSourceInLine(reference[1], stack[0].url, stack[0].line); else if (!stack[0].column && !isUndefined(ex.columnNumber)) stack[0].column = ex.columnNumber + 1;
  44669.                     return {
  44670.                         name: ex.name,
  44671.                         message: ex.message,
  44672.                         url: document.location.href,
  44673.                         stack: stack
  44674.                     };
  44675.                 }
  44676.             }
  44677.             function computeStackTraceFromStacktraceProp(ex) {
  44678.                 var stacktrace = ex.stacktrace;
  44679.                 if (!isUndefined(ex.stacktrace) && ex.stacktrace) {
  44680.                     for (var parts, testRE = / line (\d+), column (\d+) in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\) in (.*):\s*$/i, lines = stacktrace.split("\n"), stack = [], i = 0, j = lines.length; i < j; i += 2) if (parts = testRE.exec(lines[i])) {
  44681.                         var element = {
  44682.                             line: +parts[1],
  44683.                             column: +parts[2],
  44684.                             func: parts[3] || parts[4],
  44685.                             args: parts[5] ? parts[5].split(",") : [],
  44686.                             url: parts[6]
  44687.                         };
  44688.                         if (!element.func && element.line) element.func = guessFunctionName(element.url, element.line);
  44689.                         if (element.line) try {
  44690.                             element.context = gatherContext(element.url, element.line);
  44691.                         } catch (exc) {}
  44692.                         if (!element.context) element.context = [ lines[i + 1] ];
  44693.                         stack.push(element);
  44694.                     }
  44695.                     if (!stack.length) return null; else return {
  44696.                         name: ex.name,
  44697.                         message: ex.message,
  44698.                         url: document.location.href,
  44699.                         stack: stack
  44700.                     };
  44701.                 }
  44702.             }
  44703.             function computeStackTraceFromOperaMultiLineMessage(ex) {
  44704.                 var lines = ex.message.split("\n");
  44705.                 if (lines.length < 4) return null;
  44706.                 var parts, i, len, source, lineRE1 = /^\s*Line (\d+) of linked script ((?:file|https?)\S+)(?:: in function (\S+))?\s*$/i, lineRE2 = /^\s*Line (\d+) of inline#(\d+) script in ((?:file|https?)\S+)(?:: in function (\S+))?\s*$/i, lineRE3 = /^\s*Line (\d+) of function script\s*$/i, stack = [], scripts = document.getElementsByTagName("script"), inlineScriptBlocks = [];
  44707.                 for (i in scripts) if (hasKey(scripts, i) && !scripts[i].src) inlineScriptBlocks.push(scripts[i]);
  44708.                 for (i = 2, len = lines.length; i < len; i += 2) {
  44709.                     var item = null;
  44710.                     if (parts = lineRE1.exec(lines[i])) item = {
  44711.                         url: parts[2],
  44712.                         func: parts[3],
  44713.                         line: +parts[1]
  44714.                     }; else if (parts = lineRE2.exec(lines[i])) {
  44715.                         item = {
  44716.                             url: parts[3],
  44717.                             func: parts[4]
  44718.                         };
  44719.                         var relativeLine = +parts[1], script = inlineScriptBlocks[parts[2] - 1];
  44720.                         if (script) {
  44721.                             source = getSource(item.url);
  44722.                             if (source) {
  44723.                                 source = source.join("\n");
  44724.                                 var pos = source.indexOf(script.innerText);
  44725.                                 if (pos >= 0) item.line = relativeLine + source.substring(0, pos).split("\n").length;
  44726.                             }
  44727.                         }
  44728.                     } else if (parts = lineRE3.exec(lines[i])) {
  44729.                         var url = window.location.href.replace(/#.*$/, ""), line = parts[1], re = new RegExp(escapeCodeAsRegExpForMatchingInsideHTML(lines[i + 1]));
  44730.                         source = findSourceInUrls(re, [ url ]);
  44731.                         item = {
  44732.                             url: url,
  44733.                             line: source ? source.line : line,
  44734.                             func: ""
  44735.                         };
  44736.                     }
  44737.                     if (item) {
  44738.                         if (!item.func) item.func = guessFunctionName(item.url, item.line);
  44739.                         var context = gatherContext(item.url, item.line), midline = context ? context[Math.floor(context.length / 2)] : null;
  44740.                         if (context && midline.replace(/^\s*/, "") === lines[i + 1].replace(/^\s*/, "")) item.context = context; else item.context = [ lines[i + 1] ];
  44741.                         stack.push(item);
  44742.                     }
  44743.                 }
  44744.                 if (!stack.length) return null; else return {
  44745.                     name: ex.name,
  44746.                     message: lines[0],
  44747.                     url: document.location.href,
  44748.                     stack: stack
  44749.                 };
  44750.             }
  44751.             function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {
  44752.                 var initial = {
  44753.                     url: url,
  44754.                     line: lineNo
  44755.                 };
  44756.                 if (initial.url && initial.line) {
  44757.                     stackInfo.incomplete = !1;
  44758.                     if (-1 !== initial.url.indexOf(".hta") || -1 !== initial.url.indexOf(".html")) initial.url = "drp.js";
  44759.                     if (!initial.func) initial.func = guessFunctionName(initial.url, initial.line);
  44760.                     if (!initial.context) initial.context = gatherContext(initial.url, initial.line);
  44761.                     var reference = / '([^']+)' /.exec(message);
  44762.                    if (reference) initial.column = findSourceInLine(reference[1], initial.url, initial.line);
  44763.                    if (stackInfo.stack.length > 0) if (stackInfo.stack[0].url === initial.url) if (stackInfo.stack[0].line === initial.line) return !1; else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) {
  44764.                        stackInfo.stack[0].line = initial.line;
  44765.                        stackInfo.stack[0].context = initial.context;
  44766.                        return !1;
  44767.                    }
  44768.                    stackInfo.stack.unshift(initial);
  44769.                    stackInfo.partial = !0;
  44770.                    return !0;
  44771.                } else stackInfo.incomplete = !0;
  44772.                return !1;
  44773.            }
  44774.            function computeStackTraceByWalkingCallerChain(ex, depth) {
  44775.                for (var parts, item, source, functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, stack = [], funcs = {}, recursion = !1, curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) if (curr !== computeStackTrace && curr !== TraceKit.report) {
  44776.                    item = {
  44777.                        url: null,
  44778.                        func: UNKNOWN_FUNCTION,
  44779.                        line: null,
  44780.                        column: null
  44781.                    };
  44782.                    if (curr.name) item.func = curr.name; else if (parts = functionName.exec(curr.toString())) item.func = parts[1];
  44783.                    if ("undefined" == typeof item.func) try {
  44784.                        item.func = parts.input.substring(0, parts.input.indexOf("{"));
  44785.                    } catch (e) {}
  44786.                    if (source = findSourceByFunctionBody(curr)) {
  44787.                        item.url = source.url;
  44788.                        if (-1 !== item.url.indexOf(".hta") || -1 !== item.url.indexOf(".html")) item.url = "drp.js";
  44789.                        item.line = source.line;
  44790.                        item.context = gatherContext(item.url, item.line);
  44791.                        if (item.func === UNKNOWN_FUNCTION) item.func = guessFunctionName(item.url, item.line);
  44792.                        var reference = / '([^']+)' /.exec(ex.message || ex.description);
  44793.                         if (reference) item.column = findSourceInLine(reference[1], source.url, source.line);
  44794.                     }
  44795.                     if (funcs["" + curr]) recursion = !0; else funcs["" + curr] = !0;
  44796.                     stack.push(item);
  44797.                 }
  44798.                 if (depth) stack.splice(0, depth);
  44799.                 var result = {
  44800.                     name: ex.name,
  44801.                     message: ex.message,
  44802.                     url: document.location.href,
  44803.                     stack: stack
  44804.                 };
  44805.                 augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description);
  44806.                 return result;
  44807.             }
  44808.             function computeStackTrace(ex, depth) {
  44809.                 var stack = null;
  44810.                 depth = null == depth ? 0 : +depth;
  44811.                 try {
  44812.                     stack = computeStackTraceFromStacktraceProp(ex);
  44813.                     if (stack) return stack;
  44814.                 } catch (e) {
  44815.                     if (TraceKit.debug) throw e;
  44816.                 }
  44817.                 try {
  44818.                     stack = computeStackTraceFromStackProp(ex);
  44819.                     if (stack) return stack;
  44820.                 } catch (e) {
  44821.                     if (TraceKit.debug) throw e;
  44822.                 }
  44823.                 try {
  44824.                     stack = computeStackTraceFromOperaMultiLineMessage(ex);
  44825.                     if (stack) return stack;
  44826.                 } catch (e) {
  44827.                     if (TraceKit.debug) throw e;
  44828.                 }
  44829.                 try {
  44830.                     stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);
  44831.                     if (stack) return stack;
  44832.                 } catch (e) {
  44833.                     if (TraceKit.debug) throw e;
  44834.                 }
  44835.                 return {
  44836.                     name: ex.name,
  44837.                     message: ex.message,
  44838.                     url: document.location.href
  44839.                 };
  44840.             }
  44841.             var sourceCache = {};
  44842.             computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;
  44843.             computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;
  44844.             computeStackTrace.guessFunctionName = guessFunctionName;
  44845.             computeStackTrace.gatherContext = gatherContext;
  44846.             return computeStackTrace;
  44847.         }();
  44848.         var lastCapturedException, _lastEventId, globalServer, globalUser, globalKey, globalProject, _Raven = window.Raven, hasJSON = !("object" !== ("undefined" == typeof JSON ? "undefined" : _typeof(JSON)) || !JSON.stringify), globalOptions = {
  44849.             logger: "javascript",
  44850.             ignoreErrors: [],
  44851.             ignoreUrls: [],
  44852.             whitelistUrls: [],
  44853.             includePaths: [],
  44854.             crossOrigin: "anonymous",
  44855.             collectWindowErrors: !0,
  44856.             tags: {},
  44857.             maxMessageLength: 100,
  44858.             extra: {}
  44859.         }, isRavenInstalled = !1, objectPrototype = Object.prototype, originalConsole = window.console || {}, originalConsoleMethods = {}, startTime = now();
  44860.         for (var method in originalConsole) originalConsoleMethods[method] = originalConsole[method];
  44861.         var Raven = {
  44862.             VERSION: "1.1.22",
  44863.             debug: !0,
  44864.             noConflict: function() {
  44865.                 window.Raven = _Raven;
  44866.                 return Raven;
  44867.             },
  44868.             config: function(dsn, options) {
  44869.                 if (globalServer) {
  44870.                     logDebug("error", "Error: Raven has already been configured");
  44871.                     return Raven;
  44872.                 }
  44873.                 if (!dsn) return Raven;
  44874.                 var uri = parseDSN(dsn), lastSlash = uri.path.lastIndexOf("/"), path = uri.path.substr(1, lastSlash);
  44875.                 if (options) each(options, function(key, value) {
  44876.                     globalOptions[key] = value;
  44877.                 });
  44878.                 globalOptions.ignoreErrors.push(/^Script error\.?$/);
  44879.                 globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/);
  44880.                 globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors);
  44881.                 globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : !1;
  44882.                 globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : !1;
  44883.                 globalOptions.includePaths = joinRegExp(globalOptions.includePaths);
  44884.                 globalKey = uri.user;
  44885.                 globalProject = uri.path.substr(lastSlash + 1);
  44886.                 globalServer = "//" + uri.host + (uri.port ? ":" + uri.port : "") + "/" + path + "api/" + globalProject + "/store/";
  44887.                 if (uri.protocol) globalServer = uri.protocol + ":" + globalServer;
  44888.                 if (globalOptions.fetchContext) TraceKit.remoteFetching = !0;
  44889.                 if (globalOptions.linesOfContext) TraceKit.linesOfContext = globalOptions.linesOfContext;
  44890.                 TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors;
  44891.                 return Raven;
  44892.             },
  44893.             install: function() {
  44894.                 if (_isSetup() && !isRavenInstalled) {
  44895.                     TraceKit.report.subscribe(handleStackInfo);
  44896.                     isRavenInstalled = !0;
  44897.                 }
  44898.                 return Raven;
  44899.             },
  44900.             context: function(options, func, args) {
  44901.                 if (isFunction(options)) {
  44902.                     args = func || [];
  44903.                     func = options;
  44904.                     options = undefined;
  44905.                 }
  44906.                 return Raven.wrap(options, func).apply(this, args);
  44907.             },
  44908.             wrap: function(options, func) {
  44909.                 function wrapped() {
  44910.                     for (var args = [], i = arguments.length, deep = !options || options && !1 !== options.deep; i--; ) args[i] = deep ? Raven.wrap(options, arguments[i]) : arguments[i];
  44911.                     try {
  44912.                         return func.apply(this, args);
  44913.                     } catch (e) {
  44914.                         Raven.captureException(e, options);
  44915.                         throw e;
  44916.                     }
  44917.                 }
  44918.                 if (isUndefined(func) && !isFunction(options)) return options;
  44919.                 if (isFunction(options)) {
  44920.                     func = options;
  44921.                     options = undefined;
  44922.                 }
  44923.                 if (!isFunction(func)) return func;
  44924.                 if (func.__raven__) return func;
  44925.                 for (var property in func) if (hasKey(func, property)) wrapped[property] = func[property];
  44926.                 wrapped.__raven__ = !0;
  44927.                 wrapped.__inner__ = func;
  44928.                 return wrapped;
  44929.             },
  44930.             uninstall: function() {
  44931.                 TraceKit.report.uninstall();
  44932.                 isRavenInstalled = !1;
  44933.                 return Raven;
  44934.             },
  44935.             captureException: function(ex, options) {
  44936.                 if (!isError(ex)) return Raven.captureMessage(ex, options);
  44937.                 lastCapturedException = ex;
  44938.                 try {
  44939.                     handleStackInfo(TraceKit.computeStackTrace(ex), options);
  44940.                 } catch (ex1) {
  44941.                     if (ex !== ex1) throw ex1;
  44942.                 }
  44943.                 return Raven;
  44944.             },
  44945.             captureMessage: function(msg, options) {
  44946.                 if (!globalOptions.ignoreErrors.test || !globalOptions.ignoreErrors.test(msg)) {
  44947.                     send(objectMerge({
  44948.                         message: msg + ""
  44949.                     }, options));
  44950.                     return Raven;
  44951.                 }
  44952.             },
  44953.             setUserContext: function(user) {
  44954.                 globalUser = user;
  44955.                 return Raven;
  44956.             },
  44957.             setExtraContext: function(extra) {
  44958.                 globalOptions.extra = extra || {};
  44959.                 return Raven;
  44960.             },
  44961.             setTagsContext: function(tags) {
  44962.                 globalOptions.tags = tags || {};
  44963.                 return Raven;
  44964.             },
  44965.             setReleaseContext: function(release) {
  44966.                 globalOptions.release = release;
  44967.                 return Raven;
  44968.             },
  44969.             setDataCallback: function(callback) {
  44970.                 globalOptions.dataCallback = callback;
  44971.                 return Raven;
  44972.             },
  44973.             setShouldSendCallback: function(callback) {
  44974.                 globalOptions.shouldSendCallback = callback;
  44975.                 return Raven;
  44976.             },
  44977.             lastException: function() {
  44978.                 return lastCapturedException;
  44979.             },
  44980.             lastEventId: function() {
  44981.                 return _lastEventId;
  44982.             },
  44983.             isSetup: function() {
  44984.                 return _isSetup();
  44985.             }
  44986.         };
  44987.         Raven.setUser = Raven.setUserContext;
  44988.         var dsnKeys = "source protocol user pass host port path".split(" "), dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;
  44989.         RavenConfigError.prototype = new Error();
  44990.         RavenConfigError.prototype.constructor = RavenConfigError;
  44991.         var ravenNotConfiguredError;
  44992.         !function() {
  44993.             var RavenConfig = window.RavenConfig;
  44994.             if (RavenConfig) Raven.config(RavenConfig.dsn, RavenConfig.config).install();
  44995.         }();
  44996.         if (!0) {
  44997.             window.Raven = Raven;
  44998.             __WEBPACK_AMD_DEFINE_ARRAY__ = [], (__WEBPACK_AMD_DEFINE_RESULT__ = function() {
  44999.                 return Raven;
  45000.             }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);
  45001.         } else if ("object" === (void 0 === module ? "undefined" : _typeof(module))) module.exports = Raven; else if ("object" === (void 0 === exports ? "undefined" : _typeof(exports))) exports = Raven; else window.Raven = Raven;
  45002.     }("undefined" != typeof window ? window : undefined);
  45003. }, , function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {}, function(module, exports) {
  45004.     module.exports = [ {
  45005.         id: "bluetooth",
  45006.         idAliases: []
  45007.     }, {
  45008.         id: "cardreader",
  45009.         idAliases: []
  45010.     }, {
  45011.         id: "chipset",
  45012.         idAliases: [ "xusb" ]
  45013.     }, {
  45014.         id: "inputdev",
  45015.         idAliases: [ "touchpad" ]
  45016.     }, {
  45017.         id: "lan",
  45018.         idAliases: []
  45019.     }, {
  45020.         id: "massstorage",
  45021.         idAliases: []
  45022.     }, {
  45023.         id: "modem",
  45024.         idAliases: []
  45025.     }, {
  45026.         id: "monitor",
  45027.         idAliases: []
  45028.     }, {
  45029.         id: "phone",
  45030.         idAliases: [ "telephone" ]
  45031.     }, {
  45032.         id: "printer",
  45033.         idAliases: []
  45034.     }, {
  45035.         id: "sound",
  45036.         idAliases: [ "sounds" ]
  45037.     }, {
  45038.         id: "tvtuner",
  45039.         idAliases: [ "tv" ]
  45040.     }, {
  45041.         id: "video",
  45042.         idAliases: [ "videos" ]
  45043.     }, {
  45044.         id: "webcamera",
  45045.         idAliases: [ "webcam" ]
  45046.     }, {
  45047.         id: "wifi",
  45048.         idAliases: [ "wlan-wifi", "wwan-4g" ]
  45049.     }, {
  45050.         id: "other",
  45051.         idAliases: []
  45052.     } ];
  45053. }, function(module, exports) {
  45054.     module.exports = {
  45055.         general: {
  45056.             settings: {
  45057.                 language: {
  45058.                     type: "language",
  45059.                     defaultValue: ""
  45060.                 },
  45061.                 enableLogging: {
  45062.                     type: "switch",
  45063.                     defaultValue: !0
  45064.                 },
  45065.                 activateFirebug: {
  45066.                     type: "switch",
  45067.                     disabled: !0,
  45068.                     defaultValue: !1,
  45069.                     patched: 1
  45070.                 },
  45071.                 removeIntallationTempFiles: {
  45072.                     type: "switch",
  45073.                     defaultValue: !0
  45074.                 },
  45075.                 enableSoftAndDriverUtilities: {
  45076.                     type: "switch",
  45077.                     defaultValue: !0
  45078.                 },
  45079.                 enableProtect: {
  45080.                     type: "switch",
  45081.                     defaultValue: !0
  45082.                 },
  45083.                 enableDiagnostics: {
  45084.                     type: "switch",
  45085.                     defaultValue: !0
  45086.                 },
  45087.                 startOnExpertMode: {
  45088.                     type: "switch",
  45089.                     defaultValue: !1
  45090.                 },
  45091.                 minifyMenu: {
  45092.                     type: "switch",
  45093.                     defaultValue: !1
  45094.                 },
  45095.                 enableAuthorization: {
  45096.                     type: "switch",
  45097.                     defaultValue: !0,
  45098.                     disabled: !0
  45099.                 },
  45100.                 enableNews: {
  45101.                     type: "switch",
  45102.                     defaultValue: !0,
  45103.                     disabled: !0
  45104.                 },
  45105.                 selectDriversByDefault: {
  45106.                     type: "switch",
  45107.                     defaultValue: !1,
  45108.                     patched: 1
  45109.                 },
  45110.                 selectSoftByDefault: {
  45111.                     type: "switch",
  45112.                     defaultValue: !1,
  45113.                     patched: 1
  45114.                 },
  45115.                 hideInstallationBanners: {
  45116.                     type: "switch",
  45117.                     defaultValue: !1
  45118.                 },
  45119.                 installNotifier: {
  45120.                     type: "switch",
  45121.                     defaultValue: !0
  45122.                 }
  45123.             }
  45124.         },
  45125.         errors: {
  45126.             settings: {
  45127.                 showBugReport: {
  45128.                     type: "switch",
  45129.                     defaultValue: !0
  45130.                 },
  45131.                 createRestorePoint: {
  45132.                     type: "switch",
  45133.                     defaultValue: !0
  45134.                 },
  45135.                 createDriversBackup: {
  45136.                     type: "switch",
  45137.                     defaultValue: !0,
  45138.                     disabled: !0
  45139.                 },
  45140.                 enableSystemCheck: {
  45141.                     type: "switch",
  45142.                     defaultValue: !0
  45143.                 }
  45144.             }
  45145.         },
  45146.         driverSelection: {
  45147.             settings: {
  45148.                 sendStatistics: {
  45149.                     type: "switch",
  45150.                     defaultValue: !0,
  45151.                     patched: 1,
  45152.                     dependentSettings: [ "driverSelection.useMachineLearning", "driverSelection.analyzeBsods" ]
  45153.                 },
  45154.                 useMachineLearning: {
  45155.                     type: "switch",
  45156.                     defaultValue: !0,
  45157.                     disabled: !1,
  45158.                     patched: 1
  45159.                 },
  45160.                 analyzeBsods: {
  45161.                     type: "switch",
  45162.                     defaultValue: !0,
  45163.                     patched: 1
  45164.                 },
  45165.                 collectUserDrivers: {
  45166.                     type: "switch",
  45167.                     defaultValue: !1,
  45168.                     disabled: !0
  45169.                 }
  45170.             }
  45171.         }
  45172.     };
  45173. }, function(module, exports) {
  45174.     module.exports = [ {
  45175.         id: "archiver"
  45176.     }, {
  45177.         id: "browser"
  45178.     }, {
  45179.         id: "viewer"
  45180.     }, {
  45181.         id: "messenger"
  45182.     }, {
  45183.         id: "internet"
  45184.     }, {
  45185.         id: "player"
  45186.     }, {
  45187.         id: "backup"
  45188.     }, {
  45189.         id: "antivirus"
  45190.     }, {
  45191.         id: "system"
  45192.     }, {
  45193.         id: "drivers"
  45194.     } ];
  45195. }, function(module, exports) {
  45196.     module.exports = 'Function SetScreenResolution {\n\n<#\n  .Synopsis\n    Sets the Screen Resolution of the primary monitor\n  .Description\n    Uses Pinvoke and ChangeDisplaySettings Win32API to make the change\n  .Example\n    SetScreenResolution -Width 1024 -Height 768\n#>\n\nparam (\n[Parameter(Mandatory=$true,\n  Position = 0)]\n[int]\n$Width,\n\n[Parameter(Mandatory=$true,\n  Position = 1)]\n[int]\n$Height\n)\n\n$pinvokeCode = @"\n\nusing System;\nusing System.Runtime.InteropServices;\n\nnamespace Resolution\n{\n  [StructLayout(LayoutKind.Sequential)]\n  public struct DEVMODE1\n  {\n    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]\n    public string dmDeviceName;\n    public short dmSpecVersion;\n    public short dmDriverVersion;\n    public short dmSize;\n    public short dmDriverExtra;\n    public int dmFields;\n\n    public short dmOrientation;\n    public short dmPaperSize;\n    public short dmPaperLength;\n    public short dmPaperWidth;\n\n    public short dmScale;\n    public short dmCopies;\n    public short dmDefaultSource;\n    public short dmPrintQuality;\n    public short dmColor;\n    public short dmDuplex;\n    public short dmYResolution;\n    public short dmTTOption;\n    public short dmCollate;\n    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]\n    public string dmFormName;\n    public short dmLogPixels;\n    public short dmBitsPerPel;\n    public int dmPelsWidth;\n    public int dmPelsHeight;\n\n    public int dmDisplayFlags;\n    public int dmDisplayFrequency;\n\n    public int dmICMMethod;\n    public int dmICMIntent;\n    public int dmMediaType;\n    public int dmDitherType;\n    public int dmReserved1;\n    public int dmReserved2;\n\n    public int dmPanningWidth;\n    public int dmPanningHeight;\n  };\n\n  class User_32\n  {\n    [DllImport("user32.dll")]\n    public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE1 devMode);\n    [DllImport("user32.dll")]\n    public static extern int ChangeDisplaySettings(ref DEVMODE1 devMode, int flags);\n\n    public const int ENUM_CURRENT_SETTINGS = -1;\n    public const int CDS_UPDATEREGISTRY = 0x01;\n    public const int CDS_TEST = 0x02;\n    public const int DISP_CHANGE_SUCCESSFUL = 0;\n    public const int DISP_CHANGE_RESTART = 1;\n    public const int DISP_CHANGE_FAILED = -1;\n  }\n\n  public class PrimaryScreenResolution\n  {\n    static public string ChangeResolution(int width, int height)\n    {\n      DEVMODE1 dm = GetDevMode1();\n\n      if (0 != User_32.EnumDisplaySettings(null, User_32.ENUM_CURRENT_SETTINGS, ref dm))\n      {\n        dm.dmPelsWidth = width;\n        dm.dmPelsHeight = height;\n\n        int iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_TEST);\n\n        if (iRet == User_32.DISP_CHANGE_FAILED)\n        {\n          return "Unable To Process Your Request. Sorry For This Inconvenience.";\n        }\n        else\n        {\n          iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_UPDATEREGISTRY);\n          switch (iRet)\n          {\n            case User_32.DISP_CHANGE_SUCCESSFUL:\n              {\n                return "Success";\n              }\n            case User_32.DISP_CHANGE_RESTART:\n              {\n                return "You Need To Reboot For The Change To Happen.\\n If You Feel Any Problem After Rebooting Your Machine\\nThen Try To Change Resolution In Safe Mode.";\n              }\n            default:\n              {\n                return "Failed To Change The Resolution";\n              }\n          }\n\n        }\n      }\n      else\n      {\n        return "Failed To Change The Resolution.";\n      }\n    }\n\n    private static DEVMODE1 GetDevMode1()\n    {\n      DEVMODE1 dm = new DEVMODE1();\n      dm.dmDeviceName = new String(new char[32]);\n      dm.dmFormName = new String(new char[32]);\n      dm.dmSize = (short)Marshal.SizeOf(dm);\n      return dm;\n    }\n  }\n}\n\n"@\n\nAdd-Type $pinvokeCode -ErrorAction SilentlyContinue\n[Resolution.PrimaryScreenResolution]::ChangeResolution($width,$height)\n}\n';
  45197. }, function(module, exports) {
  45198.     (function(__webpack_amd_options__) {
  45199.         module.exports = __webpack_amd_options__;
  45200.     }).call(exports, {});
  45201. }, function(module, exports) {
  45202.     module.exports = {
  45203.         devices: [ [ [ {
  45204.             link: "http://download.drp.su/driverpacks/repack/Sound_IDT/IDT/AllNTx64x86/HP_6.10.6233.266/IDT-AllNTx64x86-HP_6.10.6233.266-drp.zip",
  45205.             date: "2011-03-21",
  45206.             manufacturer: "IDT",
  45207.             "class": "sound",
  45208.             version: "6.10.6233.266",
  45209.             name: "IDT High Definition Audio CODEC",
  45210.             deviceId: "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680",
  45211.             pack: "DP_Sound_IDT_17000",
  45212.             directory: "IDT\\AllNTx64x86\\HP_6.10.6233.266\\",
  45213.             inf: "STWRT.INF",
  45214.             rank: 3,
  45215.             fullDeviceId: "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034\\4&31E60982&0&0001",
  45216.             hardwareId: [ "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034", "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680" ],
  45217.             statusCode: 28,
  45218.             installationHooks: null,
  45219.             section: "INTEL_HDC.ntx86",
  45220.             systems: [ "6.1x86", "10.0x64" ]
  45221.         }, {
  45222.             link: "http://download.drp.su/driverpacks/repack/Sound_IDT/IDT/AllNTx64x86/ECS_6.10.6207.2/IDT-AllNTx64x86-ECS_6.10.6207.2-drp.zip",
  45223.             date: "2009-06-10",
  45224.             manufacturer: "IDT",
  45225.             "class": "sound",
  45226.             version: "6.10.6207.2",
  45227.             name: "IDT High Definition Audio CODEC",
  45228.             deviceId: "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680",
  45229.             pack: "DP_Sound_IDT_17000",
  45230.             directory: "IDT\\AllNTx64x86\\ECS_6.10.6207.2\\",
  45231.             inf: "STWRT.INF",
  45232.             rank: 2,
  45233.             fullDeviceId: "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034\\4&31E60982&0&0001",
  45234.             hardwareId: [ "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034", "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680" ],
  45235.             statusCode: 28,
  45236.             installationHooks: null,
  45237.             section: "INTEL_HDC.ntx86",
  45238.             systems: [ "6.1x86", "10.0x64" ]
  45239.         }, {
  45240.             link: "http://download.drp.su/driverpacks/repack/Sound_IDT/IDT/AllNTx64x86/Asus_6.10.6233.224/IDT-AllNTx64x86-Asus_6.10.6233.224-drp.zip",
  45241.             date: "2010-01-15",
  45242.             manufacturer: "IDT",
  45243.             "class": "sound",
  45244.             version: "6.10.6233.224",
  45245.             name: "IDT High Definition Audio CODEC",
  45246.             deviceId: "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680",
  45247.             pack: "DP_Sound_IDT_17000",
  45248.             directory: "IDT\\AllNTx64x86\\Asus_6.10.6233.224\\",
  45249.             inf: "STWRT.INF",
  45250.             rank: 1,
  45251.             fullDeviceId: "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034\\4&31E60982&0&0001",
  45252.             hardwareId: [ "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034", "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680" ],
  45253.             statusCode: 28,
  45254.             installationHooks: null,
  45255.             section: "INTEL_HDC.ntx86",
  45256.             systems: [ "6.1x86", "10.0x64" ]
  45257.         } ], null ], [ [ {
  45258.             link: "http://download.drp.su/driverpacks/repack/MassStorage/Intel/FORCED/Allx86/10.1.0.1008_rst/Intel-FORCED-Allx86-10.1.0.1008_rst-drp.zip",
  45259.             date: "2010-11-06",
  45260.             manufacturer: "Intel",
  45261.             "class": "massstorage",
  45262.             version: "10.1.0.1008",
  45263.             name: "Intel(R) ICH8M-E/M SATA AHCI Controller",
  45264.             deviceId: "PCI\\VEN_8086&DEV_2829&CC_0106",
  45265.             pack: "DP_MassStorage_17000",
  45266.             directory: "Intel\\FORCED\\Allx86\\10.1.0.1008_rst\\",
  45267.             inf: "iaAHCI.inf",
  45268.             rank: 3,
  45269.             fullDeviceId: "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\\3&267A616A&0&68",
  45270.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45271.             statusCode: 0,
  45272.             installationHooks: null,
  45273.             section: "INTEL_HDC.ntx86",
  45274.             systems: [ "6.1x86", "10.0x64" ]
  45275.         }, {
  45276.             link: "http://download.drp.su/driverpacks/repack/MassStorage/Intel/FORCED/NTx86/12.8.6.1000_TWEAK/Intel-FORCED-NTx86-12.8.6.1000_TWEAK-drp.zip",
  45277.             date: "2004-09-20",
  45278.             manufacturer: "Intel Corporation",
  45279.             "class": "massstorage",
  45280.             version: "12.8.6.1000",
  45281.             name: "Intel(R) ICH8M SATA AHCI Controller",
  45282.             deviceId: "PCI\\VEN_8086&DEV_2829&CC_0106",
  45283.             pack: "DP_MassStorage_17000",
  45284.             directory: "Intel\\FORCED\\NTx86\\12.8.6.1000_TWEAK\\",
  45285.             inf: "iaAHCIC.inf",
  45286.             rank: 3,
  45287.             fullDeviceId: "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\\3&267A616A&0&68",
  45288.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45289.             statusCode: 0,
  45290.             installationHooks: null,
  45291.             section: "INTEL_HDC.ntx86",
  45292.             systems: [ "6.1x86", "10.0x64" ]
  45293.         }, {
  45294.             link: "http://download.drp.su/driverpacks/repack/MassStorage/Intel/FORCED/Allx86/11.2.0.1006_TWEAK/Intel-FORCED-Allx86-11.2.0.1006_TWEAK-drp.zip",
  45295.             date: "2004-04-30",
  45296.             manufacturer: "Intel",
  45297.             "class": "massstorage",
  45298.             version: "11.2.0.1006",
  45299.             name: "Intel(R) ICH8M-E/M SATA AHCI Controller (added by Fernando)",
  45300.             deviceId: "PCI\\VEN_8086&DEV_2829&CC_0106",
  45301.             pack: "DP_MassStorage_17000",
  45302.             directory: "Intel\\FORCED\\Allx86\\11.2.0.1006_TWEAK\\",
  45303.             inf: "iaAHCI.inf",
  45304.             rank: 1.1,
  45305.             fullDeviceId: "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\\3&267A616A&0&68",
  45306.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45307.             statusCode: 0,
  45308.             installationHooks: null,
  45309.             section: "INTEL_HDC.ntx86",
  45310.             systems: [ "6.1x86", "10.0x64" ]
  45311.         }, {
  45312.             link: "http://download.drp.su/driverpacks/repack/MassStorage/Intel/FORCED/Allx86/8.9.8.1005_TWEAK/Intel-FORCED-Allx86-8.9.8.1005_TWEAK-drp.zip",
  45313.             date: "2003-03-05",
  45314.             manufacturer: "Intel",
  45315.             "class": "massstorage",
  45316.             version: "8.9.8.1005",
  45317.             name: "Intel(R) ICH8M-E/M SATA AHCI Controller",
  45318.             deviceId: "PCI\\VEN_8086&DEV_2829&CC_0106",
  45319.             pack: "DP_MassStorage_17000",
  45320.             directory: "Intel\\FORCED\\Allx86\\8.9.8.1005_TWEAK\\",
  45321.             inf: "iaAHCI.inf",
  45322.             rank: 3,
  45323.             fullDeviceId: "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\\3&267A616A&0&68",
  45324.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45325.             statusCode: 0,
  45326.             installationHooks: null,
  45327.             section: "INTEL_HDC.ntx86",
  45328.             systems: [ "6.1x86", "10.0x64" ]
  45329.         }, {
  45330.             link: "http://download.drp.su/driverpacks/repack/Chipset/Intel/WinAll/Chipset/9.3.2.1020_NEW/Intel-WinAll-Chipset-9.3.2.1020_NEW-drp.zip",
  45331.             date: "2013-07-25",
  45332.             manufacturer: "Intel",
  45333.             "class": "chipset",
  45334.             version: "9.1.9.1005",
  45335.             name: "Intel(R) ICH8M SATA AHCI Controller - 2829",
  45336.             deviceId: "PCI\\VEN_8086&DEV_2829",
  45337.             pack: "DP_Chipset_17000",
  45338.             directory: "Intel\\WinAll\\Chipset\\9.3.2.1020_NEW\\",
  45339.             inf: "ibexahci.inf",
  45340.             rank: 3,
  45341.             fullDeviceId: "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\\3&267A616A&0&68",
  45342.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45343.             statusCode: 0,
  45344.             installationHooks: null,
  45345.             section: "INTEL_HDC.ntx86",
  45346.             systems: [ "6.1x86", "10.0x64" ]
  45347.         } ], {
  45348.             deviceId: "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\\3&267A616A&0&68",
  45349.             date: "2006-06-21",
  45350.             version: "6.1.7601.18231",
  45351.             name: "Standard AHCI 1.0 Serial ATA Controller",
  45352.             manufacturer: "Standard AHCI 1.0 Serial ATA Controller",
  45353.             inf: "mshdc.inf"
  45354.         } ], [ [ {
  45355.             link: "http://download.drp.su/driverpacks/repack/MassStorage/Intel/FORCED/Allx86/11.2.0.1006_TWEAK/Intel-FORCED-Allx86-11.2.0.1006_TWEAK-drp.zip",
  45356.             date: "2004-04-30",
  45357.             manufacturer: "Intel",
  45358.             "class": "massstorage",
  45359.             version: "11.2.0.1006",
  45360.             name: "Intel(R) ICH8M-E/M SATA AHCI Controller (added by Fernando)",
  45361.             deviceId: "PCI\\VEN_8086&DEV_2829&CC_0106",
  45362.             pack: "DP_MassStorage_17000",
  45363.             directory: "Intel\\FORCED\\Allx86\\11.2.0.1006_TWEAK\\",
  45364.             inf: "iaAHCI.inf",
  45365.             rank: 3,
  45366.             fullDeviceId: "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\\3&267A616A&0&68",
  45367.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45368.             statusCode: 0,
  45369.             installationHooks: null,
  45370.             section: "INTEL_HDC.ntx86",
  45371.             systems: [ "6.1x86", "10.0x64" ]
  45372.         }, {
  45373.             link: "http://download.drp.su/driverpacks/repack/MassStorage/Intel/FORCED/Allx86/8.9.8.1005_TWEAK/Intel-FORCED-Allx86-8.9.8.1005_TWEAK-drp.zip",
  45374.             date: "2003-03-05",
  45375.             manufacturer: "Intel",
  45376.             "class": "massstorage",
  45377.             version: "8.9.8.1005",
  45378.             name: "Intel(R) ICH8M-E/M SATA AHCI Controller",
  45379.             deviceId: "PCI\\VEN_8086&DEV_2829&CC_0106",
  45380.             pack: "DP_MassStorage_17000",
  45381.             directory: "Intel\\FORCED\\Allx86\\8.9.8.1005_TWEAK\\",
  45382.             inf: "iaAHCI.inf",
  45383.             rank: 3,
  45384.             fullDeviceId: "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\\3&267A616A&0&68",
  45385.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45386.             statusCode: 0,
  45387.             installationHooks: null,
  45388.             section: "INTEL_HDC.ntx86",
  45389.             systems: [ "6.1x86", "10.0x64" ]
  45390.         }, {
  45391.             link: "http://download.drp.su/driverpacks/repack/Chipset/Intel/WinAll/Chipset/9.3.2.1020_NEW/Intel-WinAll-Chipset-9.3.2.1020_NEW-drp.zip",
  45392.             date: "2013-07-25",
  45393.             manufacturer: "Intel",
  45394.             "class": "chipset",
  45395.             version: "9.1.9.1005",
  45396.             name: "Intel(R) ICH8M SATA AHCI Controller - 2829",
  45397.             deviceId: "PCI\\VEN_8086&DEV_2829",
  45398.             pack: "DP_Chipset_17000",
  45399.             directory: "Intel\\WinAll\\Chipset\\9.3.2.1020_NEW\\",
  45400.             inf: "ibexahci.inf",
  45401.             rank: 3,
  45402.             fullDeviceId: "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\\3&267A616A&0&68",
  45403.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45404.             statusCode: 0,
  45405.             installationHooks: null,
  45406.             section: "INTEL_HDC.ntx86",
  45407.             systems: [ "6.1x86", "10.0x64" ]
  45408.         } ], {
  45409.             deviceId: "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02\\3&267A616A&0&68",
  45410.             date: "2006-06-21",
  45411.             version: "12.2.0.1006",
  45412.             name: "Intel(R) ICH8M SATA AHCI Controller - 2829",
  45413.             manufacturer: "Intel",
  45414.             inf: "mshdc.inf"
  45415.         } ], [ [ {
  45416.             link: "http://download.drp.su/driverpacks/repack/MassStorage/Intel/FORCED/Allx86/10.1.0.1008_rst/Intel-FORCED-Allx86-10.1.0.1008_rst-drp.zip",
  45417.             date: "2010-11-06",
  45418.             manufacturer: "Intel",
  45419.             "class": "massstorage",
  45420.             version: "10.1.0.1008",
  45421.             name: "Intel(R) ICH8M-E/M SATA AHCI Controller",
  45422.             deviceId: "PCIIDE\\IDECHANNEL\\4&2F42C713&0&1",
  45423.             pack: "DP_MassStorage_17000",
  45424.             directory: "Intel\\FORCED\\Allx86\\10.1.0.1008_rst\\",
  45425.             inf: "iaAHCI.inf",
  45426.             rank: 3,
  45427.             fullDeviceId: "PCIIDE\\IDECHANNEL\\4&2F42C713&0&1",
  45428.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45429.             statusCode: 0,
  45430.             installationHooks: null,
  45431.             section: "INTEL_HDC.ntx86",
  45432.             systems: [ "6.1x86", "10.0x64" ]
  45433.         }, {
  45434.             link: "http://download.drp.su/driverpacks/repack/MassStorage/Intel/FORCED/NTx86/12.8.6.1000_TWEAK/Intel-FORCED-NTx86-12.8.6.1000_TWEAK-drp.zip",
  45435.             date: "2004-09-20",
  45436.             manufacturer: "Intel Corporation",
  45437.             "class": "massstorage",
  45438.             version: "12.8.6.1000",
  45439.             name: "Intel(R) ICH8M SATA AHCI Controller",
  45440.             deviceId: "PCIIDE\\IDECHANNEL\\4&2F42C713&0&1",
  45441.             pack: "DP_MassStorage_17000",
  45442.             directory: "Intel\\FORCED\\NTx86\\12.8.6.1000_TWEAK\\",
  45443.             inf: "iaAHCIC.inf",
  45444.             rank: 3,
  45445.             fullDeviceId: "PCIIDE\\IDECHANNEL\\4&2F42C713&0&1",
  45446.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45447.             statusCode: 0,
  45448.             installationHooks: null,
  45449.             section: "INTEL_HDC.ntx86",
  45450.             systems: [ "6.1x86", "10.0x64" ]
  45451.         } ], {
  45452.             deviceId: "PCIIDE\\IDECHANNEL\\4&2F42C713&0&1",
  45453.             date: "2006-06-21",
  45454.             version: "5.1.7601.18231",
  45455.             name: "Test Microsoft Driver",
  45456.             manufacturer: "Microsoft",
  45457.             inf: "mshdc.inf"
  45458.         } ] ],
  45459.         lowRanked: [ [ [ {
  45460.             link: "http://download.drp.su/driverpacks/repack/Sound_IDT/IDT/AllNTx64x86/Lenovo_6.10.6233/IDT-AllNTx64x86-Lenovo_6.10.6233-drp.zip",
  45461.             date: "2009-12-10",
  45462.             manufacturer: "IDT",
  45463.             "class": "sound",
  45464.             version: "6.10.6233.219",
  45465.             name: "IDT High Definition Audio CODEC",
  45466.             deviceId: "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680",
  45467.             pack: "DP_Sound_IDT_17000",
  45468.             directory: "IDT\\AllNTx64x86\\Lenovo_6.10.6233\\",
  45469.             inf: "STWRT.INF",
  45470.             rank: 0,
  45471.             fullDeviceId: "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034\\4&31E60982&0&0001",
  45472.             hardwareId: [ "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034", "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680" ],
  45473.             statusCode: 28,
  45474.             installationHooks: null,
  45475.             section: "INTEL_HDC.ntx86",
  45476.             systems: [ "6.1x86", "10.0x64" ]
  45477.         }, {
  45478.             link: "http://download.drp.su/driverpacks/repack/Sound_IDT/IDT/AllNTx64x86/ECS_6.10.6207.2/IDT-AllNTx64x86-ECS_6.10.6207.2-drp.zip",
  45479.             date: "2009-06-10",
  45480.             manufacturer: "IDT",
  45481.             "class": "sound",
  45482.             version: "6.10.6207.2",
  45483.             name: "IDT High Definition Audio CODEC",
  45484.             deviceId: "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_00000100",
  45485.             pack: "DP_Sound_IDT_17000",
  45486.             directory: "IDT\\AllNTx64x86\\ECS_6.10.6207.2\\",
  45487.             inf: "STWRT.INF",
  45488.             rank: 0,
  45489.             fullDeviceId: "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034\\4&31E60982&0&0001",
  45490.             hardwareId: [ "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034", "HDAUDIO\\FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680" ],
  45491.             statusCode: 28,
  45492.             installationHooks: null,
  45493.             section: "INTEL_HDC.ntx86",
  45494.             systems: [ "6.1x86", "10.0x64" ]
  45495.         } ], null ], [ [ {
  45496.             link: "http://download.drp.su/driverpacks/repack/MassStorage/Intel/FORCED/Allx86/10.1.0.1008_rst/Intel-FORCED-Allx86-10.1.0.1008_rst-drp.zip",
  45497.             date: "2010-11-06",
  45498.             manufacturer: "Intel",
  45499.             "class": "massstorage",
  45500.             version: "10.1.0.1008",
  45501.             name: "Intel(R) ICH8M-E/M SATA AHCI Controller",
  45502.             deviceId: "PCIIDE\\IDECHANNEL\\4&2F42C713&0&1",
  45503.             pack: "DP_MassStorage_17000",
  45504.             directory: "Intel\\FORCED\\Allx86\\10.1.0.1008_rst\\",
  45505.             inf: "iaAHCI.inf",
  45506.             rank: 0,
  45507.             fullDeviceId: "PCIIDE\\IDECHANNEL\\4&2F42C713&0&1",
  45508.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45509.             statusCode: 0,
  45510.             installationHooks: null,
  45511.             section: "INTEL_HDC.ntx86",
  45512.             systems: [ "6.1x86", "10.0x64" ]
  45513.         }, {
  45514.             link: "http://download.drp.su/driverpacks/repack/MassStorage/Intel/FORCED/NTx86/12.8.6.1000_TWEAK/Intel-FORCED-NTx86-12.8.6.1000_TWEAK-drp.zip",
  45515.             date: "2004-09-20",
  45516.             manufacturer: "Intel Corporation",
  45517.             "class": "massstorage",
  45518.             version: "12.8.6.1000",
  45519.             name: "Intel(R) ICH8M SATA AHCI Controller",
  45520.             deviceId: "PCIIDE\\IDECHANNEL\\4&2F42C713&0&1",
  45521.             pack: "DP_MassStorage_17000",
  45522.             directory: "Intel\\FORCED\\NTx86\\12.8.6.1000_TWEAK\\",
  45523.             inf: "iaAHCIC.inf",
  45524.             rank: 0,
  45525.             fullDeviceId: "PCIIDE\\IDECHANNEL\\4&2F42C713&0&1",
  45526.             hardwareId: [ "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000&REV_02", "PCI\\VEN_8086&DEV_2829&SUBSYS_00000000", "PCI\\VEN_8086&DEV_2829&REV_02", "PCI\\VEN_8086&DEV_2829", "PCI\\VEN_8086&DEV_2829&CC_010601", "PCI\\VEN_8086&DEV_2829&CC_0106" ],
  45527.             statusCode: 0,
  45528.             installationHooks: null,
  45529.             section: "INTEL_HDC.ntx86",
  45530.             systems: [ "6.1x86", "10.0x64" ]
  45531.         } ], {
  45532.             deviceId: "PCIIDE\\IDECHANNEL\\4&2F42C713&0&1",
  45533.             date: "2006-06-21",
  45534.             version: "5.1.7601.18231",
  45535.             name: "Test Microsoft Driver",
  45536.             manufacturer: "Microsoft",
  45537.             inf: "mshdc.inf"
  45538.         } ] ],
  45539.         broken: [ {
  45540.             deviceId: "USB\\UNKNOWN",
  45541.             problem: "usb_connection"
  45542.         }, {
  45543.             deviceId: "ROOT\\LEGACY_QUTMIPC",
  45544.             problem: "root_legacy"
  45545.         }, {
  45546.             deviceId: "PTUN0901",
  45547.             problem: "vpn_no_need_drivers"
  45548.         }, {
  45549.             deviceId: "BTH\\MS_BTHPAN",
  45550.             problem: "damaged_system_driver"
  45551.         }, {
  45552.             deviceId: "WPDBUSENUMROOT\\UMB",
  45553.             problem: "usb_unknown_vendor"
  45554.         }, {
  45555.             deviceId: "HDAUDIO\\FUNC_FF&VEN_9FFF&DEV_FFFF&SUBSYS_1FFFFFFF&REV_FFFF",
  45556.             problem: "sound_card"
  45557.         }, {
  45558.             deviceId: "ROOT\\*ISATAP",
  45559.             problem: "unknown_problem"
  45560.         }, {
  45561.             deviceId: "ROOT\\*TEREDO",
  45562.             problem: "unknown_problem"
  45563.         } ]
  45564.     };
  45565. }, function(module, exports) {
  45566.     module.exports = [ {
  45567.         name: "7-Zip 16.04",
  45568.         version: "16.04",
  45569.         publisher: "Igor Pavlov",
  45570.         installDate: "",
  45571.         icon: "http://download.drp.su/clean-icons/137B107B11BC904FCCEFE14AB625FA7F.png",
  45572.         uninstallString: "C:\\Program Files\\7-Zip\\Uninstall.exe",
  45573.         uninstallPercents: 21,
  45574.         rating: 180,
  45575.         size: "",
  45576.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\7-Zip\\"
  45577.     }, {
  45578.         name: "AIMP",
  45579.         version: "v4.13.1886, 14.02.2017",
  45580.         publisher: "AIMP DevTeam",
  45581.         installDate: "20170217",
  45582.         icon: "http://download.drp.su/clean-icons/FEF2BD7EC16BC959302A18A342650D53.png",
  45583.         uninstallString: "C:\\Program Files\\AIMP\\Uninstall.exe",
  45584.         uninstallPercents: 10,
  45585.         rating: 237,
  45586.         size: "",
  45587.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\AIMP\\"
  45588.     }, {
  45589.         name: "DriverPack Notifier",
  45590.         version: "2.2.1",
  45591.         publisher: "DriverPack Solution",
  45592.         installDate: "",
  45593.         icon: "http://download.drp.su/clean-icons/D1618DE8AA6B69CB87DD29DCF0EAF769.png",
  45594.         uninstallString: '"C:\\Program Files\\DriverPack Notifier\\Uninstall.exe" --uninstall',
  45595.         uninstallPercents: 5,
  45596.         rating: 294,
  45597.         size: "",
  45598.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DriverPack Notifier\\"
  45599.     }, {
  45600.         name: "FastStone Image Viewer 6.1",
  45601.         version: "6.1",
  45602.         publisher: "FastStone Soft",
  45603.         installDate: "",
  45604.         icon: "http://download.drp.su/clean-icons/1074CBD200BFFA29C675BCCDD3D57800.png",
  45605.         uninstallString: "C:\\Program Files\\FastStone Image Viewer\\uninst.exe",
  45606.         uninstallPercents: 16,
  45607.         rating: 276,
  45608.         size: "",
  45609.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\FastStone Image Viewer\\"
  45610.     }, {
  45611.         name: "Google Chrome",
  45612.         version: "56.0.2924.87",
  45613.         publisher: "Google Inc.",
  45614.         installDate: "20170205",
  45615.         icon: "http://download.drp.su/clean-icons/1C4C655B028F246E77B97465CDE78B02.png",
  45616.         uninstallString: '"C:\\Program Files\\Google\\Chrome\\Application\\56.0.2924.87\\Installer\\setup.exe" --uninstall --system-level --verbose-logging',
  45617.         uninstallPercents: 10,
  45618.         rating: 138,
  45619.         size: "",
  45620.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Google Chrome\\"
  45621.     }, {
  45622.         name: "Mozilla Firefox 51.0 (x86 ru)",
  45623.         version: "51.0",
  45624.         publisher: "Mozilla",
  45625.         installDate: "",
  45626.         icon: "http://download.drp.su/clean-icons/44E73F3C92E551742A13ED5FE352DE77.png",
  45627.         uninstallString: '"C:\\Program Files\\Mozilla Firefox\\uninstall\\helper.exe"',
  45628.         uninstallPercents: 18,
  45629.         rating: 198,
  45630.         size: "",
  45631.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Mozilla Firefox 51.0 (x86 ru)\\"
  45632.     }, {
  45633.         name: "Mozilla Maintenance Service",
  45634.         version: "51.0",
  45635.         publisher: "Mozilla",
  45636.         installDate: "",
  45637.         icon: "http://download.drp.su/clean-icons/298FA6E90D6DAE33BBEBE4ABD99307FF.png",
  45638.         uninstallString: '"C:\\Program Files\\Mozilla Maintenance Service\\uninstall.exe"',
  45639.         uninstallPercents: 81,
  45640.         rating: 273,
  45641.         size: "",
  45642.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MozillaMaintenanceService\\"
  45643.     }, {
  45644.         name: "Notepad++ (32-bit x86)",
  45645.         version: "7.3.1",
  45646.         publisher: "Notepad++ Team",
  45647.         installDate: "",
  45648.         icon: "",
  45649.         uninstallString: "C:\\Program Files\\Notepad++\\uninstall.exe",
  45650.         uninstallPercents: 0,
  45651.         rating: 0,
  45652.         size: "",
  45653.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Notepad++\\"
  45654.     }, {
  45655.         name: "Oracle VM VirtualBox Guest Additions 4.3.12",
  45656.         version: "4.3.12.0",
  45657.         publisher: "Oracle Corporation",
  45658.         installDate: "",
  45659.         icon: "http://download.drp.su/clean-icons/91EC006ED46884324AEE90DF1D331644.png",
  45660.         uninstallString: "C:\\Program Files\\Oracle\\VirtualBox Guest Additions\\uninst.exe",
  45661.         uninstallPercents: 13,
  45662.         rating: 300,
  45663.         size: "",
  45664.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Oracle VM VirtualBox Guest Additions\\"
  45665.     }, {
  45666.         name: "PotPlayer v1.7.327 x86",
  45667.         version: "v1.7.327 x86",
  45668.         publisher: "Daum Corp.",
  45669.         installDate: "",
  45670.         icon: "http://download.drp.su/clean-icons/456022F12008313E6B7E1412FFE3FE1B.png",
  45671.         uninstallString: "C:\\Program Files\\Daum\\PotPlayer\\UnInst.exe",
  45672.         uninstallPercents: 5,
  45673.         rating: 252,
  45674.         size: "",
  45675.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\PotPlayer\\"
  45676.     }, {
  45677.         name: "WinRAR 5.30 (32-bit)",
  45678.         version: "5.30.0",
  45679.         publisher: "win.rar GmbH",
  45680.         installDate: "",
  45681.         icon: "http://download.drp.su/clean-icons/winrar.png",
  45682.         uninstallString: "C:\\Program Files\\WinRAR\\uninstall.exe",
  45683.         uninstallPercents: 18,
  45684.         rating: 258,
  45685.         size: "",
  45686.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\WinRAR archiver\\"
  45687.     }, {
  45688.         name: "Менеджер браузеров",
  45689.         version: "3.0.4.825",
  45690.         publisher: "Яндекс",
  45691.         installDate: "20170217",
  45692.         icon: "http://download.drp.su/clean-icons/yandex_browser_manager.png",
  45693.         uninstallString: "MsiExec.exe /X{36E317A1-1384-4FC5-92CD-D4731B651859}",
  45694.         uninstallPercents: 59,
  45695.         rating: 51,
  45696.         size: "",
  45697.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{36E317A1-1384-4FC5-92CD-D4731B651859}\\"
  45698.     }, {
  45699.         name: "Google Update Helper",
  45700.         version: "1.3.32.7",
  45701.         publisher: "Google Inc.",
  45702.         installDate: "20170217",
  45703.         icon: "",
  45704.         uninstallString: "MsiExec.exe /I{60EC980A-BDA2-4CB6-A427-B07A5498B4CA}",
  45705.         uninstallPercents: 83,
  45706.         rating: 195,
  45707.         size: "",
  45708.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{60EC980A-BDA2-4CB6-A427-B07A5498B4CA}\\"
  45709.     }, {
  45710.         name: "PDF-Viewer",
  45711.         version: "2.5.320.0",
  45712.         publisher: "Tracker Software Products Ltd",
  45713.         installDate: "20170217",
  45714.         icon: "http://download.drp.su/clean-icons/F803D99FCBEE0DAEEDDF626262584917.png",
  45715.         uninstallString: '"C:\\Program Files\\Tracker Software\\PDF Viewer\\unins000.exe"',
  45716.         uninstallPercents: 58,
  45717.         rating: 168,
  45718.         size: "",
  45719.         regPath: "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{A278382D-4F1B-4D47-9885-8523F7261E8D}_is1\\"
  45720.     }, {
  45721.         name: "Opera Stable 43.0.2442.806",
  45722.         version: "43.0.2442.806",
  45723.         publisher: "Opera Software",
  45724.         installDate: "",
  45725.         icon: "http://download.drp.su/clean-icons/986ADC545FA5BFDD736DBF5AFB90D384.png",
  45726.         uninstallString: '"C:\\Users\\IEUser\\AppData\\Local\\Programs\\Opera\\Launcher.exe" /uninstall',
  45727.         uninstallPercents: 7,
  45728.         rating: 201,
  45729.         size: "",
  45730.         regPath: "HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Opera 43.0.2442.806\\"
  45731.     }, {
  45732.         name: "µTorrent",
  45733.         version: "3.4.2.35702",
  45734.         publisher: "NEO",
  45735.         installDate: "",
  45736.         icon: "http://download.drp.su/clean-icons/A7E0E51E2D06CBE71986E6E5100E7151.png",
  45737.         uninstallString: "C:\\Users\\IEUser\\AppData\\Roaming\\uTorrent\\uTorrent.exe /UNINSTALL",
  45738.         uninstallPercents: 13,
  45739.         rating: 117,
  45740.         size: "",
  45741.         regPath: "HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\uTorrent\\"
  45742.     }, {
  45743.         name: "Yandex",
  45744.         version: "17.1.1.1003",
  45745.         publisher: "ООО «ЯНДЕКС»",
  45746.         installDate: "20170217",
  45747.         icon: "http://download.drp.su/clean-icons/E38CFFEAD913423A620C3914CEF36C7C.png",
  45748.         uninstallString: '"C:\\Users\\IEUser\\AppData\\Local\\Yandex\\YandexBrowser\\Application\\17.1.1.1003\\Installer\\setup.exe" --uninstall --verbose-logging',
  45749.         uninstallPercents: 16,
  45750.         rating: 189,
  45751.         size: "",
  45752.         regPath: "HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\YandexBrowser\\"
  45753.     }, {
  45754.         name: "Yandex taskbar button",
  45755.         version: "2.0.1.2130",
  45756.         publisher: "Yandex",
  45757.         installDate: "",
  45758.         icon: "http://download.drp.su/clean-icons/4157251F9FB77BBB33508F8AE6F93E4D.png",
  45759.         uninstallString: "C:\\Users\\IEUser\\AppData\\Local\\Yandex\\yapin\\YandexWorking.exe --uninstall --nopinned",
  45760.         uninstallPercents: 81,
  45761.         rating: 300,
  45762.         size: "",
  45763.         regPath: "HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\YaPinLancher\\"
  45764.     }, {
  45765.         name: "Менеджер браузеров",
  45766.         version: "3.0.4.825",
  45767.         publisher: "Яндекс",
  45768.         installDate: "",
  45769.         icon: "http://download.drp.su/clean-icons/yandex_browser_manager.png",
  45770.         uninstallString: '"C:\\Users\\IEUser\\AppData\\Local\\Package Cache\\{bb31fd2d-c872-46dd-8175-7c15e320f021}\\BrowserManagerInstaller.exe"  /uninstall',
  45771.         uninstallPercents: 59,
  45772.         rating: 51,
  45773.         size: "",
  45774.         regPath: "HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{bb31fd2d-c872-46dd-8175-7c15e320f021}\\"
  45775.     } ];
  45776. } ]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement