LearnPress – WordPress LMS Plugin - Version 3.2.8.7

Version Description

~ Fix: start quiz 404 ~ Optimize

Download this release

Release Info

Developer ThimPress
Plugin Icon 128x128 LearnPress – WordPress LMS Plugin
Version 3.2.8.7
Comparing to
See all releases

Code changes from version 3.2.8.5 to 3.2.8.7

assets/js/utils.js ADDED
@@ -0,0 +1,1629 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /******/ (function(modules) { // webpackBootstrap
2
+ /******/ // The module cache
3
+ /******/ var installedModules = {};
4
+ /******/
5
+ /******/ // The require function
6
+ /******/ function __webpack_require__(moduleId) {
7
+ /******/
8
+ /******/ // Check if module is in cache
9
+ /******/ if(installedModules[moduleId]) {
10
+ /******/ return installedModules[moduleId].exports;
11
+ /******/ }
12
+ /******/ // Create a new module (and put it into the cache)
13
+ /******/ var module = installedModules[moduleId] = {
14
+ /******/ i: moduleId,
15
+ /******/ l: false,
16
+ /******/ exports: {}
17
+ /******/ };
18
+ /******/
19
+ /******/ // Execute the module function
20
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
+ /******/
22
+ /******/ // Flag the module as loaded
23
+ /******/ module.l = true;
24
+ /******/
25
+ /******/ // Return the exports of the module
26
+ /******/ return module.exports;
27
+ /******/ }
28
+ /******/
29
+ /******/
30
+ /******/ // expose the modules object (__webpack_modules__)
31
+ /******/ __webpack_require__.m = modules;
32
+ /******/
33
+ /******/ // expose the module cache
34
+ /******/ __webpack_require__.c = installedModules;
35
+ /******/
36
+ /******/ // define getter function for harmony exports
37
+ /******/ __webpack_require__.d = function(exports, name, getter) {
38
+ /******/ if(!__webpack_require__.o(exports, name)) {
39
+ /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40
+ /******/ }
41
+ /******/ };
42
+ /******/
43
+ /******/ // define __esModule on exports
44
+ /******/ __webpack_require__.r = function(exports) {
45
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47
+ /******/ }
48
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
49
+ /******/ };
50
+ /******/
51
+ /******/ // create a fake namespace object
52
+ /******/ // mode & 1: value is a module id, require it
53
+ /******/ // mode & 2: merge all properties of value into the ns
54
+ /******/ // mode & 4: return value when already ns object
55
+ /******/ // mode & 8|1: behave like require
56
+ /******/ __webpack_require__.t = function(value, mode) {
57
+ /******/ if(mode & 1) value = __webpack_require__(value);
58
+ /******/ if(mode & 8) return value;
59
+ /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60
+ /******/ var ns = Object.create(null);
61
+ /******/ __webpack_require__.r(ns);
62
+ /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63
+ /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64
+ /******/ return ns;
65
+ /******/ };
66
+ /******/
67
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
68
+ /******/ __webpack_require__.n = function(module) {
69
+ /******/ var getter = module && module.__esModule ?
70
+ /******/ function getDefault() { return module['default']; } :
71
+ /******/ function getModuleExports() { return module; };
72
+ /******/ __webpack_require__.d(getter, 'a', getter);
73
+ /******/ return getter;
74
+ /******/ };
75
+ /******/
76
+ /******/ // Object.prototype.hasOwnProperty.call
77
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78
+ /******/
79
+ /******/ // __webpack_public_path__
80
+ /******/ __webpack_require__.p = "";
81
+ /******/
82
+ /******/
83
+ /******/ // Load entry module and return exports
84
+ /******/ return __webpack_require__(__webpack_require__.s = "./assets/src/js/utils/index.js");
85
+ /******/ })
86
+ /************************************************************************/
87
+ /******/ ({
88
+
89
+ /***/ "./assets/src/js/utils/event-callback.js":
90
+ /*!***********************************************!*\
91
+ !*** ./assets/src/js/utils/event-callback.js ***!
92
+ \***********************************************/
93
+ /*! exports provided: default */
94
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
95
+
96
+ "use strict";
97
+ __webpack_require__.r(__webpack_exports__);
98
+ /**
99
+ * Manage event callbacks.
100
+ * Allow add/remove a callback function into custom event of an object.
101
+ *
102
+ * @constructor
103
+ */
104
+ var Event_Callback = function Event_Callback(self) {
105
+ var callbacks = {};
106
+ var $ = window.jQuery;
107
+
108
+ this.on = function (event, callback) {
109
+ var namespaces = event.split('.'),
110
+ namespace = '';
111
+
112
+ if (namespaces.length > 1) {
113
+ event = namespaces[0];
114
+ namespace = namespaces[1];
115
+ }
116
+
117
+ if (!callbacks[event]) {
118
+ callbacks[event] = [[], {}];
119
+ }
120
+
121
+ if (namespace) {
122
+ if (!callbacks[event][1][namespace]) {
123
+ callbacks[event][1][namespace] = [];
124
+ }
125
+
126
+ callbacks[event][1][namespace].push(callback);
127
+ } else {
128
+ callbacks[event][0].push(callback);
129
+ }
130
+
131
+ return self;
132
+ };
133
+
134
+ this.off = function (event, callback) {
135
+ var namespaces = event.split('.'),
136
+ namespace = '';
137
+
138
+ if (namespaces.length > 1) {
139
+ event = namespaces[0];
140
+ namespace = namespaces[1];
141
+ }
142
+
143
+ if (!callbacks[event]) {
144
+ return self;
145
+ }
146
+
147
+ var at = -1;
148
+
149
+ if (!namespace) {
150
+ if ($.isFunction(callback)) {
151
+ at = callbacks[event][0].indexOf(callback);
152
+
153
+ if (at < 0) {
154
+ return self;
155
+ }
156
+
157
+ callbacks[event][0].splice(at, 1);
158
+ } else {
159
+ callbacks[event][0] = [];
160
+ }
161
+ } else {
162
+ if (!callbacks[event][1][namespace]) {
163
+ return self;
164
+ }
165
+
166
+ if ($.isFunction(callback)) {
167
+ at = callbacks[event][1][namespace].indexOf(callback);
168
+
169
+ if (at < 0) {
170
+ return self;
171
+ }
172
+
173
+ callbacks[event][1][namespace].splice(at, 1);
174
+ } else {
175
+ callbacks[event][1][namespace] = [];
176
+ }
177
+ }
178
+
179
+ return self;
180
+ };
181
+
182
+ this.callEvent = function (event, callbackArgs) {
183
+ if (!callbacks[event]) {
184
+ return;
185
+ }
186
+
187
+ if (callbacks[event][0]) {
188
+ for (var i = 0; i < callbacks[event][0].length; i++) {
189
+ $.isFunction(callbacks[event][0][i]) && callbacks[event][i][0].apply(self, callbackArgs);
190
+ }
191
+ }
192
+
193
+ if (callbacks[event][1]) {
194
+ for (var i in callbacks[event][1]) {
195
+ for (var j = 0; j < callbacks[event][1][i].length; j++) {
196
+ $.isFunction(callbacks[event][1][i][j]) && callbacks[event][1][i][j].apply(self, callbackArgs);
197
+ }
198
+ }
199
+ }
200
+ };
201
+ };
202
+
203
+ /* harmony default export */ __webpack_exports__["default"] = (Event_Callback);
204
+
205
+ /***/ }),
206
+
207
+ /***/ "./assets/src/js/utils/extend.js":
208
+ /*!***************************************!*\
209
+ !*** ./assets/src/js/utils/extend.js ***!
210
+ \***************************************/
211
+ /*! exports provided: default */
212
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
213
+
214
+ "use strict";
215
+ __webpack_require__.r(__webpack_exports__);
216
+ /* harmony default export */ __webpack_exports__["default"] = (function () {
217
+ window.LP = window.LP || {};
218
+
219
+ if (typeof arguments[0] === 'string') {
220
+ LP[arguments[0]] = LP[arguments[0]] || {};
221
+ LP[arguments[0]] = jQuery.extend(LP[arguments[0]], arguments[1]);
222
+ } else {
223
+ LP = jQuery.extend(LP, arguments[0]);
224
+ }
225
+ });
226
+
227
+ /***/ }),
228
+
229
+ /***/ "./assets/src/js/utils/fn.js":
230
+ /*!***********************************!*\
231
+ !*** ./assets/src/js/utils/fn.js ***!
232
+ \***********************************/
233
+ /*! exports provided: default */
234
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
235
+
236
+ "use strict";
237
+ __webpack_require__.r(__webpack_exports__);
238
+ /**
239
+ * Auto prepend `LP` prefix for jQuery fn plugin name.
240
+ *
241
+ * Create : $.fn.LP( 'PLUGIN_NAME', func) <=> $.fn.LP_PLUGIN_NAME
242
+ * Usage: $(selector).LP('PLUGIN_NAME') <=> $(selector).LP_PLUGIN_NAME()
243
+ *
244
+ * @version 3.2.6
245
+ */
246
+ var $ = window.jQuery;
247
+ var exp;
248
+
249
+ (function () {
250
+ if ($ === undefined) {
251
+ return;
252
+ }
253
+
254
+ $.fn.LP = exp = function exp(widget, fn) {
255
+ if ($.isFunction(fn)) {
256
+ $.fn['LP_' + widget] = fn;
257
+ } else if (widget) {
258
+ var args = [];
259
+
260
+ if (arguments.length > 1) {
261
+ for (var i = 1; i < arguments.length; i++) {
262
+ args.push(arguments[i]);
263
+ }
264
+ }
265
+
266
+ return $.isFunction($(this)['LP_' + widget]) ? $(this)['LP_' + widget].apply(this, args) : this;
267
+ }
268
+
269
+ return this;
270
+ };
271
+ })();
272
+
273
+ /* harmony default export */ __webpack_exports__["default"] = (exp);
274
+
275
+ /***/ }),
276
+
277
+ /***/ "./assets/src/js/utils/hook.js":
278
+ /*!*************************************!*\
279
+ !*** ./assets/src/js/utils/hook.js ***!
280
+ \*************************************/
281
+ /*! exports provided: default */
282
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
283
+
284
+ "use strict";
285
+ __webpack_require__.r(__webpack_exports__);
286
+ var Hook = {
287
+ hooks: {
288
+ action: {},
289
+ filter: {}
290
+ },
291
+ addAction: function addAction(action, callable, priority, tag) {
292
+ this.addHook('action', action, callable, priority, tag);
293
+ return this;
294
+ },
295
+ addFilter: function addFilter(action, callable, priority, tag) {
296
+ this.addHook('filter', action, callable, priority, tag);
297
+ return this;
298
+ },
299
+ doAction: function doAction(action) {
300
+ this.doHook('action', action, arguments);
301
+ return this;
302
+ },
303
+ applyFilters: function applyFilters(action) {
304
+ return this.doHook('filter', action, arguments);
305
+ },
306
+ removeAction: function removeAction(action, tag) {
307
+ this.removeHook('action', action, tag);
308
+ return this;
309
+ },
310
+ removeFilter: function removeFilter(action, priority, tag) {
311
+ this.removeHook('filter', action, priority, tag);
312
+ return this;
313
+ },
314
+ addHook: function addHook(hookType, action, callable, priority, tag) {
315
+ if (undefined === this.hooks[hookType][action]) {
316
+ this.hooks[hookType][action] = [];
317
+ }
318
+
319
+ var hooks = this.hooks[hookType][action];
320
+
321
+ if (undefined === tag) {
322
+ tag = action + '_' + hooks.length;
323
+ }
324
+
325
+ this.hooks[hookType][action].push({
326
+ tag: tag,
327
+ callable: callable,
328
+ priority: priority
329
+ });
330
+ return this;
331
+ },
332
+ doHook: function doHook(hookType, action, args) {
333
+ // splice args from object into array and remove first index which is the hook name
334
+ args = Array.prototype.slice.call(args, 1);
335
+
336
+ if (undefined !== this.hooks[hookType][action]) {
337
+ var hooks = this.hooks[hookType][action],
338
+ hook; //sort by priority
339
+
340
+ hooks.sort(function (a, b) {
341
+ return a["priority"] - b["priority"];
342
+ });
343
+
344
+ for (var i = 0; i < hooks.length; i++) {
345
+ hook = hooks[i].callable;
346
+ if (typeof hook !== 'function') hook = window[hook];
347
+
348
+ if ('action' === hookType) {
349
+ hook.apply(null, args);
350
+ } else {
351
+ args[0] = hook.apply(null, args);
352
+ }
353
+ }
354
+ }
355
+
356
+ if ('filter' === hookType) {
357
+ return args[0];
358
+ }
359
+
360
+ return this;
361
+ },
362
+ removeHook: function removeHook(hookType, action, priority, tag) {
363
+ if (undefined !== this.hooks[hookType][action]) {
364
+ var hooks = this.hooks[hookType][action];
365
+
366
+ for (var i = hooks.length - 1; i >= 0; i--) {
367
+ if ((undefined === tag || tag === hooks[i].tag) && (undefined === priority || priority === hooks[i].priority)) {
368
+ hooks.splice(i, 1);
369
+ }
370
+ }
371
+ }
372
+
373
+ return this;
374
+ }
375
+ };
376
+ /* harmony default export */ __webpack_exports__["default"] = (Hook);
377
+
378
+ /***/ }),
379
+
380
+ /***/ "./assets/src/js/utils/index.js":
381
+ /*!**************************************!*\
382
+ !*** ./assets/src/js/utils/index.js ***!
383
+ \**************************************/
384
+ /*! exports provided: default */
385
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
386
+
387
+ "use strict";
388
+ __webpack_require__.r(__webpack_exports__);
389
+ /* harmony import */ var _extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./extend */ "./assets/src/js/utils/extend.js");
390
+ /* harmony import */ var _fn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fn */ "./assets/src/js/utils/fn.js");
391
+ /* harmony import */ var _quick_tip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./quick-tip */ "./assets/src/js/utils/quick-tip.js");
392
+ /* harmony import */ var _quick_tip__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_quick_tip__WEBPACK_IMPORTED_MODULE_2__);
393
+ /* harmony import */ var _message_box__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./message-box */ "./assets/src/js/utils/message-box.js");
394
+ /* harmony import */ var _event_callback__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./event-callback */ "./assets/src/js/utils/event-callback.js");
395
+ /* harmony import */ var _hook__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hook */ "./assets/src/js/utils/hook.js");
396
+ /* harmony import */ var _jquery_plugins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./jquery.plugins */ "./assets/src/js/utils/jquery.plugins.js");
397
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
398
+
399
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
400
+
401
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
402
+
403
+ /**
404
+ * Utility functions may use for both admin and frontend.
405
+ *
406
+ * @version 3.2.6
407
+ */
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+ var $ = jQuery;
416
+
417
+ String.prototype.getQueryVar = function (name) {
418
+ name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
419
+ var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
420
+ results = regex.exec(this);
421
+ return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
422
+ };
423
+
424
+ String.prototype.addQueryVar = function (name, value) {
425
+ var url = this,
426
+ m = url.split('#');
427
+ url = m[0];
428
+
429
+ if (name.match(/\[/)) {
430
+ url += url.match(/\?/) ? '&' : '?';
431
+ url += name + '=' + value;
432
+ } else {
433
+ if (url.indexOf('&' + name + '=') != -1 || url.indexOf('?' + name + '=') != -1) {
434
+ url = url.replace(new RegExp(name + "=([^&#]*)", 'g'), name + '=' + value);
435
+ } else {
436
+ url += url.match(/\?/) ? '&' : '?';
437
+ url += name + '=' + value;
438
+ }
439
+ }
440
+
441
+ return url + (m[1] ? '#' + m[1] : '');
442
+ };
443
+
444
+ String.prototype.removeQueryVar = function (name) {
445
+ var url = this;
446
+ var m = url.split('#');
447
+ url = m[0];
448
+ name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
449
+ var regex = new RegExp("[\\?&]" + name + "([\[][^=]*)?=([^&#]*)", 'g');
450
+ url = url.replace(regex, '');
451
+ return url + (m[1] ? '#' + m[1] : '');
452
+ };
453
+
454
+ if ($.isEmptyObject("") == false) {
455
+ $.isEmptyObject = function (a) {
456
+ var prop;
457
+
458
+ for (prop in a) {
459
+ if (a.hasOwnProperty(prop)) {
460
+ return false;
461
+ }
462
+ }
463
+
464
+ return true;
465
+ };
466
+ }
467
+
468
+ var _default = {
469
+ Hook: _hook__WEBPACK_IMPORTED_MODULE_5__["default"],
470
+ setUrl: function setUrl(url, ember, title) {
471
+ if (url) {
472
+ history.pushState({}, title, url);
473
+ LP.Hook.doAction('learn_press_set_location_url', url);
474
+ }
475
+ },
476
+ toggleGroupSection: function toggleGroupSection(el, target) {
477
+ var $el = $(el),
478
+ isHide = $el.hasClass('hide-if-js');
479
+
480
+ if (isHide) {
481
+ $el.hide().removeClass('hide-if-js');
482
+ }
483
+
484
+ $el.removeClass('hide-if-js').slideToggle(function () {
485
+ var $this = $(this);
486
+
487
+ if ($this.is(':visible')) {
488
+ $(target).addClass('toggle-on').removeClass('toggle-off');
489
+ } else {
490
+ $(target).addClass('toggle-off').removeClass('toggle-on');
491
+ }
492
+ });
493
+ },
494
+ overflow: function overflow(el, v) {
495
+ var $el = $(el),
496
+ overflow = $el.css('overflow');
497
+
498
+ if (v) {
499
+ $el.css('overflow', v).data('overflow', overflow);
500
+ } else {
501
+ $el.css('overflow', $el.data('overflow'));
502
+ }
503
+ },
504
+ getUrl: function getUrl() {
505
+ return window.location.href;
506
+ },
507
+ addQueryVar: function addQueryVar(name, value, url) {
508
+ return (url === undefined ? window.location.href : url).addQueryVar(name, value);
509
+ },
510
+ removeQueryVar: function removeQueryVar(name, url) {
511
+ return (url === undefined ? window.location.href : url).removeQueryVar(name);
512
+ },
513
+ reload: function reload(url) {
514
+ if (!url) {
515
+ url = window.location.href;
516
+ }
517
+
518
+ window.location.href = url;
519
+ },
520
+ parseResponse: function parseResponse(response, type) {
521
+ var m = response.match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);
522
+
523
+ if (m) {
524
+ response = m[1];
525
+ }
526
+
527
+ return (type || "json") === "json" ? this.parseJSON(response) : response;
528
+ },
529
+ parseJSON: function parseJSON(data) {
530
+ var m = (data + '').match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);
531
+
532
+ try {
533
+ if (m) {
534
+ data = $.parseJSON(m[1]);
535
+ } else {
536
+ data = $.parseJSON(data);
537
+ }
538
+ } catch (e) {
539
+ data = {};
540
+ }
541
+
542
+ return data;
543
+ },
544
+ ajax: function ajax(args) {
545
+ var type = args.type || 'post',
546
+ dataType = args.dataType || 'json',
547
+ data = args.action ? $.extend(args.data, {
548
+ 'lp-ajax': args.action
549
+ }) : args.data,
550
+ beforeSend = args.beforeSend || function () {},
551
+ url = args.url || window.location.href; // console.debug( beforeSend );
552
+
553
+
554
+ $.ajax({
555
+ data: data,
556
+ url: url,
557
+ type: type,
558
+ dataType: 'html',
559
+ beforeSend: beforeSend.apply(null, args),
560
+ success: function success(raw) {
561
+ var response = LP.parseResponse(raw, dataType);
562
+ $.isFunction(args.success) && args.success(response, raw);
563
+ },
564
+ error: function error() {
565
+ $.isFunction(args.error) && args.error.apply(null, LP.funcArgs2Array());
566
+ }
567
+ });
568
+ },
569
+ doAjax: function doAjax(args) {
570
+ var type = args.type || 'post',
571
+ dataType = args.dataType || 'json',
572
+ action = (args.prefix === undefined || 'learnpress_') + args.action,
573
+ data = args.action ? $.extend(args.data, {
574
+ action: action
575
+ }) : args.data;
576
+ $.ajax({
577
+ data: data,
578
+ url: args.url || window.location.href,
579
+ type: type,
580
+ dataType: 'html',
581
+ success: function success(raw) {
582
+ var response = LP.parseResponse(raw, dataType);
583
+ $.isFunction(args.success) && args.success(response, raw);
584
+ },
585
+ error: function error() {
586
+ $.isFunction(args.error) && args.error.apply(null, LP.funcArgs2Array());
587
+ }
588
+ });
589
+ },
590
+ funcArgs2Array: function funcArgs2Array(args) {
591
+ var arr = [];
592
+
593
+ for (var i = 0; i < args.length; i++) {
594
+ arr.push(args[i]);
595
+ }
596
+
597
+ return arr;
598
+ },
599
+ addFilter: function addFilter(action, callback) {
600
+ var $doc = $(document),
601
+ event = 'LP.' + action;
602
+ $doc.on(event, callback);
603
+ LP.log($doc.data('events'));
604
+ return this;
605
+ },
606
+ applyFilters: function applyFilters() {
607
+ var $doc = $(document),
608
+ action = arguments[0],
609
+ args = this.funcArgs2Array(arguments);
610
+
611
+ if ($doc.hasEvent(action)) {
612
+ args[0] = 'LP.' + action;
613
+ return $doc.triggerHandler.apply($doc, args);
614
+ }
615
+
616
+ return args[1];
617
+ },
618
+ addAction: function addAction(action, callback) {
619
+ return this.addFilter(action, callback);
620
+ },
621
+ doAction: function doAction() {
622
+ var $doc = $(document),
623
+ action = arguments[0],
624
+ args = this.funcArgs2Array(arguments);
625
+
626
+ if ($doc.hasEvent(action)) {
627
+ args[0] = 'LP.' + action;
628
+ $doc.trigger.apply($doc, args);
629
+ }
630
+ },
631
+ toElement: function toElement(element, args) {
632
+ if ($(element).length === 0) {
633
+ return;
634
+ }
635
+
636
+ args = $.extend({
637
+ delay: 300,
638
+ duration: 'slow',
639
+ offset: 50,
640
+ container: null,
641
+ callback: null,
642
+ invisible: false
643
+ }, args || {});
644
+ var $container = $(args.container),
645
+ rootTop = 0;
646
+
647
+ if ($container.length === 0) {
648
+ $container = $('body, html');
649
+ }
650
+
651
+ rootTop = $container.offset().top;
652
+ var to = $(element).offset().top + $container.scrollTop() - rootTop - args.offset;
653
+
654
+ function isElementInView(element, fullyInView) {
655
+ var pageTop = $container.scrollTop();
656
+ var pageBottom = pageTop + $container.height();
657
+ var elementTop = $(element).offset().top - $container.offset().top;
658
+ var elementBottom = elementTop + $(element).height();
659
+
660
+ if (fullyInView === true) {
661
+ return pageTop < elementTop && pageBottom > elementBottom;
662
+ } else {
663
+ return elementTop <= pageBottom && elementBottom >= pageTop;
664
+ }
665
+ }
666
+
667
+ if (args.invisible && isElementInView(element, true)) {
668
+ return;
669
+ }
670
+
671
+ $container.fadeIn(10).delay(args.delay).animate({
672
+ scrollTop: to
673
+ }, args.duration, args.callback);
674
+ },
675
+ uniqueId: function uniqueId(prefix, more_entropy) {
676
+ if (typeof prefix === 'undefined') {
677
+ prefix = '';
678
+ }
679
+
680
+ var retId;
681
+
682
+ var formatSeed = function formatSeed(seed, reqWidth) {
683
+ seed = parseInt(seed, 10).toString(16); // to hex str
684
+
685
+ if (reqWidth < seed.length) {
686
+ // so long we split
687
+ return seed.slice(seed.length - reqWidth);
688
+ }
689
+
690
+ if (reqWidth > seed.length) {
691
+ // so short we pad
692
+ return new Array(1 + (reqWidth - seed.length)).join('0') + seed;
693
+ }
694
+
695
+ return seed;
696
+ }; // BEGIN REDUNDANT
697
+
698
+
699
+ if (!this.php_js) {
700
+ this.php_js = {};
701
+ } // END REDUNDANT
702
+
703
+
704
+ if (!this.php_js.uniqidSeed) {
705
+ // init seed with big random int
706
+ this.php_js.uniqidSeed = Math.floor(Math.random() * 0x75bcd15);
707
+ }
708
+
709
+ this.php_js.uniqidSeed++;
710
+ retId = prefix; // start with prefix, add current milliseconds hex string
711
+
712
+ retId += formatSeed(parseInt(new Date().getTime() / 1000, 10), 8);
713
+ retId += formatSeed(this.php_js.uniqidSeed, 5); // add seed hex string
714
+
715
+ if (more_entropy) {
716
+ // for more entropy we add a float lower to 10
717
+ retId += (Math.random() * 10).toFixed(8).toString();
718
+ }
719
+
720
+ return retId;
721
+ },
722
+ log: function log() {
723
+ //if (typeof LEARN_PRESS_DEBUG != 'undefined' && LEARN_PRESS_DEBUG && console) {
724
+ for (var i = 0, n = arguments.length; i < n; i++) {
725
+ console.log(arguments[i]);
726
+ } //}
727
+
728
+ },
729
+ blockContent: function blockContent() {
730
+ if ($('#learn-press-block-content').length === 0) {
731
+ $(LP.template('learn-press-template-block-content', {})).appendTo($('body'));
732
+ }
733
+
734
+ LP.hideMainScrollbar().addClass('block-content');
735
+ $(document).trigger('learn_press_block_content');
736
+ },
737
+ unblockContent: function unblockContent() {
738
+ setTimeout(function () {
739
+ LP.showMainScrollbar().removeClass('block-content');
740
+ $(document).trigger('learn_press_unblock_content');
741
+ }, 350);
742
+ },
743
+ hideMainScrollbar: function hideMainScrollbar(el) {
744
+ if (!el) {
745
+ el = 'html, body';
746
+ }
747
+
748
+ var $el = $(el);
749
+ $el.each(function () {
750
+ var $root = $(this),
751
+ overflow = $root.css('overflow');
752
+ $root.css('overflow', 'hidden').attr('overflow', overflow);
753
+ });
754
+ return $el;
755
+ },
756
+ showMainScrollbar: function showMainScrollbar(el) {
757
+ if (!el) {
758
+ el = 'html, body';
759
+ }
760
+
761
+ var $el = $(el);
762
+ $el.each(function () {
763
+ var $root = $(this),
764
+ overflow = $root.attr('overflow');
765
+ $root.css('overflow', overflow).removeAttr('overflow');
766
+ });
767
+ return $el;
768
+ },
769
+ template: typeof _ !== 'undefined' ? _.memoize(function (id, data) {
770
+ var compiled,
771
+ options = {
772
+ evaluate: /<#([\s\S]+?)#>/g,
773
+ interpolate: /\{\{\{([\s\S]+?)\}\}\}/g,
774
+ escape: /\{\{([^\}]+?)\}\}(?!\})/g,
775
+ variable: 'data'
776
+ };
777
+
778
+ var tmpl = function tmpl(data) {
779
+ compiled = compiled || _.template($('#' + id).html(), null, options);
780
+ return compiled(data);
781
+ };
782
+
783
+ return data ? tmpl(data) : tmpl;
784
+ }, function (a, b) {
785
+ return a + '-' + JSON.stringify(b);
786
+ }) : function () {
787
+ return '';
788
+ },
789
+ alert: function alert(localize, callback) {
790
+ var title = '',
791
+ message = '';
792
+
793
+ if (typeof localize === 'string') {
794
+ message = localize;
795
+ } else {
796
+ if (typeof localize['title'] !== 'undefined') {
797
+ title = localize['title'];
798
+ }
799
+
800
+ if (typeof localize['message'] !== 'undefined') {
801
+ message = localize['message'];
802
+ }
803
+ }
804
+
805
+ $.alerts.alert(message, title, function (e) {
806
+ LP._on_alert_hide();
807
+
808
+ callback && callback(e);
809
+ });
810
+
811
+ this._on_alert_show();
812
+ },
813
+ confirm: function confirm(localize, callback) {
814
+ var title = '',
815
+ message = '';
816
+
817
+ if (typeof localize === 'string') {
818
+ message = localize;
819
+ } else {
820
+ if (typeof localize['title'] !== 'undefined') {
821
+ title = localize['title'];
822
+ }
823
+
824
+ if (typeof localize['message'] !== 'undefined') {
825
+ message = localize['message'];
826
+ }
827
+ }
828
+
829
+ $.alerts.confirm(message, title, function (e) {
830
+ LP._on_alert_hide();
831
+
832
+ callback && callback(e);
833
+ });
834
+
835
+ this._on_alert_show();
836
+ },
837
+ _on_alert_show: function _on_alert_show() {
838
+ var $container = $('#popup_container'),
839
+ $placeholder = $('<span id="popup_container_placeholder" />').insertAfter($container).data('xxx', $container);
840
+ $container.stop().css('top', '-=50').css('opacity', '0').animate({
841
+ top: '+=50',
842
+ opacity: 1
843
+ }, 250);
844
+ },
845
+ _on_alert_hide: function _on_alert_hide() {
846
+ var $holder = $("#popup_container_placeholder"),
847
+ $container = $holder.data('xxx');
848
+
849
+ if ($container) {
850
+ $container.replaceWith($holder);
851
+ }
852
+
853
+ $container.appendTo($(document.body));
854
+ $container.stop().animate({
855
+ top: '+=50',
856
+ opacity: 0
857
+ }, 250, function () {
858
+ $(this).remove();
859
+ });
860
+ },
861
+ sendMessage: function sendMessage(data, object, targetOrigin, transfer) {
862
+ if ($.isPlainObject(data)) {
863
+ data = JSON.stringify(data);
864
+ }
865
+
866
+ object = object || window;
867
+ targetOrigin = targetOrigin || '*';
868
+ object.postMessage(data, targetOrigin, transfer);
869
+ },
870
+ receiveMessage: function receiveMessage(event, b) {
871
+ var target = event.origin || event.originalEvent.origin,
872
+ data = event.data || event.originalEvent.data || '';
873
+
874
+ if (typeof data === 'string' || data instanceof String) {
875
+ if (data.indexOf('{') === 0) {
876
+ data = LP.parseJSON(data);
877
+ }
878
+ }
879
+
880
+ LP.Hook.doAction('learn_press_receive_message', data, target);
881
+ }
882
+ };
883
+ $(document).ready(function () {
884
+ if (typeof $.alerts !== 'undefined') {
885
+ $.alerts.overlayColor = '#000';
886
+ $.alerts.overlayOpacity = 0.5;
887
+ $.alerts.okButton = lpGlobalSettings.localize.button_ok;
888
+ $.alerts.cancelButton = lpGlobalSettings.localize.button_cancel;
889
+ }
890
+
891
+ $('.learn-press-message.fixed').each(function () {
892
+ var $el = $(this),
893
+ options = $el.data();
894
+
895
+ (function ($el, options) {
896
+ if (options.delayIn) {
897
+ setTimeout(function () {
898
+ $el.show().hide().fadeIn();
899
+ }, options.delayIn);
900
+ }
901
+
902
+ if (options.delayOut) {
903
+ setTimeout(function () {
904
+ $el.fadeOut();
905
+ }, options.delayOut + (options.delayIn || 0));
906
+ }
907
+ })($el, options);
908
+ });
909
+ $('body').on('click', '.learn-press-nav-tabs li a', function (e) {
910
+ e.preventDefault();
911
+ var $tab = $(this),
912
+ url = '';
913
+ $tab.closest('li').addClass('active').siblings().removeClass('active');
914
+ $($tab.attr('data-tab')).addClass('active').siblings().removeClass('active');
915
+ $(document).trigger('learn-press/nav-tabs/clicked', $tab);
916
+ });
917
+ setTimeout(function () {
918
+ $('.learn-press-nav-tabs li.active:not(.default) a').trigger('click');
919
+ }, 300);
920
+ $('body.course-item-popup').parent().css('overflow', 'hidden');
921
+
922
+ (function () {
923
+ var timer = null,
924
+ callback = function callback() {
925
+ $('.auto-check-lines').checkLines(function (r) {
926
+ if (r > 1) {
927
+ $(this).removeClass('single-lines');
928
+ } else {
929
+ $(this).addClass('single-lines');
930
+ }
931
+
932
+ $(this).attr('rows', r);
933
+ });
934
+ };
935
+
936
+ $(window).on('resize.check-lines', function () {
937
+ if (timer) {
938
+ timer && clearTimeout(timer);
939
+ timer = setTimeout(callback, 300);
940
+ } else {
941
+ callback();
942
+ }
943
+ });
944
+ })();
945
+
946
+ $('.learn-press-tooltip, .lp-passing-conditional').LP_Tooltip({
947
+ offset: [24, 24]
948
+ });
949
+ $('.learn-press-icon').LP_Tooltip({
950
+ offset: [30, 30]
951
+ });
952
+ $('.learn-press-message[data-autoclose]').each(function () {
953
+ var $el = $(this),
954
+ delay = parseInt($el.data('autoclose'));
955
+
956
+ if (delay) {
957
+ setTimeout(function ($el) {
958
+ $el.fadeOut();
959
+ }, delay, $el);
960
+ }
961
+ });
962
+ $(document).on('click', function () {
963
+ $(document).trigger('learn-press/close-all-quick-tip');
964
+ });
965
+ });
966
+ Object(_extend__WEBPACK_IMPORTED_MODULE_0__["default"])(_objectSpread({
967
+ Event_Callback: _event_callback__WEBPACK_IMPORTED_MODULE_4__["default"],
968
+ MessageBox: _message_box__WEBPACK_IMPORTED_MODULE_3__["default"]
969
+ }, _default));
970
+ /* harmony default export */ __webpack_exports__["default"] = ({
971
+ fn: _fn__WEBPACK_IMPORTED_MODULE_1__["default"],
972
+ QuickTip: _quick_tip__WEBPACK_IMPORTED_MODULE_2___default.a
973
+ });
974
+
975
+ /***/ }),
976
+
977
+ /***/ "./assets/src/js/utils/jquery.plugins.js":
978
+ /*!***********************************************!*\
979
+ !*** ./assets/src/js/utils/jquery.plugins.js ***!
980
+ \***********************************************/
981
+ /*! exports provided: default */
982
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
983
+
984
+ "use strict";
985
+ __webpack_require__.r(__webpack_exports__);
986
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
987
+
988
+ var $ = window.jQuery;
989
+
990
+ var serializeJSON = function serializeJSON(path) {
991
+ var isInput = $(this).is('input') || $(this).is('select') || $(this).is('textarea');
992
+ var unIndexed = isInput ? $(this).serializeArray() : $(this).find('input, select, textarea').serializeArray(),
993
+ indexed = {},
994
+ validate = /(\[([a-zA-Z0-9_-]+)?\]?)/g,
995
+ arrayKeys = {},
996
+ end = false;
997
+ $.each(unIndexed, function () {
998
+ var that = this,
999
+ match = this.name.match(/^([0-9a-zA-Z_-]+)/);
1000
+
1001
+ if (!match) {
1002
+ return;
1003
+ }
1004
+
1005
+ var keys = this.name.match(validate),
1006
+ objPath = "indexed['" + match[0] + "']";
1007
+
1008
+ if (keys) {
1009
+ if (_typeof(indexed[match[0]]) != 'object') {
1010
+ indexed[match[0]] = {};
1011
+ }
1012
+
1013
+ $.each(keys, function (i, prop) {
1014
+ prop = prop.replace(/\]|\[/g, '');
1015
+ var rawPath = objPath.replace(/'|\[|\]/g, ''),
1016
+ objExp = '',
1017
+ preObjPath = objPath;
1018
+
1019
+ if (prop == '') {
1020
+ if (arrayKeys[rawPath] == undefined) {
1021
+ arrayKeys[rawPath] = 0;
1022
+ } else {
1023
+ arrayKeys[rawPath]++;
1024
+ }
1025
+
1026
+ objPath += "['" + arrayKeys[rawPath] + "']";
1027
+ } else {
1028
+ if (!isNaN(prop)) {
1029
+ arrayKeys[rawPath] = prop;
1030
+ }
1031
+
1032
+ objPath += "['" + prop + "']";
1033
+ }
1034
+
1035
+ try {
1036
+ if (i == keys.length - 1) {
1037
+ objExp = objPath + "=that.value;";
1038
+ end = true;
1039
+ } else {
1040
+ objExp = objPath + "={}";
1041
+ end = false;
1042
+ }
1043
+
1044
+ var evalString = "" + "if( typeof " + objPath + " == 'undefined'){" + objExp + ";" + "}else{" + "if(end){" + "if(typeof " + preObjPath + "!='object'){" + preObjPath + "={};}" + objExp + "}" + "}";
1045
+ eval(evalString);
1046
+ } catch (e) {
1047
+ console.log('Error:' + e + "\n" + objExp);
1048
+ }
1049
+ });
1050
+ } else {
1051
+ indexed[match[0]] = this.value;
1052
+ }
1053
+ });
1054
+
1055
+ if (path) {
1056
+ path = "['" + path.replace('.', "']['") + "']";
1057
+ var c = 'try{indexed = indexed' + path + '}catch(ex){console.log(c, ex);}';
1058
+ eval(c);
1059
+ }
1060
+
1061
+ return indexed;
1062
+ };
1063
+
1064
+ var LP_Tooltip = function LP_Tooltip(options) {
1065
+ options = $.extend({}, {
1066
+ offset: [0, 0]
1067
+ }, options || {});
1068
+ return $.each(this, function () {
1069
+ var $el = $(this),
1070
+ content = $el.data('content');
1071
+
1072
+ if (!content || $el.data('LP_Tooltip') !== undefined) {
1073
+ return;
1074
+ }
1075
+
1076
+ var $tooltip = null;
1077
+ $el.hover(function (e) {
1078
+ $tooltip = $('<div class="learn-press-tooltip-bubble"/>').html(content).appendTo($('body')).hide();
1079
+ var position = $el.offset();
1080
+
1081
+ if ($.isArray(options.offset)) {
1082
+ var top = options.offset[1],
1083
+ left = options.offset[0];
1084
+
1085
+ if ($.isNumeric(left)) {
1086
+ position.left += left;
1087
+ } else {}
1088
+
1089
+ if ($.isNumeric(top)) {
1090
+ position.top += top;
1091
+ } else {}
1092
+ }
1093
+
1094
+ $tooltip.css({
1095
+ top: position.top,
1096
+ left: position.left
1097
+ });
1098
+ $tooltip.fadeIn();
1099
+ }, function () {
1100
+ $tooltip && $tooltip.remove();
1101
+ });
1102
+ $el.data('tooltip', true);
1103
+ });
1104
+ };
1105
+
1106
+ var hasEvent = function hasEvent(name) {
1107
+ var events = $(this).data('events');
1108
+
1109
+ if (typeof events.LP == 'undefined') {
1110
+ return false;
1111
+ }
1112
+
1113
+ for (i = 0; i < events.LP.length; i++) {
1114
+ if (events.LP[i].namespace == name) {
1115
+ return true;
1116
+ }
1117
+ }
1118
+
1119
+ return false;
1120
+ };
1121
+
1122
+ var dataToJSON = function dataToJSON() {
1123
+ var json = {};
1124
+ $.each(this[0].attributes, function () {
1125
+ var m = this.name.match(/^data-(.*)/);
1126
+
1127
+ if (m) {
1128
+ json[m[1]] = this.value;
1129
+ }
1130
+ });
1131
+ return json;
1132
+ };
1133
+
1134
+ var rows = function rows() {
1135
+ var h = $(this).height();
1136
+ var lh = $(this).css('line-height').replace("px", "");
1137
+ $(this).attr({
1138
+ height: h,
1139
+ 'line-height': lh
1140
+ });
1141
+ return Math.floor(h / parseInt(lh));
1142
+ };
1143
+
1144
+ var checkLines = function checkLines(p) {
1145
+ return this.each(function () {
1146
+ var $e = $(this),
1147
+ rows = $e.rows();
1148
+ p.call(this, rows);
1149
+ });
1150
+ };
1151
+
1152
+ var findNext = function findNext(selector) {
1153
+ var $selector = $(selector),
1154
+ $root = this.first(),
1155
+ index = $selector.index($root),
1156
+ $next = $selector.eq(index + 1);
1157
+ return $next.length ? $next : false;
1158
+ };
1159
+
1160
+ var findPrev = function findPrev(selector) {
1161
+ var $selector = $(selector),
1162
+ $root = this.first(),
1163
+ index = $selector.index($root),
1164
+ $prev = $selector.eq(index - 1);
1165
+ return $prev.length ? $prev : false;
1166
+ };
1167
+
1168
+ var progress = function progress(v) {
1169
+ return this.each(function () {
1170
+ var t = parseInt(v / 100 * 360),
1171
+ timer = null,
1172
+ $this = $(this);
1173
+
1174
+ if (t < 180) {
1175
+ $this.find('.progress-circle').removeClass('gt-50');
1176
+ } else {
1177
+ $this.find('.progress-circle').addClass('gt-50');
1178
+ }
1179
+
1180
+ $this.find('.fill').css({
1181
+ transform: 'rotate(' + t + 'deg)'
1182
+ });
1183
+ });
1184
+ };
1185
+
1186
+ $.fn.serializeJSON = serializeJSON;
1187
+ $.fn.LP_Tooltip = LP_Tooltip;
1188
+ $.fn.hasEvent = hasEvent;
1189
+ $.fn.dataToJSON = dataToJSON;
1190
+ $.fn.rows = rows;
1191
+ $.fn.checkLines = checkLines;
1192
+ $.fn.findNext = findNext;
1193
+ $.fn.findPrev = findPrev;
1194
+ $.fn.progress = progress;
1195
+ /* harmony default export */ __webpack_exports__["default"] = ({
1196
+ serializeJSON: serializeJSON,
1197
+ LP_Tooltip: LP_Tooltip,
1198
+ hasEvent: hasEvent,
1199
+ dataToJSON: dataToJSON,
1200
+ rows: rows,
1201
+ checkLines: checkLines,
1202
+ findNext: findNext,
1203
+ findPrev: findPrev,
1204
+ progress: progress
1205
+ });
1206
+
1207
+ /***/ }),
1208
+
1209
+ /***/ "./assets/src/js/utils/message-box.js":
1210
+ /*!********************************************!*\
1211
+ !*** ./assets/src/js/utils/message-box.js ***!
1212
+ \********************************************/
1213
+ /*! exports provided: default */
1214
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1215
+
1216
+ "use strict";
1217
+ __webpack_require__.r(__webpack_exports__);
1218
+ var $ = window.jQuery;
1219
+ var MessageBox = {
1220
+ /*
1221
+ *
1222
+ */
1223
+ $block: null,
1224
+ $window: null,
1225
+ events: {},
1226
+ instances: [],
1227
+ instance: null,
1228
+ quickConfirm: function quickConfirm(elem, args) {
1229
+ var $e = $(elem);
1230
+ $('[learn-press-quick-confirm]').each(function () {
1231
+ var $ins;
1232
+ ($ins = $(this).data('quick-confirm')) && (console.log($ins), $ins.destroy());
1233
+ });
1234
+ !$e.attr('learn-press-quick-confirm') && $e.attr('learn-press-quick-confirm', 'true').data('quick-confirm', new function (elem, args) {
1235
+ var $elem = $(elem),
1236
+ $div = $('<span class="learn-press-quick-confirm"></span>').insertAfter($elem),
1237
+ //($(document.body)),
1238
+ offset = $(elem).position() || {
1239
+ left: 0,
1240
+ top: 0
1241
+ },
1242
+ timerOut = null,
1243
+ timerHide = null,
1244
+ n = 3,
1245
+ hide = function hide() {
1246
+ $div.fadeOut('fast', function () {
1247
+ $(this).remove();
1248
+ $div.parent().css('position', '');
1249
+ });
1250
+ $elem.removeAttr('learn-press-quick-confirm').data('quick-confirm', undefined);
1251
+ stop();
1252
+ },
1253
+ stop = function stop() {
1254
+ timerHide && clearInterval(timerHide);
1255
+ timerOut && clearInterval(timerOut);
1256
+ },
1257
+ start = function start() {
1258
+ timerOut = setInterval(function () {
1259
+ if (--n == 0) {
1260
+ hide.call($div[0]);
1261
+ $.isFunction(args.onCancel) && args.onCancel(args.data);
1262
+ stop();
1263
+ }
1264
+
1265
+ $div.find('span').html(' (' + n + ')');
1266
+ }, 1000);
1267
+ timerHide = setInterval(function () {
1268
+ if (!$elem.is(':visible') || $elem.css("visibility") == 'hidden') {
1269
+ stop();
1270
+ $div.remove();
1271
+ $div.parent().css('position', '');
1272
+ $.isFunction(args.onCancel) && args.onCancel(args.data);
1273
+ }
1274
+ }, 350);
1275
+ };
1276
+
1277
+ args = $.extend({
1278
+ message: '',
1279
+ data: null,
1280
+ onOk: null,
1281
+ onCancel: null,
1282
+ offset: {
1283
+ top: 0,
1284
+ left: 0
1285
+ }
1286
+ }, args || {});
1287
+ $div.html(args.message || $elem.attr('data-confirm-remove') || 'Are you sure?').append('<span> (' + n + ')</span>').css({});
1288
+ $div.click(function () {
1289
+ $.isFunction(args.onOk) && args.onOk(args.data);
1290
+ hide();
1291
+ }).hover(function () {
1292
+ stop();
1293
+ }, function () {
1294
+ start();
1295
+ }); //$div.parent().css('position', 'relative');
1296
+
1297
+ $div.css({
1298
+ left: offset.left + $elem.outerWidth() - $div.outerWidth() + args.offset.left,
1299
+ top: offset.top + $elem.outerHeight() + args.offset.top + 5
1300
+ }).hide().fadeIn('fast');
1301
+ start();
1302
+
1303
+ this.destroy = function () {
1304
+ $div.remove();
1305
+ $elem.removeAttr('learn-press-quick-confirm').data('quick-confirm', undefined);
1306
+ stop();
1307
+ };
1308
+ }(elem, args));
1309
+ },
1310
+ show: function show(message, args) {
1311
+ //this.hide();
1312
+ $.proxy(function () {
1313
+ args = $.extend({
1314
+ title: '',
1315
+ buttons: '',
1316
+ events: false,
1317
+ autohide: false,
1318
+ message: message,
1319
+ data: false,
1320
+ id: LP.uniqueId(),
1321
+ onHide: null
1322
+ }, args || {});
1323
+ this.instances.push(args);
1324
+ this.instance = args;
1325
+ var $doc = $(document),
1326
+ $body = $(document.body);
1327
+
1328
+ if (!this.$block) {
1329
+ this.$block = $('<div id="learn-press-message-box-block"></div>').appendTo($body);
1330
+ }
1331
+
1332
+ if (!this.$window) {
1333
+ this.$window = $('<div id="learn-press-message-box-window"><div id="message-box-wrap"></div> </div>').insertAfter(this.$block);
1334
+ this.$window.click(function () {});
1335
+ } //this.events = args.events || {};
1336
+
1337
+
1338
+ this._createWindow(message, args.title, args.buttons);
1339
+
1340
+ this.$block.show();
1341
+ this.$window.show().attr('instance', args.id);
1342
+ $(window).bind('resize.message-box', $.proxy(this.update, this)).bind('scroll.message-box', $.proxy(this.update, this));
1343
+ this.update(true);
1344
+
1345
+ if (args.autohide) {
1346
+ setTimeout(function () {
1347
+ LP.MessageBox.hide();
1348
+ $.isFunction(args.onHide) && args.onHide.call(LP.MessageBox, args);
1349
+ }, args.autohide);
1350
+ }
1351
+ }, this)();
1352
+ },
1353
+ blockUI: function blockUI(message) {
1354
+ message = (message !== false ? message ? message : 'Wait a moment' : '') + '<div class="message-box-animation"></div>';
1355
+ this.show(message);
1356
+ },
1357
+ hide: function hide(delay, instance) {
1358
+ if (instance) {
1359
+ this._removeInstance(instance.id);
1360
+ } else if (this.instance) {
1361
+ this._removeInstance(this.instance.id);
1362
+ }
1363
+
1364
+ if (this.instances.length === 0) {
1365
+ if (this.$block) {
1366
+ this.$block.hide();
1367
+ }
1368
+
1369
+ if (this.$window) {
1370
+ this.$window.hide();
1371
+ }
1372
+
1373
+ $(window).unbind('resize.message-box', this.update).unbind('scroll.message-box', this.update);
1374
+ } else {
1375
+ if (this.instance) {
1376
+ this._createWindow(this.instance.message, this.instance.title, this.instance.buttons);
1377
+ }
1378
+ }
1379
+ },
1380
+ update: function update(force) {
1381
+ var that = this,
1382
+ $wrap = this.$window.find('#message-box-wrap'),
1383
+ timer = $wrap.data('timer'),
1384
+ _update = function _update() {
1385
+ LP.Hook.doAction('learn_press_message_box_before_resize', that);
1386
+ var $content = $wrap.find('.message-box-content').css("height", "").css('overflow', 'hidden'),
1387
+ width = $wrap.outerWidth(),
1388
+ height = $wrap.outerHeight(),
1389
+ contentHeight = $content.height(),
1390
+ windowHeight = $(window).height(),
1391
+ top = $wrap.offset().top;
1392
+
1393
+ if (contentHeight > windowHeight - 50) {
1394
+ $content.css({
1395
+ height: windowHeight - 25
1396
+ });
1397
+ height = $wrap.outerHeight();
1398
+ } else {
1399
+ $content.css("height", "").css('overflow', '');
1400
+ }
1401
+
1402
+ $wrap.css({
1403
+ marginTop: ($(window).height() - height) / 2
1404
+ });
1405
+ LP.Hook.doAction('learn_press_message_box_resize', height, that);
1406
+ };
1407
+
1408
+ if (force) _update();
1409
+ timer && clearTimeout(timer);
1410
+ timer = setTimeout(_update, 250);
1411
+ },
1412
+ _removeInstance: function _removeInstance(id) {
1413
+ for (var i = 0; i < this.instances.length; i++) {
1414
+ if (this.instances[i].id === id) {
1415
+ this.instances.splice(i, 1);
1416
+ var len = this.instances.length;
1417
+
1418
+ if (len) {
1419
+ this.instance = this.instances[len - 1];
1420
+ this.$window.attr('instance', this.instance.id);
1421
+ } else {
1422
+ this.instance = false;
1423
+ this.$window.removeAttr('instance');
1424
+ }
1425
+
1426
+ break;
1427
+ }
1428
+ }
1429
+ },
1430
+ _getInstance: function _getInstance(id) {
1431
+ for (var i = 0; i < this.instances.length; i++) {
1432
+ if (this.instances[i].id === id) {
1433
+ return this.instances[i];
1434
+ }
1435
+ }
1436
+ },
1437
+ _createWindow: function _createWindow(message, title, buttons) {
1438
+ var $wrap = this.$window.find('#message-box-wrap').html('');
1439
+
1440
+ if (title) {
1441
+ $wrap.append('<h3 class="message-box-title">' + title + '</h3>');
1442
+ }
1443
+
1444
+ $wrap.append($('<div class="message-box-content"></div>').html(message));
1445
+
1446
+ if (buttons) {
1447
+ var $buttons = $('<div class="message-box-buttons"></div>');
1448
+
1449
+ switch (buttons) {
1450
+ case 'yesNo':
1451
+ $buttons.append(this._createButton(LP_Settings.localize.button_yes, 'yes'));
1452
+ $buttons.append(this._createButton(LP_Settings.localize.button_no, 'no'));
1453
+ break;
1454
+
1455
+ case 'okCancel':
1456
+ $buttons.append(this._createButton(LP_Settings.localize.button_ok, 'ok'));
1457
+ $buttons.append(this._createButton(LP_Settings.localize.button_cancel, 'cancel'));
1458
+ break;
1459
+
1460
+ default:
1461
+ $buttons.append(this._createButton(LP_Settings.localize.button_ok, 'ok'));
1462
+ }
1463
+
1464
+ $wrap.append($buttons);
1465
+ }
1466
+ },
1467
+ _createButton: function _createButton(title, type) {
1468
+ var $button = $('<button type="button" class="button message-box-button message-box-button-' + type + '">' + title + '</button>'),
1469
+ callback = 'on' + (type.substr(0, 1).toUpperCase() + type.substr(1));
1470
+ $button.data('callback', callback).click(function () {
1471
+ var instance = $(this).data('instance'),
1472
+ callback = instance.events[$(this).data('callback')];
1473
+
1474
+ if ($.type(callback) === 'function') {
1475
+ if (callback.apply(LP.MessageBox, [instance]) === false) {// return;
1476
+ } else {
1477
+ LP.MessageBox.hide(null, instance);
1478
+ }
1479
+ } else {
1480
+ LP.MessageBox.hide(null, instance);
1481
+ }
1482
+ }).data('instance', this.instance);
1483
+ return $button;
1484
+ }
1485
+ };
1486
+ /* harmony default export */ __webpack_exports__["default"] = (MessageBox);
1487
+
1488
+ /***/ }),
1489
+
1490
+ /***/ "./assets/src/js/utils/quick-tip.js":
1491
+ /*!******************************************!*\
1492
+ !*** ./assets/src/js/utils/quick-tip.js ***!
1493
+ \******************************************/
1494
+ /*! no static exports found */
1495
+ /***/ (function(module, exports) {
1496
+
1497
+ ;
1498
+
1499
+ (function ($) {
1500
+ function QuickTip(el, options) {
1501
+ var $el = $(el),
1502
+ uniId = $el.attr('data-id') || LP.uniqueId();
1503
+ options = $.extend({
1504
+ event: 'hover',
1505
+ autoClose: true,
1506
+ single: true,
1507
+ closeInterval: 1000,
1508
+ arrowOffset: null,
1509
+ tipClass: ''
1510
+ }, options, $el.data());
1511
+ $el.attr('data-id', uniId);
1512
+ var content = $el.attr('data-content-tip') || $el.html(),
1513
+ $tip = $('<div class="learn-press-tip-floating">' + content + '</div>'),
1514
+ t = null,
1515
+ closeInterval = 0,
1516
+ useData = false,
1517
+ arrowOffset = options.arrowOffset === 'el' ? $el.outerWidth() / 2 : 8,
1518
+ $content = $('#__' + uniId);
1519
+
1520
+ if ($content.length === 0) {
1521
+ $(document.body).append($('<div />').attr('id', '__' + uniId).html(content).css('display', 'none'));
1522
+ }
1523
+
1524
+ content = $content.html();
1525
+ $tip.addClass(options.tipClass);
1526
+ $el.data('content-tip', content);
1527
+
1528
+ if ($el.attr('data-content-tip')) {
1529
+ //$el.removeAttr('data-content-tip');
1530
+ useData = true;
1531
+ }
1532
+
1533
+ closeInterval = options.closeInterval;
1534
+
1535
+ if (options.autoClose === false) {
1536
+ $tip.append('<a class="close"></a>');
1537
+ $tip.on('click', '.close', function () {
1538
+ close();
1539
+ });
1540
+ }
1541
+
1542
+ function show() {
1543
+ if (t) {
1544
+ clearTimeout(t);
1545
+ return;
1546
+ }
1547
+
1548
+ if (options.single) {
1549
+ $('.learn-press-tip').not($el).LP('QuickTip', 'close');
1550
+ }
1551
+
1552
+ $tip.appendTo(document.body);
1553
+ var pos = $el.offset();
1554
+ $tip.css({
1555
+ top: pos.top - $tip.outerHeight() - 8,
1556
+ left: pos.left - $tip.outerWidth() / 2 + arrowOffset
1557
+ });
1558
+ }
1559
+
1560
+ function hide() {
1561
+ t && clearTimeout(t);
1562
+ t = setTimeout(function () {
1563
+ $tip.detach();
1564
+ t = null;
1565
+ }, closeInterval);
1566
+ }
1567
+
1568
+ function close() {
1569
+ closeInterval = 0;
1570
+ hide();
1571
+ closeInterval = options.closeInterval;
1572
+ }
1573
+
1574
+ function open() {
1575
+ show();
1576
+ }
1577
+
1578
+ if (!useData) {
1579
+ $el.html('');
1580
+ }
1581
+
1582
+ if (options.event === 'click') {
1583
+ $el.on('click', function (e) {
1584
+ e.stopPropagation();
1585
+ show();
1586
+ });
1587
+ }
1588
+
1589
+ $(document).on('learn-press/close-all-quick-tip', function () {
1590
+ close();
1591
+ });
1592
+ $el.hover(function (e) {
1593
+ e.stopPropagation();
1594
+
1595
+ if (options.event !== 'click') {
1596
+ show();
1597
+ }
1598
+ }, function (e) {
1599
+ e.stopPropagation();
1600
+
1601
+ if (options.autoClose) {
1602
+ hide();
1603
+ }
1604
+ }).addClass('ready');
1605
+ return {
1606
+ close: close,
1607
+ open: open
1608
+ };
1609
+ }
1610
+
1611
+ $.fn.LP('QuickTip', function (options) {
1612
+ return $.each(this, function () {
1613
+ var $tip = $(this).data('quick-tip');
1614
+
1615
+ if (!$tip) {
1616
+ $tip = new QuickTip(this, options);
1617
+ $(this).data('quick-tip', $tip);
1618
+ }
1619
+
1620
+ if ($.type(options) === 'string') {
1621
+ $tip[options] && $tip[options].apply($tip);
1622
+ }
1623
+ });
1624
+ });
1625
+ })(jQuery);
1626
+
1627
+ /***/ })
1628
+
1629
+ /******/ });
assets/js/utils.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///E:/Work/Webs/WP/Clouds/Thimpress/Plugins/github.com/learnpress/assets/src/js/utils/event-callback.js","webpack:///E:/Work/Webs/WP/Clouds/Thimpress/Plugins/github.com/learnpress/assets/src/js/utils/extend.js","webpack:///E:/Work/Webs/WP/Clouds/Thimpress/Plugins/github.com/learnpress/assets/src/js/utils/fn.js","webpack:///E:/Work/Webs/WP/Clouds/Thimpress/Plugins/github.com/learnpress/assets/src/js/utils/hook.js","webpack:///E:/Work/Webs/WP/Clouds/Thimpress/Plugins/github.com/learnpress/assets/src/js/utils/index.js","webpack:///E:/Work/Webs/WP/Clouds/Thimpress/Plugins/github.com/learnpress/assets/src/js/utils/jquery.plugins.js","webpack:///E:/Work/Webs/WP/Clouds/Thimpress/Plugins/github.com/learnpress/assets/src/js/utils/message-box.js","webpack:///E:/Work/Webs/WP/Clouds/Thimpress/Plugins/github.com/learnpress/assets/src/js/utils/quick-tip.js"],"names":["Event_Callback","self","callbacks","$","window","jQuery","on","event","callback","namespaces","split","namespace","length","push","off","at","isFunction","indexOf","splice","callEvent","callbackArgs","i","apply","j","LP","arguments","extend","exp","undefined","fn","widget","args","Hook","hooks","action","filter","addAction","callable","priority","tag","addHook","addFilter","doAction","doHook","applyFilters","removeAction","removeHook","removeFilter","hookType","Array","prototype","slice","call","hook","sort","a","b","String","getQueryVar","name","replace","regex","RegExp","results","exec","decodeURIComponent","addQueryVar","value","url","m","match","removeQueryVar","isEmptyObject","prop","hasOwnProperty","_default","setUrl","ember","title","history","pushState","toggleGroupSection","el","target","$el","isHide","hasClass","hide","removeClass","slideToggle","$this","is","addClass","overflow","v","css","data","getUrl","location","href","reload","parseResponse","response","type","parseJSON","e","ajax","dataType","beforeSend","success","raw","error","funcArgs2Array","doAjax","prefix","arr","$doc","document","log","hasEvent","triggerHandler","trigger","toElement","element","delay","duration","offset","container","invisible","$container","rootTop","top","to","scrollTop","isElementInView","fullyInView","pageTop","pageBottom","height","elementTop","elementBottom","fadeIn","animate","uniqueId","more_entropy","retId","formatSeed","seed","reqWidth","parseInt","toString","join","php_js","uniqidSeed","Math","floor","random","Date","getTime","toFixed","n","console","blockContent","template","appendTo","hideMainScrollbar","unblockContent","setTimeout","showMainScrollbar","each","$root","attr","removeAttr","_","memoize","id","compiled","options","evaluate","interpolate","escape","variable","tmpl","html","JSON","stringify","alert","localize","message","alerts","_on_alert_hide","_on_alert_show","confirm","$placeholder","insertAfter","stop","opacity","$holder","replaceWith","body","remove","sendMessage","object","targetOrigin","transfer","isPlainObject","postMessage","receiveMessage","origin","originalEvent","ready","overlayColor","overlayOpacity","okButton","lpGlobalSettings","button_ok","cancelButton","button_cancel","delayIn","show","delayOut","fadeOut","preventDefault","$tab","closest","siblings","parent","timer","checkLines","r","clearTimeout","LP_Tooltip","MessageBox","QuickTip","serializeJSON","path","isInput","unIndexed","serializeArray","find","indexed","validate","arrayKeys","end","that","keys","objPath","rawPath","objExp","preObjPath","isNaN","evalString","eval","c","content","$tooltip","hover","position","isArray","left","isNumeric","events","dataToJSON","json","attributes","rows","h","lh","p","$e","findNext","selector","$selector","first","index","$next","eq","findPrev","$prev","progress","t","transform","$block","$window","instances","instance","quickConfirm","elem","$ins","destroy","$elem","$div","timerOut","timerHide","clearInterval","start","setInterval","onCancel","onOk","append","click","outerWidth","outerHeight","proxy","buttons","autohide","onHide","$body","_createWindow","bind","update","blockUI","_removeInstance","unbind","force","$wrap","_update","$content","width","contentHeight","windowHeight","marginTop","len","_getInstance","$buttons","_createButton","LP_Settings","button_yes","button_no","$button","substr","toUpperCase","uniId","autoClose","single","closeInterval","arrowOffset","tipClass","$tip","useData","close","not","pos","detach","open","stopPropagation"],"mappings":"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","file":"./assets/js/utils.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"../../../Clouds/Thimpress/Plugins/github.com/learnpress/assets/src/js/utils/index.js\");\n","/**\n * Manage event callbacks.\n * Allow add/remove a callback function into custom event of an object.\n *\n * @constructor\n */\nconst Event_Callback = function Event_Callback(self) {\n var callbacks = {};\n var $ = window.jQuery;\n\n this.on = function (event, callback) {\n var namespaces = event.split('.'),\n namespace = '';\n\n if (namespaces.length > 1) {\n event = namespaces[0];\n namespace = namespaces[1];\n }\n\n if (!callbacks[event]) {\n callbacks[event] = [[], {}];\n }\n\n if (namespace) {\n if (!callbacks[event][1][namespace]) {\n callbacks[event][1][namespace] = [];\n }\n callbacks[event][1][namespace].push(callback);\n } else {\n callbacks[event][0].push(callback);\n }\n\n return self;\n };\n\n this.off = function (event, callback) {\n var namespaces = event.split('.'),\n namespace = '';\n\n if (namespaces.length > 1) {\n event = namespaces[0];\n namespace = namespaces[1];\n }\n\n if (!callbacks[event]) {\n return self;\n }\n var at = -1;\n if (!namespace) {\n if ($.isFunction(callback)) {\n at = callbacks[event][0].indexOf(callback);\n if (at < 0) {\n return self;\n }\n callbacks[event][0].splice(at, 1);\n } else {\n callbacks[event][0] = [];\n }\n } else {\n if (!callbacks[event][1][namespace]) {\n return self;\n }\n\n if ($.isFunction(callback)) {\n at = callbacks[event][1][namespace].indexOf(callback);\n if (at < 0) {\n return self;\n }\n callbacks[event][1][namespace].splice(at, 1);\n } else {\n callbacks[event][1][namespace] = [];\n }\n }\n\n return self;\n };\n\n this.callEvent = function (event, callbackArgs) {\n if (!callbacks[event]) {\n return;\n }\n\n if (callbacks[event][0]) {\n for (var i = 0; i < callbacks[event][0].length; i++) {\n $.isFunction(callbacks[event][0][i]) && callbacks[event][i][0].apply(self, callbackArgs);\n }\n }\n\n if (callbacks[event][1]) {\n for (var i in callbacks[event][1]) {\n for (var j = 0; j < callbacks[event][1][i].length; j++) {\n $.isFunction(callbacks[event][1][i][j]) && callbacks[event][1][i][j].apply(self, callbackArgs);\n }\n }\n }\n }\n};\n\nexport default Event_Callback;","export default function () {\n window.LP = window.LP || {};\n\n if (typeof arguments[0]==='string') {\n LP[arguments[0]] = LP[arguments[0]] || {};\n LP[arguments[0]] = jQuery.extend(LP[arguments[0]], arguments[1]);\n } else {\n LP = jQuery.extend(LP, arguments[0]);\n }\n}","/**\n * Auto prepend `LP` prefix for jQuery fn plugin name.\n *\n * Create : $.fn.LP( 'PLUGIN_NAME', func) <=> $.fn.LP_PLUGIN_NAME\n * Usage: $(selector).LP('PLUGIN_NAME') <=> $(selector).LP_PLUGIN_NAME()\n *\n * @version 3.2.6\n */\n\nconst $ = window.jQuery;\nvar exp;\n\n(function () {\n\n if ($ === undefined) {\n return;\n }\n\n $.fn.LP = exp = function (widget, fn) {\n if ($.isFunction(fn)) {\n $.fn['LP_' + widget] = fn;\n } else if (widget) {\n var args = [];\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n }\n\n return $.isFunction($(this)['LP_' + widget]) ? $(this)['LP_' + widget].apply(this, args) : this;\n }\n return this\n };\n})();\n\nexport default exp;","const Hook = {\n hooks: {action: {}, filter: {}},\n addAction: function (action, callable, priority, tag) {\n this.addHook('action', action, callable, priority, tag);\n return this;\n },\n addFilter: function (action, callable, priority, tag) {\n this.addHook('filter', action, callable, priority, tag);\n return this;\n },\n doAction: function (action) {\n this.doHook('action', action, arguments);\n return this;\n },\n applyFilters: function (action) {\n return this.doHook('filter', action, arguments);\n },\n removeAction: function (action, tag) {\n this.removeHook('action', action, tag);\n return this;\n },\n removeFilter: function (action, priority, tag) {\n this.removeHook('filter', action, priority, tag);\n return this;\n },\n addHook: function (hookType, action, callable, priority, tag) {\n if (undefined === this.hooks[hookType][action]) {\n this.hooks[hookType][action] = [];\n }\n var hooks = this.hooks[hookType][action];\n if (undefined === tag) {\n tag = action + '_' + hooks.length;\n }\n this.hooks[hookType][action].push({tag: tag, callable: callable, priority: priority});\n return this;\n },\n doHook: function (hookType, action, args) {\n\n // splice args from object into array and remove first index which is the hook name\n args = Array.prototype.slice.call(args, 1);\n\n if (undefined !== this.hooks[hookType][action]) {\n var hooks = this.hooks[hookType][action], hook;\n //sort by priority\n hooks.sort(function (a, b) {\n return a[\"priority\"] - b[\"priority\"];\n });\n for (var i = 0; i < hooks.length; i++) {\n hook = hooks[i].callable;\n if (typeof hook !== 'function')\n hook = window[hook];\n if ('action' === hookType) {\n hook.apply(null, args);\n } else {\n args[0] = hook.apply(null, args);\n }\n }\n }\n if ('filter' === hookType) {\n return args[0];\n }\n return this;\n },\n removeHook: function (hookType, action, priority, tag) {\n if (undefined !== this.hooks[hookType][action]) {\n var hooks = this.hooks[hookType][action];\n for (var i = hooks.length - 1; i >= 0; i--) {\n if ((undefined === tag || tag === hooks[i].tag) && (undefined === priority || priority === hooks[i].priority)) {\n hooks.splice(i, 1);\n }\n }\n }\n return this;\n }\n};\n\nexport default Hook;","/**\n * Utility functions may use for both admin and frontend.\n *\n * @version 3.2.6\n */\n\nimport extend from './extend';\nimport fn from './fn';\nimport QuickTip from './quick-tip';\nimport MessageBox from './message-box';\nimport Event_Callback from './event-callback';\nimport Hook from './hook';\n\nimport * as jplugins from './jquery.plugins';\n\nconst $ = jQuery;\n\nString.prototype.getQueryVar = function (name) {\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\"),\n results = regex.exec(this);\n return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n};\n\nString.prototype.addQueryVar = function (name, value) {\n var url = this,\n m = url.split('#');\n url = m[0];\n if (name.match(/\\[/)) {\n url += url.match(/\\?/) ? '&' : '?';\n url += name + '=' + value;\n } else {\n if ((url.indexOf('&' + name + '=') != -1) || (url.indexOf('?' + name + '=') != -1)) {\n url = url.replace(new RegExp(name + \"=([^&#]*)\", 'g'), name + '=' + value);\n } else {\n url += url.match(/\\?/) ? '&' : '?';\n url += name + '=' + value;\n }\n }\n return url + (m[1] ? '#' + m[1] : '');\n};\n\nString.prototype.removeQueryVar = function (name) {\n var url = this;\n var m = url.split('#');\n url = m[0];\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n var regex = new RegExp(\"[\\\\?&]\" + name + \"([\\[][^=]*)?=([^&#]*)\", 'g');\n url = url.replace(regex, '');\n return url + (m[1] ? '#' + m[1] : '');\n};\n\nif ($.isEmptyObject(\"\") == false) {\n $.isEmptyObject = function (a) {\n var prop;\n for (prop in a) {\n if (a.hasOwnProperty(prop)) {\n return false;\n }\n }\n return true;\n };\n}\n\nconst _default = {\n Hook: Hook,\n setUrl: function (url, ember, title) {\n if (url) {\n history.pushState({}, title, url);\n LP.Hook.doAction('learn_press_set_location_url', url);\n }\n },\n toggleGroupSection: function (el, target) {\n var $el = $(el),\n isHide = $el.hasClass('hide-if-js');\n if (isHide) {\n $el.hide().removeClass('hide-if-js');\n }\n $el.removeClass('hide-if-js').slideToggle(function () {\n var $this = $(this);\n if ($this.is(':visible')) {\n $(target).addClass('toggle-on').removeClass('toggle-off');\n } else {\n $(target).addClass('toggle-off').removeClass('toggle-on');\n }\n });\n },\n overflow: function (el, v) {\n var $el = $(el),\n overflow = $el.css('overflow');\n if (v) {\n $el.css('overflow', v).data('overflow', overflow);\n } else {\n $el.css('overflow', $el.data('overflow'));\n }\n },\n getUrl: function () {\n return window.location.href;\n },\n addQueryVar: function (name, value, url) {\n return (url === undefined ? window.location.href : url).addQueryVar(name, value);\n },\n removeQueryVar: function (name, url) {\n return (url === undefined ? window.location.href : url).removeQueryVar(name);\n },\n reload: function (url) {\n if (!url) {\n url = window.location.href;\n }\n window.location.href = url;\n },\n\n parseResponse: function (response, type) {\n var m = response.match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);\n if (m) {\n response = m[1];\n }\n return (type || \"json\") === \"json\" ? this.parseJSON(response) : response;\n },\n parseJSON: function (data) {\n var m = (data + '').match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);\n try {\n if (m) {\n data = $.parseJSON(m[1]);\n } else {\n data = $.parseJSON(data);\n }\n } catch (e) {\n data = {};\n }\n return data;\n },\n ajax: function (args) {\n var type = args.type || 'post',\n dataType = args.dataType || 'json',\n data = args.action ? $.extend(args.data, {'lp-ajax': args.action}) : args.data,\n beforeSend = args.beforeSend || function () {\n },\n url = args.url || window.location.href;\n// console.debug( beforeSend );\n $.ajax({\n data: data,\n url: url,\n type: type,\n dataType: 'html',\n beforeSend: beforeSend.apply(null, args),\n success: function (raw) {\n var response = LP.parseResponse(raw, dataType);\n $.isFunction(args.success) && args.success(response, raw);\n },\n error: function () {\n $.isFunction(args.error) && args.error.apply(null, LP.funcArgs2Array());\n }\n });\n },\n doAjax: function (args) {\n var type = args.type || 'post',\n dataType = args.dataType || 'json',\n action = ((args.prefix === undefined) || 'learnpress_') + args.action,\n data = args.action ? $.extend(args.data, {action: action}) : args.data;\n\n $.ajax({\n data: data,\n url: (args.url || window.location.href),\n type: type,\n dataType: 'html',\n success: function (raw) {\n var response = LP.parseResponse(raw, dataType);\n $.isFunction(args.success) && args.success(response, raw);\n },\n error: function () {\n $.isFunction(args.error) && args.error.apply(null, LP.funcArgs2Array());\n }\n });\n },\n\n funcArgs2Array: function (args) {\n var arr = [];\n for (var i = 0; i < args.length; i++) {\n arr.push(args[i]);\n }\n return arr;\n },\n addFilter: function (action, callback) {\n var $doc = $(document),\n event = 'LP.' + action;\n $doc.on(event, callback);\n LP.log($doc.data('events'));\n return this;\n },\n applyFilters: function () {\n var $doc = $(document),\n action = arguments[0],\n args = this.funcArgs2Array(arguments);\n if ($doc.hasEvent(action)) {\n args[0] = 'LP.' + action;\n return $doc.triggerHandler.apply($doc, args);\n }\n return args[1];\n },\n addAction: function (action, callback) {\n return this.addFilter(action, callback);\n },\n doAction: function () {\n var $doc = $(document),\n action = arguments[0],\n args = this.funcArgs2Array(arguments);\n if ($doc.hasEvent(action)) {\n args[0] = 'LP.' + action;\n $doc.trigger.apply($doc, args);\n }\n },\n toElement: function (element, args) {\n if ($(element).length === 0) {\n return;\n }\n args = $.extend({\n delay: 300,\n duration: 'slow',\n offset: 50,\n container: null,\n callback: null,\n invisible: false\n }, args || {});\n var $container = $(args.container),\n rootTop = 0;\n if ($container.length === 0) {\n $container = $('body, html');\n }\n rootTop = $container.offset().top;\n var to = ($(element).offset().top + $container.scrollTop()) - rootTop - args.offset;\n\n function isElementInView(element, fullyInView) {\n var pageTop = $container.scrollTop();\n var pageBottom = pageTop + $container.height();\n var elementTop = $(element).offset().top - $container.offset().top;\n var elementBottom = elementTop + $(element).height();\n\n if (fullyInView === true) {\n return ((pageTop < elementTop) && (pageBottom > elementBottom));\n } else {\n return ((elementTop <= pageBottom) && (elementBottom >= pageTop));\n }\n }\n\n if (args.invisible && isElementInView(element, true)) {\n return;\n }\n $container.fadeIn(10)\n .delay(args.delay)\n .animate({\n scrollTop: to\n }, args.duration, args.callback);\n },\n uniqueId: function (prefix, more_entropy) {\n if (typeof prefix === 'undefined') {\n prefix = '';\n }\n\n var retId;\n var formatSeed = function (seed, reqWidth) {\n seed = parseInt(seed, 10)\n .toString(16); // to hex str\n if (reqWidth < seed.length) { // so long we split\n return seed.slice(seed.length - reqWidth);\n }\n if (reqWidth > seed.length) { // so short we pad\n return new Array(1 + (reqWidth - seed.length))\n .join('0') + seed;\n }\n return seed;\n };\n\n // BEGIN REDUNDANT\n if (!this.php_js) {\n this.php_js = {};\n }\n // END REDUNDANT\n if (!this.php_js.uniqidSeed) { // init seed with big random int\n this.php_js.uniqidSeed = Math.floor(Math.random() * 0x75bcd15);\n }\n this.php_js.uniqidSeed++;\n\n retId = prefix; // start with prefix, add current milliseconds hex string\n retId += formatSeed(parseInt(new Date()\n .getTime() / 1000, 10), 8);\n retId += formatSeed(this.php_js.uniqidSeed, 5); // add seed hex string\n if (more_entropy) {\n // for more entropy we add a float lower to 10\n retId += (Math.random() * 10)\n .toFixed(8)\n .toString();\n }\n\n return retId;\n },\n log: function () {\n //if (typeof LEARN_PRESS_DEBUG != 'undefined' && LEARN_PRESS_DEBUG && console) {\n for (var i = 0, n = arguments.length; i < n; i++) {\n console.log(arguments[i]);\n }\n //}\n },\n blockContent: function () {\n if ($('#learn-press-block-content').length === 0) {\n $(LP.template('learn-press-template-block-content', {})).appendTo($('body'));\n }\n LP.hideMainScrollbar().addClass('block-content');\n $(document).trigger('learn_press_block_content');\n },\n unblockContent: function () {\n setTimeout(function () {\n LP.showMainScrollbar().removeClass('block-content');\n $(document).trigger('learn_press_unblock_content');\n }, 350);\n },\n hideMainScrollbar: function (el) {\n if (!el) {\n el = 'html, body';\n }\n var $el = $(el);\n $el.each(function () {\n var $root = $(this),\n overflow = $root.css('overflow');\n $root.css('overflow', 'hidden').attr('overflow', overflow);\n });\n return $el;\n },\n showMainScrollbar: function (el) {\n if (!el) {\n el = 'html, body';\n }\n var $el = $(el);\n $el.each(function () {\n var $root = $(this),\n overflow = $root.attr('overflow');\n $root.css('overflow', overflow).removeAttr('overflow');\n });\n return $el;\n },\n template: typeof _ !== 'undefined' ? _.memoize(function (id, data) {\n var compiled,\n options = {\n evaluate: /<#([\\s\\S]+?)#>/g,\n interpolate: /\\{\\{\\{([\\s\\S]+?)\\}\\}\\}/g,\n escape: /\\{\\{([^\\}]+?)\\}\\}(?!\\})/g,\n variable: 'data'\n };\n\n var tmpl = function (data) {\n compiled = compiled || _.template($('#' + id).html(), null, options);\n return compiled(data);\n };\n return data ? tmpl(data) : tmpl;\n }, function (a, b) {\n return a + '-' + JSON.stringify(b);\n }) : function () {\n return '';\n },\n alert: function (localize, callback) {\n var title = '',\n message = '';\n if (typeof localize === 'string') {\n message = localize;\n } else {\n if (typeof localize['title'] !== 'undefined') {\n title = localize['title'];\n }\n if (typeof localize['message'] !== 'undefined') {\n message = localize['message'];\n }\n }\n $.alerts.alert(message, title, function (e) {\n LP._on_alert_hide();\n callback && callback(e);\n });\n this._on_alert_show();\n },\n confirm: function (localize, callback) {\n var title = '',\n message = '';\n\n if (typeof localize === 'string') {\n message = localize;\n } else {\n if (typeof localize['title'] !== 'undefined') {\n title = localize['title'];\n }\n if (typeof localize['message'] !== 'undefined') {\n message = localize['message'];\n }\n }\n $.alerts.confirm(message, title, function (e) {\n LP._on_alert_hide();\n callback && callback(e);\n });\n this._on_alert_show();\n\n },\n _on_alert_show: function () {\n var $container = $('#popup_container'),\n $placeholder = $('<span id=\"popup_container_placeholder\" />').insertAfter($container).data('xxx', $container);\n $container.stop().css('top', '-=50').css('opacity', '0').animate({\n top: '+=50',\n opacity: 1\n }, 250);\n },\n _on_alert_hide: function () {\n var $holder = $(\"#popup_container_placeholder\"),\n $container = $holder.data('xxx');\n if ($container) {\n $container.replaceWith($holder);\n }\n $container.appendTo($(document.body))\n $container.stop().animate({\n top: '+=50',\n opacity: 0\n }, 250, function () {\n $(this).remove();\n });\n },\n sendMessage: function (data, object, targetOrigin, transfer) {\n if ($.isPlainObject(data)) {\n data = JSON.stringify(data);\n }\n object = object || window;\n targetOrigin = targetOrigin || '*';\n object.postMessage(data, targetOrigin, transfer);\n },\n receiveMessage: function (event, b) {\n var target = event.origin || event.originalEvent.origin,\n data = event.data || event.originalEvent.data || '';\n if (typeof data === 'string' || data instanceof String) {\n if (data.indexOf('{') === 0) {\n data = LP.parseJSON(data);\n }\n }\n LP.Hook.doAction('learn_press_receive_message', data, target);\n }\n}\n\n$(document).ready(function () {\n if (typeof $.alerts !== 'undefined') {\n $.alerts.overlayColor = '#000';\n $.alerts.overlayOpacity = 0.5;\n $.alerts.okButton = lpGlobalSettings.localize.button_ok;\n $.alerts.cancelButton = lpGlobalSettings.localize.button_cancel;\n }\n\n $('.learn-press-message.fixed').each(function () {\n var $el = $(this),\n options = $el.data();\n (function ($el, options) {\n if (options.delayIn) {\n setTimeout(function () {\n $el.show().hide().fadeIn();\n }, options.delayIn);\n }\n if (options.delayOut) {\n setTimeout(function () {\n $el.fadeOut();\n }, options.delayOut + (options.delayIn || 0));\n }\n })($el, options);\n\n });\n\n $('body')\n .on('click', '.learn-press-nav-tabs li a', function (e) {\n e.preventDefault();\n var $tab = $(this), url = '';\n $tab.closest('li').addClass('active').siblings().removeClass('active');\n $($tab.attr('data-tab')).addClass('active').siblings().removeClass('active');\n $(document).trigger('learn-press/nav-tabs/clicked', $tab);\n });\n\n setTimeout(function () {\n $('.learn-press-nav-tabs li.active:not(.default) a').trigger('click');\n }, 300);\n\n $('body.course-item-popup').parent().css('overflow', 'hidden');\n\n (function () {\n var timer = null,\n callback = function () {\n $('.auto-check-lines').checkLines(function (r) {\n if (r > 1) {\n $(this).removeClass('single-lines');\n } else {\n $(this).addClass('single-lines');\n }\n $(this).attr('rows', r);\n });\n };\n $(window).on('resize.check-lines', function () {\n if (timer) {\n timer && clearTimeout(timer);\n timer = setTimeout(callback, 300);\n } else {\n callback();\n }\n });\n })();\n\n $('.learn-press-tooltip, .lp-passing-conditional').LP_Tooltip({offset: [24, 24]});\n\n $('.learn-press-icon').LP_Tooltip({offset: [30, 30]});\n\n $('.learn-press-message[data-autoclose]').each(function () {\n var $el = $(this), delay = parseInt($el.data('autoclose'));\n if (delay) {\n setTimeout(function ($el) {\n $el.fadeOut();\n }, delay, $el);\n }\n });\n\n $(document).on('click', function () {\n $(document).trigger('learn-press/close-all-quick-tip')\n })\n});\n\nextend({\n Event_Callback,\n MessageBox,\n ..._default\n});\n\nexport default {\n fn,\n QuickTip\n}","const $ = window.jQuery;\n\nconst serializeJSON = function serializeJSON(path) {\n var isInput = $(this).is('input') || $(this).is('select') || $(this).is('textarea');\n var unIndexed = isInput ? $(this).serializeArray() : $(this).find('input, select, textarea').serializeArray(),\n indexed = {},\n validate = /(\\[([a-zA-Z0-9_-]+)?\\]?)/g,\n arrayKeys = {},\n end = false;\n $.each(unIndexed, function () {\n var that = this,\n match = this.name.match(/^([0-9a-zA-Z_-]+)/);\n if (!match) {\n return;\n }\n var keys = this.name.match(validate),\n objPath = \"indexed['\" + match[0] + \"']\";\n\n if (keys) {\n if (typeof indexed[match[0]] != 'object') {\n indexed[match[0]] = {};\n }\n\n $.each(keys, function (i, prop) {\n prop = prop.replace(/\\]|\\[/g, '');\n var rawPath = objPath.replace(/'|\\[|\\]/g, ''),\n objExp = '',\n preObjPath = objPath;\n\n if (prop == '') {\n if (arrayKeys[rawPath] == undefined) {\n arrayKeys[rawPath] = 0;\n } else {\n arrayKeys[rawPath]++;\n }\n objPath += \"['\" + arrayKeys[rawPath] + \"']\";\n } else {\n if (!isNaN(prop)) {\n arrayKeys[rawPath] = prop;\n }\n objPath += \"['\" + prop + \"']\";\n }\n try {\n if (i == keys.length - 1) {\n objExp = objPath + \"=that.value;\";\n end = true;\n } else {\n objExp = objPath + \"={}\";\n end = false;\n }\n\n var evalString = \"\" +\n \"if( typeof \" + objPath + \" == 'undefined'){\" + objExp + \";\" +\n \"}else{\" +\n \"if(end){\" +\n \"if(typeof \" + preObjPath + \"!='object'){\" + preObjPath + \"={};}\" +\n objExp +\n \"}\" +\n \"}\";\n eval(evalString);\n } catch (e) {\n console.log('Error:' + e + \"\\n\" + objExp);\n }\n })\n } else {\n indexed[match[0]] = this.value;\n }\n });\n if (path) {\n path = \"['\" + path.replace('.', \"']['\") + \"']\";\n var c = 'try{indexed = indexed' + path + '}catch(ex){console.log(c, ex);}';\n eval(c);\n }\n return indexed;\n};\n\nconst LP_Tooltip = function LP_Tooltip(options) {\n options = $.extend({}, {\n offset: [0, 0]\n }, options || {});\n return $.each(this, function () {\n var $el = $(this),\n content = $el.data('content');\n if (!content || ($el.data('LP_Tooltip') !== undefined)) {\n return;\n }\n\n var $tooltip = null;\n $el.hover(function (e) {\n $tooltip = $('<div class=\"learn-press-tooltip-bubble\"/>').html(content).appendTo($('body')).hide();\n var position = $el.offset();\n if ($.isArray(options.offset)) {\n var top = options.offset[1],\n left = options.offset[0];\n if ($.isNumeric(left)) {\n position.left += left;\n } else {\n\n }\n if ($.isNumeric(top)) {\n position.top += top;\n } else {\n\n }\n }\n $tooltip.css({\n top: position.top,\n left: position.left\n });\n $tooltip.fadeIn();\n }, function () {\n $tooltip && $tooltip.remove();\n });\n $el.data('tooltip', true);\n });\n};\n\nconst hasEvent = function hasEvent(name) {\n var events = $(this).data('events');\n if (typeof events.LP == 'undefined') {\n return false;\n }\n for (i = 0; i < events.LP.length; i++) {\n if (events.LP[i].namespace == name) {\n return true;\n }\n }\n return false;\n};\n\nconst dataToJSON = function dataToJSON() {\n var json = {};\n $.each(this[0].attributes, function () {\n var m = this.name.match(/^data-(.*)/);\n if (m) {\n json[m[1]] = this.value;\n }\n });\n return json;\n};\n\nconst rows = function rows() {\n var h = $(this).height();\n var lh = $(this).css('line-height').replace(\"px\", \"\");\n $(this).attr({height: h, 'line-height': lh});\n return Math.floor(h / parseInt(lh));\n};\n\nconst checkLines = function checkLines(p) {\n return this.each(function () {\n var $e = $(this),\n rows = $e.rows();\n\n p.call(this, rows);\n });\n};\n\nconst findNext = function findNext(selector) {\n var $selector = $(selector),\n $root = this.first(),\n index = $selector.index($root),\n $next = $selector.eq(index + 1);\n return $next.length ? $next : false;\n};\n\nconst findPrev = function findPrev(selector) {\n var $selector = $(selector),\n $root = this.first(),\n index = $selector.index($root),\n $prev = $selector.eq(index - 1);\n return $prev.length ? $prev : false;\n};\n\nconst progress = function progress(v) {\n return this.each(function () {\n var t = parseInt(v / 100 * 360),\n timer = null,\n $this = $(this);\n\n if (t < 180) {\n $this.find('.progress-circle').removeClass('gt-50');\n } else {\n $this.find('.progress-circle').addClass('gt-50');\n }\n $this.find('.fill').css({\n transform: 'rotate(' + t + 'deg)'\n });\n\n });\n};\n\n$.fn.serializeJSON = serializeJSON;\n$.fn.LP_Tooltip = LP_Tooltip;\n$.fn.hasEvent = hasEvent;\n$.fn.dataToJSON = dataToJSON;\n$.fn.rows = rows;\n$.fn.checkLines = checkLines;\n$.fn.findNext = findNext;\n$.fn.findPrev = findPrev;\n$.fn.progress = progress;\n\nexport default {\n serializeJSON,\n LP_Tooltip,\n hasEvent,\n dataToJSON,\n rows,\n checkLines,\n findNext,\n findPrev,\n progress\n}","const $ = window.jQuery;\nconst MessageBox = {\n /*\n *\n */\n $block: null,\n $window: null,\n events: {},\n instances: [],\n instance: null,\n quickConfirm: function (elem, args) {\n var $e = $(elem);\n $('[learn-press-quick-confirm]').each(function () {\n var $ins;\n ( $ins = $(this).data('quick-confirm') ) && ( console.log($ins), $ins.destroy() );\n });\n !$e.attr('learn-press-quick-confirm') && $e.attr('learn-press-quick-confirm', 'true').data('quick-confirm',\n new (function (elem, args) {\n var $elem = $(elem),\n $div = $('<span class=\"learn-press-quick-confirm\"></span>').insertAfter($elem), //($(document.body)),\n offset = $(elem).position() || {left: 0, top: 0},\n timerOut = null,\n timerHide = null,\n n = 3,\n hide = function () {\n $div.fadeOut('fast', function () {\n $(this).remove();\n $div.parent().css('position', '');\n });\n $elem.removeAttr('learn-press-quick-confirm').data('quick-confirm', undefined);\n stop();\n },\n stop = function () {\n timerHide && clearInterval(timerHide);\n timerOut && clearInterval(timerOut);\n },\n start = function () {\n timerOut = setInterval(function () {\n if (--n == 0) {\n hide.call($div[0]);\n $.isFunction(args.onCancel) && args.onCancel(args.data);\n stop();\n }\n $div.find('span').html(' (' + n + ')');\n }, 1000);\n\n timerHide = setInterval(function () {\n if (!$elem.is(':visible') || $elem.css(\"visibility\") == 'hidden') {\n stop();\n $div.remove();\n $div.parent().css('position', '');\n $.isFunction(args.onCancel) && args.onCancel(args.data);\n }\n }, 350);\n };\n args = $.extend({\n message: '',\n data: null,\n onOk: null,\n onCancel: null,\n offset: {top: 0, left: 0}\n }, args || {});\n $div.html(args.message || $elem.attr('data-confirm-remove') || 'Are you sure?').append('<span> (' + n + ')</span>').css({});\n $div.click(function () {\n $.isFunction(args.onOk) && args.onOk(args.data);\n hide();\n }).hover(function () {\n stop();\n }, function () {\n start();\n });\n //$div.parent().css('position', 'relative');\n $div.css({\n left: ( ( offset.left + $elem.outerWidth() ) - $div.outerWidth() ) + args.offset.left,\n top: offset.top + $elem.outerHeight() + args.offset.top + 5\n }).hide().fadeIn('fast');\n start();\n\n this.destroy = function () {\n $div.remove();\n $elem.removeAttr('learn-press-quick-confirm').data('quick-confirm', undefined);\n stop();\n\n };\n })(elem, args)\n );\n },\n show: function (message, args) {\n //this.hide();\n $.proxy(function () {\n args = $.extend({\n title: '',\n buttons: '',\n events: false,\n autohide: false,\n message: message,\n data: false,\n id: LP.uniqueId(),\n onHide: null\n }, args || {});\n\n this.instances.push(args);\n this.instance = args;\n\n var $doc = $(document),\n $body = $(document.body);\n if (!this.$block) {\n this.$block = $('<div id=\"learn-press-message-box-block\"></div>').appendTo($body);\n\n }\n if (!this.$window) {\n this.$window = $('<div id=\"learn-press-message-box-window\"><div id=\"message-box-wrap\"></div> </div>').insertAfter(this.$block);\n this.$window.click(function () {\n });\n }\n //this.events = args.events || {};\n this._createWindow(message, args.title, args.buttons);\n this.$block.show();\n this.$window.show().attr('instance', args.id);\n $(window)\n .bind('resize.message-box', $.proxy(this.update, this))\n .bind('scroll.message-box', $.proxy(this.update, this));\n this.update(true);\n if (args.autohide) {\n setTimeout(function () {\n LP.MessageBox.hide();\n $.isFunction(args.onHide) && args.onHide.call(LP.MessageBox, args);\n }, args.autohide);\n }\n }, this)();\n },\n blockUI: function (message) {\n\n message = (message !== false ? (message ? message : 'Wait a moment') : '') + '<div class=\"message-box-animation\"></div>';\n this.show(message);\n },\n hide: function (delay, instance) {\n if (instance) {\n this._removeInstance(instance.id);\n } else if (this.instance) {\n this._removeInstance(this.instance.id);\n }\n if (this.instances.length === 0) {\n if (this.$block) {\n this.$block.hide();\n }\n if (this.$window) {\n this.$window.hide();\n }\n $(window)\n .unbind('resize.message-box', this.update)\n .unbind('scroll.message-box', this.update);\n } else {\n if (this.instance) {\n this._createWindow(this.instance.message, this.instance.title, this.instance.buttons);\n }\n }\n\n },\n update: function (force) {\n var that = this,\n $wrap = this.$window.find('#message-box-wrap'),\n timer = $wrap.data('timer'),\n _update = function () {\n LP.Hook.doAction('learn_press_message_box_before_resize', that);\n var $content = $wrap.find('.message-box-content').css(\"height\", \"\").css('overflow', 'hidden'),\n width = $wrap.outerWidth(),\n height = $wrap.outerHeight(),\n contentHeight = $content.height(),\n windowHeight = $(window).height(),\n top = $wrap.offset().top;\n if (contentHeight > windowHeight - 50) {\n $content.css({\n height: windowHeight - 25\n });\n height = $wrap.outerHeight();\n } else {\n $content.css(\"height\", \"\").css('overflow', '');\n }\n $wrap.css({\n marginTop: ($(window).height() - height) / 2\n });\n LP.Hook.doAction('learn_press_message_box_resize', height, that);\n };\n if (force) _update();\n timer && clearTimeout(timer);\n timer = setTimeout(_update, 250);\n },\n _removeInstance: function (id) {\n for (var i = 0; i < this.instances.length; i++) {\n if (this.instances[i].id === id) {\n\n this.instances.splice(i, 1);\n\n var len = this.instances.length;\n if (len) {\n this.instance = this.instances[len - 1];\n this.$window.attr('instance', this.instance.id);\n } else {\n this.instance = false;\n this.$window.removeAttr('instance');\n }\n break;\n }\n }\n },\n _getInstance: function (id) {\n for (var i = 0; i < this.instances.length; i++) {\n if (this.instances[i].id === id) {\n return this.instances[i];\n }\n }\n },\n _createWindow: function (message, title, buttons) {\n var $wrap = this.$window.find('#message-box-wrap').html('');\n if (title) {\n $wrap.append('<h3 class=\"message-box-title\">' + title + '</h3>');\n }\n $wrap.append($('<div class=\"message-box-content\"></div>').html(message));\n if (buttons) {\n var $buttons = $('<div class=\"message-box-buttons\"></div>');\n switch (buttons) {\n case 'yesNo':\n $buttons.append(this._createButton(LP_Settings.localize.button_yes, 'yes'));\n $buttons.append(this._createButton(LP_Settings.localize.button_no, 'no'));\n break;\n case 'okCancel':\n $buttons.append(this._createButton(LP_Settings.localize.button_ok, 'ok'));\n $buttons.append(this._createButton(LP_Settings.localize.button_cancel, 'cancel'));\n break;\n default:\n $buttons.append(this._createButton(LP_Settings.localize.button_ok, 'ok'));\n }\n $wrap.append($buttons);\n }\n },\n _createButton: function (title, type) {\n var $button = $('<button type=\"button\" class=\"button message-box-button message-box-button-' + type + '\">' + title + '</button>'),\n callback = 'on' + (type.substr(0, 1).toUpperCase() + type.substr(1));\n $button.data('callback', callback).click(function () {\n var instance = $(this).data('instance'),\n callback = instance.events[$(this).data('callback')];\n if ($.type(callback) === 'function') {\n if (callback.apply(LP.MessageBox, [instance]) === false) {\n // return;\n } else {\n LP.MessageBox.hide(null, instance);\n }\n } else {\n LP.MessageBox.hide(null, instance);\n }\n }).data('instance', this.instance);\n return $button;\n }\n};\n\nexport default MessageBox;",";(function ($) {\n function QuickTip(el, options) {\n var $el = $(el),\n uniId = $el.attr('data-id') || LP.uniqueId();\n\n options = $.extend({\n event: 'hover',\n autoClose: true,\n single: true,\n closeInterval: 1000,\n arrowOffset: null,\n tipClass: ''\n }, options, $el.data());\n\n $el.attr('data-id', uniId);\n\n var content = $el.attr('data-content-tip') || $el.html(),\n $tip = $('<div class=\"learn-press-tip-floating\">' + content + '</div>'),\n t = null,\n closeInterval = 0,\n useData = false,\n arrowOffset = options.arrowOffset === 'el' ? $el.outerWidth() / 2 : 8,\n $content = $('#__' + uniId);\n\n if ($content.length === 0) {\n $(document.body).append($('<div />').attr('id', '__' + uniId).html(content).css('display', 'none'))\n }\n\n content = $content.html();\n\n $tip.addClass(options.tipClass);\n\n $el.data('content-tip', content);\n if ($el.attr('data-content-tip')) {\n //$el.removeAttr('data-content-tip');\n useData = true;\n }\n\n closeInterval = options.closeInterval;\n\n if (options.autoClose === false) {\n $tip.append('<a class=\"close\"></a>');\n $tip.on('click', '.close', function () {\n close();\n })\n }\n\n function show() {\n if (t) {\n clearTimeout(t);\n return;\n }\n\n if (options.single) {\n $('.learn-press-tip').not($el).LP('QuickTip', 'close');\n }\n\n $tip.appendTo(document.body);\n var pos = $el.offset();\n\n $tip.css({\n top: pos.top - $tip.outerHeight() - 8,\n left: pos.left - $tip.outerWidth() / 2 + arrowOffset\n });\n }\n\n function hide() {\n t && clearTimeout(t);\n t = setTimeout(function () {\n $tip.detach();\n t = null;\n }, closeInterval);\n }\n\n function close() {\n closeInterval = 0;\n hide();\n closeInterval = options.closeInterval;\n }\n\n function open() {\n show();\n }\n\n if (!useData) {\n $el.html('');\n }\n\n if (options.event === 'click') {\n $el.on('click', function (e) {\n e.stopPropagation();\n show();\n })\n }\n\n $(document).on('learn-press/close-all-quick-tip', function () {\n close();\n });\n $el.hover(\n function (e) {\n e.stopPropagation();\n if (options.event !== 'click') {\n show();\n }\n },\n function (e) {\n e.stopPropagation();\n if (options.autoClose) {\n hide();\n }\n }\n ).addClass('ready');\n return {\n close: close,\n open: open\n }\n }\n\n $.fn.LP('QuickTip', function (options) {\n return $.each(this, function () {\n var $tip = $(this).data('quick-tip');\n\n if (!$tip) {\n $tip = new QuickTip(this, options);\n $(this).data('quick-tip', $tip);\n }\n\n if ($.type(options) === 'string') {\n $tip[options] && $tip[options].apply($tip);\n }\n })\n });\n})\n(jQuery);"],"sourceRoot":""}
assets/js/utils.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=2)}([function(t,e,n){"use strict";e.a=function(){window.LP=window.LP||{},"string"==typeof arguments[0]?(LP[arguments[0]]=LP[arguments[0]]||{},LP[arguments[0]]=jQuery.extend(LP[arguments[0]],arguments[1])):LP=jQuery.extend(LP,arguments[0])}},function(t,e){!function(t){function e(e,n){var i=t(e),o=i.attr("data-id")||LP.uniqueId();n=t.extend({event:"hover",autoClose:!0,single:!0,closeInterval:1e3,arrowOffset:null,tipClass:""},n,i.data()),i.attr("data-id",o);var r=i.attr("data-content-tip")||i.html(),a=t('<div class="learn-press-tip-floating">'+r+"</div>"),s=null,c=0,l=!1,u="el"===n.arrowOffset?i.outerWidth()/2:8,f=t("#__"+o);function d(){if(s)clearTimeout(s);else{n.single&&t(".learn-press-tip").not(i).LP("QuickTip","close"),a.appendTo(document.body);var e=i.offset();a.css({top:e.top-a.outerHeight()-8,left:e.left-a.outerWidth()/2+u})}}function p(){s&&clearTimeout(s),s=setTimeout((function(){a.detach(),s=null}),c)}function h(){c=0,p(),c=n.closeInterval}return 0===f.length&&t(document.body).append(t("<div />").attr("id","__"+o).html(r).css("display","none")),r=f.html(),a.addClass(n.tipClass),i.data("content-tip",r),i.attr("data-content-tip")&&(l=!0),c=n.closeInterval,!1===n.autoClose&&(a.append('<a class="close"></a>'),a.on("click",".close",(function(){h()}))),l||i.html(""),"click"===n.event&&i.on("click",(function(t){t.stopPropagation(),d()})),t(document).on("learn-press/close-all-quick-tip",(function(){h()})),i.hover((function(t){t.stopPropagation(),"click"!==n.event&&d()}),(function(t){t.stopPropagation(),n.autoClose&&p()})).addClass("ready"),{close:h,open:function(){d()}}}t.fn.LP("QuickTip",(function(n){return t.each(this,(function(){var i=t(this).data("quick-tip");i||(i=new e(this,n),t(this).data("quick-tip",i)),"string"===t.type(n)&&i[n]&&i[n].apply(i)}))}))}(jQuery)},function(t,e,n){"use strict";n.r(e);var i,o=n(0),r=window.jQuery;void 0!==r&&(r.fn.LP=i=function(t,e){if(r.isFunction(e))r.fn["LP_"+t]=e;else if(t){var n=[];if(arguments.length>1)for(var i=1;i<arguments.length;i++)n.push(arguments[i]);return r.isFunction(r(this)["LP_"+t])?r(this)["LP_"+t].apply(this,n):this}return this});var a=i,s=n(1),c=n.n(s),l=window.jQuery,u={$block:null,$window:null,events:{},instances:[],instance:null,quickConfirm:function(t,e){var n=l(t);l("[learn-press-quick-confirm]").each((function(){var t;(t=l(this).data("quick-confirm"))&&(console.log(t),t.destroy())})),!n.attr("learn-press-quick-confirm")&&n.attr("learn-press-quick-confirm","true").data("quick-confirm",new function(t,e){var n=l(t),i=l('<span class="learn-press-quick-confirm"></span>').insertAfter(n),o=l(t).position()||{left:0,top:0},r=null,a=null,s=3,c=function(){i.fadeOut("fast",(function(){l(this).remove(),i.parent().css("position","")})),n.removeAttr("learn-press-quick-confirm").data("quick-confirm",void 0),u()},u=function(){a&&clearInterval(a),r&&clearInterval(r)},f=function(){r=setInterval((function(){0==--s&&(c.call(i[0]),l.isFunction(e.onCancel)&&e.onCancel(e.data),u()),i.find("span").html(" ("+s+")")}),1e3),a=setInterval((function(){n.is(":visible")&&"hidden"!=n.css("visibility")||(u(),i.remove(),i.parent().css("position",""),l.isFunction(e.onCancel)&&e.onCancel(e.data))}),350)};e=l.extend({message:"",data:null,onOk:null,onCancel:null,offset:{top:0,left:0}},e||{}),i.html(e.message||n.attr("data-confirm-remove")||"Are you sure?").append("<span> ("+s+")</span>").css({}),i.click((function(){l.isFunction(e.onOk)&&e.onOk(e.data),c()})).hover((function(){u()}),(function(){f()})),i.css({left:o.left+n.outerWidth()-i.outerWidth()+e.offset.left,top:o.top+n.outerHeight()+e.offset.top+5}).hide().fadeIn("fast"),f(),this.destroy=function(){i.remove(),n.removeAttr("learn-press-quick-confirm").data("quick-confirm",void 0),u()}}(t,e))},show:function(t,e){l.proxy((function(){e=l.extend({title:"",buttons:"",events:!1,autohide:!1,message:t,data:!1,id:LP.uniqueId(),onHide:null},e||{}),this.instances.push(e),this.instance=e;l(document);var n=l(document.body);this.$block||(this.$block=l('<div id="learn-press-message-box-block"></div>').appendTo(n)),this.$window||(this.$window=l('<div id="learn-press-message-box-window"><div id="message-box-wrap"></div> </div>').insertAfter(this.$block),this.$window.click((function(){}))),this._createWindow(t,e.title,e.buttons),this.$block.show(),this.$window.show().attr("instance",e.id),l(window).bind("resize.message-box",l.proxy(this.update,this)).bind("scroll.message-box",l.proxy(this.update,this)),this.update(!0),e.autohide&&setTimeout((function(){LP.MessageBox.hide(),l.isFunction(e.onHide)&&e.onHide.call(LP.MessageBox,e)}),e.autohide)}),this)()},blockUI:function(t){t=(!1!==t?t||"Wait a moment":"")+'<div class="message-box-animation"></div>',this.show(t)},hide:function(t,e){e?this._removeInstance(e.id):this.instance&&this._removeInstance(this.instance.id),0===this.instances.length?(this.$block&&this.$block.hide(),this.$window&&this.$window.hide(),l(window).unbind("resize.message-box",this.update).unbind("scroll.message-box",this.update)):this.instance&&this._createWindow(this.instance.message,this.instance.title,this.instance.buttons)},update:function(t){var e=this,n=this.$window.find("#message-box-wrap"),i=n.data("timer"),o=function(){LP.Hook.doAction("learn_press_message_box_before_resize",e);var t=n.find(".message-box-content").css("height","").css("overflow","hidden"),i=(n.outerWidth(),n.outerHeight()),o=t.height(),r=l(window).height();n.offset().top;o>r-50?(t.css({height:r-25}),i=n.outerHeight()):t.css("height","").css("overflow",""),n.css({marginTop:(l(window).height()-i)/2}),LP.Hook.doAction("learn_press_message_box_resize",i,e)};t&&o(),i&&clearTimeout(i),i=setTimeout(o,250)},_removeInstance:function(t){for(var e=0;e<this.instances.length;e++)if(this.instances[e].id===t){this.instances.splice(e,1);var n=this.instances.length;n?(this.instance=this.instances[n-1],this.$window.attr("instance",this.instance.id)):(this.instance=!1,this.$window.removeAttr("instance"));break}},_getInstance:function(t){for(var e=0;e<this.instances.length;e++)if(this.instances[e].id===t)return this.instances[e]},_createWindow:function(t,e,n){var i=this.$window.find("#message-box-wrap").html("");if(e&&i.append('<h3 class="message-box-title">'+e+"</h3>"),i.append(l('<div class="message-box-content"></div>').html(t)),n){var o=l('<div class="message-box-buttons"></div>');switch(n){case"yesNo":o.append(this._createButton(LP_Settings.localize.button_yes,"yes")),o.append(this._createButton(LP_Settings.localize.button_no,"no"));break;case"okCancel":o.append(this._createButton(LP_Settings.localize.button_ok,"ok")),o.append(this._createButton(LP_Settings.localize.button_cancel,"cancel"));break;default:o.append(this._createButton(LP_Settings.localize.button_ok,"ok"))}i.append(o)}},_createButton:function(t,e){var n=l('<button type="button" class="button message-box-button message-box-button-'+e+'">'+t+"</button>"),i="on"+(e.substr(0,1).toUpperCase()+e.substr(1));return n.data("callback",i).click((function(){var t=l(this).data("instance"),e=t.events[l(this).data("callback")];"function"===l.type(e)&&!1===e.apply(LP.MessageBox,[t])||LP.MessageBox.hide(null,t)})).data("instance",this.instance),n}},f=function(t){var e={},n=window.jQuery;this.on=function(n,i){var o=n.split("."),r="";return o.length>1&&(n=o[0],r=o[1]),e[n]||(e[n]=[[],{}]),r?(e[n][1][r]||(e[n][1][r]=[]),e[n][1][r].push(i)):e[n][0].push(i),t},this.off=function(i,o){var r=i.split("."),a="";if(r.length>1&&(i=r[0],a=r[1]),!e[i])return t;var s=-1;if(a){if(!e[i][1][a])return t;if(n.isFunction(o)){if((s=e[i][1][a].indexOf(o))<0)return t;e[i][1][a].splice(s,1)}else e[i][1][a]=[]}else if(n.isFunction(o)){if((s=e[i][0].indexOf(o))<0)return t;e[i][0].splice(s,1)}else e[i][0]=[];return t},this.callEvent=function(i,o){if(e[i]){if(e[i][0])for(var r=0;r<e[i][0].length;r++)n.isFunction(e[i][0][r])&&e[i][r][0].apply(t,o);if(e[i][1])for(var r in e[i][1])for(var a=0;a<e[i][1][r].length;a++)n.isFunction(e[i][1][r][a])&&e[i][1][r][a].apply(t,o)}}},d={hooks:{action:{},filter:{}},addAction:function(t,e,n,i){return this.addHook("action",t,e,n,i),this},addFilter:function(t,e,n,i){return this.addHook("filter",t,e,n,i),this},doAction:function(t){return this.doHook("action",t,arguments),this},applyFilters:function(t){return this.doHook("filter",t,arguments)},removeAction:function(t,e){return this.removeHook("action",t,e),this},removeFilter:function(t,e,n){return this.removeHook("filter",t,e,n),this},addHook:function(t,e,n,i,o){void 0===this.hooks[t][e]&&(this.hooks[t][e]=[]);var r=this.hooks[t][e];return void 0===o&&(o=e+"_"+r.length),this.hooks[t][e].push({tag:o,callable:n,priority:i}),this},doHook:function(t,e,n){if(n=Array.prototype.slice.call(n,1),void 0!==this.hooks[t][e]){var i,o=this.hooks[t][e];o.sort((function(t,e){return t.priority-e.priority}));for(var r=0;r<o.length;r++)"function"!=typeof(i=o[r].callable)&&(i=window[i]),"action"===t?i.apply(null,n):n[0]=i.apply(null,n)}return"filter"===t?n[0]:this},removeHook:function(t,e,n,i){if(void 0!==this.hooks[t][e])for(var o=this.hooks[t][e],r=o.length-1;r>=0;r--)void 0!==i&&i!==o[r].tag||void 0!==n&&n!==o[r].priority||o.splice(r,1);return this}};n(3);function p(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function h(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var v=jQuery;String.prototype.getQueryVar=function(t){t=t.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var e=new RegExp("[\\?&]"+t+"=([^&#]*)").exec(this);return null===e?"":decodeURIComponent(e[1].replace(/\+/g," "))},String.prototype.addQueryVar=function(t,e){var n=this,i=n.split("#");return n=i[0],t.match(/\[/)?(n+=n.match(/\?/)?"&":"?",n+=t+"="+e):-1!=n.indexOf("&"+t+"=")||-1!=n.indexOf("?"+t+"=")?n=n.replace(new RegExp(t+"=([^&#]*)","g"),t+"="+e):(n+=n.match(/\?/)?"&":"?",n+=t+"="+e),n+(i[1]?"#"+i[1]:"")},String.prototype.removeQueryVar=function(t){var e=this,n=e.split("#");e=n[0],t=t.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var i=new RegExp("[\\?&]"+t+"([[][^=]*)?=([^&#]*)","g");return(e=e.replace(i,""))+(n[1]?"#"+n[1]:"")},0==v.isEmptyObject("")&&(v.isEmptyObject=function(t){var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0});var g={Hook:d,setUrl:function(t,e,n){t&&(history.pushState({},n,t),LP.Hook.doAction("learn_press_set_location_url",t))},toggleGroupSection:function(t,e){var n=v(t);n.hasClass("hide-if-js")&&n.hide().removeClass("hide-if-js"),n.removeClass("hide-if-js").slideToggle((function(){v(this).is(":visible")?v(e).addClass("toggle-on").removeClass("toggle-off"):v(e).addClass("toggle-off").removeClass("toggle-on")}))},overflow:function(t,e){var n=v(t),i=n.css("overflow");e?n.css("overflow",e).data("overflow",i):n.css("overflow",n.data("overflow"))},getUrl:function(){return window.location.href},addQueryVar:function(t,e,n){return(void 0===n?window.location.href:n).addQueryVar(t,e)},removeQueryVar:function(t,e){return(void 0===e?window.location.href:e).removeQueryVar(t)},reload:function(t){t||(t=window.location.href),window.location.href=t},parseResponse:function(t,e){var n=t.match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);return n&&(t=n[1]),"json"===(e||"json")?this.parseJSON(t):t},parseJSON:function(t){var e=(t+"").match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);try{t=e?v.parseJSON(e[1]):v.parseJSON(t)}catch(e){t={}}return t},ajax:function(t){var e=t.type||"post",n=t.dataType||"json",i=t.action?v.extend(t.data,{"lp-ajax":t.action}):t.data,o=t.beforeSend||function(){},r=t.url||window.location.href;v.ajax({data:i,url:r,type:e,dataType:"html",beforeSend:o.apply(null,t),success:function(e){var i=LP.parseResponse(e,n);v.isFunction(t.success)&&t.success(i,e)},error:function(){v.isFunction(t.error)&&t.error.apply(null,LP.funcArgs2Array())}})},doAjax:function(t){var e=t.type||"post",n=t.dataType||"json",i=(void 0===t.prefix||"learnpress_")+t.action,o=t.action?v.extend(t.data,{action:i}):t.data;v.ajax({data:o,url:t.url||window.location.href,type:e,dataType:"html",success:function(e){var i=LP.parseResponse(e,n);v.isFunction(t.success)&&t.success(i,e)},error:function(){v.isFunction(t.error)&&t.error.apply(null,LP.funcArgs2Array())}})},funcArgs2Array:function(t){for(var e=[],n=0;n<t.length;n++)e.push(t[n]);return e},addFilter:function(t,e){var n=v(document),i="LP."+t;return n.on(i,e),LP.log(n.data("events")),this},applyFilters:function(){var t=v(document),e=arguments[0],n=this.funcArgs2Array(arguments);return t.hasEvent(e)?(n[0]="LP."+e,t.triggerHandler.apply(t,n)):n[1]},addAction:function(t,e){return this.addFilter(t,e)},doAction:function(){var t=v(document),e=arguments[0],n=this.funcArgs2Array(arguments);t.hasEvent(e)&&(n[0]="LP."+e,t.trigger.apply(t,n))},toElement:function(t,e){if(0!==v(t).length){e=v.extend({delay:300,duration:"slow",offset:50,container:null,callback:null,invisible:!1},e||{});var n,i=v(e.container);0===i.length&&(i=v("body, html")),n=i.offset().top;var o=v(t).offset().top+i.scrollTop()-n-e.offset;e.invisible&&function(t,e){var n=i.scrollTop(),o=n+i.height(),r=v(t).offset().top-i.offset().top,a=r+v(t).height();return!0===e?n<r&&o>a:r<=o&&a>=n}(t,!0)||i.fadeIn(10).delay(e.delay).animate({scrollTop:o},e.duration,e.callback)}},uniqueId:function(t,e){var n;void 0===t&&(t="");var i=function(t,e){return e<(t=parseInt(t,10).toString(16)).length?t.slice(t.length-e):e>t.length?new Array(e-t.length+1).join("0")+t:t};return this.php_js||(this.php_js={}),this.php_js.uniqidSeed||(this.php_js.uniqidSeed=Math.floor(123456789*Math.random())),this.php_js.uniqidSeed++,n=t,n+=i(parseInt((new Date).getTime()/1e3,10),8),n+=i(this.php_js.uniqidSeed,5),e&&(n+=(10*Math.random()).toFixed(8).toString()),n},log:function(){for(var t=0,e=arguments.length;t<e;t++)console.log(arguments[t])},blockContent:function(){0===v("#learn-press-block-content").length&&v(LP.template("learn-press-template-block-content",{})).appendTo(v("body")),LP.hideMainScrollbar().addClass("block-content"),v(document).trigger("learn_press_block_content")},unblockContent:function(){setTimeout((function(){LP.showMainScrollbar().removeClass("block-content"),v(document).trigger("learn_press_unblock_content")}),350)},hideMainScrollbar:function(t){t||(t="html, body");var e=v(t);return e.each((function(){var t=v(this),e=t.css("overflow");t.css("overflow","hidden").attr("overflow",e)})),e},showMainScrollbar:function(t){t||(t="html, body");var e=v(t);return e.each((function(){var t=v(this),e=t.attr("overflow");t.css("overflow",e).removeAttr("overflow")})),e},template:"undefined"!=typeof _?_.memoize((function(t,e){var n,i={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"},o=function(e){return(n=n||_.template(v("#"+t).html(),null,i))(e)};return e?o(e):o}),(function(t,e){return t+"-"+JSON.stringify(e)})):function(){return""},alert:function(t,e){var n="",i="";"string"==typeof t?i=t:(void 0!==t.title&&(n=t.title),void 0!==t.message&&(i=t.message)),v.alerts.alert(i,n,(function(t){LP._on_alert_hide(),e&&e(t)})),this._on_alert_show()},confirm:function(t,e){var n="",i="";"string"==typeof t?i=t:(void 0!==t.title&&(n=t.title),void 0!==t.message&&(i=t.message)),v.alerts.confirm(i,n,(function(t){LP._on_alert_hide(),e&&e(t)})),this._on_alert_show()},_on_alert_show:function(){var t=v("#popup_container");v('<span id="popup_container_placeholder" />').insertAfter(t).data("xxx",t);t.stop().css("top","-=50").css("opacity","0").animate({top:"+=50",opacity:1},250)},_on_alert_hide:function(){var t=v("#popup_container_placeholder"),e=t.data("xxx");e&&e.replaceWith(t),e.appendTo(v(document.body)),e.stop().animate({top:"+=50",opacity:0},250,(function(){v(this).remove()}))},sendMessage:function(t,e,n,i){v.isPlainObject(t)&&(t=JSON.stringify(t)),n=n||"*",(e=e||window).postMessage(t,n,i)},receiveMessage:function(t,e){var n=t.origin||t.originalEvent.origin,i=t.data||t.originalEvent.data||"";("string"==typeof i||i instanceof String)&&0===i.indexOf("{")&&(i=LP.parseJSON(i)),LP.Hook.doAction("learn_press_receive_message",i,n)}};v(document).ready((function(){var t,e;void 0!==v.alerts&&(v.alerts.overlayColor="#000",v.alerts.overlayOpacity=.5,v.alerts.okButton=lpGlobalSettings.localize.button_ok,v.alerts.cancelButton=lpGlobalSettings.localize.button_cancel),v(".learn-press-message.fixed").each((function(){var t=v(this),e=t.data();!function(t,e){e.delayIn&&setTimeout((function(){t.show().hide().fadeIn()}),e.delayIn),e.delayOut&&setTimeout((function(){t.fadeOut()}),e.delayOut+(e.delayIn||0))}(t,e)})),v("body").on("click",".learn-press-nav-tabs li a",(function(t){t.preventDefault();var e=v(this);e.closest("li").addClass("active").siblings().removeClass("active"),v(e.attr("data-tab")).addClass("active").siblings().removeClass("active"),v(document).trigger("learn-press/nav-tabs/clicked",e)})),setTimeout((function(){v(".learn-press-nav-tabs li.active:not(.default) a").trigger("click")}),300),v("body.course-item-popup").parent().css("overflow","hidden"),t=null,e=function(){v(".auto-check-lines").checkLines((function(t){t>1?v(this).removeClass("single-lines"):v(this).addClass("single-lines"),v(this).attr("rows",t)}))},v(window).on("resize.check-lines",(function(){t?(t&&clearTimeout(t),t=setTimeout(e,300)):e()})),v(".learn-press-tooltip, .lp-passing-conditional").LP_Tooltip({offset:[24,24]}),v(".learn-press-icon").LP_Tooltip({offset:[30,30]}),v(".learn-press-message[data-autoclose]").each((function(){var t=v(this),e=parseInt(t.data("autoclose"));e&&setTimeout((function(t){t.fadeOut()}),e,t)})),v(document).on("click",(function(){v(document).trigger("learn-press/close-all-quick-tip")}))})),Object(o.a)(function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?p(Object(n),!0).forEach((function(e){h(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({Event_Callback:f,MessageBox:u},g));e.default={fn:a,QuickTip:c.a}},function(module,__webpack_exports__,__webpack_require__){"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var $=window.jQuery,serializeJSON=function serializeJSON(path){var isInput=$(this).is("input")||$(this).is("select")||$(this).is("textarea"),unIndexed=isInput?$(this).serializeArray():$(this).find("input, select, textarea").serializeArray(),indexed={},validate=/(\[([a-zA-Z0-9_-]+)?\]?)/g,arrayKeys={},end=!1;if($.each(unIndexed,(function(){var that=this,match=this.name.match(/^([0-9a-zA-Z_-]+)/);if(match){var keys=this.name.match(validate),objPath="indexed['"+match[0]+"']";keys?("object"!=_typeof(indexed[match[0]])&&(indexed[match[0]]={}),$.each(keys,(function(i,prop){prop=prop.replace(/\]|\[/g,"");var rawPath=objPath.replace(/'|\[|\]/g,""),objExp="",preObjPath=objPath;""==prop?(null==arrayKeys[rawPath]?arrayKeys[rawPath]=0:arrayKeys[rawPath]++,objPath+="['"+arrayKeys[rawPath]+"']"):(isNaN(prop)||(arrayKeys[rawPath]=prop),objPath+="['"+prop+"']");try{i==keys.length-1?(objExp=objPath+"=that.value;",end=!0):(objExp=objPath+"={}",end=!1);var evalString="if( typeof "+objPath+" == 'undefined'){"+objExp+";}else{if(end){if(typeof "+preObjPath+"!='object'){"+preObjPath+"={};}"+objExp+"}}";eval(evalString)}catch(t){console.log("Error:"+t+"\n"+objExp)}}))):indexed[match[0]]=this.value}})),path){path="['"+path.replace(".","']['")+"']";var c="try{indexed = indexed"+path+"}catch(ex){console.log(c, ex);}";eval(c)}return indexed},LP_Tooltip=function(t){return t=$.extend({},{offset:[0,0]},t||{}),$.each(this,(function(){var e=$(this),n=e.data("content");if(n&&void 0===e.data("LP_Tooltip")){var i=null;e.hover((function(o){i=$('<div class="learn-press-tooltip-bubble"/>').html(n).appendTo($("body")).hide();var r=e.offset();if($.isArray(t.offset)){var a=t.offset[1],s=t.offset[0];$.isNumeric(s)&&(r.left+=s),$.isNumeric(a)&&(r.top+=a)}i.css({top:r.top,left:r.left}),i.fadeIn()}),(function(){i&&i.remove()})),e.data("tooltip",!0)}}))},hasEvent=function(t){var e=$(this).data("events");if(void 0===e.LP)return!1;for(i=0;i<e.LP.length;i++)if(e.LP[i].namespace==t)return!0;return!1},dataToJSON=function(){var t={};return $.each(this[0].attributes,(function(){var e=this.name.match(/^data-(.*)/);e&&(t[e[1]]=this.value)})),t},rows=function(){var t=$(this).height(),e=$(this).css("line-height").replace("px","");return $(this).attr({height:t,"line-height":e}),Math.floor(t/parseInt(e))},checkLines=function(t){return this.each((function(){var e=$(this).rows();t.call(this,e)}))},findNext=function(t){var e=$(t),n=this.first(),i=e.index(n),o=e.eq(i+1);return!!o.length&&o},findPrev=function(t){var e=$(t),n=this.first(),i=e.index(n),o=e.eq(i-1);return!!o.length&&o},progress=function(t){return this.each((function(){var e=parseInt(t/100*360),n=$(this);e<180?n.find(".progress-circle").removeClass("gt-50"):n.find(".progress-circle").addClass("gt-50"),n.find(".fill").css({transform:"rotate("+e+"deg)"})}))};$.fn.serializeJSON=serializeJSON,$.fn.LP_Tooltip=LP_Tooltip,$.fn.hasEvent=hasEvent,$.fn.dataToJSON=dataToJSON,$.fn.rows=rows,$.fn.checkLines=checkLines,$.fn.findNext=findNext,$.fn.findPrev=findPrev,$.fn.progress=progress;var _unused_webpack_default_export={serializeJSON:serializeJSON,LP_Tooltip:LP_Tooltip,hasEvent:hasEvent,dataToJSON:dataToJSON,rows:rows,checkLines:checkLines,findNext:findNext,findPrev:findPrev,progress:progress}}]);
assets/src/js/plugins.all.min-bk.js ADDED
@@ -0,0 +1 @@
 
1
+ var isFunction;!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Vue=e()}(this,function(){"use strict";var d=Object.freeze({});function P(t){return null==t}function I(t){return null!=t}function O(t){return!0===t}function l(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function L(t){return null!==t&&"object"==typeof t}var n=Object.prototype.toString;function c(t){return"[object Object]"===n.call(t)}function o(t){var e=parseFloat(String(t));return 0<=e&&Math.floor(e)===e&&isFinite(t)}function h(t){return I(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function e(t){return null==t?"":Array.isArray(t)||c(t)&&t.toString===n?JSON.stringify(t,null,2):String(t)}function N(t){var e=parseFloat(t);return isNaN(e)?t:e}function a(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o<r.length;o++)n[r[o]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}var u=a("slot,component",!0),f=a("key,ref,slot,slot-scope,is");function v(t,e){if(t.length){e=t.indexOf(e);if(-1<e)return t.splice(e,1)}}var r=Object.prototype.hasOwnProperty;function p(t,e){return r.call(t,e)}function t(e){var n=Object.create(null);return function(t){return n[t]||(n[t]=e(t))}}var i=/-(\w)/g,m=t(function(t){return t.replace(i,function(t,e){return e?e.toUpperCase():""})}),s=t(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),y=/\B([A-Z])/g,g=t(function(t){return t.replace(y,"-$1").toLowerCase()}),_=Function.prototype.bind?function(t,e){return t.bind(e)}:function(n,r){function t(t){var e=arguments.length;return e?1<e?n.apply(r,arguments):n.call(r,t):n.call(r)}return t._length=n.length,t};function b(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function w(t,e){for(var n in e)t[n]=e[n];return t}function x(t){for(var e={},n=0;n<t.length;n++)t[n]&&w(e,t[n]);return e}function $(t,e,n){}function k(t,e,n){return!1}var C=function(t){return t};function A(e,n){if(e===n)return!0;var t=L(e),r=L(n);if(!t||!r)return!t&&!r&&String(e)===String(n);try{var o=Array.isArray(e),i=Array.isArray(n);if(o&&i)return e.length===n.length&&e.every(function(t,e){return A(t,n[e])});if(e instanceof Date&&n instanceof Date)return e.getTime()===n.getTime();if(o||i)return!1;o=Object.keys(e),i=Object.keys(n);return o.length===i.length&&o.every(function(t){return A(e[t],n[t])})}catch(e){return!1}}function S(t,e){for(var n=0;n<t.length;n++)if(A(t[n],e))return n;return-1}function D(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}var T="data-server-rendered",j=["component","directive","filter"],E=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch"],M={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:k,isReservedAttr:k,isUnknownElement:k,getTagNamespace:$,parsePlatformTagName:C,mustUseProp:k,async:!0,_lifecycleHooks:E},F=/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;function R(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var z,H=new RegExp("[^"+F.source+".$_\\d]"),U="__proto__"in{},B="undefined"!=typeof window,V="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,W=V&&WXEnvironment.platform.toLowerCase(),q=B&&window.navigator.userAgent.toLowerCase(),J=q&&/msie|trident/.test(q),G=q&&0<q.indexOf("msie 9.0"),K=q&&0<q.indexOf("edge/"),X=(q&&q.indexOf("android"),q&&/iphone|ipad|ipod|ios/.test(q)||"ios"===W),Q=(q&&/chrome\/\d+/.test(q),q&&/phantomjs/.test(q),q&&q.match(/firefox\/(\d+)/)),Y={}.watch,Z=!1;if(B)try{var tt={};Object.defineProperty(tt,"passive",{get:function(){Z=!0}}),window.addEventListener("test-passive",null,tt)}catch(d){}var et=function(){return void 0===z&&(z=!B&&!V&&"undefined"!=typeof global&&global.process&&"server"===global.process.env.VUE_ENV),z},nt=B&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function rt(t){return"function"==typeof t&&/native code/.test(t.toString())}var ot,it="undefined"!=typeof Symbol&&rt(Symbol)&&"undefined"!=typeof Reflect&&rt(Reflect.ownKeys);function at(){this.set=Object.create(null)}ot="undefined"!=typeof Set&&rt(Set)?Set:(at.prototype.has=function(t){return!0===this.set[t]},at.prototype.add=function(t){this.set[t]=!0},at.prototype.clear=function(){this.set=Object.create(null)},at);var st=$,ct=0,lt=function(){this.id=ct++,this.subs=[]};lt.prototype.addSub=function(t){this.subs.push(t)},lt.prototype.removeSub=function(t){v(this.subs,t)},lt.prototype.depend=function(){lt.target&&lt.target.addDep(this)},lt.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e<n;e++)t[e].update()},lt.target=null;var ut=[];function ft(t){ut.push(t),lt.target=t}function pt(){ut.pop(),lt.target=ut[ut.length-1]}var dt=function(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},ht={child:{configurable:!0}};ht.child.get=function(){return this.componentInstance},Object.defineProperties(dt.prototype,ht);var vt=function(t){void 0===t&&(t="");var e=new dt;return e.text=t,e.isComment=!0,e};function mt(t){return new dt(void 0,void 0,void 0,String(t))}function yt(t){var e=new dt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var gt=Array.prototype,_t=Object.create(gt);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(i){var a=gt[i];R(_t,i,function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n,r=a.apply(this,t),o=this.__ob__;switch(i){case"push":case"unshift":n=t;break;case"splice":n=t.slice(2)}return n&&o.observeArray(n),o.dep.notify(),r})});var bt=Object.getOwnPropertyNames(_t),wt=!0;function xt(t){wt=t}var $t=function(t){this.value=t,this.dep=new lt,this.vmCount=0,R(t,"__ob__",this),Array.isArray(t)?(U?t.__proto__=_t:function(t,e,n){for(var r=0,o=n.length;r<o;r++){var i=n[r];R(t,i,e[i])}}(t,_t,bt),this.observeArray(t)):this.walk(t)};function kt(t,e){var n;if(L(t)&&!(t instanceof dt))return p(t,"__ob__")&&t.__ob__ instanceof $t?n=t.__ob__:wt&&!et()&&(Array.isArray(t)||c(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new $t(t)),e&&n&&n.vmCount++,n}function Ct(n,t,r,e,o){var i,a,s,c=new lt,l=Object.getOwnPropertyDescriptor(n,t);l&&!1===l.configurable||(i=l&&l.get,a=l&&l.set,i&&!a||2!==arguments.length||(r=n[t]),s=!o&&kt(r),Object.defineProperty(n,t,{enumerable:!0,configurable:!0,get:function(){var t=i?i.call(n):r;return lt.target&&(c.depend(),s&&(s.dep.depend(),Array.isArray(t)&&function t(e){for(var n=void 0,r=0,o=e.length;r<o;r++)(n=e[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&t(n)}(t))),t},set:function(t){var e=i?i.call(n):r;t===e||t!=t&&e!=e||i&&!a||(a?a.call(n,t):r=t,s=!o&&kt(t),c.notify())}}))}function Ot(t,e,n){if(Array.isArray(t)&&o(e))return t.length=Math.max(t.length,e),t.splice(e,1,n),n;if(e in t&&!(e in Object.prototype))return t[e]=n;var r=t.__ob__;return t._isVue||r&&r.vmCount||(r?(Ct(r.value,e,n),r.dep.notify()):t[e]=n),n}function At(t,e){var n;Array.isArray(t)&&o(e)?t.splice(e,1):(n=t.__ob__,t._isVue||n&&n.vmCount||p(t,e)&&(delete t[e],n&&n.dep.notify()))}$t.prototype.walk=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)Ct(t,e[n])},$t.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)kt(t[e])};var St=M.optionMergeStrategies;function Tt(t,e){if(!e)return t;for(var n,r,o,i=it?Reflect.ownKeys(e):Object.keys(e),a=0;a<i.length;a++)"__ob__"!==(n=i[a])&&(r=t[n],o=e[n],p(t,n)?r!==o&&c(r)&&c(o)&&Tt(r,o):Ot(t,n,o));return t}function jt(n,r,o){return o?function(){var t="function"==typeof r?r.call(o,o):r,e="function"==typeof n?n.call(o,o):n;return t?Tt(t,e):e}:r?n?function(){return Tt("function"==typeof r?r.call(this,this):r,"function"==typeof n?n.call(this,this):n)}:r:n}function Et(t,e){t=e?t?t.concat(e):Array.isArray(e)?e:[e]:t;return t&&function(t){for(var e=[],n=0;n<t.length;n++)-1===e.indexOf(t[n])&&e.push(t[n]);return e}(t)}function Mt(t,e,n,r){t=Object.create(t||null);return e?w(t,e):t}St.data=function(t,e,n){return n?jt(t,e,n):e&&"function"!=typeof e?t:jt(t,e)},E.forEach(function(t){St[t]=Et}),j.forEach(function(t){St[t+"s"]=Mt}),St.watch=function(t,e,n,r){if(t===Y&&(t=void 0),e===Y&&(e=void 0),!e)return Object.create(t||null);if(!t)return e;var o,i={};for(o in w(i,t),e){var a=i[o],s=e[o];a&&!Array.isArray(a)&&(a=[a]),i[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return i},St.props=St.methods=St.inject=St.computed=function(t,e,n,r){if(!t)return e;var o=Object.create(null);return w(o,t),e&&w(o,e),o},St.provide=jt;var Pt=function(t,e){return void 0===e?t:e};function It(n,i,r){if("function"==typeof i&&(i=i.options),function(t){var e=t.props;if(e){var n,r,o={};if(Array.isArray(e))for(n=e.length;n--;)"string"==typeof(r=e[n])&&(o[m(r)]={type:null});else if(c(e))for(var i in e)r=e[i],o[m(i)]=c(r)?r:{type:r};t.props=o}}(i),function(){var t=i.inject;if(t){var e=i.inject={};if(Array.isArray(t))for(var n=0;n<t.length;n++)e[t[n]]={from:t[n]};else if(c(t))for(var r in t){var o=t[r];e[r]=c(o)?w({from:r},o):{from:o}}}}(),function(){var t=i.directives;if(t)for(var e in t){var n=t[e];"function"==typeof n&&(t[e]={bind:n,update:n})}}(),!i._base&&(i.extends&&(n=It(n,i.extends,r)),i.mixins))for(var t=0,e=i.mixins.length;t<e;t++)n=It(n,i.mixins[t],r);var o,a={};for(o in n)s(o);for(o in i)p(n,o)||s(o);function s(t){var e=St[t]||Pt;a[t]=e(n[t],i[t],r,t)}return a}function Lt(t,e,n){if("string"==typeof n){var r=t[e];if(p(r,n))return r[n];t=m(n);if(p(r,t))return r[t];e=s(t);return!p(r,e)&&(r[n]||r[t])||r[e]}}function Nt(t,e,n,r){var o=e[t],i=!p(n,t),e=n[t],n=Rt(Boolean,o.type);return-1<n&&(i&&!p(o,"default")?e=!1:""!==e&&e!==g(t)||((i=Rt(String,o.type))<0||n<i)&&(e=!0)),void 0===e&&(e=function(t,e,n){if(p(e,"default")){var r=e.default;return t&&t.$options.propsData&&void 0===t.$options.propsData[n]&&void 0!==t._props[n]?t._props[n]:"function"==typeof r&&"Function"!==Dt(e.type)?r.call(t):r}}(r,o,t),t=wt,xt(!0),kt(e),xt(t)),e}function Dt(t){t=t&&t.toString().match(/^\s*function (\w+)/);return t?t[1]:""}function Ft(t,e){return Dt(t)===Dt(e)}function Rt(t,e){if(!Array.isArray(e))return Ft(e,t)?0:-1;for(var n=0,r=e.length;n<r;n++)if(Ft(e[n],t))return n;return-1}function zt(t,e,n){ft();try{if(e)for(var r=e;r=r.$parent;){var o=r.$options.errorCaptured;if(o)for(var i=0;i<o.length;i++)try{if(!1===o[i].call(r,t,e,n))return}catch(t){Ut(t,r,"errorCaptured hook")}}Ut(t,e,n)}finally{pt()}}function Ht(t,e,n,r,o){var i;try{(i=n?t.apply(e,n):t.call(e))&&!i._isVue&&h(i)&&!i._handled&&(i.catch(function(t){return zt(t,r,o+" (Promise/async)")}),i._handled=!0)}catch(t){zt(t,r,o)}return i}function Ut(t,e,n){if(M.errorHandler)try{return M.errorHandler.call(null,t,e,n)}catch(e){e!==t&&Bt(e)}Bt(t)}function Bt(t){if(!B&&!V||"undefined"==typeof console)throw t;console.error(t)}var Vt,Wt,qt,Jt,Gt=!1,Kt=[],Xt=!1;function Qt(){Xt=!1;for(var t=Kt.slice(0),e=Kt.length=0;e<t.length;e++)t[e]()}function Yt(t,e){var n;if(Kt.push(function(){if(t)try{t.call(e)}catch(t){zt(t,e,"nextTick")}else n&&n(e)}),Xt||(Xt=!0,Wt()),!t&&"undefined"!=typeof Promise)return new Promise(function(t){n=t})}"undefined"!=typeof Promise&&rt(Promise)?(Vt=Promise.resolve(),Wt=function(){Vt.then(Qt),X&&setTimeout($)},Gt=!0):J||"undefined"==typeof MutationObserver||!rt(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString()?Wt="undefined"!=typeof setImmediate&&rt(setImmediate)?function(){setImmediate(Qt)}:function(){setTimeout(Qt,0)}:(qt=1,On=new MutationObserver(Qt),Jt=document.createTextNode(String(qt)),On.observe(Jt,{characterData:!0}),Wt=function(){qt=(qt+1)%2,Jt.data=String(qt)},Gt=!0);var Zt=new ot;function te(t){!function t(e,n){var r,o,i=Array.isArray(e);if(!(!i&&!L(e)||Object.isFrozen(e)||e instanceof dt)){if(e.__ob__){var a=e.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(i)for(r=e.length;r--;)t(e[r],n);else for(r=(o=Object.keys(e)).length;r--;)t(e[o[r]],n)}}(t,Zt),Zt.clear()}var ee=t(function(t){var e="&"===t.charAt(0),n="~"===(t=e?t.slice(1):t).charAt(0),r="!"===(t=n?t.slice(1):t).charAt(0);return{name:t=r?t.slice(1):t,once:n,capture:r,passive:e}});function ne(t,o){function i(){var t=arguments,e=i.fns;if(!Array.isArray(e))return Ht(e,null,arguments,o,"v-on handler");for(var n=e.slice(),r=0;r<n.length;r++)Ht(n[r],null,t,o,"v-on handler")}return i.fns=t,i}function re(t,e,n,r,o,i){var a,s,c,l;for(a in t)s=t[a],c=e[a],l=ee(a),P(s)||(P(c)?(P(s.fns)&&(s=t[a]=ne(s,i)),O(l.once)&&(s=t[a]=o(l.name,s,l.capture)),n(l.name,s,l.capture,l.passive,l.params)):s!==c&&(c.fns=s,t[a]=c));for(a in e)P(t[a])&&r((l=ee(a)).name,e[a],l.capture)}function oe(t,e,n){var r;t instanceof dt&&(t=t.data.hook||(t.data.hook={}));var o=t[e];function i(){n.apply(this,arguments),v(r.fns,i)}P(o)?r=ne([i]):I(o.fns)&&O(o.merged)?(r=o).fns.push(i):r=ne([o,i]),r.merged=!0,t[e]=r}function ie(t,e,n,r,o){if(I(e)){if(p(e,n))return t[n]=e[n],o||delete e[n],1;if(p(e,r))return t[n]=e[r],o||delete e[r],1}}function ae(t){return l(t)?[mt(t)]:Array.isArray(t)?function t(e,n){for(var r,o,i,a=[],s=0;s<e.length;s++)P(r=e[s])||"boolean"==typeof r||(i=a[o=a.length-1],Array.isArray(r)?0<r.length&&(se((r=t(r,(n||"")+"_"+s))[0])&&se(i)&&(a[o]=mt(i.text+r[0].text),r.shift()),a.push.apply(a,r)):l(r)?se(i)?a[o]=mt(i.text+r):""!==r&&a.push(mt(r)):se(r)&&se(i)?a[o]=mt(i.text+r.text):(O(e._isVList)&&I(r.tag)&&P(r.key)&&I(n)&&(r.key="__vlist"+n+"_"+s+"__"),a.push(r)));return a}(t):void 0}function se(t){return I(t)&&I(t.text)&&!1===t.isComment}function ce(t,e){if(t){for(var n=Object.create(null),r=it?Reflect.ownKeys(t):Object.keys(t),o=0;o<r.length;o++){var i=r[o];if("__ob__"!==i){for(var a,s=t[i].from,c=e;c;){if(c._provided&&p(c._provided,s)){n[i]=c._provided[s];break}c=c.$parent}!c&&"default"in t[i]&&(a=t[i].default,n[i]="function"==typeof a?a.call(e):a)}}return n}}function le(t,e){if(!t||!t.length)return{};for(var n,r={},o=0,i=t.length;o<i;o++){var a=t[o],s=a.data;s&&s.attrs&&s.attrs.slot&&delete s.attrs.slot,a.context!==e&&a.fnContext!==e||!s||null==s.slot?(r.default||(r.default=[])).push(a):(s=r[s=s.slot]||(r[s]=[]),"template"===a.tag?s.push.apply(s,a.children||[]):s.push(a))}for(n in r)r[n].every(ue)&&delete r[n];return r}function ue(t){return t.isComment&&!t.asyncFactory||" "===t.text}function fe(t,e,n){var r,o,i=0<Object.keys(e).length,a=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==d&&s===n.$key&&!i&&!n.$hasNormal)return n;for(var c in r={},t)t[c]&&"$"!==c[0]&&(r[c]=function(t,e,n){function r(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:ae(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t}return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}(e,c,t[c]))}else r={};for(o in e)o in r||(r[o]=function(t,e){return function(){return t[e]}}(e,o));return t&&Object.isExtensible(t)&&(t._normalized=r),R(r,"$stable",a),R(r,"$key",s),R(r,"$hasNormal",i),r}function pe(t,e){var n,r,o,i,a;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,o=t.length;r<o;r++)n[r]=e(t[r],r);else if("number"==typeof t)for(n=new Array(t),r=0;r<t;r++)n[r]=e(r+1,r);else if(L(t))if(it&&t[Symbol.iterator]){n=[];for(var s=t[Symbol.iterator](),c=s.next();!c.done;)n.push(e(c.value,n.length)),c=s.next()}else for(i=Object.keys(t),n=new Array(i.length),r=0,o=i.length;r<o;r++)a=i[r],n[r]=e(t[a],a,r);return I(n)||(n=[]),n._isVList=!0,n}function de(t,e,n,r){var o=this.$scopedSlots[t],e=o?(n=n||{},r&&(n=w(w({},r),n)),o(n)||e):this.$slots[t]||e,n=n&&n.slot;return n?this.$createElement("template",{slot:n},e):e}function he(t){return Lt(this.$options,"filters",t)||C}function ve(t,e){return Array.isArray(t)?-1===t.indexOf(e):t!==e}function me(t,e,n,r,o){n=M.keyCodes[e]||n;return o&&r&&!M.keyCodes[e]?ve(o,r):n?ve(n,t):r?g(r)!==e:void 0}function ye(r,o,i,a,s){if(i&&L(i)){var c;Array.isArray(i)&&(i=x(i));for(var t in i)!function(e){c="class"===e||"style"===e||f(e)?r:(n=r.attrs&&r.attrs.type,a||M.mustUseProp(o,n,e)?r.domProps||(r.domProps={}):r.attrs||(r.attrs={}));var t=m(e),n=g(e);t in c||n in c||(c[e]=i[e],s&&((r.on||(r.on={}))["update:"+e]=function(t){i[e]=t}))}(t)}return r}function ge(t,e){var n=this._staticTrees||(this._staticTrees=[]),r=n[t];return r&&!e||be(r=n[t]=this.$options.staticRenderFns[t].call(this._renderProxy,null,this),"__static__"+t,!1),r}function _e(t,e,n){return be(t,"__once__"+e+(n?"_"+n:""),!0),t}function be(t,e,n){if(Array.isArray(t))for(var r=0;r<t.length;r++)t[r]&&"string"!=typeof t[r]&&we(t[r],e+"_"+r,n);else we(t,e,n)}function we(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function xe(t,e){if(e&&c(e)){var n,r=t.on=t.on?w({},t.on):{};for(n in e){var o=r[n],i=e[n];r[n]=o?[].concat(o,i):i}}return t}function $e(t,e,n,r){e=e||{$stable:!n};for(var o=0;o<t.length;o++){var i=t[o];Array.isArray(i)?$e(i,e,n):i&&(i.proxy&&(i.fn.proxy=!0),e[i.key]=i.fn)}return r&&(e.$key=r),e}function ke(t,e){for(var n=0;n<e.length;n+=2){var r=e[n];"string"==typeof r&&r&&(t[e[n]]=e[n+1])}return t}function Ce(t,e){return"string"==typeof t?e+t:t}function Oe(t){t._o=_e,t._n=N,t._s=e,t._l=pe,t._t=de,t._q=A,t._i=S,t._m=ge,t._f=he,t._k=me,t._b=ye,t._v=mt,t._e=vt,t._u=$e,t._g=xe,t._d=ke,t._p=Ce}function Ae(t,e,n,o,r){var i,a=this,s=r.options;p(o,"_uid")?(i=Object.create(o))._original=o:o=(i=o)._original;var r=O(s._compiled),c=!r;this.data=t,this.props=e,this.children=n,this.parent=o,this.listeners=t.on||d,this.injections=ce(s.inject,o),this.slots=function(){return a.$slots||fe(t.scopedSlots,a.$slots=le(n,o)),a.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return fe(t.scopedSlots,this.slots())}}),r&&(this.$options=s,this.$slots=this.slots(),this.$scopedSlots=fe(t.scopedSlots,this.$slots)),s._scopeId?this._c=function(t,e,n,r){r=Le(i,t,e,n,r,c);return r&&!Array.isArray(r)&&(r.fnScopeId=s._scopeId,r.fnContext=o),r}:this._c=function(t,e,n,r){return Le(i,t,e,n,r,c)}}function Se(t,e,n,r){t=yt(t);return t.fnContext=n,t.fnOptions=r,e.slot&&((t.data||(t.data={})).slot=e.slot),t}function Te(t,e){for(var n in e)t[m(n)]=e[n]}Oe(Ae.prototype);var je={init:function(t,e){var n,r,o;t.componentInstance&&!t.componentInstance._isDestroyed&&t.data.keepAlive?je.prepatch(t,t):(t.componentInstance=(r={_isComponent:!0,_parentVnode:n=t,parent:We},I(o=n.data.inlineTemplate)&&(r.render=o.render,r.staticRenderFns=o.staticRenderFns),new n.componentOptions.Ctor(r))).$mount(e?t.elm:void 0,e)},prepatch:function(t,e){var n=e.componentOptions;!function(t,e,n,r,o){var i=r.data.scopedSlots,a=t.$scopedSlots,a=!!(i&&!i.$stable||a!==d&&!a.$stable||i&&t.$scopedSlots.$key!==i.$key),i=!!(o||t.$options._renderChildren||a);if(t.$options._parentVnode=r,t.$vnode=r,t._vnode&&(t._vnode.parent=r),t.$options._renderChildren=o,t.$attrs=r.data.attrs||d,t.$listeners=n||d,e&&t.$options.props){xt(!1);for(var s=t._props,c=t.$options._propKeys||[],l=0;l<c.length;l++){var u=c[l],f=t.$options.props;s[u]=Nt(u,f,e,t)}xt(!0),t.$options.propsData=e}n=n||d;a=t.$options._parentListeners;t.$options._parentListeners=n,Ve(t,n,a),i&&(t.$slots=le(o,r.context),t.$forceUpdate())}(e.componentInstance=t.componentInstance,n.propsData,n.listeners,e,n.children)},insert:function(t){var e=t.context,n=t.componentInstance;n._isMounted||(n._isMounted=!0,Ke(n,"mounted")),t.data.keepAlive&&(e._isMounted?(n._inactive=!1,Ye.push(n)):Ge(n,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?function t(e,n){if(!(n&&(e._directInactive=!0,Je(e))||e._inactive)){e._inactive=!0;for(var r=0;r<e.$children.length;r++)t(e.$children[r]);Ke(e,"deactivated")}}(e,!0):e.$destroy())}},Ee=Object.keys(je);function Me(a,s,t,e,n){if(!P(a)){var r,o=t.$options._base;if(L(a)&&(a=o.extend(a)),"function"==typeof a){if(P(a.cid)&&void 0===(a=function(e,n){if(O(e.error)&&I(e.errorComp))return e.errorComp;if(I(e.resolved))return e.resolved;var t=De;if(t&&I(e.owners)&&-1===e.owners.indexOf(t)&&e.owners.push(t),O(e.loading)&&I(e.loadingComp))return e.loadingComp;if(t&&!I(e.owners)){var r=e.owners=[t],o=!0,i=null,a=null;t.$on("hook:destroyed",function(){return v(r,t)});var s=function(t){for(var e=0,n=r.length;e<n;e++)r[e].$forceUpdate();t&&(r.length=0,null!==i&&(clearTimeout(i),i=null),null!==a&&(clearTimeout(a),a=null))},c=D(function(t){e.resolved=Fe(t,n),o?r.length=0:s(!0)}),l=D(function(t){I(e.errorComp)&&(e.error=!0,s(!0))}),u=e(c,l);return L(u)&&(h(u)?P(e.resolved)&&u.then(c,l):h(u.component)&&(u.component.then(c,l),I(u.error)&&(e.errorComp=Fe(u.error,n)),I(u.loading)&&(e.loadingComp=Fe(u.loading,n),0===u.delay?e.loading=!0:i=setTimeout(function(){i=null,P(e.resolved)&&P(e.error)&&(e.loading=!0,s(!1))},u.delay||200)),I(u.timeout)&&(a=setTimeout(function(){a=null,P(e.resolved)&&l(null)},u.timeout)))),o=!1,e.loading?e.loadingComp:e.resolved}}(r=a,o)))return c=r,l=s,u=t,o=e,f=n,(p=vt()).asyncFactory=c,p.asyncMeta={data:l,context:u,children:o,tag:f},p;s=s||{},gn(a),I(s.model)&&function(t,e){var n=t.model&&t.model.prop||"value",r=t.model&&t.model.event||"input";(e.attrs||(e.attrs={}))[n]=e.model.value;t=e.on||(e.on={}),n=t[r],e=e.model.callback;I(n)?(Array.isArray(n)?-1===n.indexOf(e):n!==e)&&(t[r]=[e].concat(n)):t[r]=e}(a.options,s);f=function(){var t=a.options.props;if(!P(t)){var e={},n=s.attrs,r=s.props;if(I(n)||I(r))for(var o in t){var i=g(o);ie(e,r,o,i,!0)||ie(e,n,o,i,!1)}return e}}();if(O(a.options.functional))return function(t,e,n,r,o){var i=t.options,a={},s=i.props;if(I(s))for(var c in s)a[c]=Nt(c,s,e||d);else I(n.attrs)&&Te(a,n.attrs),I(n.props)&&Te(a,n.props);var l=new Ae(n,a,o,r,t),t=i.render.call(null,l._c,l);if(t instanceof dt)return Se(t,n,l.parent,i);if(Array.isArray(t)){for(var u=ae(t)||[],f=new Array(u.length),p=0;p<u.length;p++)f[p]=Se(u[p],n,l.parent,i);return f}}(a,f,s,t,e);p=s.on;s.on=s.nativeOn,O(a.options.abstract)&&(i=s.slot,s={},i&&(s.slot=i)),function(){for(var t=s.hook||(s.hook={}),e=0;e<Ee.length;e++){var n=Ee[e],r=t[n],o=je[n];r===o||r&&r._merged||(t[n]=r?function(n,r){function t(t,e){n(t,e),r(t,e)}return t._merged=!0,t}(o,r):o)}}();var i=a.options.name||n;return new dt("vue-component-"+a.cid+(i?"-"+i:""),s,void 0,void 0,void 0,t,{Ctor:a,propsData:f,listeners:p,tag:n,children:e},r)}}var c,l,u,f,p}var Pe=1,Ie=2;function Le(t,e,n,r,o,i){return(Array.isArray(n)||l(n))&&(o=r,r=n,n=void 0),O(i)&&(o=Ie),t=t,e=e,r=r,o=o,I(n=n)&&I(n.__ob__)?vt():(I(n)&&I(n.is)&&(e=n.is),e?(Array.isArray(r)&&"function"==typeof r[0]&&((n=n||{}).scopedSlots={default:r[0]},r.length=0),o===Ie?r=ae(r):o===Pe&&(r=function(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}(r)),r="string"==typeof e?(a=t.$vnode&&t.$vnode.ns||M.getTagNamespace(e),M.isReservedTag(e)?new dt(M.parsePlatformTagName(e),n,r,void 0,void 0,t):n&&n.pre||!I(s=Lt(t.$options,"components",e))?new dt(e,n,r,void 0,void 0,t):Me(s,n,t,r,e)):Me(e,n,t,r),Array.isArray(r)?r:I(r)?(I(a)&&function t(e,n,r){if(e.ns=n,"foreignObject"===e.tag&&(r=!(n=void 0)),I(e.children))for(var o=0,i=e.children.length;o<i;o++){var a=e.children[o];I(a.tag)&&(P(a.ns)||O(r)&&"svg"!==a.tag)&&t(a,n,r)}}(r,a),I(n)&&(L((n=n).style)&&te(n.style),L(n.class)&&te(n.class)),r):vt()):vt());var a,s}var Ne,De=null;function Fe(t,e){return(t.__esModule||it&&"Module"===t[Symbol.toStringTag])&&(t=t.default),L(t)?e.extend(t):t}function Re(t){return t.isComment&&t.asyncFactory}function ze(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];if(I(n)&&(I(n.componentOptions)||Re(n)))return n}}function He(t,e){Ne.$on(t,e)}function Ue(t,e){Ne.$off(t,e)}function Be(e,n){var r=Ne;return function t(){null!==n.apply(null,arguments)&&r.$off(e,t)}}function Ve(t,e,n){re(e,n||{},He,Ue,Be,Ne=t),Ne=void 0}var We=null;function qe(t){var e=We;return We=t,function(){We=e}}function Je(t){for(;t=t&&t.$parent;)if(t._inactive)return 1}function Ge(t,e){if(e){if(t._directInactive=!1,Je(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n<t.$children.length;n++)Ge(t.$children[n]);Ke(t,"activated")}}function Ke(t,e){ft();var n=t.$options[e],r=e+" hook";if(n)for(var o=0,i=n.length;o<i;o++)Ht(n[o],t,null,t,r);t._hasHookEvent&&t.$emit("hook:"+e),pt()}var Xe,Qe=[],Ye=[],Ze={},tn=!1,en=!1,nn=0,rn=0,on=Date.now;function an(){var t,e;for(rn=on(),en=!0,Qe.sort(function(t,e){return t.id-e.id}),nn=0;nn<Qe.length;nn++)(t=Qe[nn]).before&&t.before(),e=t.id,Ze[e]=null,t.run();var n=Ye.slice(),r=Qe.slice();nn=Qe.length=Ye.length=0,tn=en=!(Ze={}),function(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,Ge(t[e],!0)}(n),function(t){for(var e=t.length;e--;){var n=t[e],r=n.vm;r._watcher===n&&r._isMounted&&!r._isDestroyed&&Ke(r,"updated")}}(r),nt&&M.devtools&&nt.emit("flush")}function sn(t,e,n,r,o){this.vm=t,o&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++cn,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ot,this.newDepIds=new ot,this.expression="","function"==typeof e?this.getter=e:(this.getter=function(t){if(!H.test(t)){var n=t.split(".");return function(t){for(var e=0;e<n.length;e++){if(!t)return;t=t[n[e]]}return t}}}(e),this.getter||(this.getter=$)),this.value=this.lazy?void 0:this.get()}!B||J||(Xe=window.performance)&&"function"==typeof Xe.now&&on()>document.createEvent("Event").timeStamp&&(on=function(){return Xe.now()});var cn=0;sn.prototype.get=function(){var t;ft(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;zt(t,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&te(t),pt(),this.cleanupDeps()}return t},sn.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},sn.prototype.cleanupDeps=function(){for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},sn.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(t){var e=t.id;if(null==Ze[e]){if(Ze[e]=!0,en){for(var n=Qe.length-1;nn<n&&Qe[n].id>t.id;)n--;Qe.splice(n+1,0,t)}else Qe.push(t);tn||(tn=!0,Yt(an))}}(this)},sn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||L(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){zt(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},sn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},sn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},sn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||v(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var ln={enumerable:!0,configurable:!0,get:$,set:$};function un(t,e,n){ln.get=function(){return this[e][n]},ln.set=function(t){this[e][n]=t},Object.defineProperty(t,n,ln)}var fn={lazy:!0};function pn(t,e,n){var r=!et();"function"==typeof n?(ln.get=r?dn(e):hn(n),ln.set=$):(ln.get=n.get?r&&!1!==n.cache?dn(e):hn(n.get):$,ln.set=n.set||$),Object.defineProperty(t,e,ln)}function dn(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),lt.target&&t.depend(),t.value}}function hn(t){return function(){return t.call(this,this)}}function vn(t,e,n,r){return c(n)&&(n=(r=n).handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}var mn,yn=0;function gn(o){var t,e,n=o.options;return!o.super||(t=gn(o.super))!==o.superOptions&&(o.superOptions=t,(e=function(){var t,e,n=o.options,r=o.sealedOptions;for(e in n)n[e]!==r[e]&&((t=t||{})[e]=n[e]);return t}())&&w(o.extendOptions,e),(n=o.options=It(t,o.extendOptions)).name&&(n.components[n.name]=o)),n}function _n(t){this._init(t)}function bn(t){return t&&(t.Ctor.options.name||t.tag)}function wn(t,e){return Array.isArray(t)?-1<t.indexOf(e):"string"==typeof t?-1<t.split(",").indexOf(e):"[object RegExp]"===n.call(t)&&t.test(e)}function xn(t,e){var n,r=t.cache,o=t.keys,i=t._vnode;for(n in r){var a=r[n];!a||(a=bn(a.componentOptions))&&!e(a)&&$n(r,n,o,i)}}function $n(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,v(n,e)}_n.prototype._init=function(t){var e,n,r=this;r._uid=yn++,r._isVue=!0,t&&t._isComponent?function(t){var e=r.$options=Object.create(r.constructor.options),n=t._parentVnode;e.parent=t.parent;n=(e._parentVnode=n).componentOptions;e.propsData=n.propsData,e._parentListeners=n.listeners,e._renderChildren=n.children,e._componentTag=n.tag,t.render&&(e.render=t.render,e.staticRenderFns=t.staticRenderFns)}(t):r.$options=It(gn(r.constructor),t||{},r),function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}((r._renderProxy=r)._self=r),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Ve(t,e)}(r),function(o){o._vnode=null,o._staticTrees=null;var t=o.$options,e=o.$vnode=t._parentVnode,n=e&&e.context;o.$slots=le(t._renderChildren,n),o.$scopedSlots=d,o._c=function(t,e,n,r){return Le(o,t,e,n,r,!1)},o.$createElement=function(t,e,n,r){return Le(o,t,e,n,r,!0)};e=e&&e.data;Ct(o,"$attrs",e&&e.attrs||d,null,!0),Ct(o,"$listeners",t._parentListeners||d,null,!0)}(r),Ke(r,"beforeCreate"),(n=ce((e=r).$options.inject,e))&&(xt(!1),Object.keys(n).forEach(function(t){Ct(e,t,n[t])}),xt(!0)),function(t){t._watchers=[];var e=t.$options;e.props&&function(n,r){var t,o=n.$options.propsData||{},i=n._props={},a=n.$options._propKeys=[];for(t in n.$parent&&xt(!1),r)!function(t){a.push(t);var e=Nt(t,r,o,n);Ct(i,t,e),t in n||un(n,"_props",t)}(t);xt(!0)}(t,e.props),e.methods&&function(t,e){for(var n in t.$options.props,e)t[n]="function"!=typeof e[n]?$:_(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;c(e=t._data="function"==typeof e?function(t,e){ft();try{return t.call(e,e)}catch(t){return zt(t,e,"data()"),{}}finally{pt()}}(e,t):e||{})||(e={});for(var n,r=Object.keys(e),o=t.$options.props,i=(t.$options.methods,r.length);i--;){var a=r[i];o&&p(o,a)||36!==(n=(a+"").charCodeAt(0))&&95!==n&&un(t,"_data",a)}kt(e,!0)}(t):kt(t._data={},!0),e.computed&&function(t,e){var n,r=t._computedWatchers=Object.create(null),o=et();for(n in e){var i=e[n],a="function"==typeof i?i:i.get;o||(r[n]=new sn(t,a||$,$,fn)),n in t||pn(t,n,i)}}(t,e.computed),e.watch&&e.watch!==Y&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o<r.length;o++)vn(t,n,r[o]);else vn(t,n,r)}}(t,e.watch)}(r),(t=r.$options.provide)&&(r._provided="function"==typeof t?t.call(r):t),Ke(r,"created"),r.$options.el&&r.$mount(r.$options.el)},W=_n,Object.defineProperty(W.prototype,"$data",{get:function(){return this._data}}),Object.defineProperty(W.prototype,"$props",{get:function(){return this._props}}),W.prototype.$set=Ot,W.prototype.$delete=At,W.prototype.$watch=function(t,e,n){if(c(e))return vn(this,t,e,n);(n=n||{}).user=!0;var r=new sn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(t){zt(t,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}},mn=/^hook:/,(q=_n).prototype.$on=function(t,e){var n=this;if(Array.isArray(t))for(var r=0,o=t.length;r<o;r++)n.$on(t[r],e);else(n._events[t]||(n._events[t]=[])).push(e),mn.test(t)&&(n._hasHookEvent=!0);return n},q.prototype.$once=function(t,e){var n=this;function r(){n.$off(t,r),e.apply(n,arguments)}return r.fn=e,n.$on(t,r),n},q.prototype.$off=function(t,e){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(t)){for(var r=0,o=t.length;r<o;r++)n.$off(t[r],e);return n}var i,a=n._events[t];if(!a)return n;if(!e)return n._events[t]=null,n;for(var s=a.length;s--;)if((i=a[s])===e||i.fn===e){a.splice(s,1);break}return n},q.prototype.$emit=function(t){var e=this._events[t];if(e){e=1<e.length?b(e):e;for(var n=b(arguments,1),r='event handler for "'+t+'"',o=0,i=e.length;o<i;o++)Ht(e[o],this,n,this,r)}return this},(ht=_n).prototype._update=function(t,e){var n=this,r=n.$el,o=n._vnode,i=qe(n);n._vnode=t,n.$el=o?n.__patch__(o,t):n.__patch__(n.$el,t,e,!1),i(),r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},ht.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},ht.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){Ke(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||v(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),Ke(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null),t.$vnode&&(t.$vnode.parent=null)}},Oe((E=_n).prototype),E.prototype.$nextTick=function(t){return Yt(t,this)},E.prototype._render=function(){var t,e=this,n=e.$options,r=n.render,o=n._parentVnode;o&&(e.$scopedSlots=fe(o.data.scopedSlots,e.$slots,e.$scopedSlots)),e.$vnode=o;try{De=e,t=r.call(e._renderProxy,e.$createElement)}catch(n){zt(n,e,"render"),t=e._vnode}finally{De=null}return Array.isArray(t)&&1===t.length&&(t=t[0]),t instanceof dt||(t=vt()),t.parent=o,t};var kn,Cn,On=[String,RegExp,Array],W={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:On,exclude:On,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)$n(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",function(e){xn(t,function(t){return wn(e,t)})}),this.$watch("exclude",function(e){xn(t,function(t){return!wn(e,t)})})},render:function(){var t=this.$slots.default,e=ze(t),n=e&&e.componentOptions;if(n){var r=bn(n),o=this.include,i=this.exclude;if(o&&(!r||!wn(o,r))||i&&r&&wn(i,r))return e;i=this.cache,r=this.keys,n=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;i[n]?(e.componentInstance=i[n].componentInstance,v(r,n),r.push(n)):(i[n]=e,r.push(n),this.max&&r.length>parseInt(this.max)&&$n(i,r[0],r,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};function An(t,e,n){return"value"===n&&Sn(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t}kn=_n,q={get:function(){return M}},Object.defineProperty(kn,"config",q),kn.util={warn:st,extend:w,mergeOptions:It,defineReactive:Ct},kn.set=Ot,kn.delete=At,kn.nextTick=Yt,kn.observable=function(t){return kt(t),t},kn.options=Object.create(null),j.forEach(function(t){kn.options[t+"s"]=Object.create(null)}),w((kn.options._base=kn).options.components,W),kn.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(-1<e.indexOf(t))return this;var n=b(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this},kn.mixin=function(t){return this.options=It(this.options,t),this},function(t){t.cid=0;var a=1;t.extend=function(t){t=t||{};var e=this,n=e.cid,r=t._Ctor||(t._Ctor={});if(r[n])return r[n];function o(t){this._init(t)}var i=t.name||e.options.name;return((o.prototype=Object.create(e.prototype)).constructor=o).cid=a++,o.options=It(e.options,t),o.super=e,o.options.props&&function(t){for(var e in t.options.props)un(t.prototype,"_props",e)}(o),o.options.computed&&function(t){var e,n=t.options.computed;for(e in n)pn(t.prototype,e,n[e])}(o),o.extend=e.extend,o.mixin=e.mixin,o.use=e.use,j.forEach(function(t){o[t]=e[t]}),i&&(o.options.components[i]=o),o.superOptions=e.options,o.extendOptions=t,o.sealedOptions=w({},o.options),r[n]=o}}(kn),Cn=kn,j.forEach(function(n){Cn[n]=function(t,e){return e?("component"===n&&c(e)&&(e.name=e.name||t,e=this.options._base.extend(e)),"directive"===n&&"function"==typeof e&&(e={bind:e,update:e}),this.options[n+"s"][t]=e):this.options[n+"s"][t]}}),Object.defineProperty(_n.prototype,"$isServer",{get:et}),Object.defineProperty(_n.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(_n,"FunctionalRenderContext",{value:Ae}),_n.version="2.6.10";var ht=a("style,class"),Sn=a("input,textarea,option,select,progress"),Tn=a("contenteditable,draggable,spellcheck"),jn=a("events,caret,typing,plaintext-only"),En=function(t,e){return Nn(e)||"false"===e?"false":"contenteditable"===t&&jn(e)?e:"true"},Mn=a("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Pn="http://www.w3.org/1999/xlink",In=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Ln=function(t){return In(t)?t.slice(6,t.length):""},Nn=function(t){return null==t||!1===t};function Dn(t,e){return{staticClass:Fn(t.staticClass,e.staticClass),class:I(t.class)?[t.class,e.class]:e.class}}function Fn(t,e){return t?e?t+" "+e:t:e||""}function Rn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r<o;r++)I(e=Rn(t[r]))&&""!==e&&(n&&(n+=" "),n+=e);return n}(t):L(t)?function(t){var e,n="";for(e in t)t[e]&&(n&&(n+=" "),n+=e);return n}(t):"string"==typeof t?t:""}function zn(t){return Un(t)||Bn(t)}var Hn={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Un=a("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Bn=a("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0);function Vn(t){return Bn(t)?"svg":"math"===t?"math":void 0}var Wn=Object.create(null),qn=a("text,number,password,search,email,tel,url");function Jn(t){return"string"!=typeof t?t:document.querySelector(t)||document.createElement("div")}E=Object.freeze({createElement:function(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n},createElementNS:function(t,e){return document.createElementNS(Hn[t],e)},createTextNode:function(t){return document.createTextNode(t)},createComment:function(t){return document.createComment(t)},insertBefore:function(t,e,n){t.insertBefore(e,n)},removeChild:function(t,e){t.removeChild(e)},appendChild:function(t,e){t.appendChild(e)},parentNode:function(t){return t.parentNode},nextSibling:function(t){return t.nextSibling},tagName:function(t){return t.tagName},setTextContent:function(t,e){t.textContent=e},setStyleScope:function(t,e){t.setAttribute(e,"")}}),On={create:function(t,e){Gn(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Gn(t,!0),Gn(e))},destroy:function(t){Gn(t,!0)}};function Gn(t,e){var n,r,o=t.data.ref;I(o)&&(r=t.context,n=t.componentInstance||t.elm,r=r.$refs,e?Array.isArray(r[o])?v(r[o],n):r[o]===n&&(r[o]=void 0):t.data.refInFor?Array.isArray(r[o])?r[o].indexOf(n)<0&&r[o].push(n):r[o]=[n]:r[o]=n)}var Kn=new dt("",{},[]),Xn=["create","activate","update","remove","destroy"];function Qn(n,r){return n.key===r.key&&(n.tag===r.tag&&n.isComment===r.isComment&&I(n.data)===I(r.data)&&function(){if("input"!==n.tag)return 1;var t=I(e=n.data)&&I(e=e.attrs)&&e.type,e=I(e=r.data)&&I(e=e.attrs)&&e.type;return t===e||qn(t)&&qn(e)}()||O(n.isAsyncPlaceholder)&&n.asyncFactory===r.asyncFactory&&P(r.asyncFactory.error))}q={create:Yn,update:Yn,destroy:function(t){Yn(t,Kn)}};function Yn(t,e){(t.data.directives||e.data.directives)&&function(e,n){var t,r,o,i,a=e===Kn,s=n===Kn,c=tr(e.data.directives,e.context),l=tr(n.data.directives,n.context),u=[],f=[];for(t in l)r=c[t],o=l[t],r?(o.oldValue=r.value,o.oldArg=r.arg,er(o,"update",n,e),o.def&&o.def.componentUpdated&&f.push(o)):(er(o,"bind",n,e),o.def&&o.def.inserted&&u.push(o));if(u.length&&(i=function(){for(var t=0;t<u.length;t++)er(u[t],"inserted",n,e)},a?oe(n,"insert",i):i()),f.length&&oe(n,"postpatch",function(){for(var t=0;t<f.length;t++)er(f[t],"componentUpdated",n,e)}),!a)for(t in c)l[t]||er(c[t],"unbind",e,e,s)}(t,e)}var Zn=Object.create(null);function tr(t,e){var n,r,o=Object.create(null);if(!t)return o;for(n=0;n<t.length;n++)(r=t[n]).modifiers||(r.modifiers=Zn),(o[r.rawName||r.name+"."+Object.keys(r.modifiers||{}).join(".")]=r).def=Lt(e.$options,"directives",r.name);return o}function er(t,e,n,r,o){var i=t.def&&t.def[e];if(i)try{i(n.elm,t,n,r,o)}catch(r){zt(r,n.context,"directive "+t.name+" "+e+" hook")}}st=[On,q];function nr(t,e){var n=e.componentOptions;if(!(I(n)&&!1===n.Ctor.options.inheritAttrs||P(t.data.attrs)&&P(e.data.attrs))){var r,o,i=e.elm,a=t.data.attrs||{},s=e.data.attrs||{};for(r in I(s.__ob__)&&(s=e.data.attrs=w({},s)),s)o=s[r],a[r]!==o&&rr(i,r,o);for(r in(J||K)&&s.value!==a.value&&rr(i,"value",s.value),a)P(s[r])&&(In(r)?i.removeAttributeNS(Pn,Ln(r)):Tn(r)||i.removeAttribute(r))}}function rr(t,e,n){-1<t.tagName.indexOf("-")?or(t,e,n):Mn(e)?Nn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Tn(e)?t.setAttribute(e,En(e,n)):In(e)?Nn(n)?t.removeAttributeNS(Pn,Ln(e)):t.setAttributeNS(Pn,e,n):or(t,e,n)}function or(e,t,n){var r;Nn(n)?e.removeAttribute(t):(!J||G||"TEXTAREA"!==e.tagName||"placeholder"!==t||""===n||e.__ieph||(r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)},e.addEventListener("input",r),e.__ieph=!0),e.setAttribute(t,n))}W={create:nr,update:nr};function ir(t,i){var e=i.elm,n=i.data,t=t.data;P(n.staticClass)&&P(n.class)&&(P(t)||P(t.staticClass)&&P(t.class))||(n=function(){for(var t,e,n=i.data,r=i,o=i;I(o.componentInstance);)(o=o.componentInstance._vnode)&&o.data&&(n=Dn(o.data,n));for(;I(r=r.parent);)r&&r.data&&(n=Dn(n,r.data));return t=n.staticClass,e=n.class,I(t)||I(e)?Fn(t,Rn(e)):""}(),I(t=e._transitionClasses)&&(n=Fn(n,Rn(t))),n!==e._prevClass&&(e.setAttribute("class",n),e._prevClass=n))}var ar,sr,cr,lr,ur,fr,On={create:ir,update:ir},pr=/[\w).+\-_$\]]/;function dr(t){for(var e,n,r,o,i=!1,a=!1,s=!1,c=!1,l=0,u=0,f=0,p=0,d=0;d<t.length;d++)if(n=e,e=t.charCodeAt(d),i)39===e&&92!==n&&(i=!1);else if(a)34===e&&92!==n&&(a=!1);else if(s)96===e&&92!==n&&(s=!1);else if(c)47===e&&92!==n&&(c=!1);else if(124!==e||124===t.charCodeAt(d+1)||124===t.charCodeAt(d-1)||l||u||f){switch(e){case 34:a=!0;break;case 39:i=!0;break;case 96:s=!0;break;case 40:f++;break;case 41:f--;break;case 91:u++;break;case 93:u--;break;case 123:l++;break;case 125:l--}if(47===e){for(var h=d-1,v=void 0;0<=h&&" "===(v=t.charAt(h));h--);v&&pr.test(v)||(c=!0)}}else void 0===r?(p=d+1,r=t.slice(0,d).trim()):m();function m(){(o=o||[]).push(t.slice(p,d).trim()),p=d+1}if(void 0===r?r=t.slice(0,d).trim():0!==p&&m(),o)for(d=0;d<o.length;d++)r=function(t,e){var n=e.indexOf("(");if(n<0)return'_f("'+e+'")('+t+")";var r=e.slice(0,n),n=e.slice(n+1);return'_f("'+r+'")('+t+(")"!==n?","+n:n)}(r,o[d]);return r}function hr(t,e){console.error("[Vue compiler]: "+t)}function vr(t,e){return t?t.map(function(t){return t[e]}).filter(function(t){return t}):[]}function mr(t,e,n,r,o){(t.props||(t.props=[])).push(kr({name:e,value:n,dynamic:o},r)),t.plain=!1}function yr(t,e,n,r,o){(o?t.dynamicAttrs||(t.dynamicAttrs=[]):t.attrs||(t.attrs=[])).push(kr({name:e,value:n,dynamic:o},r)),t.plain=!1}function gr(t,e,n,r){t.attrsMap[e]=n,t.attrsList.push(kr({name:e,value:n},r))}function _r(t,e,n){return n?"_p("+e+',"'+t+'")':t+e}function br(t,e,n,r,o,i,a,s){var c;(r=r||d).right?s?e="("+e+")==='click'?'contextmenu':("+e+")":"click"===e&&(e="contextmenu",delete r.right):r.middle&&(s?e="("+e+")==='click'?'mouseup':("+e+")":"click"===e&&(e="mouseup")),r.capture&&(delete r.capture,e=_r("!",e,s)),r.once&&(delete r.once,e=_r("~",e,s)),r.passive&&(delete r.passive,e=_r("&",e,s)),c=r.native?(delete r.native,t.nativeEvents||(t.nativeEvents={})):t.events||(t.events={});a=kr({value:n.trim(),dynamic:s},a);r!==d&&(a.modifiers=r);r=c[e];Array.isArray(r)?o?r.unshift(a):r.push(a):c[e]=r?o?[a,r]:[r,a]:a,t.plain=!1}function wr(t,e,n){var r=xr(t,":"+e)||xr(t,"v-bind:"+e);if(null!=r)return dr(r);if(!1!==n){e=xr(t,e);if(null!=e)return JSON.stringify(e)}}function xr(t,e,n){var r;if(null!=(r=t.attrsMap[e]))for(var o=t.attrsList,i=0,a=o.length;i<a;i++)if(o[i].name===e){o.splice(i,1);break}return n&&delete t.attrsMap[e],r}function $r(t,e){for(var n=t.attrsList,r=0,o=n.length;r<o;r++){var i=n[r];if(e.test(i.name))return n.splice(r,1),i}}function kr(t,e){return e&&(null!=e.start&&(t.start=e.start),null!=e.end&&(t.end=e.end)),t}function Cr(t,e,n){var r=n||{},n=r.trim?"(typeof $$v === 'string'? $$v.trim(): $$v)":"$$v";r.number&&(n="_n("+n+")");n=Or(e,n);t.model={value:"("+e+")",expression:JSON.stringify(e),callback:"function ($$v) {"+n+"}"}}function Or(t,e){var n=function(t){if(t=t.trim(),ar=t.length,t.indexOf("[")<0||t.lastIndexOf("]")<ar-1)return-1<(lr=t.lastIndexOf("."))?{exp:t.slice(0,lr),key:'"'+t.slice(lr+1)+'"'}:{exp:t,key:null};for(sr=t,lr=ur=fr=0;!Sr();)Tr(cr=Ar())?jr(cr):91===cr&&function(t){var e=1;for(ur=lr;!Sr();)if(Tr(t=Ar()))jr(t);else if(91===t&&e++,93===t&&e--,0===e){fr=lr;break}}(cr);return{exp:t.slice(0,ur),key:t.slice(ur+1,fr)}}(t);return null===n.key?t+"="+e:"$set("+n.exp+", "+n.key+", "+e+")"}function Ar(){return sr.charCodeAt(++lr)}function Sr(){return ar<=lr}function Tr(t){return 34===t||39===t}function jr(t){for(var e=t;!Sr()&&(t=Ar())!==e;);}var Er;function Mr(e,n,r){var o=Er;return function t(){null!==n.apply(null,arguments)&&Lr(e,t,r,o)}}var Pr=Gt&&!(Q&&Number(Q[1])<=53);function Ir(t,e,n,r){var o,i;Pr&&(o=rn,e=(i=e)._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}),Er.addEventListener(t,e,Z?{capture:n,passive:r}:n)}function Lr(t,e,n,r){(r||Er).removeEventListener(t,e._wrapper||e,n)}function Nr(t,e){var n,r,o;P(t.data.on)&&P(e.data.on)||(n=e.data.on||{},r=t.data.on||{},Er=e.elm,I((o=n).__r)&&(o[t=J?"change":"input"]=[].concat(o.__r,o[t]||[]),delete o.__r),I(o.__c)&&(o.change=[].concat(o.__c,o.change||[]),delete o.__c),re(n,r,Ir,Lr,Mr,e.context),Er=void 0)}var Dr,q={create:Nr,update:Nr};function Fr(t,e){if(!P(t.data.domProps)||!P(e.data.domProps)){var n,r,o=e.elm,i=t.data.domProps||{},a=e.data.domProps||{};for(n in I(a.__ob__)&&(a=e.data.domProps=w({},a)),i)n in a||(o[n]="");for(n in a){if(r=a[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===i[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){var s=P(o._value=r)?"":String(r),c=s;(u=o).composing||"OPTION"!==u.tagName&&!function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(u,c)&&!function(t){var e=u.value,n=u._vModifiers;if(I(n)){if(n.number)return N(e)!==N(t);if(n.trim)return e.trim()!==t.trim()}return e!==t}(c)||(o.value=s)}else if("innerHTML"===n&&Bn(o.tagName)&&P(o.innerHTML)){(Dr=Dr||document.createElement("div")).innerHTML="<svg>"+r+"</svg>";for(var l=Dr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;l.firstChild;)o.appendChild(l.firstChild)}else if(r!==i[n])try{o[n]=r}catch(t){}}}var u,c}var Gt={create:Fr,update:Fr},Rr=t(function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach(function(t){!t||1<(t=t.split(n)).length&&(e[t[0].trim()]=t[1].trim())}),e});function zr(t){var e=Hr(t.style);return t.staticStyle?w(t.staticStyle,e):e}function Hr(t){return Array.isArray(t)?x(t):"string"==typeof t?Rr(t):t}function Ur(t,e,n){if(Vr.test(e))t.style.setProperty(e,n);else if(Wr.test(n))t.style.setProperty(g(e),n.replace(Wr,""),"important");else{var r=Jr(e);if(Array.isArray(n))for(var o=0,i=n.length;o<i;o++)t.style[r]=n[o];else t.style[r]=n}}var Br,Vr=/^--/,Wr=/\s*!important$/,qr=["Webkit","Moz","ms"],Jr=t(function(t){if(Br=Br||document.createElement("div").style,"filter"!==(t=m(t))&&t in Br)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<qr.length;n++){var r=qr[n]+e;if(r in Br)return r}});function Gr(t,e){var n=e.data,t=t.data;if(!(P(n.staticStyle)&&P(n.style)&&P(t.staticStyle)&&P(t.style))){var r,o,i=e.elm,n=t.staticStyle,t=t.normalizedStyle||t.style||{},a=n||t,t=Hr(e.data.style)||{};e.data.normalizedStyle=I(t.__ob__)?w({},t):t;var s=function(t){for(var e,n={},r=t;r.componentInstance;)(r=r.componentInstance._vnode)&&r.data&&(e=zr(r.data))&&w(n,e);(e=zr(t.data))&&w(n,e);for(var o=t;o=o.parent;)o.data&&(e=zr(o.data))&&w(n,e);return n}(e);for(o in a)P(s[o])&&Ur(i,o,"");for(o in s)(r=s[o])!==a[o]&&Ur(i,o,null==r?"":r)}}var Q={create:Gr,update:Gr},Kr=/\s+/;function Xr(e,t){var n;(t=t&&t.trim())&&(e.classList?-1<t.indexOf(" ")?t.split(Kr).forEach(function(t){return e.classList.add(t)}):e.classList.add(t):(n=" "+(e.getAttribute("class")||"")+" ").indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim()))}function Qr(e,t){if(t=t&&t.trim())if(e.classList)-1<t.indexOf(" ")?t.split(Kr).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";0<=n.indexOf(r);)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function Yr(t){if(t){if("object"!=typeof t)return"string"==typeof t?Zr(t):void 0;var e={};return!1!==t.css&&w(e,Zr(t.name||"v")),w(e,t),e}}var Zr=t(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),to=B&&!G,eo="transition",no="animation",ro="transition",oo="transitionend",io="animation",ao="animationend";to&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ro="WebkitTransition",oo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(io="WebkitAnimation",ao="webkitAnimationEnd"));var so=B?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function co(t){so(function(){so(t)})}function lo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Xr(t,e))}function uo(t,e){t._transitionClasses&&v(t._transitionClasses,e),Qr(t,e)}function fo(e,t,n){var r=ho(e,t),o=r.type,t=r.timeout,i=r.propCount;if(!o)return n();function a(){e.removeEventListener(s,l),n()}var s=o===eo?oo:ao,c=0,l=function(t){t.target===e&&++c>=i&&a()};setTimeout(function(){c<i&&a()},t+1),e.addEventListener(s,l)}var po=/\b(transform|all)(,|$)/;function ho(t,e){var n,r=window.getComputedStyle(t),o=(r[ro+"Delay"]||"").split(", "),i=(r[ro+"Duration"]||"").split(", "),a=vo(o,i),s=(r[io+"Delay"]||"").split(", "),c=(r[io+"Duration"]||"").split(", "),t=vo(s,c),o=0,s=0;return e===eo?0<a&&(n=eo,o=a,s=i.length):e===no?0<t&&(n=no,o=t,s=c.length):s=(n=0<(o=Math.max(a,t))?t<a?eo:no:null)?(n===eo?i:c).length:0,{type:n,timeout:o,propCount:s,hasTransform:n===eo&&po.test(r[ro+"Property"])}}function vo(n,t){for(;n.length<t.length;)n=n.concat(n);return Math.max.apply(null,t.map(function(t,e){return mo(t)+mo(n[e])}))}function mo(t){return 1e3*Number(t.slice(0,-1).replace(",","."))}function yo(e,t){var n=e.elm;I(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var r=Yr(e.data.transition);if(!P(r)&&!I(n._enterCb)&&1===n.nodeType){for(var o=r.css,i=r.type,a=r.enterClass,s=r.enterToClass,c=r.enterActiveClass,l=r.appearClass,u=r.appearToClass,f=r.appearActiveClass,p=r.beforeEnter,d=r.enter,h=r.afterEnter,v=r.enterCancelled,m=r.beforeAppear,y=r.appear,g=r.afterAppear,_=r.appearCancelled,b=r.duration,w=We,x=We.$vnode;x&&x.parent;)w=x.context,x=x.parent;var $,k,C,O,A,S,T,j,E,M,r=!w._isMounted||!e.isRootInsert;r&&!y&&""!==y||($=r&&l?l:a,k=r&&f?f:c,C=r&&u?u:s,p=r&&m||p,O=r&&"function"==typeof y?y:d,A=r&&g||h,S=r&&_||v,T=N(L(b)?b.enter:b),j=!1!==o&&!G,E=bo(O),M=n._enterCb=D(function(){j&&(uo(n,C),uo(n,k)),M.cancelled?(j&&uo(n,$),S&&S(n)):A&&A(n),n._enterCb=null}),e.data.show||oe(e,"insert",function(){var t=n.parentNode,t=t&&t._pending&&t._pending[e.key];t&&t.tag===e.tag&&t.elm._leaveCb&&t.elm._leaveCb(),O&&O(n,M)}),p&&p(n),j&&(lo(n,$),lo(n,k),co(function(){uo(n,$),M.cancelled||(lo(n,C),E||(_o(T)?setTimeout(M,T):fo(n,i,M)))})),e.data.show&&(t&&t(),O&&O(n,M)),j||E||M())}}function go(t,e){var n=t.elm;I(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var r,o,i,a,s,c,l,u,f,p,d,h,v,m,y=Yr(t.data.transition);if(P(y)||1!==n.nodeType)return e();function g(){m.cancelled||(!t.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[t.key]=t),c&&c(n),d&&(lo(n,i),lo(n,s),co(function(){uo(n,i),m.cancelled||(lo(n,a),h||(_o(v)?setTimeout(m,v):fo(n,o,m)))})),l&&l(n,m),d||h||m())}I(n._leaveCb)||(r=y.css,o=y.type,i=y.leaveClass,a=y.leaveToClass,s=y.leaveActiveClass,c=y.beforeLeave,l=y.leave,u=y.afterLeave,f=y.leaveCancelled,p=y.delayLeave,y=y.duration,d=!1!==r&&!G,h=bo(l),v=N(L(y)?y.leave:y),m=n._leaveCb=D(function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[t.key]=null),d&&(uo(n,a),uo(n,s)),m.cancelled?(d&&uo(n,i),f&&f(n)):(e(),u&&u(n)),n._leaveCb=null}),p?p(g):g())}function _o(t){return"number"==typeof t&&!isNaN(t)}function bo(t){if(P(t))return!1;var e=t.fns;return I(e)?bo(Array.isArray(e)?e[0]:e):1<(t._length||t.length)}function wo(t,e){!0!==e.data.show&&yo(e)}q=function(t){for(var e,h={},n=t.modules,g=t.nodeOps,r=0;r<Xn.length;++r)for(h[Xn[r]]=[],e=0;e<n.length;++e)I(n[e][Xn[r]])&&h[Xn[r]].push(n[e][Xn[r]]);function i(t){var e=g.parentNode(t);I(e)&&g.removeChild(e,t)}function _(t,e,n,r,o,i,a){I(t.elm)&&I(i)&&(t=i[a]=yt(t)),t.isRootInsert=!o,function(t,e,n,r){var o=t.data;if(I(o)){var i=I(t.componentInstance)&&o.keepAlive;return(I(o=o.hook)&&I(o=o.init)&&o(t,!1),I(t.componentInstance))?(d(t,e),s(n,t.elm,r),O(i)&&function(t,e,n,r){for(var o,i=t;i.componentInstance;)if(I(o=(i=i.componentInstance._vnode).data)&&I(o=o.transition)){for(o=0;o<h.activate.length;++o)h.activate[o](Kn,i);e.push(i);break}s(n,t.elm,r)}(t,e,n,r),1):void 0}}(t,e,n,r)||(i=t.data,a=t.children,I(o=t.tag)?(t.elm=t.ns?g.createElementNS(t.ns,o):g.createElement(o,t),c(t),v(t,a,e),I(i)&&m(t,e)):O(t.isComment)?t.elm=g.createComment(t.text):t.elm=g.createTextNode(t.text),s(n,t.elm,r))}function d(t,e){I(t.data.pendingInsert)&&(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,b(t)?(m(t,e),c(t)):(Gn(t),e.push(t))}function s(t,e,n){I(t)&&(I(n)?g.parentNode(n)===t&&g.insertBefore(t,e,n):g.appendChild(t,e))}function v(t,e,n){if(Array.isArray(e))for(var r=0;r<e.length;++r)_(e[r],n,t.elm,null,!0,e,r);else l(t.text)&&g.appendChild(t.elm,g.createTextNode(String(t.text)))}function b(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return I(t.tag)}function m(t,e){for(var n=0;n<h.create.length;++n)h.create[n](Kn,t);I(r=t.data.hook)&&(I(r.create)&&r.create(Kn,t),I(r.insert)&&e.push(t))}function c(t){var e;if(I(e=t.fnScopeId))g.setStyleScope(t.elm,e);else for(var n=t;n;)I(e=n.context)&&I(e=e.$options._scopeId)&&g.setStyleScope(t.elm,e),n=n.parent;I(e=We)&&e!==t.context&&e!==t.fnContext&&I(e=e.$options._scopeId)&&g.setStyleScope(t.elm,e)}function w(t,e,n,r,o,i){for(;r<=o;++r)_(n[r],i,t,e,!1,n,r)}function y(t){var e,n,r=t.data;if(I(r))for(I(e=r.hook)&&I(e=e.destroy)&&e(t),e=0;e<h.destroy.length;++e)h.destroy[e](t);if(I(e=t.children))for(n=0;n<t.children.length;++n)y(t.children[n])}function x(t,e,n,r){for(;n<=r;++n){var o=e[n];I(o)&&(I(o.tag)?(function t(e,n){if(I(n)||I(e.data)){var r,o=h.remove.length+1;for(I(n)?n.listeners+=o:n=function(t){function e(){0==--e.listeners&&i(t)}return e.listeners=o,e}(e.elm),I(r=e.componentInstance)&&I(r=r._vnode)&&I(r.data)&&t(r,n),r=0;r<h.remove.length;++r)h.remove[r](e,n);I(r=e.data.hook)&&I(r=r.remove)?r(e,n):n()}else i(e.elm)}(o),y(o)):i(o.elm))}}function $(t,e,n){if(O(n)&&I(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r<e.length;++r)e[r].data.hook.insert(e[r])}var k=a("attrs,class,staticClass,staticStyle,key");function C(t,e,n,r){var o,i=e.tag,a=e.data,s=e.children;if(r=r||a&&a.pre,e.elm=t,O(e.isComment)&&I(e.asyncFactory))return e.isAsyncPlaceholder=!0;if(I(a)&&(I(o=a.hook)&&I(o=o.init)&&o(e,!0),I(o=e.componentInstance)))return d(e,n),1;if(I(i)){if(I(s))if(t.hasChildNodes())if(I(o=a)&&I(o=o.domProps)&&I(o=o.innerHTML)){if(o!==t.innerHTML)return}else{for(var c=!0,l=t.firstChild,u=0;u<s.length;u++){if(!l||!C(l,s[u],n,r)){c=!1;break}l=l.nextSibling}if(!c||l)return}else v(e,s,n);if(I(a)){var f,p=!1;for(f in a)if(!k(f)){p=!0,m(e,n);break}!p&&a.class&&te(a.class)}}else t.data!==e.text&&(t.data=e.text);return 1}return function(t,e,n,r){if(!P(e)){var o=!1,i=[];if(P(t))o=!0,_(e,i);else{var a=I(t.nodeType);if(!a&&Qn(t,e))!function m(t,e,n,r,o,y){if(t!==e){I(e.elm)&&I(r)&&(e=r[o]=yt(e));var i=e.elm=t.elm;if(O(t.isAsyncPlaceholder))I(e.asyncFactory.resolved)?C(t.elm,e,n):e.isAsyncPlaceholder=!0;else if(O(e.isStatic)&&O(t.isStatic)&&e.key===t.key&&(O(e.isCloned)||O(e.isOnce)))e.componentInstance=t.componentInstance;else{var a,s=e.data;I(s)&&I(a=s.hook)&&I(a=a.prepatch)&&a(t,e);r=t.children,o=e.children;if(I(s)&&b(e)){for(a=0;a<h.update.length;++a)h.update[a](t,e);I(a=s.hook)&&I(a=a.update)&&a(t,e)}P(e.text)?I(r)&&I(o)?r!==o&&function(t,e,n,r){for(var o,i,a,s=0,c=0,l=e.length-1,u=e[0],f=e[l],p=n.length-1,d=n[0],h=n[p],v=!y;s<=l&&c<=p;)P(u)?u=e[++s]:P(f)?f=e[--l]:Qn(u,d)?(m(u,d,r,n,c),u=e[++s],d=n[++c]):Qn(f,h)?(m(f,h,r,n,p),f=e[--l],h=n[--p]):Qn(u,h)?(m(u,h,r,n,p),v&&g.insertBefore(t,u.elm,g.nextSibling(f.elm)),u=e[++s],h=n[--p]):(Qn(f,d)?(m(f,d,r,n,c),v&&g.insertBefore(t,f.elm,u.elm),f=e[--l]):(P(o)&&(o=function(t,e,n){for(var r,o={},i=e;i<=n;++i)I(r=t[i].key)&&(o[r]=i);return o}(e,s,l)),!P(i=I(d.key)?o[d.key]:function(t,e,n,r){for(var o=n;o<r;o++){var i=e[o];if(I(i)&&Qn(t,i))return o}}(d,e,s,l))&&Qn(a=e[i],d)?(m(a,d,r,n,c),e[i]=void 0,v&&g.insertBefore(t,a.elm,u.elm)):_(d,r,t,u.elm,!1,n,c)),d=n[++c]);l<s?w(t,P(n[p+1])?null:n[p+1].elm,n,c,p,r):p<c&&x(0,e,s,l)}(i,r,o,n):I(o)?(I(t.text)&&g.setTextContent(i,""),w(i,null,o,0,o.length-1,n)):I(r)?x(0,r,0,r.length-1):I(t.text)&&g.setTextContent(i,""):t.text!==e.text&&g.setTextContent(i,e.text),I(s)&&I(a=s.hook)&&I(a=a.postpatch)&&a(t,e)}}}(t,e,i,null,null,r);else{if(a){if(1===t.nodeType&&t.hasAttribute(T)&&(t.removeAttribute(T),n=!0),O(n)&&C(t,e,i))return $(e,i,!0),t;s=t,t=new dt(g.tagName(s).toLowerCase(),{},[],void 0,s)}var n=t.elm,s=g.parentNode(n);if(_(e,i,n._leaveCb?null:s,g.nextSibling(n)),I(e.parent))for(var c=e.parent,l=b(e);c;){for(var u=0;u<h.destroy.length;++u)h.destroy[u](c);if(c.elm=e.elm,l){for(var f=0;f<h.create.length;++f)h.create[f](Kn,c);var p=c.data.hook.insert;if(p.merged)for(var d=1;d<p.fns.length;d++)p.fns[d]()}else Gn(c);c=c.parent}I(s)?x(0,[t],0,0):I(t.tag)&&y(t)}}return $(e,i,o),e.elm}I(t)&&y(t)}}({nodeOps:E,modules:[W,On,q,Gt,Q,B?{create:wo,activate:wo,remove:function(t,e){!0!==t.data.show?go(t,e):e()}}:{}].concat(st)});G&&document.addEventListener("selectionchange",function(){var t=document.activeElement;t&&t.vmodel&&To(t,"input")});var xo={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?oe(n,"postpatch",function(){xo.componentUpdated(t,e,n)}):$o(t,e,n.context),t._vOptions=[].map.call(t.options,Oo)):"textarea"!==n.tag&&!qn(t.type)||(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Ao),t.addEventListener("compositionend",So),t.addEventListener("change",So),G&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){var r,o;"select"===n.tag&&($o(t,e,n.context),r=t._vOptions,(o=t._vOptions=[].map.call(t.options,Oo)).some(function(t,e){return!A(t,r[e])})&&(t.multiple?e.value.some(function(t){return Co(t,o)}):e.value!==e.oldValue&&Co(e.value,o))&&To(t,"change"))}};function $o(t,e){ko(t,e),(J||K)&&setTimeout(function(){ko(t,e)},0)}function ko(t,e){var n=e.value,r=t.multiple;if(!r||Array.isArray(n)){for(var o,i,a=0,s=t.options.length;a<s;a++)if(i=t.options[a],r)o=-1<S(n,Oo(i)),i.selected!==o&&(i.selected=o);else if(A(Oo(i),n))return t.selectedIndex!==a&&(t.selectedIndex=a),0;r||(t.selectedIndex=-1)}}function Co(e,t){return t.every(function(t){return!A(t,e)})}function Oo(t){return"_value"in t?t._value:t.value}function Ao(t){t.target.composing=!0}function So(t){t.target.composing&&(t.target.composing=!1,To(t.target,"input"))}function To(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function jo(t){return!t.componentInstance||t.data&&t.data.transition?t:jo(t.componentInstance._vnode)}Gt={model:xo,show:{bind:function(t,e,n){var r=e.value,e=(n=jo(n)).data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&e?(n.data.show=!0,yo(n,function(){t.style.display=o})):t.style.display=r?o:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=jo(n)).data&&n.data.transition?(n.data.show=!0,r?yo(n,function(){t.style.display=t.__vOriginalDisplay}):go(n,function(){t.style.display="none"})):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},Q={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Eo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Eo(ze(e.children)):t}function Mo(t){var e,n={},r=t.$options;for(e in r.propsData)n[e]=t[e];var o,i=r._parentListeners;for(o in i)n[m(o)]=i[o];return n}function Po(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function Io(t){return t.tag||Re(t)}function Lo(t){return"show"===t.name}st={name:"transition",props:Q,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Io)).length){var r=this.mode,o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return 1}(this.$vnode))return o;var i=Eo(o);if(!i)return o;if(this._leaving)return Po(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:!l(i.key)||0===String(i.key).indexOf(a)?i.key:a+i.key;var s=(i.data||(i.data={})).transition=Mo(this),n=this._vnode,a=Eo(n);if(i.data.directives&&i.data.directives.some(Lo)&&(i.data.show=!0),a&&a.data&&(a.key!==i.key||a.tag!==i.tag)&&!Re(a)&&(!a.componentInstance||!a.componentInstance._vnode.isComment)){a=a.data.transition=w({},s);if("out-in"===r)return this._leaving=!0,oe(a,"afterLeave",function(){e._leaving=!1,e.$forceUpdate()}),Po(t,o);if("in-out"===r){if(Re(i))return n;var c,n=function(){c()};oe(s,"afterEnter",n),oe(s,"enterCancelled",n),oe(a,"delayLeave",function(t){c=t})}}return o}}},Q=w({tag:String,moveClass:String},Q);function No(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Do(t){t.data.newPos=t.elm.getBoundingClientRect()}function Fo(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,n=e.top-n.top;(r||n)&&(t.data.moved=!0,(t=t.elm.style).transform=t.WebkitTransform="translate("+r+"px,"+n+"px)",t.transitionDuration="0s")}delete Q.mode;Q={Transition:st,TransitionGroup:{props:Q,beforeMount:function(){var r=this,o=this._update;this._update=function(t,e){var n=qe(r);r.__patch__(r._vnode,r.kept,!1,!0),r._vnode=r.kept,n(),o.call(r,t,e)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Mo(this),s=0;s<o.length;s++){var c=o[s];c.tag&&null!=c.key&&0!==String(c.key).indexOf("__vlist")&&(i.push(c),((n[c.key]=c).data||(c.data={})).transition=a)}if(r){for(var l=[],u=[],f=0;f<r.length;f++){var p=r[f];p.data.transition=a,p.data.pos=p.elm.getBoundingClientRect(),(n[p.key]?l:u).push(p)}this.kept=t(e,null,l),this.removed=u}return t(e,null,i)},updated:function(){var t=this.prevChildren,r=this.moveClass||(this.name||"v")+"-move";t.length&&this.hasMove(t[0].elm,r)&&(t.forEach(No),t.forEach(Do),t.forEach(Fo),this._reflow=document.body.offsetHeight,t.forEach(function(t){var n;t.data.moved&&(t=(n=t.elm).style,lo(n,r),t.transform=t.WebkitTransform=t.transitionDuration="",n.addEventListener(oo,n._moveCb=function t(e){e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener(oo,t),n._moveCb=null,uo(n,r))}))}))},methods:{hasMove:function(t,e){if(!to)return!1;if(this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach(function(t){Qr(n,t)}),Xr(n,e),n.style.display="none",this.$el.appendChild(n);e=ho(n);return this.$el.removeChild(n),this._hasMove=e.hasTransform}}}};function Ro(t,e){return t&&pi(t)&&"\n"===e[0]}_n.config.mustUseProp=An,_n.config.isReservedTag=zn,_n.config.isReservedAttr=ht,_n.config.getTagNamespace=Vn,_n.config.isUnknownElement=function(t){if(!B)return!0;if(zn(t))return!1;if(t=t.toLowerCase(),null!=Wn[t])return Wn[t];var e=document.createElement(t);return-1<t.indexOf("-")?Wn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Wn[t]=/HTMLUnknownElement/.test(e.toString())},w(_n.options.directives,Gt),w(_n.options.components,Q),_n.prototype.__patch__=B?q:$,_n.prototype.$mount=function(t,e){return n=this,t=t=t&&B?Jn(t):void 0,r=e,n.$el=t,n.$options.render||(n.$options.render=vt),Ke(n,"beforeMount"),t=function(){n._update(n._render(),r)},new sn(n,t,$,{before:function(){n._isMounted&&!n._isDestroyed&&Ke(n,"beforeUpdate")}},!0),r=!1,null==n.$vnode&&(n._isMounted=!0,Ke(n,"mounted")),n;var n,r},B&&setTimeout(function(){M.devtools&&nt&&nt.emit("init",_n)},0);var zo,Ho,Uo,Bo,Vo,Wo,qo,Jo,Go,Ko=/\{\{((?:.|\r?\n)+?)\}\}/g,Xo=/[-.*+?^${}()|[\]\/\\]/g,Qo=t(function(t){var e=t[0].replace(Xo,"\\$&"),t=t[1].replace(Xo,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+t,"g")}),ht={staticKeys:["staticClass"],transformNode:function(t,e){e.warn;e=xr(t,"class");e&&(t.staticClass=JSON.stringify(e));e=wr(t,"class",!1);e&&(t.classBinding=e)},genData:function(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}},Gt={staticKeys:["staticStyle"],transformNode:function(t,e){e.warn;e=xr(t,"style");e&&(t.staticStyle=JSON.stringify(Rr(e)));e=wr(t,"style",!1);e&&(t.styleBinding=e)},genData:function(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}},Q=a("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),q=a("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),Yo=a("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),Zo=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ti=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,F="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+F.source+"]*",F="((?:"+F+"\\:)?"+F+")",ei=new RegExp("^<"+F),ni=/^\s*(\/?)>/,ri=new RegExp("^<\\/"+F+"[^>]*>"),oi=/^<!DOCTYPE [^>]+>/i,ii=/^<!\--/,ai=/^<!\[/,si=a("script,style,textarea",!0),ci={},li={"&lt;":"<","&gt;":">","&quot;":'"',"&amp;":"&","&#10;":"\n","&#9;":"\t","&#39;":"'"},ui=/&(?:lt|gt|quot|amp|#39);/g,fi=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,pi=a("pre,textarea",!0),di=/^@|^v-on:/,hi=/^v-|^@|^:/,vi=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,mi=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,yi=/^\(|\)$/g,gi=/^\[.*\]$/,_i=/:(.*)$/,bi=/^:|^\.|^v-bind:/,wi=/\.[^.\]]+(?=[^\]]*$)/g,xi=/^v-slot(:|$)|^#/,$i=/[\r\n]/,ki=/\s+/g,Ci=t(function(t){return(zo=zo||document.createElement("div")).innerHTML=t,zo.textContent}),Oi="_empty_";function Ai(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:function(t){for(var e={},n=0,r=t.length;n<r;n++)e[t[n].name]=t[n].value;return e}(e),rawAttrsMap:{},parent:n,children:[]}}function Si(t,e){var n,r,o;(n=wr(o=t,"key"))&&(o.key=n),t.plain=!t.key&&!t.scopedSlots&&!t.attrsList.length,(o=wr(r=t,"ref"))&&(r.ref=o,r.refInFor=function(){for(var t=r;t;){if(void 0!==t.for)return!0;t=t.parent}return!1}()),function(t){"template"===t.tag?(a=xr(t,"scope"),t.slotScope=a||xr(t,"slot-scope")):(a=xr(t,"slot-scope"))&&(t.slotScope=a);var e,n,r,o,i,a=wr(t,"slot");a&&(t.slotTarget='""'===a?'"default"':a,t.slotTargetDynamic=!(!t.attrsMap[":slot"]&&!t.attrsMap["v-bind:slot"]),"template"===t.tag||t.slotScope||yr(t,"slot",a,(a="slot",t.rawAttrsMap[":"+a]||t.rawAttrsMap["v-bind:"+a]||t.rawAttrsMap[a]))),"template"===t.tag?(r=$r(t,xi))&&(n=(e=Ei(r)).name,o=e.dynamic,t.slotTarget=n,t.slotTargetDynamic=o,t.slotScope=r.value||Oi):(e=$r(t,xi))&&(n=t.scopedSlots||(t.scopedSlots={}),r=(o=Ei(e)).name,o=o.dynamic,(i=n[r]=Ai("template",[],t)).slotTarget=r,i.slotTargetDynamic=o,i.children=t.children.filter(function(t){if(!t.slotScope)return t.parent=i,!0}),i.slotScope=e.value||Oi,t.children=[],t.plain=!1)}(t),"slot"===t.tag&&(t.slotName=wr(t,"name")),(o=wr(n=t,"is"))&&(n.component=o),null!=xr(n,"inline-template")&&(n.inlineTemplate=!0);for(var i=0;i<Bo.length;i++)t=Bo[i](t,e)||t;return function(t){for(var e,n,r,o,i,a,s,c,l,u,f,p=t.attrsList,d=0,h=p.length;d<h;d++)e=s=p[d].name,n=p[d].value,hi.test(e)?(t.hasBindings=!0,(c=function(t){t=t.match(wi);if(t){var e={};return t.forEach(function(t){e[t.slice(1)]=!0}),e}}(e.replace(hi,"")))&&(e=e.replace(wi,"")),bi.test(e)?(e=e.replace(bi,""),n=dr(n),(f=gi.test(e))&&(e=e.slice(1,-1)),c&&(c.prop&&!f&&"innerHtml"===(e=m(e))&&(e="innerHTML"),c.camel&&!f&&(e=m(e)),c.sync&&(a=Or(n,"$event"),f?br(t,'"update:"+('+e+")",a,null,!1,0,p[d],!0):(br(t,"update:"+m(e),a,null,!1,0,p[d]),g(e)!==m(e)&&br(t,"update:"+g(e),a,null,!1,0,p[d])))),(c&&c.prop||!t.component&&Jo(t.tag,t.attrsMap.type,e)?mr:yr)(t,e,n,p[d],f)):di.test(e)?(e=e.replace(di,""),(f=gi.test(e))&&(e=e.slice(1,-1)),br(t,e,n,c,!1,0,p[d],f)):(f=!1,(u=(l=(e=e.replace(hi,"")).match(_i))&&l[1])&&(e=e.slice(0,-(u.length+1)),gi.test(u)&&(u=u.slice(1,-1),f=!0)),r=t,o=e,i=s,a=n,l=u,s=f,u=c,c=p[d],(r.directives||(r.directives=[])).push(kr({name:o,rawName:i,value:a,arg:l,isDynamicArg:s,modifiers:u},c)),r.plain=!1)):(yr(t,e,JSON.stringify(n),p[d]),!t.component&&"muted"===e&&Jo(t.tag,t.attrsMap.type,e)&&mr(t,e,"true",p[d]))}(t),t}function Ti(t){var r,e;!(r=xr(t,"v-for"))||(e=function(){var t=r.match(vi);if(t){var e={};e.for=t[2].trim();var n=t[1].trim().replace(yi,""),t=n.match(mi);return t?(e.alias=n.replace(mi,"").trim(),e.iterator1=t[1].trim(),t[2]&&(e.iterator2=t[2].trim())):e.alias=n,e}}())&&w(t,e)}function ji(t,e){t.ifConditions||(t.ifConditions=[]),t.ifConditions.push(e)}function Ei(t){var e=t.name.replace(xi,"");return e||"#"!==t.name[0]&&(e="default"),gi.test(e)?{name:e.slice(1,-1),dynamic:!0}:{name:'"'+e+'"',dynamic:!1}}var Mi=/^xmlns:NS\d+/,Pi=/^NS\d+:/;function Ii(t){return Ai(t.tag,t.attrsList.slice(),t.parent)}var Li,Ni,Gt=[ht,Gt,{preTransformNode:function(t,e){if("input"===t.tag){var n,r=t.attrsMap;if(r["v-model"]&&((r[":type"]||r["v-bind:type"])&&(n=wr(t,"type")),r.type||n||!r["v-bind"]||(n="("+r["v-bind"]+").type"),n)){var o=xr(t,"v-if",!0),i=o?"&&("+o+")":"",a=null!=xr(t,"v-else",!0),s=xr(t,"v-else-if",!0),c=Ii(t);Ti(c),gr(c,"type","checkbox"),Si(c,e),c.processed=!0,c.if="("+n+")==='checkbox'"+i,ji(c,{exp:c.if,block:c});r=Ii(t);xr(r,"v-for",!0),gr(r,"type","radio"),Si(r,e),ji(c,{exp:"("+n+")==='radio'"+i,block:r});t=Ii(t);return xr(t,"v-for",!0),gr(t,":type",n),Si(t,e),ji(c,{exp:o,block:t}),a?c.else=!0:s&&(c.elseif=s),c}}}}],Gt={expectHTML:!0,modules:Gt,directives:{model:function(t,e,n){var r,o,i,a,s,c=e.value,l=e.modifiers,u=t.tag,f=t.attrsMap.type;if(t.component)return Cr(t,c,l),!1;if("select"===u)br(t,"change",'var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(l&&l.number?"_n(val)":"val")+"});"+" "+Or(c,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),null,!0);else if("input"===u&&"checkbox"===f)r=t,o=c,i=l&&l.number,a=wr(r,"value")||"null",s=wr(r,"true-value")||"true",e=wr(r,"false-value")||"false",mr(r,"checked","Array.isArray("+o+")?_i("+o+","+a+")>-1"+("true"===s?":("+o+")":":_q("+o+","+s+")")),br(r,"change","var $$a="+o+",$$el=$event.target,$$c=$$el.checked?("+s+"):("+e+");if(Array.isArray($$a)){var $$v="+(i?"_n("+a+")":a)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Or(o,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Or(o,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Or(o,"$$c")+"}",null,!0);else if("input"===u&&"radio"===f)i=t,a=c,o=l&&l.number,f=wr(i,"value")||"null",mr(i,"checked","_q("+a+","+(f=o?"_n("+f+")":f)+")"),br(i,"change",Or(a,f),null,!0);else if("input"===u||"textarea"===u)!function(t,e){var n=t.attrsMap.type,r=l||{},o=r.lazy,i=r.number,a=r.trim,r=!o&&"range"!==n,o=o?"change":"range"===n?"__r":"input",n=a?"$event.target.value.trim()":"$event.target.value";i&&(n="_n("+n+")");n=Or(e,n);r&&(n="if($event.target.composing)return;"+n),mr(t,"value","("+e+")"),br(t,o,n,null,!0),(a||i)&&br(t,"blur","$forceUpdate()")}(t,c);else if(!M.isReservedTag(u))return Cr(t,c,l),!1;return!0},text:function(t,e){e.value&&mr(t,"textContent","_s("+e.value+")",e)},html:function(t,e){e.value&&mr(t,"innerHTML","_s("+e.value+")",e)}},isPreTag:function(t){return"pre"===t},isUnaryTag:Q,mustUseProp:An,canBeLeftOpenTag:q,isReservedTag:zn,getTagNamespace:Vn,staticKeys:Gt.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")},Di=t(function(t){return a("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))}),Fi=/^([\w$_]+|\([^)]*?\))\s*=>|^function\s*(?:[\w$]+)?\s*\(/,Ri=/\([^)]*?\);*$/,zi=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Hi={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Ui={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Bi=function(t){return"if("+t+")return null;"},Vi={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Bi("$event.target !== $event.currentTarget"),ctrl:Bi("!$event.ctrlKey"),shift:Bi("!$event.shiftKey"),alt:Bi("!$event.altKey"),meta:Bi("!$event.metaKey"),left:Bi("'button' in $event && $event.button !== 0"),middle:Bi("'button' in $event && $event.button !== 1"),right:Bi("'button' in $event && $event.button !== 2")};function Wi(t,e){var n,e=e?"nativeOn:":"on:",r="",o="";for(n in t){var i=function e(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map(function(t){return e(t)}).join(",")+"]";var n=zi.test(t.value),r=Fi.test(t.value),o=zi.test(t.value.replace(Ri,""));if(t.modifiers){var i,a,s="",c="",l=[];for(i in t.modifiers)Vi[i]?(c+=Vi[i],Hi[i]&&l.push(i)):"exact"===i?(a=t.modifiers,c+=Bi(["ctrl","shift","alt","meta"].filter(function(t){return!a[t]}).map(function(t){return"$event."+t+"Key"}).join("||"))):l.push(i);return l.length&&(s+="if(!$event.type.indexOf('key')&&"+l.map(qi).join("&&")+")return null;"),c&&(s+=c),"function($event){"+s+(n?"return "+t.value+"($event)":r?"return ("+t.value+")($event)":o?"return "+t.value:t.value)+"}"}return n||r?t.value:"function($event){"+(o?"return "+t.value:t.value)+"}"}(t[n]);t[n]&&t[n].dynamic?o+=n+","+i+",":r+='"'+n+'":'+i+","}return r="{"+r.slice(0,-1)+"}",o?e+"_d("+r+",["+o.slice(0,-1)+"])":e+r}function qi(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=Hi[t],e=Ui[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(e)+")"}var Ji={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(e,n){e.wrapData=function(t){return"_b("+t+",'"+e.tag+"',"+n.value+","+(n.modifiers&&n.modifiers.prop?"true":"false")+(n.modifiers&&n.modifiers.sync?",true":"")+")"}},cloak:$},Gi=function(t){this.options=t,this.warn=t.warn||hr,this.transforms=vr(t.modules,"transformCode"),this.dataGenFns=vr(t.modules,"genData"),this.directives=w(w({},Ji),t.directives);var e=t.isReservedTag||k;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Ki(t,e){e=new Gi(e);return{render:"with(this){return "+(t?Xi(t,e):'_c("div")')+"}",staticRenderFns:e.staticRenderFns}}function Xi(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return Qi(t,e);if(t.once&&!t.onceProcessed)return Yi(t,e);if(t.for&&!t.forProcessed)return ta(t,e);if(t.if&&!t.ifProcessed)return Zi(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return s="_t("+((l=t).slotName||'"default"')+((a=oa(l,e))?","+a:""),c=l.attrs||l.dynamicAttrs?sa((l.attrs||[]).concat(l.dynamicAttrs||[]).map(function(t){return{name:m(t.name),value:t.value,dynamic:t.dynamic}})):null,l=l.attrsMap["v-bind"],!c&&!l||a||(s+=",null"),c&&(s+=","+c),l&&(s+=(c?"":",null")+","+l),s+")";var n,r;r=t.component?(c=t.component,l=e,i=(s=t).inlineTemplate?null:oa(s,l,!0),"_c("+c+","+ea(s,l)+(i?","+i:"")+")"):((!t.plain||t.pre&&e.maybeComponent(t))&&(n=ea(t,e)),i=t.inlineTemplate?null:oa(t,e,!0),"_c('"+t.tag+"'"+(n?","+n:"")+(i?","+i:"")+")");for(var o=0;o<e.transforms.length;o++)r=e.transforms[o](t,r);return r}var i,a,s,c,l;return oa(t,e)||"void 0"}function Qi(t,e){t.staticProcessed=!0;var n=e.pre;return t.pre&&(e.pre=t.pre),e.staticRenderFns.push("with(this){return "+Xi(t,e)+"}"),e.pre=n,"_m("+(e.staticRenderFns.length-1)+(t.staticInFor?",true":"")+")"}function Yi(t,e){if(t.onceProcessed=!0,t.if&&!t.ifProcessed)return Zi(t,e);if(t.staticInFor){for(var n="",r=t.parent;r;){if(r.for){n=r.key;break}r=r.parent}return n?"_o("+Xi(t,e)+","+e.onceId+++","+n+")":Xi(t,e)}return Qi(t,e)}function Zi(t,e,n,r){return t.ifProcessed=!0,function t(e,n,r,o){if(!e.length)return o||"_e()";var i=e.shift();return i.exp?"("+i.exp+")?"+a(i.block)+":"+t(e,n,r,o):""+a(i.block);function a(t){return(r||(t.once?Yi:Xi))(t,n)}}(t.ifConditions.slice(),e,n,r)}function ta(t,e,n,r){var o=t.for,i=t.alias,a=t.iterator1?","+t.iterator1:"",s=t.iterator2?","+t.iterator2:"";return t.forProcessed=!0,(r||"_l")+"(("+o+"),function("+i+a+s+"){return "+(n||Xi)(t,e)+"})"}function ea(e,n){var t="{",r=function(t,e){var n=t.directives;if(n){for(var r,o,i="directives:[",a=!1,s=0,c=n.length;s<c;s++){r=n[s],o=!0;var l=e.directives[r.name];l&&(o=!!l(t,r,e.warn)),o&&(a=!0,i+='{name:"'+r.name+'",rawName:"'+r.rawName+'"'+(r.value?",value:("+r.value+"),expression:"+JSON.stringify(r.value):"")+(r.arg?",arg:"+(r.isDynamicArg?r.arg:'"'+r.arg+'"'):"")+(r.modifiers?",modifiers:"+JSON.stringify(r.modifiers):"")+"},")}return a?i.slice(0,-1)+"]":void 0}}(e,n);r&&(t+=r+","),e.key&&(t+="key:"+e.key+","),e.ref&&(t+="ref:"+e.ref+","),e.refInFor&&(t+="refInFor:true,"),e.pre&&(t+="pre:true,"),e.component&&(t+='tag:"'+e.tag+'",');for(var o,i=0;i<n.dataGenFns.length;i++)t+=n.dataGenFns[i](e);return e.attrs&&(t+="attrs:"+sa(e.attrs)+","),e.props&&(t+="domProps:"+sa(e.props)+","),e.events&&(t+=Wi(e.events,!1)+","),e.nativeEvents&&(t+=Wi(e.nativeEvents,!0)+","),e.slotTarget&&!e.slotScope&&(t+="slot:"+e.slotTarget+","),e.scopedSlots&&(t+=function(t,e,n){var r=t.for||Object.keys(e).some(function(t){t=e[t];return t.slotTargetDynamic||t.if||t.for||na(t)}),o=!!t.if;if(!r)for(var i=t.parent;i;){if(i.slotScope&&i.slotScope!==Oi||i.for){r=!0;break}i.if&&(o=!0),i=i.parent}t=Object.keys(e).map(function(t){return ra(e[t],n)}).join(",");return"scopedSlots:_u(["+t+"]"+(r?",null,true":"")+(!r&&o?",null,false,"+function(t){for(var e=5381,n=t.length;n;)e=33*e^t.charCodeAt(--n);return e>>>0}(t):"")+")"}(e,e.scopedSlots,n)+","),e.model&&(t+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate&&(o=function(){var t=e.children[0];if(t&&1===t.type){t=Ki(t,n.options);return"inlineTemplate:{render:function(){"+t.render+"},staticRenderFns:["+t.staticRenderFns.map(function(t){return"function(){"+t+"}"}).join(",")+"]}"}}())&&(t+=o+","),t=t.replace(/,$/,"")+"}",e.dynamicAttrs&&(t="_b("+t+',"'+e.tag+'",'+sa(e.dynamicAttrs)+")"),e.wrapData&&(t=e.wrapData(t)),e.wrapListeners&&(t=e.wrapListeners(t)),t}function na(t){return 1===t.type&&("slot"===t.tag||t.children.some(na))}function ra(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return Zi(t,e,ra,"null");if(t.for&&!t.forProcessed)return ta(t,e,ra);var r=t.slotScope===Oi?"":String(t.slotScope),e="function("+r+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+(oa(t,e)||"undefined")+":undefined":oa(t,e)||"undefined":Xi(t,e))+"}",r=r?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+e+r+"}"}function oa(t,e,n,r,o){var i=t.children;if(i.length){var a=i[0];if(1===i.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){t=n?e.maybeComponent(a)?",1":",0":"";return(r||Xi)(a,e)+t}var n=n?function(t,e){for(var n=0,r=0;r<t.length;r++){var o=t[r];if(1===o.type){if(ia(o)||o.ifConditions&&o.ifConditions.some(function(t){return ia(t.block)})){n=2;break}(e(o)||o.ifConditions&&o.ifConditions.some(function(t){return e(t.block)}))&&(n=1)}}return n}(i,e.maybeComponent):0,s=o||aa;return"["+i.map(function(t){return s(t,e)}).join(",")+"]"+(n?","+n:"")}}function ia(t){return void 0!==t.for||"template"===t.tag||"slot"===t.tag}function aa(t,e){return 1===t.type?Xi(t,e):3===t.type&&t.isComment?"_e("+JSON.stringify(t.text)+")":"_v("+(2===t.type?t.expression:ca(JSON.stringify(t.text)))+")"}function sa(t){for(var e="",n="",r=0;r<t.length;r++){var o=t[r],i=ca(o.value);o.dynamic?n+=o.name+","+i+",":e+='"'+o.name+'":'+i+","}return e="{"+e.slice(0,-1)+"}",n?"_d("+e+",["+n.slice(0,-1)+"])":e}function ca(t){return t.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function la(e,n){try{return new Function(e)}catch(t){return n.push({err:t,code:e}),$}}new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b");var ua,fa,pa,da,ha,va=(ua=function(t,e){var n,r=function(t,l){Ho=l.warn||hr,qo=l.isPreTag||k,Jo=l.mustUseProp||k,Go=l.getTagNamespace||k,l.isReservedTag,Bo=vr(l.modules,"transformNode"),Vo=vr(l.modules,"preTransformNode"),Wo=vr(l.modules,"postTransformNode"),Uo=l.delimiters;var u,f,p=[],a=!1!==l.preserveWhitespace,s=l.whitespace,d=!1,h=!1;function v(t){var e,n;o(t),d||t.processed||(t=Si(t,l)),p.length||t===u||u.if&&(t.elseif||t.else)&&ji(u,{exp:t.elseif,block:t}),f&&!t.forbidden&&(t.elseif||t.else?(e=t,(n=function(t){for(var e=t.length;e--;){if(1===t[e].type)return t[e];t.pop()}}(f.children))&&n.if&&ji(n,{exp:e.elseif,block:e})):(t.slotScope&&(e=t.slotTarget||'"default"',(f.scopedSlots||(f.scopedSlots={}))[e]=t),f.children.push(t),t.parent=f)),t.children=t.children.filter(function(t){return!t.slotScope}),o(t),t.pre&&(d=!1),qo(t.tag)&&(h=!1);for(var r=0;r<Wo.length;r++)Wo[r](t,l)}function o(t){if(!h)for(var e;(e=t.children[t.children.length-1])&&3===e.type&&" "===e.text;)t.children.pop()}return function(o,l){for(var t,u,f=[],p=l.expectHTML,d=l.isUnaryTag||k,h=l.canBeLeftOpenTag||k,a=0;o;){if(t=o,u&&si(u)){var r=0,i=u.toLowerCase(),e=ci[i]||(ci[i]=new RegExp("([\\s\\S]*?)(</"+i+"[^>]*>)","i")),e=o.replace(e,function(t,e,n){return r=n.length,si(i)||"noscript"===i||(e=e.replace(/<!\--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),Ro(i,e)&&(e=e.slice(1)),l.chars&&l.chars(e),""});a+=o.length-e.length,o=e,g(i,a-r,a)}else{var n=o.indexOf("<");if(0===n){if(ii.test(o)){e=o.indexOf("--\x3e");if(0<=e){l.shouldKeepComment&&l.comment(o.substring(4,e),a,a+e+3),y(e+3);continue}}if(ai.test(o)){var s=o.indexOf("]>");if(0<=s){y(s+2);continue}}s=o.match(oi);if(s){y(s[0].length);continue}s=o.match(ri);if(s){var c=a;y(s[0].length),g(s[1],c,a);continue}c=function(){var t=o.match(ei);if(t){var e,n,r={tagName:t[1],attrs:[],start:a};for(y(t[0].length);!(e=o.match(ni))&&(n=o.match(ti)||o.match(Zo));)n.start=a,y(n[0].length),n.end=a,r.attrs.push(n);if(e)return r.unarySlash=e[1],y(e[0].length),r.end=a,r}}();if(c){(function(t){var e=t.tagName,n=t.unarySlash;p&&("p"===u&&Yo(e)&&g(u),h(e)&&u===e&&g(e));for(var n=d(e)||!!n,r=t.attrs.length,o=new Array(r),i=0;i<r;i++){var a=t.attrs[i],s=a[3]||a[4]||a[5]||"",c="a"===e&&"href"===a[1]?l.shouldDecodeNewlinesForHref:l.shouldDecodeNewlines;o[i]={name:a[1],value:(c=c?fi:ui,s.replace(c,function(t){return li[t]}))}}n||(f.push({tag:e,lowerCasedTag:e.toLowerCase(),attrs:o,start:t.start,end:t.end}),u=e),l.start&&l.start(e,o,n,t.start,t.end)})(c),Ro(c.tagName,o)&&y(1);continue}}var c=void 0,v=void 0,m=void 0;if(0<=n){for(v=o.slice(n);!(ri.test(v)||ei.test(v)||ii.test(v)||ai.test(v)||(m=v.indexOf("<",1))<0);)n+=m,v=o.slice(n);c=o.substring(0,n)}n<0&&(c=o),c&&y(c.length),l.chars&&c&&l.chars(c,a-c.length,a)}if(o===t){l.chars&&l.chars(o);break}}function y(t){a+=t,o=o.substring(t)}function g(t,e,n){var r,o;if(null==e&&(e=a),null==n&&(n=a),t)for(o=t.toLowerCase(),r=f.length-1;0<=r&&f[r].lowerCasedTag!==o;r--);else r=0;if(0<=r){for(var i=f.length-1;r<=i;i--)l.end&&l.end(f[i].tag,e,n);f.length=r,u=r&&f[r-1].tag}else"br"===o?l.start&&l.start(t,[],!0,e,n):"p"===o&&(l.start&&l.start(t,[],!1,e,n),l.end&&l.end(t,e,n))}g()}(t,{warn:Ho,expectHTML:l.expectHTML,isUnaryTag:l.isUnaryTag,canBeLeftOpenTag:l.canBeLeftOpenTag,shouldDecodeNewlines:l.shouldDecodeNewlines,shouldDecodeNewlinesForHref:l.shouldDecodeNewlinesForHref,shouldKeepComment:l.comments,outputSourceRange:l.outputSourceRange,start:function(t,e,n,r,o){var i=f&&f.ns||Go(t);J&&"svg"===i&&(e=function(t){for(var e=[],n=0;n<t.length;n++){var r=t[n];Mi.test(r.name)||(r.name=r.name.replace(Pi,""),e.push(r))}return e}(e));var a=Ai(t,e,f);i&&(a.ns=i),"style"!==a.tag&&("script"!==a.tag||a.attrsMap.type&&"text/javascript"!==a.attrsMap.type)||et()||(a.forbidden=!0);for(var s,c=0;c<Vo.length;c++)a=Vo[c](a,l)||a;d||(null!=xr(s=a,"v-pre")&&(s.pre=!0),a.pre&&(d=!0)),qo(a.tag)&&(h=!0),d?function(t){var e=t.attrsList,n=e.length;if(n)for(var r=t.attrs=new Array(n),o=0;o<n;o++)r[o]={name:e[o].name,value:JSON.stringify(e[o].value)},null!=e[o].start&&(r[o].start=e[o].start,r[o].end=e[o].end);else t.pre||(t.plain=!0)}(a):a.processed||(Ti(a),(s=xr(i=a,"v-if"))?(i.if=s,ji(i,{exp:s,block:i})):(null!=xr(i,"v-else")&&(i.else=!0),(s=xr(i,"v-else-if"))&&(i.elseif=s)),null!=xr(s=a,"v-once")&&(s.once=!0)),u=u||a,n?v(a):(f=a,p.push(a))},end:function(t,e,n){var r=p[p.length-1];--p.length,f=p[p.length-1],v(r)},chars:function(t,e,n){var r,o,i;!f||J&&"textarea"===f.tag&&f.attrsMap.placeholder===t||(i=f.children,(t=h||t.trim()?"script"===f.tag||"style"===f.tag?t:Ci(t):i.length?s?"condense"===s&&$i.test(t)?"":" ":a?" ":"":"")&&(h||"condense"!==s||(t=t.replace(ki," ")),!d&&" "!==t&&(r=function(t){var e=Uo?Qo(Uo):Ko;if(e.test(t)){for(var n,r,o,i=[],a=[],s=e.lastIndex=0;n=e.exec(t);){(r=n.index)>s&&(a.push(o=t.slice(s,r)),i.push(JSON.stringify(o)));var c=dr(n[1].trim());i.push("_s("+c+")"),a.push({"@binding":c}),s=r+n[0].length}return s<t.length&&(a.push(o=t.slice(s)),i.push(JSON.stringify(o))),{expression:i.join("+"),tokens:a}}}(t))?o={type:2,expression:r.expression,tokens:r.tokens,text:t}:" "===t&&i.length&&" "===i[i.length-1].text||(o={type:3,text:t}),o&&i.push(o)))},comment:function(t,e,n){f&&(t={type:3,text:t,isComment:!0},f.children.push(t))}}),u}(t.trim(),e);!1!==e.optimize&&(n=e,(t=r)&&(Li=Di(n.staticKeys||""),Ni=n.isReservedTag||k,function t(e){var n;if(e.static=2!==(n=e).type&&(3===n.type||!(!n.pre&&(n.hasBindings||n.if||n.for||u(n.tag)||!Ni(n.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return;if(t.for)return 1}}(n)||!Object.keys(n).every(Li)))),1===e.type&&(Ni(e.tag)||"slot"===e.tag||null!=e.attrsMap["inline-template"])){for(var r=0,o=e.children.length;r<o;r++){var i=e.children[r];t(i),i.static||(e.static=!1)}if(e.ifConditions)for(var a=1,s=e.ifConditions.length;a<s;a++){var c=e.ifConditions[a].block;t(c),c.static||(e.static=!1)}}}(t),function t(e,n){if(1===e.type){if((e.static||e.once)&&(e.staticInFor=n),e.static&&e.children.length&&(1!==e.children.length||3!==e.children[0].type))return e.staticRoot=!0,0;if(e.staticRoot=!1,e.children)for(var r=0,o=e.children.length;r<o;r++)t(e.children[r],n||!!e.for);if(e.ifConditions)for(var i=1,a=e.ifConditions.length;i<a;i++)t(e.ifConditions[i].block,n)}}(t,!1)));e=Ki(r,e);return{ast:r,render:e.render,staticRenderFns:e.staticRenderFns}},ha=Gt,pa=ma,da=Object.create(null),function(t,e,n){(e=w({},e)).warn,delete e.warn;var r=e.delimiters?String(e.delimiters)+t:t;if(da[r])return da[r];var t=pa(t,e),e={},o=[];return e.render=la(t.render,o),e.staticRenderFns=t.staticRenderFns.map(function(t){return la(t,o)}),da[r]=e});function ma(t,e){var n=Object.create(ha),r=[],o=[];if(e)for(var i in e.modules&&(n.modules=(ha.modules||[]).concat(e.modules)),e.directives&&(n.directives=w(Object.create(ha.directives||null),e.directives)),e)"modules"!==i&&"directives"!==i&&(n[i]=e[i]);n.warn=function(t,e,n){(n?o:r).push(t)};t=ua(t.trim(),n);return t.errors=r,t.tips=o,t}function ya(t){return(fa=fa||document.createElement("div")).innerHTML=t?'<a href="\n"/>':'<div a="\n"/>',0<fa.innerHTML.indexOf("&#10;")}var ga=!!B&&ya(!1),_a=!!B&&ya(!0),ba=t(function(t){t=Jn(t);return t&&t.innerHTML}),wa=_n.prototype.$mount;return _n.prototype.$mount=function(t,e){if((t=t&&Jn(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r,o=n.template;if(o)if("string"==typeof o)"#"===o.charAt(0)&&(o=ba(o));else{if(!o.nodeType)return this;o=o.innerHTML}else t&&(o=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));o&&(o=(r=va(o,{outputSourceRange:!1,shouldDecodeNewlines:ga,shouldDecodeNewlinesForHref:_a,delimiters:n.delimiters,comments:n.comments},this)).render,r=r.staticRenderFns,n.render=o,n.staticRenderFns=r)}return wa.call(this,t,e)},_n.compile=va,_n}),function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Vuex=e()}(this,function(){"use strict";var l="undefined"!=typeof window&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function s(e,n){Object.keys(e).forEach(function(t){return n(e[t],t)})}function u(t,e){if(!t)throw new Error("[vuex] "+e)}function i(t,e){this.runtime=e,this._children=Object.create(null),t=(this._rawModule=t).state,this.state=("function"==typeof t?t():t)||{}}var t={namespaced:{configurable:!0}};t.namespaced.get=function(){return!!this._rawModule.namespaced},i.prototype.addChild=function(t,e){this._children[t]=e},i.prototype.removeChild=function(t){delete this._children[t]},i.prototype.getChild=function(t){return this._children[t]},i.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},i.prototype.forEachChild=function(t){s(this._children,t)},i.prototype.forEachGetter=function(t){this._rawModule.getters&&s(this._rawModule.getters,t)},i.prototype.forEachAction=function(t){this._rawModule.actions&&s(this._rawModule.actions,t)},i.prototype.forEachMutation=function(t){this._rawModule.mutations&&s(this._rawModule.mutations,t)},Object.defineProperties(i.prototype,t);function f(t){this.register([],t,!1)}f.prototype.get=function(t){return t.reduce(function(t,e){return t.getChild(e)},this.root)},f.prototype.getNamespace=function(t){var n=this.root;return t.reduce(function(t,e){return t+((n=n.getChild(e)).namespaced?e+"/":"")},"")},f.prototype.update=function(t){!function t(e,n,r){c(e,r);n.update(r);if(r.modules)for(var o in r.modules){if(!n.getChild(o))return void console.warn("[vuex] trying to add a new module '"+o+"' on hot reloading, manual reload is needed");t(e.concat(o),n.getChild(o),r.modules[o])}}([],this.root,t)},f.prototype.register=function(n,t,r){var o=this;void 0===r&&(r=!0),c(n,t);var e=new i(t,r);0===n.length?this.root=e:this.get(n.slice(0,-1)).addChild(n[n.length-1],e),t.modules&&s(t.modules,function(t,e){o.register(n.concat(e),t,r)})},f.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),t=t[t.length-1];e.getChild(t).runtime&&e.removeChild(t)};var h,e={assert:function(t){return"function"==typeof t},expected:"function"},a={getters:e,mutations:e,actions:{assert:function(t){return"function"==typeof t||"object"==typeof t&&"function"==typeof t.handler},expected:'function or object with "handler" function'}};function c(o,t){Object.keys(a).forEach(function(n){var r;t[n]&&(r=a[n],s(t[n],function(t,e){u(r.assert(t),function(t,e,n,r,o){n=e+" should be "+o+' but "'+e+"."+n+'"';0<t.length&&(n+=' in module "'+t.join(".")+'"');return n+=" is "+JSON.stringify(r)+"."}(o,n,e,t,r.expected))}))})}t=function t(e){var n=this;void 0===e&&(e={}),!h&&"undefined"!=typeof window&&window.Vue&&d(window.Vue),u(h,"must call Vue.use(Vuex) before creating a store instance."),u("undefined"!=typeof Promise,"vuex requires a Promise polyfill in this browser."),u(this instanceof t,"store must be called with the new operator.");var r=e.plugins;void 0===r&&(r=[]);var o=e.strict;void 0===o&&(o=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new f(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new h;var i=this,a=this.dispatch,s=this.commit;this.dispatch=function(t,e){return a.call(i,t,e)},this.commit=function(t,e,n){return s.call(i,t,e,n)},this.strict=o;var c,o=this._modules.root.state;v(this,o,[],this._modules.root),p(this,o),r.forEach(function(t){return t(n)}),(void 0!==e.devtools?e:h.config).devtools&&(c=this,l&&((c._devtoolHook=l).emit("vuex:init",c),l.on("vuex:travel-to-state",function(t){c.replaceState(t)}),c.subscribe(function(t,e){l.emit("vuex:mutation",t,e)})))},e={state:{configurable:!0}};function n(e,n){return n.indexOf(e)<0&&n.push(e),function(){var t=n.indexOf(e);-1<t&&n.splice(t,1)}}function r(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;v(t,n,[],t._modules.root,!0),p(t,n,e)}function p(n,t,e){var r=n._vm;n.getters={};var o=n._wrappedGetters,i={};s(o,function(t,e){i[e]=function(){return t(n)},Object.defineProperty(n.getters,e,{get:function(){return n._vm[e]},enumerable:!0})});var a,o=h.config.silent;h.config.silent=!0,n._vm=new h({data:{$$state:t},computed:i}),h.config.silent=o,n.strict&&(a=n)._vm.$watch(function(){return this._data.$$state},function(){u(a._committing,"do not mutate vuex store state outside mutation handlers.")},{deep:!0,sync:!0}),r&&(e&&n._withCommit(function(){r._data.$$state=null}),h.nextTick(function(){return r.$destroy()}))}function v(i,n,r,t,o){var e,a,s=!r.length,c=i._modules.getNamespace(r);t.namespaced&&(i._modulesNamespaceMap[c]=t),s||o||(e=m(n,r.slice(0,-1)),a=r[r.length-1],i._withCommit(function(){h.set(e,a,t.state)}));var l,u,f,p,d=t.context=(l=i,f=r,s={dispatch:(p=""===(u=c))?l.dispatch:function(t,e,n){var r=y(t,e,n),t=r.payload,e=r.options,n=r.type;if(e&&e.root||(n=u+n,l._actions[n]))return l.dispatch(n,t);console.error("[vuex] unknown local action type: "+r.type+", global type: "+n)},commit:p?l.commit:function(t,e,n){var r=y(t,e,n),t=r.payload,e=r.options,n=r.type;e&&e.root||(n=u+n,l._mutations[n])?l.commit(n,t,e):console.error("[vuex] unknown local mutation type: "+r.type+", global type: "+n)}},Object.defineProperties(s,{getters:{get:p?function(){return l.getters}:function(){return n=l,o={},i=(r=u).length,Object.keys(n.getters).forEach(function(t){var e;t.slice(0,i)===r&&(e=t.slice(i),Object.defineProperty(o,e,{get:function(){return n.getters[t]},enumerable:!0}))}),o;var n,r,o,i}},state:{get:function(){return m(l.state,f)}}}),s);t.forEachMutation(function(t,e){var n,r,o;e=c+e,r=t,o=d,((n=i)._mutations[e]||(n._mutations[e]=[])).push(function(t){r.call(n,o.state,t)})}),t.forEachAction(function(t,e){var n,r,o,e=t.root?e:c+e,t=t.handler||t;e=e,r=t,o=d,((n=i)._actions[e]||(n._actions[e]=[])).push(function(t,e){t=r.call(n,{dispatch:o.dispatch,commit:o.commit,getters:o.getters,state:o.state,rootGetters:n.getters,rootState:n.state},t,e);return(e=t)&&"function"==typeof e.then||(t=Promise.resolve(t)),n._devtoolHook?t.catch(function(t){throw n._devtoolHook.emit("vuex:error",t),t}):t})}),t.forEachGetter(function(t,e){!function(t,e,n,r){if(t._wrappedGetters[e])return console.error("[vuex] duplicate getter key: "+e);t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)}}(i,c+e,t,d)}),t.forEachChild(function(t,e){v(i,n,r.concat(e),t,o)})}function m(t,e){return e.length?e.reduce(function(t,e){return t[e]},t):t}function y(t,e,n){var r;return null!==(r=t)&&"object"==typeof r&&t.type&&(n=e,t=(e=t).type),u("string"==typeof t,"expects string as the type, but found "+typeof t+"."),{type:t,payload:e,options:n}}function d(t){var e;function n(){var t=this.$options;t.store?this.$store="function"==typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}h&&t===h?console.error("[vuex] already installed. Vue.use(Vuex) should be called only once."):(t=h=t,2<=Number(t.version.split(".")[0])?t.mixin({beforeCreate:n}):(e=t.prototype._init,t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[n].concat(t.init):n,e.call(this,t)}))}e.state.get=function(){return this._vm._data.$$state},e.state.set=function(t){u(!1,"use store.replaceState() to explicit replace store state.")},t.prototype.commit=function(t,e,n){var r=this,e=y(t,e,n),n=e.type,o=e.payload,e=e.options,i={type:n,payload:o},a=this._mutations[n];a?(this._withCommit(function(){a.forEach(function(t){t(o)})}),this._subscribers.forEach(function(t){return t(i,r.state)}),e&&e.silent&&console.warn("[vuex] mutation type: "+n+". Silent option has been removed. Use the filter functionality in the vue-devtools")):console.error("[vuex] unknown mutation type: "+n)},t.prototype.dispatch=function(t,e){var n=this,t=y(t,e),e=t.type,r=t.payload,o={type:e,payload:r},t=this._actions[e];if(t){try{this._actionSubscribers.filter(function(t){return t.before}).forEach(function(t){return t.before(o,n.state)})}catch(t){console.warn("[vuex] error in before action subscribers: "),console.error(t)}return(1<t.length?Promise.all(t.map(function(t){return t(r)})):t[0](r)).then(function(t){try{n._actionSubscribers.filter(function(t){return t.after}).forEach(function(t){return t.after(o,n.state)})}catch(t){console.warn("[vuex] error in after action subscribers: "),console.error(t)}return t})}console.error("[vuex] unknown action type: "+e)},t.prototype.subscribe=function(t){return n(t,this._subscribers)},t.prototype.subscribeAction=function(t){return n("function"==typeof t?{before:t}:t,this._actionSubscribers)},t.prototype.watch=function(t,e,n){var r=this;return u("function"==typeof t,"store.watch only accepts a function."),this._watcherVM.$watch(function(){return t(r.state,r.getters)},e,n)},t.prototype.replaceState=function(t){var e=this;this._withCommit(function(){e._vm._data.$$state=t})},t.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"==typeof t&&(t=[t]),u(Array.isArray(t),"module path must be a string or an Array."),u(0<t.length,"cannot register the root module by using registerModule."),this._modules.register(t,e),v(this,this.state,t,this._modules.get(t),n.preserveState),p(this,this.state)},t.prototype.unregisterModule=function(e){var n=this;"string"==typeof e&&(e=[e]),u(Array.isArray(e),"module path must be a string or an Array."),this._modules.unregister(e),this._withCommit(function(){var t=m(n.state,e.slice(0,-1));h.delete(t,e[e.length-1])}),r(this)},t.prototype.hotUpdate=function(t){this._modules.update(t),r(this,!0)},t.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(t.prototype,e);var o=x(function(o,t){var n={};return w(t).forEach(function(t){var e=t.key,r=t.val;n[e]=function(){var t=this.$store.state,e=this.$store.getters;if(o){var n=$(this.$store,"mapState",o);if(!n)return;t=n.context.state,e=n.context.getters}return"function"==typeof r?r.call(this,t,e):t[r]},n[e].vuex=!0}),n}),g=x(function(i,t){var n={};return w(t).forEach(function(t){var e=t.key,o=t.val;n[e]=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=this.$store.commit;if(i){var r=$(this.$store,"mapMutations",i);if(!r)return;n=r.context.commit}return"function"==typeof o?o.apply(this,[n].concat(t)):n.apply(this.$store,[o].concat(t))}}),n}),_=x(function(r,t){var o={};return w(t).forEach(function(t){var e=t.key,n=t.val,n=r+n;o[e]=function(){if(!r||$(this.$store,"mapGetters",r)){if(n in this.$store.getters)return this.$store.getters[n];console.error("[vuex] unknown getter: "+n)}},o[e].vuex=!0}),o}),b=x(function(i,t){var n={};return w(t).forEach(function(t){var e=t.key,o=t.val;n[e]=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=this.$store.dispatch;if(i){var r=$(this.$store,"mapActions",i);if(!r)return;n=r.context.dispatch}return"function"==typeof o?o.apply(this,[n].concat(t)):n.apply(this.$store,[o].concat(t))}}),n});function w(e){return Array.isArray(e)?e.map(function(t){return{key:t,val:t}}):Object.keys(e).map(function(t){return{key:t,val:e[t]}})}function x(n){return function(t,e){return"string"!=typeof t?(e=t,t=""):"/"!==t.charAt(t.length-1)&&(t+="/"),n(t,e)}}function $(t,e,n){t=t._modulesNamespaceMap[n];return t||console.error("[vuex] module namespace not found in "+e+"(): "+n),t}return{Store:t,install:d,version:"3.1.0",mapState:o,mapMutations:g,mapGetters:_,mapActions:b,createNamespacedHelpers:function(t){return{mapState:o.bind(null,t),mapGetters:_.bind(null,t),mapMutations:g.bind(null,t),mapActions:b.bind(null,t)}}}}),function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.VueResource=e()}(this,function(){"use strict";function a(t){this.state=2,this.value=void 0,this.deferred=[];var e=this;try{t(function(t){e.resolve(t)},function(t){e.reject(t)})}catch(t){e.reject(t)}}a.reject=function(n){return new a(function(t,e){e(n)})},a.resolve=function(n){return new a(function(t,e){t(n)})},a.all=function(i){return new a(function(n,t){var r=0,o=[];0===i.length&&n(o);for(var e=0;e<i.length;e+=1)a.resolve(i[e]).then(function(e){return function(t){o[e]=t,(r+=1)===i.length&&n(o)}}(e),t)})},a.race=function(r){return new a(function(t,e){for(var n=0;n<r.length;n+=1)a.resolve(r[n]).then(t,e)})};var t=a.prototype;function u(t,e){t instanceof Promise?this.promise=t:this.promise=new Promise(t.bind(e)),this.context=e}t.resolve=function(t){var e=this;if(2===e.state){if(t===e)throw new TypeError("Promise settled with itself.");var n=!1;try{var r=t&&t.then;if(null!==t&&"object"==typeof t&&"function"==typeof r)return void r.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(t){return void(n||e.reject(t))}e.state=0,e.value=t,e.notify()}},t.reject=function(t){var e=this;if(2===e.state){if(t===e)throw new TypeError("Promise settled with itself.");e.state=1,e.value=t,e.notify()}},t.notify=function(){var i=this;n(function(){if(2!==i.state)for(;i.deferred.length;){var t=i.deferred.shift(),e=t[0],n=t[1],r=t[2],o=t[3];try{0===i.state?r("function"==typeof e?e.call(void 0,i.value):i.value):1===i.state&&("function"==typeof n?r(n.call(void 0,i.value)):o(i.value))}catch(t){o(t)}}},void 0)},t.then=function(n,r){var o=this;return new a(function(t,e){o.deferred.push([n,r,t,e]),o.notify()})},t.catch=function(t){return this.then(void 0,t)},"undefined"==typeof Promise&&(window.Promise=a),u.all=function(t,e){return new u(Promise.all(t),e)},u.resolve=function(t,e){return new u(Promise.resolve(t),e)},u.reject=function(t,e){return new u(Promise.reject(t),e)},u.race=function(t,e){return new u(Promise.race(t),e)};t=u.prototype;t.bind=function(t){return this.context=t,this},t.then=function(t,e){return t&&t.bind&&this.context&&(t=t.bind(this.context)),e&&e.bind&&this.context&&(e=e.bind(this.context)),new u(this.promise.then(t,e),this.context)},t.catch=function(t){return t&&t.bind&&this.context&&(t=t.bind(this.context)),new u(this.promise.catch(t),this.context)},t.finally=function(e){return this.then(function(t){return e.call(this),t},function(t){return e.call(this),Promise.reject(t)})};var n,o={}.hasOwnProperty,r=[].slice,f=!1,i="undefined"!=typeof window,e=function(t){var e=t.config,t=t.nextTick;n=t,f=e.debug||!e.silent};function c(t){return t?t.replace(/^\s*|\s*$/g,""):""}function s(t){return t?t.toLowerCase():""}var l=Array.isArray;function p(t){return"string"==typeof t}function d(t){return"function"==typeof t}function h(t){return null!==t&&"object"==typeof t}function v(t){return h(t)&&Object.getPrototypeOf(t)==Object.prototype}function m(t,e,n){t=u.resolve(t);return arguments.length<2?t:t.then(e,n)}function y(t,e,n){return d(n=n||{})&&(n=n.call(e)),b(t.bind({$vm:e,$options:n}),t,{$options:n})}function g(t,e){var n,r;if(l(t))for(n=0;n<t.length;n++)e.call(t[n],t[n],n);else if(h(t))for(r in t)o.call(t,r)&&e.call(t[r],t[r],r);return t}var _=Object.assign||function(e){return r.call(arguments,1).forEach(function(t){w(e,t)}),e};function b(e){return r.call(arguments,1).forEach(function(t){w(e,t,!0)}),e}function w(t,e,n){for(var r in e)n&&(v(e[r])||l(e[r]))?(v(e[r])&&!v(t[r])&&(t[r]={}),l(e[r])&&!l(t[r])&&(t[r]=[]),w(t[r],e[r],n)):void 0!==e[r]&&(t[r]=e[r])}function x(t,e,n){var r,a,s,t=(r=t,a=["+","#",".","/",";","?","&"],{vars:s=[],expand:function(i){return r.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(t,e,n){if(e){var r=null,o=[];if(-1!==a.indexOf(e.charAt(0))&&(r=e.charAt(0),e=e.substr(1)),e.split(/,/g).forEach(function(t){t=/([^:\*]*)(?::(\d+)|(\*))?/.exec(t);o.push.apply(o,function(t,e,n,r){var o=t[n],i=[];{var a;$(o)&&""!==o?"string"==typeof o||"number"==typeof o||"boolean"==typeof o?(o=o.toString(),r&&"*"!==r&&(o=o.substring(0,parseInt(r,10))),i.push(C(e,o,k(e)?n:null))):"*"===r?Array.isArray(o)?o.filter($).forEach(function(t){i.push(C(e,t,k(e)?n:null))}):Object.keys(o).forEach(function(t){$(o[t])&&i.push(C(e,o[t],t))}):(a=[],Array.isArray(o)?o.filter($).forEach(function(t){a.push(C(e,t))}):Object.keys(o).forEach(function(t){$(o[t])&&(a.push(encodeURIComponent(t)),a.push(C(e,o[t].toString())))}),k(e)?i.push(encodeURIComponent(n)+"="+a.join(",")):0!==a.length&&i.push(a.join(","))):";"===e?i.push(encodeURIComponent(n)):""!==o||"&"!==e&&"?"!==e?""===o&&i.push(""):i.push(encodeURIComponent(n)+"=")}return i}(i,r,t[1],t[2]||t[3])),s.push(t[1])}),r&&"+"!==r){e=",";return"?"===r?e="&":"#"!==r&&(e=r),(0!==o.length?r:"")+o.join(e)}return o.join(",")}return O(n)})}}),e=t.expand(e);return n&&n.push.apply(n,t.vars),e}function $(t){return null!=t}function k(t){return";"===t||"&"===t||"?"===t}function C(t,e,n){return e=("+"===t||"#"===t?O:encodeURIComponent)(e),n?encodeURIComponent(n)+"="+e:e}function O(t){return t.split(/(%[0-9A-Fa-f]{2})/g).map(function(t){return/%[0-9A-Fa-f]/.test(t)||(t=encodeURI(t)),t}).join("")}function A(t,e){var o,i=this||{},n=t;return p(t)&&(n={url:t,params:e}),n=b({},A.options,i.$options,n),A.transforms.forEach(function(t){var e,n,r;p(t)&&(t=A.transform[t]),d(t)&&(e=t,n=o,r=i.$vm,o=function(t){return e.call(r,t,n)})}),o(n)}A.options={url:"",root:null,params:{}},A.transform={template:function(e){var t=[],n=x(e.url,e.params,t);return t.forEach(function(t){delete e.params[t]}),n},query:function(t,e){var n=Object.keys(A.options.params),r={},e=e(t);return g(t.params,function(t,e){-1===n.indexOf(e)&&(r[e]=t)}),(r=A.params(r))&&(e+=(-1==e.indexOf("?")?"?":"&")+r),e},root:function(t,e){var n=e(t);return p(t.root)&&!/^(https?:)?\//.test(n)&&(e=t.root,t="/",n=(e&&void 0===t?e.replace(/\s+$/,""):e&&t?e.replace(new RegExp("["+t+"]+$"),""):e)+"/"+n),n}},A.transforms=["template","query","root"],A.params=function(t){var e=[],n=encodeURIComponent;return e.add=function(t,e){d(e)&&(e=e()),null===e&&(e=""),this.push(n(t)+"="+n(e))},function n(r,t,o){var i,a=l(t),s=v(t);g(t,function(t,e){i=h(t)||l(t),o&&(e=o+"["+(s||i?e:"")+"]"),!o&&a?r.add(t.name,t.value):i?n(r,t,e):r.add(e,t)})}(e,t),e.join("&").replace(/%20/g,"+")},A.parse=function(t){var e=document.createElement("a");return document.documentMode&&(e.href=t,t=e.href),e.href=t,{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",port:e.port,host:e.host,hostname:e.hostname,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):""}};function S(o){return new u(function(n){function t(t){var e=t.type,t=0;"load"===e?t=200:"error"===e&&(t=500),n(o.respondWith(r.responseText,{status:t}))}var r=new XDomainRequest;o.abort=function(){return r.abort()},r.open(o.method,o.getUrl()),o.timeout&&(r.timeout=o.timeout),r.onload=t,r.onabort=t,r.onerror=t,r.ontimeout=t,r.onprogress=function(){},r.send(o.getBody())})}var T=i&&"withCredentials"in new XMLHttpRequest;function j(a){return new u(function(n){var r,t=a.jsonp||"callback",o=a.jsonpCallback||"_jsonp"+Math.random().toString(36).substr(2),i=null,e=function(t){var e=t.type,t=0;"load"===e&&null!==i?t=200:"error"===e&&(t=500),t&&window[o]&&(delete window[o],document.body.removeChild(r)),n(a.respondWith(i,{status:t}))};window[o]=function(t){i=JSON.stringify(t)},a.abort=function(){e({type:"abort"})},a.params[t]=o,a.timeout&&setTimeout(a.abort,a.timeout),(r=document.createElement("script")).src=a.getUrl(),r.type="text/javascript",r.async=!0,r.onload=e,r.onerror=e,document.body.appendChild(r)})}function E(o){return new u(function(n){function t(t){var e=o.respondWith("response"in r?r.response:r.responseText,{status:1223===r.status?204:r.status,statusText:1223===r.status?"No Content":c(r.statusText)});g(c(r.getAllResponseHeaders()).split("\n"),function(t){e.headers.append(t.slice(0,t.indexOf(":")),t.slice(t.indexOf(":")+1))}),n(e)}var r=new XMLHttpRequest;o.abort=function(){return r.abort()},o.progress&&("GET"===o.method?r.addEventListener("progress",o.progress):/^(POST|PUT)$/i.test(o.method)&&r.upload.addEventListener("progress",o.progress)),r.open(o.method,o.getUrl(),!0),o.timeout&&(r.timeout=o.timeout),o.responseType&&"responseType"in r&&(r.responseType=o.responseType),(o.withCredentials||o.credentials)&&(r.withCredentials=!0),o.crossOrigin||o.headers.set("X-Requested-With","XMLHttpRequest"),o.headers.forEach(function(t,e){r.setRequestHeader(e,t)}),r.onload=t,r.onabort=t,r.onerror=t,r.ontimeout=t,r.send(o.getBody())})}function M(a){var s=require("got");return new u(function(e){var n,t=a.getUrl(),r=a.getBody(),o=a.method,i={};a.headers.forEach(function(t,e){i[e]=t}),s(t,{body:r,method:o,headers:i}).then(n=function(t){var n=a.respondWith(t.body,{status:t.statusCode,statusText:c(t.statusMessage)});g(t.headers,function(t,e){n.headers.set(e,t)}),e(n)},function(t){return n(t.response)})})}var P=function(a){var s,c=[I],l=[];function t(i){return new u(function(e,n){function r(){var t;d(s=c.pop())?s.call(a,i,o):(t="Invalid interceptor of type "+typeof s+", must be a function","undefined"!=typeof console&&f&&console.warn("[VueResource warn]: "+t),o())}function o(t){if(d(t))l.unshift(t);else if(h(t))return l.forEach(function(e){t=m(t,function(t){return e.call(a,t)||t},n)}),void m(t,e,n);r()}r()},a)}return h(a)||(a=null),t.use=function(t){c.push(t)},t};function I(t,e){e((t.client||(i?E:M))(t))}function L(t){var n=this;this.map={},g(t,function(t,e){return n.append(e,t)})}function N(t,n){return Object.keys(t).reduce(function(t,e){return s(n)===s(e)?e:t},null)}L.prototype.has=function(t){return null!==N(this.map,t)},L.prototype.get=function(t){t=this.map[N(this.map,t)];return t?t.join():null},L.prototype.getAll=function(t){return this.map[N(this.map,t)]||[]},L.prototype.set=function(t,e){this.map[function(t){if(/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return c(t)}(N(this.map,t)||t)]=[c(e)]},L.prototype.append=function(t,e){var n=this.map[N(this.map,t)];n?n.push(c(e)):this.set(t,e)},L.prototype.delete=function(t){delete this.map[N(this.map,t)]},L.prototype.deleteAll=function(){this.map={}},L.prototype.forEach=function(n,r){var o=this;g(this.map,function(t,e){g(t,function(t){return n.call(r,t,e,o)})})};function D(t,e){var n,r=e.url,o=e.headers,i=e.status,e=e.statusText;this.url=r,this.ok=200<=i&&i<300,this.status=i||0,this.statusText=e||"",this.headers=new L(o),p(this.body=t)?this.bodyText=t:(o=t,"undefined"!=typeof Blob&&o instanceof Blob&&(this.bodyBlob=t,0!==(o=t).type.indexOf("text")&&-1===o.type.indexOf("json")||(this.bodyText=(n=t,new u(function(t){var e=new FileReader;e.readAsText(n),e.onload=function(){t(e.result)}})))))}D.prototype.blob=function(){return m(this.bodyBlob)},D.prototype.text=function(){return m(this.bodyText)},D.prototype.json=function(){return m(this.text(),function(t){return JSON.parse(t)})},Object.defineProperty(D.prototype,"data",{get:function(){return this.body},set:function(t){this.body=t}});var F=function(t){this.body=null,this.params={},_(this,t,{method:(t=t.method||"GET")?t.toUpperCase():""}),this.headers instanceof L||(this.headers=new L(this.headers))};F.prototype.getUrl=function(){return A(this)},F.prototype.getBody=function(){return this.body},F.prototype.respondWith=function(t,e){return new D(t,_(e||{},{url:this.getUrl()}))};t={"Content-Type":"application/json;charset=utf-8"};function R(t){var e=this||{},n=P(e.$vm);return function(n){r.call(arguments,1).forEach(function(t){for(var e in t)void 0===n[e]&&(n[e]=t[e])})}(t||{},e.$options,R.options),R.interceptors.forEach(function(t){p(t)&&(t=R.interceptor[t]),d(t)&&n.use(t)}),n(new F(t)).then(function(t){return t.ok?t:u.reject(t)},function(t){var e;return t instanceof Error&&(e=t,"undefined"!=typeof console&&console.error(e)),u.reject(t)})}function z(n,r,t,o){var i=this||{},a={};return g(t=_({},z.actions,t),function(t,e){t=b({url:n,params:_({},r)},o,t),a[e]=function(){return(i.$http||R)(function(t,e){var n,r=_({},t),t={};switch(e.length){case 2:t=e[0],n=e[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(r.method)?n=e[0]:t=e[0];break;case 0:break;default:throw"Expected up to 2 arguments [params, body], got "+e.length+" arguments"}return r.body=n,r.params=_({},r.params,t),r}(t,arguments))}}),a}function H(n){H.installed||(e(n),n.url=A,n.http=R,n.resource=z,n.Promise=u,Object.defineProperties(n.prototype,{$url:{get:function(){return y(n.url,this,this.$options.url)}},$http:{get:function(){return y(n.http,this,this.$options.http)}},$resource:{get:function(){return n.resource.bind(this)}},$promise:{get:function(){var e=this;return function(t){return new n.Promise(t,e)}}}}))}return R.options={},R.headers={put:t,post:t,patch:t,delete:t,common:{Accept:"application/json, text/plain, */*"},custom:{}},R.interceptor={before:function(t,e){d(t.before)&&t.before.call(this,t),e()},method:function(t,e){t.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(t.method)&&(t.headers.set("X-HTTP-Method-Override",t.method),t.method="POST"),e()},jsonp:function(t,e){"JSONP"==t.method&&(t.client=j),e()},json:function(t,e){var o=t.headers.get("Content-Type")||"";h(t.body)&&0===o.indexOf("application/json")&&(t.body=JSON.stringify(t.body)),e(function(r){return r.bodyText?m(r.text(),function(t){if(0===(o=r.headers.get("Content-Type")||"").indexOf("application/json")||(n=(e=t).match(/^\[|^\{(?!\{)/))&&{"[":/]$/,"{":/}$/}[n[0]].test(e))try{r.body=JSON.parse(t)}catch(t){r.body=null}else r.body=t;var e,n;return r}):r})},form:function(t,e){var n;n=t.body,"undefined"!=typeof FormData&&n instanceof FormData?t.headers.delete("Content-Type"):h(t.body)&&t.emulateJSON&&(t.body=A.params(t.body),t.headers.set("Content-Type","application/x-www-form-urlencoded")),e()},header:function(n,t){g(_({},R.headers.common,n.crossOrigin?{}:R.headers.custom,R.headers[s(n.method)]),function(t,e){n.headers.has(e)||n.headers.set(e,t)}),t()},cors:function(t,e){var n,r;i&&(n=A.parse(location.href),(r=A.parse(t.getUrl())).protocol===n.protocol&&r.host===n.host||(t.crossOrigin=!0,t.emulateHTTP=!1,T||(t.client=S))),e()}},R.interceptors=["before","method","jsonp","json","form","header","cors"],["get","delete","head","jsonp"].forEach(function(n){R[n]=function(t,e){return this(_(e||{},{url:t,method:n}))}}),["post","put","patch"].forEach(function(r){R[r]=function(t,e,n){return this(_(n||{},{url:t,method:r,body:e}))}}),z.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(H),H}),Object.prototype.watchChange||(isFunction=function(t){return t&&"[object Function]"==={}.toString.call(t)},Object.defineProperty(Object.prototype,"watchChange",{enumerable:!1,configurable:!0,writable:!1,value:function(t,e){var i=this;function n(e,n){var r=i[e],o=r;delete i[e]&&Object.defineProperty(i,e,{get:function(){return o},set:function(t){return o=n.call(i,e,r,t)},enumerable:!0,configurable:!0})}if(isFunction(t))for(var r in this)n(r,t);else n(t,e)}})),Object.prototype.unwatchChange||Object.defineProperty(Object.prototype,"unwatchChange",{enumerable:!1,configurable:!0,writable:!1,value:function(t){var e=this[t];delete this[t],this[t]=e}}),function(a){a.alerts={verticalOffset:-75,horizontalOffset:0,repositionOnResize:!0,overlayOpacity:.01,overlayColor:"#FFF",draggable:!0,okButton:"&nbsp;OK&nbsp;",cancelButton:"&nbsp;Cancel&nbsp;",dialogClass:null,alert:function(t,e,n){null==e&&(e="Alert"),a.alerts._show(e,t,null,"alert",function(t){n&&n(t)})},confirm:function(t,e,n){null==e&&(e="Confirm"),a.alerts._show(e,t,null,"confirm",function(t){n&&n(t)})},prompt:function(t,e,n,r){null==n&&(n="Prompt"),a.alerts._show(n,t,e,"prompt",function(t){r&&r(t)})},_show:function(t,e,n,r,o){a.alerts._hide(),a.alerts._overlay("show"),a("BODY").append('<div id="popup_container"><h1 id="popup_title"></h1><div id="popup_content"><div id="popup_message"></div></div></div>'),a.alerts.dialogClass&&a("#popup_container").addClass(a.alerts.dialogClass);var i=a.browser.msie&&parseInt(a.browser.version)<=6?"absolute":"fixed";switch(a("#popup_container").css({position:i,zIndex:99999,padding:0,margin:0}),a("#popup_title").text(t),a("#popup_content").addClass(r),a("#popup_message").text(e),a("#popup_message").html(a("#popup_message").text().replace(/\n/g,"<br />")),a("#popup_container").css({minWidth:a("#popup_container").outerWidth(),maxWidth:a("#popup_container").outerWidth()}),a.alerts._reposition(),a.alerts._maintainPosition(!0),r){case"alert":a("#popup_message").after('<div id="popup_panel"><input type="button" value="'+a.alerts.okButton+'" id="popup_ok" /></div>'),a("#popup_ok").click(function(){a.alerts._hide(),o(!0)}),a("#popup_ok").focus().keypress(function(t){13!=t.keyCode&&27!=t.keyCode||a("#popup_ok").trigger("click")});break;case"confirm":a("#popup_message").after('<div id="popup_panel"><input type="button" value="'+a.alerts.okButton+'" id="popup_ok" /> <input type="button" value="'+a.alerts.cancelButton+'" id="popup_cancel" /></div>'),a("#popup_ok").click(function(){a.alerts._hide(),o&&o(!0)}),a("#popup_cancel").click(function(){a.alerts._hide(),o&&o(!1)}),a("#popup_ok").focus(),a("#popup_ok, #popup_cancel").keypress(function(t){13==t.keyCode&&a("#popup_ok").trigger("click"),27==t.keyCode&&a("#popup_cancel").trigger("click")});break;case"prompt":a("#popup_message").append('<br /><input type="text" size="30" id="popup_prompt" />').after('<div id="popup_panel"><input type="button" value="'+a.alerts.okButton+'" id="popup_ok" /> <input type="button" value="'+a.alerts.cancelButton+'" id="popup_cancel" /></div>'),a("#popup_prompt").width(a("#popup_message").width()),a("#popup_ok").click(function(){var t=a("#popup_prompt").val();a.alerts._hide(),o&&o(t)}),a("#popup_cancel").click(function(){a.alerts._hide(),o&&o(null)}),a("#popup_prompt, #popup_ok, #popup_cancel").keypress(function(t){13==t.keyCode&&a("#popup_ok").trigger("click"),27==t.keyCode&&a("#popup_cancel").trigger("click")}),n&&a("#popup_prompt").val(n),a("#popup_prompt").focus().select()}if(a.alerts.draggable)try{a("#popup_container").draggable({handle:a("#popup_title")}),a("#popup_title").css({cursor:"move"})}catch(t){}},_hide:function(){a("#popup_container").remove(),a.alerts._overlay("hide"),a.alerts._maintainPosition(!1)},_overlay:function(t){switch(t){case"show":a.alerts._overlay("hide"),a("BODY").append('<div id="popup_overlay"></div>'),a("#popup_overlay").css({position:"absolute",zIndex:99998,top:"0px",left:"0px",width:"100%",height:a(document).height(),background:a.alerts.overlayColor,opacity:a.alerts.overlayOpacity});break;case"hide":a("#popup_overlay").remove()}},_reposition:function(){var t=a(window).height()/2-a("#popup_container").outerHeight()/2+a.alerts.verticalOffset,e=a(window).width()/2-a("#popup_container").outerWidth()/2+a.alerts.horizontalOffset;t<0&&(t=0),e<0&&(e=0),a.browser.msie&&parseInt(a.browser.version)<=6&&(t+=a(window).scrollTop()),a("#popup_container").css({top:t+"px",left:e+"px"}),a("#popup_overlay").height(a(document).height())},_maintainPosition:function(t){if(a.alerts.repositionOnResize)switch(t){case!0:a(window).bind("resize",a.alerts._reposition);break;case!1:a(window).unbind("resize",a.alerts._reposition)}}},window.jAlert=function(t,e,n){a.alerts.alert(t,e,n)},window.jConfirm=function(t,e,n){a.alerts.confirm(t,e,n)},window.jPrompt=function(t,e,n,r){a.alerts.prompt(t,e,n,r)}}(jQuery),function(i){var r,o=[],a=!1,s=!1,c={interval:250,force_process:!1},l=i(window);function u(){s=!1;for(var t=0;t<o.length;t++){var e,n=i(o[t]).filter(function(){return i(this).is(":appeared")});n.trigger("appear",[n]),r&&(e=r.not(n)).trigger("disappear",[e]),r=n}}i.expr[":"].appeared=function(t){var e=i(t);if(!e.is(":visible"))return!1;var n=l.scrollLeft(),r=l.scrollTop(),o=e.offset(),t=o.left,o=o.top;return o+e.height()>=r&&o-(e.data("appear-top-offset")||0)<=r+l.height()&&t+e.width()>=n&&t-(e.data("appear-left-offset")||0)<=n+l.width()},i.fn.extend({appear:function(t){var e=i.extend({},c,t||{}),n=this.selector||this;return a||(t=function(){s||(s=!0,setTimeout(u,e.interval))},i(window).scroll(t).resize(t),a=!0),e.force_process&&setTimeout(u,e.interval),o.push(n),i(n)}}),i.extend({force_appear:function(){return!!a&&(u(),!0)}})}(jQuery),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(o){"use strict";var y=o.scrollTo=function(t,e,n){return o(window).scrollTo(t,e,n)};function i(t){return!t.nodeName||-1!==o.inArray(t.nodeName.toLowerCase(),["iframe","#document","html","body"])}function e(t){return o.isFunction(t)||o.isPlainObject(t)?t:{top:t,left:t}}return y.defaults={axis:"xy",duration:0,limit:!0},o.fn.scrollTo=function(t,n,v){"object"==typeof n&&(v=n,n=0),"function"==typeof v&&(v={onAfter:v}),"max"===t&&(t=9e9),v=o.extend({},y.defaults,v),n=n||v.duration;var m=v.queue&&1<v.axis.length;return m&&(n/=2),v.offset=e(v.offset),v.over=e(v.over),this.each(function(){if(null!==t){var s,c=i(this),l=c?this.contentWindow||window:this,u=o(l),f=t,p={};switch(typeof f){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(f)){f=e(f);break}f=c?o(f):o(f,l);case"object":if(0===f.length)return;(f.is||f.style)&&(s=(f=o(f)).offset())}var d=o.isFunction(v.offset)&&v.offset(l,f)||v.offset;o.each(v.axis.split(""),function(t,e){var n="x"===e?"Left":"Top",r=n.toLowerCase(),o="scroll"+n,i=u[o](),a=y.max(l,e);s?(p[o]=s[r]+(c?0:i-u.offset()[r]),v.margin&&(p[o]-=parseInt(f.css("margin"+n),10)||0,p[o]-=parseInt(f.css("border"+n+"Width"),10)||0),p[o]+=d[r]||0,v.over[r]&&(p[o]+=f["x"===e?"width":"height"]()*v.over[r])):(r=f[r],p[o]=r.slice&&"%"===r.slice(-1)?parseFloat(r)/100*a:r),v.limit&&/^\d+$/.test(p[o])&&(p[o]=p[o]<=0?0:Math.min(p[o],a)),!t&&1<v.axis.length&&(i===p[o]?p={}:m&&(h(v.onAfterFirst),p={}))}),h(v.onAfter)}function h(t){var e=o.extend({},v,{queue:!0,duration:n,complete:t&&function(){t.call(l,f,v)}});u.animate(p,e)}})},y.max=function(t,e){var n="x"===e?"Width":"Height",r="scroll"+n;if(!i(t))return t[r]-o(t)[n.toLowerCase()]();e="client"+n,n=t.ownerDocument||t.document,t=n.documentElement,n=n.body;return Math.max(t[r],n[r])-Math.min(t[e],n[e])},o.Tween.propHooks.scrollLeft=o.Tween.propHooks.scrollTop={get:function(t){return o(t.elem)[t.prop]()},set:function(t){var e=this.get(t);if(t.options.interrupt&&t._last&&t._last!==e)return o(t.elem).stop();var n=Math.round(t.now);e!==n&&(o(t.elem)[t.prop](n),t._last=this.get(t))}},y}),function(r){r.backward_timer=function(t){var e={seconds:5,step:1,format:"h%:m%:s%",value_setter:void 0,on_exhausted:function(t){},on_tick:function(t){}},n=this;n.seconds_left=0,n.target=r(t),n.timeout=void 0,n.settings={},n.methods={init:function(t){n.settings=r.extend({},e,t),null==n.settings.value_setter&&(n.target.is("input")?n.settings.value_setter="val":n.settings.value_setter="text"),n.methods.reset()},start:function(){var t;null==n.timeout&&(t=n.seconds_left==n.settings.seconds?0:1e3*n.settings.step,setTimeout(n.methods._on_tick,t,t))},cancel:function(){null!=n.timeout&&(clearTimeout(n.timeout),n.timeout=void 0)},reset:function(){n.seconds_left=n.settings.seconds,n.methods._render_seconds()},_on_tick:function(t){0!=t&&n.settings.on_tick(n),n.methods._render_seconds(),0<n.seconds_left?(t=n.seconds_left<n.settings.step?n.seconds_left:n.settings.step,n.seconds_left-=t,t=1e3*t,n.timeout=setTimeout(n.methods._on_tick,t,t)):(n.timeout=void 0,n.settings.on_exhausted(n))},_render_seconds:function(){var t=n.methods._seconds_to_dhms(n.seconds_left),e=n.settings.format;e=(e=-1!==e.indexOf("d%")?e.replace("d%",t.d).replace("h%",n.methods._check_leading_zero(t.h)):e.replace("h%",24*t.d+t.h)).replace("m%",n.methods._check_leading_zero(t.m)).replace("s%",n.methods._check_leading_zero(t.s)),n.target[n.settings.value_setter](e)},_seconds_to_dhms:function(t){var e=Math.floor(t/86400),t=t-24*e*3600,n=Math.floor(t/3600),t=t-3600*n,r=Math.floor(t/60);return{d:e,h:n,m:r,s:Math.floor(t-60*r)}},_check_leading_zero:function(t){return t<10?"0"+t:""+t}}},r.fn.backward_timer=function(e){var n=arguments;return this.each(function(){var t=r(this).data("backward_timer");return null==t&&(t=new r.backward_timer(this),r(this).data("backward_timer",t)),t.methods[e]?t.methods[e].apply(this,Array.prototype.slice.call(n,1)):"object"!=typeof e&&e?void r.error("Method "+e+" does not exist on jQuery.backward_timer"):t.methods.init.apply(this,n)})}}(jQuery),function(t,e){"function"==typeof define&&define.amd?define(["jquery"],e):e(t.jQuery)}(this,function(y){"use strict";var l={data:{index:0,name:"scrollbar"},macosx:/mac/i.test(navigator.platform),mobile:/android|webos|iphone|ipad|ipod|blackberry/i.test(navigator.userAgent),overlay:null,scroll:null,scrolls:[],webkit:/webkit/i.test(navigator.userAgent)&&!/edge\/\d+/i.test(navigator.userAgent)};l.scrolls.add=function(t){this.remove(t).push(t)};function t(t){var e;l.scroll||(l.overlay=!((e=i(!0)).height||e.width),l.scroll=i(),u(),y(window).resize(function(){var t,e=!1;l.scroll&&(l.scroll.height||l.scroll.width)&&((t=i()).height===l.scroll.height&&t.width===l.scroll.width||(l.scroll=t,e=!0)),u(e)})),this.container=t,this.namespace=".scrollbar_"+l.data.index++,this.options=y.extend({},n,window.jQueryScrollbarOptions||{}),this.scrollTo=null,this.scrollx={},this.scrolly={},t.data(l.data.name,this),l.scrolls.add(this)}var n={autoScrollSize:!0,autoUpdate:!0,debug:!(l.scrolls.remove=function(t){for(;0<=y.inArray(t,this);)this.splice(y.inArray(t,this),1);return this}),disableBodyScroll:!1,duration:200,ignoreMobile:!1,ignoreOverlay:!1,scrollStep:30,showArrows:!1,stepScrolling:!0,scrollx:null,scrolly:null,onDestroy:null,onInit:null,onScroll:null,onUpdate:null};t.prototype={destroy:function(){var t,e;this.wrapper&&(this.container.removeData(l.data.name),l.scrolls.remove(this),t=this.container.scrollLeft(),e=this.container.scrollTop(),this.container.insertBefore(this.wrapper).css({height:"",margin:"","max-height":""}).removeClass("scroll-content scroll-scrollx_visible scroll-scrolly_visible").off(this.namespace).scrollLeft(t).scrollTop(e),this.scrollx.scroll.removeClass("scroll-scrollx_visible").find("div").andSelf().off(this.namespace),this.scrolly.scroll.removeClass("scroll-scrolly_visible").find("div").andSelf().off(this.namespace),this.wrapper.remove(),y(document).add("body").off(this.namespace),y.isFunction(this.options.onDestroy)&&this.options.onDestroy.apply(this,[this.container]))},init:function(t){var p=this,d=this.container,r=this.containerWrapper||d,h=this.namespace,v=y.extend(this.options,t||{}),m={x:this.scrollx,y:this.scrolly},n=this.wrapper,e={scrollLeft:d.scrollLeft(),scrollTop:d.scrollTop()};l.mobile&&v.ignoreMobile||l.overlay&&v.ignoreOverlay||l.macosx&&l.webkit,n?r.css({height:"auto","margin-bottom":-1*l.scroll.height+"px","margin-right":-1*l.scroll.width+"px","max-height":""}):(this.wrapper=n=y("<div>").addClass("scroll-wrapper").addClass(d.attr("class")).css("position","absolute"==d.css("position")?"absolute":"relative").insertBefore(d).append(d),d.is("textarea")&&(this.containerWrapper=r=y("<div>").insertBefore(d).append(d),n.addClass("scroll-textarea")),r.addClass("scroll-content").css({height:"auto","margin-bottom":-1*l.scroll.height+"px","margin-right":-1*l.scroll.width+"px","max-height":""}),d.on("scroll"+h,function(t){y.isFunction(v.onScroll)&&v.onScroll.call(p,{maxScroll:m.y.maxScrollOffset,scroll:d.scrollTop(),size:m.y.size,visible:m.y.visible},{maxScroll:m.x.maxScrollOffset,scroll:d.scrollLeft(),size:m.x.size,visible:m.x.visible}),m.x.isVisible&&m.x.scroll.bar.css("left",d.scrollLeft()*m.x.kx+"px"),m.y.isVisible&&m.y.scroll.bar.css("top",d.scrollTop()*m.y.kx+"px")}),n.on("scroll"+h,function(){n.scrollTop(0).scrollLeft(0)}),v.disableBodyScroll&&(t=function(t){g(t)?m.y.isVisible&&m.y.mousewheel(t):m.x.isVisible&&m.x.mousewheel(t)},n.on("MozMousePixelScroll"+h,t),n.on("mousewheel"+h,t),l.mobile&&n.on("touchstart"+h,function(t){var t=t.originalEvent.touches&&t.originalEvent.touches[0]||t,n=t.pageX,r=t.pageY,o=d.scrollLeft(),i=d.scrollTop();y(document).on("touchmove"+h,function(t){var e=t.originalEvent.targetTouches&&t.originalEvent.targetTouches[0]||t;d.scrollLeft(o+n-e.pageX),d.scrollTop(i+r-e.pageY),t.preventDefault()}),y(document).on("touchend"+h,function(){y(document).off(h)})})),y.isFunction(v.onInit)&&v.onInit.apply(this,[d])),y.each(m,function(o,i){function a(){var t=d[l]();d[l](t+u),1==c&&f<=t+u&&(t=d[l]()),-1==c&&t+u<=f&&(t=d[l]()),d[l]()==t&&s&&s()}var s=null,c=1,l="x"===o?"scrollLeft":"scrollTop",u=v.scrollStep,f=0;i.scroll||(i.scroll=p._getScroll(v["scroll"+o]).addClass("scroll-"+o),v.showArrows&&i.scroll.addClass("scroll-element_arrows_visible"),i.mousewheel=function(t){if(!i.isVisible||"x"===o&&g(t))return!0;if("y"===o&&!g(t))return m.x.mousewheel(t),!0;var e=-1*t.originalEvent.wheelDelta||t.originalEvent.detail,n=i.size-i.visible-i.offset;return(0<e&&f<n||e<0&&0<f)&&((f+=e)<0&&(f=0),n<f&&(f=n),p.scrollTo=p.scrollTo||{},p.scrollTo[l]=f,setTimeout(function(){p.scrollTo&&(d.stop().animate(p.scrollTo,240,"linear",function(){f=d[l]()}),p.scrollTo=null)},1)),t.preventDefault(),!1},i.scroll.on("MozMousePixelScroll"+h,i.mousewheel).on("mousewheel"+h,i.mousewheel).on("mouseenter"+h,function(){f=d[l]()}),i.scroll.find(".scroll-arrow, .scroll-element_track").on("mousedown"+h,function(t){if(1!=t.which)return!0;c=1;var e={eventOffset:t["x"===o?"pageX":"pageY"],maxScrollValue:i.size-i.visible-i.offset,scrollbarOffset:i.scroll.bar.offset()["x"===o?"left":"top"],scrollbarSize:i.scroll.bar["x"===o?"outerWidth":"outerHeight"]()},n=0,r=0;return f=y(this).hasClass("scroll-arrow")?(c=y(this).hasClass("scroll-arrow_more")?1:-1,u=v.scrollStep*c,0<c?e.maxScrollValue:0):(c=e.scrollbarOffset+e.scrollbarSize<e.eventOffset?1:e.eventOffset<e.scrollbarOffset?-1:0,u=Math.round(.75*i.visible)*c,f=e.eventOffset-e.scrollbarOffset-(v.stepScrolling?1==c?e.scrollbarSize:0:Math.round(e.scrollbarSize/2)),d[l]()+f/i.kx),p.scrollTo=p.scrollTo||{},p.scrollTo[l]=v.stepScrolling?d[l]()+u:f,v.stepScrolling&&(s=function(){f=d[l](),clearInterval(r),clearTimeout(n),r=n=0},n=setTimeout(function(){r=setInterval(a,40)},v.duration+100)),setTimeout(function(){p.scrollTo&&(d.animate(p.scrollTo,v.duration),p.scrollTo=null)},1),p._handleMouseDown(s,t)}),i.scroll.bar.on("mousedown"+h,function(t){if(1!=t.which)return!0;var e=t["x"===o?"pageX":"pageY"],n=d[l]();return i.scroll.addClass("scroll-draggable"),y(document).on("mousemove"+h,function(t){t=parseInt((t["x"===o?"pageX":"pageY"]-e)/i.kx,10);d[l](n+t)}),p._handleMouseDown(function(){i.scroll.removeClass("scroll-draggable"),f=d[l]()},t)}))}),y.each(m,function(t,e){var n="scroll-scroll"+t+"_visible",t="x"==t?m.y:m.x;e.scroll.removeClass(n),t.scroll.removeClass(n),r.removeClass(n)}),y.each(m,function(t,e){y.extend(e,"x"==t?{offset:parseInt(d.css("left"),10)||0,size:d.prop("scrollWidth"),visible:n.width()}:{offset:parseInt(d.css("top"),10)||0,size:d.prop("scrollHeight"),visible:n.height()})}),this._updateScroll("x",this.scrollx),this._updateScroll("y",this.scrolly),y.isFunction(v.onUpdate)&&v.onUpdate.apply(this,[d]),y.each(m,function(t,e){var n="x"===t?"left":"top",r="x"===t?"outerWidth":"outerHeight",o="x"===t?"width":"height",i=parseInt(d.css(n),10)||0,t=e.size,i=e.visible+i,n=e.scroll.size[r]()+(parseInt(e.scroll.size.css(n),10)||0);v.autoScrollSize&&(e.scrollbarSize=parseInt(n*i/t,10),e.scroll.bar.css(o,e.scrollbarSize+"px")),e.scrollbarSize=e.scroll.bar[r](),e.kx=(n-e.scrollbarSize)/(t-i)||1,e.maxScrollOffset=t-i}),d.scrollLeft(e.scrollLeft).scrollTop(e.scrollTop).trigger("scroll")},_getScroll:function(t){var e={advanced:['<div class="scroll-element">','<div class="scroll-element_corner"></div>','<div class="scroll-arrow scroll-arrow_less"></div>','<div class="scroll-arrow scroll-arrow_more"></div>','<div class="scroll-element_outer">','<div class="scroll-element_size"></div>','<div class="scroll-element_inner-wrapper">','<div class="scroll-element_inner scroll-element_track">','<div class="scroll-element_inner-bottom"></div>',"</div>","</div>",'<div class="scroll-bar">','<div class="scroll-bar_body">','<div class="scroll-bar_body-inner"></div>',"</div>",'<div class="scroll-bar_bottom"></div>','<div class="scroll-bar_center"></div>',"</div>","</div>","</div>"].join(""),simple:['<div class="scroll-element">','<div class="scroll-element_outer">','<div class="scroll-element_size"></div>','<div class="scroll-element_track"></div>','<div class="scroll-bar"></div>',"</div>","</div>"].join("")};return e[t]&&(t=e[t]),t="string"==typeof(t=t||e.simple)?y(t).appendTo(this.wrapper):y(t),y.extend(t,{bar:t.find(".scroll-bar"),size:t.find(".scroll-element_size"),track:t.find(".scroll-element_track")}),t},_handleMouseDown:function(t,e){var n=this.namespace;return y(document).on("blur"+n,function(){y(document).add("body").off(n),t&&t()}),y(document).on("dragstart"+n,function(t){return t.preventDefault(),!1}),y(document).on("mouseup"+n,function(){y(document).add("body").off(n),t&&t()}),y("body").on("selectstart"+n,function(t){return t.preventDefault(),!1}),e&&e.preventDefault(),!1},_updateScroll:function(t,e){var n=this.container,r=this.containerWrapper||n,o="scroll-scroll"+t+"_visible",i="x"===t?this.scrolly:this.scrollx,a=parseInt(this.container.css("x"===t?"left":"top"),10)||0,s=this.wrapper,c=e.size,a=e.visible+a;e.isVisible=1<c-a,e.isVisible?(e.scroll.addClass(o),i.scroll.addClass(o),r.addClass(o)):(e.scroll.removeClass(o),i.scroll.removeClass(o),r.removeClass(o)),"y"===t&&(n.is("textarea")||c<a?r.css({height:a+l.scroll.height+"px","max-height":"none"}):r.css({"max-height":a+l.scroll.height+"px"})),e.size==n.prop("scrollWidth")&&i.size==n.prop("scrollHeight")&&e.visible==s.width()&&i.visible==s.height()&&e.offset==(parseInt(n.css("left"),10)||0)&&i.offset==(parseInt(n.css("top"),10)||0)||(y.extend(this.scrollx,{offset:parseInt(n.css("left"),10)||0,size:n.prop("scrollWidth"),visible:s.width()}),y.extend(this.scrolly,{offset:parseInt(n.css("top"),10)||0,size:this.container.prop("scrollHeight"),visible:s.height()}),this._updateScroll("x"===t?"y":"x",i))}};var o=t;y.fn.scrollbar=function(n,r){return"string"!=typeof n&&(r=n,n="init"),void 0===r&&(r=[]),y.isArray(r)||(r=[r]),this.not("body, .scroll-wrapper").each(function(){var t=y(this),e=t.data(l.data.name);(e||"init"===n)&&(e=e||new o(t))[n]&&e[n].apply(e,r)}),this},y.fn.scrollbar.options=n;var c,r,u=(c=0,function(t){for(var e,n,r,o,i,a,s=0;s<l.scrolls.length;s++)e=(r=l.scrolls[s]).container,n=r.options,o=r.wrapper,i=r.scrollx,a=r.scrolly,(t||n.autoUpdate&&o&&o.is(":visible")&&(e.prop("scrollWidth")!=i.size||e.prop("scrollHeight")!=a.size||o.width()!=i.visible||o.height()!=a.visible))&&(r.init(),n.debug&&(window.console&&console.log({scrollHeight:e.prop("scrollHeight")+":"+r.scrolly.size,scrollWidth:e.prop("scrollWidth")+":"+r.scrollx.size,visibleHeight:o.height()+":"+r.scrolly.visible,visibleWidth:o.width()+":"+r.scrollx.visible},!0),0));clearTimeout(c),c=setTimeout(u,300)});function i(t){return l.webkit&&!t?{height:0,width:0}:(l.data.outer||(t={border:"none","box-sizing":"content-box",height:"200px",margin:"0",padding:"0",width:"200px"},l.data.inner=y("<div>").css(y.extend({},t)),l.data.outer=y("<div>").css(y.extend({left:"-1000px",overflow:"scroll",position:"absolute",top:"-1000px"},t)).append(l.data.inner).appendTo("body")),l.data.outer.scrollLeft(1e3).scrollTop(1e3),{height:Math.ceil(l.data.outer.offset().top-l.data.inner.offset().top||0),width:Math.ceil(l.data.outer.offset().left-l.data.inner.offset().left||0)})}function g(t){t=t.originalEvent;return(!t.axis||t.axis!==t.HORIZONTAL_AXIS)&&!t.wheelDeltaX}window.angular&&(r=window.angular).module("jQueryScrollbar",[]).provider("jQueryScrollbar",function(){var e=n;return{setOptions:function(t){r.extend(e,t)},$get:function(){return{options:r.copy(e)}}}}).directive("jqueryScrollbar",["jQueryScrollbar","$parse",function(r,o){return{restrict:"AC",link:function(t,e,n){t=o(n.jqueryScrollbar)(t);e.scrollbar(t||r.options).on("$destroy",function(){e.scrollbar("destroy")})}}}])});
assets/src/js/plugins.all.min.js ADDED
@@ -0,0 +1,5626 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isFunction;
2
+ !(function (t, e) {
3
+ "object" == typeof exports && "undefined" != typeof module ? (module.exports = e()) : "function" == typeof define && define.amd ? define(e) : ((t = t || self).Vue = e());
4
+ })(this, function () {
5
+ "use strict";
6
+ var d = Object.freeze({});
7
+ function P(t) {
8
+ return null == t;
9
+ }
10
+ function I(t) {
11
+ return null != t;
12
+ }
13
+ function O(t) {
14
+ return !0 === t;
15
+ }
16
+ function l(t) {
17
+ return "string" == typeof t || "number" == typeof t || "symbol" == typeof t || "boolean" == typeof t;
18
+ }
19
+ function L(t) {
20
+ return null !== t && "object" == typeof t;
21
+ }
22
+ var n = Object.prototype.toString;
23
+ function c(t) {
24
+ return "[object Object]" === n.call(t);
25
+ }
26
+ function o(t) {
27
+ var e = parseFloat(String(t));
28
+ return 0 <= e && Math.floor(e) === e && isFinite(t);
29
+ }
30
+ function h(t) {
31
+ return I(t) && "function" == typeof t.then && "function" == typeof t.catch;
32
+ }
33
+ function e(t) {
34
+ return null == t ? "" : Array.isArray(t) || (c(t) && t.toString === n) ? JSON.stringify(t, null, 2) : String(t);
35
+ }
36
+ function N(t) {
37
+ var e = parseFloat(t);
38
+ return isNaN(e) ? t : e;
39
+ }
40
+ function a(t, e) {
41
+ for (var n = Object.create(null), r = t.split(","), o = 0; o < r.length; o++) n[r[o]] = !0;
42
+ return e
43
+ ? function (t) {
44
+ return n[t.toLowerCase()];
45
+ }
46
+ : function (t) {
47
+ return n[t];
48
+ };
49
+ }
50
+ var u = a("slot,component", !0),
51
+ f = a("key,ref,slot,slot-scope,is");
52
+ function v(t, e) {
53
+ if (t.length) {
54
+ e = t.indexOf(e);
55
+ if (-1 < e) return t.splice(e, 1);
56
+ }
57
+ }
58
+ var r = Object.prototype.hasOwnProperty;
59
+ function p(t, e) {
60
+ return r.call(t, e);
61
+ }
62
+ function t(e) {
63
+ var n = Object.create(null);
64
+ return function (t) {
65
+ return n[t] || (n[t] = e(t));
66
+ };
67
+ }
68
+ var i = /-(\w)/g,
69
+ m = t(function (t) {
70
+ return t.replace(i, function (t, e) {
71
+ return e ? e.toUpperCase() : "";
72
+ });
73
+ }),
74
+ s = t(function (t) {
75
+ return t.charAt(0).toUpperCase() + t.slice(1);
76
+ }),
77
+ y = /\B([A-Z])/g,
78
+ g = t(function (t) {
79
+ return t.replace(y, "-$1").toLowerCase();
80
+ }),
81
+ _ = Function.prototype.bind
82
+ ? function (t, e) {
83
+ return t.bind(e);
84
+ }
85
+ : function (n, r) {
86
+ function t(t) {
87
+ var e = arguments.length;
88
+ return e ? (1 < e ? n.apply(r, arguments) : n.call(r, t)) : n.call(r);
89
+ }
90
+ return (t._length = n.length), t;
91
+ };
92
+ function b(t, e) {
93
+ e = e || 0;
94
+ for (var n = t.length - e, r = new Array(n); n--; ) r[n] = t[n + e];
95
+ return r;
96
+ }
97
+ function w(t, e) {
98
+ for (var n in e) t[n] = e[n];
99
+ return t;
100
+ }
101
+ function x(t) {
102
+ for (var e = {}, n = 0; n < t.length; n++) t[n] && w(e, t[n]);
103
+ return e;
104
+ }
105
+ function $(t, e, n) {}
106
+ function k(t, e, n) {
107
+ return !1;
108
+ }
109
+ var C = function (t) {
110
+ return t;
111
+ };
112
+ function A(e, n) {
113
+ if (e === n) return !0;
114
+ var t = L(e),
115
+ r = L(n);
116
+ if (!t || !r) return !t && !r && String(e) === String(n);
117
+ try {
118
+ var o = Array.isArray(e),
119
+ i = Array.isArray(n);
120
+ if (o && i)
121
+ return (
122
+ e.length === n.length &&
123
+ e.every(function (t, e) {
124
+ return A(t, n[e]);
125
+ })
126
+ );
127
+ if (e instanceof Date && n instanceof Date) return e.getTime() === n.getTime();
128
+ if (o || i) return !1;
129
+ (o = Object.keys(e)), (i = Object.keys(n));
130
+ return (
131
+ o.length === i.length &&
132
+ o.every(function (t) {
133
+ return A(e[t], n[t]);
134
+ })
135
+ );
136
+ } catch (e) {
137
+ return !1;
138
+ }
139
+ }
140
+ function S(t, e) {
141
+ for (var n = 0; n < t.length; n++) if (A(t[n], e)) return n;
142
+ return -1;
143
+ }
144
+ function D(t) {
145
+ var e = !1;
146
+ return function () {
147
+ e || ((e = !0), t.apply(this, arguments));
148
+ };
149
+ }
150
+ var T = "data-server-rendered",
151
+ j = ["component", "directive", "filter"],
152
+ E = ["beforeCreate", "created", "beforeMount", "mounted", "beforeUpdate", "updated", "beforeDestroy", "destroyed", "activated", "deactivated", "errorCaptured", "serverPrefetch"],
153
+ M = {
154
+ optionMergeStrategies: Object.create(null),
155
+ silent: !1,
156
+ productionTip: !1,
157
+ devtools: !1,
158
+ performance: !1,
159
+ errorHandler: null,
160
+ warnHandler: null,
161
+ ignoredElements: [],
162
+ keyCodes: Object.create(null),
163
+ isReservedTag: k,
164
+ isReservedAttr: k,
165
+ isUnknownElement: k,
166
+ getTagNamespace: $,
167
+ parsePlatformTagName: C,
168
+ mustUseProp: k,
169
+ async: !0,
170
+ _lifecycleHooks: E,
171
+ },
172
+ F = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
173
+ function R(t, e, n, r) {
174
+ Object.defineProperty(t, e, { value: n, enumerable: !!r, writable: !0, configurable: !0 });
175
+ }
176
+ var z,
177
+ H = new RegExp("[^" + F.source + ".$_\\d]"),
178
+ U = "__proto__" in {},
179
+ B = "undefined" != typeof window,
180
+ V = "undefined" != typeof WXEnvironment && !!WXEnvironment.platform,
181
+ W = V && WXEnvironment.platform.toLowerCase(),
182
+ q = B && window.navigator.userAgent.toLowerCase(),
183
+ J = q && /msie|trident/.test(q),
184
+ G = q && 0 < q.indexOf("msie 9.0"),
185
+ K = q && 0 < q.indexOf("edge/"),
186
+ X = (q && q.indexOf("android"), (q && /iphone|ipad|ipod|ios/.test(q)) || "ios" === W),
187
+ Q = (q && /chrome\/\d+/.test(q), q && /phantomjs/.test(q), q && q.match(/firefox\/(\d+)/)),
188
+ Y = {}.watch,
189
+ Z = !1;
190
+ if (B)
191
+ try {
192
+ var tt = {};
193
+ Object.defineProperty(tt, "passive", {
194
+ get: function () {
195
+ Z = !0;
196
+ },
197
+ }),
198
+ window.addEventListener("test-passive", null, tt);
199
+ } catch (d) {}
200
+ var et = function () {
201
+ return void 0 === z && (z = !B && !V && "undefined" != typeof global && global.process && "server" === global.process.env.VUE_ENV), z;
202
+ },
203
+ nt = B && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
204
+ function rt(t) {
205
+ return "function" == typeof t && /native code/.test(t.toString());
206
+ }
207
+ var ot,
208
+ it = "undefined" != typeof Symbol && rt(Symbol) && "undefined" != typeof Reflect && rt(Reflect.ownKeys);
209
+ function at() {
210
+ this.set = Object.create(null);
211
+ }
212
+ ot =
213
+ "undefined" != typeof Set && rt(Set)
214
+ ? Set
215
+ : ((at.prototype.has = function (t) {
216
+ return !0 === this.set[t];
217
+ }),
218
+ (at.prototype.add = function (t) {
219
+ this.set[t] = !0;
220
+ }),
221
+ (at.prototype.clear = function () {
222
+ this.set = Object.create(null);
223
+ }),
224
+ at);
225
+ var st = $,
226
+ ct = 0,
227
+ lt = function () {
228
+ (this.id = ct++), (this.subs = []);
229
+ };
230
+ (lt.prototype.addSub = function (t) {
231
+ this.subs.push(t);
232
+ }),
233
+ (lt.prototype.removeSub = function (t) {
234
+ v(this.subs, t);
235
+ }),
236
+ (lt.prototype.depend = function () {
237
+ lt.target && lt.target.addDep(this);
238
+ }),
239
+ (lt.prototype.notify = function () {
240
+ for (var t = this.subs.slice(), e = 0, n = t.length; e < n; e++) t[e].update();
241
+ }),
242
+ (lt.target = null);
243
+ var ut = [];
244
+ function ft(t) {
245
+ ut.push(t), (lt.target = t);
246
+ }
247
+ function pt() {
248
+ ut.pop(), (lt.target = ut[ut.length - 1]);
249
+ }
250
+ var dt = function (t, e, n, r, o, i, a, s) {
251
+ (this.tag = t),
252
+ (this.data = e),
253
+ (this.children = n),
254
+ (this.text = r),
255
+ (this.elm = o),
256
+ (this.ns = void 0),
257
+ (this.context = i),
258
+ (this.fnContext = void 0),
259
+ (this.fnOptions = void 0),
260
+ (this.fnScopeId = void 0),
261
+ (this.key = e && e.key),
262
+ (this.componentOptions = a),
263
+ (this.componentInstance = void 0),
264
+ (this.parent = void 0),
265
+ (this.raw = !1),
266
+ (this.isStatic = !1),
267
+ (this.isRootInsert = !0),
268
+ (this.isComment = !1),
269
+ (this.isCloned = !1),
270
+ (this.isOnce = !1),
271
+ (this.asyncFactory = s),
272
+ (this.asyncMeta = void 0),
273
+ (this.isAsyncPlaceholder = !1);
274
+ },
275
+ ht = { child: { configurable: !0 } };
276
+ (ht.child.get = function () {
277
+ return this.componentInstance;
278
+ }),
279
+ Object.defineProperties(dt.prototype, ht);
280
+ var vt = function (t) {
281
+ void 0 === t && (t = "");
282
+ var e = new dt();
283
+ return (e.text = t), (e.isComment = !0), e;
284
+ };
285
+ function mt(t) {
286
+ return new dt(void 0, void 0, void 0, String(t));
287
+ }
288
+ function yt(t) {
289
+ var e = new dt(t.tag, t.data, t.children && t.children.slice(), t.text, t.elm, t.context, t.componentOptions, t.asyncFactory);
290
+ return (e.ns = t.ns), (e.isStatic = t.isStatic), (e.key = t.key), (e.isComment = t.isComment), (e.fnContext = t.fnContext), (e.fnOptions = t.fnOptions), (e.fnScopeId = t.fnScopeId), (e.asyncMeta = t.asyncMeta), (e.isCloned = !0), e;
291
+ }
292
+ var gt = Array.prototype,
293
+ _t = Object.create(gt);
294
+ ["push", "pop", "shift", "unshift", "splice", "sort", "reverse"].forEach(function (i) {
295
+ var a = gt[i];
296
+ R(_t, i, function () {
297
+ for (var t = [], e = arguments.length; e--; ) t[e] = arguments[e];
298
+ var n,
299
+ r = a.apply(this, t),
300
+ o = this.__ob__;
301
+ switch (i) {
302
+ case "push":
303
+ case "unshift":
304
+ n = t;
305
+ break;
306
+ case "splice":
307
+ n = t.slice(2);
308
+ }
309
+ return n && o.observeArray(n), o.dep.notify(), r;
310
+ });
311
+ });
312
+ var bt = Object.getOwnPropertyNames(_t),
313
+ wt = !0;
314
+ function xt(t) {
315
+ wt = t;
316
+ }
317
+ var $t = function (t) {
318
+ (this.value = t),
319
+ (this.dep = new lt()),
320
+ (this.vmCount = 0),
321
+ R(t, "__ob__", this),
322
+ Array.isArray(t)
323
+ ? (U
324
+ ? (t.__proto__ = _t)
325
+ : (function (t, e, n) {
326
+ for (var r = 0, o = n.length; r < o; r++) {
327
+ var i = n[r];
328
+ R(t, i, e[i]);
329
+ }
330
+ })(t, _t, bt),
331
+ this.observeArray(t))
332
+ : this.walk(t);
333
+ };
334
+ function kt(t, e) {
335
+ var n;
336
+ if (L(t) && !(t instanceof dt)) return p(t, "__ob__") && t.__ob__ instanceof $t ? (n = t.__ob__) : wt && !et() && (Array.isArray(t) || c(t)) && Object.isExtensible(t) && !t._isVue && (n = new $t(t)), e && n && n.vmCount++, n;
337
+ }
338
+ function Ct(n, t, r, e, o) {
339
+ var i,
340
+ a,
341
+ s,
342
+ c = new lt(),
343
+ l = Object.getOwnPropertyDescriptor(n, t);
344
+ (l && !1 === l.configurable) ||
345
+ ((i = l && l.get),
346
+ (a = l && l.set),
347
+ (i && !a) || 2 !== arguments.length || (r = n[t]),
348
+ (s = !o && kt(r)),
349
+ Object.defineProperty(n, t, {
350
+ enumerable: !0,
351
+ configurable: !0,
352
+ get: function () {
353
+ var t = i ? i.call(n) : r;
354
+ return (
355
+ lt.target &&
356
+ (c.depend(),
357
+ s &&
358
+ (s.dep.depend(),
359
+ Array.isArray(t) &&
360
+ (function t(e) {
361
+ for (var n = void 0, r = 0, o = e.length; r < o; r++) (n = e[r]) && n.__ob__ && n.__ob__.dep.depend(), Array.isArray(n) && t(n);
362
+ })(t))),
363
+ t
364
+ );
365
+ },
366
+ set: function (t) {
367
+ var e = i ? i.call(n) : r;
368
+ t === e || (t != t && e != e) || (i && !a) || (a ? a.call(n, t) : (r = t), (s = !o && kt(t)), c.notify());
369
+ },
370
+ }));
371
+ }
372
+ function Ot(t, e, n) {
373
+ if (Array.isArray(t) && o(e)) return (t.length = Math.max(t.length, e)), t.splice(e, 1, n), n;
374
+ if (e in t && !(e in Object.prototype)) return (t[e] = n);
375
+ var r = t.__ob__;
376
+ return t._isVue || (r && r.vmCount) || (r ? (Ct(r.value, e, n), r.dep.notify()) : (t[e] = n)), n;
377
+ }
378
+ function At(t, e) {
379
+ var n;
380
+ Array.isArray(t) && o(e) ? t.splice(e, 1) : ((n = t.__ob__), t._isVue || (n && n.vmCount) || (p(t, e) && (delete t[e], n && n.dep.notify())));
381
+ }
382
+ ($t.prototype.walk = function (t) {
383
+ for (var e = Object.keys(t), n = 0; n < e.length; n++) Ct(t, e[n]);
384
+ }),
385
+ ($t.prototype.observeArray = function (t) {
386
+ for (var e = 0, n = t.length; e < n; e++) kt(t[e]);
387
+ });
388
+ var St = M.optionMergeStrategies;
389
+ function Tt(t, e) {
390
+ if (!e) return t;
391
+ for (var n, r, o, i = it ? Reflect.ownKeys(e) : Object.keys(e), a = 0; a < i.length; a++) "__ob__" !== (n = i[a]) && ((r = t[n]), (o = e[n]), p(t, n) ? r !== o && c(r) && c(o) && Tt(r, o) : Ot(t, n, o));
392
+ return t;
393
+ }
394
+ function jt(n, r, o) {
395
+ return o
396
+ ? function () {
397
+ var t = "function" == typeof r ? r.call(o, o) : r,
398
+ e = "function" == typeof n ? n.call(o, o) : n;
399
+ return t ? Tt(t, e) : e;
400
+ }
401
+ : r
402
+ ? n
403
+ ? function () {
404
+ return Tt("function" == typeof r ? r.call(this, this) : r, "function" == typeof n ? n.call(this, this) : n);
405
+ }
406
+ : r
407
+ : n;
408
+ }
409
+ function Et(t, e) {
410
+ t = e ? (t ? t.concat(e) : Array.isArray(e) ? e : [e]) : t;
411
+ return (
412
+ t &&
413
+ (function (t) {
414
+ for (var e = [], n = 0; n < t.length; n++) -1 === e.indexOf(t[n]) && e.push(t[n]);
415
+ return e;
416
+ })(t)
417
+ );
418
+ }
419
+ function Mt(t, e, n, r) {
420
+ t = Object.create(t || null);
421
+ return e ? w(t, e) : t;
422
+ }
423
+ (St.data = function (t, e, n) {
424
+ return n ? jt(t, e, n) : e && "function" != typeof e ? t : jt(t, e);
425
+ }),
426
+ E.forEach(function (t) {
427
+ St[t] = Et;
428
+ }),
429
+ j.forEach(function (t) {
430
+ St[t + "s"] = Mt;
431
+ }),
432
+ (St.watch = function (t, e, n, r) {
433
+ if ((t === Y && (t = void 0), e === Y && (e = void 0), !e)) return Object.create(t || null);
434
+ if (!t) return e;
435
+ var o,
436
+ i = {};
437
+ for (o in (w(i, t), e)) {
438
+ var a = i[o],
439
+ s = e[o];
440
+ a && !Array.isArray(a) && (a = [a]), (i[o] = a ? a.concat(s) : Array.isArray(s) ? s : [s]);
441
+ }
442
+ return i;
443
+ }),
444
+ (St.props = St.methods = St.inject = St.computed = function (t, e, n, r) {
445
+ if (!t) return e;
446
+ var o = Object.create(null);
447
+ return w(o, t), e && w(o, e), o;
448
+ }),
449
+ (St.provide = jt);
450
+ var Pt = function (t, e) {
451
+ return void 0 === e ? t : e;
452
+ };
453
+ function It(n, i, r) {
454
+ if (
455
+ ("function" == typeof i && (i = i.options),
456
+ (function (t) {
457
+ var e = t.props;
458
+ if (e) {
459
+ var n,
460
+ r,
461
+ o = {};
462
+ if (Array.isArray(e)) for (n = e.length; n--; ) "string" == typeof (r = e[n]) && (o[m(r)] = { type: null });
463
+ else if (c(e)) for (var i in e) (r = e[i]), (o[m(i)] = c(r) ? r : { type: r });
464
+ t.props = o;
465
+ }
466
+ })(i),
467
+ (function () {
468
+ var t = i.inject;
469
+ if (t) {
470
+ var e = (i.inject = {});
471
+ if (Array.isArray(t)) for (var n = 0; n < t.length; n++) e[t[n]] = { from: t[n] };
472
+ else if (c(t))
473
+ for (var r in t) {
474
+ var o = t[r];
475
+ e[r] = c(o) ? w({ from: r }, o) : { from: o };
476
+ }
477
+ }
478
+ })(),
479
+ (function () {
480
+ var t = i.directives;
481
+ if (t)
482
+ for (var e in t) {
483
+ var n = t[e];
484
+ "function" == typeof n && (t[e] = { bind: n, update: n });
485
+ }
486
+ })(),
487
+ !i._base && (i.extends && (n = It(n, i.extends, r)), i.mixins))
488
+ )
489
+ for (var t = 0, e = i.mixins.length; t < e; t++) n = It(n, i.mixins[t], r);
490
+ var o,
491
+ a = {};
492
+ for (o in n) s(o);
493
+ for (o in i) p(n, o) || s(o);
494
+ function s(t) {
495
+ var e = St[t] || Pt;
496
+ a[t] = e(n[t], i[t], r, t);
497
+ }
498
+ return a;
499
+ }
500
+ function Lt(t, e, n) {
501
+ if ("string" == typeof n) {
502
+ var r = t[e];
503
+ if (p(r, n)) return r[n];
504
+ t = m(n);
505
+ if (p(r, t)) return r[t];
506
+ e = s(t);
507
+ return (!p(r, e) && (r[n] || r[t])) || r[e];
508
+ }
509
+ }
510
+ function Nt(t, e, n, r) {
511
+ var o = e[t],
512
+ i = !p(n, t),
513
+ e = n[t],
514
+ n = Rt(Boolean, o.type);
515
+ return (
516
+ -1 < n && (i && !p(o, "default") ? (e = !1) : ("" !== e && e !== g(t)) || (((i = Rt(String, o.type)) < 0 || n < i) && (e = !0))),
517
+ void 0 === e &&
518
+ ((e = (function (t, e, n) {
519
+ if (p(e, "default")) {
520
+ var r = e.default;
521
+ return t && t.$options.propsData && void 0 === t.$options.propsData[n] && void 0 !== t._props[n] ? t._props[n] : "function" == typeof r && "Function" !== Dt(e.type) ? r.call(t) : r;
522
+ }
523
+ })(r, o, t)),
524
+ (t = wt),
525
+ xt(!0),
526
+ kt(e),
527
+ xt(t)),
528
+ e
529
+ );
530
+ }
531
+ function Dt(t) {
532
+ t = t && t.toString().match(/^\s*function (\w+)/);
533
+ return t ? t[1] : "";
534
+ }
535
+ function Ft(t, e) {
536
+ return Dt(t) === Dt(e);
537
+ }
538
+ function Rt(t, e) {
539
+ if (!Array.isArray(e)) return Ft(e, t) ? 0 : -1;
540
+ for (var n = 0, r = e.length; n < r; n++) if (Ft(e[n], t)) return n;
541
+ return -1;
542
+ }
543
+ function zt(t, e, n) {
544
+ ft();
545
+ try {
546
+ if (e)
547
+ for (var r = e; (r = r.$parent); ) {
548
+ var o = r.$options.errorCaptured;
549
+ if (o)
550
+ for (var i = 0; i < o.length; i++)
551
+ try {
552
+ if (!1 === o[i].call(r, t, e, n)) return;
553
+ } catch (t) {
554
+ Ut(t, r, "errorCaptured hook");
555
+ }
556
+ }
557
+ Ut(t, e, n);
558
+ } finally {
559
+ pt();
560
+ }
561
+ }
562
+ function Ht(t, e, n, r, o) {
563
+ var i;
564
+ try {
565
+ (i = n ? t.apply(e, n) : t.call(e)) &&
566
+ !i._isVue &&
567
+ h(i) &&
568
+ !i._handled &&
569
+ (i.catch(function (t) {
570
+ return zt(t, r, o + " (Promise/async)");
571
+ }),
572
+ (i._handled = !0));
573
+ } catch (t) {
574
+ zt(t, r, o);
575
+ }
576
+ return i;
577
+ }
578
+ function Ut(t, e, n) {
579
+ if (M.errorHandler)
580
+ try {
581
+ return M.errorHandler.call(null, t, e, n);
582
+ } catch (e) {
583
+ e !== t && Bt(e);
584
+ }
585
+ Bt(t);
586
+ }
587
+ function Bt(t) {
588
+ if ((!B && !V) || "undefined" == typeof console) throw t;
589
+ console.error(t);
590
+ }
591
+ var Vt,
592
+ Wt,
593
+ qt,
594
+ Jt,
595
+ Gt = !1,
596
+ Kt = [],
597
+ Xt = !1;
598
+ function Qt() {
599
+ Xt = !1;
600
+ for (var t = Kt.slice(0), e = (Kt.length = 0); e < t.length; e++) t[e]();
601
+ }
602
+ function Yt(t, e) {
603
+ var n;
604
+ if (
605
+ (Kt.push(function () {
606
+ if (t)
607
+ try {
608
+ t.call(e);
609
+ } catch (t) {
610
+ zt(t, e, "nextTick");
611
+ }
612
+ else n && n(e);
613
+ }),
614
+ Xt || ((Xt = !0), Wt()),
615
+ !t && "undefined" != typeof Promise)
616
+ )
617
+ return new Promise(function (t) {
618
+ n = t;
619
+ });
620
+ }
621
+ "undefined" != typeof Promise && rt(Promise)
622
+ ? ((Vt = Promise.resolve()),
623
+ (Wt = function () {
624
+ Vt.then(Qt), X && setTimeout($);
625
+ }),
626
+ (Gt = !0))
627
+ : J || "undefined" == typeof MutationObserver || (!rt(MutationObserver) && "[object MutationObserverConstructor]" !== MutationObserver.toString())
628
+ ? (Wt =
629
+ "undefined" != typeof setImmediate && rt(setImmediate)
630
+ ? function () {
631
+ setImmediate(Qt);
632
+ }
633
+ : function () {
634
+ setTimeout(Qt, 0);
635
+ })
636
+ : ((qt = 1),
637
+ (On = new MutationObserver(Qt)),
638
+ (Jt = document.createTextNode(String(qt))),
639
+ On.observe(Jt, { characterData: !0 }),
640
+ (Wt = function () {
641
+ (qt = (qt + 1) % 2), (Jt.data = String(qt));
642
+ }),
643
+ (Gt = !0));
644
+ var Zt = new ot();
645
+ function te(t) {
646
+ !(function t(e, n) {
647
+ var r,
648
+ o,
649
+ i = Array.isArray(e);
650
+ if (!((!i && !L(e)) || Object.isFrozen(e) || e instanceof dt)) {
651
+ if (e.__ob__) {
652
+ var a = e.__ob__.dep.id;
653
+ if (n.has(a)) return;
654
+ n.add(a);
655
+ }
656
+ if (i) for (r = e.length; r--; ) t(e[r], n);
657
+ else for (r = (o = Object.keys(e)).length; r--; ) t(e[o[r]], n);
658
+ }
659
+ })(t, Zt),
660
+ Zt.clear();
661
+ }
662
+ var ee = t(function (t) {
663
+ var e = "&" === t.charAt(0),
664
+ n = "~" === (t = e ? t.slice(1) : t).charAt(0),
665
+ r = "!" === (t = n ? t.slice(1) : t).charAt(0);
666
+ return { name: (t = r ? t.slice(1) : t), once: n, capture: r, passive: e };
667
+ });
668
+ function ne(t, o) {
669
+ function i() {
670
+ var t = arguments,
671
+ e = i.fns;
672
+ if (!Array.isArray(e)) return Ht(e, null, arguments, o, "v-on handler");
673
+ for (var n = e.slice(), r = 0; r < n.length; r++) Ht(n[r], null, t, o, "v-on handler");
674
+ }
675
+ return (i.fns = t), i;
676
+ }
677
+ function re(t, e, n, r, o, i) {
678
+ var a, s, c, l;
679
+ for (a in t)
680
+ (s = t[a]), (c = e[a]), (l = ee(a)), P(s) || (P(c) ? (P(s.fns) && (s = t[a] = ne(s, i)), O(l.once) && (s = t[a] = o(l.name, s, l.capture)), n(l.name, s, l.capture, l.passive, l.params)) : s !== c && ((c.fns = s), (t[a] = c)));
681
+ for (a in e) P(t[a]) && r((l = ee(a)).name, e[a], l.capture);
682
+ }
683
+ function oe(t, e, n) {
684
+ var r;
685
+ t instanceof dt && (t = t.data.hook || (t.data.hook = {}));
686
+ var o = t[e];
687
+ function i() {
688
+ n.apply(this, arguments), v(r.fns, i);
689
+ }
690
+ P(o) ? (r = ne([i])) : I(o.fns) && O(o.merged) ? (r = o).fns.push(i) : (r = ne([o, i])), (r.merged = !0), (t[e] = r);
691
+ }
692
+ function ie(t, e, n, r, o) {
693
+ if (I(e)) {
694
+ if (p(e, n)) return (t[n] = e[n]), o || delete e[n], 1;
695
+ if (p(e, r)) return (t[n] = e[r]), o || delete e[r], 1;
696
+ }
697
+ }
698
+ function ae(t) {
699
+ return l(t)
700
+ ? [mt(t)]
701
+ : Array.isArray(t)
702
+ ? (function t(e, n) {
703
+ for (var r, o, i, a = [], s = 0; s < e.length; s++)
704
+ P((r = e[s])) ||
705
+ "boolean" == typeof r ||
706
+ ((i = a[(o = a.length - 1)]),
707
+ Array.isArray(r)
708
+ ? 0 < r.length && (se((r = t(r, (n || "") + "_" + s))[0]) && se(i) && ((a[o] = mt(i.text + r[0].text)), r.shift()), a.push.apply(a, r))
709
+ : l(r)
710
+ ? se(i)
711
+ ? (a[o] = mt(i.text + r))
712
+ : "" !== r && a.push(mt(r))
713
+ : se(r) && se(i)
714
+ ? (a[o] = mt(i.text + r.text))
715
+ : (O(e._isVList) && I(r.tag) && P(r.key) && I(n) && (r.key = "__vlist" + n + "_" + s + "__"), a.push(r)));
716
+ return a;
717
+ })(t)
718
+ : void 0;
719
+ }
720
+ function se(t) {
721
+ return I(t) && I(t.text) && !1 === t.isComment;
722
+ }
723
+ function ce(t, e) {
724
+ if (t) {
725
+ for (var n = Object.create(null), r = it ? Reflect.ownKeys(t) : Object.keys(t), o = 0; o < r.length; o++) {
726
+ var i = r[o];
727
+ if ("__ob__" !== i) {
728
+ for (var a, s = t[i].from, c = e; c; ) {
729
+ if (c._provided && p(c._provided, s)) {
730
+ n[i] = c._provided[s];
731
+ break;
732
+ }
733
+ c = c.$parent;
734
+ }
735
+ !c && "default" in t[i] && ((a = t[i].default), (n[i] = "function" == typeof a ? a.call(e) : a));
736
+ }
737
+ }
738
+ return n;
739
+ }
740
+ }
741
+ function le(t, e) {
742
+ if (!t || !t.length) return {};
743
+ for (var n, r = {}, o = 0, i = t.length; o < i; o++) {
744
+ var a = t[o],
745
+ s = a.data;
746
+ s && s.attrs && s.attrs.slot && delete s.attrs.slot,
747
+ (a.context !== e && a.fnContext !== e) || !s || null == s.slot ? (r.default || (r.default = [])).push(a) : ((s = r[(s = s.slot)] || (r[s] = [])), "template" === a.tag ? s.push.apply(s, a.children || []) : s.push(a));
748
+ }
749
+ for (n in r) r[n].every(ue) && delete r[n];
750
+ return r;
751
+ }
752
+ function ue(t) {
753
+ return (t.isComment && !t.asyncFactory) || " " === t.text;
754
+ }
755
+ function fe(t, e, n) {
756
+ var r,
757
+ o,
758
+ i = 0 < Object.keys(e).length,
759
+ a = t ? !!t.$stable : !i,
760
+ s = t && t.$key;
761
+ if (t) {
762
+ if (t._normalized) return t._normalized;
763
+ if (a && n && n !== d && s === n.$key && !i && !n.$hasNormal) return n;
764
+ for (var c in ((r = {}), t))
765
+ t[c] &&
766
+ "$" !== c[0] &&
767
+ (r[c] = (function (t, e, n) {
768
+ function r() {
769
+ var t = arguments.length ? n.apply(null, arguments) : n({});
770
+ return (t = t && "object" == typeof t && !Array.isArray(t) ? [t] : ae(t)) && (0 === t.length || (1 === t.length && t[0].isComment)) ? void 0 : t;
771
+ }
772
+ return n.proxy && Object.defineProperty(t, e, { get: r, enumerable: !0, configurable: !0 }), r;
773
+ })(e, c, t[c]));
774
+ } else r = {};
775
+ for (o in e)
776
+ o in r ||
777
+ (r[o] = (function (t, e) {
778
+ return function () {
779
+ return t[e];
780
+ };
781
+ })(e, o));
782
+ return t && Object.isExtensible(t) && (t._normalized = r), R(r, "$stable", a), R(r, "$key", s), R(r, "$hasNormal", i), r;
783
+ }
784
+ function pe(t, e) {
785
+ var n, r, o, i, a;
786
+ if (Array.isArray(t) || "string" == typeof t) for (n = new Array(t.length), r = 0, o = t.length; r < o; r++) n[r] = e(t[r], r);
787
+ else if ("number" == typeof t) for (n = new Array(t), r = 0; r < t; r++) n[r] = e(r + 1, r);
788
+ else if (L(t))
789
+ if (it && t[Symbol.iterator]) {
790
+ n = [];
791
+ for (var s = t[Symbol.iterator](), c = s.next(); !c.done; ) n.push(e(c.value, n.length)), (c = s.next());
792
+ } else for (i = Object.keys(t), n = new Array(i.length), r = 0, o = i.length; r < o; r++) (a = i[r]), (n[r] = e(t[a], a, r));
793
+ return I(n) || (n = []), (n._isVList = !0), n;
794
+ }
795
+ function de(t, e, n, r) {
796
+ var o = this.$scopedSlots[t],
797
+ e = o ? ((n = n || {}), r && (n = w(w({}, r), n)), o(n) || e) : this.$slots[t] || e,
798
+ n = n && n.slot;
799
+ return n ? this.$createElement("template", { slot: n }, e) : e;
800
+ }
801
+ function he(t) {
802
+ return Lt(this.$options, "filters", t) || C;
803
+ }
804
+ function ve(t, e) {
805
+ return Array.isArray(t) ? -1 === t.indexOf(e) : t !== e;
806
+ }
807
+ function me(t, e, n, r, o) {
808
+ n = M.keyCodes[e] || n;
809
+ return o && r && !M.keyCodes[e] ? ve(o, r) : n ? ve(n, t) : r ? g(r) !== e : void 0;
810
+ }
811
+ function ye(r, o, i, a, s) {
812
+ if (i && L(i)) {
813
+ var c;
814
+ Array.isArray(i) && (i = x(i));
815
+ for (var t in i)
816
+ !(function (e) {
817
+ c = "class" === e || "style" === e || f(e) ? r : ((n = r.attrs && r.attrs.type), a || M.mustUseProp(o, n, e) ? r.domProps || (r.domProps = {}) : r.attrs || (r.attrs = {}));
818
+ var t = m(e),
819
+ n = g(e);
820
+ t in c ||
821
+ n in c ||
822
+ ((c[e] = i[e]),
823
+ s &&
824
+ ((r.on || (r.on = {}))["update:" + e] = function (t) {
825
+ i[e] = t;
826
+ }));
827
+ })(t);
828
+ }
829
+ return r;
830
+ }
831
+ function ge(t, e) {
832
+ var n = this._staticTrees || (this._staticTrees = []),
833
+ r = n[t];
834
+ return (r && !e) || be((r = n[t] = this.$options.staticRenderFns[t].call(this._renderProxy, null, this)), "__static__" + t, !1), r;
835
+ }
836
+ function _e(t, e, n) {
837
+ return be(t, "__once__" + e + (n ? "_" + n : ""), !0), t;
838
+ }
839
+ function be(t, e, n) {
840
+ if (Array.isArray(t)) for (var r = 0; r < t.length; r++) t[r] && "string" != typeof t[r] && we(t[r], e + "_" + r, n);
841
+ else we(t, e, n);
842
+ }
843
+ function we(t, e, n) {
844
+ (t.isStatic = !0), (t.key = e), (t.isOnce = n);
845
+ }
846
+ function xe(t, e) {
847
+ if (e && c(e)) {
848
+ var n,
849
+ r = (t.on = t.on ? w({}, t.on) : {});
850
+ for (n in e) {
851
+ var o = r[n],
852
+ i = e[n];
853
+ r[n] = o ? [].concat(o, i) : i;
854
+ }
855
+ }
856
+ return t;
857
+ }
858
+ function $e(t, e, n, r) {
859
+ e = e || { $stable: !n };
860
+ for (var o = 0; o < t.length; o++) {
861
+ var i = t[o];
862
+ Array.isArray(i) ? $e(i, e, n) : i && (i.proxy && (i.fn.proxy = !0), (e[i.key] = i.fn));
863
+ }
864
+ return r && (e.$key = r), e;
865
+ }
866
+ function ke(t, e) {
867
+ for (var n = 0; n < e.length; n += 2) {
868
+ var r = e[n];
869
+ "string" == typeof r && r && (t[e[n]] = e[n + 1]);
870
+ }
871
+ return t;
872
+ }
873
+ function Ce(t, e) {
874
+ return "string" == typeof t ? e + t : t;
875
+ }
876
+ function Oe(t) {
877
+ (t._o = _e), (t._n = N), (t._s = e), (t._l = pe), (t._t = de), (t._q = A), (t._i = S), (t._m = ge), (t._f = he), (t._k = me), (t._b = ye), (t._v = mt), (t._e = vt), (t._u = $e), (t._g = xe), (t._d = ke), (t._p = Ce);
878
+ }
879
+ function Ae(t, e, n, o, r) {
880
+ var i,
881
+ a = this,
882
+ s = r.options;
883
+ p(o, "_uid") ? ((i = Object.create(o))._original = o) : (o = (i = o)._original);
884
+ var r = O(s._compiled),
885
+ c = !r;
886
+ (this.data = t),
887
+ (this.props = e),
888
+ (this.children = n),
889
+ (this.parent = o),
890
+ (this.listeners = t.on || d),
891
+ (this.injections = ce(s.inject, o)),
892
+ (this.slots = function () {
893
+ return a.$slots || fe(t.scopedSlots, (a.$slots = le(n, o))), a.$slots;
894
+ }),
895
+ Object.defineProperty(this, "scopedSlots", {
896
+ enumerable: !0,
897
+ get: function () {
898
+ return fe(t.scopedSlots, this.slots());
899
+ },
900
+ }),
901
+ r && ((this.$options = s), (this.$slots = this.slots()), (this.$scopedSlots = fe(t.scopedSlots, this.$slots))),
902
+ s._scopeId
903
+ ? (this._c = function (t, e, n, r) {
904
+ r = Le(i, t, e, n, r, c);
905
+ return r && !Array.isArray(r) && ((r.fnScopeId = s._scopeId), (r.fnContext = o)), r;
906
+ })
907
+ : (this._c = function (t, e, n, r) {
908
+ return Le(i, t, e, n, r, c);
909
+ });
910
+ }
911
+ function Se(t, e, n, r) {
912
+ t = yt(t);
913
+ return (t.fnContext = n), (t.fnOptions = r), e.slot && ((t.data || (t.data = {})).slot = e.slot), t;
914
+ }
915
+ function Te(t, e) {
916
+ for (var n in e) t[m(n)] = e[n];
917
+ }
918
+ Oe(Ae.prototype);
919
+ var je = {
920
+ init: function (t, e) {
921
+ var n, r, o;
922
+ t.componentInstance && !t.componentInstance._isDestroyed && t.data.keepAlive
923
+ ? je.prepatch(t, t)
924
+ : (t.componentInstance =
925
+ ((r = { _isComponent: !0, _parentVnode: (n = t), parent: We }), I((o = n.data.inlineTemplate)) && ((r.render = o.render), (r.staticRenderFns = o.staticRenderFns)), new n.componentOptions.Ctor(r))).$mount(
926
+ e ? t.elm : void 0,
927
+ e
928
+ );
929
+ },
930
+ prepatch: function (t, e) {
931
+ var n = e.componentOptions;
932
+ !(function (t, e, n, r, o) {
933
+ var i = r.data.scopedSlots,
934
+ a = t.$scopedSlots,
935
+ a = !!((i && !i.$stable) || (a !== d && !a.$stable) || (i && t.$scopedSlots.$key !== i.$key)),
936
+ i = !!(o || t.$options._renderChildren || a);
937
+ if (((t.$options._parentVnode = r), (t.$vnode = r), t._vnode && (t._vnode.parent = r), (t.$options._renderChildren = o), (t.$attrs = r.data.attrs || d), (t.$listeners = n || d), e && t.$options.props)) {
938
+ xt(!1);
939
+ for (var s = t._props, c = t.$options._propKeys || [], l = 0; l < c.length; l++) {
940
+ var u = c[l],
941
+ f = t.$options.props;
942
+ s[u] = Nt(u, f, e, t);
943
+ }
944
+ xt(!0), (t.$options.propsData = e);
945
+ }
946
+ n = n || d;
947
+ a = t.$options._parentListeners;
948
+ (t.$options._parentListeners = n), Ve(t, n, a), i && ((t.$slots = le(o, r.context)), t.$forceUpdate());
949
+ })((e.componentInstance = t.componentInstance), n.propsData, n.listeners, e, n.children);
950
+ },
951
+ insert: function (t) {
952
+ var e = t.context,
953
+ n = t.componentInstance;
954
+ n._isMounted || ((n._isMounted = !0), Ke(n, "mounted")), t.data.keepAlive && (e._isMounted ? ((n._inactive = !1), Ye.push(n)) : Ge(n, !0));
955
+ },
956
+ destroy: function (t) {
957
+ var e = t.componentInstance;
958
+ e._isDestroyed ||
959
+ (t.data.keepAlive
960
+ ? (function t(e, n) {
961
+ if (!((n && ((e._directInactive = !0), Je(e))) || e._inactive)) {
962
+ e._inactive = !0;
963
+ for (var r = 0; r < e.$children.length; r++) t(e.$children[r]);
964
+ Ke(e, "deactivated");
965
+ }
966
+ })(e, !0)
967
+ : e.$destroy());
968
+ },
969
+ },
970
+ Ee = Object.keys(je);
971
+ function Me(a, s, t, e, n) {
972
+ if (!P(a)) {
973
+ var r,
974
+ o = t.$options._base;
975
+ if ((L(a) && (a = o.extend(a)), "function" == typeof a)) {
976
+ if (
977
+ P(a.cid) &&
978
+ void 0 ===
979
+ (a = (function (e, n) {
980
+ if (O(e.error) && I(e.errorComp)) return e.errorComp;
981
+ if (I(e.resolved)) return e.resolved;
982
+ var t = De;
983
+ if ((t && I(e.owners) && -1 === e.owners.indexOf(t) && e.owners.push(t), O(e.loading) && I(e.loadingComp))) return e.loadingComp;
984
+ if (t && !I(e.owners)) {
985
+ var r = (e.owners = [t]),
986
+ o = !0,
987
+ i = null,
988
+ a = null;
989
+ t.$on("hook:destroyed", function () {
990
+ return v(r, t);
991
+ });
992
+ var s = function (t) {
993
+ for (var e = 0, n = r.length; e < n; e++) r[e].$forceUpdate();
994
+ t && ((r.length = 0), null !== i && (clearTimeout(i), (i = null)), null !== a && (clearTimeout(a), (a = null)));
995
+ },
996
+ c = D(function (t) {
997
+ (e.resolved = Fe(t, n)), o ? (r.length = 0) : s(!0);
998
+ }),
999
+ l = D(function (t) {
1000
+ I(e.errorComp) && ((e.error = !0), s(!0));
1001
+ }),
1002
+ u = e(c, l);
1003
+ return (
1004
+ L(u) &&
1005
+ (h(u)
1006
+ ? P(e.resolved) && u.then(c, l)
1007
+ : h(u.component) &&
1008
+ (u.component.then(c, l),
1009
+ I(u.error) && (e.errorComp = Fe(u.error, n)),
1010
+ I(u.loading) &&
1011
+ ((e.loadingComp = Fe(u.loading, n)),
1012
+ 0 === u.delay
1013
+ ? (e.loading = !0)
1014
+ : (i = setTimeout(function () {
1015
+ (i = null), P(e.resolved) && P(e.error) && ((e.loading = !0), s(!1));
1016
+ }, u.delay || 200))),
1017
+ I(u.timeout) &&
1018
+ (a = setTimeout(function () {
1019
+ (a = null), P(e.resolved) && l(null);
1020
+ }, u.timeout)))),
1021
+ (o = !1),
1022
+ e.loading ? e.loadingComp : e.resolved
1023
+ );
1024
+ }
1025
+ })((r = a), o))
1026
+ )
1027
+ return (c = r), (l = s), (u = t), (o = e), (f = n), ((p = vt()).asyncFactory = c), (p.asyncMeta = { data: l, context: u, children: o, tag: f }), p;
1028
+ (s = s || {}),
1029
+ gn(a),
1030
+ I(s.model) &&
1031
+ (function (t, e) {
1032
+ var n = (t.model && t.model.prop) || "value",
1033
+ r = (t.model && t.model.event) || "input";
1034
+ (e.attrs || (e.attrs = {}))[n] = e.model.value;
1035
+ (t = e.on || (e.on = {})), (n = t[r]), (e = e.model.callback);
1036
+ I(n) ? (Array.isArray(n) ? -1 === n.indexOf(e) : n !== e) && (t[r] = [e].concat(n)) : (t[r] = e);
1037
+ })(a.options, s);
1038
+ f = (function () {
1039
+ var t = a.options.props;
1040
+ if (!P(t)) {
1041
+ var e = {},
1042
+ n = s.attrs,
1043
+ r = s.props;
1044
+ if (I(n) || I(r))
1045
+ for (var o in t) {
1046
+ var i = g(o);
1047
+ ie(e, r, o, i, !0) || ie(e, n, o, i, !1);
1048
+ }
1049
+ return e;
1050
+ }
1051
+ })();
1052
+ if (O(a.options.functional))
1053
+ return (function (t, e, n, r, o) {
1054
+ var i = t.options,
1055
+ a = {},
1056
+ s = i.props;
1057
+ if (I(s)) for (var c in s) a[c] = Nt(c, s, e || d);
1058
+ else I(n.attrs) && Te(a, n.attrs), I(n.props) && Te(a, n.props);
1059
+ var l = new Ae(n, a, o, r, t),
1060
+ t = i.render.call(null, l._c, l);
1061
+ if (t instanceof dt) return Se(t, n, l.parent, i);
1062
+ if (Array.isArray(t)) {
1063
+ for (var u = ae(t) || [], f = new Array(u.length), p = 0; p < u.length; p++) f[p] = Se(u[p], n, l.parent, i);
1064
+ return f;
1065
+ }
1066
+ })(a, f, s, t, e);
1067
+ p = s.on;
1068
+ (s.on = s.nativeOn),
1069
+ O(a.options.abstract) && ((i = s.slot), (s = {}), i && (s.slot = i)),
1070
+ (function () {
1071
+ for (var t = s.hook || (s.hook = {}), e = 0; e < Ee.length; e++) {
1072
+ var n = Ee[e],
1073
+ r = t[n],
1074
+ o = je[n];
1075
+ r === o ||
1076
+ (r && r._merged) ||
1077
+ (t[n] = r
1078
+ ? (function (n, r) {
1079
+ function t(t, e) {
1080
+ n(t, e), r(t, e);
1081
+ }
1082
+ return (t._merged = !0), t;
1083
+ })(o, r)
1084
+ : o);
1085
+ }
1086
+ })();
1087
+ var i = a.options.name || n;
1088
+ return new dt("vue-component-" + a.cid + (i ? "-" + i : ""), s, void 0, void 0, void 0, t, { Ctor: a, propsData: f, listeners: p, tag: n, children: e }, r);
1089
+ }
1090
+ }
1091
+ var c, l, u, f, p;
1092
+ }
1093
+ var Pe = 1,
1094
+ Ie = 2;
1095
+ function Le(t, e, n, r, o, i) {
1096
+ return (
1097
+ (Array.isArray(n) || l(n)) && ((o = r), (r = n), (n = void 0)),
1098
+ O(i) && (o = Ie),
1099
+ (t = t),
1100
+ (e = e),
1101
+ (r = r),
1102
+ (o = o),
1103
+ I((n = n)) && I(n.__ob__)
1104
+ ? vt()
1105
+ : (I(n) && I(n.is) && (e = n.is),
1106
+ e
1107
+ ? (Array.isArray(r) && "function" == typeof r[0] && (((n = n || {}).scopedSlots = { default: r[0] }), (r.length = 0)),
1108
+ o === Ie
1109
+ ? (r = ae(r))
1110
+ : o === Pe &&
1111
+ (r = (function (t) {
1112
+ for (var e = 0; e < t.length; e++) if (Array.isArray(t[e])) return Array.prototype.concat.apply([], t);
1113
+ return t;
1114
+ })(r)),
1115
+ (r =
1116
+ "string" == typeof e
1117
+ ? ((a = (t.$vnode && t.$vnode.ns) || M.getTagNamespace(e)),
1118
+ M.isReservedTag(e) ? new dt(M.parsePlatformTagName(e), n, r, void 0, void 0, t) : (n && n.pre) || !I((s = Lt(t.$options, "components", e))) ? new dt(e, n, r, void 0, void 0, t) : Me(s, n, t, r, e))
1119
+ : Me(e, n, t, r)),
1120
+ Array.isArray(r)
1121
+ ? r
1122
+ : I(r)
1123
+ ? (I(a) &&
1124
+ (function t(e, n, r) {
1125
+ if (((e.ns = n), "foreignObject" === e.tag && (r = !(n = void 0)), I(e.children)))
1126
+ for (var o = 0, i = e.children.length; o < i; o++) {
1127
+ var a = e.children[o];
1128
+ I(a.tag) && (P(a.ns) || (O(r) && "svg" !== a.tag)) && t(a, n, r);
1129
+ }
1130
+ })(r, a),
1131
+ I(n) && (L((n = n).style) && te(n.style), L(n.class) && te(n.class)),
1132
+ r)
1133
+ : vt())
1134
+ : vt())
1135
+ );
1136
+ var a, s;
1137
+ }
1138
+ var Ne,
1139
+ De = null;
1140
+ function Fe(t, e) {
1141
+ return (t.__esModule || (it && "Module" === t[Symbol.toStringTag])) && (t = t.default), L(t) ? e.extend(t) : t;
1142
+ }
1143
+ function Re(t) {
1144
+ return t.isComment && t.asyncFactory;
1145
+ }
1146
+ function ze(t) {
1147
+ if (Array.isArray(t))
1148
+ for (var e = 0; e < t.length; e++) {
1149
+ var n = t[e];
1150
+ if (I(n) && (I(n.componentOptions) || Re(n))) return n;
1151
+ }
1152
+ }
1153
+ function He(t, e) {
1154
+ Ne.$on(t, e);
1155
+ }
1156
+ function Ue(t, e) {
1157
+ Ne.$off(t, e);
1158
+ }
1159
+ function Be(e, n) {
1160
+ var r = Ne;
1161
+ return function t() {
1162
+ null !== n.apply(null, arguments) && r.$off(e, t);
1163
+ };
1164
+ }
1165
+ function Ve(t, e, n) {
1166
+ re(e, n || {}, He, Ue, Be, (Ne = t)), (Ne = void 0);
1167
+ }
1168
+ var We = null;
1169
+ function qe(t) {
1170
+ var e = We;
1171
+ return (
1172
+ (We = t),
1173
+ function () {
1174
+ We = e;
1175
+ }
1176
+ );
1177
+ }
1178
+ function Je(t) {
1179
+ for (; (t = t && t.$parent); ) if (t._inactive) return 1;
1180
+ }
1181
+ function Ge(t, e) {
1182
+ if (e) {
1183
+ if (((t._directInactive = !1), Je(t))) return;
1184
+ } else if (t._directInactive) return;
1185
+ if (t._inactive || null === t._inactive) {
1186
+ t._inactive = !1;
1187
+ for (var n = 0; n < t.$children.length; n++) Ge(t.$children[n]);
1188
+ Ke(t, "activated");
1189
+ }
1190
+ }
1191
+ function Ke(t, e) {
1192
+ ft();
1193
+ var n = t.$options[e],
1194
+ r = e + " hook";
1195
+ if (n) for (var o = 0, i = n.length; o < i; o++) Ht(n[o], t, null, t, r);
1196
+ t._hasHookEvent && t.$emit("hook:" + e), pt();
1197
+ }
1198
+ var Xe,
1199
+ Qe = [],
1200
+ Ye = [],
1201
+ Ze = {},
1202
+ tn = !1,
1203
+ en = !1,
1204
+ nn = 0,
1205
+ rn = 0,
1206
+ on = Date.now;
1207
+ function an() {
1208
+ var t, e;
1209
+ for (
1210
+ rn = on(),
1211
+ en = !0,
1212
+ Qe.sort(function (t, e) {
1213
+ return t.id - e.id;
1214
+ }),
1215
+ nn = 0;
1216
+ nn < Qe.length;
1217
+ nn++
1218
+ )
1219
+ (t = Qe[nn]).before && t.before(), (e = t.id), (Ze[e] = null), t.run();
1220
+ var n = Ye.slice(),
1221
+ r = Qe.slice();
1222
+ (nn = Qe.length = Ye.length = 0),
1223
+ (tn = en = !(Ze = {})),
1224
+ (function (t) {
1225
+ for (var e = 0; e < t.length; e++) (t[e]._inactive = !0), Ge(t[e], !0);
1226
+ })(n),
1227
+ (function (t) {
1228
+ for (var e = t.length; e--; ) {
1229
+ var n = t[e],
1230
+ r = n.vm;
1231
+ r._watcher === n && r._isMounted && !r._isDestroyed && Ke(r, "updated");
1232
+ }
1233
+ })(r),
1234
+ nt && M.devtools && nt.emit("flush");
1235
+ }
1236
+ function sn(t, e, n, r, o) {
1237
+ (this.vm = t),
1238
+ o && (t._watcher = this),
1239
+ t._watchers.push(this),
1240
+ r ? ((this.deep = !!r.deep), (this.user = !!r.user), (this.lazy = !!r.lazy), (this.sync = !!r.sync), (this.before = r.before)) : (this.deep = this.user = this.lazy = this.sync = !1),
1241
+ (this.cb = n),
1242
+ (this.id = ++cn),
1243
+ (this.active = !0),
1244
+ (this.dirty = this.lazy),
1245
+ (this.deps = []),
1246
+ (this.newDeps = []),
1247
+ (this.depIds = new ot()),
1248
+ (this.newDepIds = new ot()),
1249
+ (this.expression = ""),
1250
+ "function" == typeof e
1251
+ ? (this.getter = e)
1252
+ : ((this.getter = (function (t) {
1253
+ if (!H.test(t)) {
1254
+ var n = t.split(".");
1255
+ return function (t) {
1256
+ for (var e = 0; e < n.length; e++) {
1257
+ if (!t) return;
1258
+ t = t[n[e]];
1259
+ }
1260
+ return t;
1261
+ };
1262
+ }
1263
+ })(e)),
1264
+ this.getter || (this.getter = $)),
1265
+ (this.value = this.lazy ? void 0 : this.get());
1266
+ }
1267
+ !B ||
1268
+ J ||
1269
+ ((Xe = window.performance) &&
1270
+ "function" == typeof Xe.now &&
1271
+ on() > document.createEvent("Event").timeStamp &&
1272
+ (on = function () {
1273
+ return Xe.now();
1274
+ }));
1275
+ var cn = 0;
1276
+ (sn.prototype.get = function () {
1277
+ var t;
1278
+ ft(this);
1279
+ var e = this.vm;
1280
+ try {
1281
+ t = this.getter.call(e, e);
1282
+ } catch (t) {
1283
+ if (!this.user) throw t;
1284
+ zt(t, e, 'getter for watcher "' + this.expression + '"');
1285
+ } finally {
1286
+ this.deep && te(t), pt(), this.cleanupDeps();
1287
+ }
1288
+ return t;
1289
+ }),
1290
+ (sn.prototype.addDep = function (t) {
1291
+ var e = t.id;
1292
+ this.newDepIds.has(e) || (this.newDepIds.add(e), this.newDeps.push(t), this.depIds.has(e) || t.addSub(this));
1293
+ }),
1294
+ (sn.prototype.cleanupDeps = function () {
1295
+ for (var t = this.deps.length; t--; ) {
1296
+ var e = this.deps[t];
1297
+ this.newDepIds.has(e.id) || e.removeSub(this);
1298
+ }
1299
+ var n = this.depIds;
1300
+ (this.depIds = this.newDepIds), (this.newDepIds = n), this.newDepIds.clear(), (n = this.deps), (this.deps = this.newDeps), (this.newDeps = n), (this.newDeps.length = 0);
1301
+ }),
1302
+ (sn.prototype.update = function () {
1303
+ this.lazy
1304
+ ? (this.dirty = !0)
1305
+ : this.sync
1306
+ ? this.run()
1307
+ : (function (t) {
1308
+ var e = t.id;
1309
+ if (null == Ze[e]) {
1310
+ if (((Ze[e] = !0), en)) {
1311
+ for (var n = Qe.length - 1; nn < n && Qe[n].id > t.id; ) n--;
1312
+ Qe.splice(n + 1, 0, t);
1313
+ } else Qe.push(t);
1314
+ tn || ((tn = !0), Yt(an));
1315
+ }
1316
+ })(this);
1317
+ }),
1318
+ (sn.prototype.run = function () {
1319
+ if (this.active) {
1320
+ var t = this.get();
1321
+ if (t !== this.value || L(t) || this.deep) {
1322
+ var e = this.value;
1323
+ if (((this.value = t), this.user))
1324
+ try {
1325
+ this.cb.call(this.vm, t, e);
1326
+ } catch (t) {
1327
+ zt(t, this.vm, 'callback for watcher "' + this.expression + '"');
1328
+ }
1329
+ else this.cb.call(this.vm, t, e);
1330
+ }
1331
+ }
1332
+ }),
1333
+ (sn.prototype.evaluate = function () {
1334
+ (this.value = this.get()), (this.dirty = !1);
1335
+ }),
1336
+ (sn.prototype.depend = function () {
1337
+ for (var t = this.deps.length; t--; ) this.deps[t].depend();
1338
+ }),
1339
+ (sn.prototype.teardown = function () {
1340
+ if (this.active) {
1341
+ this.vm._isBeingDestroyed || v(this.vm._watchers, this);
1342
+ for (var t = this.deps.length; t--; ) this.deps[t].removeSub(this);
1343
+ this.active = !1;
1344
+ }
1345
+ });
1346
+ var ln = { enumerable: !0, configurable: !0, get: $, set: $ };
1347
+ function un(t, e, n) {
1348
+ (ln.get = function () {
1349
+ return this[e][n];
1350
+ }),
1351
+ (ln.set = function (t) {
1352
+ this[e][n] = t;
1353
+ }),
1354
+ Object.defineProperty(t, n, ln);
1355
+ }
1356
+ var fn = { lazy: !0 };
1357
+ function pn(t, e, n) {
1358
+ var r = !et();
1359
+ "function" == typeof n ? ((ln.get = r ? dn(e) : hn(n)), (ln.set = $)) : ((ln.get = n.get ? (r && !1 !== n.cache ? dn(e) : hn(n.get)) : $), (ln.set = n.set || $)), Object.defineProperty(t, e, ln);
1360
+ }
1361
+ function dn(e) {
1362
+ return function () {
1363
+ var t = this._computedWatchers && this._computedWatchers[e];
1364
+ if (t) return t.dirty && t.evaluate(), lt.target && t.depend(), t.value;
1365
+ };
1366
+ }
1367
+ function hn(t) {
1368
+ return function () {
1369
+ return t.call(this, this);
1370
+ };
1371
+ }
1372
+ function vn(t, e, n, r) {
1373
+ return c(n) && (n = (r = n).handler), "string" == typeof n && (n = t[n]), t.$watch(e, n, r);
1374
+ }
1375
+ var mn,
1376
+ yn = 0;
1377
+ function gn(o) {
1378
+ var t,
1379
+ e,
1380
+ n = o.options;
1381
+ return (
1382
+ !o.super ||
1383
+ ((t = gn(o.super)) !== o.superOptions &&
1384
+ ((o.superOptions = t),
1385
+ (e = (function () {
1386
+ var t,
1387
+ e,
1388
+ n = o.options,
1389
+ r = o.sealedOptions;
1390
+ for (e in n) n[e] !== r[e] && ((t = t || {})[e] = n[e]);
1391
+ return t;
1392
+ })()) && w(o.extendOptions, e),
1393
+ (n = o.options = It(t, o.extendOptions)).name && (n.components[n.name] = o))),
1394
+ n
1395
+ );
1396
+ }
1397
+ function _n(t) {
1398
+ this._init(t);
1399
+ }
1400
+ function bn(t) {
1401
+ return t && (t.Ctor.options.name || t.tag);
1402
+ }
1403
+ function wn(t, e) {
1404
+ return Array.isArray(t) ? -1 < t.indexOf(e) : "string" == typeof t ? -1 < t.split(",").indexOf(e) : "[object RegExp]" === n.call(t) && t.test(e);
1405
+ }
1406
+ function xn(t, e) {
1407
+ var n,
1408
+ r = t.cache,
1409
+ o = t.keys,
1410
+ i = t._vnode;
1411
+ for (n in r) {
1412
+ var a = r[n];
1413
+ !a || ((a = bn(a.componentOptions)) && !e(a) && $n(r, n, o, i));
1414
+ }
1415
+ }
1416
+ function $n(t, e, n, r) {
1417
+ var o = t[e];
1418
+ !o || (r && o.tag === r.tag) || o.componentInstance.$destroy(), (t[e] = null), v(n, e);
1419
+ }
1420
+ (_n.prototype._init = function (t) {
1421
+ var e,
1422
+ n,
1423
+ r = this;
1424
+ (r._uid = yn++),
1425
+ (r._isVue = !0),
1426
+ t && t._isComponent
1427
+ ? (function (t) {
1428
+ var e = (r.$options = Object.create(r.constructor.options)),
1429
+ n = t._parentVnode;
1430
+ e.parent = t.parent;
1431
+ n = (e._parentVnode = n).componentOptions;
1432
+ (e.propsData = n.propsData), (e._parentListeners = n.listeners), (e._renderChildren = n.children), (e._componentTag = n.tag), t.render && ((e.render = t.render), (e.staticRenderFns = t.staticRenderFns));
1433
+ })(t)
1434
+ : (r.$options = It(gn(r.constructor), t || {}, r)),
1435
+ (function (t) {
1436
+ var e = t.$options,
1437
+ n = e.parent;
1438
+ if (n && !e.abstract) {
1439
+ for (; n.$options.abstract && n.$parent; ) n = n.$parent;
1440
+ n.$children.push(t);
1441
+ }
1442
+ (t.$parent = n), (t.$root = n ? n.$root : t), (t.$children = []), (t.$refs = {}), (t._watcher = null), (t._inactive = null), (t._directInactive = !1), (t._isMounted = !1), (t._isDestroyed = !1), (t._isBeingDestroyed = !1);
1443
+ })(((r._renderProxy = r)._self = r)),
1444
+ (function (t) {
1445
+ (t._events = Object.create(null)), (t._hasHookEvent = !1);
1446
+ var e = t.$options._parentListeners;
1447
+ e && Ve(t, e);
1448
+ })(r),
1449
+ (function (o) {
1450
+ (o._vnode = null), (o._staticTrees = null);
1451
+ var t = o.$options,
1452
+ e = (o.$vnode = t._parentVnode),
1453
+ n = e && e.context;
1454
+ (o.$slots = le(t._renderChildren, n)),
1455
+ (o.$scopedSlots = d),
1456
+ (o._c = function (t, e, n, r) {
1457
+ return Le(o, t, e, n, r, !1);
1458
+ }),
1459
+ (o.$createElement = function (t, e, n, r) {
1460
+ return Le(o, t, e, n, r, !0);
1461
+ });
1462
+ e = e && e.data;
1463
+ Ct(o, "$attrs", (e && e.attrs) || d, null, !0), Ct(o, "$listeners", t._parentListeners || d, null, !0);
1464
+ })(r),
1465
+ Ke(r, "beforeCreate"),
1466
+ (n = ce((e = r).$options.inject, e)) &&
1467
+ (xt(!1),
1468
+ Object.keys(n).forEach(function (t) {
1469
+ Ct(e, t, n[t]);
1470
+ }),
1471
+ xt(!0)),
1472
+ (function (t) {
1473
+ t._watchers = [];
1474
+ var e = t.$options;
1475
+ e.props &&
1476
+ (function (n, r) {
1477
+ var t,
1478
+ o = n.$options.propsData || {},
1479
+ i = (n._props = {}),
1480
+ a = (n.$options._propKeys = []);
1481
+ for (t in (n.$parent && xt(!1), r))
1482
+ !(function (t) {
1483
+ a.push(t);
1484
+ var e = Nt(t, r, o, n);
1485
+ Ct(i, t, e), t in n || un(n, "_props", t);
1486
+ })(t);
1487
+ xt(!0);
1488
+ })(t, e.props),
1489
+ e.methods &&
1490
+ (function (t, e) {
1491
+ for (var n in (t.$options.props, e)) t[n] = "function" != typeof e[n] ? $ : _(e[n], t);
1492
+ })(t, e.methods),
1493
+ e.data
1494
+ ? (function (t) {
1495
+ var e = t.$options.data;
1496
+ c(
1497
+ (e = t._data =
1498
+ "function" == typeof e
1499
+ ? (function (t, e) {
1500
+ ft();
1501
+ try {
1502
+ return t.call(e, e);
1503
+ } catch (t) {
1504
+ return zt(t, e, "data()"), {};
1505
+ } finally {
1506
+ pt();
1507
+ }
1508
+ })(e, t)
1509
+ : e || {})
1510
+ ) || (e = {});
1511
+ for (var n, r = Object.keys(e), o = t.$options.props, i = (t.$options.methods, r.length); i--; ) {
1512
+ var a = r[i];
1513
+ (o && p(o, a)) || (36 !== (n = (a + "").charCodeAt(0)) && 95 !== n && un(t, "_data", a));
1514
+ }
1515
+ kt(e, !0);
1516
+ })(t)
1517
+ : kt((t._data = {}), !0),
1518
+ e.computed &&
1519
+ (function (t, e) {
1520
+ var n,
1521
+ r = (t._computedWatchers = Object.create(null)),
1522
+ o = et();
1523
+ for (n in e) {
1524
+ var i = e[n],
1525
+ a = "function" == typeof i ? i : i.get;
1526
+ o || (r[n] = new sn(t, a || $, $, fn)), n in t || pn(t, n, i);
1527
+ }
1528
+ })(t, e.computed),
1529
+ e.watch &&
1530
+ e.watch !== Y &&
1531
+ (function (t, e) {
1532
+ for (var n in e) {
1533
+ var r = e[n];
1534
+ if (Array.isArray(r)) for (var o = 0; o < r.length; o++) vn(t, n, r[o]);
1535
+ else vn(t, n, r);
1536
+ }
1537
+ })(t, e.watch);
1538
+ })(r),
1539
+ (t = r.$options.provide) && (r._provided = "function" == typeof t ? t.call(r) : t),
1540
+ Ke(r, "created"),
1541
+ r.$options.el && r.$mount(r.$options.el);
1542
+ }),
1543
+ (W = _n),
1544
+ Object.defineProperty(W.prototype, "$data", {
1545
+ get: function () {
1546
+ return this._data;
1547
+ },
1548
+ }),
1549
+ Object.defineProperty(W.prototype, "$props", {
1550
+ get: function () {
1551
+ return this._props;
1552
+ },
1553
+ }),
1554
+ (W.prototype.$set = Ot),
1555
+ (W.prototype.$delete = At),
1556
+ (W.prototype.$watch = function (t, e, n) {
1557
+ if (c(e)) return vn(this, t, e, n);
1558
+ (n = n || {}).user = !0;
1559
+ var r = new sn(this, t, e, n);
1560
+ if (n.immediate)
1561
+ try {
1562
+ e.call(this, r.value);
1563
+ } catch (t) {
1564
+ zt(t, this, 'callback for immediate watcher "' + r.expression + '"');
1565
+ }
1566
+ return function () {
1567
+ r.teardown();
1568
+ };
1569
+ }),
1570
+ (mn = /^hook:/),
1571
+ ((q = _n).prototype.$on = function (t, e) {
1572
+ var n = this;
1573
+ if (Array.isArray(t)) for (var r = 0, o = t.length; r < o; r++) n.$on(t[r], e);
1574
+ else (n._events[t] || (n._events[t] = [])).push(e), mn.test(t) && (n._hasHookEvent = !0);
1575
+ return n;
1576
+ }),
1577
+ (q.prototype.$once = function (t, e) {
1578
+ var n = this;
1579
+ function r() {
1580
+ n.$off(t, r), e.apply(n, arguments);
1581
+ }
1582
+ return (r.fn = e), n.$on(t, r), n;
1583
+ }),
1584
+ (q.prototype.$off = function (t, e) {
1585
+ var n = this;
1586
+ if (!arguments.length) return (n._events = Object.create(null)), n;
1587
+ if (Array.isArray(t)) {
1588
+ for (var r = 0, o = t.length; r < o; r++) n.$off(t[r], e);
1589
+ return n;
1590
+ }
1591
+ var i,
1592
+ a = n._events[t];
1593
+ if (!a) return n;
1594
+ if (!e) return (n._events[t] = null), n;
1595
+ for (var s = a.length; s--; )
1596
+ if ((i = a[s]) === e || i.fn === e) {
1597
+ a.splice(s, 1);
1598
+ break;
1599
+ }
1600
+ return n;
1601
+ }),
1602
+ (q.prototype.$emit = function (t) {
1603
+ var e = this._events[t];
1604
+ if (e) {
1605
+ e = 1 < e.length ? b(e) : e;
1606
+ for (var n = b(arguments, 1), r = 'event handler for "' + t + '"', o = 0, i = e.length; o < i; o++) Ht(e[o], this, n, this, r);
1607
+ }
1608
+ return this;
1609
+ }),
1610
+ ((ht = _n).prototype._update = function (t, e) {
1611
+ var n = this,
1612
+ r = n.$el,
1613
+ o = n._vnode,
1614
+ i = qe(n);
1615
+ (n._vnode = t), (n.$el = o ? n.__patch__(o, t) : n.__patch__(n.$el, t, e, !1)), i(), r && (r.__vue__ = null), n.$el && (n.$el.__vue__ = n), n.$vnode && n.$parent && n.$vnode === n.$parent._vnode && (n.$parent.$el = n.$el);
1616
+ }),
1617
+ (ht.prototype.$forceUpdate = function () {
1618
+ this._watcher && this._watcher.update();
1619
+ }),
1620
+ (ht.prototype.$destroy = function () {
1621
+ var t = this;
1622
+ if (!t._isBeingDestroyed) {
1623
+ Ke(t, "beforeDestroy"), (t._isBeingDestroyed = !0);
1624
+ var e = t.$parent;
1625
+ !e || e._isBeingDestroyed || t.$options.abstract || v(e.$children, t), t._watcher && t._watcher.teardown();
1626
+ for (var n = t._watchers.length; n--; ) t._watchers[n].teardown();
1627
+ t._data.__ob__ && t._data.__ob__.vmCount--, (t._isDestroyed = !0), t.__patch__(t._vnode, null), Ke(t, "destroyed"), t.$off(), t.$el && (t.$el.__vue__ = null), t.$vnode && (t.$vnode.parent = null);
1628
+ }
1629
+ }),
1630
+ Oe((E = _n).prototype),
1631
+ (E.prototype.$nextTick = function (t) {
1632
+ return Yt(t, this);
1633
+ }),
1634
+ (E.prototype._render = function () {
1635
+ var t,
1636
+ e = this,
1637
+ n = e.$options,
1638
+ r = n.render,
1639
+ o = n._parentVnode;
1640
+ o && (e.$scopedSlots = fe(o.data.scopedSlots, e.$slots, e.$scopedSlots)), (e.$vnode = o);
1641
+ try {
1642
+ (De = e), (t = r.call(e._renderProxy, e.$createElement));
1643
+ } catch (n) {
1644
+ zt(n, e, "render"), (t = e._vnode);
1645
+ } finally {
1646
+ De = null;
1647
+ }
1648
+ return Array.isArray(t) && 1 === t.length && (t = t[0]), t instanceof dt || (t = vt()), (t.parent = o), t;
1649
+ });
1650
+ var kn,
1651
+ Cn,
1652
+ On = [String, RegExp, Array],
1653
+ W = {
1654
+ KeepAlive: {
1655
+ name: "keep-alive",
1656
+ abstract: !0,
1657
+ props: { include: On, exclude: On, max: [String, Number] },
1658
+ created: function () {
1659
+ (this.cache = Object.create(null)), (this.keys = []);
1660
+ },
1661
+ destroyed: function () {
1662
+ for (var t in this.cache) $n(this.cache, t, this.keys);
1663
+ },
1664
+ mounted: function () {
1665
+ var t = this;
1666
+ this.$watch("include", function (e) {
1667
+ xn(t, function (t) {
1668
+ return wn(e, t);
1669
+ });
1670
+ }),
1671
+ this.$watch("exclude", function (e) {
1672
+ xn(t, function (t) {
1673
+ return !wn(e, t);
1674
+ });
1675
+ });
1676
+ },
1677
+ render: function () {
1678
+ var t = this.$slots.default,
1679
+ e = ze(t),
1680
+ n = e && e.componentOptions;
1681
+ if (n) {
1682
+ var r = bn(n),
1683
+ o = this.include,
1684
+ i = this.exclude;
1685
+ if ((o && (!r || !wn(o, r))) || (i && r && wn(i, r))) return e;
1686
+ (i = this.cache), (r = this.keys), (n = null == e.key ? n.Ctor.cid + (n.tag ? "::" + n.tag : "") : e.key);
1687
+ i[n] ? ((e.componentInstance = i[n].componentInstance), v(r, n), r.push(n)) : ((i[n] = e), r.push(n), this.max && r.length > parseInt(this.max) && $n(i, r[0], r, this._vnode)), (e.data.keepAlive = !0);
1688
+ }
1689
+ return e || (t && t[0]);
1690
+ },
1691
+ },
1692
+ };
1693
+ function An(t, e, n) {
1694
+ return ("value" === n && Sn(t) && "button" !== e) || ("selected" === n && "option" === t) || ("checked" === n && "input" === t) || ("muted" === n && "video" === t);
1695
+ }
1696
+ (kn = _n),
1697
+ (q = {
1698
+ get: function () {
1699
+ return M;
1700
+ },
1701
+ }),
1702
+ Object.defineProperty(kn, "config", q),
1703
+ (kn.util = { warn: st, extend: w, mergeOptions: It, defineReactive: Ct }),
1704
+ (kn.set = Ot),
1705
+ (kn.delete = At),
1706
+ (kn.nextTick = Yt),
1707
+ (kn.observable = function (t) {
1708
+ return kt(t), t;
1709
+ }),
1710
+ (kn.options = Object.create(null)),
1711
+ j.forEach(function (t) {
1712
+ kn.options[t + "s"] = Object.create(null);
1713
+ }),
1714
+ w((kn.options._base = kn).options.components, W),
1715
+ (kn.use = function (t) {
1716
+ var e = this._installedPlugins || (this._installedPlugins = []);
1717
+ if (-1 < e.indexOf(t)) return this;
1718
+ var n = b(arguments, 1);
1719
+ return n.unshift(this), "function" == typeof t.install ? t.install.apply(t, n) : "function" == typeof t && t.apply(null, n), e.push(t), this;
1720
+ }),
1721
+ (kn.mixin = function (t) {
1722
+ return (this.options = It(this.options, t)), this;
1723
+ }),
1724
+ (function (t) {
1725
+ t.cid = 0;
1726
+ var a = 1;
1727
+ t.extend = function (t) {
1728
+ t = t || {};
1729
+ var e = this,
1730
+ n = e.cid,
1731
+ r = t._Ctor || (t._Ctor = {});
1732
+ if (r[n]) return r[n];
1733
+ function o(t) {
1734
+ this._init(t);
1735
+ }
1736
+ var i = t.name || e.options.name;
1737
+ return (
1738
+ (((o.prototype = Object.create(e.prototype)).constructor = o).cid = a++),
1739
+ (o.options = It(e.options, t)),
1740
+ (o.super = e),
1741
+ o.options.props &&
1742
+ (function (t) {
1743
+ for (var e in t.options.props) un(t.prototype, "_props", e);
1744
+ })(o),
1745
+ o.options.computed &&
1746
+ (function (t) {
1747
+ var e,
1748
+ n = t.options.computed;
1749
+ for (e in n) pn(t.prototype, e, n[e]);
1750
+ })(o),
1751
+ (o.extend = e.extend),
1752
+ (o.mixin = e.mixin),
1753
+ (o.use = e.use),
1754
+ j.forEach(function (t) {
1755
+ o[t] = e[t];
1756
+ }),
1757
+ i && (o.options.components[i] = o),
1758
+ (o.superOptions = e.options),
1759
+ (o.extendOptions = t),
1760
+ (o.sealedOptions = w({}, o.options)),
1761
+ (r[n] = o)
1762
+ );
1763
+ };
1764
+ })(kn),
1765
+ (Cn = kn),
1766
+ j.forEach(function (n) {
1767
+ Cn[n] = function (t, e) {
1768
+ return e
1769
+ ? ("component" === n && c(e) && ((e.name = e.name || t), (e = this.options._base.extend(e))), "directive" === n && "function" == typeof e && (e = { bind: e, update: e }), (this.options[n + "s"][t] = e))
1770
+ : this.options[n + "s"][t];
1771
+ };
1772
+ }),
1773
+ Object.defineProperty(_n.prototype, "$isServer", { get: et }),
1774
+ Object.defineProperty(_n.prototype, "$ssrContext", {
1775
+ get: function () {
1776
+ return this.$vnode && this.$vnode.ssrContext;
1777
+ },
1778
+ }),
1779
+ Object.defineProperty(_n, "FunctionalRenderContext", { value: Ae }),
1780
+ (_n.version = "2.6.10");
1781
+ var ht = a("style,class"),
1782
+ Sn = a("input,textarea,option,select,progress"),
1783
+ Tn = a("contenteditable,draggable,spellcheck"),
1784
+ jn = a("events,caret,typing,plaintext-only"),
1785
+ En = function (t, e) {
1786
+ return Nn(e) || "false" === e ? "false" : "contenteditable" === t && jn(e) ? e : "true";
1787
+ },
1788
+ Mn = a(
1789
+ "allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"
1790
+ ),
1791
+ Pn = "http://www.w3.org/1999/xlink",
1792
+ In = function (t) {
1793
+ return ":" === t.charAt(5) && "xlink" === t.slice(0, 5);
1794
+ },
1795
+ Ln = function (t) {
1796
+ return In(t) ? t.slice(6, t.length) : "";
1797
+ },
1798
+ Nn = function (t) {
1799
+ return null == t || !1 === t;
1800
+ };
1801
+ function Dn(t, e) {
1802
+ return { staticClass: Fn(t.staticClass, e.staticClass), class: I(t.class) ? [t.class, e.class] : e.class };
1803
+ }
1804
+ function Fn(t, e) {
1805
+ return t ? (e ? t + " " + e : t) : e || "";
1806
+ }
1807
+ function Rn(t) {
1808
+ return Array.isArray(t)
1809
+ ? (function (t) {
1810
+ for (var e, n = "", r = 0, o = t.length; r < o; r++) I((e = Rn(t[r]))) && "" !== e && (n && (n += " "), (n += e));
1811
+ return n;
1812
+ })(t)
1813
+ : L(t)
1814
+ ? (function (t) {
1815
+ var e,
1816
+ n = "";
1817
+ for (e in t) t[e] && (n && (n += " "), (n += e));
1818
+ return n;
1819
+ })(t)
1820
+ : "string" == typeof t
1821
+ ? t
1822
+ : "";
1823
+ }
1824
+ function zn(t) {
1825
+ return Un(t) || Bn(t);
1826
+ }
1827
+ var Hn = { svg: "http://www.w3.org/2000/svg", math: "http://www.w3.org/1998/Math/MathML" },
1828
+ Un = a(
1829
+ "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"
1830
+ ),
1831
+ Bn = a("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view", !0);
1832
+ function Vn(t) {
1833
+ return Bn(t) ? "svg" : "math" === t ? "math" : void 0;
1834
+ }
1835
+ var Wn = Object.create(null),
1836
+ qn = a("text,number,password,search,email,tel,url");
1837
+ function Jn(t) {
1838
+ return "string" != typeof t ? t : document.querySelector(t) || document.createElement("div");
1839
+ }
1840
+ (E = Object.freeze({
1841
+ createElement: function (t, e) {
1842
+ var n = document.createElement(t);
1843
+ return "select" !== t || (e.data && e.data.attrs && void 0 !== e.data.attrs.multiple && n.setAttribute("multiple", "multiple")), n;
1844
+ },
1845
+ createElementNS: function (t, e) {
1846
+ return document.createElementNS(Hn[t], e);
1847
+ },
1848
+ createTextNode: function (t) {
1849
+ return document.createTextNode(t);
1850
+ },
1851
+ createComment: function (t) {
1852
+ return document.createComment(t);
1853
+ },
1854
+ insertBefore: function (t, e, n) {
1855
+ t.insertBefore(e, n);
1856
+ },
1857
+ removeChild: function (t, e) {
1858
+ t.removeChild(e);
1859
+ },
1860
+ appendChild: function (t, e) {
1861
+ t.appendChild(e);
1862
+ },
1863
+ parentNode: function (t) {
1864
+ return t.parentNode;
1865
+ },
1866
+ nextSibling: function (t) {
1867
+ return t.nextSibling;
1868
+ },
1869
+ tagName: function (t) {
1870
+ return t.tagName;
1871
+ },
1872
+ setTextContent: function (t, e) {
1873
+ t.textContent = e;
1874
+ },
1875
+ setStyleScope: function (t, e) {
1876
+ t.setAttribute(e, "");
1877
+ },
1878
+ })),
1879
+ (On = {
1880
+ create: function (t, e) {
1881
+ Gn(e);
1882
+ },
1883
+ update: function (t, e) {
1884
+ t.data.ref !== e.data.ref && (Gn(t, !0), Gn(e));
1885
+ },
1886
+ destroy: function (t) {
1887
+ Gn(t, !0);
1888
+ },
1889
+ });
1890
+ function Gn(t, e) {
1891
+ var n,
1892
+ r,
1893
+ o = t.data.ref;
1894
+ I(o) &&
1895
+ ((r = t.context),
1896
+ (n = t.componentInstance || t.elm),
1897
+ (r = r.$refs),
1898
+ e ? (Array.isArray(r[o]) ? v(r[o], n) : r[o] === n && (r[o] = void 0)) : t.data.refInFor ? (Array.isArray(r[o]) ? r[o].indexOf(n) < 0 && r[o].push(n) : (r[o] = [n])) : (r[o] = n));
1899
+ }
1900
+ var Kn = new dt("", {}, []),
1901
+ Xn = ["create", "activate", "update", "remove", "destroy"];
1902
+ function Qn(n, r) {
1903
+ return (
1904
+ n.key === r.key &&
1905
+ ((n.tag === r.tag &&
1906
+ n.isComment === r.isComment &&
1907
+ I(n.data) === I(r.data) &&
1908
+ (function () {
1909
+ if ("input" !== n.tag) return 1;
1910
+ var t = I((e = n.data)) && I((e = e.attrs)) && e.type,
1911
+ e = I((e = r.data)) && I((e = e.attrs)) && e.type;
1912
+ return t === e || (qn(t) && qn(e));
1913
+ })()) ||
1914
+ (O(n.isAsyncPlaceholder) && n.asyncFactory === r.asyncFactory && P(r.asyncFactory.error)))
1915
+ );
1916
+ }
1917
+ q = {
1918
+ create: Yn,
1919
+ update: Yn,
1920
+ destroy: function (t) {
1921
+ Yn(t, Kn);
1922
+ },
1923
+ };
1924
+ function Yn(t, e) {
1925
+ (t.data.directives || e.data.directives) &&
1926
+ (function (e, n) {
1927
+ var t,
1928
+ r,
1929
+ o,
1930
+ i,
1931
+ a = e === Kn,
1932
+ s = n === Kn,
1933
+ c = tr(e.data.directives, e.context),
1934
+ l = tr(n.data.directives, n.context),
1935
+ u = [],
1936
+ f = [];
1937
+ for (t in l) (r = c[t]), (o = l[t]), r ? ((o.oldValue = r.value), (o.oldArg = r.arg), er(o, "update", n, e), o.def && o.def.componentUpdated && f.push(o)) : (er(o, "bind", n, e), o.def && o.def.inserted && u.push(o));
1938
+ if (
1939
+ (u.length &&
1940
+ ((i = function () {
1941
+ for (var t = 0; t < u.length; t++) er(u[t], "inserted", n, e);
1942
+ }),
1943
+ a ? oe(n, "insert", i) : i()),
1944
+ f.length &&
1945
+ oe(n, "postpatch", function () {
1946
+ for (var t = 0; t < f.length; t++) er(f[t], "componentUpdated", n, e);
1947
+ }),
1948
+ !a)
1949
+ )
1950
+ for (t in c) l[t] || er(c[t], "unbind", e, e, s);
1951
+ })(t, e);
1952
+ }
1953
+ var Zn = Object.create(null);
1954
+ function tr(t, e) {
1955
+ var n,
1956
+ r,
1957
+ o = Object.create(null);
1958
+ if (!t) return o;
1959
+ for (n = 0; n < t.length; n++) (r = t[n]).modifiers || (r.modifiers = Zn), ((o[r.rawName || r.name + "." + Object.keys(r.modifiers || {}).join(".")] = r).def = Lt(e.$options, "directives", r.name));
1960
+ return o;
1961
+ }
1962
+ function er(t, e, n, r, o) {
1963
+ var i = t.def && t.def[e];
1964
+ if (i)
1965
+ try {
1966
+ i(n.elm, t, n, r, o);
1967
+ } catch (r) {
1968
+ zt(r, n.context, "directive " + t.name + " " + e + " hook");
1969
+ }
1970
+ }
1971
+ st = [On, q];
1972
+ function nr(t, e) {
1973
+ var n = e.componentOptions;
1974
+ if (!((I(n) && !1 === n.Ctor.options.inheritAttrs) || (P(t.data.attrs) && P(e.data.attrs)))) {
1975
+ var r,
1976
+ o,
1977
+ i = e.elm,
1978
+ a = t.data.attrs || {},
1979
+ s = e.data.attrs || {};
1980
+ for (r in (I(s.__ob__) && (s = e.data.attrs = w({}, s)), s)) (o = s[r]), a[r] !== o && rr(i, r, o);
1981
+ for (r in ((J || K) && s.value !== a.value && rr(i, "value", s.value), a)) P(s[r]) && (In(r) ? i.removeAttributeNS(Pn, Ln(r)) : Tn(r) || i.removeAttribute(r));
1982
+ }
1983
+ }
1984
+ function rr(t, e, n) {
1985
+ -1 < t.tagName.indexOf("-")
1986
+ ? or(t, e, n)
1987
+ : Mn(e)
1988
+ ? Nn(n)
1989
+ ? t.removeAttribute(e)
1990
+ : ((n = "allowfullscreen" === e && "EMBED" === t.tagName ? "true" : e), t.setAttribute(e, n))
1991
+ : Tn(e)
1992
+ ? t.setAttribute(e, En(e, n))
1993
+ : In(e)
1994
+ ? Nn(n)
1995
+ ? t.removeAttributeNS(Pn, Ln(e))
1996
+ : t.setAttributeNS(Pn, e, n)
1997
+ : or(t, e, n);
1998
+ }
1999
+ function or(e, t, n) {
2000
+ var r;
2001
+ Nn(n)
2002
+ ? e.removeAttribute(t)
2003
+ : (!J ||
2004
+ G ||
2005
+ "TEXTAREA" !== e.tagName ||
2006
+ "placeholder" !== t ||
2007
+ "" === n ||
2008
+ e.__ieph ||
2009
+ ((r = function (t) {
2010
+ t.stopImmediatePropagation(), e.removeEventListener("input", r);
2011
+ }),
2012
+ e.addEventListener("input", r),
2013
+ (e.__ieph = !0)),
2014
+ e.setAttribute(t, n));
2015
+ }
2016
+ W = { create: nr, update: nr };
2017
+ function ir(t, i) {
2018
+ var e = i.elm,
2019
+ n = i.data,
2020
+ t = t.data;
2021
+ (P(n.staticClass) && P(n.class) && (P(t) || (P(t.staticClass) && P(t.class)))) ||
2022
+ ((n = (function () {
2023
+ for (var t, e, n = i.data, r = i, o = i; I(o.componentInstance); ) (o = o.componentInstance._vnode) && o.data && (n = Dn(o.data, n));
2024
+ for (; I((r = r.parent)); ) r && r.data && (n = Dn(n, r.data));
2025
+ return (t = n.staticClass), (e = n.class), I(t) || I(e) ? Fn(t, Rn(e)) : "";
2026
+ })()),
2027
+ I((t = e._transitionClasses)) && (n = Fn(n, Rn(t))),
2028
+ n !== e._prevClass && (e.setAttribute("class", n), (e._prevClass = n)));
2029
+ }
2030
+ var ar,
2031
+ sr,
2032
+ cr,
2033
+ lr,
2034
+ ur,
2035
+ fr,
2036
+ On = { create: ir, update: ir },
2037
+ pr = /[\w).+\-_$\]]/;
2038
+ function dr(t) {
2039
+ for (var e, n, r, o, i = !1, a = !1, s = !1, c = !1, l = 0, u = 0, f = 0, p = 0, d = 0; d < t.length; d++)
2040
+ if (((n = e), (e = t.charCodeAt(d)), i)) 39 === e && 92 !== n && (i = !1);
2041
+ else if (a) 34 === e && 92 !== n && (a = !1);
2042
+ else if (s) 96 === e && 92 !== n && (s = !1);
2043
+ else if (c) 47 === e && 92 !== n && (c = !1);
2044
+ else if (124 !== e || 124 === t.charCodeAt(d + 1) || 124 === t.charCodeAt(d - 1) || l || u || f) {
2045
+ switch (e) {
2046
+ case 34:
2047
+ a = !0;
2048
+ break;
2049
+ case 39:
2050
+ i = !0;
2051
+ break;
2052
+ case 96:
2053
+ s = !0;
2054
+ break;
2055
+ case 40:
2056
+ f++;
2057
+ break;
2058
+ case 41:
2059
+ f--;
2060
+ break;
2061
+ case 91:
2062
+ u++;
2063
+ break;
2064
+ case 93:
2065
+ u--;
2066
+ break;
2067
+ case 123:
2068
+ l++;
2069
+ break;
2070
+ case 125:
2071
+ l--;
2072
+ }
2073
+ if (47 === e) {
2074
+ for (var h = d - 1, v = void 0; 0 <= h && " " === (v = t.charAt(h)); h--);
2075
+ (v && pr.test(v)) || (c = !0);
2076
+ }
2077
+ } else void 0 === r ? ((p = d + 1), (r = t.slice(0, d).trim())) : m();
2078
+ function m() {
2079
+ (o = o || []).push(t.slice(p, d).trim()), (p = d + 1);
2080
+ }
2081
+ if ((void 0 === r ? (r = t.slice(0, d).trim()) : 0 !== p && m(), o))
2082
+ for (d = 0; d < o.length; d++)
2083
+ r = (function (t, e) {
2084
+ var n = e.indexOf("(");
2085
+ if (n < 0) return '_f("' + e + '")(' + t + ")";
2086
+ var r = e.slice(0, n),
2087
+ n = e.slice(n + 1);
2088
+ return '_f("' + r + '")(' + t + (")" !== n ? "," + n : n);
2089
+ })(r, o[d]);
2090
+ return r;
2091
+ }
2092
+ function hr(t, e) {
2093
+ console.error("[Vue compiler]: " + t);
2094
+ }
2095
+ function vr(t, e) {
2096
+ return t
2097
+ ? t
2098
+ .map(function (t) {
2099
+ return t[e];
2100
+ })
2101
+ .filter(function (t) {
2102
+ return t;
2103
+ })
2104
+ : [];
2105
+ }
2106
+ function mr(t, e, n, r, o) {
2107
+ (t.props || (t.props = [])).push(kr({ name: e, value: n, dynamic: o }, r)), (t.plain = !1);
2108
+ }
2109
+ function yr(t, e, n, r, o) {
2110
+ (o ? t.dynamicAttrs || (t.dynamicAttrs = []) : t.attrs || (t.attrs = [])).push(kr({ name: e, value: n, dynamic: o }, r)), (t.plain = !1);
2111
+ }
2112
+ function gr(t, e, n, r) {
2113
+ (t.attrsMap[e] = n), t.attrsList.push(kr({ name: e, value: n }, r));
2114
+ }
2115
+ function _r(t, e, n) {
2116
+ return n ? "_p(" + e + ',"' + t + '")' : t + e;
2117
+ }
2118
+ function br(t, e, n, r, o, i, a, s) {
2119
+ var c;
2120
+ (r = r || d).right
2121
+ ? s
2122
+ ? (e = "(" + e + ")==='click'?'contextmenu':(" + e + ")")
2123
+ : "click" === e && ((e = "contextmenu"), delete r.right)
2124
+ : r.middle && (s ? (e = "(" + e + ")==='click'?'mouseup':(" + e + ")") : "click" === e && (e = "mouseup")),
2125
+ r.capture && (delete r.capture, (e = _r("!", e, s))),
2126
+ r.once && (delete r.once, (e = _r("~", e, s))),
2127
+ r.passive && (delete r.passive, (e = _r("&", e, s))),
2128
+ (c = r.native ? (delete r.native, t.nativeEvents || (t.nativeEvents = {})) : t.events || (t.events = {}));
2129
+ a = kr({ value: n.trim(), dynamic: s }, a);
2130
+ r !== d && (a.modifiers = r);
2131
+ r = c[e];
2132
+ Array.isArray(r) ? (o ? r.unshift(a) : r.push(a)) : (c[e] = r ? (o ? [a, r] : [r, a]) : a), (t.plain = !1);
2133
+ }
2134
+ function wr(t, e, n) {
2135
+ var r = xr(t, ":" + e) || xr(t, "v-bind:" + e);
2136
+ if (null != r) return dr(r);
2137
+ if (!1 !== n) {
2138
+ e = xr(t, e);
2139
+ if (null != e) return JSON.stringify(e);
2140
+ }
2141
+ }
2142
+ function xr(t, e, n) {
2143
+ var r;
2144
+ if (null != (r = t.attrsMap[e]))
2145
+ for (var o = t.attrsList, i = 0, a = o.length; i < a; i++)
2146
+ if (o[i].name === e) {
2147
+ o.splice(i, 1);
2148
+ break;
2149
+ }
2150
+ return n && delete t.attrsMap[e], r;
2151
+ }
2152
+ function $r(t, e) {
2153
+ for (var n = t.attrsList, r = 0, o = n.length; r < o; r++) {
2154
+ var i = n[r];
2155
+ if (e.test(i.name)) return n.splice(r, 1), i;
2156
+ }
2157
+ }
2158
+ function kr(t, e) {
2159
+ return e && (null != e.start && (t.start = e.start), null != e.end && (t.end = e.end)), t;
2160
+ }
2161
+ function Cr(t, e, n) {
2162
+ var r = n || {},
2163
+ n = r.trim ? "(typeof $$v === 'string'? $$v.trim(): $$v)" : "$$v";
2164
+ r.number && (n = "_n(" + n + ")");
2165
+ n = Or(e, n);
2166
+ t.model = { value: "(" + e + ")", expression: JSON.stringify(e), callback: "function ($$v) {" + n + "}" };
2167
+ }
2168
+ function Or(t, e) {
2169
+ var n = (function (t) {
2170
+ if (((t = t.trim()), (ar = t.length), t.indexOf("[") < 0 || t.lastIndexOf("]") < ar - 1)) return -1 < (lr = t.lastIndexOf(".")) ? { exp: t.slice(0, lr), key: '"' + t.slice(lr + 1) + '"' } : { exp: t, key: null };
2171
+ for (sr = t, lr = ur = fr = 0; !Sr(); )
2172
+ Tr((cr = Ar()))
2173
+ ? jr(cr)
2174
+ : 91 === cr &&
2175
+ (function (t) {
2176
+ var e = 1;
2177
+ for (ur = lr; !Sr(); )
2178
+ if (Tr((t = Ar()))) jr(t);
2179
+ else if ((91 === t && e++, 93 === t && e--, 0 === e)) {
2180
+ fr = lr;
2181
+ break;
2182
+ }
2183
+ })(cr);
2184
+ return { exp: t.slice(0, ur), key: t.slice(ur + 1, fr) };
2185
+ })(t);
2186
+ return null === n.key ? t + "=" + e : "$set(" + n.exp + ", " + n.key + ", " + e + ")";
2187
+ }
2188
+ function Ar() {
2189
+ return sr.charCodeAt(++lr);
2190
+ }
2191
+ function Sr() {
2192
+ return ar <= lr;
2193
+ }
2194
+ function Tr(t) {
2195
+ return 34 === t || 39 === t;
2196
+ }
2197
+ function jr(t) {
2198
+ for (var e = t; !Sr() && (t = Ar()) !== e; );
2199
+ }
2200
+ var Er;
2201
+ function Mr(e, n, r) {
2202
+ var o = Er;
2203
+ return function t() {
2204
+ null !== n.apply(null, arguments) && Lr(e, t, r, o);
2205
+ };
2206
+ }
2207
+ var Pr = Gt && !(Q && Number(Q[1]) <= 53);
2208
+ function Ir(t, e, n, r) {
2209
+ var o, i;
2210
+ Pr &&
2211
+ ((o = rn),
2212
+ (e = (i = e)._wrapper = function (t) {
2213
+ if (t.target === t.currentTarget || t.timeStamp >= o || t.timeStamp <= 0 || t.target.ownerDocument !== document) return i.apply(this, arguments);
2214
+ })),
2215
+ Er.addEventListener(t, e, Z ? { capture: n, passive: r } : n);
2216
+ }
2217
+ function Lr(t, e, n, r) {
2218
+ (r || Er).removeEventListener(t, e._wrapper || e, n);
2219
+ }
2220
+ function Nr(t, e) {
2221
+ var n, r, o;
2222
+ (P(t.data.on) && P(e.data.on)) ||
2223
+ ((n = e.data.on || {}),
2224
+ (r = t.data.on || {}),
2225
+ (Er = e.elm),
2226
+ I((o = n).__r) && ((o[(t = J ? "change" : "input")] = [].concat(o.__r, o[t] || [])), delete o.__r),
2227
+ I(o.__c) && ((o.change = [].concat(o.__c, o.change || [])), delete o.__c),
2228
+ re(n, r, Ir, Lr, Mr, e.context),
2229
+ (Er = void 0));
2230
+ }
2231
+ var Dr,
2232
+ q = { create: Nr, update: Nr };
2233
+ function Fr(t, e) {
2234
+ if (!P(t.data.domProps) || !P(e.data.domProps)) {
2235
+ var n,
2236
+ r,
2237
+ o = e.elm,
2238
+ i = t.data.domProps || {},
2239
+ a = e.data.domProps || {};
2240
+ for (n in (I(a.__ob__) && (a = e.data.domProps = w({}, a)), i)) n in a || (o[n] = "");
2241
+ for (n in a) {
2242
+ if (((r = a[n]), "textContent" === n || "innerHTML" === n)) {
2243
+ if ((e.children && (e.children.length = 0), r === i[n])) continue;
2244
+ 1 === o.childNodes.length && o.removeChild(o.childNodes[0]);
2245
+ }
2246
+ if ("value" === n && "PROGRESS" !== o.tagName) {
2247
+ var s = P((o._value = r)) ? "" : String(r),
2248
+ c = s;
2249
+ (u = o).composing ||
2250
+ ("OPTION" !== u.tagName &&
2251
+ !(function (t, e) {
2252
+ var n = !0;
2253
+ try {
2254
+ n = document.activeElement !== t;
2255
+ } catch (t) {}
2256
+ return n && t.value !== e;
2257
+ })(u, c) &&
2258
+ !(function (t) {
2259
+ var e = u.value,
2260
+ n = u._vModifiers;
2261
+ if (I(n)) {
2262
+ if (n.number) return N(e) !== N(t);
2263
+ if (n.trim) return e.trim() !== t.trim();
2264
+ }
2265
+ return e !== t;
2266
+ })(c)) ||
2267
+ (o.value = s);
2268
+ } else if ("innerHTML" === n && Bn(o.tagName) && P(o.innerHTML)) {
2269
+ (Dr = Dr || document.createElement("div")).innerHTML = "<svg>" + r + "</svg>";
2270
+ for (var l = Dr.firstChild; o.firstChild; ) o.removeChild(o.firstChild);
2271
+ for (; l.firstChild; ) o.appendChild(l.firstChild);
2272
+ } else if (r !== i[n])
2273
+ try {
2274
+ o[n] = r;
2275
+ } catch (t) {}
2276
+ }
2277
+ }
2278
+ var u, c;
2279
+ }
2280
+ var Gt = { create: Fr, update: Fr },
2281
+ Rr = t(function (t) {
2282
+ var e = {},
2283
+ n = /:(.+)/;
2284
+ return (
2285
+ t.split(/;(?![^(]*\))/g).forEach(function (t) {
2286
+ !t || (1 < (t = t.split(n)).length && (e[t[0].trim()] = t[1].trim()));
2287
+ }),
2288
+ e
2289
+ );
2290
+ });
2291
+ function zr(t) {
2292
+ var e = Hr(t.style);
2293
+ return t.staticStyle ? w(t.staticStyle, e) : e;
2294
+ }
2295
+ function Hr(t) {
2296
+ return Array.isArray(t) ? x(t) : "string" == typeof t ? Rr(t) : t;
2297
+ }
2298
+ function Ur(t, e, n) {
2299
+ if (Vr.test(e)) t.style.setProperty(e, n);
2300
+ else if (Wr.test(n)) t.style.setProperty(g(e), n.replace(Wr, ""), "important");
2301
+ else {
2302
+ var r = Jr(e);
2303
+ if (Array.isArray(n)) for (var o = 0, i = n.length; o < i; o++) t.style[r] = n[o];
2304
+ else t.style[r] = n;
2305
+ }
2306
+ }
2307
+ var Br,
2308
+ Vr = /^--/,
2309
+ Wr = /\s*!important$/,
2310
+ qr = ["Webkit", "Moz", "ms"],
2311
+ Jr = t(function (t) {
2312
+ if (((Br = Br || document.createElement("div").style), "filter" !== (t = m(t)) && t in Br)) return t;
2313
+ for (var e = t.charAt(0).toUpperCase() + t.slice(1), n = 0; n < qr.length; n++) {
2314
+ var r = qr[n] + e;
2315
+ if (r in Br) return r;
2316
+ }
2317
+ });
2318
+ function Gr(t, e) {
2319
+ var n = e.data,
2320
+ t = t.data;
2321
+ if (!(P(n.staticStyle) && P(n.style) && P(t.staticStyle) && P(t.style))) {
2322
+ var r,
2323
+ o,
2324
+ i = e.elm,
2325
+ n = t.staticStyle,
2326
+ t = t.normalizedStyle || t.style || {},
2327
+ a = n || t,
2328
+ t = Hr(e.data.style) || {};
2329
+ e.data.normalizedStyle = I(t.__ob__) ? w({}, t) : t;
2330
+ var s = (function (t) {
2331
+ for (var e, n = {}, r = t; r.componentInstance; ) (r = r.componentInstance._vnode) && r.data && (e = zr(r.data)) && w(n, e);
2332
+ (e = zr(t.data)) && w(n, e);
2333
+ for (var o = t; (o = o.parent); ) o.data && (e = zr(o.data)) && w(n, e);
2334
+ return n;
2335
+ })(e);
2336
+ for (o in a) P(s[o]) && Ur(i, o, "");
2337
+ for (o in s) (r = s[o]) !== a[o] && Ur(i, o, null == r ? "" : r);
2338
+ }
2339
+ }
2340
+ var Q = { create: Gr, update: Gr },
2341
+ Kr = /\s+/;
2342
+ function Xr(e, t) {
2343
+ var n;
2344
+ (t = t && t.trim()) &&
2345
+ (e.classList
2346
+ ? -1 < t.indexOf(" ")
2347
+ ? t.split(Kr).forEach(function (t) {
2348
+ return e.classList.add(t);
2349
+ })
2350
+ : e.classList.add(t)
2351
+ : (n = " " + (e.getAttribute("class") || "") + " ").indexOf(" " + t + " ") < 0 && e.setAttribute("class", (n + t).trim()));
2352
+ }
2353
+ function Qr(e, t) {
2354
+ if ((t = t && t.trim()))
2355
+ if (e.classList)
2356
+ -1 < t.indexOf(" ")
2357
+ ? t.split(Kr).forEach(function (t) {
2358
+ return e.classList.remove(t);
2359
+ })
2360
+ : e.classList.remove(t),
2361
+ e.classList.length || e.removeAttribute("class");
2362
+ else {
2363
+ for (var n = " " + (e.getAttribute("class") || "") + " ", r = " " + t + " "; 0 <= n.indexOf(r); ) n = n.replace(r, " ");
2364
+ (n = n.trim()) ? e.setAttribute("class", n) : e.removeAttribute("class");
2365
+ }
2366
+ }
2367
+ function Yr(t) {
2368
+ if (t) {
2369
+ if ("object" != typeof t) return "string" == typeof t ? Zr(t) : void 0;
2370
+ var e = {};
2371
+ return !1 !== t.css && w(e, Zr(t.name || "v")), w(e, t), e;
2372
+ }
2373
+ }
2374
+ var Zr = t(function (t) {
2375
+ return { enterClass: t + "-enter", enterToClass: t + "-enter-to", enterActiveClass: t + "-enter-active", leaveClass: t + "-leave", leaveToClass: t + "-leave-to", leaveActiveClass: t + "-leave-active" };
2376
+ }),
2377
+ to = B && !G,
2378
+ eo = "transition",
2379
+ no = "animation",
2380
+ ro = "transition",
2381
+ oo = "transitionend",
2382
+ io = "animation",
2383
+ ao = "animationend";
2384
+ to &&
2385
+ (void 0 === window.ontransitionend && void 0 !== window.onwebkittransitionend && ((ro = "WebkitTransition"), (oo = "webkitTransitionEnd")),
2386
+ void 0 === window.onanimationend && void 0 !== window.onwebkitanimationend && ((io = "WebkitAnimation"), (ao = "webkitAnimationEnd")));
2387
+ var so = B
2388
+ ? window.requestAnimationFrame
2389
+ ? window.requestAnimationFrame.bind(window)
2390
+ : setTimeout
2391
+ : function (t) {
2392
+ return t();
2393
+ };
2394
+ function co(t) {
2395
+ so(function () {
2396
+ so(t);
2397
+ });
2398
+ }
2399
+ function lo(t, e) {
2400
+ var n = t._transitionClasses || (t._transitionClasses = []);
2401
+ n.indexOf(e) < 0 && (n.push(e), Xr(t, e));
2402
+ }
2403
+ function uo(t, e) {
2404
+ t._transitionClasses && v(t._transitionClasses, e), Qr(t, e);
2405
+ }
2406
+ function fo(e, t, n) {
2407
+ var r = ho(e, t),
2408
+ o = r.type,
2409
+ t = r.timeout,
2410
+ i = r.propCount;
2411
+ if (!o) return n();
2412
+ function a() {
2413
+ e.removeEventListener(s, l), n();
2414
+ }
2415
+ var s = o === eo ? oo : ao,
2416
+ c = 0,
2417
+ l = function (t) {
2418
+ t.target === e && ++c >= i && a();
2419
+ };
2420
+ setTimeout(function () {
2421
+ c < i && a();
2422
+ }, t + 1),
2423
+ e.addEventListener(s, l);
2424
+ }
2425
+ var po = /\b(transform|all)(,|$)/;
2426
+ function ho(t, e) {
2427
+ var n,
2428
+ r = window.getComputedStyle(t),
2429
+ o = (r[ro + "Delay"] || "").split(", "),
2430
+ i = (r[ro + "Duration"] || "").split(", "),
2431
+ a = vo(o, i),
2432
+ s = (r[io + "Delay"] || "").split(", "),
2433
+ c = (r[io + "Duration"] || "").split(", "),
2434
+ t = vo(s, c),
2435
+ o = 0,
2436
+ s = 0;
2437
+ return (
2438
+ e === eo ? 0 < a && ((n = eo), (o = a), (s = i.length)) : e === no ? 0 < t && ((n = no), (o = t), (s = c.length)) : (s = (n = 0 < (o = Math.max(a, t)) ? (t < a ? eo : no) : null) ? (n === eo ? i : c).length : 0),
2439
+ { type: n, timeout: o, propCount: s, hasTransform: n === eo && po.test(r[ro + "Property"]) }
2440
+ );
2441
+ }
2442
+ function vo(n, t) {
2443
+ for (; n.length < t.length; ) n = n.concat(n);
2444
+ return Math.max.apply(
2445
+ null,
2446
+ t.map(function (t, e) {
2447
+ return mo(t) + mo(n[e]);
2448
+ })
2449
+ );
2450
+ }
2451
+ function mo(t) {
2452
+ return 1e3 * Number(t.slice(0, -1).replace(",", "."));
2453
+ }
2454
+ function yo(e, t) {
2455
+ var n = e.elm;
2456
+ I(n._leaveCb) && ((n._leaveCb.cancelled = !0), n._leaveCb());
2457
+ var r = Yr(e.data.transition);
2458
+ if (!P(r) && !I(n._enterCb) && 1 === n.nodeType) {
2459
+ for (
2460
+ var o = r.css,
2461
+ i = r.type,
2462
+ a = r.enterClass,
2463
+ s = r.enterToClass,
2464
+ c = r.enterActiveClass,
2465
+ l = r.appearClass,
2466
+ u = r.appearToClass,
2467
+ f = r.appearActiveClass,
2468
+ p = r.beforeEnter,
2469
+ d = r.enter,
2470
+ h = r.afterEnter,
2471
+ v = r.enterCancelled,
2472
+ m = r.beforeAppear,
2473
+ y = r.appear,
2474
+ g = r.afterAppear,
2475
+ _ = r.appearCancelled,
2476
+ b = r.duration,
2477
+ w = We,
2478
+ x = We.$vnode;
2479
+ x && x.parent;
2480
+
2481
+ )
2482
+ (w = x.context), (x = x.parent);
2483
+ var $,
2484
+ k,
2485
+ C,
2486
+ O,
2487
+ A,
2488
+ S,
2489
+ T,
2490
+ j,
2491
+ E,
2492
+ M,
2493
+ r = !w._isMounted || !e.isRootInsert;
2494
+ (r && !y && "" !== y) ||
2495
+ (($ = r && l ? l : a),
2496
+ (k = r && f ? f : c),
2497
+ (C = r && u ? u : s),
2498
+ (p = (r && m) || p),
2499
+ (O = r && "function" == typeof y ? y : d),
2500
+ (A = (r && g) || h),
2501
+ (S = (r && _) || v),
2502
+ (T = N(L(b) ? b.enter : b)),
2503
+ (j = !1 !== o && !G),
2504
+ (E = bo(O)),
2505
+ (M = n._enterCb = D(function () {
2506
+ j && (uo(n, C), uo(n, k)), M.cancelled ? (j && uo(n, $), S && S(n)) : A && A(n), (n._enterCb = null);
2507
+ })),
2508
+ e.data.show ||
2509
+ oe(e, "insert", function () {
2510
+ var t = n.parentNode,
2511
+ t = t && t._pending && t._pending[e.key];
2512
+ t && t.tag === e.tag && t.elm._leaveCb && t.elm._leaveCb(), O && O(n, M);
2513
+ }),
2514
+ p && p(n),
2515
+ j &&
2516
+ (lo(n, $),
2517
+ lo(n, k),
2518
+ co(function () {
2519
+ uo(n, $), M.cancelled || (lo(n, C), E || (_o(T) ? setTimeout(M, T) : fo(n, i, M)));
2520
+ })),
2521
+ e.data.show && (t && t(), O && O(n, M)),
2522
+ j || E || M());
2523
+ }
2524
+ }
2525
+ function go(t, e) {
2526
+ var n = t.elm;
2527
+ I(n._enterCb) && ((n._enterCb.cancelled = !0), n._enterCb());
2528
+ var r,
2529
+ o,
2530
+ i,
2531
+ a,
2532
+ s,
2533
+ c,
2534
+ l,
2535
+ u,
2536
+ f,
2537
+ p,
2538
+ d,
2539
+ h,
2540
+ v,
2541
+ m,
2542
+ y = Yr(t.data.transition);
2543
+ if (P(y) || 1 !== n.nodeType) return e();
2544
+ function g() {
2545
+ m.cancelled ||
2546
+ (!t.data.show && n.parentNode && ((n.parentNode._pending || (n.parentNode._pending = {}))[t.key] = t),
2547
+ c && c(n),
2548
+ d &&
2549
+ (lo(n, i),
2550
+ lo(n, s),
2551
+ co(function () {
2552
+ uo(n, i), m.cancelled || (lo(n, a), h || (_o(v) ? setTimeout(m, v) : fo(n, o, m)));
2553
+ })),
2554
+ l && l(n, m),
2555
+ d || h || m());
2556
+ }
2557
+ I(n._leaveCb) ||
2558
+ ((r = y.css),
2559
+ (o = y.type),
2560
+ (i = y.leaveClass),
2561
+ (a = y.leaveToClass),
2562
+ (s = y.leaveActiveClass),
2563
+ (c = y.beforeLeave),
2564
+ (l = y.leave),
2565
+ (u = y.afterLeave),
2566
+ (f = y.leaveCancelled),
2567
+ (p = y.delayLeave),
2568
+ (y = y.duration),
2569
+ (d = !1 !== r && !G),
2570
+ (h = bo(l)),
2571
+ (v = N(L(y) ? y.leave : y)),
2572
+ (m = n._leaveCb = D(function () {
2573
+ n.parentNode && n.parentNode._pending && (n.parentNode._pending[t.key] = null), d && (uo(n, a), uo(n, s)), m.cancelled ? (d && uo(n, i), f && f(n)) : (e(), u && u(n)), (n._leaveCb = null);
2574
+ })),
2575
+ p ? p(g) : g());
2576
+ }
2577
+ function _o(t) {
2578
+ return "number" == typeof t && !isNaN(t);
2579
+ }
2580
+ function bo(t) {
2581
+ if (P(t)) return !1;
2582
+ var e = t.fns;
2583
+ return I(e) ? bo(Array.isArray(e) ? e[0] : e) : 1 < (t._length || t.length);
2584
+ }
2585
+ function wo(t, e) {
2586
+ !0 !== e.data.show && yo(e);
2587
+ }
2588
+ q = (function (t) {
2589
+ for (var e, h = {}, n = t.modules, g = t.nodeOps, r = 0; r < Xn.length; ++r) for (h[Xn[r]] = [], e = 0; e < n.length; ++e) I(n[e][Xn[r]]) && h[Xn[r]].push(n[e][Xn[r]]);
2590
+ function i(t) {
2591
+ var e = g.parentNode(t);
2592
+ I(e) && g.removeChild(e, t);
2593
+ }
2594
+ function _(t, e, n, r, o, i, a) {
2595
+ I(t.elm) && I(i) && (t = i[a] = yt(t)),
2596
+ (t.isRootInsert = !o),
2597
+ (function (t, e, n, r) {
2598
+ var o = t.data;
2599
+ if (I(o)) {
2600
+ var i = I(t.componentInstance) && o.keepAlive;
2601
+ return (I((o = o.hook)) && I((o = o.init)) && o(t, !1), I(t.componentInstance))
2602
+ ? (d(t, e),
2603
+ s(n, t.elm, r),
2604
+ O(i) &&
2605
+ (function (t, e, n, r) {
2606
+ for (var o, i = t; i.componentInstance; )
2607
+ if (I((o = (i = i.componentInstance._vnode).data)) && I((o = o.transition))) {
2608
+ for (o = 0; o < h.activate.length; ++o) h.activate[o](Kn, i);
2609
+ e.push(i);
2610
+ break;
2611
+ }
2612
+ s(n, t.elm, r);
2613
+ })(t, e, n, r),
2614
+ 1)
2615
+ : void 0;
2616
+ }
2617
+ })(t, e, n, r) ||
2618
+ ((i = t.data),
2619
+ (a = t.children),
2620
+ I((o = t.tag)) ? ((t.elm = t.ns ? g.createElementNS(t.ns, o) : g.createElement(o, t)), c(t), v(t, a, e), I(i) && m(t, e)) : O(t.isComment) ? (t.elm = g.createComment(t.text)) : (t.elm = g.createTextNode(t.text)),
2621
+ s(n, t.elm, r));
2622
+ }
2623
+ function d(t, e) {
2624
+ I(t.data.pendingInsert) && (e.push.apply(e, t.data.pendingInsert), (t.data.pendingInsert = null)), (t.elm = t.componentInstance.$el), b(t) ? (m(t, e), c(t)) : (Gn(t), e.push(t));
2625
+ }
2626
+ function s(t, e, n) {
2627
+ I(t) && (I(n) ? g.parentNode(n) === t && g.insertBefore(t, e, n) : g.appendChild(t, e));
2628
+ }
2629
+ function v(t, e, n) {
2630
+ if (Array.isArray(e)) for (var r = 0; r < e.length; ++r) _(e[r], n, t.elm, null, !0, e, r);
2631
+ else l(t.text) && g.appendChild(t.elm, g.createTextNode(String(t.text)));
2632
+ }
2633
+ function b(t) {
2634
+ for (; t.componentInstance; ) t = t.componentInstance._vnode;
2635
+ return I(t.tag);
2636
+ }
2637
+ function m(t, e) {
2638
+ for (var n = 0; n < h.create.length; ++n) h.create[n](Kn, t);
2639
+ I((r = t.data.hook)) && (I(r.create) && r.create(Kn, t), I(r.insert) && e.push(t));
2640
+ }
2641
+ function c(t) {
2642
+ var e;
2643
+ if (I((e = t.fnScopeId))) g.setStyleScope(t.elm, e);
2644
+ else for (var n = t; n; ) I((e = n.context)) && I((e = e.$options._scopeId)) && g.setStyleScope(t.elm, e), (n = n.parent);
2645
+ I((e = We)) && e !== t.context && e !== t.fnContext && I((e = e.$options._scopeId)) && g.setStyleScope(t.elm, e);
2646
+ }
2647
+ function w(t, e, n, r, o, i) {
2648
+ for (; r <= o; ++r) _(n[r], i, t, e, !1, n, r);
2649
+ }
2650
+ function y(t) {
2651
+ var e,
2652
+ n,
2653
+ r = t.data;
2654
+ if (I(r)) for (I((e = r.hook)) && I((e = e.destroy)) && e(t), e = 0; e < h.destroy.length; ++e) h.destroy[e](t);
2655
+ if (I((e = t.children))) for (n = 0; n < t.children.length; ++n) y(t.children[n]);
2656
+ }
2657
+ function x(t, e, n, r) {
2658
+ for (; n <= r; ++n) {
2659
+ var o = e[n];
2660
+ I(o) &&
2661
+ (I(o.tag)
2662
+ ? ((function t(e, n) {
2663
+ if (I(n) || I(e.data)) {
2664
+ var r,
2665
+ o = h.remove.length + 1;
2666
+ for (
2667
+ I(n)
2668
+ ? (n.listeners += o)
2669
+ : (n = (function (t) {
2670
+ function e() {
2671
+ 0 == --e.listeners && i(t);
2672
+ }
2673
+ return (e.listeners = o), e;
2674
+ })(e.elm)),
2675
+ I((r = e.componentInstance)) && I((r = r._vnode)) && I(r.data) && t(r, n),
2676
+ r = 0;
2677
+ r < h.remove.length;
2678
+ ++r
2679
+ )
2680
+ h.remove[r](e, n);
2681
+ I((r = e.data.hook)) && I((r = r.remove)) ? r(e, n) : n();
2682
+ } else i(e.elm);
2683
+ })(o),
2684
+ y(o))
2685
+ : i(o.elm));
2686
+ }
2687
+ }
2688
+ function $(t, e, n) {
2689
+ if (O(n) && I(t.parent)) t.parent.data.pendingInsert = e;
2690
+ else for (var r = 0; r < e.length; ++r) e[r].data.hook.insert(e[r]);
2691
+ }
2692
+ var k = a("attrs,class,staticClass,staticStyle,key");
2693
+ function C(t, e, n, r) {
2694
+ var o,
2695
+ i = e.tag,
2696
+ a = e.data,
2697
+ s = e.children;
2698
+ if (((r = r || (a && a.pre)), (e.elm = t), O(e.isComment) && I(e.asyncFactory))) return (e.isAsyncPlaceholder = !0);
2699
+ if (I(a) && (I((o = a.hook)) && I((o = o.init)) && o(e, !0), I((o = e.componentInstance)))) return d(e, n), 1;
2700
+ if (I(i)) {
2701
+ if (I(s))
2702
+ if (t.hasChildNodes())
2703
+ if (I((o = a)) && I((o = o.domProps)) && I((o = o.innerHTML))) {
2704
+ if (o !== t.innerHTML) return;
2705
+ } else {
2706
+ for (var c = !0, l = t.firstChild, u = 0; u < s.length; u++) {
2707
+ if (!l || !C(l, s[u], n, r)) {
2708
+ c = !1;
2709
+ break;
2710
+ }
2711
+ l = l.nextSibling;
2712
+ }
2713
+ if (!c || l) return;
2714
+ }
2715
+ else v(e, s, n);
2716
+ if (I(a)) {
2717
+ var f,
2718
+ p = !1;
2719
+ for (f in a)
2720
+ if (!k(f)) {
2721
+ (p = !0), m(e, n);
2722
+ break;
2723
+ }
2724
+ !p && a.class && te(a.class);
2725
+ }
2726
+ } else t.data !== e.text && (t.data = e.text);
2727
+ return 1;
2728
+ }
2729
+ return function (t, e, n, r) {
2730
+ if (!P(e)) {
2731
+ var o = !1,
2732
+ i = [];
2733
+ if (P(t)) (o = !0), _(e, i);
2734
+ else {
2735
+ var a = I(t.nodeType);
2736
+ if (!a && Qn(t, e))
2737
+ !(function m(t, e, n, r, o, y) {
2738
+ if (t !== e) {
2739
+ I(e.elm) && I(r) && (e = r[o] = yt(e));
2740
+ var i = (e.elm = t.elm);
2741
+ if (O(t.isAsyncPlaceholder)) I(e.asyncFactory.resolved) ? C(t.elm, e, n) : (e.isAsyncPlaceholder = !0);
2742
+ else if (O(e.isStatic) && O(t.isStatic) && e.key === t.key && (O(e.isCloned) || O(e.isOnce))) e.componentInstance = t.componentInstance;
2743
+ else {
2744
+ var a,
2745
+ s = e.data;
2746
+ I(s) && I((a = s.hook)) && I((a = a.prepatch)) && a(t, e);
2747
+ (r = t.children), (o = e.children);
2748
+ if (I(s) && b(e)) {
2749
+ for (a = 0; a < h.update.length; ++a) h.update[a](t, e);
2750
+ I((a = s.hook)) && I((a = a.update)) && a(t, e);
2751
+ }
2752
+ P(e.text)
2753
+ ? I(r) && I(o)
2754
+ ? r !== o &&
2755
+ (function (t, e, n, r) {
2756
+ for (var o, i, a, s = 0, c = 0, l = e.length - 1, u = e[0], f = e[l], p = n.length - 1, d = n[0], h = n[p], v = !y; s <= l && c <= p; )
2757
+ P(u)
2758
+ ? (u = e[++s])
2759
+ : P(f)
2760
+ ? (f = e[--l])
2761
+ : Qn(u, d)
2762
+ ? (m(u, d, r, n, c), (u = e[++s]), (d = n[++c]))
2763
+ : Qn(f, h)
2764
+ ? (m(f, h, r, n, p), (f = e[--l]), (h = n[--p]))
2765
+ : Qn(u, h)
2766
+ ? (m(u, h, r, n, p), v && g.insertBefore(t, u.elm, g.nextSibling(f.elm)), (u = e[++s]), (h = n[--p]))
2767
+ : (Qn(f, d)
2768
+ ? (m(f, d, r, n, c), v && g.insertBefore(t, f.elm, u.elm), (f = e[--l]))
2769
+ : (P(o) &&
2770
+ (o = (function (t, e, n) {
2771
+ for (var r, o = {}, i = e; i <= n; ++i) I((r = t[i].key)) && (o[r] = i);
2772
+ return o;
2773
+ })(e, s, l)),
2774
+ !P(
2775
+ (i = I(d.key)
2776
+ ? o[d.key]
2777
+ : (function (t, e, n, r) {
2778
+ for (var o = n; o < r; o++) {
2779
+ var i = e[o];
2780
+ if (I(i) && Qn(t, i)) return o;
2781
+ }
2782
+ })(d, e, s, l))
2783
+ ) && Qn((a = e[i]), d)
2784
+ ? (m(a, d, r, n, c), (e[i] = void 0), v && g.insertBefore(t, a.elm, u.elm))
2785
+ : _(d, r, t, u.elm, !1, n, c)),
2786
+ (d = n[++c]));
2787
+ l < s ? w(t, P(n[p + 1]) ? null : n[p + 1].elm, n, c, p, r) : p < c && x(0, e, s, l);
2788
+ })(i, r, o, n)
2789
+ : I(o)
2790
+ ? (I(t.text) && g.setTextContent(i, ""), w(i, null, o, 0, o.length - 1, n))
2791
+ : I(r)
2792
+ ? x(0, r, 0, r.length - 1)
2793
+ : I(t.text) && g.setTextContent(i, "")
2794
+ : t.text !== e.text && g.setTextContent(i, e.text),
2795
+ I(s) && I((a = s.hook)) && I((a = a.postpatch)) && a(t, e);
2796
+ }
2797
+ }
2798
+ })(t, e, i, null, null, r);
2799
+ else {
2800
+ if (a) {
2801
+ if ((1 === t.nodeType && t.hasAttribute(T) && (t.removeAttribute(T), (n = !0)), O(n) && C(t, e, i))) return $(e, i, !0), t;
2802
+ (s = t), (t = new dt(g.tagName(s).toLowerCase(), {}, [], void 0, s));
2803
+ }
2804
+ var n = t.elm,
2805
+ s = g.parentNode(n);
2806
+ if ((_(e, i, n._leaveCb ? null : s, g.nextSibling(n)), I(e.parent)))
2807
+ for (var c = e.parent, l = b(e); c; ) {
2808
+ for (var u = 0; u < h.destroy.length; ++u) h.destroy[u](c);
2809
+ if (((c.elm = e.elm), l)) {
2810
+ for (var f = 0; f < h.create.length; ++f) h.create[f](Kn, c);
2811
+ var p = c.data.hook.insert;
2812
+ if (p.merged) for (var d = 1; d < p.fns.length; d++) p.fns[d]();
2813
+ } else Gn(c);
2814
+ c = c.parent;
2815
+ }
2816
+ I(s) ? x(0, [t], 0, 0) : I(t.tag) && y(t);
2817
+ }
2818
+ }
2819
+ return $(e, i, o), e.elm;
2820
+ }
2821
+ I(t) && y(t);
2822
+ };
2823
+ })({
2824
+ nodeOps: E,
2825
+ modules: [
2826
+ W,
2827
+ On,
2828
+ q,
2829
+ Gt,
2830
+ Q,
2831
+ B
2832
+ ? {
2833
+ create: wo,
2834
+ activate: wo,
2835
+ remove: function (t, e) {
2836
+ !0 !== t.data.show ? go(t, e) : e();
2837
+ },
2838
+ }
2839
+ : {},
2840
+ ].concat(st),
2841
+ });
2842
+ G &&
2843
+ document.addEventListener("selectionchange", function () {
2844
+ var t = document.activeElement;
2845
+ t && t.vmodel && To(t, "input");
2846
+ });
2847
+ var xo = {
2848
+ inserted: function (t, e, n, r) {
2849
+ "select" === n.tag
2850
+ ? (r.elm && !r.elm._vOptions
2851
+ ? oe(n, "postpatch", function () {
2852
+ xo.componentUpdated(t, e, n);
2853
+ })
2854
+ : $o(t, e, n.context),
2855
+ (t._vOptions = [].map.call(t.options, Oo)))
2856
+ : ("textarea" !== n.tag && !qn(t.type)) ||
2857
+ ((t._vModifiers = e.modifiers), e.modifiers.lazy || (t.addEventListener("compositionstart", Ao), t.addEventListener("compositionend", So), t.addEventListener("change", So), G && (t.vmodel = !0)));
2858
+ },
2859
+ componentUpdated: function (t, e, n) {
2860
+ var r, o;
2861
+ "select" === n.tag &&
2862
+ ($o(t, e, n.context),
2863
+ (r = t._vOptions),
2864
+ (o = t._vOptions = [].map.call(t.options, Oo)).some(function (t, e) {
2865
+ return !A(t, r[e]);
2866
+ }) &&
2867
+ (t.multiple
2868
+ ? e.value.some(function (t) {
2869
+ return Co(t, o);
2870
+ })
2871
+ : e.value !== e.oldValue && Co(e.value, o)) &&
2872
+ To(t, "change"));
2873
+ },
2874
+ };
2875
+ function $o(t, e) {
2876
+ ko(t, e),
2877
+ (J || K) &&
2878
+ setTimeout(function () {
2879
+ ko(t, e);
2880
+ }, 0);
2881
+ }
2882
+ function ko(t, e) {
2883
+ var n = e.value,
2884
+ r = t.multiple;
2885
+ if (!r || Array.isArray(n)) {
2886
+ for (var o, i, a = 0, s = t.options.length; a < s; a++)
2887
+ if (((i = t.options[a]), r)) (o = -1 < S(n, Oo(i))), i.selected !== o && (i.selected = o);
2888
+ else if (A(Oo(i), n)) return t.selectedIndex !== a && (t.selectedIndex = a), 0;
2889
+ r || (t.selectedIndex = -1);
2890
+ }
2891
+ }
2892
+ function Co(e, t) {
2893
+ return t.every(function (t) {
2894
+ return !A(t, e);
2895
+ });
2896
+ }
2897
+ function Oo(t) {
2898
+ return "_value" in t ? t._value : t.value;
2899
+ }
2900
+ function Ao(t) {
2901
+ t.target.composing = !0;
2902
+ }
2903
+ function So(t) {
2904
+ t.target.composing && ((t.target.composing = !1), To(t.target, "input"));
2905
+ }
2906
+ function To(t, e) {
2907
+ var n = document.createEvent("HTMLEvents");
2908
+ n.initEvent(e, !0, !0), t.dispatchEvent(n);
2909
+ }
2910
+ function jo(t) {
2911
+ return !t.componentInstance || (t.data && t.data.transition) ? t : jo(t.componentInstance._vnode);
2912
+ }
2913
+ (Gt = {
2914
+ model: xo,
2915
+ show: {
2916
+ bind: function (t, e, n) {
2917
+ var r = e.value,
2918
+ e = (n = jo(n)).data && n.data.transition,
2919
+ o = (t.__vOriginalDisplay = "none" === t.style.display ? "" : t.style.display);
2920
+ r && e
2921
+ ? ((n.data.show = !0),
2922
+ yo(n, function () {
2923
+ t.style.display = o;
2924
+ }))
2925
+ : (t.style.display = r ? o : "none");
2926
+ },
2927
+ update: function (t, e, n) {
2928
+ var r = e.value;
2929
+ !r != !e.oldValue &&
2930
+ ((n = jo(n)).data && n.data.transition
2931
+ ? ((n.data.show = !0),
2932
+ r
2933
+ ? yo(n, function () {
2934
+ t.style.display = t.__vOriginalDisplay;
2935
+ })
2936
+ : go(n, function () {
2937
+ t.style.display = "none";
2938
+ }))
2939
+ : (t.style.display = r ? t.__vOriginalDisplay : "none"));
2940
+ },
2941
+ unbind: function (t, e, n, r, o) {
2942
+ o || (t.style.display = t.__vOriginalDisplay);
2943
+ },
2944
+ },
2945
+ }),
2946
+ (Q = {
2947
+ name: String,
2948
+ appear: Boolean,
2949
+ css: Boolean,
2950
+ mode: String,
2951
+ type: String,
2952
+ enterClass: String,
2953
+ leaveClass: String,
2954
+ enterToClass: String,
2955
+ leaveToClass: String,
2956
+ enterActiveClass: String,
2957
+ leaveActiveClass: String,
2958
+ appearClass: String,
2959
+ appearActiveClass: String,
2960
+ appearToClass: String,
2961
+ duration: [Number, String, Object],
2962
+ });
2963
+ function Eo(t) {
2964
+ var e = t && t.componentOptions;
2965
+ return e && e.Ctor.options.abstract ? Eo(ze(e.children)) : t;
2966
+ }
2967
+ function Mo(t) {
2968
+ var e,
2969
+ n = {},
2970
+ r = t.$options;
2971
+ for (e in r.propsData) n[e] = t[e];
2972
+ var o,
2973
+ i = r._parentListeners;
2974
+ for (o in i) n[m(o)] = i[o];
2975
+ return n;
2976
+ }
2977
+ function Po(t, e) {
2978
+ if (/\d-keep-alive$/.test(e.tag)) return t("keep-alive", { props: e.componentOptions.propsData });
2979
+ }
2980
+ function Io(t) {
2981
+ return t.tag || Re(t);
2982
+ }
2983
+ function Lo(t) {
2984
+ return "show" === t.name;
2985
+ }
2986
+ (st = {
2987
+ name: "transition",
2988
+ props: Q,
2989
+ abstract: !0,
2990
+ render: function (t) {
2991
+ var e = this,
2992
+ n = this.$slots.default;
2993
+ if (n && (n = n.filter(Io)).length) {
2994
+ var r = this.mode,
2995
+ o = n[0];
2996
+ if (
2997
+ (function (t) {
2998
+ for (; (t = t.parent); ) if (t.data.transition) return 1;
2999
+ })(this.$vnode)
3000
+ )
3001
+ return o;
3002
+ var i = Eo(o);
3003
+ if (!i) return o;
3004
+ if (this._leaving) return Po(t, o);
3005
+ var a = "__transition-" + this._uid + "-";
3006
+ i.key = null == i.key ? (i.isComment ? a + "comment" : a + i.tag) : !l(i.key) || 0 === String(i.key).indexOf(a) ? i.key : a + i.key;
3007
+ var s = ((i.data || (i.data = {})).transition = Mo(this)),
3008
+ n = this._vnode,
3009
+ a = Eo(n);
3010
+ if ((i.data.directives && i.data.directives.some(Lo) && (i.data.show = !0), a && a.data && (a.key !== i.key || a.tag !== i.tag) && !Re(a) && (!a.componentInstance || !a.componentInstance._vnode.isComment))) {
3011
+ a = a.data.transition = w({}, s);
3012
+ if ("out-in" === r)
3013
+ return (
3014
+ (this._leaving = !0),
3015
+ oe(a, "afterLeave", function () {
3016
+ (e._leaving = !1), e.$forceUpdate();
3017
+ }),
3018
+ Po(t, o)
3019
+ );
3020
+ if ("in-out" === r) {
3021
+ if (Re(i)) return n;
3022
+ var c,
3023
+ n = function () {
3024
+ c();
3025
+ };
3026
+ oe(s, "afterEnter", n),
3027
+ oe(s, "enterCancelled", n),
3028
+ oe(a, "delayLeave", function (t) {
3029
+ c = t;
3030
+ });
3031
+ }
3032
+ }
3033
+ return o;
3034
+ }
3035
+ },
3036
+ }),
3037
+ (Q = w({ tag: String, moveClass: String }, Q));
3038
+ function No(t) {
3039
+ t.elm._moveCb && t.elm._moveCb(), t.elm._enterCb && t.elm._enterCb();
3040
+ }
3041
+ function Do(t) {
3042
+ t.data.newPos = t.elm.getBoundingClientRect();
3043
+ }
3044
+ function Fo(t) {
3045
+ var e = t.data.pos,
3046
+ n = t.data.newPos,
3047
+ r = e.left - n.left,
3048
+ n = e.top - n.top;
3049
+ (r || n) && ((t.data.moved = !0), ((t = t.elm.style).transform = t.WebkitTransform = "translate(" + r + "px," + n + "px)"), (t.transitionDuration = "0s"));
3050
+ }
3051
+ delete Q.mode;
3052
+ Q = {
3053
+ Transition: st,
3054
+ TransitionGroup: {
3055
+ props: Q,
3056
+ beforeMount: function () {
3057
+ var r = this,
3058
+ o = this._update;
3059
+ this._update = function (t, e) {
3060
+ var n = qe(r);
3061
+ r.__patch__(r._vnode, r.kept, !1, !0), (r._vnode = r.kept), n(), o.call(r, t, e);
3062
+ };
3063
+ },
3064
+ render: function (t) {
3065
+ for (var e = this.tag || this.$vnode.data.tag || "span", n = Object.create(null), r = (this.prevChildren = this.children), o = this.$slots.default || [], i = (this.children = []), a = Mo(this), s = 0; s < o.length; s++) {
3066
+ var c = o[s];
3067
+ c.tag && null != c.key && 0 !== String(c.key).indexOf("__vlist") && (i.push(c), (((n[c.key] = c).data || (c.data = {})).transition = a));
3068
+ }
3069
+ if (r) {
3070
+ for (var l = [], u = [], f = 0; f < r.length; f++) {
3071
+ var p = r[f];
3072
+ (p.data.transition = a), (p.data.pos = p.elm.getBoundingClientRect()), (n[p.key] ? l : u).push(p);
3073
+ }
3074
+ (this.kept = t(e, null, l)), (this.removed = u);
3075
+ }
3076
+ return t(e, null, i);
3077
+ },
3078
+ updated: function () {
3079
+ var t = this.prevChildren,
3080
+ r = this.moveClass || (this.name || "v") + "-move";
3081
+ t.length &&
3082
+ this.hasMove(t[0].elm, r) &&
3083
+ (t.forEach(No),
3084
+ t.forEach(Do),
3085
+ t.forEach(Fo),
3086
+ (this._reflow = document.body.offsetHeight),
3087
+ t.forEach(function (t) {
3088
+ var n;
3089
+ t.data.moved &&
3090
+ ((t = (n = t.elm).style),
3091
+ lo(n, r),
3092
+ (t.transform = t.WebkitTransform = t.transitionDuration = ""),
3093
+ n.addEventListener(
3094
+ oo,
3095
+ (n._moveCb = function t(e) {
3096
+ (e && e.target !== n) || (e && !/transform$/.test(e.propertyName)) || (n.removeEventListener(oo, t), (n._moveCb = null), uo(n, r));
3097
+ })
3098
+ ));
3099
+ }));
3100
+ },
3101
+ methods: {
3102
+ hasMove: function (t, e) {
3103
+ if (!to) return !1;
3104
+ if (this._hasMove) return this._hasMove;
3105
+ var n = t.cloneNode();
3106
+ t._transitionClasses &&
3107
+ t._transitionClasses.forEach(function (t) {
3108
+ Qr(n, t);
3109
+ }),
3110
+ Xr(n, e),
3111
+ (n.style.display = "none"),
3112
+ this.$el.appendChild(n);
3113
+ e = ho(n);
3114
+ return this.$el.removeChild(n), (this._hasMove = e.hasTransform);
3115
+ },
3116
+ },
3117
+ },
3118
+ };
3119
+ function Ro(t, e) {
3120
+ return t && pi(t) && "\n" === e[0];
3121
+ }
3122
+ (_n.config.mustUseProp = An),
3123
+ (_n.config.isReservedTag = zn),
3124
+ (_n.config.isReservedAttr = ht),
3125
+ (_n.config.getTagNamespace = Vn),
3126
+ (_n.config.isUnknownElement = function (t) {
3127
+ if (!B) return !0;
3128
+ if (zn(t)) return !1;
3129
+ if (((t = t.toLowerCase()), null != Wn[t])) return Wn[t];
3130
+ var e = document.createElement(t);
3131
+ return -1 < t.indexOf("-") ? (Wn[t] = e.constructor === window.HTMLUnknownElement || e.constructor === window.HTMLElement) : (Wn[t] = /HTMLUnknownElement/.test(e.toString()));
3132
+ }),
3133
+ w(_n.options.directives, Gt),
3134
+ w(_n.options.components, Q),
3135
+ (_n.prototype.__patch__ = B ? q : $),
3136
+ (_n.prototype.$mount = function (t, e) {
3137
+ return (
3138
+ (n = this),
3139
+ (t = t = t && B ? Jn(t) : void 0),
3140
+ (r = e),
3141
+ (n.$el = t),
3142
+ n.$options.render || (n.$options.render = vt),
3143
+ Ke(n, "beforeMount"),
3144
+ (t = function () {
3145
+ n._update(n._render(), r);
3146
+ }),
3147
+ new sn(
3148
+ n,
3149
+ t,
3150
+ $,
3151
+ {
3152
+ before: function () {
3153
+ n._isMounted && !n._isDestroyed && Ke(n, "beforeUpdate");
3154
+ },
3155
+ },
3156
+ !0
3157
+ ),
3158
+ (r = !1),
3159
+ null == n.$vnode && ((n._isMounted = !0), Ke(n, "mounted")),
3160
+ n
3161
+ );
3162
+ var n, r;
3163
+ }),
3164
+ B &&
3165
+ setTimeout(function () {
3166
+ M.devtools && nt && nt.emit("init", _n);
3167
+ }, 0);
3168
+ var zo,
3169
+ Ho,
3170
+ Uo,
3171
+ Bo,
3172
+ Vo,
3173
+ Wo,
3174
+ qo,
3175
+ Jo,
3176
+ Go,
3177
+ Ko = /\{\{((?:.|\r?\n)+?)\}\}/g,
3178
+ Xo = /[-.*+?^${}()|[\]\/\\]/g,
3179
+ Qo = t(function (t) {
3180
+ var e = t[0].replace(Xo, "\\$&"),
3181
+ t = t[1].replace(Xo, "\\$&");
3182
+ return new RegExp(e + "((?:.|\\n)+?)" + t, "g");
3183
+ }),
3184
+ ht = {
3185
+ staticKeys: ["staticClass"],
3186
+ transformNode: function (t, e) {
3187
+ e.warn;
3188
+ e = xr(t, "class");
3189
+ e && (t.staticClass = JSON.stringify(e));
3190
+ e = wr(t, "class", !1);
3191
+ e && (t.classBinding = e);
3192
+ },
3193
+ genData: function (t) {
3194
+ var e = "";
3195
+ return t.staticClass && (e += "staticClass:" + t.staticClass + ","), t.classBinding && (e += "class:" + t.classBinding + ","), e;
3196
+ },
3197
+ },
3198
+ Gt = {
3199
+ staticKeys: ["staticStyle"],
3200
+ transformNode: function (t, e) {
3201
+ e.warn;
3202
+ e = xr(t, "style");
3203
+ e && (t.staticStyle = JSON.stringify(Rr(e)));
3204
+ e = wr(t, "style", !1);
3205
+ e && (t.styleBinding = e);
3206
+ },
3207
+ genData: function (t) {
3208
+ var e = "";
3209
+ return t.staticStyle && (e += "staticStyle:" + t.staticStyle + ","), t.styleBinding && (e += "style:(" + t.styleBinding + "),"), e;
3210
+ },
3211
+ },
3212
+ Q = a("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),
3213
+ q = a("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),
3214
+ Yo = a(
3215
+ "address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"
3216
+ ),
3217
+ Zo = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,
3218
+ ti = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,
3219
+ F = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + F.source + "]*",
3220
+ F = "((?:" + F + "\\:)?" + F + ")",
3221
+ ei = new RegExp("^<" + F),
3222
+ ni = /^\s*(\/?)>/,
3223
+ ri = new RegExp("^<\\/" + F + "[^>]*>"),
3224
+ oi = /^<!DOCTYPE [^>]+>/i,
3225
+ ii = /^<!\--/,
3226
+ ai = /^<!\[/,
3227
+ si = a("script,style,textarea", !0),
3228
+ ci = {},
3229
+ li = { "&lt;": "<", "&gt;": ">", "&quot;": '"', "&amp;": "&", "&#10;": "\n", "&#9;": "\t", "&#39;": "'" },
3230
+ ui = /&(?:lt|gt|quot|amp|#39);/g,
3231
+ fi = /&(?:lt|gt|quot|amp|#39|#10|#9);/g,
3232
+ pi = a("pre,textarea", !0),
3233
+ di = /^@|^v-on:/,
3234
+ hi = /^v-|^@|^:/,
3235
+ vi = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,
3236
+ mi = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/,
3237
+ yi = /^\(|\)$/g,
3238
+ gi = /^\[.*\]$/,
3239
+ _i = /:(.*)$/,
3240
+ bi = /^:|^\.|^v-bind:/,
3241
+ wi = /\.[^.\]]+(?=[^\]]*$)/g,
3242
+ xi = /^v-slot(:|$)|^#/,
3243
+ $i = /[\r\n]/,
3244
+ ki = /\s+/g,
3245
+ Ci = t(function (t) {
3246
+ return ((zo = zo || document.createElement("div")).innerHTML = t), zo.textContent;
3247
+ }),
3248
+ Oi = "_empty_";
3249
+ function Ai(t, e, n) {
3250
+ return {
3251
+ type: 1,
3252
+ tag: t,
3253
+ attrsList: e,
3254
+ attrsMap: (function (t) {
3255
+ for (var e = {}, n = 0, r = t.length; n < r; n++) e[t[n].name] = t[n].value;
3256
+ return e;
3257
+ })(e),
3258
+ rawAttrsMap: {},
3259
+ parent: n,
3260
+ children: [],
3261
+ };
3262
+ }
3263
+ function Si(t, e) {
3264
+ var n, r, o;
3265
+ (n = wr((o = t), "key")) && (o.key = n),
3266
+ (t.plain = !t.key && !t.scopedSlots && !t.attrsList.length),
3267
+ (o = wr((r = t), "ref")) &&
3268
+ ((r.ref = o),
3269
+ (r.refInFor = (function () {
3270
+ for (var t = r; t; ) {
3271
+ if (void 0 !== t.for) return !0;
3272
+ t = t.parent;
3273
+ }
3274
+ return !1;
3275
+ })())),
3276
+ (function (t) {
3277
+ "template" === t.tag ? ((a = xr(t, "scope")), (t.slotScope = a || xr(t, "slot-scope"))) : (a = xr(t, "slot-scope")) && (t.slotScope = a);
3278
+ var e,
3279
+ n,
3280
+ r,
3281
+ o,
3282
+ i,
3283
+ a = wr(t, "slot");
3284
+ a &&
3285
+ ((t.slotTarget = '""' === a ? '"default"' : a),
3286
+ (t.slotTargetDynamic = !(!t.attrsMap[":slot"] && !t.attrsMap["v-bind:slot"])),
3287
+ "template" === t.tag || t.slotScope || yr(t, "slot", a, ((a = "slot"), t.rawAttrsMap[":" + a] || t.rawAttrsMap["v-bind:" + a] || t.rawAttrsMap[a]))),
3288
+ "template" === t.tag
3289
+ ? (r = $r(t, xi)) && ((n = (e = Ei(r)).name), (o = e.dynamic), (t.slotTarget = n), (t.slotTargetDynamic = o), (t.slotScope = r.value || Oi))
3290
+ : (e = $r(t, xi)) &&
3291
+ ((n = t.scopedSlots || (t.scopedSlots = {})),
3292
+ (r = (o = Ei(e)).name),
3293
+ (o = o.dynamic),
3294
+ ((i = n[r] = Ai("template", [], t)).slotTarget = r),
3295
+ (i.slotTargetDynamic = o),
3296
+ (i.children = t.children.filter(function (t) {
3297
+ if (!t.slotScope) return (t.parent = i), !0;
3298
+ })),
3299
+ (i.slotScope = e.value || Oi),
3300
+ (t.children = []),
3301
+ (t.plain = !1));
3302
+ })(t),
3303
+ "slot" === t.tag && (t.slotName = wr(t, "name")),
3304
+ (o = wr((n = t), "is")) && (n.component = o),
3305
+ null != xr(n, "inline-template") && (n.inlineTemplate = !0);
3306
+ for (var i = 0; i < Bo.length; i++) t = Bo[i](t, e) || t;
3307
+ return (
3308
+ (function (t) {
3309
+ for (var e, n, r, o, i, a, s, c, l, u, f, p = t.attrsList, d = 0, h = p.length; d < h; d++)
3310
+ (e = s = p[d].name),
3311
+ (n = p[d].value),
3312
+ hi.test(e)
3313
+ ? ((t.hasBindings = !0),
3314
+ (c = (function (t) {
3315
+ t = t.match(wi);
3316
+ if (t) {
3317
+ var e = {};
3318
+ return (
3319
+ t.forEach(function (t) {
3320
+ e[t.slice(1)] = !0;
3321
+ }),
3322
+ e
3323
+ );
3324
+ }
3325
+ })(e.replace(hi, ""))) && (e = e.replace(wi, "")),
3326
+ bi.test(e)
3327
+ ? ((e = e.replace(bi, "")),
3328
+ (n = dr(n)),
3329
+ (f = gi.test(e)) && (e = e.slice(1, -1)),
3330
+ c &&
3331
+ (c.prop && !f && "innerHtml" === (e = m(e)) && (e = "innerHTML"),
3332
+ c.camel && !f && (e = m(e)),
3333
+ c.sync &&
3334
+ ((a = Or(n, "$event")),
3335
+ f ? br(t, '"update:"+(' + e + ")", a, null, !1, 0, p[d], !0) : (br(t, "update:" + m(e), a, null, !1, 0, p[d]), g(e) !== m(e) && br(t, "update:" + g(e), a, null, !1, 0, p[d])))),
3336
+ ((c && c.prop) || (!t.component && Jo(t.tag, t.attrsMap.type, e)) ? mr : yr)(t, e, n, p[d], f))
3337
+ : di.test(e)
3338
+ ? ((e = e.replace(di, "")), (f = gi.test(e)) && (e = e.slice(1, -1)), br(t, e, n, c, !1, 0, p[d], f))
3339
+ : ((f = !1),
3340
+ (u = (l = (e = e.replace(hi, "")).match(_i)) && l[1]) && ((e = e.slice(0, -(u.length + 1))), gi.test(u) && ((u = u.slice(1, -1)), (f = !0))),
3341
+ (r = t),
3342
+ (o = e),
3343
+ (i = s),
3344
+ (a = n),
3345
+ (l = u),
3346
+ (s = f),
3347
+ (u = c),
3348
+ (c = p[d]),
3349
+ (r.directives || (r.directives = [])).push(kr({ name: o, rawName: i, value: a, arg: l, isDynamicArg: s, modifiers: u }, c)),
3350
+ (r.plain = !1)))
3351
+ : (yr(t, e, JSON.stringify(n), p[d]), !t.component && "muted" === e && Jo(t.tag, t.attrsMap.type, e) && mr(t, e, "true", p[d]));
3352
+ })(t),
3353
+ t
3354
+ );
3355
+ }
3356
+ function Ti(t) {
3357
+ var r, e;
3358
+ !(r = xr(t, "v-for")) ||
3359
+ ((e = (function () {
3360
+ var t = r.match(vi);
3361
+ if (t) {
3362
+ var e = {};
3363
+ e.for = t[2].trim();
3364
+ var n = t[1].trim().replace(yi, ""),
3365
+ t = n.match(mi);
3366
+ return t ? ((e.alias = n.replace(mi, "").trim()), (e.iterator1 = t[1].trim()), t[2] && (e.iterator2 = t[2].trim())) : (e.alias = n), e;
3367
+ }
3368
+ })()) &&
3369
+ w(t, e));
3370
+ }
3371
+ function ji(t, e) {
3372
+ t.ifConditions || (t.ifConditions = []), t.ifConditions.push(e);
3373
+ }
3374
+ function Ei(t) {
3375
+ var e = t.name.replace(xi, "");
3376
+ return e || ("#" !== t.name[0] && (e = "default")), gi.test(e) ? { name: e.slice(1, -1), dynamic: !0 } : { name: '"' + e + '"', dynamic: !1 };
3377
+ }
3378
+ var Mi = /^xmlns:NS\d+/,
3379
+ Pi = /^NS\d+:/;
3380
+ function Ii(t) {
3381
+ return Ai(t.tag, t.attrsList.slice(), t.parent);
3382
+ }
3383
+ var Li,
3384
+ Ni,
3385
+ Gt = [
3386
+ ht,
3387
+ Gt,
3388
+ {
3389
+ preTransformNode: function (t, e) {
3390
+ if ("input" === t.tag) {
3391
+ var n,
3392
+ r = t.attrsMap;
3393
+ if (r["v-model"] && ((r[":type"] || r["v-bind:type"]) && (n = wr(t, "type")), r.type || n || !r["v-bind"] || (n = "(" + r["v-bind"] + ").type"), n)) {
3394
+ var o = xr(t, "v-if", !0),
3395
+ i = o ? "&&(" + o + ")" : "",
3396
+ a = null != xr(t, "v-else", !0),
3397
+ s = xr(t, "v-else-if", !0),
3398
+ c = Ii(t);
3399
+ Ti(c), gr(c, "type", "checkbox"), Si(c, e), (c.processed = !0), (c.if = "(" + n + ")==='checkbox'" + i), ji(c, { exp: c.if, block: c });
3400
+ r = Ii(t);
3401
+ xr(r, "v-for", !0), gr(r, "type", "radio"), Si(r, e), ji(c, { exp: "(" + n + ")==='radio'" + i, block: r });
3402
+ t = Ii(t);
3403
+ return xr(t, "v-for", !0), gr(t, ":type", n), Si(t, e), ji(c, { exp: o, block: t }), a ? (c.else = !0) : s && (c.elseif = s), c;
3404
+ }
3405
+ }
3406
+ },
3407
+ },
3408
+ ],
3409
+ Gt = {
3410
+ expectHTML: !0,
3411
+ modules: Gt,
3412
+ directives: {
3413
+ model: function (t, e, n) {
3414
+ var r,
3415
+ o,
3416
+ i,
3417
+ a,
3418
+ s,
3419
+ c = e.value,
3420
+ l = e.modifiers,
3421
+ u = t.tag,
3422
+ f = t.attrsMap.type;
3423
+ if (t.component) return Cr(t, c, l), !1;
3424
+ if ("select" === u)
3425
+ br(
3426
+ t,
3427
+ "change",
3428
+ 'var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return ' +
3429
+ (l && l.number ? "_n(val)" : "val") +
3430
+ "});" +
3431
+ " " +
3432
+ Or(c, "$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),
3433
+ null,
3434
+ !0
3435
+ );
3436
+ else if ("input" === u && "checkbox" === f)
3437
+ (r = t),
3438
+ (o = c),
3439
+ (i = l && l.number),
3440
+ (a = wr(r, "value") || "null"),
3441
+ (s = wr(r, "true-value") || "true"),
3442
+ (e = wr(r, "false-value") || "false"),
3443
+ mr(r, "checked", "Array.isArray(" + o + ")?_i(" + o + "," + a + ")>-1" + ("true" === s ? ":(" + o + ")" : ":_q(" + o + "," + s + ")")),
3444
+ br(
3445
+ r,
3446
+ "change",
3447
+ "var $$a=" +
3448
+ o +
3449
+ ",$$el=$event.target,$$c=$$el.checked?(" +
3450
+ s +
3451
+ "):(" +
3452
+ e +
3453
+ ");if(Array.isArray($$a)){var $$v=" +
3454
+ (i ? "_n(" + a + ")" : a) +
3455
+ ",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&(" +
3456
+ Or(o, "$$a.concat([$$v])") +
3457
+ ")}else{$$i>-1&&(" +
3458
+ Or(o, "$$a.slice(0,$$i).concat($$a.slice($$i+1))") +
3459
+ ")}}else{" +
3460
+ Or(o, "$$c") +
3461
+ "}",
3462
+ null,
3463
+ !0
3464
+ );
3465
+ else if ("input" === u && "radio" === f)
3466
+ (i = t), (a = c), (o = l && l.number), (f = wr(i, "value") || "null"), mr(i, "checked", "_q(" + a + "," + (f = o ? "_n(" + f + ")" : f) + ")"), br(i, "change", Or(a, f), null, !0);
3467
+ else if ("input" === u || "textarea" === u)
3468
+ !(function (t, e) {
3469
+ var n = t.attrsMap.type,
3470
+ r = l || {},
3471
+ o = r.lazy,
3472
+ i = r.number,
3473
+ a = r.trim,
3474
+ r = !o && "range" !== n,
3475
+ o = o ? "change" : "range" === n ? "__r" : "input",
3476
+ n = a ? "$event.target.value.trim()" : "$event.target.value";
3477
+ i && (n = "_n(" + n + ")");
3478
+ n = Or(e, n);
3479
+ r && (n = "if($event.target.composing)return;" + n), mr(t, "value", "(" + e + ")"), br(t, o, n, null, !0), (a || i) && br(t, "blur", "$forceUpdate()");
3480
+ })(t, c);
3481
+ else if (!M.isReservedTag(u)) return Cr(t, c, l), !1;
3482
+ return !0;
3483
+ },
3484
+ text: function (t, e) {
3485
+ e.value && mr(t, "textContent", "_s(" + e.value + ")", e);
3486
+ },
3487
+ html: function (t, e) {
3488
+ e.value && mr(t, "innerHTML", "_s(" + e.value + ")", e);
3489
+ },
3490
+ },
3491
+ isPreTag: function (t) {
3492
+ return "pre" === t;
3493
+ },
3494
+ isUnaryTag: Q,
3495
+ mustUseProp: An,
3496
+ canBeLeftOpenTag: q,
3497
+ isReservedTag: zn,
3498
+ getTagNamespace: Vn,
3499
+ staticKeys: Gt.reduce(function (t, e) {
3500
+ return t.concat(e.staticKeys || []);
3501
+ }, []).join(","),
3502
+ },
3503
+ Di = t(function (t) {
3504
+ return a("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap" + (t ? "," + t : ""));
3505
+ }),
3506
+ Fi = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*(?:[\w$]+)?\s*\(/,
3507
+ Ri = /\([^)]*?\);*$/,
3508
+ zi = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,
3509
+ Hi = { esc: 27, tab: 9, enter: 13, space: 32, up: 38, left: 37, right: 39, down: 40, delete: [8, 46] },
3510
+ Ui = {
3511
+ esc: ["Esc", "Escape"],
3512
+ tab: "Tab",
3513
+ enter: "Enter",
3514
+ space: [" ", "Spacebar"],
3515
+ up: ["Up", "ArrowUp"],
3516
+ left: ["Left", "ArrowLeft"],
3517
+ right: ["Right", "ArrowRight"],
3518
+ down: ["Down", "ArrowDown"],
3519
+ delete: ["Backspace", "Delete", "Del"],
3520
+ },
3521
+ Bi = function (t) {
3522
+ return "if(" + t + ")return null;";
3523
+ },
3524
+ Vi = {
3525
+ stop: "$event.stopPropagation();",
3526
+ prevent: "$event.preventDefault();",
3527
+ self: Bi("$event.target !== $event.currentTarget"),
3528
+ ctrl: Bi("!$event.ctrlKey"),
3529
+ shift: Bi("!$event.shiftKey"),
3530
+ alt: Bi("!$event.altKey"),
3531
+ meta: Bi("!$event.metaKey"),
3532
+ left: Bi("'button' in $event && $event.button !== 0"),
3533
+ middle: Bi("'button' in $event && $event.button !== 1"),
3534
+ right: Bi("'button' in $event && $event.button !== 2"),
3535
+ };
3536
+ function Wi(t, e) {
3537
+ var n,
3538
+ e = e ? "nativeOn:" : "on:",
3539
+ r = "",
3540
+ o = "";
3541
+ for (n in t) {
3542
+ var i = (function e(t) {
3543
+ if (!t) return "function(){}";
3544
+ if (Array.isArray(t))
3545
+ return (
3546
+ "[" +
3547
+ t
3548
+ .map(function (t) {
3549
+ return e(t);
3550
+ })
3551
+ .join(",") +
3552
+ "]"
3553
+ );
3554
+ var n = zi.test(t.value),
3555
+ r = Fi.test(t.value),
3556
+ o = zi.test(t.value.replace(Ri, ""));
3557
+ if (t.modifiers) {
3558
+ var i,
3559
+ a,
3560
+ s = "",
3561
+ c = "",
3562
+ l = [];
3563
+ for (i in t.modifiers)
3564
+ Vi[i]
3565
+ ? ((c += Vi[i]), Hi[i] && l.push(i))
3566
+ : "exact" === i
3567
+ ? ((a = t.modifiers),
3568
+ (c += Bi(
3569
+ ["ctrl", "shift", "alt", "meta"]
3570
+ .filter(function (t) {
3571
+ return !a[t];
3572
+ })
3573
+ .map(function (t) {
3574
+ return "$event." + t + "Key";
3575
+ })
3576
+ .join("||")
3577
+ )))
3578
+ : l.push(i);
3579
+ return (
3580
+ l.length && (s += "if(!$event.type.indexOf('key')&&" + l.map(qi).join("&&") + ")return null;"),
3581
+ c && (s += c),
3582
+ "function($event){" + s + (n ? "return " + t.value + "($event)" : r ? "return (" + t.value + ")($event)" : o ? "return " + t.value : t.value) + "}"
3583
+ );
3584
+ }
3585
+ return n || r ? t.value : "function($event){" + (o ? "return " + t.value : t.value) + "}";
3586
+ })(t[n]);
3587
+ t[n] && t[n].dynamic ? (o += n + "," + i + ",") : (r += '"' + n + '":' + i + ",");
3588
+ }
3589
+ return (r = "{" + r.slice(0, -1) + "}"), o ? e + "_d(" + r + ",[" + o.slice(0, -1) + "])" : e + r;
3590
+ }
3591
+ function qi(t) {
3592
+ var e = parseInt(t, 10);
3593
+ if (e) return "$event.keyCode!==" + e;
3594
+ var n = Hi[t],
3595
+ e = Ui[t];
3596
+ return "_k($event.keyCode," + JSON.stringify(t) + "," + JSON.stringify(n) + ",$event.key," + JSON.stringify(e) + ")";
3597
+ }
3598
+ var Ji = {
3599
+ on: function (t, e) {
3600
+ t.wrapListeners = function (t) {
3601
+ return "_g(" + t + "," + e.value + ")";
3602
+ };
3603
+ },
3604
+ bind: function (e, n) {
3605
+ e.wrapData = function (t) {
3606
+ return "_b(" + t + ",'" + e.tag + "'," + n.value + "," + (n.modifiers && n.modifiers.prop ? "true" : "false") + (n.modifiers && n.modifiers.sync ? ",true" : "") + ")";
3607
+ };
3608
+ },
3609
+ cloak: $,
3610
+ },
3611
+ Gi = function (t) {
3612
+ (this.options = t), (this.warn = t.warn || hr), (this.transforms = vr(t.modules, "transformCode")), (this.dataGenFns = vr(t.modules, "genData")), (this.directives = w(w({}, Ji), t.directives));
3613
+ var e = t.isReservedTag || k;
3614
+ (this.maybeComponent = function (t) {
3615
+ return !!t.component || !e(t.tag);
3616
+ }),
3617
+ (this.onceId = 0),
3618
+ (this.staticRenderFns = []),
3619
+ (this.pre = !1);
3620
+ };
3621
+ function Ki(t, e) {
3622
+ e = new Gi(e);
3623
+ return { render: "with(this){return " + (t ? Xi(t, e) : '_c("div")') + "}", staticRenderFns: e.staticRenderFns };
3624
+ }
3625
+ function Xi(t, e) {
3626
+ if ((t.parent && (t.pre = t.pre || t.parent.pre), t.staticRoot && !t.staticProcessed)) return Qi(t, e);
3627
+ if (t.once && !t.onceProcessed) return Yi(t, e);
3628
+ if (t.for && !t.forProcessed) return ta(t, e);
3629
+ if (t.if && !t.ifProcessed) return Zi(t, e);
3630
+ if ("template" !== t.tag || t.slotTarget || e.pre) {
3631
+ if ("slot" === t.tag)
3632
+ return (
3633
+ (s = "_t(" + ((l = t).slotName || '"default"') + ((a = oa(l, e)) ? "," + a : "")),
3634
+ (c =
3635
+ l.attrs || l.dynamicAttrs
3636
+ ? sa(
3637
+ (l.attrs || []).concat(l.dynamicAttrs || []).map(function (t) {
3638
+ return { name: m(t.name), value: t.value, dynamic: t.dynamic };
3639
+ })
3640
+ )
3641
+ : null),
3642
+ (l = l.attrsMap["v-bind"]),
3643
+ (!c && !l) || a || (s += ",null"),
3644
+ c && (s += "," + c),
3645
+ l && (s += (c ? "" : ",null") + "," + l),
3646
+ s + ")"
3647
+ );
3648
+ var n, r;
3649
+ r = t.component
3650
+ ? ((c = t.component), (l = e), (i = (s = t).inlineTemplate ? null : oa(s, l, !0)), "_c(" + c + "," + ea(s, l) + (i ? "," + i : "") + ")")
3651
+ : ((!t.plain || (t.pre && e.maybeComponent(t))) && (n = ea(t, e)), (i = t.inlineTemplate ? null : oa(t, e, !0)), "_c('" + t.tag + "'" + (n ? "," + n : "") + (i ? "," + i : "") + ")");
3652
+ for (var o = 0; o < e.transforms.length; o++) r = e.transforms[o](t, r);
3653
+ return r;
3654
+ }
3655
+ var i, a, s, c, l;
3656
+ return oa(t, e) || "void 0";
3657
+ }
3658
+ function Qi(t, e) {
3659
+ t.staticProcessed = !0;
3660
+ var n = e.pre;
3661
+ return t.pre && (e.pre = t.pre), e.staticRenderFns.push("with(this){return " + Xi(t, e) + "}"), (e.pre = n), "_m(" + (e.staticRenderFns.length - 1) + (t.staticInFor ? ",true" : "") + ")";
3662
+ }
3663
+ function Yi(t, e) {
3664
+ if (((t.onceProcessed = !0), t.if && !t.ifProcessed)) return Zi(t, e);
3665
+ if (t.staticInFor) {
3666
+ for (var n = "", r = t.parent; r; ) {
3667
+ if (r.for) {
3668
+ n = r.key;
3669
+ break;
3670
+ }
3671
+ r = r.parent;
3672
+ }
3673
+ return n ? "_o(" + Xi(t, e) + "," + e.onceId++ + "," + n + ")" : Xi(t, e);
3674
+ }
3675
+ return Qi(t, e);
3676
+ }
3677
+ function Zi(t, e, n, r) {
3678
+ return (
3679
+ (t.ifProcessed = !0),
3680
+ (function t(e, n, r, o) {
3681
+ if (!e.length) return o || "_e()";
3682
+ var i = e.shift();
3683
+ return i.exp ? "(" + i.exp + ")?" + a(i.block) + ":" + t(e, n, r, o) : "" + a(i.block);
3684
+ function a(t) {
3685
+ return (r || (t.once ? Yi : Xi))(t, n);
3686
+ }
3687
+ })(t.ifConditions.slice(), e, n, r)
3688
+ );
3689
+ }
3690
+ function ta(t, e, n, r) {
3691
+ var o = t.for,
3692
+ i = t.alias,
3693
+ a = t.iterator1 ? "," + t.iterator1 : "",
3694
+ s = t.iterator2 ? "," + t.iterator2 : "";
3695
+ return (t.forProcessed = !0), (r || "_l") + "((" + o + "),function(" + i + a + s + "){return " + (n || Xi)(t, e) + "})";
3696
+ }
3697
+ function ea(e, n) {
3698
+ var t = "{",
3699
+ r = (function (t, e) {
3700
+ var n = t.directives;
3701
+ if (n) {
3702
+ for (var r, o, i = "directives:[", a = !1, s = 0, c = n.length; s < c; s++) {
3703
+ (r = n[s]), (o = !0);
3704
+ var l = e.directives[r.name];
3705
+ l && (o = !!l(t, r, e.warn)),
3706
+ o &&
3707
+ ((a = !0),
3708
+ (i +=
3709
+ '{name:"' +
3710
+ r.name +
3711
+ '",rawName:"' +
3712
+ r.rawName +
3713
+ '"' +
3714
+ (r.value ? ",value:(" + r.value + "),expression:" + JSON.stringify(r.value) : "") +
3715
+ (r.arg ? ",arg:" + (r.isDynamicArg ? r.arg : '"' + r.arg + '"') : "") +
3716
+ (r.modifiers ? ",modifiers:" + JSON.stringify(r.modifiers) : "") +
3717
+ "},"));
3718
+ }
3719
+ return a ? i.slice(0, -1) + "]" : void 0;
3720
+ }
3721
+ })(e, n);
3722
+ r && (t += r + ","), e.key && (t += "key:" + e.key + ","), e.ref && (t += "ref:" + e.ref + ","), e.refInFor && (t += "refInFor:true,"), e.pre && (t += "pre:true,"), e.component && (t += 'tag:"' + e.tag + '",');
3723
+ for (var o, i = 0; i < n.dataGenFns.length; i++) t += n.dataGenFns[i](e);
3724
+ return (
3725
+ e.attrs && (t += "attrs:" + sa(e.attrs) + ","),
3726
+ e.props && (t += "domProps:" + sa(e.props) + ","),
3727
+ e.events && (t += Wi(e.events, !1) + ","),
3728
+ e.nativeEvents && (t += Wi(e.nativeEvents, !0) + ","),
3729
+ e.slotTarget && !e.slotScope && (t += "slot:" + e.slotTarget + ","),
3730
+ e.scopedSlots &&
3731
+ (t +=
3732
+ (function (t, e, n) {
3733
+ var r =
3734
+ t.for ||
3735
+ Object.keys(e).some(function (t) {
3736
+ t = e[t];
3737
+ return t.slotTargetDynamic || t.if || t.for || na(t);
3738
+ }),
3739
+ o = !!t.if;
3740
+ if (!r)
3741
+ for (var i = t.parent; i; ) {
3742
+ if ((i.slotScope && i.slotScope !== Oi) || i.for) {
3743
+ r = !0;
3744
+ break;
3745
+ }
3746
+ i.if && (o = !0), (i = i.parent);
3747
+ }
3748
+ t = Object.keys(e)
3749
+ .map(function (t) {
3750
+ return ra(e[t], n);
3751
+ })
3752
+ .join(",");
3753
+ return (
3754
+ "scopedSlots:_u([" +
3755
+ t +
3756
+ "]" +
3757
+ (r ? ",null,true" : "") +
3758
+ (!r && o
3759
+ ? ",null,false," +
3760
+ (function (t) {
3761
+ for (var e = 5381, n = t.length; n; ) e = (33 * e) ^ t.charCodeAt(--n);
3762
+ return e >>> 0;
3763
+ })(t)
3764
+ : "") +
3765
+ ")"
3766
+ );
3767
+ })(e, e.scopedSlots, n) + ","),
3768
+ e.model && (t += "model:{value:" + e.model.value + ",callback:" + e.model.callback + ",expression:" + e.model.expression + "},"),
3769
+ e.inlineTemplate &&
3770
+ (o = (function () {
3771
+ var t = e.children[0];
3772
+ if (t && 1 === t.type) {
3773
+ t = Ki(t, n.options);
3774
+ return (
3775
+ "inlineTemplate:{render:function(){" +
3776
+ t.render +
3777
+ "},staticRenderFns:[" +
3778
+ t.staticRenderFns
3779
+ .map(function (t) {
3780
+ return "function(){" + t + "}";
3781
+ })
3782
+ .join(",") +
3783
+ "]}"
3784
+ );
3785
+ }
3786
+ })()) &&
3787
+ (t += o + ","),
3788
+ (t = t.replace(/,$/, "") + "}"),
3789
+ e.dynamicAttrs && (t = "_b(" + t + ',"' + e.tag + '",' + sa(e.dynamicAttrs) + ")"),
3790
+ e.wrapData && (t = e.wrapData(t)),
3791
+ e.wrapListeners && (t = e.wrapListeners(t)),
3792
+ t
3793
+ );
3794
+ }
3795
+ function na(t) {
3796
+ return 1 === t.type && ("slot" === t.tag || t.children.some(na));
3797
+ }
3798
+ function ra(t, e) {
3799
+ var n = t.attrsMap["slot-scope"];
3800
+ if (t.if && !t.ifProcessed && !n) return Zi(t, e, ra, "null");
3801
+ if (t.for && !t.forProcessed) return ta(t, e, ra);
3802
+ var r = t.slotScope === Oi ? "" : String(t.slotScope),
3803
+ e = "function(" + r + "){return " + ("template" === t.tag ? (t.if && n ? "(" + t.if + ")?" + (oa(t, e) || "undefined") + ":undefined" : oa(t, e) || "undefined") : Xi(t, e)) + "}",
3804
+ r = r ? "" : ",proxy:true";
3805
+ return "{key:" + (t.slotTarget || '"default"') + ",fn:" + e + r + "}";
3806
+ }
3807
+ function oa(t, e, n, r, o) {
3808
+ var i = t.children;
3809
+ if (i.length) {
3810
+ var a = i[0];
3811
+ if (1 === i.length && a.for && "template" !== a.tag && "slot" !== a.tag) {
3812
+ t = n ? (e.maybeComponent(a) ? ",1" : ",0") : "";
3813
+ return (r || Xi)(a, e) + t;
3814
+ }
3815
+ var n = n
3816
+ ? (function (t, e) {
3817
+ for (var n = 0, r = 0; r < t.length; r++) {
3818
+ var o = t[r];
3819
+ if (1 === o.type) {
3820
+ if (
3821
+ ia(o) ||
3822
+ (o.ifConditions &&
3823
+ o.ifConditions.some(function (t) {
3824
+ return ia(t.block);
3825
+ }))
3826
+ ) {
3827
+ n = 2;
3828
+ break;
3829
+ }
3830
+ (e(o) ||
3831
+ (o.ifConditions &&
3832
+ o.ifConditions.some(function (t) {
3833
+ return e(t.block);
3834
+ }))) &&
3835
+ (n = 1);
3836
+ }
3837
+ }
3838
+ return n;
3839
+ })(i, e.maybeComponent)
3840
+ : 0,
3841
+ s = o || aa;
3842
+ return (
3843
+ "[" +
3844
+ i
3845
+ .map(function (t) {
3846
+ return s(t, e);
3847
+ })
3848
+ .join(",") +
3849
+ "]" +
3850
+ (n ? "," + n : "")
3851
+ );
3852
+ }
3853
+ }
3854
+ function ia(t) {
3855
+ return void 0 !== t.for || "template" === t.tag || "slot" === t.tag;
3856
+ }
3857
+ function aa(t, e) {
3858
+ return 1 === t.type ? Xi(t, e) : 3 === t.type && t.isComment ? "_e(" + JSON.stringify(t.text) + ")" : "_v(" + (2 === t.type ? t.expression : ca(JSON.stringify(t.text))) + ")";
3859
+ }
3860
+ function sa(t) {
3861
+ for (var e = "", n = "", r = 0; r < t.length; r++) {
3862
+ var o = t[r],
3863
+ i = ca(o.value);
3864
+ o.dynamic ? (n += o.name + "," + i + ",") : (e += '"' + o.name + '":' + i + ",");
3865
+ }
3866
+ return (e = "{" + e.slice(0, -1) + "}"), n ? "_d(" + e + ",[" + n.slice(0, -1) + "])" : e;
3867
+ }
3868
+ function ca(t) {
3869
+ return t.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
3870
+ }
3871
+ function la(e, n) {
3872
+ try {
3873
+ return new Function(e);
3874
+ } catch (t) {
3875
+ return n.push({ err: t, code: e }), $;
3876
+ }
3877
+ }
3878
+ new RegExp(
3879
+ "\\b" +
3880
+ "do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b") +
3881
+ "\\b"
3882
+ );
3883
+ var ua,
3884
+ fa,
3885
+ pa,
3886
+ da,
3887
+ ha,
3888
+ va =
3889
+ ((ua = function (t, e) {
3890
+ var n,
3891
+ r = (function (t, l) {
3892
+ (Ho = l.warn || hr),
3893
+ (qo = l.isPreTag || k),
3894
+ (Jo = l.mustUseProp || k),
3895
+ (Go = l.getTagNamespace || k),
3896
+ l.isReservedTag,
3897
+ (Bo = vr(l.modules, "transformNode")),
3898
+ (Vo = vr(l.modules, "preTransformNode")),
3899
+ (Wo = vr(l.modules, "postTransformNode")),
3900
+ (Uo = l.delimiters);
3901
+ var u,
3902
+ f,
3903
+ p = [],
3904
+ a = !1 !== l.preserveWhitespace,
3905
+ s = l.whitespace,
3906
+ d = !1,
3907
+ h = !1;
3908
+ function v(t) {
3909
+ var e, n;
3910
+ o(t),
3911
+ d || t.processed || (t = Si(t, l)),
3912
+ p.length || t === u || (u.if && (t.elseif || t.else) && ji(u, { exp: t.elseif, block: t })),
3913
+ f &&
3914
+ !t.forbidden &&
3915
+ (t.elseif || t.else
3916
+ ? ((e = t),
3917
+ (n = (function (t) {
3918
+ for (var e = t.length; e--; ) {
3919
+ if (1 === t[e].type) return t[e];
3920
+ t.pop();
3921
+ }
3922
+ })(f.children)) &&
3923
+ n.if &&
3924
+ ji(n, { exp: e.elseif, block: e }))
3925
+ : (t.slotScope && ((e = t.slotTarget || '"default"'), ((f.scopedSlots || (f.scopedSlots = {}))[e] = t)), f.children.push(t), (t.parent = f))),
3926
+ (t.children = t.children.filter(function (t) {
3927
+ return !t.slotScope;
3928
+ })),
3929
+ o(t),
3930
+ t.pre && (d = !1),
3931
+ qo(t.tag) && (h = !1);
3932
+ for (var r = 0; r < Wo.length; r++) Wo[r](t, l);
3933
+ }
3934
+ function o(t) {
3935
+ if (!h) for (var e; (e = t.children[t.children.length - 1]) && 3 === e.type && " " === e.text; ) t.children.pop();
3936
+ }
3937
+ return (
3938
+ (function (o, l) {
3939
+ for (var t, u, f = [], p = l.expectHTML, d = l.isUnaryTag || k, h = l.canBeLeftOpenTag || k, a = 0; o; ) {
3940
+ if (((t = o), u && si(u))) {
3941
+ var r = 0,
3942
+ i = u.toLowerCase(),
3943
+ e = ci[i] || (ci[i] = new RegExp("([\\s\\S]*?)(</" + i + "[^>]*>)", "i")),
3944
+ e = o.replace(e, function (t, e, n) {
3945
+ return (
3946
+ (r = n.length),
3947
+ si(i) || "noscript" === i || (e = e.replace(/<!\--([\s\S]*?)-->/g, "$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g, "$1")),
3948
+ Ro(i, e) && (e = e.slice(1)),
3949
+ l.chars && l.chars(e),
3950
+ ""
3951
+ );
3952
+ });
3953
+ (a += o.length - e.length), (o = e), g(i, a - r, a);
3954
+ } else {
3955
+ var n = o.indexOf("<");
3956
+ if (0 === n) {
3957
+ if (ii.test(o)) {
3958
+ e = o.indexOf("--\x3e");
3959
+ if (0 <= e) {
3960
+ l.shouldKeepComment && l.comment(o.substring(4, e), a, a + e + 3), y(e + 3);
3961
+ continue;
3962
+ }
3963
+ }
3964
+ if (ai.test(o)) {
3965
+ var s = o.indexOf("]>");
3966
+ if (0 <= s) {
3967
+ y(s + 2);
3968
+ continue;
3969
+ }
3970
+ }
3971
+ s = o.match(oi);
3972
+ if (s) {
3973
+ y(s[0].length);
3974
+ continue;
3975
+ }
3976
+ s = o.match(ri);
3977
+ if (s) {
3978
+ var c = a;
3979
+ y(s[0].length), g(s[1], c, a);
3980
+ continue;
3981
+ }
3982
+ c = (function () {
3983
+ var t = o.match(ei);
3984
+ if (t) {
3985
+ var e,
3986
+ n,
3987
+ r = { tagName: t[1], attrs: [], start: a };
3988
+ for (y(t[0].length); !(e = o.match(ni)) && (n = o.match(ti) || o.match(Zo)); ) (n.start = a), y(n[0].length), (n.end = a), r.attrs.push(n);
3989
+ if (e) return (r.unarySlash = e[1]), y(e[0].length), (r.end = a), r;
3990
+ }
3991
+ })();
3992
+ if (c) {
3993
+ (function (t) {
3994
+ var e = t.tagName,
3995
+ n = t.unarySlash;
3996
+ p && ("p" === u && Yo(e) && g(u), h(e) && u === e && g(e));
3997
+ for (var n = d(e) || !!n, r = t.attrs.length, o = new Array(r), i = 0; i < r; i++) {
3998
+ var a = t.attrs[i],
3999
+ s = a[3] || a[4] || a[5] || "",
4000
+ c = "a" === e && "href" === a[1] ? l.shouldDecodeNewlinesForHref : l.shouldDecodeNewlines;
4001
+ o[i] = {
4002
+ name: a[1],
4003
+ value:
4004
+ ((c = c ? fi : ui),
4005
+ s.replace(c, function (t) {
4006
+ return li[t];
4007
+ })),
4008
+ };
4009
+ }
4010
+ n || (f.push({ tag: e, lowerCasedTag: e.toLowerCase(), attrs: o, start: t.start, end: t.end }), (u = e)), l.start && l.start(e, o, n, t.start, t.end);
4011
+ })(c),
4012
+ Ro(c.tagName, o) && y(1);
4013
+ continue;
4014
+ }
4015
+ }
4016
+ var c = void 0,
4017
+ v = void 0,
4018
+ m = void 0;
4019
+ if (0 <= n) {
4020
+ for (v = o.slice(n); !(ri.test(v) || ei.test(v) || ii.test(v) || ai.test(v) || (m = v.indexOf("<", 1)) < 0); ) (n += m), (v = o.slice(n));
4021
+ c = o.substring(0, n);
4022
+ }
4023
+ n < 0 && (c = o), c && y(c.length), l.chars && c && l.chars(c, a - c.length, a);
4024
+ }
4025
+ if (o === t) {
4026
+ l.chars && l.chars(o);
4027
+ break;
4028
+ }
4029
+ }
4030
+ function y(t) {
4031
+ (a += t), (o = o.substring(t));
4032
+ }
4033
+ function g(t, e, n) {
4034
+ var r, o;
4035
+ if ((null == e && (e = a), null == n && (n = a), t)) for (o = t.toLowerCase(), r = f.length - 1; 0 <= r && f[r].lowerCasedTag !== o; r--);
4036
+ else r = 0;
4037
+ if (0 <= r) {
4038
+ for (var i = f.length - 1; r <= i; i--) l.end && l.end(f[i].tag, e, n);
4039
+ (f.length = r), (u = r && f[r - 1].tag);
4040
+ } else "br" === o ? l.start && l.start(t, [], !0, e, n) : "p" === o && (l.start && l.start(t, [], !1, e, n), l.end && l.end(t, e, n));
4041
+ }
4042
+ g();
4043
+ })(t, {
4044
+ warn: Ho,
4045
+ expectHTML: l.expectHTML,
4046
+ isUnaryTag: l.isUnaryTag,
4047
+ canBeLeftOpenTag: l.canBeLeftOpenTag,
4048
+ shouldDecodeNewlines: l.shouldDecodeNewlines,
4049
+ shouldDecodeNewlinesForHref: l.shouldDecodeNewlinesForHref,
4050
+ shouldKeepComment: l.comments,
4051
+ outputSourceRange: l.outputSourceRange,
4052
+ start: function (t, e, n, r, o) {
4053
+ var i = (f && f.ns) || Go(t);
4054
+ J &&
4055
+ "svg" === i &&
4056
+ (e = (function (t) {
4057
+ for (var e = [], n = 0; n < t.length; n++) {
4058
+ var r = t[n];
4059
+ Mi.test(r.name) || ((r.name = r.name.replace(Pi, "")), e.push(r));
4060
+ }
4061
+ return e;
4062
+ })(e));
4063
+ var a = Ai(t, e, f);
4064
+ i && (a.ns = i), ("style" !== a.tag && ("script" !== a.tag || (a.attrsMap.type && "text/javascript" !== a.attrsMap.type))) || et() || (a.forbidden = !0);
4065
+ for (var s, c = 0; c < Vo.length; c++) a = Vo[c](a, l) || a;
4066
+ d || (null != xr((s = a), "v-pre") && (s.pre = !0), a.pre && (d = !0)),
4067
+ qo(a.tag) && (h = !0),
4068
+ d
4069
+ ? (function (t) {
4070
+ var e = t.attrsList,
4071
+ n = e.length;
4072
+ if (n)
4073
+ for (var r = (t.attrs = new Array(n)), o = 0; o < n; o++)
4074
+ (r[o] = { name: e[o].name, value: JSON.stringify(e[o].value) }), null != e[o].start && ((r[o].start = e[o].start), (r[o].end = e[o].end));
4075
+ else t.pre || (t.plain = !0);
4076
+ })(a)
4077
+ : a.processed ||
4078
+ (Ti(a),
4079
+ (s = xr((i = a), "v-if")) ? ((i.if = s), ji(i, { exp: s, block: i })) : (null != xr(i, "v-else") && (i.else = !0), (s = xr(i, "v-else-if")) && (i.elseif = s)),
4080
+ null != xr((s = a), "v-once") && (s.once = !0)),
4081
+ (u = u || a),
4082
+ n ? v(a) : ((f = a), p.push(a));
4083
+ },
4084
+ end: function (t, e, n) {
4085
+ var r = p[p.length - 1];
4086
+ --p.length, (f = p[p.length - 1]), v(r);
4087
+ },
4088
+ chars: function (t, e, n) {
4089
+ var r, o, i;
4090
+ !f ||
4091
+ (J && "textarea" === f.tag && f.attrsMap.placeholder === t) ||
4092
+ ((i = f.children),
4093
+ (t = h || t.trim() ? ("script" === f.tag || "style" === f.tag ? t : Ci(t)) : i.length ? (s ? ("condense" === s && $i.test(t) ? "" : " ") : a ? " " : "") : "") &&
4094
+ (h || "condense" !== s || (t = t.replace(ki, " ")),
4095
+ !d &&
4096
+ " " !== t &&
4097
+ (r = (function (t) {
4098
+ var e = Uo ? Qo(Uo) : Ko;
4099
+ if (e.test(t)) {
4100
+ for (var n, r, o, i = [], a = [], s = (e.lastIndex = 0); (n = e.exec(t)); ) {
4101
+ (r = n.index) > s && (a.push((o = t.slice(s, r))), i.push(JSON.stringify(o)));
4102
+ var c = dr(n[1].trim());
4103
+ i.push("_s(" + c + ")"), a.push({ "@binding": c }), (s = r + n[0].length);
4104
+ }
4105
+ return s < t.length && (a.push((o = t.slice(s))), i.push(JSON.stringify(o))), { expression: i.join("+"), tokens: a };
4106
+ }
4107
+ })(t))
4108
+ ? (o = { type: 2, expression: r.expression, tokens: r.tokens, text: t })
4109
+ : (" " === t && i.length && " " === i[i.length - 1].text) || (o = { type: 3, text: t }),
4110
+ o && i.push(o)));
4111
+ },
4112
+ comment: function (t, e, n) {
4113
+ f && ((t = { type: 3, text: t, isComment: !0 }), f.children.push(t));
4114
+ },
4115
+ }),
4116
+ u
4117
+ );
4118
+ })(t.trim(), e);
4119
+ !1 !== e.optimize &&
4120
+ ((n = e),
4121
+ (t = r) &&
4122
+ ((Li = Di(n.staticKeys || "")),
4123
+ (Ni = n.isReservedTag || k),
4124
+ (function t(e) {
4125
+ var n;
4126
+ if (
4127
+ ((e.static =
4128
+ 2 !== (n = e).type &&
4129
+ (3 === n.type ||
4130
+ !(
4131
+ !n.pre &&
4132
+ (n.hasBindings ||
4133
+ n.if ||
4134
+ n.for ||
4135
+ u(n.tag) ||
4136
+ !Ni(n.tag) ||
4137
+ (function (t) {
4138
+ for (; t.parent; ) {
4139
+ if ("template" !== (t = t.parent).tag) return;
4140
+ if (t.for) return 1;
4141
+ }
4142
+ })(n) ||
4143
+ !Object.keys(n).every(Li))
4144
+ ))),
4145
+ 1 === e.type && (Ni(e.tag) || "slot" === e.tag || null != e.attrsMap["inline-template"]))
4146
+ ) {
4147
+ for (var r = 0, o = e.children.length; r < o; r++) {
4148
+ var i = e.children[r];
4149
+ t(i), i.static || (e.static = !1);
4150
+ }
4151
+ if (e.ifConditions)
4152
+ for (var a = 1, s = e.ifConditions.length; a < s; a++) {
4153
+ var c = e.ifConditions[a].block;
4154
+ t(c), c.static || (e.static = !1);
4155
+ }
4156
+ }
4157
+ })(t),
4158
+ (function t(e, n) {
4159
+ if (1 === e.type) {
4160
+ if (((e.static || e.once) && (e.staticInFor = n), e.static && e.children.length && (1 !== e.children.length || 3 !== e.children[0].type))) return (e.staticRoot = !0), 0;
4161
+ if (((e.staticRoot = !1), e.children)) for (var r = 0, o = e.children.length; r < o; r++) t(e.children[r], n || !!e.for);
4162
+ if (e.ifConditions) for (var i = 1, a = e.ifConditions.length; i < a; i++) t(e.ifConditions[i].block, n);
4163
+ }
4164
+ })(t, !1)));
4165
+ e = Ki(r, e);
4166
+ return { ast: r, render: e.render, staticRenderFns: e.staticRenderFns };
4167
+ }),
4168
+ (ha = Gt),
4169
+ (pa = ma),
4170
+ (da = Object.create(null)),
4171
+ function (t, e, n) {
4172
+ (e = w({}, e)).warn, delete e.warn;
4173
+ var r = e.delimiters ? String(e.delimiters) + t : t;
4174
+ if (da[r]) return da[r];
4175
+ var t = pa(t, e),
4176
+ e = {},
4177
+ o = [];
4178
+ return (
4179
+ (e.render = la(t.render, o)),
4180
+ (e.staticRenderFns = t.staticRenderFns.map(function (t) {
4181
+ return la(t, o);
4182
+ })),
4183
+ (da[r] = e)
4184
+ );
4185
+ });
4186
+ function ma(t, e) {
4187
+ var n = Object.create(ha),
4188
+ r = [],
4189
+ o = [];
4190
+ if (e)
4191
+ for (var i in (e.modules && (n.modules = (ha.modules || []).concat(e.modules)), e.directives && (n.directives = w(Object.create(ha.directives || null), e.directives)), e)) "modules" !== i && "directives" !== i && (n[i] = e[i]);
4192
+ n.warn = function (t, e, n) {
4193
+ (n ? o : r).push(t);
4194
+ };
4195
+ t = ua(t.trim(), n);
4196
+ return (t.errors = r), (t.tips = o), t;
4197
+ }
4198
+ function ya(t) {
4199
+ return ((fa = fa || document.createElement("div")).innerHTML = t ? '<a href="\n"/>' : '<div a="\n"/>'), 0 < fa.innerHTML.indexOf("&#10;");
4200
+ }
4201
+ var ga = !!B && ya(!1),
4202
+ _a = !!B && ya(!0),
4203
+ ba = t(function (t) {
4204
+ t = Jn(t);
4205
+ return t && t.innerHTML;
4206
+ }),
4207
+ wa = _n.prototype.$mount;
4208
+ return (
4209
+ (_n.prototype.$mount = function (t, e) {
4210
+ if ((t = t && Jn(t)) === document.body || t === document.documentElement) return this;
4211
+ var n = this.$options;
4212
+ if (!n.render) {
4213
+ var r,
4214
+ o = n.template;
4215
+ if (o)
4216
+ if ("string" == typeof o) "#" === o.charAt(0) && (o = ba(o));
4217
+ else {
4218
+ if (!o.nodeType) return this;
4219
+ o = o.innerHTML;
4220
+ }
4221
+ else
4222
+ t &&
4223
+ (o = (function (t) {
4224
+ if (t.outerHTML) return t.outerHTML;
4225
+ var e = document.createElement("div");
4226
+ return e.appendChild(t.cloneNode(!0)), e.innerHTML;
4227
+ })(t));
4228
+ o &&
4229
+ ((o = (r = va(o, { outputSourceRange: !1, shouldDecodeNewlines: ga, shouldDecodeNewlinesForHref: _a, delimiters: n.delimiters, comments: n.comments }, this)).render),
4230
+ (r = r.staticRenderFns),
4231
+ (n.render = o),
4232
+ (n.staticRenderFns = r));
4233
+ }
4234
+ return wa.call(this, t, e);
4235
+ }),
4236
+ (_n.compile = va),
4237
+ _n
4238
+ );
4239
+ }),
4240
+ (function (t, e) {
4241
+ "object" == typeof exports && "undefined" != typeof module ? (module.exports = e()) : "function" == typeof define && define.amd ? define(e) : ((t = t || self).Vuex = e());
4242
+ })(this, function () {
4243
+ "use strict";
4244
+ var l = "undefined" != typeof window && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
4245
+ function s(e, n) {
4246
+ Object.keys(e).forEach(function (t) {
4247
+ return n(e[t], t);
4248
+ });
4249
+ }
4250
+ function u(t, e) {
4251
+ if (!t) throw new Error("[vuex] " + e);
4252
+ }
4253
+ function i(t, e) {
4254
+ (this.runtime = e), (this._children = Object.create(null)), (t = (this._rawModule = t).state), (this.state = ("function" == typeof t ? t() : t) || {});
4255
+ }
4256
+ var t = { namespaced: { configurable: !0 } };
4257
+ (t.namespaced.get = function () {
4258
+ return !!this._rawModule.namespaced;
4259
+ }),
4260
+ (i.prototype.addChild = function (t, e) {
4261
+ this._children[t] = e;
4262
+ }),
4263
+ (i.prototype.removeChild = function (t) {
4264
+ delete this._children[t];
4265
+ }),
4266
+ (i.prototype.getChild = function (t) {
4267
+ return this._children[t];
4268
+ }),
4269
+ (i.prototype.update = function (t) {
4270
+ (this._rawModule.namespaced = t.namespaced), t.actions && (this._rawModule.actions = t.actions), t.mutations && (this._rawModule.mutations = t.mutations), t.getters && (this._rawModule.getters = t.getters);
4271
+ }),
4272
+ (i.prototype.forEachChild = function (t) {
4273
+ s(this._children, t);
4274
+ }),
4275
+ (i.prototype.forEachGetter = function (t) {
4276
+ this._rawModule.getters && s(this._rawModule.getters, t);
4277
+ }),
4278
+ (i.prototype.forEachAction = function (t) {
4279
+ this._rawModule.actions && s(this._rawModule.actions, t);
4280
+ }),
4281
+ (i.prototype.forEachMutation = function (t) {
4282
+ this._rawModule.mutations && s(this._rawModule.mutations, t);
4283
+ }),
4284
+ Object.defineProperties(i.prototype, t);
4285
+ function f(t) {
4286
+ this.register([], t, !1);
4287
+ }
4288
+ (f.prototype.get = function (t) {
4289
+ return t.reduce(function (t, e) {
4290
+ return t.getChild(e);
4291
+ }, this.root);
4292
+ }),
4293
+ (f.prototype.getNamespace = function (t) {
4294
+ var n = this.root;
4295
+ return t.reduce(function (t, e) {
4296
+ return t + ((n = n.getChild(e)).namespaced ? e + "/" : "");
4297
+ }, "");
4298
+ }),
4299
+ (f.prototype.update = function (t) {
4300
+ !(function t(e, n, r) {
4301
+ c(e, r);
4302
+ n.update(r);
4303
+ if (r.modules)
4304
+ for (var o in r.modules) {
4305
+ if (!n.getChild(o)) return void console.warn("[vuex] trying to add a new module '" + o + "' on hot reloading, manual reload is needed");
4306
+ t(e.concat(o), n.getChild(o), r.modules[o]);
4307
+ }
4308
+ })([], this.root, t);
4309
+ }),
4310
+ (f.prototype.register = function (n, t, r) {
4311
+ var o = this;
4312
+ void 0 === r && (r = !0), c(n, t);
4313
+ var e = new i(t, r);
4314
+ 0 === n.length ? (this.root = e) : this.get(n.slice(0, -1)).addChild(n[n.length - 1], e),
4315
+ t.modules &&
4316
+ s(t.modules, function (t, e) {
4317
+ o.register(n.concat(e), t, r);
4318
+ });
4319
+ }),
4320
+ (f.prototype.unregister = function (t) {
4321
+ var e = this.get(t.slice(0, -1)),
4322
+ t = t[t.length - 1];
4323
+ e.getChild(t).runtime && e.removeChild(t);
4324
+ });
4325
+ var h,
4326
+ e = {
4327
+ assert: function (t) {
4328
+ return "function" == typeof t;
4329
+ },
4330
+ expected: "function",
4331
+ },
4332
+ a = {
4333
+ getters: e,
4334
+ mutations: e,
4335
+ actions: {
4336
+ assert: function (t) {
4337
+ return "function" == typeof t || ("object" == typeof t && "function" == typeof t.handler);
4338
+ },
4339
+ expected: 'function or object with "handler" function',
4340
+ },
4341
+ };
4342
+ function c(o, t) {
4343
+ Object.keys(a).forEach(function (n) {
4344
+ var r;
4345
+ t[n] &&
4346
+ ((r = a[n]),
4347
+ s(t[n], function (t, e) {
4348
+ u(
4349
+ r.assert(t),
4350
+ (function (t, e, n, r, o) {
4351
+ n = e + " should be " + o + ' but "' + e + "." + n + '"';
4352
+ 0 < t.length && (n += ' in module "' + t.join(".") + '"');
4353
+ return (n += " is " + JSON.stringify(r) + ".");
4354
+ })(o, n, e, t, r.expected)
4355
+ );
4356
+ }));
4357
+ });
4358
+ }
4359
+ (t = function t(e) {
4360
+ var n = this;
4361
+ void 0 === e && (e = {}),
4362
+ !h && "undefined" != typeof window && window.Vue && d(window.Vue),
4363
+ u(h, "must call Vue.use(Vuex) before creating a store instance."),
4364
+ u("undefined" != typeof Promise, "vuex requires a Promise polyfill in this browser."),
4365
+ u(this instanceof t, "store must be called with the new operator.");
4366
+ var r = e.plugins;
4367
+ void 0 === r && (r = []);
4368
+ var o = e.strict;
4369
+ void 0 === o && (o = !1),
4370
+ (this._committing = !1),
4371
+ (this._actions = Object.create(null)),
4372
+ (this._actionSubscribers = []),
4373
+ (this._mutations = Object.create(null)),
4374
+ (this._wrappedGetters = Object.create(null)),
4375
+ (this._modules = new f(e)),
4376
+ (this._modulesNamespaceMap = Object.create(null)),
4377
+ (this._subscribers = []),
4378
+ (this._watcherVM = new h());
4379
+ var i = this,
4380
+ a = this.dispatch,
4381
+ s = this.commit;
4382
+ (this.dispatch = function (t, e) {
4383
+ return a.call(i, t, e);
4384
+ }),
4385
+ (this.commit = function (t, e, n) {
4386
+ return s.call(i, t, e, n);
4387
+ }),
4388
+ (this.strict = o);
4389
+ var c,
4390
+ o = this._modules.root.state;
4391
+ v(this, o, [], this._modules.root),
4392
+ p(this, o),
4393
+ r.forEach(function (t) {
4394
+ return t(n);
4395
+ }),
4396
+ (void 0 !== e.devtools ? e : h.config).devtools &&
4397
+ ((c = this),
4398
+ l &&
4399
+ ((c._devtoolHook = l).emit("vuex:init", c),
4400
+ l.on("vuex:travel-to-state", function (t) {
4401
+ c.replaceState(t);
4402
+ }),
4403
+ c.subscribe(function (t, e) {
4404
+ l.emit("vuex:mutation", t, e);
4405
+ })));
4406
+ }),
4407
+ (e = { state: { configurable: !0 } });
4408
+ function n(e, n) {
4409
+ return (
4410
+ n.indexOf(e) < 0 && n.push(e),
4411
+ function () {
4412
+ var t = n.indexOf(e);
4413
+ -1 < t && n.splice(t, 1);
4414
+ }
4415
+ );
4416
+ }
4417
+ function r(t, e) {
4418
+ (t._actions = Object.create(null)), (t._mutations = Object.create(null)), (t._wrappedGetters = Object.create(null)), (t._modulesNamespaceMap = Object.create(null));
4419
+ var n = t.state;
4420
+ v(t, n, [], t._modules.root, !0), p(t, n, e);
4421
+ }
4422
+ function p(n, t, e) {
4423
+ var r = n._vm;
4424
+ n.getters = {};
4425
+ var o = n._wrappedGetters,
4426
+ i = {};
4427
+ s(o, function (t, e) {
4428
+ (i[e] = function () {
4429
+ return t(n);
4430
+ }),
4431
+ Object.defineProperty(n.getters, e, {
4432
+ get: function () {
4433
+ return n._vm[e];
4434
+ },
4435
+ enumerable: !0,
4436
+ });
4437
+ });
4438
+ var a,
4439
+ o = h.config.silent;
4440
+ (h.config.silent = !0),
4441
+ (n._vm = new h({ data: { $$state: t }, computed: i })),
4442
+ (h.config.silent = o),
4443
+ n.strict &&
4444
+ (a = n)._vm.$watch(
4445
+ function () {
4446
+ return this._data.$$state;
4447
+ },
4448
+ function () {
4449
+ u(a._committing, "do not mutate vuex store state outside mutation handlers.");
4450
+ },
4451
+ { deep: !0, sync: !0 }
4452
+ ),
4453
+ r &&
4454
+ (e &&
4455
+ n._withCommit(function () {
4456
+ r._data.$$state = null;
4457
+ }),
4458
+ h.nextTick(function () {
4459
+ return r.$destroy();
4460
+ }));
4461
+ }
4462
+ function v(i, n, r, t, o) {
4463
+ var e,
4464
+ a,
4465
+ s = !r.length,
4466
+ c = i._modules.getNamespace(r);
4467
+ t.namespaced && (i._modulesNamespaceMap[c] = t),
4468
+ s ||
4469
+ o ||
4470
+ ((e = m(n, r.slice(0, -1))),
4471
+ (a = r[r.length - 1]),
4472
+ i._withCommit(function () {
4473
+ h.set(e, a, t.state);
4474
+ }));
4475
+ var l,
4476
+ u,
4477
+ f,
4478
+ p,
4479
+ d = (t.context =
4480
+ ((l = i),
4481
+ (f = r),
4482
+ (s = {
4483
+ dispatch: (p = "" === (u = c))
4484
+ ? l.dispatch
4485
+ : function (t, e, n) {
4486
+ var r = y(t, e, n),
4487
+ t = r.payload,
4488
+ e = r.options,
4489
+ n = r.type;
4490
+ if ((e && e.root) || ((n = u + n), l._actions[n])) return l.dispatch(n, t);
4491
+ console.error("[vuex] unknown local action type: " + r.type + ", global type: " + n);
4492
+ },
4493
+ commit: p
4494
+ ? l.commit
4495
+ : function (t, e, n) {
4496
+ var r = y(t, e, n),
4497
+ t = r.payload,
4498
+ e = r.options,
4499
+ n = r.type;
4500
+ (e && e.root) || ((n = u + n), l._mutations[n]) ? l.commit(n, t, e) : console.error("[vuex] unknown local mutation type: " + r.type + ", global type: " + n);
4501
+ },
4502
+ }),
4503
+ Object.defineProperties(s, {
4504
+ getters: {
4505
+ get: p
4506
+ ? function () {
4507
+ return l.getters;
4508
+ }
4509
+ : function () {
4510
+ return (
4511
+ (n = l),
4512
+ (o = {}),
4513
+ (i = (r = u).length),
4514
+ Object.keys(n.getters).forEach(function (t) {
4515
+ var e;
4516
+ t.slice(0, i) === r &&
4517
+ ((e = t.slice(i)),
4518
+ Object.defineProperty(o, e, {
4519
+ get: function () {
4520
+ return n.getters[t];
4521
+ },
4522
+ enumerable: !0,
4523
+ }));
4524
+ }),
4525
+ o
4526
+ );
4527
+ var n, r, o, i;
4528
+ },
4529
+ },
4530
+ state: {
4531
+ get: function () {
4532
+ return m(l.state, f);
4533
+ },
4534
+ },
4535
+ }),
4536
+ s));
4537
+ t.forEachMutation(function (t, e) {
4538
+ var n, r, o;
4539
+ (e = c + e),
4540
+ (r = t),
4541
+ (o = d),
4542
+ ((n = i)._mutations[e] || (n._mutations[e] = [])).push(function (t) {
4543
+ r.call(n, o.state, t);
4544
+ });
4545
+ }),
4546
+ t.forEachAction(function (t, e) {
4547
+ var n,
4548
+ r,
4549
+ o,
4550
+ e = t.root ? e : c + e,
4551
+ t = t.handler || t;
4552
+ (e = e),
4553
+ (r = t),
4554
+ (o = d),
4555
+ ((n = i)._actions[e] || (n._actions[e] = [])).push(function (t, e) {
4556
+ t = r.call(n, { dispatch: o.dispatch, commit: o.commit, getters: o.getters, state: o.state, rootGetters: n.getters, rootState: n.state }, t, e);
4557
+ return (
4558
+ ((e = t) && "function" == typeof e.then) || (t = Promise.resolve(t)),
4559
+ n._devtoolHook
4560
+ ? t.catch(function (t) {
4561
+ throw (n._devtoolHook.emit("vuex:error", t), t);
4562
+ })
4563
+ : t
4564
+ );
4565
+ });
4566
+ }),
4567
+ t.forEachGetter(function (t, e) {
4568
+ !(function (t, e, n, r) {
4569
+ if (t._wrappedGetters[e]) return console.error("[vuex] duplicate getter key: " + e);
4570
+ t._wrappedGetters[e] = function (t) {
4571
+ return n(r.state, r.getters, t.state, t.getters);
4572
+ };
4573
+ })(i, c + e, t, d);
4574
+ }),
4575
+ t.forEachChild(function (t, e) {
4576
+ v(i, n, r.concat(e), t, o);
4577
+ });
4578
+ }
4579
+ function m(t, e) {
4580
+ return e.length
4581
+ ? e.reduce(function (t, e) {
4582
+ return t[e];
4583
+ }, t)
4584
+ : t;
4585
+ }
4586
+ function y(t, e, n) {
4587
+ var r;
4588
+ return null !== (r = t) && "object" == typeof r && t.type && ((n = e), (t = (e = t).type)), u("string" == typeof t, "expects string as the type, but found " + typeof t + "."), { type: t, payload: e, options: n };
4589
+ }
4590
+ function d(t) {
4591
+ var e;
4592
+ function n() {
4593
+ var t = this.$options;
4594
+ t.store ? (this.$store = "function" == typeof t.store ? t.store() : t.store) : t.parent && t.parent.$store && (this.$store = t.parent.$store);
4595
+ }
4596
+ h && t === h
4597
+ ? console.error("[vuex] already installed. Vue.use(Vuex) should be called only once.")
4598
+ : ((t = h = t),
4599
+ 2 <= Number(t.version.split(".")[0])
4600
+ ? t.mixin({ beforeCreate: n })
4601
+ : ((e = t.prototype._init),
4602
+ (t.prototype._init = function (t) {
4603
+ void 0 === t && (t = {}), (t.init = t.init ? [n].concat(t.init) : n), e.call(this, t);
4604
+ })));
4605
+ }
4606
+ (e.state.get = function () {
4607
+ return this._vm._data.$$state;
4608
+ }),
4609
+ (e.state.set = function (t) {
4610
+ u(!1, "use store.replaceState() to explicit replace store state.");
4611
+ }),
4612
+ (t.prototype.commit = function (t, e, n) {
4613
+ var r = this,
4614
+ e = y(t, e, n),
4615
+ n = e.type,
4616
+ o = e.payload,
4617
+ e = e.options,
4618
+ i = { type: n, payload: o },
4619
+ a = this._mutations[n];
4620
+ a
4621
+ ? (this._withCommit(function () {
4622
+ a.forEach(function (t) {
4623
+ t(o);
4624
+ });
4625
+ }),
4626
+ this._subscribers.forEach(function (t) {
4627
+ return t(i, r.state);
4628
+ }),
4629
+ e && e.silent && console.warn("[vuex] mutation type: " + n + ". Silent option has been removed. Use the filter functionality in the vue-devtools"))
4630
+ : console.error("[vuex] unknown mutation type: " + n);
4631
+ }),
4632
+ (t.prototype.dispatch = function (t, e) {
4633
+ var n = this,
4634
+ t = y(t, e),
4635
+ e = t.type,
4636
+ r = t.payload,
4637
+ o = { type: e, payload: r },
4638
+ t = this._actions[e];
4639
+ if (t) {
4640
+ try {
4641
+ this._actionSubscribers
4642
+ .filter(function (t) {
4643
+ return t.before;
4644
+ })
4645
+ .forEach(function (t) {
4646
+ return t.before(o, n.state);
4647
+ });
4648
+ } catch (t) {
4649
+ console.warn("[vuex] error in before action subscribers: "), console.error(t);
4650
+ }
4651
+ return (1 < t.length
4652
+ ? Promise.all(
4653
+ t.map(function (t) {
4654
+ return t(r);
4655
+ })
4656
+ )
4657
+ : t[0](r)
4658
+ ).then(function (t) {
4659
+ try {
4660
+ n._actionSubscribers
4661
+ .filter(function (t) {
4662
+ return t.after;
4663
+ })
4664
+ .forEach(function (t) {
4665
+ return t.after(o, n.state);
4666
+ });
4667
+ } catch (t) {
4668
+ console.warn("[vuex] error in after action subscribers: "), console.error(t);
4669
+ }
4670
+ return t;
4671
+ });
4672
+ }
4673
+ console.error("[vuex] unknown action type: " + e);
4674
+ }),
4675
+ (t.prototype.subscribe = function (t) {
4676
+ return n(t, this._subscribers);
4677
+ }),
4678
+ (t.prototype.subscribeAction = function (t) {
4679
+ return n("function" == typeof t ? { before: t } : t, this._actionSubscribers);
4680
+ }),
4681
+ (t.prototype.watch = function (t, e, n) {
4682
+ var r = this;
4683
+ return (
4684
+ u("function" == typeof t, "store.watch only accepts a function."),
4685
+ this._watcherVM.$watch(
4686
+ function () {
4687
+ return t(r.state, r.getters);
4688
+ },
4689
+ e,
4690
+ n
4691
+ )
4692
+ );
4693
+ }),
4694
+ (t.prototype.replaceState = function (t) {
4695
+ var e = this;
4696
+ this._withCommit(function () {
4697
+ e._vm._data.$$state = t;
4698
+ });
4699
+ }),
4700
+ (t.prototype.registerModule = function (t, e, n) {
4701
+ void 0 === n && (n = {}),
4702
+ "string" == typeof t && (t = [t]),
4703
+ u(Array.isArray(t), "module path must be a string or an Array."),
4704
+ u(0 < t.length, "cannot register the root module by using registerModule."),
4705
+ this._modules.register(t, e),
4706
+ v(this, this.state, t, this._modules.get(t), n.preserveState),
4707
+ p(this, this.state);
4708
+ }),
4709
+ (t.prototype.unregisterModule = function (e) {
4710
+ var n = this;
4711
+ "string" == typeof e && (e = [e]),
4712
+ u(Array.isArray(e), "module path must be a string or an Array."),
4713
+ this._modules.unregister(e),
4714
+ this._withCommit(function () {
4715
+ var t = m(n.state, e.slice(0, -1));
4716
+ h.delete(t, e[e.length - 1]);
4717
+ }),
4718
+ r(this);
4719
+ }),
4720
+ (t.prototype.hotUpdate = function (t) {
4721
+ this._modules.update(t), r(this, !0);
4722
+ }),
4723
+ (t.prototype._withCommit = function (t) {
4724
+ var e = this._committing;
4725
+ (this._committing = !0), t(), (this._committing = e);
4726
+ }),
4727
+ Object.defineProperties(t.prototype, e);
4728
+ var o = x(function (o, t) {
4729
+ var n = {};
4730
+ return (
4731
+ w(t).forEach(function (t) {
4732
+ var e = t.key,
4733
+ r = t.val;
4734
+ (n[e] = function () {
4735
+ var t = this.$store.state,
4736
+ e = this.$store.getters;
4737
+ if (o) {
4738
+ var n = $(this.$store, "mapState", o);
4739
+ if (!n) return;
4740
+ (t = n.context.state), (e = n.context.getters);
4741
+ }
4742
+ return "function" == typeof r ? r.call(this, t, e) : t[r];
4743
+ }),
4744
+ (n[e].vuex = !0);
4745
+ }),
4746
+ n
4747
+ );
4748
+ }),
4749
+ g = x(function (i, t) {
4750
+ var n = {};
4751
+ return (
4752
+ w(t).forEach(function (t) {
4753
+ var e = t.key,
4754
+ o = t.val;
4755
+ n[e] = function () {
4756
+ for (var t = [], e = arguments.length; e--; ) t[e] = arguments[e];
4757
+ var n = this.$store.commit;
4758
+ if (i) {
4759
+ var r = $(this.$store, "mapMutations", i);
4760
+ if (!r) return;
4761
+ n = r.context.commit;
4762
+ }
4763
+ return "function" == typeof o ? o.apply(this, [n].concat(t)) : n.apply(this.$store, [o].concat(t));
4764
+ };
4765
+ }),
4766
+ n
4767
+ );
4768
+ }),
4769
+ _ = x(function (r, t) {
4770
+ var o = {};
4771
+ return (
4772
+ w(t).forEach(function (t) {
4773
+ var e = t.key,
4774
+ n = t.val,
4775
+ n = r + n;
4776
+ (o[e] = function () {
4777
+ if (!r || $(this.$store, "mapGetters", r)) {
4778
+ if (n in this.$store.getters) return this.$store.getters[n];
4779
+ console.error("[vuex] unknown getter: " + n);
4780
+ }
4781
+ }),
4782
+ (o[e].vuex = !0);
4783
+ }),
4784
+ o
4785
+ );
4786
+ }),
4787
+ b = x(function (i, t) {
4788
+ var n = {};
4789
+ return (
4790
+ w(t).forEach(function (t) {
4791
+ var e = t.key,
4792
+ o = t.val;
4793
+ n[e] = function () {
4794
+ for (var t = [], e = arguments.length; e--; ) t[e] = arguments[e];
4795
+ var n = this.$store.dispatch;
4796
+ if (i) {
4797
+ var r = $(this.$store, "mapActions", i);
4798
+ if (!r) return;
4799
+ n = r.context.dispatch;
4800
+ }
4801
+ return "function" == typeof o ? o.apply(this, [n].concat(t)) : n.apply(this.$store, [o].concat(t));
4802
+ };
4803
+ }),
4804
+ n
4805
+ );
4806
+ });
4807
+ function w(e) {
4808
+ return Array.isArray(e)
4809
+ ? e.map(function (t) {
4810
+ return { key: t, val: t };
4811
+ })
4812
+ : Object.keys(e).map(function (t) {
4813
+ return { key: t, val: e[t] };
4814
+ });
4815
+ }
4816
+ function x(n) {
4817
+ return function (t, e) {
4818
+ return "string" != typeof t ? ((e = t), (t = "")) : "/" !== t.charAt(t.length - 1) && (t += "/"), n(t, e);
4819
+ };
4820
+ }
4821
+ function $(t, e, n) {
4822
+ t = t._modulesNamespaceMap[n];
4823
+ return t || console.error("[vuex] module namespace not found in " + e + "(): " + n), t;
4824
+ }
4825
+ return {
4826
+ Store: t,
4827
+ install: d,
4828
+ version: "3.1.0",
4829
+ mapState: o,
4830
+ mapMutations: g,
4831
+ mapGetters: _,
4832
+ mapActions: b,
4833
+ createNamespacedHelpers: function (t) {
4834
+ return { mapState: o.bind(null, t), mapGetters: _.bind(null, t), mapMutations: g.bind(null, t), mapActions: b.bind(null, t) };
4835
+ },
4836
+ };
4837
+ }),
4838
+ (function (t, e) {
4839
+ "object" == typeof exports && "undefined" != typeof module ? (module.exports = e()) : "function" == typeof define && define.amd ? define(e) : (t.VueResource = e());
4840
+ })(this, function () {
4841
+ "use strict";
4842
+ function a(t) {
4843
+ (this.state = 2), (this.value = void 0), (this.deferred = []);
4844
+ var e = this;
4845
+ try {
4846
+ t(
4847
+ function (t) {
4848
+ e.resolve(t);
4849
+ },
4850
+ function (t) {
4851
+ e.reject(t);
4852
+ }
4853
+ );
4854
+ } catch (t) {
4855
+ e.reject(t);
4856
+ }
4857
+ }
4858
+ (a.reject = function (n) {
4859
+ return new a(function (t, e) {
4860
+ e(n);
4861
+ });
4862
+ }),
4863
+ (a.resolve = function (n) {
4864
+ return new a(function (t, e) {
4865
+ t(n);
4866
+ });
4867
+ }),
4868
+ (a.all = function (i) {
4869
+ return new a(function (n, t) {
4870
+ var r = 0,
4871
+ o = [];
4872
+ 0 === i.length && n(o);
4873
+ for (var e = 0; e < i.length; e += 1)
4874
+ a.resolve(i[e]).then(
4875
+ (function (e) {
4876
+ return function (t) {
4877
+ (o[e] = t), (r += 1) === i.length && n(o);
4878
+ };
4879
+ })(e),
4880
+ t
4881
+ );
4882
+ });
4883
+ }),
4884
+ (a.race = function (r) {
4885
+ return new a(function (t, e) {
4886
+ for (var n = 0; n < r.length; n += 1) a.resolve(r[n]).then(t, e);
4887
+ });
4888
+ });
4889
+ var t = a.prototype;
4890
+ function u(t, e) {
4891
+ t instanceof Promise ? (this.promise = t) : (this.promise = new Promise(t.bind(e))), (this.context = e);
4892
+ }
4893
+ (t.resolve = function (t) {
4894
+ var e = this;
4895
+ if (2 === e.state) {
4896
+ if (t === e) throw new TypeError("Promise settled with itself.");
4897
+ var n = !1;
4898
+ try {
4899
+ var r = t && t.then;
4900
+ if (null !== t && "object" == typeof t && "function" == typeof r)
4901
+ return void r.call(
4902
+ t,
4903
+ function (t) {
4904
+ n || e.resolve(t), (n = !0);
4905
+ },
4906
+ function (t) {
4907
+ n || e.reject(t), (n = !0);
4908
+ }
4909
+ );
4910
+ } catch (t) {
4911
+ return void (n || e.reject(t));
4912
+ }
4913
+ (e.state = 0), (e.value = t), e.notify();
4914
+ }
4915
+ }),
4916
+ (t.reject = function (t) {
4917
+ var e = this;
4918
+ if (2 === e.state) {
4919
+ if (t === e) throw new TypeError("Promise settled with itself.");
4920
+ (e.state = 1), (e.value = t), e.notify();
4921
+ }
4922
+ }),
4923
+ (t.notify = function () {
4924
+ var i = this;
4925
+ n(function () {
4926
+ if (2 !== i.state)
4927
+ for (; i.deferred.length; ) {
4928
+ var t = i.deferred.shift(),
4929
+ e = t[0],
4930
+ n = t[1],
4931
+ r = t[2],
4932
+ o = t[3];
4933
+ try {
4934
+ 0 === i.state ? r("function" == typeof e ? e.call(void 0, i.value) : i.value) : 1 === i.state && ("function" == typeof n ? r(n.call(void 0, i.value)) : o(i.value));
4935
+ } catch (t) {
4936
+ o(t);
4937
+ }
4938
+ }
4939
+ }, void 0);
4940
+ }),
4941
+ (t.then = function (n, r) {
4942
+ var o = this;
4943
+ return new a(function (t, e) {
4944
+ o.deferred.push([n, r, t, e]), o.notify();
4945
+ });
4946
+ }),
4947
+ (t.catch = function (t) {
4948
+ return this.then(void 0, t);
4949
+ }),
4950
+ "undefined" == typeof Promise && (window.Promise = a),
4951
+ (u.all = function (t, e) {
4952
+ return new u(Promise.all(t), e);
4953
+ }),
4954
+ (u.resolve = function (t, e) {
4955
+ return new u(Promise.resolve(t), e);
4956
+ }),
4957
+ (u.reject = function (t, e) {
4958
+ return new u(Promise.reject(t), e);
4959
+ }),
4960
+ (u.race = function (t, e) {
4961
+ return new u(Promise.race(t), e);
4962
+ });
4963
+ t = u.prototype;
4964
+ (t.bind = function (t) {
4965
+ return (this.context = t), this;
4966
+ }),
4967
+ (t.then = function (t, e) {
4968
+ return t && t.bind && this.context && (t = t.bind(this.context)), e && e.bind && this.context && (e = e.bind(this.context)), new u(this.promise.then(t, e), this.context);
4969
+ }),
4970
+ (t.catch = function (t) {
4971
+ return t && t.bind && this.context && (t = t.bind(this.context)), new u(this.promise.catch(t), this.context);
4972
+ }),
4973
+ (t.finally = function (e) {
4974
+ return this.then(
4975
+ function (t) {
4976
+ return e.call(this), t;
4977
+ },
4978
+ function (t) {
4979
+ return e.call(this), Promise.reject(t);
4980
+ }
4981
+ );
4982
+ });
4983
+ var n,
4984
+ o = {}.hasOwnProperty,
4985
+ r = [].slice,
4986
+ f = !1,
4987
+ i = "undefined" != typeof window,
4988
+ e = function (t) {
4989
+ var e = t.config,
4990
+ t = t.nextTick;
4991
+ (n = t), (f = e.debug || !e.silent);
4992
+ };
4993
+ function c(t) {
4994
+ return t ? t.replace(/^\s*|\s*$/g, "") : "";
4995
+ }
4996
+ function s(t) {
4997
+ return t ? t.toLowerCase() : "";
4998
+ }
4999
+ var l = Array.isArray;
5000
+ function p(t) {
5001
+ return "string" == typeof t;
5002
+ }
5003
+ function d(t) {
5004
+ return "function" == typeof t;
5005
+ }
5006
+ function h(t) {
5007
+ return null !== t && "object" == typeof t;
5008
+ }
5009
+ function v(t) {
5010
+ return h(t) && Object.getPrototypeOf(t) == Object.prototype;
5011
+ }
5012
+ function m(t, e, n) {
5013
+ t = u.resolve(t);
5014
+ return arguments.length < 2 ? t : t.then(e, n);
5015
+ }
5016
+ function y(t, e, n) {
5017
+ return d((n = n || {})) && (n = n.call(e)), b(t.bind({ $vm: e, $options: n }), t, { $options: n });
5018
+ }
5019
+ function g(t, e) {
5020
+ var n, r;
5021
+ if (l(t)) for (n = 0; n < t.length; n++) e.call(t[n], t[n], n);
5022
+ else if (h(t)) for (r in t) o.call(t, r) && e.call(t[r], t[r], r);
5023
+ return t;
5024
+ }
5025
+ var _ =
5026
+ Object.assign ||
5027
+ function (e) {
5028
+ return (
5029
+ r.call(arguments, 1).forEach(function (t) {
5030
+ w(e, t);
5031
+ }),
5032
+ e
5033
+ );
5034
+ };
5035
+ function b(e) {
5036
+ return (
5037
+ r.call(arguments, 1).forEach(function (t) {
5038
+ w(e, t, !0);
5039
+ }),
5040
+ e
5041
+ );
5042
+ }
5043
+ function w(t, e, n) {
5044
+ for (var r in e) n && (v(e[r]) || l(e[r])) ? (v(e[r]) && !v(t[r]) && (t[r] = {}), l(e[r]) && !l(t[r]) && (t[r] = []), w(t[r], e[r], n)) : void 0 !== e[r] && (t[r] = e[r]);
5045
+ }
5046
+ function x(t, e, n) {
5047
+ var r,
5048
+ a,
5049
+ s,
5050
+ t =
5051
+ ((r = t),
5052
+ (a = ["+", "#", ".", "/", ";", "?", "&"]),
5053
+ {
5054
+ vars: (s = []),
5055
+ expand: function (i) {
5056
+ return r.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (t, e, n) {
5057
+ if (e) {
5058
+ var r = null,
5059
+ o = [];
5060
+ if (
5061
+ (-1 !== a.indexOf(e.charAt(0)) && ((r = e.charAt(0)), (e = e.substr(1))),
5062
+ e.split(/,/g).forEach(function (t) {
5063
+ t = /([^:\*]*)(?::(\d+)|(\*))?/.exec(t);
5064
+ o.push.apply(
5065
+ o,
5066
+ (function (t, e, n, r) {
5067
+ var o = t[n],
5068
+ i = [];
5069
+ {
5070
+ var a;
5071
+ $(o) && "" !== o
5072
+ ? "string" == typeof o || "number" == typeof o || "boolean" == typeof o
5073
+ ? ((o = o.toString()), r && "*" !== r && (o = o.substring(0, parseInt(r, 10))), i.push(C(e, o, k(e) ? n : null)))
5074
+ : "*" === r
5075
+ ? Array.isArray(o)
5076
+ ? o.filter($).forEach(function (t) {
5077
+ i.push(C(e, t, k(e) ? n : null));
5078
+ })
5079
+ : Object.keys(o).forEach(function (t) {
5080
+ $(o[t]) && i.push(C(e, o[t], t));
5081
+ })
5082
+ : ((a = []),
5083
+ Array.isArray(o)
5084
+ ? o.filter($).forEach(function (t) {
5085
+ a.push(C(e, t));
5086
+ })
5087
+ : Object.keys(o).forEach(function (t) {
5088
+ $(o[t]) && (a.push(encodeURIComponent(t)), a.push(C(e, o[t].toString())));
5089
+ }),
5090
+ k(e) ? i.push(encodeURIComponent(n) + "=" + a.join(",")) : 0 !== a.length && i.push(a.join(",")))
5091
+ : ";" === e
5092
+ ? i.push(encodeURIComponent(n))
5093
+ : "" !== o || ("&" !== e && "?" !== e)
5094
+ ? "" === o && i.push("")
5095
+ : i.push(encodeURIComponent(n) + "=");
5096
+ }
5097
+ return i;
5098
+ })(i, r, t[1], t[2] || t[3])
5099
+ ),
5100
+ s.push(t[1]);
5101
+ }),
5102
+ r && "+" !== r)
5103
+ ) {
5104
+ e = ",";
5105
+ return "?" === r ? (e = "&") : "#" !== r && (e = r), (0 !== o.length ? r : "") + o.join(e);
5106
+ }
5107
+ return o.join(",");
5108
+ }
5109
+ return O(n);
5110
+ });
5111
+ },
5112
+ }),
5113
+ e = t.expand(e);
5114
+ return n && n.push.apply(n, t.vars), e;
5115
+ }
5116
+ function $(t) {
5117
+ return null != t;
5118
+ }
5119
+ function k(t) {
5120
+ return ";" === t || "&" === t || "?" === t;
5121
+ }
5122
+ function C(t, e, n) {
5123
+ return (e = ("+" === t || "#" === t ? O : encodeURIComponent)(e)), n ? encodeURIComponent(n) + "=" + e : e;
5124
+ }
5125
+ function O(t) {
5126
+ return t
5127
+ .split(/(%[0-9A-Fa-f]{2})/g)
5128
+ .map(function (t) {
5129
+ return /%[0-9A-Fa-f]/.test(t) || (t = encodeURI(t)), t;
5130
+ })
5131
+ .join("");
5132
+ }
5133
+ function A(t, e) {
5134
+ var o,
5135
+ i = this || {},
5136
+ n = t;
5137
+ return (
5138
+ p(t) && (n = { url: t, params: e }),
5139
+ (n = b({}, A.options, i.$options, n)),
5140
+ A.transforms.forEach(function (t) {
5141
+ var e, n, r;
5142
+ p(t) && (t = A.transform[t]),
5143
+ d(t) &&
5144
+ ((e = t),
5145
+ (n = o),
5146
+ (r = i.$vm),
5147
+ (o = function (t) {
5148
+ return e.call(r, t, n);
5149
+ }));
5150
+ }),
5151
+ o(n)
5152
+ );
5153
+ }
5154
+ (A.options = { url: "", root: null, params: {} }),
5155
+ (A.transform = {
5156
+ template: function (e) {
5157
+ var t = [],
5158
+ n = x(e.url, e.params, t);
5159
+ return (
5160
+ t.forEach(function (t) {
5161
+ delete e.params[t];
5162
+ }),
5163
+ n
5164
+ );
5165
+ },
5166
+ query: function (t, e) {
5167
+ var n = Object.keys(A.options.params),
5168
+ r = {},
5169
+ e = e(t);
5170
+ return (
5171
+ g(t.params, function (t, e) {
5172
+ -1 === n.indexOf(e) && (r[e] = t);
5173
+ }),
5174
+ (r = A.params(r)) && (e += (-1 == e.indexOf("?") ? "?" : "&") + r),
5175
+ e
5176
+ );
5177
+ },
5178
+ root: function (t, e) {
5179
+ var n = e(t);
5180
+ return p(t.root) && !/^(https?:)?\//.test(n) && ((e = t.root), (t = "/"), (n = (e && void 0 === t ? e.replace(/\s+$/, "") : e && t ? e.replace(new RegExp("[" + t + "]+$"), "") : e) + "/" + n)), n;
5181
+ },
5182
+ }),
5183
+ (A.transforms = ["template", "query", "root"]),
5184
+ (A.params = function (t) {
5185
+ var e = [],
5186
+ n = encodeURIComponent;
5187
+ return (
5188
+ (e.add = function (t, e) {
5189
+ d(e) && (e = e()), null === e && (e = ""), this.push(n(t) + "=" + n(e));
5190
+ }),
5191
+ (function n(r, t, o) {
5192
+ var i,
5193
+ a = l(t),
5194
+ s = v(t);
5195
+ g(t, function (t, e) {
5196
+ (i = h(t) || l(t)), o && (e = o + "[" + (s || i ? e : "") + "]"), !o && a ? r.add(t.name, t.value) : i ? n(r, t, e) : r.add(e, t);
5197
+ });
5198
+ })(e, t),
5199
+ e.join("&").replace(/%20/g, "+")
5200
+ );
5201
+ }),
5202
+ (A.parse = function (t) {
5203
+ var e = document.createElement("a");
5204
+ return (
5205
+ document.documentMode && ((e.href = t), (t = e.href)),
5206
+ (e.href = t),
5207
+ {
5208
+ href: e.href,
5209
+ protocol: e.protocol ? e.protocol.replace(/:$/, "") : "",
5210
+ port: e.port,
5211
+ host: e.host,
5212
+ hostname: e.hostname,
5213
+ pathname: "/" === e.pathname.charAt(0) ? e.pathname : "/" + e.pathname,
5214
+ search: e.search ? e.search.replace(/^\?/, "") : "",
5215
+ hash: e.hash ? e.hash.replace(/^#/, "") : "",
5216
+ }
5217
+ );
5218
+ });
5219
+ function S(o) {
5220
+ return new u(function (n) {
5221
+ function t(t) {
5222
+ var e = t.type,
5223
+ t = 0;
5224
+ "load" === e ? (t = 200) : "error" === e && (t = 500), n(o.respondWith(r.responseText, { status: t }));
5225
+ }
5226
+ var r = new XDomainRequest();
5227
+ (o.abort = function () {
5228
+ return r.abort();
5229
+ }),
5230
+ r.open(o.method, o.getUrl()),
5231
+ o.timeout && (r.timeout = o.timeout),
5232
+ (r.onload = t),
5233
+ (r.onabort = t),
5234
+ (r.onerror = t),
5235
+ (r.ontimeout = t),
5236
+ (r.onprogress = function () {}),
5237
+ r.send(o.getBody());
5238
+ });
5239
+ }
5240
+ var T = i && "withCredentials" in new XMLHttpRequest();
5241
+ function j(a) {
5242
+ return new u(function (n) {
5243
+ var r,
5244
+ t = a.jsonp || "callback",
5245
+ o = a.jsonpCallback || "_jsonp" + Math.random().toString(36).substr(2),
5246
+ i = null,
5247
+ e = function (t) {
5248
+ var e = t.type,
5249
+ t = 0;
5250
+ "load" === e && null !== i ? (t = 200) : "error" === e && (t = 500), t && window[o] && (delete window[o], document.body.removeChild(r)), n(a.respondWith(i, { status: t }));
5251
+ };
5252
+ (window[o] = function (t) {
5253
+ i = JSON.stringify(t);
5254
+ }),
5255
+ (a.abort = function () {
5256
+ e({ type: "abort" });
5257
+ }),
5258
+ (a.params[t] = o),
5259
+ a.timeout && setTimeout(a.abort, a.timeout),
5260
+ ((r = document.createElement("script")).src = a.getUrl()),
5261
+ (r.type = "text/javascript"),
5262
+ (r.async = !0),
5263
+ (r.onload = e),
5264
+ (r.onerror = e),
5265
+ document.body.appendChild(r);
5266
+ });
5267
+ }
5268
+ function E(o) {
5269
+ return new u(function (n) {
5270
+ function t(t) {
5271
+ var e = o.respondWith("response" in r ? r.response : r.responseText, { status: 1223 === r.status ? 204 : r.status, statusText: 1223 === r.status ? "No Content" : c(r.statusText) });
5272
+ g(c(r.getAllResponseHeaders()).split("\n"), function (t) {
5273
+ e.headers.append(t.slice(0, t.indexOf(":")), t.slice(t.indexOf(":") + 1));
5274
+ }),
5275
+ n(e);
5276
+ }
5277
+ var r = new XMLHttpRequest();
5278
+ (o.abort = function () {
5279
+ return r.abort();
5280
+ }),
5281
+ o.progress && ("GET" === o.method ? r.addEventListener("progress", o.progress) : /^(POST|PUT)$/i.test(o.method) && r.upload.addEventListener("progress", o.progress)),
5282
+ r.open(o.method, o.getUrl(), !0),
5283
+ o.timeout && (r.timeout = o.timeout),
5284
+ o.responseType && "responseType" in r && (r.responseType = o.responseType),
5285
+ (o.withCredentials || o.credentials) && (r.withCredentials = !0),
5286
+ o.crossOrigin || o.headers.set("X-Requested-With", "XMLHttpRequest"),
5287
+ o.headers.forEach(function (t, e) {
5288
+ r.setRequestHeader(e, t);
5289
+ }),
5290
+ (r.onload = t),
5291
+ (r.onabort = t),
5292
+ (r.onerror = t),
5293
+ (r.ontimeout = t),
5294
+ r.send(o.getBody());
5295
+ });
5296
+ }
5297
+ function M(a) {
5298
+ var s = require("got");
5299
+ return new u(function (e) {
5300
+ var n,
5301
+ t = a.getUrl(),
5302
+ r = a.getBody(),
5303
+ o = a.method,
5304
+ i = {};
5305
+ a.headers.forEach(function (t, e) {
5306
+ i[e] = t;
5307
+ }),
5308
+ s(t, { body: r, method: o, headers: i }).then(
5309
+ (n = function (t) {
5310
+ var n = a.respondWith(t.body, { status: t.statusCode, statusText: c(t.statusMessage) });
5311
+ g(t.headers, function (t, e) {
5312
+ n.headers.set(e, t);
5313
+ }),
5314
+ e(n);
5315
+ }),
5316
+ function (t) {
5317
+ return n(t.response);
5318
+ }
5319
+ );
5320
+ });
5321
+ }
5322
+ var P = function (a) {
5323
+ var s,
5324
+ c = [I],
5325
+ l = [];
5326
+ function t(i) {
5327
+ return new u(function (e, n) {
5328
+ function r() {
5329
+ var t;
5330
+ d((s = c.pop())) ? s.call(a, i, o) : ((t = "Invalid interceptor of type " + typeof s + ", must be a function"), "undefined" != typeof console && f && console.warn("[VueResource warn]: " + t), o());
5331
+ }
5332
+ function o(t) {
5333
+ if (d(t)) l.unshift(t);
5334
+ else if (h(t))
5335
+ return (
5336
+ l.forEach(function (e) {
5337
+ t = m(
5338
+ t,
5339
+ function (t) {
5340
+ return e.call(a, t) || t;
5341
+ },
5342
+ n
5343
+ );
5344
+ }),
5345
+ void m(t, e, n)
5346
+ );
5347
+ r();
5348
+ }
5349
+ r();
5350
+ }, a);
5351
+ }
5352
+ return (
5353
+ h(a) || (a = null),
5354
+ (t.use = function (t) {
5355
+ c.push(t);
5356
+ }),
5357
+ t
5358
+ );
5359
+ };
5360
+ function I(t, e) {
5361
+ e((t.client || (i ? E : M))(t));
5362
+ }
5363
+ function L(t) {
5364
+ var n = this;
5365
+ (this.map = {}),
5366
+ g(t, function (t, e) {
5367
+ return n.append(e, t);
5368
+ });
5369
+ }
5370
+ function N(t, n) {
5371
+ return Object.keys(t).reduce(function (t, e) {
5372
+ return s(n) === s(e) ? e : t;
5373
+ }, null);
5374
+ }
5375
+ (L.prototype.has = function (t) {
5376
+ return null !== N(this.map, t);
5377
+ }),
5378
+ (L.prototype.get = function (t) {
5379
+ t = this.map[N(this.map, t)];
5380
+ return t ? t.join() : null;
5381
+ }),
5382
+ (L.prototype.getAll = function (t) {
5383
+ return this.map[N(this.map, t)] || [];
5384
+ }),
5385
+ (L.prototype.set = function (t, e) {
5386
+ this.map[
5387
+ (function (t) {
5388
+ if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t)) throw new TypeError("Invalid character in header field name");
5389
+ return c(t);
5390
+ })(N(this.map, t) || t)
5391
+ ] = [c(e)];
5392
+ }),
5393
+ (L.prototype.append = function (t, e) {
5394
+ var n = this.map[N(this.map, t)];
5395
+ n ? n.push(c(e)) : this.set(t, e);
5396
+ }),
5397
+ (L.prototype.delete = function (t) {
5398
+ delete this.map[N(this.map, t)];
5399
+ }),
5400
+ (L.prototype.deleteAll = function () {
5401
+ this.map = {};
5402
+ }),
5403
+ (L.prototype.forEach = function (n, r) {
5404
+ var o = this;
5405
+ g(this.map, function (t, e) {
5406
+ g(t, function (t) {
5407
+ return n.call(r, t, e, o);
5408
+ });
5409
+ });
5410
+ });
5411
+ function D(t, e) {
5412
+ var n,
5413
+ r = e.url,
5414
+ o = e.headers,
5415
+ i = e.status,
5416
+ e = e.statusText;
5417
+ (this.url = r),
5418
+ (this.ok = 200 <= i && i < 300),
5419
+ (this.status = i || 0),
5420
+ (this.statusText = e || ""),
5421
+ (this.headers = new L(o)),
5422
+ p((this.body = t))
5423
+ ? (this.bodyText = t)
5424
+ : ((o = t),
5425
+ "undefined" != typeof Blob &&
5426
+ o instanceof Blob &&
5427
+ ((this.bodyBlob = t),
5428
+ (0 !== (o = t).type.indexOf("text") && -1 === o.type.indexOf("json")) ||
5429
+ (this.bodyText =
5430
+ ((n = t),
5431
+ new u(function (t) {
5432
+ var e = new FileReader();
5433
+ e.readAsText(n),
5434
+ (e.onload = function () {
5435
+ t(e.result);
5436
+ });
5437
+ })))));
5438
+ }
5439
+ (D.prototype.blob = function () {
5440
+ return m(this.bodyBlob);
5441
+ }),
5442
+ (D.prototype.text = function () {
5443
+ return m(this.bodyText);
5444
+ }),
5445
+ (D.prototype.json = function () {
5446
+ return m(this.text(), function (t) {
5447
+ return JSON.parse(t);
5448
+ });
5449
+ }),
5450
+ Object.defineProperty(D.prototype, "data", {
5451
+ get: function () {
5452
+ return this.body;
5453
+ },
5454
+ set: function (t) {
5455
+ this.body = t;
5456
+ },
5457
+ });
5458
+ var F = function (t) {
5459
+ (this.body = null), (this.params = {}), _(this, t, { method: (t = t.method || "GET") ? t.toUpperCase() : "" }), this.headers instanceof L || (this.headers = new L(this.headers));
5460
+ };
5461
+ (F.prototype.getUrl = function () {
5462
+ return A(this);
5463
+ }),
5464
+ (F.prototype.getBody = function () {
5465
+ return this.body;
5466
+ }),
5467
+ (F.prototype.respondWith = function (t, e) {
5468
+ return new D(t, _(e || {}, { url: this.getUrl() }));
5469
+ });
5470
+ t = { "Content-Type": "application/json;charset=utf-8" };
5471
+ function R(t) {
5472
+ var e = this || {},
5473
+ n = P(e.$vm);
5474
+ return (
5475
+ (function (n) {
5476
+ r.call(arguments, 1).forEach(function (t) {
5477
+ for (var e in t) void 0 === n[e] && (n[e] = t[e]);
5478
+ });
5479
+ })(t || {}, e.$options, R.options),
5480
+ R.interceptors.forEach(function (t) {
5481
+ p(t) && (t = R.interceptor[t]), d(t) && n.use(t);
5482
+ }),
5483
+ n(new F(t)).then(
5484
+ function (t) {
5485
+ return t.ok ? t : u.reject(t);
5486
+ },
5487
+ function (t) {
5488
+ var e;
5489
+ return t instanceof Error && ((e = t), "undefined" != typeof console && console.error(e)), u.reject(t);
5490
+ }
5491
+ )
5492
+ );
5493
+ }
5494
+ function z(n, r, t, o) {
5495
+ var i = this || {},
5496
+ a = {};
5497
+ return (
5498
+ g((t = _({}, z.actions, t)), function (t, e) {
5499
+ (t = b({ url: n, params: _({}, r) }, o, t)),
5500
+ (a[e] = function () {
5501
+ return (i.$http || R)(
5502
+ (function (t, e) {
5503
+ var n,
5504
+ r = _({}, t),
5505
+ t = {};
5506
+ switch (e.length) {
5507
+ case 2:
5508
+ (t = e[0]), (n = e[1]);
5509
+ break;
5510
+ case 1:
5511
+ /^(POST|PUT|PATCH)$/i.test(r.method) ? (n = e[0]) : (t = e[0]);
5512
+ break;
5513
+ case 0:
5514
+ break;
5515
+ default:
5516
+ throw "Expected up to 2 arguments [params, body], got " + e.length + " arguments";
5517
+ }
5518
+ return (r.body = n), (r.params = _({}, r.params, t)), r;
5519
+ })(t, arguments)
5520
+ );
5521
+ });
5522
+ }),
5523
+ a
5524
+ );
5525
+ }
5526
+ function H(n) {
5527
+ H.installed ||
5528
+ (e(n),
5529
+ (n.url = A),
5530
+ (n.http = R),
5531
+ (n.resource = z),
5532
+ (n.Promise = u),
5533
+ Object.defineProperties(n.prototype, {
5534
+ $url: {
5535
+ get: function () {
5536
+ return y(n.url, this, this.$options.url);
5537
+ },
5538
+ },
5539
+ $http: {
5540
+ get: function () {
5541
+ return y(n.http, this, this.$options.http);
5542
+ },
5543
+ },
5544
+ $resource: {
5545
+ get: function () {
5546
+ return n.resource.bind(this);
5547
+ },
5548
+ },
5549
+ $promise: {
5550
+ get: function () {
5551
+ var e = this;
5552
+ return function (t) {
5553
+ return new n.Promise(t, e);
5554
+ };
5555
+ },
5556
+ },
5557
+ }));
5558
+ }
5559
+ return (
5560
+ (R.options = {}),
5561
+ (R.headers = { put: t, post: t, patch: t, delete: t, common: { Accept: "application/json, text/plain, */*" }, custom: {} }),
5562
+ (R.interceptor = {
5563
+ before: function (t, e) {
5564
+ d(t.before) && t.before.call(this, t), e();
5565
+ },
5566
+ method: function (t, e) {
5567
+ t.emulateHTTP && /^(PUT|PATCH|DELETE)$/i.test(t.method) && (t.headers.set("X-HTTP-Method-Override", t.method), (t.method = "POST")), e();
5568
+ },
5569
+ jsonp: function (t, e) {
5570
+ "JSONP" == t.method && (t.client = j), e();
5571
+ },
5572
+ json: function (t, e) {
5573
+ var o = t.headers.get("Content-Type") || "";
5574
+ h(t.body) && 0 === o.indexOf("application/json") && (t.body = JSON.stringify(t.body)),
5575
+ e(function (r) {
5576
+ return r.bodyText
5577
+ ? m(r.text(), function (t) {
5578
+ if (0 === (o = r.headers.get("Content-Type") || "").indexOf("application/json") || ((n = (e = t).match(/^\[|^\{(?!\{)/)) && { "[": /]$/, "{": /}$/ }[n[0]].test(e)))
5579
+ try {
5580
+ r.body = JSON.parse(t);
5581
+ } catch (t) {
5582
+ r.body = null;
5583
+ }
5584
+ else r.body = t;
5585
+ var e, n;
5586
+ return r;
5587
+ })
5588
+ : r;
5589
+ });
5590
+ },
5591
+ form: function (t, e) {
5592
+ var n;
5593
+ (n = t.body),
5594
+ "undefined" != typeof FormData && n instanceof FormData
5595
+ ? t.headers.delete("Content-Type")
5596
+ : h(t.body) && t.emulateJSON && ((t.body = A.params(t.body)), t.headers.set("Content-Type", "application/x-www-form-urlencoded")),
5597
+ e();
5598
+ },
5599
+ header: function (n, t) {
5600
+ g(_({}, R.headers.common, n.crossOrigin ? {} : R.headers.custom, R.headers[s(n.method)]), function (t, e) {
5601
+ n.headers.has(e) || n.headers.set(e, t);
5602
+ }),
5603
+ t();
5604
+ },
5605
+ cors: function (t, e) {
5606
+ var n, r;
5607
+ i && ((n = A.parse(location.href)), ((r = A.parse(t.getUrl())).protocol === n.protocol && r.host === n.host) || ((t.crossOrigin = !0), (t.emulateHTTP = !1), T || (t.client = S))), e();
5608
+ },
5609
+ }),
5610
+ (R.interceptors = ["before", "method", "jsonp", "json", "form", "header", "cors"]),
5611
+ ["get", "delete", "head", "jsonp"].forEach(function (n) {
5612
+ R[n] = function (t, e) {
5613
+ return this(_(e || {}, { url: t, method: n }));
5614
+ };
5615
+ }),
5616
+ ["post", "put", "patch"].forEach(function (r) {
5617
+ R[r] = function (t, e, n) {
5618
+ return this(_(n || {}, { url: t, method: r, body: e }));
5619
+ };
5620
+ }),
5621
+ (z.actions = { get: { method: "GET" }, save: { method: "POST" }, query: { method: "GET" }, update: { method: "PUT" }, remove: { method: "DELETE" }, delete: { method: "DELETE" } }),
5622
+ "undefined" != typeof window && window.Vue && window.Vue.use(H),
5623
+ H
5624
+ );
5625
+ })
5626
+
inc/admin/class-lp-reset-data.php CHANGED
@@ -42,38 +42,120 @@ class LP_Reset_Data {
42
  }
43
  }
44
  global $wpdb;
45
-
46
  //LP_Debug::startTransaction();
47
- $query = $wpdb->prepare( "
48
  SELECT user_item_id
49
  FROM {$wpdb->learnpress_user_items}
50
  WHERE user_id = %d AND item_id = %d
51
  ", $user_id, $item_id );
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
53
- if ( $user_item_ids = $wpdb->get_col( $query ) ) {
54
- $query = "
55
  SELECT DISTINCT parent_id AS parent, item_id
56
  FROM {$wpdb->learnpress_user_items}
57
- WHERE user_item_id IN(" . join( ',', $user_item_ids ) . ")
58
- ";
59
  $parents = $wpdb->get_results( $query );
60
 
61
- $format = array_fill( 0, sizeof( $user_item_ids ), '%d' );
62
- $query = $wpdb->prepare( "
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  DELETE
64
  FROM {$wpdb->learnpress_user_itemmeta}
65
  WHERE learnpress_user_item_id IN(" . join( ',', $format ) . ")
66
  ", $user_item_ids );
67
- $wpdb->query( $query );
68
 
69
- $query = $wpdb->prepare( "
 
 
70
  DELETE
71
  FROM {$wpdb->learnpress_user_items}
72
  WHERE user_id = %d AND item_id = %d
73
  ", $user_id, $item_id );
74
 
75
- $wpdb->query( $query );
 
 
76
 
 
77
  if ( $parents ) {
78
  foreach ( $parents as $parent ) {
79
  if ( $retaken_items = learn_press_get_user_item_meta( $parent->parent, '_retaken_items', true ) ) {
@@ -88,6 +170,7 @@ class LP_Reset_Data {
88
  }
89
 
90
  echo __( 'Item progress deleted', 'learnpress' );
 
91
  } else {
92
  echo __( 'No data found', 'learnpress' );
93
  }
@@ -278,8 +361,7 @@ class LP_Reset_Data {
278
  // Delete course
279
  $user_item_ids = wp_list_pluck( $user_item_courses, 'user_item_id' );
280
  self::delete_user_items_by_id( $user_item_ids );
281
- }
282
- catch ( Exception $ex ) {
283
  //LP_Debug::rollbackTransaction();
284
  }
285
 
@@ -348,4 +430,4 @@ class LP_Reset_Data {
348
  }
349
  }
350
 
351
- LP_Reset_Data::init();
42
  }
43
  }
44
  global $wpdb;
 
45
  //LP_Debug::startTransaction();
46
+ $query = $wpdb->prepare( "
47
  SELECT user_item_id
48
  FROM {$wpdb->learnpress_user_items}
49
  WHERE user_id = %d AND item_id = %d
50
  ", $user_id, $item_id );
51
+ $user_item_ids = $wpdb->get_col( $query );
52
+ //declare input_type
53
+ $input_type = '';
54
+ // Check input is course or (lesson || quiz)
55
+ $query_check_type = $wpdb->prepare( "
56
+ SELECT item_type
57
+ FROM {$wpdb->learnpress_user_items}
58
+ WHERE user_id = %d AND item_id = %d
59
+ ", $user_id, $item_id );
60
+ $input_type = $wpdb->get_results( $query_check_type );
61
+
62
+ // check exist $user_item_ids && $input_type
63
+ if ( $user_item_ids && $input_type ) {
64
 
65
+ // Select parent id of item_id
66
+ $query = $wpdb->prepare ("
67
  SELECT DISTINCT parent_id AS parent, item_id
68
  FROM {$wpdb->learnpress_user_items}
69
+ WHERE user_item_id IN(" . join( ',', $user_item_ids ) . ") AND 1 = %d
70
+ ", 1);
71
  $parents = $wpdb->get_results( $query );
72
 
73
+ if ( $parents[0]->parent == 0 ) {
74
+
75
+ /* ------------------------------
76
+ Process in table LP user itemmeta
77
+ -------------------------------- */
78
+ // List all user_item_id of quiz with item_id
79
+ $query = $wpdb->prepare( "
80
+ SELECT user_item_id
81
+ FROM {$wpdb->learnpress_user_items}
82
+ WHERE ref_id = %d AND item_type = %s
83
+ ", $item_id, 'lp_quiz' );
84
+
85
+ $results = $wpdb->get_results( $query );
86
+ foreach ( $results as $result ) {
87
+ $items[] = $result->user_item_id;
88
+ }
89
+
90
+ if ( ! empty( $items ) ) {
91
+
92
+ //Delete result in table user itemmeta
93
+ $query = $wpdb->prepare( "
94
+ DELETE FROM {$wpdb->learnpress_user_itemmeta}
95
+ WHERE 1 = %d
96
+ AND learnpress_user_item_id IN(" . join( ',', $items ) . ")
97
+ ", 1);
98
+ // check $items != null
99
+
100
+ $wpdb->query( $query );
101
+ }
102
+
103
+ // Delete all field with learnpress_user_item_id = $user_item_ids
104
+ $query = $wpdb->prepare( "
105
+ DELETE FROM {$wpdb->learnpress_user_itemmeta}
106
+ WHERE 1 = %d
107
+ AND learnpress_user_item_id IN(" . join( ',', $user_item_ids ) . ")
108
+ ", 1 );
109
+
110
+ $wpdb->query( $query );
111
+
112
+ /*------------------------------------
113
+ * Process in table LP user items
114
+ * ----------------------------------*/
115
+
116
+ //Update status in table learnpress user items
117
+ $null_time = '0000-00-00 00:00:00';
118
+ $current_time = current_time( 'mysql' );
119
+ $query = $wpdb->prepare( "
120
+ UPDATE {$wpdb->learnpress_user_items}
121
+ SET status = %s , start_time = %s , end_time = %s
122
+ WHERE user_id = %d AND item_id = %d
123
+ ", 'enrolled', $current_time , $null_time , $user_id, $item_id );
124
+ $wpdb->query( $query );
125
+
126
+ //Delete lesson & quiz in table lp user items
127
+
128
+ $query = $wpdb->prepare( "
129
+ DELETE
130
+ FROM {$wpdb->learnpress_user_items}
131
+ WHERE user_id = %d AND ref_id = %d AND ref_type = %s
132
+ ", $user_id, $item_id, 'lp_course' );
133
+ $wpdb->query( $query );
134
+
135
+
136
+ } else {
137
+
138
+ // Delete all result in table lp user itemmeta
139
+ $format = array_fill( 0, sizeof( $user_item_ids ), '%d' );
140
+ $query = $wpdb->prepare( "
141
  DELETE
142
  FROM {$wpdb->learnpress_user_itemmeta}
143
  WHERE learnpress_user_item_id IN(" . join( ',', $format ) . ")
144
  ", $user_item_ids );
 
145
 
146
+ $wpdb->query( $query );
147
+
148
+ $query = $wpdb->prepare( "
149
  DELETE
150
  FROM {$wpdb->learnpress_user_items}
151
  WHERE user_id = %d AND item_id = %d
152
  ", $user_id, $item_id );
153
 
154
+ $wpdb->query( $query );
155
+
156
+ }
157
 
158
+ // general handling for all item & course
159
  if ( $parents ) {
160
  foreach ( $parents as $parent ) {
161
  if ( $retaken_items = learn_press_get_user_item_meta( $parent->parent, '_retaken_items', true ) ) {
170
  }
171
 
172
  echo __( 'Item progress deleted', 'learnpress' );
173
+
174
  } else {
175
  echo __( 'No data found', 'learnpress' );
176
  }
361
  // Delete course
362
  $user_item_ids = wp_list_pluck( $user_item_courses, 'user_item_id' );
363
  self::delete_user_items_by_id( $user_item_ids );
364
+ } catch ( Exception $ex ) {
 
365
  //LP_Debug::rollbackTransaction();
366
  }
367
 
430
  }
431
  }
432
 
433
+ LP_Reset_Data::init();
inc/admin/views/tools/course/html-user-item.php CHANGED
@@ -16,7 +16,7 @@ defined( 'ABSPATH' ) or die();
16
  <table>
17
  <tr>
18
  <td><strong><?php _e( 'User ID or Email', 'learnpress' ); ?></strong></td>
19
- <td><strong><?php _e( 'Item ID (ID of quiz or lesson)', 'learnpress' ); ?></strong></td>
20
  </tr>
21
  <tr>
22
  <td><input type="text" v-model="user_id" @keyup="update($event)"></td>
@@ -39,7 +39,7 @@ $localize = array(
39
  window.$Vue = window.$Vue || Vue;
40
 
41
  jQuery(function ($) {
42
- var js_localize = <?php echo wp_json_encode( $localize );?>
43
 
44
  new $Vue({
45
  el: '#learn-press-reset-user-item',
@@ -93,4 +93,4 @@ $localize = array(
93
  });
94
  });
95
 
96
- </script>
16
  <table>
17
  <tr>
18
  <td><strong><?php _e( 'User ID or Email', 'learnpress' ); ?></strong></td>
19
+ <td><strong><?php _e( 'Course ID or Item ID (quiz or lesson)', 'learnpress' ); ?></strong></td>
20
  </tr>
21
  <tr>
22
  <td><input type="text" v-model="user_id" @keyup="update($event)"></td>
39
  window.$Vue = window.$Vue || Vue;
40
 
41
  jQuery(function ($) {
42
+ var js_localize = <?php echo wp_json_encode( $localize );?>
43
 
44
  new $Vue({
45
  el: '#learn-press-reset-user-item',
93
  });
94
  });
95
 
96
+ </script>
inc/class-lp-checkout.php CHANGED
@@ -74,7 +74,7 @@ class LP_Checkout {
74
  * Process customer when checking out.
75
  *
76
  * @param array $result
77
- * @param int $order_id
78
  *
79
  * @return mixed
80
  */
@@ -118,8 +118,7 @@ class LP_Checkout {
118
  }
119
 
120
  $order->save();
121
- }
122
- catch ( Exception $ex ) {
123
  if ( $ex->getCode() && $message = $ex->getMessage() ) {
124
  $result['message'] = $message;
125
  }
@@ -147,8 +146,8 @@ class LP_Checkout {
147
  }
148
 
149
  /**
150
- * @param array $errors
151
- * @param array $fields
152
  * @param LP_Checkout $checkout
153
  *
154
  * @return array
@@ -334,8 +333,7 @@ class LP_Checkout {
334
  }
335
  $wpdb->query( 'COMMIT' );
336
 
337
- }
338
- catch ( Exception $e ) {
339
  // There was an error adding order data!
340
  $wpdb->query( 'ROLLBACK' );
341
  learn_press_add_message( $e->getMessage() );
@@ -609,8 +607,7 @@ class LP_Checkout {
609
  }
610
  }
611
  }
612
- }
613
- catch ( Exception $e ) {
614
  $has_error = $e->getMessage();
615
  learn_press_add_message( $has_error, 'error' );
616
  }
74
  * Process customer when checking out.
75
  *
76
  * @param array $result
77
+ * @param int $order_id
78
  *
79
  * @return mixed
80
  */
118
  }
119
 
120
  $order->save();
121
+ } catch ( Exception $ex ) {
 
122
  if ( $ex->getCode() && $message = $ex->getMessage() ) {
123
  $result['message'] = $message;
124
  }
146
  }
147
 
148
  /**
149
+ * @param array $errors
150
+ * @param array $fields
151
  * @param LP_Checkout $checkout
152
  *
153
  * @return array
333
  }
334
  $wpdb->query( 'COMMIT' );
335
 
336
+ } catch ( Exception $e ) {
 
337
  // There was an error adding order data!
338
  $wpdb->query( 'ROLLBACK' );
339
  learn_press_add_message( $e->getMessage() );
607
  }
608
  }
609
  }
610
+ } catch ( Exception $e ) {
 
611
  $has_error = $e->getMessage();
612
  learn_press_add_message( $has_error, 'error' );
613
  }
inc/class-lp-database.php CHANGED
@@ -8,10 +8,10 @@ if ( ! defined( 'ABSPATH' ) ) {
8
  * Class LP_Database
9
  */
10
  class LP_Database {
11
- protected static $_instance;
12
  public $wpdb;
13
  public $tb_lp_user_items, $tb_lp_user_itemmeta;
14
- public $tb_posts, $tb_postmeta;
15
  public $tb_lp_order_items, $tb_lp_order_itemmeta;
16
  public $tb_lp_sections, $tb_lp_section_items;
17
  public $tb_lp_quiz_questions;
@@ -23,6 +23,7 @@ class LP_Database {
23
  global $wpdb;
24
 
25
  $this->wpdb = $wpdb;
 
26
  $this->tb_posts = $this->wpdb->posts;
27
  $this->tb_postmeta = $this->wpdb->postmeta;
28
  $this->tb_lp_user_items = $this->wpdb->prefix . 'learnpress_user_items';
8
  * Class LP_Database
9
  */
10
  class LP_Database {
11
+ private static $_instance;
12
  public $wpdb;
13
  public $tb_lp_user_items, $tb_lp_user_itemmeta;
14
+ public $tb_posts, $tb_postmeta, $tb_users;
15
  public $tb_lp_order_items, $tb_lp_order_itemmeta;
16
  public $tb_lp_sections, $tb_lp_section_items;
17
  public $tb_lp_quiz_questions;
23
  global $wpdb;
24
 
25
  $this->wpdb = $wpdb;
26
+ $this->tb_users = $this->wpdb->users;
27
  $this->tb_posts = $this->wpdb->posts;
28
  $this->tb_postmeta = $this->wpdb->postmeta;
29
  $this->tb_lp_user_items = $this->wpdb->prefix . 'learnpress_user_items';
inc/class-lp-datetime.php CHANGED
@@ -33,8 +33,8 @@ class LP_Datetime extends DateTime {
33
  /**
34
  * Constructor.
35
  *
36
- * @param string $date
37
- * @param mixed $tz
38
  */
39
  public function __construct( $date = '', $tz = null ) {
40
  if ( empty( self::$gmt ) || empty( self::$stz ) ) {
@@ -86,11 +86,11 @@ class LP_Datetime extends DateTime {
86
  /**
87
  * Get default timezone from param and wp settings
88
  *
89
- * @since 3.1.0
90
- *
91
  * @param mixed $tz
92
  *
93
  * @return DateTimeZone|null|string
 
 
94
  */
95
  public static function get_default_timezone( $tz ) {
96
  if ( empty( self::$def_timezone ) ) {
@@ -149,7 +149,7 @@ class LP_Datetime extends DateTime {
149
  }
150
 
151
  /**
152
- * @param string $name The name of the property.
153
  *
154
  * @return mixed
155
  */
@@ -221,12 +221,12 @@ class LP_Datetime extends DateTime {
221
  /**
222
  * Gets the date as a formatted string.
223
  *
224
- * @param string $format The date format specification string (see {@link PHP_MANUAL#date})
225
- * @param boolean $local True to return the date string in the local time zone, false to return it in GMT.
226
  *
227
  * @return string The date string in the specified format format.
228
  */
229
- public function format( $format, $local = true ) {
230
  if ( '0000-00-00 00:00:00' === $this->raw_date ) {
231
  return '';
232
  }
@@ -265,7 +265,7 @@ class LP_Datetime extends DateTime {
265
  }
266
 
267
  /**
268
- * @param boolean $local True to return the date string in the local time zone, false to return it in GMT.
269
  *
270
  * @return string
271
  */
@@ -276,7 +276,7 @@ class LP_Datetime extends DateTime {
276
  /**
277
  * Gets the date as an SQL datetime string.
278
  *
279
- * @param boolean $local True to return the date string in the local time zone, false to return it in GMT.
280
  *
281
  * @return string
282
  */
@@ -288,7 +288,7 @@ class LP_Datetime extends DateTime {
288
  * Gets the date as an RFC 822 string. IETF RFC 2822 supercedes RFC 822 and its definition
289
  * can be found at the IETF Web site.
290
  *
291
- * @param boolean $local True to return the date string in the local time zone, false to return it in GMT.
292
  *
293
  * @return string
294
  */
@@ -332,4 +332,4 @@ class LP_Datetime extends DateTime {
332
  public static function getSqlNullDate() {
333
  return '0000-00-00 00:00:00';
334
  }
335
- }
33
  /**
34
  * Constructor.
35
  *
36
+ * @param string $date
37
+ * @param mixed $tz
38
  */
39
  public function __construct( $date = '', $tz = null ) {
40
  if ( empty( self::$gmt ) || empty( self::$stz ) ) {
86
  /**
87
  * Get default timezone from param and wp settings
88
  *
 
 
89
  * @param mixed $tz
90
  *
91
  * @return DateTimeZone|null|string
92
+ * @since 3.1.0
93
+ *
94
  */
95
  public static function get_default_timezone( $tz ) {
96
  if ( empty( self::$def_timezone ) ) {
149
  }
150
 
151
  /**
152
+ * @param string $name The name of the property.
153
  *
154
  * @return mixed
155
  */
221
  /**
222
  * Gets the date as a formatted string.
223
  *
224
+ * @param string $format The date format specification string (see {@link PHP_MANUAL#date})
225
+ * @param boolean $local True to return the date string in the local time zone, false to return it in GMT.
226
  *
227
  * @return string The date string in the specified format format.
228
  */
229
+ public function format( $format = '', $local = true ) {
230
  if ( '0000-00-00 00:00:00' === $this->raw_date ) {
231
  return '';
232
  }
265
  }
266
 
267
  /**
268
+ * @param boolean $local True to return the date string in the local time zone, false to return it in GMT.
269
  *
270
  * @return string
271
  */
276
  /**
277
  * Gets the date as an SQL datetime string.
278
  *
279
+ * @param boolean $local True to return the date string in the local time zone, false to return it in GMT.
280
  *
281
  * @return string
282
  */
288
  * Gets the date as an RFC 822 string. IETF RFC 2822 supercedes RFC 822 and its definition
289
  * can be found at the IETF Web site.
290
  *
291
+ * @param boolean $local True to return the date string in the local time zone, false to return it in GMT.
292
  *
293
  * @return string
294
  */
332
  public static function getSqlNullDate() {
333
  return '0000-00-00 00:00:00';
334
  }
335
+ }
inc/class-lp-emails.php CHANGED
@@ -156,7 +156,7 @@ if ( ! class_exists( 'LP_Emails' ) ) {
156
  'learn_press_course_submit_rejected',
157
  'learn_press_course_submit_approved',
158
  'learn_press_course_submit_for_reviewer',
159
- 'learn_press_user_enrolled_course',
160
 
161
  // New order
162
  'learn-press/order/status-pending-to-processing',
156
  'learn_press_course_submit_rejected',
157
  'learn_press_course_submit_approved',
158
  'learn_press_course_submit_for_reviewer',
159
+ //'learn_press_user_enrolled_course',
160
 
161
  // New order
162
  'learn-press/order/status-pending-to-processing',
inc/class-lp-request-handler.php CHANGED
@@ -67,15 +67,22 @@ class LP_Request {
67
 
68
  public static function maybe_redirect_checkout( $result, $order_id ) {
69
  $course_id = get_transient( 'checkout_enroll_course_id' );
 
70
  if ( ! $course_id ) {
71
  if ( isset( $_REQUEST['enroll-course'] ) && $_REQUEST['enroll-course'] ) {
72
  $course_id = absint( $_REQUEST['enroll-course'] );
73
  }
74
  }
 
75
  if ( $course_id ) {
76
- $course = learn_press_get_course( $course_id );
77
- $course_items = $course->get_items();
78
- $first_item = ( $course_items[0] ) ? $course_items[0] : 0;
 
 
 
 
 
79
  self::do_enroll( $course_id, $order_id, 'enroll-course', $first_item );
80
  delete_transient( 'checkout_enroll_course_id' );
81
  unset( $result['redirect'] );
@@ -244,8 +251,7 @@ class LP_Request {
244
  /**
245
  * @see LP_Request::do_enroll()
246
  */
247
- $course_items = $course->get_items();
248
- $first_item = ( $course_items[0] ) ? $course_items[0] : 0;
249
  do_action( "learn-press/{$action}-handler/enroll", $course_id, $order->get_id(), $action, $first_item );
250
  }
251
 
67
 
68
  public static function maybe_redirect_checkout( $result, $order_id ) {
69
  $course_id = get_transient( 'checkout_enroll_course_id' );
70
+
71
  if ( ! $course_id ) {
72
  if ( isset( $_REQUEST['enroll-course'] ) && $_REQUEST['enroll-course'] ) {
73
  $course_id = absint( $_REQUEST['enroll-course'] );
74
  }
75
  }
76
+
77
  if ( $course_id ) {
78
+ $course = learn_press_get_course( $course_id );
79
+
80
+ if ( ! $course ) {
81
+ return $result;
82
+ }
83
+
84
+ $first_item = LP_Course_DB::getInstance()->get_first_item( $course_id );
85
+
86
  self::do_enroll( $course_id, $order_id, 'enroll-course', $first_item );
87
  delete_transient( 'checkout_enroll_course_id' );
88
  unset( $result['redirect'] );
251
  /**
252
  * @see LP_Request::do_enroll()
253
  */
254
+ $first_item = LP_Course_DB::getInstance()->get_first_item( $course_id );
 
255
  do_action( "learn-press/{$action}-handler/enroll", $course_id, $order->get_id(), $action, $first_item );
256
  }
257
 
inc/course/abstract-course.php CHANGED
@@ -140,7 +140,7 @@ if ( ! function_exists( 'LP_Abstract_Course' ) ) {
140
  'course_result' => get_post_meta( $id, '_lp_course_result', true ),
141
  'passing_condition' => get_post_meta( $id, '_lp_passing_condition', true ),
142
  'payment' => get_post_meta( $id, '_lp_payment', true ),
143
- 'final_quiz' => get_post_meta( $id, '_lp_final_quiz', true ),
144
  'external_link' => get_post_meta( $id, '_lp_external_link_buy_course', true ),
145
  'external_link_text' => get_post_meta( $id, '_lp_external_link_text', true ),
146
  )
140
  'course_result' => get_post_meta( $id, '_lp_course_result', true ),
141
  'passing_condition' => get_post_meta( $id, '_lp_passing_condition', true ),
142
  'payment' => get_post_meta( $id, '_lp_payment', true ),
143
+ 'final_quiz' => (int) get_post_meta( $id, '_lp_final_quiz', true ),
144
  'external_link' => get_post_meta( $id, '_lp_external_link_buy_course', true ),
145
  'external_link_text' => get_post_meta( $id, '_lp_external_link_text', true ),
146
  )
inc/course/class-lp-course-database.php CHANGED
@@ -10,9 +10,9 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  * @since 3.2.7.5
11
  */
12
  class LP_Course_DB extends LP_Database {
13
- public static $_instance;
14
 
15
- public function __construct() {
16
  parent::__construct();
17
  }
18
 
@@ -46,6 +46,82 @@ class LP_Course_DB extends LP_Database {
46
 
47
  return (int) $this->wpdb->get_var( $query );
48
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  }
50
 
51
  LP_Course_DB::getInstance();
10
  * @since 3.2.7.5
11
  */
12
  class LP_Course_DB extends LP_Database {
13
+ private static $_instance;
14
 
15
+ protected function __construct() {
16
  parent::__construct();
17
  }
18
 
46
 
47
  return (int) $this->wpdb->get_var( $query );
48
  }
49
+
50
+ /**
51
+ * Get first item of course
52
+ *
53
+ * @param int $course_id
54
+ *
55
+ * @return int
56
+ */
57
+ public function get_first_item( $course_id = 0 ) {
58
+ /**
59
+ * Get cache
60
+ */
61
+ $first_item_id = wp_cache_get( 'first_item_id', LP_COURSE_CPT );
62
+
63
+ if ( ! $first_item_id ) {
64
+ $query = $this->wpdb->prepare( "
65
+ SELECT item_id FROM $this->tb_lp_section_items AS items
66
+ INNER JOIN $this->tb_lp_sections AS sections
67
+ ON items.section_id = sections.section_id
68
+ AND sections.section_course_id = %d
69
+ ",
70
+ $course_id
71
+ );
72
+
73
+ $first_item_id = (int) $this->wpdb->get_var( $query );
74
+
75
+ //Set cache
76
+ wp_cache_set( 'first_item_id', $first_item_id, LP_COURSE_CPT );
77
+ }
78
+
79
+ return $first_item_id;
80
+ }
81
+
82
+ /**
83
+ * Get items of course
84
+ *
85
+ * @param int $course_id
86
+ * @param bool $publish_only
87
+ */
88
+ public function get_items_of_course( $course_id = 0, $publish_only = true ) {
89
+ $where = '';
90
+
91
+ /**
92
+ * Get course
93
+ *
94
+ * Please clear cache when add/delete item to course
95
+ */
96
+ $course_items = wp_cache_get( 'lp-course-items-' . $course_id, 'lp-course-items' );
97
+
98
+ if ( ! $course_items ) {
99
+ if ( $publish_only ) {
100
+ $where = $this->wpdb->prepare( "
101
+ AND c.post_status = %s
102
+ AND it.post_status = %s
103
+ ", 'publish', 'publish' );
104
+ }
105
+
106
+ $query = $this->wpdb->prepare( "
107
+ SELECT item_id id, it.post_type `type`, si.section_id
108
+ FROM {$this->tb_lp_section_items} si
109
+ INNER JOIN {$this->tb_lp_sections} s ON si.section_id = s.section_id
110
+ INNER JOIN {$this->tb_posts} c ON s.section_course_id = c.ID
111
+ INNER JOIN {$this->tb_posts} it ON it.ID = si.item_id
112
+ WHERE c.ID = %d
113
+ {$where}
114
+ ORDER BY s.section_order, si.item_order, si.section_item_id ASC
115
+ ", $course_id );
116
+
117
+ $course_items = $this->wpdb->get_results( $query );
118
+
119
+ //Set course
120
+ wp_cache_set( 'lp-course-items-' . $course_id, $course_items, 'lp-course-items' );
121
+ }
122
+
123
+ return $course_items;
124
+ }
125
  }
126
 
127
  LP_Course_DB::getInstance();
inc/course/class-lp-course-item.php CHANGED
@@ -135,7 +135,8 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
135
  $curd->update_items_format( $course->get_id() );
136
  }
137
  }
138
- $format = get_post_meta( $this->get_id(), 'post_format', true );// ( false !== ( $format = LP_Object_Cache::get( 'item-format-' . $this->get_id(), 'learn-press/item-formats' ) ) ) ? $format : get_post_format( $this->get_id() );
 
139
 
140
  if ( ! $format ) {
141
  $format = 'standard';
@@ -159,7 +160,7 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
159
  * Get class of item.
160
  *
161
  * @param string $more
162
- * @param int $user_id
163
  *
164
  * @return array
165
  */
@@ -178,7 +179,8 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
178
 
179
  $t = microtime( true );
180
 
181
- if ( false === ( $classes = LP_Object_Cache::get( 'item-' . $user_id . '-' . $this->get_id(), 'learn-press/post-classes' ) ) ) {
 
182
 
183
  $curd = new LP_User_Item_CURD();
184
  $all_items = $curd->parse_items_classes( $course_id, $user_id, $more );
@@ -192,7 +194,8 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
192
  $GLOBALS['get_class'] += microtime( true ) - $t;
193
 
194
 
195
- return apply_filters( 'learn-press/course-item-class-cached', $classes, $this->get_item_type(), $this->get_id(), $course_id );
 
196
  }
197
 
198
  /**
@@ -257,7 +260,7 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
257
  /**
258
  * Get instance of an item from post
259
  *
260
- * @param WP_Post|int $post
261
  * @param LP_Course|LP_Abstract_Course|int|null $course
262
  *
263
  * @return mixed|void|LP_Course_Item
@@ -281,7 +284,8 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
281
  if ( learn_press_is_support_course_item_type( $item_type ) ) {
282
  $type = str_replace( 'lp_', '', $item_type );
283
 
284
- $class = apply_filters( 'learn-press/course-item-object-class', false, $type, $item_type, $item_id );
 
285
 
286
  if ( is_string( $class ) && class_exists( $class ) ) {
287
  $item = new $class( $post->ID, $post );
@@ -321,7 +325,8 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
321
  public function get_template() {
322
  $item_type = $this->get_item_type();
323
 
324
- return apply_filters( 'learn-press/section-item-template', 'item-' . str_replace( 'lp_', '', $item_type ), $item_type );
 
325
  }
326
 
327
  /**
@@ -346,14 +351,18 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
346
  * Create nonce for checking actions on an item.
347
  *
348
  * @param string $action
349
- * @param int $course_id
350
- * @param int $user_id
351
  *
352
  * @return string
353
  */
354
  public function create_nonce( $action = '', $course_id = 0, $user_id = 0 ) {
355
  if ( ! $course_id ) {
356
- $course_id = $this->get_course()->get_id();
 
 
 
 
357
  }
358
 
359
  if ( ! $user_id ) {
@@ -370,8 +379,8 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
370
  *
371
  * @param string $nonce
372
  * @param string $action
373
- * @param int $course_id
374
- * @param int $user_id
375
  *
376
  * @return false|int
377
  */
@@ -448,7 +457,8 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
448
  }
449
  }
450
 
451
- return apply_filters( 'learn-press/item-status-classes', $status_classes, $this->get_id(), $course_id, $user_id );
 
452
  }
453
 
454
  /**
@@ -523,7 +533,7 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
523
 
524
  if ( ! $course ) {
525
  $blocked = 'yes';
526
- } else if ( ! $course->is_required_enroll() || $this->is_preview() ) {
527
  $blocked = 'no';
528
  } else {
529
  if ( $user ) {
@@ -542,7 +552,8 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
542
  $is_blocked = $blocked;
543
  }
544
 
545
- return apply_filters( 'learn-press/course-item/is-blocked', $is_blocked === 'yes' ? true : false, $this->get_id(), $course_id, $user_id );
 
546
  }
547
 
548
  protected function _parse_item_block_status( $course_id, $user_id, $cache_key ) {
@@ -568,13 +579,15 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
568
  if ( $item = $course->get_item( $course_item ) ) {
569
  if ( $item->is_preview() ) {
570
  $blocked_items[ $course_item ] = 'no';
571
- } elseif ( ! $block_item_types || is_array( $block_item_types ) && ! in_array( $item->get_post_type(), $block_item_types ) ) {
 
572
  $blocked_items[ $course_item ] = 'no';
573
  }
574
  }
575
  }
576
 
577
- $blocked_items = apply_filters( 'learn-press/course-item/parse-block-statuses', $blocked_items, $course_id, $user_id );
 
578
 
579
  LP_Object_Cache::set( $cache_key, $blocked_items, 'learn-press/blocked-items' );
580
 
@@ -582,8 +595,8 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
582
  }
583
 
584
  /**
585
- * @param LP_User $user
586
- * @param LP_Course $course
587
  * @param LP_User_Item_Course $course_item_data
588
  *
589
  * @return string
@@ -592,11 +605,12 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
592
 
593
  if ( $is_admin = in_array( 'administrator', $user->get_roles() ) ) {
594
  $blocked = 'no';
595
- } else if ( $user->has_course_status( $course->get_id(), array( 'enrolled', 'finished' ) ) ) {
596
  $blocked = 'no';
597
 
598
  // fixed option block lessons not working
599
- if ( $course->is_block_item_content() && $course_item_data->get_finishing_type() == 'click' && $user->has_course_status( $course->get_id(), 'finished' ) ) {
 
600
  $blocked = 'yes';
601
  }
602
 
@@ -630,12 +644,12 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
630
 
631
  // Todo: check duplicated condition
632
  if ( $course->is_block_item_content() && $course_item_data->get_finishing_type() == 'click' &&
633
- $user->has_course_status( $course->get_id(), 'finished' ) ) {
634
  $blocked_by = 'by_finish_course';
635
  }
636
 
637
  if ( $course->is_block_item_content_duration() &&
638
- $course_item_data->is_exceeded() < 0 && $blocked_by !== 'by_finish_course' ) {
639
  $blocked_by = 'by_duration_expires';
640
  }
641
 
@@ -654,4 +668,4 @@ if ( ! class_exists( 'LP_Course_Item' ) ) {
654
  public function offsetUnset( $offset ) {
655
  }
656
  }
657
- }
135
  $curd->update_items_format( $course->get_id() );
136
  }
137
  }
138
+ $format = get_post_meta( $this->get_id(), 'post_format',
139
+ true );
140
 
141
  if ( ! $format ) {
142
  $format = 'standard';
160
  * Get class of item.
161
  *
162
  * @param string $more
163
+ * @param int $user_id
164
  *
165
  * @return array
166
  */
179
 
180
  $t = microtime( true );
181
 
182
+ if ( false === ( $classes = LP_Object_Cache::get( 'item-' . $user_id . '-' . $this->get_id(),
183
+ 'learn-press/post-classes' ) ) ) {
184
 
185
  $curd = new LP_User_Item_CURD();
186
  $all_items = $curd->parse_items_classes( $course_id, $user_id, $more );
194
  $GLOBALS['get_class'] += microtime( true ) - $t;
195
 
196
 
197
+ return apply_filters( 'learn-press/course-item-class-cached', $classes, $this->get_item_type(),
198
+ $this->get_id(), $course_id );
199
  }
200
 
201
  /**
260
  /**
261
  * Get instance of an item from post
262
  *
263
+ * @param WP_Post|int $post
264
  * @param LP_Course|LP_Abstract_Course|int|null $course
265
  *
266
  * @return mixed|void|LP_Course_Item
284
  if ( learn_press_is_support_course_item_type( $item_type ) ) {
285
  $type = str_replace( 'lp_', '', $item_type );
286
 
287
+ $class = apply_filters( 'learn-press/course-item-object-class', false, $type, $item_type,
288
+ $item_id );
289
 
290
  if ( is_string( $class ) && class_exists( $class ) ) {
291
  $item = new $class( $post->ID, $post );
325
  public function get_template() {
326
  $item_type = $this->get_item_type();
327
 
328
+ return apply_filters( 'learn-press/section-item-template', 'item-' . str_replace( 'lp_', '', $item_type ),
329
+ $item_type );
330
  }
331
 
332
  /**
351
  * Create nonce for checking actions on an item.
352
  *
353
  * @param string $action
354
+ * @param int $course_id
355
+ * @param int $user_id
356
  *
357
  * @return string
358
  */
359
  public function create_nonce( $action = '', $course_id = 0, $user_id = 0 ) {
360
  if ( ! $course_id ) {
361
+ if ( ! $this->get_course() ) {
362
+ $course_id = 0;
363
+ } else {
364
+ $course_id = $this->get_course()->get_id();
365
+ }
366
  }
367
 
368
  if ( ! $user_id ) {
379
  *
380
  * @param string $nonce
381
  * @param string $action
382
+ * @param int $course_id
383
+ * @param int $user_id
384
  *
385
  * @return false|int
386
  */
457
  }
458
  }
459
 
460
+ return apply_filters( 'learn-press/item-status-classes', $status_classes, $this->get_id(), $course_id,
461
+ $user_id );
462
  }
463
 
464
  /**
533
 
534
  if ( ! $course ) {
535
  $blocked = 'yes';
536
+ } elseif ( ! $course->is_required_enroll() || $this->is_preview() ) {
537
  $blocked = 'no';
538
  } else {
539
  if ( $user ) {
552
  $is_blocked = $blocked;
553
  }
554
 
555
+ return apply_filters( 'learn-press/course-item/is-blocked', $is_blocked === 'yes' ? true : false,
556
+ $this->get_id(), $course_id, $user_id );
557
  }
558
 
559
  protected function _parse_item_block_status( $course_id, $user_id, $cache_key ) {
579
  if ( $item = $course->get_item( $course_item ) ) {
580
  if ( $item->is_preview() ) {
581
  $blocked_items[ $course_item ] = 'no';
582
+ } elseif ( ! $block_item_types || is_array( $block_item_types ) && ! in_array( $item->get_post_type(),
583
+ $block_item_types ) ) {
584
  $blocked_items[ $course_item ] = 'no';
585
  }
586
  }
587
  }
588
 
589
+ $blocked_items = apply_filters( 'learn-press/course-item/parse-block-statuses', $blocked_items, $course_id,
590
+ $user_id );
591
 
592
  LP_Object_Cache::set( $cache_key, $blocked_items, 'learn-press/blocked-items' );
593
 
595
  }
596
 
597
  /**
598
+ * @param LP_User $user
599
+ * @param LP_Course $course
600
  * @param LP_User_Item_Course $course_item_data
601
  *
602
  * @return string
605
 
606
  if ( $is_admin = in_array( 'administrator', $user->get_roles() ) ) {
607
  $blocked = 'no';
608
+ } elseif ( $user->has_course_status( $course->get_id(), array( 'enrolled', 'finished' ) ) ) {
609
  $blocked = 'no';
610
 
611
  // fixed option block lessons not working
612
+ if ( $course->is_block_item_content() && $course_item_data->get_finishing_type() == 'click' && $user->has_course_status( $course->get_id(),
613
+ 'finished' ) ) {
614
  $blocked = 'yes';
615
  }
616
 
644
 
645
  // Todo: check duplicated condition
646
  if ( $course->is_block_item_content() && $course_item_data->get_finishing_type() == 'click' &&
647
+ $user->has_course_status( $course->get_id(), 'finished' ) ) {
648
  $blocked_by = 'by_finish_course';
649
  }
650
 
651
  if ( $course->is_block_item_content_duration() &&
652
+ $course_item_data->is_exceeded() < 0 && $blocked_by !== 'by_finish_course' ) {
653
  $blocked_by = 'by_duration_expires';
654
  }
655
 
668
  public function offsetUnset( $offset ) {
669
  }
670
  }
671
+ }
inc/course/lp-course-functions.php CHANGED
@@ -1144,10 +1144,16 @@ function learn_press_get_course_results_tooltip( $course_id ) {
1144
 
1145
  function learn_press_course_passing_condition( $value, $format, $course_id ) {
1146
 
1147
- $course = learn_press_get_course( $course_id );
 
 
 
 
 
 
 
 
1148
 
1149
- if ( $quiz_id = $course->get_final_quiz() ) {
1150
- $quiz = learn_press_get_quiz( $quiz_id );
1151
  $value = absint( $quiz->get_passing_grade() );
1152
 
1153
  if ( $format ) {
@@ -1260,9 +1266,11 @@ function learn_press_reload_page_when_duration_expires() {
1260
  }
1261
 
1262
  $course = learn_press_get_the_course();
 
 
1263
 
1264
  if ( $course->is_block_item_content_duration() === true &&
1265
- ! empty( $course ) && $course->expires_to_milliseconds() > 0 ) {
1266
  echo '<input type="hidden" class="course-item-is-blocked" value="' . $course->expires_to_milliseconds() . '">';
1267
  }
1268
  }
1144
 
1145
  function learn_press_course_passing_condition( $value, $format, $course_id ) {
1146
 
1147
+ $course = learn_press_get_course( $course_id );
1148
+ $quiz_id = $course->get_final_quiz();
1149
+
1150
+ if ( $quiz_id ) {
1151
+ $quiz = learn_press_get_quiz( $quiz_id );
1152
+
1153
+ if ( ! $quiz ) {
1154
+ return $value;
1155
+ }
1156
 
 
 
1157
  $value = absint( $quiz->get_passing_grade() );
1158
 
1159
  if ( $format ) {
1266
  }
1267
 
1268
  $course = learn_press_get_the_course();
1269
+ $user = learn_press_get_current_user();
1270
+ $course_data = $user->get_course_data( $course->get_id() );
1271
 
1272
  if ( $course->is_block_item_content_duration() === true &&
1273
+ ! empty( $course ) && $course->expires_to_milliseconds() > 0 && $course_data->get_status() == 'enrolled' ) {
1274
  echo '<input type="hidden" class="course-item-is-blocked" value="' . $course->expires_to_milliseconds() . '">';
1275
  }
1276
  }
inc/curds/class-lp-user-curd.php CHANGED
@@ -424,7 +424,6 @@ class LP_User_CURD extends LP_Object_Data_CURD implements LP_Interface_CURD {
424
  * @since 3.2.6.10
425
  */
426
  public function read_course( $user_id = null, $course_id = null, $force = false ) {
427
- #LP_Debug::logTime( __FUNCTION__ );
428
  if ( is_null( $user_id ) ) {
429
  $user_id = get_current_user_id();
430
  }
@@ -472,8 +471,6 @@ class LP_User_CURD extends LP_Object_Data_CURD implements LP_Interface_CURD {
472
 
473
  LP_Object_Cache::set( 'course-' . $user_id . '-' . $course_id, $result, 'learn-press/user-item-courses' );
474
 
475
- #LP_Debug::logTime( __FUNCTION__ );
476
-
477
  return $result;
478
  }
479
 
@@ -1792,4 +1789,4 @@ class LP_User_CURD extends LP_Object_Data_CURD implements LP_Interface_CURD {
1792
  }
1793
 
1794
 
1795
- }
424
  * @since 3.2.6.10
425
  */
426
  public function read_course( $user_id = null, $course_id = null, $force = false ) {
 
427
  if ( is_null( $user_id ) ) {
428
  $user_id = get_current_user_id();
429
  }
471
 
472
  LP_Object_Cache::set( 'course-' . $user_id . '-' . $course_id, $result, 'learn-press/user-item-courses' );
473
 
 
 
474
  return $result;
475
  }
476
 
1789
  }
1790
 
1791
 
1792
+ }
inc/emails/types/class-lp-email-type-enrolled-course.php CHANGED
@@ -77,9 +77,10 @@ class LP_Email_Type_Enrolled_Course extends LP_Email {
77
  public function get_object( $object_id = '', $more = '' ) {
78
  $user = learn_press_get_user( $this->user_id );
79
  $course = learn_press_get_course( $this->course_id );
80
- $order = $user->get_course_order( $this->course_id );
 
 
81
  $object = array();
82
-
83
  if ( $course ) {
84
  $object = apply_filters(
85
  'lp/email/type_enrolled/data',
77
  public function get_object( $object_id = '', $more = '' ) {
78
  $user = learn_press_get_user( $this->user_id );
79
  $course = learn_press_get_course( $this->course_id );
80
+ $order_id = $user->get_course_order( $this->course_id, false );
81
+ $order = learn_press_get_order($order_id);
82
+
83
  $object = array();
 
84
  if ( $course ) {
85
  $object = apply_filters(
86
  'lp/email/type_enrolled/data',
inc/lesson/class-lp-lesson-database.php CHANGED
@@ -8,7 +8,7 @@ if ( ! defined( 'ABSPATH' ) ) {
8
  * Class LP_Lesson_DB
9
  */
10
  class LP_Lesson_DB extends LP_Database {
11
- public static $_instance;
12
 
13
  public function __construct() {
14
  parent::__construct();
8
  * Class LP_Lesson_DB
9
  */
10
  class LP_Lesson_DB extends LP_Database {
11
+ private static $_instance;
12
 
13
  public function __construct() {
14
  parent::__construct();
inc/lp-core-functions.php CHANGED
@@ -2162,9 +2162,7 @@ function learn_press_print_notices( $clear = true ) {
2162
  * @return mixed
2163
  */
2164
  function learn_press_get_login_url( $redirect = null ) {
2165
-
2166
- // @deprecated
2167
- $url = apply_filters( 'learn_press_login_url', wp_login_url( $redirect ) );
2168
 
2169
  if ( 'yes' === LP()->settings()->get( 'enable_login_profile' ) && $profile_page = learn_press_get_page_link( 'profile' ) ) {
2170
  $a = parse_url( $url );
2162
  * @return mixed
2163
  */
2164
  function learn_press_get_login_url( $redirect = null ) {
2165
+ $url = wp_login_url( $redirect );
 
 
2166
 
2167
  if ( 'yes' === LP()->settings()->get( 'enable_login_profile' ) && $profile_page = learn_press_get_page_link( 'profile' ) ) {
2168
  $a = parse_url( $url );
inc/lp-template-functions.php CHANGED
@@ -7,2273 +7,2279 @@
7
  * @version 1.0
8
  */
9
  if ( ! defined( 'ABSPATH' ) ) {
10
- exit; // Exit if accessed directly
11
  }
12
  /**
13
  * New functions since 3.0.0
14
  */
15
  if ( ! function_exists( 'learn_press_course_purchase_button' ) ) {
16
- /**
17
- * Purchase course button.
18
- */
19
- function learn_press_course_purchase_button() {
20
- $course = LP_Global::course();
21
- $user = learn_press_get_user( get_current_user_id() );
22
-
23
- if ( empty($user) || ! $course ) {
24
- return;
25
- }
26
-
27
- $course_data = $user->get_course_data( $course->get_id() );
28
- $is_finish = $course_data->is_finished();
29
- $can_retake_course = $user->can_retake_course( $course->get_id() );
30
- $purchased = $user->has_purchased_course( $course->get_id() );
31
-
32
- // if free course
33
- if ( $course->is_free() ) {
34
- return;
35
- }
36
-
37
- // if has retake and has purchased
38
- if ( $can_retake_course > 0 && $purchased ) {
39
- return;
40
- }
41
-
42
- // if external link
43
- if ( $course->get_external_link() ) {
44
- return;
45
- }
46
-
47
- // If course is not published
48
- if ( ! $course->is_publish() ) {
49
- return;
50
- }
51
-
52
- // Course is not require enrolling
53
- if ( ! $course->is_required_enroll() ) {
54
- return;
55
- }
56
-
57
- //remove by tungnx 3.2.8.4
58
  // if ( $user->has_enrolled_course( $course->get_id() )) {
59
  //
60
  // return;
61
  // }
62
 
63
- // If course is reached limitation.
64
- if ( ! $course->is_in_stock() ) {
65
- $message = apply_filters(
66
- 'learn-press/maximum-students-reach',
67
- __( 'This course is out of stock', 'learnpress' )
68
- );
69
- learn_press_display_message( $message );
70
 
71
 
72
- return;
73
- }
74
 
75
- // User can not purchase course
76
- if ( ! $user->can_purchase_course( $course->get_id() ) ) {
77
- return;
78
- }
79
 
80
 
81
- // If user has already purchased course but has not finished yet.
82
- /*if ( $user->has_purchased_course( $course->get_id() ) && 'finished' !== $user->get_course_status( $course->get_id() ) ) {
83
- return;
84
- }*/
85
 
86
 
87
- // If the order contains course is processing
88
- if ( ( $order = $user->get_course_order( $course->get_id() ) ) && $order->get_status() === 'processing' ) {
89
- $message = apply_filters(
90
- 'learn-press/order-processing-message',
91
- __( 'Your order is waiting for processing', 'learnpress' )
92
- );
93
- learn_press_display_message( $message );
94
 
95
- return;
96
- }
97
 
98
- $args_load_tmpl = array(
99
- 'template_name' => 'single-course/buttons/purchase.php',
100
- 'template_path' => '',
101
- 'default_path' => ''
102
- );
103
 
104
- $args_load_tmpl = apply_filters( 'learn-press/tmpl-button-purchase-course', $args_load_tmpl, $course );
105
 
106
- if ( $is_finish ) {
107
 
108
- //set for course finished
109
- if ( $course->is_allow_repurchase_course() ) {
110
- learn_press_get_template( $args_load_tmpl['template_name'], array( 'course' => $course ),
111
- $args_load_tmpl['template_path'], $args_load_tmpl['default_path'] );
112
- }
113
 
114
- } elseif ( ! $is_finish ) {
115
- // Set for unfinish course
116
 
117
- // case1: has purchase
118
 
119
- if( $purchased ){
120
 
121
- if ( $course->is_allow_repurchase_course() && $user->user_check_blocked_duration( $course->get_id() ) == true ) {
122
- learn_press_get_template( $args_load_tmpl['template_name'], array( 'course' => $course ),
123
- $args_load_tmpl['template_path'], $args_load_tmpl['default_path'] );
124
- }
 
 
125
 
126
- // case2: not purchase
127
- } else {
128
- learn_press_get_template( $args_load_tmpl['template_name'], array( 'course' => $course ),
129
- $args_load_tmpl['template_path'], $args_load_tmpl['default_path'] );
130
- }
131
 
132
- }
133
- }
134
  }
135
 
136
  if ( ! function_exists( 'learn_press_course_enroll_button' ) ) {
137
- /**
138
- * Enroll course button.
139
- */
140
- function learn_press_course_enroll_button() {
141
- $user = learn_press_get_user( get_current_user_id() );
142
- $course = LP_Global::course();
143
- $purchased = $user->has_purchased_course( $course->get_id() );
144
- $course_data = $user->get_course_data( $course->get_id() );
145
- $is_finish = $course_data->is_finished();
146
- $can_retake_course = $user->can_retake_course( $course->get_id() );
147
-
148
- if ( empty($user) ) {
149
- return;
150
- }
 
151
 
152
- // if can retake course
153
- if ( $can_retake_course > 0 && $purchased ){
154
- return;
155
- }
 
 
156
 
157
- if ( $course->get_external_link() ) {
158
- learn_press_show_log( 'Course has external link' );
159
 
160
- return;
161
- }
162
 
163
- // If course is not published
164
- if ( ! $course->is_publish() ) {
165
- learn_press_show_log( 'Course is not published' );
166
 
167
- return;
168
- }
169
 
170
- // Locked course for user
171
- if ( $user->is_locked_course( $course->get_id() ) ) {
172
- learn_press_show_log( 'Course is locked' );
173
 
174
- return;
175
- }
176
 
177
- // Course out of stock (full students)
178
- if ( ! $course->is_in_stock() ) {
179
- return;
180
- }
181
- // Course is not require enrolling
182
- if ( ! $course->is_required_enroll() ) {
183
- return;
184
- }
185
- // User can not enroll course
186
- if ( ! $user->can_enroll_course( $course->get_id() ) ) {
187
- return;
188
- }
189
 
190
- // For free course and user does not purchased
191
- if ( ! $is_finish ) {
192
 
193
- // set for course unfinished
194
- if ( $purchased && ! in_array( $course_data->get_status(), array( 'enrolled' ) ) ){
195
 
196
- learn_press_get_template( 'single-course/buttons/enroll.php' );
197
 
198
- } elseif ( !$purchased && ( ! in_array( $course_data->get_status(), array( 'enrolled' )) && $course->is_free() ) ) {
 
199
 
200
- learn_press_get_template( 'single-course/buttons/enroll.php' );
201
 
202
- }
203
- }
204
- }
205
 
206
  }
207
 
208
  if ( ! function_exists( 'learn_press_course_retake_button' ) ) {
209
 
210
- /**
211
- * Retake course button
212
- */
213
- function learn_press_course_retake_button() {
214
-
215
- if ( ! isset( $course ) ) {
216
- $course = learn_press_get_course();
217
- }
218
-
219
- if ( ! $course ) {
220
- return;
221
- }
222
-
223
- $retake_config = absint( get_post_meta( $course->get_id(), '_lp_retake_count', true ) );
224
-
225
- if ( $retake_config == 0 ) {
226
- return;
227
- }
228
-
229
- if ( ! learn_press_current_user_enrolled_course() && $course->get_external_link() ) {
230
- return;
231
- }
232
-
233
- if ( ! isset( $user ) ) {
234
- $user = learn_press_get_current_user();
235
- }
236
-
237
- if ( ! $user ) {
238
- return;
239
- }
240
-
241
- // Check user have turn retake course
242
- $can_retake_course = $user->can_retake_course( $course->get_id() );
243
- if ( ! $can_retake_course ) {
244
- return;
245
- }
246
- // Check user not enroll course
247
- if ( ! $user->has_enrolled_course( $course->get_id() ) ) {
248
- return;
249
- }
250
-
251
- // If user has not finished course
252
- if ( ! $user->has_finished_course( $course->get_id() ) ) {
253
- /**
254
- * Check course duration not expire
255
- *
256
- * @author hungkv
257
- * @since 3.2.7.7
258
- */
259
- if ( ! $course->is_block_item_content_duration() ||
260
- ( $course->is_block_item_content_duration() && $course->expires_to_milliseconds() > 0 ) ) {
261
- return;
262
- }
263
- }
264
-
265
- $args = array( 'course' => $course, 'user' => $user, 'count' => $can_retake_course );
266
-
267
- learn_press_get_template( 'single-course/buttons/retake.php', $args );
268
- }
269
  }
270
 
271
  if ( ! function_exists( 'learn_press_course_continue_button' ) ) {
272
 
273
- /**
274
- * Retake course button
275
- */
276
- function learn_press_course_continue_button() {
277
- $user = LP_Global::user();
278
- $course = LP_Global::course();
279
 
280
- if ( ! learn_press_current_user_enrolled_course() && $course->get_external_link() ) {
281
- return;
282
- }
283
 
284
- if ( ! $user ) {
285
- return;
286
- }
287
 
288
- if ( false === ( $course_data = $user->get_course_data( $course->get_id() ) ) ) {
289
- return;
290
- }
291
 
292
- if ( ! $course_data->is_available() ) {
293
- return;
294
- }
295
 
296
- if ( $course_data->get_status() !== 'enrolled' ) {
297
- return;
298
- }
299
 
300
- if ( ! $course_data->get_item_at( 0 ) ) {
301
- return;
302
- }
303
 
304
- /**
305
- * Check course duration expire
306
- *
307
- * @author hungkv
308
- * @since 3.2.7.7
309
- */
310
- if ( $course->is_block_item_content_duration() === true && $course->expires_to_milliseconds() <= 0 ) {
311
- return;
312
- }
313
 
314
- learn_press_get_template( 'single-course/buttons/continue.php' );
315
- }
316
  }
317
 
318
 
319
  if ( ! function_exists( 'learn_press_course_finish_button' ) ) {
320
 
321
- /**
322
- * Retake course button
323
- */
324
- function learn_press_course_finish_button() {
325
- $user = LP_Global::user();
326
- $course = LP_Global::course();
327
 
328
- if ( ! learn_press_current_user_enrolled_course() && $course->get_external_link() ) {
329
- return;
330
- }
331
 
332
- if ( ! $user ) {
333
- return;
334
- }
335
 
336
- if ( false === ( $course_data = $user->get_course_data( $course->get_id() ) ) ) {
337
- return;
338
- }
339
 
340
- if ( ! $user->can_finish_course( $course->get_id() ) ) {
341
- return;
342
- }
343
 
344
- learn_press_get_template( 'single-course/buttons/finish.php' );
345
- }
346
  }
347
 
348
  if ( ! function_exists( 'learn_press_course_external_button' ) ) {
349
 
350
- /**
351
- * Retake course button
352
- */
353
- function learn_press_course_external_button() {
354
- $course = LP_Global::course();
355
 
356
- if ( ! $link = $course->get_external_link() ) {
357
- return;
358
- }
359
 
360
- $user = learn_press_get_current_user();
361
 
362
- if ( ! $user->has_enrolled_course( $course->get_id() ) ) {
363
- // Remove all other buttons
364
- learn_press_remove_course_buttons();
365
- learn_press_get_template( 'single-course/buttons/external-link.php' );
366
- // Add back other buttons for other courses
367
- add_action( 'learn-press/after-course-buttons', 'learn_press_add_course_buttons' );
368
- }
369
- }
370
  }
371
 
372
  if ( ! function_exists( 'learn_press_add_course_buttons' ) ) {
373
- function learn_press_add_course_buttons() {
374
- add_action( 'learn-press/course-buttons', 'learn_press_course_purchase_button', 10 );
375
- add_action( 'learn-press/course-buttons', 'learn_press_course_enroll_button', 15 );
376
- add_action( 'learn-press/course-buttons', 'learn_press_course_retake_button', 20 );
377
- add_action( 'learn-press/course-buttons', 'learn_press_course_continue_button', 25 );
378
- add_action( 'learn-press/course-buttons', 'learn_press_course_finish_button', 30 );
379
- }
380
  }
381
 
382
  if ( ! function_exists( 'learn_press_remove_course_buttons' ) ) {
383
- function learn_press_remove_course_buttons() {
384
- remove_action( 'learn-press/course-buttons', 'learn_press_course_purchase_button', 10 );
385
- remove_action( 'learn-press/course-buttons', 'learn_press_course_enroll_button', 15 );
386
- remove_action( 'learn-press/course-buttons', 'learn_press_course_retake_button', 20 );
387
- remove_action( 'learn-press/course-buttons', 'learn_press_course_continue_button', 25 );
388
- remove_action( 'learn-press/course-buttons', 'learn_press_course_finish_button', 30 );
389
- }
390
  }
391
 
392
  if ( ! function_exists( 'learn_press_curriculum_section_title' ) ) {
393
 
394
- /**
395
- * Section title
396
- *
397
- * @param LP_Course_Section $section
398
- *
399
- * @hooked learn-press/section-summary
400
- */
401
- function learn_press_curriculum_section_title( $section ) {
402
- learn_press_get_template( 'single-course/section/title.php', array( 'section' => $section ) );
403
- }
404
 
405
  }
406
 
407
  if ( ! function_exists( 'learn_press_curriculum_section_content' ) ) {
408
 
409
- /**
410
- * Section content
411
- *
412
- * @param LP_Course_Section $section
413
- *
414
- * @hooked learn-press/section-summary
415
- */
416
- function learn_press_curriculum_section_content( $section ) {
417
- learn_press_get_template( 'single-course/section/content.php', array( 'section' => $section ) );
418
- }
419
 
420
  }
421
 
422
  if ( ! function_exists( 'learn_press_checkout_form_login' ) ) {
423
 
424
- /**
425
- * Output login form before checkout form if user is not logged in
426
- *
427
- * @hooked learn-press/before-checkout-form
428
- */
429
- function learn_press_checkout_form_login() {
430
 
431
- if ( ! LP()->checkout()->is_enable_login() ) {
432
- return;
433
- }
434
 
435
- learn_press_get_template( 'checkout/form-login.php' );
436
- }
437
 
438
  }
439
 
440
  if ( ! function_exists( 'learn_press_checkout_form_register' ) ) {
441
 
442
- /**
443
- * Output register form before checkout form if user is not logged in.
444
- *
445
- * @hooked learn-press/before-checkout-form
446
- */
447
- function learn_press_checkout_form_register() {
448
 
449
- if ( ! LP()->checkout()->is_enable_register() ) {
450
- return;
451
- }
452
 
453
- learn_press_get_template( 'checkout/form-register.php' );
454
- }
455
 
456
  }
457
 
458
  if ( ! function_exists( 'learn_press_order_review' ) ) {
459
- /**
460
- * Output order details
461
- *
462
- * @hooked learn-press/checkout-order-review
463
- */
464
- function learn_press_order_review() {
465
- $cart = learn_press_get_checkout_cart();
466
- learn_press_get_template( 'checkout/review-order.php', array( 'cart' => $cart ) );
467
- }
468
  }
469
 
470
  if ( ! function_exists( 'learn_press_order_payment' ) ) {
471
- /**
472
- * Output payment methods
473
- *
474
- * @hooked learn-press/checkout-order-review
475
- */
476
- function learn_press_order_payment() {
477
- $available_gateways = LP_Gateways::instance()->get_available_payment_gateways();
478
-
479
- learn_press_get_template( 'checkout/payment.php', array( 'available_gateways' => $available_gateways ) );
480
- }
481
  }
482
 
483
  if ( ! function_exists( 'learn_press_order_guest_email' ) ) {
484
- /**
485
- * Output payment methods
486
- *
487
- * @hooked learn-press/checkout-order-review
488
- */
489
- function learn_press_order_guest_email() {
490
- $checkout = LP()->checkout();
491
- $is_exists = $checkout->checkout_email_exists();
492
-
493
- $args = array(
494
- 'checkout' => $checkout,
495
- 'is_exists' => $is_exists
496
- );
497
-
498
- if ( $checkout->is_enable_guest_checkout() && ! is_user_logged_in() ) {
499
- learn_press_get_template( 'checkout/guest-email.php', $args );
500
- }
501
- }
502
  }
503
 
504
  if ( ! function_exists( 'learn_press_order_comment' ) ) {
505
- /**
506
- * Output order comment input
507
- *
508
- * @hooked learn-press/checkout-order-review
509
- */
510
- function learn_press_order_comment() {
511
- learn_press_get_template( 'checkout/order-comment.php' );
512
- }
513
  }
514
 
515
  if ( ! function_exists( 'learn_press_user_profile_header' ) ) {
516
- /**
517
- * Output order comment input
518
- *
519
- * @hooked learn-press/before-user-profile
520
- */
521
- function learn_press_user_profile_header( $user ) {
522
- $profile = LP_Global::profile();
523
-
524
- if ( $profile->get_user()->is_guest() ) {
525
- return;
526
- }
527
 
528
- learn_press_get_template( 'profile/profile-cover.php', array( 'user' => $user ) );
529
- }
530
  }
531
 
532
  if ( ! function_exists( 'learn_press_user_profile_content' ) ) {
533
- /**
534
- * Output order comment input
535
- *
536
- * @hooked learn-press/user-profile
537
- */
538
- function learn_press_user_profile_content( $user ) {
539
- $profile = LP_Global::profile();
540
-
541
- if ( $profile->get_user()->is_guest() ) {
542
- return;
543
- }
544
 
545
- learn_press_get_template( 'profile/content.php', array( 'user' => $user ) );
546
- }
547
  }
548
 
549
  if ( ! function_exists( 'learn_press_user_profile_footer' ) ) {
550
- /**
551
- * Output order comment input
552
- *
553
- * @hooked learn-press/after-user-profile
554
- */
555
- function learn_press_user_profile_footer( $user ) {
556
- //learn_press_get_template( 'profile/footer.php', array( 'user' => $user ) );
557
- }
558
  }
559
 
560
  if ( ! function_exists( 'learn_press_user_profile_tabs' ) ) {
561
- /**
562
- * Get tabs for user profile
563
- *
564
- * @param $user
565
- */
566
- function learn_press_user_profile_tabs( $user = null ) {
567
- $profile = LP_Global::profile();
568
-
569
- if ( $profile->get_user()->is_guest() ) {
570
- return;
571
- }
572
 
573
- learn_press_get_template( 'profile/tabs.php', array( 'user' => $user ) );
574
- }
575
  }
576
 
577
  if ( ! function_exists( 'learn_press_single_course_summary' ) ) {
578
- /**
579
- * Display content of single course summary
580
- */
581
- function learn_press_single_course_summary() {
582
- if ( learn_press_is_learning_course() ) {
583
- learn_press_get_template( 'single-course/content-learning.php' );
584
- } else {
585
- learn_press_get_template( 'single-course/content-landing.php' );
586
- }
587
- }
588
  }
589
 
590
  if ( ! function_exists( 'learn_press_course_price' ) ) {
591
- /**
592
- * Display course price.
593
- */
594
- function learn_press_course_price() {
595
- $user = LP_Global::user();
596
- $course = LP_Global::course();
597
-
598
- if ( ! $user ) {
599
- return;
600
- }
601
 
602
- if ( $user && $user->has_enrolled_course( $course->get_id() ) ) {
603
- return;
604
- }
605
 
606
- learn_press_get_template( 'single-course/price.php' );
607
- }
608
  }
609
 
610
  if ( ! function_exists( 'learn_press_course_meta_start_wrapper' ) ) {
611
- /**
612
- * Output the thumbnail of the course within loop
613
- */
614
- function learn_press_course_meta_start_wrapper() {
615
- learn_press_get_template( 'global/course-meta-start.php' );
616
- }
617
  }
618
 
619
  if ( ! function_exists( 'learn_press_course_meta_end_wrapper' ) ) {
620
- /**
621
- * Output the thumbnail of the course within loop
622
- */
623
- function learn_press_course_meta_end_wrapper() {
624
- learn_press_get_template( 'global/course-meta-end.php' );
625
- }
626
  }
627
 
628
  if ( ! function_exists( 'learn_press_course_students' ) ) {
629
- /**
630
- * Display course students
631
- */
632
- function learn_press_course_students() {
633
- learn_press_get_template( 'single-course/students.php' );
634
- }
635
  }
636
 
637
  if ( ! function_exists( 'learn_press_course_status' ) ) {
638
- /**
639
- * Display the title for single course
640
- */
641
- function learn_press_course_status() {
642
- learn_press_get_template( 'single-course/status.php' );
643
- }
644
  }
645
 
646
  if ( ! function_exists( 'learn_press_courses_loop_item_instructor' ) ) {
647
- /**
648
- * Output the instructor of the course within loop
649
- */
650
- function learn_press_courses_loop_item_instructor() {
651
- learn_press_get_template( 'loop/course/instructor.php' );
652
- }
653
  }
654
 
655
  if ( ! function_exists( 'learn_press_course_tabs' ) ) {
656
- /*
657
- * Output course tabs
658
- */
659
 
660
- function learn_press_course_tabs() {
661
- learn_press_get_template( 'single-course/tabs/tabs.php' );
662
- }
663
  }
664
 
665
  if ( ! function_exists( 'learn_press_course_item_content' ) ) {
666
- /**
667
- * Get course item content template.
668
- *
669
- * @since 3.0.0
670
- */
671
- function learn_press_course_item_content() {
672
- $item = LP_Global::course_item();
673
-
674
- /**
675
- * Fix only for WPBakery load style inline
676
- * custom CSS is provided, load inline style.
677
- *
678
- * @editor tuanta
679
- * @since 3.2.8.1
680
- */
681
- $shortcodes_custom_css = get_post_meta( $item->get_id(), '_wpb_shortcodes_custom_css', true );
682
-
683
- if ( ! empty( $shortcodes_custom_css ) ) {
684
- $shortcodes_custom_css = strip_tags( $shortcodes_custom_css );
685
- echo '<style type="text/css" data-type="vc_shortcodes-custom-css">';
686
- echo $shortcodes_custom_css;
687
- echo '</style>';
688
- }
689
- // End
690
-
691
- $item_template_name = learn_press_locate_template( 'single-course/content-item-' . $item->get_item_type() . '.php' );
692
-
693
- if ( file_exists( $item_template_name ) ) {
694
- learn_press_get_template( 'single-course/content-item-' . $item->get_item_type() . '.php' );
695
- }
696
- }
697
  }
698
 
699
  if ( ! function_exists( 'learn_press_get_course_tabs' ) ) {
700
- /**
701
- * Return an array of tabs display in single course page.
702
- *
703
- * @return array
704
- */
705
- function learn_press_get_course_tabs() {
706
-
707
- $course = learn_press_get_course();
708
- $user = learn_press_get_current_user();
709
-
710
- $defaults = array();
711
-
712
- // Description tab - shows product content
713
- if ( $course && $course->get_content() ) {
714
- $defaults['overview'] = array(
715
- 'title' => __( 'Overview', 'learnpress' ),
716
- 'priority' => 10,
717
- 'callback' => 'learn_press_course_overview_tab'
718
- );
719
- }
720
-
721
- // Curriculum
722
- $defaults['curriculum'] = array(
723
- 'title' => __( 'Curriculum', 'learnpress' ),
724
- 'priority' => 30,
725
- 'callback' => 'learn_press_course_curriculum_tab'
726
- );
727
-
728
- $defaults['instructor'] = array(
729
- 'title' => __( 'Instructor', 'learnpress' ),
730
- 'priority' => 40,
731
- 'callback' => 'learn_press_course_instructor_tab'
732
- );
733
-
734
-
735
- // Filter
736
- if ( $tabs = apply_filters( 'learn-press/course-tabs', $defaults ) ) {
737
- // Sort tabs by priority
738
- uasort( $tabs, 'learn_press_sort_list_by_priority_callback' );
739
- $request_tab = ! empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : '';
740
- $has_active = false;
741
- foreach ( $tabs as $k => $v ) {
742
- $v['id'] = ! empty( $v['id'] ) ? $v['id'] : 'tab-' . $k;
743
-
744
- if ( $request_tab === $v['id'] ) {
745
- $v['active'] = true;
746
- $has_active = $k;
747
- } elseif ( isset( $v['active'] ) && $v['active'] ) {
748
- $has_active = true;
749
- }
750
- $tabs[ $k ] = $v;
751
- }
752
-
753
- if ( ! $has_active ) {
754
- /**
755
- * Active Curriculum tab if user has enrolled course
756
- */
757
- if ( $course && $user->has_course_status( $course->get_id(), array(
758
- 'enrolled',
759
- 'finished'
760
- ) ) && ! empty( $tabs['curriculum'] )
761
- ) {
762
- $tabs['curriculum']['active'] = true;
763
- } elseif ( ! empty( $tabs['overview'] ) ) {
764
- $tabs['overview']['active'] = true;
765
- } else {
766
- $keys = array_keys( $tabs );
767
- $first_key = reset( $keys );
768
- $tabs[ $first_key ]['active'] = true;
769
- }
770
- }
771
- }
772
-
773
- return $tabs;
774
- }
775
 
776
  }
777
 
778
  if ( ! function_exists( 'learn_press_content_item_quiz_title' ) ) {
779
- function learn_press_content_item_quiz_title() {
780
- learn_press_get_template( 'content-quiz/title.php' );
781
- }
782
  }
783
 
784
  if ( ! function_exists( 'learn_press_content_item_quiz_intro' ) ) {
785
- function learn_press_content_item_quiz_intro() {
786
- $course = LP_Global::course();
787
- $user = LP_Global::user();
788
- $quiz = LP_Global::course_item_quiz();
789
 
790
- if ( $user->has_quiz_status( array( 'started', 'completed' ), $quiz->get_id(), $course->get_id() ) ) {
791
- return;
792
- }
793
 
794
- if ( ! $user ) {
795
- return;
796
- }
797
 
798
- if ( ! $user->has_quiz_status( 'started', $quiz->get_id(), $course->get_id() ) ) {
799
- //return;
800
- }
801
 
802
- if ( $quiz->get_viewing_question() ) {
803
- return;
804
- }
805
 
806
- learn_press_get_template( 'content-quiz/intro.php' );
807
- }
808
  }
809
 
810
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_content' ) ) {
811
 
812
- function learn_press_content_item_summary_quiz_content() {
813
- $item = LP_Global::course_item();
814
- $quiz = LP_Global::course_item_quiz();
815
- $user = LP_Global::user();
816
 
817
- if ( ! $user ) {
818
- return;
819
- }
820
 
821
- /**
822
- * Check if not start quiz (is showing question)
823
- * and not completed quiz
824
- *
825
- * @editor tungnx
826
- */
827
- if ( ! $item->get_viewing_question() && ! $user->has_completed_quiz( $quiz->get_id(), get_the_ID() ) ) {
828
- learn_press_get_template( 'content-quiz/description.php' );
829
- }
830
- }
831
  }
832
 
833
  if ( ! function_exists( 'learn_press_content_item_summary_question_title' ) ) {
834
 
835
- function learn_press_content_item_summary_question_title() {
836
- $quiz = LP_Global::course_item_quiz();
837
 
838
- if ( $question = $quiz->get_viewing_question() ) {
839
- $title = $question->get_title( 'display' );
840
- learn_press_get_template( 'content-question/title.php', array( 'title' => $title ) );
841
- }
842
- }
843
  }
844
 
845
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_progress' ) ) {
846
 
847
- function learn_press_content_item_summary_quiz_progress() {
848
- $course = LP_Global::course();
849
- $quiz = LP_Global::course_item_quiz();
850
- $user = LP_Global::user();
851
 
852
- if ( ! $user ) {
853
- return;
854
- }
855
 
856
- if ( $user->has_quiz_status( array( 'viewed', '' ), $quiz->get_id(), $course->get_id() ) ) {
857
- return;
858
- }
859
 
860
- if ( $question = $quiz->get_viewing_question() ) {
861
- learn_press_get_template( 'content-quiz/progress.php' );
862
- }
863
- }
864
  }
865
 
866
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_countdown' ) ) {
867
 
868
- function learn_press_content_item_summary_quiz_countdown() {
869
- $quiz = LP_Global::course_item_quiz();
870
 
871
- if ( $question = $quiz->get_viewing_question() ) {
872
- learn_press_get_template( 'content-quiz/countdown.php' );
873
- }
874
- }
875
  }
876
 
877
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_result' ) ) {
878
 
879
- function learn_press_content_item_summary_quiz_result() {
880
- $quiz = LP_Global::course_item_quiz();
881
- $user = LP_Global::user();
882
 
883
- if ( ! $user ) {
884
- return;
885
- }
886
 
887
- if ( ! $user->has_completed_quiz( $quiz->get_id(), get_the_ID() ) ) {
888
- return;
889
- }
890
 
891
- learn_press_get_template( 'content-quiz/result.php' );
892
- }
893
  }
894
 
895
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_question' ) ) {
896
 
897
- function learn_press_content_item_summary_quiz_question() {
898
- $quiz = LP_Global::course_item_quiz();
899
 
900
- if ( $question = $quiz->get_viewing_question() ) {
901
- learn_press_get_template( 'content-question/content.php', array( 'question' => $question ) );
902
- }
903
- }
904
  }
905
 
906
  if ( ! function_exists( 'learn_press_content_item_summary_question_content' ) ) {
907
 
908
- function learn_press_content_item_summary_question_content() {
909
- $quiz = LP_Global::course_item_quiz();
910
 
911
- if ( $question = $quiz->get_viewing_question() ) {
912
 
913
- $content = $question->get_content();
914
 
915
- if ( ! $content ) {
916
- return;
917
- }
918
 
919
- learn_press_get_template( 'content-question/description.php', array( 'content' => $content ) );
920
- }
921
- }
922
  }
923
 
924
  if ( ! function_exists( 'learn_press_content_item_summary_question' ) ) {
925
 
926
- /**
927
- * Render content if quiz question.
928
- */
929
- function learn_press_content_item_summary_question() {
930
- $quiz = LP_Global::course_item_quiz();
931
- if ( $question = $quiz->get_viewing_question() ) {
932
- $course = LP_Global::course();
933
- $user = LP_Global::user();
934
- $answered = false;
935
- $course_data = $user->get_course_data( $course->get_id() );
936
-
937
- if ( $user_quiz = $course_data->get_item_quiz( $quiz->get_id() ) ) {
938
- $answered = $user_quiz->get_question_answer( $question->get_id() );
939
- $question->show_correct_answers( $user->has_checked_answer( $question->get_id(), $quiz->get_id(),
940
- $course->get_id() ) ? 'yes' : false );
941
- $question->disable_answers( $user_quiz->get_status() == 'completed' ? 'yes' : false );
942
- $question->set_course( $course );
943
- }
944
-
945
- $question->render( $answered );
946
- }
947
- }
948
  }
949
 
950
  if ( ! function_exists( 'learn_press_content_item_summary_question_explanation' ) ) {
951
 
952
- /**
953
- * Render content if quiz question.
954
- */
955
- function learn_press_content_item_summary_question_explanation() {
956
- $quiz = LP_Global::course_item_quiz();
957
- if ( $question = $quiz->get_viewing_question() ) {
958
- $course = LP_Global::course();
959
- $user = LP_Global::user();
960
-
961
- if ( ! $user ) {
962
- return;
963
- }
964
-
965
- $course_data = $user->get_course_data( $course->get_id() );
966
- $user_quiz = $course_data->get_item_quiz( $quiz->get_id() );
967
- $explanation = $question->get_explanation();
968
-
969
- if ( ! $explanation ) {
970
- return;
971
- }
972
-
973
- /**
974
- * Show explanation of question if
975
- *
976
- * 1. Click check answer check button (Option 'Show Check Answer' value > 1)
977
- * OR
978
- * 2. Question answered is true
979
- * OR
980
- * 3. Option 'Review Questions' enable
981
- * AND
982
- * 3.1. Not retake OR Option 'Show Correct Answer' enable
983
- */
984
- if ( $user_quiz->has_checked_question( $question->get_id() ) ||
985
- $user_quiz->is_answered_true( $question->get_id() ) ||
986
- ( learn_press_is_review_questions() &&
987
- ( ! $user->can_retake_quiz( $quiz->get_id(), $course->get_id() ) ||
988
- $quiz->get_show_result() ) ) ) {
989
- learn_press_get_template( 'content-question/explanation.php', array( 'explanation' => $explanation ) );
990
- }
991
- }
992
- }
993
  }
994
 
995
  if ( ! function_exists( 'learn_press_content_item_summary_question_hint' ) ) {
996
 
997
- /**
998
- * Render content if quiz question.
999
- */
1000
- function learn_press_content_item_summary_question_hint() {
1001
- $quiz = LP_Global::course_item_quiz();
1002
- if ( $question = $quiz->get_viewing_question() ) {
1003
- $course = LP_Global::course();
1004
- $user = LP_Global::user();
1005
 
1006
- if ( ! $user ) {
1007
- return;
1008
- }
1009
 
1010
- $course_data = $user->get_course_data( $course->get_id() );
1011
- $user_quiz = $course_data->get_item_quiz( $quiz->get_id() );
1012
- $hint = $question->get_hint();
1013
 
1014
- if ( ! $hint || ! $user_quiz->has_hinted_question( $question->get_id() ) || $user_quiz->has_checked_question( $question->get_id() ) ) {
1015
- return;
1016
- }
1017
 
1018
- learn_press_get_template( 'content-question/hint.php', array( 'hint' => $hint ) );
1019
- }
1020
 
1021
- }
1022
  }
1023
 
1024
  if ( ! function_exists( 'learn_press_content_item_summary_question_numbers' ) ) {
1025
 
1026
- function learn_press_content_item_summary_question_numbers() {
1027
- $course = LP_Global::course();
1028
- $user = LP_Global::user();
1029
- $quiz = LP_Global::course_item_quiz();
1030
 
1031
- if ( ! $quiz->get_show_hide_question() ) {
1032
- return;
1033
- }
1034
 
1035
- if ( ! $user ) {
1036
- return;
1037
- }
1038
 
1039
- if ( ! $user->has_quiz_status( array( 'started', 'completed' ), $quiz->get_id(), $course->get_id() ) ) {
1040
- return;
1041
- }
1042
 
1043
- if ( ! $quiz->get_viewing_question() ) {
1044
- return;
1045
- }
1046
 
1047
- $questions = $quiz->get_questions();
1048
 
1049
- if ( ! $questions ) {
1050
- return;
1051
- }
1052
 
1053
- $questions = array_values( $questions );
1054
 
1055
- if ( count( $questions ) < 2 ) {
1056
- return;
1057
- }
1058
 
1059
- $args = array(
1060
- 'quiz' => $quiz,
1061
- 'questions' => $questions
1062
- );
1063
 
1064
- learn_press_get_template( 'content-quiz/question-numbers.php', $args );
1065
- }
1066
  }
1067
 
1068
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_buttons' ) ) {
1069
 
1070
- function learn_press_content_item_summary_quiz_buttons() {
1071
- learn_press_get_template( 'content-quiz/buttons.php' );
1072
- }
1073
  }
1074
 
1075
 
1076
  if ( ! function_exists( 'learn_press_quiz_nav_buttons' ) ) {
1077
 
1078
- function learn_press_quiz_nav_buttons() {
1079
- $course = LP_Global::course();
1080
- $user = LP_Global::user();
1081
- $quiz = LP_Global::course_item_quiz();
1082
 
1083
- if ( ! $user ) {
1084
- return;
1085
- }
1086
 
1087
- if ( ! $user->has_quiz_status( array( 'started', 'completed' ), $quiz->get_id(), $course->get_id() ) ) {
1088
- return;
1089
- }
1090
 
1091
- if ( ! $quiz->get_viewing_question() ) {
1092
- return;
1093
- }
1094
 
1095
- learn_press_get_template( 'content-quiz/buttons/nav.php' );
1096
- }
1097
  }
1098
 
1099
  if ( ! function_exists( 'learn_press_quiz_start_button' ) ) {
1100
 
1101
- function learn_press_quiz_start_button() {
1102
- $course = LP_Global::course();
1103
- $user = LP_Global::user();
1104
- $quiz = LP_Global::course_item_quiz();
1105
 
1106
- if ( ! $user ) {
1107
- return;
1108
- }
1109
 
1110
- if ( $user->has_course_status( $course->get_id(), array( 'finished' ) ) || $user->has_quiz_status( array(
1111
- 'started',
1112
- 'completed'
1113
- ), $quiz->get_id(), $course->get_id() )
1114
- ) {
1115
- return;
1116
- }
1117
 
1118
- if ( ! $user->has_course_status( $course->get_id(),
1119
- array( 'enrolled' ) ) && $course->is_required_enroll() && ! $quiz->get_preview() ) {
1120
- return;
1121
- }
1122
 
1123
- // Check quiz has any question
1124
- if ( $quiz->count_questions() == 0 ) {
1125
- return;
1126
- }
1127
 
1128
- $args = array(
1129
- 'course' => $course,
1130
- 'quiz' => $quiz,
1131
- );
1132
 
1133
- learn_press_get_template( 'content-quiz/buttons/start.php', $args );
1134
- }
1135
  }
1136
 
1137
  if ( ! function_exists( 'learn_press_quiz_continue_button' ) ) {
1138
 
1139
- function learn_press_quiz_continue_button() {
1140
- $course = LP_Global::course();
1141
- $user = LP_Global::user();
1142
- $quiz = LP_Global::course_item_quiz();
1143
 
1144
- if ( ! $user ) {
1145
- return;
1146
- }
1147
 
1148
- if ( ! $user->has_quiz_status( 'started', $quiz->get_id(), $course->get_id() ) ) {
1149
- return;
1150
- }
1151
 
1152
- if ( $quiz->get_viewing_question() ) {
1153
- return;
1154
- }
1155
 
1156
- learn_press_get_template( 'content-quiz/buttons/continue.php' );
1157
- }
1158
  }
1159
 
1160
  if ( ! function_exists( 'learn_press_quiz_complete_button' ) ) {
1161
 
1162
- function learn_press_quiz_complete_button() {
1163
- $course = LP_Global::course();
1164
- $user = LP_Global::user();
1165
- $quiz = LP_Global::course_item_quiz();
1166
 
1167
- if ( ! $user ) {
1168
- return;
1169
- }
1170
 
1171
- if ( $user->has_course_status( $course->get_id(), array( 'finished' ) ) || ! $user->has_quiz_status( 'started',
1172
- $quiz->get_id(), $course->get_id() ) ) {
1173
- return;
1174
- }
1175
- learn_press_get_template( 'content-quiz/buttons/complete.php' );
1176
- }
1177
  }
1178
 
1179
  if ( ! function_exists( 'learn_press_quiz_redo_button' ) ) {
1180
 
1181
- function learn_press_quiz_redo_button() {
1182
- $course = LP_Global::course();
1183
- $user = LP_Global::user();
1184
- $quiz = LP_Global::course_item_quiz();
1185
 
1186
- if ( ! $user ) {
1187
- return;
1188
- }
1189
 
1190
- if ( ! $user->has_quiz_status( 'completed', $quiz->get_id(), $course->get_id() ) ) {
1191
- return;
1192
- }
1193
 
1194
- if ( $user->has_course_status( $course->get_id(),
1195
- array( 'finished' ) ) || ! $user->can_retake_quiz( $quiz->get_id(), $course->get_id() ) ) {
1196
- return;
1197
- }
1198
 
1199
- learn_press_get_template( 'content-quiz/buttons/redo.php' );
1200
- }
1201
  }
1202
 
1203
  if ( ! function_exists( 'learn_press_quiz_result_button' ) ) {
1204
 
1205
- function learn_press_quiz_result_button() {
1206
- $course = LP_Global::course();
1207
- $user = LP_Global::user();
1208
- $quiz = LP_Global::course_item_quiz();
1209
 
1210
- if ( ! $user ) {
1211
- return;
1212
- }
1213
 
1214
- if ( ! $user->has_quiz_status( 'completed', $quiz->get_id(), $course->get_id() ) ) {
1215
- return;
1216
- }
1217
 
1218
- if ( LP_Global::quiz_question() ) {
1219
- return;
1220
- }
1221
 
1222
- if ( ! $quiz->get_review_questions() ) {
1223
- return;
1224
- }
1225
 
1226
- learn_press_get_template( 'content-quiz/buttons/review.php' );
1227
- }
1228
  }
1229
 
1230
  if ( ! function_exists( 'learn_press_quiz_summary_button' ) ) {
1231
 
1232
- function learn_press_quiz_summary_button() {
1233
- $course = LP_Global::course();
1234
- $user = LP_Global::user();
1235
- $quiz = LP_Global::course_item_quiz();
1236
 
1237
- if ( ! $user ) {
1238
- return;
1239
- }
1240
 
1241
- if ( ! $user->has_quiz_status( 'completed', $quiz->get_id(), $course->get_id() ) ) {
1242
- return;
1243
- }
1244
 
1245
- if ( ! learn_press_is_review_questions() ) {
1246
- return;
1247
- }
1248
 
1249
- learn_press_get_template( 'content-quiz/buttons/summary.php' );
1250
- }
1251
  }
1252
 
1253
  if ( ! function_exists( 'learn_press_quiz_check_button' ) ) {
1254
 
1255
- function learn_press_quiz_check_button() {
1256
- $course = LP_Global::course();
1257
- $user = LP_Global::user();
1258
- $quiz = LP_Global::course_item_quiz();
1259
 
1260
- if ( ! $user ) {
1261
- return;
1262
- }
1263
 
1264
- if ( ! $quiz->is_viewing_question() ) {
1265
- return;
1266
- }
1267
 
1268
- if ( ! $user->can_check_answer( $quiz->get_id(), $course->get_id() ) ) {
1269
- return;
1270
- }
1271
 
1272
- if ( $user->has_course_status( $course->get_id(), array( 'finished' ) ) || ! $user->has_quiz_status( 'started',
1273
- $quiz->get_id(), $course->get_id() ) ) {
1274
- return;
1275
- }
1276
 
1277
- learn_press_get_template( 'content-quiz/buttons/check.php' );
1278
- }
1279
  }
1280
 
1281
  if ( ! function_exists( 'learn_press_quiz_hint_button' ) ) {
1282
 
1283
- function learn_press_quiz_hint_button() {
1284
- $course = LP_Global::course();
1285
- $user = LP_Global::user();
1286
- $quiz = LP_Global::course_item_quiz();
1287
- $question = LP_Global::quiz_question();
1288
 
1289
- if ( ! $quiz ) {
1290
- return;
1291
- }
1292
 
1293
- if ( ! $quiz->is_viewing_question() ) {
1294
- return;
1295
- }
1296
 
1297
- $hint = $question->get_hint();
1298
- if ( ! $hint ) {
1299
- return;
1300
- }
1301
 
1302
- if ( ! $user ) {
1303
- return;
1304
- }
1305
 
1306
- if ( ! $user->can_hint_answer( $quiz->get_id(), $course->get_id() ) ) {
1307
- return;
1308
- }
1309
 
1310
- if ( ! $user->has_quiz_status( 'started', $quiz->get_id(), $course->get_id() ) ) {
1311
- return;
1312
- }
1313
 
1314
- $quiz_item = $user->get_quiz_data( $quiz->get_id(), $course->get_id() );
1315
 
1316
- if ( $quiz_item && ( $quiz_item->has_checked_question( $question->get_id() ) || $quiz_item->is_answered( $question->get_id() ) ) ) {
1317
- return;
1318
- }
1319
 
1320
- learn_press_get_template( 'content-quiz/buttons/hint.php', array( 'hint' => $hint ) );
1321
- }
1322
  }
1323
 
1324
  if ( ! function_exists( 'learn_press_content_item_body_class' ) ) {
1325
 
1326
- /**
1327
- * Add custom classes into body tag in case user is viewing an item.
1328
- *
1329
- * @param array $classes
1330
- *
1331
- * @return array
1332
- */
1333
- function learn_press_content_item_body_class( $classes ) {
1334
- global $lp_course_item;
1335
-
1336
- if ( $lp_course_item ) {
1337
- $classes[] = 'course-item-popup';
1338
- $classes[] = 'viewing-course-item';
1339
- $classes[] = 'viewing-course-item-' . $lp_course_item->get_id();
1340
- $classes[] = 'course-item-' . $lp_course_item->get_item_type();
1341
- }
1342
 
1343
- return $classes;
1344
- }
1345
 
1346
  }
1347
 
1348
  if ( ! function_exists( 'learn_press_content_item_edit_links' ) ) {
1349
- /**
1350
- * Add edit links for course item question to admin bar.
1351
- */
1352
- function learn_press_content_item_edit_links() {
1353
- global $wp_admin_bar, $post, $lp_course_item, $lp_quiz_question;
1354
-
1355
- if ( ! ( ! is_admin() && is_user_logged_in() ) ) {
1356
- return;
1357
- }
1358
-
1359
- if ( is_learnpress() && $post && $post->ID === 0 ) {
1360
- // This also remove the 'Edit Category' link when viewing course category!!!
1361
- //$wp_admin_bar->remove_node( 'edit' );
1362
- }
1363
-
1364
- if ( ! is_user_member_of_blog() && ! is_super_admin() ) {
1365
- //return;
1366
- }
1367
-
1368
- /**
1369
- * Edit link for lesson/quiz or any other course's item.
1370
- */
1371
- if ( $lp_course_item && ( $post_type_object = get_post_type_object( $lp_course_item->get_item_type() ) )
1372
- && current_user_can( 'edit_post', $lp_course_item->get_id() )
1373
- && $post_type_object->show_in_admin_bar
1374
- && $edit_post_link = get_edit_post_link( $lp_course_item->get_id() )
1375
- ) {
1376
- $type = get_post_type( $lp_course_item->get_id() );
1377
-
1378
- if ( apply_filters( 'learn-press/edit-admin-bar-button', true, $lp_course_item ) ) {
1379
- $wp_admin_bar->add_menu( array(
1380
- 'id' => 'edit-' . $type,
1381
- 'title' => $post_type_object->labels->edit_item,
1382
- 'href' => $edit_post_link
1383
- ) );
1384
- }
1385
- }
1386
-
1387
- /**
1388
- * Edit link for quiz's question.
1389
- */
1390
- if ( $lp_quiz_question ) {
1391
- if ( ( $post_type_object = get_post_type_object( $lp_quiz_question->get_item_type() ) )
1392
- && current_user_can( 'edit_post', $lp_quiz_question->get_id() )
1393
- && $post_type_object->show_in_admin_bar
1394
- && $edit_post_link = get_edit_post_link( $lp_quiz_question->get_id() )
1395
- ) {
1396
- $type = get_post_type( $lp_quiz_question->get_id() );
1397
- $wp_admin_bar->add_menu( array(
1398
- 'id' => 'edit-' . $type,
1399
- 'title' => $post_type_object->labels->edit_item,
1400
- 'href' => $edit_post_link
1401
- ) );
1402
- }
1403
- }
1404
-
1405
-
1406
- }
1407
  }
1408
 
1409
  add_filter( 'admin_bar_menu', 'learn_press_content_item_edit_links', 90 );
1410
 
1411
  if ( ! function_exists( 'learn_press_control_displaying_course_item' ) ) {
1412
- /**
1413
- * If user is viewing content of an item instead of the whole course
1414
- * then remove all content of course and replace with content of
1415
- * that item.
1416
- */
1417
- function learn_press_control_displaying_course_item() {
1418
- global $wp_filter;
1419
-
1420
- // Remove all hooks added to content of whole course.
1421
- $hooks = array( 'content-learning-summary', 'content-landing-summary' );
1422
-
1423
- if ( empty( $wp_filter['learn-press-backup-hooks'] ) ) {
1424
- $wp_filter['learn-press-backup-hooks'] = array();
1425
- }
1426
 
1427
- foreach ( $hooks as $hook ) {
1428
- if ( isset( $wp_filter["learn-press/{$hook}"] ) ) {
1429
- // Move to backup to restore it if needed.
1430
- $wp_filter['learn-press-backup-hooks']["learn-press/{$hook}"] = $wp_filter["learn-press/{$hook}"];
1431
 
1432
- // Remove the origin hook
1433
- unset( $wp_filter["learn-press/{$hook}"] );
1434
- }
1435
- }
1436
 
1437
- // Add more assets into page that displaying content of an item
1438
- add_filter( 'body_class', 'learn_press_content_item_body_class', 10 );
1439
- }
1440
  }
1441
 
1442
  if ( ! function_exists( 'learn_press_profile_tab_orders' ) ) {
1443
- function learn_press_profile_tab_orders() {
1444
- learn_press_get_template( 'profile/tabs/orders/list.php' );
1445
- }
1446
  }
1447
 
1448
  if ( ! function_exists( 'learn_press_profile_recover_order_form' ) ) {
1449
- function learn_press_profile_recover_order_form( $order ) {
1450
- learn_press_get_template( 'profile/tabs/orders/recover-order.php', array( 'order' => $order ) );
1451
- }
1452
  }
1453
 
1454
  if ( ! function_exists( 'learn_press_wrapper_start' ) ) {
1455
- /**
1456
- * Wrapper Start
1457
- */
1458
- function learn_press_wrapper_start() {
1459
- learn_press_get_template( 'global/before-main-content.php' );
1460
- }
1461
  }
1462
 
1463
  if ( ! function_exists( 'learn_press_wrapper_end' ) ) {
1464
- /**
1465
- * wrapper end
1466
- */
1467
- function learn_press_wrapper_end() {
1468
- learn_press_get_template( 'global/after-main-content.php' );
1469
- }
1470
  }
1471
 
1472
  if ( ! function_exists( 'learn_press_single_course_args' ) ) {
1473
- function learn_press_single_course_args() {
1474
- static $output = array();
1475
- if ( ! $output ) {
1476
- if ( ( $course = LP_Global::course() ) && $course->get_id() ) {
1477
- $user = LP_Global::user();
1478
-
1479
- if ( ! $user ) {
1480
- return;
1481
- }
1482
-
1483
- if ( $course_data = $user->get_course_data( $course->get_id() ) ) {
1484
- $output = $course_data->get_js_args();
1485
- }
1486
- }
1487
- }
1488
 
1489
- return $output;
1490
- }
1491
  }
1492
 
1493
  if ( ! function_exists( 'learn_press_single_quiz_args' ) ) {
1494
- function learn_press_single_quiz_args() {
1495
- $args = array();
1496
-
1497
- if ( $quiz = LP_Global::course_item_quiz() ) {
1498
- $user = LP_Global::user();
1499
-
1500
- if ( ! $user ) {
1501
- return;
1502
- }
1503
-
1504
- if ( $user_quiz = $user->get_item_data( $quiz->get_id(), LP_Global::course( true ) ) ) {
1505
- $remaining_time = $user_quiz->get_time_remaining();
1506
- } else {
1507
- $remaining_time = false;
1508
- }
1509
- $args = array(
1510
- 'id' => $quiz->get_id(),
1511
- 'totalTime' => $quiz->get_duration()->get(),
1512
- 'remainingTime' => $remaining_time ? $remaining_time->get() : $quiz->get_duration()->get(),
1513
- 'status' => $user->get_item_status( $quiz->get_id(), LP_Global::course( true ) ),
1514
- 'daysLeft' => _x( 'days left', 'quiz_duration', 'learnpress' ),
1515
- 'dayLeft' => _x( 'day left', 'quiz_duration', 'learnpress' )
1516
- );
1517
- }
1518
-
1519
- return $args;
1520
- }
1521
  }
1522
 
1523
  if ( ! function_exists( 'learn_press_courses_loop_item_thumbnail' ) ) {
1524
- /**
1525
- * Output the thumbnail of the course within loop
1526
- */
1527
- function learn_press_courses_loop_item_thumbnail() {
1528
- learn_press_get_template( 'loop/course/thumbnail.php' );
1529
- }
1530
  }
1531
 
1532
  if ( ! function_exists( 'learn_press_courses_loop_item_title' ) ) {
1533
- /**
1534
- * Output the title of the course within loop
1535
- */
1536
- function learn_press_courses_loop_item_title() {
1537
- learn_press_get_template( 'loop/course/title.php' );
1538
- }
1539
  }
1540
 
1541
  if ( ! function_exists( 'learn_press_courses_loop_item_begin_meta' ) ) {
1542
- /**
1543
- * Output the excerpt of the course within loop
1544
- */
1545
- function learn_press_courses_loop_item_begin_meta() {
1546
- learn_press_get_template( 'loop/course/meta-begin.php' );
1547
- }
1548
  }
1549
 
1550
  if ( ! function_exists( 'learn_press_courses_loop_item_end_meta' ) ) {
1551
- /**
1552
- * Output the excerpt of the course within loop
1553
- */
1554
- function learn_press_courses_loop_item_end_meta() {
1555
- learn_press_get_template( 'loop/course/meta-end.php' );
1556
- }
1557
  }
1558
 
1559
  if ( ! function_exists( 'learn_press_courses_loop_item_introduce' ) ) {
1560
- /**
1561
- * Output the excerpt of the course within loop
1562
- */
1563
- function learn_press_courses_loop_item_introduce() {
1564
- learn_press_get_template( 'loop/course/introduce.php' );
1565
- }
1566
  }
1567
 
1568
  if ( ! function_exists( 'learn_press_courses_loop_item_price' ) ) {
1569
- /**
1570
- * Output the price of the course within loop
1571
- */
1572
- function learn_press_courses_loop_item_price() {
1573
- learn_press_get_template( 'loop/course/price.php' );
1574
- }
1575
  }
1576
 
1577
  if ( ! function_exists( 'learn_press_begin_courses_loop' ) ) {
1578
- /**
1579
- * Output the price of the course within loop
1580
- */
1581
- function learn_press_begin_courses_loop() {
1582
- learn_press_get_template( 'loop/course/loop-begin.php' );
1583
- }
1584
  }
1585
 
1586
  if ( ! function_exists( 'learn_press_end_courses_loop' ) ) {
1587
- /**
1588
- * Output the price of the course within loop
1589
- */
1590
- function learn_press_end_courses_loop() {
1591
- learn_press_get_template( 'loop/course/loop-end.php' );
1592
- }
1593
  }
1594
 
1595
  if ( ! function_exists( 'learn_press_courses_loop_item_students' ) ) {
1596
- /**
1597
- * Output the students of the course within loop
1598
- */
1599
- function learn_press_courses_loop_item_students() {
1600
- learn_press_get_template( 'loop/course/students.php' );
1601
- }
1602
  }
1603
 
1604
  if ( ! function_exists( 'learn_press_courses_pagination' ) ) {
1605
- /**
1606
- * Output the pagination of archive courses
1607
- */
1608
- function learn_press_courses_pagination() {
1609
- learn_press_get_template( 'loop/course/pagination.php' );
1610
- }
1611
  }
1612
 
1613
  if ( ! function_exists( 'learn_press_breadcrumb' ) ) {
1614
- /**
1615
- * Output the breadcrumb of archive courses
1616
- *
1617
- * @param array
1618
- */
1619
- function learn_press_breadcrumb( $args = array() ) {
1620
- $args = wp_parse_args( $args, apply_filters( 'learn_press_breadcrumb_defaults', array(
1621
- 'delimiter' => '&nbsp;&#47;&nbsp;',
1622
- 'wrap_before' => '<nav class="learn-press-breadcrumb" ' . ( is_single() ? 'itemprop="breadcrumb"' : '' ) . '>',
1623
- 'wrap_after' => '</nav>',
1624
- 'before' => '',
1625
- 'after' => '',
1626
- 'home' => _x( 'Home', 'breadcrumb', 'learnpress' )
1627
- ) ) );
1628
-
1629
- $breadcrumbs = new LP_Breadcrumb();
1630
-
1631
- if ( $args['home'] ) {
1632
- $breadcrumbs->add_crumb( $args['home'], apply_filters( 'learn_press_breadcrumb_home_url', home_url() ) );
1633
- }
1634
 
1635
- $args['breadcrumb'] = $breadcrumbs->generate();
1636
 
1637
- learn_press_get_template( 'global/breadcrumb.php', $args );
1638
- }
1639
  }
1640
 
1641
  if ( ! function_exists( 'learn_press_search_form' ) ) {
1642
- /**
1643
- * Output the breadcrumb of archive courses
1644
- *
1645
- * @param array
1646
- */
1647
- function learn_press_search_form() {
1648
- if ( ! empty( $_REQUEST['s'] ) && ! empty( $_REQUEST['ref'] ) && 'course' == $_REQUEST['ref'] ) {
1649
- $s = stripslashes_deep( $_REQUEST['s'] );
1650
- } else {
1651
- $s = '';
1652
- }
1653
-
1654
- learn_press_get_template( 'search-form.php', array( 's' => $s ) );
1655
- }
1656
  }
1657
 
1658
  if ( ! function_exists( 'learn_press_output_single_course_learning_summary' ) ) {
1659
- /**
1660
- * Output the content of learning course content
1661
- */
1662
- function learn_press_output_single_course_learning_summary() {
1663
- learn_press_get_template( 'single-course/content-learning.php' );
1664
- }
1665
  }
1666
 
1667
  if ( ! function_exists( 'learn_press_output_single_course_landing_summary' ) ) {
1668
- /**
1669
- * Output the content of landing course content
1670
- */
1671
- function learn_press_output_single_course_landing_summary() {
1672
- learn_press_get_template( 'single-course/content-landing.php' );
1673
- }
1674
  }
1675
 
1676
  if ( ! function_exists( 'learn_press_course_title' ) ) {
1677
- /**
1678
- * Display the title for single course
1679
- */
1680
- function learn_press_course_title() {
1681
- learn_press_get_template( 'single-course/title.php' );
1682
- }
1683
  }
1684
 
1685
  if ( ! function_exists( 'learn_press_course_progress' ) ) {
1686
- /**
1687
- * Display course curriculum
1688
- */
1689
- function learn_press_course_progress() {
1690
- learn_press_get_template( 'single-course/progress.php' );
1691
- }
1692
  }
1693
 
1694
  if ( ! function_exists( 'learn_press_course_finish_button' ) ) {
1695
- /**
1696
- * Display course curriculum
1697
- */
1698
- function learn_press_course_finish_button() {
1699
- learn_press_get_template( 'single-course/buttons/finish.php' );
1700
- }
1701
  }
1702
 
1703
  if ( ! function_exists( 'learn_press_course_curriculum' ) ) {
1704
- /**
1705
- * Display course curriculum
1706
- */
1707
- function learn_press_course_curriculum() {
1708
- ///learn_press_get_template( 'single-course/curriculum.php' );
1709
- }
1710
  }
1711
 
1712
  if ( ! function_exists( 'learn_press_course_categories' ) ) {
1713
- /**
1714
- * Display course categories
1715
- */
1716
- function learn_press_course_categories() {
1717
- learn_press_get_template( 'single-course/categories.php' );
1718
- }
1719
  }
1720
 
1721
  if ( ! function_exists( 'learn_press_course_tags' ) ) {
1722
- /**
1723
- * Display course tags
1724
- */
1725
- function learn_press_course_tags() {
1726
- learn_press_get_template( 'single-course/tags.php' );
1727
- }
1728
  }
1729
 
1730
  if ( ! function_exists( 'learn_press_course_instructor' ) ) {
1731
- /**
1732
- * Display course instructor
1733
- */
1734
- function learn_press_course_instructor() {
1735
- learn_press_get_template( 'single-course/instructor.php' );
1736
- }
1737
  }
1738
 
1739
  if ( ! function_exists( 'learn_press_content_single_item' ) ) {
1740
- function learn_press_content_single_item() {
1741
 
1742
- if ( $course_item = LP_Global::course_item() ) {
1743
- // remove course comment form on singler item
1744
- add_filter( 'comments_open', 'learn_press_course_comments_open', 10, 2 );
1745
- learn_press_get_template( 'content-single-item.php' );
1746
- }
1747
- }
1748
  }
1749
 
1750
  if ( ! function_exists( 'learn_press_content_single_course' ) ) {
1751
- function learn_press_content_single_course() {
1752
 
1753
- if ( ! $course_item = LP_Global::course_item() ) {
1754
- learn_press_get_template( 'content-single-course.php' );
1755
- }
1756
- }
1757
  }
1758
 
1759
  if ( ! function_exists( 'learn_press_course_buttons' ) ) {
1760
- /**
1761
- * Display course retake button
1762
- */
1763
- function learn_press_course_buttons() {
1764
- learn_press_get_template( 'single-course/buttons.php' );
1765
- }
1766
  }
1767
 
1768
  if ( ! function_exists( 'learn_press_course_remaining_time' ) ) {
1769
 
1770
- function learn_press_course_remaining_time() {
1771
 
1772
- if ( ! $course = LP_Global::course() ) {
1773
- return;
1774
- }
1775
 
1776
- if ( ! $user = LP_Global::user() ) {
1777
- return;
1778
- }
1779
 
1780
- if ( false === ( $remain = $user->get_course_remaining_time( $course->get_id() ) ) ) {
1781
- return;
1782
- }
1783
 
1784
- if ( $user->has_finished_course( $course->get_id() ) ) {
1785
- return;
1786
- }
1787
 
1788
- learn_press_get_template( 'single-course/remaining-time.php', array( 'remaining_time' => $remain ) );
1789
- }
1790
  }
1791
 
1792
  if ( ! function_exists( 'learn_press_course_thumbnail' ) ) {
1793
- /**
1794
- * Display Course Thumbnail
1795
- */
1796
- function learn_press_course_thumbnail() {
1797
- learn_press_get_template( 'single-course/thumbnail.php' );
1798
- }
1799
  }
1800
 
1801
  if ( ! function_exists( 'learn_press_single_course_description' ) ) {
1802
- /**
1803
- * Display course description
1804
- */
1805
- function learn_press_single_course_description() {
1806
- learn_press_get_template( 'single-course/description.php' );
1807
- }
1808
  }
1809
 
1810
  if ( ! function_exists( 'learn_press_single_course_lesson_content' ) ) {
1811
- /**
1812
- * Display lesson content
1813
- */
1814
- function learn_press_single_course_content_lesson() {
1815
- //learn_press_get_template( 'single-course/content-lesson.php' );
1816
- }
1817
  }
1818
 
1819
  if ( ! function_exists( 'learn_press_single_course_content_item' ) ) {
1820
- /**
1821
- * Display lesson content
1822
- */
1823
- function learn_press_single_course_content_item() {
1824
- learn_press_get_template( 'single-course/content-item.php' );
1825
- }
1826
  }
1827
 
1828
  if ( ! function_exists( 'learn_press_section_item_meta' ) ) {
1829
- /**
1830
- * @param object
1831
- * @param array
1832
- * @param LP_Course
1833
- */
1834
- function learn_press_section_item_meta( $item, $section ) {
1835
- learn_press_get_template( 'single-course/section/item-meta.php', array(
1836
- 'item' => $item,
1837
- 'section' => $section
1838
- ) );
1839
- }
1840
  }
1841
 
1842
  if ( ! function_exists( 'learn_press_order_details_table' ) ) {
1843
 
1844
- /**
1845
- * Displays order details in a table.
1846
- *
1847
- * @param mixed $order_id
1848
- *
1849
- * @subpackage Orders
1850
- */
1851
- function learn_press_order_details_table( $order_id ) {
1852
- if ( ! $order_id ) {
1853
- return;
1854
- }
1855
 
1856
- learn_press_get_template( 'order/order-details.php', array(
1857
- 'order' => learn_press_get_order( $order_id )
1858
- ) );
1859
- }
1860
  }
1861
 
1862
  if ( ! function_exists( 'learn_press_checkout_user_form' ) ) {
1863
- /**
1864
- * Output login/register form before order review if user is not logged in
1865
- */
1866
- function learn_press_checkout_user_form() {
1867
- //learn_press_get_template( 'checkout/user-form.php' );
1868
- }
1869
  }
1870
 
1871
  if ( ! function_exists( 'learn_press_checkout_user_form_login' ) ) {
1872
- /**
1873
- * Output login form before order review if user is not logged in
1874
- */
1875
- function learn_press_checkout_user_form_login() {
1876
- learn_press_get_template( 'checkout/form-login.php' );
1877
- }
1878
  }
1879
 
1880
  if ( ! function_exists( 'learn_press_checkout_user_form_register' ) ) {
1881
- /**
1882
- * Output register form before order review if user is not logged in
1883
- */
1884
- function learn_press_checkout_user_form_register() {
1885
- learn_press_get_template( 'checkout/form-register.php' );
1886
- }
1887
  }
1888
 
1889
  if ( ! function_exists( 'learn_press_checkout_user_logged_in' ) ) {
1890
- /**
1891
- * Output message before order review if user is logged in
1892
- */
1893
- function learn_press_checkout_user_logged_in() {
1894
- learn_press_get_template( 'checkout/form-logged-in.php' );
1895
- }
1896
  }
1897
 
1898
  if ( ! function_exists( 'learn_press_enroll_script' ) ) {
1899
- /**
1900
- */
1901
- function learn_press_enroll_script() {
1902
- learn_press_assets()->enqueue_script( 'learn-press-enroll', LP()->plugin_url( 'assets/js/frontend/enroll.js' ),
1903
- array( 'learn-press-js' ) );
1904
- }
1905
  }
1906
 
1907
  if ( ! function_exists( 'learn_press_output_user_profile_tabs' ) ) {
1908
- /**
1909
- * Display user profile tabs
1910
- *
1911
- * @param LP_User
1912
- */
1913
- function learn_press_output_user_profile_tabs( $user, $current, $tabs ) {
1914
- learn_press_get_template( 'profile/tabs.php', array(
1915
- 'user' => $user,
1916
- 'tabs' => $tabs,
1917
- 'current' => $current
1918
- ) );
1919
- }
1920
  }
1921
 
1922
  if ( ! function_exists( 'learn_press_output_user_profile_order' ) ) {
1923
- /**
1924
- * Display user profile tabs
1925
- *
1926
- * @param LP_User
1927
- */
1928
- function learn_press_output_user_profile_order( $user, $current, $tabs ) {
1929
-
1930
- // learn_press_get_template( 'profile/tabs/orders.php', array( 'user' => $user, 'tabs' => $tabs, 'current' => $current ) );
1931
- }
1932
  }
1933
  if ( ! function_exists( 'learn_press_profile_tab_courses_all' ) ) {
1934
- /**
1935
- * Display user profile tabs
1936
- *
1937
- * @param LP_User
1938
- */
1939
- function learn_press_profile_tab_courses_all( $user, $tab = null ) {
1940
- $args = array(
1941
- 'user' => $user,
1942
- 'subtab' => $tab
1943
- );
1944
- $limit = LP()->settings->get( 'profile_courses_limit', 10 );
1945
- $limit = apply_filters( 'learn_press_profile_tab_courses_all_limit', $limit );
1946
- $courses = $user->get( 'courses', array( 'limit' => $limit ) );
1947
- $num_pages = learn_press_get_num_pages( $user->_get_found_rows(), $limit );
1948
- $args['courses'] = $courses;
1949
- $args['num_pages'] = $num_pages;
1950
- learn_press_get_template( 'profile/tabs/courses.php', $args );
1951
- }
1952
  }
1953
 
1954
  if ( ! function_exists( 'learn_press_profile_tab_courses_learning' ) ) {
1955
- /**
1956
- * Display user profile tabs
1957
- *
1958
- * @param LP_User
1959
- */
1960
- function learn_press_profile_tab_courses_learning( $user, $tab = null ) {
1961
- $args = array(
1962
- 'user' => $user,
1963
- 'subtab' => $tab
1964
- );
1965
- $limit = LP()->settings->get( 'profile_courses_limit', 10 );
1966
- $limit = apply_filters( 'learn_press_profile_tab_courses_learning_limit', $limit );
1967
- $courses = $user->get( 'enrolled-courses', array( 'status' => 'enrolled', 'limit' => $limit ) );
1968
- $num_pages = learn_press_get_num_pages( $user->_get_found_rows(), $limit );
1969
- $args['courses'] = $courses;
1970
- $args['num_pages'] = $num_pages;
1971
- learn_press_get_template( 'profile/tabs/courses/learning.php', $args );
1972
- }
1973
  }
1974
 
1975
  if ( ! function_exists( 'learn_press_profile_tab_courses_purchased' ) ) {
1976
- /**
1977
- * Display user profile tabs
1978
- *
1979
- * @param LP_User
1980
- */
1981
- function learn_press_profile_tab_courses_purchased( $user, $tab = null ) {
1982
- $args = array(
1983
- 'user' => $user,
1984
- 'subtab' => $tab
1985
- );
1986
- $limit = LP()->settings->get( 'profile_courses_limit', 10 );
1987
- $limit = apply_filters( 'learn_press_profile_tab_courses_purchased_limit', $limit );
1988
- $courses = $user->get( 'purchased-courses', array( 'limit' => $limit ) );
1989
- $num_pages = learn_press_get_num_pages( $user->_get_found_rows(), $limit );
1990
- $args['courses'] = $courses;
1991
- $args['num_pages'] = $num_pages;
1992
- learn_press_get_template( 'profile/tabs/courses/purchased.php', $args );
1993
- }
1994
  }
1995
 
1996
  if ( ! function_exists( 'learn_press_profile_tab_courses_finished' ) ) {
1997
- /**
1998
- * Display user profile tabs
1999
- *
2000
- * @param LP_User
2001
- */
2002
- function learn_press_profile_tab_courses_finished( $user, $tab = null ) {
2003
- $args = array(
2004
- 'user' => $user,
2005
- 'subtab' => $tab
2006
- );
2007
- $limit = LP()->settings->get( 'profile_courses_limit', 10 );
2008
- $limit = apply_filters( 'learn_press_profile_tab_courses_finished_limit', $limit );
2009
- $courses = $user->get( 'enrolled-courses', array( 'status' => 'finished', 'limit' => $limit ) );
2010
- $num_pages = learn_press_get_num_pages( $user->_get_found_rows(), $limit );
2011
- $args['courses'] = $courses;
2012
- $args['num_pages'] = $num_pages;
2013
- learn_press_get_template( 'profile/tabs/courses/finished.php', $args );
2014
- }
2015
  }
2016
 
2017
  if ( ! function_exists( 'learn_press_profile_tab_courses_own' ) ) {
2018
- /**
2019
- * Display user profile tabs
2020
- *
2021
- * @param LP_User
2022
- */
2023
- function learn_press_profile_tab_courses_own( $user, $tab = null ) {
2024
- $args = array(
2025
- 'user' => $user,
2026
- 'subtab' => $tab
2027
- );
2028
- $limit = LP()->settings->get( 'profile_courses_limit', 10 );
2029
- $limit = apply_filters( 'learn_press_profile_tab_courses_own_limit', $limit );
2030
- $courses = $user->get( 'own-courses', array( 'limit' => $limit ) );
2031
- $num_pages = learn_press_get_num_pages( $user->_get_found_rows(), $limit );
2032
- $args['courses'] = $courses;
2033
- $args['num_pages'] = $num_pages;
2034
- learn_press_get_template( 'profile/tabs/courses/own.php', $args );
2035
- }
2036
  }
2037
 
2038
  if ( ! function_exists( 'learn_press_after_profile_tab_loop_course' ) ) {
2039
- /**
2040
- * Display user profile tabs
2041
- *
2042
- * @param LP_User
2043
- */
2044
- function learn_press_after_profile_tab_loop_course( $user, $course_id ) {
2045
-
2046
- $args = array(
2047
- 'user' => $user,
2048
- 'course_id' => $course_id
2049
- );
2050
- learn_press_get_template( 'profile/tabs/courses/progress.php', $args );
2051
 
2052
- }
2053
  }
2054
 
2055
 
2056
  if ( ! function_exists( 'learn_press_output_user_profile_info' ) ) {
2057
- /**
2058
- * Displaying user info
2059
- *
2060
- * @param $user
2061
- */
2062
- function learn_press_output_user_profile_info( $user, $current, $tabs ) {
2063
- learn_press_get_template( 'profile/info.php', array(
2064
- 'user' => $user,
2065
- 'tabs' => $tabs,
2066
- 'current' => $current
2067
- ) );
2068
- }
2069
  }
2070
 
2071
  /* QUIZ TEMPLATES */
2072
  if ( ! function_exists( 'learn_press_single_quiz_title' ) ) {
2073
- /**
2074
- * Output the title of the quiz
2075
- */
2076
- function learn_press_single_quiz_title() {
2077
- learn_press_get_template( 'content-quiz/title.php' );
2078
- }
2079
  }
2080
 
2081
  if ( ! function_exists( 'learn_press_course_loop_item_buttons' ) ) {
2082
- function learn_press_course_loop_item_buttons() {
2083
- learn_press_get_template( 'single-course/buttons.php' );
2084
- }
2085
  }
2086
 
2087
  if ( ! function_exists( 'learn_press_course_loop_item_user_progress' ) ) {
2088
- function learn_press_course_loop_item_user_progress() {
2089
- $course = LP_Global::course();
2090
- $user = LP_Global::user();
2091
 
2092
- if ( ! $course || ! $user ) {
2093
- return;
2094
- }
2095
 
2096
- if ( $user && $user->has_enrolled_course( $course->get_id() ) ) {
2097
- $user->get_course_status( $course->get_id() );
2098
- }
2099
- }
2100
  }
2101
 
2102
  if ( ! function_exists( 'learn_press_course_item_class' ) ) {
2103
- function learn_press_course_item_class( $item_id, $course_id = 0, $class = null ) {
2104
- switch ( get_post_type( $item_id ) ) {
2105
- case 'lp_lesson':
2106
- learn_press_course_lesson_class( $item_id, $course_id, $class );
2107
- break;
2108
- case 'lp_quiz':
2109
- learn_press_course_quiz_class( $item_id, $course_id, $class );
2110
- break;
2111
- }
2112
- }
2113
  }
2114
 
2115
  if ( ! function_exists( 'learn_press_course_lesson_class' ) ) {
2116
- /**
2117
- * The class of lesson in course curriculum
2118
- *
2119
- * @param int $lesson_id
2120
- * @param int $course_id
2121
- * @param array|string $class
2122
- * @param boolean $echo
2123
- *
2124
- * @return mixed
2125
- */
2126
- function learn_press_course_lesson_class( $lesson_id = null, $course_id = 0, $class = null, $echo = true ) {
2127
- $user = learn_press_get_current_user();
2128
- if ( ! $course_id ) {
2129
- $course_id = get_the_ID();
2130
- }
2131
-
2132
- $course = learn_press_get_course( $course_id );
2133
- if ( ! $course ) {
2134
- return '';
2135
- }
2136
-
2137
- if ( is_string( $class ) && $class ) {
2138
- $class = preg_split( '!\s+!', $class );
2139
- } else {
2140
- $class = array();
2141
- }
2142
-
2143
- $classes = array(
2144
- 'course-lesson course-item course-item-' . $lesson_id
2145
- );
2146
-
2147
- $user = learn_press_get_current_user();
2148
-
2149
- if ( $status = $user->get_item_status( $lesson_id ) ) {
2150
- $classes[] = "item-has-status item-{$status}";
2151
- }
2152
- if ( $lesson_id && $course->is_current_item( $lesson_id ) ) {
2153
- $classes[] = 'item-current';
2154
- }
2155
- if ( learn_press_is_course() ) {
2156
- if ( $course->is_free() ) {
2157
- $classes[] = 'free-item';
2158
- }
2159
- }
2160
- $lesson = LP_Lesson::get_lesson( $lesson_id );
2161
- if ( $lesson && $lesson->is_preview() ) {
2162
- $classes[] = 'preview-item';
2163
- }
2164
-
2165
- if ( $user->can_view_item( $lesson_id, $course_id ) ) {
2166
- $classes[] = 'viewable';
2167
- }
2168
-
2169
- $classes = array_unique( array_merge( $classes, $class ) );
2170
- if ( $echo ) {
2171
- echo 'class="' . implode( ' ', $classes ) . '"';
2172
- }
2173
-
2174
- return $classes;
2175
- }
2176
  }
2177
 
2178
  if ( ! function_exists( 'learn_press_course_quiz_class' ) ) {
2179
- /**
2180
- * The class of lesson in course curriculum
2181
- *
2182
- * @param int $quiz_id
2183
- * @param int $course_id
2184
- * @param string|array $class
2185
- * @param boolean $echo
2186
- *
2187
- * @return mixed
2188
- */
2189
- function learn_press_course_quiz_class( $quiz_id = null, $course_id = 0, $class = null, $echo = true ) {
2190
- $user = learn_press_get_current_user();
2191
- if ( ! $course_id ) {
2192
- $course_id = get_the_ID();
2193
- }
2194
- if ( is_string( $class ) && $class ) {
2195
- $class = preg_split( '!\s+!', $class );
2196
- } else {
2197
- $class = array();
2198
- }
2199
-
2200
- $course = learn_press_get_course( $course_id );
2201
- if ( ! $course ) {
2202
- return '';
2203
- }
2204
-
2205
- $classes = array(
2206
- 'course-quiz course-item course-item-' . $quiz_id
2207
- );
2208
-
2209
- if ( $status = $user->get_item_status( $quiz_id ) ) {
2210
- $classes[] = "item-has-status item-{$status}";
2211
- }
2212
-
2213
- if ( $quiz_id && $course->is_current_item( $quiz_id ) ) {
2214
- $classes[] = 'item-current';
2215
- }
2216
-
2217
- if ( $user->can_view_item( $quiz_id, $course_id ) ) {
2218
- $classes[] = 'viewable';
2219
- }
2220
-
2221
- if ( $course->is_final_quiz( $quiz_id ) ) {
2222
- $classes[] = 'final-quiz';
2223
- }
2224
-
2225
- $classes = array_unique( array_merge( $classes, $class ) );
2226
-
2227
- if ( $echo ) {
2228
- echo 'class="' . join( ' ', $classes ) . '"';
2229
- }
2230
-
2231
- return $classes;
2232
- }
2233
  }
2234
 
2235
  if ( ! function_exists( 'learn_press_message' ) ) {
2236
- /**
2237
- * Template to display the messages
2238
- *
2239
- * @param $content
2240
- * @param string $type
2241
- */
2242
- function learn_press_message( $content, $type = 'message' ) {
2243
- learn_press_get_template( 'global/message.php', array( 'type' => $type, 'content' => $content ) );
2244
- }
2245
  }
2246
 
2247
  /******************************/
2248
 
2249
 
2250
  if ( ! function_exists( 'learn_press_course_class' ) ) {
2251
- /**
2252
- * Append new class to course post type
2253
- *
2254
- * @param $classes
2255
- * @param $class
2256
- * @param $post_id
2257
- *
2258
- * @return string
2259
- */
2260
- function learn_press_course_class( $classes, $class, $post_id = '' ) {
2261
- if ( is_learnpress() ) {
2262
- $classes = (array) $classes;
2263
- if ( false !== ( $key = array_search( 'hentry', $classes ) ) ) {
2264
- //unset( $classes[$key] );
2265
- }
2266
- }
2267
- if ( $post_id === 0 ) {
2268
- $classes[] = 'page type-page';
2269
- }
2270
- if ( ! $post_id || 'lp_course' !== get_post_type( $post_id ) ) {
2271
- return $classes;
2272
- }
2273
- $classes[] = 'course';
2274
-
2275
- return apply_filters( 'learn_press_course_class', $classes );
2276
- }
2277
  }
2278
  /**
2279
  * When the_post is called, put course data into a global.
@@ -2284,38 +2290,38 @@ if ( ! function_exists( 'learn_press_course_class' ) ) {
2284
  */
2285
  function learn_press_setup_object_data( $post ) {
2286
 
2287
- $object = null;
2288
 
2289
- if ( is_int( $post ) ) {
2290
- $post = get_post( $post );
2291
- }
2292
 
2293
- if ( ! $post ) {
2294
- return $object;
2295
- }
2296
 
2297
- if ( $post->post_type == LP_COURSE_CPT ) {
2298
- if ( isset( $GLOBALS['course'] ) ) {
2299
- unset( $GLOBALS['course'] );
2300
- }
2301
 
2302
- $object = learn_press_get_course( $post );
2303
- // $object->prepare();
2304
- LP()->global['course'] = $GLOBALS['course'] = $GLOBALS['lp_course'] = $object;
2305
- }
2306
 
2307
 
2308
- return $object;
2309
  }
2310
 
2311
  add_action( 'the_post', 'learn_press_setup_object_data' );
2312
 
2313
  function learn_press_setup_user() {
2314
- $GLOBALS['lp_user'] = learn_press_get_current_user();
2315
  }
2316
 
2317
  if ( ! is_admin() ) {
2318
- add_action( 'init', 'learn_press_setup_user', 1000 );
2319
  }
2320
 
2321
  /**
@@ -2327,16 +2333,16 @@ if ( ! is_admin() ) {
2327
 
2328
  function learn_press_display_message( $message, $type = 'success' ) {
2329
 
2330
- // get all messages added into queue
2331
- $messages = learn_press_session_get( learn_press_session_message_id() );
2332
- learn_press_session_set( learn_press_session_message_id(), null );
2333
 
2334
- // add new notice and display
2335
- learn_press_add_message( $message, $type );
2336
- echo learn_press_get_messages( true );
2337
 
2338
- // store back messages
2339
- learn_press_session_set( learn_press_session_message_id(), $messages );
2340
  }
2341
 
2342
  /**
@@ -2347,10 +2353,10 @@ function learn_press_display_message( $message, $type = 'success' ) {
2347
  * @return string
2348
  */
2349
  function learn_press_get_messages( $clear = false ) {
2350
- ob_start();
2351
- learn_press_print_messages( $clear );
2352
 
2353
- return ob_get_clean();
2354
  }
2355
 
2356
  /**
@@ -2363,42 +2369,42 @@ function learn_press_get_messages( $clear = false ) {
2363
  */
2364
  function learn_press_add_message( $message, $type = 'success', $options = array(), $current_user = true ) {
2365
 
2366
- if ( is_string( $options ) ) {
2367
- $options = array( 'id' => $options );
2368
- }
2369
 
2370
- $options = wp_parse_args(
2371
- $options,
2372
- array(
2373
- 'id' => ''
2374
- )
2375
- );
2376
 
2377
- if ( $current_user ) {
2378
- if ( true === $current_user ) {
2379
- $current_user = get_current_user_id();
2380
- }
2381
- }
2382
 
2383
- $key = "messages{$current_user}";
2384
 
2385
- $messages = learn_press_session_get( $key );
2386
 
2387
- if ( empty( $messages[ $type ] ) ) {
2388
- $messages[ $type ] = array();
2389
- }
2390
 
2391
- $messages[ $type ][ $options['id'] ] = array( 'content' => $message, 'options' => $options );
2392
 
2393
- learn_press_session_set( $key, $messages );
2394
  }
2395
 
2396
  function learn_press_get_message( $message, $type = 'success' ) {
2397
- ob_start();
2398
- learn_press_display_message( $message, $type );
2399
- $message = ob_get_clean();
2400
 
2401
- return $message;
2402
  }
2403
 
2404
  /**
@@ -2411,35 +2417,35 @@ function learn_press_get_message( $message, $type = 'success' ) {
2411
  *
2412
  */
2413
  function learn_press_remove_message( $id = '', $type = '' ) {
2414
- if ( ! $groups = learn_press_session_get( learn_press_session_message_id() ) ) {
2415
- return;
2416
- }
2417
-
2418
- settype( $type, 'array' );
2419
-
2420
- if ( $id ) {
2421
- foreach ( $groups as $message_type => $messages ) {
2422
- if ( ! sizeof( $type ) ) {
2423
- if ( isset( $groups[ $message_type ][ $id ] ) ) {
2424
- unset( $groups[ $message_type ][ $id ] );
2425
- }
2426
- } elseif ( in_array( $message_type, $type ) ) {
2427
- if ( isset( $groups[ $message_type ][ $id ] ) ) {
2428
- unset( $groups[ $message_type ][ $id ] );
2429
- }
2430
- }
2431
- }
2432
- } elseif ( sizeof( $type ) ) {
2433
- foreach ( $type as $t ) {
2434
- if ( isset( $groups[ $t ] ) ) {
2435
- unset( $groups[ $t ] );
2436
- }
2437
- }
2438
- } else {
2439
- $groups = array();
2440
- }
2441
-
2442
- learn_press_session_set( learn_press_session_message_id(), $groups );
2443
  }
2444
 
2445
  /**
@@ -2448,167 +2454,167 @@ function learn_press_remove_message( $id = '', $type = '' ) {
2448
  * @param bool
2449
  */
2450
  function learn_press_print_messages( $clear = true ) {
2451
- $messages = learn_press_session_get( learn_press_session_message_id() );
2452
- learn_press_get_template( 'global/message.php', array( 'messages' => $messages ) );
2453
- if ( $clear ) {
2454
- learn_press_session_set( learn_press_session_message_id(), array() );
2455
- }
2456
  }
2457
 
2458
  function learn_press_message_count( $type = '' ) {
2459
- $count = 0;
2460
- $messages = learn_press_session_get( learn_press_session_message_id(), array() );
2461
-
2462
- if ( isset( $messages[ $type ] ) ) {
2463
- $count = absint( sizeof( $messages[ $type ] ) );
2464
- } elseif ( empty( $type ) ) {
2465
- foreach ( $messages as $message ) {
2466
- $count += absint( sizeof( $message ) );
2467
- }
2468
- }
2469
 
2470
- return $count;
2471
  }
2472
 
2473
  function learn_press_session_message_id() {
2474
- return "messages" . get_current_user_id();
2475
  }
2476
 
2477
  function learn_press_clear_messages() {
2478
- _deprecated_function( __FUNCTION__, '3.0.0', 'learn_press_remove_message' );
2479
- learn_press_remove_message();
2480
  }
2481
 
2482
  /**
2483
  * Displays messages before main content
2484
  */
2485
  function _learn_press_print_messages() {
2486
- $item = LP_Global::course_item();
2487
- if ( ( 'learn_press_before_main_content' == current_action() ) && $item ) {
2488
- return;
2489
- }
2490
- learn_press_print_messages( true );
2491
  }
2492
 
2493
  add_action( 'learn_press_before_main_content', '_learn_press_print_messages', 50 );
2494
  add_action( 'learn-press/before-course-item-content', '_learn_press_print_messages', 50 );
2495
 
2496
  if ( ! function_exists( 'learn_press_page_controller' ) ) {
2497
- /**
2498
- * Check permission to view page
2499
- *
2500
- * @param file $template
2501
- *
2502
- * @return file
2503
- */
2504
- function learn_press_page_controller( $template/*, $slug, $name*/ ) {
2505
- die( __FUNCTION__ );
2506
- global $wp;
2507
- if ( isset( $wp->query_vars['lp-order-received'] ) ) {
2508
- global $post;
2509
- $post->post_title = __( 'Order received', 'learnpress' );
2510
- }
2511
- if ( is_single() ) {
2512
- $user = LP()->user;
2513
- $redirect = false;
2514
- $item_id = 0;
2515
-
2516
- switch ( get_post_type() ) {
2517
- case LP_QUIZ_CPT:
2518
- $quiz = LP()->quiz;
2519
- $quiz_status = LP()->user->get_quiz_status( get_the_ID() );
2520
- $redirect = false;
2521
- $error_message = false;
2522
- if ( ! $user->can_view_quiz( $quiz->id ) ) {
2523
- if ( $course = $quiz->get_course() ) {
2524
- $redirect = $course->permalink;
2525
- $error_message = sprintf( __( 'Access denied "%s"', 'learnpress' ) );
2526
- }
2527
- } elseif ( $quiz_status == 'started' && ( empty( $_REQUEST['question'] ) && $current_question = $user->get_current_quiz_question( $quiz->id ) ) ) {
2528
- $redirect = $quiz->get_question_link( $current_question );
2529
- } elseif ( $quiz_status == 'completed'/* && !empty( $_REQUEST['question'] )*/ ) {
2530
- $redirect = get_the_permalink( $quiz->id );
2531
- } elseif ( learn_press_get_request( 'question' ) && $quiz_status == '' ) {
2532
- $redirect = get_the_permalink( $quiz->id );
2533
- }
2534
- $item_id = $quiz->id;
2535
- $redirect = apply_filters( 'learn_press_quiz_access_denied_redirect_permalink', $redirect,
2536
- $quiz_status, $quiz->id, $user->get_id() );
2537
- break;
2538
- case LP_COURSE_CPT:
2539
- if ( ( $course = learn_press_get_course() ) && $item_id = $course->is_viewing_item() ) {
2540
- if ( ! LP()->user->can_view_item( $item_id ) ) {
2541
- $redirect = apply_filters( 'learn_press_lesson_access_denied_redirect_permalink',
2542
- $course->permalink, $item_id, $user->get_id() );
2543
- }
2544
- }
2545
- }
2546
-
2547
- // prevent loop redirect
2548
- /*if ( $redirect && !learn_press_is_current_url( $redirect ) ) {
2549
- if ( $item_id && $error_message ) {
2550
- $error_message = apply_filters( 'learn_press_course_item_access_denied_error_message', get_the_title( $item_id ) );
2551
- if ( $error_message !== false ) {
2552
- learn_press_add_notice( $error_message, 'error' );
2553
- }
2554
- }
2555
- wp_redirect( $redirect );
2556
- exit();
2557
- }*/
2558
- }
2559
-
2560
- return $template;
2561
- }
2562
  }
2563
  //add_filter( 'template_include', 'learn_press_page_controller' );
2564
 
2565
  if ( ! function_exists( 'learn_press_page_title' ) ) {
2566
 
2567
- /**
2568
- * learn_press_page_title function.
2569
- *
2570
- * @param boolean $echo
2571
- *
2572
- * @return string
2573
- */
2574
- function learn_press_page_title( $echo = true ) {
2575
 
2576
- if ( is_search() ) {
2577
- $page_title = sprintf( __( 'Search Results for: &ldquo;%s&rdquo;', 'learnpress' ), get_search_query() );
2578
 
2579
- if ( get_query_var( 'paged' ) ) {
2580
- $page_title .= sprintf( __( '&nbsp;&ndash; Page %s', 'learnpress' ), get_query_var( 'paged' ) );
2581
- }
2582
 
2583
- } elseif ( is_tax() ) {
2584
 
2585
- $page_title = single_term_title( "", false );
2586
 
2587
- } else {
2588
 
2589
- $courses_page_id = learn_press_get_page_id( 'courses' );
2590
- $page_title = get_the_title( $courses_page_id );
2591
 
2592
- }
2593
 
2594
- $page_title = apply_filters( 'learn_press_page_title', $page_title );
2595
 
2596
- if ( $echo ) {
2597
- echo $page_title;
2598
- } else {
2599
- return $page_title;
2600
- }
2601
- }
2602
  }
2603
 
2604
  function learn_press_template_redirect() {
2605
- global $wp_query, $wp;
2606
 
2607
- // When default permalinks are enabled, redirect shop page to post type archive url
2608
- if ( ! empty( $_GET['page_id'] ) && get_option( 'permalink_structure' ) == "" && $_GET['page_id'] == learn_press_get_page_id( 'courses' ) ) {
2609
- wp_safe_redirect( get_post_type_archive_link( 'lp_course' ) );
2610
- exit;
2611
- }
2612
  }
2613
 
2614
  add_action( 'template_redirect', 'learn_press_template_redirect' );
@@ -2623,35 +2629,35 @@ add_action( 'template_redirect', 'learn_press_template_redirect' );
2623
  * @return string
2624
  */
2625
  function learn_press_get_template_part( $slug, $name = '' ) {
2626
- $template = '';
2627
-
2628
- // Look in yourtheme/slug-name.php and yourtheme/learnpress/slug-name.php
2629
- if ( $name ) {
2630
- $template = locate_template( array(
2631
- "{$slug}-{$name}.php",
2632
- learn_press_template_path() . "/{$slug}-{$name}.php"
2633
- ) );
2634
- }
2635
 
2636
- // Get default slug-name.php
2637
- if ( ! $template && $name && file_exists( LP_PLUGIN_PATH . "/templates/{$slug}-{$name}.php" ) ) {
2638
- $template = LP_PLUGIN_PATH . "/templates/{$slug}-{$name}.php";
2639
- }
2640
 
2641
- // If template file doesn't exist, look in yourtheme/slug.php and yourtheme/learnpress/slug.php
2642
- if ( ! $template ) {
2643
- $template = locate_template( array( "{$slug}.php", learn_press_template_path() . "/{$slug}.php" ) );
2644
- }
2645
 
2646
- // Allow 3rd party plugin filter template file from their plugin
2647
- if ( $template ) {
2648
- $template = apply_filters( 'learn_press_get_template_part', $template, $slug, $name );
2649
- }
2650
- if ( $template && file_exists( $template ) ) {
2651
- load_template( $template, false );
2652
- }
2653
 
2654
- return $template;
2655
  }
2656
 
2657
  /**
@@ -2665,31 +2671,31 @@ function learn_press_get_template_part( $slug, $name = '' ) {
2665
  * @return void
2666
  */
2667
  function learn_press_get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
2668
- if ( $args && is_array( $args ) ) {
2669
- extract( $args );
2670
- }
2671
 
2672
- if ( false === strpos( $template_name, '.php' ) ) {
2673
- $template_name .= '.php';
2674
- }
2675
 
2676
- $located = learn_press_locate_template( $template_name, $template_path, $default_path );
2677
 
2678
- if ( ! file_exists( $located ) ) {
2679
- _doing_it_wrong( __FUNCTION__, sprintf( '<code>%s</code> does not exist.', $located ), '2.1' );
2680
 
2681
- return;
2682
- }
2683
- // Allow 3rd party plugin filter template file from their plugin
2684
- $located = apply_filters( 'learn_press_get_template', $located, $template_name, $args, $template_path,
2685
- $default_path );
2686
- if ( $located != '' ) {
2687
- do_action( 'learn_press_before_template_part', $template_name, $template_path, $located, $args );
2688
 
2689
- include( $located );
2690
 
2691
- do_action( 'learn_press_after_template_part', $template_name, $template_path, $located, $args );
2692
- }
2693
  }
2694
 
2695
  /**
@@ -2705,10 +2711,10 @@ function learn_press_get_template( $template_name, $args = array(), $template_pa
2705
  *
2706
  */
2707
  function learn_press_get_template_content( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
2708
- ob_start();
2709
- learn_press_get_template( $template_name, $args, $template_path, $default_path );
2710
 
2711
- return ob_get_clean();
2712
  }
2713
 
2714
  /**
@@ -2729,29 +2735,29 @@ function learn_press_get_template_content( $template_name, $args = array(), $tem
2729
  * @return string
2730
  */
2731
  function learn_press_locate_template( $template_name, $template_path = '', $default_path = '' ) {
2732
- if ( ! $template_path ) {
2733
- $template_path = learn_press_template_path();
2734
- }
2735
-
2736
- if ( ! $default_path ) {
2737
- $default_path = LP_PLUGIN_PATH . 'templates/';
2738
- }
2739
 
2740
- // Look within passed path within the theme - this is priority
2741
- $template = locate_template(
2742
- array(
2743
- trailingslashit( $template_path ) . $template_name,
2744
- $template_name
2745
- )
2746
- );
2747
 
2748
- // Get default template
2749
- if ( ! $template ) {
2750
- $template = trailingslashit( $default_path ) . $template_name;
2751
- }
 
 
 
 
 
 
 
 
2752
 
2753
- // Return what we found
2754
- return apply_filters( 'learn_press_locate_template', $template, $template_name, $template_path );
2755
  }
2756
 
2757
  /**
@@ -2762,134 +2768,134 @@ function learn_press_locate_template( $template_name, $template_path = '', $defa
2762
  * @return string
2763
  */
2764
  function learn_press_template_path( $slash = false ) {
2765
- return apply_filters( 'learn_press_template_path', 'learnpress', $slash ) . ( $slash ? '/' : '' );
2766
  }
2767
 
2768
 
2769
  if ( ! function_exists( 'learn_press_is_404' ) ) {
2770
- /**
2771
- * Set header is 404
2772
- */
2773
- function learn_press_is_404() {
2774
- global $wp_query;
2775
- if ( ! empty( $_REQUEST['debug-404'] ) ) {
2776
- learn_press_debug( debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, $_REQUEST['debug-404'] ) );
2777
- }
2778
- $wp_query->set_404();
2779
- status_header( 404 );
2780
- }
2781
  }
2782
 
2783
  if ( ! function_exists( 'learn_press_404_page' ) ) {
2784
- /**
2785
- * Display 404 page
2786
- */
2787
- function learn_press_404_page() {
2788
- learn_press_is_404();
2789
- }
2790
  }
2791
 
2792
  if ( ! function_exists( 'learn_press_generate_template_information' ) ) {
2793
- function learn_press_generate_template_information( $template_name, $template_path, $located, $args ) {
2794
- $debug = learn_press_get_request( 'show-template-location' );
2795
- if ( $debug == 'on' ) {
2796
- echo "<!-- Template Location:" . str_replace( array( LP_PLUGIN_PATH, ABSPATH ), '', $located ) . " -->";
2797
- }
2798
- }
2799
  }
2800
 
2801
  if ( ! function_exists( 'learn_press_course_remaining_time' ) ) {
2802
- /**
2803
- * Show the time remain of a course
2804
- */
2805
- function learn_press_course_remaining_time() {
2806
- $user = learn_press_get_current_user();
2807
- if ( ! $user->has_finished_course( get_the_ID() ) && $text = learn_press_get_course( get_the_ID() )->get_user_duration_html( $user->get_id() ) ) {
2808
- learn_press_display_message( $text );
2809
- }
2810
- }
2811
  }
2812
 
2813
  //add_filter( 'template_include', 'learn_press_permission_view_quiz', 100 );
2814
  function learn_press_permission_view_quiz( $template ) {
2815
- $quiz = LP()->global['course-item'];
2816
- // if is not in single quiz
2817
- if ( ! learn_press_is_quiz() ) {
2818
- return $template;
2819
- }
2820
- $user = learn_press_get_current_user();
2821
- // If user haven't got permission
2822
- if ( ! current_user_can( 'edit-lp_quiz' ) && ! $user->can_view_quiz( $quiz->id ) ) {
2823
- switch ( LP()->settings->get( 'quiz_restrict_access' ) ) {
2824
- case 'custom':
2825
- $template = learn_press_locate_template( 'global/restrict-access.php' );
2826
- break;
2827
- default:
2828
- learn_press_is_404();
2829
- }
2830
- }
2831
-
2832
- return $template;
2833
  }
2834
 
2835
 
2836
  if ( ! function_exists( 'learn_press_item_meta_type' ) ) {
2837
- function learn_press_item_meta_type( $course, $item ) { ?>
2838
 
2839
- <?php if ( $item->post_type == 'lp_quiz' ) { ?>
2840
 
2841
  <span class="lp-label lp-label-quiz"><?php _e( 'Quiz', 'learnpress' ); ?></span>
2842
 
2843
- <?php if ( $course->final_quiz == $item->ID ) { ?>
2844
 
2845
  <span class="lp-label lp-label-final"><?php _e( 'Final', 'learnpress' ); ?></span>
2846
 
2847
- <?php } ?>
2848
 
2849
- <?php } elseif ( $item->post_type == 'lp_lesson' ) { ?>
2850
 
2851
  <span class="lp-label lp-label-lesson"><?php _e( 'Lesson', 'learnpress' ); ?></span>
2852
- <?php if ( get_post_meta( $item->ID, '_lp_preview', true ) == 'yes' ) { ?>
2853
 
2854
  <span class="lp-label lp-label-preview"><?php _e( 'Preview', 'learnpress' ); ?></span>
2855
 
2856
- <?php } ?>
2857
 
2858
- <?php } else { ?>
2859
 
2860
- <?php do_action( 'learn_press_item_meta_type', $course, $item ); ?>
2861
 
2862
- <?php }
2863
- }
2864
  }
2865
 
2866
  function learn_press_single_course_js() {
2867
- _deprecated_function( __FUNCTION__, '3.0.0' );
2868
- if ( ! learn_press_is_course() ) {
2869
- return;
2870
- }
2871
- $user = learn_press_get_current_user();
2872
- $course = learn_press_get_course();
2873
- $js = array( 'url' => $course->get_permalink(), 'items' => array() );
2874
- if ( $items = $course->get_curriculum_items() ) {
2875
- foreach ( $items as $item ) {
2876
- $item = array(
2877
- 'id' => absint( $item->ID ),
2878
- 'type' => $item->post_type,
2879
- 'title' => get_the_title( $item->ID ),
2880
- 'url' => $course->get_item_link( $item->ID ),
2881
- 'current' => $course->is_viewing_item( $item->ID ),
2882
- 'completed' => false,
2883
- 'viewable' => $item->post_type == 'lp_quiz' ? ( $user->can_view_quiz( $item->ID,
2884
- $course->get_id() ) !== false ) : ( $user->can_view_lesson( $item->ID,
2885
- $course->get_id() ) !== false )
2886
- );
2887
- $js['items'][] = $item;
2888
- }
2889
- }
2890
- echo '<script type="text/javascript">';
2891
- echo 'var SingleCourse_Params = ' . json_encode( $js );
2892
- echo '</script>';
2893
  }
2894
 
2895
  ///add_action( 'wp_head', 'learn_press_single_course_js' );
@@ -2900,645 +2906,645 @@ function learn_press_single_course_js() {
2900
 
2901
 
2902
  if ( ! function_exists( 'learn_press_course_overview_tab' ) ) {
2903
- /**
2904
- * Output course overview
2905
- *
2906
- * @since 1.1
2907
- */
2908
- function learn_press_course_overview_tab() {
2909
- learn_press_get_template( 'single-course/tabs/overview.php' );
2910
- }
2911
  }
2912
 
2913
  if ( ! function_exists( 'learn_press_course_curriculum_tab' ) ) {
2914
- /**
2915
- * Output course curriculum
2916
- *
2917
- * @since 1.1
2918
- */
2919
- function learn_press_course_curriculum_tab() {
2920
- learn_press_get_template( 'single-course/tabs/curriculum.php' );
2921
- }
2922
  }
2923
 
2924
  if ( ! function_exists( 'learn_press_course_instructor_tab' ) ) {
2925
- /**
2926
- * Output course curriculum
2927
- *
2928
- * @since 1.1
2929
- */
2930
- function learn_press_course_instructor_tab() {
2931
- learn_press_get_template( 'single-course/tabs/instructor.php' );
2932
- }
2933
  }
2934
 
2935
  if ( ! function_exists( 'learn_press_sort_course_tabs' ) ) {
2936
 
2937
- function learn_press_sort_course_tabs( $tabs = array() ) {
2938
- uasort( $tabs, 'learn_press_sort_list_by_priority_callback' );
2939
 
2940
- return $tabs;
2941
- }
2942
  }
2943
 
2944
  if ( ! function_exists( 'learn_press_get_profile_display_name' ) ) {
2945
- /**
2946
- * Get Display name publicly as in Profile page
2947
- *
2948
- * @param $user
2949
- *
2950
- * @return string
2951
- */
2952
- function learn_press_get_profile_display_name( $user ) {
2953
- if ( empty( $user ) ) {
2954
- return '';
2955
- }
2956
- $id = '';
2957
- if ( $user instanceof LP_Abstract_User ) {
2958
- $id = $user->get_id();
2959
- } elseif ( $user instanceof WP_User ) {
2960
- $id = $user->ID;
2961
- } elseif ( is_numeric( $user ) ) {
2962
- $id = $user;
2963
- }
2964
- if ( ! isset( $id ) ) {
2965
- return '';
2966
- }
2967
- $info = get_userdata( $id );
2968
-
2969
- return $info ? $info->display_name : '';
2970
- }
2971
  }
2972
 
2973
  if ( ! function_exists( 'learn_press_profile_dashboard_logged_in' ) ) {
2974
- function learn_press_profile_dashboard_logged_in() {
2975
- learn_press_get_template( 'profile/dashboard-logged-in.php' );
2976
- }
2977
  }
2978
 
2979
  if ( ! function_exists( 'learn_press_profile_dashboard_user_bio' ) ) {
2980
- function learn_press_profile_dashboard_user_bio() {
2981
- $profile = LP_Profile::instance();
2982
 
2983
- if ( ! $user = $profile->get_user() ) {
2984
- return;
2985
- }
2986
 
2987
- learn_press_get_template( 'profile/user-bio.php' );
2988
- }
2989
  }
2990
 
2991
  if ( ! function_exists( 'learn_press_profile_dashboard_not_logged_in' ) ) {
2992
- function learn_press_profile_dashboard_not_logged_in() {
2993
- $profile = LP_Global::profile();
2994
 
2995
- if ( ! $profile->get_user()->is_guest() ) {
2996
- return;
2997
- }
2998
 
2999
- if ( 'yes' === LP()->settings()->get( 'enable_register_profile' ) || 'yes' === LP()->settings()->get( 'enable_login_profile' ) ) {
3000
- return;
3001
- }
3002
 
3003
- learn_press_get_template( 'profile/not-logged-in.php' );
3004
- }
3005
  }
3006
 
3007
  if ( ! function_exists( 'learn_press_profile_login_form' ) ) {
3008
- function learn_press_profile_login_form() {
3009
- $profile = LP_Global::profile();
3010
 
3011
- print_r( metadata_exists( 'user', $profile->get_user()->get_id(), '_lp_temp_user' ) );
3012
- if ( ! $profile->get_user()->is_guest() ) {
3013
- return;
3014
- }
3015
 
3016
- if ( ! $fields = $profile->get_login_fields() ) {
3017
- return;
3018
- }
3019
 
3020
- if ( 'yes' !== LP()->settings()->get( 'enable_login_profile' ) ) {
3021
- return;
3022
- }
3023
 
3024
- learn_press_get_template( 'global/form-login.php', array( 'fields' => $fields ) );
3025
- }
3026
  }
3027
 
3028
  if ( ! function_exists( 'learn_press_profile_register_form' ) ) {
3029
- function learn_press_profile_register_form() {
3030
- if ( 'yes' !== LP()->settings()->get( 'enable_register_profile' ) ) {
3031
- return;
3032
- }
3033
 
3034
- $profile = LP_Global::profile();
3035
 
3036
- if ( ! $profile->get_user()->is_guest() ) {
3037
- return;
3038
- }
3039
 
3040
- if ( ! $fields = $profile->get_register_fields() ) {
3041
- return;
3042
- }
3043
 
3044
- learn_press_get_template( 'global/form-register.php', array( 'fields' => $fields ) );
3045
- }
3046
  }
3047
 
3048
  if ( ! function_exists( 'learn_press_content_item_lesson_title' ) ) {
3049
- function learn_press_content_item_lesson_title() {
3050
- $item = LP_Global::course_item();
3051
- $lesson_title = $item->get_title( 'display' );
3052
 
3053
- if ( ( 'standard' !== ( $format = $item->get_format() ) ) && file_exists( $format_template = learn_press_locate_template( "content-lesson/{$format}/title.php" ) ) ) {
3054
- include $format_template;
3055
 
3056
- return;
3057
- }
3058
 
3059
- if ( ! $lesson_title ) {
3060
- return;
3061
- }
3062
 
3063
- learn_press_get_template( 'content-lesson/title.php', array( 'title' => $lesson_title ) );
3064
- }
3065
  }
3066
 
3067
  if ( ! function_exists( 'learn_press_content_item_lesson_content' ) ) {
3068
- function learn_press_content_item_lesson_content() {
3069
- $item = LP_Global::course_item();
3070
- $content = $item->get_content();
3071
 
3072
- if ( ( 'standard' !== ( $format = $item->get_format() ) ) && file_exists( $format_template = learn_press_locate_template( "content-lesson/{$format}/content.php" ) ) ) {
3073
- include $format_template;
3074
 
3075
- return;
3076
- }
3077
 
3078
- do_action( 'learn-press/lesson-start', $item );
3079
- learn_press_get_template( 'content-lesson/content.php', array( 'item' => $item, 'content' => $content ) );
3080
- }
3081
  }
3082
 
3083
  if ( ! function_exists( 'learn_press_content_item_lesson_content_blocked' ) ) {
3084
- function learn_press_content_item_lesson_content_blocked() {
3085
- $item = LP_Global::course_item();
3086
 
3087
- if ( ! $item->is_blocked() ) {
3088
- return;
3089
- }
3090
 
3091
- learn_press_get_template( 'global/block-content.php' );
3092
- }
3093
  }
3094
 
3095
  if ( ! function_exists( 'learn_press_content_item_lesson_complete_button' ) ) {
3096
- function learn_press_content_item_lesson_complete_button() {
3097
- $user = LP_Global::user();
3098
- $course = LP_Global::course();
3099
- $item = LP_Global::course_item();
3100
- $completed = $user->has_completed_item( $item->get_id(), $course->get_id() );
3101
- $security = $item->create_nonce( 'complete' );
3102
- $has_enrolled = $user->has_enrolled_course( $course->get_id() );
3103
-
3104
- if ( ! $course->is_required_enroll() ) {
3105
- return;
3106
- }
3107
 
3108
- if ( ! $has_enrolled ) {
3109
- return;
3110
- }
3111
 
3112
- if ( ( $course_item = $user->get_course_data( $course->get_id() ) ) && $course_item->is_finished() ) {
3113
- return;
3114
- }
3115
 
3116
- $args = array(
3117
- 'course' => $course,
3118
- 'item' => $item,
3119
- 'completed' => $completed,
3120
- 'security' => $security,
3121
- );
3122
 
3123
- learn_press_get_template( 'content-lesson/button-complete.php', $args );
3124
- }
3125
  }
3126
 
3127
  if ( ! function_exists( 'learn_press_content_item_header' ) ) {
3128
- function learn_press_content_item_header() {
3129
- learn_press_get_template( 'single-course/content-item/header.php' );
3130
- }
3131
  }
3132
 
3133
  if ( ! function_exists( 'learn_press_content_item_footer' ) ) {
3134
- function learn_press_content_item_footer() {
3135
- learn_press_get_template( 'single-course/content-item/footer.php' );
3136
- }
3137
  }
3138
 
3139
  if ( ! function_exists( 'learn_press_content_item_review_quiz_title' ) ) {
3140
- function learn_press_content_item_review_quiz_title() {
3141
- if ( learn_press_is_review_questions() ) {
3142
- learn_press_get_template( 'content-quiz/review-title.php' );
3143
- }
3144
- }
3145
  }
3146
 
3147
  if ( ! function_exists( 'learn_press_become_teacher_messages' ) ) {
3148
- function learn_press_become_teacher_messages() {
3149
- $messages = LP_Shortcode_Become_A_Teacher::get_messages();
3150
- if ( ! $messages ) {
3151
- return;
3152
- }
3153
 
3154
- learn_press_get_template( 'global/become-teacher-form/message.php', array( 'messages' => $messages ) );
3155
- }
3156
  }
3157
 
3158
  if ( ! function_exists( 'learn_press_become_teacher_heading' ) ) {
3159
 
3160
- function learn_press_become_teacher_heading() {
3161
- $messages = LP_Shortcode_Become_A_Teacher::get_messages();
3162
- if ( $messages ) {
3163
- return;
3164
- }
3165
- ?>
3166
  <h3><?php _e( 'Fill out the form and send us your requesting.', 'learnpress' ); ?></h3>
3167
- <?php
3168
- }
3169
  }
3170
 
3171
  if ( ! function_exists( 'learn_press_become_teacher_form_fields' ) ) {
3172
 
3173
- function learn_press_become_teacher_form_fields() {
3174
- $messages = LP_Shortcode_Become_A_Teacher::get_messages();
3175
- if ( $messages ) {
3176
- return;
3177
- }
3178
 
3179
- include_once LP_PLUGIN_PATH . 'inc/admin/meta-box/class-lp-meta-box-helper.php';
3180
 
3181
- learn_press_get_template( 'global/become-teacher-form/form-fields.php',
3182
- array( 'fields' => learn_press_get_become_a_teacher_form_fields() ) );
3183
- }
3184
  }
3185
 
3186
  if ( ! function_exists( 'learn_press_become_teacher_button' ) ) {
3187
 
3188
- function learn_press_become_teacher_button() {
3189
- $messages = LP_Shortcode_Become_A_Teacher::get_messages();
3190
- if ( $messages ) {
3191
- return;
3192
- }
3193
 
3194
- learn_press_get_template( 'global/become-teacher-form/button.php' );
3195
- }
3196
  }
3197
 
3198
  if ( ! function_exists( 'learn_press_content_item_comments' ) ) {
3199
 
3200
- function learn_press_content_item_comments() {
3201
 
3202
- $item = LP_Global::course_item();
3203
 
3204
- if ( ! $item ) {
3205
- return;
3206
- }
3207
 
3208
- if ( ! $item->is_support( 'comments' ) ) {
3209
- return;
3210
- }
3211
 
3212
- global $post;
3213
 
3214
- $post = get_post( $item->get_id() );
3215
 
3216
- setup_postdata( $post );
3217
 
3218
- if ( ! have_comments() ) {
3219
- return;
3220
- }
3221
 
3222
- comments_template();
3223
 
3224
- wp_reset_postdata();
3225
- }
3226
  }
3227
 
3228
  if ( ! function_exists( 'learn_press_content_item_nav' ) ) {
3229
- function learn_press_content_item_nav() {
3230
- $course = LP_Global::course();
3231
- $next_item = $prev_item = false;
3232
-
3233
- if ( $next_id = $course->get_next_item() ) {
3234
- $next_item = $course->get_item( $next_id );
3235
- }
3236
- if ( $prev_id = $course->get_prev_item() ) {
3237
- $prev_item = $course->get_item( $prev_id );
3238
- }
3239
-
3240
- learn_press_get_template(
3241
- 'single-course/content-item/nav.php',
3242
- array(
3243
- 'next_item' => $next_item,
3244
- 'prev_item' => $prev_item
3245
- )
3246
- );
3247
- }
3248
  }
3249
 
3250
  function learn_press_disable_course_comment_form() {
3251
- add_filter( 'comments_template', 'learn_press_blank_comments_template', 999 );
3252
  }
3253
 
3254
  function learn_press_course_comments_open( $open, $post_id ) {
3255
- $post = get_post( $post_id );
3256
- if ( LP_COURSE_CPT == $post->post_type ) {
3257
- $open = false;
3258
- }
3259
 
3260
- return $open;
3261
  }
3262
 
3263
 
3264
  if ( ! function_exists( 'learn_press_profile_mobile_menu' ) ) {
3265
- function learn_press_profile_mobile_menu() {
3266
- learn_press_get_template( 'profile/mobile-menu.php' );
3267
- }
3268
  }
3269
 
3270
  if ( ! function_exists( 'learn_press_profile_order_details' ) ) {
3271
- function learn_press_profile_order_details() {
3272
- $profile = LP_Profile::instance();
3273
 
3274
- if ( false === ( $order = $profile->get_view_order() ) ) {
3275
- return;
3276
- }
3277
 
3278
- learn_press_get_template( 'order/order-details.php', array( 'order' => $order ) );
3279
- }
3280
  }
3281
 
3282
  if ( ! function_exists( 'learn_press_profile_order_recover' ) ) {
3283
- function learn_press_profile_order_recover() {
3284
- $profile = LP_Profile::instance();
3285
 
3286
- if ( false === ( $order = $profile->get_view_order() ) ) {
3287
- return;
3288
- }
3289
- learn_press_get_template( 'profile/tabs/orders/recover-my-order.php', array( 'order' => $order ) );
3290
- }
3291
  }
3292
 
3293
  if ( ! function_exists( 'learn_press_profile_order_message' ) ) {
3294
- function learn_press_profile_order_message() {
3295
- $profile = LP_Profile::instance();
3296
 
3297
- if ( false === ( $order = $profile->get_view_order() ) ) {
3298
- return;
3299
- }
3300
- learn_press_get_template( 'profile/tabs/orders/order-message.php', array( 'order' => $order ) );
3301
- }
3302
  }
3303
 
3304
  function learn_press_is_content_item_only() {
3305
- return ! empty( $_REQUEST['content-item-only'] );
3306
  }
3307
 
3308
  function learn_press_label_html( $label, $type = '' ) {
3309
- ?>
3310
  <span class="lp-label label-<?php echo esc_attr( $type ? $type : $label ); ?>">
3311
  <?php echo $label; ?>
3312
  </span>
3313
- <?php
3314
  }
3315
 
3316
  // Fix issue with course content is duplicated if theme use the_content instead of $course->get_description()
3317
  function learn_press_course_the_content( $content ) {
3318
- _deprecated_function( __FUNCTION__, '3.0.0' );
3319
- global $post;
3320
- if ( $post && $post->post_type == 'lp_course' ) {
3321
- $course = learn_press_get_course( $post->ID );
3322
- if ( $course ) {
3323
- remove_filter( 'the_content', 'learn_press_course_the_content', 99999 );
3324
- $content = $course->get_content();
3325
- add_filter( 'the_content', 'learn_press_course_the_content', 99999 );
3326
- }
3327
- }
3328
 
3329
- return $content;
3330
  }
3331
 
3332
  //add_action( 'template_redirect', 'learn_press_check_access_lesson' );
3333
 
3334
  function learn_press_check_access_lesson() {
3335
- $queried_post_type = get_query_var( 'post_type' );
3336
- if ( is_single() && 'lp_lesson' == $queried_post_type ) {
3337
- $course = learn_press_get_course();
3338
- if ( ! $course ) {
3339
- learn_press_is_404();
3340
-
3341
- return;
3342
- }
3343
- $post = get_post();
3344
- $user = learn_press_get_current_user();
3345
- $can_view = $user->can_view_item( $post->ID, $course->get_id() );
3346
- if ( ! $can_view ) {
3347
- learn_press_is_404();
3348
-
3349
- return;
3350
- }
3351
- } elseif ( is_single() && 'lp_course' == $queried_post_type ) {
3352
- $course = learn_press_get_course();
3353
- $item = LP()->global['course-item'];
3354
- if ( is_object( $item ) && isset( $item->post->post_type ) && 'lp_lesson' === $item->post->post_type ) {
3355
- $user = learn_press_get_current_user();
3356
- $can_view = $user->can_view_item( $item->id, $course->get_id() );
3357
- if ( ! $can_view ) {
3358
- learn_press_404_page();
3359
-
3360
- return;
3361
- }
3362
- }
3363
- }
3364
  }
3365
 
3366
  function learn_press_get_course_redirect( $link ) {
3367
 
3368
- if ( empty( $_SERVER['HTTP_REFERER'] ) ) {
3369
- return $link;
3370
- }
3371
- $referer = $_SERVER['HTTP_REFERER'];
3372
- $info_a = parse_url( $referer );
3373
- $info_b = parse_url( $link );
3374
-
3375
- $a = explode( '/', $info_a['path'] );
3376
- $a = array_filter( $a );
3377
-
3378
- $b = explode( '/', $info_b['path'] );
3379
- $b = array_filter( $b );
3380
-
3381
- $same = array_intersect_assoc( $a, $b );
3382
-
3383
- $a = array_diff_assoc( $a, $same );
3384
- $b = array_diff_assoc( $b, $same );
3385
-
3386
- $a = array_values( $a );
3387
- $b = array_values( $b );
3388
-
3389
- if ( array_shift( $a ) === 'popup' ) {
3390
- unset( $a[0] );
3391
- if ( ! ( array_diff_assoc( $a, $b ) ) ) {
3392
- $link = '';
3393
- foreach ( array( 'scheme', 'host', 'port', 'path' ) as $v ) {
3394
- if ( ! isset( $info_a[ $v ] ) ) {
3395
- continue;
3396
- }
3397
-
3398
- if ( $v == 'scheme' ) {
3399
- $sep = '://';
3400
- } elseif ( $v == 'host' ) {
3401
- $sep = '';
3402
- } elseif ( $v == 'port' ) {
3403
- $link .= ':';
3404
- $sep = '';
3405
- } else {
3406
- $sep = '/';
3407
- }
3408
- $link = $link . $info_a[ $v ] . $sep;
3409
- }
3410
-
3411
- if ( ! empty( $info_b['query'] ) ) {
3412
- $link .= '?' . $info_b['query'];
3413
- }
3414
-
3415
- if ( ! empty( $info_b['fragment'] ) ) {
3416
- $link .= '#' . $info_b['fragment'];
3417
- }
3418
- }
3419
- }
3420
-
3421
- return $link;
3422
  }
3423
 
3424
  /**
3425
  * @param LP_Quiz $item
3426
  */
3427
  function learn_press_quiz_meta_final( $item ) {
3428
- $course = LP_Global::course();
3429
- if ( ! $course->is_final_quiz( $item->get_id() ) ) {
3430
- return;
3431
- }
3432
- echo '<span class="item-meta final-quiz">' . __( 'Final', 'learnpress' ) . '</span>';
3433
  }
3434
 
3435
  /**
3436
  * @param LP_Quiz $item
3437
  */
3438
  function learn_press_quiz_meta_questions( $item ) {
3439
- $count = $item->count_questions();
3440
- echo '<span class="item-meta count-questions">' . sprintf( $count ? _n( '%d question', '%d questions', $count,
3441
- 'learnpress' ) : __( '%d question', 'learnpress' ), $count ) . '</span>';
3442
  }
3443
 
3444
  /**
3445
  * @param LP_Quiz|LP_Lesson $item
3446
  */
3447
  function learn_press_item_meta_duration( $item ) {
3448
- $duration = $item->get_duration();
3449
-
3450
- if ( is_a( $duration, 'LP_Duration' ) && $duration->get() ) {
3451
- $format = array(
3452
- 'day' => '%s ' . _x( 'day', 'duration', 'learnpress' ),
3453
- 'hour' => '%s ' . _x( 'hour', 'duration', 'learnpress' ),
3454
- 'minute' => '%s ' . _x( 'min', 'duration', 'learnpress' ),
3455
- 'second' => '%s ' . _x( 'sec', 'duration', 'learnpress' ),
3456
- );
3457
- echo '<span class="item-meta duration">' . $duration->to_timer( $format, true ) . '</span>';
3458
- } elseif ( is_string( $duration ) && strlen( $duration ) ) {
3459
- echo '<span class="item-meta duration">' . $duration . '</span>';
3460
- }
3461
  }
3462
 
3463
  function learn_press_course_item_edit_link( $item_id, $course_id ) {
3464
- $user = learn_press_get_current_user();
3465
- if ( $user->can_edit_item( $item_id, $course_id ) ): ?>
3466
  <p class="edit-course-item-link">
3467
  <a href="<?php echo get_edit_post_link( $item_id ); ?>"><?php _e( 'Edit this item', 'learnpress' ); ?></a>
3468
  </p>
3469
- <?php endif;
3470
  }
3471
 
3472
  function learn_press_comments_template_query_args( $comment_args ) {
3473
- $post_type = get_post_type( $comment_args['post_id'] );
3474
- if ( $post_type == LP_COURSE_CPT ) {
3475
- $comment_args['type__not_in'] = 'review';
3476
- }
3477
 
3478
- return $comment_args;
3479
  }
3480
 
3481
  if ( ! function_exists( 'learn_press_filter_get_comments_number' ) ) {
3482
- function learn_press_filter_get_comments_number( $count, $post_id = 0 ) {
3483
- global $wpdb;
3484
 
3485
- if ( ! $post_id ) {
3486
- $post_id = learn_press_get_course_id();
3487
- }
3488
 
3489
- if ( ! $post_id ) {
3490
- return $count;
3491
- }
3492
 
3493
- if ( get_post_type( $post_id ) == LP_COURSE_CPT ) {
3494
- $sql = $wpdb->prepare(
3495
- " SELECT count(*) "
3496
- . " FROM {$wpdb->comments} "
3497
- . " WHERE comment_post_ID = %d "
3498
- . " AND comment_approved = 1 "
3499
- . " AND comment_type != %s ", $post_id, 'review' );
3500
 
3501
- $count = $wpdb->get_var( $sql );
3502
 
3503
- // @deprecated
3504
- $count = apply_filters( 'learn_press_get_comments_number', $count, $post_id );
3505
 
3506
- // @since 3.0.0
3507
- $count = apply_filters( 'learn-press/course-comments-number', $count, $post_id );
3508
- }
3509
 
3510
- return $count;
3511
- }
3512
  }
3513
 
3514
  if ( ! function_exists( 'learn_press_back_to_class_button' ) ) {
3515
- function learn_press_back_to_class_button() {
3516
- $courses_link = learn_press_get_page_link( 'courses' );
3517
- if ( ! $courses_link ) {
3518
- return;
3519
- }
3520
- ?>
3521
 
3522
  <a href="<?php echo learn_press_get_page_link( 'courses' ); ?>"><?php _e( 'Back to class',
3523
- 'learnpress' ); ?></a>
3524
- <?php
3525
- }
3526
  }
3527
 
3528
  if ( ! function_exists( 'learn_press_reset_single_item_summary_content' ) ) {
3529
- function learn_press_reset_single_item_summary_content() {
3530
- if ( isset( $_REQUEST['content-only'] ) ) {
3531
- global $wp_filter;
3532
- if ( isset( $wp_filter['learn-press/single-item-summary'] ) ) {
3533
- unset( $wp_filter['learn-press/single-item-summary'] );
3534
- }
3535
 
3536
- $course = learn_press_get_course();
3537
- $course->get_curriculum();
3538
 
3539
- add_action( 'learn-press/single-item-summary', 'learn_press_single_course_content_item', 10 );
3540
- }
3541
- }
3542
  }
3543
 
3544
  //function learn_press_course_item_class( $defaults, $this->get_item_type(), $this->get_id()){
@@ -3579,27 +3585,27 @@ if ( ! function_exists( 'learn_press_reset_single_item_summary_content' ) ) {
3579
  * @since 3.0.0
3580
  */
3581
  function learn_press_body_classes( $classes ) {
3582
- $pages = learn_press_static_page_ids();
3583
 
3584
- if ( $pages ) {
3585
- $is_lp_page = false;
3586
- settype( $classes, 'array' );
3587
 
3588
- foreach ( $pages as $slug => $id ) {
3589
- if ( is_page( $id ) ) {
3590
- $classes[] = $slug;
3591
- $is_lp_page = true;
3592
- }
3593
- }
3594
 
3595
- if ( $is_lp_page || is_learnpress() ) {
3596
- $classes[] = get_stylesheet();
3597
- $classes[] = 'learnpress';
3598
- $classes[] = 'learnpress-page';
3599
- }
3600
- }
3601
 
3602
- return $classes;
3603
  }
3604
 
3605
  add_filter( 'body_class', 'learn_press_body_classes', 10 );
@@ -3614,173 +3620,173 @@ add_filter( 'body_class', 'learn_press_body_classes', 10 );
3614
  *
3615
  */
3616
  function learn_press_is_learning_course( $course_id = 0 ) {
3617
- $user = learn_press_get_current_user();
3618
- $course = $course_id ? learn_press_get_course( $course_id ) : LP_Global::course();
3619
- $is_learning = false;
3620
- $has_status = false;
3621
-
3622
- if ( $user && $course ) {
3623
- $has_status = $user->has_course_status( $course->get_id(), array(
3624
- 'enrolled',
3625
- 'finished'
3626
- ) );
3627
- }
3628
 
3629
- if ( $course && ( ! $course->is_required_enroll() || $has_status ) ) {
3630
- $is_learning = true;
3631
- }
3632
 
3633
- return apply_filters( 'learn-press/is-learning-course', $is_learning );
3634
  }
3635
 
3636
  function learn_press_get_color_schemas() {
3637
- $colors = array(
3638
- array(
3639
- 'title' => __( 'Popup links color', 'learnpress' ),
3640
- 'id' => 'popup-links-color',
3641
- 'selectors' => array(
3642
- 'body.course-item-popup a' => "color"
3643
- ),
3644
- 'std' => ''
3645
- ),
3646
- array(
3647
- 'title' => __( 'Popup heading background', 'learnpress' ),
3648
- 'id' => 'popup-heading-bg',
3649
- 'selectors' => array(
3650
- '#course-item-content-header' => "background-color"
3651
- ),
3652
- 'std' => '#e7f7ff'
3653
- ),
3654
- array(
3655
- 'title' => __( 'Popup heading color', 'learnpress' ),
3656
- 'id' => 'popup-heading-color',
3657
- 'selectors' => array(
3658
- '#course-item-content-header a' => "color",
3659
- '#course-item-content-header .course-item-search input' => "color",
3660
- '#course-item-content-header .course-item-search input:focus' => "color",
3661
- '#course-item-content-header .course-item-search input::placeholder' => "color",
3662
- '#course-item-content-header .course-item-search button' => "color",
3663
- ),
3664
- 'std' => ''
3665
- ),
3666
- array(
3667
- 'title' => __( 'Popup curriculum background', 'learnpress' ),
3668
- 'id' => 'popup-curriculum-background',
3669
- 'selectors' => array(
3670
- 'body.course-item-popup .course-curriculum ul.curriculum-sections .section-content .course-item' => "background-color",
3671
- 'body.course-item-popup #learn-press-course-curriculum' => "background-color",
3672
- ),
3673
- 'std' => '#FFF'
3674
- ),
3675
- array(
3676
- 'title' => __( 'Popup item color', 'learnpress' ),
3677
- 'id' => 'popup-item-color',
3678
- 'selectors' => array(
3679
- 'body.course-item-popup .course-curriculum ul.curriculum-sections .section-content .course-item a' => "color",
3680
- ),
3681
- 'std' => ''
3682
- ),
3683
- array(
3684
- 'title' => __( 'Popup active item background', 'learnpress' ),
3685
- 'id' => 'popup-active-item-background',
3686
- 'selectors' => array(
3687
- 'body.course-item-popup .course-curriculum ul.curriculum-sections .section-content .course-item.current' => "background-color",
3688
- ),
3689
- 'std' => '#F9F9F9'
3690
- ),
3691
- array(
3692
- 'title' => __( 'Popup active item color', 'learnpress' ),
3693
- 'id' => 'popup-active-item-color',
3694
- 'selectors' => array(
3695
- 'body.course-item-popup .course-curriculum ul.curriculum-sections .section-content .course-item.current a' => "color",
3696
- ),
3697
- 'std' => ''
3698
- ),
3699
- array(
3700
- 'title' => __( 'Popup content background', 'learnpress' ),
3701
- 'id' => 'popup-content-background',
3702
- 'selectors' => array(
3703
- 'body.course-item-popup #learn-press-content-item' => "background-color"
3704
- ),
3705
- 'std' => '#FFF'
3706
- ),
3707
- array(
3708
- 'title' => __( 'Popup content color', 'learnpress' ),
3709
- 'id' => 'popup-content-color',
3710
- 'selectors' => array(
3711
- 'body.course-item-popup #learn-press-content-item' => "color"
3712
- ),
3713
- 'std' => ''
3714
- ),
3715
- array(
3716
- 'title' => __( 'Section heading background', 'learnpress' ),
3717
- 'id' => 'section-heading-bg',
3718
- 'selectors' => array(
3719
- 'body.course-item-popup #learn-press-course-curriculum .section-header' => 'background'
3720
- )
3721
- ),
3722
- array(
3723
- 'title' => __( 'Section heading color', 'learnpress' ),
3724
- 'id' => 'section-heading-color',
3725
- 'selectors' => array(
3726
- 'body.course-item-popup #learn-press-course-curriculum .section-header' => 'color'
3727
- )
3728
- ),
3729
- array(
3730
- 'title' => __( 'Section heading bottom color', 'learnpress' ),
3731
- 'id' => 'section-heading-bottom-color',
3732
- 'selectors' => array(
3733
- '.course-curriculum ul.curriculum-sections .section-header' => 'border-bottom: 1px solid %s'
3734
- ),
3735
- 'std' => '#00adff'
3736
- ),
3737
- array(
3738
- 'title' => __( 'Lines color', 'learnpress' ),
3739
- 'id' => 'lines-color',
3740
- 'selectors' => array(
3741
- '#course-item-content-header' => 'border-bottom: 1px solid %s',
3742
- '.course-curriculum ul.curriculum-sections .section-content .course-item' => 'border-bottom: 1px solid %s',
3743
- 'body.course-item-popup #learn-press-course-curriculum' => 'border-right: 1px solid %s',
3744
- '#course-item-content-header .toggle-content-item' => 'border-left: 1px solid %s'
3745
- ),
3746
- 'std' => 'DDD'
3747
- ),
3748
- array(
3749
- 'title' => __( 'Profile cover background', 'learnpress' ),
3750
- 'id' => 'profile-cover-bg',
3751
- 'selectors' => array(
3752
- '#learn-press-profile-header' => 'background-color'
3753
- ),
3754
- 'std' => '#f0defb'
3755
- ),
3756
- array(
3757
- 'title' => __( 'Scrollbar', 'learnpress' ),
3758
- 'id' => 'scroll-bar',
3759
- 'selectors' => array(
3760
- '.scrollbar-light > .scroll-element.scroll-y .scroll-bar' => 'background-color',
3761
- '.scrollbar-light > .scroll-element .scroll-element_size' => 'background'
3762
- ),
3763
- 'std' => '#12b3ff'
3764
- ),
3765
- array(
3766
- 'title' => __( 'Progress bar color', 'learnpress' ),
3767
- 'id' => 'progress-bar-color',
3768
- 'selectors' => array(
3769
- '.learn-press-progress .progress-bg' => 'background-color'
3770
- ),
3771
- 'std' => '#DDDDDD'
3772
- ),
3773
- array(
3774
- 'title' => __( 'Progress bar active color', 'learnpress' ),
3775
- 'id' => 'scroll-bar',
3776
- 'selectors' => array(
3777
- '.learn-press-progress .progress-bg .progress-active' => 'background-color'
3778
- ),
3779
- 'std' => '#00adff'
3780
- ),
3781
- );
3782
-
3783
- return apply_filters( 'learn-press/color-schemas', $colors );
3784
  }
3785
 
3786
  /**
@@ -3790,54 +3796,54 @@ function learn_press_get_color_schemas() {
3790
  */
3791
  function learn_press_print_custom_styles() {
3792
 
3793
- if ( 'yes' !== LP()->settings()->get( 'enable_custom_colors' ) ) {
3794
- return;
3795
- }
3796
-
3797
- if ( ! $schemas = LP()->settings()->get( 'color_schemas' ) ) {
3798
- return;
3799
- }
3800
-
3801
- // Get current
3802
- $schema = reset( $schemas );
3803
- $colors = learn_press_get_color_schemas();
3804
- $css = array();
3805
-
3806
- foreach ( $colors as $options ) {
3807
- if ( array_key_exists( $options['id'], $schema ) ) {
3808
-
3809
- if ( empty( $options['selectors'] ) ) {
3810
- continue;
3811
- }
3812
-
3813
- foreach ( $options['selectors'] as $selector => $props ) {
3814
- if ( empty( $css[ $selector ] ) ) {
3815
- $css[ $selector ] = "";
3816
- }
3817
- if ( is_string( $props ) ) {
3818
- if ( strpos( $props, '%s' ) !== false ) {
3819
- $css[ $selector ] .= sprintf( $props, $schema[ $options['id'] ] ) . ";";
3820
- } else {
3821
- $css[ $selector ] .= "{$props}:" . $schema[ $options['id'] ] . ";";
3822
- }
3823
- } else {
3824
- foreach ( $props as $prop ) {
3825
- if ( strpos( $prop, '%s' ) !== false ) {
3826
- $css[ $selector ] .= sprintf( $prop, $schema[ $options['id'] ] ) . ";";
3827
- } else {
3828
- $css[ $selector ] .= "{$prop}:" . $schema[ $options['id'] ] . ";";
3829
- }
3830
- }
3831
- }
3832
- }
3833
- }
3834
- }
3835
-
3836
- if ( ! $css ) {
3837
- return;
3838
- }
3839
-
3840
- ?>
3841
  <style id="learn-press-custom-css">
3842
  <?php
3843
  foreach($css as $selector => $props){
@@ -3845,7 +3851,7 @@ function learn_press_print_custom_styles() {
3845
  }
3846
  ?>
3847
  </style>
3848
- <?php
3849
  }
3850
 
3851
  add_action( 'wp_head', 'learn_press_print_custom_styles' );
@@ -3856,14 +3862,14 @@ add_action( 'wp_head', 'learn_press_print_custom_styles' );
3856
  * of the courses.
3857
  */
3858
  function learn_press_redirect_search() {
3859
- if ( learn_press_is_search() ) {
3860
- $search_page = learn_press_get_page_id( 'search' );
3861
- if ( ! is_page( $search_page ) ) {
3862
- global $wp_query;
3863
- wp_redirect( add_query_arg( 's', $wp_query->query_vars['s'], get_the_permalink( $search_page ) ) );
3864
- exit();
3865
- }
3866
- }
3867
  }
3868
 
3869
  /**
@@ -3874,53 +3880,53 @@ function learn_press_redirect_search() {
3874
  *
3875
  */
3876
  function learn_press_current_user_enrolled_course() {
3877
- $user = learn_press_get_current_user();
3878
- $course = LP_Global::course();
3879
 
3880
- if ( ! $course ) {
3881
- return false;
3882
- }
3883
 
3884
- return $user->has_enrolled_course( $course->get_id() );
3885
  }
3886
 
3887
  function learn_press_content_item_summary_class( $more = '', $echo = true ) {
3888
- $classes = array( 'content-item-summary' );
3889
- $classes = LP_Helper::merge_class( $classes, $more );
3890
- $classes = apply_filters( 'learn-press/content-item-summary-class', $classes );
3891
- $output = 'class="' . join( ' ', $classes ) . '"';
3892
 
3893
- if ( $echo ) {
3894
- echo $output;
3895
- }
3896
 
3897
- return $output;
3898
  }
3899
 
3900
  function learn_press_content_item_summary_classes( $classes ) {
3901
- if ( ! $item = LP_Global::course_item() ) {
3902
- return $classes;
3903
- }
3904
 
3905
- if ( $item->get_post_type() !== LP_LESSON_CPT ) {
3906
- return $classes;
3907
- }
3908
 
3909
- if ( 'yes' !== LP()->settings->get( 'enable_lesson_video' ) ) {
3910
- return $classes;
3911
- }
3912
 
3913
- if ( $item->get_video() ) {
3914
- $classes[] = 'content-item-video';
3915
- }
3916
 
3917
- return $classes;
3918
  }
3919
 
3920
  function learn_press_maybe_load_comment_js() {
3921
- if ( $item = LP_Global::course_item() ) {
3922
- wp_enqueue_script( 'comment-reply' );
3923
- }
3924
  }
3925
 
3926
  add_action( 'wp_enqueue_scripts', 'learn_press_maybe_load_comment_js' );
@@ -3975,36 +3981,36 @@ add_action( 'wp_enqueue_scripts', 'learn_press_maybe_load_comment_js' );
3975
  }*/
3976
 
3977
  function learn_press_term_conditions_template() {
3978
- $page_id = learn_press_get_page_id( 'term_conditions' );
3979
- if ( $page_id ) {
3980
- $page_link = get_page_link( $page_id );
3981
- learn_press_get_template( 'checkout/term-conditions.php', array( 'page_link' => $page_link ) );
3982
- }
3983
  }
3984
 
3985
  add_action( 'learn-press/after-payment-methods', 'learn_press_term_conditions_template' );
3986
 
3987
  function learn_press_get_link_current_question_instead_of_continue_button( $link, $item ) {
3988
- if ( get_post_type( $item->get_id() ) === LP_QUIZ_CPT ) {
3989
- $user = LP_Global::user();
3990
 
3991
- if ( ! $user ) {
3992
- return $link;
3993
- }
3994
 
3995
- $course = $item->get_course();
3996
 
3997
- if ( ! $course ) {
3998
- return $link;
3999
- }
4000
 
4001
- $quiz_data = $user->get_item_data( $item->get_id(), $course->get_id() );
4002
- if ( $quiz_data && $quiz_data->get_status() === 'started' ) {
4003
- $link = $item->get_question_link( $quiz_data->get_current_question() );
4004
- }
4005
- }
4006
 
4007
- return $link;
4008
  }
4009
 
4010
  add_filter( 'learn-press/course-item-link', 'learn_press_get_link_current_question_instead_of_continue_button', 10, 2 );
@@ -4013,12 +4019,12 @@ add_filter( 'learn-press/course-item-link', 'learn_press_get_link_current_questi
4013
  * @since 3.2.6
4014
  */
4015
  function learn_press_define_debug_mode() {
4016
- if ( ! learn_press_is_debug() ) {
4017
- return;
4018
- }
4019
- ?>
4020
  <script>window.LP_DEBUG = true;</script>
4021
- <?php
4022
  }
4023
 
4024
  add_action( 'admin_print_scripts', 'learn_press_define_debug_mode' );
7
  * @version 1.0
8
  */
9
  if ( ! defined( 'ABSPATH' ) ) {
10
+ exit; // Exit if accessed directly
11
  }
12
  /**
13
  * New functions since 3.0.0
14
  */
15
  if ( ! function_exists( 'learn_press_course_purchase_button' ) ) {
16
+ /**
17
+ * Purchase course button.
18
+ */
19
+ function learn_press_course_purchase_button() {
20
+ $course = LP_Global::course();
21
+ $user = learn_press_get_user( get_current_user_id() );
22
+
23
+ if ( empty( $user ) || ! $course ) {
24
+ return;
25
+ }
26
+
27
+ $course_data = $user->get_course_data( $course->get_id() );
28
+ $is_finish = $course_data->is_finished();
29
+ $can_retake_course = $user->can_retake_course( $course->get_id() );
30
+ $purchased = $user->has_purchased_course( $course->get_id() );
31
+
32
+ // if free course
33
+ if ( $course->is_free() ) {
34
+ return;
35
+ }
36
+
37
+ // if has retake and has purchased
38
+ if ( $can_retake_course > 0 && $purchased ) {
39
+ return;
40
+ }
41
+
42
+ // if external link
43
+ if ( $course->get_external_link() ) {
44
+ return;
45
+ }
46
+
47
+ // If course is not published
48
+ if ( ! $course->is_publish() ) {
49
+ return;
50
+ }
51
+
52
+ // Course is not require enrolling
53
+ if ( ! $course->is_required_enroll() ) {
54
+ return;
55
+ }
56
+
57
+ //remove by tungnx 3.2.8.4
58
  // if ( $user->has_enrolled_course( $course->get_id() )) {
59
  //
60
  // return;
61
  // }
62
 
63
+ // If course is reached limitation.
64
+ if ( ! $course->is_in_stock() ) {
65
+ $message = apply_filters(
66
+ 'learn-press/maximum-students-reach',
67
+ __( 'This course is out of stock', 'learnpress' )
68
+ );
69
+ learn_press_display_message( $message );
70
 
71
 
72
+ return;
73
+ }
74
 
75
+ // User can not purchase course
76
+ if ( ! $user->can_purchase_course( $course->get_id() ) ) {
77
+ return;
78
+ }
79
 
80
 
81
+ // If user has already purchased course but has not finished yet.
82
+ /*if ( $user->has_purchased_course( $course->get_id() ) && 'finished' !== $user->get_course_status( $course->get_id() ) ) {
83
+ return;
84
+ }*/
85
 
86
 
87
+ // If the order contains course is processing
88
+ if ( ( $order = $user->get_course_order( $course->get_id() ) ) && $order->get_status() === 'processing' ) {
89
+ $message = apply_filters(
90
+ 'learn-press/order-processing-message',
91
+ __( 'Your order is waiting for processing', 'learnpress' )
92
+ );
93
+ learn_press_display_message( $message );
94
 
95
+ return;
96
+ }
97
 
98
+ $args_load_tmpl = array(
99
+ 'template_name' => 'single-course/buttons/purchase.php',
100
+ 'template_path' => '',
101
+ 'default_path' => ''
102
+ );
103
 
104
+ $args_load_tmpl = apply_filters( 'learn-press/tmpl-button-purchase-course', $args_load_tmpl, $course );
105
 
106
+ if ( $is_finish ) {
107
 
108
+ //set for course finished
109
+ if ( $course->is_allow_repurchase_course() ) {
110
+ learn_press_get_template( $args_load_tmpl['template_name'], array( 'course' => $course ),
111
+ $args_load_tmpl['template_path'], $args_load_tmpl['default_path'] );
112
+ }
113
 
114
+ } elseif ( ! $is_finish ) {
115
+ // Set for unfinish course
116
 
117
+ // case1: has purchase
118
 
119
+ if ( $purchased ) {
120
 
121
+ if ( $course->is_allow_repurchase_course() &&
122
+ $user->user_check_blocked_duration( $course->get_id() ) == true &&
123
+ $course_data->get_status() == 'enrolled' ) {
124
+ learn_press_get_template( $args_load_tmpl['template_name'], array( 'course' => $course ),
125
+ $args_load_tmpl['template_path'], $args_load_tmpl['default_path'] );
126
+ }
127
 
128
+ // case2: not purchase
129
+ } else {
130
+ learn_press_get_template( $args_load_tmpl['template_name'], array( 'course' => $course ),
131
+ $args_load_tmpl['template_path'], $args_load_tmpl['default_path'] );
132
+ }
133
 
134
+ }
135
+ }
136
  }
137
 
138
  if ( ! function_exists( 'learn_press_course_enroll_button' ) ) {
139
+ /**
140
+ * Enroll course button.
141
+ */
142
+ function learn_press_course_enroll_button() {
143
+ $user = learn_press_get_user( get_current_user_id() );
144
+ $course = LP_Global::course();
145
+ $purchased = $user->has_purchased_course( $course->get_id() );
146
+ $course_data = $user->get_course_data( $course->get_id() );
147
+ $is_finish = $course_data->is_finished();
148
+ $is_enrolled = $course_data->is_enrolled();
149
+ $can_retake_course = $user->can_retake_course( $course->get_id() );
150
+
151
+ if ( empty( $user ) ) {
152
+ return;
153
+ }
154
 
155
+ // if can retake course
156
+ if ( $can_retake_course > 0 && $purchased ) {
157
+ if ( $is_enrolled ) {
158
+ return;
159
+ }
160
+ }
161
 
162
+ if ( $course->get_external_link() ) {
163
+ learn_press_show_log( 'Course has external link' );
164
 
165
+ return;
166
+ }
167
 
168
+ // If course is not published
169
+ if ( ! $course->is_publish() ) {
170
+ learn_press_show_log( 'Course is not published' );
171
 
172
+ return;
173
+ }
174
 
175
+ // Locked course for user
176
+ if ( $user->is_locked_course( $course->get_id() ) ) {
177
+ learn_press_show_log( 'Course is locked' );
178
 
179
+ return;
180
+ }
181
 
182
+ // Course out of stock (full students)
183
+ if ( ! $course->is_in_stock() ) {
184
+ return;
185
+ }
186
+ // Course is not require enrolling
187
+ if ( ! $course->is_required_enroll() ) {
188
+ return;
189
+ }
190
+ // User can not enroll course
191
+ if ( ! $user->can_enroll_course( $course->get_id() ) ) {
192
+ return;
193
+ }
194
 
195
+ // For free course and user does not purchased
196
+ if ( ! $is_finish ) {
197
 
198
+ // set for course unfinished
199
+ if ( $purchased && ! in_array( $course_data->get_status(), array( 'enrolled' ) ) ) {
200
 
201
+ learn_press_get_template( 'single-course/buttons/enroll.php' );
202
 
203
+ } elseif ( ! $purchased && ( ! in_array( $course_data->get_status(),
204
+ array( 'enrolled' ) ) && $course->is_free() ) ) {
205
 
206
+ learn_press_get_template( 'single-course/buttons/enroll.php' );
207
 
208
+ }
209
+ }
210
+ }
211
 
212
  }
213
 
214
  if ( ! function_exists( 'learn_press_course_retake_button' ) ) {
215
 
216
+ /**
217
+ * Retake course button
218
+ */
219
+ function learn_press_course_retake_button() {
220
+
221
+ if ( ! isset( $course ) ) {
222
+ $course = learn_press_get_course();
223
+ }
224
+
225
+ if ( ! $course ) {
226
+ return;
227
+ }
228
+
229
+ $retake_config = absint( get_post_meta( $course->get_id(), '_lp_retake_count', true ) );
230
+
231
+ if ( $retake_config == 0 ) {
232
+ return;
233
+ }
234
+
235
+ if ( ! learn_press_current_user_enrolled_course() && $course->get_external_link() ) {
236
+ return;
237
+ }
238
+
239
+ if ( ! isset( $user ) ) {
240
+ $user = learn_press_get_current_user();
241
+ }
242
+
243
+ if ( ! $user ) {
244
+ return;
245
+ }
246
+
247
+ // Check user have turn retake course
248
+ $can_retake_course = $user->can_retake_course( $course->get_id() );
249
+ if ( ! $can_retake_course ) {
250
+ return;
251
+ }
252
+ // Check user not enroll course
253
+ if ( ! $user->has_enrolled_course( $course->get_id() ) ) {
254
+ return;
255
+ }
256
+
257
+ // If user has not finished course
258
+ if ( ! $user->has_finished_course( $course->get_id() ) ) {
259
+ /**
260
+ * Check course duration not expire
261
+ *
262
+ * @author hungkv
263
+ * @since 3.2.7.7
264
+ */
265
+ if ( ! $course->is_block_item_content_duration() ||
266
+ ( $course->is_block_item_content_duration() && $course->expires_to_milliseconds() > 0 ) ) {
267
+ return;
268
+ }
269
+ }
270
+
271
+ $args = array( 'course' => $course, 'user' => $user, 'count' => $can_retake_course );
272
+
273
+ learn_press_get_template( 'single-course/buttons/retake.php', $args );
274
+ }
275
  }
276
 
277
  if ( ! function_exists( 'learn_press_course_continue_button' ) ) {
278
 
279
+ /**
280
+ * Retake course button
281
+ */
282
+ function learn_press_course_continue_button() {
283
+ $user = LP_Global::user();
284
+ $course = LP_Global::course();
285
 
286
+ if ( ! learn_press_current_user_enrolled_course() && $course->get_external_link() ) {
287
+ return;
288
+ }
289
 
290
+ if ( ! $user ) {
291
+ return;
292
+ }
293
 
294
+ if ( false === ( $course_data = $user->get_course_data( $course->get_id() ) ) ) {
295
+ return;
296
+ }
297
 
298
+ if ( ! $course_data->is_available() ) {
299
+ return;
300
+ }
301
 
302
+ if ( $course_data->get_status() !== 'enrolled' ) {
303
+ return;
304
+ }
305
 
306
+ if ( ! $course_data->get_item_at( 0 ) ) {
307
+ return;
308
+ }
309
 
310
+ /**
311
+ * Check course duration expire
312
+ *
313
+ * @author hungkv
314
+ * @since 3.2.7.7
315
+ */
316
+ if ( $course->is_block_item_content_duration() === true && $course->expires_to_milliseconds() <= 0 ) {
317
+ return;
318
+ }
319
 
320
+ learn_press_get_template( 'single-course/buttons/continue.php' );
321
+ }
322
  }
323
 
324
 
325
  if ( ! function_exists( 'learn_press_course_finish_button' ) ) {
326
 
327
+ /**
328
+ * Retake course button
329
+ */
330
+ function learn_press_course_finish_button() {
331
+ $user = LP_Global::user();
332
+ $course = LP_Global::course();
333
 
334
+ if ( ! learn_press_current_user_enrolled_course() && $course->get_external_link() ) {
335
+ return;
336
+ }
337
 
338
+ if ( ! $user ) {
339
+ return;
340
+ }
341
 
342
+ if ( false === ( $course_data = $user->get_course_data( $course->get_id() ) ) ) {
343
+ return;
344
+ }
345
 
346
+ if ( ! $user->can_finish_course( $course->get_id() ) ) {
347
+ return;
348
+ }
349
 
350
+ learn_press_get_template( 'single-course/buttons/finish.php' );
351
+ }
352
  }
353
 
354
  if ( ! function_exists( 'learn_press_course_external_button' ) ) {
355
 
356
+ /**
357
+ * Retake course button
358
+ */
359
+ function learn_press_course_external_button() {
360
+ $course = LP_Global::course();
361
 
362
+ if ( ! $link = $course->get_external_link() ) {
363
+ return;
364
+ }
365
 
366
+ $user = learn_press_get_current_user();
367
 
368
+ if ( ! $user->has_enrolled_course( $course->get_id() ) ) {
369
+ // Remove all other buttons
370
+ learn_press_remove_course_buttons();
371
+ learn_press_get_template( 'single-course/buttons/external-link.php' );
372
+ // Add back other buttons for other courses
373
+ add_action( 'learn-press/after-course-buttons', 'learn_press_add_course_buttons' );
374
+ }
375
+ }
376
  }
377
 
378
  if ( ! function_exists( 'learn_press_add_course_buttons' ) ) {
379
+ function learn_press_add_course_buttons() {
380
+ add_action( 'learn-press/course-buttons', 'learn_press_course_purchase_button', 10 );
381
+ add_action( 'learn-press/course-buttons', 'learn_press_course_enroll_button', 15 );
382
+ add_action( 'learn-press/course-buttons', 'learn_press_course_retake_button', 20 );
383
+ add_action( 'learn-press/course-buttons', 'learn_press_course_continue_button', 25 );
384
+ add_action( 'learn-press/course-buttons', 'learn_press_course_finish_button', 30 );
385
+ }
386
  }
387
 
388
  if ( ! function_exists( 'learn_press_remove_course_buttons' ) ) {
389
+ function learn_press_remove_course_buttons() {
390
+ remove_action( 'learn-press/course-buttons', 'learn_press_course_purchase_button', 10 );
391
+ remove_action( 'learn-press/course-buttons', 'learn_press_course_enroll_button', 15 );
392
+ remove_action( 'learn-press/course-buttons', 'learn_press_course_retake_button', 20 );
393
+ remove_action( 'learn-press/course-buttons', 'learn_press_course_continue_button', 25 );
394
+ remove_action( 'learn-press/course-buttons', 'learn_press_course_finish_button', 30 );
395
+ }
396
  }
397
 
398
  if ( ! function_exists( 'learn_press_curriculum_section_title' ) ) {
399
 
400
+ /**
401
+ * Section title
402
+ *
403
+ * @param LP_Course_Section $section
404
+ *
405
+ * @hooked learn-press/section-summary
406
+ */
407
+ function learn_press_curriculum_section_title( $section ) {
408
+ learn_press_get_template( 'single-course/section/title.php', array( 'section' => $section ) );
409
+ }
410
 
411
  }
412
 
413
  if ( ! function_exists( 'learn_press_curriculum_section_content' ) ) {
414
 
415
+ /**
416
+ * Section content
417
+ *
418
+ * @param LP_Course_Section $section
419
+ *
420
+ * @hooked learn-press/section-summary
421
+ */
422
+ function learn_press_curriculum_section_content( $section ) {
423
+ learn_press_get_template( 'single-course/section/content.php', array( 'section' => $section ) );
424
+ }
425
 
426
  }
427
 
428
  if ( ! function_exists( 'learn_press_checkout_form_login' ) ) {
429
 
430
+ /**
431
+ * Output login form before checkout form if user is not logged in
432
+ *
433
+ * @hooked learn-press/before-checkout-form
434
+ */
435
+ function learn_press_checkout_form_login() {
436
 
437
+ if ( ! LP()->checkout()->is_enable_login() ) {
438
+ return;
439
+ }
440
 
441
+ learn_press_get_template( 'checkout/form-login.php' );
442
+ }
443
 
444
  }
445
 
446
  if ( ! function_exists( 'learn_press_checkout_form_register' ) ) {
447
 
448
+ /**
449
+ * Output register form before checkout form if user is not logged in.
450
+ *
451
+ * @hooked learn-press/before-checkout-form
452
+ */
453
+ function learn_press_checkout_form_register() {
454
 
455
+ if ( ! LP()->checkout()->is_enable_register() ) {
456
+ return;
457
+ }
458
 
459
+ learn_press_get_template( 'checkout/form-register.php' );
460
+ }
461
 
462
  }
463
 
464
  if ( ! function_exists( 'learn_press_order_review' ) ) {
465
+ /**
466
+ * Output order details
467
+ *
468
+ * @hooked learn-press/checkout-order-review
469
+ */
470
+ function learn_press_order_review() {
471
+ $cart = learn_press_get_checkout_cart();
472
+ learn_press_get_template( 'checkout/review-order.php', array( 'cart' => $cart ) );
473
+ }
474
  }
475
 
476
  if ( ! function_exists( 'learn_press_order_payment' ) ) {
477
+ /**
478
+ * Output payment methods
479
+ *
480
+ * @hooked learn-press/checkout-order-review
481
+ */
482
+ function learn_press_order_payment() {
483
+ $available_gateways = LP_Gateways::instance()->get_available_payment_gateways();
484
+
485
+ learn_press_get_template( 'checkout/payment.php', array( 'available_gateways' => $available_gateways ) );
486
+ }
487
  }
488
 
489
  if ( ! function_exists( 'learn_press_order_guest_email' ) ) {
490
+ /**
491
+ * Output payment methods
492
+ *
493
+ * @hooked learn-press/checkout-order-review
494
+ */
495
+ function learn_press_order_guest_email() {
496
+ $checkout = LP()->checkout();
497
+ $is_exists = $checkout->checkout_email_exists();
498
+
499
+ $args = array(
500
+ 'checkout' => $checkout,
501
+ 'is_exists' => $is_exists
502
+ );
503
+
504
+ if ( $checkout->is_enable_guest_checkout() && ! is_user_logged_in() ) {
505
+ learn_press_get_template( 'checkout/guest-email.php', $args );
506
+ }
507
+ }
508
  }
509
 
510
  if ( ! function_exists( 'learn_press_order_comment' ) ) {
511
+ /**
512
+ * Output order comment input
513
+ *
514
+ * @hooked learn-press/checkout-order-review
515
+ */
516
+ function learn_press_order_comment() {
517
+ learn_press_get_template( 'checkout/order-comment.php' );
518
+ }
519
  }
520
 
521
  if ( ! function_exists( 'learn_press_user_profile_header' ) ) {
522
+ /**
523
+ * Output order comment input
524
+ *
525
+ * @hooked learn-press/before-user-profile
526
+ */
527
+ function learn_press_user_profile_header( $user ) {
528
+ $profile = LP_Global::profile();
529
+
530
+ if ( $profile->get_user()->is_guest() ) {
531
+ return;
532
+ }
533
 
534
+ learn_press_get_template( 'profile/profile-cover.php', array( 'user' => $user ) );
535
+ }
536
  }
537
 
538
  if ( ! function_exists( 'learn_press_user_profile_content' ) ) {
539
+ /**
540
+ * Output order comment input
541
+ *
542
+ * @hooked learn-press/user-profile
543
+ */
544
+ function learn_press_user_profile_content( $user ) {
545
+ $profile = LP_Global::profile();
546
+
547
+ if ( $profile->get_user()->is_guest() ) {
548
+ return;
549
+ }
550
 
551
+ learn_press_get_template( 'profile/content.php', array( 'user' => $user ) );
552
+ }
553
  }
554
 
555
  if ( ! function_exists( 'learn_press_user_profile_footer' ) ) {
556
+ /**
557
+ * Output order comment input
558
+ *
559
+ * @hooked learn-press/after-user-profile
560
+ */
561
+ function learn_press_user_profile_footer( $user ) {
562
+ //learn_press_get_template( 'profile/footer.php', array( 'user' => $user ) );
563
+ }
564
  }
565
 
566
  if ( ! function_exists( 'learn_press_user_profile_tabs' ) ) {
567
+ /**
568
+ * Get tabs for user profile
569
+ *
570
+ * @param $user
571
+ */
572
+ function learn_press_user_profile_tabs( $user = null ) {
573
+ $profile = LP_Global::profile();
574
+
575
+ if ( $profile->get_user()->is_guest() ) {
576
+ return;
577
+ }
578
 
579
+ learn_press_get_template( 'profile/tabs.php', array( 'user' => $user ) );
580
+ }
581
  }
582
 
583
  if ( ! function_exists( 'learn_press_single_course_summary' ) ) {
584
+ /**
585
+ * Display content of single course summary
586
+ */
587
+ function learn_press_single_course_summary() {
588
+ if ( learn_press_is_learning_course() ) {
589
+ learn_press_get_template( 'single-course/content-learning.php' );
590
+ } else {
591
+ learn_press_get_template( 'single-course/content-landing.php' );
592
+ }
593
+ }
594
  }
595
 
596
  if ( ! function_exists( 'learn_press_course_price' ) ) {
597
+ /**
598
+ * Display course price.
599
+ */
600
+ function learn_press_course_price() {
601
+ $user = LP_Global::user();
602
+ $course = LP_Global::course();
603
+
604
+ if ( ! $user ) {
605
+ return;
606
+ }
607
 
608
+ if ( $user && $user->has_enrolled_course( $course->get_id() ) ) {
609
+ return;
610
+ }
611
 
612
+ learn_press_get_template( 'single-course/price.php' );
613
+ }
614
  }
615
 
616
  if ( ! function_exists( 'learn_press_course_meta_start_wrapper' ) ) {
617
+ /**
618
+ * Output the thumbnail of the course within loop
619
+ */
620
+ function learn_press_course_meta_start_wrapper() {
621
+ learn_press_get_template( 'global/course-meta-start.php' );
622
+ }
623
  }
624
 
625
  if ( ! function_exists( 'learn_press_course_meta_end_wrapper' ) ) {
626
+ /**
627
+ * Output the thumbnail of the course within loop
628
+ */
629
+ function learn_press_course_meta_end_wrapper() {
630
+ learn_press_get_template( 'global/course-meta-end.php' );
631
+ }
632
  }
633
 
634
  if ( ! function_exists( 'learn_press_course_students' ) ) {
635
+ /**
636
+ * Display course students
637
+ */
638
+ function learn_press_course_students() {
639
+ learn_press_get_template( 'single-course/students.php' );
640
+ }
641
  }
642
 
643
  if ( ! function_exists( 'learn_press_course_status' ) ) {
644
+ /**
645
+ * Display the title for single course
646
+ */
647
+ function learn_press_course_status() {
648
+ learn_press_get_template( 'single-course/status.php' );
649
+ }
650
  }
651
 
652
  if ( ! function_exists( 'learn_press_courses_loop_item_instructor' ) ) {
653
+ /**
654
+ * Output the instructor of the course within loop
655
+ */
656
+ function learn_press_courses_loop_item_instructor() {
657
+ learn_press_get_template( 'loop/course/instructor.php' );
658
+ }
659
  }
660
 
661
  if ( ! function_exists( 'learn_press_course_tabs' ) ) {
662
+ /*
663
+ * Output course tabs
664
+ */
665
 
666
+ function learn_press_course_tabs() {
667
+ learn_press_get_template( 'single-course/tabs/tabs.php' );
668
+ }
669
  }
670
 
671
  if ( ! function_exists( 'learn_press_course_item_content' ) ) {
672
+ /**
673
+ * Get course item content template.
674
+ *
675
+ * @since 3.0.0
676
+ */
677
+ function learn_press_course_item_content() {
678
+ $item = LP_Global::course_item();
679
+
680
+ /**
681
+ * Fix only for WPBakery load style inline
682
+ * custom CSS is provided, load inline style.
683
+ *
684
+ * @editor tuanta
685
+ * @since 3.2.8.1
686
+ */
687
+ $shortcodes_custom_css = get_post_meta( $item->get_id(), '_wpb_shortcodes_custom_css', true );
688
+
689
+ if ( ! empty( $shortcodes_custom_css ) ) {
690
+ $shortcodes_custom_css = strip_tags( $shortcodes_custom_css );
691
+ echo '<style type="text/css" data-type="vc_shortcodes-custom-css">';
692
+ echo $shortcodes_custom_css;
693
+ echo '</style>';
694
+ }
695
+ // End
696
+
697
+ $item_template_name = learn_press_locate_template( 'single-course/content-item-' . $item->get_item_type() . '.php' );
698
+
699
+ if ( file_exists( $item_template_name ) ) {
700
+ learn_press_get_template( 'single-course/content-item-' . $item->get_item_type() . '.php' );
701
+ }
702
+ }
703
  }
704
 
705
  if ( ! function_exists( 'learn_press_get_course_tabs' ) ) {
706
+ /**
707
+ * Return an array of tabs display in single course page.
708
+ *
709
+ * @return array
710
+ */
711
+ function learn_press_get_course_tabs() {
712
+
713
+ $course = learn_press_get_course();
714
+ $user = learn_press_get_current_user();
715
+
716
+ $defaults = array();
717
+
718
+ // Description tab - shows product content
719
+ if ( $course && $course->get_content() ) {
720
+ $defaults['overview'] = array(
721
+ 'title' => __( 'Overview', 'learnpress' ),
722
+ 'priority' => 10,
723
+ 'callback' => 'learn_press_course_overview_tab'
724
+ );
725
+ }
726
+
727
+ // Curriculum
728
+ $defaults['curriculum'] = array(
729
+ 'title' => __( 'Curriculum', 'learnpress' ),
730
+ 'priority' => 30,
731
+ 'callback' => 'learn_press_course_curriculum_tab'
732
+ );
733
+
734
+ $defaults['instructor'] = array(
735
+ 'title' => __( 'Instructor', 'learnpress' ),
736
+ 'priority' => 40,
737
+ 'callback' => 'learn_press_course_instructor_tab'
738
+ );
739
+
740
+
741
+ // Filter
742
+ if ( $tabs = apply_filters( 'learn-press/course-tabs', $defaults ) ) {
743
+ // Sort tabs by priority
744
+ uasort( $tabs, 'learn_press_sort_list_by_priority_callback' );
745
+ $request_tab = ! empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : '';
746
+ $has_active = false;
747
+ foreach ( $tabs as $k => $v ) {
748
+ $v['id'] = ! empty( $v['id'] ) ? $v['id'] : 'tab-' . $k;
749
+
750
+ if ( $request_tab === $v['id'] ) {
751
+ $v['active'] = true;
752
+ $has_active = $k;
753
+ } elseif ( isset( $v['active'] ) && $v['active'] ) {
754
+ $has_active = true;
755
+ }
756
+ $tabs[ $k ] = $v;
757
+ }
758
+
759
+ if ( ! $has_active ) {
760
+ /**
761
+ * Active Curriculum tab if user has enrolled course
762
+ */
763
+ if ( $course && $user->has_course_status( $course->get_id(), array(
764
+ 'enrolled',
765
+ 'finished'
766
+ ) ) && ! empty( $tabs['curriculum'] )
767
+ ) {
768
+ $tabs['curriculum']['active'] = true;
769
+ } elseif ( ! empty( $tabs['overview'] ) ) {
770
+ $tabs['overview']['active'] = true;
771
+ } else {
772
+ $keys = array_keys( $tabs );
773
+ $first_key = reset( $keys );
774
+ $tabs[ $first_key ]['active'] = true;
775
+ }
776
+ }
777
+ }
778
+
779
+ return $tabs;
780
+ }
781
 
782
  }
783
 
784
  if ( ! function_exists( 'learn_press_content_item_quiz_title' ) ) {
785
+ function learn_press_content_item_quiz_title() {
786
+ learn_press_get_template( 'content-quiz/title.php' );
787
+ }
788
  }
789
 
790
  if ( ! function_exists( 'learn_press_content_item_quiz_intro' ) ) {
791
+ function learn_press_content_item_quiz_intro() {
792
+ $course = LP_Global::course();
793
+ $user = LP_Global::user();
794
+ $quiz = LP_Global::course_item_quiz();
795
 
796
+ if ( $user->has_quiz_status( array( 'started', 'completed' ), $quiz->get_id(), $course->get_id() ) ) {
797
+ return;
798
+ }
799
 
800
+ if ( ! $user ) {
801
+ return;
802
+ }
803
 
804
+ if ( ! $user->has_quiz_status( 'started', $quiz->get_id(), $course->get_id() ) ) {
805
+ //return;
806
+ }
807
 
808
+ if ( $quiz->get_viewing_question() ) {
809
+ return;
810
+ }
811
 
812
+ learn_press_get_template( 'content-quiz/intro.php' );
813
+ }
814
  }
815
 
816
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_content' ) ) {
817
 
818
+ function learn_press_content_item_summary_quiz_content() {
819
+ $item = LP_Global::course_item();
820
+ $quiz = LP_Global::course_item_quiz();
821
+ $user = LP_Global::user();
822
 
823
+ if ( ! $user ) {
824
+ return;
825
+ }
826
 
827
+ /**
828
+ * Check if not start quiz (is showing question)
829
+ * and not completed quiz
830
+ *
831
+ * @editor tungnx
832
+ */
833
+ if ( ! $item->get_viewing_question() && ! $user->has_completed_quiz( $quiz->get_id(), get_the_ID() ) ) {
834
+ learn_press_get_template( 'content-quiz/description.php' );
835
+ }
836
+ }
837
  }
838
 
839
  if ( ! function_exists( 'learn_press_content_item_summary_question_title' ) ) {
840
 
841
+ function learn_press_content_item_summary_question_title() {
842
+ $quiz = LP_Global::course_item_quiz();
843
 
844
+ if ( $question = $quiz->get_viewing_question() ) {
845
+ $title = $question->get_title( 'display' );
846
+ learn_press_get_template( 'content-question/title.php', array( 'title' => $title ) );
847
+ }
848
+ }
849
  }
850
 
851
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_progress' ) ) {
852
 
853
+ function learn_press_content_item_summary_quiz_progress() {
854
+ $course = LP_Global::course();
855
+ $quiz = LP_Global::course_item_quiz();
856
+ $user = LP_Global::user();
857
 
858
+ if ( ! $user ) {
859
+ return;
860
+ }
861
 
862
+ if ( $user->has_quiz_status( array( 'viewed', '' ), $quiz->get_id(), $course->get_id() ) ) {
863
+ return;
864
+ }
865
 
866
+ if ( $question = $quiz->get_viewing_question() ) {
867
+ learn_press_get_template( 'content-quiz/progress.php' );
868
+ }
869
+ }
870
  }
871
 
872
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_countdown' ) ) {
873
 
874
+ function learn_press_content_item_summary_quiz_countdown() {
875
+ $quiz = LP_Global::course_item_quiz();
876
 
877
+ if ( $question = $quiz->get_viewing_question() ) {
878
+ learn_press_get_template( 'content-quiz/countdown.php' );
879
+ }
880
+ }
881
  }
882
 
883
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_result' ) ) {
884
 
885
+ function learn_press_content_item_summary_quiz_result() {
886
+ $quiz = LP_Global::course_item_quiz();
887
+ $user = LP_Global::user();
888
 
889
+ if ( ! $user ) {
890
+ return;
891
+ }
892
 
893
+ if ( ! $user->has_completed_quiz( $quiz->get_id(), get_the_ID() ) ) {
894
+ return;
895
+ }
896
 
897
+ learn_press_get_template( 'content-quiz/result.php' );
898
+ }
899
  }
900
 
901
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_question' ) ) {
902
 
903
+ function learn_press_content_item_summary_quiz_question() {
904
+ $quiz = LP_Global::course_item_quiz();
905
 
906
+ if ( $question = $quiz->get_viewing_question() ) {
907
+ learn_press_get_template( 'content-question/content.php', array( 'question' => $question ) );
908
+ }
909
+ }
910
  }
911
 
912
  if ( ! function_exists( 'learn_press_content_item_summary_question_content' ) ) {
913
 
914
+ function learn_press_content_item_summary_question_content() {
915
+ $quiz = LP_Global::course_item_quiz();
916
 
917
+ if ( $question = $quiz->get_viewing_question() ) {
918
 
919
+ $content = $question->get_content();
920
 
921
+ if ( ! $content ) {
922
+ return;
923
+ }
924
 
925
+ learn_press_get_template( 'content-question/description.php', array( 'content' => $content ) );
926
+ }
927
+ }
928
  }
929
 
930
  if ( ! function_exists( 'learn_press_content_item_summary_question' ) ) {
931
 
932
+ /**
933
+ * Render content if quiz question.
934
+ */
935
+ function learn_press_content_item_summary_question() {
936
+ $quiz = LP_Global::course_item_quiz();
937
+ if ( $question = $quiz->get_viewing_question() ) {
938
+ $course = LP_Global::course();
939
+ $user = LP_Global::user();
940
+ $answered = false;
941
+ $course_data = $user->get_course_data( $course->get_id() );
942
+
943
+ if ( $user_quiz = $course_data->get_item_quiz( $quiz->get_id() ) ) {
944
+ $answered = $user_quiz->get_question_answer( $question->get_id() );
945
+ $question->show_correct_answers( $user->has_checked_answer( $question->get_id(), $quiz->get_id(),
946
+ $course->get_id() ) ? 'yes' : false );
947
+ $question->disable_answers( $user_quiz->get_status() == 'completed' ? 'yes' : false );
948
+ $question->set_course( $course );
949
+ }
950
+
951
+ $question->render( $answered );
952
+ }
953
+ }
954
  }
955
 
956
  if ( ! function_exists( 'learn_press_content_item_summary_question_explanation' ) ) {
957
 
958
+ /**
959
+ * Render content if quiz question.
960
+ */
961
+ function learn_press_content_item_summary_question_explanation() {
962
+ $quiz = LP_Global::course_item_quiz();
963
+ if ( $question = $quiz->get_viewing_question() ) {
964
+ $course = LP_Global::course();
965
+ $user = LP_Global::user();
966
+
967
+ if ( ! $user ) {
968
+ return;
969
+ }
970
+
971
+ $course_data = $user->get_course_data( $course->get_id() );
972
+ $user_quiz = $course_data->get_item_quiz( $quiz->get_id() );
973
+ $explanation = $question->get_explanation();
974
+
975
+ if ( ! $explanation ) {
976
+ return;
977
+ }
978
+
979
+ /**
980
+ * Show explanation of question if
981
+ *
982
+ * 1. Click check answer check button (Option 'Show Check Answer' value > 1)
983
+ * OR
984
+ * 2. Question answered is true
985
+ * OR
986
+ * 3. Option 'Review Questions' enable
987
+ * AND
988
+ * 3.1. Not retake OR Option 'Show Correct Answer' enable
989
+ */
990
+ if ( $user_quiz->has_checked_question( $question->get_id() ) ||
991
+ $user_quiz->is_answered_true( $question->get_id() ) ||
992
+ ( learn_press_is_review_questions() &&
993
+ ( ! $user->can_retake_quiz( $quiz->get_id(), $course->get_id() ) ||
994
+ $quiz->get_show_result() ) ) ) {
995
+ learn_press_get_template( 'content-question/explanation.php', array( 'explanation' => $explanation ) );
996
+ }
997
+ }
998
+ }
999
  }
1000
 
1001
  if ( ! function_exists( 'learn_press_content_item_summary_question_hint' ) ) {
1002
 
1003
+ /**
1004
+ * Render content if quiz question.
1005
+ */
1006
+ function learn_press_content_item_summary_question_hint() {
1007
+ $quiz = LP_Global::course_item_quiz();
1008
+ if ( $question = $quiz->get_viewing_question() ) {
1009
+ $course = LP_Global::course();
1010
+ $user = LP_Global::user();
1011
 
1012
+ if ( ! $user ) {
1013
+ return;
1014
+ }
1015
 
1016
+ $course_data = $user->get_course_data( $course->get_id() );
1017
+ $user_quiz = $course_data->get_item_quiz( $quiz->get_id() );
1018
+ $hint = $question->get_hint();
1019
 
1020
+ if ( ! $hint || ! $user_quiz->has_hinted_question( $question->get_id() ) || $user_quiz->has_checked_question( $question->get_id() ) ) {
1021
+ return;
1022
+ }
1023
 
1024
+ learn_press_get_template( 'content-question/hint.php', array( 'hint' => $hint ) );
1025
+ }
1026
 
1027
+ }
1028
  }
1029
 
1030
  if ( ! function_exists( 'learn_press_content_item_summary_question_numbers' ) ) {
1031
 
1032
+ function learn_press_content_item_summary_question_numbers() {
1033
+ $course = LP_Global::course();
1034
+ $user = LP_Global::user();
1035
+ $quiz = LP_Global::course_item_quiz();
1036
 
1037
+ if ( ! $quiz->get_show_hide_question() ) {
1038
+ return;
1039
+ }
1040
 
1041
+ if ( ! $user ) {
1042
+ return;
1043
+ }
1044
 
1045
+ if ( ! $user->has_quiz_status( array( 'started', 'completed' ), $quiz->get_id(), $course->get_id() ) ) {
1046
+ return;
1047
+ }
1048
 
1049
+ if ( ! $quiz->get_viewing_question() ) {
1050
+ return;
1051
+ }
1052
 
1053
+ $questions = $quiz->get_questions();
1054
 
1055
+ if ( ! $questions ) {
1056
+ return;
1057
+ }
1058
 
1059
+ $questions = array_values( $questions );
1060
 
1061
+ if ( count( $questions ) < 2 ) {
1062
+ return;
1063
+ }
1064
 
1065
+ $args = array(
1066
+ 'quiz' => $quiz,
1067
+ 'questions' => $questions
1068
+ );
1069
 
1070
+ learn_press_get_template( 'content-quiz/question-numbers.php', $args );
1071
+ }
1072
  }
1073
 
1074
  if ( ! function_exists( 'learn_press_content_item_summary_quiz_buttons' ) ) {
1075
 
1076
+ function learn_press_content_item_summary_quiz_buttons() {
1077
+ learn_press_get_template( 'content-quiz/buttons.php' );
1078
+ }
1079
  }
1080
 
1081
 
1082
  if ( ! function_exists( 'learn_press_quiz_nav_buttons' ) ) {
1083
 
1084
+ function learn_press_quiz_nav_buttons() {
1085
+ $course = LP_Global::course();
1086
+ $user = LP_Global::user();
1087
+ $quiz = LP_Global::course_item_quiz();
1088
 
1089
+ if ( ! $user ) {
1090
+ return;
1091
+ }
1092
 
1093
+ if ( ! $user->has_quiz_status( array( 'started', 'completed' ), $quiz->get_id(), $course->get_id() ) ) {
1094
+ return;
1095
+ }
1096
 
1097
+ if ( ! $quiz->get_viewing_question() ) {
1098
+ return;
1099
+ }
1100
 
1101
+ learn_press_get_template( 'content-quiz/buttons/nav.php' );
1102
+ }
1103
  }
1104
 
1105
  if ( ! function_exists( 'learn_press_quiz_start_button' ) ) {
1106
 
1107
+ function learn_press_quiz_start_button() {
1108
+ $course = LP_Global::course();
1109
+ $user = LP_Global::user();
1110
+ $quiz = LP_Global::course_item_quiz();
1111
 
1112
+ if ( ! $user ) {
1113
+ return;
1114
+ }
1115
 
1116
+ if ( $user->has_course_status( $course->get_id(), array( 'finished' ) ) || $user->has_quiz_status( array(
1117
+ 'started',
1118
+ 'completed'
1119
+ ), $quiz->get_id(), $course->get_id() )
1120
+ ) {
1121
+ return;
1122
+ }
1123
 
1124
+ if ( ! $user->has_course_status( $course->get_id(),
1125
+ array( 'enrolled' ) ) && $course->is_required_enroll() && ! $quiz->get_preview() ) {
1126
+ return;
1127
+ }
1128
 
1129
+ // Check quiz has any question
1130
+ if ( $quiz->count_questions() == 0 ) {
1131
+ return;
1132
+ }
1133
 
1134
+ $args = array(
1135
+ 'course' => $course,
1136
+ 'quiz' => $quiz,
1137
+ );
1138
 
1139
+ learn_press_get_template( 'content-quiz/buttons/start.php', $args );
1140
+ }
1141
  }
1142
 
1143
  if ( ! function_exists( 'learn_press_quiz_continue_button' ) ) {
1144
 
1145
+ function learn_press_quiz_continue_button() {
1146
+ $course = LP_Global::course();
1147
+ $user = LP_Global::user();
1148
+ $quiz = LP_Global::course_item_quiz();
1149
 
1150
+ if ( ! $user ) {
1151
+ return;
1152
+ }
1153
 
1154
+ if ( ! $user->has_quiz_status( 'started', $quiz->get_id(), $course->get_id() ) ) {
1155
+ return;
1156
+ }
1157
 
1158
+ if ( $quiz->get_viewing_question() ) {
1159
+ return;
1160
+ }
1161
 
1162
+ learn_press_get_template( 'content-quiz/buttons/continue.php' );
1163
+ }
1164
  }
1165
 
1166
  if ( ! function_exists( 'learn_press_quiz_complete_button' ) ) {
1167
 
1168
+ function learn_press_quiz_complete_button() {
1169
+ $course = LP_Global::course();
1170
+ $user = LP_Global::user();
1171
+ $quiz = LP_Global::course_item_quiz();
1172
 
1173
+ if ( ! $user ) {
1174
+ return;
1175
+ }
1176
 
1177
+ if ( $user->has_course_status( $course->get_id(), array( 'finished' ) ) || ! $user->has_quiz_status( 'started',
1178
+ $quiz->get_id(), $course->get_id() ) ) {
1179
+ return;
1180
+ }
1181
+ learn_press_get_template( 'content-quiz/buttons/complete.php' );
1182
+ }
1183
  }
1184
 
1185
  if ( ! function_exists( 'learn_press_quiz_redo_button' ) ) {
1186
 
1187
+ function learn_press_quiz_redo_button() {
1188
+ $course = LP_Global::course();
1189
+ $user = LP_Global::user();
1190
+ $quiz = LP_Global::course_item_quiz();
1191
 
1192
+ if ( ! $user ) {
1193
+ return;
1194
+ }
1195
 
1196
+ if ( ! $user->has_quiz_status( 'completed', $quiz->get_id(), $course->get_id() ) ) {
1197
+ return;
1198
+ }
1199
 
1200
+ if ( $user->has_course_status( $course->get_id(),
1201
+ array( 'finished' ) ) || ! $user->can_retake_quiz( $quiz->get_id(), $course->get_id() ) ) {
1202
+ return;
1203
+ }
1204
 
1205
+ learn_press_get_template( 'content-quiz/buttons/redo.php' );
1206
+ }
1207
  }
1208
 
1209
  if ( ! function_exists( 'learn_press_quiz_result_button' ) ) {
1210
 
1211
+ function learn_press_quiz_result_button() {
1212
+ $course = LP_Global::course();
1213
+ $user = LP_Global::user();
1214
+ $quiz = LP_Global::course_item_quiz();
1215
 
1216
+ if ( ! $user ) {
1217
+ return;
1218
+ }
1219
 
1220
+ if ( ! $user->has_quiz_status( 'completed', $quiz->get_id(), $course->get_id() ) ) {
1221
+ return;
1222
+ }
1223
 
1224
+ if ( LP_Global::quiz_question() ) {
1225
+ return;
1226
+ }
1227
 
1228
+ if ( ! $quiz->get_review_questions() ) {
1229
+ return;
1230
+ }
1231
 
1232
+ learn_press_get_template( 'content-quiz/buttons/review.php' );
1233
+ }
1234
  }
1235
 
1236
  if ( ! function_exists( 'learn_press_quiz_summary_button' ) ) {
1237
 
1238
+ function learn_press_quiz_summary_button() {
1239
+ $course = LP_Global::course();
1240
+ $user = LP_Global::user();
1241
+ $quiz = LP_Global::course_item_quiz();
1242
 
1243
+ if ( ! $user ) {
1244
+ return;
1245
+ }
1246
 
1247
+ if ( ! $user->has_quiz_status( 'completed', $quiz->get_id(), $course->get_id() ) ) {
1248
+ return;
1249
+ }
1250
 
1251
+ if ( ! learn_press_is_review_questions() ) {
1252
+ return;
1253
+ }
1254
 
1255
+ learn_press_get_template( 'content-quiz/buttons/summary.php' );
1256
+ }
1257
  }
1258
 
1259
  if ( ! function_exists( 'learn_press_quiz_check_button' ) ) {
1260
 
1261
+ function learn_press_quiz_check_button() {
1262
+ $course = LP_Global::course();
1263
+ $user = LP_Global::user();
1264
+ $quiz = LP_Global::course_item_quiz();
1265
 
1266
+ if ( ! $user ) {
1267
+ return;
1268
+ }
1269
 
1270
+ if ( ! $quiz->is_viewing_question() ) {
1271
+ return;
1272
+ }
1273
 
1274
+ if ( ! $user->can_check_answer( $quiz->get_id(), $course->get_id() ) ) {
1275
+ return;
1276
+ }
1277
 
1278
+ if ( $user->has_course_status( $course->get_id(), array( 'finished' ) ) || ! $user->has_quiz_status( 'started',
1279
+ $quiz->get_id(), $course->get_id() ) ) {
1280
+ return;
1281
+ }
1282
 
1283
+ learn_press_get_template( 'content-quiz/buttons/check.php' );
1284
+ }
1285
  }
1286
 
1287
  if ( ! function_exists( 'learn_press_quiz_hint_button' ) ) {
1288
 
1289
+ function learn_press_quiz_hint_button() {
1290
+ $course = LP_Global::course();
1291
+ $user = LP_Global::user();
1292
+ $quiz = LP_Global::course_item_quiz();
1293
+ $question = LP_Global::quiz_question();
1294
 
1295
+ if ( ! $quiz ) {
1296
+ return;
1297
+ }
1298
 
1299
+ if ( ! $quiz->is_viewing_question() ) {
1300
+ return;
1301
+ }
1302
 
1303
+ $hint = $question->get_hint();
1304
+ if ( ! $hint ) {
1305
+ return;
1306
+ }
1307
 
1308
+ if ( ! $user ) {
1309
+ return;
1310
+ }
1311
 
1312
+ if ( ! $user->can_hint_answer( $quiz->get_id(), $course->get_id() ) ) {
1313
+ return;
1314
+ }
1315
 
1316
+ if ( ! $user->has_quiz_status( 'started', $quiz->get_id(), $course->get_id() ) ) {
1317
+ return;
1318
+ }
1319
 
1320
+ $quiz_item = $user->get_quiz_data( $quiz->get_id(), $course->get_id() );
1321
 
1322
+ if ( $quiz_item && ( $quiz_item->has_checked_question( $question->get_id() ) || $quiz_item->is_answered( $question->get_id() ) ) ) {
1323
+ return;
1324
+ }
1325
 
1326
+ learn_press_get_template( 'content-quiz/buttons/hint.php', array( 'hint' => $hint ) );
1327
+ }
1328
  }
1329
 
1330
  if ( ! function_exists( 'learn_press_content_item_body_class' ) ) {
1331
 
1332
+ /**
1333
+ * Add custom classes into body tag in case user is viewing an item.
1334
+ *
1335
+ * @param array $classes
1336
+ *
1337
+ * @return array
1338
+ */
1339
+ function learn_press_content_item_body_class( $classes ) {
1340
+ global $lp_course_item;
1341
+
1342
+ if ( $lp_course_item ) {
1343
+ $classes[] = 'course-item-popup';
1344
+ $classes[] = 'viewing-course-item';
1345
+ $classes[] = 'viewing-course-item-' . $lp_course_item->get_id();
1346
+ $classes[] = 'course-item-' . $lp_course_item->get_item_type();
1347
+ }
1348
 
1349
+ return $classes;
1350
+ }
1351
 
1352
  }
1353
 
1354
  if ( ! function_exists( 'learn_press_content_item_edit_links' ) ) {
1355
+ /**
1356
+ * Add edit links for course item question to admin bar.
1357
+ */
1358
+ function learn_press_content_item_edit_links() {
1359
+ global $wp_admin_bar, $post, $lp_course_item, $lp_quiz_question;
1360
+
1361
+ if ( ! ( ! is_admin() && is_user_logged_in() ) ) {
1362
+ return;
1363
+ }
1364
+
1365
+ if ( is_learnpress() && $post && $post->ID === 0 ) {
1366
+ // This also remove the 'Edit Category' link when viewing course category!!!
1367
+ //$wp_admin_bar->remove_node( 'edit' );
1368
+ }
1369
+
1370
+ if ( ! is_user_member_of_blog() && ! is_super_admin() ) {
1371
+ //return;
1372
+ }
1373
+
1374
+ /**
1375
+ * Edit link for lesson/quiz or any other course's item.
1376
+ */
1377
+ if ( $lp_course_item && ( $post_type_object = get_post_type_object( $lp_course_item->get_item_type() ) )
1378
+ && current_user_can( 'edit_post', $lp_course_item->get_id() )
1379
+ && $post_type_object->show_in_admin_bar
1380
+ && $edit_post_link = get_edit_post_link( $lp_course_item->get_id() )
1381
+ ) {
1382
+ $type = get_post_type( $lp_course_item->get_id() );
1383
+
1384
+ if ( apply_filters( 'learn-press/edit-admin-bar-button', true, $lp_course_item ) ) {
1385
+ $wp_admin_bar->add_menu( array(
1386
+ 'id' => 'edit-' . $type,
1387
+ 'title' => $post_type_object->labels->edit_item,
1388
+ 'href' => $edit_post_link
1389
+ ) );
1390
+ }
1391
+ }
1392
+
1393
+ /**
1394
+ * Edit link for quiz's question.
1395
+ */
1396
+ if ( $lp_quiz_question ) {
1397
+ if ( ( $post_type_object = get_post_type_object( $lp_quiz_question->get_item_type() ) )
1398
+ && current_user_can( 'edit_post', $lp_quiz_question->get_id() )
1399
+ && $post_type_object->show_in_admin_bar
1400
+ && $edit_post_link = get_edit_post_link( $lp_quiz_question->get_id() )
1401
+ ) {
1402
+ $type = get_post_type( $lp_quiz_question->get_id() );
1403
+ $wp_admin_bar->add_menu( array(
1404
+ 'id' => 'edit-' . $type,
1405
+ 'title' => $post_type_object->labels->edit_item,
1406
+ 'href' => $edit_post_link
1407
+ ) );
1408
+ }
1409
+ }
1410
+
1411
+
1412
+ }
1413
  }
1414
 
1415
  add_filter( 'admin_bar_menu', 'learn_press_content_item_edit_links', 90 );
1416
 
1417
  if ( ! function_exists( 'learn_press_control_displaying_course_item' ) ) {
1418
+ /**
1419
+ * If user is viewing content of an item instead of the whole course
1420
+ * then remove all content of course and replace with content of
1421
+ * that item.
1422
+ */
1423
+ function learn_press_control_displaying_course_item() {
1424
+ global $wp_filter;
1425
+
1426
+ // Remove all hooks added to content of whole course.
1427
+ $hooks = array( 'content-learning-summary', 'content-landing-summary' );
1428
+
1429
+ if ( empty( $wp_filter['learn-press-backup-hooks'] ) ) {
1430
+ $wp_filter['learn-press-backup-hooks'] = array();
1431
+ }
1432
 
1433
+ foreach ( $hooks as $hook ) {
1434
+ if ( isset( $wp_filter["learn-press/{$hook}"] ) ) {
1435
+ // Move to backup to restore it if needed.
1436
+ $wp_filter['learn-press-backup-hooks']["learn-press/{$hook}"] = $wp_filter["learn-press/{$hook}"];
1437
 
1438
+ // Remove the origin hook
1439
+ unset( $wp_filter["learn-press/{$hook}"] );
1440
+ }
1441
+ }
1442
 
1443
+ // Add more assets into page that displaying content of an item
1444
+ add_filter( 'body_class', 'learn_press_content_item_body_class', 10 );
1445
+ }
1446
  }
1447
 
1448
  if ( ! function_exists( 'learn_press_profile_tab_orders' ) ) {
1449
+ function learn_press_profile_tab_orders() {
1450
+ learn_press_get_template( 'profile/tabs/orders/list.php' );
1451
+ }
1452
  }
1453
 
1454
  if ( ! function_exists( 'learn_press_profile_recover_order_form' ) ) {
1455
+ function learn_press_profile_recover_order_form( $order ) {
1456
+ learn_press_get_template( 'profile/tabs/orders/recover-order.php', array( 'order' => $order ) );
1457
+ }
1458
  }
1459
 
1460
  if ( ! function_exists( 'learn_press_wrapper_start' ) ) {
1461
+ /**
1462
+ * Wrapper Start
1463
+ */
1464
+ function learn_press_wrapper_start() {
1465
+ learn_press_get_template( 'global/before-main-content.php' );
1466
+ }
1467
  }
1468
 
1469
  if ( ! function_exists( 'learn_press_wrapper_end' ) ) {
1470
+ /**
1471
+ * wrapper end
1472
+ */
1473
+ function learn_press_wrapper_end() {
1474
+ learn_press_get_template( 'global/after-main-content.php' );
1475
+ }
1476
  }
1477
 
1478
  if ( ! function_exists( 'learn_press_single_course_args' ) ) {
1479
+ function learn_press_single_course_args() {
1480
+ static $output = array();
1481
+ if ( ! $output ) {
1482
+ if ( ( $course = LP_Global::course() ) && $course->get_id() ) {
1483
+ $user = LP_Global::user();
1484
+
1485
+ if ( ! $user ) {
1486
+ return;
1487
+ }
1488
+
1489
+ if ( $course_data = $user->get_course_data( $course->get_id() ) ) {
1490
+ $output = $course_data->get_js_args();
1491
+ }
1492
+ }
1493
+ }
1494
 
1495
+ return $output;
1496
+ }
1497
  }
1498
 
1499
  if ( ! function_exists( 'learn_press_single_quiz_args' ) ) {
1500
+ function learn_press_single_quiz_args() {
1501
+ $args = array();
1502
+
1503
+ if ( $quiz = LP_Global::course_item_quiz() ) {
1504
+ $user = LP_Global::user();
1505
+
1506
+ if ( ! $user ) {
1507
+ return;
1508
+ }
1509
+
1510
+ if ( $user_quiz = $user->get_item_data( $quiz->get_id(), LP_Global::course( true ) ) ) {
1511
+ $remaining_time = $user_quiz->get_time_remaining();
1512
+ } else {
1513
+ $remaining_time = false;
1514
+ }
1515
+ $args = array(
1516
+ 'id' => $quiz->get_id(),
1517
+ 'totalTime' => $quiz->get_duration()->get(),
1518
+ 'remainingTime' => $remaining_time ? $remaining_time->get() : $quiz->get_duration()->get(),
1519
+ 'status' => $user->get_item_status( $quiz->get_id(), LP_Global::course( true ) ),
1520
+ 'daysLeft' => _x( 'days left', 'quiz_duration', 'learnpress' ),
1521
+ 'dayLeft' => _x( 'day left', 'quiz_duration', 'learnpress' )
1522
+ );
1523
+ }
1524
+
1525
+ return $args;
1526
+ }
1527
  }
1528
 
1529
  if ( ! function_exists( 'learn_press_courses_loop_item_thumbnail' ) ) {
1530
+ /**
1531
+ * Output the thumbnail of the course within loop
1532
+ */
1533
+ function learn_press_courses_loop_item_thumbnail() {
1534
+ learn_press_get_template( 'loop/course/thumbnail.php' );
1535
+ }
1536
  }
1537
 
1538
  if ( ! function_exists( 'learn_press_courses_loop_item_title' ) ) {
1539
+ /**
1540
+ * Output the title of the course within loop
1541
+ */
1542
+ function learn_press_courses_loop_item_title() {
1543
+ learn_press_get_template( 'loop/course/title.php' );
1544
+ }
1545
  }
1546
 
1547
  if ( ! function_exists( 'learn_press_courses_loop_item_begin_meta' ) ) {
1548
+ /**
1549
+ * Output the excerpt of the course within loop
1550
+ */
1551
+ function learn_press_courses_loop_item_begin_meta() {
1552
+ learn_press_get_template( 'loop/course/meta-begin.php' );
1553
+ }
1554
  }
1555
 
1556
  if ( ! function_exists( 'learn_press_courses_loop_item_end_meta' ) ) {
1557
+ /**
1558
+ * Output the excerpt of the course within loop
1559
+ */
1560
+ function learn_press_courses_loop_item_end_meta() {
1561
+ learn_press_get_template( 'loop/course/meta-end.php' );
1562
+ }
1563
  }
1564
 
1565
  if ( ! function_exists( 'learn_press_courses_loop_item_introduce' ) ) {
1566
+ /**
1567
+ * Output the excerpt of the course within loop
1568
+ */
1569
+ function learn_press_courses_loop_item_introduce() {
1570
+ learn_press_get_template( 'loop/course/introduce.php' );
1571
+ }
1572
  }
1573
 
1574
  if ( ! function_exists( 'learn_press_courses_loop_item_price' ) ) {
1575
+ /**
1576
+ * Output the price of the course within loop
1577
+ */
1578
+ function learn_press_courses_loop_item_price() {
1579
+ learn_press_get_template( 'loop/course/price.php' );
1580
+ }
1581
  }
1582
 
1583
  if ( ! function_exists( 'learn_press_begin_courses_loop' ) ) {
1584
+ /**
1585
+ * Output the price of the course within loop
1586
+ */
1587
+ function learn_press_begin_courses_loop() {
1588
+ learn_press_get_template( 'loop/course/loop-begin.php' );
1589
+ }
1590
  }
1591
 
1592
  if ( ! function_exists( 'learn_press_end_courses_loop' ) ) {
1593
+ /**
1594
+ * Output the price of the course within loop
1595
+ */
1596
+ function learn_press_end_courses_loop() {
1597
+ learn_press_get_template( 'loop/course/loop-end.php' );
1598
+ }
1599
  }
1600
 
1601
  if ( ! function_exists( 'learn_press_courses_loop_item_students' ) ) {
1602
+ /**
1603
+ * Output the students of the course within loop
1604
+ */
1605
+ function learn_press_courses_loop_item_students() {
1606
+ learn_press_get_template( 'loop/course/students.php' );
1607
+ }
1608
  }
1609
 
1610
  if ( ! function_exists( 'learn_press_courses_pagination' ) ) {
1611
+ /**
1612
+ * Output the pagination of archive courses
1613
+ */
1614
+ function learn_press_courses_pagination() {
1615
+ learn_press_get_template( 'loop/course/pagination.php' );
1616
+ }
1617
  }
1618
 
1619
  if ( ! function_exists( 'learn_press_breadcrumb' ) ) {
1620
+ /**
1621
+ * Output the breadcrumb of archive courses
1622
+ *
1623
+ * @param array
1624
+ */
1625
+ function learn_press_breadcrumb( $args = array() ) {
1626
+ $args = wp_parse_args( $args, apply_filters( 'learn_press_breadcrumb_defaults', array(
1627
+ 'delimiter' => '&nbsp;&#47;&nbsp;',
1628
+ 'wrap_before' => '<nav class="learn-press-breadcrumb" ' . ( is_single() ? 'itemprop="breadcrumb"' : '' ) . '>',
1629
+ 'wrap_after' => '</nav>',
1630
+ 'before' => '',
1631
+ 'after' => '',
1632
+ 'home' => _x( 'Home', 'breadcrumb', 'learnpress' )
1633
+ ) ) );
1634
+
1635
+ $breadcrumbs = new LP_Breadcrumb();
1636
+
1637
+ if ( $args['home'] ) {
1638
+ $breadcrumbs->add_crumb( $args['home'], apply_filters( 'learn_press_breadcrumb_home_url', home_url() ) );
1639
+ }
1640
 
1641
+ $args['breadcrumb'] = $breadcrumbs->generate();
1642
 
1643
+ learn_press_get_template( 'global/breadcrumb.php', $args );
1644
+ }
1645
  }
1646
 
1647
  if ( ! function_exists( 'learn_press_search_form' ) ) {
1648
+ /**
1649
+ * Output the breadcrumb of archive courses
1650
+ *
1651
+ * @param array
1652
+ */
1653
+ function learn_press_search_form() {
1654
+ if ( ! empty( $_REQUEST['s'] ) && ! empty( $_REQUEST['ref'] ) && 'course' == $_REQUEST['ref'] ) {
1655
+ $s = stripslashes_deep( $_REQUEST['s'] );
1656
+ } else {
1657
+ $s = '';
1658
+ }
1659
+
1660
+ learn_press_get_template( 'search-form.php', array( 's' => $s ) );
1661
+ }
1662
  }
1663
 
1664
  if ( ! function_exists( 'learn_press_output_single_course_learning_summary' ) ) {
1665
+ /**
1666
+ * Output the content of learning course content
1667
+ */
1668
+ function learn_press_output_single_course_learning_summary() {
1669
+ learn_press_get_template( 'single-course/content-learning.php' );
1670
+ }
1671
  }
1672
 
1673
  if ( ! function_exists( 'learn_press_output_single_course_landing_summary' ) ) {
1674
+ /**
1675
+ * Output the content of landing course content
1676
+ */
1677
+ function learn_press_output_single_course_landing_summary() {
1678
+ learn_press_get_template( 'single-course/content-landing.php' );
1679
+ }
1680
  }
1681
 
1682
  if ( ! function_exists( 'learn_press_course_title' ) ) {
1683
+ /**
1684
+ * Display the title for single course
1685
+ */
1686
+ function learn_press_course_title() {
1687
+ learn_press_get_template( 'single-course/title.php' );
1688
+ }
1689
  }
1690
 
1691
  if ( ! function_exists( 'learn_press_course_progress' ) ) {
1692
+ /**
1693
+ * Display course curriculum
1694
+ */
1695
+ function learn_press_course_progress() {
1696
+ learn_press_get_template( 'single-course/progress.php' );
1697
+ }
1698
  }
1699
 
1700
  if ( ! function_exists( 'learn_press_course_finish_button' ) ) {
1701
+ /**
1702
+ * Display course curriculum
1703
+ */
1704
+ function learn_press_course_finish_button() {
1705
+ learn_press_get_template( 'single-course/buttons/finish.php' );
1706
+ }
1707
  }
1708
 
1709
  if ( ! function_exists( 'learn_press_course_curriculum' ) ) {
1710
+ /**
1711
+ * Display course curriculum
1712
+ */
1713
+ function learn_press_course_curriculum() {
1714
+ ///learn_press_get_template( 'single-course/curriculum.php' );
1715
+ }
1716
  }
1717
 
1718
  if ( ! function_exists( 'learn_press_course_categories' ) ) {
1719
+ /**
1720
+ * Display course categories
1721
+ */
1722
+ function learn_press_course_categories() {
1723
+ learn_press_get_template( 'single-course/categories.php' );
1724
+ }
1725
  }
1726
 
1727
  if ( ! function_exists( 'learn_press_course_tags' ) ) {
1728
+ /**
1729
+ * Display course tags
1730
+ */
1731
+ function learn_press_course_tags() {
1732
+ learn_press_get_template( 'single-course/tags.php' );
1733
+ }
1734
  }
1735
 
1736
  if ( ! function_exists( 'learn_press_course_instructor' ) ) {
1737
+ /**
1738
+ * Display course instructor
1739
+ */
1740
+ function learn_press_course_instructor() {
1741
+ learn_press_get_template( 'single-course/instructor.php' );
1742
+ }
1743
  }
1744
 
1745
  if ( ! function_exists( 'learn_press_content_single_item' ) ) {
1746
+ function learn_press_content_single_item() {
1747
 
1748
+ if ( $course_item = LP_Global::course_item() ) {
1749
+ // remove course comment form on singler item
1750
+ add_filter( 'comments_open', 'learn_press_course_comments_open', 10, 2 );
1751
+ learn_press_get_template( 'content-single-item.php' );
1752
+ }
1753
+ }
1754
  }
1755
 
1756
  if ( ! function_exists( 'learn_press_content_single_course' ) ) {
1757
+ function learn_press_content_single_course() {
1758
 
1759
+ if ( ! $course_item = LP_Global::course_item() ) {
1760
+ learn_press_get_template( 'content-single-course.php' );
1761
+ }
1762
+ }
1763
  }
1764
 
1765
  if ( ! function_exists( 'learn_press_course_buttons' ) ) {
1766
+ /**
1767
+ * Display course retake button
1768
+ */
1769
+ function learn_press_course_buttons() {
1770
+ learn_press_get_template( 'single-course/buttons.php' );
1771
+ }
1772
  }
1773
 
1774
  if ( ! function_exists( 'learn_press_course_remaining_time' ) ) {
1775
 
1776
+ function learn_press_course_remaining_time() {
1777
 
1778
+ if ( ! $course = LP_Global::course() ) {
1779
+ return;
1780
+ }
1781
 
1782
+ if ( ! $user = LP_Global::user() ) {
1783
+ return;
1784
+ }
1785
 
1786
+ if ( false === ( $remain = $user->get_course_remaining_time( $course->get_id() ) ) ) {
1787
+ return;
1788
+ }
1789
 
1790
+ if ( $user->has_finished_course( $course->get_id() ) ) {
1791
+ return;
1792
+ }
1793
 
1794
+ learn_press_get_template( 'single-course/remaining-time.php', array( 'remaining_time' => $remain ) );
1795
+ }
1796
  }
1797
 
1798
  if ( ! function_exists( 'learn_press_course_thumbnail' ) ) {
1799
+ /**
1800
+ * Display Course Thumbnail
1801
+ */
1802
+ function learn_press_course_thumbnail() {
1803
+ learn_press_get_template( 'single-course/thumbnail.php' );
1804
+ }
1805
  }
1806
 
1807
  if ( ! function_exists( 'learn_press_single_course_description' ) ) {
1808
+ /**
1809
+ * Display course description
1810
+ */
1811
+ function learn_press_single_course_description() {
1812
+ learn_press_get_template( 'single-course/description.php' );
1813
+ }
1814
  }
1815
 
1816
  if ( ! function_exists( 'learn_press_single_course_lesson_content' ) ) {
1817
+ /**
1818
+ * Display lesson content
1819
+ */
1820
+ function learn_press_single_course_content_lesson() {
1821
+ //learn_press_get_template( 'single-course/content-lesson.php' );
1822
+ }
1823
  }
1824
 
1825
  if ( ! function_exists( 'learn_press_single_course_content_item' ) ) {
1826
+ /**
1827
+ * Display lesson content
1828
+ */
1829
+ function learn_press_single_course_content_item() {
1830
+ learn_press_get_template( 'single-course/content-item.php' );
1831
+ }
1832
  }
1833
 
1834
  if ( ! function_exists( 'learn_press_section_item_meta' ) ) {
1835
+ /**
1836
+ * @param object
1837
+ * @param array
1838
+ * @param LP_Course
1839
+ */
1840
+ function learn_press_section_item_meta( $item, $section ) {
1841
+ learn_press_get_template( 'single-course/section/item-meta.php', array(
1842
+ 'item' => $item,
1843
+ 'section' => $section
1844
+ ) );
1845
+ }
1846
  }
1847
 
1848
  if ( ! function_exists( 'learn_press_order_details_table' ) ) {
1849
 
1850
+ /**
1851
+ * Displays order details in a table.
1852
+ *
1853
+ * @param mixed $order_id
1854
+ *
1855
+ * @subpackage Orders
1856
+ */
1857
+ function learn_press_order_details_table( $order_id ) {
1858
+ if ( ! $order_id ) {
1859
+ return;
1860
+ }
1861
 
1862
+ learn_press_get_template( 'order/order-details.php', array(
1863
+ 'order' => learn_press_get_order( $order_id )
1864
+ ) );
1865
+ }
1866
  }
1867
 
1868
  if ( ! function_exists( 'learn_press_checkout_user_form' ) ) {
1869
+ /**
1870
+ * Output login/register form before order review if user is not logged in
1871
+ */
1872
+ function learn_press_checkout_user_form() {
1873
+ //learn_press_get_template( 'checkout/user-form.php' );
1874
+ }
1875
  }
1876
 
1877
  if ( ! function_exists( 'learn_press_checkout_user_form_login' ) ) {
1878
+ /**
1879
+ * Output login form before order review if user is not logged in
1880
+ */
1881
+ function learn_press_checkout_user_form_login() {
1882
+ learn_press_get_template( 'checkout/form-login.php' );
1883
+ }
1884
  }
1885
 
1886
  if ( ! function_exists( 'learn_press_checkout_user_form_register' ) ) {
1887
+ /**
1888
+ * Output register form before order review if user is not logged in
1889
+ */
1890
+ function learn_press_checkout_user_form_register() {
1891
+ learn_press_get_template( 'checkout/form-register.php' );
1892
+ }
1893
  }
1894
 
1895
  if ( ! function_exists( 'learn_press_checkout_user_logged_in' ) ) {
1896
+ /**
1897
+ * Output message before order review if user is logged in
1898
+ */
1899
+ function learn_press_checkout_user_logged_in() {
1900
+ learn_press_get_template( 'checkout/form-logged-in.php' );
1901
+ }
1902
  }
1903
 
1904
  if ( ! function_exists( 'learn_press_enroll_script' ) ) {
1905
+ /**
1906
+ */
1907
+ function learn_press_enroll_script() {
1908
+ learn_press_assets()->enqueue_script( 'learn-press-enroll', LP()->plugin_url( 'assets/js/frontend/enroll.js' ),
1909
+ array( 'learn-press-js' ) );
1910
+ }
1911
  }
1912
 
1913
  if ( ! function_exists( 'learn_press_output_user_profile_tabs' ) ) {
1914
+ /**
1915
+ * Display user profile tabs
1916
+ *
1917
+ * @param LP_User
1918
+ */
1919
+ function learn_press_output_user_profile_tabs( $user, $current, $tabs ) {
1920
+ learn_press_get_template( 'profile/tabs.php', array(
1921
+ 'user' => $user,
1922
+ 'tabs' => $tabs,
1923
+ 'current' => $current
1924
+ ) );
1925
+ }
1926
  }
1927
 
1928
  if ( ! function_exists( 'learn_press_output_user_profile_order' ) ) {
1929
+ /**
1930
+ * Display user profile tabs
1931
+ *
1932
+ * @param LP_User
1933
+ */
1934
+ function learn_press_output_user_profile_order( $user, $current, $tabs ) {
1935
+
1936
+ // learn_press_get_template( 'profile/tabs/orders.php', array( 'user' => $user, 'tabs' => $tabs, 'current' => $current ) );
1937
+ }
1938
  }
1939
  if ( ! function_exists( 'learn_press_profile_tab_courses_all' ) ) {
1940
+ /**
1941
+ * Display user profile tabs
1942
+ *
1943
+ * @param LP_User
1944
+ */
1945
+ function learn_press_profile_tab_courses_all( $user, $tab = null ) {
1946
+ $args = array(
1947
+ 'user' => $user,
1948
+ 'subtab' => $tab
1949
+ );
1950
+ $limit = LP()->settings->get( 'profile_courses_limit', 10 );
1951
+ $limit = apply_filters( 'learn_press_profile_tab_courses_all_limit', $limit );
1952
+ $courses = $user->get( 'courses', array( 'limit' => $limit ) );
1953
+ $num_pages = learn_press_get_num_pages( $user->_get_found_rows(), $limit );
1954
+ $args['courses'] = $courses;
1955
+ $args['num_pages'] = $num_pages;
1956
+ learn_press_get_template( 'profile/tabs/courses.php', $args );
1957
+ }
1958
  }
1959
 
1960
  if ( ! function_exists( 'learn_press_profile_tab_courses_learning' ) ) {
1961
+ /**
1962
+ * Display user profile tabs
1963
+ *
1964
+ * @param LP_User
1965
+ */
1966
+ function learn_press_profile_tab_courses_learning( $user, $tab = null ) {
1967
+ $args = array(
1968
+ 'user' => $user,
1969
+ 'subtab' => $tab
1970
+ );
1971
+ $limit = LP()->settings->get( 'profile_courses_limit', 10 );
1972
+ $limit = apply_filters( 'learn_press_profile_tab_courses_learning_limit', $limit );
1973
+ $courses = $user->get( 'enrolled-courses', array( 'status' => 'enrolled', 'limit' => $limit ) );
1974
+ $num_pages = learn_press_get_num_pages( $user->_get_found_rows(), $limit );
1975
+ $args['courses'] = $courses;
1976
+ $args['num_pages'] = $num_pages;
1977
+ learn_press_get_template( 'profile/tabs/courses/learning.php', $args );
1978
+ }
1979
  }
1980
 
1981
  if ( ! function_exists( 'learn_press_profile_tab_courses_purchased' ) ) {
1982
+ /**
1983
+ * Display user profile tabs
1984
+ *
1985
+ * @param LP_User
1986
+ */
1987
+ function learn_press_profile_tab_courses_purchased( $user, $tab = null ) {
1988
+ $args = array(
1989
+ 'user' => $user,
1990
+ 'subtab' => $tab
1991
+ );
1992
+ $limit = LP()->settings->get( 'profile_courses_limit', 10 );
1993
+ $limit = apply_filters( 'learn_press_profile_tab_courses_purchased_limit', $limit );
1994
+ $courses = $user->get( 'purchased-courses', array( 'limit' => $limit ) );
1995
+ $num_pages = learn_press_get_num_pages( $user->_get_found_rows(), $limit );
1996
+ $args['courses'] = $courses;
1997
+ $args['num_pages'] = $num_pages;
1998
+ learn_press_get_template( 'profile/tabs/courses/purchased.php', $args );
1999
+ }
2000
  }
2001
 
2002
  if ( ! function_exists( 'learn_press_profile_tab_courses_finished' ) ) {
2003
+ /**
2004
+ * Display user profile tabs
2005
+ *
2006
+ * @param LP_User
2007
+ */
2008
+ function learn_press_profile_tab_courses_finished( $user, $tab = null ) {
2009
+ $args = array(
2010
+ 'user' => $user,
2011
+ 'subtab' => $tab
2012
+ );
2013
+ $limit = LP()->settings->get( 'profile_courses_limit', 10 );
2014
+ $limit = apply_filters( 'learn_press_profile_tab_courses_finished_limit', $limit );
2015
+ $courses = $user->get( 'enrolled-courses', array( 'status' => 'finished', 'limit' => $limit ) );
2016
+ $num_pages = learn_press_get_num_pages( $user->_get_found_rows(), $limit );
2017
+ $args['courses'] = $courses;
2018
+ $args['num_pages'] = $num_pages;
2019
+ learn_press_get_template( 'profile/tabs/courses/finished.php', $args );
2020
+ }
2021
  }
2022
 
2023
  if ( ! function_exists( 'learn_press_profile_tab_courses_own' ) ) {
2024
+ /**
2025
+ * Display user profile tabs
2026
+ *
2027
+ * @param LP_User
2028
+ */
2029
+ function learn_press_profile_tab_courses_own( $user, $tab = null ) {
2030
+ $args = array(
2031
+ 'user' => $user,
2032
+ 'subtab' => $tab
2033
+ );
2034
+ $limit = LP()->settings->get( 'profile_courses_limit', 10 );
2035
+ $limit = apply_filters( 'learn_press_profile_tab_courses_own_limit', $limit );
2036
+ $courses = $user->get( 'own-courses', array( 'limit' => $limit ) );
2037
+ $num_pages = learn_press_get_num_pages( $user->_get_found_rows(), $limit );
2038
+ $args['courses'] = $courses;
2039
+ $args['num_pages'] = $num_pages;
2040
+ learn_press_get_template( 'profile/tabs/courses/own.php', $args );
2041
+ }
2042
  }
2043
 
2044
  if ( ! function_exists( 'learn_press_after_profile_tab_loop_course' ) ) {
2045
+ /**
2046
+ * Display user profile tabs
2047
+ *
2048
+ * @param LP_User
2049
+ */
2050
+ function learn_press_after_profile_tab_loop_course( $user, $course_id ) {
2051
+
2052
+ $args = array(
2053
+ 'user' => $user,
2054
+ 'course_id' => $course_id
2055
+ );
2056
+ learn_press_get_template( 'profile/tabs/courses/progress.php', $args );
2057
 
2058
+ }
2059
  }
2060
 
2061
 
2062
  if ( ! function_exists( 'learn_press_output_user_profile_info' ) ) {
2063
+ /**
2064
+ * Displaying user info
2065
+ *
2066
+ * @param $user
2067
+ */
2068
+ function learn_press_output_user_profile_info( $user, $current, $tabs ) {
2069
+ learn_press_get_template( 'profile/info.php', array(
2070
+ 'user' => $user,
2071
+ 'tabs' => $tabs,
2072
+ 'current' => $current
2073
+ ) );
2074
+ }
2075
  }
2076
 
2077
  /* QUIZ TEMPLATES */
2078
  if ( ! function_exists( 'learn_press_single_quiz_title' ) ) {
2079
+ /**
2080
+ * Output the title of the quiz
2081
+ */
2082
+ function learn_press_single_quiz_title() {
2083
+ learn_press_get_template( 'content-quiz/title.php' );
2084
+ }
2085
  }
2086
 
2087
  if ( ! function_exists( 'learn_press_course_loop_item_buttons' ) ) {
2088
+ function learn_press_course_loop_item_buttons() {
2089
+ learn_press_get_template( 'single-course/buttons.php' );
2090
+ }
2091
  }
2092
 
2093
  if ( ! function_exists( 'learn_press_course_loop_item_user_progress' ) ) {
2094
+ function learn_press_course_loop_item_user_progress() {
2095
+ $course = LP_Global::course();
2096
+ $user = LP_Global::user();
2097
 
2098
+ if ( ! $course || ! $user ) {
2099
+ return;
2100
+ }
2101
 
2102
+ if ( $user && $user->has_enrolled_course( $course->get_id() ) ) {
2103
+ $user->get_course_status( $course->get_id() );
2104
+ }
2105
+ }
2106
  }
2107
 
2108
  if ( ! function_exists( 'learn_press_course_item_class' ) ) {
2109
+ function learn_press_course_item_class( $item_id, $course_id = 0, $class = null ) {
2110
+ switch ( get_post_type( $item_id ) ) {
2111
+ case 'lp_lesson':
2112
+ learn_press_course_lesson_class( $item_id, $course_id, $class );
2113
+ break;
2114
+ case 'lp_quiz':
2115
+ learn_press_course_quiz_class( $item_id, $course_id, $class );
2116
+ break;
2117
+ }
2118
+ }
2119
  }
2120
 
2121
  if ( ! function_exists( 'learn_press_course_lesson_class' ) ) {
2122
+ /**
2123
+ * The class of lesson in course curriculum
2124
+ *
2125
+ * @param int $lesson_id
2126
+ * @param int $course_id
2127
+ * @param array|string $class
2128
+ * @param boolean $echo
2129
+ *
2130
+ * @return mixed
2131
+ */
2132
+ function learn_press_course_lesson_class( $lesson_id = null, $course_id = 0, $class = null, $echo = true ) {
2133
+ $user = learn_press_get_current_user();
2134
+ if ( ! $course_id ) {
2135
+ $course_id = get_the_ID();
2136
+ }
2137
+
2138
+ $course = learn_press_get_course( $course_id );
2139
+ if ( ! $course ) {
2140
+ return '';
2141
+ }
2142
+
2143
+ if ( is_string( $class ) && $class ) {
2144
+ $class = preg_split( '!\s+!', $class );
2145
+ } else {
2146
+ $class = array();
2147
+ }
2148
+
2149
+ $classes = array(
2150
+ 'course-lesson course-item course-item-' . $lesson_id
2151
+ );
2152
+
2153
+ $user = learn_press_get_current_user();
2154
+
2155
+ if ( $status = $user->get_item_status( $lesson_id ) ) {
2156
+ $classes[] = "item-has-status item-{$status}";
2157
+ }
2158
+ if ( $lesson_id && $course->is_current_item( $lesson_id ) ) {
2159
+ $classes[] = 'item-current';
2160
+ }
2161
+ if ( learn_press_is_course() ) {
2162
+ if ( $course->is_free() ) {
2163
+ $classes[] = 'free-item';
2164
+ }
2165
+ }
2166
+ $lesson = LP_Lesson::get_lesson( $lesson_id );
2167
+ if ( $lesson && $lesson->is_preview() ) {
2168
+ $classes[] = 'preview-item';
2169
+ }
2170
+
2171
+ if ( $user->can_view_item( $lesson_id, $course_id ) ) {
2172
+ $classes[] = 'viewable';
2173
+ }
2174
+
2175
+ $classes = array_unique( array_merge( $classes, $class ) );
2176
+ if ( $echo ) {
2177
+ echo 'class="' . implode( ' ', $classes ) . '"';
2178
+ }
2179
+
2180
+ return $classes;
2181
+ }
2182
  }
2183
 
2184
  if ( ! function_exists( 'learn_press_course_quiz_class' ) ) {
2185
+ /**
2186
+ * The class of lesson in course curriculum
2187
+ *
2188
+ * @param int $quiz_id
2189
+ * @param int $course_id
2190
+ * @param string|array $class
2191
+ * @param boolean $echo
2192
+ *
2193
+ * @return mixed
2194
+ */
2195
+ function learn_press_course_quiz_class( $quiz_id = null, $course_id = 0, $class = null, $echo = true ) {
2196
+ $user = learn_press_get_current_user();
2197
+ if ( ! $course_id ) {
2198
+ $course_id = get_the_ID();
2199
+ }
2200
+ if ( is_string( $class ) && $class ) {
2201
+ $class = preg_split( '!\s+!', $class );
2202
+ } else {
2203
+ $class = array();
2204
+ }
2205
+
2206
+ $course = learn_press_get_course( $course_id );
2207
+ if ( ! $course ) {
2208
+ return '';
2209
+ }
2210
+
2211
+ $classes = array(
2212
+ 'course-quiz course-item course-item-' . $quiz_id
2213
+ );
2214
+
2215
+ if ( $status = $user->get_item_status( $quiz_id ) ) {
2216
+ $classes[] = "item-has-status item-{$status}";
2217
+ }
2218
+
2219
+ if ( $quiz_id && $course->is_current_item( $quiz_id ) ) {
2220
+ $classes[] = 'item-current';
2221
+ }
2222
+
2223
+ if ( $user->can_view_item( $quiz_id, $course_id ) ) {
2224
+ $classes[] = 'viewable';
2225
+ }
2226
+
2227
+ if ( $course->is_final_quiz( $quiz_id ) ) {
2228
+ $classes[] = 'final-quiz';
2229
+ }
2230
+
2231
+ $classes = array_unique( array_merge( $classes, $class ) );
2232
+
2233
+ if ( $echo ) {
2234
+ echo 'class="' . join( ' ', $classes ) . '"';
2235
+ }
2236
+
2237
+ return $classes;
2238
+ }
2239
  }
2240
 
2241
  if ( ! function_exists( 'learn_press_message' ) ) {
2242
+ /**
2243
+ * Template to display the messages
2244
+ *
2245
+ * @param $content
2246
+ * @param string $type
2247
+ */
2248
+ function learn_press_message( $content, $type = 'message' ) {
2249
+ learn_press_get_template( 'global/message.php', array( 'type' => $type, 'content' => $content ) );
2250
+ }
2251
  }
2252
 
2253
  /******************************/
2254
 
2255
 
2256
  if ( ! function_exists( 'learn_press_course_class' ) ) {
2257
+ /**
2258
+ * Append new class to course post type
2259
+ *
2260
+ * @param $classes
2261
+ * @param $class
2262
+ * @param $post_id
2263
+ *
2264
+ * @return string
2265
+ */
2266
+ function learn_press_course_class( $classes, $class, $post_id = '' ) {
2267
+ if ( is_learnpress() ) {
2268
+ $classes = (array) $classes;
2269
+ if ( false !== ( $key = array_search( 'hentry', $classes ) ) ) {
2270
+ //unset( $classes[$key] );
2271
+ }
2272
+ }
2273
+ if ( $post_id === 0 ) {
2274
+ $classes[] = 'page type-page';
2275
+ }
2276
+ if ( ! $post_id || 'lp_course' !== get_post_type( $post_id ) ) {
2277
+ return $classes;
2278
+ }
2279
+ $classes[] = 'course';
2280
+
2281
+ return apply_filters( 'learn_press_course_class', $classes );
2282
+ }
2283
  }
2284
  /**
2285
  * When the_post is called, put course data into a global.
2290
  */
2291
  function learn_press_setup_object_data( $post ) {
2292
 
2293
+ $object = null;
2294
 
2295
+ if ( is_int( $post ) ) {
2296
+ $post = get_post( $post );
2297
+ }
2298
 
2299
+ if ( ! $post ) {
2300
+ return $object;
2301
+ }
2302
 
2303
+ if ( $post->post_type == LP_COURSE_CPT ) {
2304
+ if ( isset( $GLOBALS['course'] ) ) {
2305
+ unset( $GLOBALS['course'] );
2306
+ }
2307
 
2308
+ $object = learn_press_get_course( $post );
2309
+ // $object->prepare();
2310
+ LP()->global['course'] = $GLOBALS['course'] = $GLOBALS['lp_course'] = $object;
2311
+ }
2312
 
2313
 
2314
+ return $object;
2315
  }
2316
 
2317
  add_action( 'the_post', 'learn_press_setup_object_data' );
2318
 
2319
  function learn_press_setup_user() {
2320
+ $GLOBALS['lp_user'] = learn_press_get_current_user();
2321
  }
2322
 
2323
  if ( ! is_admin() ) {
2324
+ add_action( 'init', 'learn_press_setup_user', 1000 );
2325
  }
2326
 
2327
  /**
2333
 
2334
  function learn_press_display_message( $message, $type = 'success' ) {
2335
 
2336
+ // get all messages added into queue
2337
+ $messages = learn_press_session_get( learn_press_session_message_id() );
2338
+ learn_press_session_set( learn_press_session_message_id(), null );
2339
 
2340
+ // add new notice and display
2341
+ learn_press_add_message( $message, $type );
2342
+ echo learn_press_get_messages( true );
2343
 
2344
+ // store back messages
2345
+ learn_press_session_set( learn_press_session_message_id(), $messages );
2346
  }
2347
 
2348
  /**
2353
  * @return string
2354
  */
2355
  function learn_press_get_messages( $clear = false ) {
2356
+ ob_start();
2357
+ learn_press_print_messages( $clear );
2358
 
2359
+ return ob_get_clean();
2360
  }
2361
 
2362
  /**
2369
  */
2370
  function learn_press_add_message( $message, $type = 'success', $options = array(), $current_user = true ) {
2371
 
2372
+ if ( is_string( $options ) ) {
2373
+ $options = array( 'id' => $options );
2374
+ }
2375
 
2376
+ $options = wp_parse_args(
2377
+ $options,
2378
+ array(
2379
+ 'id' => ''
2380
+ )
2381
+ );
2382
 
2383
+ if ( $current_user ) {
2384
+ if ( true === $current_user ) {
2385
+ $current_user = get_current_user_id();
2386
+ }
2387
+ }
2388
 
2389
+ $key = "messages{$current_user}";
2390
 
2391
+ $messages = learn_press_session_get( $key );
2392
 
2393
+ if ( empty( $messages[ $type ] ) ) {
2394
+ $messages[ $type ] = array();
2395
+ }
2396
 
2397
+ $messages[ $type ][ $options['id'] ] = array( 'content' => $message, 'options' => $options );
2398
 
2399
+ learn_press_session_set( $key, $messages );
2400
  }
2401
 
2402
  function learn_press_get_message( $message, $type = 'success' ) {
2403
+ ob_start();
2404
+ learn_press_display_message( $message, $type );
2405
+ $message = ob_get_clean();
2406
 
2407
+ return $message;
2408
  }
2409
 
2410
  /**
2417
  *
2418
  */
2419
  function learn_press_remove_message( $id = '', $type = '' ) {
2420
+ if ( ! $groups = learn_press_session_get( learn_press_session_message_id() ) ) {
2421
+ return;
2422
+ }
2423
+
2424
+ settype( $type, 'array' );
2425
+
2426
+ if ( $id ) {
2427
+ foreach ( $groups as $message_type => $messages ) {
2428
+ if ( ! sizeof( $type ) ) {
2429
+ if ( isset( $groups[ $message_type ][ $id ] ) ) {
2430
+ unset( $groups[ $message_type ][ $id ] );
2431
+ }
2432
+ } elseif ( in_array( $message_type, $type ) ) {
2433
+ if ( isset( $groups[ $message_type ][ $id ] ) ) {
2434
+ unset( $groups[ $message_type ][ $id ] );
2435
+ }
2436
+ }
2437
+ }
2438
+ } elseif ( sizeof( $type ) ) {
2439
+ foreach ( $type as $t ) {
2440
+ if ( isset( $groups[ $t ] ) ) {
2441
+ unset( $groups[ $t ] );
2442
+ }
2443
+ }
2444
+ } else {
2445
+ $groups = array();
2446
+ }
2447
+
2448
+ learn_press_session_set( learn_press_session_message_id(), $groups );
2449
  }
2450
 
2451
  /**
2454
  * @param bool
2455
  */
2456
  function learn_press_print_messages( $clear = true ) {
2457
+ $messages = learn_press_session_get( learn_press_session_message_id() );
2458
+ learn_press_get_template( 'global/message.php', array( 'messages' => $messages ) );
2459
+ if ( $clear ) {
2460
+ learn_press_session_set( learn_press_session_message_id(), array() );
2461
+ }
2462
  }
2463
 
2464
  function learn_press_message_count( $type = '' ) {
2465
+ $count = 0;
2466
+ $messages = learn_press_session_get( learn_press_session_message_id(), array() );
2467
+
2468
+ if ( isset( $messages[ $type ] ) ) {
2469
+ $count = absint( sizeof( $messages[ $type ] ) );
2470
+ } elseif ( empty( $type ) ) {
2471
+ foreach ( $messages as $message ) {
2472
+ $count += absint( sizeof( $message ) );
2473
+ }
2474
+ }
2475
 
2476
+ return $count;
2477
  }
2478
 
2479
  function learn_press_session_message_id() {
2480
+ return "messages" . get_current_user_id();
2481
  }
2482
 
2483
  function learn_press_clear_messages() {
2484
+ _deprecated_function( __FUNCTION__, '3.0.0', 'learn_press_remove_message' );
2485
+ learn_press_remove_message();
2486
  }
2487
 
2488
  /**
2489
  * Displays messages before main content
2490
  */
2491
  function _learn_press_print_messages() {
2492
+ $item = LP_Global::course_item();
2493
+ if ( ( 'learn_press_before_main_content' == current_action() ) && $item ) {
2494
+ return;
2495
+ }
2496
+ learn_press_print_messages( true );
2497
  }
2498
 
2499
  add_action( 'learn_press_before_main_content', '_learn_press_print_messages', 50 );
2500
  add_action( 'learn-press/before-course-item-content', '_learn_press_print_messages', 50 );
2501
 
2502
  if ( ! function_exists( 'learn_press_page_controller' ) ) {
2503
+ /**
2504
+ * Check permission to view page
2505
+ *
2506
+ * @param file $template
2507
+ *
2508
+ * @return file
2509
+ */
2510
+ function learn_press_page_controller( $template/*, $slug, $name*/ ) {
2511
+ die( __FUNCTION__ );
2512
+ global $wp;
2513
+ if ( isset( $wp->query_vars['lp-order-received'] ) ) {
2514
+ global $post;
2515
+ $post->post_title = __( 'Order received', 'learnpress' );
2516
+ }
2517
+ if ( is_single() ) {
2518
+ $user = LP()->user;
2519
+ $redirect = false;
2520
+ $item_id = 0;
2521
+
2522
+ switch ( get_post_type() ) {
2523
+ case LP_QUIZ_CPT:
2524
+ $quiz = LP()->quiz;
2525
+ $quiz_status = LP()->user->get_quiz_status( get_the_ID() );
2526
+ $redirect = false;
2527
+ $error_message = false;
2528
+ if ( ! $user->can_view_quiz( $quiz->id ) ) {
2529
+ if ( $course = $quiz->get_course() ) {
2530
+ $redirect = $course->permalink;
2531
+ $error_message = sprintf( __( 'Access denied "%s"', 'learnpress' ) );
2532
+ }
2533
+ } elseif ( $quiz_status == 'started' && ( empty( $_REQUEST['question'] ) && $current_question = $user->get_current_quiz_question( $quiz->id ) ) ) {
2534
+ $redirect = $quiz->get_question_link( $current_question );
2535
+ } elseif ( $quiz_status == 'completed'/* && !empty( $_REQUEST['question'] )*/ ) {
2536
+ $redirect = get_the_permalink( $quiz->id );
2537
+ } elseif ( learn_press_get_request( 'question' ) && $quiz_status == '' ) {
2538
+ $redirect = get_the_permalink( $quiz->id );
2539
+ }
2540
+ $item_id = $quiz->id;
2541
+ $redirect = apply_filters( 'learn_press_quiz_access_denied_redirect_permalink', $redirect,
2542
+ $quiz_status, $quiz->id, $user->get_id() );
2543
+ break;
2544
+ case LP_COURSE_CPT:
2545
+ if ( ( $course = learn_press_get_course() ) && $item_id = $course->is_viewing_item() ) {
2546
+ if ( ! LP()->user->can_view_item( $item_id ) ) {
2547
+ $redirect = apply_filters( 'learn_press_lesson_access_denied_redirect_permalink',
2548
+ $course->permalink, $item_id, $user->get_id() );
2549
+ }
2550
+ }
2551
+ }
2552
+
2553
+ // prevent loop redirect
2554
+ /*if ( $redirect && !learn_press_is_current_url( $redirect ) ) {
2555
+ if ( $item_id && $error_message ) {
2556
+ $error_message = apply_filters( 'learn_press_course_item_access_denied_error_message', get_the_title( $item_id ) );
2557
+ if ( $error_message !== false ) {
2558
+ learn_press_add_notice( $error_message, 'error' );
2559
+ }
2560
+ }
2561
+ wp_redirect( $redirect );
2562
+ exit();
2563
+ }*/
2564
+ }
2565
+
2566
+ return $template;
2567
+ }
2568
  }
2569
  //add_filter( 'template_include', 'learn_press_page_controller' );
2570
 
2571
  if ( ! function_exists( 'learn_press_page_title' ) ) {
2572
 
2573
+ /**
2574
+ * learn_press_page_title function.
2575
+ *
2576
+ * @param boolean $echo
2577
+ *
2578
+ * @return string
2579
+ */
2580
+ function learn_press_page_title( $echo = true ) {
2581
 
2582
+ if ( is_search() ) {
2583
+ $page_title = sprintf( __( 'Search Results for: &ldquo;%s&rdquo;', 'learnpress' ), get_search_query() );
2584
 
2585
+ if ( get_query_var( 'paged' ) ) {
2586
+ $page_title .= sprintf( __( '&nbsp;&ndash; Page %s', 'learnpress' ), get_query_var( 'paged' ) );
2587
+ }
2588
 
2589
+ } elseif ( is_tax() ) {
2590
 
2591
+ $page_title = single_term_title( "", false );
2592
 
2593
+ } else {
2594
 
2595
+ $courses_page_id = learn_press_get_page_id( 'courses' );
2596
+ $page_title = get_the_title( $courses_page_id );
2597
 
2598
+ }
2599
 
2600
+ $page_title = apply_filters( 'learn_press_page_title', $page_title );
2601
 
2602
+ if ( $echo ) {
2603
+ echo $page_title;
2604
+ } else {
2605
+ return $page_title;
2606
+ }
2607
+ }
2608
  }
2609
 
2610
  function learn_press_template_redirect() {
2611
+ global $wp_query, $wp;
2612
 
2613
+ // When default permalinks are enabled, redirect shop page to post type archive url
2614
+ if ( ! empty( $_GET['page_id'] ) && get_option( 'permalink_structure' ) == "" && $_GET['page_id'] == learn_press_get_page_id( 'courses' ) ) {
2615
+ wp_safe_redirect( get_post_type_archive_link( 'lp_course' ) );
2616
+ exit;
2617
+ }
2618
  }
2619
 
2620
  add_action( 'template_redirect', 'learn_press_template_redirect' );
2629
  * @return string
2630
  */
2631
  function learn_press_get_template_part( $slug, $name = '' ) {
2632
+ $template = '';
2633
+
2634
+ // Look in yourtheme/slug-name.php and yourtheme/learnpress/slug-name.php
2635
+ if ( $name ) {
2636
+ $template = locate_template( array(
2637
+ "{$slug}-{$name}.php",
2638
+ learn_press_template_path() . "/{$slug}-{$name}.php"
2639
+ ) );
2640
+ }
2641
 
2642
+ // Get default slug-name.php
2643
+ if ( ! $template && $name && file_exists( LP_PLUGIN_PATH . "/templates/{$slug}-{$name}.php" ) ) {
2644
+ $template = LP_PLUGIN_PATH . "/templates/{$slug}-{$name}.php";
2645
+ }
2646
 
2647
+ // If template file doesn't exist, look in yourtheme/slug.php and yourtheme/learnpress/slug.php
2648
+ if ( ! $template ) {
2649
+ $template = locate_template( array( "{$slug}.php", learn_press_template_path() . "/{$slug}.php" ) );
2650
+ }
2651
 
2652
+ // Allow 3rd party plugin filter template file from their plugin
2653
+ if ( $template ) {
2654
+ $template = apply_filters( 'learn_press_get_template_part', $template, $slug, $name );
2655
+ }
2656
+ if ( $template && file_exists( $template ) ) {
2657
+ load_template( $template, false );
2658
+ }
2659
 
2660
+ return $template;
2661
  }
2662
 
2663
  /**
2671
  * @return void
2672
  */
2673
  function learn_press_get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
2674
+ if ( $args && is_array( $args ) ) {
2675
+ extract( $args );
2676
+ }
2677
 
2678
+ if ( false === strpos( $template_name, '.php' ) ) {
2679
+ $template_name .= '.php';
2680
+ }
2681
 
2682
+ $located = learn_press_locate_template( $template_name, $template_path, $default_path );
2683
 
2684
+ if ( ! file_exists( $located ) ) {
2685
+ _doing_it_wrong( __FUNCTION__, sprintf( '<code>%s</code> does not exist.', $located ), '2.1' );
2686
 
2687
+ return;
2688
+ }
2689
+ // Allow 3rd party plugin filter template file from their plugin
2690
+ $located = apply_filters( 'learn_press_get_template', $located, $template_name, $args, $template_path,
2691
+ $default_path );
2692
+ if ( $located != '' ) {
2693
+ do_action( 'learn_press_before_template_part', $template_name, $template_path, $located, $args );
2694
 
2695
+ include( $located );
2696
 
2697
+ do_action( 'learn_press_after_template_part', $template_name, $template_path, $located, $args );
2698
+ }
2699
  }
2700
 
2701
  /**
2711
  *
2712
  */
2713
  function learn_press_get_template_content( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
2714
+ ob_start();
2715
+ learn_press_get_template( $template_name, $args, $template_path, $default_path );
2716
 
2717
+ return ob_get_clean();
2718
  }
2719
 
2720
  /**
2735
  * @return string
2736
  */
2737
  function learn_press_locate_template( $template_name, $template_path = '', $default_path = '' ) {
2738
+ if ( ! $template_path ) {
2739
+ $template_path = learn_press_template_path();
2740
+ }
 
 
 
 
2741
 
2742
+ if ( ! $default_path ) {
2743
+ $default_path = LP_PLUGIN_PATH . 'templates/';
2744
+ }
 
 
 
 
2745
 
2746
+ // Look within passed path within the theme - this is priority
2747
+ $template = locate_template(
2748
+ array(
2749
+ trailingslashit( $template_path ) . $template_name,
2750
+ $template_name
2751
+ )
2752
+ );
2753
+
2754
+ // Get default template
2755
+ if ( ! $template ) {
2756
+ $template = trailingslashit( $default_path ) . $template_name;
2757
+ }
2758
 
2759
+ // Return what we found
2760
+ return apply_filters( 'learn_press_locate_template', $template, $template_name, $template_path );
2761
  }
2762
 
2763
  /**
2768
  * @return string
2769
  */
2770
  function learn_press_template_path( $slash = false ) {
2771
+ return apply_filters( 'learn_press_template_path', 'learnpress', $slash ) . ( $slash ? '/' : '' );
2772
  }
2773
 
2774
 
2775
  if ( ! function_exists( 'learn_press_is_404' ) ) {
2776
+ /**
2777
+ * Set header is 404
2778
+ */
2779
+ function learn_press_is_404() {
2780
+ global $wp_query;
2781
+ if ( ! empty( $_REQUEST['debug-404'] ) ) {
2782
+ learn_press_debug( debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, $_REQUEST['debug-404'] ) );
2783
+ }
2784
+ $wp_query->set_404();
2785
+ status_header( 404 );
2786
+ }
2787
  }
2788
 
2789
  if ( ! function_exists( 'learn_press_404_page' ) ) {
2790
+ /**
2791
+ * Display 404 page
2792
+ */
2793
+ function learn_press_404_page() {
2794
+ learn_press_is_404();
2795
+ }
2796
  }
2797
 
2798
  if ( ! function_exists( 'learn_press_generate_template_information' ) ) {
2799
+ function learn_press_generate_template_information( $template_name, $template_path, $located, $args ) {
2800
+ $debug = learn_press_get_request( 'show-template-location' );
2801
+ if ( $debug == 'on' ) {
2802
+ echo "<!-- Template Location:" . str_replace( array( LP_PLUGIN_PATH, ABSPATH ), '', $located ) . " -->";
2803
+ }
2804
+ }
2805
  }
2806
 
2807
  if ( ! function_exists( 'learn_press_course_remaining_time' ) ) {
2808
+ /**
2809
+ * Show the time remain of a course
2810
+ */
2811
+ function learn_press_course_remaining_time() {
2812
+ $user = learn_press_get_current_user();
2813
+ if ( ! $user->has_finished_course( get_the_ID() ) && $text = learn_press_get_course( get_the_ID() )->get_user_duration_html( $user->get_id() ) ) {
2814
+ learn_press_display_message( $text );
2815
+ }
2816
+ }
2817
  }
2818
 
2819
  //add_filter( 'template_include', 'learn_press_permission_view_quiz', 100 );
2820
  function learn_press_permission_view_quiz( $template ) {
2821
+ $quiz = LP()->global['course-item'];
2822
+ // if is not in single quiz
2823
+ if ( ! learn_press_is_quiz() ) {
2824
+ return $template;
2825
+ }
2826
+ $user = learn_press_get_current_user();
2827
+ // If user haven't got permission
2828
+ if ( ! current_user_can( 'edit-lp_quiz' ) && ! $user->can_view_quiz( $quiz->id ) ) {
2829
+ switch ( LP()->settings->get( 'quiz_restrict_access' ) ) {
2830
+ case 'custom':
2831
+ $template = learn_press_locate_template( 'global/restrict-access.php' );
2832
+ break;
2833
+ default:
2834
+ learn_press_is_404();
2835
+ }
2836
+ }
2837
+
2838
+ return $template;
2839
  }
2840
 
2841
 
2842
  if ( ! function_exists( 'learn_press_item_meta_type' ) ) {
2843
+ function learn_press_item_meta_type( $course, $item ) { ?>
2844
 
2845
+ <?php if ( $item->post_type == 'lp_quiz' ) { ?>
2846
 
2847
  <span class="lp-label lp-label-quiz"><?php _e( 'Quiz', 'learnpress' ); ?></span>
2848
 
2849
+ <?php if ( $course->final_quiz == $item->ID ) { ?>
2850
 
2851
  <span class="lp-label lp-label-final"><?php _e( 'Final', 'learnpress' ); ?></span>
2852
 
2853
+ <?php } ?>
2854
 
2855
+ <?php } elseif ( $item->post_type == 'lp_lesson' ) { ?>
2856
 
2857
  <span class="lp-label lp-label-lesson"><?php _e( 'Lesson', 'learnpress' ); ?></span>
2858
+ <?php if ( get_post_meta( $item->ID, '_lp_preview', true ) == 'yes' ) { ?>
2859
 
2860
  <span class="lp-label lp-label-preview"><?php _e( 'Preview', 'learnpress' ); ?></span>
2861
 
2862
+ <?php } ?>
2863
 
2864
+ <?php } else { ?>
2865
 
2866
+ <?php do_action( 'learn_press_item_meta_type', $course, $item ); ?>
2867
 
2868
+ <?php }
2869
+ }
2870
  }
2871
 
2872
  function learn_press_single_course_js() {
2873
+ _deprecated_function( __FUNCTION__, '3.0.0' );
2874
+ if ( ! learn_press_is_course() ) {
2875
+ return;
2876
+ }
2877
+ $user = learn_press_get_current_user();
2878
+ $course = learn_press_get_course();
2879
+ $js = array( 'url' => $course->get_permalink(), 'items' => array() );
2880
+ if ( $items = $course->get_curriculum_items() ) {
2881
+ foreach ( $items as $item ) {
2882
+ $item = array(
2883
+ 'id' => absint( $item->ID ),
2884
+ 'type' => $item->post_type,
2885
+ 'title' => get_the_title( $item->ID ),
2886
+ 'url' => $course->get_item_link( $item->ID ),
2887
+ 'current' => $course->is_viewing_item( $item->ID ),
2888
+ 'completed' => false,
2889
+ 'viewable' => $item->post_type == 'lp_quiz' ? ( $user->can_view_quiz( $item->ID,
2890
+ $course->get_id() ) !== false ) : ( $user->can_view_lesson( $item->ID,
2891
+ $course->get_id() ) !== false )
2892
+ );
2893
+ $js['items'][] = $item;
2894
+ }
2895
+ }
2896
+ echo '<script type="text/javascript">';
2897
+ echo 'var SingleCourse_Params = ' . json_encode( $js );
2898
+ echo '</script>';
2899
  }
2900
 
2901
  ///add_action( 'wp_head', 'learn_press_single_course_js' );
2906
 
2907
 
2908
  if ( ! function_exists( 'learn_press_course_overview_tab' ) ) {
2909
+ /**
2910
+ * Output course overview
2911
+ *
2912
+ * @since 1.1
2913
+ */
2914
+ function learn_press_course_overview_tab() {
2915
+ learn_press_get_template( 'single-course/tabs/overview.php' );
2916
+ }
2917
  }
2918
 
2919
  if ( ! function_exists( 'learn_press_course_curriculum_tab' ) ) {
2920
+ /**
2921
+ * Output course curriculum
2922
+ *
2923
+ * @since 1.1
2924
+ */
2925
+ function learn_press_course_curriculum_tab() {
2926
+ learn_press_get_template( 'single-course/tabs/curriculum.php' );
2927
+ }
2928
  }
2929
 
2930
  if ( ! function_exists( 'learn_press_course_instructor_tab' ) ) {
2931
+ /**
2932
+ * Output course curriculum
2933
+ *
2934
+ * @since 1.1
2935
+ */
2936
+ function learn_press_course_instructor_tab() {
2937
+ learn_press_get_template( 'single-course/tabs/instructor.php' );
2938
+ }
2939
  }
2940
 
2941
  if ( ! function_exists( 'learn_press_sort_course_tabs' ) ) {
2942
 
2943
+ function learn_press_sort_course_tabs( $tabs = array() ) {
2944
+ uasort( $tabs, 'learn_press_sort_list_by_priority_callback' );
2945
 
2946
+ return $tabs;
2947
+ }
2948
  }
2949
 
2950
  if ( ! function_exists( 'learn_press_get_profile_display_name' ) ) {
2951
+ /**
2952
+ * Get Display name publicly as in Profile page
2953
+ *
2954
+ * @param $user
2955
+ *
2956
+ * @return string
2957
+ */
2958
+ function learn_press_get_profile_display_name( $user ) {
2959
+ if ( empty( $user ) ) {
2960
+ return '';
2961
+ }
2962
+ $id = '';
2963
+ if ( $user instanceof LP_Abstract_User ) {
2964
+ $id = $user->get_id();
2965
+ } elseif ( $user instanceof WP_User ) {
2966
+ $id = $user->ID;
2967
+ } elseif ( is_numeric( $user ) ) {
2968
+ $id = $user;
2969
+ }
2970
+ if ( ! isset( $id ) ) {
2971
+ return '';
2972
+ }
2973
+ $info = get_userdata( $id );
2974
+
2975
+ return $info ? $info->display_name : '';
2976
+ }
2977
  }
2978
 
2979
  if ( ! function_exists( 'learn_press_profile_dashboard_logged_in' ) ) {
2980
+ function learn_press_profile_dashboard_logged_in() {
2981
+ learn_press_get_template( 'profile/dashboard-logged-in.php' );
2982
+ }
2983
  }
2984
 
2985
  if ( ! function_exists( 'learn_press_profile_dashboard_user_bio' ) ) {
2986
+ function learn_press_profile_dashboard_user_bio() {
2987
+ $profile = LP_Profile::instance();
2988
 
2989
+ if ( ! $user = $profile->get_user() ) {
2990
+ return;
2991
+ }
2992
 
2993
+ learn_press_get_template( 'profile/user-bio.php' );
2994
+ }
2995
  }
2996
 
2997
  if ( ! function_exists( 'learn_press_profile_dashboard_not_logged_in' ) ) {
2998
+ function learn_press_profile_dashboard_not_logged_in() {
2999
+ $profile = LP_Global::profile();
3000
 
3001
+ if ( ! $profile->get_user()->is_guest() ) {
3002
+ return;
3003
+ }
3004
 
3005
+ if ( 'yes' === LP()->settings()->get( 'enable_register_profile' ) || 'yes' === LP()->settings()->get( 'enable_login_profile' ) ) {
3006
+ return;
3007
+ }
3008
 
3009
+ learn_press_get_template( 'profile/not-logged-in.php' );
3010
+ }
3011
  }
3012
 
3013
  if ( ! function_exists( 'learn_press_profile_login_form' ) ) {
3014
+ function learn_press_profile_login_form() {
3015
+ $profile = LP_Global::profile();
3016
 
3017
+ print_r( metadata_exists( 'user', $profile->get_user()->get_id(), '_lp_temp_user' ) );
3018
+ if ( ! $profile->get_user()->is_guest() ) {
3019
+ return;
3020
+ }
3021
 
3022
+ if ( ! $fields = $profile->get_login_fields() ) {
3023
+ return;
3024
+ }
3025
 
3026
+ if ( 'yes' !== LP()->settings()->get( 'enable_login_profile' ) ) {
3027
+ return;
3028
+ }
3029
 
3030
+ learn_press_get_template( 'global/form-login.php', array( 'fields' => $fields ) );
3031
+ }
3032
  }
3033
 
3034
  if ( ! function_exists( 'learn_press_profile_register_form' ) ) {
3035
+ function learn_press_profile_register_form() {
3036
+ if ( 'yes' !== LP()->settings()->get( 'enable_register_profile' ) ) {
3037
+ return;
3038
+ }
3039
 
3040
+ $profile = LP_Global::profile();
3041
 
3042
+ if ( ! $profile->get_user()->is_guest() ) {
3043
+ return;
3044
+ }
3045
 
3046
+ if ( ! $fields = $profile->get_register_fields() ) {
3047
+ return;
3048
+ }
3049
 
3050
+ learn_press_get_template( 'global/form-register.php', array( 'fields' => $fields ) );
3051
+ }
3052
  }
3053
 
3054
  if ( ! function_exists( 'learn_press_content_item_lesson_title' ) ) {
3055
+ function learn_press_content_item_lesson_title() {
3056
+ $item = LP_Global::course_item();
3057
+ $lesson_title = $item->get_title( 'display' );
3058
 
3059
+ if ( ( 'standard' !== ( $format = $item->get_format() ) ) && file_exists( $format_template = learn_press_locate_template( "content-lesson/{$format}/title.php" ) ) ) {
3060
+ include $format_template;
3061
 
3062
+ return;
3063
+ }
3064
 
3065
+ if ( ! $lesson_title ) {
3066
+ return;
3067
+ }
3068
 
3069
+ learn_press_get_template( 'content-lesson/title.php', array( 'title' => $lesson_title ) );
3070
+ }
3071
  }
3072
 
3073
  if ( ! function_exists( 'learn_press_content_item_lesson_content' ) ) {
3074
+ function learn_press_content_item_lesson_content() {
3075
+ $item = LP_Global::course_item();
3076
+ $content = $item->get_content();
3077
 
3078
+ if ( ( 'standard' !== ( $format = $item->get_format() ) ) && file_exists( $format_template = learn_press_locate_template( "content-lesson/{$format}/content.php" ) ) ) {
3079
+ include $format_template;
3080
 
3081
+ return;
3082
+ }
3083
 
3084
+ do_action( 'learn-press/lesson-start', $item );
3085
+ learn_press_get_template( 'content-lesson/content.php', array( 'item' => $item, 'content' => $content ) );
3086
+ }
3087
  }
3088
 
3089
  if ( ! function_exists( 'learn_press_content_item_lesson_content_blocked' ) ) {
3090
+ function learn_press_content_item_lesson_content_blocked() {
3091
+ $item = LP_Global::course_item();
3092
 
3093
+ if ( ! $item->is_blocked() ) {
3094
+ return;
3095
+ }
3096
 
3097
+ learn_press_get_template( 'global/block-content.php' );
3098
+ }
3099
  }
3100
 
3101
  if ( ! function_exists( 'learn_press_content_item_lesson_complete_button' ) ) {
3102
+ function learn_press_content_item_lesson_complete_button() {
3103
+ $user = LP_Global::user();
3104
+ $course = LP_Global::course();
3105
+ $item = LP_Global::course_item();
3106
+ $completed = $user->has_completed_item( $item->get_id(), $course->get_id() );
3107
+ $security = $item->create_nonce( 'complete' );
3108
+ $has_enrolled = $user->has_enrolled_course( $course->get_id() );
3109
+
3110
+ if ( ! $course->is_required_enroll() ) {
3111
+ return;
3112
+ }
3113
 
3114
+ if ( ! $has_enrolled ) {
3115
+ return;
3116
+ }
3117
 
3118
+ if ( ( $course_item = $user->get_course_data( $course->get_id() ) ) && $course_item->is_finished() ) {
3119
+ return;
3120
+ }
3121
 
3122
+ $args = array(
3123
+ 'course' => $course,
3124
+ 'item' => $item,
3125
+ 'completed' => $completed,
3126
+ 'security' => $security,
3127
+ );
3128
 
3129
+ learn_press_get_template( 'content-lesson/button-complete.php', $args );
3130
+ }
3131
  }
3132
 
3133
  if ( ! function_exists( 'learn_press_content_item_header' ) ) {
3134
+ function learn_press_content_item_header() {
3135
+ learn_press_get_template( 'single-course/content-item/header.php' );
3136
+ }
3137
  }
3138
 
3139
  if ( ! function_exists( 'learn_press_content_item_footer' ) ) {
3140
+ function learn_press_content_item_footer() {
3141
+ learn_press_get_template( 'single-course/content-item/footer.php' );
3142
+ }
3143
  }
3144
 
3145
  if ( ! function_exists( 'learn_press_content_item_review_quiz_title' ) ) {
3146
+ function learn_press_content_item_review_quiz_title() {
3147
+ if ( learn_press_is_review_questions() ) {
3148
+ learn_press_get_template( 'content-quiz/review-title.php' );
3149
+ }
3150
+ }
3151
  }
3152
 
3153
  if ( ! function_exists( 'learn_press_become_teacher_messages' ) ) {
3154
+ function learn_press_become_teacher_messages() {
3155
+ $messages = LP_Shortcode_Become_A_Teacher::get_messages();
3156
+ if ( ! $messages ) {
3157
+ return;
3158
+ }
3159
 
3160
+ learn_press_get_template( 'global/become-teacher-form/message.php', array( 'messages' => $messages ) );
3161
+ }
3162
  }
3163
 
3164
  if ( ! function_exists( 'learn_press_become_teacher_heading' ) ) {
3165
 
3166
+ function learn_press_become_teacher_heading() {
3167
+ $messages = LP_Shortcode_Become_A_Teacher::get_messages();
3168
+ if ( $messages ) {
3169
+ return;
3170
+ }
3171
+ ?>
3172
  <h3><?php _e( 'Fill out the form and send us your requesting.', 'learnpress' ); ?></h3>
3173
+ <?php
3174
+ }
3175
  }
3176
 
3177
  if ( ! function_exists( 'learn_press_become_teacher_form_fields' ) ) {
3178
 
3179
+ function learn_press_become_teacher_form_fields() {
3180
+ $messages = LP_Shortcode_Become_A_Teacher::get_messages();
3181
+ if ( $messages ) {
3182
+ return;
3183
+ }
3184
 
3185
+ include_once LP_PLUGIN_PATH . 'inc/admin/meta-box/class-lp-meta-box-helper.php';
3186
 
3187
+ learn_press_get_template( 'global/become-teacher-form/form-fields.php',
3188
+ array( 'fields' => learn_press_get_become_a_teacher_form_fields() ) );
3189
+ }
3190
  }
3191
 
3192
  if ( ! function_exists( 'learn_press_become_teacher_button' ) ) {
3193
 
3194
+ function learn_press_become_teacher_button() {
3195
+ $messages = LP_Shortcode_Become_A_Teacher::get_messages();
3196
+ if ( $messages ) {
3197
+ return;
3198
+ }
3199
 
3200
+ learn_press_get_template( 'global/become-teacher-form/button.php' );
3201
+ }
3202
  }
3203
 
3204
  if ( ! function_exists( 'learn_press_content_item_comments' ) ) {
3205
 
3206
+ function learn_press_content_item_comments() {
3207
 
3208
+ $item = LP_Global::course_item();
3209
 
3210
+ if ( ! $item ) {
3211
+ return;
3212
+ }
3213
 
3214
+ if ( ! $item->is_support( 'comments' ) ) {
3215
+ return;
3216
+ }
3217
 
3218
+ global $post;
3219
 
3220
+ $post = get_post( $item->get_id() );
3221
 
3222
+ setup_postdata( $post );
3223
 
3224
+ if ( ! have_comments() ) {
3225
+ return;
3226
+ }
3227
 
3228
+ comments_template();
3229
 
3230
+ wp_reset_postdata();
3231
+ }
3232
  }
3233
 
3234
  if ( ! function_exists( 'learn_press_content_item_nav' ) ) {
3235
+ function learn_press_content_item_nav() {
3236
+ $course = LP_Global::course();
3237
+ $next_item = $prev_item = false;
3238
+
3239
+ if ( $next_id = $course->get_next_item() ) {
3240
+ $next_item = $course->get_item( $next_id );
3241
+ }
3242
+ if ( $prev_id = $course->get_prev_item() ) {
3243
+ $prev_item = $course->get_item( $prev_id );
3244
+ }
3245
+
3246
+ learn_press_get_template(
3247
+ 'single-course/content-item/nav.php',
3248
+ array(
3249
+ 'next_item' => $next_item,
3250
+ 'prev_item' => $prev_item
3251
+ )
3252
+ );
3253
+ }
3254
  }
3255
 
3256
  function learn_press_disable_course_comment_form() {
3257
+ add_filter( 'comments_template', 'learn_press_blank_comments_template', 999 );
3258
  }
3259
 
3260
  function learn_press_course_comments_open( $open, $post_id ) {
3261
+ $post = get_post( $post_id );
3262
+ if ( LP_COURSE_CPT == $post->post_type ) {
3263
+ $open = false;
3264
+ }
3265
 
3266
+ return $open;
3267
  }
3268
 
3269
 
3270
  if ( ! function_exists( 'learn_press_profile_mobile_menu' ) ) {
3271
+ function learn_press_profile_mobile_menu() {
3272
+ learn_press_get_template( 'profile/mobile-menu.php' );
3273
+ }
3274
  }
3275
 
3276
  if ( ! function_exists( 'learn_press_profile_order_details' ) ) {
3277
+ function learn_press_profile_order_details() {
3278
+ $profile = LP_Profile::instance();
3279
 
3280
+ if ( false === ( $order = $profile->get_view_order() ) ) {
3281
+ return;
3282
+ }
3283
 
3284
+ learn_press_get_template( 'order/order-details.php', array( 'order' => $order ) );
3285
+ }
3286
  }
3287
 
3288
  if ( ! function_exists( 'learn_press_profile_order_recover' ) ) {
3289
+ function learn_press_profile_order_recover() {
3290
+ $profile = LP_Profile::instance();
3291
 
3292
+ if ( false === ( $order = $profile->get_view_order() ) ) {
3293
+ return;
3294
+ }
3295
+ learn_press_get_template( 'profile/tabs/orders/recover-my-order.php', array( 'order' => $order ) );
3296
+ }
3297
  }
3298
 
3299
  if ( ! function_exists( 'learn_press_profile_order_message' ) ) {
3300
+ function learn_press_profile_order_message() {
3301
+ $profile = LP_Profile::instance();
3302
 
3303
+ if ( false === ( $order = $profile->get_view_order() ) ) {
3304
+ return;
3305
+ }
3306
+ learn_press_get_template( 'profile/tabs/orders/order-message.php', array( 'order' => $order ) );
3307
+ }
3308
  }
3309
 
3310
  function learn_press_is_content_item_only() {
3311
+ return ! empty( $_REQUEST['content-item-only'] );
3312
  }
3313
 
3314
  function learn_press_label_html( $label, $type = '' ) {
3315
+ ?>
3316
  <span class="lp-label label-<?php echo esc_attr( $type ? $type : $label ); ?>">
3317
  <?php echo $label; ?>
3318
  </span>
3319
+ <?php
3320
  }
3321
 
3322
  // Fix issue with course content is duplicated if theme use the_content instead of $course->get_description()
3323
  function learn_press_course_the_content( $content ) {
3324
+ _deprecated_function( __FUNCTION__, '3.0.0' );
3325
+ global $post;
3326
+ if ( $post && $post->post_type == 'lp_course' ) {
3327
+ $course = learn_press_get_course( $post->ID );
3328
+ if ( $course ) {
3329
+ remove_filter( 'the_content', 'learn_press_course_the_content', 99999 );
3330
+ $content = $course->get_content();
3331
+ add_filter( 'the_content', 'learn_press_course_the_content', 99999 );
3332
+ }
3333
+ }
3334
 
3335
+ return $content;
3336
  }
3337
 
3338
  //add_action( 'template_redirect', 'learn_press_check_access_lesson' );
3339
 
3340
  function learn_press_check_access_lesson() {
3341
+ $queried_post_type = get_query_var( 'post_type' );
3342
+ if ( is_single() && 'lp_lesson' == $queried_post_type ) {
3343
+ $course = learn_press_get_course();
3344
+ if ( ! $course ) {
3345
+ learn_press_is_404();
3346
+
3347
+ return;
3348
+ }
3349
+ $post = get_post();
3350
+ $user = learn_press_get_current_user();
3351
+ $can_view = $user->can_view_item( $post->ID, $course->get_id() );
3352
+ if ( ! $can_view ) {
3353
+ learn_press_is_404();
3354
+
3355
+ return;
3356
+ }
3357
+ } elseif ( is_single() && 'lp_course' == $queried_post_type ) {
3358
+ $course = learn_press_get_course();
3359
+ $item = LP()->global['course-item'];
3360
+ if ( is_object( $item ) && isset( $item->post->post_type ) && 'lp_lesson' === $item->post->post_type ) {
3361
+ $user = learn_press_get_current_user();
3362
+ $can_view = $user->can_view_item( $item->id, $course->get_id() );
3363
+ if ( ! $can_view ) {
3364
+ learn_press_404_page();
3365
+
3366
+ return;
3367
+ }
3368
+ }
3369
+ }
3370
  }
3371
 
3372
  function learn_press_get_course_redirect( $link ) {
3373
 
3374
+ if ( empty( $_SERVER['HTTP_REFERER'] ) ) {
3375
+ return $link;
3376
+ }
3377
+ $referer = $_SERVER['HTTP_REFERER'];
3378
+ $info_a = parse_url( $referer );
3379
+ $info_b = parse_url( $link );
3380
+
3381
+ $a = explode( '/', $info_a['path'] );
3382
+ $a = array_filter( $a );
3383
+
3384
+ $b = explode( '/', $info_b['path'] );
3385
+ $b = array_filter( $b );
3386
+
3387
+ $same = array_intersect_assoc( $a, $b );
3388
+
3389
+ $a = array_diff_assoc( $a, $same );
3390
+ $b = array_diff_assoc( $b, $same );
3391
+
3392
+ $a = array_values( $a );
3393
+ $b = array_values( $b );
3394
+
3395
+ if ( array_shift( $a ) === 'popup' ) {
3396
+ unset( $a[0] );
3397
+ if ( ! ( array_diff_assoc( $a, $b ) ) ) {
3398
+ $link = '';
3399
+ foreach ( array( 'scheme', 'host', 'port', 'path' ) as $v ) {
3400
+ if ( ! isset( $info_a[ $v ] ) ) {
3401
+ continue;
3402
+ }
3403
+
3404
+ if ( $v == 'scheme' ) {
3405
+ $sep = '://';
3406
+ } elseif ( $v == 'host' ) {
3407
+ $sep = '';
3408
+ } elseif ( $v == 'port' ) {
3409
+ $link .= ':';
3410
+ $sep = '';
3411
+ } else {
3412
+ $sep = '/';
3413
+ }
3414
+ $link = $link . $info_a[ $v ] . $sep;
3415
+ }
3416
+
3417
+ if ( ! empty( $info_b['query'] ) ) {
3418
+ $link .= '?' . $info_b['query'];
3419
+ }
3420
+
3421
+ if ( ! empty( $info_b['fragment'] ) ) {
3422
+ $link .= '#' . $info_b['fragment'];
3423
+ }
3424
+ }
3425
+ }
3426
+
3427
+ return $link;
3428
  }
3429
 
3430
  /**
3431
  * @param LP_Quiz $item
3432
  */
3433
  function learn_press_quiz_meta_final( $item ) {
3434
+ $course = LP_Global::course();
3435
+ if ( ! $course->is_final_quiz( $item->get_id() ) ) {
3436
+ return;
3437
+ }
3438
+ echo '<span class="item-meta final-quiz">' . __( 'Final', 'learnpress' ) . '</span>';
3439
  }
3440
 
3441
  /**
3442
  * @param LP_Quiz $item
3443
  */
3444
  function learn_press_quiz_meta_questions( $item ) {
3445
+ $count = $item->count_questions();
3446
+ echo '<span class="item-meta count-questions">' . sprintf( $count ? _n( '%d question', '%d questions', $count,
3447
+ 'learnpress' ) : __( '%d question', 'learnpress' ), $count ) . '</span>';
3448
  }
3449
 
3450
  /**
3451
  * @param LP_Quiz|LP_Lesson $item
3452
  */
3453
  function learn_press_item_meta_duration( $item ) {
3454
+ $duration = $item->get_duration();
3455
+
3456
+ if ( is_a( $duration, 'LP_Duration' ) && $duration->get() ) {
3457
+ $format = array(
3458
+ 'day' => '%s ' . _x( 'day', 'duration', 'learnpress' ),
3459
+ 'hour' => '%s ' . _x( 'hour', 'duration', 'learnpress' ),
3460
+ 'minute' => '%s ' . _x( 'min', 'duration', 'learnpress' ),
3461
+ 'second' => '%s ' . _x( 'sec', 'duration', 'learnpress' ),
3462
+ );
3463
+ echo '<span class="item-meta duration">' . $duration->to_timer( $format, true ) . '</span>';
3464
+ } elseif ( is_string( $duration ) && strlen( $duration ) ) {
3465
+ echo '<span class="item-meta duration">' . $duration . '</span>';
3466
+ }
3467
  }
3468
 
3469
  function learn_press_course_item_edit_link( $item_id, $course_id ) {
3470
+ $user = learn_press_get_current_user();
3471
+ if ( $user->can_edit_item( $item_id, $course_id ) ): ?>
3472
  <p class="edit-course-item-link">
3473
  <a href="<?php echo get_edit_post_link( $item_id ); ?>"><?php _e( 'Edit this item', 'learnpress' ); ?></a>
3474
  </p>
3475
+ <?php endif;
3476
  }
3477
 
3478
  function learn_press_comments_template_query_args( $comment_args ) {
3479
+ $post_type = get_post_type( $comment_args['post_id'] );
3480
+ if ( $post_type == LP_COURSE_CPT ) {
3481
+ $comment_args['type__not_in'] = 'review';
3482
+ }
3483
 
3484
+ return $comment_args;
3485
  }
3486
 
3487
  if ( ! function_exists( 'learn_press_filter_get_comments_number' ) ) {
3488
+ function learn_press_filter_get_comments_number( $count, $post_id = 0 ) {
3489
+ global $wpdb;
3490
 
3491
+ if ( ! $post_id ) {
3492
+ $post_id = learn_press_get_course_id();
3493
+ }
3494
 
3495
+ if ( ! $post_id ) {
3496
+ return $count;
3497
+ }
3498
 
3499
+ if ( get_post_type( $post_id ) == LP_COURSE_CPT ) {
3500
+ $sql = $wpdb->prepare(
3501
+ " SELECT count(*) "
3502
+ . " FROM {$wpdb->comments} "
3503
+ . " WHERE comment_post_ID = %d "
3504
+ . " AND comment_approved = 1 "
3505
+ . " AND comment_type != %s ", $post_id, 'review' );
3506
 
3507
+ $count = $wpdb->get_var( $sql );
3508
 
3509
+ // @deprecated
3510
+ $count = apply_filters( 'learn_press_get_comments_number', $count, $post_id );
3511
 
3512
+ // @since 3.0.0
3513
+ $count = apply_filters( 'learn-press/course-comments-number', $count, $post_id );
3514
+ }
3515
 
3516
+ return $count;
3517
+ }
3518
  }
3519
 
3520
  if ( ! function_exists( 'learn_press_back_to_class_button' ) ) {
3521
+ function learn_press_back_to_class_button() {
3522
+ $courses_link = learn_press_get_page_link( 'courses' );
3523
+ if ( ! $courses_link ) {
3524
+ return;
3525
+ }
3526
+ ?>
3527
 
3528
  <a href="<?php echo learn_press_get_page_link( 'courses' ); ?>"><?php _e( 'Back to class',
3529
+ 'learnpress' ); ?></a>
3530
+ <?php
3531
+ }
3532
  }
3533
 
3534
  if ( ! function_exists( 'learn_press_reset_single_item_summary_content' ) ) {
3535
+ function learn_press_reset_single_item_summary_content() {
3536
+ if ( isset( $_REQUEST['content-only'] ) ) {
3537
+ global $wp_filter;
3538
+ if ( isset( $wp_filter['learn-press/single-item-summary'] ) ) {
3539
+ unset( $wp_filter['learn-press/single-item-summary'] );
3540
+ }
3541
 
3542
+ $course = learn_press_get_course();
3543
+ $course->get_curriculum();
3544
 
3545
+ add_action( 'learn-press/single-item-summary', 'learn_press_single_course_content_item', 10 );
3546
+ }
3547
+ }
3548
  }
3549
 
3550
  //function learn_press_course_item_class( $defaults, $this->get_item_type(), $this->get_id()){
3585
  * @since 3.0.0
3586
  */
3587
  function learn_press_body_classes( $classes ) {
3588
+ $pages = learn_press_static_page_ids();
3589
 
3590
+ if ( $pages ) {
3591
+ $is_lp_page = false;
3592
+ settype( $classes, 'array' );
3593
 
3594
+ foreach ( $pages as $slug => $id ) {
3595
+ if ( is_page( $id ) ) {
3596
+ $classes[] = $slug;
3597
+ $is_lp_page = true;
3598
+ }
3599
+ }
3600
 
3601
+ if ( $is_lp_page || is_learnpress() ) {
3602
+ $classes[] = get_stylesheet();
3603
+ $classes[] = 'learnpress';
3604
+ $classes[] = 'learnpress-page';
3605
+ }
3606
+ }
3607
 
3608
+ return $classes;
3609
  }
3610
 
3611
  add_filter( 'body_class', 'learn_press_body_classes', 10 );
3620
  *
3621
  */
3622
  function learn_press_is_learning_course( $course_id = 0 ) {
3623
+ $user = learn_press_get_current_user();
3624
+ $course = $course_id ? learn_press_get_course( $course_id ) : LP_Global::course();
3625
+ $is_learning = false;
3626
+ $has_status = false;
3627
+
3628
+ if ( $user && $course ) {
3629
+ $has_status = $user->has_course_status( $course->get_id(), array(
3630
+ 'enrolled',
3631
+ 'finished'
3632
+ ) );
3633
+ }
3634
 
3635
+ if ( $course && ( ! $course->is_required_enroll() || $has_status ) ) {
3636
+ $is_learning = true;
3637
+ }
3638
 
3639
+ return apply_filters( 'learn-press/is-learning-course', $is_learning );
3640
  }
3641
 
3642
  function learn_press_get_color_schemas() {
3643
+ $colors = array(
3644
+ array(
3645
+ 'title' => __( 'Popup links color', 'learnpress' ),
3646
+ 'id' => 'popup-links-color',
3647
+ 'selectors' => array(
3648
+ 'body.course-item-popup a' => "color"
3649
+ ),
3650
+ 'std' => ''
3651
+ ),
3652
+ array(
3653
+ 'title' => __( 'Popup heading background', 'learnpress' ),
3654
+ 'id' => 'popup-heading-bg',
3655
+ 'selectors' => array(
3656
+ '#course-item-content-header' => "background-color"
3657
+ ),
3658
+ 'std' => '#e7f7ff'
3659
+ ),
3660
+ array(
3661
+ 'title' => __( 'Popup heading color', 'learnpress' ),
3662
+ 'id' => 'popup-heading-color',
3663
+ 'selectors' => array(
3664
+ '#course-item-content-header a' => "color",
3665
+ '#course-item-content-header .course-item-search input' => "color",
3666
+ '#course-item-content-header .course-item-search input:focus' => "color",
3667
+ '#course-item-content-header .course-item-search input::placeholder' => "color",
3668
+ '#course-item-content-header .course-item-search button' => "color",
3669
+ ),
3670
+ 'std' => ''
3671
+ ),
3672
+ array(
3673
+ 'title' => __( 'Popup curriculum background', 'learnpress' ),
3674
+ 'id' => 'popup-curriculum-background',
3675
+ 'selectors' => array(
3676
+ 'body.course-item-popup .course-curriculum ul.curriculum-sections .section-content .course-item' => "background-color",
3677
+ 'body.course-item-popup #learn-press-course-curriculum' => "background-color",
3678
+ ),
3679
+ 'std' => '#FFF'
3680
+ ),
3681
+ array(
3682
+ 'title' => __( 'Popup item color', 'learnpress' ),
3683
+ 'id' => 'popup-item-color',
3684
+ 'selectors' => array(
3685
+ 'body.course-item-popup .course-curriculum ul.curriculum-sections .section-content .course-item a' => "color",
3686
+ ),
3687
+ 'std' => ''
3688
+ ),
3689
+ array(
3690
+ 'title' => __( 'Popup active item background', 'learnpress' ),
3691
+ 'id' => 'popup-active-item-background',
3692
+ 'selectors' => array(
3693
+ 'body.course-item-popup .course-curriculum ul.curriculum-sections .section-content .course-item.current' => "background-color",
3694
+ ),
3695
+ 'std' => '#F9F9F9'
3696
+ ),
3697
+ array(
3698
+ 'title' => __( 'Popup active item color', 'learnpress' ),
3699
+ 'id' => 'popup-active-item-color',
3700
+ 'selectors' => array(
3701
+ 'body.course-item-popup .course-curriculum ul.curriculum-sections .section-content .course-item.current a' => "color",
3702
+ ),
3703
+ 'std' => ''
3704
+ ),
3705
+ array(
3706
+ 'title' => __( 'Popup content background', 'learnpress' ),
3707
+ 'id' => 'popup-content-background',
3708
+ 'selectors' => array(
3709
+ 'body.course-item-popup #learn-press-content-item' => "background-color"
3710
+ ),
3711
+ 'std' => '#FFF'
3712
+ ),
3713
+ array(
3714
+ 'title' => __( 'Popup content color', 'learnpress' ),
3715
+ 'id' => 'popup-content-color',
3716
+ 'selectors' => array(
3717
+ 'body.course-item-popup #learn-press-content-item' => "color"
3718
+ ),
3719
+ 'std' => ''
3720
+ ),
3721
+ array(
3722
+ 'title' => __( 'Section heading background', 'learnpress' ),
3723
+ 'id' => 'section-heading-bg',
3724
+ 'selectors' => array(
3725
+ 'body.course-item-popup #learn-press-course-curriculum .section-header' => 'background'
3726
+ )
3727
+ ),
3728
+ array(
3729
+ 'title' => __( 'Section heading color', 'learnpress' ),
3730
+ 'id' => 'section-heading-color',
3731
+ 'selectors' => array(
3732
+ 'body.course-item-popup #learn-press-course-curriculum .section-header' => 'color'
3733
+ )
3734
+ ),
3735
+ array(
3736
+ 'title' => __( 'Section heading bottom color', 'learnpress' ),
3737
+ 'id' => 'section-heading-bottom-color',
3738
+ 'selectors' => array(
3739
+ '.course-curriculum ul.curriculum-sections .section-header' => 'border-bottom: 1px solid %s'
3740
+ ),
3741
+ 'std' => '#00adff'
3742
+ ),
3743
+ array(
3744
+ 'title' => __( 'Lines color', 'learnpress' ),
3745
+ 'id' => 'lines-color',
3746
+ 'selectors' => array(
3747
+ '#course-item-content-header' => 'border-bottom: 1px solid %s',
3748
+ '.course-curriculum ul.curriculum-sections .section-content .course-item' => 'border-bottom: 1px solid %s',
3749
+ 'body.course-item-popup #learn-press-course-curriculum' => 'border-right: 1px solid %s',
3750
+ '#course-item-content-header .toggle-content-item' => 'border-left: 1px solid %s'
3751
+ ),
3752
+ 'std' => 'DDD'
3753
+ ),
3754
+ array(
3755
+ 'title' => __( 'Profile cover background', 'learnpress' ),
3756
+ 'id' => 'profile-cover-bg',
3757
+ 'selectors' => array(
3758
+ '#learn-press-profile-header' => 'background-color'
3759
+ ),
3760
+ 'std' => '#f0defb'
3761
+ ),
3762
+ array(
3763
+ 'title' => __( 'Scrollbar', 'learnpress' ),
3764
+ 'id' => 'scroll-bar',
3765
+ 'selectors' => array(
3766
+ '.scrollbar-light > .scroll-element.scroll-y .scroll-bar' => 'background-color',
3767
+ '.scrollbar-light > .scroll-element .scroll-element_size' => 'background'
3768
+ ),
3769
+ 'std' => '#12b3ff'
3770
+ ),
3771
+ array(
3772
+ 'title' => __( 'Progress bar color', 'learnpress' ),
3773
+ 'id' => 'progress-bar-color',
3774
+ 'selectors' => array(
3775
+ '.learn-press-progress .progress-bg' => 'background-color'
3776
+ ),
3777
+ 'std' => '#DDDDDD'
3778
+ ),
3779
+ array(
3780
+ 'title' => __( 'Progress bar active color', 'learnpress' ),
3781
+ 'id' => 'scroll-bar',
3782
+ 'selectors' => array(
3783
+ '.learn-press-progress .progress-bg .progress-active' => 'background-color'
3784
+ ),
3785
+ 'std' => '#00adff'
3786
+ ),
3787
+ );
3788
+
3789
+ return apply_filters( 'learn-press/color-schemas', $colors );
3790
  }
3791
 
3792
  /**
3796
  */
3797
  function learn_press_print_custom_styles() {
3798
 
3799
+ if ( 'yes' !== LP()->settings()->get( 'enable_custom_colors' ) ) {
3800
+ return;
3801
+ }
3802
+
3803
+ if ( ! $schemas = LP()->settings()->get( 'color_schemas' ) ) {
3804
+ return;
3805
+ }
3806
+
3807
+ // Get current
3808
+ $schema = reset( $schemas );
3809
+ $colors = learn_press_get_color_schemas();
3810
+ $css = array();
3811
+
3812
+ foreach ( $colors as $options ) {
3813
+ if ( array_key_exists( $options['id'], $schema ) ) {
3814
+
3815
+ if ( empty( $options['selectors'] ) ) {
3816
+ continue;
3817
+ }
3818
+
3819
+ foreach ( $options['selectors'] as $selector => $props ) {
3820
+ if ( empty( $css[ $selector ] ) ) {
3821
+ $css[ $selector ] = "";
3822
+ }
3823
+ if ( is_string( $props ) ) {
3824
+ if ( strpos( $props, '%s' ) !== false ) {
3825
+ $css[ $selector ] .= sprintf( $props, $schema[ $options['id'] ] ) . ";";
3826
+ } else {
3827
+ $css[ $selector ] .= "{$props}:" . $schema[ $options['id'] ] . ";";
3828
+ }
3829
+ } else {
3830
+ foreach ( $props as $prop ) {
3831
+ if ( strpos( $prop, '%s' ) !== false ) {
3832
+ $css[ $selector ] .= sprintf( $prop, $schema[ $options['id'] ] ) . ";";
3833
+ } else {
3834
+ $css[ $selector ] .= "{$prop}:" . $schema[ $options['id'] ] . ";";
3835
+ }
3836
+ }
3837
+ }
3838
+ }
3839
+ }
3840
+ }
3841
+
3842
+ if ( ! $css ) {
3843
+ return;
3844
+ }
3845
+
3846
+ ?>
3847
  <style id="learn-press-custom-css">
3848
  <?php
3849
  foreach($css as $selector => $props){
3851
  }
3852
  ?>
3853
  </style>
3854
+ <?php
3855
  }
3856
 
3857
  add_action( 'wp_head', 'learn_press_print_custom_styles' );
3862
  * of the courses.
3863
  */
3864
  function learn_press_redirect_search() {
3865
+ if ( learn_press_is_search() ) {
3866
+ $search_page = learn_press_get_page_id( 'search' );
3867
+ if ( ! is_page( $search_page ) ) {
3868
+ global $wp_query;
3869
+ wp_redirect( add_query_arg( 's', $wp_query->query_vars['s'], get_the_permalink( $search_page ) ) );
3870
+ exit();
3871
+ }
3872
+ }
3873
  }
3874
 
3875
  /**
3880
  *
3881
  */
3882
  function learn_press_current_user_enrolled_course() {
3883
+ $user = learn_press_get_current_user();
3884
+ $course = LP_Global::course();
3885
 
3886
+ if ( ! $course ) {
3887
+ return false;
3888
+ }
3889
 
3890
+ return $user->has_enrolled_course( $course->get_id() );
3891
  }
3892
 
3893
  function learn_press_content_item_summary_class( $more = '', $echo = true ) {
3894
+ $classes = array( 'content-item-summary' );
3895
+ $classes = LP_Helper::merge_class( $classes, $more );
3896
+ $classes = apply_filters( 'learn-press/content-item-summary-class', $classes );
3897
+ $output = 'class="' . join( ' ', $classes ) . '"';
3898
 
3899
+ if ( $echo ) {
3900
+ echo $output;
3901
+ }
3902
 
3903
+ return $output;
3904
  }
3905
 
3906
  function learn_press_content_item_summary_classes( $classes ) {
3907
+ if ( ! $item = LP_Global::course_item() ) {
3908
+ return $classes;
3909
+ }
3910
 
3911
+ if ( $item->get_post_type() !== LP_LESSON_CPT ) {
3912
+ return $classes;
3913
+ }
3914
 
3915
+ if ( 'yes' !== LP()->settings->get( 'enable_lesson_video' ) ) {
3916
+ return $classes;
3917
+ }
3918
 
3919
+ if ( $item->get_video() ) {
3920
+ $classes[] = 'content-item-video';
3921
+ }
3922
 
3923
+ return $classes;
3924
  }
3925
 
3926
  function learn_press_maybe_load_comment_js() {
3927
+ if ( $item = LP_Global::course_item() ) {
3928
+ wp_enqueue_script( 'comment-reply' );
3929
+ }
3930
  }
3931
 
3932
  add_action( 'wp_enqueue_scripts', 'learn_press_maybe_load_comment_js' );
3981
  }*/
3982
 
3983
  function learn_press_term_conditions_template() {
3984
+ $page_id = learn_press_get_page_id( 'term_conditions' );
3985
+ if ( $page_id ) {
3986
+ $page_link = get_page_link( $page_id );
3987
+ learn_press_get_template( 'checkout/term-conditions.php', array( 'page_link' => $page_link ) );
3988
+ }
3989
  }
3990
 
3991
  add_action( 'learn-press/after-payment-methods', 'learn_press_term_conditions_template' );
3992
 
3993
  function learn_press_get_link_current_question_instead_of_continue_button( $link, $item ) {
3994
+ if ( get_post_type( $item->get_id() ) === LP_QUIZ_CPT ) {
3995
+ $user = LP_Global::user();
3996
 
3997
+ if ( ! $user ) {
3998
+ return $link;
3999
+ }
4000
 
4001
+ $course = $item->get_course();
4002
 
4003
+ if ( ! $course ) {
4004
+ return $link;
4005
+ }
4006
 
4007
+ $quiz_data = $user->get_item_data( $item->get_id(), $course->get_id() );
4008
+ if ( $quiz_data && $quiz_data->get_status() === 'started' ) {
4009
+ $link = $item->get_question_link( $quiz_data->get_current_question() );
4010
+ }
4011
+ }
4012
 
4013
+ return $link;
4014
  }
4015
 
4016
  add_filter( 'learn-press/course-item-link', 'learn_press_get_link_current_question_instead_of_continue_button', 10, 2 );
4019
  * @since 3.2.6
4020
  */
4021
  function learn_press_define_debug_mode() {
4022
+ if ( ! learn_press_is_debug() ) {
4023
+ return;
4024
+ }
4025
+ ?>
4026
  <script>window.LP_DEBUG = true;</script>
4027
+ <?php
4028
  }
4029
 
4030
  add_action( 'admin_print_scripts', 'learn_press_define_debug_mode' );
inc/order/lp-order-functions.php CHANGED
@@ -810,38 +810,3 @@ if ( ! function_exists( 'learn_press_cancel_order_process' ) ) {
810
  }
811
  }
812
  add_action( 'init', 'learn_press_cancel_order_process' );
813
-
814
- /**
815
- * Auto enroll course after user checkout
816
- *
817
- * @param $result
818
- * @param $order_id
819
- */
820
- function _learn_press_checkout_auto_enroll_free_course( $result, $order_id ) {
821
- return;
822
- $enrolled = false;
823
- if ( $order_id && $order = learn_press_get_order( $order_id, true /* force to get all changed */ ) ) {
824
- $user = learn_press_get_user( $order->user_id, true );
825
- if ( $order_items = $order->get_items() ) {
826
- foreach ( $order_items as $item ) {
827
- if ( $user->has_enrolled_course( $item['course_id'] ) ) {
828
- continue;
829
- }
830
- if ( $user->enroll( $item['course_id'] ) ) {
831
- $enrolled = $item['course_id'];
832
- }
833
- }
834
- if ( ! $enrolled ) {
835
- $item = reset( $order_items );
836
- $enrolled = $item['course_id'];
837
- }
838
- }
839
- }
840
- if ( $enrolled ) {
841
- learn_press_add_message( sprintf( __( 'You have enrolled in this course. <a href="%s">Order details</a>', 'learnpress' ), $result['redirect'] ) );
842
- $result['redirect'] = get_the_permalink( $enrolled );
843
- LP()->cart->empty_cart();
844
- }
845
-
846
- return $result;
847
- }
810
  }
811
  }
812
  add_action( 'init', 'learn_press_cancel_order_process' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/question/class-lp-question-database.php CHANGED
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  * @since 3.2.8
11
  */
12
  class LP_Question_DB extends LP_Database {
13
- public static $_instance;
14
 
15
  public function __construct() {
16
  parent::__construct();
10
  * @since 3.2.8
11
  */
12
  class LP_Question_DB extends LP_Database {
13
+ private static $_instance;
14
 
15
  public function __construct() {
16
  parent::__construct();
inc/quiz/class-lp-quiz-database.php CHANGED
@@ -10,9 +10,9 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  * @since 3.2.7.4
11
  */
12
  class LP_Quiz_DB extends LP_Database {
13
- public static $_instance;
14
 
15
- public function __construct() {
16
  parent::__construct();
17
  }
18
 
10
  * @since 3.2.7.4
11
  */
12
  class LP_Quiz_DB extends LP_Database {
13
+ private static $_instance;
14
 
15
+ protected function __construct() {
16
  parent::__construct();
17
  }
18
 
inc/section/class-lp-section-database.php CHANGED
@@ -9,9 +9,9 @@ if ( ! defined( 'ABSPATH' ) ) {
9
  */
10
 
11
  class LP_Section_DB extends LP_Database {
12
- public static $_instance;
13
 
14
- public function __construct() {
15
  parent::__construct();
16
  }
17
 
9
  */
10
 
11
  class LP_Section_DB extends LP_Database {
12
+ private static $_instance;
13
 
14
+ protected function __construct() {
15
  parent::__construct();
16
  }
17
 
inc/user-item/class-lp-user-item-course.php CHANGED
@@ -72,7 +72,9 @@ class LP_User_Item_Course extends LP_User_Item implements ArrayAccess {
72
  $this->_items = array();
73
  $this->_course = learn_press_get_course( $this->get_id() );
74
 
75
- if ( ! $this->_course || ( ! $user_course_item_id = $this->get_user_item_id() ) ) {
 
 
76
  return false;
77
  }
78
 
@@ -1090,51 +1092,6 @@ class LP_User_Item_Course extends LP_User_Item implements ArrayAccess {
1090
  return apply_filters( 'learn-press/course/items-for-js', $args, $this->get_id(), $this->get_user_id() );
1091
  }
1092
 
1093
- /**
1094
- * Add new item
1095
- *
1096
- * @param int|array $item_id
1097
- * @param int $user_id
1098
- *
1099
- * @return bool
1100
- */
1101
- public function add_item( $item_id, $user_id = 0 ) {
1102
- echo __FUNCTION__;
1103
- die();
1104
- $this->read_items();
1105
-
1106
- if ( empty( $this->_items[ $item_id ] ) ) {
1107
- return false;
1108
- }
1109
-
1110
- $item_data = is_numeric( $item_id ) ? array( 'item_id' => $item_id ) : (array) $item_id;
1111
-
1112
- if ( func_num_args() == 2 ) {
1113
- $item_data['user_id'] = $user_id ? $user_id : get_current_user_id();
1114
- }
1115
-
1116
- $current_time = new LP_Datetime();
1117
- $defaults = array(
1118
- 'start_time' => $current_time,
1119
- 'start_time_gtm' => $current_time->toSql( false ),
1120
- 'end_time' => $current_time,
1121
- 'end_time_gmt' => $current_time->toSql( false ),
1122
- 'item_type' => learn_press_get_post_type( $item_id ),
1123
- 'status' => '',
1124
- 'ref_id' => $this->get_id(),
1125
- 'ref_type' => learn_press_get_post_type( $this->get_id() ),
1126
- 'parent_id' => $this->get_user_item_id(),
1127
- );
1128
- $item_data = wp_parse_args(
1129
- $item_data,
1130
- $defaults
1131
- );
1132
-
1133
- $this->_items[ $item_id ] = LP_User_Item::get_item_object( $item_data );
1134
-
1135
- return $this->_items[ $item_id ];
1136
- }
1137
-
1138
  /**
1139
  * Update user item
1140
  */
72
  $this->_items = array();
73
  $this->_course = learn_press_get_course( $this->get_id() );
74
 
75
+ $user_course_item_id = $this->get_user_item_id();
76
+
77
+ if ( ! $this->_course || ( ! $user_course_item_id ) ) {
78
  return false;
79
  }
80
 
1092
  return apply_filters( 'learn-press/course/items-for-js', $args, $this->get_id(), $this->get_user_id() );
1093
  }
1094
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1095
  /**
1096
  * Update user item
1097
  */
inc/user-item/class-lp-user-item.php CHANGED
@@ -466,12 +466,6 @@ class LP_User_Item extends LP_Abstract_Object_Data implements ArrayAccess {
466
  $v = is_a( $v, 'LP_Datetime' ) ? $v->toSql() : $v;
467
  break;
468
  case 'start_time_gmt':
469
- if ( ! $v ) {
470
- $v = new LP_Datetime( $v );
471
- }
472
-
473
- $v = is_a( $v, 'LP_Datetime' ) ? $v->toSql() : $v;
474
- break;
475
  case 'end_time_gmt':
476
  if ( ! $v ) {
477
  $v = new LP_Datetime( $v );
466
  $v = is_a( $v, 'LP_Datetime' ) ? $v->toSql() : $v;
467
  break;
468
  case 'start_time_gmt':
 
 
 
 
 
 
469
  case 'end_time_gmt':
470
  if ( ! $v ) {
471
  $v = new LP_Datetime( $v );
inc/user-item/class-lp-user-items-db.php CHANGED
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  * @since 3.2.8.6
11
  */
12
  class LP_User_Items_DB extends LP_Database {
13
- protected static $_instance;
14
 
15
  protected function __construct() {
16
  parent::__construct();
@@ -27,33 +27,40 @@ class LP_User_Items_DB extends LP_Database {
27
  /**
28
  * Get items by user_item_id | this is id where item_id = course_id
29
  *
30
- * @param int $user_item_id
 
31
  *
32
- * @return object|bool
33
  */
34
- public function get_course_items_by_user_item_id( $user_item_id_by_course_id = 0 ) {
35
- $item_types = learn_press_get_course_item_types();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
- if ( is_user_logged_in() ) {
38
- $user_inner_join = "INNER JOIN {$this->wpdb->users} u ON u.ID = X.user_id";
39
- } else {
40
- $user_inner_join = '';
41
  }
42
 
43
- $query = $this->wpdb->prepare( "
44
- SELECT ui.*
45
- FROM (
46
- SELECT user_id, item_id, MAX(user_item_id) max_id
47
- FROM {$wpdb->learnpress_user_items} GROUP BY user_id, item_id
48
- ) AS X
49
- INNER JOIN {$wpdb->learnpress_user_items} ui ON ui.user_id = X.user_id AND ui.item_id = X.item_id AND ui.user_item_id = X.max_id
50
- {$user_inner_join}
51
- INNER JOIN {$wpdb->posts} p ON p.ID = X.item_id
52
- WHERE ui.parent_id = %d
53
- ORDER BY user_item_id ASC
54
- ", $user_item_id_by_course_id );
55
-
56
- return $wpdb->get_results( $query );
57
  }
58
  }
59
 
10
  * @since 3.2.8.6
11
  */
12
  class LP_User_Items_DB extends LP_Database {
13
+ private static $_instance;
14
 
15
  protected function __construct() {
16
  parent::__construct();
27
  /**
28
  * Get items by user_item_id | this is id where item_id = course_id
29
  *
30
+ * @param int $user_item_id_by_course_id
31
+ * @param int $user_id
32
  *
33
+ * @return object
34
  */
35
+ public function get_course_items_by_user_item_id( $user_item_id_by_course_id ) {
36
+ if ( empty( $user_item_id_by_course_id ) ) {
37
+ return null;
38
+ }
39
+
40
+ /**
41
+ * Get cache
42
+ *
43
+ * Please clear cache when user action vs item. Ex: completed lesson, quiz. Start quiz...
44
+ */
45
+ $course_items = wp_cache_get( 'lp-course-items-' . $user_item_id_by_course_id,
46
+ 'lp-user-course-items' );
47
+
48
+ if ( ! $course_items ) {
49
+ $query = $this->wpdb->prepare( "
50
+ SELECT * FROM $this->tb_lp_user_items
51
+ WHERE parent_id = %d
52
+ AND ref_type = %s
53
+ GROUP BY user_item_id ASC;
54
+ ", $user_item_id_by_course_id, LP_COURSE_CPT );
55
+
56
+ $course_items = $this->wpdb->get_results( $query );
57
 
58
+ //Set cache
59
+ wp_cache_set( 'lp-course-items-' . $user_item_id_by_course_id, $course_items,
60
+ 'lp-user-course-items' );
 
61
  }
62
 
63
+ return $course_items;
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  }
65
  }
66
 
inc/user/abstract-lp-user.php CHANGED
@@ -110,8 +110,12 @@ if ( ! class_exists( 'LP_Abstract_User' ) ) {
110
  $course_id = get_the_ID();
111
  }
112
 
113
- if ( false === ( $object_course_data = LP_Object_Cache::get( 'course-' . $this->get_id() . '-' . $course_id,
114
- 'learn-press/user-item-object-courses' ) ) ) {
 
 
 
 
115
  $result = $this->_curd->read_course( $this->get_id(), $course_id );
116
 
117
  if ( $result ) {
@@ -721,18 +725,6 @@ if ( ! class_exists( 'LP_Abstract_User' ) ) {
721
  }
722
 
723
  return false;
724
- $item = false;
725
- if ( false !== ( $items = LP_Object_Cache::get( 'course-item-' . $this->get_id() . '-' . $course_id . '-' . $item_id,
726
- 'learn-press/user-course-items' ) ) ) {
727
- // Only get status of a newest record.
728
- if ( $last ) {
729
- $item = reset( $items );
730
- } else {
731
- $item = $items;
732
- }
733
- }
734
-
735
- return $item;
736
  }
737
 
738
  /**
@@ -779,8 +771,8 @@ if ( ! class_exists( 'LP_Abstract_User' ) ) {
779
  }
780
 
781
  $status = false;
782
-
783
- if ( false !== ( $item = $this->get_item( $item_id, $course_id, true ) ) ) {
784
  $status = $item['status'];
785
  }
786
 
@@ -1800,6 +1792,7 @@ if ( ! class_exists( 'LP_Abstract_User' ) ) {
1800
  */
1801
  public function has_enrolled_course( $course_id, $force = false ) {
1802
  $enrolled = $this->get_course_access_level( $course_id ) >= LP_COURSE_ACCESS_LEVEL_60;
 
1803
  /**
1804
  * @since 3.0.0
1805
  */
110
  $course_id = get_the_ID();
111
  }
112
 
113
+ $object_course_data = LP_Object_Cache::get(
114
+ 'course-' . $this->get_id() . '-' . $course_id,
115
+ 'learn-press/user-item-object-courses'
116
+ );
117
+
118
+ if ( false === $object_course_data ) {
119
  $result = $this->_curd->read_course( $this->get_id(), $course_id );
120
 
121
  if ( $result ) {
725
  }
726
 
727
  return false;
 
 
 
 
 
 
 
 
 
 
 
 
728
  }
729
 
730
  /**
771
  }
772
 
773
  $status = false;
774
+ $item = $this->get_item( $item_id, $course_id, true );
775
+ if ( $item ) {
776
  $status = $item['status'];
777
  }
778
 
1792
  */
1793
  public function has_enrolled_course( $course_id, $force = false ) {
1794
  $enrolled = $this->get_course_access_level( $course_id ) >= LP_COURSE_ACCESS_LEVEL_60;
1795
+
1796
  /**
1797
  * @since 3.0.0
1798
  */
learnpress.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin URI: http://thimpress.com/learnpress
5
  * Description: LearnPress is a WordPress complete solution for creating a Learning Management System (LMS). It can help you to create courses, lessons and quizzes.
6
  * Author: ThimPress
7
- * Version: 3.2.8.5
8
  * Author URI: http://thimpress.com
9
  * Requires at least: 5.3
10
  * Tested up to: 5.6
4
  * Plugin URI: http://thimpress.com/learnpress
5
  * Description: LearnPress is a WordPress complete solution for creating a Learning Management System (LMS). It can help you to create courses, lessons and quizzes.
6
  * Author: ThimPress
7
+ * Version: 3.2.8.7
8
  * Author URI: http://thimpress.com
9
  * Requires at least: 5.3
10
  * Tested up to: 5.6
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: elearning, education, course, lms, learning management system
5
  Requires at least: 5.3
6
  Tested up to: 5.6
7
  Requires PHP: 7.0
8
- Stable tag: 3.2.8.5
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -197,6 +197,17 @@ https://www.transifex.com/projects/p/learnpress/
197
 
198
  == Changelog ==
199
 
 
 
 
 
 
 
 
 
 
 
 
200
  = 3.2.8.5 =
201
  ~ Fix header lesson style error on iphone
202
  ~ Fix scrollbar error some themes
5
  Requires at least: 5.3
6
  Tested up to: 5.6
7
  Requires PHP: 7.0
8
+ Stable tag: 3.2.8.7
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
197
 
198
  == Changelog ==
199
 
200
+ = 3.2.8.7 =
201
+ ~ Fix: start quiz 404
202
+ ~ Optimize
203
+
204
+ = 3.2.8.6 =
205
+ ~ Fix minor bug
206
+ ~ Optimize enroll course
207
+ ~ Add cache get items' course
208
+ ~ Add reset progress by course_id
209
+ ~ Fix "Enroll Button" is not appearing when disable "Auto Enroll" option
210
+
211
  = 3.2.8.5 =
212
  ~ Fix header lesson style error on iphone
213
  ~ Fix scrollbar error some themes
templates/single-course/content-learning.php CHANGED
@@ -6,7 +6,7 @@
6
  *
7
  * @author ThimPress
8
  * @package Learnpress/Templates
9
- * @version 3.0.0
10
  */
11
 
12
  /**
6
  *
7
  * @author ThimPress
8
  * @package Learnpress/Templates
9
+ * @version 3.0.1
10
  */
11
 
12
  /**
templates/single-course/content-protected.php CHANGED
@@ -30,7 +30,7 @@ if ( ! isset( $block_by_check ) ) {
30
  <?php
31
  if ( ! is_user_logged_in() ) {
32
  echo sprintf(
33
- wp_kses_post(
34
  'This content is protected, please <a class="lp-link-login" href="%s">login</a> and enroll course to view this content!',
35
  'learnpress'
36
  ),
30
  <?php
31
  if ( ! is_user_logged_in() ) {
32
  echo sprintf(
33
+ __(
34
  'This content is protected, please <a class="lp-link-login" href="%s">login</a> and enroll course to view this content!',
35
  'learnpress'
36
  ),
templates/single-course/tabs/instructor.php CHANGED
@@ -1,37 +1,37 @@
1
- <?php
2
- /**
3
- * Template for displaying instructor of single course.
4
- *
5
- * This template can be overridden by copying it to yourtheme/learnpress/single-course/instructor.php.
6
- *
7
- * @author ThimPress
8
- * @package Learnpress/Templates
9
- * @version 3.0.0
10
- */
11
-
12
- /**
13
- * Prevent loading this file directly
14
- */
15
- defined( 'ABSPATH' ) || exit();
16
-
17
- $course = LP_Global::course();
18
- ?>
19
-
20
- <div class="course-author">
21
-
22
- <h3><?php _e( 'Instructor', 'learnpress' ); ?></h3>
23
-
24
- <?php do_action( 'learn-press/before-single-course-instructor' ); ?>
25
- <div class="author-wrapper">
26
- <div class="author-name">
27
- <?php echo $course->get_instructor()->get_profile_picture(); ?>
28
- <?php echo $course->get_instructor_html(); ?>
29
- </div>
30
-
31
- <div class="author-bio">
32
- <?php echo $course->get_author()->get_description(); ?>
33
- </div>
34
- </div>
35
- <?php do_action( 'learn-press/after-single-course-instructor' ); ?>
36
-
37
- </div>
1
+ <?php
2
+ /**
3
+ * Template for displaying instructor of single course.
4
+ *
5
+ * This template can be overridden by copying it to yourtheme/learnpress/single-course/instructor.php.
6
+ *
7
+ * @author ThimPress
8
+ * @package Learnpress/Templates
9
+ * @version 3.0.0
10
+ */
11
+
12
+ /**
13
+ * Prevent loading this file directly
14
+ */
15
+ defined( 'ABSPATH' ) || exit();
16
+
17
+ $course = LP_Global::course();
18
+ ?>
19
+
20
+ <div class="course-author">
21
+
22
+ <h3><?php _e( 'Instructor', 'learnpress' ); ?></h3>
23
+
24
+ <?php do_action( 'learn-press/before-single-course-instructor' ); ?>
25
+ <div class="author-wrapper">
26
+ <div class="author-name">
27
+ <?php echo wp_kses_post( wpautop( $course->get_instructor()->get_profile_picture() ) ); ?>
28
+ <?php echo wp_kses_post( wpautop( $course->get_instructor_html() ) ); ?>
29
+ </div>
30
+
31
+ <div class="author-bio">
32
+ <?php echo wp_kses_post( wpautop( $course->get_author()->get_description() ) ); ?>
33
+ </div>
34
+ </div>
35
+ <?php do_action( 'learn-press/after-single-course-instructor' ); ?>
36
+
37
+ </div>