Repository: rover95/morse-encrypt Branch: master Commit: d88f17fcd082 Files: 36 Total size: 164.6 KB Directory structure: gitextract_16tznm4f/ ├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── CNAME ├── README.md ├── build/ │ ├── build.js │ ├── check-versions.js │ ├── utils.js │ ├── vue-loader.conf.js │ ├── webpack.base.conf.js │ ├── webpack.dev.conf.js │ └── webpack.prod.conf.js ├── config/ │ ├── dev.env.js │ ├── index.js │ └── prod.env.js ├── dist/ │ ├── index.html │ └── static/ │ ├── css/ │ │ └── app.c55df37c2ed5be3baf7605251a1db5ae.css │ └── js/ │ ├── app.83ce3eef90480058c767.js │ ├── manifest.d2aa68210d45a2b263ff.js │ └── vendor.aced749af0348eb599e5.js ├── index.html ├── package.json ├── src/ │ ├── App.vue │ ├── components/ │ │ └── MorseEncrypt.vue │ ├── index.html │ ├── index.js │ ├── main.js │ ├── router/ │ │ └── index.js │ └── utils/ │ ├── encrypt.js │ ├── morse.js │ └── unicodeEncrypt.js ├── static/ │ └── .gitkeep └── webpack.config.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .babelrc ================================================ { "presets": [ ["env", { "modules": false, "targets": { "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] } }], "stage-2" ], "plugins": ["transform-vue-jsx", "transform-runtime"] } ================================================ FILE: .editorconfig ================================================ root = true [*] charset = utf-8 indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true ================================================ FILE: .eslintignore ================================================ /build/ /config/ /dist/ /*.js ================================================ FILE: .eslintrc.js ================================================ // https://eslint.org/docs/user-guide/configuring module.exports = { root: true, parserOptions: { parser: 'babel-eslint' }, env: { browser: true, }, extends: [ // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. 'plugin:vue/essential', // https://github.com/standard/standard/blob/master/docs/RULES-en.md 'standard' ], // required to lint *.vue files plugins: [ 'vue' ], // add your custom rules here rules: { // allow async-await 'generator-star-spacing': 'off', "semi": ["error", "always"], // allow debugger during development 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' } } ================================================ FILE: .gitignore ================================================ .DS_Store node_modules/ npm-debug.log* yarn-debug.log* yarn-error.log* # Editor directories and files .idea .vscode *.suo *.ntvs* *.njsproj *.sln ================================================ FILE: .postcssrc.js ================================================ // https://github.com/michael-ciniawsky/postcss-load-config module.exports = { "plugins": { "postcss-import": {}, "postcss-url": {}, // to edit target browsers: use "browserslist" field in package.json "autoprefixer": {} } } ================================================ FILE: CNAME ================================================ zero.rovelast.ren ================================================ FILE: README.md ================================================ # 隐藏字符加密 原理是利用零宽字符对加密文本进行转码,嵌入到普通文本当中,从而隐藏加密内容;表面看起来是一段普通文本,复制粘贴不会丢失 [原理介绍(知乎)](https://zhuanlan.zhihu.com/p/75992161) ## **更新** - 添加unicode转码, 支持所有字符 - npm包使用 ``` npm i zero-encrypt -S ``` ```js var encrypt = require('zero-encrypt') /* 基于摩斯电码加密 @param {String} str 待加密文本 @param {String} textBefore 前段明文 @param {String} textAfter 后段明文 */ encrypt.incode(str,textBefore, textAfter) /* 基于摩斯电码解密 @param {String} text 待解密字符串 */ encrypt.decode(text) /* unicode加密 @param {String} str 待加密文本 @param {String} textBefore 前段明文 @param {String} textAfter 后段明文 */ incodeByUnicode (str, textBefore, textAfter) /* unicode解密 @param {String} str 待解密字符串 */ decodeByUnicode (str) ``` ## 存储隐藏信息 比如隐藏加密存储比特币钱包,或者在你的代码里埋下一个彩蛋 ![gif](https://raw.githubusercontent.com/rover95/morse-encrypt/master/src/assets/morse-b.gif) ## 秘密传达消息 零宽字符在大部分应用都支持,pc版QQ会显示零宽字符,但移动端不显示 [issue#7](https://github.com/rover95/morse-encrypt/issues/7) 你可以将密文加密到普通文本中,然后邮件发送,表面上看起来是普通文本,只有对方复制明文进行解密后才能看出隐藏信息 ## 为文章添加隐藏水印 你可以在你写的文章插入隐藏字符,将作者信息嵌入其中,当别人复制你的文章时,并不会发现这片文章已经被你悄悄打下水印 比如下面这段话,复制粘贴到 [http://zero.rovelast.com](http://zero.rovelast.com) 进行解密 ```txt 春风再美也比上你的笑,‌‍‌​‍‍‍​‌‌‌‍​‌​‌‍‌‌​‌‍​‌‌‌​‍没见过你的人不会明了 ``` ## 自定义 ~~~密码字典使用了摩斯电码,所以只支持小写;目前支持字符集包括小写字母、数字、中文~~~ 在morse码基础上添加unicode转码支持全部字符 通过编辑`/src/utils/morse.js`文件,可在摩斯电码的基础上自定义自己独一无二的密码字典 ================================================ FILE: build/build.js ================================================ 'use strict' require('./check-versions')() process.env.NODE_ENV = 'production' const ora = require('ora') const rm = require('rimraf') const path = require('path') const chalk = require('chalk') const webpack = require('webpack') const config = require('../config') const webpackConfig = require('./webpack.prod.conf') const spinner = ora('building for production...') spinner.start() rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { if (err) throw err webpack(webpackConfig, (err, stats) => { spinner.stop() if (err) throw err process.stdout.write(stats.toString({ colors: true, modules: false, children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. chunks: false, chunkModules: false }) + '\n\n') if (stats.hasErrors()) { console.log(chalk.red(' Build failed with errors.\n')) process.exit(1) } console.log(chalk.cyan(' Build complete.\n')) console.log(chalk.yellow( ' Tip: built files are meant to be served over an HTTP server.\n' + ' Opening index.html over file:// won\'t work.\n' )) }) }) ================================================ FILE: build/check-versions.js ================================================ 'use strict' const chalk = require('chalk') const semver = require('semver') const packageConfig = require('../package.json') const shell = require('shelljs') function exec (cmd) { return require('child_process').execSync(cmd).toString().trim() } const versionRequirements = [ { name: 'node', currentVersion: semver.clean(process.version), versionRequirement: packageConfig.engines.node } ] if (shell.which('npm')) { versionRequirements.push({ name: 'npm', currentVersion: exec('npm --version'), versionRequirement: packageConfig.engines.npm }) } module.exports = function () { const warnings = [] for (let i = 0; i < versionRequirements.length; i++) { const mod = versionRequirements[i] if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { warnings.push(mod.name + ': ' + chalk.red(mod.currentVersion) + ' should be ' + chalk.green(mod.versionRequirement) ) } } if (warnings.length) { console.log('') console.log(chalk.yellow('To use this template, you must update following to modules:')) console.log() for (let i = 0; i < warnings.length; i++) { const warning = warnings[i] console.log(' ' + warning) } console.log() process.exit(1) } } ================================================ FILE: build/utils.js ================================================ 'use strict' const path = require('path') const config = require('../config') const ExtractTextPlugin = require('extract-text-webpack-plugin') const packageConfig = require('../package.json') exports.assetsPath = function (_path) { const assetsSubDirectory = process.env.NODE_ENV === 'production' ? config.build.assetsSubDirectory : config.dev.assetsSubDirectory return path.posix.join(assetsSubDirectory, _path) } exports.cssLoaders = function (options) { options = options || {} const cssLoader = { loader: 'css-loader', options: { sourceMap: options.sourceMap } } const postcssLoader = { loader: 'postcss-loader', options: { sourceMap: options.sourceMap } } // generate loader string to be used with extract text plugin function generateLoaders (loader, loaderOptions) { const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader] if (loader) { loaders.push({ loader: loader + '-loader', options: Object.assign({}, loaderOptions, { sourceMap: options.sourceMap }) }) } // Extract CSS when that option is specified // (which is the case during production build) if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, fallback: 'vue-style-loader' }) } else { return ['vue-style-loader'].concat(loaders) } } // https://vue-loader.vuejs.org/en/configurations/extract-css.html return { css: generateLoaders(), postcss: generateLoaders(), less: generateLoaders('less'), sass: generateLoaders('sass', { indentedSyntax: true }), scss: generateLoaders('sass'), stylus: generateLoaders('stylus'), styl: generateLoaders('stylus') } } // Generate loaders for standalone style files (outside of .vue) exports.styleLoaders = function (options) { const output = [] const loaders = exports.cssLoaders(options) for (const extension in loaders) { const loader = loaders[extension] output.push({ test: new RegExp('\\.' + extension + '$'), use: loader }) } return output } exports.createNotifierCallback = () => { const notifier = require('node-notifier') return (severity, errors) => { if (severity !== 'error') return const error = errors[0] const filename = error.file && error.file.split('!').pop() notifier.notify({ title: packageConfig.name, message: severity + ': ' + error.name, subtitle: filename || '', icon: path.join(__dirname, 'logo.png') }) } } ================================================ FILE: build/vue-loader.conf.js ================================================ 'use strict' const utils = require('./utils') const config = require('../config') const isProduction = process.env.NODE_ENV === 'production' const sourceMapEnabled = isProduction ? config.build.productionSourceMap : config.dev.cssSourceMap module.exports = { loaders: utils.cssLoaders({ sourceMap: sourceMapEnabled, extract: isProduction }), cssSourceMap: sourceMapEnabled, cacheBusting: config.dev.cacheBusting, transformToRequire: { video: ['src', 'poster'], source: 'src', img: 'src', image: 'xlink:href' } } ================================================ FILE: build/webpack.base.conf.js ================================================ 'use strict' const path = require('path') const utils = require('./utils') const config = require('../config') const vueLoaderConfig = require('./vue-loader.conf') function resolve (dir) { return path.join(__dirname, '..', dir) } const createLintingRule = () => ({ test: /\.(js|vue)$/, loader: 'eslint-loader', enforce: 'pre', include: [resolve('src'), resolve('test')], options: { formatter: require('eslint-friendly-formatter'), emitWarning: !config.dev.showEslintErrorsInOverlay } }) module.exports = { context: path.resolve(__dirname, '../'), entry: { app: './src/main.js' }, output: { path: config.build.assetsRoot, filename: '[name].js', publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath }, resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), } }, module: { rules: [ ...(config.dev.useEslint ? [createLintingRule()] : []), { test: /\.vue$/, loader: 'vue-loader', options: vueLoaderConfig }, { test: /\.js$/, loader: 'babel-loader', include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')] }, { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: utils.assetsPath('img/[name].[hash:7].[ext]') } }, { test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: utils.assetsPath('media/[name].[hash:7].[ext]') } }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: utils.assetsPath('fonts/[name].[hash:7].[ext]') } } ] }, node: { // prevent webpack from injecting useless setImmediate polyfill because Vue // source contains it (although only uses it if it's native). setImmediate: false, // prevent webpack from injecting mocks to Node native modules // that does not make sense for the client dgram: 'empty', fs: 'empty', net: 'empty', tls: 'empty', child_process: 'empty' } } ================================================ FILE: build/webpack.dev.conf.js ================================================ 'use strict' const utils = require('./utils') const webpack = require('webpack') const config = require('../config') const merge = require('webpack-merge') const path = require('path') const baseWebpackConfig = require('./webpack.base.conf') const CopyWebpackPlugin = require('copy-webpack-plugin') const HtmlWebpackPlugin = require('html-webpack-plugin') const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') const portfinder = require('portfinder') const HOST = process.env.HOST const PORT = process.env.PORT && Number(process.env.PORT) const devWebpackConfig = merge(baseWebpackConfig, { module: { rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true }) }, // cheap-module-eval-source-map is faster for development devtool: config.dev.devtool, // these devServer options should be customized in /config/index.js devServer: { clientLogLevel: 'warning', historyApiFallback: { rewrites: [ { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') }, ], }, hot: true, contentBase: false, // since we use CopyWebpackPlugin. compress: true, host: HOST || config.dev.host, port: PORT || config.dev.port, open: config.dev.autoOpenBrowser, overlay: config.dev.errorOverlay ? { warnings: false, errors: true } : false, publicPath: config.dev.assetsPublicPath, proxy: config.dev.proxyTable, quiet: true, // necessary for FriendlyErrorsPlugin watchOptions: { poll: config.dev.poll, } }, plugins: [ new webpack.DefinePlugin({ 'process.env': require('../config/dev.env') }), new webpack.HotModuleReplacementPlugin(), new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. new webpack.NoEmitOnErrorsPlugin(), // https://github.com/ampedandwired/html-webpack-plugin new HtmlWebpackPlugin({ filename: 'index.html', template: 'index.html', inject: true }), // copy custom static assets new CopyWebpackPlugin([ { from: path.resolve(__dirname, '../static'), to: config.dev.assetsSubDirectory, ignore: ['.*'] } ]) ] }) module.exports = new Promise((resolve, reject) => { portfinder.basePort = process.env.PORT || config.dev.port portfinder.getPort((err, port) => { if (err) { reject(err) } else { // publish the new Port, necessary for e2e tests process.env.PORT = port // add port to devServer config devWebpackConfig.devServer.port = port // Add FriendlyErrorsPlugin devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ compilationSuccessInfo: { messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], }, onErrors: config.dev.notifyOnErrors ? utils.createNotifierCallback() : undefined })) resolve(devWebpackConfig) } }) }) ================================================ FILE: build/webpack.prod.conf.js ================================================ 'use strict' const path = require('path') const utils = require('./utils') const webpack = require('webpack') const config = require('../config') const merge = require('webpack-merge') const baseWebpackConfig = require('./webpack.base.conf') const CopyWebpackPlugin = require('copy-webpack-plugin') const HtmlWebpackPlugin = require('html-webpack-plugin') const ExtractTextPlugin = require('extract-text-webpack-plugin') const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') const UglifyJsPlugin = require('uglifyjs-webpack-plugin') const env = require('../config/prod.env') const webpackConfig = merge(baseWebpackConfig, { module: { rules: utils.styleLoaders({ sourceMap: config.build.productionSourceMap, extract: true, usePostCSS: true }) }, devtool: config.build.productionSourceMap ? config.build.devtool : false, output: { path: config.build.assetsRoot, filename: utils.assetsPath("js/[name].[chunkhash].js"), chunkFilename: utils.assetsPath("js/[id].[chunkhash].js") }, plugins: [ // http://vuejs.github.io/vue-loader/en/workflow/production.html new webpack.DefinePlugin({ "process.env": env }), new UglifyJsPlugin({ uglifyOptions: { compress: { warnings: false } }, sourceMap: config.build.productionSourceMap, parallel: true }), // extract css into its own file new ExtractTextPlugin({ filename: utils.assetsPath("css/[name].[contenthash].css"), // Setting the following option to `false` will not extract CSS from codesplit chunks. // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack. // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110 allChunks: true }), // Compress extracted CSS. We are using this plugin so that possible // duplicated CSS from different components can be deduped. new OptimizeCSSPlugin({ cssProcessorOptions: config.build.productionSourceMap ? { safe: true, map: { inline: false } } : { safe: true } }), // generate dist index.html with correct asset hash for caching. // you can customize output by editing /index.html // see https://github.com/ampedandwired/html-webpack-plugin new HtmlWebpackPlugin({ filename: config.build.index, template: "./src/index.html", inject: true, minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true // more options: // https://github.com/kangax/html-minifier#options-quick-reference }, // necessary to consistently work with multiple chunks via CommonsChunkPlugin chunksSortMode: "dependency" }), // keep module.id stable when vendor modules does not change new webpack.HashedModuleIdsPlugin(), // enable scope hoisting new webpack.optimize.ModuleConcatenationPlugin(), // split vendor js into its own file new webpack.optimize.CommonsChunkPlugin({ name: "vendor", minChunks(module) { // any required modules inside node_modules are extracted to vendor return ( module.resource && /\.js$/.test(module.resource) && module.resource.indexOf(path.join(__dirname, "../node_modules")) === 0 ); } }), // extract webpack runtime and module manifest to its own file in order to // prevent vendor hash from being updated whenever app bundle is updated new webpack.optimize.CommonsChunkPlugin({ name: "manifest", minChunks: Infinity }), // This instance extracts shared chunks from code splitted chunks and bundles them // in a separate chunk, similar to the vendor chunk // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk new webpack.optimize.CommonsChunkPlugin({ name: "app", async: "vendor-async", children: true, minChunks: 3 }), // copy custom static assets new CopyWebpackPlugin([ { from: path.resolve(__dirname, "../static"), to: config.build.assetsSubDirectory, ignore: [".*"] } ]) ] }); if (config.build.productionGzip) { const CompressionWebpackPlugin = require('compression-webpack-plugin') webpackConfig.plugins.push( new CompressionWebpackPlugin({ asset: '[path].gz[query]', algorithm: 'gzip', test: new RegExp( '\\.(' + config.build.productionGzipExtensions.join('|') + ')$' ), threshold: 10240, minRatio: 0.8 }) ) } if (config.build.bundleAnalyzerReport) { const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin webpackConfig.plugins.push(new BundleAnalyzerPlugin()) } module.exports = webpackConfig ================================================ FILE: config/dev.env.js ================================================ 'use strict' const merge = require('webpack-merge') const prodEnv = require('./prod.env') module.exports = merge(prodEnv, { NODE_ENV: '"development"' }) ================================================ FILE: config/index.js ================================================ 'use strict' // Template version: 1.3.1 // see http://vuejs-templates.github.io/webpack for documentation. const path = require('path') module.exports = { dev: { // Paths assetsSubDirectory: "static", assetsPublicPath: "/", proxyTable: {}, // Various Dev Server settings host: "localhost", // can be overwritten by process.env.HOST port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined autoOpenBrowser: false, errorOverlay: true, notifyOnErrors: true, poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- // Use Eslint Loader? // If true, your code will be linted during bundling and // linting errors and warnings will be shown in the console. useEslint: false, // If true, eslint errors and warnings will also be shown in the error overlay // in the browser. showEslintErrorsInOverlay: false, /** * Source Maps */ // https://webpack.js.org/configuration/devtool/#development devtool: "cheap-module-eval-source-map", // If you have problems debugging vue-files in devtools, // set this to false - it *may* help // https://vue-loader.vuejs.org/en/options.html#cachebusting cacheBusting: true, cssSourceMap: true }, build: { // Template for index.html index: path.resolve(__dirname, "../index.html"), // Paths assetsRoot: path.resolve(__dirname, "../dist"), assetsSubDirectory: "static", assetsPublicPath: "./dist/", /** * Source Maps */ productionSourceMap: true, // https://webpack.js.org/configuration/devtool/#production devtool: "#source-map", // Gzip off by default as many popular static hosts such as // Surge or Netlify already gzip all static assets for you. // Before setting to `true`, make sure to: // npm install --save-dev compression-webpack-plugin productionGzip: false, productionGzipExtensions: ["js", "css"], // Run the build command with an extra argument to // View the bundle analyzer report after build finishes: // `npm run build --report` // Set to `true` or `false` to always turn it on or off bundleAnalyzerReport: process.env.npm_config_report } }; ================================================ FILE: config/prod.env.js ================================================ 'use strict' module.exports = { NODE_ENV: '"production"' } ================================================ FILE: dist/index.html ================================================ 字符隐藏加密1
================================================ FILE: dist/static/css/app.c55df37c2ed5be3baf7605251a1db5ae.css ================================================ *{padding:0;margin:0}.page-title{position:relative;font-size:18px;font-weight:700;padding:15px;text-align:center;color:#555}.footer-info{position:absolute;bottom:10px;left:50%;width:100%;transform:translateX(-50%);font-size:10px;color:#999;text-align:center}#string{position:relative;width:90%;margin:35px auto;margin-top:60px;padding:15px;border:1px solid #ccc;box-sizing:border-box;text-align:center;font-size:20px}#string:before{content:"\5BC6\6587";font-size:12px;position:absolute;top:-20px;left:50%;transform:translateX(-50%)}.show-cell{position:relative;width:90%;padding:15px;font-size:12px;border:1px solid #ccc;margin:15px auto;box-sizing:border-box;max-width:500px;word-break:break-all}.show-cell:before{content:"\660E\6587";font-size:12px;position:absolute;top:-20px;left:50%;transform:translateX(-50%)}.page{position:relative;margin:0 auto;width:100vw;min-height:100vh;max-width:500px;padding-bottom:50px;box-sizing:border-box;overflow:hidden;text-align:center;background-color:#efefef}.ipt-cell{max-width:250px;min-width:250px;max-height:100px;min-height:30px;width:250px;padding:5px 10px;outline:none;background-color:#ddd;margin-bottom:10px}.btn,.ipt-cell{border:none;border-radius:4px}.btn{width:100px;color:#fff;padding:5px;background-color:#3af}.flex-center,.ipt-row{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.ipt-box{width:100%;padding-top:20px}.switch-box{display:inline-block;-ms-flex-pack:center;justify-content:center;margin:30px auto 10px;width:auto;border:1px solid #ccc;border-radius:4px;background-color:#fff;color:#999}.switch-btn{padding:5px;text-align:center;font-size:14px;width:80px;outline:none;background-color:#fff;border:none}.switch-active{background-color:#fc713a;color:#fff}.type-info{margin:10px auto;text-align:center;font-size:12px;color:#aaa}.message{position:fixed;top:-50px;left:50%;padding:10px 30px;background-color:#fff;border-radius:6px;transform:translateX(-50%);transition:top .3s;z-index:99}.message-show{top:50px} /*# sourceMappingURL=app.c55df37c2ed5be3baf7605251a1db5ae.css.map */ ================================================ FILE: dist/static/js/app.83ce3eef90480058c767.js ================================================ webpackJsonp([1],{"85ui":function(e,t){},NHnr:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n("7+uW"),a={render:function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},staticRenderFns:[]};for(var o=n("VU/8")({name:"App"},a,!1,function(e){n("85ui")},null,null).exports,s=n("/ocq"),r=n("woOf"),c=n.n(r),l=[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."],p=["-----",".----","..---","...--","....-",".....","-....","--...","---..","----."],d={},u={},v={},h=[],f=10;f<36;f++){var m=f.toString(36);h.push(m)}var g=p;for(var _ in h)d[h[_]]=l[_];for(var w in d)u[d[w]]=w;for(var y in p)v[p[y]]=y;var C=c()(u,v),b="|/|";function x(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if("string"==typeof e&&0!==e.length){var i=[];for(var a in e){var o=e[a];" "===o?i.push("-...-"):"|"===o?i.push(".--.."):parseInt(o)||0==parseInt(o)?i.push(g[e[a]]):i.push(d[e[a]])}var s=i.join("/");return t+(s=(s=(s=s.replace(/\//g,"​")).replace(/\./g,"‌")).replace(/\-/g,"‍"))+n}}function T(e){if("string"==typeof e&&0!==e.length){var t=[];return e.match(/(\&\#8203\;|\&\#8204\;|\&\#8205\;|\u200B|\u200C|\u200D|\&zwnj\;|\&zwj\;)+/g).map(function(e){var n=(e=(e=(e=e.replace(/\&\#8203\;|\u200B/g,"|")).replace(/\&\#8204\;|\u200C|\&zwnj\;/g,".")).replace(/\&\#8205\;|\u200D|\&zwj\;/g,"-")).split("|");for(var i in n)t.push(C[n[i]])}),t}}function D(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=[],a=0;a"})},xA9q:function(e,t){}},["NHnr"]); //# sourceMappingURL=app.83ce3eef90480058c767.js.map ================================================ FILE: dist/static/js/manifest.d2aa68210d45a2b263ff.js ================================================ !function(r){var n=window.webpackJsonp;window.webpackJsonp=function(t,u,c){for(var f,i,p,a=0,l=[];a-1}var i={name:"router-view",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;for(var a=o.$createElement,s=n.name,c=o.$route,u=o._routerViewCache||(o._routerViewCache={}),f=0,l=!1;o&&o._routerRoot!==o;)o.$vnode&&o.$vnode.data.routerView&&f++,o._inactive&&(l=!0),o=o.$parent;if(i.routerViewDepth=f,l)return a(u[s],i,r);var p=c.matched[f];if(!p)return u[s]=null,a();var d=u[s]=p.components[s];i.registerRouteInstance=function(t,e){var n=p.instances[s];(e&&n!==t||!e&&n===t)&&(p.instances[s]=e)},(i.hook||(i.hook={})).prepatch=function(t,e){p.instances[s]=e.componentInstance};var v=i.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(c,p.props&&p.props[s]);if(v){v=i.props=function(t,e){for(var n in e)t[n]=e[n];return t}({},v);var h=i.attrs=i.attrs||{};for(var m in v)d.props&&m in d.props||(h[m]=v[m],delete v[m])}return a(d,i,r)}};var a=/[!'()*]/g,s=function(t){return"%"+t.charCodeAt(0).toString(16)},c=/%2C/g,u=function(t){return encodeURIComponent(t).replace(a,s).replace(c,",")},f=decodeURIComponent;function l(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach(function(t){var n=t.replace(/\+/g," ").split("="),r=f(n.shift()),o=n.length>0?f(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]}),e):e}function p(t){var e=t?Object.keys(t).map(function(e){var n=t[e];if(void 0===n)return"";if(null===n)return u(e);if(Array.isArray(n)){var r=[];return n.forEach(function(t){void 0!==t&&(null===t?r.push(u(e)):r.push(u(e)+"="+u(t)))}),r.join("&")}return u(e)+"="+u(n)}).filter(function(t){return t.length>0}).join("&"):null;return e?"?"+e:""}var d=/\/?$/;function v(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=h(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:y(e,o),matched:t?function(t){var e=[];for(;t;)e.unshift(t),t=t.parent;return e}(t):[]};return n&&(a.redirectedFrom=y(n,o)),Object.freeze(a)}function h(t){if(Array.isArray(t))return t.map(h);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=h(t[n]);return e}return t}var m=v(null,{path:"/"});function y(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||p)(r)+o}function g(t,e){return e===m?t===e:!!e&&(t.path&&e.path?t.path.replace(d,"")===e.path.replace(d,"")&&t.hash===e.hash&&_(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&_(t.query,e.query)&&_(t.params,e.params)))}function _(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every(function(n){var r=t[n],o=e[n];return"object"==typeof r&&"object"==typeof o?_(r,o):String(r)===String(o)})}var b,w=[String,Object],x=[String,Array],$={name:"router-link",props:{to:{type:w,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:x,default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,c={},u=n.options.linkActiveClass,f=n.options.linkExactActiveClass,l=null==u?"router-link-active":u,p=null==f?"router-link-exact-active":f,h=null==this.activeClass?l:this.activeClass,m=null==this.exactActiveClass?p:this.exactActiveClass,y=i.path?v(null,i,null,n):a;c[m]=g(r,y),c[h]=this.exact?c[m]:function(t,e){return 0===t.path.replace(d,"/").indexOf(e.path.replace(d,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,y);var _=function(t){k(t)&&(e.replace?n.replace(i):n.push(i))},w={click:k};Array.isArray(this.event)?this.event.forEach(function(t){w[t]=_}):w[this.event]=_;var x={class:c};if("a"===this.tag)x.on=w,x.attrs={href:s};else{var $=function t(e){if(e)for(var n,r=0;r=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),c=e&&e.path||"/",u=s.path?A(s.path,c,n||o.append):c,f=function(t,e,n){void 0===e&&(e={});var r,o=n||l;try{r=o(t||"")}catch(t){r={}}for(var i in e)r[i]=e[i];return r}(s.query,o.query,r&&r.options.parseQuery),p=o.hash||s.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:u,query:f,hash:p}}function G(t,e){for(var n in e)t[n]=e[n];return t}function X(t,e){var n=J(t),r=n.pathList,o=n.pathMap,i=n.nameMap;function a(t,n,a){var s=W(t,n,!1,e),u=s.name;if(u){var f=i[u];if(!f)return c(null,s);var l=f.regex.keys.filter(function(t){return!t.optional}).map(function(t){return t.name});if("object"!=typeof s.params&&(s.params={}),n&&"object"==typeof n.params)for(var p in n.params)!(p in s.params)&&l.indexOf(p)>-1&&(s.params[p]=n.params[p]);if(f)return s.path=K(f.path,s.params),c(f,s,a)}else if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],function(){r(o+1)}):r(o+1)};r(0)}function ht(t){return function(e,n,r){var i=!1,a=0,s=null;mt(t,function(t,e,n,c){if("function"==typeof t&&void 0===t.cid){i=!0,a++;var u,f=_t(function(e){var o;((o=e).__esModule||gt&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:b.extend(e),n.components[c]=e,--a<=0&&r()}),l=_t(function(t){var e="Failed to resolve async component "+c+": "+t;s||(s=o(t)?t:new Error(e),r(s))});try{u=t(f,l)}catch(t){l(t)}if(u)if("function"==typeof u.then)u.then(f,l);else{var p=u.component;p&&"function"==typeof p.then&&p.then(f,l)}}}),i||r()}}function mt(t,e){return yt(t.map(function(t){return Object.keys(t.components).map(function(n){return e(t.components[n],t.instances[n],t,n)})}))}function yt(t){return Array.prototype.concat.apply([],t)}var gt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function _t(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var bt=function(t,e){this.router=t,this.base=function(t){if(!t)if(O){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=m,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function wt(t,e,n,r){var o=mt(t,function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=b.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map(function(t){return n(t,r,o,i)}):n(a,r,o,i)});return yt(r?o.reverse():o)}function xt(t,e){if(e)return function(){return t.apply(e,arguments)}}bt.prototype.listen=function(t){this.cb=t},bt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},bt.prototype.onError=function(t){this.errorCbs.push(t)},bt.prototype.transitionTo=function(t,e,n){var r=this,o=this.router.match(t,this.current);this.confirmTransition(o,function(){r.updateRoute(o),e&&e(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach(function(t){t(o)}))},function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach(function(e){e(t)}))})},bt.prototype.confirmTransition=function(t,e,n){var i=this,a=this.current,s=function(t){o(t)&&(i.errorCbs.length?i.errorCbs.forEach(function(e){e(t)}):(r(),console.error(t))),n&&n(t)};if(g(t,a)&&t.matched.length===a.matched.length)return this.ensureURL(),s();var c=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n=0?e.slice(0,n):e)+"#"+t}function Et(t){st?pt(St(t)):window.location.hash=t}function Tt(t){st?dt(St(t)):window.location.replace(St(t))}var jt=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)},n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)},n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,function(){e.index=n,e.updateRoute(r)})}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(bt),Rt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=X(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!st&&!1!==t.fallback,this.fallback&&(e="hash"),O||(e="abstract"),this.mode=e,e){case"history":this.history=new $t(this,t.base);break;case"hash":this.history=new Ct(this,t.base,this.fallback);break;case"abstract":this.history=new jt(this,t.base);break;default:0}},Lt={currentRoute:{configurable:!0}};function Mt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Rt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Lt.currentRoute.get=function(){return this.history&&this.history.current},Rt.prototype.init=function(t){var e=this;if(this.apps.push(t),!this.app){this.app=t;var n=this.history;if(n instanceof $t)n.transitionTo(n.getCurrentLocation());else if(n instanceof Ct){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen(function(t){e.apps.forEach(function(e){e._route=t})})}},Rt.prototype.beforeEach=function(t){return Mt(this.beforeHooks,t)},Rt.prototype.beforeResolve=function(t){return Mt(this.resolveHooks,t)},Rt.prototype.afterEach=function(t){return Mt(this.afterHooks,t)},Rt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Rt.prototype.onError=function(t){this.history.onError(t)},Rt.prototype.push=function(t,e,n){this.history.push(t,e,n)},Rt.prototype.replace=function(t,e,n){this.history.replace(t,e,n)},Rt.prototype.go=function(t){this.history.go(t)},Rt.prototype.back=function(){this.go(-1)},Rt.prototype.forward=function(){this.go(1)},Rt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(t){return Object.keys(t.components).map(function(e){return t.components[e]})})):[]},Rt.prototype.resolve=function(t,e,n){var r=W(t,e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?S(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Rt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Rt.prototype,Lt),Rt.install=C,Rt.version="3.0.1",O&&window.Vue&&window.Vue.use(Rt),e.a=Rt},"1kS7":function(t,e){e.f=Object.getOwnPropertySymbols},"3Eo+":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},"52gC":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"7+uW":function(t,e,n){"use strict";(function(t){ /*! * Vue.js v2.5.17 * (c) 2014-2018 Evan You * Released under the MIT License. */ var n=Object.freeze({});function r(t){return void 0===t||null===t}function o(t){return void 0!==t&&null!==t}function i(t){return!0===t}function a(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function s(t){return null!==t&&"object"==typeof t}var c=Object.prototype.toString;function u(t){return"[object Object]"===c.call(t)}function f(t){return"[object RegExp]"===c.call(t)}function l(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function p(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function d(t){var e=parseFloat(t);return isNaN(e)?t:e}function v(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var g=Object.prototype.hasOwnProperty;function _(t,e){return g.call(t,e)}function b(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var w=/-(\w)/g,x=b(function(t){return t.replace(w,function(t,e){return e?e.toUpperCase():""})}),$=b(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),k=/\B([A-Z])/g,C=b(function(t){return t.replace(k,"-$1").toLowerCase()});var O=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function A(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function S(t,e){for(var n in e)t[n]=e[n];return t}function E(t){for(var e={},n=0;n0,Q=W&&W.indexOf("edge/")>0,Z=(W&&W.indexOf("android"),W&&/iphone|ipad|ipod|ios/.test(W)||"ios"===J),Y=(W&&/chrome\/\d+/.test(W),{}.watch),tt=!1;if(z)try{var et={};Object.defineProperty(et,"passive",{get:function(){tt=!0}}),window.addEventListener("test-passive",null,et)}catch(t){}var nt=function(){return void 0===q&&(q=!z&&!K&&void 0!==t&&"server"===t.process.env.VUE_ENV),q},rt=z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ot(t){return"function"==typeof t&&/native code/.test(t.toString())}var it,at="undefined"!=typeof Symbol&&ot(Symbol)&&"undefined"!=typeof Reflect&&ot(Reflect.ownKeys);it="undefined"!=typeof Set&&ot(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var st=T,ct=0,ut=function(){this.id=ct++,this.subs=[]};ut.prototype.addSub=function(t){this.subs.push(t)},ut.prototype.removeSub=function(t){y(this.subs,t)},ut.prototype.depend=function(){ut.target&&ut.target.addDep(this)},ut.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e-1)if(i&&!_(o,"default"))a=!1;else if(""===a||a===C(t)){var c=Bt(String,o.type);(c<0||s0&&(fe((u=t(u,(n||"")+"_"+c))[0])&&fe(l)&&(s[f]=mt(l.text+u[0].text),u.shift()),s.push.apply(s,u)):a(u)?fe(l)?s[f]=mt(l.text+u):""!==u&&s.push(mt(u)):fe(u)&&fe(l)?s[f]=mt(l.text+u.text):(i(e._isVList)&&o(u.tag)&&r(u.key)&&o(n)&&(u.key="__vlist"+n+"_"+c+"__"),s.push(u)));return s}(t):void 0}function fe(t){return o(t)&&o(t.text)&&!1===t.isComment}function le(t,e){return(t.__esModule||at&&"Module"===t[Symbol.toStringTag])&&(t=t.default),s(t)?e.extend(t):t}function pe(t){return t.isComment&&t.asyncFactory}function de(t){if(Array.isArray(t))for(var e=0;eEe&&ke[n].id>t.id;)n--;ke.splice(n+1,0,t)}else ke.push(t);Ae||(Ae=!0,te(Te))}}(this)},Re.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Ht(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},Re.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},Re.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},Re.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||y(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var Le={enumerable:!0,configurable:!0,get:T,set:T};function Me(t,e,n){Le.get=function(){return this[e][n]},Le.set=function(t){this[e][n]=t},Object.defineProperty(t,n,Le)}function Ie(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[];t.$parent&&xt(!1);var i=function(i){o.push(i);var a=Dt(i,e,n,t);At(r,i,a),i in t||Me(t,"_props",i)};for(var a in e)i(a);xt(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]=null==e[n]?T:O(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;u(e=t._data="function"==typeof e?function(t,e){lt();try{return t.call(e,e)}catch(t){return Ht(t,e,"data()"),{}}finally{pt()}}(e,t):e||{})||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);for(;o--;){var i=n[o];0,r&&_(r,i)||U(i)||Me(t,"_data",i)}Ot(e,!0)}(t):Ot(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=nt();for(var o in e){var i=e[o],a="function"==typeof i?i:i.get;0,r||(n[o]=new Re(t,a||T,T,Pe)),o in t||Ne(t,o,i)}}(t,e.computed),e.watch&&e.watch!==Y&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o=0||n.indexOf(t[o])<0)&&r.push(t[o]);return r}return t}function pn(t){this._init(t)}function dn(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name;var a=function(t){this._init(t)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=e++,a.options=Pt(n.options,t),a.super=n,a.options.props&&function(t){var e=t.options.props;for(var n in e)Me(t.prototype,"_props",n)}(a),a.options.computed&&function(t){var e=t.options.computed;for(var n in e)Ne(t.prototype,n,e[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,N.forEach(function(t){a[t]=n[t]}),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=S({},a.options),o[r]=a,a}}function vn(t){return t&&(t.Ctor.options.name||t.tag)}function hn(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function mn(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=vn(a.componentOptions);s&&!e(s)&&yn(n,i,r,o)}}}function yn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,y(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=un++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r,n._parentElm=e._parentElm,n._refElm=e._refElm;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Pt(fn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&me(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,r=t.$vnode=e._parentVnode,o=r&&r.context;t.$slots=ye(e._renderChildren,o),t.$scopedSlots=n,t._c=function(e,n,r,o){return cn(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return cn(t,e,n,r,o,!0)};var i=r&&r.data;At(t,"$attrs",i&&i.attrs||n,null,!0),At(t,"$listeners",e._parentListeners||n,null,!0)}(e),$e(e,"beforeCreate"),function(t){var e=Ue(t.$options.inject,t);e&&(xt(!1),Object.keys(e).forEach(function(n){At(t,n,e[n])}),xt(!0))}(e),Ie(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),$e(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(pn),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=St,t.prototype.$delete=Et,t.prototype.$watch=function(t,e,n){if(u(e))return Fe(this,t,e,n);(n=n||{}).user=!0;var r=new Re(this,t,e,n);return n.immediate&&e.call(this,r.value),function(){r.teardown()}}}(pn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){if(Array.isArray(t))for(var r=0,o=t.length;r1?A(n):n;for(var r=A(arguments,1),o=0,i=n.length;oparseInt(this.max)&&yn(a,s[0],s,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return F}};Object.defineProperty(t,"config",e),t.util={warn:st,extend:S,mergeOptions:Pt,defineReactive:At},t.set=St,t.delete=Et,t.nextTick=te,t.options=Object.create(null),N.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,S(t.options.components,_n),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=A(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Pt(this.options,t),this}}(t),dn(t),function(t){N.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&u(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}(t)}(pn),Object.defineProperty(pn.prototype,"$isServer",{get:nt}),Object.defineProperty(pn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(pn,"FunctionalRenderContext",{value:Ye}),pn.version="2.5.17";var bn=v("style,class"),wn=v("input,textarea,option,select,progress"),xn=function(t,e,n){return"value"===n&&wn(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},$n=v("contenteditable,draggable,spellcheck"),kn=v("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Cn="http://www.w3.org/1999/xlink",On=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},An=function(t){return On(t)?t.slice(6,t.length):""},Sn=function(t){return null==t||!1===t};function En(t){for(var e=t.data,n=t,r=t;o(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=Tn(r.data,e));for(;o(n=n.parent);)n&&n.data&&(e=Tn(e,n.data));return function(t,e){if(o(t)||o(e))return jn(t,Rn(e));return""}(e.staticClass,e.class)}function Tn(t,e){return{staticClass:jn(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function jn(t,e){return t?e?t+" "+e:t:e||""}function Rn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,i=t.length;r-1?rr(t,e,n):kn(e)?Sn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):$n(e)?t.setAttribute(e,Sn(n)||"false"===n?"false":"true"):On(e)?Sn(n)?t.removeAttributeNS(Cn,An(e)):t.setAttributeNS(Cn,e,n):rr(t,e,n)}function rr(t,e,n){if(Sn(n))t.removeAttribute(e);else{if(G&&!X&&"TEXTAREA"===t.tagName&&"placeholder"===e&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var or={create:er,update:er};function ir(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=En(e),c=n._transitionClasses;o(c)&&(s=jn(s,Rn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var ar,sr,cr,ur,fr,lr,pr={create:ir,update:ir},dr=/[\w).+\-_$\]]/;function vr(t){var e,n,r,o,i,a=!1,s=!1,c=!1,u=!1,f=0,l=0,p=0,d=0;for(r=0;r=0&&" "===(h=t.charAt(v));v--);h&&dr.test(h)||(u=!0)}}else void 0===o?(d=r+1,o=t.slice(0,r).trim()):m();function m(){(i||(i=[])).push(t.slice(d,r).trim()),d=r+1}if(void 0===o?o=t.slice(0,r).trim():0!==d&&m(),i)for(r=0;r-1?{exp:t.slice(0,ur),key:'"'+t.slice(ur+1)+'"'}:{exp:t,key:null};sr=t,ur=fr=lr=0;for(;!Sr();)Er(cr=Ar())?jr(cr):91===cr&&Tr(cr);return{exp:t.slice(0,fr),key:t.slice(fr+1,lr)}}(t);return null===n.key?t+"="+e:"$set("+n.exp+", "+n.key+", "+e+")"}function Ar(){return sr.charCodeAt(++ur)}function Sr(){return ur>=ar}function Er(t){return 34===t||39===t}function Tr(t){var e=1;for(fr=ur;!Sr();)if(Er(t=Ar()))jr(t);else if(91===t&&e++,93===t&&e--,0===e){lr=ur;break}}function jr(t){for(var e=t;!Sr()&&(t=Ar())!==e;);}var Rr,Lr="__r",Mr="__c";function Ir(t,e,n,r,o){var i;e=(i=e)._withTask||(i._withTask=function(){Xt=!0;var t=i.apply(null,arguments);return Xt=!1,t}),n&&(e=function(t,e,n){var r=Rr;return function o(){null!==t.apply(null,arguments)&&Pr(e,o,n,r)}}(e,t,r)),Rr.addEventListener(t,e,tt?{capture:r,passive:o}:r)}function Pr(t,e,n,r){(r||Rr).removeEventListener(t,e._withTask||e,n)}function Nr(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},i=t.data.on||{};Rr=e.elm,function(t){if(o(t[Lr])){var e=G?"change":"input";t[e]=[].concat(t[Lr],t[e]||[]),delete t[Lr]}o(t[Mr])&&(t.change=[].concat(t[Mr],t.change||[]),delete t[Mr])}(n),ae(n,i,Ir,Pr,e.context),Rr=void 0}}var Dr={create:Nr,update:Nr};function Fr(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in o(c.__ob__)&&(c=e.data.domProps=S({},c)),s)r(c[n])&&(a[n]="");for(n in c){if(i=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n){a._value=i;var u=r(i)?"":String(i);Ur(a,u)&&(a.value=u)}else a[n]=i}}}function Ur(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.lazy)return!1;if(r.number)return d(n)!==d(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Br={create:Fr,update:Fr},Hr=b(function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach(function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}}),e});function qr(t){var e=Vr(t.style);return t.staticStyle?S(t.staticStyle,e):e}function Vr(t){return Array.isArray(t)?E(t):"string"==typeof t?Hr(t):t}var zr,Kr=/^--/,Jr=/\s*!important$/,Wr=function(t,e,n){if(Kr.test(e))t.style.setProperty(e,n);else if(Jr.test(n))t.style.setProperty(e,n.replace(Jr,""),"important");else{var r=Xr(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function to(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function eo(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&S(e,no(t.name||"v")),S(e,t),e}return"string"==typeof t?no(t):void 0}}var no=b(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),ro=z&&!X,oo="transition",io="animation",ao="transition",so="transitionend",co="animation",uo="animationend";ro&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ao="WebkitTransition",so="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(co="WebkitAnimation",uo="webkitAnimationEnd"));var fo=z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function lo(t){fo(function(){fo(t)})}function po(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Yr(t,e))}function vo(t,e){t._transitionClasses&&y(t._transitionClasses,e),to(t,e)}function ho(t,e,n){var r=yo(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===oo?so:uo,c=0,u=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++c>=a&&u()};setTimeout(function(){c0&&(n=oo,f=a,l=i.length):e===io?u>0&&(n=io,f=u,l=c.length):l=(n=(f=Math.max(a,u))>0?a>u?oo:io:null)?n===oo?i.length:c.length:0,{type:n,timeout:f,propCount:l,hasTransform:n===oo&&mo.test(r[ao+"Property"])}}function go(t,e){for(;t.length1}function ko(t,e){!0!==e.data.show&&bo(e)}var Co=function(t){var e,n,s={},c=t.modules,u=t.nodeOps;for(e=0;ev?_(t,r(n[y+1])?null:n[y+1].elm,n,d,y,i):d>y&&w(0,e,p,v)}(c,d,v,n,a):o(v)?(o(t.text)&&u.setTextContent(c,""),_(c,null,v,0,v.length-1,n)):o(d)?w(0,d,0,d.length-1):o(t.text)&&u.setTextContent(c,""):t.text!==e.text&&u.setTextContent(c,e.text),o(p)&&o(f=p.hook)&&o(f=f.postpatch)&&f(t,e)}}}function C(t,e,n){if(i(n)&&o(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(L(To(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Eo(t,e){return e.every(function(e){return!L(e,t)})}function To(t){return"_value"in t?t._value:t.value}function jo(t){t.target.composing=!0}function Ro(t){t.target.composing&&(t.target.composing=!1,Lo(t.target,"input"))}function Lo(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Mo(t){return!t.componentInstance||t.data&&t.data.transition?t:Mo(t.componentInstance._vnode)}var Io={model:Oo,show:{bind:function(t,e,n){var r=e.value,o=(n=Mo(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,bo(n,function(){t.style.display=i})):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=Mo(n)).data&&n.data.transition?(n.data.show=!0,r?bo(n,function(){t.style.display=t.__vOriginalDisplay}):wo(n,function(){t.style.display="none"})):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},Po={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function No(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?No(de(e.children)):t}function Do(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[x(i)]=o[i];return e}function Fo(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Uo={name:"transition",props:Po,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(function(t){return t.tag||pe(t)})).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=No(o);if(!i)return o;if(this._leaving)return Fo(t,o);var s="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?s+"comment":s+i.tag:a(i.key)?0===String(i.key).indexOf(s)?i.key:s+i.key:i.key;var c=(i.data||(i.data={})).transition=Do(this),u=this._vnode,f=No(u);if(i.data.directives&&i.data.directives.some(function(t){return"show"===t.name})&&(i.data.show=!0),f&&f.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,f)&&!pe(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=S({},c);if("out-in"===r)return this._leaving=!0,se(l,"afterLeave",function(){e._leaving=!1,e.$forceUpdate()}),Fo(t,o);if("in-out"===r){if(pe(i))return u;var p,d=function(){p()};se(c,"afterEnter",d),se(c,"enterCancelled",d),se(l,"delayLeave",function(t){p=t})}}return o}}},Bo=S({tag:String,moveClass:String},Po);function Ho(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function qo(t){t.data.newPos=t.elm.getBoundingClientRect()}function Vo(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}delete Bo.mode;var zo={Transition:Uo,TransitionGroup:{props:Bo,render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Do(this),s=0;s-1?Dn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Dn[t]=/HTMLUnknownElement/.test(e.toString())},S(pn.options.directives,Io),S(pn.options.components,zo),pn.prototype.__patch__=z?Co:T,pn.prototype.$mount=function(t,e){return function(t,e,n){return t.$el=e,t.$options.render||(t.$options.render=ht),$e(t,"beforeMount"),new Re(t,function(){t._update(t._render(),n)},T,null,!0),n=!1,null==t.$vnode&&(t._isMounted=!0,$e(t,"mounted")),t}(this,t=t&&z?Un(t):void 0,e)},z&&setTimeout(function(){F.devtools&&rt&&rt.emit("init",pn)},0);var Ko=/\{\{((?:.|\n)+?)\}\}/g,Jo=/[-.*+?^${}()|[\]\/\\]/g,Wo=b(function(t){var e=t[0].replace(Jo,"\\$&"),n=t[1].replace(Jo,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")});function Go(t,e){var n=e?Wo(e):Ko;if(n.test(t)){for(var r,o,i,a=[],s=[],c=n.lastIndex=0;r=n.exec(t);){(o=r.index)>c&&(s.push(i=t.slice(c,o)),a.push(JSON.stringify(i)));var u=vr(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=o+r[0].length}return c\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,oi="[a-zA-Z_][\\w\\-\\.]*",ii="((?:"+oi+"\\:)?"+oi+")",ai=new RegExp("^<"+ii),si=/^\s*(\/?)>/,ci=new RegExp("^<\\/"+ii+"[^>]*>"),ui=/^]+>/i,fi=/^",""":'"',"&":"&"," ":"\n"," ":"\t"},mi=/&(?:lt|gt|quot|amp);/g,yi=/&(?:lt|gt|quot|amp|#10|#9);/g,gi=v("pre,textarea",!0),_i=function(t,e){return t&&gi(t)&&"\n"===e[0]};function bi(t,e){var n=e?yi:mi;return t.replace(n,function(t){return hi[t]})}var wi,xi,$i,ki,Ci,Oi,Ai,Si,Ei=/^@|^v-on:/,Ti=/^v-|^@|^:/,ji=/([^]*?)\s+(?:in|of)\s+([^]*)/,Ri=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Li=/^\(|\)$/g,Mi=/:(.*)$/,Ii=/^:|^v-bind:/,Pi=/\.[^.]+/g,Ni=b(Yo);function Di(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:function(t){for(var e={},n=0,r=t.length;n]*>)","i")),p=t.replace(l,function(t,n,r){return u=r.length,di(f)||"noscript"===f||(n=n.replace(//g,"$1").replace(//g,"$1")),_i(f,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""});c+=t.length-p.length,t=p,O(f,c-u,c)}else{var d=t.indexOf("<");if(0===d){if(fi.test(t)){var v=t.indexOf("--\x3e");if(v>=0){e.shouldKeepComment&&e.comment(t.substring(4,v)),$(v+3);continue}}if(li.test(t)){var h=t.indexOf("]>");if(h>=0){$(h+2);continue}}var m=t.match(ui);if(m){$(m[0].length);continue}var y=t.match(ci);if(y){var g=c;$(y[0].length),O(y[1],g,c);continue}var _=k();if(_){C(_),_i(r,t)&&$(1);continue}}var b=void 0,w=void 0,x=void 0;if(d>=0){for(w=t.slice(d);!(ci.test(w)||ai.test(w)||fi.test(w)||li.test(w)||(x=w.indexOf("<",1))<0);)d+=x,w=t.slice(d);b=t.substring(0,d),$(d)}d<0&&(b=t,t=""),e.chars&&b&&e.chars(b)}if(t===n){e.chars&&e.chars(t);break}}function $(e){c+=e,t=t.substring(e)}function k(){var e=t.match(ai);if(e){var n,r,o={tagName:e[1],attrs:[],start:c};for($(e[0].length);!(n=t.match(si))&&(r=t.match(ri));)$(r[0].length),o.attrs.push(r);if(n)return o.unarySlash=n[1],$(n[0].length),o.end=c,o}}function C(t){var n=t.tagName,c=t.unarySlash;i&&("p"===r&&ni(n)&&O(r),s(n)&&r===n&&O(n));for(var u=a(n)||!!c,f=t.attrs.length,l=new Array(f),p=0;p=0&&o[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=o.length-1;u>=a;u--)e.end&&e.end(o[u].tag,n,i);o.length=a,r=a&&o[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,i):"p"===s&&(e.start&&e.start(t,[],!1,n,i),e.end&&e.end(t,n,i))}O()}(t,{warn:wi,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,start:function(t,i,u){var f=r&&r.ns||Si(t);G&&"svg"===f&&(i=function(t){for(var e=[],n=0;n-1"+("true"===i?":("+e+")":":_q("+e+","+i+")")),xr(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+i+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+o+")":o)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Or(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Or(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Or(e,"$$c")+"}",null,!0)}(t,r,o);else if("input"===i&&"radio"===a)!function(t,e,n){var r=n&&n.number,o=$r(t,"value")||"null";gr(t,"checked","_q("+e+","+(o=r?"_n("+o+")":o)+")"),xr(t,"change",Or(e,o),null,!0)}(t,r,o);else if("input"===i||"textarea"===i)!function(t,e,n){var r=t.attrsMap.type,o=n||{},i=o.lazy,a=o.number,s=o.trim,c=!i&&"range"!==r,u=i?"change":"range"===r?Lr:"input",f="$event.target.value";s&&(f="$event.target.value.trim()"),a&&(f="_n("+f+")");var l=Or(e,f);c&&(l="if($event.target.composing)return;"+l),gr(t,"value","("+e+")"),xr(t,u,l,null,!0),(s||a)&&xr(t,"blur","$forceUpdate()")}(t,r,o);else if(!F.isReservedTag(i))return Cr(t,r,o),!1;return!0},text:function(t,e){e.value&&gr(t,"textContent","_s("+e.value+")")},html:function(t,e){e.value&&gr(t,"innerHTML","_s("+e.value+")")}},isPreTag:function(t){return"pre"===t},isUnaryTag:ti,mustUseProp:xn,canBeLeftOpenTag:ei,isReservedTag:Pn,getTagNamespace:Nn,staticKeys:function(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}(Ji)},Qi=b(function(t){return v("type,tag,attrsList,attrsMap,plain,parent,children,attrs"+(t?","+t:""))});function Zi(t,e){t&&(Wi=Qi(e.staticKeys||""),Gi=e.isReservedTag||j,function t(e){e.static=function(t){if(2===t.type)return!1;if(3===t.type)return!0;return!(!t.pre&&(t.hasBindings||t.if||t.for||h(t.tag)||!Gi(t.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(Wi)))}(e);if(1===e.type){if(!Gi(e.tag)&&"slot"!==e.tag&&null==e.attrsMap["inline-template"])return;for(var n=0,r=e.children.length;n|^function\s*\(/,ta=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,ea={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},na={esc:"Escape",tab:"Tab",enter:"Enter",space:" ",up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete"]},ra=function(t){return"if("+t+")return null;"},oa={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:ra("$event.target !== $event.currentTarget"),ctrl:ra("!$event.ctrlKey"),shift:ra("!$event.shiftKey"),alt:ra("!$event.altKey"),meta:ra("!$event.metaKey"),left:ra("'button' in $event && $event.button !== 0"),middle:ra("'button' in $event && $event.button !== 1"),right:ra("'button' in $event && $event.button !== 2")};function ia(t,e,n){var r=e?"nativeOn:{":"on:{";for(var o in t)r+='"'+o+'":'+aa(o,t[o])+",";return r.slice(0,-1)+"}"}function aa(t,e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return aa(t,e)}).join(",")+"]";var n=ta.test(e.value),r=Yi.test(e.value);if(e.modifiers){var o="",i="",a=[];for(var s in e.modifiers)if(oa[s])i+=oa[s],ea[s]&&a.push(s);else if("exact"===s){var c=e.modifiers;i+=ra(["ctrl","shift","alt","meta"].filter(function(t){return!c[t]}).map(function(t){return"$event."+t+"Key"}).join("||"))}else a.push(s);return a.length&&(o+=function(t){return"if(!('button' in $event)&&"+t.map(sa).join("&&")+")return null;"}(a)),i&&(o+=i),"function($event){"+o+(n?"return "+e.value+"($event)":r?"return ("+e.value+")($event)":e.value)+"}"}return n||r?e.value:"function($event){"+e.value+"}"}function sa(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=ea[t],r=na[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var ca={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}},cloak:T},ua=function(t){this.options=t,this.warn=t.warn||mr,this.transforms=yr(t.modules,"transformCode"),this.dataGenFns=yr(t.modules,"genData"),this.directives=S(S({},ca),t.directives);var e=t.isReservedTag||j;this.maybeComponent=function(t){return!e(t.tag)},this.onceId=0,this.staticRenderFns=[]};function fa(t,e){var n=new ua(e);return{render:"with(this){return "+(t?la(t,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function la(t,e){if(t.staticRoot&&!t.staticProcessed)return pa(t,e);if(t.once&&!t.onceProcessed)return da(t,e);if(t.for&&!t.forProcessed)return function(t,e,n,r){var o=t.for,i=t.alias,a=t.iterator1?","+t.iterator1:"",s=t.iterator2?","+t.iterator2:"";0;return t.forProcessed=!0,(r||"_l")+"(("+o+"),function("+i+a+s+"){return "+(n||la)(t,e)+"})"}(t,e);if(t.if&&!t.ifProcessed)return va(t,e);if("template"!==t.tag||t.slotTarget){if("slot"===t.tag)return function(t,e){var n=t.slotName||'"default"',r=ya(t,e),o="_t("+n+(r?","+r:""),i=t.attrs&&"{"+t.attrs.map(function(t){return x(t.name)+":"+t.value}).join(",")+"}",a=t.attrsMap["v-bind"];!i&&!a||r||(o+=",null");i&&(o+=","+i);a&&(o+=(i?"":",null")+","+a);return o+")"}(t,e);var n;if(t.component)n=function(t,e,n){var r=e.inlineTemplate?null:ya(e,n,!0);return"_c("+t+","+ha(e,n)+(r?","+r:"")+")"}(t.component,t,e);else{var r=t.plain?void 0:ha(t,e),o=t.inlineTemplate?null:ya(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(o?","+o:"")+")"}for(var i=0;i':'
',ka.innerHTML.indexOf(" ")>0}var Aa=!!z&&Oa(!1),Sa=!!z&&Oa(!0),Ea=b(function(t){var e=Un(t);return e&&e.innerHTML}),Ta=pn.prototype.$mount;pn.prototype.$mount=function(t,e){if((t=t&&Un(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=Ea(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(r){0;var o=Ca(r,{shouldDecodeNewlines:Aa,shouldDecodeNewlinesForHref:Sa,delimiters:n.delimiters,comments:n.comments},this),i=o.render,a=o.staticRenderFns;n.render=i,n.staticRenderFns=a}}return Ta.call(this,t,e)},pn.compile=Ca,e.a=pn}).call(e,n("DuR2"))},"77Pl":function(t,e,n){var r=n("EqjI");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},"7KvD":function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},D2L2:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},DuR2:function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},EqjI:function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},FeBl:function(t,e){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},Ibhu:function(t,e,n){var r=n("D2L2"),o=n("TcQ7"),i=n("vFc/")(!1),a=n("ax3d")("IE_PROTO");t.exports=function(t,e){var n,s=o(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~i(u,n)||u.push(n));return u}},MU5D:function(t,e,n){var r=n("R9M2");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},MmMw:function(t,e,n){var r=n("EqjI");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},NpIQ:function(t,e){e.f={}.propertyIsEnumerable},O4g8:function(t,e){t.exports=!0},ON07:function(t,e,n){var r=n("EqjI"),o=n("7KvD").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},QRG4:function(t,e,n){var r=n("UuGF"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},R4wc:function(t,e,n){var r=n("kM2E");r(r.S+r.F,"Object",{assign:n("To3L")})},R9M2:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},S82l:function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},SfB7:function(t,e,n){t.exports=!n("+E39")&&!n("S82l")(function(){return 7!=Object.defineProperty(n("ON07")("div"),"a",{get:function(){return 7}}).a})},TcQ7:function(t,e,n){var r=n("MU5D"),o=n("52gC");t.exports=function(t){return r(o(t))}},To3L:function(t,e,n){"use strict";var r=n("lktj"),o=n("1kS7"),i=n("NpIQ"),a=n("sB3e"),s=n("MU5D"),c=Object.assign;t.exports=!c||n("S82l")(function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach(function(t){e[t]=t}),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r})?function(t,e){for(var n=a(t),c=arguments.length,u=1,f=o.f,l=i.f;c>u;)for(var p,d=s(arguments[u++]),v=f?r(d).concat(f(d)):r(d),h=v.length,m=0;h>m;)l.call(d,p=v[m++])&&(n[p]=d[p]);return n}:c},UuGF:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},V3tA:function(t,e,n){n("R4wc"),t.exports=n("FeBl").Object.assign},"VU/8":function(t,e){t.exports=function(t,e,n,r,o,i){var a,s=t=t||{},c=typeof t.default;"object"!==c&&"function"!==c||(a=t,s=t.default);var u,f="function"==typeof s?s.options:s;if(e&&(f.render=e.render,f.staticRenderFns=e.staticRenderFns,f._compiled=!0),n&&(f.functional=!0),o&&(f._scopeId=o),i?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},f._ssrRegister=u):r&&(u=r),u){var l=f.functional,p=l?f.render:f.beforeCreate;l?(f._injectStyles=u,f.render=function(t,e){return u.call(e),p(t,e)}):f.beforeCreate=p?[].concat(p,u):[u]}return{esModule:a,exports:s,options:f}}},X8DO:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},ax3d:function(t,e,n){var r=n("e8AB")("keys"),o=n("3Eo+");t.exports=function(t){return r[t]||(r[t]=o(t))}},e8AB:function(t,e,n){var r=n("FeBl"),o=n("7KvD"),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("O4g8")?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},evD5:function(t,e,n){var r=n("77Pl"),o=n("SfB7"),i=n("MmMw"),a=Object.defineProperty;e.f=n("+E39")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},fkB2:function(t,e,n){var r=n("UuGF"),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},hJx8:function(t,e,n){var r=n("evD5"),o=n("X8DO");t.exports=n("+E39")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},kM2E:function(t,e,n){var r=n("7KvD"),o=n("FeBl"),i=n("+ZMJ"),a=n("hJx8"),s=n("D2L2"),c=function(t,e,n){var u,f,l,p=t&c.F,d=t&c.G,v=t&c.S,h=t&c.P,m=t&c.B,y=t&c.W,g=d?o:o[e]||(o[e]={}),_=g.prototype,b=d?r:v?r[e]:(r[e]||{}).prototype;for(u in d&&(n=e),n)(f=!p&&b&&void 0!==b[u])&&s(g,u)||(l=f?b[u]:n[u],g[u]=d&&"function"!=typeof b[u]?n[u]:m&&f?i(l,r):y&&b[u]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):h&&"function"==typeof l?i(Function.call,l):l,h&&((g.virtual||(g.virtual={}))[u]=l,t&c.R&&_&&!_[u]&&a(_,u,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},lOnJ:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},lktj:function(t,e,n){var r=n("Ibhu"),o=n("xnc9");t.exports=Object.keys||function(t){return r(t,o)}},sB3e:function(t,e,n){var r=n("52gC");t.exports=function(t){return Object(r(t))}},"vFc/":function(t,e,n){var r=n("TcQ7"),o=n("QRG4"),i=n("fkB2");t.exports=function(t){return function(e,n,a){var s,c=r(e),u=o(c.length),f=i(a,u);if(t&&n!=n){for(;u>f;)if((s=c[f++])!=s)return!0}else for(;u>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}}},woOf:function(t,e,n){t.exports={default:n("V3tA"),__esModule:!0}},xnc9:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")}}); //# sourceMappingURL=vendor.aced749af0348eb599e5.js.map ================================================ FILE: index.html ================================================ 隐藏字符加密
================================================ FILE: package.json ================================================ { "name": "morse-encrypt", "version": "1.0.0", "description": "morse-encrypt", "author": "rovelast", "private": true, "scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "start": "npm run dev", "lint": "eslint --ext .js,.vue src", "build": "node build/build.js" }, "dependencies": { "vue": "^2.5.2", "vue-router": "^3.0.1" }, "devDependencies": { "autoprefixer": "^7.1.2", "babel-core": "^6.22.1", "babel-eslint": "^8.2.1", "babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-loader": "^7.1.1", "babel-plugin-syntax-jsx": "^6.18.0", "babel-plugin-transform-runtime": "^6.22.0", "babel-plugin-transform-vue-jsx": "^3.5.0", "babel-preset-env": "^1.3.2", "babel-preset-stage-2": "^6.22.0", "chalk": "^2.0.1", "copy-webpack-plugin": "^4.0.1", "css-loader": "^0.28.0", "eslint": "^4.15.0", "eslint-config-standard": "^10.2.1", "eslint-friendly-formatter": "^3.0.0", "eslint-loader": "^1.7.1", "eslint-plugin-import": "^2.7.0", "eslint-plugin-node": "^5.2.0", "eslint-plugin-promise": "^3.4.0", "eslint-plugin-standard": "^3.0.1", "eslint-plugin-vue": "^4.0.0", "extract-text-webpack-plugin": "^3.0.0", "file-loader": "^1.1.4", "friendly-errors-webpack-plugin": "^1.6.1", "html-webpack-plugin": "^2.30.1", "node-notifier": "^5.1.2", "optimize-css-assets-webpack-plugin": "^3.2.0", "ora": "^1.2.0", "portfinder": "^1.0.13", "postcss-import": "^11.0.0", "postcss-loader": "^2.0.8", "postcss-url": "^7.2.1", "rimraf": "^2.6.0", "semver": "^5.3.0", "shelljs": "^0.7.6", "uglifyjs-webpack-plugin": "^1.1.1", "url-loader": "^0.5.8", "vue-loader": "^13.3.0", "vue-style-loader": "^3.0.1", "vue-template-compiler": "^2.5.2", "webpack": "^3.6.0", "webpack-bundle-analyzer": "^2.9.0", "webpack-dev-server": "^2.9.1", "webpack-merge": "^4.1.0" }, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" }, "browserslist": [ "> 1%", "last 2 versions", "not ie <= 8" ] } ================================================ FILE: src/App.vue ================================================ ================================================ FILE: src/components/MorseEncrypt.vue ================================================ ================================================ FILE: src/index.html ================================================ 隐藏字符加密
================================================ FILE: src/index.js ================================================ import { incode, decode} from "./encrypt" let app = `

` document.getElementById("app").innerHTML = app; // document.getElementById("show").value = t; // document.getElementById("box").innerHTML = t; ================================================ FILE: src/main.js ================================================ // The Vue build version to load with the `import` command // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue' import App from './App' import router from './router' Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ el: '#app', router, components: { App }, template: '' }) ================================================ FILE: src/router/index.js ================================================ import Vue from 'vue' import Router from 'vue-router' import MorseEncrypt from '@/components/MorseEncrypt' Vue.use(Router) export default new Router({ mode: "history", routes: [ { path: "/", name: "MorseEncrypt", component: MorseEncrypt } ] }); ================================================ FILE: src/utils/encrypt.js ================================================ /* eslint-disable */ import { wordsToMorse, morseToWords, morseToNum, numToMorse, decodeWords } from "./morse"; /* @param {String} str 待加密文本 @param {String} textBefore 前段明文 @param {String} textAfter 后段明文 */ function incode(str = '', textBefore = '', textAfter = '') { if(typeof str !== 'string' || str.length===0){ return } let res = []; let l = "‍"; let s = "‌"; let q = "​"; for (let i in str) { let val = str[i]; if(val === ' '){ res.push('-...-') } else if (val === '|'){ res.push('.--..') } else if (!!parseInt(val) || parseInt(val) == 0) { res.push(numToMorse[str[i]]); } else { res.push(wordsToMorse[str[i]]); } } let encrypt = res.join("/"); encrypt = encrypt.replace(/\//g, q) encrypt = encrypt.replace(/\./g, s) encrypt = encrypt.replace(/\-/g, l) return textBefore + encrypt + textAfter; } /* @param {String} text 待解密字符串 */ function decode(text) { if (typeof text !== 'string' || text.length === 0) { return } let decode = []; text.match(/(\&\#8203\;|\&\#8204\;|\&\#8205\;|\u200B|\u200C|\u200D|\&zwnj\;|\&zwj\;)+/g).map(temp => { temp = temp.replace(/\&\#8203\;|\u200B/g, "|"); temp = temp.replace(/\&\#8204\;|\u200C|\&zwnj\;/g, "."); temp = temp.replace(/\&\#8205\;|\u200D|\&zwj\;/g, "-"); let arr = temp.split("|"); for (let i in arr) { decode.push(decodeWords[arr[i]]); } }) return decode; } export {incode,decode} ================================================ FILE: src/utils/morse.js ================================================ /* eslint-disable */ const morseWords = ['.-','-...','-.-.','-..','.','..-.','--.','....','..','.---','-.-','.-..','--','-.','---','.--.','--.-','.-.','...','-','..-','...-','.--','-..-','-.--','--..'] const morseNumber = ['-----','.----','..---','...--','....-','.....','-....','--...','---..','----.'] let wordsToMorse = {}; let morseToWords = {}; let morseToNum = {}; //a-z数组 let words = []; for (let i = 10; i < 36; i++) { let j = i.toString(36); words.push(j); } //数字加密字典 let numToMorse = morseNumber; //字母加密字典 for (let i in words) { wordsToMorse[words[i]] = morseWords[i]; } //字母解密字典 for (let i in wordsToMorse) { morseToWords[wordsToMorse[i]] = i; } //数字解密字典 for (let i in morseNumber){ morseToNum[morseNumber[i]]=i; } //合并字典 let decodeWords = Object.assign(morseToWords, morseToNum); /* 附件字符 */ const unicodeSsplit = "|/|"; //unicode 分割符 decodeWords['-...-'] = ' '; decodeWords[".--.-"] = "\\"; decodeWords[".--.."] = unicodeSsplit; wordsToMorse["\\"] = ".--.-"; wordsToMorse[unicodeSsplit] = ".--.."; export { wordsToMorse, morseToWords, morseToNum, numToMorse, decodeWords, unicodeSsplit }; ================================================ FILE: src/utils/unicodeEncrypt.js ================================================ import { incode, decode } from './encrypt'; import { unicodeSsplit } from "./morse"; /* @param {String} str 待加密文本 @param {String} textBefore 前段明文 @param {String} textAfter 后段明文 */ export function incodeByUnicode (str = '', textBefore = '', textAfter = '') { const unicodeArr = []; let unicodeStr = ''; // unicode 转码 for (let i = 0; i < str.length; i++) { unicodeArr.push(str.charCodeAt(i).toString(36)); } unicodeStr = unicodeArr.join(unicodeSsplit) + unicodeSsplit; // 零宽转码 const ciphertext = incode(unicodeStr); return textBefore + ciphertext + textAfter; } /* @param {String} str 待解密字符串 */ export function decodeByUnicode (str) { const plaintextArr = decode(str); let plaintext = ''; let unicodeText = ''; // 零宽逆转码 plaintextArr.map(val => { if (val) { unicodeText += val; } else { unicodeText += unicodeSsplit; } }); // unicode 逆转码 unicodeText.split(unicodeSsplit).forEach(val => { if (!val || val.length === 0) { return; } let textNum = parseInt(val, 36); plaintext += String.fromCharCode(textNum); }); return plaintext; } ================================================ FILE: static/.gitkeep ================================================ ================================================ FILE: webpack.config.js ================================================ let path = require('path'); let webpack = require('webpack'); // 插件都是一个类,所以我们命名的时候尽量用大写开头 let HtmlWebpackPlugin = require('html-webpack-plugin'); let CleanWebpackPlugin = require("clean-webpack-plugin"); module.exports = { mode: "development", entry: "./src/index.js", output: { filename: "bundle.[hash:4].js", path: path.resolve("dist") }, module: { rules: [ { test: /\.jsx$/, use: 'bable-loader', include: /src/, // 只转化src目录下的js exclude: /node_modules/, // 排除掉node_modules,优化打包速度 } ] }, devServer: { host: "localhost", port: 4399, open: true, hot: true }, plugins: [ new webpack.HotModuleReplacementPlugin(), new CleanWebpackPlugin('dist'), new HtmlWebpackPlugin({ template: "./src/index.html", hash: true // 会在打包好的bundle.js后面加上hash串 }) ] };