├── .babelrc
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── LICENSE
├── README.md
├── config
├── webpack.config.base.js
├── webpack.config.browser.js
├── webpack.config.common.js
└── webpack.config.dev.js
├── dist
├── postcss.config.js
├── vue-typed-js.browser.js
├── vue-typed-js.common.js
└── vue-typed-js.css
├── index.js
├── package-lock.json
├── package.json
└── src
├── components
└── VueTypedJs.vue
├── config
└── typed-component.config.js
└── index.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["es2015", { "modules": false }],
4 | "stage-0"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | dist/
3 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | parser: 'babel-eslint',
4 | parserOptions: {
5 | sourceType: 'module'
6 | },
7 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
8 | extends: 'standard',
9 | // required to lint *.vue files
10 | plugins: [
11 | 'html'
12 | ],
13 | env: {
14 | browser: true,
15 | },
16 | // add your custom rules here
17 | 'rules': {
18 | // allow paren-less arrow functions
19 | 'arrow-parens': 0,
20 | // allow async-await
21 | 'generator-star-spacing': 0,
22 | // allow debugger during development
23 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
24 | // trailing comma
25 | 'comma-dangle': ['error', 'always-multiline'],
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Orlando Wenzinger
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-typed-js
2 |
3 | [ ](https://www.npmjs.com/package/vue-typed-js)
4 | [](https://vuejs.org/)
5 | [](https://www.codacy.com/app/orlando.wenzinger/vue-typed-js?utm_source=github.com&utm_medium=referral&utm_content=Orlandster1998/vue-typed-js&utm_campaign=Badge_Grade)
6 |
7 | A Vue.js integration for Typed.js.
8 |
9 | Typed.js is a library that types. Enter in any string, and watch it type at the speed you've set, backspace what it's typed, and begin a new sentence for however many strings you've set.
10 |
11 | Checkout the offical project [here](https://github.com/mattboldt/typed.js/).
12 |
13 | ## Table of contents
14 |
15 | - [Installation](#installation)
16 | - [Usage](#usage)
17 | - [Example](#examples)
18 |
19 | # Installation
20 |
21 | ```
22 | npm install --save vue-typed-js
23 | ```
24 |
25 | ## Default import
26 |
27 | Install the component:
28 |
29 | ```javascript
30 | import Vue from 'vue'
31 | import VueTypedJs from 'vue-typed-js'
32 |
33 | Vue.use(VueTypedJs)
34 | ```
35 |
36 | **⚠️ A css file is included when importing the package. You may have to setup your bundler to embed the css in your page.**
37 |
38 | ## Browser import
39 |
40 | ```html
41 |
42 |
43 |
44 |
45 | ```
46 |
47 | The plugin should be auto-installed. If not, you can install it manually with the instructions below.
48 |
49 | Install all the components:
50 |
51 | ```javascript
52 | Vue.use(VueTypedJs)
53 | ```
54 |
55 | # Usage
56 | To get started simply add the `vue-typed-js` custom element to your `template` and pass the text, which should be typed to the `strings` property. In addition you need to pass an element with the class `typing` to the slot, which will be used as a `wrapper`.
57 |
58 | Minimal setup:
59 |
60 | ```html
61 |
62 |
63 |
64 | ```
65 |
66 | The `typing` class also allows you to just animate certain parts of a string:
67 | ```html
68 |
69 |
Hey
70 |
71 | ```
72 |
73 | ## Properties
74 | You can make use of the following properties in order to customize your typing expirience:
75 |
76 | | Property | Type | Description | Usage |
77 | |----------------------|---------|----------------------------------------------------------------------|-----------------------------------------------------------------|
78 | | strings | Array | strings to be typed | `:strings="['Text 1', 'Text 2']"` |
79 | | stringsElement | String | ID of element containing string children | `:stringsElement="'myId'"` |
80 | | typeSpeed | Number | type speed in milliseconds | `:typeSpeed="50"` |
81 | | startDelay | Number | time before typing starts in milliseconds | `:startDelay="1000"` |
82 | | backSpeed | Number | backspacing speed in milliseconds | `:backSpeed="10"` |
83 | | smartBackspace | Boolean | only backspace what doesn't match the previous string | `:smartBackspace="true"` |
84 | | shuffle | Boolean | shuffle the strings | `:shuffle="true"` |
85 | | backDelay | Number | time before backspacing in milliseconds | `:backDelay="100"` |
86 | | fadeOut | Boolean | Fade out instead of backspace | `:fadeOut="true"` |
87 | | fadeOutClass | String | css class for fade animation | `:fadeOutClass="'fadeOutClass'"` |
88 | | fadeOutDelay | Number | fade out delay in milliseconds | `:fadeOutDelay="500"` |
89 | | loop | Boolean | loop strings | `:loop="true"` |
90 | | loopCount | Number | amount of loops | `:loopCount="3"` |
91 | | showCursor | Boolean | show cursor | `:showCursor="true"` |
92 | | cursorChar | String | character for cursor | `:cursorChar="'_'"` |
93 | | autoInsertCss | Boolean | insert CSS for cursor and fadeOut into HTML | `:autoInsertCss="true"` |
94 | | attr | String | attribute for typing Ex: input placeholder, value, or just HTML text | `:attr="'placeholder'"` |
95 | | bindInputFocusEvents | Boolean | bind to focus and blur if el is text input | `:bindInputFocusEvents="true"` |
96 | | contentType | String | 'html' or 'null' for plaintext | `:contentType="'html'"` |
97 |
98 | ## Events
99 | You can listen to the following events:
100 |
101 | | Event | Description | Usage |
102 | |------------------------|----------------------------------------------------------------------|-----------------------------------------------------------------|
103 | | onComplete | All typing is complete | `@onComplete="doSmth()"` |
104 | | preStringTyped | Before each string is typed | `@preStringTyped="doSmth()"` |
105 | | onStringTyped | After each string is typed | `@onStringTyped="doSmth()"` |
106 | | onLastStringBackspaced | During looping, after last string is typed | `@onLastStringBackspaced="doSmth()"` |
107 | | onTypingPaused | Typing has been stopped | `@onTypingPaused="doSmth()"` |
108 | | onTypingResumed | Typing has been started after being stopped | `@onTypingResumed="doSmth()"` |
109 | | onReset | After reset | `@onReset="doSmth()"` |
110 | | onStop | After stop | `@onStop="doSmth()"` |
111 | | onStart | After start | `@onStart="doSmth()"` |
112 | | onDestroy | After destroy | `@onDestroy="doSmth()"` |
113 | ## Features
114 | Checkout features like `type pausing`, `smart backspacing` etc. on the libraries [page](https://github.com/mattboldt/typed.js/).
115 |
116 | # Examples
117 | Here are several examples:
118 |
119 | ```html
120 |
121 |
122 |
We are a company!
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 | ```
135 |
136 | ---
137 |
138 | # License
139 |
140 | [MIT](http://opensource.org/licenses/MIT)
141 |
--------------------------------------------------------------------------------
/config/webpack.config.base.js:
--------------------------------------------------------------------------------
1 | var webpack = require('webpack')
2 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
3 |
4 | var outputFile = 'vue-typed-js'
5 | var globalName = 'VueTypedJs'
6 |
7 | var config = require('../package.json')
8 |
9 | module.exports = {
10 | entry: './src/index.js',
11 | module: {
12 | rules: [
13 | {
14 | enforce: 'pre',
15 | test: /\.(js|vue)$/,
16 | loader: 'eslint-loader',
17 | exclude: /node_modules/,
18 | },
19 | {
20 | test: /.js$/,
21 | use: 'babel-loader',
22 | },
23 | {
24 | test: /\.vue$/,
25 | loader: 'vue-loader',
26 | options: {
27 | loaders: {
28 | css: ExtractTextPlugin.extract('css-loader'),
29 | sass: ExtractTextPlugin.extract('css-loader!sass-loader'),
30 | scss: ExtractTextPlugin.extract('css-loader!sass-loader'),
31 | },
32 | },
33 | },
34 | ],
35 | },
36 | plugins: [
37 | new webpack.DefinePlugin({
38 | 'VERSION': JSON.stringify(config.version),
39 | }),
40 | new ExtractTextPlugin(outputFile + '.css'),
41 | ],
42 | }
43 |
--------------------------------------------------------------------------------
/config/webpack.config.browser.js:
--------------------------------------------------------------------------------
1 | var webpack = require('webpack')
2 | var merge = require('webpack-merge')
3 | var base = require('./webpack.config.base')
4 | var path = require('path')
5 |
6 | var outputFile = 'vue-typed-js'
7 | var globalName = 'VueTypedJs'
8 |
9 | module.exports = merge(base, {
10 | output: {
11 | path: path.resolve(__dirname, '../dist'),
12 | filename: outputFile + '.browser.js',
13 | library: globalName,
14 | libraryTarget: 'umd',
15 | },
16 | externals: {
17 | // Put external libraries like lodash here
18 | // With their global name
19 | // Example: 'lodash': '_'
20 | },
21 | plugins: [
22 | new webpack.optimize.UglifyJsPlugin({
23 | compress: {
24 | warnings: true,
25 | },
26 | mangle: false,
27 | }),
28 | ],
29 | })
30 |
--------------------------------------------------------------------------------
/config/webpack.config.common.js:
--------------------------------------------------------------------------------
1 | var webpack = require('webpack')
2 | var merge = require('webpack-merge')
3 | var base = require('./webpack.config.base')
4 | var path = require('path')
5 |
6 | var outputFile = 'vue-typed-js'
7 | var globalName = 'VueTypedJs'
8 |
9 | module.exports = merge(base, {
10 | output: {
11 | path: path.resolve(__dirname, '../dist'),
12 | filename: outputFile + '.common.js',
13 | libraryTarget: 'commonjs2',
14 | },
15 | target: 'node',
16 | externals: {
17 | // Put external libraries like lodash here
18 | // With their package name
19 | // Example: 'lodash': 'lodash'
20 | },
21 | plugins: [
22 | new webpack.optimize.UglifyJsPlugin({
23 | compress: {
24 | warnings: true,
25 | },
26 | mangle: false,
27 | }),
28 | ],
29 | })
30 |
--------------------------------------------------------------------------------
/config/webpack.config.dev.js:
--------------------------------------------------------------------------------
1 | var merge = require('webpack-merge')
2 | var base = require('./webpack.config.base')
3 | var path = require('path')
4 |
5 | var outputFile = 'vue-typed-js'
6 | var globalName = 'VueTypedJs'
7 |
8 | module.exports = merge(base, {
9 | output: {
10 | path: path.resolve(__dirname, '../dist'),
11 | filename: outputFile + '.common.js',
12 | library: globalName,
13 | libraryTarget: 'umd',
14 | },
15 | devtool: 'eval-source-map',
16 | })
17 |
--------------------------------------------------------------------------------
/dist/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {};
--------------------------------------------------------------------------------
/dist/vue-typed-js.browser.js:
--------------------------------------------------------------------------------
1 | !function(root,factory){"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports.VueTypedJs=factory():root.VueTypedJs=factory()}(this,function(){return function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.i=function(value){return value},__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=3)}([function(module,exports){var g,_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};g=function(){return this}();try{g=g||Function("return this")()||(0,eval)("this")}catch(e){"object"===("undefined"==typeof window?"undefined":_typeof(window))&&(g=window)}module.exports=g},function(module,exports,__webpack_require__){__webpack_require__(7);var Component=__webpack_require__(8)(__webpack_require__(5),__webpack_require__(9),null,null);module.exports=Component.exports},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",function(){return props}),__webpack_require__.d(__webpack_exports__,"b",function(){return getEventHandlers});var props={strings:{type:Array,required:!1,default:function(){return["Hello World!"]}},stringsElement:{type:String,required:!1,default:null},typeSpeed:{type:Number,required:!1,default:50},startDelay:{type:Number,required:!1,default:0},backSpeed:{type:Number,required:!1,default:0},smartBackspace:{type:Boolean,required:!1,default:!0},shuffle:{type:Boolean,required:!1,default:!1},backDelay:{type:Number,required:!1,default:700},fadeOut:{type:Boolean,required:!1,default:!1},fadeOutClass:{type:String,required:!1,default:"typed-fade-out"},fadeOutDelay:{type:Number,required:!1,default:500},loop:{type:Boolean,required:!1,default:!1},loopCount:{type:Number,required:!1,default:1/0},showCursor:{type:Boolean,required:!1,default:!0},cursorChar:{type:String,required:!1,default:"|"},autoInsertCss:{type:Boolean,required:!1,default:!0},attr:{type:String,required:!1,default:null},bindInputFocusEvents:{type:Boolean,required:!1,default:!1},contentType:{type:String,required:!1,default:"html"}},getEventHandlers=function(context,typedConfig){return typedConfig.onComplete=function(){context.$emit("onComplete")},typedConfig.preStringTyped=function(){context.$emit("preStringTyped")},typedConfig.onStringTyped=function(){context.$emit("onStringTyped")},typedConfig.onLastStringBackspaced=function(){context.$emit("onLastStringBackspaced")},typedConfig.onTypingPaused=function(){context.$emit("onTypingPaused")},typedConfig.onTypingResumed=function(){context.$emit("onTypingResumed")},typedConfig.onReset=function(){context.$emit("onReset")},typedConfig.onStop=function(){context.$emit("onStop")},typedConfig.onStart=function(){context.$emit("onStart")},typedConfig.onDestroy=function(){context.$emit("onDestroy")},typedConfig}},function(module,__webpack_exports__,__webpack_require__){"use strict";Object.defineProperty(__webpack_exports__,"__esModule",{value:!0}),function(global){function install(Vue){Vue.component("vue-typed-js",__WEBPACK_IMPORTED_MODULE_0__components_VueTypedJs_vue___default.a)}__webpack_exports__.install=install;var __WEBPACK_IMPORTED_MODULE_0__components_VueTypedJs_vue__=__webpack_require__(1),__WEBPACK_IMPORTED_MODULE_0__components_VueTypedJs_vue___default=__webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__components_VueTypedJs_vue__);__webpack_require__.d(__webpack_exports__,"VueTypedJs",function(){return __WEBPACK_IMPORTED_MODULE_0__components_VueTypedJs_vue___default.a});var plugin={version:"0.1.2",install:install};__webpack_exports__.default=plugin;var GlobalVue=null;"undefined"!=typeof window?GlobalVue=window.Vue:void 0!==global&&(GlobalVue=global.Vue),GlobalVue&&GlobalVue.use(plugin)}.call(__webpack_exports__,__webpack_require__(0))},function(module,exports,__webpack_require__){(function(module){var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__,_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};/*!
2 | *
3 | * typed.js - A JavaScript Typing Animation Library
4 | * Author: Matt Boldt
5 | * Version: v2.0.9
6 | * Url: https://github.com/mattboldt/typed.js
7 | * License(s): MIT
8 | *
9 | */
10 | !function(root,factory){"object"===_typeof(exports)&&"object"===_typeof(module)?module.exports=factory():(__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_FACTORY__=factory,void 0!==(__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof __WEBPACK_AMD_DEFINE_FACTORY__?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__)&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}(0,function(){return function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={exports:{},id:moduleId,loaded:!1};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.p="",__webpack_require__(0)}([function(module,exports,__webpack_require__){"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function defineProperties(target,props){for(var i=0;icurString.length)););var stringBeforeSkip=curString.substring(0,curStrPos),stringSkipped=curString.substring(stringBeforeSkip.length+1,curStrPos+numChars),stringAfterSkip=curString.substring(curStrPos+numChars+1);curString=stringBeforeSkip+stringSkipped+stringAfterSkip,numChars--}_this2.timeout=setTimeout(function(){_this2.toggleBlinking(!1),curStrPos>=curString.length?_this2.doneTyping(curString,curStrPos):_this2.keepTyping(curString,curStrPos,numChars),_this2.temporaryPause&&(_this2.temporaryPause=!1,_this2.options.onTypingResumed(_this2.arrayPos,_this2))},pauseTime)},humanize)}},{key:"keepTyping",value:function(curString,curStrPos,numChars){0===curStrPos&&(this.toggleBlinking(!1),this.options.preStringTyped(this.arrayPos,this)),curStrPos+=numChars;var nextString=curString.substr(0,curStrPos);this.replaceText(nextString),this.typewrite(curString,curStrPos)}},{key:"doneTyping",value:function(curString,curStrPos){var _this3=this;this.options.onStringTyped(this.arrayPos,this),this.toggleBlinking(!0),this.arrayPos===this.strings.length-1&&(this.complete(),!1===this.loop||this.curLoop===this.loopCount)||(this.timeout=setTimeout(function(){_this3.backspace(curString,curStrPos)},this.backDelay))}},{key:"backspace",value:function(curString,curStrPos){var _this4=this;if(!0===this.pause.status)return void this.setPauseStatus(curString,curStrPos,!0);if(this.fadeOut)return this.initFadeOut();this.toggleBlinking(!1);var humanize=this.humanizer(this.backSpeed);this.timeout=setTimeout(function(){curStrPos=_htmlParserJs.htmlParser.backSpaceHtmlChars(curString,curStrPos,_this4);var curStringAtPosition=curString.substr(0,curStrPos);if(_this4.replaceText(curStringAtPosition),_this4.smartBackspace){var nextString=_this4.strings[_this4.arrayPos+1];nextString&&curStringAtPosition===nextString.substr(0,curStrPos)?_this4.stopNum=curStrPos:_this4.stopNum=0}curStrPos>_this4.stopNum?(curStrPos--,_this4.backspace(curString,curStrPos)):curStrPos<=_this4.stopNum&&(_this4.arrayPos++,_this4.arrayPos===_this4.strings.length?(_this4.arrayPos=0,_this4.options.onLastStringBackspaced(),_this4.shuffleStringsIfNeeded(),_this4.begin()):_this4.typewrite(_this4.strings[_this4.sequence[_this4.arrayPos]],curStrPos))},humanize)}},{key:"complete",value:function(){this.options.onComplete(this),this.loop?this.curLoop++:this.typingComplete=!0}},{key:"setPauseStatus",value:function(curString,curStrPos,isTyping){this.pause.typewrite=isTyping,this.pause.curString=curString,this.pause.curStrPos=curStrPos}},{key:"toggleBlinking",value:function(isBlinking){this.cursor&&(this.pause.status||this.cursorBlinking!==isBlinking&&(this.cursorBlinking=isBlinking,isBlinking?this.cursor.classList.add("typed-cursor--blink"):this.cursor.classList.remove("typed-cursor--blink")))}},{key:"humanizer",value:function(speed){return Math.round(Math.random()*speed/2)+speed}},{key:"shuffleStringsIfNeeded",value:function(){this.shuffle&&(this.sequence=this.sequence.sort(function(){return Math.random()-.5}))}},{key:"initFadeOut",value:function(){var _this5=this;return this.el.className+=" "+this.fadeOutClass,this.cursor&&(this.cursor.className+=" "+this.fadeOutClass),setTimeout(function(){_this5.arrayPos++,_this5.replaceText(""),_this5.strings.length>_this5.arrayPos?_this5.typewrite(_this5.strings[_this5.sequence[_this5.arrayPos]],0):(_this5.typewrite(_this5.strings[0],0),_this5.arrayPos=0)},this.fadeOutDelay)}},{key:"replaceText",value:function(str){this.attr?this.el.setAttribute(this.attr,str):this.isInput?this.el.value=str:"html"===this.contentType?this.el.innerHTML=str:this.el.textContent=str}},{key:"bindFocusEvents",value:function(){var _this6=this;this.isInput&&(this.el.addEventListener("focus",function(e){_this6.stop()}),this.el.addEventListener("blur",function(e){_this6.el.value&&0!==_this6.el.value.length||_this6.start()}))}},{key:"insertCursor",value:function(){this.showCursor&&(this.cursor||(this.cursor=document.createElement("span"),this.cursor.className="typed-cursor",this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling)))}}]),Typed}();exports.default=Typed,module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(target){for(var i=1;i":";";curString.substr(curStrPos+1).charAt(0)!==endTag&&!(++curStrPos+1>curString.length););curStrPos++}return curStrPos}},{key:"backSpaceHtmlChars",value:function(curString,curStrPos,self){if("html"!==self.contentType)return curStrPos;var curChar=curString.substr(curStrPos).charAt(0);if(">"===curChar||";"===curChar){var endTag="";for(endTag=">"===curChar?"<":"&";curString.substr(curStrPos-1).charAt(0)!==endTag&&!(--curStrPos<0););curStrPos--}return curStrPos}}]),HTMLParser}();exports.default=HTMLParser;var htmlParser=new HTMLParser;exports.htmlParser=htmlParser}])})}).call(exports,__webpack_require__(6)(module))},function(module,__webpack_exports__,__webpack_require__){"use strict";Object.defineProperty(__webpack_exports__,"__esModule",{value:!0});var __WEBPACK_IMPORTED_MODULE_0_typed_js__=__webpack_require__(4),__WEBPACK_IMPORTED_MODULE_0_typed_js___default=__webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_typed_js__),__WEBPACK_IMPORTED_MODULE_1__config_typed_component_config__=__webpack_require__(2);__webpack_exports__.default={name:"vue-typed-js",props:__WEBPACK_IMPORTED_MODULE_1__config_typed_component_config__.a,data:function(){return{typedObj:null}},methods:{throwError:function(message){throw new TypeError(message)},initTypedJS:function(){var $typed=this.$refs.typedElement.querySelector(".typing");if(this.$slots.default.length>1)this.throwError("Just one child element allowed inside <"+this.$options.name+"> component.");else if(1===this.$slots.default.length){var typedConfig=this.$props;typedConfig=__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__config_typed_component_config__.b)(this,typedConfig),this.typedObj=new __WEBPACK_IMPORTED_MODULE_0_typed_js___default.a($typed,typedConfig)}}},mounted:function(){this.initTypedJS()},destroyed:function(){this.typedObj.destroy()}}},function(module,exports){module.exports=function(module){return module.webpackPolyfill||(module.deprecate=function(){},module.paths=[],module.children||(module.children=[]),Object.defineProperty(module,"loaded",{enumerable:!0,get:function(){return module.l}}),Object.defineProperty(module,"id",{enumerable:!0,get:function(){return module.i}}),module.webpackPolyfill=1),module}},function(module,exports){},function(module,exports){module.exports=function(rawScriptExports,compiledTemplate,scopeId,cssModules){var esModule,scriptExports=rawScriptExports=rawScriptExports||{},type=typeof rawScriptExports.default;"object"!==type&&"function"!==type||(esModule=rawScriptExports,scriptExports=rawScriptExports.default);var options="function"==typeof scriptExports?scriptExports.options:scriptExports;if(compiledTemplate&&(options.render=compiledTemplate.render,options.staticRenderFns=compiledTemplate.staticRenderFns),scopeId&&(options._scopeId=scopeId),cssModules){var computed=options.computed||(options.computed={});Object.keys(cssModules).forEach(function(key){var module=cssModules[key];computed[key]=function(){return module}})}return{esModule:esModule,exports:scriptExports,options:options}}},function(module,exports){module.exports={render:function(){var _vm=this,_h=_vm.$createElement;return(_vm._self._c||_h)("div",{ref:"typedElement",staticClass:"typed-element"},[_vm._t("default")],2)},staticRenderFns:[]}}])});
--------------------------------------------------------------------------------
/dist/vue-typed-js.common.js:
--------------------------------------------------------------------------------
1 | (function webpackUniversalModuleDefinition(root, factory) {
2 | if(typeof exports === 'object' && typeof module === 'object')
3 | module.exports = factory();
4 | else if(typeof define === 'function' && define.amd)
5 | define([], factory);
6 | else if(typeof exports === 'object')
7 | exports["VueTypedJs"] = factory();
8 | else
9 | root["VueTypedJs"] = factory();
10 | })(this, function() {
11 | return /******/ (function(modules) { // webpackBootstrap
12 | /******/ // The module cache
13 | /******/ var installedModules = {};
14 | /******/
15 | /******/ // The require function
16 | /******/ function __webpack_require__(moduleId) {
17 | /******/
18 | /******/ // Check if module is in cache
19 | /******/ if(installedModules[moduleId]) {
20 | /******/ return installedModules[moduleId].exports;
21 | /******/ }
22 | /******/ // Create a new module (and put it into the cache)
23 | /******/ var module = installedModules[moduleId] = {
24 | /******/ i: moduleId,
25 | /******/ l: false,
26 | /******/ exports: {}
27 | /******/ };
28 | /******/
29 | /******/ // Execute the module function
30 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31 | /******/
32 | /******/ // Flag the module as loaded
33 | /******/ module.l = true;
34 | /******/
35 | /******/ // Return the exports of the module
36 | /******/ return module.exports;
37 | /******/ }
38 | /******/
39 | /******/
40 | /******/ // expose the modules object (__webpack_modules__)
41 | /******/ __webpack_require__.m = modules;
42 | /******/
43 | /******/ // expose the module cache
44 | /******/ __webpack_require__.c = installedModules;
45 | /******/
46 | /******/ // identity function for calling harmony imports with the correct context
47 | /******/ __webpack_require__.i = function(value) { return value; };
48 | /******/
49 | /******/ // define getter function for harmony exports
50 | /******/ __webpack_require__.d = function(exports, name, getter) {
51 | /******/ if(!__webpack_require__.o(exports, name)) {
52 | /******/ Object.defineProperty(exports, name, {
53 | /******/ configurable: false,
54 | /******/ enumerable: true,
55 | /******/ get: getter
56 | /******/ });
57 | /******/ }
58 | /******/ };
59 | /******/
60 | /******/ // getDefaultExport function for compatibility with non-harmony modules
61 | /******/ __webpack_require__.n = function(module) {
62 | /******/ var getter = module && module.__esModule ?
63 | /******/ function getDefault() { return module['default']; } :
64 | /******/ function getModuleExports() { return module; };
65 | /******/ __webpack_require__.d(getter, 'a', getter);
66 | /******/ return getter;
67 | /******/ };
68 | /******/
69 | /******/ // Object.prototype.hasOwnProperty.call
70 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
71 | /******/
72 | /******/ // __webpack_public_path__
73 | /******/ __webpack_require__.p = "";
74 | /******/
75 | /******/ // Load entry module and return exports
76 | /******/ return __webpack_require__(__webpack_require__.s = 3);
77 | /******/ })
78 | /************************************************************************/
79 | /******/ ([
80 | /* 0 */
81 | /***/ (function(module, exports) {
82 |
83 | eval("var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar g;\n\n// This works in non-strict mode\ng = function () {\n\treturn this;\n}();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzPzM2OTgiXSwibmFtZXMiOlsiZyIsIkZ1bmN0aW9uIiwiZXZhbCIsImUiLCJ3aW5kb3ciLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUlBLENBQUo7O0FBRUE7QUFDQUEsSUFBSyxZQUFXO0FBQ2YsUUFBTyxJQUFQO0FBQ0EsQ0FGRyxFQUFKOztBQUlBLElBQUk7QUFDSDtBQUNBQSxLQUFJQSxLQUFLQyxTQUFTLGFBQVQsR0FBTCxJQUFrQyxDQUFDLEdBQUVDLElBQUgsRUFBUyxNQUFULENBQXRDO0FBQ0EsQ0FIRCxDQUdFLE9BQU1DLENBQU4sRUFBUztBQUNWO0FBQ0EsS0FBRyxRQUFPQyxNQUFQLHlDQUFPQSxNQUFQLE9BQWtCLFFBQXJCLEVBQ0NKLElBQUlJLE1BQUo7QUFDRDs7QUFFRDtBQUNBO0FBQ0E7O0FBRUFDLE9BQU9DLE9BQVAsR0FBaUJOLENBQWpCIiwiZmlsZSI6IjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n");
84 |
85 | /***/ }),
86 | /* 1 */
87 | /***/ (function(module, exports, __webpack_require__) {
88 |
89 | eval("\n/* styles */\n__webpack_require__(7)\n\nvar Component = __webpack_require__(8)(\n /* script */\n __webpack_require__(5),\n /* template */\n __webpack_require__(9),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\nComponent.options.__file = \"/Users/orlando/Desktop/contributions/play/vue-typed-js/src/components/VueTypedJs.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== \"default\" && key !== \"__esModule\"})) {console.error(\"named exports are not supported in *.vue files.\")}\nif (Component.options.functional) {console.error(\"[vue-loader] VueTypedJs.vue: functional components are not supported with templates, they should use render functions.\")}\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-1de4642d\", Component.options)\n } else {\n hotAPI.reload(\"data-v-1de4642d\", Component.options)\n }\n})()}\n\nmodule.exports = Component.exports\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9WdWVUeXBlZEpzLnZ1ZT9iZWQ2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQTtBQUNBLHFCQUFnRzs7QUFFaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtFQUErRSxpREFBaUQsSUFBSTtBQUNwSSxtQ0FBbUM7O0FBRW5DO0FBQ0EsWUFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6IjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qIHN0eWxlcyAqL1xucmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2V4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbi9sb2FkZXIuanM/e1xcXCJvbWl0XFxcIjowLFxcXCJyZW1vdmVcXFwiOnRydWV9IWNzcy1sb2FkZXIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyP2lkPWRhdGEtdi0xZGU0NjQyZCFzYXNzLWxvYWRlciEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL1Z1ZVR5cGVkSnMudnVlXCIpXG5cbnZhciBDb21wb25lbnQgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9jb21wb25lbnQtbm9ybWFsaXplclwiKShcbiAgLyogc2NyaXB0ICovXG4gIHJlcXVpcmUoXCIhIWJhYmVsLWxvYWRlciEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1Z1ZVR5cGVkSnMudnVlXCIpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/aWQ9ZGF0YS12LTFkZTQ2NDJkIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9WdWVUeXBlZEpzLnZ1ZVwiKSxcbiAgLyogc2NvcGVJZCAqL1xuICBudWxsLFxuICAvKiBjc3NNb2R1bGVzICovXG4gIG51bGxcbilcbkNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwiL1VzZXJzL29ybGFuZG8vRGVza3RvcC9jb250cmlidXRpb25zL3BsYXkvdnVlLXR5cGVkLWpzL3NyYy9jb21wb25lbnRzL1Z1ZVR5cGVkSnMudnVlXCJcbmlmIChDb21wb25lbnQuZXNNb2R1bGUgJiYgT2JqZWN0LmtleXMoQ29tcG9uZW50LmVzTW9kdWxlKS5zb21lKGZ1bmN0aW9uIChrZXkpIHtyZXR1cm4ga2V5ICE9PSBcImRlZmF1bHRcIiAmJiBrZXkgIT09IFwiX19lc01vZHVsZVwifSkpIHtjb25zb2xlLmVycm9yKFwibmFtZWQgZXhwb3J0cyBhcmUgbm90IHN1cHBvcnRlZCBpbiAqLnZ1ZSBmaWxlcy5cIil9XG5pZiAoQ29tcG9uZW50Lm9wdGlvbnMuZnVuY3Rpb25hbCkge2NvbnNvbGUuZXJyb3IoXCJbdnVlLWxvYWRlcl0gVnVlVHlwZWRKcy52dWU6IGZ1bmN0aW9uYWwgY29tcG9uZW50cyBhcmUgbm90IHN1cHBvcnRlZCB3aXRoIHRlbXBsYXRlcywgdGhleSBzaG91bGQgdXNlIHJlbmRlciBmdW5jdGlvbnMuXCIpfVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkgeyhmdW5jdGlvbiAoKSB7XG4gIHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG4gIGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIiksIGZhbHNlKVxuICBpZiAoIWhvdEFQSS5jb21wYXRpYmxlKSByZXR1cm5cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIW1vZHVsZS5ob3QuZGF0YSkge1xuICAgIGhvdEFQSS5jcmVhdGVSZWNvcmQoXCJkYXRhLXYtMWRlNDY0MmRcIiwgQ29tcG9uZW50Lm9wdGlvbnMpXG4gIH0gZWxzZSB7XG4gICAgaG90QVBJLnJlbG9hZChcImRhdGEtdi0xZGU0NjQyZFwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfVxufSkoKX1cblxubW9kdWxlLmV4cG9ydHMgPSBDb21wb25lbnQuZXhwb3J0c1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvY29tcG9uZW50cy9WdWVUeXBlZEpzLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n");
90 |
91 | /***/ }),
92 | /* 2 */
93 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
94 |
95 | "use strict";
96 | eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return props; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return getEventHandlers; });\nvar props = {\n strings: {\n type: Array,\n required: false,\n default: function _default() {\n return ['Hello World!'];\n }\n },\n stringsElement: {\n type: String,\n required: false,\n default: null\n },\n typeSpeed: {\n type: Number,\n required: false,\n default: 50\n },\n startDelay: {\n type: Number,\n required: false,\n default: 0\n },\n backSpeed: {\n type: Number,\n required: false,\n default: 0\n },\n smartBackspace: {\n type: Boolean,\n required: false,\n default: true\n },\n shuffle: {\n type: Boolean,\n required: false,\n default: false\n },\n backDelay: {\n type: Number,\n required: false,\n default: 700\n },\n fadeOut: {\n type: Boolean,\n required: false,\n default: false\n },\n fadeOutClass: {\n type: String,\n required: false,\n default: 'typed-fade-out'\n },\n fadeOutDelay: {\n type: Number,\n required: false,\n default: 500\n },\n loop: {\n type: Boolean,\n required: false,\n default: false\n },\n loopCount: {\n type: Number,\n required: false,\n default: Infinity\n },\n showCursor: {\n type: Boolean,\n required: false,\n default: true\n },\n cursorChar: {\n type: String,\n required: false,\n default: '|'\n },\n autoInsertCss: {\n type: Boolean,\n required: false,\n default: true\n },\n attr: {\n type: String,\n required: false,\n default: null\n },\n bindInputFocusEvents: {\n type: Boolean,\n required: false,\n default: false\n },\n contentType: {\n type: String,\n required: false,\n default: 'html'\n }\n};\n\nvar getEventHandlers = function getEventHandlers(context, typedConfig) {\n typedConfig.onComplete = function () {\n context.$emit('onComplete');\n };\n\n typedConfig.preStringTyped = function () {\n context.$emit('preStringTyped');\n };\n\n typedConfig.onStringTyped = function () {\n context.$emit('onStringTyped');\n };\n\n typedConfig.onLastStringBackspaced = function () {\n context.$emit('onLastStringBackspaced');\n };\n\n typedConfig.onTypingPaused = function () {\n context.$emit('onTypingPaused');\n };\n\n typedConfig.onTypingResumed = function () {\n context.$emit('onTypingResumed');\n };\n\n typedConfig.onReset = function () {\n context.$emit('onReset');\n };\n\n typedConfig.onStop = function () {\n context.$emit('onStop');\n };\n\n typedConfig.onStart = function () {\n context.$emit('onStart');\n };\n\n typedConfig.onDestroy = function () {\n context.$emit('onDestroy');\n };\n\n return typedConfig;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29uZmlnL3R5cGVkLWNvbXBvbmVudC5jb25maWcuanM/ZTQyNiJdLCJuYW1lcyI6WyJwcm9wcyIsInN0cmluZ3MiLCJ0eXBlIiwiQXJyYXkiLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJzdHJpbmdzRWxlbWVudCIsIlN0cmluZyIsInR5cGVTcGVlZCIsIk51bWJlciIsInN0YXJ0RGVsYXkiLCJiYWNrU3BlZWQiLCJzbWFydEJhY2tzcGFjZSIsIkJvb2xlYW4iLCJzaHVmZmxlIiwiYmFja0RlbGF5IiwiZmFkZU91dCIsImZhZGVPdXRDbGFzcyIsImZhZGVPdXREZWxheSIsImxvb3AiLCJsb29wQ291bnQiLCJJbmZpbml0eSIsInNob3dDdXJzb3IiLCJjdXJzb3JDaGFyIiwiYXV0b0luc2VydENzcyIsImF0dHIiLCJiaW5kSW5wdXRGb2N1c0V2ZW50cyIsImNvbnRlbnRUeXBlIiwiZ2V0RXZlbnRIYW5kbGVycyIsImNvbnRleHQiLCJ0eXBlZENvbmZpZyIsIm9uQ29tcGxldGUiLCIkZW1pdCIsInByZVN0cmluZ1R5cGVkIiwib25TdHJpbmdUeXBlZCIsIm9uTGFzdFN0cmluZ0JhY2tzcGFjZWQiLCJvblR5cGluZ1BhdXNlZCIsIm9uVHlwaW5nUmVzdW1lZCIsIm9uUmVzZXQiLCJvblN0b3AiLCJvblN0YXJ0Iiwib25EZXN0cm95Il0sIm1hcHBpbmdzIjoiOztBQUFPLElBQU1BLFFBQVE7QUFDbkJDLFdBQVM7QUFDUEMsVUFBTUMsS0FEQztBQUVQQyxjQUFVLEtBRkg7QUFHUEMsYUFBUyxvQkFBWTtBQUNuQixhQUFPLENBQUUsY0FBRixDQUFQO0FBQ0Q7QUFMTSxHQURVO0FBUW5CQyxrQkFBZ0I7QUFDZEosVUFBTUssTUFEUTtBQUVkSCxjQUFVLEtBRkk7QUFHZEMsYUFBUztBQUhLLEdBUkc7QUFhbkJHLGFBQVc7QUFDVE4sVUFBTU8sTUFERztBQUVUTCxjQUFVLEtBRkQ7QUFHVEMsYUFBUztBQUhBLEdBYlE7QUFrQm5CSyxjQUFZ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QixZQUFNO0FBQzVCWixZQUFRRyxLQUFSLENBQWMsV0FBZDtBQUNELEdBRkQ7O0FBSUEsU0FBT0YsV0FBUDtBQUNELENBMUNNIiwiZmlsZSI6IjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcHJvcHMgPSB7XG4gIHN0cmluZ3M6IHtcbiAgICB0eXBlOiBBcnJheSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFsgJ0hlbGxvIFdvcmxkIScgXVxuICAgIH0sXG4gIH0sXG4gIHN0cmluZ3NFbGVtZW50OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBudWxsLFxuICB9LFxuICB0eXBlU3BlZWQ6IHtcbiAgICB0eXBlOiBOdW1iZXIsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IDUwLFxuICB9LFxuICBzdGFydERlbGF5OiB7XG4gICAgdHlwZTogTnVtYmVyLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAwLFxuICB9LFxuICBiYWNrU3BlZWQ6IHtcbiAgICB0eXBlOiBOdW1iZXIsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IDAsXG4gIH0sXG4gIHNtYXJ0QmFja3NwYWNlOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgc2h1ZmZsZToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBiYWNrRGVsYXk6IHtcbiAgICB0eXBlOiBOdW1iZXIsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IDcwMCxcbiAgfSxcbiAgZmFkZU91dDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBmYWRlT3V0Q2xhc3M6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6ICd0eXBlZC1mYWRlLW91dCcsXG4gIH0sXG4gIGZhZGVPdXREZWxheToge1xuICAgIHR5cGU6IE51bWJlcixcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogNTAwLFxuICB9LFxuICBsb29wOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGxvb3BDb3VudDoge1xuICAgIHR5cGU6IE51bWJlcixcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogSW5maW5pdHksXG4gIH0sXG4gIHNob3dDdXJzb3I6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBjdXJzb3JDaGFyOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAnfCcsXG4gIH0sXG4gIGF1dG9JbnNlcnRDc3M6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBhdHRyOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBudWxsLFxuICB9LFxuICBiaW5kSW5wdXRGb2N1c0V2ZW50czoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBjb250ZW50VHlwZToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogJ2h0bWwnLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgZ2V0RXZlbnRIYW5kbGVycyA9IChjb250ZXh0LCB0eXBlZENvbmZpZykgPT4ge1xuICB0eXBlZENvbmZpZy5vbkNvbXBsZXRlID0gKCkgPT4ge1xuICAgIGNvbnRleHQuJGVtaXQoJ29uQ29tcGxldGUnKVxuICB9XG5cbiAgdHlwZWRDb25maWcucHJlU3RyaW5nVHlwZWQgPSAoKSA9PiB7XG4gICAgY29udGV4dC4kZW1pdCgncHJlU3RyaW5nVHlwZWQnKVxuICB9XG5cbiAgdHlwZWRDb25maWcub25TdHJpbmdUeXBlZCA9ICgpID0+IHtcbiAgICBjb250ZXh0LiRlbWl0KCdvblN0cmluZ1R5cGVkJylcbiAgfVxuXG4gIHR5cGVkQ29uZmlnLm9uTGFzdFN0cmluZ0JhY2tzcGFjZWQgPSAoKSA9PiB7XG4gICAgY29udGV4dC4kZW1pdCgnb25MYXN0U3RyaW5nQmFja3NwYWNlZCcpXG4gIH1cblxuICB0eXBlZENvbmZpZy5vblR5cGluZ1BhdXNlZCA9ICgpID0+IHtcbiAgICBjb250ZXh0LiRlbWl0KCdvblR5cGluZ1BhdXNlZCcpXG4gIH1cblxuICB0eXBlZENvbmZpZy5vblR5cGluZ1Jlc3VtZWQgPSAoKSA9PiB7XG4gICAgY29udGV4dC4kZW1pdCgnb25UeXBpbmdSZXN1bWVkJylcbiAgfVxuXG4gIHR5cGVkQ29uZmlnLm9uUmVzZXQgPSAoKSA9PiB7XG4gICAgY29udGV4dC4kZW1pdCgnb25SZXNldCcpXG4gIH1cblxuICB0eXBlZENvbmZpZy5vblN0b3AgPSAoKSA9PiB7XG4gICAgY29udGV4dC4kZW1pdCgnb25TdG9wJylcbiAgfVxuXG4gIHR5cGVkQ29uZmlnLm9uU3RhcnQgPSAoKSA9PiB7XG4gICAgY29udGV4dC4kZW1pdCgnb25TdGFydCcpXG4gIH1cblxuICB0eXBlZENvbmZpZy5vbkRlc3Ryb3kgPSAoKSA9PiB7XG4gICAgY29udGV4dC4kZW1pdCgnb25EZXN0cm95JylcbiAgfVxuXG4gIHJldHVybiB0eXBlZENvbmZpZ1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2NvbmZpZy90eXBlZC1jb21wb25lbnQuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n");
97 |
98 | /***/ }),
99 | /* 3 */
100 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
101 |
102 | "use strict";
103 | eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (immutable) */ __webpack_exports__[\"install\"] = install;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_VueTypedJs_vue__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_VueTypedJs_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__components_VueTypedJs_vue__);\n/* harmony reexport (default from non-hamory) */ __webpack_require__.d(__webpack_exports__, \"VueTypedJs\", function() { return __WEBPACK_IMPORTED_MODULE_0__components_VueTypedJs_vue___default.a; });\n\n\n// Install the components\nfunction install(Vue) {\n Vue.component('vue-typed-js', __WEBPACK_IMPORTED_MODULE_0__components_VueTypedJs_vue___default.a);\n}\n\n// Expose the components\n\n\n// Plugin\nvar plugin = {\n /* eslint-disable no-undef */\n version: \"0.1.2\",\n install: install\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (plugin);\n\n// Auto-install\nvar GlobalVue = null;\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(0)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXguanM/OTU1MiJdLCJuYW1lcyI6WyJpbnN0YWxsIiwiVnVlIiwiY29tcG9uZW50IiwicGx1Z2luIiwidmVyc2lvbiIsIkdsb2JhbFZ1ZSIsIndpbmRvdyIsImdsb2JhbCIsInVzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFFQTtBQUNPLFNBQVNBLE9BQVQsQ0FBa0JDLEdBQWxCLEVBQXVCO0FBQzVCQSxNQUFJQyxTQUFKLENBQWMsY0FBZCxFQUE4QixrRUFBOUI7QUFDRDs7QUFFRDtBQUNBOztBQUlBO0FBQ0EsSUFBTUMsU0FBUztBQUNiO0FBQ0FDLFdBQVMsT0FGSTtBQUdiSjtBQUhhLENBQWY7O0FBTUEsK0RBQWVHLE1BQWY7O0FBRUE7QUFDQSxJQUFJRSxZQUFZLElBQWhCO0FBQ0EsSUFBSSxPQUFPQyxNQUFQLEtBQWtCLFdBQXRCLEVBQW1DO0FBQ2pDRCxjQUFZQyxPQUFPTCxHQUFuQjtBQUNELENBRkQsTUFFTyxJQUFJLE9BQU9NLE1BQVAsS0FBa0IsV0FBdEIsRUFBbUM7QUFDeENGLGNBQVlFLE9BQU9OLEdBQW5CO0FBQ0Q7QUFDRCxJQUFJSSxTQUFKLEVBQWU7QUFDYkEsWUFBVUcsR0FBVixDQUFjTCxNQUFkO0FBQ0QsQyIsImZpbGUiOiIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZVR5cGVkSnMgZnJvbSAnLi9jb21wb25lbnRzL1Z1ZVR5cGVkSnMudnVlJ1xuXG4vLyBJbnN0YWxsIHRoZSBjb21wb25lbnRzXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbCAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoJ3Z1ZS10eXBlZC1qcycsIFZ1ZVR5cGVkSnMpXG59XG5cbi8vIEV4cG9zZSB0aGUgY29tcG9uZW50c1xuZXhwb3J0IHtcbiAgVnVlVHlwZWRKcyxcbn1cblxuLy8gUGx1Z2luXG5jb25zdCBwbHVnaW4gPSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4gIHZlcnNpb246IFZFUlNJT04sXG4gIGluc3RhbGwsXG59XG5cbmV4cG9ydCBkZWZhdWx0IHBsdWdpblxuXG4vLyBBdXRvLWluc3RhbGxcbmxldCBHbG9iYWxWdWUgPSBudWxsXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgR2xvYmFsVnVlID0gd2luZG93LlZ1ZVxufSBlbHNlIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJykge1xuICBHbG9iYWxWdWUgPSBnbG9iYWwuVnVlXG59XG5pZiAoR2xvYmFsVnVlKSB7XG4gIEdsb2JhbFZ1ZS51c2UocGx1Z2luKVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2luZGV4LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3\n");
104 |
105 | /***/ }),
106 | /* 4 */
107 | /***/ (function(module, exports, __webpack_require__) {
108 |
109 | eval("/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*!\n * \n * typed.js - A JavaScript Typing Animation Library\n * Author: Matt Boldt \n * Version: v2.0.9\n * Url: https://github.com/mattboldt/typed.js\n * License(s): MIT\n * \n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif (( false ? 'undefined' : _typeof(exports)) === 'object' && ( false ? 'undefined' : _typeof(module)) === 'object') module.exports = factory();else if (true) !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') exports[\"Typed\"] = factory();else root[\"Typed\"] = factory();\n})(this, function () {\n\treturn (/******/function (modules) {\n\t\t\t// webpackBootstrap\n\t\t\t/******/ // The module cache\n\t\t\t/******/var installedModules = {};\n\t\t\t/******/\n\t\t\t/******/ // The require function\n\t\t\t/******/function __webpack_require__(moduleId) {\n\t\t\t\t/******/\n\t\t\t\t/******/ // Check if module is in cache\n\t\t\t\t/******/if (installedModules[moduleId])\n\t\t\t\t\t/******/return installedModules[moduleId].exports;\n\t\t\t\t/******/\n\t\t\t\t/******/ // Create a new module (and put it into the cache)\n\t\t\t\t/******/var module = installedModules[moduleId] = {\n\t\t\t\t\t/******/exports: {},\n\t\t\t\t\t/******/id: moduleId,\n\t\t\t\t\t/******/loaded: false\n\t\t\t\t\t/******/ };\n\t\t\t\t/******/\n\t\t\t\t/******/ // Execute the module function\n\t\t\t\t/******/modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\t\t\t/******/\n\t\t\t\t/******/ // Flag the module as loaded\n\t\t\t\t/******/module.loaded = true;\n\t\t\t\t/******/\n\t\t\t\t/******/ // Return the exports of the module\n\t\t\t\t/******/return module.exports;\n\t\t\t\t/******/\n\t\t\t}\n\t\t\t/******/\n\t\t\t/******/\n\t\t\t/******/ // expose the modules object (__webpack_modules__)\n\t\t\t/******/__webpack_require__.m = modules;\n\t\t\t/******/\n\t\t\t/******/ // expose the module cache\n\t\t\t/******/__webpack_require__.c = installedModules;\n\t\t\t/******/\n\t\t\t/******/ // __webpack_public_path__\n\t\t\t/******/__webpack_require__.p = \"\";\n\t\t\t/******/\n\t\t\t/******/ // Load entry module and return exports\n\t\t\t/******/return __webpack_require__(0);\n\t\t\t/******/\n\t\t}(\n\t\t/************************************************************************/\n\t\t/******/[\n\t\t/* 0 */\n\t\t/***/function (module, exports, __webpack_require__) {\n\n\t\t\t'use strict';\n\n\t\t\tObject.defineProperty(exports, '__esModule', {\n\t\t\t\tvalue: true\n\t\t\t});\n\n\t\t\tvar _createClass = function () {\n\t\t\t\tfunction defineProperties(target, props) {\n\t\t\t\t\tfor (var i = 0; i < props.length; i++) {\n\t\t\t\t\t\tvar descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ('value' in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n\t\t\t\t\t}\n\t\t\t\t}return function (Constructor, protoProps, staticProps) {\n\t\t\t\t\tif (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n\t\t\t\t};\n\t\t\t}();\n\n\t\t\tfunction _classCallCheck(instance, Constructor) {\n\t\t\t\tif (!(instance instanceof Constructor)) {\n\t\t\t\t\tthrow new TypeError('Cannot call a class as a function');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar _initializerJs = __webpack_require__(1);\n\n\t\t\tvar _htmlParserJs = __webpack_require__(3);\n\n\t\t\t/**\n * Welcome to Typed.js!\n * @param {string} elementId HTML element ID _OR_ HTML element\n * @param {object} options options object\n * @returns {object} a new Typed object\n */\n\n\t\t\tvar Typed = function () {\n\t\t\t\tfunction Typed(elementId, options) {\n\t\t\t\t\t_classCallCheck(this, Typed);\n\n\t\t\t\t\t// Initialize it up\n\t\t\t\t\t_initializerJs.initializer.load(this, options, elementId);\n\t\t\t\t\t// All systems go!\n\t\t\t\t\tthis.begin();\n\t\t\t\t}\n\n\t\t\t\t/**\n * Toggle start() and stop() of the Typed instance\n * @public\n */\n\n\t\t\t\t_createClass(Typed, [{\n\t\t\t\t\tkey: 'toggle',\n\t\t\t\t\tvalue: function toggle() {\n\t\t\t\t\t\tthis.pause.status ? this.start() : this.stop();\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Stop typing / backspacing and enable cursor blinking\n * @public\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'stop',\n\t\t\t\t\tvalue: function stop() {\n\t\t\t\t\t\tif (this.typingComplete) return;\n\t\t\t\t\t\tif (this.pause.status) return;\n\t\t\t\t\t\tthis.toggleBlinking(true);\n\t\t\t\t\t\tthis.pause.status = true;\n\t\t\t\t\t\tthis.options.onStop(this.arrayPos, this);\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Start typing / backspacing after being stopped\n * @public\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'start',\n\t\t\t\t\tvalue: function start() {\n\t\t\t\t\t\tif (this.typingComplete) return;\n\t\t\t\t\t\tif (!this.pause.status) return;\n\t\t\t\t\t\tthis.pause.status = false;\n\t\t\t\t\t\tif (this.pause.typewrite) {\n\t\t\t\t\t\t\tthis.typewrite(this.pause.curString, this.pause.curStrPos);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.backspace(this.pause.curString, this.pause.curStrPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.options.onStart(this.arrayPos, this);\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Destroy this instance of Typed\n * @public\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'destroy',\n\t\t\t\t\tvalue: function destroy() {\n\t\t\t\t\t\tthis.reset(false);\n\t\t\t\t\t\tthis.options.onDestroy(this);\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Reset Typed and optionally restarts\n * @param {boolean} restart\n * @public\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'reset',\n\t\t\t\t\tvalue: function reset() {\n\t\t\t\t\t\tvar restart = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\n\t\t\t\t\t\tclearInterval(this.timeout);\n\t\t\t\t\t\tthis.replaceText('');\n\t\t\t\t\t\tif (this.cursor && this.cursor.parentNode) {\n\t\t\t\t\t\t\tthis.cursor.parentNode.removeChild(this.cursor);\n\t\t\t\t\t\t\tthis.cursor = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.strPos = 0;\n\t\t\t\t\t\tthis.arrayPos = 0;\n\t\t\t\t\t\tthis.curLoop = 0;\n\t\t\t\t\t\tif (restart) {\n\t\t\t\t\t\t\tthis.insertCursor();\n\t\t\t\t\t\t\tthis.options.onReset(this);\n\t\t\t\t\t\t\tthis.begin();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Begins the typing animation\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'begin',\n\t\t\t\t\tvalue: function begin() {\n\t\t\t\t\t\tvar _this = this;\n\n\t\t\t\t\t\tthis.typingComplete = false;\n\t\t\t\t\t\tthis.shuffleStringsIfNeeded(this);\n\t\t\t\t\t\tthis.insertCursor();\n\t\t\t\t\t\tif (this.bindInputFocusEvents) this.bindFocusEvents();\n\t\t\t\t\t\tthis.timeout = setTimeout(function () {\n\t\t\t\t\t\t\t// Check if there is some text in the element, if yes start by backspacing the default message\n\t\t\t\t\t\t\tif (!_this.currentElContent || _this.currentElContent.length === 0) {\n\t\t\t\t\t\t\t\t_this.typewrite(_this.strings[_this.sequence[_this.arrayPos]], _this.strPos);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Start typing\n\t\t\t\t\t\t\t\t_this.backspace(_this.currentElContent, _this.currentElContent.length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this.startDelay);\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Called for each character typed\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'typewrite',\n\t\t\t\t\tvalue: function typewrite(curString, curStrPos) {\n\t\t\t\t\t\tvar _this2 = this;\n\n\t\t\t\t\t\tif (this.fadeOut && this.el.classList.contains(this.fadeOutClass)) {\n\t\t\t\t\t\t\tthis.el.classList.remove(this.fadeOutClass);\n\t\t\t\t\t\t\tif (this.cursor) this.cursor.classList.remove(this.fadeOutClass);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar humanize = this.humanizer(this.typeSpeed);\n\t\t\t\t\t\tvar numChars = 1;\n\n\t\t\t\t\t\tif (this.pause.status === true) {\n\t\t\t\t\t\t\tthis.setPauseStatus(curString, curStrPos, true);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// contain typing function in a timeout humanize'd delay\n\t\t\t\t\t\tthis.timeout = setTimeout(function () {\n\t\t\t\t\t\t\t// skip over any HTML chars\n\t\t\t\t\t\t\tcurStrPos = _htmlParserJs.htmlParser.typeHtmlChars(curString, curStrPos, _this2);\n\n\t\t\t\t\t\t\tvar pauseTime = 0;\n\t\t\t\t\t\t\tvar substr = curString.substr(curStrPos);\n\t\t\t\t\t\t\t// check for an escape character before a pause value\n\t\t\t\t\t\t\t// format: \\^\\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^\n\t\t\t\t\t\t\t// single ^ are removed from string\n\t\t\t\t\t\t\tif (substr.charAt(0) === '^') {\n\t\t\t\t\t\t\t\tif (/^\\^\\d+/.test(substr)) {\n\t\t\t\t\t\t\t\t\tvar skip = 1; // skip at least 1\n\t\t\t\t\t\t\t\t\tsubstr = /\\d+/.exec(substr)[0];\n\t\t\t\t\t\t\t\t\tskip += substr.length;\n\t\t\t\t\t\t\t\t\tpauseTime = parseInt(substr);\n\t\t\t\t\t\t\t\t\t_this2.temporaryPause = true;\n\t\t\t\t\t\t\t\t\t_this2.options.onTypingPaused(_this2.arrayPos, _this2);\n\t\t\t\t\t\t\t\t\t// strip out the escape character and pause value so they're not printed\n\t\t\t\t\t\t\t\t\tcurString = curString.substring(0, curStrPos) + curString.substring(curStrPos + skip);\n\t\t\t\t\t\t\t\t\t_this2.toggleBlinking(true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// check for skip characters formatted as\n\t\t\t\t\t\t\t// \"this is a `string to print NOW` ...\"\n\t\t\t\t\t\t\tif (substr.charAt(0) === '`') {\n\t\t\t\t\t\t\t\twhile (curString.substr(curStrPos + numChars).charAt(0) !== '`') {\n\t\t\t\t\t\t\t\t\tnumChars++;\n\t\t\t\t\t\t\t\t\tif (curStrPos + numChars > curString.length) break;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// strip out the escape characters and append all the string in between\n\t\t\t\t\t\t\t\tvar stringBeforeSkip = curString.substring(0, curStrPos);\n\t\t\t\t\t\t\t\tvar stringSkipped = curString.substring(stringBeforeSkip.length + 1, curStrPos + numChars);\n\t\t\t\t\t\t\t\tvar stringAfterSkip = curString.substring(curStrPos + numChars + 1);\n\t\t\t\t\t\t\t\tcurString = stringBeforeSkip + stringSkipped + stringAfterSkip;\n\t\t\t\t\t\t\t\tnumChars--;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// timeout for any pause after a character\n\t\t\t\t\t\t\t_this2.timeout = setTimeout(function () {\n\t\t\t\t\t\t\t\t// Accounts for blinking while paused\n\t\t\t\t\t\t\t\t_this2.toggleBlinking(false);\n\n\t\t\t\t\t\t\t\t// We're done with this sentence!\n\t\t\t\t\t\t\t\tif (curStrPos >= curString.length) {\n\t\t\t\t\t\t\t\t\t_this2.doneTyping(curString, curStrPos);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t_this2.keepTyping(curString, curStrPos, numChars);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// end of character pause\n\t\t\t\t\t\t\t\tif (_this2.temporaryPause) {\n\t\t\t\t\t\t\t\t\t_this2.temporaryPause = false;\n\t\t\t\t\t\t\t\t\t_this2.options.onTypingResumed(_this2.arrayPos, _this2);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, pauseTime);\n\n\t\t\t\t\t\t\t// humanized value for typing\n\t\t\t\t\t\t}, humanize);\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Continue to the next string & begin typing\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'keepTyping',\n\t\t\t\t\tvalue: function keepTyping(curString, curStrPos, numChars) {\n\t\t\t\t\t\t// call before functions if applicable\n\t\t\t\t\t\tif (curStrPos === 0) {\n\t\t\t\t\t\t\tthis.toggleBlinking(false);\n\t\t\t\t\t\t\tthis.options.preStringTyped(this.arrayPos, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// start typing each new char into existing string\n\t\t\t\t\t\t// curString: arg, this.el.html: original text inside element\n\t\t\t\t\t\tcurStrPos += numChars;\n\t\t\t\t\t\tvar nextString = curString.substr(0, curStrPos);\n\t\t\t\t\t\tthis.replaceText(nextString);\n\t\t\t\t\t\t// loop the function\n\t\t\t\t\t\tthis.typewrite(curString, curStrPos);\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * We're done typing all strings\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'doneTyping',\n\t\t\t\t\tvalue: function doneTyping(curString, curStrPos) {\n\t\t\t\t\t\tvar _this3 = this;\n\n\t\t\t\t\t\t// fires callback function\n\t\t\t\t\t\tthis.options.onStringTyped(this.arrayPos, this);\n\t\t\t\t\t\tthis.toggleBlinking(true);\n\t\t\t\t\t\t// is this the final string\n\t\t\t\t\t\tif (this.arrayPos === this.strings.length - 1) {\n\t\t\t\t\t\t\t// callback that occurs on the last typed string\n\t\t\t\t\t\t\tthis.complete();\n\t\t\t\t\t\t\t// quit if we wont loop back\n\t\t\t\t\t\t\tif (this.loop === false || this.curLoop === this.loopCount) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.timeout = setTimeout(function () {\n\t\t\t\t\t\t\t_this3.backspace(curString, curStrPos);\n\t\t\t\t\t\t}, this.backDelay);\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Backspaces 1 character at a time\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'backspace',\n\t\t\t\t\tvalue: function backspace(curString, curStrPos) {\n\t\t\t\t\t\tvar _this4 = this;\n\n\t\t\t\t\t\tif (this.pause.status === true) {\n\t\t\t\t\t\t\tthis.setPauseStatus(curString, curStrPos, true);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.fadeOut) return this.initFadeOut();\n\n\t\t\t\t\t\tthis.toggleBlinking(false);\n\t\t\t\t\t\tvar humanize = this.humanizer(this.backSpeed);\n\n\t\t\t\t\t\tthis.timeout = setTimeout(function () {\n\t\t\t\t\t\t\tcurStrPos = _htmlParserJs.htmlParser.backSpaceHtmlChars(curString, curStrPos, _this4);\n\t\t\t\t\t\t\t// replace text with base text + typed characters\n\t\t\t\t\t\t\tvar curStringAtPosition = curString.substr(0, curStrPos);\n\t\t\t\t\t\t\t_this4.replaceText(curStringAtPosition);\n\n\t\t\t\t\t\t\t// if smartBack is enabled\n\t\t\t\t\t\t\tif (_this4.smartBackspace) {\n\t\t\t\t\t\t\t\t// the remaining part of the current string is equal of the same part of the new string\n\t\t\t\t\t\t\t\tvar nextString = _this4.strings[_this4.arrayPos + 1];\n\t\t\t\t\t\t\t\tif (nextString && curStringAtPosition === nextString.substr(0, curStrPos)) {\n\t\t\t\t\t\t\t\t\t_this4.stopNum = curStrPos;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t_this4.stopNum = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// if the number (id of character in current string) is\n\t\t\t\t\t\t\t// less than the stop number, keep going\n\t\t\t\t\t\t\tif (curStrPos > _this4.stopNum) {\n\t\t\t\t\t\t\t\t// subtract characters one by one\n\t\t\t\t\t\t\t\tcurStrPos--;\n\t\t\t\t\t\t\t\t// loop the function\n\t\t\t\t\t\t\t\t_this4.backspace(curString, curStrPos);\n\t\t\t\t\t\t\t} else if (curStrPos <= _this4.stopNum) {\n\t\t\t\t\t\t\t\t// if the stop number has been reached, increase\n\t\t\t\t\t\t\t\t// array position to next string\n\t\t\t\t\t\t\t\t_this4.arrayPos++;\n\t\t\t\t\t\t\t\t// When looping, begin at the beginning after backspace complete\n\t\t\t\t\t\t\t\tif (_this4.arrayPos === _this4.strings.length) {\n\t\t\t\t\t\t\t\t\t_this4.arrayPos = 0;\n\t\t\t\t\t\t\t\t\t_this4.options.onLastStringBackspaced();\n\t\t\t\t\t\t\t\t\t_this4.shuffleStringsIfNeeded();\n\t\t\t\t\t\t\t\t\t_this4.begin();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t_this4.typewrite(_this4.strings[_this4.sequence[_this4.arrayPos]], curStrPos);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// humanized value for typing\n\t\t\t\t\t\t}, humanize);\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Full animation is complete\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'complete',\n\t\t\t\t\tvalue: function complete() {\n\t\t\t\t\t\tthis.options.onComplete(this);\n\t\t\t\t\t\tif (this.loop) {\n\t\t\t\t\t\t\tthis.curLoop++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.typingComplete = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Has the typing been stopped\n * @param {string} curString the current string in the strings array\n * @param {number} curStrPos the current position in the curString\n * @param {boolean} isTyping\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'setPauseStatus',\n\t\t\t\t\tvalue: function setPauseStatus(curString, curStrPos, isTyping) {\n\t\t\t\t\t\tthis.pause.typewrite = isTyping;\n\t\t\t\t\t\tthis.pause.curString = curString;\n\t\t\t\t\t\tthis.pause.curStrPos = curStrPos;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Toggle the blinking cursor\n * @param {boolean} isBlinking\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'toggleBlinking',\n\t\t\t\t\tvalue: function toggleBlinking(isBlinking) {\n\t\t\t\t\t\tif (!this.cursor) return;\n\t\t\t\t\t\t// if in paused state, don't toggle blinking a 2nd time\n\t\t\t\t\t\tif (this.pause.status) return;\n\t\t\t\t\t\tif (this.cursorBlinking === isBlinking) return;\n\t\t\t\t\t\tthis.cursorBlinking = isBlinking;\n\t\t\t\t\t\tif (isBlinking) {\n\t\t\t\t\t\t\tthis.cursor.classList.add('typed-cursor--blink');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.cursor.classList.remove('typed-cursor--blink');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Speed in MS to type\n * @param {number} speed\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'humanizer',\n\t\t\t\t\tvalue: function humanizer(speed) {\n\t\t\t\t\t\treturn Math.round(Math.random() * speed / 2) + speed;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Shuffle the sequence of the strings array\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'shuffleStringsIfNeeded',\n\t\t\t\t\tvalue: function shuffleStringsIfNeeded() {\n\t\t\t\t\t\tif (!this.shuffle) return;\n\t\t\t\t\t\tthis.sequence = this.sequence.sort(function () {\n\t\t\t\t\t\t\treturn Math.random() - 0.5;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Adds a CSS class to fade out current string\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'initFadeOut',\n\t\t\t\t\tvalue: function initFadeOut() {\n\t\t\t\t\t\tvar _this5 = this;\n\n\t\t\t\t\t\tthis.el.className += ' ' + this.fadeOutClass;\n\t\t\t\t\t\tif (this.cursor) this.cursor.className += ' ' + this.fadeOutClass;\n\t\t\t\t\t\treturn setTimeout(function () {\n\t\t\t\t\t\t\t_this5.arrayPos++;\n\t\t\t\t\t\t\t_this5.replaceText('');\n\n\t\t\t\t\t\t\t// Resets current string if end of loop reached\n\t\t\t\t\t\t\tif (_this5.strings.length > _this5.arrayPos) {\n\t\t\t\t\t\t\t\t_this5.typewrite(_this5.strings[_this5.sequence[_this5.arrayPos]], 0);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_this5.typewrite(_this5.strings[0], 0);\n\t\t\t\t\t\t\t\t_this5.arrayPos = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this.fadeOutDelay);\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Replaces current text in the HTML element\n * depending on element type\n * @param {string} str\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'replaceText',\n\t\t\t\t\tvalue: function replaceText(str) {\n\t\t\t\t\t\tif (this.attr) {\n\t\t\t\t\t\t\tthis.el.setAttribute(this.attr, str);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this.isInput) {\n\t\t\t\t\t\t\t\tthis.el.value = str;\n\t\t\t\t\t\t\t} else if (this.contentType === 'html') {\n\t\t\t\t\t\t\t\tthis.el.innerHTML = str;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.el.textContent = str;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * If using input elements, bind focus in order to\n * start and stop the animation\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'bindFocusEvents',\n\t\t\t\t\tvalue: function bindFocusEvents() {\n\t\t\t\t\t\tvar _this6 = this;\n\n\t\t\t\t\t\tif (!this.isInput) return;\n\t\t\t\t\t\tthis.el.addEventListener('focus', function (e) {\n\t\t\t\t\t\t\t_this6.stop();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.el.addEventListener('blur', function (e) {\n\t\t\t\t\t\t\tif (_this6.el.value && _this6.el.value.length !== 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_this6.start();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * On init, insert the cursor element\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'insertCursor',\n\t\t\t\t\tvalue: function insertCursor() {\n\t\t\t\t\t\tif (!this.showCursor) return;\n\t\t\t\t\t\tif (this.cursor) return;\n\t\t\t\t\t\tthis.cursor = document.createElement('span');\n\t\t\t\t\t\tthis.cursor.className = 'typed-cursor';\n\t\t\t\t\t\tthis.cursor.innerHTML = this.cursorChar;\n\t\t\t\t\t\tthis.el.parentNode && this.el.parentNode.insertBefore(this.cursor, this.el.nextSibling);\n\t\t\t\t\t}\n\t\t\t\t}]);\n\n\t\t\t\treturn Typed;\n\t\t\t}();\n\n\t\t\texports['default'] = Typed;\n\t\t\tmodule.exports = exports['default'];\n\n\t\t\t/***/\n\t\t},\n\t\t/* 1 */\n\t\t/***/function (module, exports, __webpack_require__) {\n\n\t\t\t'use strict';\n\n\t\t\tObject.defineProperty(exports, '__esModule', {\n\t\t\t\tvalue: true\n\t\t\t});\n\n\t\t\tvar _extends = Object.assign || function (target) {\n\t\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\t\tvar source = arguments[i];for (var key in source) {\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\t\t\t\t\ttarget[key] = source[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}return target;\n\t\t\t};\n\n\t\t\tvar _createClass = function () {\n\t\t\t\tfunction defineProperties(target, props) {\n\t\t\t\t\tfor (var i = 0; i < props.length; i++) {\n\t\t\t\t\t\tvar descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ('value' in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n\t\t\t\t\t}\n\t\t\t\t}return function (Constructor, protoProps, staticProps) {\n\t\t\t\t\tif (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n\t\t\t\t};\n\t\t\t}();\n\n\t\t\tfunction _interopRequireDefault(obj) {\n\t\t\t\treturn obj && obj.__esModule ? obj : { 'default': obj };\n\t\t\t}\n\n\t\t\tfunction _classCallCheck(instance, Constructor) {\n\t\t\t\tif (!(instance instanceof Constructor)) {\n\t\t\t\t\tthrow new TypeError('Cannot call a class as a function');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar _defaultsJs = __webpack_require__(2);\n\n\t\t\tvar _defaultsJs2 = _interopRequireDefault(_defaultsJs);\n\n\t\t\t/**\n * Initialize the Typed object\n */\n\n\t\t\tvar Initializer = function () {\n\t\t\t\tfunction Initializer() {\n\t\t\t\t\t_classCallCheck(this, Initializer);\n\t\t\t\t}\n\n\t\t\t\t_createClass(Initializer, [{\n\t\t\t\t\tkey: 'load',\n\n\t\t\t\t\t/**\n * Load up defaults & options on the Typed instance\n * @param {Typed} self instance of Typed\n * @param {object} options options object\n * @param {string} elementId HTML element ID _OR_ instance of HTML element\n * @private\n */\n\n\t\t\t\t\tvalue: function load(self, options, elementId) {\n\t\t\t\t\t\t// chosen element to manipulate text\n\t\t\t\t\t\tif (typeof elementId === 'string') {\n\t\t\t\t\t\t\tself.el = document.querySelector(elementId);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.el = elementId;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.options = _extends({}, _defaultsJs2['default'], options);\n\n\t\t\t\t\t\t// attribute to type into\n\t\t\t\t\t\tself.isInput = self.el.tagName.toLowerCase() === 'input';\n\t\t\t\t\t\tself.attr = self.options.attr;\n\t\t\t\t\t\tself.bindInputFocusEvents = self.options.bindInputFocusEvents;\n\n\t\t\t\t\t\t// show cursor\n\t\t\t\t\t\tself.showCursor = self.isInput ? false : self.options.showCursor;\n\n\t\t\t\t\t\t// custom cursor\n\t\t\t\t\t\tself.cursorChar = self.options.cursorChar;\n\n\t\t\t\t\t\t// Is the cursor blinking\n\t\t\t\t\t\tself.cursorBlinking = true;\n\n\t\t\t\t\t\t// text content of element\n\t\t\t\t\t\tself.elContent = self.attr ? self.el.getAttribute(self.attr) : self.el.textContent;\n\n\t\t\t\t\t\t// html or plain text\n\t\t\t\t\t\tself.contentType = self.options.contentType;\n\n\t\t\t\t\t\t// typing speed\n\t\t\t\t\t\tself.typeSpeed = self.options.typeSpeed;\n\n\t\t\t\t\t\t// add a delay before typing starts\n\t\t\t\t\t\tself.startDelay = self.options.startDelay;\n\n\t\t\t\t\t\t// backspacing speed\n\t\t\t\t\t\tself.backSpeed = self.options.backSpeed;\n\n\t\t\t\t\t\t// only backspace what doesn't match the previous string\n\t\t\t\t\t\tself.smartBackspace = self.options.smartBackspace;\n\n\t\t\t\t\t\t// amount of time to wait before backspacing\n\t\t\t\t\t\tself.backDelay = self.options.backDelay;\n\n\t\t\t\t\t\t// Fade out instead of backspace\n\t\t\t\t\t\tself.fadeOut = self.options.fadeOut;\n\t\t\t\t\t\tself.fadeOutClass = self.options.fadeOutClass;\n\t\t\t\t\t\tself.fadeOutDelay = self.options.fadeOutDelay;\n\n\t\t\t\t\t\t// variable to check whether typing is currently paused\n\t\t\t\t\t\tself.isPaused = false;\n\n\t\t\t\t\t\t// input strings of text\n\t\t\t\t\t\tself.strings = self.options.strings.map(function (s) {\n\t\t\t\t\t\t\treturn s.trim();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// div containing strings\n\t\t\t\t\t\tif (typeof self.options.stringsElement === 'string') {\n\t\t\t\t\t\t\tself.stringsElement = document.querySelector(self.options.stringsElement);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.stringsElement = self.options.stringsElement;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (self.stringsElement) {\n\t\t\t\t\t\t\tself.strings = [];\n\t\t\t\t\t\t\tself.stringsElement.style.display = 'none';\n\t\t\t\t\t\t\tvar strings = Array.prototype.slice.apply(self.stringsElement.children);\n\t\t\t\t\t\t\tvar stringsLength = strings.length;\n\n\t\t\t\t\t\t\tif (stringsLength) {\n\t\t\t\t\t\t\t\tfor (var i = 0; i < stringsLength; i += 1) {\n\t\t\t\t\t\t\t\t\tvar stringEl = strings[i];\n\t\t\t\t\t\t\t\t\tself.strings.push(stringEl.innerHTML.trim());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// character number position of current string\n\t\t\t\t\t\tself.strPos = 0;\n\n\t\t\t\t\t\t// current array position\n\t\t\t\t\t\tself.arrayPos = 0;\n\n\t\t\t\t\t\t// index of string to stop backspacing on\n\t\t\t\t\t\tself.stopNum = 0;\n\n\t\t\t\t\t\t// Looping logic\n\t\t\t\t\t\tself.loop = self.options.loop;\n\t\t\t\t\t\tself.loopCount = self.options.loopCount;\n\t\t\t\t\t\tself.curLoop = 0;\n\n\t\t\t\t\t\t// shuffle the strings\n\t\t\t\t\t\tself.shuffle = self.options.shuffle;\n\t\t\t\t\t\t// the order of strings\n\t\t\t\t\t\tself.sequence = [];\n\n\t\t\t\t\t\tself.pause = {\n\t\t\t\t\t\t\tstatus: false,\n\t\t\t\t\t\t\ttypewrite: true,\n\t\t\t\t\t\t\tcurString: '',\n\t\t\t\t\t\t\tcurStrPos: 0\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// When the typing is complete (when not looped)\n\t\t\t\t\t\tself.typingComplete = false;\n\n\t\t\t\t\t\t// Set the order in which the strings are typed\n\t\t\t\t\t\tfor (var i in self.strings) {\n\t\t\t\t\t\t\tself.sequence[i] = i;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If there is some text in the element\n\t\t\t\t\t\tself.currentElContent = this.getCurrentElContent(self);\n\n\t\t\t\t\t\tself.autoInsertCss = self.options.autoInsertCss;\n\n\t\t\t\t\t\tthis.appendAnimationCss(self);\n\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'getCurrentElContent',\n\t\t\t\t\tvalue: function getCurrentElContent(self) {\n\t\t\t\t\t\tvar elContent = '';\n\t\t\t\t\t\tif (self.attr) {\n\t\t\t\t\t\t\telContent = self.el.getAttribute(self.attr);\n\t\t\t\t\t\t} else if (self.isInput) {\n\t\t\t\t\t\t\telContent = self.el.value;\n\t\t\t\t\t\t} else if (self.contentType === 'html') {\n\t\t\t\t\t\t\telContent = self.el.innerHTML;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telContent = self.el.textContent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn elContent;\n\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'appendAnimationCss',\n\t\t\t\t\tvalue: function appendAnimationCss(self) {\n\t\t\t\t\t\tvar cssDataName = 'data-typed-js-css';\n\t\t\t\t\t\tif (!self.autoInsertCss) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!self.showCursor && !self.fadeOut) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (document.querySelector('[' + cssDataName + ']')) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar css = document.createElement('style');\n\t\t\t\t\t\tcss.type = 'text/css';\n\t\t\t\t\t\tcss.setAttribute(cssDataName, true);\n\n\t\t\t\t\t\tvar innerCss = '';\n\t\t\t\t\t\tif (self.showCursor) {\n\t\t\t\t\t\t\tinnerCss += '\\n .typed-cursor{\\n opacity: 1;\\n }\\n .typed-cursor.typed-cursor--blink{\\n animation: typedjsBlink 0.7s infinite;\\n -webkit-animation: typedjsBlink 0.7s infinite;\\n animation: typedjsBlink 0.7s infinite;\\n }\\n @keyframes typedjsBlink{\\n 50% { opacity: 0.0; }\\n }\\n @-webkit-keyframes typedjsBlink{\\n 0% { opacity: 1; }\\n 50% { opacity: 0.0; }\\n 100% { opacity: 1; }\\n }\\n ';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (self.fadeOut) {\n\t\t\t\t\t\t\tinnerCss += '\\n .typed-fade-out{\\n opacity: 0;\\n transition: opacity .25s;\\n }\\n .typed-cursor.typed-cursor--blink.typed-fade-out{\\n -webkit-animation: 0;\\n animation: 0;\\n }\\n ';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (css.length === 0) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcss.innerHTML = innerCss;\n\t\t\t\t\t\tdocument.body.appendChild(css);\n\t\t\t\t\t}\n\t\t\t\t}]);\n\n\t\t\t\treturn Initializer;\n\t\t\t}();\n\n\t\t\texports['default'] = Initializer;\n\t\t\tvar initializer = new Initializer();\n\t\t\texports.initializer = initializer;\n\n\t\t\t/***/\n\t\t},\n\t\t/* 2 */\n\t\t/***/function (module, exports) {\n\n\t\t\t/**\n * Defaults & options\n * @returns {object} Typed defaults & options\n * @public\n */\n\n\t\t\t'use strict';\n\n\t\t\tObject.defineProperty(exports, '__esModule', {\n\t\t\t\tvalue: true\n\t\t\t});\n\t\t\tvar defaults = {\n\t\t\t\t/**\n * @property {array} strings strings to be typed\n * @property {string} stringsElement ID of element containing string children\n */\n\t\t\t\tstrings: ['These are the default values...', 'You know what you should do?', 'Use your own!', 'Have a great day!'],\n\t\t\t\tstringsElement: null,\n\n\t\t\t\t/**\n * @property {number} typeSpeed type speed in milliseconds\n */\n\t\t\t\ttypeSpeed: 0,\n\n\t\t\t\t/**\n * @property {number} startDelay time before typing starts in milliseconds\n */\n\t\t\t\tstartDelay: 0,\n\n\t\t\t\t/**\n * @property {number} backSpeed backspacing speed in milliseconds\n */\n\t\t\t\tbackSpeed: 0,\n\n\t\t\t\t/**\n * @property {boolean} smartBackspace only backspace what doesn't match the previous string\n */\n\t\t\t\tsmartBackspace: true,\n\n\t\t\t\t/**\n * @property {boolean} shuffle shuffle the strings\n */\n\t\t\t\tshuffle: false,\n\n\t\t\t\t/**\n * @property {number} backDelay time before backspacing in milliseconds\n */\n\t\t\t\tbackDelay: 700,\n\n\t\t\t\t/**\n * @property {boolean} fadeOut Fade out instead of backspace\n * @property {string} fadeOutClass css class for fade animation\n * @property {boolean} fadeOutDelay Fade out delay in milliseconds\n */\n\t\t\t\tfadeOut: false,\n\t\t\t\tfadeOutClass: 'typed-fade-out',\n\t\t\t\tfadeOutDelay: 500,\n\n\t\t\t\t/**\n * @property {boolean} loop loop strings\n * @property {number} loopCount amount of loops\n */\n\t\t\t\tloop: false,\n\t\t\t\tloopCount: Infinity,\n\n\t\t\t\t/**\n * @property {boolean} showCursor show cursor\n * @property {string} cursorChar character for cursor\n * @property {boolean} autoInsertCss insert CSS for cursor and fadeOut into HTML \n */\n\t\t\t\tshowCursor: true,\n\t\t\t\tcursorChar: '|',\n\t\t\t\tautoInsertCss: true,\n\n\t\t\t\t/**\n * @property {string} attr attribute for typing\n * Ex: input placeholder, value, or just HTML text\n */\n\t\t\t\tattr: null,\n\n\t\t\t\t/**\n * @property {boolean} bindInputFocusEvents bind to focus and blur if el is text input\n */\n\t\t\t\tbindInputFocusEvents: false,\n\n\t\t\t\t/**\n * @property {string} contentType 'html' or 'null' for plaintext\n */\n\t\t\t\tcontentType: 'html',\n\n\t\t\t\t/**\n * All typing is complete\n * @param {Typed} self\n */\n\t\t\t\tonComplete: function onComplete(self) {},\n\n\t\t\t\t/**\n * Before each string is typed\n * @param {number} arrayPos\n * @param {Typed} self\n */\n\t\t\t\tpreStringTyped: function preStringTyped(arrayPos, self) {},\n\n\t\t\t\t/**\n * After each string is typed\n * @param {number} arrayPos\n * @param {Typed} self\n */\n\t\t\t\tonStringTyped: function onStringTyped(arrayPos, self) {},\n\n\t\t\t\t/**\n * During looping, after last string is typed\n * @param {Typed} self\n */\n\t\t\t\tonLastStringBackspaced: function onLastStringBackspaced(self) {},\n\n\t\t\t\t/**\n * Typing has been stopped\n * @param {number} arrayPos\n * @param {Typed} self\n */\n\t\t\t\tonTypingPaused: function onTypingPaused(arrayPos, self) {},\n\n\t\t\t\t/**\n * Typing has been started after being stopped\n * @param {number} arrayPos\n * @param {Typed} self\n */\n\t\t\t\tonTypingResumed: function onTypingResumed(arrayPos, self) {},\n\n\t\t\t\t/**\n * After reset\n * @param {Typed} self\n */\n\t\t\t\tonReset: function onReset(self) {},\n\n\t\t\t\t/**\n * After stop\n * @param {number} arrayPos\n * @param {Typed} self\n */\n\t\t\t\tonStop: function onStop(arrayPos, self) {},\n\n\t\t\t\t/**\n * After start\n * @param {number} arrayPos\n * @param {Typed} self\n */\n\t\t\t\tonStart: function onStart(arrayPos, self) {},\n\n\t\t\t\t/**\n * After destroy\n * @param {Typed} self\n */\n\t\t\t\tonDestroy: function onDestroy(self) {}\n\t\t\t};\n\n\t\t\texports['default'] = defaults;\n\t\t\tmodule.exports = exports['default'];\n\n\t\t\t/***/\n\t\t},\n\t\t/* 3 */\n\t\t/***/function (module, exports) {\n\n\t\t\t/**\n * TODO: These methods can probably be combined somehow\n * Parse HTML tags & HTML Characters\n */\n\n\t\t\t'use strict';\n\n\t\t\tObject.defineProperty(exports, '__esModule', {\n\t\t\t\tvalue: true\n\t\t\t});\n\n\t\t\tvar _createClass = function () {\n\t\t\t\tfunction defineProperties(target, props) {\n\t\t\t\t\tfor (var i = 0; i < props.length; i++) {\n\t\t\t\t\t\tvar descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ('value' in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n\t\t\t\t\t}\n\t\t\t\t}return function (Constructor, protoProps, staticProps) {\n\t\t\t\t\tif (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n\t\t\t\t};\n\t\t\t}();\n\n\t\t\tfunction _classCallCheck(instance, Constructor) {\n\t\t\t\tif (!(instance instanceof Constructor)) {\n\t\t\t\t\tthrow new TypeError('Cannot call a class as a function');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar HTMLParser = function () {\n\t\t\t\tfunction HTMLParser() {\n\t\t\t\t\t_classCallCheck(this, HTMLParser);\n\t\t\t\t}\n\n\t\t\t\t_createClass(HTMLParser, [{\n\t\t\t\t\tkey: 'typeHtmlChars',\n\n\t\t\t\t\t/**\n * Type HTML tags & HTML Characters\n * @param {string} curString Current string\n * @param {number} curStrPos Position in current string\n * @param {Typed} self instance of Typed\n * @returns {number} a new string position\n * @private\n */\n\n\t\t\t\t\tvalue: function typeHtmlChars(curString, curStrPos, self) {\n\t\t\t\t\t\tif (self.contentType !== 'html') return curStrPos;\n\t\t\t\t\t\tvar curChar = curString.substr(curStrPos).charAt(0);\n\t\t\t\t\t\tif (curChar === '<' || curChar === '&') {\n\t\t\t\t\t\t\tvar endTag = '';\n\t\t\t\t\t\t\tif (curChar === '<') {\n\t\t\t\t\t\t\t\tendTag = '>';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tendTag = ';';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twhile (curString.substr(curStrPos + 1).charAt(0) !== endTag) {\n\t\t\t\t\t\t\t\tcurStrPos++;\n\t\t\t\t\t\t\t\tif (curStrPos + 1 > curString.length) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcurStrPos++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn curStrPos;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n * Backspace HTML tags and HTML Characters\n * @param {string} curString Current string\n * @param {number} curStrPos Position in current string\n * @param {Typed} self instance of Typed\n * @returns {number} a new string position\n * @private\n */\n\t\t\t\t}, {\n\t\t\t\t\tkey: 'backSpaceHtmlChars',\n\t\t\t\t\tvalue: function backSpaceHtmlChars(curString, curStrPos, self) {\n\t\t\t\t\t\tif (self.contentType !== 'html') return curStrPos;\n\t\t\t\t\t\tvar curChar = curString.substr(curStrPos).charAt(0);\n\t\t\t\t\t\tif (curChar === '>' || curChar === ';') {\n\t\t\t\t\t\t\tvar endTag = '';\n\t\t\t\t\t\t\tif (curChar === '>') {\n\t\t\t\t\t\t\t\tendTag = '<';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tendTag = '&';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twhile (curString.substr(curStrPos - 1).charAt(0) !== endTag) {\n\t\t\t\t\t\t\t\tcurStrPos--;\n\t\t\t\t\t\t\t\tif (curStrPos < 0) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcurStrPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn curStrPos;\n\t\t\t\t\t}\n\t\t\t\t}]);\n\n\t\t\t\treturn HTMLParser;\n\t\t\t}();\n\n\t\t\texports['default'] = HTMLParser;\n\t\t\tvar htmlParser = new HTMLParser();\n\t\t\texports.htmlParser = htmlParser;\n\n\t\t\t/***/\n\t\t}]\n\t\t/******/)\n\t);\n});\n;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3R5cGVkLmpzL2xpYi90eXBlZC5qcz9kOTdkIl0sIm5hbWVzIjpbIndlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwibW9kdWxlcyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpZCIsImxvYWRlZCIsImNhbGwiLCJtIiwiYyIsInAiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiX2NyZWF0ZUNsYXNzIiwiZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiaSIsImxlbmd0aCIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJrZXkiLCJDb25zdHJ1Y3RvciIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsInByb3RvdHlwZSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiVHlwZUVycm9yIiwiX2luaXRpYWxpemVySnMiLCJfaHRtbFBhcnNlckpzIiwiVHlwZWQiLCJlbGVtZW50SWQiLCJvcHRpb25zIiwiaW5pdGlhbGl6ZXIiLCJsb2FkIiwiYmVnaW4iLCJ0b2dnbGUiLCJwYXVzZSIsInN0YXR1cyIsInN0YXJ0Iiwic3RvcCIsInR5cGluZ0NvbXBsZXRlIiwidG9nZ2xlQmxpbmtpbmciLCJvblN0b3AiLCJhcnJheVBvcyIsInR5cGV3cml0ZSIsImN1clN0cmluZyIsImN1clN0clBvcyIsImJhY2tzcGFjZSIsIm9uU3RhcnQiLCJkZXN0cm95IiwicmVzZXQiLCJvbkRlc3Ryb3kiLCJyZXN0YXJ0IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiY2xlYXJJbnRlcnZhbCIsInRpbWVvdXQiLCJyZXBsYWNlVGV4dCIsImN1cnNvciIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInN0clBvcyIsImN1ckxvb3AiLCJpbnNlcnRDdXJzb3IiLCJvblJlc2V0IiwiX3RoaXMiLCJzaHVmZmxlU3RyaW5nc0lmTmVlZGVkIiwiYmluZElucHV0Rm9jdXNFdmVudHMiLCJiaW5kRm9jdXNFdmVudHMiLCJzZXRUaW1lb3V0IiwiY3VycmVudEVsQ29udGVudCIsInN0cmluZ3MiLCJzZXF1ZW5jZSIsInN0YXJ0RGVsYXkiLCJfdGhpczIiLCJmYWRlT3V0IiwiZWwiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsImZhZGVPdXRDbGFzcyIsInJlbW92ZSIsImh1bWFuaXplIiwiaHVtYW5pemVyIiwidHlwZVNwZWVkIiwibnVtQ2hhcnMiLCJzZXRQYXVzZVN0YXR1cyIsImh0bWxQYXJzZXIiLCJ0eXBlSHRtbENoYXJzIiwicGF1c2VUaW1lIiwic3Vic3RyIiwiY2hhckF0IiwidGVzdCIsInNraXAiLCJleGVjIiwicGFyc2VJbnQiLCJ0ZW1wb3JhcnlQYXVzZSIsIm9uVHlwaW5nUGF1c2VkIiwic3Vic3RyaW5nIiwic3RyaW5nQmVmb3JlU2tpcCIsInN0cmluZ1NraXBwZWQiLCJzdHJpbmdBZnRlclNraXAiLCJkb25lVHlwaW5nIiwia2VlcFR5cGluZyIsIm9uVHlwaW5nUmVzdW1lZCIsInByZVN0cmluZ1R5cGVkIiwibmV4dFN0cmluZyIsIl90aGlzMyIsIm9uU3RyaW5nVHlwZWQiLCJjb21wbGV0ZSIsImxvb3AiLCJsb29wQ291bnQiLCJiYWNrRGVsYXkiLCJfdGhpczQiLCJpbml0RmFkZU91dCIsImJhY2tTcGVlZCIsImJhY2tTcGFjZUh0bWxDaGFycyIsImN1clN0cmluZ0F0UG9zaXRpb24iLCJzbWFydEJhY2tzcGFjZSIsInN0b3BOdW0iLCJvbkxhc3RTdHJpbmdCYWNrc3BhY2VkIiwib25Db21wbGV0ZSIsImlzVHlwaW5nIiwiaXNCbGlua2luZyIsImN1cnNvckJsaW5raW5nIiwiYWRkIiwic3BlZWQiLCJNYXRoIiwicm91bmQiLCJyYW5kb20iLCJzaHVmZmxlIiwic29ydCIsIl90aGlzNSIsImNsYXNzTmFtZSIsImZhZGVPdXREZWxheSIsInN0ciIsImF0dHIiLCJzZXRBdHRyaWJ1dGUiLCJpc0lucHV0IiwiY29udGVudFR5cGUiLCJpbm5lckhUTUwiLCJ0ZXh0Q29udGVudCIsIl90aGlzNiIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwic2hvd0N1cnNvciIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImN1cnNvckNoYXIiLCJpbnNlcnRCZWZvcmUiLCJuZXh0U2libGluZyIsIl9leHRlbmRzIiwiYXNzaWduIiwic291cmNlIiwiaGFzT3duUHJvcGVydHkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib2JqIiwiX19lc01vZHVsZSIsIl9kZWZhdWx0c0pzIiwiX2RlZmF1bHRzSnMyIiwiSW5pdGlhbGl6ZXIiLCJzZWxmIiwicXVlcnlTZWxlY3RvciIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsImVsQ29udGVudCIsImdldEF0dHJpYnV0ZSIsImlzUGF1c2VkIiwibWFwIiwicyIsInRyaW0iLCJzdHJpbmdzRWxlbWVudCIsInN0eWxlIiwiZGlzcGxheSIsIkFycmF5Iiwic2xpY2UiLCJhcHBseSIsImNoaWxkcmVuIiwic3RyaW5nc0xlbmd0aCIsInN0cmluZ0VsIiwicHVzaCIsImdldEN1cnJlbnRFbENvbnRlbnQiLCJhdXRvSW5zZXJ0Q3NzIiwiYXBwZW5kQW5pbWF0aW9uQ3NzIiwiY3NzRGF0YU5hbWUiLCJjc3MiLCJ0eXBlIiwiaW5uZXJDc3MiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJkZWZhdWx0cyIsIkluZmluaXR5IiwiSFRNTFBhcnNlciIsImN1ckNoYXIiLCJlbmRUYWciXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7Ozs7OztBQVNBLENBQUMsU0FBU0EsZ0NBQVQsQ0FBMENDLElBQTFDLEVBQWdEQyxPQUFoRCxFQUF5RDtBQUN6RCxLQUFHLGdDQUFPQyxPQUFQLE9BQW1CLFFBQW5CLElBQStCLGdDQUFPQyxNQUFQLE9BQWtCLFFBQXBELEVBQ0NBLE9BQU9ELE9BQVAsR0FBaUJELFNBQWpCLENBREQsS0FFSyxJQUFHLElB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VixDQUFpQjNDLFlBQVksQ0FBN0IsRUFBZ0M0QyxNQUFoQyxDQUF1QyxDQUF2QyxNQUE4Q3VHLE1BQXJELEVBQTZEO0FBQzNEbko7QUFDQSxZQUFJQSxZQUFZLENBQWhCLEVBQW1CO0FBQ2pCO0FBQ0Q7QUFDRjtBQUNEQTtBQUNEO0FBQ0QsYUFBT0EsU0FBUDtBQUNEO0FBckJBLEtBekNzQixDQUF6Qjs7QUFpRUEsV0FBT2lKLFVBQVA7QUFDRCxJQXZFZ0IsRUFBakI7O0FBeUVBck0sV0FBUSxTQUFSLElBQXFCcU0sVUFBckI7QUFDQSxPQUFJekcsYUFBYSxJQUFJeUcsVUFBSixFQUFqQjtBQUNBck0sV0FBUTRGLFVBQVIsR0FBcUJBLFVBQXJCOztBQUVEO0FBQU8sR0FwOUJHO0FBcTlCVixVQS8vQmdCO0FBQWhCO0FBZ2dDQyxDQTFnQ0Q7QUEyZ0NBLEMiLCJmaWxlIjoiNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogXG4gKiAgIHR5cGVkLmpzIC0gQSBKYXZhU2NyaXB0IFR5cGluZyBBbmltYXRpb24gTGlicmFyeVxuICogICBBdXRob3I6IE1hdHQgQm9sZHQgPG1lQG1hdHRib2xkdC5jb20+XG4gKiAgIFZlcnNpb246IHYyLjAuOVxuICogICBVcmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXR0Ym9sZHQvdHlwZWQuanNcbiAqICAgTGljZW5zZShzKTogTUlUXG4gKiBcbiAqL1xuKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiVHlwZWRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiVHlwZWRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cdFxuXHR2YXIgX2luaXRpYWxpemVySnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0dmFyIF9odG1sUGFyc2VySnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0LyoqXG5cdCAqIFdlbGNvbWUgdG8gVHlwZWQuanMhXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBlbGVtZW50SWQgSFRNTCBlbGVtZW50IElEIF9PUl8gSFRNTCBlbGVtZW50XG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIG9wdGlvbnMgb2JqZWN0XG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IGEgbmV3IFR5cGVkIG9iamVjdFxuXHQgKi9cblx0XG5cdHZhciBUeXBlZCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgZnVuY3Rpb24gVHlwZWQoZWxlbWVudElkLCBvcHRpb25zKSB7XG5cdCAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHlwZWQpO1xuXHRcblx0ICAgIC8vIEluaXRpYWxpemUgaXQgdXBcblx0ICAgIF9pbml0aWFsaXplckpzLmluaXRpYWxpemVyLmxvYWQodGhpcywgb3B0aW9ucywgZWxlbWVudElkKTtcblx0ICAgIC8vIEFsbCBzeXN0ZW1zIGdvIVxuXHQgICAgdGhpcy5iZWdpbigpO1xuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogVG9nZ2xlIHN0YXJ0KCkgYW5kIHN0b3AoKSBvZiB0aGUgVHlwZWQgaW5zdGFuY2Vcblx0ICAgKiBAcHVibGljXG5cdCAgICovXG5cdFxuXHQgIF9jcmVhdGVDbGFzcyhUeXBlZCwgW3tcblx0ICAgIGtleTogJ3RvZ2dsZScsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gdG9nZ2xlKCkge1xuXHQgICAgICB0aGlzLnBhdXNlLnN0YXR1cyA/IHRoaXMuc3RhcnQoKSA6IHRoaXMuc3RvcCgpO1xuXHQgICAgfVxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogU3RvcCB0eXBpbmcgLyBiYWNrc3BhY2luZyBhbmQgZW5hYmxlIGN1cnNvciBibGlua2luZ1xuXHQgICAgICogQHB1YmxpY1xuXHQgICAgICovXG5cdCAgfSwge1xuXHQgICAga2V5OiAnc3RvcCcsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gc3RvcCgpIHtcblx0ICAgICAgaWYgKHRoaXMudHlwaW5nQ29tcGxldGUpIHJldHVybjtcblx0ICAgICAgaWYgKHRoaXMucGF1c2Uuc3RhdHVzKSByZXR1cm47XG5cdCAgICAgIHRoaXMudG9nZ2xlQmxpbmtpbmcodHJ1ZSk7XG5cdCAgICAgIHRoaXMucGF1c2Uuc3RhdHVzID0gdHJ1ZTtcblx0ICAgICAgdGhpcy5vcHRpb25zLm9uU3RvcCh0aGlzLmFycmF5UG9zLCB0aGlzKTtcblx0ICAgIH1cblx0XG5cdCAgICAvKipcblx0ICAgICAqIFN0YXJ0IHR5cGluZyAvIGJhY2tzcGFjaW5nIGFmdGVyIGJlaW5nIHN0b3BwZWRcblx0ICAgICAqIEBwdWJsaWNcblx0ICAgICAqL1xuXHQgIH0sIHtcblx0ICAgIGtleTogJ3N0YXJ0Jyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydCgpIHtcblx0ICAgICAgaWYgKHRoaXMudHlwaW5nQ29tcGxldGUpIHJldHVybjtcblx0ICAgICAgaWYgKCF0aGlzLnBhdXNlLnN0YXR1cykgcmV0dXJuO1xuXHQgICAgICB0aGlzLnBhdXNlLnN0YXR1cyA9IGZhbHNlO1xuXHQgICAgICBpZiAodGhpcy5wYXVzZS50eXBld3JpdGUpIHtcblx0ICAgICAgICB0aGlzLnR5cGV3cml0ZSh0aGlzLnBhdXNlLmN1clN0cmluZywgdGhpcy5wYXVzZS5jdXJTdHJQb3MpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXMuYmFja3NwYWNlKHRoaXMucGF1c2UuY3VyU3RyaW5nLCB0aGlzLnBhdXNlLmN1clN0clBvcyk7XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5vcHRpb25zLm9uU3RhcnQodGhpcy5hcnJheVBvcywgdGhpcyk7XG5cdCAgICB9XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBEZXN0cm95IHRoaXMgaW5zdGFuY2Ugb2YgVHlwZWRcblx0ICAgICAqIEBwdWJsaWNcblx0ICAgICAqL1xuXHQgIH0sIHtcblx0ICAgIGtleTogJ2Rlc3Ryb3knLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG5cdCAgICAgIHRoaXMucmVzZXQoZmFsc2UpO1xuXHQgICAgICB0aGlzLm9wdGlvbnMub25EZXN0cm95KHRoaXMpO1xuXHQgICAgfVxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogUmVzZXQgVHlwZWQgYW5kIG9wdGlvbmFsbHkgcmVzdGFydHNcblx0ICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVzdGFydFxuXHQgICAgICogQHB1YmxpY1xuXHQgICAgICovXG5cdCAgfSwge1xuXHQgICAga2V5OiAncmVzZXQnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0KCkge1xuXHQgICAgICB2YXIgcmVzdGFydCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHRydWUgOiBhcmd1bWVudHNbMF07XG5cdFxuXHQgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZW91dCk7XG5cdCAgICAgIHRoaXMucmVwbGFjZVRleHQoJycpO1xuXHQgICAgICBpZiAodGhpcy5jdXJzb3IgJiYgdGhpcy5jdXJzb3IucGFyZW50Tm9kZSkge1xuXHQgICAgICAgIHRoaXMuY3Vyc29yLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5jdXJzb3IpO1xuXHQgICAgICAgIHRoaXMuY3Vyc29yID0gbnVsbDtcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLnN0clBvcyA9IDA7XG5cdCAgICAgIHRoaXMuYXJyYXlQb3MgPSAwO1xuXHQgICAgICB0aGlzLmN1ckxvb3AgPSAwO1xuXHQgICAgICBpZiAocmVzdGFydCkge1xuXHQgICAgICAgIHRoaXMuaW5zZXJ0Q3Vyc29yKCk7XG5cdCAgICAgICAgdGhpcy5vcHRpb25zLm9uUmVzZXQodGhpcyk7XG5cdCAgICAgICAgdGhpcy5iZWdpbigpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBCZWdpbnMgdGhlIHR5cGluZyBhbmltYXRpb25cblx0ICAgICAqIEBwcml2YXRlXG5cdCAgICAgKi9cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdiZWdpbicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gYmVnaW4oKSB7XG5cdCAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cdFxuXHQgICAgICB0aGlzLnR5cGluZ0NvbXBsZXRlID0gZmFsc2U7XG5cdCAgICAgIHRoaXMuc2h1ZmZsZVN0cmluZ3NJZk5lZWRlZCh0aGlzKTtcblx0ICAgICAgdGhpcy5pbnNlcnRDdXJzb3IoKTtcblx0ICAgICAgaWYgKHRoaXMuYmluZElucHV0Rm9jdXNFdmVudHMpIHRoaXMuYmluZEZvY3VzRXZlbnRzKCk7XG5cdCAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIHNvbWUgdGV4dCBpbiB0aGUgZWxlbWVudCwgaWYgeWVzIHN0YXJ0IGJ5IGJhY2tzcGFjaW5nIHRoZSBkZWZhdWx0IG1lc3NhZ2Vcblx0ICAgICAgICBpZiAoIV90aGlzLmN1cnJlbnRFbENvbnRlbnQgfHwgX3RoaXMuY3VycmVudEVsQ29udGVudC5sZW5ndGggPT09IDApIHtcblx0ICAgICAgICAgIF90aGlzLnR5cGV3cml0ZShfdGhpcy5zdHJpbmdzW190aGlzLnNlcXVlbmNlW190aGlzLmFycmF5UG9zXV0sIF90aGlzLnN0clBvcyk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIC8vIFN0YXJ0IHR5cGluZ1xuXHQgICAgICAgICAgX3RoaXMuYmFja3NwYWNlKF90aGlzLmN1cnJlbnRFbENvbnRlbnQsIF90aGlzLmN1cnJlbnRFbENvbnRlbnQubGVuZ3RoKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0sIHRoaXMuc3RhcnREZWxheSk7XG5cdCAgICB9XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBDYWxsZWQgZm9yIGVhY2ggY2hhcmFjdGVyIHR5cGVkXG5cdCAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3VyU3RyaW5nIHRoZSBjdXJyZW50IHN0cmluZyBpbiB0aGUgc3RyaW5ncyBhcnJheVxuXHQgICAgICogQHBhcmFtIHtudW1iZXJ9IGN1clN0clBvcyB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgY3VyU3RyaW5nXG5cdCAgICAgKiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdCAgfSwge1xuXHQgICAga2V5OiAndHlwZXdyaXRlJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiB0eXBld3JpdGUoY3VyU3RyaW5nLCBjdXJTdHJQb3MpIHtcblx0ICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgICBpZiAodGhpcy5mYWRlT3V0ICYmIHRoaXMuZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuZmFkZU91dENsYXNzKSkge1xuXHQgICAgICAgIHRoaXMuZWwuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmZhZGVPdXRDbGFzcyk7XG5cdCAgICAgICAgaWYgKHRoaXMuY3Vyc29yKSB0aGlzLmN1cnNvci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZmFkZU91dENsYXNzKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgdmFyIGh1bWFuaXplID0gdGhpcy5odW1hbml6ZXIodGhpcy50eXBlU3BlZWQpO1xuXHQgICAgICB2YXIgbnVtQ2hhcnMgPSAxO1xuXHRcblx0ICAgICAgaWYgKHRoaXMucGF1c2Uuc3RhdHVzID09PSB0cnVlKSB7XG5cdCAgICAgICAgdGhpcy5zZXRQYXVzZVN0YXR1cyhjdXJTdHJpbmcsIGN1clN0clBvcywgdHJ1ZSk7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICAvLyBjb250YWluIHR5cGluZyBmdW5jdGlvbiBpbiBhIHRpbWVvdXQgaHVtYW5pemUnZCBkZWxheVxuXHQgICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAvLyBza2lwIG92ZXIgYW55IEhUTUwgY2hhcnNcblx0ICAgICAgICBjdXJTdHJQb3MgPSBfaHRtbFBhcnNlckpzLmh0bWxQYXJzZXIudHlwZUh0bWxDaGFycyhjdXJTdHJpbmcsIGN1clN0clBvcywgX3RoaXMyKTtcblx0XG5cdCAgICAgICAgdmFyIHBhdXNlVGltZSA9IDA7XG5cdCAgICAgICAgdmFyIHN1YnN0ciA9IGN1clN0cmluZy5zdWJzdHIoY3VyU3RyUG9zKTtcblx0ICAgICAgICAvLyBjaGVjayBmb3IgYW4gZXNjYXBlIGNoYXJhY3RlciBiZWZvcmUgYSBwYXVzZSB2YWx1ZVxuXHQgICAgICAgIC8vIGZvcm1hdDogXFxeXFxkKyAuLiBlZzogXjEwMDAgLi4gc2hvdWxkIGJlIGFibGUgdG8gcHJpbnQgdGhlIF4gdG9vIHVzaW5nIF5eXG5cdCAgICAgICAgLy8gc2luZ2xlIF4gYXJlIHJlbW92ZWQgZnJvbSBzdHJpbmdcblx0ICAgICAgICBpZiAoc3Vic3RyLmNoYXJBdCgwKSA9PT0gJ14nKSB7XG5cdCAgICAgICAgICBpZiAoL15cXF5cXGQrLy50ZXN0KHN1YnN0cikpIHtcblx0ICAgICAgICAgICAgdmFyIHNraXAgPSAxOyAvLyBza2lwIGF0IGxlYXN0IDFcblx0ICAgICAgICAgICAgc3Vic3RyID0gL1xcZCsvLmV4ZWMoc3Vic3RyKVswXTtcblx0ICAgICAgICAgICAgc2tpcCArPSBzdWJzdHIubGVuZ3RoO1xuXHQgICAgICAgICAgICBwYXVzZVRpbWUgPSBwYXJzZUludChzdWJzdHIpO1xuXHQgICAgICAgICAgICBfdGhpczIudGVtcG9yYXJ5UGF1c2UgPSB0cnVlO1xuXHQgICAgICAgICAgICBfdGhpczIub3B0aW9ucy5vblR5cGluZ1BhdXNlZChfdGhpczIuYXJyYXlQb3MsIF90aGlzMik7XG5cdCAgICAgICAgICAgIC8vIHN0cmlwIG91dCB0aGUgZXNjYXBlIGNoYXJhY3RlciBhbmQgcGF1c2UgdmFsdWUgc28gdGhleSdyZSBub3QgcHJpbnRlZFxuXHQgICAgICAgICAgICBjdXJTdHJpbmcgPSBjdXJTdHJpbmcuc3Vic3RyaW5nKDAsIGN1clN0clBvcykgKyBjdXJTdHJpbmcuc3Vic3RyaW5nKGN1clN0clBvcyArIHNraXApO1xuXHQgICAgICAgICAgICBfdGhpczIudG9nZ2xlQmxpbmtpbmcodHJ1ZSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICAvLyBjaGVjayBmb3Igc2tpcCBjaGFyYWN0ZXJzIGZvcm1hdHRlZCBhc1xuXHQgICAgICAgIC8vIFwidGhpcyBpcyBhIGBzdHJpbmcgdG8gcHJpbnQgTk9XYCAuLi5cIlxuXHQgICAgICAgIGlmIChzdWJzdHIuY2hhckF0KDApID09PSAnYCcpIHtcblx0ICAgICAgICAgIHdoaWxlIChjdXJTdHJpbmcuc3Vic3RyKGN1clN0clBvcyArIG51bUNoYXJzKS5jaGFyQXQoMCkgIT09ICdgJykge1xuXHQgICAgICAgICAgICBudW1DaGFycysrO1xuXHQgICAgICAgICAgICBpZiAoY3VyU3RyUG9zICsgbnVtQ2hhcnMgPiBjdXJTdHJpbmcubGVuZ3RoKSBicmVhaztcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIC8vIHN0cmlwIG91dCB0aGUgZXNjYXBlIGNoYXJhY3RlcnMgYW5kIGFwcGVuZCBhbGwgdGhlIHN0cmluZyBpbiBiZXR3ZWVuXG5cdCAgICAgICAgICB2YXIgc3RyaW5nQmVmb3JlU2tpcCA9IGN1clN0cmluZy5zdWJzdHJpbmcoMCwgY3VyU3RyUG9zKTtcblx0ICAgICAgICAgIHZhciBzdHJpbmdTa2lwcGVkID0gY3VyU3RyaW5nLnN1YnN0cmluZyhzdHJpbmdCZWZvcmVTa2lwLmxlbmd0aCArIDEsIGN1clN0clBvcyArIG51bUNoYXJzKTtcblx0ICAgICAgICAgIHZhciBzdHJpbmdBZnRlclNraXAgPSBjdXJTdHJpbmcuc3Vic3RyaW5nKGN1clN0clBvcyArIG51bUNoYXJzICsgMSk7XG5cdCAgICAgICAgICBjdXJTdHJpbmcgPSBzdHJpbmdCZWZvcmVTa2lwICsgc3RyaW5nU2tpcHBlZCArIHN0cmluZ0FmdGVyU2tpcDtcblx0ICAgICAgICAgIG51bUNoYXJzLS07XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICAvLyB0aW1lb3V0IGZvciBhbnkgcGF1c2UgYWZ0ZXIgYSBjaGFyYWN0ZXJcblx0ICAgICAgICBfdGhpczIudGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgLy8gQWNjb3VudHMgZm9yIGJsaW5raW5nIHdoaWxlIHBhdXNlZFxuXHQgICAgICAgICAgX3RoaXMyLnRvZ2dsZUJsaW5raW5nKGZhbHNlKTtcblx0XG5cdCAgICAgICAgICAvLyBXZSdyZSBkb25lIHdpdGggdGhpcyBzZW50ZW5jZSFcblx0ICAgICAgICAgIGlmIChjdXJTdHJQb3MgPj0gY3VyU3RyaW5nLmxlbmd0aCkge1xuXHQgICAgICAgICAgICBfdGhpczIuZG9uZVR5cGluZyhjdXJTdHJpbmcsIGN1clN0clBvcyk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBfdGhpczIua2VlcFR5cGluZyhjdXJTdHJpbmcsIGN1clN0clBvcywgbnVtQ2hhcnMpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgLy8gZW5kIG9mIGNoYXJhY3RlciBwYXVzZVxuXHQgICAgICAgICAgaWYgKF90aGlzMi50ZW1wb3JhcnlQYXVzZSkge1xuXHQgICAgICAgICAgICBfdGhpczIudGVtcG9yYXJ5UGF1c2UgPSBmYWxzZTtcblx0ICAgICAgICAgICAgX3RoaXMyLm9wdGlvbnMub25UeXBpbmdSZXN1bWVkKF90aGlzMi5hcnJheVBvcywgX3RoaXMyKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9LCBwYXVzZVRpbWUpO1xuXHRcblx0ICAgICAgICAvLyBodW1hbml6ZWQgdmFsdWUgZm9yIHR5cGluZ1xuXHQgICAgICB9LCBodW1hbml6ZSk7XG5cdCAgICB9XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBDb250aW51ZSB0byB0aGUgbmV4dCBzdHJpbmcgJiBiZWdpbiB0eXBpbmdcblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjdXJTdHJpbmcgdGhlIGN1cnJlbnQgc3RyaW5nIGluIHRoZSBzdHJpbmdzIGFycmF5XG5cdCAgICAgKiBAcGFyYW0ge251bWJlcn0gY3VyU3RyUG9zIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBjdXJTdHJpbmdcblx0ICAgICAqIEBwcml2YXRlXG5cdCAgICAgKi9cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdrZWVwVHlwaW5nJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBrZWVwVHlwaW5nKGN1clN0cmluZywgY3VyU3RyUG9zLCBudW1DaGFycykge1xuXHQgICAgICAvLyBjYWxsIGJlZm9yZSBmdW5jdGlvbnMgaWYgYXBwbGljYWJsZVxuXHQgICAgICBpZiAoY3VyU3RyUG9zID09PSAwKSB7XG5cdCAgICAgICAgdGhpcy50b2dnbGVCbGlua2luZyhmYWxzZSk7XG5cdCAgICAgICAgdGhpcy5vcHRpb25zLnByZVN0cmluZ1R5cGVkKHRoaXMuYXJyYXlQb3MsIHRoaXMpO1xuXHQgICAgICB9XG5cdCAgICAgIC8vIHN0YXJ0IHR5cGluZyBlYWNoIG5ldyBjaGFyIGludG8gZXhpc3Rpbmcgc3RyaW5nXG5cdCAgICAgIC8vIGN1clN0cmluZzogYXJnLCB0aGlzLmVsLmh0bWw6IG9yaWdpbmFsIHRleHQgaW5zaWRlIGVsZW1lbnRcblx0ICAgICAgY3VyU3RyUG9zICs9IG51bUNoYXJzO1xuXHQgICAgICB2YXIgbmV4dFN0cmluZyA9IGN1clN0cmluZy5zdWJzdHIoMCwgY3VyU3RyUG9zKTtcblx0ICAgICAgdGhpcy5yZXBsYWNlVGV4dChuZXh0U3RyaW5nKTtcblx0ICAgICAgLy8gbG9vcCB0aGUgZnVuY3Rpb25cblx0ICAgICAgdGhpcy50eXBld3JpdGUoY3VyU3RyaW5nLCBjdXJTdHJQb3MpO1xuXHQgICAgfVxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogV2UncmUgZG9uZSB0eXBpbmcgYWxsIHN0cmluZ3Ncblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjdXJTdHJpbmcgdGhlIGN1cnJlbnQgc3RyaW5nIGluIHRoZSBzdHJpbmdzIGFycmF5XG5cdCAgICAgKiBAcGFyYW0ge251bWJlcn0gY3VyU3RyUG9zIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBjdXJTdHJpbmdcblx0ICAgICAqIEBwcml2YXRlXG5cdCAgICAgKi9cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdkb25lVHlwaW5nJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBkb25lVHlwaW5nKGN1clN0cmluZywgY3VyU3RyUG9zKSB7XG5cdCAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXHRcblx0ICAgICAgLy8gZmlyZXMgY2FsbGJhY2sgZnVuY3Rpb25cblx0ICAgICAgdGhpcy5vcHRpb25zLm9uU3RyaW5nVHlwZWQodGhpcy5hcnJheVBvcywgdGhpcyk7XG5cdCAgICAgIHRoaXMudG9nZ2xlQmxpbmtpbmcodHJ1ZSk7XG5cdCAgICAgIC8vIGlzIHRoaXMgdGhlIGZpbmFsIHN0cmluZ1xuXHQgICAgICBpZiAodGhpcy5hcnJheVBvcyA9PT0gdGhpcy5zdHJpbmdzLmxlbmd0aCAtIDEpIHtcblx0ICAgICAgICAvLyBjYWxsYmFjayB0aGF0IG9jY3VycyBvbiB0aGUgbGFzdCB0eXBlZCBzdHJpbmdcblx0ICAgICAgICB0aGlzLmNvbXBsZXRlKCk7XG5cdCAgICAgICAgLy8gcXVpdCBpZiB3ZSB3b250IGxvb3AgYmFja1xuXHQgICAgICAgIGlmICh0aGlzLmxvb3AgPT09IGZhbHNlIHx8IHRoaXMuY3VyTG9vcCA9PT0gdGhpcy5sb29wQ291bnQpIHtcblx0ICAgICAgICAgIHJldHVybjtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgX3RoaXMzLmJhY2tzcGFjZShjdXJTdHJpbmcsIGN1clN0clBvcyk7XG5cdCAgICAgIH0sIHRoaXMuYmFja0RlbGF5KTtcblx0ICAgIH1cblx0XG5cdCAgICAvKipcblx0ICAgICAqIEJhY2tzcGFjZXMgMSBjaGFyYWN0ZXIgYXQgYSB0aW1lXG5cdCAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3VyU3RyaW5nIHRoZSBjdXJyZW50IHN0cmluZyBpbiB0aGUgc3RyaW5ncyBhcnJheVxuXHQgICAgICogQHBhcmFtIHtudW1iZXJ9IGN1clN0clBvcyB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgY3VyU3RyaW5nXG5cdCAgICAgKiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdCAgfSwge1xuXHQgICAga2V5OiAnYmFja3NwYWNlJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBiYWNrc3BhY2UoY3VyU3RyaW5nLCBjdXJTdHJQb3MpIHtcblx0ICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cdFxuXHQgICAgICBpZiAodGhpcy5wYXVzZS5zdGF0dXMgPT09IHRydWUpIHtcblx0ICAgICAgICB0aGlzLnNldFBhdXNlU3RhdHVzKGN1clN0cmluZywgY3VyU3RyUG9zLCB0cnVlKTtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHRoaXMuZmFkZU91dCkgcmV0dXJuIHRoaXMuaW5pdEZhZGVPdXQoKTtcblx0XG5cdCAgICAgIHRoaXMudG9nZ2xlQmxpbmtpbmcoZmFsc2UpO1xuXHQgICAgICB2YXIgaHVtYW5pemUgPSB0aGlzLmh1bWFuaXplcih0aGlzLmJhY2tTcGVlZCk7XG5cdFxuXHQgICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBjdXJTdHJQb3MgPSBfaHRtbFBhcnNlckpzLmh0bWxQYXJzZXIuYmFja1NwYWNlSHRtbENoYXJzKGN1clN0cmluZywgY3VyU3RyUG9zLCBfdGhpczQpO1xuXHQgICAgICAgIC8vIHJlcGxhY2UgdGV4dCB3aXRoIGJhc2UgdGV4dCArIHR5cGVkIGNoYXJhY3RlcnNcblx0ICAgICAgICB2YXIgY3VyU3RyaW5nQXRQb3NpdGlvbiA9IGN1clN0cmluZy5zdWJzdHIoMCwgY3VyU3RyUG9zKTtcblx0ICAgICAgICBfdGhpczQucmVwbGFjZVRleHQoY3VyU3RyaW5nQXRQb3NpdGlvbik7XG5cdFxuXHQgICAgICAgIC8vIGlmIHNtYXJ0QmFjayBpcyBlbmFibGVkXG5cdCAgICAgICAgaWYgKF90aGlzNC5zbWFydEJhY2tzcGFjZSkge1xuXHQgICAgICAgICAgLy8gdGhlIHJlbWFpbmluZyBwYXJ0IG9mIHRoZSBjdXJyZW50IHN0cmluZyBpcyBlcXVhbCBvZiB0aGUgc2FtZSBwYXJ0IG9mIHRoZSBuZXcgc3RyaW5nXG5cdCAgICAgICAgICB2YXIgbmV4dFN0cmluZyA9IF90aGlzNC5zdHJpbmdzW190aGlzNC5hcnJheVBvcyArIDFdO1xuXHQgICAgICAgICAgaWYgKG5leHRTdHJpbmcgJiYgY3VyU3RyaW5nQXRQb3NpdGlvbiA9PT0gbmV4dFN0cmluZy5zdWJzdHIoMCwgY3VyU3RyUG9zKSkge1xuXHQgICAgICAgICAgICBfdGhpczQuc3RvcE51bSA9IGN1clN0clBvcztcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIF90aGlzNC5zdG9wTnVtID0gMDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIC8vIGlmIHRoZSBudW1iZXIgKGlkIG9mIGNoYXJhY3RlciBpbiBjdXJyZW50IHN0cmluZykgaXNcblx0ICAgICAgICAvLyBsZXNzIHRoYW4gdGhlIHN0b3AgbnVtYmVyLCBrZWVwIGdvaW5nXG5cdCAgICAgICAgaWYgKGN1clN0clBvcyA+IF90aGlzNC5zdG9wTnVtKSB7XG5cdCAgICAgICAgICAvLyBzdWJ0cmFjdCBjaGFyYWN0ZXJzIG9uZSBieSBvbmVcblx0ICAgICAgICAgIGN1clN0clBvcy0tO1xuXHQgICAgICAgICAgLy8gbG9vcCB0aGUgZnVuY3Rpb25cblx0ICAgICAgICAgIF90aGlzNC5iYWNrc3BhY2UoY3VyU3RyaW5nLCBjdXJTdHJQb3MpO1xuXHQgICAgICAgIH0gZWxzZSBpZiAoY3VyU3RyUG9zIDw9IF90aGlzNC5zdG9wTnVtKSB7XG5cdCAgICAgICAgICAvLyBpZiB0aGUgc3RvcCBudW1iZXIgaGFzIGJlZW4gcmVhY2hlZCwgaW5jcmVhc2Vcblx0ICAgICAgICAgIC8vIGFycmF5IHBvc2l0aW9uIHRvIG5leHQgc3RyaW5nXG5cdCAgICAgICAgICBfdGhpczQuYXJyYXlQb3MrKztcblx0ICAgICAgICAgIC8vIFdoZW4gbG9vcGluZywgYmVnaW4gYXQgdGhlIGJlZ2lubmluZyBhZnRlciBiYWNrc3BhY2UgY29tcGxldGVcblx0ICAgICAgICAgIGlmIChfdGhpczQuYXJyYXlQb3MgPT09IF90aGlzNC5zdHJpbmdzLmxlbmd0aCkge1xuXHQgICAgICAgICAgICBfdGhpczQuYXJyYXlQb3MgPSAwO1xuXHQgICAgICAgICAgICBfdGhpczQub3B0aW9ucy5vbkxhc3RTdHJpbmdCYWNrc3BhY2VkKCk7XG5cdCAgICAgICAgICAgIF90aGlzNC5zaHVmZmxlU3RyaW5nc0lmTmVlZGVkKCk7XG5cdCAgICAgICAgICAgIF90aGlzNC5iZWdpbigpO1xuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgX3RoaXM0LnR5cGV3cml0ZShfdGhpczQuc3RyaW5nc1tfdGhpczQuc2VxdWVuY2VbX3RoaXM0LmFycmF5UG9zXV0sIGN1clN0clBvcyk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIC8vIGh1bWFuaXplZCB2YWx1ZSBmb3IgdHlwaW5nXG5cdCAgICAgIH0sIGh1bWFuaXplKTtcblx0ICAgIH1cblx0XG5cdCAgICAvKipcblx0ICAgICAqIEZ1bGwgYW5pbWF0aW9uIGlzIGNvbXBsZXRlXG5cdCAgICAgKiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdCAgfSwge1xuXHQgICAga2V5OiAnY29tcGxldGUnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBsZXRlKCkge1xuXHQgICAgICB0aGlzLm9wdGlvbnMub25Db21wbGV0ZSh0aGlzKTtcblx0ICAgICAgaWYgKHRoaXMubG9vcCkge1xuXHQgICAgICAgIHRoaXMuY3VyTG9vcCsrO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXMudHlwaW5nQ29tcGxldGUgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBIYXMgdGhlIHR5cGluZyBiZWVuIHN0b3BwZWRcblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjdXJTdHJpbmcgdGhlIGN1cnJlbnQgc3RyaW5nIGluIHRoZSBzdHJpbmdzIGFycmF5XG5cdCAgICAgKiBAcGFyYW0ge251bWJlcn0gY3VyU3RyUG9zIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBjdXJTdHJpbmdcblx0ICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNUeXBpbmdcblx0ICAgICAqIEBwcml2YXRlXG5cdCAgICAgKi9cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdzZXRQYXVzZVN0YXR1cycsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gc2V0UGF1c2VTdGF0dXMoY3VyU3RyaW5nLCBjdXJTdHJQb3MsIGlzVHlwaW5nKSB7XG5cdCAgICAgIHRoaXMucGF1c2UudHlwZXdyaXRlID0gaXNUeXBpbmc7XG5cdCAgICAgIHRoaXMucGF1c2UuY3VyU3RyaW5nID0gY3VyU3RyaW5nO1xuXHQgICAgICB0aGlzLnBhdXNlLmN1clN0clBvcyA9IGN1clN0clBvcztcblx0ICAgIH1cblx0XG5cdCAgICAvKipcblx0ICAgICAqIFRvZ2dsZSB0aGUgYmxpbmtpbmcgY3Vyc29yXG5cdCAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQmxpbmtpbmdcblx0ICAgICAqIEBwcml2YXRlXG5cdCAgICAgKi9cblx0ICB9LCB7XG5cdCAgICBrZXk6ICd0b2dnbGVCbGlua2luZycsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gdG9nZ2xlQmxpbmtpbmcoaXNCbGlua2luZykge1xuXHQgICAgICBpZiAoIXRoaXMuY3Vyc29yKSByZXR1cm47XG5cdCAgICAgIC8vIGlmIGluIHBhdXNlZCBzdGF0ZSwgZG9uJ3QgdG9nZ2xlIGJsaW5raW5nIGEgMm5kIHRpbWVcblx0ICAgICAgaWYgKHRoaXMucGF1c2Uuc3RhdHVzKSByZXR1cm47XG5cdCAgICAgIGlmICh0aGlzLmN1cnNvckJsaW5raW5nID09PSBpc0JsaW5raW5nKSByZXR1cm47XG5cdCAgICAgIHRoaXMuY3Vyc29yQmxpbmtpbmcgPSBpc0JsaW5raW5nO1xuXHQgICAgICBpZiAoaXNCbGlua2luZykge1xuXHQgICAgICAgIHRoaXMuY3Vyc29yLmNsYXNzTGlzdC5hZGQoJ3R5cGVkLWN1cnNvci0tYmxpbmsnKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB0aGlzLmN1cnNvci5jbGFzc0xpc3QucmVtb3ZlKCd0eXBlZC1jdXJzb3ItLWJsaW5rJyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICAvKipcblx0ICAgICAqIFNwZWVkIGluIE1TIHRvIHR5cGVcblx0ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcGVlZFxuXHQgICAgICogQHByaXZhdGVcblx0ICAgICAqL1xuXHQgIH0sIHtcblx0ICAgIGtleTogJ2h1bWFuaXplcicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gaHVtYW5pemVyKHNwZWVkKSB7XG5cdCAgICAgIHJldHVybiBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiBzcGVlZCAvIDIpICsgc3BlZWQ7XG5cdCAgICB9XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBTaHVmZmxlIHRoZSBzZXF1ZW5jZSBvZiB0aGUgc3RyaW5ncyBhcnJheVxuXHQgICAgICogQHByaXZhdGVcblx0ICAgICAqL1xuXHQgIH0sIHtcblx0ICAgIGtleTogJ3NodWZmbGVTdHJpbmdzSWZOZWVkZWQnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHNodWZmbGVTdHJpbmdzSWZOZWVkZWQoKSB7XG5cdCAgICAgIGlmICghdGhpcy5zaHVmZmxlKSByZXR1cm47XG5cdCAgICAgIHRoaXMuc2VxdWVuY2UgPSB0aGlzLnNlcXVlbmNlLnNvcnQoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpIC0gMC41O1xuXHQgICAgICB9KTtcblx0ICAgIH1cblx0XG5cdCAgICAvKipcblx0ICAgICAqIEFkZHMgYSBDU1MgY2xhc3MgdG8gZmFkZSBvdXQgY3VycmVudCBzdHJpbmdcblx0ICAgICAqIEBwcml2YXRlXG5cdCAgICAgKi9cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdpbml0RmFkZU91dCcsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdEZhZGVPdXQoKSB7XG5cdCAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXHRcblx0ICAgICAgdGhpcy5lbC5jbGFzc05hbWUgKz0gJyAnICsgdGhpcy5mYWRlT3V0Q2xhc3M7XG5cdCAgICAgIGlmICh0aGlzLmN1cnNvcikgdGhpcy5jdXJzb3IuY2xhc3NOYW1lICs9ICcgJyArIHRoaXMuZmFkZU91dENsYXNzO1xuXHQgICAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgX3RoaXM1LmFycmF5UG9zKys7XG5cdCAgICAgICAgX3RoaXM1LnJlcGxhY2VUZXh0KCcnKTtcblx0XG5cdCAgICAgICAgLy8gUmVzZXRzIGN1cnJlbnQgc3RyaW5nIGlmIGVuZCBvZiBsb29wIHJlYWNoZWRcblx0ICAgICAgICBpZiAoX3RoaXM1LnN0cmluZ3MubGVuZ3RoID4gX3RoaXM1LmFycmF5UG9zKSB7XG5cdCAgICAgICAgICBfdGhpczUudHlwZXdyaXRlKF90aGlzNS5zdHJpbmdzW190aGlzNS5zZXF1ZW5jZVtfdGhpczUuYXJyYXlQb3NdXSwgMCk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIF90aGlzNS50eXBld3JpdGUoX3RoaXM1LnN0cmluZ3NbMF0sIDApO1xuXHQgICAgICAgICAgX3RoaXM1LmFycmF5UG9zID0gMDtcblx0ICAgICAgICB9XG5cdCAgICAgIH0sIHRoaXMuZmFkZU91dERlbGF5KTtcblx0ICAgIH1cblx0XG5cdCAgICAvKipcblx0ICAgICAqIFJlcGxhY2VzIGN1cnJlbnQgdGV4dCBpbiB0aGUgSFRNTCBlbGVtZW50XG5cdCAgICAgKiBkZXBlbmRpbmcgb24gZWxlbWVudCB0eXBlXG5cdCAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG5cdCAgICAgKiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdCAgfSwge1xuXHQgICAga2V5OiAncmVwbGFjZVRleHQnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlcGxhY2VUZXh0KHN0cikge1xuXHQgICAgICBpZiAodGhpcy5hdHRyKSB7XG5cdCAgICAgICAgdGhpcy5lbC5zZXRBdHRyaWJ1dGUodGhpcy5hdHRyLCBzdHIpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmICh0aGlzLmlzSW5wdXQpIHtcblx0ICAgICAgICAgIHRoaXMuZWwudmFsdWUgPSBzdHI7XG5cdCAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbnRlbnRUeXBlID09PSAnaHRtbCcpIHtcblx0ICAgICAgICAgIHRoaXMuZWwuaW5uZXJIVE1MID0gc3RyO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICB0aGlzLmVsLnRleHRDb250ZW50ID0gc3RyO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogSWYgdXNpbmcgaW5wdXQgZWxlbWVudHMsIGJpbmQgZm9jdXMgaW4gb3JkZXIgdG9cblx0ICAgICAqIHN0YXJ0IGFuZCBzdG9wIHRoZSBhbmltYXRpb25cblx0ICAgICAqIEBwcml2YXRlXG5cdCAgICAgKi9cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdiaW5kRm9jdXNFdmVudHMnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIGJpbmRGb2N1c0V2ZW50cygpIHtcblx0ICAgICAgdmFyIF90aGlzNiA9IHRoaXM7XG5cdFxuXHQgICAgICBpZiAoIXRoaXMuaXNJbnB1dCkgcmV0dXJuO1xuXHQgICAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgICBfdGhpczYuc3RvcCgpO1xuXHQgICAgICB9KTtcblx0ICAgICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgICBpZiAoX3RoaXM2LmVsLnZhbHVlICYmIF90aGlzNi5lbC52YWx1ZS5sZW5ndGggIT09IDApIHtcblx0ICAgICAgICAgIHJldHVybjtcblx0ICAgICAgICB9XG5cdCAgICAgICAgX3RoaXM2LnN0YXJ0KCk7XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogT24gaW5pdCwgaW5zZXJ0IHRoZSBjdXJzb3IgZWxlbWVudFxuXHQgICAgICogQHByaXZhdGVcblx0ICAgICAqL1xuXHQgIH0sIHtcblx0ICAgIGtleTogJ2luc2VydEN1cnNvcicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gaW5zZXJ0Q3Vyc29yKCkge1xuXHQgICAgICBpZiAoIXRoaXMuc2hvd0N1cnNvcikgcmV0dXJuO1xuXHQgICAgICBpZiAodGhpcy5jdXJzb3IpIHJldHVybjtcblx0ICAgICAgdGhpcy5jdXJzb3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdCAgICAgIHRoaXMuY3Vyc29yLmNsYXNzTmFtZSA9ICd0eXBlZC1jdXJzb3InO1xuXHQgICAgICB0aGlzLmN1cnNvci5pbm5lckhUTUwgPSB0aGlzLmN1cnNvckNoYXI7XG5cdCAgICAgIHRoaXMuZWwucGFyZW50Tm9kZSAmJiB0aGlzLmVsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuY3Vyc29yLCB0aGlzLmVsLm5leHRTaWJsaW5nKTtcblx0ICAgIH1cblx0ICB9XSk7XG5cdFxuXHQgIHJldHVybiBUeXBlZDtcblx0fSkoKTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IFR5cGVkO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblx0XG5cdHZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblx0XG5cdHZhciBfZGVmYXVsdHNKcyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgX2RlZmF1bHRzSnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmYXVsdHNKcyk7XG5cdFxuXHQvKipcblx0ICogSW5pdGlhbGl6ZSB0aGUgVHlwZWQgb2JqZWN0XG5cdCAqL1xuXHRcblx0dmFyIEluaXRpYWxpemVyID0gKGZ1bmN0aW9uICgpIHtcblx0ICBmdW5jdGlvbiBJbml0aWFsaXplcigpIHtcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJbml0aWFsaXplcik7XG5cdCAgfVxuXHRcblx0ICBfY3JlYXRlQ2xhc3MoSW5pdGlhbGl6ZXIsIFt7XG5cdCAgICBrZXk6ICdsb2FkJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIExvYWQgdXAgZGVmYXVsdHMgJiBvcHRpb25zIG9uIHRoZSBUeXBlZCBpbnN0YW5jZVxuXHQgICAgICogQHBhcmFtIHtUeXBlZH0gc2VsZiBpbnN0YW5jZSBvZiBUeXBlZFxuXHQgICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgb3B0aW9ucyBvYmplY3Rcblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlbGVtZW50SWQgSFRNTCBlbGVtZW50IElEIF9PUl8gaW5zdGFuY2Ugb2YgSFRNTCBlbGVtZW50XG5cdCAgICAgKiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIGxvYWQoc2VsZiwgb3B0aW9ucywgZWxlbWVudElkKSB7XG5cdCAgICAgIC8vIGNob3NlbiBlbGVtZW50IHRvIG1hbmlwdWxhdGUgdGV4dFxuXHQgICAgICBpZiAodHlwZW9mIGVsZW1lbnRJZCA9PT0gJ3N0cmluZycpIHtcblx0ICAgICAgICBzZWxmLmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbGVtZW50SWQpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHNlbGYuZWwgPSBlbGVtZW50SWQ7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHNlbGYub3B0aW9ucyA9IF9leHRlbmRzKHt9LCBfZGVmYXVsdHNKczJbJ2RlZmF1bHQnXSwgb3B0aW9ucyk7XG5cdFxuXHQgICAgICAvLyBhdHRyaWJ1dGUgdG8gdHlwZSBpbnRvXG5cdCAgICAgIHNlbGYuaXNJbnB1dCA9IHNlbGYuZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnO1xuXHQgICAgICBzZWxmLmF0dHIgPSBzZWxmLm9wdGlvbnMuYXR0cjtcblx0ICAgICAgc2VsZi5iaW5kSW5wdXRGb2N1c0V2ZW50cyA9IHNlbGYub3B0aW9ucy5iaW5kSW5wdXRGb2N1c0V2ZW50cztcblx0XG5cdCAgICAgIC8vIHNob3cgY3Vyc29yXG5cdCAgICAgIHNlbGYuc2hvd0N1cnNvciA9IHNlbGYuaXNJbnB1dCA/IGZhbHNlIDogc2VsZi5vcHRpb25zLnNob3dDdXJzb3I7XG5cdFxuXHQgICAgICAvLyBjdXN0b20gY3Vyc29yXG5cdCAgICAgIHNlbGYuY3Vyc29yQ2hhciA9IHNlbGYub3B0aW9ucy5jdXJzb3JDaGFyO1xuXHRcblx0ICAgICAgLy8gSXMgdGhlIGN1cnNvciBibGlua2luZ1xuXHQgICAgICBzZWxmLmN1cnNvckJsaW5raW5nID0gdHJ1ZTtcblx0XG5cdCAgICAgIC8vIHRleHQgY29udGVudCBvZiBlbGVtZW50XG5cdCAgICAgIHNlbGYuZWxDb250ZW50ID0gc2VsZi5hdHRyID8gc2VsZi5lbC5nZXRBdHRyaWJ1dGUoc2VsZi5hdHRyKSA6IHNlbGYuZWwudGV4dENvbnRlbnQ7XG5cdFxuXHQgICAgICAvLyBodG1sIG9yIHBsYWluIHRleHRcblx0ICAgICAgc2VsZi5jb250ZW50VHlwZSA9IHNlbGYub3B0aW9ucy5jb250ZW50VHlwZTtcblx0XG5cdCAgICAgIC8vIHR5cGluZyBzcGVlZFxuXHQgICAgICBzZWxmLnR5cGVTcGVlZCA9IHNlbGYub3B0aW9ucy50eXBlU3BlZWQ7XG5cdFxuXHQgICAgICAvLyBhZGQgYSBkZWxheSBiZWZvcmUgdHlwaW5nIHN0YXJ0c1xuXHQgICAgICBzZWxmLnN0YXJ0RGVsYXkgPSBzZWxmLm9wdGlvbnMuc3RhcnREZWxheTtcblx0XG5cdCAgICAgIC8vIGJhY2tzcGFjaW5nIHNwZWVkXG5cdCAgICAgIHNlbGYuYmFja1NwZWVkID0gc2VsZi5vcHRpb25zLmJhY2tTcGVlZDtcblx0XG5cdCAgICAgIC8vIG9ubHkgYmFja3NwYWNlIHdoYXQgZG9lc24ndCBtYXRjaCB0aGUgcHJldmlvdXMgc3RyaW5nXG5cdCAgICAgIHNlbGYuc21hcnRCYWNrc3BhY2UgPSBzZWxmLm9wdGlvbnMuc21hcnRCYWNrc3BhY2U7XG5cdFxuXHQgICAgICAvLyBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBiYWNrc3BhY2luZ1xuXHQgICAgICBzZWxmLmJhY2tEZWxheSA9IHNlbGYub3B0aW9ucy5iYWNrRGVsYXk7XG5cdFxuXHQgICAgICAvLyBGYWRlIG91dCBpbnN0ZWFkIG9mIGJhY2tzcGFjZVxuXHQgICAgICBzZWxmLmZhZGVPdXQgPSBzZWxmLm9wdGlvbnMuZmFkZU91dDtcblx0ICAgICAgc2VsZi5mYWRlT3V0Q2xhc3MgPSBzZWxmLm9wdGlvbnMuZmFkZU91dENsYXNzO1xuXHQgICAgICBzZWxmLmZhZGVPdXREZWxheSA9IHNlbGYub3B0aW9ucy5mYWRlT3V0RGVsYXk7XG5cdFxuXHQgICAgICAvLyB2YXJpYWJsZSB0byBjaGVjayB3aGV0aGVyIHR5cGluZyBpcyBjdXJyZW50bHkgcGF1c2VkXG5cdCAgICAgIHNlbGYuaXNQYXVzZWQgPSBmYWxzZTtcblx0XG5cdCAgICAgIC8vIGlucHV0IHN0cmluZ3Mgb2YgdGV4dFxuXHQgICAgICBzZWxmLnN0cmluZ3MgPSBzZWxmLm9wdGlvbnMuc3RyaW5ncy5tYXAoZnVuY3Rpb24gKHMpIHtcblx0ICAgICAgICByZXR1cm4gcy50cmltKCk7XG5cdCAgICAgIH0pO1xuXHRcblx0ICAgICAgLy8gZGl2IGNvbnRhaW5pbmcgc3RyaW5nc1xuXHQgICAgICBpZiAodHlwZW9mIHNlbGYub3B0aW9ucy5zdHJpbmdzRWxlbWVudCA9PT0gJ3N0cmluZycpIHtcblx0ICAgICAgICBzZWxmLnN0cmluZ3NFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxmLm9wdGlvbnMuc3RyaW5nc0VsZW1lbnQpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHNlbGYuc3RyaW5nc0VsZW1lbnQgPSBzZWxmLm9wdGlvbnMuc3RyaW5nc0VsZW1lbnQ7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlmIChzZWxmLnN0cmluZ3NFbGVtZW50KSB7XG5cdCAgICAgICAgc2VsZi5zdHJpbmdzID0gW107XG5cdCAgICAgICAgc2VsZi5zdHJpbmdzRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXHQgICAgICAgIHZhciBzdHJpbmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KHNlbGYuc3RyaW5nc0VsZW1lbnQuY2hpbGRyZW4pO1xuXHQgICAgICAgIHZhciBzdHJpbmdzTGVuZ3RoID0gc3RyaW5ncy5sZW5ndGg7XG5cdFxuXHQgICAgICAgIGlmIChzdHJpbmdzTGVuZ3RoKSB7XG5cdCAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZ3NMZW5ndGg7IGkgKz0gMSkge1xuXHQgICAgICAgICAgICB2YXIgc3RyaW5nRWwgPSBzdHJpbmdzW2ldO1xuXHQgICAgICAgICAgICBzZWxmLnN0cmluZ3MucHVzaChzdHJpbmdFbC5pbm5lckhUTUwudHJpbSgpKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIC8vIGNoYXJhY3RlciBudW1iZXIgcG9zaXRpb24gb2YgY3VycmVudCBzdHJpbmdcblx0ICAgICAgc2VsZi5zdHJQb3MgPSAwO1xuXHRcblx0ICAgICAgLy8gY3VycmVudCBhcnJheSBwb3NpdGlvblxuXHQgICAgICBzZWxmLmFycmF5UG9zID0gMDtcblx0XG5cdCAgICAgIC8vIGluZGV4IG9mIHN0cmluZyB0byBzdG9wIGJhY2tzcGFjaW5nIG9uXG5cdCAgICAgIHNlbGYuc3RvcE51bSA9IDA7XG5cdFxuXHQgICAgICAvLyBMb29waW5nIGxvZ2ljXG5cdCAgICAgIHNlbGYubG9vcCA9IHNlbGYub3B0aW9ucy5sb29wO1xuXHQgICAgICBzZWxmLmxvb3BDb3VudCA9IHNlbGYub3B0aW9ucy5sb29wQ291bnQ7XG5cdCAgICAgIHNlbGYuY3VyTG9vcCA9IDA7XG5cdFxuXHQgICAgICAvLyBzaHVmZmxlIHRoZSBzdHJpbmdzXG5cdCAgICAgIHNlbGYuc2h1ZmZsZSA9IHNlbGYub3B0aW9ucy5zaHVmZmxlO1xuXHQgICAgICAvLyB0aGUgb3JkZXIgb2Ygc3RyaW5nc1xuXHQgICAgICBzZWxmLnNlcXVlbmNlID0gW107XG5cdFxuXHQgICAgICBzZWxmLnBhdXNlID0ge1xuXHQgICAgICAgIHN0YXR1czogZmFsc2UsXG5cdCAgICAgICAgdHlwZXdyaXRlOiB0cnVlLFxuXHQgICAgICAgIGN1clN0cmluZzogJycsXG5cdCAgICAgICAgY3VyU3RyUG9zOiAwXG5cdCAgICAgIH07XG5cdFxuXHQgICAgICAvLyBXaGVuIHRoZSB0eXBpbmcgaXMgY29tcGxldGUgKHdoZW4gbm90IGxvb3BlZClcblx0ICAgICAgc2VsZi50eXBpbmdDb21wbGV0ZSA9IGZhbHNlO1xuXHRcblx0ICAgICAgLy8gU2V0IHRoZSBvcmRlciBpbiB3aGljaCB0aGUgc3RyaW5ncyBhcmUgdHlwZWRcblx0ICAgICAgZm9yICh2YXIgaSBpbiBzZWxmLnN0cmluZ3MpIHtcblx0ICAgICAgICBzZWxmLnNlcXVlbmNlW2ldID0gaTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgLy8gSWYgdGhlcmUgaXMgc29tZSB0ZXh0IGluIHRoZSBlbGVtZW50XG5cdCAgICAgIHNlbGYuY3VycmVudEVsQ29udGVudCA9IHRoaXMuZ2V0Q3VycmVudEVsQ29udGVudChzZWxmKTtcblx0XG5cdCAgICAgIHNlbGYuYXV0b0luc2VydENzcyA9IHNlbGYub3B0aW9ucy5hdXRvSW5zZXJ0Q3NzO1xuXHRcblx0ICAgICAgdGhpcy5hcHBlbmRBbmltYXRpb25Dc3Moc2VsZik7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAnZ2V0Q3VycmVudEVsQ29udGVudCcsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudEVsQ29udGVudChzZWxmKSB7XG5cdCAgICAgIHZhciBlbENvbnRlbnQgPSAnJztcblx0ICAgICAgaWYgKHNlbGYuYXR0cikge1xuXHQgICAgICAgIGVsQ29udGVudCA9IHNlbGYuZWwuZ2V0QXR0cmlidXRlKHNlbGYuYXR0cik7XG5cdCAgICAgIH0gZWxzZSBpZiAoc2VsZi5pc0lucHV0KSB7XG5cdCAgICAgICAgZWxDb250ZW50ID0gc2VsZi5lbC52YWx1ZTtcblx0ICAgICAgfSBlbHNlIGlmIChzZWxmLmNvbnRlbnRUeXBlID09PSAnaHRtbCcpIHtcblx0ICAgICAgICBlbENvbnRlbnQgPSBzZWxmLmVsLmlubmVySFRNTDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBlbENvbnRlbnQgPSBzZWxmLmVsLnRleHRDb250ZW50O1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBlbENvbnRlbnQ7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAnYXBwZW5kQW5pbWF0aW9uQ3NzJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBhcHBlbmRBbmltYXRpb25Dc3Moc2VsZikge1xuXHQgICAgICB2YXIgY3NzRGF0YU5hbWUgPSAnZGF0YS10eXBlZC1qcy1jc3MnO1xuXHQgICAgICBpZiAoIXNlbGYuYXV0b0luc2VydENzcykge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoIXNlbGYuc2hvd0N1cnNvciAmJiAhc2VsZi5mYWRlT3V0KSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbJyArIGNzc0RhdGFOYW1lICsgJ10nKSkge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgdmFyIGNzcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG5cdCAgICAgIGNzcy50eXBlID0gJ3RleHQvY3NzJztcblx0ICAgICAgY3NzLnNldEF0dHJpYnV0ZShjc3NEYXRhTmFtZSwgdHJ1ZSk7XG5cdFxuXHQgICAgICB2YXIgaW5uZXJDc3MgPSAnJztcblx0ICAgICAgaWYgKHNlbGYuc2hvd0N1cnNvcikge1xuXHQgICAgICAgIGlubmVyQ3NzICs9ICdcXG4gICAgICAgIC50eXBlZC1jdXJzb3J7XFxuICAgICAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgICB9XFxuICAgICAgICAudHlwZWQtY3Vyc29yLnR5cGVkLWN1cnNvci0tYmxpbmt7XFxuICAgICAgICAgIGFuaW1hdGlvbjogdHlwZWRqc0JsaW5rIDAuN3MgaW5maW5pdGU7XFxuICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiB0eXBlZGpzQmxpbmsgMC43cyBpbmZpbml0ZTtcXG4gICAgICAgICAgICAgICAgICBhbmltYXRpb246IHR5cGVkanNCbGluayAwLjdzIGluZmluaXRlO1xcbiAgICAgICAgfVxcbiAgICAgICAgQGtleWZyYW1lcyB0eXBlZGpzQmxpbmt7XFxuICAgICAgICAgIDUwJSB7IG9wYWNpdHk6IDAuMDsgfVxcbiAgICAgICAgfVxcbiAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIHR5cGVkanNCbGlua3tcXG4gICAgICAgICAgMCUgeyBvcGFjaXR5OiAxOyB9XFxuICAgICAgICAgIDUwJSB7IG9wYWNpdHk6IDAuMDsgfVxcbiAgICAgICAgICAxMDAlIHsgb3BhY2l0eTogMTsgfVxcbiAgICAgICAgfVxcbiAgICAgICc7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHNlbGYuZmFkZU91dCkge1xuXHQgICAgICAgIGlubmVyQ3NzICs9ICdcXG4gICAgICAgIC50eXBlZC1mYWRlLW91dHtcXG4gICAgICAgICAgb3BhY2l0eTogMDtcXG4gICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMjVzO1xcbiAgICAgICAgfVxcbiAgICAgICAgLnR5cGVkLWN1cnNvci50eXBlZC1jdXJzb3ItLWJsaW5rLnR5cGVkLWZhZGUtb3V0e1xcbiAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogMDtcXG4gICAgICAgICAgYW5pbWF0aW9uOiAwO1xcbiAgICAgICAgfVxcbiAgICAgICc7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKGNzcy5sZW5ndGggPT09IDApIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgY3NzLmlubmVySFRNTCA9IGlubmVyQ3NzO1xuXHQgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNzcyk7XG5cdCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1cm4gSW5pdGlhbGl6ZXI7XG5cdH0pKCk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBJbml0aWFsaXplcjtcblx0dmFyIGluaXRpYWxpemVyID0gbmV3IEluaXRpYWxpemVyKCk7XG5cdGV4cG9ydHMuaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIERlZmF1bHRzICYgb3B0aW9uc1xuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBUeXBlZCBkZWZhdWx0cyAmIG9wdGlvbnNcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0dmFyIGRlZmF1bHRzID0ge1xuXHQgIC8qKlxuXHQgICAqIEBwcm9wZXJ0eSB7YXJyYXl9IHN0cmluZ3Mgc3RyaW5ncyB0byBiZSB0eXBlZFxuXHQgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdHJpbmdzRWxlbWVudCBJRCBvZiBlbGVtZW50IGNvbnRhaW5pbmcgc3RyaW5nIGNoaWxkcmVuXG5cdCAgICovXG5cdCAgc3RyaW5nczogWydUaGVzZSBhcmUgdGhlIGRlZmF1bHQgdmFsdWVzLi4uJywgJ1lvdSBrbm93IHdoYXQgeW91IHNob3VsZCBkbz8nLCAnVXNlIHlvdXIgb3duIScsICdIYXZlIGEgZ3JlYXQgZGF5ISddLFxuXHQgIHN0cmluZ3NFbGVtZW50OiBudWxsLFxuXHRcblx0ICAvKipcblx0ICAgKiBAcHJvcGVydHkge251bWJlcn0gdHlwZVNwZWVkIHR5cGUgc3BlZWQgaW4gbWlsbGlzZWNvbmRzXG5cdCAgICovXG5cdCAgdHlwZVNwZWVkOiAwLFxuXHRcblx0ICAvKipcblx0ICAgKiBAcHJvcGVydHkge251bWJlcn0gc3RhcnREZWxheSB0aW1lIGJlZm9yZSB0eXBpbmcgc3RhcnRzIGluIG1pbGxpc2Vjb25kc1xuXHQgICAqL1xuXHQgIHN0YXJ0RGVsYXk6IDAsXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBiYWNrU3BlZWQgYmFja3NwYWNpbmcgc3BlZWQgaW4gbWlsbGlzZWNvbmRzXG5cdCAgICovXG5cdCAgYmFja1NwZWVkOiAwLFxuXHRcblx0ICAvKipcblx0ICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IHNtYXJ0QmFja3NwYWNlIG9ubHkgYmFja3NwYWNlIHdoYXQgZG9lc24ndCBtYXRjaCB0aGUgcHJldmlvdXMgc3RyaW5nXG5cdCAgICovXG5cdCAgc21hcnRCYWNrc3BhY2U6IHRydWUsXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc2h1ZmZsZSBzaHVmZmxlIHRoZSBzdHJpbmdzXG5cdCAgICovXG5cdCAgc2h1ZmZsZTogZmFsc2UsXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBiYWNrRGVsYXkgdGltZSBiZWZvcmUgYmFja3NwYWNpbmcgaW4gbWlsbGlzZWNvbmRzXG5cdCAgICovXG5cdCAgYmFja0RlbGF5OiA3MDAsXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZmFkZU91dCBGYWRlIG91dCBpbnN0ZWFkIG9mIGJhY2tzcGFjZVxuXHQgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmYWRlT3V0Q2xhc3MgY3NzIGNsYXNzIGZvciBmYWRlIGFuaW1hdGlvblxuXHQgICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZmFkZU91dERlbGF5IEZhZGUgb3V0IGRlbGF5IGluIG1pbGxpc2Vjb25kc1xuXHQgICAqL1xuXHQgIGZhZGVPdXQ6IGZhbHNlLFxuXHQgIGZhZGVPdXRDbGFzczogJ3R5cGVkLWZhZGUtb3V0Jyxcblx0ICBmYWRlT3V0RGVsYXk6IDUwMCxcblx0XG5cdCAgLyoqXG5cdCAgICogQHByb3BlcnR5IHtib29sZWFufSBsb29wIGxvb3Agc3RyaW5nc1xuXHQgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsb29wQ291bnQgYW1vdW50IG9mIGxvb3BzXG5cdCAgICovXG5cdCAgbG9vcDogZmFsc2UsXG5cdCAgbG9vcENvdW50OiBJbmZpbml0eSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHByb3BlcnR5IHtib29sZWFufSBzaG93Q3Vyc29yIHNob3cgY3Vyc29yXG5cdCAgICogQHByb3BlcnR5IHtzdHJpbmd9IGN1cnNvckNoYXIgY2hhcmFjdGVyIGZvciBjdXJzb3Jcblx0ICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IGF1dG9JbnNlcnRDc3MgaW5zZXJ0IENTUyBmb3IgY3Vyc29yIGFuZCBmYWRlT3V0IGludG8gSFRNTCA8aGVhZD5cblx0ICAgKi9cblx0ICBzaG93Q3Vyc29yOiB0cnVlLFxuXHQgIGN1cnNvckNoYXI6ICd8Jyxcblx0ICBhdXRvSW5zZXJ0Q3NzOiB0cnVlLFxuXHRcblx0ICAvKipcblx0ICAgKiBAcHJvcGVydHkge3N0cmluZ30gYXR0ciBhdHRyaWJ1dGUgZm9yIHR5cGluZ1xuXHQgICAqIEV4OiBpbnB1dCBwbGFjZWhvbGRlciwgdmFsdWUsIG9yIGp1c3QgSFRNTCB0ZXh0XG5cdCAgICovXG5cdCAgYXR0cjogbnVsbCxcblx0XG5cdCAgLyoqXG5cdCAgICogQHByb3BlcnR5IHtib29sZWFufSBiaW5kSW5wdXRGb2N1c0V2ZW50cyBiaW5kIHRvIGZvY3VzIGFuZCBibHVyIGlmIGVsIGlzIHRleHQgaW5wdXRcblx0ICAgKi9cblx0ICBiaW5kSW5wdXRGb2N1c0V2ZW50czogZmFsc2UsXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb250ZW50VHlwZSAnaHRtbCcgb3IgJ251bGwnIGZvciBwbGFpbnRleHRcblx0ICAgKi9cblx0ICBjb250ZW50VHlwZTogJ2h0bWwnLFxuXHRcblx0ICAvKipcblx0ICAgKiBBbGwgdHlwaW5nIGlzIGNvbXBsZXRlXG5cdCAgICogQHBhcmFtIHtUeXBlZH0gc2VsZlxuXHQgICAqL1xuXHQgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUoc2VsZikge30sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEJlZm9yZSBlYWNoIHN0cmluZyBpcyB0eXBlZFxuXHQgICAqIEBwYXJhbSB7bnVtYmVyfSBhcnJheVBvc1xuXHQgICAqIEBwYXJhbSB7VHlwZWR9IHNlbGZcblx0ICAgKi9cblx0ICBwcmVTdHJpbmdUeXBlZDogZnVuY3Rpb24gcHJlU3RyaW5nVHlwZWQoYXJyYXlQb3MsIHNlbGYpIHt9LFxuXHRcblx0ICAvKipcblx0ICAgKiBBZnRlciBlYWNoIHN0cmluZyBpcyB0eXBlZFxuXHQgICAqIEBwYXJhbSB7bnVtYmVyfSBhcnJheVBvc1xuXHQgICAqIEBwYXJhbSB7VHlwZWR9IHNlbGZcblx0ICAgKi9cblx0ICBvblN0cmluZ1R5cGVkOiBmdW5jdGlvbiBvblN0cmluZ1R5cGVkKGFycmF5UG9zLCBzZWxmKSB7fSxcblx0XG5cdCAgLyoqXG5cdCAgICogRHVyaW5nIGxvb3BpbmcsIGFmdGVyIGxhc3Qgc3RyaW5nIGlzIHR5cGVkXG5cdCAgICogQHBhcmFtIHtUeXBlZH0gc2VsZlxuXHQgICAqL1xuXHQgIG9uTGFzdFN0cmluZ0JhY2tzcGFjZWQ6IGZ1bmN0aW9uIG9uTGFzdFN0cmluZ0JhY2tzcGFjZWQoc2VsZikge30sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFR5cGluZyBoYXMgYmVlbiBzdG9wcGVkXG5cdCAgICogQHBhcmFtIHtudW1iZXJ9IGFycmF5UG9zXG5cdCAgICogQHBhcmFtIHtUeXBlZH0gc2VsZlxuXHQgICAqL1xuXHQgIG9uVHlwaW5nUGF1c2VkOiBmdW5jdGlvbiBvblR5cGluZ1BhdXNlZChhcnJheVBvcywgc2VsZikge30sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFR5cGluZyBoYXMgYmVlbiBzdGFydGVkIGFmdGVyIGJlaW5nIHN0b3BwZWRcblx0ICAgKiBAcGFyYW0ge251bWJlcn0gYXJyYXlQb3Ncblx0ICAgKiBAcGFyYW0ge1R5cGVkfSBzZWxmXG5cdCAgICovXG5cdCAgb25UeXBpbmdSZXN1bWVkOiBmdW5jdGlvbiBvblR5cGluZ1Jlc3VtZWQoYXJyYXlQb3MsIHNlbGYpIHt9LFxuXHRcblx0ICAvKipcblx0ICAgKiBBZnRlciByZXNldFxuXHQgICAqIEBwYXJhbSB7VHlwZWR9IHNlbGZcblx0ICAgKi9cblx0ICBvblJlc2V0OiBmdW5jdGlvbiBvblJlc2V0KHNlbGYpIHt9LFxuXHRcblx0ICAvKipcblx0ICAgKiBBZnRlciBzdG9wXG5cdCAgICogQHBhcmFtIHtudW1iZXJ9IGFycmF5UG9zXG5cdCAgICogQHBhcmFtIHtUeXBlZH0gc2VsZlxuXHQgICAqL1xuXHQgIG9uU3RvcDogZnVuY3Rpb24gb25TdG9wKGFycmF5UG9zLCBzZWxmKSB7fSxcblx0XG5cdCAgLyoqXG5cdCAgICogQWZ0ZXIgc3RhcnRcblx0ICAgKiBAcGFyYW0ge251bWJlcn0gYXJyYXlQb3Ncblx0ICAgKiBAcGFyYW0ge1R5cGVkfSBzZWxmXG5cdCAgICovXG5cdCAgb25TdGFydDogZnVuY3Rpb24gb25TdGFydChhcnJheVBvcywgc2VsZikge30sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEFmdGVyIGRlc3Ryb3lcblx0ICAgKiBAcGFyYW0ge1R5cGVkfSBzZWxmXG5cdCAgICovXG5cdCAgb25EZXN0cm95OiBmdW5jdGlvbiBvbkRlc3Ryb3koc2VsZikge31cblx0fTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGRlZmF1bHRzO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XG5cdC8qKlxuXHQgKiBUT0RPOiBUaGVzZSBtZXRob2RzIGNhbiBwcm9iYWJseSBiZSBjb21iaW5lZCBzb21laG93XG5cdCAqIFBhcnNlIEhUTUwgdGFncyAmIEhUTUwgQ2hhcmFjdGVyc1xuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblx0XG5cdHZhciBIVE1MUGFyc2VyID0gKGZ1bmN0aW9uICgpIHtcblx0ICBmdW5jdGlvbiBIVE1MUGFyc2VyKCkge1xuXHQgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhUTUxQYXJzZXIpO1xuXHQgIH1cblx0XG5cdCAgX2NyZWF0ZUNsYXNzKEhUTUxQYXJzZXIsIFt7XG5cdCAgICBrZXk6ICd0eXBlSHRtbENoYXJzJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIFR5cGUgSFRNTCB0YWdzICYgSFRNTCBDaGFyYWN0ZXJzXG5cdCAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3VyU3RyaW5nIEN1cnJlbnQgc3RyaW5nXG5cdCAgICAgKiBAcGFyYW0ge251bWJlcn0gY3VyU3RyUG9zIFBvc2l0aW9uIGluIGN1cnJlbnQgc3RyaW5nXG5cdCAgICAgKiBAcGFyYW0ge1R5cGVkfSBzZWxmIGluc3RhbmNlIG9mIFR5cGVkXG5cdCAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBhIG5ldyBzdHJpbmcgcG9zaXRpb25cblx0ICAgICAqIEBwcml2YXRlXG5cdCAgICAgKi9cblx0XG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gdHlwZUh0bWxDaGFycyhjdXJTdHJpbmcsIGN1clN0clBvcywgc2VsZikge1xuXHQgICAgICBpZiAoc2VsZi5jb250ZW50VHlwZSAhPT0gJ2h0bWwnKSByZXR1cm4gY3VyU3RyUG9zO1xuXHQgICAgICB2YXIgY3VyQ2hhciA9IGN1clN0cmluZy5zdWJzdHIoY3VyU3RyUG9zKS5jaGFyQXQoMCk7XG5cdCAgICAgIGlmIChjdXJDaGFyID09PSAnPCcgfHwgY3VyQ2hhciA9PT0gJyYnKSB7XG5cdCAgICAgICAgdmFyIGVuZFRhZyA9ICcnO1xuXHQgICAgICAgIGlmIChjdXJDaGFyID09PSAnPCcpIHtcblx0ICAgICAgICAgIGVuZFRhZyA9ICc+Jztcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgZW5kVGFnID0gJzsnO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB3aGlsZSAoY3VyU3RyaW5nLnN1YnN0cihjdXJTdHJQb3MgKyAxKS5jaGFyQXQoMCkgIT09IGVuZFRhZykge1xuXHQgICAgICAgICAgY3VyU3RyUG9zKys7XG5cdCAgICAgICAgICBpZiAoY3VyU3RyUG9zICsgMSA+IGN1clN0cmluZy5sZW5ndGgpIHtcblx0ICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGN1clN0clBvcysrO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBjdXJTdHJQb3M7XG5cdCAgICB9XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBCYWNrc3BhY2UgSFRNTCB0YWdzIGFuZCBIVE1MIENoYXJhY3RlcnNcblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjdXJTdHJpbmcgQ3VycmVudCBzdHJpbmdcblx0ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJTdHJQb3MgUG9zaXRpb24gaW4gY3VycmVudCBzdHJpbmdcblx0ICAgICAqIEBwYXJhbSB7VHlwZWR9IHNlbGYgaW5zdGFuY2Ugb2YgVHlwZWRcblx0ICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IGEgbmV3IHN0cmluZyBwb3NpdGlvblxuXHQgICAgICogQHByaXZhdGVcblx0ICAgICAqL1xuXHQgIH0sIHtcblx0ICAgIGtleTogJ2JhY2tTcGFjZUh0bWxDaGFycycsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gYmFja1NwYWNlSHRtbENoYXJzKGN1clN0cmluZywgY3VyU3RyUG9zLCBzZWxmKSB7XG5cdCAgICAgIGlmIChzZWxmLmNvbnRlbnRUeXBlICE9PSAnaHRtbCcpIHJldHVybiBjdXJTdHJQb3M7XG5cdCAgICAgIHZhciBjdXJDaGFyID0gY3VyU3RyaW5nLnN1YnN0cihjdXJTdHJQb3MpLmNoYXJBdCgwKTtcblx0ICAgICAgaWYgKGN1ckNoYXIgPT09ICc+JyB8fCBjdXJDaGFyID09PSAnOycpIHtcblx0ICAgICAgICB2YXIgZW5kVGFnID0gJyc7XG5cdCAgICAgICAgaWYgKGN1ckNoYXIgPT09ICc+Jykge1xuXHQgICAgICAgICAgZW5kVGFnID0gJzwnO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBlbmRUYWcgPSAnJic7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHdoaWxlIChjdXJTdHJpbmcuc3Vic3RyKGN1clN0clBvcyAtIDEpLmNoYXJBdCgwKSAhPT0gZW5kVGFnKSB7XG5cdCAgICAgICAgICBjdXJTdHJQb3MtLTtcblx0ICAgICAgICAgIGlmIChjdXJTdHJQb3MgPCAwKSB7XG5cdCAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBjdXJTdHJQb3MtLTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gY3VyU3RyUG9zO1xuXHQgICAgfVxuXHQgIH1dKTtcblx0XG5cdCAgcmV0dXJuIEhUTUxQYXJzZXI7XG5cdH0pKCk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBIVE1MUGFyc2VyO1xuXHR2YXIgaHRtbFBhcnNlciA9IG5ldyBIVE1MUGFyc2VyKCk7XG5cdGV4cG9ydHMuaHRtbFBhcnNlciA9IGh0bWxQYXJzZXI7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKVxufSk7XG47XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi90eXBlZC5qcy9saWIvdHlwZWQuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n");
110 |
111 | /***/ }),
112 | /* 5 */
113 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
114 |
115 | "use strict";
116 | eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_typed_js__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_typed_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_typed_js__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config_typed_component_config__ = __webpack_require__(2);\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'vue-typed-js',\n props: __WEBPACK_IMPORTED_MODULE_1__config_typed_component_config__[\"a\" /* props */],\n data: function data() {\n return {\n typedObj: null\n };\n },\n\n methods: {\n throwError: function throwError(message) {\n throw new TypeError(message);\n },\n initTypedJS: function initTypedJS() {\n var $typed = this.$refs.typedElement.querySelector('.typing');\n\n if (this.$slots.default.length > 1) {\n this.throwError('Just one child element allowed inside <' + this.$options.name + '> component.');\n } else if (this.$slots.default.length === 1) {\n var typedConfig = this.$props;\n typedConfig = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__config_typed_component_config__[\"b\" /* getEventHandlers */])(this, typedConfig);\n this.typedObj = new __WEBPACK_IMPORTED_MODULE_0_typed_js___default.a($typed, typedConfig);\n }\n }\n },\n mounted: function mounted() {\n this.initTypedJS();\n },\n destroyed: function destroyed() {\n this.typedObj.destroy();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vVnVlVHlwZWRKcy52dWU/MDVlOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQU9BO0FBQ0E7O0FBRUE7QUFDQSxzQkFEQTtBQUVBLHNGQUZBO0FBR0EsTUFIQSxrQkFHQTtBQUNBO0FBQ0E7QUFEQTtBQUdBLEdBUEE7O0FBUUE7QUFDQTtBQUNBO0FBQ0EsS0FIQTtBQUlBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BRkEsTUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFkQSxHQVJBO0FBd0JBLFNBeEJBLHFCQXdCQTtBQUNBO0FBQ0EsR0ExQkE7QUEyQkEsV0EzQkEsdUJBMkJBO0FBQ0E7QUFDQTtBQTdCQSIsImZpbGUiOiI1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwidHlwZWQtZWxlbWVudFwiIHJlZj1cInR5cGVkRWxlbWVudFwiPlxuICAgIDxzbG90Pjwvc2xvdD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IFR5cGVkIGZyb20gJ3R5cGVkLmpzJ1xuaW1wb3J0IHsgcHJvcHMsIGdldEV2ZW50SGFuZGxlcnMgfSBmcm9tICcuLi9jb25maWcvdHlwZWQtY29tcG9uZW50LmNvbmZpZydcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAndnVlLXR5cGVkLWpzJyxcbiAgcHJvcHMsXG4gIGRhdGEgKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlZE9iajogbnVsbCxcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICB0aHJvd0Vycm9yOiBmdW5jdGlvbiAobWVzc2FnZSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtZXNzYWdlKVxuICAgIH0sXG4gICAgaW5pdFR5cGVkSlM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0ICR0eXBlZCA9IHRoaXMuJHJlZnMudHlwZWRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50eXBpbmcnKVxuXG4gICAgICBpZiAodGhpcy4kc2xvdHMuZGVmYXVsdC5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMudGhyb3dFcnJvcihgSnVzdCBvbmUgY2hpbGQgZWxlbWVudCBhbGxvd2VkIGluc2lkZSA8JHt0aGlzLiRvcHRpb25zLm5hbWV9PiBjb21wb25lbnQuYClcbiAgICAgIH0gZWxzZSBpZiAodGhpcy4kc2xvdHMuZGVmYXVsdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgbGV0IHR5cGVkQ29uZmlnID0gdGhpcy4kcHJvcHNcbiAgICAgICAgdHlwZWRDb25maWcgPSBnZXRFdmVudEhhbmRsZXJzKHRoaXMsIHR5cGVkQ29uZmlnKVxuICAgICAgICB0aGlzLnR5cGVkT2JqID0gbmV3IFR5cGVkKCR0eXBlZCwgdHlwZWRDb25maWcpXG4gICAgICB9XG4gICAgfSxcbiAgfSxcbiAgbW91bnRlZCAoKSB7XG4gICAgdGhpcy5pbml0VHlwZWRKUygpXG4gIH0sXG4gIGRlc3Ryb3llZCAoKSB7XG4gICAgdGhpcy50eXBlZE9iai5kZXN0cm95KClcbiAgfSxcbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cbi50eXBlZC1lbGVtZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAudHlwZWQtY3Vyc29yIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGFuaW1hdGlvbjogdHlwZWRqc0JsaW5rIDAuN3MgaW5maW5pdGU7XG4gIH1cbn1cblxuQGtleWZyYW1lcyB0eXBlZGpzQmxpbmt7XG4gIDUwJSB7IG9wYWNpdHk6IDAuMDsgfVxufVxuPC9zdHlsZT5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBWdWVUeXBlZEpzLnZ1ZT8yYjM1NjFiMyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///5\n");
117 |
118 | /***/ }),
119 | /* 6 */
120 | /***/ (function(module, exports) {
121 |
122 | eval("module.exports = function (module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function () {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function get() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function get() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzP2MzYzIiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIndlYnBhY2tQb2x5ZmlsbCIsImRlcHJlY2F0ZSIsInBhdGhzIiwiY2hpbGRyZW4iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJsIiwiaSJdLCJtYXBwaW5ncyI6IkFBQUFBLE9BQU9DLE9BQVAsR0FBaUIsVUFBU0QsTUFBVCxFQUFpQjtBQUNqQyxLQUFHLENBQUNBLE9BQU9FLGVBQVgsRUFBNEI7QUFDM0JGLFNBQU9HLFNBQVAsR0FBbUIsWUFBVyxDQUFFLENBQWhDO0FBQ0FILFNBQU9JLEtBQVAsR0FBZSxFQUFmO0FBQ0E7QUFDQSxNQUFHLENBQUNKLE9BQU9LLFFBQVgsRUFBcUJMLE9BQU9LLFFBQVAsR0FBa0IsRUFBbEI7QUFDckJDLFNBQU9DLGNBQVAsQ0FBc0JQLE1BQXRCLEVBQThCLFFBQTlCLEVBQXdDO0FBQ3ZDUSxlQUFZLElBRDJCO0FBRXZDQyxRQUFLLGVBQVc7QUFDZixXQUFPVCxPQUFPVSxDQUFkO0FBQ0E7QUFKc0MsR0FBeEM7QUFNQUosU0FBT0MsY0FBUCxDQUFzQlAsTUFBdEIsRUFBOEIsSUFBOUIsRUFBb0M7QUFDbkNRLGVBQVksSUFEdUI7QUFFbkNDLFFBQUssZUFBVztBQUNmLFdBQU9ULE9BQU9XLENBQWQ7QUFDQTtBQUprQyxHQUFwQztBQU1BWCxTQUFPRSxlQUFQLEdBQXlCLENBQXpCO0FBQ0E7QUFDRCxRQUFPRixNQUFQO0FBQ0EsQ0FyQkQiLCJmaWxlIjoiNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obW9kdWxlKSB7XHJcblx0aWYoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcclxuXHRcdG1vZHVsZS5kZXByZWNhdGUgPSBmdW5jdGlvbigpIHt9O1xyXG5cdFx0bW9kdWxlLnBhdGhzID0gW107XHJcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcclxuXHRcdGlmKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xyXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xyXG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcclxuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XHJcblx0fVxyXG5cdHJldHVybiBtb2R1bGU7XHJcbn07XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAod2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///6\n");
123 |
124 | /***/ }),
125 | /* 7 */
126 | /***/ (function(module, exports) {
127 |
128 | eval("// removed by extract-text-webpack-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9WdWVUeXBlZEpzLnZ1ZT9iYzY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9leHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW4vbG9hZGVyLmpzP3tcIm9taXRcIjowLFwicmVtb3ZlXCI6dHJ1ZX0hLi9+L2Nzcy1sb2FkZXIhLi9+L3Z1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyLmpzP2lkPWRhdGEtdi0xZGU0NjQyZCEuL34vc2Fzcy1sb2FkZXIhLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9zcmMvY29tcG9uZW50cy9WdWVUeXBlZEpzLnZ1ZVxuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///7\n");
129 |
130 | /***/ }),
131 | /* 8 */
132 | /***/ (function(module, exports) {
133 |
134 | eval("module.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n scopeId,\n cssModules\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n // inject cssModules\n if (cssModules) {\n var computed = options.computed || (options.computed = {})\n Object.keys(cssModules).forEach(function (key) {\n var module = cssModules[key]\n computed[key] = function () { return module }\n })\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyLmpzP2Q0ZjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkRBQTZEO0FBQzdEO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICByYXdTY3JpcHRFeHBvcnRzLFxuICBjb21waWxlZFRlbXBsYXRlLFxuICBzY29wZUlkLFxuICBjc3NNb2R1bGVzXG4pIHtcbiAgdmFyIGVzTW9kdWxlXG4gIHZhciBzY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0RXhwb3J0cyA9IHJhd1NjcmlwdEV4cG9ydHMgfHwge31cblxuICAvLyBFUzYgbW9kdWxlcyBpbnRlcm9wXG4gIHZhciB0eXBlID0gdHlwZW9mIHJhd1NjcmlwdEV4cG9ydHMuZGVmYXVsdFxuICBpZiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGVzTW9kdWxlID0gcmF3U2NyaXB0RXhwb3J0c1xuICAgIHNjcmlwdEV4cG9ydHMgPSByYXdTY3JpcHRFeHBvcnRzLmRlZmF1bHRcbiAgfVxuXG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAoY29tcGlsZWRUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMucmVuZGVyID0gY29tcGlsZWRUZW1wbGF0ZS5yZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IGNvbXBpbGVkVGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zXG4gIH1cblxuICAvLyBzY29wZWRJZFxuICBpZiAoc2NvcGVJZCkge1xuICAgIG9wdGlvbnMuX3Njb3BlSWQgPSBzY29wZUlkXG4gIH1cblxuICAvLyBpbmplY3QgY3NzTW9kdWxlc1xuICBpZiAoY3NzTW9kdWxlcykge1xuICAgIHZhciBjb21wdXRlZCA9IG9wdGlvbnMuY29tcHV0ZWQgfHwgKG9wdGlvbnMuY29tcHV0ZWQgPSB7fSlcbiAgICBPYmplY3Qua2V5cyhjc3NNb2R1bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtb2R1bGUgPSBjc3NNb2R1bGVzW2tleV1cbiAgICAgIGNvbXB1dGVkW2tleV0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBtb2R1bGUgfVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVzTW9kdWxlOiBlc01vZHVsZSxcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n");
135 |
136 | /***/ }),
137 | /* 9 */
138 | /***/ (function(module, exports, __webpack_require__) {
139 |
140 | eval("module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n ref: \"typedElement\",\n staticClass: \"typed-element\"\n }, [_vm._t(\"default\")], 2)\n},staticRenderFns: []}\nmodule.exports.render._withStripped = true\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\").rerender(\"data-v-1de4642d\", module.exports)\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9WdWVUeXBlZEpzLnZ1ZT9jZjljIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBbUIsYUFBYSwwQkFBMEI7QUFDMUU7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdkaXYnLCB7XG4gICAgcmVmOiBcInR5cGVkRWxlbWVudFwiLFxuICAgIHN0YXRpY0NsYXNzOiBcInR5cGVkLWVsZW1lbnRcIlxuICB9LCBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sIDIpXG59LHN0YXRpY1JlbmRlckZuczogW119XG5tb2R1bGUuZXhwb3J0cy5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKG1vZHVsZS5ob3QuZGF0YSkge1xuICAgICByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpLnJlcmVuZGVyKFwiZGF0YS12LTFkZTQ2NDJkXCIsIG1vZHVsZS5leHBvcnRzKVxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyLmpzP2lkPWRhdGEtdi0xZGU0NjQyZCEuL34vdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vc3JjL2NvbXBvbmVudHMvVnVlVHlwZWRKcy52dWVcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9\n");
141 |
142 | /***/ })
143 | /******/ ]);
144 | });
--------------------------------------------------------------------------------
/dist/vue-typed-js.css:
--------------------------------------------------------------------------------
1 |
2 | .typed-element {
3 | display: flex;
4 | align-items: center;
5 | }
6 | .typed-element .typed-cursor {
7 | opacity: 1;
8 | animation: typedjsBlink 0.7s infinite;
9 | }
10 | @keyframes typedjsBlink {
11 | 50% {
12 | opacity: 0.0;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | export { default } from './dist/vue-typed-js.common'
2 | export * from './dist/vue-typed-js.common'
3 | import './dist/vue-typed-js.css'
4 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-typed-js",
3 | "description": "typed.js vue integration - easily create typing animations",
4 | "version": "0.2.0",
5 | "author": {
6 | "name": "Orlando Wenzinger",
7 | "email": "orlando.wenzinger@bluewin.ch"
8 | },
9 | "keywords": [
10 | "vue",
11 | "vuejs",
12 | "plugin"
13 | ],
14 | "repository": "https://github.com/Orlandster1998/vue-typed-js",
15 | "license": "MIT",
16 | "main": "dist/vue-typed-js.common.js",
17 | "unpkg": "dist/vue-typed-js.browser.js",
18 | "module": "index.js",
19 | "scripts": {
20 | "dev": "cross-env NODE_ENV=development webpack --config config/webpack.config.dev.js --progress --watch",
21 | "build": "npm run build:browser && npm run build:common",
22 | "build:browser": "cross-env NODE_ENV=production webpack --config config/webpack.config.browser.js --progress --hide-modules",
23 | "build:common": "cross-env NODE_ENV=production webpack --config config/webpack.config.common.js --progress --hide-modules",
24 | "prepublish": "npm run build"
25 | },
26 | "devDependencies": {
27 | "babel-core": "^6.0.0",
28 | "babel-eslint": "^7.1.1",
29 | "babel-loader": "^6.0.0",
30 | "babel-preset-es2015": "^6.14.0",
31 | "babel-preset-stage-0": "^6.16.0",
32 | "cross-env": "^3.1.3",
33 | "css-loader": "^0.26.1",
34 | "eslint": "^3.12.1",
35 | "eslint-config-standard": "^6.2.1",
36 | "eslint-loader": "^1.6.1",
37 | "eslint-plugin-html": "^1.6.0",
38 | "eslint-plugin-promise": "^3.4.0",
39 | "eslint-plugin-standard": "^2.0.1",
40 | "extract-text-webpack-plugin": "^2.0.0-beta.4",
41 | "node-sass": "^4.0.0",
42 | "sass-loader": "^4.1.0",
43 | "vue-loader": "^10.0.0",
44 | "vue-template-compiler": "^2.1.6",
45 | "webpack": "^2.1.0-beta.28",
46 | "webpack-merge": "^1.1.2"
47 | },
48 | "dependencies": {
49 | "typed.js": "git+https://github.com/mattboldt/typed.js.git"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/components/VueTypedJs.vue:
--------------------------------------------------------------------------------
1 |
2 |