Greasy Fork is available in English.

智慧树小工具

一个知到智慧树的小工具,火狐,谷歌,油猴支持.支持视频倍速秒过,屏蔽题目,测试题库(੧ᐛ੭挂科模式,启动)

安装此脚本?
作者推荐脚本

您或许会喜欢超星慕课小工具

安装此脚本
// ==UserScript==
// @name         智慧树小工具
// @namespace    https://github.com/CodFrm/cxmooc-tools
// @version 2.4
// @description  一个知到智慧树的小工具,火狐,谷歌,油猴支持.支持视频倍速秒过,屏蔽题目,测试题库(੧ᐛ੭挂科模式,启动)
// @author       CodFrm
// @run-at       document-start
// @match        *://study.zhihuishu.com/learning/videoList*
// @match        *://studyh5.zhihuishu.com/videoStudy.html*
// @match        *://examh5.zhihuishu.com/stuExamWeb.html*
// @match        *://onlineexamh5new.zhihuishu.com/stuExamWeb.html*
// @grant        GM_xmlhttpRequest
// @grant        GM_notification
// @grant        unsafeWindow
// @license      MIT
// ==/UserScript==

let config = {
    auto: true, //全自动挂机,无需手动操作,即可自动观看视频等
    interval: 2, //时间间隔,当任务点完成后,会等待2分钟然后跳转到下一个任务点
    rand_answer: false, //随机答案,没有答案的题目将自动的生成一个答案
    video_multiple: 1, //视频播放倍速,视频播放的倍数,建议不要改动,为1即可,这是危险的功能
    video_mute: true, //视频静音,视频自动静音播放
    vtoken: "",
};

Object.keys(config).forEach(k => {
    localStorage[k] = config[k];
});
/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = "./src/tampermonkey/zhihuishu-pack.ts");
/******/ })
/************************************************************************/
/******/ ({

/***/ "./src/config.ts":
/*!***********************!*\
  !*** ./src/config.ts ***!
  \***********************/
/*! exports provided: SystemConfig */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SystemConfig\", function() { return SystemConfig; });\nvar SystemConfig = /** @class */ (function () {\r\n    function SystemConfig() {\r\n    }\r\n    SystemConfig.version = 2.4;\r\n    SystemConfig.url = \"https://cx.icodef.com/\";\r\n    SystemConfig.hotVersion = \"2.4.0\";\r\n    SystemConfig.match = [\r\n        \"*://*/mycourse/studentstudy?*\",\r\n        \"*://*/work/doHomeWorkNew?*\",\r\n        \"*://*/work/selectWorkQuestionYiPiYue?*\",\r\n        \"*://*/exam/test/reVersionTestStartNew?*\",\r\n        \"*://*/ztnodedetailcontroller/visitnodedetail?*\",\r\n        \"*://*/antispiderShowVerify.ac*\",\r\n        \"*://*/html/processVerify.ac?*\",\r\n        \"*://*/exam/test/reVersionPaperMarkContentNew?*\",\r\n        \"*://*/ananas/modules/*/index.html?*\",\r\n        \"*://*/exam/test?*\",\r\n        \"*://*/course/*.html?*\",\r\n        \"*://examh5.zhihuishu.com/stuExamWeb.html*\",\r\n        \"*://onlineexamh5new.zhihuishu.com/stuExamWeb.html*\",\r\n        \"*://studyh5.zhihuishu.com/videoStudy.html*\",\r\n        \"*://www.icourse163.org/learn/*\",\r\n        \"*://www.icourse163.org/spoc/learn/*\"\r\n    ];\r\n    return SystemConfig;\r\n}());\r\n\r\n\n\n//# sourceURL=webpack:///./src/config.ts?");

/***/ }),

/***/ "./src/internal/app/question.ts":
/*!**************************************!*\
  !*** ./src/internal/app/question.ts ***!
  \**************************************/
/*! exports provided: PushAnswer, TopicStatusString, QuestionStatusString, SwitchTopicType, ToolsQuestionBank, ToolsQuestionBankFacade */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PushAnswer\", function() { return PushAnswer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TopicStatusString\", function() { return TopicStatusString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QuestionStatusString\", function() { return QuestionStatusString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SwitchTopicType\", function() { return SwitchTopicType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ToolsQuestionBank\", function() { return ToolsQuestionBank; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ToolsQuestionBankFacade\", function() { return ToolsQuestionBankFacade; });\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/utils */ \"./src/internal/utils/utils.ts\");\n/* harmony import */ var _App_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @App/config */ \"./src/config.ts\");\n/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../application */ \"./src/internal/application.ts\");\n\r\n\r\n\r\nvar PushAnswer = /** @class */ (function () {\r\n    function PushAnswer() {\r\n    }\r\n    PushAnswer.prototype.Equal = function (content1, content2) {\r\n        return content1 == content2;\r\n    };\r\n    return PushAnswer;\r\n}());\r\n\r\nvar topicStatusMap = new Map();\r\ntopicStatusMap.set(\"ok\", \"搜索成功\").set(\"random\", \"随机答案\").set(\"no_support_random\", \"不支持的随机答案类型\").set(\"no_answer\", \"题库中没有搜索到答案\").set(\"no_match\", \"题库中没有符合的答案\");\r\nvar questionStatusMap = new Map();\r\nquestionStatusMap.set(\"success\", \"搜索成功\").set(\"network\", \"题库网络错误\").set(\"incomplete\", \"题库不全\").set(\"processing\", \"搜索中...\");\r\nfunction TopicStatusString(status) {\r\n    return topicStatusMap.get(status) || \"未知错误\";\r\n}\r\nfunction QuestionStatusString(status) {\r\n    return questionStatusMap.get(status) || \"未知错误\";\r\n}\r\nfunction SwitchTopicType(title) {\r\n    switch (title) {\r\n        case \"单选题\": {\r\n            return 1;\r\n        }\r\n        case \"多选题\": {\r\n            return 2;\r\n        }\r\n        case \"判断题\": {\r\n            return 3;\r\n        }\r\n        case \"填空题\": {\r\n            return 4;\r\n        }\r\n        default: {\r\n            return null;\r\n        }\r\n    }\r\n}\r\n// 小工具题库\r\nvar ToolsQuestionBank = /** @class */ (function () {\r\n    function ToolsQuestionBank(platform, info) {\r\n        this.platform = platform;\r\n        this.info = info;\r\n    }\r\n    ToolsQuestionBank.prototype.SetInfo = function (info) {\r\n        this.info = info;\r\n    };\r\n    ToolsQuestionBank.prototype.GetInfo = function () {\r\n        return encodeURIComponent(JSON.stringify(this.info));\r\n    };\r\n    ToolsQuestionBank.prototype.Answer = function (topic, resolve) {\r\n        var _this = this;\r\n        _application__WEBPACK_IMPORTED_MODULE_2__[\"Application\"].App.log.Debug(\"答案查询\", topic);\r\n        var num = 10;\r\n        var answer = new Array();\r\n        var retStatus = \"success\";\r\n        var next = function (index) {\r\n            var body = \"info=\" + _this.GetInfo() + \"&\";\r\n            var t = index;\r\n            for (; t < index + num && t < topic.length; t++) {\r\n                var val = topic[t];\r\n                body += \"topic[\" + (t - index) + \"]=\" + encodeURIComponent((val.topic)) + \"&type[\" + (t - index) + \"]=\" + val.type + \"&\";\r\n            }\r\n            _utils_utils__WEBPACK_IMPORTED_MODULE_0__[\"HttpUtils\"].HttpPost(_App_config__WEBPACK_IMPORTED_MODULE_1__[\"SystemConfig\"].url + \"v2/answer?platform=\" + _this.platform, body, {\r\n                json: true,\r\n                success: function (result) {\r\n                    var status = \"success\";\r\n                    var tmpResult = new Array();\r\n                    for (var i = 0; i < result.length; i++) {\r\n                        if (result[i].result == undefined || result[i].result.length <= 0) {\r\n                            tmpResult.push({\r\n                                index: index + result[i].index,\r\n                                topic: result[i].topic,\r\n                                type: -1,\r\n                                status: \"no_answer\",\r\n                                answers: null,\r\n                                correct: null,\r\n                                Equal: _this.Equal,\r\n                            });\r\n                            status = \"incomplete\";\r\n                            continue;\r\n                        }\r\n                        var val = result[i].result[0];\r\n                        tmpResult.push({\r\n                            index: index + result[i].index,\r\n                            topic: val.topic,\r\n                            type: val.type,\r\n                            correct: val.correct,\r\n                            status: \"ok\",\r\n                            Equal: _this.Equal,\r\n                        });\r\n                    }\r\n                    answer = answer.concat(tmpResult);\r\n                    if (status != \"success\") {\r\n                        retStatus = status;\r\n                    }\r\n                    resolve({ status: \"processing\", answer: tmpResult });\r\n                    if (t < topic.length) {\r\n                        next(t);\r\n                    }\r\n                    else {\r\n                        return resolve({ status: retStatus, answer: answer });\r\n                    }\r\n                },\r\n                error: function () {\r\n                    return resolve({ status: \"network\", answer: answer });\r\n                }\r\n            });\r\n        };\r\n        next(0);\r\n    };\r\n    ToolsQuestionBank.prototype.Push = function (answer) {\r\n        var _this = this;\r\n        return new Promise(function (resolve) {\r\n            _application__WEBPACK_IMPORTED_MODULE_2__[\"Application\"].App.log.Debug(\"采集提交\", answer);\r\n            _utils_utils__WEBPACK_IMPORTED_MODULE_0__[\"HttpUtils\"].HttpPost(_App_config__WEBPACK_IMPORTED_MODULE_1__[\"SystemConfig\"].url + \"answer?platform=\" + _this.platform, \"info=\" + _this.GetInfo() + \"&data=\" + encodeURIComponent(JSON.stringify(answer)), {\r\n                json: true,\r\n                success: function (result) {\r\n                    _application__WEBPACK_IMPORTED_MODULE_2__[\"Application\"].App.log.Info(\"答案自动记录成功,成功获得\" + result.add_token_num + \"个打码数,剩余数量:\" + result.token_num);\r\n                    resolve(\"success\");\r\n                },\r\n                error: function () {\r\n                    resolve(\"network\");\r\n                }\r\n            });\r\n        });\r\n    };\r\n    ToolsQuestionBank.prototype.Equal = function (content1, content2) {\r\n        return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__[\"removeHTML\"])(content1) == Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__[\"removeHTML\"])(content2);\r\n    };\r\n    ToolsQuestionBank.prototype.CheckCourse = function (info) {\r\n        var _this = this;\r\n        return new Promise(function (resolve) {\r\n            info = info || [_this.info];\r\n            _utils_utils__WEBPACK_IMPORTED_MODULE_0__[\"HttpUtils\"].HttpPost(_App_config__WEBPACK_IMPORTED_MODULE_1__[\"SystemConfig\"].url + \"v2/check?platform=\" + _this.platform, \"info=\" + encodeURIComponent(JSON.stringify(info)), {\r\n                success: function () {\r\n                    //TODO:课程题目数量\r\n                    resolve(0);\r\n                }, error: function () {\r\n                    resolve(-1);\r\n                }\r\n            });\r\n            resolve();\r\n        });\r\n    };\r\n    return ToolsQuestionBank;\r\n}());\r\n\r\nvar ToolsQuestionBankFacade = /** @class */ (function () {\r\n    function ToolsQuestionBankFacade(platform, info) {\r\n        if (typeof platform == \"string\") {\r\n            this.bank = new ToolsQuestionBank(platform, info);\r\n        }\r\n        else {\r\n            this.bank = platform;\r\n        }\r\n        this.question = new Array();\r\n    }\r\n    ToolsQuestionBankFacade.prototype.ClearQuestion = function () {\r\n        this.question = new Array();\r\n    };\r\n    ToolsQuestionBankFacade.prototype.AddQuestion = function (q) {\r\n        this.question.push(q);\r\n    };\r\n    ToolsQuestionBankFacade.prototype.Answer = function (callback) {\r\n        var _this = this;\r\n        var topic = new Array();\r\n        this.question.forEach(function (val) {\r\n            var type = val.GetType();\r\n            if (type == -1) {\r\n                return;\r\n            }\r\n            topic.push({\r\n                topic: (val.GetTopic()),\r\n                type: type,\r\n            });\r\n        });\r\n        var status = \"success\";\r\n        this.bank.Answer(topic, function (ret) {\r\n            if (ret.status != \"processing\") {\r\n                _application__WEBPACK_IMPORTED_MODULE_2__[\"Application\"].App.log.Debug(\"题库返回\", ret);\r\n                if (ret.status != \"success\" || status == \"success\") {\r\n                    return callback(ret.status);\r\n                }\r\n                return callback(status);\r\n            }\r\n            for (var i = 0; i < ret.answer.length; i++) {\r\n                var answer = ret.answer[i];\r\n                var question = _this.question[answer.index];\r\n                var tmpStatus = answer.status;\r\n                if (answer.status == \"no_answer\") {\r\n                    status = _this.randAnswer(status, tmpStatus, question);\r\n                    continue;\r\n                }\r\n                if (answer.type != question.GetType()) {\r\n                    tmpStatus = \"no_match\";\r\n                }\r\n                else {\r\n                    tmpStatus = question.Fill(answer);\r\n                }\r\n                if (tmpStatus == \"no_match\") {\r\n                    status = _this.randAnswer(status, tmpStatus, question);\r\n                    continue;\r\n                }\r\n                question.SetStatus(tmpStatus);\r\n            }\r\n        });\r\n    };\r\n    ToolsQuestionBankFacade.prototype.randAnswer = function (status, tmpStatus, question) {\r\n        if (_application__WEBPACK_IMPORTED_MODULE_2__[\"Application\"].App.config.rand_answer) {\r\n            tmpStatus = question.Random();\r\n        }\r\n        else {\r\n            status = \"incomplete\";\r\n        }\r\n        if (tmpStatus == \"no_support_random\") {\r\n            status = \"incomplete\";\r\n        }\r\n        question.SetStatus(tmpStatus);\r\n        return status;\r\n    };\r\n    ToolsQuestionBankFacade.prototype.Push = function (callback) {\r\n        var answer = new Array();\r\n        this.question.forEach(function (val) {\r\n            var correct = val.Correct();\r\n            if (correct == null || correct.correct == null || correct.type == -1) {\r\n                return;\r\n            }\r\n            correct.topic = correct.topic;\r\n            correct.answers = correct.answers;\r\n            correct.correct = correct.correct;\r\n            answer.push(correct);\r\n        });\r\n        this.bank.Push(answer).then(function (ret) {\r\n            _application__WEBPACK_IMPORTED_MODULE_2__[\"Application\"].App.log.Debug(\"题库返回\", ret);\r\n            return callback(ret);\r\n        });\r\n    };\r\n    ToolsQuestionBankFacade.prototype.dealOption = function (options) {\r\n        for (var i = 0; i < options.length; i++) {\r\n            if (typeof options[i].content == \"string\") {\r\n                options[i].content = (options[i].content);\r\n            }\r\n        }\r\n        return options;\r\n    };\r\n    ToolsQuestionBankFacade.prototype.CheckCourse = function () {\r\n        return this.bank.CheckCourse();\r\n    };\r\n    return ToolsQuestionBankFacade;\r\n}());\r\n\r\n\n\n//# sourceURL=webpack:///./src/internal/app/question.ts?");

/***/ }),

/***/ "./src/internal/app/topic.ts":
/*!***********************************!*\
  !*** ./src/internal/app/topic.ts ***!
  \***********************************/
/*! exports provided: Topic */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Topic\", function() { return Topic; });\n/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../application */ \"./src/internal/application.ts\");\n/* harmony import */ var _App_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @App/config */ \"./src/config.ts\");\n\r\n\r\nvar Topic = /** @class */ (function () {\r\n    function Topic(content, answer) {\r\n        this.answer = answer;\r\n        this.context = content;\r\n    }\r\n    Topic.prototype.SetQueryQuestions = function (queryQuestions) {\r\n        this.queryQuestions = queryQuestions;\r\n    };\r\n    Topic.prototype.addQuestion = function () {\r\n        var _this = this;\r\n        var questions = this.queryQuestions.QueryQuestions();\r\n        this.answer.ClearQuestion();\r\n        questions.forEach(function (val) {\r\n            _this.answer.AddQuestion(val);\r\n        });\r\n    };\r\n    Topic.prototype.QueryAnswer = function () {\r\n        var _this = this;\r\n        return new Promise(function (resolve) {\r\n            if (_this.lock) {\r\n                return resolve(\"processing\");\r\n            }\r\n            _this.lock = true;\r\n            _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.log.Info(\"题目搜索中...\");\r\n            _this.addQuestion();\r\n            _this.answer.Answer(function (status) {\r\n                _this.lock = false;\r\n                resolve(status);\r\n                if (status == \"network\") {\r\n                    return _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.log.Error(\"题库无法访问,请查看:\" + _App_config__WEBPACK_IMPORTED_MODULE_1__[\"SystemConfig\"].url);\r\n                }\r\n                else if (status == \"incomplete\") {\r\n                    return _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.log.Warn(\"题库答案不全,请手动填写操作\");\r\n                }\r\n            });\r\n        });\r\n    };\r\n    Topic.prototype.CollectAnswer = function () {\r\n        var _this = this;\r\n        return new Promise(function (resolve) {\r\n            _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.log.Debug(\"收集题目答案\", _this.context);\r\n            _this.addQuestion();\r\n            _this.answer.Push(function (status) {\r\n                _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.log.Debug(\"采集答案返回\", status);\r\n                resolve();\r\n            });\r\n        });\r\n    };\r\n    return Topic;\r\n}());\r\n\r\n\n\n//# sourceURL=webpack:///./src/internal/app/topic.ts?");

/***/ }),

/***/ "./src/internal/application.ts":
/*!*************************************!*\
  !*** ./src/internal/application.ts ***!
  \*************************************/
/*! exports provided: Backend, Frontend, Content, AppName, Application */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Backend\", function() { return Backend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Frontend\", function() { return Frontend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Content\", function() { return Content; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AppName\", function() { return AppName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Application\", function() { return Application; });\n/* harmony import */ var _utils_message__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/message */ \"./src/internal/utils/message.ts\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/utils */ \"./src/internal/utils/utils.ts\");\n/* harmony import */ var _App_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @App/config */ \"./src/config.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\n\r\n\r\n\r\nvar Backend = \"backend\";\r\nvar Frontend = \"frontend\";\r\nvar Content = \"content\";\r\nvar AppName = \"cxmooc-tools\";\r\nvar Application = /** @class */ (function () {\r\n    function Application(runEnv, launcher, component) {\r\n        Application.app = this;\r\n        Application.runEnv = runEnv;\r\n        this.runEnvSwitch(runEnv);\r\n        this.launcher = launcher;\r\n        this.component = component;\r\n    }\r\n    Object.defineProperty(Application, \"App\", {\r\n        get: function () {\r\n            return Application.app;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(Application.prototype, \"debug\", {\r\n        get: function () {\r\n            return \"development\" == \"development\";\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(Application.prototype, \"prod\", {\r\n        get: function () {\r\n            return \"development\" == \"production\";\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(Application.prototype, \"config\", {\r\n        get: function () {\r\n            return this.component.get(\"config\");\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(Application.prototype, \"log\", {\r\n        get: function () {\r\n            return this.component.get(\"logger\");\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Application.prototype.run = function () {\r\n        this.launcher.start();\r\n    };\r\n    Object.defineProperty(Application.prototype, \"IsFrontend\", {\r\n        get: function () {\r\n            return Application.IsFrontend;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(Application.prototype, \"IsBackend\", {\r\n        get: function () {\r\n            return Application.IsBackend;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(Application.prototype, \"IsContent\", {\r\n        get: function () {\r\n            return Application.IsContent;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Application.prototype.runEnvSwitch = function (env) {\r\n        switch (env) {\r\n            case Frontend:\r\n                Application.IsFrontend = true;\r\n                break;\r\n            case Backend:\r\n                Application.IsBackend = true;\r\n                break;\r\n            case Content:\r\n                Application.IsContent = true;\r\n                break;\r\n        }\r\n        ;\r\n    };\r\n    Object.defineProperty(Application.prototype, \"Client\", {\r\n        get: function () {\r\n            if (Application.IsFrontend) {\r\n                return Object(_utils_message__WEBPACK_IMPORTED_MODULE_0__[\"NewChromeClientMessage\"])(AppName);\r\n            }\r\n            return Object(_utils_message__WEBPACK_IMPORTED_MODULE_0__[\"NewExtensionClientMessage\"])(AppName);\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Application.CheckUpdate = function (callback) {\r\n        if (Application.IsContent) {\r\n            chrome.storage.local.get([\"version\", \"enforce\", \"hotversion\", \"url\"], function (item) {\r\n                return __awaiter(this, void 0, void 0, function () {\r\n                    return __generator(this, function (_a) {\r\n                        switch (_a.label) {\r\n                            case 0: return [4 /*yield*/, callback((_App_config__WEBPACK_IMPORTED_MODULE_2__[\"SystemConfig\"].version < item.version), item)];\r\n                            case 1:\r\n                                _a.sent();\r\n                                return [2 /*return*/];\r\n                        }\r\n                    });\r\n                });\r\n            });\r\n            return;\r\n        }\r\n        _utils_utils__WEBPACK_IMPORTED_MODULE_1__[\"HttpUtils\"].HttpGet(_App_config__WEBPACK_IMPORTED_MODULE_2__[\"SystemConfig\"].url + \"update?ver=\" + _App_config__WEBPACK_IMPORTED_MODULE_2__[\"SystemConfig\"].version, {\r\n            json: true,\r\n            success: function (json) {\r\n                return __awaiter(this, void 0, void 0, function () {\r\n                    var data;\r\n                    return __generator(this, function (_a) {\r\n                        switch (_a.label) {\r\n                            case 0:\r\n                                data = {\r\n                                    version: json.version,\r\n                                    url: json.url,\r\n                                    enforce: json.enforce,\r\n                                    hotversion: json.hotversion,\r\n                                    injection: json.injection,\r\n                                };\r\n                                chrome.storage.local.set(data);\r\n                                return [4 /*yield*/, callback((_App_config__WEBPACK_IMPORTED_MODULE_2__[\"SystemConfig\"].version < data.version), data)];\r\n                            case 1:\r\n                                _a.sent();\r\n                                return [2 /*return*/];\r\n                        }\r\n                    });\r\n                });\r\n            }, error: function () {\r\n                return __awaiter(this, void 0, void 0, function () {\r\n                    return __generator(this, function (_a) {\r\n                        switch (_a.label) {\r\n                            case 0: return [4 /*yield*/, callback(false, undefined)];\r\n                            case 1:\r\n                                _a.sent();\r\n                                return [2 /*return*/];\r\n                        }\r\n                    });\r\n                });\r\n            }\r\n        });\r\n    };\r\n    return Application;\r\n}());\r\n\r\n\n\n//# sourceURL=webpack:///./src/internal/application.ts?");

/***/ }),

/***/ "./src/internal/utils/config.ts":
/*!**************************************!*\
  !*** ./src/internal/utils/config.ts ***!
  \**************************************/
/*! exports provided: ChromeConfigItems, NewBackendConfig, NewFrontendGetConfig */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChromeConfigItems\", function() { return ChromeConfigItems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NewBackendConfig\", function() { return NewBackendConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NewFrontendGetConfig\", function() { return NewFrontendGetConfig; });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/internal/utils/utils.ts\");\n/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../application */ \"./src/internal/application.ts\");\n\r\n\r\nvar ChromeConfigItems = /** @class */ (function () {\r\n    function ChromeConfigItems(getConfig) {\r\n        this.getConfig = getConfig;\r\n    }\r\n    ChromeConfigItems.prototype.GetConfig = function (key) {\r\n        return this.getConfig.GetConfig(key);\r\n    };\r\n    ChromeConfigItems.prototype.Watch = function (key, callback) {\r\n        this.getConfig.Watch(key, callback);\r\n    };\r\n    ChromeConfigItems.prototype.bool = function (val) {\r\n        if (typeof val == \"boolean\") {\r\n            return val;\r\n        }\r\n        return val == \"true\";\r\n    };\r\n    Object.defineProperty(ChromeConfigItems.prototype, \"super_mode\", {\r\n        get: function () {\r\n            return this.bool(this.getConfig.GetConfig(\"super_mode\"));\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ChromeConfigItems.prototype, \"vtoken\", {\r\n        get: function () {\r\n            return this.getConfig.GetConfig(\"vtoken\");\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ChromeConfigItems.prototype, \"rand_answer\", {\r\n        get: function () {\r\n            return this.bool(this.getConfig.GetConfig(\"rand_answer\"));\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ChromeConfigItems.prototype, \"auto\", {\r\n        get: function () {\r\n            return this.bool(this.getConfig.GetConfig(\"auto\"));\r\n        },\r\n        set: function (val) {\r\n            localStorage[\"auto\"] = val;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ChromeConfigItems.prototype, \"video_mute\", {\r\n        get: function () {\r\n            return this.bool(this.getConfig.GetConfig(\"video_mute\"));\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ChromeConfigItems.prototype, \"answer_ignore\", {\r\n        get: function () {\r\n            return this.bool(this.getConfig.GetConfig(\"answer_ignore\"));\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ChromeConfigItems.prototype, \"video_cdn\", {\r\n        get: function () {\r\n            return this.getConfig.GetConfig(\"video_cdn\");\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ChromeConfigItems.prototype, \"video_multiple\", {\r\n        get: function () {\r\n            return this.getConfig.GetConfig(\"video_multiple\");\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ChromeConfigItems.prototype, \"interval\", {\r\n        get: function () {\r\n            var interval = (this.getConfig.GetConfig(\"interval\") || 0.1) * 100;\r\n            return Math.floor(Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"randNumber\"])(interval - interval / 2, interval + interval / 2)) / 100;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    return ChromeConfigItems;\r\n}());\r\n\r\n// 后台环境中使用\r\nfunction NewBackendConfig() {\r\n    return new backendConfig();\r\n}\r\nvar backendConfig = /** @class */ (function () {\r\n    function backendConfig() {\r\n    }\r\n    backendConfig.prototype.GetConfig = function (key) {\r\n        return new Promise(function (resolve) { return (chrome.storage.sync.get(key, function (value) {\r\n            if (value.hasOwnProperty(key)) {\r\n                resolve(value[key]);\r\n            }\r\n            else {\r\n                resolve(undefined);\r\n            }\r\n        })); });\r\n    };\r\n    backendConfig.prototype.Watch = function (key, callback) {\r\n        throw new Error(\"Method not implemented.\");\r\n    };\r\n    backendConfig.prototype.SetConfig = function (key, val) {\r\n        return new Promise(function (resolve) {\r\n            var info = {};\r\n            info[key] = val;\r\n            chrome.storage.sync.set(info, function () {\r\n                chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {\r\n                    chrome.tabs.sendMessage(tabs[0].id, { type: \"cxconfig\", key: key, value: val });\r\n                });\r\n                resolve();\r\n            });\r\n        });\r\n    };\r\n    return backendConfig;\r\n}());\r\n// 前端环境使用\r\nfunction NewFrontendGetConfig() {\r\n    return new frontendGetConfig();\r\n}\r\nvar frontendGetConfig = /** @class */ (function () {\r\n    function frontendGetConfig() {\r\n        window.addEventListener('message', function (event) {\r\n            if (event.data.type && event.data.type == \"cxconfig\") {\r\n                _application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.log.Info(\"配置更新:\" + event.data.key + \"=\" + event.data.value);\r\n                localStorage[event.data.key] = event.data.value;\r\n            }\r\n        });\r\n    }\r\n    frontendGetConfig.prototype.GetConfig = function (key) {\r\n        return localStorage[key];\r\n    };\r\n    frontendGetConfig.prototype.Watch = function (key, callback) {\r\n        var _this = this;\r\n        if (typeof key == \"string\") {\r\n            this.setWatchMap(key, callback);\r\n            return;\r\n        }\r\n        key.forEach(function (val, index) {\r\n            _this.setWatchMap(val, callback);\r\n        });\r\n    };\r\n    frontendGetConfig.prototype.setWatchMap = function (key, callback) {\r\n        //TODO: 监控配置项更新\r\n    };\r\n    return frontendGetConfig;\r\n}());\r\n\n\n//# sourceURL=webpack:///./src/internal/utils/config.ts?");

/***/ }),

/***/ "./src/internal/utils/hook.ts":
/*!************************************!*\
  !*** ./src/internal/utils/hook.ts ***!
  \************************************/
/*! exports provided: Hook */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Hook\", function() { return Hook; });\n/* harmony import */ var _App_internal_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @App/internal/application */ \"./src/internal/application.ts\");\n\r\nvar Hook = /** @class */ (function () {\r\n    function Hook(func, context) {\r\n        this.context = context || window;\r\n        this.func = func;\r\n    }\r\n    Hook.prototype.Middleware = function (call) {\r\n        var name;\r\n        if (typeof this.func == \"string\") {\r\n            name = this.func;\r\n        }\r\n        else {\r\n            name = this.func.name;\r\n        }\r\n        var old = this.context[name];\r\n        this.context[name] = function () {\r\n            var args = [old];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i + 1] = arguments[_i];\r\n            }\r\n            return call.apply(this, args);\r\n        };\r\n    };\r\n    Hook.HookAjaxRespond = function (url, call) {\r\n        var _this = this;\r\n        if (!this.once) {\r\n            this.match_list = new Map();\r\n            var self_1 = this;\r\n            var hookXMLHttpRequest = new Hook(\"open\", _App_internal_application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].GlobalContext.XMLHttpRequest.prototype);\r\n            hookXMLHttpRequest.Middleware(function (next) {\r\n                var _this = this;\r\n                var args = [];\r\n                for (var _a = 1; _a < arguments.length; _a++) {\r\n                    args[_a - 1] = arguments[_a];\r\n                }\r\n                self_1.match_list.forEach(function (val, key) {\r\n                    if (args[1].indexOf(key) != -1) {\r\n                        Object.defineProperty(_this, \"responseText\", {\r\n                            configurable: true,\r\n                            get: function () {\r\n                                return val.call(this, args[1], this.response);\r\n                            }\r\n                        });\r\n                    }\r\n                });\r\n                return next.apply(this, args);\r\n            });\r\n            this.once = true;\r\n        }\r\n        if (typeof url == \"string\") {\r\n            this.match_list.set(url, call);\r\n        }\r\n        else {\r\n            url.forEach(function (v) {\r\n                _this.match_list.set(v, call);\r\n            });\r\n        }\r\n    };\r\n    return Hook;\r\n}());\r\n\r\n\n\n//# sourceURL=webpack:///./src/internal/utils/hook.ts?");

/***/ }),

/***/ "./src/internal/utils/log.ts":
/*!***********************************!*\
  !*** ./src/internal/utils/log.ts ***!
  \***********************************/
/*! exports provided: ConsoleLog, PageLog, EmptyLog */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConsoleLog\", function() { return ConsoleLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PageLog\", function() { return PageLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EmptyLog\", function() { return EmptyLog; });\n/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../application */ \"./src/internal/application.ts\");\n/* harmony import */ var _views_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../views/common */ \"./src/views/common.ts\");\n/* harmony import */ var _views_common__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_views_common__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @App/internal/utils/utils */ \"./src/internal/utils/utils.ts\");\nvar __spreadArrays = (undefined && undefined.__spreadArrays) || function () {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\n\r\n\r\nvar ConsoleLog = /** @class */ (function () {\r\n    function ConsoleLog() {\r\n    }\r\n    ConsoleLog.prototype.getNowTime = function () {\r\n        var time = new Date();\r\n        return time.getHours() + \":\" + time.getMinutes() + \":\" + time.getSeconds();\r\n    };\r\n    ConsoleLog.prototype.Debug = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.debug && console.info.apply(console, __spreadArrays([\"[debug\", this.getNowTime(), \"]\"], args));\r\n        return this;\r\n    };\r\n    ConsoleLog.prototype.Info = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.debug && console.info.apply(console, __spreadArrays([\"[info\", this.getNowTime(), \"]\"], args));\r\n        return this;\r\n    };\r\n    ConsoleLog.prototype.Warn = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        console.warn.apply(console, __spreadArrays([\"[warn\", this.getNowTime(), \"]\"], args));\r\n        return this;\r\n    };\r\n    ConsoleLog.prototype.Error = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        console.error.apply(console, __spreadArrays([\"[error\", this.getNowTime(), \"]\"], args));\r\n        return this;\r\n    };\r\n    ConsoleLog.prototype.Fatal = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        console.error.apply(console, __spreadArrays([\"[fatal\", this.getNowTime(), \"]\"], args));\r\n        return this;\r\n    };\r\n    return ConsoleLog;\r\n}());\r\n\r\nvar PageLog = /** @class */ (function () {\r\n    function PageLog() {\r\n        var _this = this;\r\n        this.el = undefined;\r\n        window.addEventListener(\"load\", function () {\r\n            _this.div = document.createElement(\"div\");\r\n            // 主要布局\r\n            _this.div.innerHTML = \"\\n            <div class=\\\"head\\\"> \\n               <span>\\u5C0F\\u5DE5\\u5177\\u901A\\u77E5\\u6761</span> \\n               <label class=\\\"switch\\\" style=\\\"width:90px\\\">\\n                  <input class=\\\"checkbox-input\\\" id=\\\"checkbox\\\" type=\\\"checkbox\\\" checked=\\\"checked\\\">\\n                  <label class=\\\"checkbox\\\" for=\\\"checkbox\\\"></label>\\n                  <span>\\u684C\\u9762\\u901A\\u77E5</span>\\n               </label>\\n               <span class=\\\"close\\\" style=\\\"float:right; cursor:pointer; margin-right:5px;\\\">x</span>\\n            </div>\\n            <div class=\\\"main\\\">\\n               <div class=\\\"tools-notice-content\\\"></div>\\n            </div>\\n            \";\r\n            _this.div.className = \"tools-logger-panel\";\r\n            document.body.appendChild(_this.div);\r\n            _this.el = _this.div.querySelector(\".tools-notice-content\");\r\n            _this.div.querySelector(\".close\").onclick = function () {\r\n                _this.el = undefined;\r\n                _this.div.remove();\r\n            };\r\n            var checkbox = _this.div.querySelector(\"#checkbox\");\r\n            localStorage[\"is_notify\"] = localStorage[\"is_notify\"] || \"true\";\r\n            checkbox.checked = localStorage[\"is_notify\"] == \"true\";\r\n            if (!checkbox.checked) {\r\n                checkbox.removeAttribute(\"checked\");\r\n            }\r\n            checkbox.addEventListener(\"change\", function () {\r\n                localStorage[\"is_notify\"] = this.checked;\r\n            });\r\n            setTimeout(function () {\r\n                _this.Info(\"233\");\r\n            }, 1000);\r\n        });\r\n    }\r\n    PageLog.prototype.getNowTime = function () {\r\n        var time = new Date();\r\n        return time.getHours() + \":\" + time.getMinutes() + \":\" + time.getSeconds();\r\n    };\r\n    PageLog.prototype.first = function (text, color, background) {\r\n        var new_log = document.createElement(\"div\");\r\n        new_log.innerHTML = \"\\n                <div class=\\\"log\\\" style=\\\"border-color: \" + background + \"; background-color: \" + background + \";\\\">\\n                    <p><span style=\\\"color:\" + color + \";\\\">\" + text + \"</span></p>\\n                </div>\\n            \";\r\n        //插入第一个元素前\r\n        var first = document.getElementsByClassName(\"tools-notice-content\")[0].getElementsByTagName(\"div\");\r\n        document.querySelector(\".tools-notice-content\").insertBefore(new_log, first[0]);\r\n    };\r\n    PageLog.prototype.toStr = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        var text = \"\";\r\n        for (var i = 0; i < args.length; i++) {\r\n            if (typeof args[i] == \"object\") {\r\n                text += JSON.stringify(args[i]) + \"\\n\";\r\n            }\r\n            else {\r\n                text += args[i] + \"\\n\";\r\n            }\r\n        }\r\n        return text.substring(0, text.length - 1);\r\n    };\r\n    PageLog.prototype.Debug = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        console.info.apply(console, __spreadArrays([\"[debug\", this.getNowTime(), \"]\"], args));\r\n        return this;\r\n    };\r\n    PageLog.prototype.Info = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        var text = this.toStr.apply(this, args);\r\n        // 判断选中状态是否发送桌面通知\r\n        if (this.el) {\r\n            this.first(text, \"#409EFF\", \"rgba(121, 187, 255, 0.2)\");\r\n        }\r\n        else {\r\n            console.info.apply(console, __spreadArrays([\"[info\", this.getNowTime(), \"]\"], args));\r\n        }\r\n        return this;\r\n    };\r\n    PageLog.prototype.Warn = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        var text = this.toStr.apply(this, args);\r\n        if (this.el) {\r\n            this.first(text, \"#5C3C00\", \"rgba(250, 236, 216, 0.4)\");\r\n        }\r\n        else {\r\n            console.warn.apply(console, __spreadArrays([\"[warn\", this.getNowTime(), \"]\"], args));\r\n        }\r\n        if (document.hidden && localStorage[\"is_notify\"] == \"true\") {\r\n            Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_2__[\"Noifications\"])({\r\n                title: \"超星慕课小工具\",\r\n                text: text + \"\\n3秒后自动关闭\",\r\n                timeout: 3000,\r\n            });\r\n        }\r\n        return this;\r\n    };\r\n    PageLog.prototype.Error = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        var text = this.toStr.apply(this, args);\r\n        if (this.el) {\r\n            this.first(text, \"#ff7879\", \"rgba(253, 226, 226, 0.5)\");\r\n        }\r\n        else {\r\n            console.error.apply(console, __spreadArrays([\"[error\", this.getNowTime(), \"]\"], args));\r\n        }\r\n        if (localStorage[\"is_notify\"] == \"true\") {\r\n            Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_2__[\"Noifications\"])({\r\n                title: \"超星慕课小工具\",\r\n                text: text,\r\n            });\r\n        }\r\n        return this;\r\n    };\r\n    PageLog.prototype.Fatal = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        var text = this.toStr.apply(this, args);\r\n        if (this.el) {\r\n            this.first(text, \"#ff0000\", \"rgba(253,162,169,0.5)\");\r\n        }\r\n        else {\r\n            console.error.apply(console, __spreadArrays([\"[fatal\", this.getNowTime(), \"]\"], args));\r\n        }\r\n        Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_2__[\"Noifications\"])({\r\n            title: \"超星慕课小工具\",\r\n            text: text,\r\n        });\r\n        return this;\r\n    };\r\n    return PageLog;\r\n}());\r\n\r\nvar EmptyLog = /** @class */ (function () {\r\n    function EmptyLog() {\r\n    }\r\n    EmptyLog.prototype.Debug = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        return this;\r\n    };\r\n    EmptyLog.prototype.Info = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        return this;\r\n    };\r\n    EmptyLog.prototype.Warn = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        return this;\r\n    };\r\n    EmptyLog.prototype.Error = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        return this;\r\n    };\r\n    EmptyLog.prototype.Fatal = function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        return this;\r\n    };\r\n    return EmptyLog;\r\n}());\r\n\r\n\n\n//# sourceURL=webpack:///./src/internal/utils/log.ts?");

/***/ }),

/***/ "./src/internal/utils/message.ts":
/*!***************************************!*\
  !*** ./src/internal/utils/message.ts ***!
  \***************************************/
/*! exports provided: NewExtensionServerMessage, NewExtensionClientMessage, NewChromeServerMessage, NewChromeClientMessage */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NewExtensionServerMessage\", function() { return NewExtensionServerMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NewExtensionClientMessage\", function() { return NewExtensionClientMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NewChromeServerMessage\", function() { return NewChromeServerMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NewChromeClientMessage\", function() { return NewChromeClientMessage; });\nvar __extends = (undefined && undefined.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nfunction NewExtensionServerMessage(port) {\r\n    return new extensionServerMessage(port);\r\n}\r\nvar extensionServerMessage = /** @class */ (function () {\r\n    function extensionServerMessage(port) {\r\n        this.port = port;\r\n        this.recv();\r\n    }\r\n    extensionServerMessage.prototype.recv = function () {\r\n        var _this = this;\r\n        //监听消息\r\n        chrome.runtime.onConnect.addListener(function (port) {\r\n            if (port.name != _this.port) {\r\n                return;\r\n            }\r\n            port.onMessage.addListener(function (request) {\r\n                _this.acceptCallback(new extensionClientMessage(port), request);\r\n            });\r\n        });\r\n    };\r\n    extensionServerMessage.prototype.Accept = function (callback) {\r\n        this.acceptCallback = callback;\r\n    };\r\n    return extensionServerMessage;\r\n}());\r\nvar msg = /** @class */ (function () {\r\n    function msg(tag) {\r\n        this.tag = tag;\r\n    }\r\n    msg.prototype.Recv = function (callback) {\r\n        this.recvCallback = callback;\r\n    };\r\n    return msg;\r\n}());\r\n// 扩展中使用\r\nfunction NewExtensionClientMessage(tag) {\r\n    return new extensionClientMessage(tag);\r\n}\r\nvar extensionClientMessage = /** @class */ (function (_super) {\r\n    __extends(extensionClientMessage, _super);\r\n    function extensionClientMessage(param) {\r\n        var _this = this;\r\n        if (typeof param === 'string') {\r\n            _this = _super.call(this, param) || this;\r\n            _this.connect();\r\n        }\r\n        else {\r\n            _this.conn = param;\r\n        }\r\n        _this.recv();\r\n        return _this;\r\n    }\r\n    extensionClientMessage.prototype.connect = function () {\r\n        this.conn = chrome.runtime.connect({ name: this.tag });\r\n    };\r\n    extensionClientMessage.prototype.recv = function () {\r\n        var _this = this;\r\n        this.conn.onMessage.addListener(function (response) {\r\n            _this.recvCallback(response);\r\n        });\r\n    };\r\n    extensionClientMessage.prototype.Send = function (msg) {\r\n        this.conn.postMessage(msg);\r\n    };\r\n    return extensionClientMessage;\r\n}(msg));\r\n// 浏览器中使用\r\nfunction NewChromeServerMessage(tag) {\r\n    return new chromeServerMessage(tag);\r\n}\r\nvar chromeServerMessage = /** @class */ (function () {\r\n    function chromeServerMessage(tag) {\r\n        this.tag = tag;\r\n        this.recv();\r\n    }\r\n    chromeServerMessage.prototype.recv = function () {\r\n        var _this = this;\r\n        window.addEventListener('message', function (event) {\r\n            if (event.data.tag == _this.tag && event.data.conn_tag && event.data.source == \"client\") {\r\n                _this.acceptCallback(new chromeClientMessage(_this.tag, event.data.conn_tag), event.data.msg);\r\n            }\r\n        });\r\n    };\r\n    chromeServerMessage.prototype.Accept = function (callback) {\r\n        this.acceptCallback = callback;\r\n    };\r\n    return chromeServerMessage;\r\n}());\r\nfunction NewChromeClientMessage(tag) {\r\n    return new chromeClientMessage(tag);\r\n}\r\nvar chromeClientMessage = /** @class */ (function (_super) {\r\n    __extends(chromeClientMessage, _super);\r\n    function chromeClientMessage(tag, conn) {\r\n        var _this = this;\r\n        if (conn !== undefined) {\r\n            _this = _super.call(this, tag) || this;\r\n            _this.connTag = conn;\r\n            _this.source = \"server\";\r\n        }\r\n        else {\r\n            _this = _super.call(this, tag) || this;\r\n            _this.connect();\r\n            _this.source = \"client\";\r\n        }\r\n        return _this;\r\n    }\r\n    chromeClientMessage.prototype.connect = function () {\r\n        var _this = this;\r\n        this.connTag = Math.random();\r\n        window.addEventListener('message', function (event) {\r\n            if (event.data.tag == _this.tag && event.data.conn_tag == _this.connTag && event.data.source == \"server\") {\r\n                _this.recvCallback && _this.recvCallback(event.data.msg);\r\n            }\r\n        });\r\n    };\r\n    chromeClientMessage.prototype.Send = function (msg) {\r\n        window.postMessage({ tag: this.tag, conn_tag: this.connTag, msg: msg, source: this.source }, '*');\r\n    };\r\n    return chromeClientMessage;\r\n}(msg));\r\n\n\n//# sourceURL=webpack:///./src/internal/utils/message.ts?");

/***/ }),

/***/ "./src/internal/utils/utils.ts":
/*!*************************************!*\
  !*** ./src/internal/utils/utils.ts ***!
  \*************************************/
/*! exports provided: HttpUtils, Injected, InjectedBySrc, syncGetChromeStorageLocal, syncSetChromeStorageLocal, RemoveInjected, randNumber, createBtn, get, post, removeHTMLTag, removeHTML, substrex, dealHotVersion, protocolPrompt, getImageBase64, isPhone, Noifications */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HttpUtils\", function() { return HttpUtils; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Injected\", function() { return Injected; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InjectedBySrc\", function() { return InjectedBySrc; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncGetChromeStorageLocal\", function() { return syncGetChromeStorageLocal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncSetChromeStorageLocal\", function() { return syncSetChromeStorageLocal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveInjected\", function() { return RemoveInjected; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"randNumber\", function() { return randNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createBtn\", function() { return createBtn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return get; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"post\", function() { return post; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeHTMLTag\", function() { return removeHTMLTag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeHTML\", function() { return removeHTML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"substrex\", function() { return substrex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dealHotVersion\", function() { return dealHotVersion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"protocolPrompt\", function() { return protocolPrompt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageBase64\", function() { return getImageBase64; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPhone\", function() { return isPhone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Noifications\", function() { return Noifications; });\n/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../application */ \"./src/internal/application.ts\");\n/* harmony import */ var _App_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @App/config */ \"./src/config.ts\");\n\r\n\r\nvar HttpUtils = /** @class */ (function () {\r\n    function HttpUtils() {\r\n    }\r\n    HttpUtils.Request = function (info) {\r\n        if (_application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.IsBackend) {\r\n            fetch(info.url, info).then(function (body) {\r\n                if (info.json) {\r\n                    return body.json();\r\n                }\r\n                else {\r\n                    return body.text();\r\n                }\r\n            }).then(function (body) {\r\n                info.success && info.success(body);\r\n            }).catch(function () {\r\n                info.error && info.error();\r\n            });\r\n            return;\r\n        }\r\n        HttpUtils.crossDomainRequest(info);\r\n    };\r\n    HttpUtils.errorCode = function (ret) {\r\n        if (!ret.code) {\r\n            return false;\r\n        }\r\n        switch (ret.code) {\r\n            case -1: {\r\n                _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.log.Info(ret.msg);\r\n                break;\r\n            }\r\n            case -2: {\r\n                _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.log.Warn(ret.msg);\r\n                break;\r\n            }\r\n            default: {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    };\r\n    HttpUtils.crossDomainRequest = function (info) {\r\n        if (window.hasOwnProperty('GM_xmlhttpRequest')) {\r\n            //兼容油猴\r\n            info.data = info.body;\r\n            info.onreadystatechange = function (response) {\r\n                if (response.readyState == 4) {\r\n                    if (response.status == 200) {\r\n                        if (info.json) {\r\n                            var ret = JSON.parse(response.responseText);\r\n                            if (HttpUtils.errorCode(ret)) {\r\n                                info.error && info.error();\r\n                                return;\r\n                            }\r\n                            info.success && info.success(ret);\r\n                        }\r\n                        else {\r\n                            info.success && info.success(response.responseText);\r\n                        }\r\n                    }\r\n                    else {\r\n                        info.error && info.error();\r\n                    }\r\n                }\r\n            };\r\n            window.GM_xmlhttpRequest(info);\r\n        }\r\n        else {\r\n            var client = _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.Client;\r\n            client.Recv(function (data) {\r\n                if (data.code == 0) {\r\n                    if (info.json) {\r\n                        if (HttpUtils.errorCode(data.body)) {\r\n                            info.error && info.error();\r\n                            return;\r\n                        }\r\n                    }\r\n                    info.success && info.success(data.body);\r\n                }\r\n                else {\r\n                    info.error && info.error();\r\n                }\r\n            });\r\n            client.Send({\r\n                type: \"GM_xmlhttpRequest\", info: {\r\n                    url: info.url,\r\n                    method: info.method,\r\n                    json: info.json,\r\n                    body: info.body,\r\n                    headers: info.headers,\r\n                }\r\n            });\r\n        }\r\n    };\r\n    HttpUtils.HttpGet = function (url, info) {\r\n        info.url = url;\r\n        this.Request(info);\r\n    };\r\n    HttpUtils.HttpPost = function (url, body, info) {\r\n        info.url = url;\r\n        info.body = body;\r\n        if (!info.headers) {\r\n            info.headers = {};\r\n        }\r\n        info.headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n        info.headers[\"Authorization\"] = _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.config.vtoken;\r\n        info.headers[\"X-Version\"] = _App_config__WEBPACK_IMPORTED_MODULE_1__[\"SystemConfig\"].version + \"\";\r\n        info.method = \"POST\";\r\n        this.Request(info);\r\n    };\r\n    HttpUtils.SendRequest = function (client, data) {\r\n        if (!data.info) {\r\n            return;\r\n        }\r\n        var info = data.info;\r\n        if (_application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.IsBackend) {\r\n            info.success = function (body) {\r\n                client.Send({ body: body, code: 0 });\r\n            };\r\n            info.error = function () {\r\n                client.Send({ code: -1 });\r\n            };\r\n            HttpUtils.Request(info);\r\n        }\r\n        else {\r\n            // content 做转发\r\n            var extClient = _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.Client;\r\n            extClient.Send({ type: \"GM_xmlhttpRequest\", info: info });\r\n            extClient.Recv(function (data) {\r\n                client.Send(data);\r\n            });\r\n        }\r\n    };\r\n    return HttpUtils;\r\n}());\r\n\r\n/**\r\n * 通过源码注入js资源\r\n * @param doc\r\n * @param url\r\n * @constructor\r\n */\r\nfunction Injected(doc, source) {\r\n    var temp = doc.createElement('script');\r\n    temp.setAttribute('type', 'text/javascript');\r\n    temp.innerHTML = source;\r\n    temp.className = \"injected-js\";\r\n    doc.documentElement.appendChild(temp);\r\n    return temp;\r\n}\r\n/**\r\n * 通过源码注入js资源\r\n * @param doc\r\n * @param url\r\n * @constructor\r\n */\r\nfunction InjectedBySrc(doc, source) {\r\n    var temp = doc.createElement('script');\r\n    temp.setAttribute('type', 'text/javascript');\r\n    temp.src = source;\r\n    temp.className = \"injected-js\";\r\n    doc.documentElement.appendChild(temp);\r\n    return temp;\r\n}\r\nfunction syncGetChromeStorageLocal(key) {\r\n    return new Promise(function (resolve) { return (chrome.storage.local.get(key, function (value) {\r\n        resolve(value[key]);\r\n    })); });\r\n}\r\nfunction syncSetChromeStorageLocal(key, value) {\r\n    var tmp = {};\r\n    tmp[key] = value;\r\n    return new Promise(function (resolve) { return (chrome.storage.local.set(tmp, function () {\r\n        resolve();\r\n    })); });\r\n}\r\n/**\r\n * 移除注入js\r\n * @param doc\r\n */\r\nfunction RemoveInjected(doc) {\r\n    var resource = doc.getElementsByClassName(\"injected-js\");\r\n    for (var i = 0; i < resource.length; i++) {\r\n        resource[i].remove();\r\n    }\r\n}\r\nfunction randNumber(minNum, maxNum) {\r\n    return Math.floor(Math.random() * (maxNum - minNum + 1) + minNum);\r\n}\r\n/**\r\n * 创建一个按钮\r\n * @param title\r\n * @param description\r\n * @param id\r\n */\r\nfunction createBtn(title, description, className, id) {\r\n    if (description === void 0) { description = \"\"; }\r\n    if (className === void 0) { className = \"\"; }\r\n    if (id === void 0) { id = \"\"; }\r\n    var btn = document.createElement('button');\r\n    btn.innerText = title;\r\n    btn.id = id;\r\n    btn.title = description;\r\n    btn.className = className;\r\n    return btn;\r\n}\r\n/**\r\n * get请求\r\n * @param {*} url\r\n */\r\nfunction get(url, success) {\r\n    var xmlhttp = createRequest();\r\n    xmlhttp.open(\"GET\", url, true);\r\n    xmlhttp.onreadystatechange = function () {\r\n        if (this.readyState == 4) {\r\n            if (this.status == 200) {\r\n                success && success(this.responseText, this.resource);\r\n            }\r\n            else {\r\n                xmlhttp.errorCallback && xmlhttp.errorCallback(this);\r\n            }\r\n        }\r\n    };\r\n    xmlhttp.send();\r\n    return xmlhttp;\r\n}\r\n/**\r\n * post请求\r\n * @param {*} url\r\n * @param {*} data\r\n * @param {*} json\r\n */\r\nfunction post(url, data, json, success) {\r\n    if (json === void 0) { json = true; }\r\n    var xmlhttp = createRequest();\r\n    xmlhttp.open(\"POST\", url, true);\r\n    xmlhttp.setRequestHeader('Authorization', _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.config.vtoken || '');\r\n    if (json) {\r\n        xmlhttp.setRequestHeader(\"Content-Type\", \"application/json\");\r\n    }\r\n    else {\r\n        xmlhttp.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n    }\r\n    xmlhttp.onreadystatechange = function () {\r\n        if (this.readyState == 4) {\r\n            if (this.status == 200) {\r\n                success && success(this.responseText);\r\n            }\r\n            else {\r\n                xmlhttp.errorCallback && xmlhttp.errorCallback(this);\r\n            }\r\n        }\r\n    };\r\n    xmlhttp.send(data);\r\n    return xmlhttp;\r\n}\r\n/**\r\n * 创建http请求\r\n */\r\nfunction createRequest() {\r\n    var xmlhttp;\r\n    if (window.XMLHttpRequest) {\r\n        xmlhttp = new XMLHttpRequest();\r\n    }\r\n    else {\r\n        xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\r\n    }\r\n    xmlhttp.error = function (callback) {\r\n        xmlhttp.errorCallback = callback;\r\n        return xmlhttp;\r\n    };\r\n    xmlhttp.withCredentials = true;\r\n    return xmlhttp;\r\n}\r\n// 移除html tag\r\nfunction removeHTMLTag(html) {\r\n    var revHtml = /<.*?>/g;\r\n    html = html.replace(revHtml, '');\r\n    html = html.replace(/(^\\s+)|(\\s+$)/g, '');\r\n    return html;\r\n}\r\n/**\r\n * 去除html标签和处理中文\r\n * @param {string} html\r\n */\r\nfunction removeHTML(html) {\r\n    //先处理带src和href属性的标签\r\n    var srcReplace = /<img.*?src=\"(.*?)\".*?>/g;\r\n    html = html.replace(srcReplace, '$1');\r\n    srcReplace = /(<iframe.+?>)\\s+?(<\\/iframe>)/g;\r\n    html = html.replace(srcReplace, '$1$2');\r\n    srcReplace = /<(iframe|a).*?(src|href)=\"(.*?)\".*?>(.*?)<\\/(iframe|a)>/g;\r\n    html = html.replace(srcReplace, '$3$4');\r\n    var revHtml = /<.*?>/g;\r\n    html = html.replace(revHtml, '');\r\n    html = html.replace(/(^\\s+)|(\\s+$)/g, '');\r\n    html = dealSymbol(html);\r\n    //TODO:处理HTML符号\r\n    return html.replace(/&nbsp;/g, ' ').replace(/&quot;/g, \"\\\"\").replace(/&amp;/g, '&').trim();\r\n}\r\n/**\r\n * 处理符号\r\n * @param topic\r\n */\r\nfunction dealSymbol(topic) {\r\n    topic = topic.replace(/,/g, ',');\r\n    topic = topic.replace(/(/g, '(');\r\n    topic = topic.replace(/)/g, ')');\r\n    topic = topic.replace(/?/g, '?');\r\n    topic = topic.replace(/:/g, ':');\r\n    topic = topic.replace(/。/g, '.');\r\n    topic = topic.replace(/[“”]/g, '\"');\r\n    return topic;\r\n}\r\n/**\r\n * 取中间文本\r\n * @param str\r\n * @param left\r\n * @param right\r\n */\r\nfunction substrex(str, left, right) {\r\n    var leftPos = str.indexOf(left) + left.length;\r\n    var rightPos = str.indexOf(right, leftPos);\r\n    return str.substring(leftPos, rightPos);\r\n}\r\nfunction dealHotVersion(hotversion) {\r\n    hotversion = hotversion.substring(0, hotversion.indexOf(\".\") + 1) + hotversion.substring(hotversion.indexOf(\".\") + 1).replace(\".\", \"\");\r\n    return Number(hotversion);\r\n}\r\nfunction protocolPrompt(content, key, keyword) {\r\n    keyword = keyword || \"yes\";\r\n    if (localStorage[key] == undefined || localStorage[key] != 1) {\r\n        var msg = prompt(content + \"\\n如果以后不想再弹出本对话框并且同意请在下方填写\\\"\" + keyword + \"\\\"\");\r\n        if (msg === null)\r\n            return false;\r\n        if (keyword != msg) {\r\n            return false;\r\n        }\r\n        localStorage[key] = 1;\r\n    }\r\n    return true;\r\n}\r\nfunction getImageBase64(img, ext) {\r\n    var canvas = document.createElement(\"canvas\");\r\n    canvas.width = img.width;\r\n    canvas.height = img.height;\r\n    var ctx = canvas.getContext(\"2d\");\r\n    ctx.drawImage(img, 0, 0, img.width, img.height);\r\n    var dataURL = canvas.toDataURL(\"image/\" + ext, 0.75); //节省可怜的流量>_<,虽然好像没有啥\r\n    canvas = null;\r\n    return dataURL;\r\n}\r\nfunction isPhone() {\r\n    return /Android|iPhone/i.test(navigator.userAgent);\r\n}\r\nfunction Noifications(details) {\r\n    if (window.hasOwnProperty(\"GM_notification\")) {\r\n        window.GM_notification(details);\r\n    }\r\n    else {\r\n        var client = _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.Client;\r\n        client.Send({\r\n            type: \"GM_notification\", details: details,\r\n        });\r\n        _application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.Client.Send(details);\r\n    }\r\n}\r\n\n\n//# sourceURL=webpack:///./src/internal/utils/utils.ts?");

/***/ }),

/***/ "./src/mooc/chaoxing/utils.ts":
/*!************************************!*\
  !*** ./src/mooc/chaoxing/utils.ts ***!
  \************************************/
/*! exports provided: CssBtn, CreateNoteLine */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CssBtn\", function() { return CssBtn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CreateNoteLine\", function() { return CreateNoteLine; });\n/**\r\n * 美化按钮\r\n */\r\nfunction CssBtn(btn) {\r\n    btn.style.outline = 'none';\r\n    btn.style.border = '0';\r\n    btn.style.background = '#7d9d35';\r\n    btn.style.color = '#fff';\r\n    btn.style.borderRadius = '4px';\r\n    btn.style.padding = '2px 8px';\r\n    btn.style.cursor = 'pointer';\r\n    btn.style.fontSize = '12px';\r\n    btn.style.marginLeft = '4px';\r\n    btn.onmousemove = function () {\r\n        btn.style.boxShadow = '1px 1px 1px 1px #ccc';\r\n    };\r\n    btn.onmouseout = function () {\r\n        btn.style.boxShadow = '';\r\n    };\r\n    return btn;\r\n}\r\nfunction CreateNoteLine(text, label, append, after) {\r\n    var p = document.createElement(\"p\");\r\n    p.style.color = \"red\";\r\n    p.style.fontSize = \"14px\";\r\n    p.className = \"prompt-line-\" + label;\r\n    p.innerHTML = text;\r\n    if (append != undefined) {\r\n        append.append(p);\r\n    }\r\n    if (after != undefined) {\r\n        after.after(p);\r\n    }\r\n    return p;\r\n}\r\n\n\n//# sourceURL=webpack:///./src/mooc/chaoxing/utils.ts?");

/***/ }),

/***/ "./src/mooc/mooc.ts":
/*!**************************!*\
  !*** ./src/mooc/mooc.ts ***!
  \**************************/
/*! exports provided: mooc */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mooc\", function() { return mooc; });\n/* harmony import */ var _App_internal_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @App/internal/application */ \"./src/internal/application.ts\");\n\r\nvar mooc = /** @class */ (function () {\r\n    function mooc(moocFactory) {\r\n        this.moocFactory = moocFactory;\r\n    }\r\n    mooc.prototype.start = function () {\r\n        try {\r\n            var state = document.readyState;\r\n            _App_internal_application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.log.Debug(\"Start document state:\", state);\r\n            var mooc_1 = this.moocFactory.CreateMooc();\r\n            if (mooc_1 != null) {\r\n                mooc_1.Start();\r\n            }\r\n        }\r\n        catch (e) {\r\n            _App_internal_application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.log.Fatal(\"插件发生了一个致命错误:\", e);\r\n        }\r\n        //最小化警告\r\n        if (top == self) {\r\n            var isShow_1 = false;\r\n            document.addEventListener(\"visibilitychange\", function () {\r\n                if (document.hidden) {\r\n                    if (isShow_1) {\r\n                        return;\r\n                    }\r\n                    _App_internal_application__WEBPACK_IMPORTED_MODULE_0__[\"Application\"].App.log.Warn(\"请注意!最小化可能导致视频无法正常播放!允许切换窗口.\");\r\n                    isShow_1 = true;\r\n                }\r\n            });\r\n        }\r\n    };\r\n    return mooc;\r\n}());\r\n\r\n\n\n//# sourceURL=webpack:///./src/mooc/mooc.ts?");

/***/ }),

/***/ "./src/mooc/zhihuishu/exam.ts":
/*!************************************!*\
  !*** ./src/mooc/zhihuishu/exam.ts ***!
  \************************************/
/*! exports provided: ZhsExam */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZhsExam\", function() { return ZhsExam; });\n/* harmony import */ var _App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @App/internal/utils/utils */ \"./src/internal/utils/utils.ts\");\n/* harmony import */ var _views_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../views/common */ \"./src/views/common.ts\");\n/* harmony import */ var _views_common__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_views_common__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _App_internal_app_topic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @App/internal/app/topic */ \"./src/internal/app/topic.ts\");\n/* harmony import */ var _App_internal_app_question__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @App/internal/app/question */ \"./src/internal/app/question.ts\");\n/* harmony import */ var _chaoxing_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../chaoxing/utils */ \"./src/mooc/chaoxing/utils.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\n\r\n\r\n\r\n\r\n\r\n//TODO: 与超星一起整合优化\r\nvar ZhsExam = /** @class */ (function () {\r\n    function ZhsExam() {\r\n    }\r\n    ZhsExam.prototype.Start = function () {\r\n        var _this = this;\r\n        this.topic = new ExamTopic(document, new _App_internal_app_question__WEBPACK_IMPORTED_MODULE_3__[\"ToolsQuestionBankFacade\"](\"zhs\", {\r\n            refer: document.URL,\r\n            id: document.URL.match(/(checkHomework|dohomework)\\/(.*?)\\/(.*?)\\/(.*?)\\/(.*?)\\/(.*?)$/)[4],\r\n        }));\r\n        this.topic.SetQueryQuestions(new ExamQueryQuestion());\r\n        window.addEventListener(\"load\", function () {\r\n            setTimeout(function () {\r\n                document.oncontextmenu = function () {\r\n                };\r\n                document.oncopy = function () {\r\n                };\r\n                document.onpaste = function () {\r\n                };\r\n                document.onselectstart = function () {\r\n                };\r\n                if (document.querySelectorAll(\".examInfo.infoList.clearfix\").length <= 0) {\r\n                    _this.createBtn();\r\n                }\r\n                else {\r\n                    _this.topic.CollectAnswer();\r\n                }\r\n            }, 1000);\r\n        });\r\n    };\r\n    ZhsExam.prototype.createBtn = function () {\r\n        var el = document.querySelector(\".examPaper_partTit.mt20 ul\");\r\n        var btn = Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_0__[\"createBtn\"])(\"搜索答案\", \"点击搜索答案\", \"zhs-search-answer green\");\r\n        el.append(btn);\r\n        var self = this;\r\n        btn.onclick = function () {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var ret;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_0__[\"protocolPrompt\"])(\"你正准备使用智慧树答题功能,相应的我们需要你的正确答案,因为智慧树的机制问题,采集答案会导致无法重新作答,你是否愿意贡献你的答案?\\n* 本项选择不会影响你的正常使用(协议当前版本有效)\\n* 手动点击答题结果页面自动采集页面答案\\n* (功能其实还没完成,后续更新)\", \"zhs_answer_collect\", \"我同意\");\r\n                            btn.innerText = \"搜索中...\";\r\n                            return [4 /*yield*/, self.topic.QueryAnswer()];\r\n                        case 1:\r\n                            ret = _a.sent();\r\n                            btn.innerText = Object(_App_internal_app_question__WEBPACK_IMPORTED_MODULE_3__[\"QuestionStatusString\"])(ret);\r\n                            return [2 /*return*/, false];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n    };\r\n    return ZhsExam;\r\n}());\r\n\r\nvar ExamQueryQuestion = /** @class */ (function () {\r\n    function ExamQueryQuestion() {\r\n    }\r\n    ExamQueryQuestion.prototype.QueryQuestions = function () {\r\n        var _this = this;\r\n        var timu = document.querySelectorAll(\".examPaper_subject.mt20,.questionType\");\r\n        var ret = new Array();\r\n        timu.forEach(function (val) {\r\n            var el = val.querySelector(\".subject_type_annex .subject_type\");\r\n            var type = Object(_App_internal_app_question__WEBPACK_IMPORTED_MODULE_3__[\"SwitchTopicType\"])(Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_0__[\"substrex\"])(el.innerHTML, \"【\", \"】\"));\r\n            var question = _this.createQuestion(type, val);\r\n            ret.push(question);\r\n        });\r\n        return ret;\r\n    };\r\n    ExamQueryQuestion.prototype.createQuestion = function (type, el) {\r\n        switch (type) {\r\n            case 1:\r\n            case 2: {\r\n                return new ZhsSelectQuestion(el, type);\r\n            }\r\n            case 3: {\r\n                return new ZhsJudgeQuestion(el, type);\r\n            }\r\n            default: {\r\n                return new ZhsSelectQuestion(el, -1);\r\n            }\r\n        }\r\n    };\r\n    return ExamQueryQuestion;\r\n}());\r\nvar ZhsQuestion = /** @class */ (function () {\r\n    function ZhsQuestion(el, type) {\r\n        this.el = el;\r\n        this.type = type;\r\n    }\r\n    ZhsQuestion.prototype.GetType = function () {\r\n        return this.type;\r\n    };\r\n    ZhsQuestion.prototype.GetTopic = function () {\r\n        var el = this.el.querySelector(\".subject_type_describe.fl .subject_describe\");\r\n        return el.innerHTML;\r\n    };\r\n    ZhsQuestion.prototype.removeNotice = function () {\r\n        this.el.querySelectorAll(\".prompt-line-answer\").forEach(function (v) {\r\n            v.remove();\r\n        });\r\n    };\r\n    ZhsQuestion.prototype.addNotice = function (str) {\r\n        var el = this.el.querySelector(\".subject_node.mt10,.subject_node\");\r\n        Object(_chaoxing_utils__WEBPACK_IMPORTED_MODULE_4__[\"CreateNoteLine\"])(str, \"answer\", el);\r\n    };\r\n    ZhsQuestion.prototype.SetStatus = function (status) {\r\n        this.addNotice(Object(_App_internal_app_question__WEBPACK_IMPORTED_MODULE_3__[\"TopicStatusString\"])(status));\r\n    };\r\n    ZhsQuestion.prototype.options = function () {\r\n        return this.el.querySelectorAll(\".subject_node .nodeLab\");\r\n    };\r\n    ZhsQuestion.prototype.getOption = function (el) {\r\n        var tmpel = el.querySelector(\".mr10,span.mr5\");\r\n        return tmpel.innerText.substring(0, 1);\r\n    };\r\n    ZhsQuestion.prototype.click = function (el, content) {\r\n        var tmpel = el.querySelector(\"input\");\r\n        tmpel.parentElement.click();\r\n        this.addNotice(this.getOption(el) + \":\" + content);\r\n    };\r\n    ZhsQuestion.prototype.getContent = function (el) {\r\n        var tmpel = el.querySelector(\".node_detail.examquestions-answer.fl\");\r\n        return tmpel.innerHTML;\r\n    };\r\n    ZhsQuestion.prototype.defaultAnswer = function () {\r\n        var ret = new _App_internal_app_question__WEBPACK_IMPORTED_MODULE_3__[\"PushAnswer\"]();\r\n        ret.topic = this.GetTopic();\r\n        ret.type = this.GetType();\r\n        ret.correct = new Array();\r\n        ret.answers = new Array();\r\n        return ret;\r\n    };\r\n    ZhsQuestion.prototype.isCorrect = function () {\r\n        return this.el.querySelector(\".key_yes\") != null;\r\n    };\r\n    return ZhsQuestion;\r\n}());\r\nvar ZhsSelectQuestion = /** @class */ (function (_super) {\r\n    __extends(ZhsSelectQuestion, _super);\r\n    function ZhsSelectQuestion() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    ZhsSelectQuestion.prototype.Random = function () {\r\n        var options = this.options();\r\n        var pos = Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_0__[\"randNumber\"])(0, options.length - 1);\r\n        this.click(options[pos], this.getContent(options[pos]));\r\n        return \"random\";\r\n    };\r\n    ZhsSelectQuestion.prototype.Fill = function (s) {\r\n        var options = this.options();\r\n        for (var i = 0; i < options.length; i++) {\r\n            if (options[i].querySelector(\"input\").checked) {\r\n                options[i].querySelector(\"input\").parentElement.click();\r\n            }\r\n        }\r\n        var flag = false;\r\n        for (var i = 0; i < s.correct.length; i++) {\r\n            for (var j = 0; j < options.length; j++) {\r\n                if (s.Equal(this.getContent(options[j]), s.correct[i].content)) {\r\n                    this.click(options[j], s.correct[i].content);\r\n                    flag = true;\r\n                }\r\n            }\r\n        }\r\n        if (flag) {\r\n            return \"ok\";\r\n        }\r\n        return \"no_match\";\r\n    };\r\n    ZhsSelectQuestion.prototype.Correct = function () {\r\n        if (!this.isCorrect()) {\r\n            return null;\r\n        }\r\n        var ret = this.defaultAnswer();\r\n        var options = this.options();\r\n        for (var i = 0; i < options.length; i++) {\r\n            var option = {\r\n                option: this.getOption(options[i]),\r\n                content: this.getContent(options[i]),\r\n            };\r\n            ret.answers.push(option);\r\n            if (options[i].querySelector(\"input\").checked) {\r\n                ret.correct.push(option);\r\n            }\r\n        }\r\n        return ret;\r\n    };\r\n    return ZhsSelectQuestion;\r\n}(ZhsQuestion));\r\nvar ZhsJudgeQuestion = /** @class */ (function (_super) {\r\n    __extends(ZhsJudgeQuestion, _super);\r\n    function ZhsJudgeQuestion() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    ZhsJudgeQuestion.prototype.Random = function () {\r\n        var options = this.options();\r\n        this.click(options[Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_0__[\"randNumber\"])(0, 1)]);\r\n        return \"random\";\r\n    };\r\n    ZhsJudgeQuestion.prototype.click = function (el) {\r\n        el.querySelector(\"label > input,input\").click();\r\n        this.addNotice(this.getContent(el));\r\n    };\r\n    ZhsJudgeQuestion.prototype.Fill = function (answer) {\r\n        var options = this.options();\r\n        for (var i = 0; i < options.length; i++) {\r\n            if (this.getContent(options[i]) == (answer.correct[0].content ? \"对\" : \"错\")) {\r\n                this.click(options[i]);\r\n                break;\r\n            }\r\n        }\r\n        return \"ok\";\r\n    };\r\n    ZhsJudgeQuestion.prototype.Correct = function () {\r\n        if (!this.isCorrect()) {\r\n            return null;\r\n        }\r\n        var ret = this.defaultAnswer();\r\n        var answer = this.getContent(this.el.querySelector(\"input:checked\").parentElement.parentElement) == \"对\";\r\n        ret.correct.push({\r\n            option: answer,\r\n            content: answer,\r\n        });\r\n        return ret;\r\n    };\r\n    return ZhsJudgeQuestion;\r\n}(ZhsQuestion));\r\nvar ExamTopic = /** @class */ (function (_super) {\r\n    __extends(ExamTopic, _super);\r\n    function ExamTopic() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    ExamTopic.prototype.Init = function () {\r\n        return null;\r\n    };\r\n    ExamTopic.prototype.Submit = function () {\r\n        return null;\r\n    };\r\n    return ExamTopic;\r\n}(_App_internal_app_topic__WEBPACK_IMPORTED_MODULE_2__[\"Topic\"]));\r\n\n\n//# sourceURL=webpack:///./src/mooc/zhihuishu/exam.ts?");

/***/ }),

/***/ "./src/mooc/zhihuishu/platform.ts":
/*!****************************************!*\
  !*** ./src/mooc/zhihuishu/platform.ts ***!
  \****************************************/
/*! exports provided: ZhsPlatform */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZhsPlatform\", function() { return ZhsPlatform; });\n/* harmony import */ var _video__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./video */ \"./src/mooc/zhihuishu/video.ts\");\n/* harmony import */ var _exam__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./exam */ \"./src/mooc/zhihuishu/exam.ts\");\n\r\n\r\nvar ZhsPlatform = /** @class */ (function () {\r\n    function ZhsPlatform() {\r\n    }\r\n    ZhsPlatform.prototype.CreateMooc = function () {\r\n        var mooc = null;\r\n        if (document.URL.indexOf(\"studyh5.zhihuishu.com/videoStudy.html\") > 0) {\r\n            mooc = new _video__WEBPACK_IMPORTED_MODULE_0__[\"ZhsVideo\"]();\r\n        }\r\n        else if (document.URL.indexOf(\"zhihuishu.com/stuExamWeb.html\") > 0) {\r\n            mooc = new _exam__WEBPACK_IMPORTED_MODULE_1__[\"ZhsExam\"]();\r\n        }\r\n        return mooc;\r\n    };\r\n    return ZhsPlatform;\r\n}());\r\n\r\n\n\n//# sourceURL=webpack:///./src/mooc/zhihuishu/platform.ts?");

/***/ }),

/***/ "./src/mooc/zhihuishu/video.ts":
/*!*************************************!*\
  !*** ./src/mooc/zhihuishu/video.ts ***!
  \*************************************/
/*! exports provided: ZhsVideo */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZhsVideo\", function() { return ZhsVideo; });\n/* harmony import */ var _App_internal_utils_hook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @App/internal/utils/hook */ \"./src/internal/utils/hook.ts\");\n/* harmony import */ var _App_internal_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @App/internal/application */ \"./src/internal/application.ts\");\n/* harmony import */ var _views_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../views/common */ \"./src/views/common.ts\");\n/* harmony import */ var _views_common__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_views_common__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @App/internal/utils/utils */ \"./src/internal/utils/utils.ts\");\n\r\n\r\n\r\n\r\nvar ZhsVideo = /** @class */ (function () {\r\n    function ZhsVideo() {\r\n    }\r\n    ZhsVideo.prototype.Start = function () {\r\n        var _this = this;\r\n        this.hookAjax();\r\n        this.hook();\r\n        document.addEventListener(\"readystatechange\", function () {\r\n            _this.hook();\r\n        });\r\n        var timer = setInterval(function () {\r\n            try {\r\n                _this.start();\r\n                clearInterval(timer);\r\n            }\r\n            catch (e) {\r\n            }\r\n        }, 500);\r\n    };\r\n    ZhsVideo.prototype.createToolsBar = function () {\r\n        var _this = this;\r\n        var tools = document.createElement('div');\r\n        tools.className = \"entrance_div\";\r\n        tools.id = \"cxtools\";\r\n        var boomBtn = document.createElement(\"a\");\r\n        boomBtn.href = \"#\";\r\n        boomBtn.className = \"zhs-tools-btn\";\r\n        boomBtn.innerText = \"秒过视频\";\r\n        boomBtn.onclick = function () {\r\n            _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].GlobalContext.videoBoom(function () {\r\n            });\r\n        };\r\n        //TODO:优化,先这样把按钮弄出来\r\n        var li2 = document.createElement(\"li\");\r\n        var startBtn = document.createElement(\"a\");\r\n        startBtn.href = \"#\";\r\n        startBtn.className = \"zhs-tools-btn zhs-start-btn\";\r\n        startBtn.innerText = _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.config.auto ? \"暂停挂机\" : \"开始挂机\";\r\n        startBtn.onclick = function () {\r\n            if (startBtn.innerText == \"暂停挂机\") {\r\n                startBtn.innerText = \"开始挂机\";\r\n                localStorage[\"auto\"] = false;\r\n            }\r\n            else {\r\n                startBtn.innerText = \"暂停挂机\";\r\n                localStorage[\"auto\"] = true;\r\n                _this.play();\r\n            }\r\n        };\r\n        tools.appendChild(startBtn);\r\n        tools.appendChild(boomBtn);\r\n        console.log(document.querySelector(\".videotop_box.fl\").append(tools));\r\n    };\r\n    ZhsVideo.prototype.compile = function () {\r\n        var interval = _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.config.interval;\r\n        _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.log.Info(interval + \"分钟后自动切换下一节\");\r\n        clearTimeout(this.lastTimer);\r\n        this.lastTimer = setTimeout(function () {\r\n            var $ = _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].GlobalContext.$;\r\n            var next = $(\".clearfix.video.current_play\").next();\r\n            if (next.length == 0) {\r\n                next = $(\".clearfix.video.current_play\")\r\n                    .parents(\"ul.list,div\")\r\n                    .next(\"div,ul.list\")\r\n                    .find(\"li.video\");\r\n            }\r\n            if (next.length == 0) {\r\n                alert(\"刷课完成\");\r\n                return;\r\n            }\r\n            _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.config.auto && $(next[0]).click();\r\n        }, interval * 60000);\r\n    };\r\n    ZhsVideo.prototype.play = function () {\r\n        if (this.video) {\r\n            this.video.muted = _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.config.video_mute;\r\n            this.video.playbackRate = _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.config.video_multiple;\r\n            _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.config.auto && this.video.play();\r\n        }\r\n    };\r\n    ZhsVideo.prototype.start = function () {\r\n        var hookPlayerStarter = new _App_internal_utils_hook__WEBPACK_IMPORTED_MODULE_0__[\"Hook\"](\"createPlayer\", _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].GlobalContext.PlayerStarter);\r\n        var self = this;\r\n        hookPlayerStarter.Middleware(function (next) {\r\n            var args = [];\r\n            for (var _i = 1; _i < arguments.length; _i++) {\r\n                args[_i - 1] = arguments[_i];\r\n            }\r\n            self.createToolsBar();\r\n            _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.log.Info(\"视频开始加载\");\r\n            var hookPause = args[2].onPause;\r\n            var hookReady = args[2].onReady;\r\n            args[2].onReady = function () {\r\n                hookReady.apply(this);\r\n                self.video = document.querySelector(\"#vjs_container_html5_api\");\r\n                _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.config.auto && self.play();\r\n            };\r\n            args[2].hookPause = function () {\r\n                hookPause.apply(this);\r\n                _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.config.auto && self.video.play();\r\n            };\r\n            var innerTimer = setInterval(function () {\r\n                if (document.querySelectorAll(\".current_play .time_icofinish\").length > 0) {\r\n                    clearInterval(innerTimer);\r\n                    self.compile();\r\n                }\r\n            }, 2000);\r\n            return next.apply(this, args);\r\n        });\r\n        var timeSetInterval = new _App_internal_utils_hook__WEBPACK_IMPORTED_MODULE_0__[\"Hook\"](\"setInterval\", _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].GlobalContext);\r\n        timeSetInterval.Middleware(function (next) {\r\n            var args = [];\r\n            for (var _i = 1; _i < arguments.length; _i++) {\r\n                args[_i - 1] = arguments[_i];\r\n            }\r\n            _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.log.Debug(\"加速器启动\");\r\n            if (_App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.config.super_mode) {\r\n                args[1] = args[1] / _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.config.video_multiple;\r\n            }\r\n            return next.apply(this, args);\r\n        });\r\n    };\r\n    ZhsVideo.prototype.hookAjax = function () {\r\n        var hookXMLHttpRequest = new _App_internal_utils_hook__WEBPACK_IMPORTED_MODULE_0__[\"Hook\"](\"open\", _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].GlobalContext.XMLHttpRequest.prototype);\r\n        hookXMLHttpRequest.Middleware(function (next) {\r\n            var args = [];\r\n            for (var _i = 1; _i < arguments.length; _i++) {\r\n                args[_i - 1] = arguments[_i];\r\n            }\r\n            if (args[1].indexOf(\"popupAnswer/loadVideoPointerInfo\") >= 0) {\r\n                Object.defineProperty(this, \"responseText\", {\r\n                    get: function () {\r\n                        var retText = this.response.replace(/\"questionPoint\":\\[.*?\\],\"knowledgeCardDtos\"/gm, '\"questionPoint\":[],\"knowledgeCardDtos\"');\r\n                        return retText;\r\n                    }\r\n                });\r\n            }\r\n            var ret = next.apply(this, args);\r\n            return ret;\r\n        });\r\n    };\r\n    ZhsVideo.prototype.hook = function () {\r\n        if (document.readyState != \"interactive\") {\r\n            return;\r\n        }\r\n        var hookWebpack = new _App_internal_utils_hook__WEBPACK_IMPORTED_MODULE_0__[\"Hook\"](\"webpackJsonp\", _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].GlobalContext);\r\n        hookWebpack.Middleware(function (next) {\r\n            var args = [];\r\n            for (var _i = 1; _i < arguments.length; _i++) {\r\n                args[_i - 1] = arguments[_i];\r\n            }\r\n            try {\r\n                if (args[1][702]) {\r\n                    _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.log.Debug(\"video hook ok\", document.readyState);\r\n                    var old_1 = args[1][702];\r\n                    args[1][702] = function () {\r\n                        var ret = old_1.apply(this, arguments);\r\n                        var hookInitVideo = new _App_internal_utils_hook__WEBPACK_IMPORTED_MODULE_0__[\"Hook\"](\"initVideo\", arguments[1].default.methods);\r\n                        hookInitVideo.Middleware(function (next) {\r\n                            var _this = this;\r\n                            var args = [];\r\n                            for (var _i = 1; _i < arguments.length; _i++) {\r\n                                args[_i - 1] = arguments[_i];\r\n                            }\r\n                            _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].App.log.Debug(\"initVideo\");\r\n                            _App_internal_application__WEBPACK_IMPORTED_MODULE_1__[\"Application\"].GlobalContext.videoBoom = function (callback) {\r\n                                var timeStr = document.querySelector(\".nPlayTime .duration\").innerText;\r\n                                var time = 0;\r\n                                var temp = timeStr.match(/[\\d]+/gi);\r\n                                for (var i = 0; i < 3; i++) {\r\n                                    time += parseInt(temp[i]) * Math.pow(60, 2 - i);\r\n                                }\r\n                                time += Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_3__[\"randNumber\"])(20, 200);\r\n                                var tn = time;\r\n                                var a = _this.lessonId, r = _this.smallLessonId, s = [_this.recruitId, a, r, _this.lastViewVideoId, 1, _this.data.studyStatus, tn, time, timeStr], l = {\r\n                                    ev: _this.D26666.Z(s),\r\n                                    learningTokenId: Base64.encode(_this.preVideoInfo.studiedLessonDto.id),\r\n                                    uuid: Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_3__[\"substrex\"])(document.cookie, \"uuid%22%3A%22\", \"%22\"),\r\n                                    dateFormate: Date.parse(new Date()),\r\n                                };\r\n                                var postData = \"ev=\" + l.ev + \"&learningTokenId=\" + l.learningTokenId +\r\n                                    \"&uuid=\" + l.uuid + \"&dateFormate=\" + l.dateFormate;\r\n                                Object(_App_internal_utils_utils__WEBPACK_IMPORTED_MODULE_3__[\"post\"])(\"https://studyservice.zhihuishu.com/learning/saveDatabaseIntervalTime\", postData, false, function (data) {\r\n                                    var json = JSON.parse(data);\r\n                                    try {\r\n                                        if (json.data.submitSuccess == true) {\r\n                                            alert(\"秒过成功,刷新后查看效果\");\r\n                                        }\r\n                                        else {\r\n                                            alert(\"秒过失败\");\r\n                                        }\r\n                                        ;\r\n                                    }\r\n                                    catch (e) {\r\n                                        alert(\"秒过失败\");\r\n                                    }\r\n                                });\r\n                            };\r\n                            return next.apply(this, args);\r\n                        });\r\n                        return ret;\r\n                    };\r\n                }\r\n            }\r\n            catch (e) {\r\n            }\r\n            return next.apply(this, args);\r\n        });\r\n    };\r\n    return ZhsVideo;\r\n}());\r\n\r\n\n\n//# sourceURL=webpack:///./src/mooc/zhihuishu/video.ts?");

/***/ }),

/***/ "./src/tampermonkey/zhihuishu-pack.ts":
/*!********************************************!*\
  !*** ./src/tampermonkey/zhihuishu-pack.ts ***!
  \********************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _App_internal_utils_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @App/internal/utils/config */ \"./src/internal/utils/config.ts\");\n/* harmony import */ var _App_internal_utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @App/internal/utils/log */ \"./src/internal/utils/log.ts\");\n/* harmony import */ var _App_internal_application__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @App/internal/application */ \"./src/internal/application.ts\");\n/* harmony import */ var _App_mooc_mooc__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @App/mooc/mooc */ \"./src/mooc/mooc.ts\");\n/* harmony import */ var _App_mooc_zhihuishu_platform__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @App/mooc/zhihuishu/platform */ \"./src/mooc/zhihuishu/platform.ts\");\n\r\n\r\n\r\n\r\n\r\nvar logger;\r\nif (top == self) {\r\n    logger = new _App_internal_utils_log__WEBPACK_IMPORTED_MODULE_1__[\"PageLog\"]();\r\n}\r\nelse {\r\n    logger = new _App_internal_utils_log__WEBPACK_IMPORTED_MODULE_1__[\"ConsoleLog\"]();\r\n}\r\n_App_internal_application__WEBPACK_IMPORTED_MODULE_2__[\"Application\"].GlobalContext = window.unsafeWindow;\r\nvar component = new Map().\r\n    set(\"config\", new _App_internal_utils_config__WEBPACK_IMPORTED_MODULE_0__[\"ChromeConfigItems\"](Object(_App_internal_utils_config__WEBPACK_IMPORTED_MODULE_0__[\"NewFrontendGetConfig\"])())).\r\n    set(\"logger\", logger);\r\n;\r\nvar app = new _App_internal_application__WEBPACK_IMPORTED_MODULE_2__[\"Application\"](_App_internal_application__WEBPACK_IMPORTED_MODULE_2__[\"Frontend\"], new _App_mooc_mooc__WEBPACK_IMPORTED_MODULE_3__[\"mooc\"](new _App_mooc_zhihuishu_platform__WEBPACK_IMPORTED_MODULE_4__[\"ZhsPlatform\"]()), component);\r\napp.run();\r\n\n\n//# sourceURL=webpack:///./src/tampermonkey/zhihuishu-pack.ts?");

/***/ }),

/***/ "./src/views/common.ts":
/*!*****************************!*\
  !*** ./src/views/common.ts ***!
  \*****************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("window.addEventListener(\"load\", function () {\r\n    var css = \"#cxtools {\\n    position: absolute;\\n    left: 250px;\\n    top: 2px;\\n    width: 200px;\\n    font-size: 0;\\n}\\n\\n.cx-btn {\\n    outline: none;\\n    border: 0;\\n    background: #7d9d35;\\n    color: #fff;\\n    border-radius: 4px;\\n    padding: 2px 8px;\\n    cursor: pointer;\\n    font-size: 12px;\\n    margin-left: 4px;\\n}\\n\\n.cx-btn:hover {\\n    box-shadow: 1px 1px 1px 1px #ccc;\\n}\\n\\n.zhs-tools-btn {\\n    color: #fff;\\n    background: #ff9d34;\\n    padding: 4px;\\n    display: inline-block;\\n    height: 24px;\\n    font-size: 14px;\\n    line-height: 24px;\\n    margin:0;\\n}\\n\\n.zhs-tools-btn:hover {\\n    background: #ff3838;\\n}\\n\\n.zhs-start-btn{\\n    background: #36ac36;\\n}\\n\\n.zhs-start-btn:hover{\\n    background: #3b8d3b;\\n}\\n\\n#zhs-ytbn {\\n    color: #fff;\\n    background: #e777ff;\\n}\\n\\n#zhs-ytbn:hover {\\n    background: #e7b7f1;\\n}\\n\\n.zhs-search-answer {\\n    border: 0;\\n    outline: none;\\n    padding: 4px;\\n}\\n\\n.zhs-search-answer:hover {\\n    opacity: .85;\\n}\\n\\n.mooc163-search{\\n    background-color: #60b900;\\n    display: block;\\n    margin: 0 auto;\\n}\\n\\n.tools-logger-panel{\\n    width: 360px;\\n    height: auto;\\n    max-height: 260px;\\n    color:#000;\\n    position: fixed;\\n    margin: 0 auto;\\n    display: block;\\n    font-size: 14px;\\n    border-radius: 4px;\\n    width: 340px;\\n    text-align: center;\\n    overflow: hidden;\\n    left:60px;\\n    z-index: 100000;\\n    top: 40px;\\n    background: rgba(256, 256, 256, 0.3);\\n    box-shadow: 0px 0px 5px #bbb;\\n    transition-property: opacity, background-color;\\n    transition: 200ms ease-in-out;\\n}\\n\\n.head {\\n    width: 100%;\\n    height: 25px;\\n}\\n\\n.head span{\\n    color:#000;\\n    float:left;\\n    font-weight: 550;\\n}\\n\\n.status {\\n    color: #67C23A;\\n    font-weight: 600;\\n}\\n\\n.tools-notice-content {\\n    width: 100%;\\n    height: 220px;\\n    border-top:0px;\\n    overflow-y: scroll;\\n    overflow-x: hidden;\\n}\\n\\n.tools-notice-content .log {\\n    height: 26px;\\n    width: auto;\\n    text-align: center;\\n    border: 1px solid #eee;\\n}\\n\\n.tools-notice-content .log p {\\n    margin: 0;\\n    color: #aaa;\\n    font-size: 11px;\\n    font-weight: 500;\\n    font-family: Arial, Helvetica, sans-serif;\\n    line-height: 26px;\\n}\\n\\n/* \\u6EDA\\u52A8\\u69FD */\\n::-webkit-scrollbar {\\n    width: 10px;\\n    height: 10px;\\n}\\n\\n::-webkit-scrollbar-track {\\n    border-radius: 3px;\\n    background: rgba(0, 0, 0, 0.06);\\n    -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.08);\\n}\\n\\n/* \\u6EDA\\u52A8\\u6761\\u6ED1\\u5757 */\\n::-webkit-scrollbar-thumb {\\n    border-radius: 3px;\\n    background: rgba(0, 0, 0, 0.12);\\n    -webkit-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.2);\\n}\\n\\n/* \\u590D\\u9009\\u6846 */\\n.switch {\\n    margin: 2px auto;\\n    display: inline-flex;\\n    align-items: center;\\n    width: auto;\\n}\\n.checkbox-input {\\n    display: none\\n}\\n.checkbox {\\n    -webkit-transition: background-color 0.3s;\\n    transition: background-color 0.3s;\\n    background-color: #fff;\\n    border: 1px solid #d7d7d7;\\n    border-radius: 50px;\\n    width: 16px;\\n    height: 16px;\\n    vertical-align:middle;\\n    margin: 0 5px;\\n}\\n.checkbox-input:checked+.checkbox {\\n    background-color: #409EFF;\\n}\\n.checkbox-input:checked+.checkbox:after {\\n    // content: \\\"\\u221A\\\";\\n    display: inline-block;\\n    height: 100%;\\n    width: 100%;\\n    color: #fff;\\n    text-align: center;\\n    line-height: 16px;\\n    font-size: 12px;\\n    box-shadow: 0 0 4px #409EFF;\\n}\\n\\n.tools-logger-panel:hover,\\n.tools-logger-panel:focus-within {\\n    background: rgba(256, 256, 256, 0.7);\\n}\\n\\n.tools-logger-panel:active {\\n    background-color: #E5E5E5;\\n}\\n\\n.tools-logger-panel > .close {\\n    margin: 2px;\\n}\\n\\n\";\r\n    var style = document.createElement(\"style\");\r\n    style.innerHTML = css;\r\n    document.body.appendChild(style);\r\n});\r\n\n\n//# sourceURL=webpack:///./src/views/common.ts?");

/***/ })

/******/ });