@jscrpt/common 1.2.0 → 2.0.0-beta.20211108120022
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +24 -0
- package/dist/es2015/decorators/bindThis.decorator.js +24 -24
- package/dist/es2015/decorators/bindThis.decorator.js.map +1 -0
- package/dist/es2015/decorators/callOnce.decorator.js +29 -28
- package/dist/es2015/decorators/callOnce.decorator.js.map +1 -0
- package/dist/es2015/decorators/debounceCall.decorator.js +25 -26
- package/dist/es2015/decorators/debounceCall.decorator.js.map +1 -0
- package/dist/es2015/decorators/index.js +4 -4
- package/dist/es2015/decorators/index.js.map +1 -0
- package/dist/es2015/encoder/encoder.js +220 -231
- package/dist/es2015/encoder/encoder.js.map +1 -0
- package/dist/es2015/enums/index.js +2 -2
- package/dist/es2015/enums/index.js.map +1 -0
- package/dist/es2015/enums/orderByDirection.js +15 -15
- package/dist/es2015/enums/orderByDirection.js.map +1 -0
- package/dist/es2015/index.js +10 -24
- package/dist/es2015/index.js.map +1 -0
- package/dist/es2015/indexNode.js +2 -2
- package/dist/es2015/indexNode.js.map +1 -0
- package/dist/es2015/initJsDevMode.js +8 -0
- package/dist/es2015/initJsDevMode.js.map +1 -0
- package/dist/es2015/jsDevMode.js +8 -8
- package/dist/es2015/jsDevMode.js.map +1 -0
- package/dist/es2015/normalizer/charMaps.js +20 -27
- package/dist/es2015/normalizer/charMaps.js.map +1 -0
- package/dist/es2015/normalizer/index.js +3 -3
- package/dist/es2015/normalizer/index.js.map +1 -0
- package/dist/es2015/normalizer/normalizer.js +14 -14
- package/dist/es2015/normalizer/normalizer.js.map +1 -0
- package/dist/es2015/paginator/paginator.js +230 -224
- package/dist/es2015/paginator/paginator.js.map +1 -0
- package/dist/es2015/types/dictionaries.js +2 -1
- package/dist/es2015/types/dictionaries.js.map +1 -0
- package/dist/es2015/types/enums.js +2 -0
- package/dist/es2015/types/enums.js.map +1 -0
- package/dist/es2015/types/functions.js +2 -0
- package/dist/es2015/types/functions.js.map +1 -0
- package/dist/es2015/types/index.js +5 -3
- package/dist/es2015/types/index.js.map +1 -0
- package/dist/es2015/types/valueNamePair.js +2 -1
- package/dist/es2015/types/valueNamePair.js.map +1 -0
- package/dist/es2015/utils/common.js +209 -215
- package/dist/es2015/utils/common.js.map +1 -0
- package/dist/es2015/utils/index.js +4 -4
- package/dist/es2015/utils/index.js.map +1 -0
- package/dist/es2015/utils/lang.js +79 -79
- package/dist/es2015/utils/lang.js.map +1 -0
- package/dist/es2015/utils/nameof.js +6 -6
- package/dist/es2015/utils/nameof.js.map +1 -0
- package/dist/es2020/decorators/bindThis.decorator.js +23 -0
- package/dist/es2020/decorators/bindThis.decorator.js.map +1 -0
- package/dist/es2020/decorators/callOnce.decorator.js +28 -0
- package/dist/es2020/decorators/callOnce.decorator.js.map +1 -0
- package/dist/es2020/decorators/debounceCall.decorator.js +24 -0
- package/dist/es2020/decorators/debounceCall.decorator.js.map +1 -0
- package/dist/es2020/decorators/index.js +4 -0
- package/dist/es2020/decorators/index.js.map +1 -0
- package/dist/es2020/encoder/encoder.js +220 -0
- package/dist/es2020/encoder/encoder.js.map +1 -0
- package/dist/es2020/enums/index.js +2 -0
- package/dist/es2020/enums/index.js.map +1 -0
- package/dist/es2020/enums/orderByDirection.js +15 -0
- package/dist/es2020/enums/orderByDirection.js.map +1 -0
- package/dist/es2020/index.js +10 -0
- package/dist/es2020/index.js.map +1 -0
- package/dist/es2020/indexNode.js +2 -0
- package/dist/es2020/indexNode.js.map +1 -0
- package/dist/es2020/initJsDevMode.js +8 -0
- package/dist/es2020/initJsDevMode.js.map +1 -0
- package/dist/es2020/jsDevMode.js +8 -0
- package/dist/es2020/jsDevMode.js.map +1 -0
- package/dist/es2020/normalizer/charMaps.js +20 -0
- package/dist/es2020/normalizer/charMaps.js.map +1 -0
- package/dist/es2020/normalizer/index.js +3 -0
- package/dist/es2020/normalizer/index.js.map +1 -0
- package/dist/es2020/normalizer/normalizer.js +14 -0
- package/dist/es2020/normalizer/normalizer.js.map +1 -0
- package/dist/es2020/paginator/paginator.js +230 -0
- package/dist/es2020/paginator/paginator.js.map +1 -0
- package/dist/es2020/types/dictionaries.js +2 -0
- package/dist/es2020/types/dictionaries.js.map +1 -0
- package/dist/es2020/types/enums.js +2 -0
- package/dist/es2020/types/enums.js.map +1 -0
- package/dist/es2020/types/functions.js +2 -0
- package/dist/es2020/types/functions.js.map +1 -0
- package/dist/es2020/types/index.js +5 -0
- package/dist/es2020/types/index.js.map +1 -0
- package/dist/es2020/types/valueNamePair.js +2 -0
- package/dist/es2020/types/valueNamePair.js.map +1 -0
- package/dist/es2020/utils/common.js +208 -0
- package/dist/es2020/utils/common.js.map +1 -0
- package/dist/es2020/utils/index.js +4 -0
- package/dist/es2020/utils/index.js.map +1 -0
- package/dist/es2020/utils/lang.js +79 -0
- package/dist/es2020/utils/lang.js.map +1 -0
- package/dist/es2020/utils/nameof.js +6 -0
- package/dist/es2020/utils/nameof.js.map +1 -0
- package/dist/es5/decorators/bindThis.decorator.js +24 -24
- package/dist/es5/decorators/bindThis.decorator.js.map +1 -0
- package/dist/es5/decorators/callOnce.decorator.js +33 -28
- package/dist/es5/decorators/callOnce.decorator.js.map +1 -0
- package/dist/es5/decorators/debounceCall.decorator.js +30 -27
- package/dist/es5/decorators/debounceCall.decorator.js.map +1 -0
- package/dist/es5/decorators/index.js +4 -4
- package/dist/es5/decorators/index.js.map +1 -0
- package/dist/es5/encoder/encoder.js +222 -233
- package/dist/es5/encoder/encoder.js.map +1 -0
- package/dist/es5/enums/index.js +2 -2
- package/dist/es5/enums/index.js.map +1 -0
- package/dist/es5/enums/orderByDirection.js +15 -15
- package/dist/es5/enums/orderByDirection.js.map +1 -0
- package/dist/es5/index.js +10 -24
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/indexNode.js +2 -2
- package/dist/es5/indexNode.js.map +1 -0
- package/dist/es5/initJsDevMode.js +8 -0
- package/dist/es5/initJsDevMode.js.map +1 -0
- package/dist/es5/jsDevMode.js +8 -8
- package/dist/es5/jsDevMode.js.map +1 -0
- package/dist/es5/normalizer/charMaps.js +20 -35
- package/dist/es5/normalizer/charMaps.js.map +1 -0
- package/dist/es5/normalizer/index.js +3 -3
- package/dist/es5/normalizer/index.js.map +1 -0
- package/dist/es5/normalizer/normalizer.js +14 -14
- package/dist/es5/normalizer/normalizer.js.map +1 -0
- package/dist/es5/paginator/paginator.js +232 -226
- package/dist/es5/paginator/paginator.js.map +1 -0
- package/dist/es5/types/dictionaries.js +2 -1
- package/dist/es5/types/dictionaries.js.map +1 -0
- package/dist/es5/types/enums.js +2 -0
- package/dist/es5/types/enums.js.map +1 -0
- package/dist/es5/types/functions.js +2 -0
- package/dist/es5/types/functions.js.map +1 -0
- package/dist/es5/types/index.js +5 -3
- package/dist/es5/types/index.js.map +1 -0
- package/dist/es5/types/valueNamePair.js +2 -1
- package/dist/es5/types/valueNamePair.js.map +1 -0
- package/dist/es5/utils/common.js +220 -232
- package/dist/es5/utils/common.js.map +1 -0
- package/dist/es5/utils/index.js +4 -4
- package/dist/es5/utils/index.js.map +1 -0
- package/dist/es5/utils/lang.js +79 -79
- package/dist/es5/utils/lang.js.map +1 -0
- package/dist/es5/utils/nameof.js +6 -6
- package/dist/es5/utils/nameof.js.map +1 -0
- package/dist/module/decorators/bindThis.decorator.js +28 -28
- package/dist/module/decorators/bindThis.decorator.js.map +1 -0
- package/dist/module/decorators/callOnce.decorator.js +33 -32
- package/dist/module/decorators/callOnce.decorator.js.map +1 -0
- package/dist/module/decorators/debounceCall.decorator.js +29 -30
- package/dist/module/decorators/debounceCall.decorator.js.map +1 -0
- package/dist/module/decorators/index.js +7 -16
- package/dist/module/decorators/index.js.map +1 -0
- package/dist/module/encoder/encoder.js +224 -235
- package/dist/module/encoder/encoder.js.map +1 -0
- package/dist/module/enums/index.js +5 -14
- package/dist/module/enums/index.js.map +1 -0
- package/dist/module/enums/orderByDirection.js +18 -18
- package/dist/module/enums/orderByDirection.js.map +1 -0
- package/dist/module/index.js +13 -37
- package/dist/module/index.js.map +1 -0
- package/dist/module/indexNode.js +5 -14
- package/dist/module/indexNode.js.map +1 -0
- package/dist/module/initJsDevMode.js +10 -0
- package/dist/module/initJsDevMode.js.map +1 -0
- package/dist/module/jsDevMode.js +12 -12
- package/dist/module/jsDevMode.js.map +1 -0
- package/dist/module/normalizer/charMaps.js +23 -31
- package/dist/module/normalizer/charMaps.js.map +1 -0
- package/dist/module/normalizer/index.js +6 -15
- package/dist/module/normalizer/index.js.map +1 -0
- package/dist/module/normalizer/normalizer.js +18 -18
- package/dist/module/normalizer/normalizer.js.map +1 -0
- package/dist/module/paginator/paginator.js +234 -228
- package/dist/module/paginator/paginator.js.map +1 -0
- package/dist/module/types/dictionaries.js +3 -3
- package/dist/module/types/dictionaries.js.map +1 -0
- package/dist/module/types/enums.js +3 -0
- package/dist/module/types/enums.js.map +1 -0
- package/dist/module/types/functions.js +3 -0
- package/dist/module/types/functions.js.map +1 -0
- package/dist/module/types/index.js +8 -15
- package/dist/module/types/index.js.map +1 -0
- package/dist/module/types/valueNamePair.js +3 -3
- package/dist/module/types/valueNamePair.js.map +1 -0
- package/dist/module/utils/common.js +232 -240
- package/dist/module/utils/common.js.map +1 -0
- package/dist/module/utils/index.js +7 -16
- package/dist/module/utils/index.js.map +1 -0
- package/dist/module/utils/lang.js +99 -99
- package/dist/module/utils/lang.js.map +1 -0
- package/dist/module/utils/nameof.js +10 -9
- package/dist/module/utils/nameof.js.map +1 -0
- package/package.json +45 -16
- package/src/decorators/bindThis.decorator.d.ts +5 -7
- package/src/decorators/bindThis.decorator.d.ts.map +1 -1
- package/src/decorators/callOnce.decorator.d.ts +5 -5
- package/src/decorators/callOnce.decorator.d.ts.map +1 -1
- package/src/decorators/debounceCall.decorator.d.ts +5 -5
- package/src/decorators/debounceCall.decorator.d.ts.map +1 -1
- package/src/decorators/index.d.ts +3 -3
- package/src/encoder/encoder.d.ts +45 -45
- package/src/encoder/encoder.d.ts.map +1 -1
- package/src/enums/index.d.ts +1 -1
- package/src/enums/orderByDirection.d.ts +13 -13
- package/src/index.d.ts +9 -17
- package/src/index.d.ts.map +1 -1
- package/src/indexNode.d.ts +1 -1
- package/src/initJsDevMode.d.ts +2 -0
- package/src/initJsDevMode.d.ts.map +1 -0
- package/src/jsDevMode.d.ts +8 -8
- package/src/jsDevMode.d.ts.map +1 -1
- package/src/normalizer/charMaps.d.ts +5 -9
- package/src/normalizer/charMaps.d.ts.map +1 -1
- package/src/normalizer/index.d.ts +2 -2
- package/src/normalizer/normalizer.d.ts +7 -6
- package/src/normalizer/normalizer.d.ts.map +1 -1
- package/src/paginator/paginator.d.ts +129 -129
- package/src/paginator/paginator.d.ts.map +1 -1
- package/src/types/dictionaries.d.ts +15 -6
- package/src/types/dictionaries.d.ts.map +1 -1
- package/src/types/enums.d.ts +7 -0
- package/src/types/enums.d.ts.map +1 -0
- package/src/types/functions.d.ts +14 -0
- package/src/types/functions.d.ts.map +1 -0
- package/src/types/index.d.ts +4 -2
- package/src/types/index.d.ts.map +1 -1
- package/src/types/valueNamePair.d.ts +13 -13
- package/src/utils/common.d.ts +181 -122
- package/src/utils/common.d.ts.map +1 -1
- package/src/utils/index.d.ts +3 -3
- package/src/utils/lang.d.ts +41 -41
- package/src/utils/lang.d.ts.map +1 -1
- package/src/utils/nameof.d.ts +5 -5
- package/src/utils/nameof.d.ts.map +1 -1
- package/version.bak +1 -1
- package/.jsbeautifyrc +0 -7
- package/appveyor.yml +0 -67
|
@@ -1,235 +1,224 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* A Javascript object to encode and/or decode html characters using HTML or Numeric entities that handles double or partial encoding
|
|
4
|
-
* Author: R Reid
|
|
5
|
-
* source: http://www.strictly-software.com/htmlencode
|
|
6
|
-
* Licences: GPL, The MIT License (MIT)
|
|
7
|
-
* Copyright: (c) 2011 Robert Reid - Strictly-Software.com
|
|
8
|
-
*
|
|
9
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the
|
|
10
|
-
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
11
|
-
* THE SOFTWARE IS PROVIDED
|
|
12
|
-
*
|
|
13
|
-
* Revision:
|
|
14
|
-
* 2011-07-14, Jacques-Yves Bleau:
|
|
15
|
-
* - fixed conversion error with capitalized accentuated characters
|
|
16
|
-
* + converted arr1 and arr2 to object property to remove redundancy
|
|
17
|
-
*
|
|
18
|
-
* Revision:
|
|
19
|
-
* 2011-11-10, Ce-Yi Hio:
|
|
20
|
-
* - fixed conversion error with a number of capitalized entity characters
|
|
21
|
-
*
|
|
22
|
-
* Revision:
|
|
23
|
-
* 2011-11-10, Rob Reid:
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* Revision:
|
|
27
|
-
* 2012-09-23, Alex Oss:
|
|
28
|
-
*
|
|
29
|
-
*/
|
|
30
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
-
exports.Encoder = void 0;
|
|
32
|
-
class Encoder {
|
|
33
|
-
constructor() {
|
|
34
|
-
// When encoding do we convert characters into html or numerical entities
|
|
35
|
-
this.EncodeType =
|
|
36
|
-
// arrays for conversion from HTML Entities to Numerical values
|
|
37
|
-
this.arr1 = [' ', '¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', '­', '®', '¯', '°', '±', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', '"', '&', '<', '>', 'Œ', 'œ', 'Š', 'š', 'Ÿ', 'ˆ', '˜', ' ', ' ', ' ', '‌', '‍', '‎', '‏', '–', '—', '‘', '’', '‚', '“', '”', '„', '†', '‡', '‰', '‹', '›', '€', 'ƒ', 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'ς', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ϑ', 'ϒ', 'ϖ', '•', '…', '′', '″', '‾', '⁄', '℘', 'ℑ', 'ℜ', '™', 'ℵ', '←', '↑', '→', '↓', '↔', '↵', '⇐', '⇑', '⇒', '⇓', '⇔', '∀', '∂', '∃', '∅', '∇', '∈', '∉', '∋', '∏', '∑', '−', '∗', '√', '∝', '∞', '∠', '∧', '∨', '∩', '∪', '∫', '∴', '∼', '≅', '≈', '≠', '≡', '≤', '≥', '⊂', '⊃', '⊄', '⊆', '⊇', '⊕', '⊗', '⊥', '⋅', '⌈', '⌉', '⌊', '⌋', '⟨', '⟩', '◊', '♠', '♣', '♥', '♦'];
|
|
38
|
-
this.arr2 = [' ', '¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', '­', '®', '¯', '°', '±', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', '"', '&', '<', '>', 'Œ', 'œ', 'Š', 'š', 'Ÿ', 'ˆ', '˜', ' ', ' ', ' ', '‌', '‍', '‎', '‏', '–', '—', '‘', '’', '‚', '“', '”', '„', '†', '‡', '‰', '‹', '›', '€', 'ƒ', 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'ς', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ϑ', 'ϒ', 'ϖ', '•', '…', '′', '″', '‾', '⁄', '℘', 'ℑ', 'ℜ', '™', 'ℵ', '←', '↑', '→', '↓', '↔', '↵', '⇐', '⇑', '⇒', '⇓', '⇔', '∀', '∂', '∃', '∅', '∇', '∈', '∉', '∋', '∏', '∑', '−', '∗', '√', '∝', '∞', '∠', '∧', '∨', '∩', '∪', '∫', '∴', '∼', '≅', '≈', '≠', '≡', '≤', '≥', '⊂', '⊃', '⊄', '⊆', '⊇', '⊕', '⊗', '⊥', '⋅', '⌈', '⌉', '⌊', '⌋', '〈', '〉', '◊', '♠', '♣', '♥', '♦'];
|
|
39
|
-
}
|
|
40
|
-
isEmpty(val) {
|
|
41
|
-
if (val) {
|
|
42
|
-
return ((val === null) || val.length == 0 || /^\s+$/.test(val));
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
a.push(
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
//
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if (
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
s = s.replace(
|
|
166
|
-
s = s.replace(
|
|
167
|
-
s = s.replace(/</g,
|
|
168
|
-
s = s.replace(/>/g,
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
return
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
//
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
inArray(item, arr) {
|
|
226
|
-
for (var i = 0, x = arr.length; i < x; i++) {
|
|
227
|
-
if (arr[i] === item) {
|
|
228
|
-
return i;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return -1;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
exports.Encoder = Encoder;
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmNvZGVyL2VuY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7OztBQUVILE1BQWEsT0FBTztJQUFwQjtRQUVDLHlFQUF5RTtRQUN6RSxlQUFVLEdBQVcsUUFBUSxDQUFDLENBQUUsc0JBQXNCO1FBY3RELCtEQUErRDtRQUMvRCxTQUFJLEdBQWEsQ0FBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsV0FBVyxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLFdBQVcsRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsV0FBVyxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLFdBQVcsRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLFdBQVcsRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsWUFBWSxFQUFDLFNBQVMsRUFBQyxPQUFPLEVBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFdBQVcsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzM0RSxTQUFJLEdBQWEsQ0FBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBbVF4MEUsQ0FBQztJQWpSQSxPQUFPLENBQUMsR0FBTztRQUVkLElBQUcsR0FBRyxFQUNBO1lBQ0wsT0FBTyxD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IHRvIGVuY29kZSBhbmQvb3IgZGVjb2RlIGh0bWwgY2hhcmFjdGVycyB1c2luZyBIVE1MIG9yIE51bWVyaWMgZW50aXRpZXMgdGhhdCBoYW5kbGVzIGRvdWJsZSBvciBwYXJ0aWFsIGVuY29kaW5nXHJcbiAqIEF1dGhvcjogUiBSZWlkXHJcbiAqIHNvdXJjZTogaHR0cDovL3d3dy5zdHJpY3RseS1zb2Z0d2FyZS5jb20vaHRtbGVuY29kZVxyXG4gKiBMaWNlbmNlczogR1BMLCBUaGUgTUlUIExpY2Vuc2UgKE1JVClcclxuICogQ29weXJpZ2h0OiAoYykgMjAxMSBSb2JlcnQgUmVpZCAtIFN0cmljdGx5LVNvZnR3YXJlLmNvbVxyXG4gKlxyXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxyXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cclxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXHJcbiAqXHJcbiAqIFJldmlzaW9uOlxyXG4gKiAgMjAxMS0wNy0xNCwgSmFjcXVlcy1ZdmVzIEJsZWF1OlxyXG4gKiAgICAgICAtIGZpeGVkIGNvbnZlcnNpb24gZXJyb3Igd2l0aCBjYXBpdGFsaXplZCBhY2NlbnR1YXRlZCBjaGFyYWN0ZXJzXHJcbiAqICAgICAgICsgY29udmVydGVkIGFycjEgYW5kIGFycjIgdG8gb2JqZWN0IHByb3BlcnR5IHRvIHJlbW92ZSByZWR1bmRhbmN5XHJcbiAqXHJcbiAqIFJldmlzaW9uOlxyXG4gKiAgMjAxMS0xMS0xMCwgQ2UtWWkgSGlvOlxyXG4gKiAgICAgICAtIGZpeGVkIGNvbnZlcnNpb24gZXJyb3Igd2l0aCBhIG51bWJlciBvZiBjYXBpdGFsaXplZCBlbnRpdHkgY2hhcmFjdGVyc1xyXG4gKlxyXG4gKiBSZXZpc2lvbjpcclxuICogIDIwMTEtMTEtMTAsIFJvYiBSZWlkOlxyXG4gKlx0XHQgLSBjaGFuZ2VkIGFycmF5IGZvcm1hdFxyXG4gKlxyXG4gKiBSZXZpc2lvbjpcclxuICogIDIwMTItMDktMjMsIEFsZXggT3NzOlxyXG4gKlx0XHQgLSByZXBsYWNlZCBzdHJpbmcgY29uY2F0b25hdGlvbiBpbiBudW1FbmNvZGUgd2l0aCBzdHJpbmcgYnVpbGRlciwgcHVzaCBhbmQgam9pbiBmb3IgcGVmb3JtYW5jZSB3aXRoIGFtbWVuZG1lbnRzIGJ5IFJvYiBSZWlkXHJcbiAqL1xyXG5cclxuZXhwb3J0IGNsYXNzIEVuY29kZXJcclxue1xyXG5cdC8vIFdoZW4gZW5jb2RpbmcgZG8gd2UgY29udmVydCBjaGFyYWN0ZXJzIGludG8gaHRtbCBvciBudW1lcmljYWwgZW50aXRpZXNcclxuXHRFbmNvZGVUeXBlOiBzdHJpbmcgPSBcImVudGl0eVwiOyAgLy8gZW50aXR5IE9SIG51bWVyaWNhbFxyXG5cclxuXHRpc0VtcHR5KHZhbDphbnkpXHJcbiAgICB7XHJcblx0XHRpZih2YWwpXHJcbiAgICAgICAge1xyXG5cdFx0XHRyZXR1cm4gKCh2YWw9PT1udWxsKSB8fCB2YWwubGVuZ3RoPT0wIHx8IC9eXFxzKyQvLnRlc3QodmFsKSk7XHJcblx0XHR9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Ly8gYXJyYXlzIGZvciBjb252ZXJzaW9uIGZyb20gSFRNTCBFbnRpdGllcyB0byBOdW1lcmljYWwgdmFsdWVzXHJcblx0YXJyMTogc3RyaW5nW10gPSBbJyZuYnNwOycsJyZpZXhjbDsnLCcmY2VudDsnLCcmcG91bmQ7JywnJmN1cnJlbjsnLCcmeWVuOycsJyZicnZiYXI7JywnJnNlY3Q7JywnJnVtbDsnLCcmY29weTsnLCcmb3JkZjsnLCcmbGFxdW87JywnJm5vdDsnLCcmc2h5OycsJyZyZWc7JywnJm1hY3I7JywnJmRlZzsnLCcmcGx1c21uOycsJyZzdXAyOycsJyZzdXAzOycsJyZhY3V0ZTsnLCcmbWljcm87JywnJnBhcmE7JywnJm1pZGRvdDsnLCcmY2VkaWw7JywnJnN1cDE7JywnJm9yZG07JywnJnJhcXVvOycsJyZmcmFjMTQ7JywnJmZyYWMxMjsnLCcmZnJhYzM0OycsJyZpcXVlc3Q7JywnJkFncmF2ZTsnLCcmQWFjdXRlOycsJyZBY2lyYzsnLCcmQXRpbGRlOycsJyZBdW1sOycsJyZBcmluZzsnLCcmQUVsaWc7JywnJkNjZWRpbDsnLCcmRWdyYXZlOycsJyZFYWN1dGU7JywnJkVjaXJjOycsJyZFdW1sOycsJyZJZ3JhdmU7JywnJklhY3V0ZTsnLCcmSWNpcmM7JywnJkl1bWw7JywnJkVUSDsnLCcmTnRpbGRlOycsJyZPZ3JhdmU7JywnJk9hY3V0ZTsnLCcmT2NpcmM7JywnJk90aWxkZTsnLCcmT3VtbDsnLCcmdGltZXM7JywnJk9zbGFzaDsnLCcmVWdyYXZlOycsJyZVYWN1dGU7JywnJlVjaXJjOycsJyZVdW1sOycsJyZZYWN1dGU7JywnJlRIT1JOOycsJyZzemxpZzsnLCcmYWdyYXZlOycsJyZhYWN1dGU7JywnJmFjaXJjOycsJyZhdGlsZGU7JywnJmF1bWw7JywnJmFyaW5nOycsJyZhZWxpZzsnLCcmY2NlZGlsOycsJyZlZ3JhdmU7JywnJmVhY3V0ZTsnLCcmZWNpcmM7JywnJmV1bWw7JywnJmlncmF2ZTsnLCcmaWFjdXRlOycsJyZpY2lyYzsnLCcmaXVtbDsnLCcmZXRoOycsJyZudGlsZGU7JywnJm9ncmF2ZTsnLCcmb2FjdXRlOycsJyZvY2lyYzsnLCcmb3RpbGRlOycsJyZvdW1sOycsJyZkaXZpZGU7JywnJm9zbGFzaDsnLCcmdWdyYXZlOycsJyZ1YWN1dGU7JywnJnVjaXJjOycsJyZ1dW1sOycsJyZ5YWN1dGU7JywnJnRob3JuOycsJyZ5dW1sOycsJyZxdW90OycsJyZhbXA7JywnJmx0OycsJyZndDsnLCcmT0VsaWc7JywnJm9lbGlnOycsJyZTY2Fyb247JywnJnNjYXJvbjsnLCcmWXVtbDsnLCcmY2lyYzsnLCcmdGlsZGU7JywnJmVuc3A7JywnJmVtc3A7JywnJnRoaW5zcDsnLCcmenduajsnLCcmendqOycsJyZscm07JywnJnJsbTsnLCcmbmRhc2g7JywnJm1kYXNoOycsJyZsc3F1bzsnLCcmcnNxdW87JywnJnNicXVvOycsJyZsZHF1bzsnLCcmcmRxdW87JywnJmJkcXVvOycsJyZkYWdnZXI7JywnJkRhZ2dlcjsnLCcmcGVybWlsOycsJyZsc2FxdW87JywnJnJzYXF1bzsnLCcmZXVybzsnLCcmZm5vZjsnLCcmQWxwaGE7JywnJkJldGE7JywnJkdhbW1hOycsJyZEZWx0YTsnLCcmRXBzaWxvbjsnLCcmWmV0YTsnLCcmRXRhOycsJyZUaGV0YTsnLCcmSW90YTsnLCcmS2FwcGE7JywnJkxhbWJkYTsnLCcmTXU7JywnJk51OycsJyZYaTsnLCcmT21pY3JvbjsnLCcmUGk7JywnJlJobzsnLCcmU2lnbWE7JywnJlRhdTsnLCcmVXBzaWxvbjsnLCcmUGhpOycsJyZDaGk7JywnJlBzaTsnLCcmT21lZ2E7JywnJmFscGhhOycsJyZiZXRhOycsJyZnYW1tYTsnLCcmZGVsdGE7JywnJmVwc2lsb247JywnJnpldGE7JywnJmV0YTsnLCcmdGhldGE7JywnJmlvdGE7JywnJmthcHBhOycsJyZsYW1iZGE7JywnJm11OycsJyZudTsnLCcmeGk7JywnJm9taWNyb247JywnJnBpOycsJyZyaG87JywnJnNpZ21hZjsnLCcmc2lnbWE7JywnJnRhdTsnLCcmdXBzaWxvbjsnLCcmcGhpOycsJyZjaGk7JywnJnBzaTsnLCcmb21lZ2E7JywnJnRoZXRhc3ltOycsJyZ1cHNpaDsnLCcmcGl2OycsJyZidWxsOycsJyZoZWxsaXA7JywnJnByaW1lOycsJyZQcmltZTsnLCcmb2xpbmU7JywnJmZyYXNsOycsJyZ3ZWllcnA7JywnJmltYWdlOycsJyZyZWFsOycsJyZ0cmFkZTsnLCcmYWxlZnN5bTsnLCcmbGFycjsnLCcmdWFycjsnLCcmcmFycjsnLCcmZGFycjsnLCcmaGFycjsnLCcmY3JhcnI7JywnJmxBcnI7JywnJnVBcnI7JywnJnJBcnI7JywnJmRBcnI7JywnJmhBcnI7JywnJmZvcmFsbDsnLCcmcGFydDsnLCcmZXhpc3Q7JywnJmVtcHR5OycsJyZuYWJsYTsnLCcmaXNpbjsnLCcmbm90aW47JywnJm5pOycsJyZwcm9kOycsJyZzdW07JywnJm1pbnVzOycsJyZsb3dhc3Q7JywnJnJhZGljOycsJyZwcm9wOycsJyZpbmZpbjsnLCcmYW5nOycsJyZhbmQ7JywnJm9yOycsJyZjYXA7JywnJmN1cDsnLCcmaW50OycsJyZ0aGVyZTQ7JywnJnNpbTsnLCcmY29uZzsnLCcmYXN5bXA7JywnJm5lOycsJyZlcXVpdjsnLCcmbGU7JywnJmdlOycsJyZzdWI7JywnJnN1cDsnLCcmbnN1YjsnLCcmc3ViZTsnLCcmc3VwZTsnLCcmb3BsdXM7JywnJm90aW1lczsnLCcmcGVycDsnLCcmc2RvdDsnLCcmbGNlaWw7JywnJnJjZWlsOycsJyZsZmxvb3I7JywnJnJmbG9vcjsnLCcmbGFuZzsnLCcmcmFuZzsnLCcmbG96OycsJyZzcGFkZXM7JywnJmNsdWJzOycsJyZoZWFydHM7JywnJmRpYW1zOyddO1xyXG5cdGFycjI6IHN0cmluZ1tdID0gWycmIzE2MDsnLCcmIzE2MTsnLCcmIzE2MjsnLCcmIzE2MzsnLCcmIzE2NDsnLCcmIzE2NTsnLCcmIzE2NjsnLCcmIzE2NzsnLCcmIzE2ODsnLCcmIzE2OTsnLCcmIzE3MDsnLCcmIzE3MTsnLCcmIzE3MjsnLCcmIzE3MzsnLCcmIzE3NDsnLCcmIzE3NTsnLCcmIzE3NjsnLCcmIzE3NzsnLCcmIzE3ODsnLCcmIzE3OTsnLCcmIzE4MDsnLCcmIzE4MTsnLCcmIzE4MjsnLCcmIzE4MzsnLCcmIzE4NDsnLCcmIzE4NTsnLCcmIzE4NjsnLCcmIzE4NzsnLCcmIzE4ODsnLCcmIzE4OTsnLCcmIzE5MDsnLCcmIzE5MTsnLCcmIzE5MjsnLCcmIzE5MzsnLCcmIzE5NDsnLCcmIzE5NTsnLCcmIzE5NjsnLCcmIzE5NzsnLCcmIzE5ODsnLCcmIzE5OTsnLCcmIzIwMDsnLCcmIzIwMTsnLCcmIzIwMjsnLCcmIzIwMzsnLCcmIzIwNDsnLCcmIzIwNTsnLCcmIzIwNjsnLCcmIzIwNzsnLCcmIzIwODsnLCcmIzIwOTsnLCcmIzIxMDsnLCcmIzIxMTsnLCcmIzIxMjsnLCcmIzIxMzsnLCcmIzIxNDsnLCcmIzIxNTsnLCcmIzIxNjsnLCcmIzIxNzsnLCcmIzIxODsnLCcmIzIxOTsnLCcmIzIyMDsnLCcmIzIyMTsnLCcmIzIyMjsnLCcmIzIyMzsnLCcmIzIyNDsnLCcmIzIyNTsnLCcmIzIyNjsnLCcmIzIyNzsnLCcmIzIyODsnLCcmIzIyOTsnLCcmIzIzMDsnLCcmIzIzMTsnLCcmIzIzMjsnLCcmIzIzMzsnLCcmIzIzNDsnLCcmIzIzNTsnLCcmIzIzNjsnLCcmIzIzNzsnLCcmIzIzODsnLCcmIzIzOTsnLCcmIzI0MDsnLCcmIzI0MTsnLCcmIzI0MjsnLCcmIzI0MzsnLCcmIzI0NDsnLCcmIzI0NTsnLCcmIzI0NjsnLCcmIzI0NzsnLCcmIzI0ODsnLCcmIzI0OTsnLCcmIzI1MDsnLCcmIzI1MTsnLCcmIzI1MjsnLCcmIzI1MzsnLCcmIzI1NDsnLCcmIzI1NTsnLCcmIzM0OycsJyYjMzg7JywnJiM2MDsnLCcmIzYyOycsJyYjMzM4OycsJyYjMzM5OycsJyYjMzUyOycsJyYjMzUzOycsJyYjMzc2OycsJyYjNzEwOycsJyYjNzMyOycsJyYjODE5NDsnLCcmIzgxOTU7JywnJiM4MjAxOycsJyYjODIwNDsnLCcmIzgyMDU7JywnJiM4MjA2OycsJyYjODIwNzsnLCcmIzgyMTE7JywnJiM4MjEyOycsJyYjODIxNjsnLCcmIzgyMTc7JywnJiM4MjE4OycsJyYjODIyMDsnLCcmIzgyMjE7JywnJiM4MjIyOycsJyYjODIyNDsnLCcmIzgyMjU7JywnJiM4MjQwOycsJyYjODI0OTsnLCcmIzgyNTA7JywnJiM4MzY0OycsJyYjNDAyOycsJyYjOTEzOycsJyYjOTE0OycsJyYjOTE1OycsJyYjOTE2OycsJyYjOTE3OycsJyYjOTE4OycsJyYjOTE5OycsJyYjOTIwOycsJyYjOTIxOycsJyYjOTIyOycsJyYjOTIzOycsJyYjOTI0OycsJyYjOTI1OycsJyYjOTI2OycsJyYjOTI3OycsJyYjOTI4OycsJyYjOTI5OycsJyYjOTMxOycsJyYjOTMyOycsJyYjOTMzOycsJyYjOTM0OycsJyYjOTM1OycsJyYjOTM2OycsJyYjOTM3OycsJyYjOTQ1OycsJyYjOTQ2OycsJyYjOTQ3OycsJyYjOTQ4OycsJyYjOTQ5OycsJyYjOTUwOycsJyYjOTUxOycsJyYjOTUyOycsJyYjOTUzOycsJyYjOTU0OycsJyYjOTU1OycsJyYjOTU2OycsJyYjOTU3OycsJyYjOTU4OycsJyYjOTU5OycsJyYjOTYwOycsJyYjOTYxOycsJyYjOTYyOycsJyYjOTYzOycsJyYjOTY0OycsJyYjOTY1OycsJyYjOTY2OycsJyYjOTY3OycsJyYjOTY4OycsJyYjOTY5OycsJyYjOTc3OycsJyYjOTc4OycsJyYjOTgyOycsJyYjODIyNjsnLCcmIzgyMzA7JywnJiM4MjQyOycsJyYjODI0MzsnLCcmIzgyNTQ7JywnJiM4MjYwOycsJyYjODQ3MjsnLCcmIzg0NjU7JywnJiM4NDc2OycsJyYjODQ4MjsnLCcmIzg1MDE7JywnJiM4NTkyOycsJyYjODU5MzsnLCcmIzg1OTQ7JywnJiM4NTk1OycsJyYjODU5NjsnLCcmIzg2Mjk7JywnJiM4NjU2OycsJyYjODY1NzsnLCcmIzg2NTg7JywnJiM4NjU5OycsJyYjODY2MDsnLCcmIzg3MDQ7JywnJiM4NzA2OycsJyYjODcwNzsnLCcmIzg3MDk7JywnJiM4NzExOycsJyYjODcxMjsnLCcmIzg3MTM7JywnJiM4NzE1OycsJyYjODcxOTsnLCcmIzg3MjE7JywnJiM4NzIyOycsJyYjODcyNzsnLCcmIzg3MzA7JywnJiM4NzMzOycsJyYjODczNDsnLCcmIzg3MzY7JywnJiM4NzQzOycsJyYjODc0NDsnLCcmIzg3NDU7JywnJiM4NzQ2OycsJyYjODc0NzsnLCcmIzg3NTY7JywnJiM4NzY0OycsJyYjODc3MzsnLCcmIzg3NzY7JywnJiM4ODAwOycsJyYjODgwMTsnLCcmIzg4MDQ7JywnJiM4ODA1OycsJyYjODgzNDsnLCcmIzg4MzU7JywnJiM4ODM2OycsJyYjODgzODsnLCcmIzg4Mzk7JywnJiM4ODUzOycsJyYjODg1NTsnLCcmIzg4Njk7JywnJiM4OTAxOycsJyYjODk2ODsnLCcmIzg5Njk7JywnJiM4OTcwOycsJyYjODk3MTsnLCcmIzkwMDE7JywnJiM5MDAyOycsJyYjOTY3NDsnLCcmIzk4MjQ7JywnJiM5ODI3OycsJyYjOTgyOTsnLCcmIzk4MzA7J107XHJcblxyXG5cdC8vIENvbnZlcnQgSFRNTCBlbnRpdGllcyBpbnRvIG51bWVyaWNhbCBlbnRpdGllc1xyXG5cdEhUTUwyTnVtZXJpY2FsKHM6YW55KVxyXG4gICAge1xyXG5cdFx0cmV0dXJuIHRoaXMuc3dhcEFycmF5VmFscyhzLCB0aGlzLmFycjEsIHRoaXMuYXJyMik7XHJcblx0fTtcclxuXHJcblx0Ly8gQ29udmVydCBOdW1lcmljYWwgZW50aXRpZXMgaW50byBIVE1MIGVudGl0aWVzXHJcblx0TnVtZXJpY2FsVG9IVE1MKHM6YW55KVxyXG4gICAge1xyXG5cdFx0cmV0dXJuIHRoaXMuc3dhcEFycmF5VmFscyhzLCB0aGlzLmFycjIsIHRoaXMuYXJyMSk7XHJcblx0fTtcclxuXHJcblxyXG5cdC8vIE51bWVyaWNhbGx5IGVuY29kZXMgYWxsIHVuaWNvZGUgY2hhcmFjdGVyc1xyXG5cdG51bUVuY29kZShzOmFueSlcclxuICAgIHtcclxuXHRcdGlmKHRoaXMuaXNFbXB0eShzKSlcclxuICAgICAgICB7IFxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG5cdFx0dmFyIGEgPSBbXSxcclxuXHRcdFx0bCA9IHMubGVuZ3RoO1xyXG5cclxuXHRcdGZvciAodmFyIGk9MDsgaSA8IGw7IGkrKylcclxuICAgICAgICB7XHJcblx0XHRcdHZhciBjID0gcy5jaGFyQXQoaSk7XHJcblx0XHRcdFxyXG4gICAgICAgICAgICBpZiAoYyA8IFwiIFwiIHx8IGMgPiBcIn5cIilcclxuICAgICAgICAgICAge1xyXG5cdFx0XHRcdGEucHVzaChcIiYjXCIpO1xyXG5cdFx0XHRcdGEucHVzaChjLmNoYXJDb2RlQXQoKSk7IC8vbnVtZXJpYyB2YWx1ZSBvZiBjb2RlIHBvaW50XHJcblx0XHRcdFx0YS5wdXNoKFwiO1wiKTtcclxuXHRcdFx0fVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHtcclxuXHRcdFx0XHRhLnB1c2goYyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gYS5qb2luKFwiXCIpO1xyXG5cdH07XHJcblxyXG5cdC8vIEhUTUwgRGVjb2RlIG51bWVyaWNhbCBhbmQgSFRNTCBlbnRpdGllcyBiYWNrIHRvIG9yaWdpbmFsIHZhbHVlc1xyXG5cdGh0bWxEZWNvZGUoczphbnkpXHJcbiAgICB7XHJcblx0XHR2YXIgYyxtLGQgPSBzO1xyXG5cclxuXHRcdGlmKHRoaXMuaXNFbXB0eShkKSkgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG5cdFx0Ly8gY29udmVydCBIVE1MIGVudGl0ZXMgYmFjayB0byBudW1lcmljYWwgZW50aXRlcyBmaXJzdFxyXG5cdFx0ZCA9IHRoaXMuSFRNTDJOdW1lcmljYWwoZCk7XHJcblxyXG5cdFx0Ly8gbG9vayBmb3IgbnVtZXJpY2FsIGVudGl0aWVzICYjMzQ7XHJcblx0XHR2YXIgYXJyID0gZC5tYXRjaCgvJiNbMC05XXsxLDV9Oy9nKTtcclxuXHJcblx0XHQvLyBpZiBubyBtYXRjaGVzIGZvdW5kIGluIHN0cmluZyB0aGVuIHNraXBcclxuXHRcdGlmKGFyciE9bnVsbClcclxuICAgICAgICB7XHJcblx0XHRcdGZvcih2YXIgeD0wOyB4IDwgYXJyLmxlbmd0aDsgeCsrKVxyXG4gICAgICAgICAgICB7XHJcblx0XHRcdFx0bSA9IGFyclt4XTtcclxuXHRcdFx0XHRjID0gbS5zdWJzdHJpbmcoMixtLmxlbmd0aC0xKTsgLy9nZXQgbnVtZXJpYyBwYXJ0IHdoaWNoIGlzIHJlZmVybmNlIHRvIHVuaWNvZGUgY2hhcmFjdGVyXHJcblx0XHRcdFx0Ly8gaWYgaXRzIGEgdmFsaWQgbnVtYmVyIHdlIGNhbiBkZWNvZGVcclxuXHRcdFx0XHRpZihjID49IC0zMjc2OCAmJiBjIDw9IDY1NTM1KVxyXG4gICAgICAgICAgICAgICAge1xyXG5cdFx0XHRcdFx0Ly8gZGVjb2RlIGV2ZXJ5IHNpbmdsZSBtYXRjaCB3aXRoaW4gc3RyaW5nXHJcblx0XHRcdFx0XHRkID0gZC5yZXBsYWNlKG0sIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xyXG5cdFx0XHRcdH1cclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHtcclxuXHRcdFx0XHRcdGQgPSBkLnJlcGxhY2UobSwgXCJcIik7IC8vaW52YWxpZCBzbyByZXBsYWNlIHdpdGggbmFkYVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBkO1xyXG5cdH07XHJcblxyXG5cdC8vIGVuY29kZSBhbiBpbnB1dCBzdHJpbmcgaW50byBlaXRoZXIgbnVtZXJpY2FsIG9yIEhUTUwgZW50aXRpZXNcclxuXHRodG1sRW5jb2RlKHM6YW55LCBkYmw6YW55KVxyXG4gICAge1xyXG5cdFx0aWYodGhpcy5pc0VtcHR5KHMpKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuXHRcdC8vIGRvIHdlIGFsbG93IGRvdWJsZSBlbmNvZGluZz8gRS5nIHdpbGwgJmFtcDsgYmUgdHVybmVkIGludG8gJmFtcDthbXA7XHJcblx0XHRkYmwgPSBkYmwgfHwgZmFsc2U7IC8vZGVmYXVsdCB0byBwcmV2ZW50IGRvdWJsZSBlbmNvZGluZ1xyXG5cclxuXHRcdC8vIGlmIGFsbG93aW5nIGRvdWJsZSBlbmNvZGluZyB3ZSBkbyBhbXBlcnNhbmRzIGZpcnN0XHJcblx0XHRpZihkYmwpXHJcbiAgICAgICAge1xyXG5cdFx0XHRpZih0aGlzLkVuY29kZVR5cGU9PVwibnVtZXJpY2FsXCIpXHJcbiAgICAgICAgICAgIHtcclxuXHRcdFx0XHRzID0gcy5yZXBsYWNlKC8mL2csIFwiJiMzODtcIik7XHJcblx0XHRcdH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB7XHJcblx0XHRcdFx0cyA9IHMucmVwbGFjZSgvJi9nLCBcIiZhbXA7XCIpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gY29udmVydCB0aGUgeHNzIGNoYXJzIHRvIG51bWVyaWNhbCBlbnRpdGllcyAnIFwiIDwgPlxyXG5cdFx0cyA9IHRoaXMuWFNTRW5jb2RlKHMsZmFsc2UpO1xyXG5cclxuXHRcdGlmKHRoaXMuRW5jb2RlVHlwZT09XCJudW1lcmljYWxcIiB8fCAhZGJsKVxyXG4gICAgICAgIHtcclxuXHRcdFx0Ly8gTm93IGNhbGwgZnVuY3Rpb24gdGhhdCB3aWxsIGNvbnZlcnQgYW55IEhUTUwgZW50aXRpZXMgdG8gbnVtZXJpY2FsIGNvZGVzXHJcblx0XHRcdHMgPSB0aGlzLkhUTUwyTnVtZXJpY2FsKHMpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIE5vdyBlbmNvZGUgYWxsIGNoYXJzIGFib3ZlIDEyNyBlLmcgdW5pY29kZVxyXG5cdFx0cyA9IHRoaXMubnVtRW5jb2RlKHMpO1xyXG5cclxuXHRcdC8vIG5vdyB3ZSBrbm93IGFueXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgZW5jb2RlZCBoYXMgYmVlbiBjb252ZXJ0ZWQgdG8gbnVtZXJpY2FsIGVudGl0aWVzIHdlXHJcblx0XHQvLyBjYW4gZW5jb2RlIGFueSBhbXBlcnNhbmRzICYgdGhhdCBhcmUgbm90IHBhcnQgb2YgZW5jb2RlZCBlbnRpdGllc1xyXG5cdFx0Ly8gdG8gaGFuZGxlIHRoZSBmYWN0IHRoYXQgSSBuZWVkIHRvIGRvIGEgbmVnYXRpdmUgY2hlY2sgYW5kIGhhbmRsZSBtdWx0aXBsZSBhbXBlcnNhbmRzICYmJlxyXG5cdFx0Ly8gSSBhbSBnb2luZyB0byB1c2UgYSBwbGFjZWhvbGRlclxyXG5cclxuXHRcdC8vIGlmIHdlIGRvbid0IHdhbnQgZG91YmxlIGVuY29kZWQgZW50aXRpZXMgd2UgaWdub3JlIHRoZSAmIGluIGV4aXN0aW5nIGVudGl0aWVzXHJcblx0XHRpZighZGJsKVxyXG4gICAgICAgIHtcclxuXHRcdFx0cyA9IHMucmVwbGFjZSgvJiMvZyxcIiMjQU1QSEFTSCMjXCIpO1xyXG5cclxuXHRcdFx0aWYodGhpcy5FbmNvZGVUeXBlPT1cIm51bWVyaWNhbFwiKVxyXG4gICAgICAgICAgICB7XHJcblx0XHRcdFx0cyA9IHMucmVwbGFjZSgvJi9nLCBcIiYjMzg7XCIpO1xyXG5cdFx0XHR9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAge1xyXG5cdFx0XHRcdHMgPSBzLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cyA9IHMucmVwbGFjZSgvIyNBTVBIQVNIIyMvZyxcIiYjXCIpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIHJlcGxhY2UgYW55IG1hbGZvcm1lZCBlbnRpdGllc1xyXG5cdFx0cyA9IHMucmVwbGFjZSgvJiNcXGQqKFteXFxkO118JCkvZywgXCIkMVwiKTtcclxuXHJcblx0XHRpZighZGJsKVxyXG4gICAgICAgIHtcclxuXHRcdFx0Ly8gc2FmZXR5IGNoZWNrIHRvIGNvcnJlY3QgYW55IGRvdWJsZSBlbmNvZGVkICZhbXA7XHJcblx0XHRcdHMgPSB0aGlzLmNvcnJlY3RFbmNvZGluZyhzKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBub3cgZG8gd2UgbmVlZCB0byBjb252ZXJ0IG91ciBudW1lcmljYWwgZW5jb2RlZCBzdHJpbmcgaW50byBlbnRpdGllc1xyXG5cdFx0aWYodGhpcy5FbmNvZGVUeXBlPT1cImVudGl0eVwiKVxyXG4gICAgICAgIHtcclxuXHRcdFx0cyA9IHRoaXMuTnVtZXJpY2FsVG9IVE1MKHMpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBzO1xyXG5cdH07XHJcblxyXG5cdC8vIEVuY29kZXMgdGhlIGJhc2ljIDQgY2hhcmFjdGVycyB1c2VkIHRvIG1hbGZvcm0gSFRNTCBpbiBYU1MgaGFja3NcclxuXHRYU1NFbmNvZGUoczphbnksZW46YW55KVxyXG4gICAge1xyXG5cdFx0aWYoIXRoaXMuaXNFbXB0eShzKSlcclxuICAgICAgICB7XHJcblx0XHRcdGVuID0gZW4gfHwgdHJ1ZTtcclxuXHRcdFx0Ly8gZG8gd2UgY29udmVydCB0byBudW1lcmljYWwgb3IgaHRtbCBlbnRpdHk/XHJcblx0XHRcdGlmKGVuKVxyXG4gICAgICAgICAgICB7XHJcblx0XHRcdFx0cyA9IHMucmVwbGFjZSgvXFwnL2csXCImIzM5O1wiKTsgLy9ubyBIVE1MIGVxdWl2YWxlbnQgYXMgJmFwb3MgaXMgbm90IGNyb3NzIGJyb3dzZXIgc3VwcG9ydGVkXHJcblx0XHRcdFx0cyA9IHMucmVwbGFjZSgvXFxcIi9nLFwiJnF1b3Q7XCIpO1xyXG5cdFx0XHRcdHMgPSBzLnJlcGxhY2UoLzwvZyxcIiZsdDtcIik7XHJcblx0XHRcdFx0cyA9IHMucmVwbGFjZSgvPi9nLFwiJmd0O1wiKTtcclxuXHRcdFx0fVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHtcclxuXHRcdFx0XHRzID0gcy5yZXBsYWNlKC9cXCcvZyxcIiYjMzk7XCIpOyAvL25vIEhUTUwgZXF1aXZhbGVudCBhcyAmYXBvcyBpcyBub3QgY3Jvc3MgYnJvd3NlciBzdXBwb3J0ZWRcclxuXHRcdFx0XHRzID0gcy5yZXBsYWNlKC9cXFwiL2csXCImIzM0O1wiKTtcclxuXHRcdFx0XHRzID0gcy5yZXBsYWNlKC88L2csXCImIzYwO1wiKTtcclxuXHRcdFx0XHRzID0gcy5yZXBsYWNlKC8+L2csXCImIzYyO1wiKTtcclxuXHRcdFx0fVxyXG4gICAgICAgICAgICBcclxuXHRcdFx0cmV0dXJuIHM7XHJcblx0XHR9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIHtcclxuXHRcdFx0cmV0dXJuIFwiXCI7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Ly8gcmV0dXJucyB0cnVlIGlmIGEgc3RyaW5nIGNvbnRhaW5zIGh0bWwgb3IgbnVtZXJpY2FsIGVuY29kZWQgZW50aXRpZXNcclxuXHRoYXNFbmNvZGVkKHM6YW55KVxyXG4gICAge1xyXG5cdFx0aWYoLyYjWzAtOV17MSw1fTsvZy50ZXN0KHMpKVxyXG4gICAgICAgIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcbiAgICAgICAgZWxzZSBpZigvJltBLVpdezIsNn07L2dpLnRlc3QocykpXHJcbiAgICAgICAge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Ly8gd2lsbCByZW1vdmUgYW55IHVuaWNvZGUgY2hhcmFjdGVyc1xyXG5cdHN0cmlwVW5pY29kZShzOmFueSlcclxuICAgIHtcclxuXHRcdHJldHVybiBzLnJlcGxhY2UoL1teXFx4MjAtXFx4N0VdL2csXCJcIik7XHJcblx0fTtcclxuXHJcblx0Ly8gY29ycmVjdHMgYW55IGRvdWJsZSBlbmNvZGVkICZhbXA7IGVudGl0aWVzIGUuZyAmYW1wO2FtcDtcclxuXHRjb3JyZWN0RW5jb2RpbmcoczphbnkpXHJcbiAgICB7XHJcblx0XHRyZXR1cm4gcy5yZXBsYWNlKC8oJmFtcDspKGFtcDspKy8sXCIkMVwiKTtcclxuXHR9O1xyXG5cclxuXHQvLyBGdW5jdGlvbiB0byBsb29wIHRocm91Z2ggYW4gYXJyYXkgc3dhcGluZyBlYWNoIGl0ZW0gd2l0aCB0aGUgdmFsdWUgZnJvbSBhbm90aGVyIGFycmF5IGUuZyBzd2FwIEhUTUwgZW50aXRpZXMgd2l0aCBOdW1lcmljYWxzXHJcblx0c3dhcEFycmF5VmFscyhzOmFueSxhcnIxOmFueSxhcnIyOmFueSlcclxuICAgIHtcclxuXHRcdGlmKHRoaXMuaXNFbXB0eShzKSlcclxuICAgICAgICB7IFxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcblx0XHR2YXIgcmU7XHJcbiAgICAgICAgXHJcblx0XHRpZihhcnIxICYmIGFycjIpXHJcbiAgICAgICAge1xyXG5cdFx0XHQvL1Nob3dEZWJ1ZyhcImluIHN3YXBBcnJheVZhbHMgYXJyMS5sZW5ndGggPSBcIiArIGFycjEubGVuZ3RoICsgXCIgYXJyMi5sZW5ndGggPSBcIiArIGFycjIubGVuZ3RoKVxyXG5cdFx0XHQvLyBhcnJheSBsZW5ndGhzIG11c3QgbWF0Y2hcclxuXHRcdFx0aWYoYXJyMS5sZW5ndGggPT0gYXJyMi5sZW5ndGgpXHJcbiAgICAgICAgICAgIHtcclxuXHRcdFx0XHRmb3IodmFyIHg9MCwgaSA9IGFycjEubGVuZ3RoOyB4IDwgaTsgeCsrKVxyXG4gICAgICAgICAgICAgICAge1xyXG5cdFx0XHRcdFx0cmUgPSBuZXcgUmVnRXhwKGFycjFbeF0sICdnJyk7XHJcblx0XHRcdFx0XHRzID0gcy5yZXBsYWNlKHJlLGFycjJbeF0pOyAvL3N3YXAgYXJyMSBpdGVtIHdpdGggbWF0Y2hpbmcgaXRlbSBmcm9tIGFycjJcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuICAgICAgICBcclxuXHRcdHJldHVybiBzO1xyXG5cdH07XHJcblxyXG5cdGluQXJyYXkoIGl0ZW06YW55LCBhcnI6YW55ICkgXHJcbiAgICB7XHJcblx0XHRmb3IgKCB2YXIgaSA9IDAsIHggPSBhcnIubGVuZ3RoOyBpIDwgeDsgaSsrIClcclxuICAgICAgICB7XHJcblx0XHRcdGlmICggYXJyW2ldID09PSBpdGVtIClcclxuICAgICAgICAgICAge1xyXG5cdFx0XHRcdHJldHVybiBpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcbiAgICAgICAgXHJcblx0XHRyZXR1cm4gLTE7XHJcblx0fVxyXG5cclxufVxyXG4iXX0=
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A Javascript object to encode and/or decode html characters using HTML or Numeric entities that handles double or partial encoding
|
|
4
|
+
* Author: R Reid
|
|
5
|
+
* source: http://www.strictly-software.com/htmlencode
|
|
6
|
+
* Licences: GPL, The MIT License (MIT)
|
|
7
|
+
* Copyright: (c) 2011 Robert Reid - Strictly-Software.com
|
|
8
|
+
*
|
|
9
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
10
|
+
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
11
|
+
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
12
|
+
*
|
|
13
|
+
* Revision:
|
|
14
|
+
* 2011-07-14, Jacques-Yves Bleau:
|
|
15
|
+
* - fixed conversion error with capitalized accentuated characters
|
|
16
|
+
* + converted arr1 and arr2 to object property to remove redundancy
|
|
17
|
+
*
|
|
18
|
+
* Revision:
|
|
19
|
+
* 2011-11-10, Ce-Yi Hio:
|
|
20
|
+
* - fixed conversion error with a number of capitalized entity characters
|
|
21
|
+
*
|
|
22
|
+
* Revision:
|
|
23
|
+
* 2011-11-10, Rob Reid:
|
|
24
|
+
* - changed array format
|
|
25
|
+
*
|
|
26
|
+
* Revision:
|
|
27
|
+
* 2012-09-23, Alex Oss:
|
|
28
|
+
* - replaced string concatonation in numEncode with string builder, push and join for peformance with ammendments by Rob Reid
|
|
29
|
+
*/
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.Encoder = void 0;
|
|
32
|
+
class Encoder {
|
|
33
|
+
constructor() {
|
|
34
|
+
// When encoding do we convert characters into html or numerical entities
|
|
35
|
+
this.EncodeType = 'entity'; // entity OR numerical
|
|
36
|
+
// arrays for conversion from HTML Entities to Numerical values
|
|
37
|
+
this.arr1 = [' ', '¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', '­', '®', '¯', '°', '±', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', '"', '&', '<', '>', 'Œ', 'œ', 'Š', 'š', 'Ÿ', 'ˆ', '˜', ' ', ' ', ' ', '‌', '‍', '‎', '‏', '–', '—', '‘', '’', '‚', '“', '”', '„', '†', '‡', '‰', '‹', '›', '€', 'ƒ', 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'ς', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ϑ', 'ϒ', 'ϖ', '•', '…', '′', '″', '‾', '⁄', '℘', 'ℑ', 'ℜ', '™', 'ℵ', '←', '↑', '→', '↓', '↔', '↵', '⇐', '⇑', '⇒', '⇓', '⇔', '∀', '∂', '∃', '∅', '∇', '∈', '∉', '∋', '∏', '∑', '−', '∗', '√', '∝', '∞', '∠', '∧', '∨', '∩', '∪', '∫', '∴', '∼', '≅', '≈', '≠', '≡', '≤', '≥', '⊂', '⊃', '⊄', '⊆', '⊇', '⊕', '⊗', '⊥', '⋅', '⌈', '⌉', '⌊', '⌋', '⟨', '⟩', '◊', '♠', '♣', '♥', '♦'];
|
|
38
|
+
this.arr2 = [' ', '¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', '­', '®', '¯', '°', '±', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', '"', '&', '<', '>', 'Œ', 'œ', 'Š', 'š', 'Ÿ', 'ˆ', '˜', ' ', ' ', ' ', '‌', '‍', '‎', '‏', '–', '—', '‘', '’', '‚', '“', '”', '„', '†', '‡', '‰', '‹', '›', '€', 'ƒ', 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'ς', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ϑ', 'ϒ', 'ϖ', '•', '…', '′', '″', '‾', '⁄', '℘', 'ℑ', 'ℜ', '™', 'ℵ', '←', '↑', '→', '↓', '↔', '↵', '⇐', '⇑', '⇒', '⇓', '⇔', '∀', '∂', '∃', '∅', '∇', '∈', '∉', '∋', '∏', '∑', '−', '∗', '√', '∝', '∞', '∠', '∧', '∨', '∩', '∪', '∫', '∴', '∼', '≅', '≈', '≠', '≡', '≤', '≥', '⊂', '⊃', '⊄', '⊆', '⊇', '⊕', '⊗', '⊥', '⋅', '⌈', '⌉', '⌊', '⌋', '〈', '〉', '◊', '♠', '♣', '♥', '♦'];
|
|
39
|
+
}
|
|
40
|
+
isEmpty(val) {
|
|
41
|
+
if (val) {
|
|
42
|
+
return ((val === null) || val.length == 0 || /^\s+$/.test(val));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Convert HTML entities into numerical entities
|
|
49
|
+
HTML2Numerical(s) {
|
|
50
|
+
return this.swapArrayVals(s, this.arr1, this.arr2);
|
|
51
|
+
}
|
|
52
|
+
// Convert Numerical entities into HTML entities
|
|
53
|
+
NumericalToHTML(s) {
|
|
54
|
+
return this.swapArrayVals(s, this.arr2, this.arr1);
|
|
55
|
+
}
|
|
56
|
+
// Numerically encodes all unicode characters
|
|
57
|
+
numEncode(s) {
|
|
58
|
+
if (this.isEmpty(s)) {
|
|
59
|
+
return '';
|
|
60
|
+
}
|
|
61
|
+
const a = [], l = s.length;
|
|
62
|
+
for (let i = 0; i < l; i++) {
|
|
63
|
+
const c = s.charAt(i);
|
|
64
|
+
if (c < ' ' || c > '~') {
|
|
65
|
+
a.push('&#');
|
|
66
|
+
a.push(c.charCodeAt()); //numeric value of code point
|
|
67
|
+
a.push(';');
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
a.push(c);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return a.join('');
|
|
74
|
+
}
|
|
75
|
+
// HTML Decode numerical and HTML entities back to original values
|
|
76
|
+
htmlDecode(s) {
|
|
77
|
+
let c, m, d = s;
|
|
78
|
+
if (this.isEmpty(d)) {
|
|
79
|
+
return '';
|
|
80
|
+
}
|
|
81
|
+
// convert HTML entites back to numerical entites first
|
|
82
|
+
d = this.HTML2Numerical(d);
|
|
83
|
+
// look for numerical entities "
|
|
84
|
+
const arr = d.match(/&#[0-9]{1,5};/g);
|
|
85
|
+
// if no matches found in string then skip
|
|
86
|
+
if (arr != null) {
|
|
87
|
+
for (let x = 0; x < arr.length; x++) {
|
|
88
|
+
m = arr[x];
|
|
89
|
+
c = m.substring(2, m.length - 1); //get numeric part which is refernce to unicode character
|
|
90
|
+
// if its a valid number we can decode
|
|
91
|
+
if (c >= -32768 && c <= 65535) {
|
|
92
|
+
// decode every single match within string
|
|
93
|
+
d = d.replace(m, String.fromCharCode(c));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
d = d.replace(m, ''); //invalid so replace with nada
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return d;
|
|
101
|
+
}
|
|
102
|
+
// encode an input string into either numerical or HTML entities
|
|
103
|
+
htmlEncode(s, dbl) {
|
|
104
|
+
if (this.isEmpty(s)) {
|
|
105
|
+
return '';
|
|
106
|
+
}
|
|
107
|
+
// do we allow double encoding? E.g will & be turned into &amp;
|
|
108
|
+
dbl = dbl || false; //default to prevent double encoding
|
|
109
|
+
// if allowing double encoding we do ampersands first
|
|
110
|
+
if (dbl) {
|
|
111
|
+
if (this.EncodeType == 'numerical') {
|
|
112
|
+
s = s.replace(/&/g, '&');
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
s = s.replace(/&/g, '&');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// convert the xss chars to numerical entities ' ' < >
|
|
119
|
+
s = this.XSSEncode(s, false);
|
|
120
|
+
if (this.EncodeType == 'numerical' || !dbl) {
|
|
121
|
+
// Now call function that will convert any HTML entities to numerical codes
|
|
122
|
+
s = this.HTML2Numerical(s);
|
|
123
|
+
}
|
|
124
|
+
// Now encode all chars above 127 e.g unicode
|
|
125
|
+
s = this.numEncode(s);
|
|
126
|
+
// now we know anything that needs to be encoded has been converted to numerical entities we
|
|
127
|
+
// can encode any ampersands & that are not part of encoded entities
|
|
128
|
+
// to handle the fact that I need to do a negative check and handle multiple ampersands &&&
|
|
129
|
+
// I am going to use a placeholder
|
|
130
|
+
// if we don't want double encoded entities we ignore the & in existing entities
|
|
131
|
+
if (!dbl) {
|
|
132
|
+
s = s.replace(/&#/g, '##AMPHASH##');
|
|
133
|
+
if (this.EncodeType == 'numerical') {
|
|
134
|
+
s = s.replace(/&/g, '&');
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
s = s.replace(/&/g, '&');
|
|
138
|
+
}
|
|
139
|
+
s = s.replace(/##AMPHASH##/g, '&#');
|
|
140
|
+
}
|
|
141
|
+
// replace any malformed entities
|
|
142
|
+
s = s.replace(/&#\d*([^\d;]|$)/g, '$1');
|
|
143
|
+
if (!dbl) {
|
|
144
|
+
// safety check to correct any double encoded &
|
|
145
|
+
s = this.correctEncoding(s);
|
|
146
|
+
}
|
|
147
|
+
// now do we need to convert our numerical encoded string into entities
|
|
148
|
+
if (this.EncodeType == 'entity') {
|
|
149
|
+
s = this.NumericalToHTML(s);
|
|
150
|
+
}
|
|
151
|
+
return s;
|
|
152
|
+
}
|
|
153
|
+
// Encodes the basic 4 characters used to malform HTML in XSS hacks
|
|
154
|
+
XSSEncode(s, en) {
|
|
155
|
+
if (!this.isEmpty(s)) {
|
|
156
|
+
en = en || true;
|
|
157
|
+
// do we convert to numerical or html entity?
|
|
158
|
+
if (en) {
|
|
159
|
+
s = s.replace(/'/g, '''); //no HTML equivalent as &apos is not cross browser supported
|
|
160
|
+
s = s.replace(/"/g, '"');
|
|
161
|
+
s = s.replace(/</g, '<');
|
|
162
|
+
s = s.replace(/>/g, '>');
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
s = s.replace(/'/g, '''); //no HTML equivalent as &apos is not cross browser supported
|
|
166
|
+
s = s.replace(/"/g, '"');
|
|
167
|
+
s = s.replace(/</g, '<');
|
|
168
|
+
s = s.replace(/>/g, '>');
|
|
169
|
+
}
|
|
170
|
+
return s;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
return '';
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// returns true if a string contains html or numerical encoded entities
|
|
177
|
+
hasEncoded(s) {
|
|
178
|
+
if (/&#[0-9]{1,5};/g.test(s)) {
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
else if (/&[A-Z]{2,6};/gi.test(s)) {
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// will remove any unicode characters
|
|
189
|
+
stripUnicode(s) {
|
|
190
|
+
return s.replace(/[^\x20-\x7E]/g, '');
|
|
191
|
+
}
|
|
192
|
+
// corrects any double encoded & entities e.g &amp;
|
|
193
|
+
correctEncoding(s) {
|
|
194
|
+
return s.replace(/(&)(amp;)+/, '$1');
|
|
195
|
+
}
|
|
196
|
+
// Function to loop through an array swaping each item with the value from another array e.g swap HTML entities with Numericals
|
|
197
|
+
swapArrayVals(s, arr1, arr2) {
|
|
198
|
+
if (this.isEmpty(s)) {
|
|
199
|
+
return '';
|
|
200
|
+
}
|
|
201
|
+
let re;
|
|
202
|
+
if (arr1 && arr2) {
|
|
203
|
+
//ShowDebug('in swapArrayVals arr1.length = ' + arr1.length + ' arr2.length = ' + arr2.length)
|
|
204
|
+
// array lengths must match
|
|
205
|
+
if (arr1.length == arr2.length) {
|
|
206
|
+
for (let x = 0, i = arr1.length; x < i; x++) {
|
|
207
|
+
re = new RegExp(arr1[x], 'g');
|
|
208
|
+
s = s.replace(re, arr2[x]); //swap arr1 item with matching item from arr2
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return s;
|
|
213
|
+
}
|
|
214
|
+
inArray(item, arr) {
|
|
215
|
+
for (let i = 0, x = arr.length; i < x; i++) {
|
|
216
|
+
if (arr[i] === item) {
|
|
217
|
+
return i;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return -1;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
exports.Encoder = Encoder;
|
|
224
|
+
//# sourceMappingURL=encoder.js.map
|