@syncfusion/ej2-base 20.1.56 → 20.1.58-106983
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/.eslintrc.json +16 -1
- package/CHANGELOG.md +108 -4
- package/{README.md → ReadMe.md} +5 -6
- package/bin/syncfusion-license.js +2 -0
- package/dist/ej2-base.min.js +1 -0
- package/dist/ej2-base.umd.min.js +1 -10
- package/dist/ej2-base.umd.min.js.map +1 -1
- package/dist/es6/ej2-base.es2015.js +671 -315
- package/dist/es6/ej2-base.es2015.js.map +1 -1
- package/dist/es6/ej2-base.es5.js +448 -233
- package/dist/es6/ej2-base.es5.js.map +1 -1
- package/dist/global/ej2-base.min.js +1 -10
- package/dist/global/ej2-base.min.js.map +1 -1
- package/dist/global/index.d.ts +0 -9
- package/e2e/modified-protractor/protractor.config.js +316 -0
- package/e2e/protractor.config.js +56 -24
- package/helpers/e2e/base.js +62 -52
- package/helpers/e2e/index.js +8 -6
- package/package.json +78 -158
- package/src/animation.d.ts +13 -0
- package/src/animation.js +31 -4
- package/src/base.js +12 -12
- package/src/browser.js +9 -9
- package/src/child-property.js +10 -10
- package/src/component-model.d.ts +1 -1
- package/src/component.d.ts +1 -1
- package/src/component.js +30 -11
- package/src/dom.js +10 -10
- package/src/draggable-model.d.ts +21 -8
- package/src/draggable.d.ts +31 -6
- package/src/draggable.js +118 -21
- package/src/event-handler.js +6 -6
- package/src/hijri-parser.js +1 -1
- package/src/intl/date-parser.js +4 -4
- package/src/intl/intl-base.js +4 -4
- package/src/intl/number-formatter.js +3 -3
- package/src/intl/parser-base.js +2 -2
- package/src/keyboard.js +4 -4
- package/src/l10n.js +5 -5
- package/src/module-loader.js +2 -2
- package/src/notify-property-change.js +28 -28
- package/src/observer.js +9 -9
- package/src/sanitize-helper.js +3 -3
- package/src/template-engine.js +14 -14
- package/src/template.js +3 -2
- package/src/touch.js +4 -0
- package/src/util.js +30 -28
- package/src/validate-lic.d.ts +4 -0
- package/src/validate-lic.js +107 -42
- package/styles/_all.scss +1 -2
- package/styles/_bootstrap4-definition.scss +0 -1
- package/styles/_fusionnew-dark-definition.scss +9 -0
- package/styles/_fusionnew-definition.scss +9 -0
- package/styles/_highcontrast-light-definition.scss +0 -1
- package/styles/_material-dark-definition.scss +1 -1
- package/styles/_material-definition.scss +1 -1
- package/styles/_material3-dark-definition.scss +10 -0
- package/styles/_material3-definition.scss +9 -0
- package/styles/_tailwind-dark-definition.scss +1 -1
- package/styles/_tailwind-definition.scss +1 -1
- package/styles/animation/_all.scss +31 -30
- package/styles/bootstrap-dark.css +157 -1
- package/styles/bootstrap.css +157 -1
- package/styles/bootstrap4.css +157 -1
- package/styles/bootstrap5-dark.css +157 -1
- package/styles/bootstrap5.css +157 -1
- package/styles/common/_core.scss +16 -4
- package/styles/definition/_bootstrap-dark.scss +114 -0
- package/styles/definition/_bootstrap.scss +115 -1
- package/styles/definition/_bootstrap4.scss +114 -0
- package/styles/definition/_bootstrap5-dark.scss +132 -24
- package/styles/definition/_bootstrap5.scss +124 -14
- package/styles/definition/_fabric-dark.scss +114 -0
- package/styles/definition/_fabric.scss +114 -0
- package/styles/definition/_fluent-dark.scss +144 -22
- package/styles/definition/_fluent.scss +135 -14
- package/styles/definition/_fusionnew-dark.scss +360 -0
- package/styles/definition/_fusionnew.scss +361 -0
- package/styles/definition/_highcontrast-light.scss +112 -0
- package/styles/definition/_highcontrast.scss +114 -0
- package/styles/definition/_material-dark.scss +114 -0
- package/styles/definition/_material.scss +117 -0
- package/styles/definition/_material3-dark.scss +421 -0
- package/styles/definition/_material3.scss +361 -0
- package/styles/definition/_tailwind-dark.scss +128 -17
- package/styles/definition/_tailwind.scss +130 -19
- package/styles/fabric-dark.css +161 -2
- package/styles/fabric.css +161 -2
- package/styles/fluent-dark.css +157 -1
- package/styles/fluent.css +157 -1
- package/styles/highcontrast-light.css +164 -2
- package/styles/highcontrast.css +164 -2
- package/styles/material-dark.css +157 -1
- package/styles/material.css +157 -1
- package/styles/offline-theme/material-dark.css +2625 -0
- package/styles/offline-theme/material.css +2625 -0
- package/styles/offline-theme/tailwind-dark.css +1899 -0
- package/styles/offline-theme/tailwind.css +1899 -0
- package/styles/tailwind-dark.css +157 -1
- package/styles/tailwind.css +157 -1
|
@@ -66,7 +66,7 @@ function getValue(nameSpace, obj) {
|
|
|
66
66
|
let value = obj;
|
|
67
67
|
const splits = nameSpace.replace(/\[/g, '.').replace(/\]/g, '').split('.');
|
|
68
68
|
for (let i = 0; i < splits.length && !isUndefined(value); i++) {
|
|
69
|
-
value = value[splits[i]];
|
|
69
|
+
value = value[splits[parseInt(i.toString(), 10)]];
|
|
70
70
|
}
|
|
71
71
|
return value;
|
|
72
72
|
}
|
|
@@ -90,14 +90,14 @@ function setValue(nameSpace, value, obj) {
|
|
|
90
90
|
const length = keys.length;
|
|
91
91
|
let key;
|
|
92
92
|
for (i = 0; i < length; i++) {
|
|
93
|
-
key = keys[i];
|
|
93
|
+
key = keys[parseInt(i.toString(), 10)];
|
|
94
94
|
if (i + 1 === length) {
|
|
95
|
-
fromObj[key] = value === undefined ? {} : value;
|
|
95
|
+
fromObj[`${key}`] = value === undefined ? {} : value;
|
|
96
96
|
}
|
|
97
|
-
else if (isNullOrUndefined(fromObj[key])) {
|
|
98
|
-
fromObj[key] = {};
|
|
97
|
+
else if (isNullOrUndefined(fromObj[`${key}`])) {
|
|
98
|
+
fromObj[`${key}`] = {};
|
|
99
99
|
}
|
|
100
|
-
fromObj = fromObj[key];
|
|
100
|
+
fromObj = fromObj[`${key}`];
|
|
101
101
|
}
|
|
102
102
|
return start;
|
|
103
103
|
}
|
|
@@ -111,12 +111,13 @@ function setValue(nameSpace, value, obj) {
|
|
|
111
111
|
*/
|
|
112
112
|
// eslint-disable-next-line
|
|
113
113
|
function deleteObject(obj, key) {
|
|
114
|
-
delete obj[key];
|
|
114
|
+
delete obj[`${key}`];
|
|
115
115
|
}
|
|
116
116
|
/**
|
|
117
117
|
*@private
|
|
118
118
|
*/
|
|
119
|
-
|
|
119
|
+
// eslint-disable-next-line
|
|
120
|
+
const containerObject = typeof window !== 'undefined' ? window : {};
|
|
120
121
|
/**
|
|
121
122
|
* Check weather the given argument is only object.
|
|
122
123
|
*
|
|
@@ -157,12 +158,12 @@ function merge(source, destination) {
|
|
|
157
158
|
const keys = Object.keys(destination);
|
|
158
159
|
const deepmerge = 'deepMerge';
|
|
159
160
|
for (const key of keys) {
|
|
160
|
-
if (!isNullOrUndefined(temrObj[deepmerge]) && (temrObj[deepmerge].indexOf(key) !== -1) &&
|
|
161
|
-
(isObject(tempProp[key]) || Array.isArray(tempProp[key]))) {
|
|
162
|
-
extend(temrObj[key], temrObj[key], tempProp[key], true);
|
|
161
|
+
if (!isNullOrUndefined(temrObj[`${deepmerge}`]) && (temrObj[`${deepmerge}`].indexOf(key) !== -1) &&
|
|
162
|
+
(isObject(tempProp[`${key}`]) || Array.isArray(tempProp[`${key}`]))) {
|
|
163
|
+
extend(temrObj[`${key}`], temrObj[`${key}`], tempProp[`${key}`], true);
|
|
163
164
|
}
|
|
164
165
|
else {
|
|
165
|
-
temrObj[key] = tempProp[key];
|
|
166
|
+
temrObj[`${key}`] = tempProp[`${key}`];
|
|
166
167
|
}
|
|
167
168
|
}
|
|
168
169
|
}
|
|
@@ -191,8 +192,8 @@ function extend(copied, first, second, deep) {
|
|
|
191
192
|
// eslint-disable-next-line
|
|
192
193
|
let obj1 = arguments[i];
|
|
193
194
|
Object.keys(obj1).forEach((key) => {
|
|
194
|
-
const src = result[key];
|
|
195
|
-
const copy = obj1[key];
|
|
195
|
+
const src = result[`${key}`];
|
|
196
|
+
const copy = obj1[`${key}`];
|
|
196
197
|
let clone;
|
|
197
198
|
const isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);
|
|
198
199
|
// eslint-disable-next-line
|
|
@@ -205,17 +206,18 @@ function extend(copied, first, second, deep) {
|
|
|
205
206
|
extend(clone, {}, copy, deep);
|
|
206
207
|
}
|
|
207
208
|
else {
|
|
208
|
-
result[key] = extend(clone, {}, copy, deep);
|
|
209
|
+
result[`${key}`] = extend(clone, {}, copy, deep);
|
|
209
210
|
}
|
|
210
211
|
}
|
|
211
212
|
else {
|
|
212
213
|
/* istanbul ignore next */
|
|
213
214
|
clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];
|
|
214
|
-
|
|
215
|
+
// eslint-disable-next-line
|
|
216
|
+
result[`${key}`] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));
|
|
215
217
|
}
|
|
216
218
|
}
|
|
217
219
|
else {
|
|
218
|
-
result[key] = copy;
|
|
220
|
+
result[`${key}`] = copy;
|
|
219
221
|
}
|
|
220
222
|
});
|
|
221
223
|
}
|
|
@@ -285,7 +287,7 @@ function queryParams(data) {
|
|
|
285
287
|
const array = [];
|
|
286
288
|
const keys = Object.keys(data);
|
|
287
289
|
for (const key of keys) {
|
|
288
|
-
array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[key]));
|
|
290
|
+
array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[`${key}`]));
|
|
289
291
|
}
|
|
290
292
|
return array.join('&');
|
|
291
293
|
}
|
|
@@ -355,7 +357,7 @@ function print(element, printWindow) {
|
|
|
355
357
|
const blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));
|
|
356
358
|
if (blinks.length) {
|
|
357
359
|
for (let l = 0, len = blinks.length; l < len; l++) {
|
|
358
|
-
links.push(blinks[l]);
|
|
360
|
+
links.push(blinks[parseInt(l.toString(), 10)]);
|
|
359
361
|
}
|
|
360
362
|
}
|
|
361
363
|
let reference = '';
|
|
@@ -364,7 +366,7 @@ function print(element, printWindow) {
|
|
|
364
366
|
}
|
|
365
367
|
div.appendChild(element.cloneNode(true));
|
|
366
368
|
for (let i = 0, len = links.length; i < len; i++) {
|
|
367
|
-
reference += links[i].outerHTML;
|
|
369
|
+
reference += links[parseInt(i.toString(), 10)].outerHTML;
|
|
368
370
|
}
|
|
369
371
|
printWindow.document.write('<!DOCTYPE html> <html><head>' + reference + '</head><body>' + div.innerHTML +
|
|
370
372
|
'<script> (function() { window.ready = true; })(); </script>' + '</body></html>');
|
|
@@ -421,8 +423,8 @@ function isBlazor() {
|
|
|
421
423
|
*/
|
|
422
424
|
function getElement(element) {
|
|
423
425
|
const xPath = 'xPath';
|
|
424
|
-
if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[xPath])) {
|
|
425
|
-
return document.evaluate(element[xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
|
|
426
|
+
if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[`${xPath}`])) {
|
|
427
|
+
return document.evaluate(element[`${xPath}`], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
|
|
426
428
|
}
|
|
427
429
|
return element;
|
|
428
430
|
}
|
|
@@ -438,8 +440,8 @@ function getElement(element) {
|
|
|
438
440
|
function getInstance(element, component) {
|
|
439
441
|
// eslint-disable-next-line
|
|
440
442
|
let elem = (typeof (element) === 'string') ? document.querySelector(element) : element;
|
|
441
|
-
if (elem[instances]) {
|
|
442
|
-
for (const inst of elem[instances]) {
|
|
443
|
+
if (elem[`${instances}`]) {
|
|
444
|
+
for (const inst of elem[`${instances}`]) {
|
|
443
445
|
if (inst instanceof component) {
|
|
444
446
|
return inst;
|
|
445
447
|
}
|
|
@@ -458,11 +460,11 @@ function getInstance(element, component) {
|
|
|
458
460
|
function addInstance(element, instance) {
|
|
459
461
|
// eslint-disable-next-line
|
|
460
462
|
let elem = (typeof (element) === 'string') ? document.querySelector(element) : element;
|
|
461
|
-
if (elem[instances]) {
|
|
462
|
-
elem[instances].push(instance);
|
|
463
|
+
if (elem[`${instances}`]) {
|
|
464
|
+
elem[`${instances}`].push(instance);
|
|
463
465
|
}
|
|
464
466
|
else {
|
|
465
|
-
elem[instances] = [instance];
|
|
467
|
+
elem[`${instances}`] = [instance];
|
|
466
468
|
}
|
|
467
469
|
}
|
|
468
470
|
/**
|
|
@@ -489,7 +491,7 @@ function uniqueID() {
|
|
|
489
491
|
function combineArray(num) {
|
|
490
492
|
let ret = '';
|
|
491
493
|
for (let i = 0; i < 5; i++) {
|
|
492
|
-
ret += (i ? ',' : '') + num[i];
|
|
494
|
+
ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];
|
|
493
495
|
}
|
|
494
496
|
return ret;
|
|
495
497
|
}
|
|
@@ -596,10 +598,10 @@ class ParserBase {
|
|
|
596
598
|
let ret = '';
|
|
597
599
|
for (let i = 0; i < len; i++) {
|
|
598
600
|
if (i !== len - 1) {
|
|
599
|
-
ret += val[i] + '|';
|
|
601
|
+
ret += val[parseInt(i.toString(), 10)] + '|';
|
|
600
602
|
}
|
|
601
603
|
else {
|
|
602
|
-
ret += val[i];
|
|
604
|
+
ret += val[parseInt(i.toString(), 10)];
|
|
603
605
|
}
|
|
604
606
|
}
|
|
605
607
|
return ret;
|
|
@@ -1009,7 +1011,7 @@ var HijriParser;
|
|
|
1009
1011
|
const tempDay = z - Math.floor(29.5001 * im - 29);
|
|
1010
1012
|
let i = 0;
|
|
1011
1013
|
for (; i < dateCorrection.length; i++) {
|
|
1012
|
-
if (dateCorrection[i] > modifiedJulianDate) {
|
|
1014
|
+
if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {
|
|
1013
1015
|
break;
|
|
1014
1016
|
}
|
|
1015
1017
|
}
|
|
@@ -1365,7 +1367,7 @@ const errorText = {
|
|
|
1365
1367
|
'ms': 'minimumSignificantDigits',
|
|
1366
1368
|
'ls': 'maximumSignificantDigits',
|
|
1367
1369
|
'mf': 'minimumFractionDigits',
|
|
1368
|
-
'lf': 'maximumFractionDigits'
|
|
1370
|
+
'lf': 'maximumFractionDigits'
|
|
1369
1371
|
};
|
|
1370
1372
|
const percentSign = 'percentSign';
|
|
1371
1373
|
const minusSign = 'minusSign';
|
|
@@ -1396,9 +1398,9 @@ class NumberFormat {
|
|
|
1396
1398
|
dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : IntlBase.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);
|
|
1397
1399
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1398
1400
|
dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :
|
|
1399
|
-
dOptions.numberMapper.numberSymbols[percentSign];
|
|
1401
|
+
dOptions.numberMapper.numberSymbols[`${percentSign}`];
|
|
1400
1402
|
dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :
|
|
1401
|
-
dOptions.numberMapper.numberSymbols[minusSign];
|
|
1403
|
+
dOptions.numberMapper.numberSymbols[`${minusSign}`];
|
|
1402
1404
|
const symbols = dOptions.numberMapper.numberSymbols;
|
|
1403
1405
|
if ((option.format) && !(IntlBase.formatRegex.test(option.format))) {
|
|
1404
1406
|
cOptions = IntlBase.customFormat(option.format, dOptions, dependable.numericObject);
|
|
@@ -1746,7 +1748,7 @@ class DateParser {
|
|
|
1746
1748
|
let numMapper = isBlazor() ? dependable.parserObject.numbers :
|
|
1747
1749
|
ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr));
|
|
1748
1750
|
for (let i = 0; i < length; i++) {
|
|
1749
|
-
const str = patternMatch[i];
|
|
1751
|
+
const str = patternMatch[parseInt(i.toString(), 10)];
|
|
1750
1752
|
const len = str.length;
|
|
1751
1753
|
const char = (str[0] === 'K') ? 'h' : str[0];
|
|
1752
1754
|
let isNumber;
|
|
@@ -1876,7 +1878,7 @@ class DateParser {
|
|
|
1876
1878
|
break;
|
|
1877
1879
|
}
|
|
1878
1880
|
if (canUpdate) {
|
|
1879
|
-
parseOptions.evalposition[charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };
|
|
1881
|
+
parseOptions.evalposition[`${charKey}`] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };
|
|
1880
1882
|
}
|
|
1881
1883
|
if (i === length - 1 && !isNullOrUndefined(regexString)) {
|
|
1882
1884
|
parseOptions.parserRegex = new RegExp('^' + regexString + '$', 'i');
|
|
@@ -1998,7 +2000,7 @@ class DateParser {
|
|
|
1998
2000
|
else {
|
|
1999
2001
|
const props = Object.keys(parseOptions.evalposition);
|
|
2000
2002
|
for (const prop of props) {
|
|
2001
|
-
const curObject = parseOptions.evalposition[prop];
|
|
2003
|
+
const curObject = parseOptions.evalposition[`${prop}`];
|
|
2002
2004
|
let matchString = matches[curObject.pos];
|
|
2003
2005
|
if (curObject.isNumber) {
|
|
2004
2006
|
// eslint-disable-next-line
|
|
@@ -2018,7 +2020,7 @@ class DateParser {
|
|
|
2018
2020
|
val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);
|
|
2019
2021
|
}
|
|
2020
2022
|
if (!isNullOrUndefined(val)) {
|
|
2021
|
-
retOptions[prop] = val;
|
|
2023
|
+
retOptions[`${prop}`] = val;
|
|
2022
2024
|
}
|
|
2023
2025
|
}
|
|
2024
2026
|
else {
|
|
@@ -2219,7 +2221,7 @@ class NumberParser {
|
|
|
2219
2221
|
}
|
|
2220
2222
|
}
|
|
2221
2223
|
static convertMaxFracDigits(value, options, ret, isNegative) {
|
|
2222
|
-
|
|
2224
|
+
const decimalSplitValue = value.split('.');
|
|
2223
2225
|
if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {
|
|
2224
2226
|
ret = +(ret.toFixed(options.custom ?
|
|
2225
2227
|
(isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));
|
|
@@ -2252,17 +2254,17 @@ class Observer {
|
|
|
2252
2254
|
}
|
|
2253
2255
|
const cntxt = context || this.context;
|
|
2254
2256
|
if (this.notExist(property)) {
|
|
2255
|
-
this.boundedEvents[property] = [{ handler: handler, context: cntxt }];
|
|
2257
|
+
this.boundedEvents[`${property}`] = [{ handler: handler, context: cntxt }];
|
|
2256
2258
|
return;
|
|
2257
2259
|
}
|
|
2258
2260
|
if (!isNullOrUndefined(id)) {
|
|
2259
2261
|
if (this.ranArray.indexOf(id) === -1) {
|
|
2260
2262
|
this.ranArray.push(id);
|
|
2261
|
-
this.boundedEvents[property].push({ handler: handler, context: cntxt, id: id });
|
|
2263
|
+
this.boundedEvents[`${property}`].push({ handler: handler, context: cntxt, id: id });
|
|
2262
2264
|
}
|
|
2263
2265
|
}
|
|
2264
|
-
else if (!this.isHandlerPresent(this.boundedEvents[property], handler)) {
|
|
2265
|
-
this.boundedEvents[property].push({ handler: handler, context: cntxt });
|
|
2266
|
+
else if (!this.isHandlerPresent(this.boundedEvents[`${property}`], handler)) {
|
|
2267
|
+
this.boundedEvents[`${property}`].push({ handler: handler, context: cntxt });
|
|
2266
2268
|
}
|
|
2267
2269
|
}
|
|
2268
2270
|
/**
|
|
@@ -2281,7 +2283,7 @@ class Observer {
|
|
|
2281
2283
|
if (handler) {
|
|
2282
2284
|
for (let i = 0; i < curObject.length; i++) {
|
|
2283
2285
|
if (id) {
|
|
2284
|
-
if (curObject[i].id === id) {
|
|
2286
|
+
if (curObject[parseInt(i.toString(), 10)].id === id) {
|
|
2285
2287
|
curObject.splice(i, 1);
|
|
2286
2288
|
const indexLocation = this.ranArray.indexOf(id);
|
|
2287
2289
|
if (indexLocation !== -1) {
|
|
@@ -2290,14 +2292,14 @@ class Observer {
|
|
|
2290
2292
|
break;
|
|
2291
2293
|
}
|
|
2292
2294
|
}
|
|
2293
|
-
else if (handler === curObject[i].handler) {
|
|
2295
|
+
else if (handler === curObject[parseInt(i.toString(), 10)].handler) {
|
|
2294
2296
|
curObject.splice(i, 1);
|
|
2295
2297
|
break;
|
|
2296
2298
|
}
|
|
2297
2299
|
}
|
|
2298
2300
|
}
|
|
2299
2301
|
else {
|
|
2300
|
-
delete this.boundedEvents[property];
|
|
2302
|
+
delete this.boundedEvents[`${property}`];
|
|
2301
2303
|
}
|
|
2302
2304
|
}
|
|
2303
2305
|
/**
|
|
@@ -2321,7 +2323,7 @@ class Observer {
|
|
|
2321
2323
|
}
|
|
2322
2324
|
const blazor = 'Blazor';
|
|
2323
2325
|
const curObject = getValue(property, this.boundedEvents).slice(0);
|
|
2324
|
-
if (window[blazor]) {
|
|
2326
|
+
if (window[`${blazor}`]) {
|
|
2325
2327
|
return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);
|
|
2326
2328
|
}
|
|
2327
2329
|
else {
|
|
@@ -2336,7 +2338,7 @@ class Observer {
|
|
|
2336
2338
|
blazorCallback(objs, argument, successHandler, errorHandler, index) {
|
|
2337
2339
|
const isTrigger = index === objs.length - 1;
|
|
2338
2340
|
if (index < objs.length) {
|
|
2339
|
-
const obj = objs[index];
|
|
2341
|
+
const obj = objs[parseInt(index.toString(), 10)];
|
|
2340
2342
|
const promise = obj.handler.call(obj.context, argument);
|
|
2341
2343
|
if (promise && typeof promise.then === 'function') {
|
|
2342
2344
|
if (!successHandler) {
|
|
@@ -3633,7 +3635,7 @@ var IntlBase;
|
|
|
3633
3635
|
function isCurrencyPercent(parts, actual, symbol) {
|
|
3634
3636
|
const options = { nlead: parts[0], nend: parts[1] };
|
|
3635
3637
|
for (let i = 0; i < 2; i++) {
|
|
3636
|
-
const part = parts[i];
|
|
3638
|
+
const part = parts[parseInt(i.toString(), 10)];
|
|
3637
3639
|
const loc = part.indexOf(actual);
|
|
3638
3640
|
if ((loc !== -1) && ((loc < part.indexOf('\'')) || (loc > part.lastIndexOf('\'')))) {
|
|
3639
3641
|
// eslint-disable-next-line
|
|
@@ -3852,7 +3854,7 @@ var IntlBase;
|
|
|
3852
3854
|
integer = hash + integer;
|
|
3853
3855
|
pattern = '';
|
|
3854
3856
|
for (let x = integer.length - 1; x > 0; x = x - 3) {
|
|
3855
|
-
pattern = ',' + integer[x - 2] + integer[x - 1] + integer[x] + pattern;
|
|
3857
|
+
pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;
|
|
3856
3858
|
}
|
|
3857
3859
|
pattern = pattern.slice(1);
|
|
3858
3860
|
return temp[1] ? (pattern + '.' + temp[1]) : pattern;
|
|
@@ -3873,9 +3875,9 @@ var IntlBase;
|
|
|
3873
3875
|
}
|
|
3874
3876
|
iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);
|
|
3875
3877
|
if (mapper) {
|
|
3876
|
-
firstDay = mapper[iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;
|
|
3878
|
+
firstDay = mapper[`${iCulture}`] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;
|
|
3877
3879
|
}
|
|
3878
|
-
return firstDayMapper[firstDay];
|
|
3880
|
+
return firstDayMapper[`${firstDay}`];
|
|
3879
3881
|
}
|
|
3880
3882
|
IntlBase.getWeekData = getWeekData;
|
|
3881
3883
|
/**
|
|
@@ -4122,7 +4124,7 @@ class Browser {
|
|
|
4122
4124
|
const keys = Object.keys(REGX_BROWSER);
|
|
4123
4125
|
let clientInfo = [];
|
|
4124
4126
|
for (const key of keys) {
|
|
4125
|
-
clientInfo = Browser.userAgent.match(REGX_BROWSER[key]);
|
|
4127
|
+
clientInfo = Browser.userAgent.match(REGX_BROWSER[`${key}`]);
|
|
4126
4128
|
if (clientInfo) {
|
|
4127
4129
|
browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());
|
|
4128
4130
|
browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);
|
|
@@ -4164,9 +4166,9 @@ class Browser {
|
|
|
4164
4166
|
isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'
|
|
4165
4167
|
}
|
|
4166
4168
|
};
|
|
4167
|
-
return (Browser.isPointer ? events[event].isPointer :
|
|
4168
|
-
(Browser.isTouch ? events[event].isTouch + (!Browser.isDevice ? ' ' + events[event].isDevice : '')
|
|
4169
|
-
: events[event].isDevice));
|
|
4169
|
+
return (Browser.isPointer ? events[`${event}`].isPointer :
|
|
4170
|
+
(Browser.isTouch ? events[`${event}`].isTouch + (!Browser.isDevice ? ' ' + events[`${event}`].isDevice : '')
|
|
4171
|
+
: events[`${event}`].isDevice));
|
|
4170
4172
|
}
|
|
4171
4173
|
/**
|
|
4172
4174
|
* To get the Touch start event from browser
|
|
@@ -4208,17 +4210,17 @@ class Browser {
|
|
|
4208
4210
|
* @returns {Object} ?
|
|
4209
4211
|
*/
|
|
4210
4212
|
static getValue(key, regX) {
|
|
4211
|
-
const browserDetails = window.browserDetails;
|
|
4212
|
-
if (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true) {
|
|
4213
|
+
const browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};
|
|
4214
|
+
if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true) {
|
|
4213
4215
|
browserDetails['isIos'] = true;
|
|
4214
4216
|
browserDetails['isDevice'] = true;
|
|
4215
4217
|
browserDetails['isTouch'] = true;
|
|
4216
4218
|
browserDetails['isPointer'] = true;
|
|
4217
4219
|
}
|
|
4218
|
-
if ('undefined' === typeof browserDetails[key]) {
|
|
4219
|
-
return browserDetails[key] = regX.test(Browser.userAgent);
|
|
4220
|
+
if ('undefined' === typeof browserDetails[`${key}`]) {
|
|
4221
|
+
return browserDetails[`${key}`] = regX.test(Browser.userAgent);
|
|
4220
4222
|
}
|
|
4221
|
-
return browserDetails[key];
|
|
4223
|
+
return browserDetails[`${key}`];
|
|
4222
4224
|
}
|
|
4223
4225
|
//Properties
|
|
4224
4226
|
/**
|
|
@@ -4447,15 +4449,15 @@ class EventHandler {
|
|
|
4447
4449
|
const event = eventName.split(' ');
|
|
4448
4450
|
for (let i = 0; i < event.length; i++) {
|
|
4449
4451
|
eventData.push({
|
|
4450
|
-
name: event[i],
|
|
4452
|
+
name: event[parseInt(i.toString(), 10)],
|
|
4451
4453
|
listener: listener,
|
|
4452
4454
|
debounce: debounceListener
|
|
4453
4455
|
});
|
|
4454
4456
|
if (Browser.isIE) {
|
|
4455
|
-
element.addEventListener(event[i], debounceListener);
|
|
4457
|
+
element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);
|
|
4456
4458
|
}
|
|
4457
4459
|
else {
|
|
4458
|
-
element.addEventListener(event[i], debounceListener, { passive: false });
|
|
4460
|
+
element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });
|
|
4459
4461
|
}
|
|
4460
4462
|
}
|
|
4461
4463
|
return debounceListener;
|
|
@@ -4476,7 +4478,7 @@ class EventHandler {
|
|
|
4476
4478
|
let debounceListener;
|
|
4477
4479
|
if (eventData && eventData.length !== 0) {
|
|
4478
4480
|
eventData.some((x, i) => {
|
|
4479
|
-
return x.name === event[j] && x.listener === listener ?
|
|
4481
|
+
return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?
|
|
4480
4482
|
(index = i, debounceListener = x.debounce, true) : false;
|
|
4481
4483
|
});
|
|
4482
4484
|
}
|
|
@@ -4484,7 +4486,7 @@ class EventHandler {
|
|
|
4484
4486
|
eventData.splice(index, 1);
|
|
4485
4487
|
}
|
|
4486
4488
|
if (debounceListener) {
|
|
4487
|
-
element.removeEventListener(event[j], debounceListener);
|
|
4489
|
+
element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);
|
|
4488
4490
|
}
|
|
4489
4491
|
}
|
|
4490
4492
|
}
|
|
@@ -4502,7 +4504,7 @@ class EventHandler {
|
|
|
4502
4504
|
// eslint-disable-next-line
|
|
4503
4505
|
copyData = extend([], copyData, eventData);
|
|
4504
4506
|
for (let i = 0; i < copyData.length; i++) {
|
|
4505
|
-
element.removeEventListener(copyData[i].name, copyData[i].debounce);
|
|
4507
|
+
element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);
|
|
4506
4508
|
eventData.shift();
|
|
4507
4509
|
}
|
|
4508
4510
|
}
|
|
@@ -4751,10 +4753,10 @@ function attributes(element, attributes) {
|
|
|
4751
4753
|
if (key === 'tabindex') {
|
|
4752
4754
|
iKey = 'tabIndex';
|
|
4753
4755
|
}
|
|
4754
|
-
ele.attributes[iKey] = attributes[key];
|
|
4756
|
+
ele.attributes[`${iKey}`] = attributes[`${key}`];
|
|
4755
4757
|
}
|
|
4756
4758
|
else {
|
|
4757
|
-
ele.setAttribute(key, attributes[key]);
|
|
4759
|
+
ele.setAttribute(key, attributes[`${key}`]);
|
|
4758
4760
|
}
|
|
4759
4761
|
}
|
|
4760
4762
|
return ele;
|
|
@@ -4800,20 +4802,20 @@ function querySelectId(selector) {
|
|
|
4800
4802
|
if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {
|
|
4801
4803
|
const idList = selector.split(',');
|
|
4802
4804
|
for (let i = 0; i < idList.length; i++) {
|
|
4803
|
-
const list = idList[i].split(' ');
|
|
4805
|
+
const list = idList[parseInt(i.toString(), 10)].split(' ');
|
|
4804
4806
|
for (let j = 0; j < list.length; j++) {
|
|
4805
|
-
if (list[j].indexOf('#') > -1) {
|
|
4806
|
-
if (!list[j].match(/\[.*\]/)) {
|
|
4807
|
-
const splitId = list[j].split('#');
|
|
4807
|
+
if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {
|
|
4808
|
+
if (!list[parseInt(j.toString(), 10)].match(/\[.*\]/)) {
|
|
4809
|
+
const splitId = list[parseInt(j.toString(), 10)].split('#');
|
|
4808
4810
|
if (splitId[1].match(/^\d/) || splitId[1].match(charRegex)) {
|
|
4809
|
-
const setId = list[j].split('.');
|
|
4811
|
+
const setId = list[parseInt(j.toString(), 10)].split('.');
|
|
4810
4812
|
setId[0] = setId[0].replace(/#/, '[id=\'') + '\']';
|
|
4811
|
-
list[j] = setId.join('.');
|
|
4813
|
+
list[parseInt(j.toString(), 10)] = setId.join('.');
|
|
4812
4814
|
}
|
|
4813
4815
|
}
|
|
4814
4816
|
}
|
|
4815
4817
|
}
|
|
4816
|
-
idList[i] = list.join(' ');
|
|
4818
|
+
idList[parseInt(i.toString(), 10)] = list.join(' ');
|
|
4817
4819
|
}
|
|
4818
4820
|
return idList.join(',');
|
|
4819
4821
|
}
|
|
@@ -4880,7 +4882,7 @@ function getAttributeOrDefault(element, property, value) {
|
|
|
4880
4882
|
element.setAttribute(property, value.toString());
|
|
4881
4883
|
}
|
|
4882
4884
|
else {
|
|
4883
|
-
element.attributes[property] = value;
|
|
4885
|
+
element.attributes[`${property}`] = value;
|
|
4884
4886
|
}
|
|
4885
4887
|
attrVal = value;
|
|
4886
4888
|
}
|
|
@@ -5065,15 +5067,15 @@ class Base {
|
|
|
5065
5067
|
static callChildDataBind(obj, parent) {
|
|
5066
5068
|
const keys = Object.keys(obj);
|
|
5067
5069
|
for (const key of keys) {
|
|
5068
|
-
if (parent[key] instanceof Array) {
|
|
5069
|
-
for (const obj of parent[key]) {
|
|
5070
|
+
if (parent[`${key}`] instanceof Array) {
|
|
5071
|
+
for (const obj of parent[`${key}`]) {
|
|
5070
5072
|
if (obj.dataBind !== undefined) {
|
|
5071
5073
|
obj.dataBind();
|
|
5072
5074
|
}
|
|
5073
5075
|
}
|
|
5074
5076
|
}
|
|
5075
5077
|
else {
|
|
5076
|
-
parent[key].dataBind();
|
|
5078
|
+
parent[`${key}`].dataBind();
|
|
5077
5079
|
}
|
|
5078
5080
|
}
|
|
5079
5081
|
}
|
|
@@ -5108,8 +5110,8 @@ class Base {
|
|
|
5108
5110
|
newChanges = newChanges ? newChanges : {};
|
|
5109
5111
|
extend(this.bulkChanges, {}, newChanges, true);
|
|
5110
5112
|
const sfBlazor = 'sfBlazor';
|
|
5111
|
-
if (this.allowServerDataBinding && window[sfBlazor].updateModel) {
|
|
5112
|
-
window[sfBlazor].updateModel(this);
|
|
5113
|
+
if (this.allowServerDataBinding && window[`${sfBlazor}`].updateModel) {
|
|
5114
|
+
window[`${sfBlazor}`].updateModel(this);
|
|
5113
5115
|
this.bulkChanges = {};
|
|
5114
5116
|
}
|
|
5115
5117
|
}
|
|
@@ -5118,14 +5120,14 @@ class Base {
|
|
|
5118
5120
|
if (isBlazor()) {
|
|
5119
5121
|
// tslint:disable-next-line:no-any
|
|
5120
5122
|
const newChanges = {};
|
|
5121
|
-
newChanges[key] = newValue;
|
|
5123
|
+
newChanges[`${key}`] = newValue;
|
|
5122
5124
|
this.serverDataBind(newChanges);
|
|
5123
5125
|
}
|
|
5124
5126
|
if (this.isProtectedOnChange) {
|
|
5125
5127
|
return;
|
|
5126
5128
|
}
|
|
5127
|
-
this.oldProperties[key] = oldValue;
|
|
5128
|
-
this.changedProperties[key] = newValue;
|
|
5129
|
+
this.oldProperties[`${key}`] = oldValue;
|
|
5130
|
+
this.changedProperties[`${key}`] = newValue;
|
|
5129
5131
|
this.finalUpdate();
|
|
5130
5132
|
this.finalUpdate = setImmediate(this.dataBind.bind(this));
|
|
5131
5133
|
}
|
|
@@ -5170,7 +5172,7 @@ class Base {
|
|
|
5170
5172
|
const handler = getValue(eventName, this);
|
|
5171
5173
|
if (handler) {
|
|
5172
5174
|
const blazor = 'Blazor';
|
|
5173
|
-
if (window[blazor]) {
|
|
5175
|
+
if (window[`${blazor}`]) {
|
|
5174
5176
|
const promise = handler.call(this, eventProp);
|
|
5175
5177
|
if (promise && typeof promise.then === 'function') {
|
|
5176
5178
|
if (!successHandler) {
|
|
@@ -5258,7 +5260,7 @@ function getComponent(elem, comp) {
|
|
|
5258
5260
|
let i;
|
|
5259
5261
|
const ele = typeof elem === 'string' ? document.getElementById(elem) : elem;
|
|
5260
5262
|
for (i = 0; i < ele.ej2_instances.length; i++) {
|
|
5261
|
-
instance = ele.ej2_instances[i];
|
|
5263
|
+
instance = ele.ej2_instances[parseInt(i.toString(), 10)];
|
|
5262
5264
|
if (typeof comp === 'string') {
|
|
5263
5265
|
const compName = instance.getModuleName();
|
|
5264
5266
|
if (comp === compName) {
|
|
@@ -5286,9 +5288,9 @@ function removeChildInstance(element) {
|
|
|
5286
5288
|
// tslint:disable-next-line:no-any
|
|
5287
5289
|
const childEle = [].slice.call(element.getElementsByClassName('e-control'));
|
|
5288
5290
|
for (let i = 0; i < childEle.length; i++) {
|
|
5289
|
-
const compName = childEle[i].classList[1].split('e-')[1];
|
|
5291
|
+
const compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];
|
|
5290
5292
|
// tslint:disable-next-line:no-any
|
|
5291
|
-
const compInstance = getComponent(childEle[i], compName);
|
|
5293
|
+
const compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);
|
|
5292
5294
|
if (!isUndefined(compInstance)) {
|
|
5293
5295
|
compInstance.destroy();
|
|
5294
5296
|
}
|
|
@@ -5308,9 +5310,9 @@ function removeChildInstance(element) {
|
|
|
5308
5310
|
function getObject(instance, curKey, defaultValue, type) {
|
|
5309
5311
|
// eslint-disable-next-line
|
|
5310
5312
|
if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {
|
|
5311
|
-
instance.properties[curKey] = createInstance(type, [instance, curKey, defaultValue]);
|
|
5313
|
+
instance.properties[`${curKey}`] = createInstance(type, [instance, curKey, defaultValue]);
|
|
5312
5314
|
}
|
|
5313
|
-
return instance.properties[curKey];
|
|
5315
|
+
return instance.properties[`${curKey}`];
|
|
5314
5316
|
}
|
|
5315
5317
|
/**
|
|
5316
5318
|
* Returns object array
|
|
@@ -5330,15 +5332,15 @@ function getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactor
|
|
|
5330
5332
|
for (let i = 0; i < len; i++) {
|
|
5331
5333
|
let curType = type;
|
|
5332
5334
|
if (isFactory) {
|
|
5333
|
-
curType = type(defaultValue[i], instance);
|
|
5335
|
+
curType = type(defaultValue[parseInt(i.toString(), 10)], instance);
|
|
5334
5336
|
}
|
|
5335
5337
|
if (isSetter) {
|
|
5336
5338
|
const inst = createInstance(curType, [instance, curKey, {}, true]);
|
|
5337
|
-
inst.setProperties(defaultValue[i], true);
|
|
5339
|
+
inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);
|
|
5338
5340
|
result.push(inst);
|
|
5339
5341
|
}
|
|
5340
5342
|
else {
|
|
5341
|
-
result.push(createInstance(curType, [instance, curKey, defaultValue[i], false]));
|
|
5343
|
+
result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));
|
|
5342
5344
|
}
|
|
5343
5345
|
}
|
|
5344
5346
|
return result;
|
|
@@ -5354,9 +5356,9 @@ function propertyGetter(defaultValue, curKey) {
|
|
|
5354
5356
|
return function () {
|
|
5355
5357
|
// eslint-disable-next-line
|
|
5356
5358
|
if (!this.properties.hasOwnProperty(curKey)) {
|
|
5357
|
-
this.properties[curKey] = defaultValue;
|
|
5359
|
+
this.properties[`${curKey}`] = defaultValue;
|
|
5358
5360
|
}
|
|
5359
|
-
return this.properties[curKey];
|
|
5361
|
+
return this.properties[`${curKey}`];
|
|
5360
5362
|
};
|
|
5361
5363
|
}
|
|
5362
5364
|
/**
|
|
@@ -5368,11 +5370,11 @@ function propertyGetter(defaultValue, curKey) {
|
|
|
5368
5370
|
*/
|
|
5369
5371
|
function propertySetter(defaultValue, curKey) {
|
|
5370
5372
|
return function (newValue) {
|
|
5371
|
-
if (this.properties[curKey] !== newValue) {
|
|
5373
|
+
if (this.properties[`${curKey}`] !== newValue) {
|
|
5372
5374
|
// eslint-disable-next-line
|
|
5373
5375
|
let oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;
|
|
5374
5376
|
this.saveChanges(curKey, newValue, oldVal);
|
|
5375
|
-
this.properties[curKey] = newValue;
|
|
5377
|
+
this.properties[`${curKey}`] = newValue;
|
|
5376
5378
|
}
|
|
5377
5379
|
};
|
|
5378
5380
|
}
|
|
@@ -5416,7 +5418,7 @@ function complexFactoryGetter(defaultValue, curKey, type) {
|
|
|
5416
5418
|
const curType = type({});
|
|
5417
5419
|
// eslint-disable-next-line
|
|
5418
5420
|
if (this.properties.hasOwnProperty(curKey)) {
|
|
5419
|
-
return this.properties[curKey];
|
|
5421
|
+
return this.properties[`${curKey}`];
|
|
5420
5422
|
}
|
|
5421
5423
|
else {
|
|
5422
5424
|
return getObject(this, curKey, defaultValue, curType);
|
|
@@ -5448,7 +5450,7 @@ function complexArrayGetter(defaultValue, curKey, type) {
|
|
|
5448
5450
|
// eslint-disable-next-line
|
|
5449
5451
|
if (!this.properties.hasOwnProperty(curKey)) {
|
|
5450
5452
|
const defCollection = getObjectArray(this, curKey, defaultValue, type, false);
|
|
5451
|
-
this.properties[curKey] = defCollection;
|
|
5453
|
+
this.properties[`${curKey}`] = defCollection;
|
|
5452
5454
|
}
|
|
5453
5455
|
const ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)
|
|
5454
5456
|
|| this.ignoreCollectionWatch);
|
|
@@ -5456,17 +5458,17 @@ function complexArrayGetter(defaultValue, curKey, type) {
|
|
|
5456
5458
|
if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {
|
|
5457
5459
|
['push', 'pop'].forEach((extendFunc) => {
|
|
5458
5460
|
const descriptor = {
|
|
5459
|
-
value: complexArrayDefinedCallback(extendFunc, curKey, type, this.properties[curKey]).bind(this),
|
|
5461
|
+
value: complexArrayDefinedCallback(extendFunc, curKey, type, this.properties[`${curKey}`]).bind(this),
|
|
5460
5462
|
configurable: true
|
|
5461
5463
|
};
|
|
5462
|
-
Object.defineProperty(this.properties[curKey], extendFunc, descriptor);
|
|
5464
|
+
Object.defineProperty(this.properties[`${curKey}`], extendFunc, descriptor);
|
|
5463
5465
|
});
|
|
5464
5466
|
}
|
|
5465
5467
|
// eslint-disable-next-line
|
|
5466
5468
|
if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {
|
|
5467
|
-
Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });
|
|
5469
|
+
Object.defineProperty(this.properties[`${curKey}`], 'isComplexArray', { value: true });
|
|
5468
5470
|
}
|
|
5469
|
-
return this.properties[curKey];
|
|
5471
|
+
return this.properties[`${curKey}`];
|
|
5470
5472
|
};
|
|
5471
5473
|
}
|
|
5472
5474
|
/**
|
|
@@ -5483,7 +5485,7 @@ function complexArraySetter(defaultValue, curKey, type) {
|
|
|
5483
5485
|
const newValCollection = getObjectArray(this, curKey, newValue, type, true);
|
|
5484
5486
|
this.isComplexArraySetter = false;
|
|
5485
5487
|
this.saveChanges(curKey, newValCollection, oldValueCollection);
|
|
5486
|
-
this.properties[curKey] = newValCollection;
|
|
5488
|
+
this.properties[`${curKey}`] = newValCollection;
|
|
5487
5489
|
};
|
|
5488
5490
|
}
|
|
5489
5491
|
/**
|
|
@@ -5499,7 +5501,7 @@ function complexArrayFactorySetter(defaultValue, curKey, type) {
|
|
|
5499
5501
|
const oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;
|
|
5500
5502
|
const newValCollection = getObjectArray(this, curKey, newValue, type, true, true);
|
|
5501
5503
|
this.saveChanges(curKey, newValCollection, oldValueCollection);
|
|
5502
|
-
this.properties[curKey] = newValCollection;
|
|
5504
|
+
this.properties[`${curKey}`] = newValCollection;
|
|
5503
5505
|
};
|
|
5504
5506
|
}
|
|
5505
5507
|
/**
|
|
@@ -5515,9 +5517,9 @@ function complexArrayFactoryGetter(defaultValue, curKey, type) {
|
|
|
5515
5517
|
// eslint-disable-next-line
|
|
5516
5518
|
if (!this.properties.hasOwnProperty(curKey)) {
|
|
5517
5519
|
const defCollection = getObjectArray(this, curKey, defaultValue, curType, false);
|
|
5518
|
-
this.properties[curKey] = defCollection;
|
|
5520
|
+
this.properties[`${curKey}`] = defCollection;
|
|
5519
5521
|
}
|
|
5520
|
-
return this.properties[curKey];
|
|
5522
|
+
return this.properties[`${curKey}`];
|
|
5521
5523
|
};
|
|
5522
5524
|
}
|
|
5523
5525
|
/**
|
|
@@ -5535,13 +5537,13 @@ function complexArrayDefinedCallback(dFunc, curKey, type, prop) {
|
|
|
5535
5537
|
switch (dFunc) {
|
|
5536
5538
|
case 'push':
|
|
5537
5539
|
for (let i = 0; i < newValue.length; i++) {
|
|
5538
|
-
Array.prototype[dFunc].apply(prop, [newValue[i]]);
|
|
5539
|
-
const model = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);
|
|
5540
|
-
this.serverDataBind(model, newValue[i], false, dFunc);
|
|
5540
|
+
Array.prototype[`${dFunc}`].apply(prop, [newValue[parseInt(i.toString(), 10)]]);
|
|
5541
|
+
const model = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);
|
|
5542
|
+
this.serverDataBind(model, newValue[parseInt(i.toString(), 10)], false, dFunc);
|
|
5541
5543
|
}
|
|
5542
5544
|
break;
|
|
5543
5545
|
case 'pop':
|
|
5544
|
-
Array.prototype[dFunc].apply(prop);
|
|
5546
|
+
Array.prototype[`${dFunc}`].apply(prop);
|
|
5545
5547
|
// eslint-disable-next-line
|
|
5546
5548
|
let model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);
|
|
5547
5549
|
this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);
|
|
@@ -5562,10 +5564,10 @@ function getArrayModel(keyString, value, isControlParent, arrayFunction) {
|
|
|
5562
5564
|
let modelObject = keyString;
|
|
5563
5565
|
if (isControlParent) {
|
|
5564
5566
|
modelObject = {};
|
|
5565
|
-
modelObject[keyString] = value;
|
|
5567
|
+
modelObject[`${keyString}`] = value;
|
|
5566
5568
|
if (value && typeof value === 'object') {
|
|
5567
5569
|
const action = 'ejsAction';
|
|
5568
|
-
modelObject[keyString][action] = arrayFunction;
|
|
5570
|
+
modelObject[`${keyString}`][`${action}`] = arrayFunction;
|
|
5569
5571
|
}
|
|
5570
5572
|
}
|
|
5571
5573
|
return modelObject;
|
|
@@ -5706,14 +5708,14 @@ function Event$1() {
|
|
|
5706
5708
|
return (target, key) => {
|
|
5707
5709
|
const eventDescriptor = {
|
|
5708
5710
|
set: function (newValue) {
|
|
5709
|
-
const oldValue = this.properties[key];
|
|
5711
|
+
const oldValue = this.properties[`${key}`];
|
|
5710
5712
|
if (oldValue !== newValue) {
|
|
5711
5713
|
const finalContext = getParentContext(this, key);
|
|
5712
5714
|
if (isUndefined(oldValue) === false) {
|
|
5713
5715
|
finalContext.context.removeEventListener(finalContext.prefix, oldValue);
|
|
5714
5716
|
}
|
|
5715
5717
|
finalContext.context.addEventListener(finalContext.prefix, newValue);
|
|
5716
|
-
this.properties[key] = newValue;
|
|
5718
|
+
this.properties[`${key}`] = newValue;
|
|
5717
5719
|
}
|
|
5718
5720
|
},
|
|
5719
5721
|
get: propertyGetter(undefined, key),
|
|
@@ -5801,7 +5803,7 @@ function getBuilderProperties(component) {
|
|
|
5801
5803
|
};
|
|
5802
5804
|
const rex = /complex/;
|
|
5803
5805
|
for (const key of Object.keys(component.prototype.propList)) {
|
|
5804
|
-
for (const prop of component.prototype.propList[key]) {
|
|
5806
|
+
for (const prop of component.prototype.propList[`${key}`]) {
|
|
5805
5807
|
if (rex.test(key)) {
|
|
5806
5808
|
component.prototype.builderObject[prop.propertyName] = function (value) {
|
|
5807
5809
|
const childType = {};
|
|
@@ -5964,11 +5966,21 @@ let Animation = Animation_1 = class Animation extends Base {
|
|
|
5964
5966
|
* @returns {void}
|
|
5965
5967
|
*/
|
|
5966
5968
|
static delayAnimation(model) {
|
|
5967
|
-
if (
|
|
5968
|
-
|
|
5969
|
+
if (animationMode === 'Disable') {
|
|
5970
|
+
if (model.begin) {
|
|
5971
|
+
model.begin.call(this, model);
|
|
5972
|
+
}
|
|
5973
|
+
if (model.end) {
|
|
5974
|
+
model.end.call(this, model);
|
|
5975
|
+
}
|
|
5969
5976
|
}
|
|
5970
5977
|
else {
|
|
5971
|
-
|
|
5978
|
+
if (model.delay) {
|
|
5979
|
+
setTimeout(() => { Animation_1.applyAnimation(model); }, model.delay);
|
|
5980
|
+
}
|
|
5981
|
+
else {
|
|
5982
|
+
Animation_1.applyAnimation(model);
|
|
5983
|
+
}
|
|
5972
5984
|
}
|
|
5973
5985
|
}
|
|
5974
5986
|
/**
|
|
@@ -6128,7 +6140,9 @@ Animation = Animation_1 = __decorate([
|
|
|
6128
6140
|
function rippleEffect(element, rippleOptions, done) {
|
|
6129
6141
|
const rippleModel = getRippleModel(rippleOptions);
|
|
6130
6142
|
if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {
|
|
6131
|
-
return (() => {
|
|
6143
|
+
return (() => {
|
|
6144
|
+
// do nothing.
|
|
6145
|
+
});
|
|
6132
6146
|
}
|
|
6133
6147
|
element.setAttribute('data-ripple', 'true');
|
|
6134
6148
|
EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });
|
|
@@ -6270,6 +6284,21 @@ function enableRipple(isRipple) {
|
|
|
6270
6284
|
isRippleEnabled = isRipple;
|
|
6271
6285
|
return isRippleEnabled;
|
|
6272
6286
|
}
|
|
6287
|
+
/**
|
|
6288
|
+
* Defines the Modes of Global animation.
|
|
6289
|
+
*
|
|
6290
|
+
* @private
|
|
6291
|
+
*/
|
|
6292
|
+
let animationMode = '';
|
|
6293
|
+
/**
|
|
6294
|
+
* Method for set the Global animation modes for Syncfusion Blazor components.
|
|
6295
|
+
*
|
|
6296
|
+
* @param {string} value - Specifies the animation mode.
|
|
6297
|
+
* @returns {void}
|
|
6298
|
+
*/
|
|
6299
|
+
function setGlobalAnimation(value) {
|
|
6300
|
+
animationMode = value;
|
|
6301
|
+
}
|
|
6273
6302
|
|
|
6274
6303
|
/**
|
|
6275
6304
|
* Module loading operations
|
|
@@ -6297,10 +6326,10 @@ class ModuleLoader {
|
|
|
6297
6326
|
this.clearUnusedModule(requiredModules);
|
|
6298
6327
|
}
|
|
6299
6328
|
for (let i = 0; i < reqLength; i++) {
|
|
6300
|
-
const modl = requiredModules[i];
|
|
6329
|
+
const modl = requiredModules[parseInt(i.toString(), 10)];
|
|
6301
6330
|
for (const module of moduleList) {
|
|
6302
6331
|
const modName = modl.member;
|
|
6303
|
-
if (module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {
|
|
6332
|
+
if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {
|
|
6304
6333
|
const moduleObject = createInstance(module, modl.args);
|
|
6305
6334
|
const memberName = this.getMemberName(modName);
|
|
6306
6335
|
if (modl.isProperty) {
|
|
@@ -6403,10 +6432,10 @@ class ChildProperty {
|
|
|
6403
6432
|
*/
|
|
6404
6433
|
updateChange(val, propName) {
|
|
6405
6434
|
if (val === true) {
|
|
6406
|
-
this.parentObj.childChangedProperties[propName] = val;
|
|
6435
|
+
this.parentObj.childChangedProperties[`${propName}`] = val;
|
|
6407
6436
|
}
|
|
6408
6437
|
else {
|
|
6409
|
-
delete this.parentObj.childChangedProperties[propName];
|
|
6438
|
+
delete this.parentObj.childChangedProperties[`${propName}`];
|
|
6410
6439
|
}
|
|
6411
6440
|
if (this.parentObj.updateChange) {
|
|
6412
6441
|
this.parentObj.updateChange(val, this.parentObj.propName);
|
|
@@ -6494,8 +6523,8 @@ class ChildProperty {
|
|
|
6494
6523
|
if (!restrictServerDataBind) {
|
|
6495
6524
|
this.serverDataBind(key, newValue, true);
|
|
6496
6525
|
}
|
|
6497
|
-
this.oldProperties[key] = oldValue;
|
|
6498
|
-
this.changedProperties[key] = newValue;
|
|
6526
|
+
this.oldProperties[`${key}`] = oldValue;
|
|
6527
|
+
this.changedProperties[`${key}`] = newValue;
|
|
6499
6528
|
this.updateChange(true, this.propName);
|
|
6500
6529
|
this.finalUpdate();
|
|
6501
6530
|
this.updateTimeOut();
|
|
@@ -6511,19 +6540,19 @@ class ChildProperty {
|
|
|
6511
6540
|
parent = newChanges;
|
|
6512
6541
|
for (let i = 0; i < complexKeys.length; i++) {
|
|
6513
6542
|
const isFinal = i === complexKeys.length - 1;
|
|
6514
|
-
parent[complexKeys[i]] = isFinal ? value : {};
|
|
6515
|
-
parent = isFinal ? parent : parent[complexKeys[i]];
|
|
6543
|
+
parent[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};
|
|
6544
|
+
parent = isFinal ? parent : parent[complexKeys[parseInt(i.toString(), 10)]];
|
|
6516
6545
|
}
|
|
6517
6546
|
}
|
|
6518
6547
|
else {
|
|
6519
|
-
newChanges[parentKey] = {};
|
|
6520
|
-
parent = newChanges[parentKey];
|
|
6521
|
-
newChanges[parentKey][key] = value;
|
|
6548
|
+
newChanges[`${parentKey}`] = {};
|
|
6549
|
+
parent = newChanges[`${parentKey}`];
|
|
6550
|
+
newChanges[`${parentKey}`][`${key}`] = value;
|
|
6522
6551
|
}
|
|
6523
6552
|
/* istanbul ignore next */
|
|
6524
6553
|
if (this.isParentArray) {
|
|
6525
6554
|
const actionProperty = 'ejsAction';
|
|
6526
|
-
parent[actionProperty] = action ? action : 'none';
|
|
6555
|
+
parent[`${actionProperty}`] = action ? action : 'none';
|
|
6527
6556
|
}
|
|
6528
6557
|
this.controlParent.serverDataBind(newChanges);
|
|
6529
6558
|
}
|
|
@@ -6547,61 +6576,86 @@ class ChildProperty {
|
|
|
6547
6576
|
}
|
|
6548
6577
|
}
|
|
6549
6578
|
|
|
6579
|
+
let componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];
|
|
6550
6580
|
const bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,
|
|
6551
6581
|
111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,
|
|
6552
6582
|
105, 100, 97, 116, 101, 100];
|
|
6583
|
+
let accountURL;
|
|
6553
6584
|
/**
|
|
6554
6585
|
* License validation module
|
|
6586
|
+
*
|
|
6555
6587
|
* @private
|
|
6556
6588
|
*/
|
|
6557
6589
|
class LicenseValidator {
|
|
6558
6590
|
constructor(key) {
|
|
6559
6591
|
this.isValidated = false;
|
|
6560
|
-
this.
|
|
6592
|
+
this.isLicensed = true;
|
|
6593
|
+
this.version = '20.4';
|
|
6561
6594
|
this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;
|
|
6562
6595
|
this.errors = {
|
|
6563
|
-
noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +
|
|
6564
|
-
'
|
|
6565
|
-
|
|
6566
|
-
'
|
|
6567
|
-
|
|
6568
|
-
|
|
6569
|
-
|
|
6570
|
-
'href="https://help.syncfusion.com/common/essential-studio/licensing/licensing-errors#trial-expired">help topic</a> for more information.',
|
|
6571
|
-
versionMismatched: 'The included Syncfusion license (v##LicenseVersion) is invalid for version ' +
|
|
6572
|
-
'##Requireversion. Please refer to this <a style="color:yellow;text-decoration:none;" ' +
|
|
6573
|
-
'href="https://help.syncfusion.com/es/licensing/version-mismatch/">help topic</a> for more information.',
|
|
6574
|
-
platformMismatched: 'The included Syncfusion license is invalid (Platform mismatch). Please refer' +
|
|
6575
|
-
' to this <a style="color:yellow;text-decoration:none;" ' +
|
|
6576
|
-
'href="https://help.syncfusion.com/common/essential-studio/licensing/licensing-errors#platform-mismatch">help topic</a> for more information.',
|
|
6577
|
-
invalidKey: 'The included Syncfusion license is invalid. Please refer to this ' +
|
|
6578
|
-
'<a style="color:yellow;text-decoration:none;" ' +
|
|
6579
|
-
'href="https://help.syncfusion.com/common/essential-studio/licensing/licensing-errors#invalid-key">help topic</a> for more information.'
|
|
6596
|
+
noLicense: '<span>This application was built using a trial version of Syncfusion Essential Studio.' +
|
|
6597
|
+
' To remove the license validation message permanently, a valid license key must be included.</span>',
|
|
6598
|
+
trailExpired: '<span>This application was built using a trial version of Syncfusion Essential Studio.' +
|
|
6599
|
+
' To remove the license validation message permanently, a valid license key must be included.</span>',
|
|
6600
|
+
versionMismatched: '<span>The included Syncfusion license key is invalid.</span>',
|
|
6601
|
+
platformMismatched: '<span>The included Syncfusion license key is invalid.</span>',
|
|
6602
|
+
invalidKey: '<span>The included Syncfusion license key is invalid.</span>'
|
|
6580
6603
|
};
|
|
6581
6604
|
/**
|
|
6582
6605
|
* To manage licensing operation.
|
|
6583
6606
|
*/
|
|
6584
6607
|
this.manager = (() => {
|
|
6585
6608
|
let licKey = null;
|
|
6609
|
+
/**
|
|
6610
|
+
* Sets the license key.
|
|
6611
|
+
*
|
|
6612
|
+
* @param {string} key - Specifies the license key.
|
|
6613
|
+
* @returns {void}
|
|
6614
|
+
*/
|
|
6586
6615
|
function set(key) { licKey = key; }
|
|
6616
|
+
/**
|
|
6617
|
+
* Gets the license key.
|
|
6618
|
+
*
|
|
6619
|
+
* @returns {string} -Gets the license key.
|
|
6620
|
+
*/
|
|
6587
6621
|
function get() { return licKey; }
|
|
6588
6622
|
return {
|
|
6589
6623
|
setKey: set,
|
|
6590
6624
|
getKey: get
|
|
6591
6625
|
};
|
|
6592
6626
|
})();
|
|
6627
|
+
/**
|
|
6628
|
+
* To manage npx licensing operation.
|
|
6629
|
+
*/
|
|
6630
|
+
this.npxManager = (() => {
|
|
6631
|
+
const npxLicKey = 'npxKeyReplace';
|
|
6632
|
+
/**
|
|
6633
|
+
* Gets the license key.
|
|
6634
|
+
*
|
|
6635
|
+
* @returns {string} - Gets the license key.
|
|
6636
|
+
*/
|
|
6637
|
+
function get() { return npxLicKey; }
|
|
6638
|
+
return {
|
|
6639
|
+
getKey: get
|
|
6640
|
+
};
|
|
6641
|
+
})();
|
|
6593
6642
|
this.manager.setKey(key);
|
|
6594
6643
|
}
|
|
6595
6644
|
/**
|
|
6596
6645
|
* To validate the provided license key.
|
|
6597
|
-
|
|
6646
|
+
*/
|
|
6598
6647
|
validate() {
|
|
6648
|
+
let contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,
|
|
6649
|
+
108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];
|
|
6650
|
+
let URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,
|
|
6651
|
+
99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];
|
|
6599
6652
|
if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {
|
|
6600
6653
|
let validateMsg;
|
|
6601
|
-
|
|
6602
|
-
|
|
6654
|
+
let validateURL;
|
|
6655
|
+
if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {
|
|
6656
|
+
const result = this.getInfoFromKey();
|
|
6603
6657
|
if (result && result.length) {
|
|
6604
|
-
for (
|
|
6658
|
+
for (const res of result) {
|
|
6605
6659
|
if (!this.platform.test(res.platform) || res.invalidPlatform) {
|
|
6606
6660
|
validateMsg = this.errors.platformMismatched;
|
|
6607
6661
|
}
|
|
@@ -6611,8 +6665,8 @@ class LicenseValidator {
|
|
|
6611
6665
|
validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');
|
|
6612
6666
|
}
|
|
6613
6667
|
else if (res.expiryDate) {
|
|
6614
|
-
|
|
6615
|
-
|
|
6668
|
+
const expDate = new Date(res.expiryDate);
|
|
6669
|
+
const currDate = new Date();
|
|
6616
6670
|
if (expDate !== currDate && expDate < currDate) {
|
|
6617
6671
|
validateMsg = this.errors.trailExpired;
|
|
6618
6672
|
}
|
|
@@ -6627,28 +6681,44 @@ class LicenseValidator {
|
|
|
6627
6681
|
}
|
|
6628
6682
|
}
|
|
6629
6683
|
else {
|
|
6630
|
-
|
|
6631
|
-
|
|
6632
|
-
|
|
6633
|
-
|
|
6634
|
-
|
|
6635
|
-
|
|
6636
|
-
|
|
6637
|
-
|
|
6638
|
-
|
|
6639
|
-
|
|
6640
|
-
|
|
6641
|
-
|
|
6642
|
-
|
|
6643
|
-
|
|
6644
|
-
|
|
6684
|
+
let licenseContent = getValue(convertToChar(contentKey), containerObject);
|
|
6685
|
+
validateURL = getValue(convertToChar(URLKey), containerObject);
|
|
6686
|
+
if (licenseContent && licenseContent !== '') {
|
|
6687
|
+
validateMsg = licenseContent;
|
|
6688
|
+
}
|
|
6689
|
+
else {
|
|
6690
|
+
validateMsg = this.errors.noLicense;
|
|
6691
|
+
}
|
|
6692
|
+
}
|
|
6693
|
+
if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {
|
|
6694
|
+
accountURL = (validateURL && validateURL !== '') ? validateURL : "https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjAuNA==";
|
|
6695
|
+
const errorDiv = createElement('div', {
|
|
6696
|
+
innerHTML: `<img src='data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE5OV80KSI+CjxwYXRoIGQ9Ik0xMiAyMUMxNi45NzA2IDIxIDIxIDE2Ljk3MDYgMjEgMTJDMjEgNy4wMjk0NCAxNi45NzA2IDMgMTIgM0M3LjAyOTQ0IDMgMyA3LjAyOTQ0IDMgMTJDMyAxNi45NzA2IDcuMDI5NDQgMjEgMTIgMjFaIiBzdHJva2U9IiM3MzczNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS4yNSAxMS4yNUgxMlYxNi41SDEyLjc1IiBmaWxsPSIjNjE2MDYzIi8+CjxwYXRoIGQ9Ik0xMS4yNSAxMS4yNUgxMlYxNi41SDEyLjc1IiBzdHJva2U9IiM3MzczNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS44MTI1IDlDMTIuNDMzOCA5IDEyLjkzNzUgOC40OTYzMiAxMi45Mzc1IDcuODc1QzEyLjkzNzUgNy4yNTM2OCAxMi40MzM4IDYuNzUgMTEuODEyNSA2Ljc1QzExLjE5MTIgNi43NSAxMC42ODc1IDcuMjUzNjggMTAuNjg3NSA3Ljg3NUMxMC42ODc1IDguNDk2MzIgMTEuMTkxMiA5IDExLjgxMjUgOVoiIGZpbGw9IiM3MzczNzMiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xOTlfNCI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K' style="top: 6px;
|
|
6697
|
+
position: absolute;
|
|
6698
|
+
left: 16px;
|
|
6699
|
+
width: 24px;
|
|
6700
|
+
height: 24px;"/>` + validateMsg + ' ' + '<a style="text-decoration: none;color: #0D6EFD;font-weight: 500;" href=' + accountURL + '>Claim your free account</a>'
|
|
6645
6701
|
});
|
|
6646
|
-
errorDiv.setAttribute('
|
|
6702
|
+
errorDiv.setAttribute('style', `position: fixed;
|
|
6703
|
+
top: 10px;
|
|
6704
|
+
left: 10px;
|
|
6705
|
+
right: 10px;
|
|
6706
|
+
font-size: 14px;
|
|
6707
|
+
background: #EEF2FF;
|
|
6708
|
+
color: #222222;
|
|
6709
|
+
z-index: 999999999;
|
|
6710
|
+
text-align: left;
|
|
6711
|
+
border: 1px solid #EEEEEE;
|
|
6712
|
+
padding: 10px 11px 10px 50px;
|
|
6713
|
+
border-radius: 8px;
|
|
6714
|
+
font-family: Helvetica Neue, Helvetica, Arial;`);
|
|
6647
6715
|
document.body.appendChild(errorDiv);
|
|
6716
|
+
this.isLicensed = false;
|
|
6648
6717
|
}
|
|
6649
6718
|
this.isValidated = true;
|
|
6650
6719
|
setValue(convertToChar(bypassKey), this.isValidated, containerObject);
|
|
6651
6720
|
}
|
|
6721
|
+
return this.isLicensed;
|
|
6652
6722
|
}
|
|
6653
6723
|
getDecryptedData(key) {
|
|
6654
6724
|
try {
|
|
@@ -6660,30 +6730,52 @@ class LicenseValidator {
|
|
|
6660
6730
|
}
|
|
6661
6731
|
/**
|
|
6662
6732
|
* Get license information from key.
|
|
6733
|
+
*
|
|
6734
|
+
* @returns {IValidator} - Get license information from key.
|
|
6663
6735
|
*/
|
|
6664
6736
|
getInfoFromKey() {
|
|
6665
6737
|
try {
|
|
6666
|
-
let licKey =
|
|
6667
|
-
|
|
6668
|
-
let pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,
|
|
6738
|
+
let licKey = '';
|
|
6739
|
+
const pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,
|
|
6669
6740
|
6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,
|
|
6670
6741
|
6356992, 7602176, 4587520, 7274496, 7471104, 7143424];
|
|
6671
6742
|
let decryptedStr = [];
|
|
6672
|
-
|
|
6743
|
+
const resultArray = [];
|
|
6673
6744
|
let invalidPlatform = false;
|
|
6674
|
-
|
|
6675
|
-
|
|
6745
|
+
let isNpxKey = false;
|
|
6746
|
+
if (this.manager.getKey()) {
|
|
6747
|
+
licKey = this.manager.getKey();
|
|
6748
|
+
}
|
|
6749
|
+
else {
|
|
6750
|
+
isNpxKey = true;
|
|
6751
|
+
licKey = this.npxManager.getKey().split('npxKeyReplace')[1];
|
|
6752
|
+
}
|
|
6753
|
+
const licKeySplit = licKey.split(';');
|
|
6754
|
+
for (const lKey of licKeySplit) {
|
|
6755
|
+
const decodeStr = this.getDecryptedData(lKey);
|
|
6676
6756
|
if (!decodeStr) {
|
|
6677
6757
|
continue;
|
|
6678
6758
|
}
|
|
6679
6759
|
let k = 0;
|
|
6680
6760
|
let buffr = '';
|
|
6681
|
-
|
|
6682
|
-
|
|
6683
|
-
k
|
|
6761
|
+
if (!isNpxKey) {
|
|
6762
|
+
for (let i = 0; i < decodeStr.length; i++, k++) {
|
|
6763
|
+
if (k === pkey.length) {
|
|
6764
|
+
k = 0;
|
|
6765
|
+
}
|
|
6766
|
+
const c = decodeStr.charCodeAt(i);
|
|
6767
|
+
buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));
|
|
6768
|
+
}
|
|
6769
|
+
}
|
|
6770
|
+
else {
|
|
6771
|
+
const charKey = decodeStr[decodeStr.length - 1];
|
|
6772
|
+
const decryptedKey = [];
|
|
6773
|
+
for (let i = 0; i < decodeStr.length; i++) {
|
|
6774
|
+
decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);
|
|
6775
|
+
}
|
|
6776
|
+
for (let i = 0; i < decryptedKey.length; i++) {
|
|
6777
|
+
buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);
|
|
6684
6778
|
}
|
|
6685
|
-
let c = decodeStr.charCodeAt(i);
|
|
6686
|
-
buffr += String.fromCharCode(c ^ (pkey[k] >> 16));
|
|
6687
6779
|
}
|
|
6688
6780
|
if (this.platform.test(buffr)) {
|
|
6689
6781
|
decryptedStr = buffr.split(';');
|
|
@@ -6712,16 +6804,24 @@ class LicenseValidator {
|
|
|
6712
6804
|
}
|
|
6713
6805
|
}
|
|
6714
6806
|
let licenseValidator = new LicenseValidator();
|
|
6807
|
+
/**
|
|
6808
|
+
* Converts the given number to characters.
|
|
6809
|
+
*
|
|
6810
|
+
* @param {number} cArr - Specifies the license key as number.
|
|
6811
|
+
* @returns {string}
|
|
6812
|
+
*/
|
|
6715
6813
|
function convertToChar(cArr) {
|
|
6716
6814
|
let ret = '';
|
|
6717
|
-
for (
|
|
6815
|
+
for (const arr of cArr) {
|
|
6718
6816
|
ret += String.fromCharCode(arr);
|
|
6719
6817
|
}
|
|
6720
6818
|
return ret;
|
|
6721
6819
|
}
|
|
6722
6820
|
/**
|
|
6723
6821
|
* To set license key.
|
|
6822
|
+
*
|
|
6724
6823
|
* @param {string} key - license key
|
|
6824
|
+
* @returns {void}
|
|
6725
6825
|
*/
|
|
6726
6826
|
function registerLicense(key) {
|
|
6727
6827
|
licenseValidator = new LicenseValidator(key);
|
|
@@ -6730,11 +6830,146 @@ const validateLicense = (key) => {
|
|
|
6730
6830
|
if (key) {
|
|
6731
6831
|
registerLicense(key);
|
|
6732
6832
|
}
|
|
6733
|
-
licenseValidator.validate();
|
|
6833
|
+
return licenseValidator.validate();
|
|
6734
6834
|
};
|
|
6735
6835
|
const getVersion = () => {
|
|
6736
6836
|
return licenseValidator.version;
|
|
6737
6837
|
};
|
|
6838
|
+
// Method for create overlay over the sample
|
|
6839
|
+
const createLicenseOverlay = () => {
|
|
6840
|
+
let bannerTemplate = `
|
|
6841
|
+
<div style="
|
|
6842
|
+
position: fixed;
|
|
6843
|
+
width: 100%;
|
|
6844
|
+
height: 100%;
|
|
6845
|
+
top: 0;
|
|
6846
|
+
left: 0;
|
|
6847
|
+
right: 0;
|
|
6848
|
+
bottom: 0;
|
|
6849
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
6850
|
+
z-index: 99999;
|
|
6851
|
+
">
|
|
6852
|
+
<div style="
|
|
6853
|
+
background: #FFFFFF;
|
|
6854
|
+
height: 455px;
|
|
6855
|
+
width: 840px;
|
|
6856
|
+
font-family: Helvetica Neue, Helvetica, Arial;
|
|
6857
|
+
color: #000000;
|
|
6858
|
+
box-shadow: 0px 4.8px 14.4px rgb(0 0 0 / 18%), 0px 25.6px 57.6px rgb(0 0 0 / 22%);
|
|
6859
|
+
display: block;
|
|
6860
|
+
margin: 8% auto;
|
|
6861
|
+
border-radius: 20px;
|
|
6862
|
+
">
|
|
6863
|
+
<div style="
|
|
6864
|
+
position: absolute;
|
|
6865
|
+
width: 838px;
|
|
6866
|
+
height: 62px;
|
|
6867
|
+
background-color: #F9F9F9;
|
|
6868
|
+
border: 1px solid #EEEEEE;
|
|
6869
|
+
border-top-left-radius: 20px;
|
|
6870
|
+
border-top-right-radius: 20px;
|
|
6871
|
+
">
|
|
6872
|
+
<img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMTQ2IDMyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNDAuNTk2NSAxNS4wMDc4SDMyLjQyNUMzMS41NTU3IDE1LjAwNzggMzAuOTAzNyAxNS4xODEyIDMwLjUxMjUgMTUuNDg0NkMzMC4xMjEzIDE1LjgzMTQgMjkuOTA0IDE2LjMwODIgMjkuOTA0IDE3LjA0NTFDMjkuOTA0IDE3LjYwODYgMzAuMDc3OCAxOC4wNDIxIDMwLjQyNTYgMTguMzAyMkMzMC43NzMzIDE4LjYwNTYgMzEuMjk0OSAxOC43MzU2IDMxLjk5MDMgMTguNzM1NkgzNi4zMzY5QzM4LjExODkgMTguNzM1NiAzOS40MjI5IDE5LjA4MjQgNDAuMTYxOCAxOS43MzI2QzQwLjk0NDIgMjAuNDI2MiA0MS4yOTE5IDIxLjU1MzIgNDEuMjkxOSAyMy4xMTM3QzQxLjI5MTkgMjQuNzE3NiA0MC44NTcyIDI1Ljg4OCAzOS45ODc5IDI2LjY2ODJDMzkuMTE4NiAyNy40MDUxIDM3LjcyNzcgMjcuNzk1MyAzNS44NTg3IDI3Ljc5NTNIMjcuMDc4N1YyNS4wMjFIMzUuMzM3MkMzNi4yOTM0IDI1LjAyMSAzNi45NDU0IDI0Ljg5MSAzNy4zMzY2IDI0LjYzMDlDMzcuNzI3NyAyNC4zNzA4IDM3LjkwMTYgMjMuODk0IDM3LjkwMTYgMjMuMjg3MUMzNy45MDE2IDIyLjYzNjkgMzcuNzI3NyAyMi4xNjAxIDM3LjM4IDIxLjlDMzcuMDMyMyAyMS42Mzk5IDM2LjQyMzggMjEuNDY2NSAzNS41NTQ1IDIxLjQ2NjVIMzEuNjQyNkMyOS44NjA1IDIxLjQ2NjUgMjguNTEzMSAyMS4xMTk4IDI3LjY4NzMgMjAuMzgyOEMyNi44NjE0IDE5LjY0NTkgMjYuNDI2OCAxOC41MTg5IDI2LjQyNjggMTcuMDAxN0MyNi40MjY4IDE1LjM1NDUgMjYuODYxNCAxNC4xNDA4IDI3LjczMDcgMTMuMzYwNkMyOC42IDEyLjU4MDMgMjkuOTkwOSAxMi4yMzM1IDMxLjkwMzQgMTIuMjMzNUg0MC41OTY1VjE1LjAwNzhaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik00OC4wNzI3IDI1LjI4MTFINTAuNTA2OFYxNi4zOTQ5SDUzLjU0OTNWMjcuNTM1MkM1My41NDkzIDI5LjA1MjQgNTMuMjAxNiAzMC4xNzk0IDUyLjUwNjIgMzAuOTE2M0M1MS44MTA3IDMxLjY1MzIgNTAuNzI0MSAzMiA0OS4yNDYzIDMySDQzLjMzNVYyOS42NTkySDQ4LjcyNDdDNDkuMjg5NyAyOS42NTkyIDQ5Ljc2NzkgMjkuNTI5MiA1MC4wNzIxIDI5LjIyNThDNTAuMzc2NCAyOC45NjU3IDUwLjU1MDIgMjguNTMyMiA1MC41NTAyIDI4LjAxMlYyNy44Mzg2SDQ3Ljg5ODlDNDYuMjAzNyAyNy44Mzg2IDQ0Ljk0MzIgMjcuNDkxOSA0NC4yNDc4IDI2Ljg0MTZDNDMuNTA4OSAyNi4xNDgxIDQzLjE2MTEgMjUuMDY0NCA0My4xNjExIDIzLjQ2MDVWMTYuMzk0OUg0Ni4xNjAyVjIzLjIwMDVDNDYuMTYwMiAyNC4wNjc0IDQ2LjI5MDYgMjQuNjMwOSA0Ni41NTE0IDI0Ljg5MUM0Ni43MjUzIDI1LjE1MTEgNDcuMjQ2OSAyNS4yODExIDQ4LjA3MjcgMjUuMjgxMVoiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTU1Ljg5NjUgMTYuMzk0OUg2MS41OTA0QzYzLjMyOTEgMTYuMzk0OSA2NC41NDYxIDE2LjY5ODMgNjUuMjg1IDE3LjM0ODVDNjYuMDIzOSAxNy45OTg4IDY2LjM3MTYgMTkuMDgyNCA2Ni4zNzE2IDIwLjU1NjNWMjcuNzk1M0g2My4zMjkxVjIwLjk0NjRDNjMuMzI5MSAyMC4wNzk0IDYzLjE5ODcgMTkuNTE1OSA2Mi45Mzc5IDE5LjI5OTJDNjIuNjc3MSAxOS4wMzkxIDYyLjE1NTUgMTguOTA5MSA2MS4zMjk3IDE4LjkwOTFINTguODk1NlYyNy44Mzg2SDU1Ljg1M1YxNi4zOTQ5SDU1Ljg5NjVaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03NC45MzQyIDI1LjM2NzhINzguMTUwNlYyNy43OTUySDc0LjAyMTRDNzIuOTc4MiAyNy43OTUyIDcyLjEwODkgMjcuNjY1MiA3MS40NTcgMjcuNDkxOEM3MC44MDUgMjcuMjc1IDcwLjE5NjUgMjYuOTI4MyA2OS43MTgzIDI2LjQ1MTRDNjkuMTk2OCAyNS45MzEzIDY4Ljc2MjEgMjUuMjgxMSA2OC40NTc4IDI0LjU0NDJDNjguMTUzNiAyMy44MDcyIDY4LjAyMzIgMjIuOTgzNiA2OC4wMjMyIDIyLjE2QzY4LjAyMzIgMjEuMjkzMSA2OC4xNTM2IDIwLjQ2OTUgNjguNDU3OCAxOS42ODkyQzY4Ljc2MjEgMTguOTA5IDY5LjE1MzMgMTguMzAyMSA2OS43MTgzIDE3Ljc4MTlDNzAuMjM5OSAxNy4zMDUxIDcwLjgwNSAxNi45NTgzIDcxLjUwMDQgMTYuNzQxNkM3Mi4xOTU5IDE2LjUyNDkgNzMuMDIxNyAxNi40MzgyIDc0LjA2NDkgMTYuNDM4Mkg3OC4xOTQxVjE4LjkwOUg3NC45MzQyQzczLjQ5OTggMTguOTA5IDcyLjU0MzYgMTkuMTY5MSA3MS45Nzg1IDE5LjY0NTlDNzEuNDU2OSAyMC4xMjI3IDcxLjE1MjcgMjAuOTg5NyA3MS4xNTI3IDIyLjIwMzRDNzEuMTUyNyAyMi44OTY5IDcxLjI4MzEgMjMuNDYwNSA3MS41MDA0IDIzLjkzNzNDNzEuNzE3NyAyNC40MTQxIDcyLjA2NTUgMjQuNzYwOSA3Mi41MDAxIDI1LjA2NDNDNzIuNzE3NCAyNS4xOTQ0IDcyLjk3ODIgMjUuMjgxMSA3My4yODI1IDI1LjM2NzhDNzMuNjMwMiAyNS4zMjQ0IDc0LjE1MTggMjUuMzY3OCA3NC45MzQyIDI1LjM2NzhaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik04MC44NDU2IDE4LjY0ODlINzguNjcyNFYxNi4zNTE1SDgwLjg0NTZWMTUuMTgxMUM4MC44NDU2IDE0LjAxMDggODEuMDYzIDEzLjIzMDUgODEuNDk3NiAxMi44NDA0QzgxLjkzMjMgMTIuNDUwMyA4Mi43NTgxIDEyLjIzMzUgODMuOTc1MSAxMi4yMzM1SDg2Ljg0MzhWMTQuNDAwOUg4NS40MDk1Qzg0Ljg4NzkgMTQuNDAwOSA4NC41NDAyIDE0LjQ4NzYgODQuMzIyOSAxNC42NjFDODQuMTA1NSAxNC44MzQ0IDgzLjk3NTEgMTUuMDk0NSA4My45NzUxIDE1LjQ0MTJWMTYuMzUxNUg4Ni44NDM4VjE4LjY0ODlIODMuOTc1MVYyNy43OTUzSDgwLjg0NTZWMTguNjQ4OVoiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTk4LjQwNTYgMjcuNzk1M0g5Mi43MTE2QzkxLjAxNjUgMjcuNzk1MyA4OS44NDI5IDI3LjQ0ODUgODkuMDYwNSAyNi43OTgzQzg4LjMyMTYgMjYuMTQ4MSA4Ny45MzA0IDI1LjA2NDQgODcuOTMwNCAyMy41OTA2VjE2LjM5NDlIOTAuOTI5NVYyMy40MTcyQzkwLjkyOTUgMjQuMTk3NCA5MS4wNTk5IDI0LjY3NDMgOTEuMzIwNyAyNC45MzQ0QzkxLjU4MTUgMjUuMTk0NCA5Mi4xMDMxIDI1LjMyNDUgOTIuOTI4OSAyNS4zMjQ1SDk1LjM2M1YxNi4zOTQ5SDk4LjQwNTZWMjcuNzk1M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTEwMC42MjIgMjUuNDExMkgxMDcuMDExQzEwNy41NzcgMjUuNDExMiAxMDguMDExIDI1LjMyNDUgMTA4LjI3MiAyNS4xNTExQzEwOC41MzMgMjQuOTc3NyAxMDguNjYzIDI0LjY3NDMgMTA4LjY2MyAyNC4zMjc1QzEwOC42NjMgMjMuOTM3NCAxMDguNTMzIDIzLjY3NzMgMTA4LjI3MiAyMy40NjA1QzEwOC4wMTEgMjMuMjg3MSAxMDcuNTc3IDIzLjIwMDUgMTA3LjA1NSAyMy4yMDA1SDEwNC40NDdDMTAyLjg4MiAyMy4yMDA1IDEwMS44MzkgMjIuOTgzNyAxMDEuMzE4IDIyLjUwNjlDMTAwLjc1MiAyMi4wMzAxIDEwMC40OTIgMjEuMjA2NSAxMDAuNDkyIDE5Ljk5MjdDMTAwLjQ5MiAxOC43NzkgMTAwLjgzOSAxNy44Njg3IDEwMS40OTEgMTcuMjYxOEMxMDIuMTQzIDE2LjY5ODMgMTAzLjE4NyAxNi4zOTQ5IDEwNC41MzQgMTYuMzk0OUgxMTEuMDU0VjE4Ljc3OUgxMDUuNzA4QzEwNC44MzggMTguNzc5IDEwNC4yNzMgMTguODY1NyAxMDQuMDEyIDE4Ljk5NTdDMTAzLjc1MiAxOS4xNjkxIDEwMy42MjEgMTkuNDI5MiAxMDMuNjIxIDE5LjgxOTRDMTAzLjYyMSAyMC4xNjYxIDEwMy43NTIgMjAuNDI2MiAxMDMuOTY5IDIwLjU5OTZDMTA0LjE4NiAyMC43NzMgMTA0LjU3NyAyMC44NTk3IDEwNS4wNTYgMjAuODU5N0gxMDcuNzk0QzEwOS4wNTQgMjAuODU5NyAxMTAuMDExIDIxLjE2MzEgMTEwLjY2MyAyMS43MjY2QzExMS4zMTUgMjIuMjkwMiAxMTEuNjYyIDIzLjE1NzEgMTExLjY2MiAyNC4yNDA4QzExMS42NjIgMjUuMjgxMSAxMTEuMzU4IDI2LjE0ODEgMTEwLjc5MyAyNi43OTgzQzExMC4yMjggMjcuNDQ4NSAxMDkuNDQ2IDI3Ljc5NTMgMTA4LjUzMyAyNy43OTUzSDEwMC43MDlWMjUuNDExMkgxMDAuNjIyWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTE2LjU3NCAxNS4wOTQ0SDExMy40MDFWMTIuMjc2OUgxMTYuNTc0VjE1LjA5NDRaTTExNi41NzQgMjcuNzk1M0gxMTMuNDAxVjE2LjM5NDlIMTE2LjU3NFYyNy43OTUzWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTMwLjMwOSAyMi4xMTY3QzEzMC4zMDkgMjMuODkzOSAxMjkuNzQ0IDI1LjMyNDQgMTI4LjY1NyAyNi40MDgxQzEyNy41NzEgMjcuNDkxOCAxMjYuMDkzIDI4LjAxMiAxMjQuMjI0IDI4LjAxMkMxMjIuMzU1IDI4LjAxMiAxMjAuODc3IDI3LjQ5MTggMTE5Ljc5IDI2LjQwODFDMTE4LjcwNCAyNS4zMjQ0IDExOC4xMzkgMjMuODkzOSAxMTguMTM5IDIyLjExNjdDMTE4LjEzOSAyMC4zMzk0IDExOC43MDQgMTguOTA5IDExOS43OSAxNy44MjUzQzEyMC44NzcgMTYuNzQxNiAxMjIuMzk4IDE2LjIyMTQgMTI0LjIyNCAxNi4yMjE0QzEyNi4wNDkgMTYuMjIxNCAxMjcuNTI3IDE2Ljc0MTYgMTI4LjY1NyAxNy44MjUzQzEyOS43NDQgMTguODY1NiAxMzAuMzA5IDIwLjI5NjEgMTMwLjMwOSAyMi4xMTY3Wk0xMjEuMjY4IDIyLjExNjdDMTIxLjI2OCAyMy4yMDA0IDEyMS41MjkgMjQuMDY3MyAxMjIuMDUxIDI0LjY3NDJDMTIyLjU3MiAyNS4yODExIDEyMy4yNjggMjUuNTg0NSAxMjQuMTggMjUuNTg0NUMxMjUuMDkzIDI1LjU4NDUgMTI1Ljc4OSAyNS4yODExIDEyNi4zMSAyNC42NzQyQzEyNi44MzIgMjQuMDY3MyAxMjcuMDkzIDIzLjIwMDQgMTI3LjA5MyAyMi4xMTY3QzEyNy4wOTMgMjEuMDMzIDEyNi44MzIgMjAuMTY2MSAxMjYuMzEgMTkuNjAyNUMxMjUuNzg5IDE4Ljk5NTcgMTI1LjA5MyAxOC42OTIyIDEyNC4xMzcgMTguNjkyMkMxMjMuMjI0IDE4LjY5MjIgMTIyLjUyOSAxOC45OTU3IDEyMi4wMDcgMTkuNjAyNUMxMjEuNTI5IDIwLjE2NjEgMTIxLjI2OCAyMS4wMzMgMTIxLjI2OCAyMi4xMTY3WiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTMxLjc4NyAxNi4zOTQ5SDEzNy40ODFDMTM5LjIxOSAxNi4zOTQ5IDE0MC40MzYgMTYuNjk4MyAxNDEuMTc1IDE3LjM0ODVDMTQxLjkxNCAxNy45OTg4IDE0Mi4yNjIgMTkuMDgyNCAxNDIuMjYyIDIwLjU1NjNWMjcuNzk1M0gxMzkuMjE5VjIwLjk0NjRDMTM5LjIxOSAyMC4wNzk0IDEzOS4wODkgMTkuNTE1OSAxMzguODI4IDE5LjI5OTJDMTM4LjU2NyAxOS4wMzkxIDEzOC4wNDYgMTguOTA5MSAxMzcuMjIgMTguOTA5MUgxMzQuNzg2VjI3LjgzODZIMTMxLjc0M1YxNi4zOTQ5SDEzMS43ODdaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03LjEyODMxIDMuNzM3NDNIMFYxMC44NDY0SDcuMTI4MzFWMy43Mzc0M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTIzLjI1MTMgLTIuMTU3MjVlLTA1TDE4LjU1MTMgNS41MTY4NUwyNC4wODMxIDEwLjIwNDFMMjguNzgzMSA0LjY4NzI1TDIzLjI1MTMgLTIuMTU3MjVlLTA1WiIgZmlsbD0iI0ZGODYwMCIvPgo8cGF0aCBkPSJNMTUuNjA0MSAzLjczNzQzSDguNDc1ODNWMTAuODQ2NEgxNS42MDQxVjMuNzM3NDNaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03LjEyODMxIDEyLjE5MDJIMFYxOS4yOTkySDcuMTI4MzFWMTIuMTkwMloiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTE1LjYwNDEgMTIuMTkwMkg4LjQ3NTgzVjE5LjI5OTJIMTUuNjA0MVYxMi4xOTAyWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMjQuMDc5NyAxMi4xOTAySDE2Ljk1MTRWMTkuMjk5MkgyNC4wNzk3VjEyLjE5MDJaIiBmaWxsPSIjRkY4NjAwIi8+CjxwYXRoIGQ9Ik03LjEyODMxIDIwLjY4NjNIMFYyNy43OTUzSDcuMTI4MzFWMjAuNjg2M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTE1LjYwNDEgMjAuNjg2M0g4LjQ3NTgzVjI3Ljc5NTNIMTUuNjA0MVYyMC42ODYzWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMjQuMTIzMiAyMC42ODYzSDE2Ljk5NDlWMjcuNzk1M0gyNC4xMjMyVjIwLjY4NjNaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik0xNDYgMTUuODMxM0MxNDYgMTYuODcxNyAxNDUuMTc0IDE3LjY5NTMgMTQ0LjEzMSAxNy42OTUzQzE0My4wODggMTcuNjk1MyAxNDIuMjYyIDE2Ljg3MTcgMTQyLjI2MiAxNS44MzEzQzE0Mi4yNjIgMTQuNzkxIDE0My4wODggMTQuMDEwNyAxNDQuMTMxIDE0LjAxMDdDMTQ1LjEzMSAxMy45Njc0IDE0NiAxNC43OTEgMTQ2IDE1LjgzMTNaTTE0Mi45NTcgMTQuNzkxQzE0Mi42OTcgMTUuMDUxMSAxNDIuNTY2IDE1LjQ0MTIgMTQyLjU2NiAxNS44MzEzQzE0Mi41NjYgMTYuNjk4MyAxNDMuMjYyIDE3LjM5MTggMTQ0LjEzMSAxNy4zOTE4QzE0NSAxNy4zOTE4IDE0NS42OTYgMTYuNjk4MyAxNDUuNjk2IDE1LjgzMTNDMTQ1LjY5NiAxNS4wMDc3IDE0NSAxNC4yNzA4IDE0NC4xNzQgMTQuMjcwOEMxNDMuNjUzIDE0LjI3MDggMTQzLjI2MiAxNC40NDQyIDE0Mi45NTcgMTQuNzkxWk0xNDQuODcgMTYuOTE1SDE0NC40NzlMMTQzLjkxNCAxNi4wOTE0VjE2LjkxNUgxNDMuNjA5VjE0Ljc0NzZIMTQzLjk1N0MxNDQuNDM1IDE0Ljc0NzYgMTQ0LjY1MyAxNC45NjQ0IDE0NC42NTMgMTUuMzU0NUMxNDQuNjUzIDE1LjY1NzkgMTQ0LjQ3OSAxNS44NzQ3IDE0NC4xNzQgMTUuOTYxNEwxNDQuODcgMTYuOTE1Wk0xNDQuMDQ0IDE1LjY1NzlDMTQ0LjI2MSAxNS42NTc5IDE0NC4zOTIgMTUuNTI3OSAxNDQuMzkyIDE1LjM1NDVDMTQ0LjM5MiAxNS4xMzc4IDE0NC4yNjEgMTUuMDUxMSAxNDQuMDAxIDE1LjA1MTFIMTQzLjkxNFYxNS42NTc5SDE0NC4wNDRaIiBmaWxsPSIjMzU0M0E4Ii8+Cjwvc3ZnPgo=" style="
|
|
6873
|
+
text-align: left;
|
|
6874
|
+
width: 146px;
|
|
6875
|
+
position: absolute;
|
|
6876
|
+
top: 14px;
|
|
6877
|
+
left: 31px;
|
|
6878
|
+
">
|
|
6879
|
+
</div>
|
|
6880
|
+
<div style="
|
|
6881
|
+
position: relative;
|
|
6882
|
+
top: 80px;
|
|
6883
|
+
left: 32px;
|
|
6884
|
+
font-size: 20px;
|
|
6885
|
+
text-align: left;
|
|
6886
|
+
font-weight: 700;
|
|
6887
|
+
letter-spacing: 0.02em;
|
|
6888
|
+
font-style: normal;
|
|
6889
|
+
line-height: 125%;
|
|
6890
|
+
">Claim your FREE account and get a key in less than a minute</div>
|
|
6891
|
+
<ul style="
|
|
6892
|
+
font-size: 15px;
|
|
6893
|
+
font-weight: 400;
|
|
6894
|
+
color: #333333;
|
|
6895
|
+
letter-spacing: 0.01em;
|
|
6896
|
+
position: relative;
|
|
6897
|
+
left: 32px;
|
|
6898
|
+
top: 88px;
|
|
6899
|
+
line-height: 180%;
|
|
6900
|
+
">
|
|
6901
|
+
<li><span>Access to a 30-day free trial of any of our products.</span></li>
|
|
6902
|
+
<li><span>Access to 24x5 support by developers via the <a href="https://support.syncfusion.com/create" style="text-decoration: none;
|
|
6903
|
+
color: #0D6EFD;
|
|
6904
|
+
font-weight: 500;">support tickets</a>, <a href="https://www.syncfusion.com/forums" style="text-decoration: none;
|
|
6905
|
+
color: #0D6EFD;
|
|
6906
|
+
font-weight: 500;">forum</a>, <a href="https://www.syncfusion.com/feedback" style="text-decoration: none;
|
|
6907
|
+
color: #0D6EFD;
|
|
6908
|
+
font-weight: 500;">feature & feedback page</a> and chat.</span></li>
|
|
6909
|
+
<li><span>200+ <a href="https://www.syncfusion.com/succinctly-free-ebooks" style="text-decoration: none;
|
|
6910
|
+
color: #0D6EFD;
|
|
6911
|
+
font-weight: 500;">ebooks </a>on the latest technologies, industry trends, and research topics.</span>
|
|
6912
|
+
</li>
|
|
6913
|
+
<li><span>Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion <a href="https://www.syncfusion.com/succinctly-free-ebooks" style="text-decoration: none;
|
|
6914
|
+
color: #0D6EFD;
|
|
6915
|
+
font-weight: 500;">Metro Studio.</a></span></li>
|
|
6916
|
+
<li><span>Free and unlimited access to Syncfusion technical <a href="https://www.syncfusion.com/blogs/" style="text-decoration: none;
|
|
6917
|
+
color: #0D6EFD;
|
|
6918
|
+
font-weight: 500;">blogs</a> and <a href="https://www.syncfusion.com/resources/techportal/whitepapers" style="text-decoration: none;
|
|
6919
|
+
color: #0D6EFD;
|
|
6920
|
+
font-weight: 500;">whitepapers.</a></span></li>
|
|
6921
|
+
</ul>
|
|
6922
|
+
<div style="
|
|
6923
|
+
font-size: 18px;
|
|
6924
|
+
font-weight: 700;
|
|
6925
|
+
position: relative;
|
|
6926
|
+
line-height: 125%;
|
|
6927
|
+
letter-spacing: 0.02em;
|
|
6928
|
+
top: 90px;
|
|
6929
|
+
left: 32px;
|
|
6930
|
+
">Syncfusion is trusted by 29,000+ businesses worldwide</div>
|
|
6931
|
+
<img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIwIiBoZWlnaHQ9IjU2IiB2aWV3Qm94PSIwIDAgODIwIDU2IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MjcuNjE3IDIyLjU2NTlWMjQuNzIyNkM0MjYuNTU4IDI0LjM2MzggNDI1LjM5OCAyNC4xNTQ0IDQyNC40NzQgMjQuMTU0NEM0MjMuMzMzIDI0LjE1NDQgNDIyLjY5OCAyNC40OTEyIDQyMi42OTggMjUuMDk2M0M0MjIuNjk4IDI1LjQ4MjQgNDIyLjk3NiAyNS43MzgzIDQyMy43NzMgMjYuMDg1NEw0MjUuOTE3IDI3LjAxNzRDNDI3LjYzMyAyNy43NjM5IDQyOC40OTcgMjguODUzIDQyOC40OTcgMzAuMjY4MUM0MjguNDk3IDMyLjQ1MjIgNDI2LjU0NiAzMy44MyA0MjMuNDUyIDMzLjgzQzQyMi4zMjQgMzMuODMgNDIxLjAxOCAzMy42NzM2IDQxOS42MzYgMzMuMzcwOVYzMS4xNDE2QzQyMS4wMDYgMzEuNTAyOCA0MjIuMjYyIDMxLjY5NTcgNDIzLjIzOSAzMS42OTU3QzQyNC41MTggMzEuNjk1NyA0MjUuMjAzIDMxLjM1MDYgNDI1LjIwMyAzMC43MDc0QzQyNS4yMDMgMzAuMzIwOCA0MjQuOTM1IDMwLjAzNjcgNDI0LjMyMiAyOS43NzE3TDQyMS45NzUgMjguNzU5M0M0MjAuMjM2IDI4LjAwNzggNDE5LjQzMyAyNi45OTU0IDQxOS40MzMgMjUuNTUyMUM0MTkuNDMzIDIzLjQ4MzcgNDIxLjMxNCAyMi4xNjQ5IDQyNC4yNjUgMjIuMTY0OUM0MjUuMjk4IDIyLjE2NDkgNDI2LjU3IDIyLjMxNzEgNDI3LjYxNyAyMi41NjU5VjIyLjU2NTlaTTQzMC4xNjcgMjIuMzkwOUg0MzMuNjM1VjMzLjYwMzlINDMwLjE2N1YyMi4zOTA5Wk00NDQuOTExIDIyLjM5MDlWMjQuNDQ1MUg0MzkuNjc1VjI2Ljk3NDJINDQ0LjI0OVYyOC44MzIzSDQzOS42NzVWMzEuNDU0M0g0NDQuOTc4VjMzLjYwMzlINDM2LjMwNVYyMi4zOTA5SDQ0NC45MTFaTTQ2MS4yOTQgMjIuMzkwOVYzMy42MDM5SDQ1Ny45MzlWMjYuMjIzNkw0NTQuNjUyIDMzLjY5MTVINDUyLjUzMUw0NDkuMjY2IDI2LjIyMzZWMzMuNjAzOUg0NDYuOTQ5VjIyLjM5MDlINDUxLjE4NEw0NTQuMTc4IDI5LjIxMTRMNDU3LjE1NiAyMi4zOTA5SDQ2MS4yOTRWMjIuMzkwOVpNNDcyLjU3OSAyMi4zOTA5VjI0LjQ0NTFINDY3LjMzNVYyNi45NzQySDQ3MS45MDhWMjguODMyM0g0NjcuMzM1VjMxLjQ1NDNINDcyLjYzOFYzMy42MDM5SDQ2My45NTdWMjIuMzkwOUg0NzIuNTc5Wk00ODQuNzk0IDIyLjM5MDlWMzMuNjAzOUg0ODEuMDkzTDQ3Ni45MjYgMjYuNDEyM1YzMy42MDM5SDQ3NC42MDhWMjIuMzkwOUg0NzguNDA3TDQ4Mi40ODQgMjkuNDg3NlYyMi4zOTA5SDQ4NC43OTRaTTQ5NC44NTggMjIuNTY1OVYyNC43MjI2QzQ5My44MDcgMjQuMzY2MyA0OTIuNjQgMjQuMTU0NCA0OTEuNzMyIDI0LjE1NDRDNDkwLjU3MyAyNC4xNTQ0IDQ4OS45MzkgMjQuNDg1OCA0ODkuOTM5IDI1LjA5M0M0ODkuOTM5IDI1LjQ4ODYgNDkwLjE5OCAyNS43MjUgNDkxLjAyMyAyNi4wODU5TDQ5My4xNTcgMjcuMDE3OEM0OTQuODg1IDI3Ljc3MjIgNDk1LjczOSAyOC44NTE4IDQ5NS43MzkgMzAuMjgzNUM0OTUuNzM5IDMyLjQ1NTkgNDkzLjc4NiAzMy44MzA4IDQ5MC42OTkgMzMuODMwOEM0ODkuNTY5IDMzLjgzMDggNDg4LjI1OSAzMy42NzM2IDQ4Ni44NzggMzMuMzcxN1YzMS4xNDI0QzQ4OC4yNDcgMzEuNTAyOCA0ODkuNDk5IDMxLjY5NjUgNDkwLjQ3IDMxLjY5NjVDNDkxLjc0IDMxLjY5NjUgNDkyLjQ0NCAzMS4zNTE1IDQ5Mi40NDQgMzAuNzI4NUM0OTIuNDQ0IDMwLjMxNjMgNDkyLjE5NyAzMC4wNTA0IDQ5MS41NTUgMjkuNzcyNUw0ODkuMjE4IDI4Ljc2MDFDNDg3LjQ2NyAyOC4wMDI4IDQ4Ni42NzQgMjcuMDAyIDQ4Ni42NzQgMjUuNTUzM0M0ODYuNjc0IDIzLjQ4NjIgNDg4LjU1NiAyMi4xNjY1IDQ5MS41IDIyLjE2NjVDNDkyLjUzNiAyMi4xNjUzIDQ5My44MTMgMjIuMzE3MSA0OTQuODU4IDIyLjU2NTlWMjIuNTY1OVoiIGZpbGw9IiMwMEEwQjAiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzUyLjQxMyAyNi44MTlDMzUwLjk5MiAyNS4yNzU5IDM0OS42MzggMjMuODMxNSAzNDguMzQ5IDIyLjE1NzRMMzQ3LjkyIDIxLjU5OTVDMzQ5LjQwNiAyMS4zNjkzIDM1MC42OTUgMjAuMzg0OCAzNTAuNjk1IDE4Ljc0MzNDMzUwLjY5NSAxNy4yMzMxIDM0OS41MzkgMTYuMjQ4MiAzNDcuODIxIDE2LjI0ODJDMzQ2LjU5OCAxNi4yNDgyIDM0NS43MDYgMTYuMzEzNyAzNDUuMjQzIDE2LjMxMzdDMzQ0LjcxNSAxNi4zMTM3IDM0NC4yODUgMTYuMzEzNyAzNDMuNzkgMTYuMjgwOEMzNDMuODU2IDE4LjE1MjEgMzQzLjg4OSAxOC4yODM0IDM0My44ODkgMTkuNDMyMlYyMy42MzQzQzM0My44ODkgMjQuNDU1MyAzNDMuODU2IDI1LjI3NTkgMzQzLjc5IDI2LjgxODZDMzQ0LjE1MyAyNi43MjAyIDM0NC41MTcgMjYuNzIwMiAzNDQuNzgxIDI2LjcyMDJDMzQ1LjA0NSAyNi43MjAyIDM0NS40MDkgMjYuNzUzMSAzNDUuNzA2IDI2LjgxODZDMzQ1LjY0IDI1Ljc2NzkgMzQ1LjYwNyAyNC4wMjgzIDM0NS42MDcgMjMuNjM0M1YyMS4yMDUxQzM0Ny4xNiAyMy4yMDc3IDM0OS4yMDkgMjUuNjY5NSAzNTAuMDAxIDI2LjgxODZDMzUwLjM5OCAyNi43MjAyIDM1MC43MjggMjYuNzIwMiAzNTEuMTI0IDI2LjcyMDJDMzUxLjQ1NSAyNi43MjA2IDM1MS45MTggMjYuNzIwNiAzNTIuNDEzIDI2LjgxOVYyNi44MTlaTTM0OC44NzggMTkuMDA2QzM0OC44NzggMjAuMDIzNCAzNDguMzE3IDIxLjIwNTQgMzQ2Ljc5NyAyMS4yMDU0QzM0Ni40IDIxLjIwNTQgMzQ2LjAwMyAyMS4yMDU0IDM0NS42MDcgMjEuMTcyNVYxNy4wNjg4QzM0Ni4wMDMgMTYuOTcwNCAzNDYuNDk5IDE2LjkwNDYgMzQ2Ljc2MyAxNi45MDQ2QzM0OC4wODUgMTYuOTA0OSAzNDguODc4IDE3LjY2IDM0OC44NzggMTkuMDA2VjE5LjAwNlpNMzgyLjM4IDI2Ljg4NDVDMzgxLjgxOSAyNi4yOTM2IDM4MC45NiAyNS4zNDE3IDM4MC4xMzQgMjQuNDIyM0MzODAuODI4IDIzLjY2NzIgMzgxLjU1NSAyMi41NTEgMzgxLjk4NCAyMS41OTkxQzM4MS43MTkgMjEuNDY3OCAzODEuMzU2IDIxLjIwNTEgMzgxLjA5MiAyMC45NzUzQzM4MC45OTMgMjEuNzk1OSAzODAuNDMyIDIyLjg3OTIgMzc5LjYzOSAyMy44MzE1QzM3OC41MTUgMjIuNTE4NSAzNzguMjE4IDIyLjE1NzQgMzc3LjE5MyAyMC43Nzg1QzM3OC41ODEgMTkuODkyMSAzNzkuMjQyIDE4Ljg3NDMgMzc5LjI0MiAxOC4wNTM3QzM3OS4yNDIgMTcuMTAxNyAzNzguNTgxIDE2LjExNjkgMzc2Ljk2MiAxNi4xMTY5QzM3NS4yMTEgMTYuMTE2OSAzNzQuMzUyIDE3LjIwMDIgMzc0LjM1MiAxOC40ODAzQzM3NC4zNTIgMTkuMjM1NCAzNzQuNTUgMTkuODkxNyAzNzUuMzc2IDIwLjk3NTNDMzc0LjA1NCAyMS42OTc1IDM3Mi43NjYgMjIuNzQ3OSAzNzIuNzY2IDI0LjQyMjNDMzcyLjc2NiAyNi4wNjM5IDM3NC4wODcgMjYuOTE3NCAzNzUuNzA3IDI2LjkxNzRDMzc3LjE5MyAyNi45MTc0IDM3OC4xNTEgMjYuMzI2NiAzNzguOTEyIDI1LjYzNjlMMzc5LjkwMiAyNi44MTlDMzgwLjIgMjYuNzg2MSAzODAuNTMxIDI2LjcyMDYgMzgwLjg2MSAyNi43MjA2QzM4MS4zMjQgMjYuNzIwNiAzODEuODUyIDI2Ljc4NjEgMzgyLjM4IDI2Ljg4NDVWMjYuODg0NVpNMzgzLjM3MiA0MC4wMTU4QzM4MS45MTggMzguNDczIDM4MC41OTcgMzcuMDYxMiAzNzkuMzA4IDM1LjM4NzFMMzc4Ljg3OCAzNC44Mjg4QzM4MC4zMzIgMzQuNTk5MSAzODEuNjU0IDMzLjYxNSAzODEuNjU0IDMxLjk0MDFDMzgxLjY1NCAzMC40NjMyIDM4MC40OTggMjkuNDQ1NCAzNzguNzc5IDI5LjQ0NTRDMzc3LjU1NyAyOS40NDU0IDM3Ni42MzIgMjkuNTQzNSAzNzYuMTY5IDI5LjU0MzVDMzc1LjY3MyAyOS41NDM1IDM3NS4yNDQgMjkuNTQzNSAzNzQuNzQ4IDI5LjQ3NzZDMzc0LjgxNCAzMS4zODIyIDM3NC44NDggMzEuNDgwMiAzNzQuODQ4IDMyLjYyOTRWMzYuODMxMUMzNzQuODQ4IDM3LjY1MjQgMzc0LjgxNCAzOC41MDUyIDM3NC43NDggNDAuMDE1NEMzNzUuMTEyIDM5Ljk0OTYgMzc1LjQ3NSAzOS45NDk2IDM3NS43MDcgMzkuOTQ5NkMzNzYuMDA0IDM5Ljk0OTYgMzc2LjM2OCAzOS45NDk2IDM3Ni42MzIgNDAuMDE1NEMzNzYuNTY1IDM4Ljk5OCAzNzYuNTMzIDM3LjI1ODEgMzc2LjUzMyAzNi44MzExVjM0LjQzNDhDMzc4LjExOSAzNi40MDQyIDM4MC4xNjcgMzguODk5NiAzODAuOTYgNDAuMDE1NEMzODEuMzU2IDM5Ljk0OTYgMzgxLjY4NyAzOS45NDk2IDM4Mi4wODMgMzkuOTQ5NkMzODIuMzggMzkuOTUgMzgyLjg3NiAzOS45NSAzODMuMzcyIDQwLjAxNThaTTM2Mi4xNiAyNi44MTlDMzYwLjk3MSAyNS41NzE1IDM1OC44ODkgMjIuOTc4IDM1OC4wNjMgMjEuOTkzNUwzNTcuMjM3IDIwLjk3NTdDMzU4LjA5NiAxOS45NTgzIDM1OC42OSAxOS4zMzQxIDM1OS4zMTkgMTguNTc5QzM2MC4wNDUgMTcuNzkxIDM2MC43MDYgMTYuOTcwNCAzNjEuNDk5IDE2LjI0ODJDMzYxLjEzNiAxNi4zMTM3IDM2MC45MzcgMTYuMzEzNyAzNjAuNzM5IDE2LjMxMzdDMzYwLjU0MSAxNi4zMTM3IDM2MC4zNDMgMTYuMzEzNyAzNjAuMTQ0IDE2LjI0ODJDMzU5LjkxMyAxNi42MDkzIDM1OS41NSAxNy4wNjg4IDM1OS4xNTMgMTcuNTI4N0MzNTguNzU2IDE3Ljk1NTYgMzU4LjM2IDE4LjM4MjIgMzU4LjA2MyAxOC43NDMzQzM1Ny4yMzYgMTkuNjk1MiAzNTYuNzc0IDIwLjE1NDcgMzU1LjU4NSAyMS4yNzA5VjE5LjQ2NTVDMzU1LjU4NSAxOC40MTUxIDM1NS41ODUgMTcuNzI1NSAzNTUuNjUxIDE2LjI0ODJDMzU1LjMyMSAxNi4zMTM3IDM1NC45NTcgMTYuMzEzNyAzNTQuNzI2IDE2LjMxMzdDMzU0LjQ2MSAxNi4zMTM3IDM1NC4wMzIgMTYuMzEzNyAzNTMuNzY4IDE2LjI0ODJDMzUzLjgzMyAxNy44MjM5IDM1My44NjcgMTguMjgzNCAzNTMuODY3IDE5LjQzMjVWMjMuNjM0N0MzNTMuODY3IDI0LjY4NSAzNTMuODMzIDI1LjMwODggMzUzLjc2OCAyNi44MTlDMzU0LjE2NCAyNi43MjA2IDM1NC40OTUgMjYuNzIwNiAzNTQuNzI2IDI2LjcyMDZDMzU0Ljk1NyAyNi43MjA2IDM1NS4zNTMgMjYuNzUzNSAzNTUuNjUxIDI2LjgxOUMzNTUuNTg1IDI1LjE0NDkgMzU1LjU4NSAyNC4xNTk3IDM1NS41ODUgMjMuNjM0N1YyMS40MzUyQzM1Ni44MDcgMjIuODc5NiAzNTguNjkgMjUuMjQzMyAzNTkuNzQ4IDI2LjgxOUMzNjAuMTMgMjYuNzU2MyAzNjAuNTE3IDI2LjcyMzQgMzYwLjkwNSAyNi43MjA2QzM2MS4yMDIgMjYuNzIwNiAzNjEuNjY1IDI2LjcyMDYgMzYyLjE2IDI2LjgxOVYyNi44MTlaTTM3Mi42MDEgNDAuMDE1OEMzNzIuNTY4IDM5Ljg1MTkgMzcyLjUzNSAzOS43MjA2IDM3Mi41MzUgMzkuNTIzNEMzNzIuNTM1IDM5LjM5MjggMzcyLjU2OCAzOS4yMjgxIDM3Mi42MDEgMzkuMDk2NEMzNzEuMjggMzkuMTI5NyAzNjguOTAxIDM5LjE5NTIgMzY4LjM3MiAzOS4xOTUyVjM0LjY2NDlDMzY5LjY5NCAzNC42NjQ5IDM3MC45ODIgMzQuNjY0OSAzNzIuMjcgMzQuNzk2M0MzNzIuMjM4IDM0LjYzMjQgMzcyLjIwNCAzNC40Njc3IDM3Mi4yMDQgMzQuMzM2NEMzNzIuMjA0IDM0LjIwNTggMzcyLjIwNCAzNC4wNDE5IDM3Mi4yNyAzMy44NDQ3QzM3MS4zNDYgMzMuOTQyOCAzNjkuMTk4IDMzLjk3NiAzNjguMzcyIDMzLjk3NlYzMC4yNjZDMzY5LjgyNiAzMC4yNjYgMzcwLjY4NSAzMC4yNjYgMzcxLjE4IDMwLjI5OTNMMzcyLjUwMiAzMC4zNjUxQzM3Mi40MzYgMzAuMTY3OSAzNzIuNDM2IDMwLjA2OTIgMzcyLjQzNiAyOS45MDUzQzM3Mi40MzYgMjkuNzQxNCAzNzIuNDM2IDI5LjcwODEgMzcyLjUwMiAyOS40NDU4QzM3MS40MTEgMjkuNDc4MyAzNjkuOTI1IDI5LjU0MzggMzY5LjI2NCAyOS41NDM4QzM2OC44MDIgMjkuNTQzOCAzNjcuMzQ4IDI5LjUxMTMgMzY2LjU4NyAyOS40NDU4QzM2Ni42NTQgMzAuMjY2NCAzNjYuNjg2IDMxLjYxMjMgMzY2LjY4NiAzMi41NjQyVjM2Ljg2NTFDMzY2LjY4NiAzNy40ODg1IDM2Ni42MiAzOC43MzU3IDM2Ni41ODcgNDAuMDE2MkMzNjcuNTEzIDM5Ljk1MDMgMzY4LjgwMiAzOS45NTAzIDM2OS4yNjQgMzkuOTUwM0MzNzAuMDI0IDM5Ljk1IDM3MS42NDMgMzkuOTUgMzcyLjYwMSA0MC4wMTU4Wk0zNjQuNjA1IDM5LjEyOTRDMzY0LjQ0IDM4LjgwMDggMzY0LjM0MSAzOC4zMDg4IDM2NC4yNzUgMzguMDQ2MUMzNjIuOTIgMzkuMTYxOSAzNjEuOTk1IDM5LjM5MjQgMzYwLjkzOCAzOS4zOTI0QzM1OC41OTIgMzkuMzkyNCAzNTcuMzM3IDM3LjI5MTMgMzU3LjMzNyAzNC42NjQ5QzM1Ny4zMzcgMzEuNzQzNiAzNTguNzU3IDMwLjAzNjIgMzYxLjE2OSAzMC4wMzYyQzM2Mi40MjUgMzAuMDM2MiAzNjMuNjE0IDMwLjU5NDUgMzY0LjE3NiAzMS4xNTI4QzM2NC4yMDggMzAuODg5OCAzNjQuMzA4IDMwLjM2NDggMzY0LjQ3MyAzMC4wNjg4QzM2My4zMTYgMjkuNTExMyAzNjIuMjU5IDI5LjM0NjYgMzYxLjEwMiAyOS4zNDY2QzM1Ny4yMzcgMjkuMzQ2NiAzNTUuNDUzIDMxLjc0MzYgMzU1LjQ1MyAzNC44Mjg4QzM1NS40NTMgMzguMzA5MSAzNTcuNzk4IDQwLjE0NzEgMzYwLjczOSA0MC4xNDcxQzM2Mi40MjUgNDAuMTQ3MSAzNjMuODEyIDM5LjYyMjIgMzY0LjYwNSAzOS4xMjk0VjM5LjEyOTRaTTM0Mi4zMDMgMjYuODE5QzM0MC41MTkgMjMuNDA0OSAzMzguOCAxOS4xMzczIDMzNy41NzggMTYuMTE2OUgzMzcuMzhDMzM2LjU4NyAxOC4wMjA3IDMzNS4xMzMgMjEuMjcwOSAzMzQuNzM3IDIyLjE4OTlDMzM0LjI3NCAyMy4zMDYxIDMzMy4yNSAyNS41MDU2IDMzMi41ODkgMjYuODE4NkMzMzIuODAzIDI2Ljc1MzggMzMzLjAyNiAyNi43MjA2IDMzMy4yNSAyNi43MjAyQzMzMy40NDggMjYuNzIwMiAzMzMuNjEzIDI2Ljc1MzEgMzMzLjg0NSAyNi44MTg2QzMzNC4xNzUgMjUuOTMyMiAzMzQuNjM4IDI0LjgxNiAzMzUuMTMzIDIzLjYzNDNDMzM1Ljc5NCAyMy42MDE0IDMzNi4zODkgMjMuNTY4OCAzMzYuOTg0IDIzLjU2ODhDMzM3LjYxMiAyMy41Njg4IDMzOC4yNzIgMjMuNjAxNCAzMzguOTMzIDIzLjYzNDNMMzM5LjU5NCAyNS4yMUwzNDAuMjU1IDI2LjgxODZDMzQwLjcxNyAyNi43MjAyIDM0MS4wOCAyNi43MjAyIDM0MS4zMTIgMjYuNzIwMkMzNDEuNjA5IDI2LjcyMDYgMzQxLjg3MyAyNi43MjA2IDM0Mi4zMDMgMjYuODE5VjI2LjgxOVpNMzUzLjYzNiAyOS40NDU0QzM1My40MzggMjkuNTExMyAzNTMuMjczIDI5LjU0MzUgMzUzLjEwNyAyOS41NDM1QzM1Mi45MDkgMjkuNTQzNSAzNTIuNzQ0IDI5LjUxMDkgMzUyLjU0NiAyOS40NDU0QzM1Mi42NDQgMzAuNzU4NCAzNTIuNjc4IDMyLjA3MTQgMzUyLjY3OCAzMy4zNTE5VjM2LjczMzRDMzUyLjE0OSAzNi4yNzM2IDM1MC44NiAzNS4wOTE5IDM0OS4zNzQgMzMuNzEzQzM0Ny44NiAzMi4zMDc0IDM0Ni4zOTQgMzAuODUxMSAzNDQuOTc5IDI5LjM0NjZIMzQ0Ljc0OEMzNDQuNzgxIDMwLjgyNDMgMzQ0LjgxNCAzMi40IDM0NC44MTQgMzMuODExNFYzNS44Nzk5QzM0NC44MTQgMzcuNjUyOCAzNDQuODE0IDM4LjYwNDcgMzQ0LjcxNSA0MC4wMTYyQzM0NC45OCAzOS45NTAzIDM0NS4xMTIgMzkuOTUwMyAzNDUuMzEgMzkuOTUwM0MzNDUuNDQyIDM5Ljk1MDMgMzQ1LjU3NSAzOS45NTAzIDM0NS44MDYgNDAuMDE2MkMzNDUuNzQgMzguNjcwNiAzNDUuNzA3IDM2LjQ3MDggMzQ1LjcwNyAzNS44Nzk5VjMyLjU5NjhDMzQ4LjE4NSAzNC44NjI1IDM1MS4yMjQgMzcuODgyNiAzNTMuNDcxIDQwLjE0NzVIMzUzLjYwM0MzNTMuNjAzIDM4LjkzMjkgMzUzLjUzNyAzNy43MTc5IDM1My41MzcgMzYuNTA0VjM0LjYzMjdDMzUzLjUzNiAzMi40MzI1IDM1My41MzYgMzEuMzQ5MyAzNTMuNjM2IDI5LjQ0NTRaTTM0Mi41NjcgNDAuMDE1OEMzNDIuNTM0IDM5Ljg1MTkgMzQyLjUwMSAzOS43MjA2IDM0Mi41MDEgMzkuNTIzNEMzNDIuNTAxIDM5LjM5MjggMzQyLjUzNCAzOS4yMjgxIDM0Mi41NjcgMzkuMDk2NEMzNDEuMjQ2IDM5LjEyOTcgMzM4Ljg2NyAzOS4xOTUyIDMzOC4zNzEgMzkuMTk1MlYzNC42NjQ5QzMzOS42NiAzNC42NjQ5IDM0MC45NDggMzQuNjY0OSAzNDIuMjM3IDM0Ljc5NjNDMzQyLjIwNCAzNC42MzI0IDM0Mi4xNzEgMzQuNDY3NyAzNDIuMTcxIDM0LjMzNjRDMzQyLjE3MSAzNC4yMDU4IDM0Mi4xNzEgMzQuMDQxOSAzNDIuMjM3IDMzLjg0NDdDMzQxLjMxMiAzMy45NDI4IDMzOS4xOTcgMzMuOTc2IDMzOC4zNzEgMzMuOTc2VjMwLjI2NkMzMzkuNzkyIDMwLjI2NiAzNDAuNjUxIDMwLjI2NiAzNDEuMTc5IDMwLjI5OTNMMzQyLjQ2OCAzMC4zNjUxQzM0Mi40MzUgMzAuMTY3OSAzNDIuNDM1IDMwLjA2OTIgMzQyLjQzNSAyOS45MDUzQzM0Mi40MzUgMjkuNzQxNCAzNDIuNDM1IDI5LjY3NTUgMzQyLjQ2OCAyOS40NDU4QzM0MS4zNzggMjkuNDc4MyAzMzkuODkxIDI5LjU0MzggMzM5LjIzIDI5LjU0MzhDMzM4Ljc2NyAyOS41NDM4IDMzNy4zMTQgMjkuNTExMyAzMzYuNTU0IDI5LjQ0NThDMzM2LjYyIDMwLjI2NjQgMzM2LjY1MyAzMS42MTIzIDMzNi42NTMgMzIuNTY0MlYzNi44NjUxQzMzNi42NTMgMzcuNDg4NSAzMzYuNTg3IDM4LjczNTcgMzM2LjU1NCA0MC4wMTYyQzMzNy41MTIgMzkuOTUwMyAzMzguNzY3IDM5Ljk1MDMgMzM5LjIzIDM5Ljk1MDNDMzM5Ljk5IDM5Ljk1IDM0MS42NDIgMzkuOTUgMzQyLjU2NyA0MC4wMTU4VjQwLjAxNThaTTMzMS4yMDEgMjYuODE5QzMzMC42NzMgMjMuMjQwNiAzMzAuMjEgMTkuNDk4NCAzMjkuODQ3IDE2LjExNjlDMzI5Ljc0OCAxNi4xNDk4IDMyOS43MTQgMTYuMTQ5OCAzMjkuNjQ5IDE2LjExNjlDMzI4Ljk1NSAxNy4zMzE1IDMyOC4xNjIgMTguNjQ0NSAzMjcuNTY3IDE5LjU2MzlDMzI3LjAwNiAyMC40NTAzIDMyNi4zNDUgMjEuNTAwNyAzMjUuNTg1IDIyLjYxNjlDMzIzLjk5OSAyMC41ODE3IDMyMi4zNDcgMTguMDIxMSAzMjEuMjU2IDE2LjExNjlDMzIxLjE5IDE2LjE0OTggMzIxLjE1NyAxNi4xMTY5IDMyMS4wOTEgMTYuMTE2OUMzMjAuNzI4IDE5LjQ5OCAzMjAuMjMyIDIzLjI3MzIgMzE5LjczNiAyNi44MTlDMzIwLjAwMSAyNi43MjA2IDMyMC4xNjYgMjYuNzIwNiAzMjAuMjk4IDI2LjcyMDZDMzIwLjQ5NiAyNi43MjA2IDMyMC42MjggMjYuNzUzNSAzMjAuODU5IDI2LjgxOUMzMjAuOTkyIDI0LjQ1NTMgMzIxLjI1NiAyMi4xMjQ0IDMyMS41NTMgMTkuNjYyM0MzMjIuODQyIDIxLjUzMzYgMzIzLjk2NSAyMy4xNDIyIDMyNS4yMjEgMjQuODQ5M0MzMjYuMjc4IDIzLjIwNzcgMzI3LjM2OCAyMS40MzQ4IDMyOC41NTggMTkuNjI5NEMzMjguODg4IDIyLjE1NyAzMjkuMTg2IDI0LjQ1NTMgMzI5LjM1MSAyNi44MTlDMzI5Ljc4IDI2LjcyMDYgMzMwLjA3OCAyNi43MjA2IDMzMC4yNzYgMjYuNzIwNkMzMzAuNTQgMjYuNzIwNiAzMzAuODA1IDI2LjcyMDYgMzMxLjIwMSAyNi44MTlWMjYuODE5Wk0zMzQuOTY4IDMyLjIwMjhDMzM0Ljk2OCAzMC4yOTg5IDMzMy40NDggMjkuNDQ1NCAzMzEuNTk4IDI5LjQ0NTRDMzMwLjc3MiAyOS40NDU0IDMyOS44OCAyOS41NDM1IDMyOS4yNTIgMjkuNTQzNUMzMjkuMDIxIDI5LjU0MzUgMzI4LjUyNSAyOS41NDM1IDMyNy45OTcgMjkuNDc3NkMzMjguMDMgMzAuNTI4MyAzMjguMDk2IDMxLjQxNDggMzI4LjA5NiAzMi40MzIyVjM2LjkyOTVDMzI4LjA5NiAzNy45MTQ4IDMyOC4wMyAzOC45OTggMzI3Ljk5NyA0MC4wMTU0QzMyOC40MjYgMzkuOTQ5NiAzMjguNzI0IDM5Ljk0OTYgMzI4LjkyMiAzOS45NDk2QzMyOS4xNTMgMzkuOTQ5NiAzMjkuNDg0IDM5Ljk0OTYgMzI5Ljg4IDQwLjAxNTRDMzI5LjgxNSAzOS4wMzE5IDMyOS43ODIgMzguMDQ2NSAzMjkuNzgxIDM3LjA2MDlWMzUuNDJDMzMwLjE0NSAzNS40NTI2IDMzMC41MDggMzUuNDUyNiAzMzAuOTA1IDM1LjQ1MjZDMzMyLjgyIDM1LjQ1MjYgMzM0Ljk2OCAzNC43MzA0IDMzNC45NjggMzIuMjAyOFYzMi4yMDI4Wk0zMjYuMDE0IDM2Ljg5NzNDMzI2LjAxNCAzNS4yNTU4IDMyNC45MjQgMzQuNTMzNiAzMjMuMDQgMzMuNzQ1NkMzMjEuNjg2IDMzLjE4OCAzMjAuOTkyIDMyLjY5NTYgMzIwLjk5MiAzMS42NDQ1QzMyMC45OTIgMzAuNjYgMzIxLjc1MiAzMC4wMzYyIDMyMy4wMDggMzAuMDM2MkMzMjMuODM0IDMwLjAzNjIgMzI0LjU2MSAzMC4zMzE1IDMyNS4yMjIgMzAuODU2OEMzMjUuMjg3IDMwLjQ5NTcgMzI1LjQ1MyAzMC4xMzQ3IDMyNS42NTEgMjkuODM5NEMzMjQuODU4IDI5LjQ3ODMgMzIzLjk5OSAyOS4zNDcgMzIzLjA3NCAyOS4zNDdDMzIwLjM2NSAyOS4zNDcgMzE5LjUwNSAzMC44OTA1IDMxOS41MDUgMzIuMjAzNUMzMTkuNTA1IDMzLjgxMTggMzIwLjI5OSAzNC41NjcyIDMyMi4zNDcgMzUuMzU1M0MzMjMuNjM2IDM1Ljg0NyAzMjQuMjk2IDM2LjQ3MTEgMzI0LjI5NiAzNy41NTQ0QzMyNC4yOTYgMzguNzAzNSAzMjMuNDM3IDM5LjQyNTcgMzIyLjI0OCAzOS40MjU3QzMyMS41NTQgMzkuNDI1NyAzMjAuMzY1IDM5LjA2NDYgMzE5LjUzOSAzOC4zMDk5QzMxOS41MDUgMzguNzM2MSAzMTkuNTA1IDM5LjEzMDQgMzE5LjM3MyAzOS40OTE1QzMxOS45MDIgMzkuNzU0NiAzMjEuMTI1IDQwLjE0NzkgMzIyLjIxNSA0MC4xNDc5QzMyNC45OSA0MC4xNDcxIDMyNi4wMTQgMzguNDM5NyAzMjYuMDE0IDM2Ljg5NzNWMzYuODk3M1pNMzc4LjE1MiAxNy45ODgyQzM3OC4xNTIgMTguOTczIDM3Ny40NTggMTkuNjYyMyAzNzYuNzY0IDIwLjIyMDJDMzc2LjMwMSAxOS41NjM5IDM3NS43NCAxOC42NzcxIDM3NS43NCAxNy45ODgyQzM3NS43NCAxNy4yMzMxIDM3Ni4yNjggMTYuODA2MSAzNzYuOTk1IDE2LjgwNjFDMzc3Ljk4NyAxNi44MDY1IDM3OC4xNTIgMTcuNjkyNiAzNzguMTUyIDE3Ljk4ODJWMTcuOTg4MlpNMzc4LjQ4MiAyNS4wMTMyQzM3OC4xMTkgMjUuMzQxNyAzNzcuMjYgMjUuOTY1NSAzNzYuNTMzIDI1Ljk2NTVDMzc1LjU3NCAyNS45NjU1IDM3NC40MTggMjUuMjc1OSAzNzQuNDE4IDIzLjc5ODZDMzc0LjQxOCAyMi40ODU1IDM3NS4yNzcgMjEuODk0NyAzNzUuODA2IDIxLjU2NjVDMzc3LjAyOCAyMy4yNDA2IDM3Ny4wOTUgMjMuMzM5MSAzNzguNDgyIDI1LjAxMzJaTTM3OS44MDQgMzIuMjAyOEMzNzkuODA0IDMzLjI1MzUgMzc5LjI3NSAzNC40MDI2IDM3Ny43NTUgMzQuNDAyNkMzNzcuMzI2IDM0LjQwMjYgMzc2LjkyOSAzNC40MDI2IDM3Ni41MzMgMzQuMzY5M1YzMC4yNjU2QzM3Ni45MjkgMzAuMTY3NiAzNzcuNDI1IDMwLjEzNDMgMzc3LjcyMiAzMC4xMzQzQzM3OS4wMTEgMzAuMTM0MyAzNzkuODA0IDMwLjg4OTggMzc5LjgwNCAzMi4yMDI4Wk0zMzguNjAyIDIyLjgxNDFDMzM3LjkwOSAyMi44NDY2IDMzNy41NDUgMjIuODQ2NiAzMzcuMDgyIDIyLjg0NjZDMzM2LjUyMSAyMi44NDY2IDMzNi4xOSAyMi44NDY2IDMzNS40NjMgMjIuODE0MUwzMzcuMDgyIDE5LjAwNkwzMzguNjAyIDIyLjgxNDFaTTMzMy4xNTEgMzIuMzAwOEMzMzMuMTUxIDMzLjgxMTEgMzMyLjI1OCAzNC43OTU5IDMzMC44MDUgMzQuNzk1OUMzMzAuNTA3IDM0Ljc5NTkgMzMwLjE3NyAzNC43OTU5IDMyOS43OCAzNC43MzAxVjMwLjIzMjdDMzMwLjI0MyAzMC4xNjY5IDMzMC42MzkgMzAuMTMzOSAzMzEuMDM2IDMwLjEzMzlDMzMyLjQyNCAzMC4xMzQzIDMzMy4xNTEgMzEuMDIxMSAzMzMuMTUxIDMyLjMwMDhaTTM2OS41MjggMjMuNjY3NkMzNjkuNTI4IDIyLjAyNiAzNjguNDM4IDIxLjMwMzkgMzY2LjU1NSAyMC41MTYyQzM2NS4yIDE5Ljk1ODMgMzY0LjUwNiAxOS40OTg4IDM2NC41MDYgMTguNDE1MUMzNjQuNTA2IDE3LjQ2MzIgMzY1LjI2NiAxNi44MDY1IDM2Ni41MjEgMTYuODA2NUMzNjcuMzQ4IDE2LjgwNjUgMzY4LjA3NSAxNy4xMDE3IDM2OC43MzUgMTcuNjI3NUMzNjguODAyIDE3LjI2NjQgMzY4Ljk2NyAxNi45MDQ5IDM2OS4xMzEgMTYuNjQyMkMzNjguMzcyIDE2LjI4MTEgMzY3LjQ3OSAxNi4xMTcyIDM2Ni41ODcgMTYuMTE3MkMzNjMuOTQ0IDE2LjExNzIgMzYyLjk4NiAxNy42NiAzNjIuOTg2IDE5LjAwNkMzNjIuOTg2IDIwLjU4MTcgMzYzLjgxMiAyMS4zMzY4IDM2NS44NjEgMjIuMTI0NEMzNjcuMTQ5IDIyLjYxNjkgMzY3LjgxIDIzLjI0MDYgMzY3LjgxIDI0LjM1NjhDMzY3LjgxIDI1LjQ3MyAzNjYuOTUxIDI2LjE5NTIgMzY1Ljc2MiAyNi4xOTUyQzM2NS4wMzUgMjYuMTk1MiAzNjMuODc5IDI1LjgzNDEgMzYzLjA1MiAyNS4xMTE5QzM2My4wMiAyNS41Mzg5IDM2Mi45ODYgMjUuOSAzNjIuODg3IDI2LjI2MTFDMzYzLjM4MyAyNi41MjM4IDM2NC42MDYgMjYuOTE3NCAzNjUuNzI5IDI2LjkxNzRDMzY4LjUwNCAyNi45MTc0IDM2OS41MjggMjUuMjQzMyAzNjkuNTI4IDIzLjY2NzZWMjMuNjY3NloiIGZpbGw9IiMwMzY1NTUiLz4NCjxwYXRoIGQ9Ik02NDAuNDE2IDIwLjU1NzNDNjM4LjY3MSAxOS44MzU0IDYzNy42MzEgMTkuNTU1MSA2MzYuNTk4IDE5LjU1NTFDNjM1LjUxNCAxOS41NTUxIDYzNC44MTkgMTkuOTE3IDYzNC44MTkgMjAuNDc2NUM2MzQuODE5IDIyLjE2NDUgNjQwLjk2MiAyMS42ODkzIDY0MC45NjIgMjUuNTkzNkM2NDAuOTYyIDI3Ljc0NjQgNjM5LjAyNCAyOC45OTc0IDYzNi4zMzIgMjguOTk3NEM2MzQuMjIgMjguOTk3NCA2MzMuMTggMjguNDg4IDYzMS45ODMgMjcuOTExNlYyNS40OTYyQzYzMy43MSAyNi41NjM1IDYzNC43NjggMjYuOTQwMSA2MzYuMTAxIDI2Ljk0MDFDNjM3LjI1NiAyNi45NDAxIDYzNy44NzkgMjYuNTYzNSA2MzcuODc5IDI1LjkwNjNDNjM3Ljg3OSAyNC4wNjg1IDYzMS43MzcgMjQuNzQxNSA2MzEuNzM3IDIwLjcyMTNDNjMxLjczNyAxOC43ODI3IDYzMy41MzQgMTcuNDk5IDYzNi4zMzIgMTcuNDk5QzYzNy42ODIgMTcuNDk5IDYzOC45MDEgMTcuNzYzNSA2NDAuNDE2IDE4LjM3MDdWMjAuNTU3M1pNNjQ5LjAxNiAyOC40ODQxQzY0Ny45OTIgMjguODMwNiA2NDcuMTI2IDI4Ljk5NTQgNjQ2LjI2MiAyOC45OTU0QzY0My40MDIgMjguOTk1NCA2NDEuNTUyIDI3LjQ0MjIgNjQxLjU1MiAyNS4wNzkyQzY0MS41NTIgMjIuNzU5NCA2NDMuNDczIDIxLjEyMDIgNjQ2LjE1NiAyMS4xMjAyQzY0Ni45ODUgMjEuMTIwMiA2NDguMDQ0IDIxLjMxODIgNjQ4Ljg5MSAyMS42MTIzVjIzLjM4ODFDNjQ4LjIyMSAyMy4wNTYyIDY0Ny40NDQgMjIuODc0MSA2NDYuODA5IDIyLjg3NDFDNjQ1LjI3MyAyMi44NzQxIDY0NC4yODYgMjMuNzM0MyA2NDQuMjg2IDI1LjA2MTlDNjQ0LjI4NiAyNi40MDggNjQ1LjI1NiAyNy4yOTQgNjQ2LjcyIDI3LjI5NEM2NDcuMzM3IDI3LjI5NCA2NDcuODg2IDI3LjE2MjMgNjQ5LjAxNiAyNi43NjhMNjQ5LjAxNiAyOC40ODQxWk02NzEuMzIgMjQuMjA5QzY3MS40MjUgMjMuMTU0OCA2NzIuMDgxIDIyLjU0NTcgNjczLjA4NyAyMi41NDU3QzY3NC4wNzYgMjIuNTQ1NyA2NzQuNzQ2IDIzLjE3MjEgNjc0Ljg1MiAyNC4yMDlINjcxLjMyWk02NzIuOTEgMjEuMTIyOUM2NzAuNCAyMS4xMjI5IDY2OC42MTQgMjIuNzc1NSA2NjguNjE0IDI1LjEwMTJDNjY4LjYxNCAyNy40NDQxIDY3MC40NzEgMjguOTk1NCA2NzMuMzM1IDI4Ljk5NTRDNjczLjk3IDI4Ljk5NTQgNjc1LjUwNCAyOC45OTU0IDY3Ni45NjYgMjcuOTg3VjI2LjUwNDJDNjc1Ljc2OSAyNy4yOTkzIDY3NC45NzcgMjcuNTczMSA2NzMuOTU1IDI3LjU3MzFDNjcyLjM0MSAyNy41NzMxIDY3MS4zNTQgMjYuNzk0OSA2NzEuMjY1IDI1LjQ2NjZINjc3LjExQzY3Ny4yMzIgMjIuNjkzOSA2NzUuMjc5IDIxLjEyMjkgNjcyLjkxIDIxLjEyMjlWMjEuMTIyOVpNNjc4LjA5OSAyOC44NTcySDY4MC42NTRWMjEuMjYyN0g2NzguMDk5VjI4Ljg1NzJaTTY4Ny43NjcgMjYuNzgxNUM2ODcuMjM0IDI3LjIyODEgNjg2Ljc5MiAyNy40MDcyIDY4Ni4yNDYgMjcuNDA3MkM2ODUuMDQzIDI3LjQwNzIgNjg0LjI4MSAyNi40ODM4IDY4NC4yODEgMjUuMTAwNEM2ODQuMjgxIDIzLjU4NDEgNjg1LjA0MyAyMi43MTAxIDY4Ni4zMzEgMjIuNzEwMUM2ODYuNzkyIDIyLjcxMDEgNjg3LjM5NCAyMi45MDggNjg3Ljc2NyAyMy4xNTU5VjI2Ljc4MTVaTTY4Ny43NjcgMTcuNjM5MVYyMS41OTU4QzY4Ny4wNzYgMjEuMjg0NyA2ODYuMzg4IDIxLjEyMDIgNjg1LjY0NCAyMS4xMjAyQzY4My4zMTMgMjEuMTIwMiA2ODEuNyAyMi43MjY2IDY4MS43IDI1LjA1MDdDNjgxLjcgMjcuMzI0OCA2ODMuMzEzIDI4Ljk5NzQgNjg1LjUgMjguOTk3NEM2ODYuMzY3IDI4Ljk5NzQgNjg3LjAzNyAyOC43ODU2IDY4Ny43NjcgMjguMjQzNVYyOC44NTQ5SDY5MC4zMjJWMTcuNjM5MUg2ODcuNzY3Wk02OTQuMTA1IDI0LjIwOUM2OTQuMjExIDIzLjE1NDggNjk0Ljg2NCAyMi41NDU3IDY5NS44NjggMjIuNTQ1N0M2OTYuODU4IDIyLjU0NTcgNjk3LjUzNSAyMy4xNzIxIDY5Ny42NDEgMjQuMjA5SDY5NC4xMDVaTTY5NS42OTQgMjEuMTIyOUM2OTMuMTg0IDIxLjEyMjkgNjkxLjQgMjIuNzc1NSA2OTEuNCAyNS4xMDEyQzY5MS40IDI3LjQ0NDEgNjkzLjI1OSAyOC45OTU0IDY5Ni4xMTkgMjguOTk1NEM2OTYuNzUzIDI4Ljk5NTQgNjk4LjI5IDI4Ljk5NTQgNjk5Ljc1NSAyNy45ODdWMjYuNTA0MkM2OTguNTU3IDI3LjI5OTMgNjk3Ljc2MyAyNy41NzMxIDY5Ni43MzYgMjcuNTczMUM2OTUuMTMxIDI3LjU3MzEgNjk0LjE0IDI2Ljc5NDkgNjk0LjA1MSAyNS40NjY2SDY5OS44OTRDNzAwLjAxNSAyMi42OTM5IDY5OC4wNjEgMjEuMTIyOSA2OTUuNjk0IDIxLjEyMjkiIGZpbGw9IiMwMDlFNEQiLz4NCjxwYXRoIGQ9Ik03MDMuNzIxIDIzLjQzNjhINzAzLjc1OEM3MDQuNTE3IDIxLjg1NjIgNzA1LjM2NiAyMS4xMTUgNzA2LjM1MiAyMS4xMTVDNzA2Ljg2MiAyMS4xMTUgNzA3LjMwMyAyMS4yOTY0IDcwOC4wNDQgMjEuODA3Nkw3MDcuMzQxIDIzLjkxMzNDNzA2LjY3IDIzLjUxODYgNzA2LjIyOSAyMy4zNTM1IDcwNS44MjMgMjMuMzUzNUM3MDQuODg2IDIzLjM1MzUgNzA0LjI4NiAyNC4xNzc1IDcwMy43MjEgMjUuNTcwNFYyOC44NDY2SDcwMS4xNjJWMjEuMjU0MUg3MDMuNzIxVjIzLjQzNjhaTTY4MC43NzUgMTguMDY3NEM2ODEuMDE1IDE4LjY1NzUgNjgwLjU4MyAxOS40ODA1IDY3OS44MTQgMTkuOTA0QzY3OS4wNDEgMjAuMzI3MSA2NzguMjI0IDIwLjE5MjggNjc3Ljk4NiAxOS42MDI3QzY3Ny43NDMgMTkuMDExNyA2NzguMTczIDE4LjE4NzcgNjc4Ljk0NSAxNy43NjY2QzY3OS43MTYgMTcuMzQxMSA2ODAuNTMzIDE3LjQ3NTkgNjgwLjc3NSAxOC4wNjc0WiIgZmlsbD0iIzAwOUU0RCIvPg0KPHBhdGggZD0iTTY1OC4yMiAyNC4wMjMxQzY1OC4yMiAyMS45NjUxIDY1Ni43MTkgMjEuMTIyNiA2NTUuMjM5IDIxLjEyMjZDNjU0LjIzMiAyMS4xMjI2IDY1My40MDQgMjEuNTE4NCA2NTIuNjY0IDIyLjM5MjFINjUyLjYyOVYxNy42MzkySDY1MC4wNzFWMjguODM1M0g2NTIuNjI5VjI0LjAyMzFDNjUzLjIyOCAyMy4yMTYxIDY1My43MzggMjIuODcxMSA2NTQuMzM4IDIyLjg3MTFDNjU1LjEzNCAyMi44NzExIDY1NS42NjIgMjMuMzk4NiA2NTUuNjYyIDI0LjUzMjlWMjcuMjAwOEM2NTYuNTIgMjYuNzg5NiA2NTcuMzkzIDI2LjUzNzQgNjU4LjIyIDI2LjQ0MzhWMjQuMDIzMVpNNjY0LjYzNiAyMS4xMTk5QzY2My41OTQgMjEuMTE5OSA2NjIuNzk5IDIxLjQ4MTEgNjYxLjk4NCAyMi4zNDkzVjIxLjI2MjRINjU5LjQyOFYyNi40MjM0QzY2MC4zMTMgMjYuNTA1OCA2NjEuNDQzIDI2Ljg4NDcgNjYxLjk4NCAyNy41MTA0VjIzLjk2MzRDNjYyLjY1NyAyMy4wMjMyIDY2My4xMzQgMjIuNzA5NyA2NjMuNzcgMjIuNzA5N0M2NjQuNDk0IDIyLjcwOTcgNjY1LjA0NSAyMy4xNTU2IDY2NS4wNDUgMjQuMjI2NFYyOC44MzcySDY2Ny42MDJWMjQuMDI4OUM2NjcuNjAyIDIxLjc5MjYgNjY1LjkwOCAyMS4xMTk5IDY2NC42MzYgMjEuMTE5OVYyMS4xMTk5Wk02NjkuMDE1IDMxLjAxODFINjY2LjA0M1YzMi45ODY0SDY2OC45MDlWMzMuODMxMkg2NjYuMDQzVjM1Ljg2MTlINjY5LjEwM1YzNi43MDU1SDY2NS4wNDZWMzAuMTc1Mkg2NjkuMDE1TDY2OS4wMTUgMzEuMDE4MVpNNjcxLjQ0MiAzNi43MDkzSDY3Mi4zNTJWMzAuMTczM0g2NzEuNDQyVjM2LjcwOTNaTTY3Ni44NTkgMzMuMDQ4NEM2NzcuNTA0IDMzLjA0ODQgNjc3LjkwNCAzMy40NjMxIDY3Ny45MzUgMzQuMTE0Mkg2NzUuNjE2QzY3NS43NDIgMzMuNDM0MiA2NzYuMTYxIDMzLjA0ODQgNjc2Ljg1OSAzMy4wNDg0Wk02NzUuNiAzNC42ODFINjc4Ljg0MkM2NzguODQyIDMzLjA4NjkgNjc4LjA2MiAzMi4zMTggNjc2LjgzOCAzMi4zMThDNjc1LjU2OSAzMi4zMTggNjc0LjY4OCAzMy4xOTI0IDY3NC42ODggMzQuNDk2OUM2NzQuNjg4IDM1LjY4OSA2NzUuNDg0IDM2Ljc4OTggNjc2LjkxNyAzNi43ODk4QzY3Ny42OTggMzYuNzg5OCA2NzguMjAzIDM2LjYyODEgNjc4Ljc2MyAzNi4yODJWMzUuNDU2QzY3OC4yMjIgMzUuNzg1NiA2NzcuNjk4IDM1Ljk3NTggNjc3LjE0NyAzNS45NzU4QzY3Ni4yNjUgMzUuOTc1OCA2NzUuNzQyIDM1LjUzNSA2NzUuNiAzNC42ODA2VjM0LjY4MVpNNjg0Ljc4NiAzMy41MzA5QzY4NC4yNjMgMzMuMTk2NiA2ODMuOTE0IDMzLjA5ODUgNjgzLjUxNSAzMy4wOTg1QzY4Mi42ODIgMzMuMDk4NSA2ODIuMTA1IDMzLjY5NDUgNjgyLjEwNSAzNC41NjdDNjgyLjEwNSAzNS40NTYgNjgyLjcxOSAzNS45OTE2IDY4My42NjggMzUuOTkxNkM2ODQuMDU4IDM1Ljk5MTYgNjg0LjQzIDM1Ljg5NzMgNjg0Ljg4OCAzNS43MDU5VjM2LjU0MjZDNjg0LjU4MiAzNi42Nzc0IDY4My45OTcgMzYuNzg5OCA2ODMuNTE1IDM2Ljc4OThDNjgyLjEzNiAzNi43ODk4IDY4MS4xOCAzNS45MDYyIDY4MS4xOCAzNC42NDMyQzY4MS4xOCAzMy4yMTc4IDY4Mi4wNTQgMzIuMzE4IDY4My40NTMgMzIuMzE4QzY4My45ODcgMzIuMzE4IDY4NC4zNDYgMzIuNDMzOSA2ODQuNzg3IDMyLjYxNDVMNjg0Ljc4NiAzMy41MzA5Wk02ODguOTM0IDMyLjQwMDRINjkwLjM5NVYzMy4xNjUxSDY4OC45MzRWMzUuMzc1MkM2ODguOTM0IDM1Ljg4MTEgNjg5LjMyNyAzNi4wMjc0IDY4OS41OTMgMzYuMDI3NEM2ODkuOTIyIDM2LjAyNzQgNjkwLjI2MiAzNS45MiA2OTAuNjMgMzUuNzA3OVYzNi41MDM3QzY5MC4zMSAzNi42Njc4IDY4OS44MiAzNi43ODk4IDY4OS41MTkgMzYuNzg5OEM2ODguNTI4IDM2Ljc4OTggNjg4LjAyNyAzNi4yMTYxIDY4OC4wMjcgMzUuNDM5MVYzMy4xNjUxSDY4Ny4yMjRWMzMuMDcwM0w2ODguOTM0IDMxLjUxMDJWMzIuNDAwNFpNNjkzLjg3NiAzMi40MDA0VjMzLjM5NjlINjkzLjg5NUM2OTQuMzU5IDMyLjYzNDUgNjk0LjggMzIuMzE4IDY5NS4yMyAzMi4zMThDNjk1LjYwMSAzMi4zMTggNjk1Ljk0NyAzMi40ODAxIDY5Ni4zMjkgMzIuODE2Nkw2OTUuODQ3IDMzLjU2NDRDNjk1LjU3IDMzLjMwOTEgNjk1LjIxMSAzMy4xMzMxIDY5NC45OTUgMzMuMTMzMUM2OTQuMzY4IDMzLjEzMzEgNjkzLjg3NiAzMy43MjY4IDY5My44NzYgMzQuNDYyNlYzNi43MDkzSDY5Mi45NjdWMzIuNDAwNEg2OTMuODc2Wk03MDUuNjU3IDMzLjUzMDlDNzA1LjEzMSAzMy4xOTY2IDcwNC43ODIgMzMuMDk4NSA3MDQuMzgxIDMzLjA5ODVDNzAzLjU0OSAzMy4wOTg1IDcwMi45NzcgMzMuNjk0NSA3MDIuOTc3IDM0LjU2N0M3MDIuOTc3IDM1LjQ1NiA3MDMuNTkyIDM1Ljk5MTYgNzA0LjUzNSAzNS45OTE2QzcwNC45MjUgMzUuOTkxNiA3MDUuMjk1IDM1Ljg5NzMgNzA1Ljc2IDM1LjcwNTlWMzYuNTQyNkM3MDUuNDQ3IDM2LjY3NzQgNzA0Ljg2MiAzNi43ODk4IDcwNC4zOCAzNi43ODk4QzcwMy4wMDQgMzYuNzg5OCA3MDIuMDQ0IDM1LjkwNjIgNzAyLjA0NCAzNC42NDMyQzcwMi4wNDQgMzMuMjE3OCA3MDIuOTIyIDMyLjMxOCA3MDQuMzIgMzIuMzE4QzcwNC44NTUgMzIuMzE4IDcwNS4yMTIgMzIuNDMzOSA3MDUuNjU3IDMyLjYxNDVMNzA1LjY1NyAzMy41MzA5Wk02OTguNzQyIDM2LjcwOTNINjk5LjY1MlYzMi40MDA4SDY5OC43NDJWMzYuNzA5M1oiIGZpbGw9IiMwMDlFNEQiLz4NCjxwYXRoIGQ9Ik02OTkuNjg0IDMwLjg1MjVDNjk5Ljc3MyAzMS4wNjA0IDY5OS42MTggMzEuMzU0NCA2OTkuMzQ0IDMxLjUwNDFDNjk5LjA2OCAzMS42NTQzIDY5OC43NzYgMzEuNjA2MiA2OTguNjkzIDMxLjM5NzhDNjk4LjYxIDMxLjE4NzQgNjk4Ljc2MSAzMC44OTU4IDY5OS4wMzggMzAuNzQ1NkM2OTkuMzExIDMwLjU5MzUgNjk5LjYwMSAzMC42NDIxIDY5OS42ODQgMzAuODUyNVYzMC44NTI1Wk02NTguOTQgMzEuMjAwOUM2NTguNzc5IDMxLjIwMDkgNjU4LjcxMSAzMS4yMjU1IDY1OC42NDYgMzEuMjkzOEM2NTguNjIgMzEuMzIwMyA2NTguNjEgMzEuMzQ3MiA2NTguNiAzMS40MDExTDY1Ny43ODQgMzQuMjg3QzY1Ny41OTMgMzUuMjk5MiA2NTYuMjU5IDM2LjMwOTkgNjU0LjUyMSAzNi4zMDk5SDY1Mi4xMDRMNjUyLjUyMyAzNC44MjdINjU0LjA3NkM2NTQuMjM0IDM0LjgyNyA2NTQuMzU4IDM0Ljc3MjEgNjU0LjQ2MiAzNC42NjQzQzY1NC41IDM0LjYyMjUgNjU0LjU1IDM0LjU1NyA2NTQuNTU2IDM0LjQ4OTZMNjU1LjIwMSAzMS45NjgxQzY1NS4zOTEgMzAuOTU1NSA2NTYuNTM4IDI5LjgzNjkgNjU4LjI3NiAyOS44MzY5SDY2MC43NTFMNjYwLjQzNSAzMS4yMDA5SDY1OC45NFpNNjU5LjQ5NyAzMi45NTk2TDY1OS43NzMgMzIuMDI1OUg2NjIuMjg4QzY2Mi41OTggMzAuNjcyIDY2Mi4zNTQgMjkuNDE3NyA2NjEuNDczIDI4LjU5NjFDNjU5LjY4OSAyNi45MzMyIDY1NS45NTcgMjcuNDk4MyA2NTMuMTc3IDI5Ljk3NzlDNjUyLjc0MyAzMC4zNjMgNjUyLjM3NiAzMC43NzkzIDY1Mi4wNDIgMzEuMjA0OEg2NTMuNTU2TDY1My4yMDQgMzIuMTQwNEg2NTEuMzk1QzY1MS4yMjIgMzIuNDM1NCA2NTEuMDYgMzIuNzI4MSA2NTAuOTM2IDMzLjAyNUg2NTMuMDgxTDY1Mi43MzcgMzMuOTYwN0g2NTAuNjNDNjUwLjI2OSAzNS4zOTAxIDY1MC40OTkgMzYuNzIzMyA2NTEuNDA2IDM3LjU2OTlDNjUzLjE2NyAzOS4yMTE2IDY1Ni44ODggMzguNjM0NiA2NTkuNjY3IDM2LjE1NTRDNjYwLjE1MyAzNS43MjQyIDY2MC41NTUgMzUuMjU4NyA2NjAuOTE4IDM0Ljc4MDhINjU4Ljk3M0w2NTkuMjY5IDMzLjg0NzFINjYxLjU0M0M2NjEuNzEgMzMuNTUwMSA2NjEuODYzIDMzLjI1NjUgNjYxLjk4MyAzMi45NTk2SDY1OS40OTdaIiBmaWxsPSIjMDA5RTREIi8+DQo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNThfMTExKSI+DQo8cGF0aCBkPSJNNzc1LjA2OCA0MS4yMjc0Qzc2Ni4yODUgNDIuMDQ2MyA3NTcuMTMxIDQwLjc1NjQgNzU1Ljg0OCAzMy44MTlDNzU1LjIyMSAzMC4zOTkgNzU2Ljc2NSAyNi43NzI1IDc1OC44MSAyNC41MTg0VjIzLjMxNDhDNzU1LjEyNiAyNi41OCA3NTMuMTMgMzAuNzExNSA3NTQuMjggMzUuNTkyQzc1NS43NDggNDEuODUxOCA3NjMuNjAzIDQ1LjM5NjcgNzc1LjU5NSA0NC4yMTk1Qzc4MC4zNDIgNDMuNzU0NSA3ODYuNTUgNDIuMjEyIDc5MC44NjkgMzkuODE0NFYzNi40MTA5Qzc4Ni45NDkgMzguNzcxMyA3ODAuNDY4IDQwLjcyMTEgNzc1LjA2OCA0MS4yMjc0VjQxLjIyNzRaTTc5OC4yMDUgMjMuMjMzNUM3OTYuMTIyIDEyLjk1MzMgNzc2LjM3MyAxMi4zMDE2IDc2My42NDMgMjAuMTMzOFYyMC45OTg5Qzc3Ni4zNTkgMTQuMzkxNSA3OTQuMzk1IDE0LjQzMTcgNzk2LjAzNyAyMy45MDE2Qzc5Ni41ODkgMjcuMDM0MiA3OTQuODQzIDMwLjI5NzggNzkxLjcyMyAzMi4xNzdWMzQuNjM0MkM3OTUuNDc2IDMzLjI0MzIgNzk5LjMyNCAyOC43NDQyIDc5OC4yMDUgMjMuMjMzNVYyMy4yMzM1WiIgZmlsbD0iIzBFN0RDMiIvPg0KPHBhdGggZD0iTTc5MC4xNTkgMjEuNzM2OEg3ODcuODU2VjMyLjEwM0M3ODcuODU2IDMzLjMxNzkgNzg4LjQzNyAzNC4zNzQ0IDc5MC4xNTkgMzQuNTQzMlYyMS43MzY4Wk03NjIuNzM5IDI1LjUyMTdINzYwLjQzMkw3NjAuNDMxIDMyLjI5NDNDNzYwLjQzMSAzMy41MTM0IDc2MS4wMTMgMzQuNTY4OCA3NjIuNzM5IDM0LjczNDRWMjUuNTIxN1YyNS41MjE3Wk03NjAuNDMyIDIyLjA1MjFINzYyLjczMlYyNC4yNTg0SDc2MC40MzJWMjIuMDUyMVpNNzc2LjUzIDM0LjYyNzJDNzc0LjY2NiAzNC42MjcyIDc3My44NzcgMzMuMzE3NyA3NzMuODc3IDMyLjAyOFYyMy4wMzU1SDc3Ni4xNlYyNS41MjE3SDc3Ny44NzlWMjcuMzg1M0g3NzYuMTZWMzEuODg1NEM3NzYuMTYgMzIuNDExMyA3NzYuNDA3IDMyLjcwNDQgNzc2Ljk1IDMyLjcwNDRINzc3Ljg3OVYzNC42MjcyTDc3Ni41MyAzNC42MjcyVjM0LjYyNzJaTTc4MC43MzEgMzAuNzk2MUM3ODAuNzMxIDMxLjk3NjggNzgxLjQ2MSAzMi44NDQ2IDc4Mi43NTQgMzIuODQ0NkM3ODMuNzY2IDMyLjg0NDYgNzg0LjI2NiAzMi41NjA1IDc4NC44NSAzMS45NzY4TDc4Ni4yNjEgMzMuMzM0OUM3ODUuMzU3IDM0LjIzNzkgNzg0LjQwOSAzNC43ODcgNzgyLjczNyAzNC43ODdDNzgwLjU1MiAzNC43ODcgNzc4LjQ1OSAzMy41ODE5IDc3OC40NTkgMzAuMDY4NkM3NzguNDU5IDI3LjA2NTEgNzgwLjI4OCAyNS4zNjczIDc4Mi42ODYgMjUuMzY3M0M3ODUuMTI0IDI1LjM2NzMgNzg2LjUyNSAyNy4zNTQ5IDc4Ni41MjUgMjkuOTYzOVYzMC43OTYzSDc4MC43MzFWMzAuNzk2MVpNNzgyLjU4NiAyNy4yNzU2Qzc4MS44MDUgMjcuMjc1NiA3ODEuMjA0IDI3LjY4MjMgNzgwLjk1IDI4LjIzMDlDNzgwLjgwMiAyOC41NjA3IDc4MC43NDcgMjguODE3NyA3ODAuNzMxIDI5LjIyMjlINzg0LjI0OUM3ODQuMjA0IDI4LjIzMDkgNzgzLjc1OSAyNy4yNzU2IDc4Mi41ODYgMjcuMjc1NlpNNzY4LjkzOSAyNy4zODUzQzc2OS42MDggMjcuMzg1MyA3NjkuODg3IDI3LjcxOTggNzY5Ljg4NyAyOC4yNjI2VjM0LjY0MDZINzcyLjE3VjI4LjI0OTJDNzcyLjE3IDI2Ljk1NDIgNzcxLjQ4NyAyNS41MjQxIDc2OS40ODIgMjUuNTI0MUw3NjQuNzY2IDI1LjUyMTdWMzQuNjQwNkg3NjcuMDVWMjcuMzg1M0g3NjguOTM5VjI3LjM4NTNaTTc5Mi42MzcgMjMuNTg5MUM3OTIuMTI5IDIzLjU4OTEgNzkxLjcyNCAyMy4xNzU0IDc5MS43MjQgMjIuNjYyOUM3OTEuNzI0IDIyLjE1MjkgNzkyLjEyOSAyMS43MzY4IDc5Mi42MzcgMjEuNzM2OEM3OTMuMTQyIDIxLjczNjggNzkzLjU1NiAyMi4xNTI5IDc5My41NTYgMjIuNjYyOUM3OTMuNTU2IDIzLjE3NTQgNzkzLjE0MiAyMy41ODkxIDc5Mi42MzcgMjMuNTg5MVpNNzkyLjYzNyAyMS44OTEyQzc5Mi4yMTggMjEuODkxMiA3OTEuODgyIDIyLjI0MDcgNzkxLjg4MiAyMi42NjI5Qzc5MS44ODIgMjMuMDg3NiA3OTIuMjE4IDIzLjQzMDkgNzkyLjYzNyAyMy40MzA5Qzc5My4wNTUgMjMuNDMwOSA3OTMuNDAyIDIzLjA4NzYgNzkzLjQwMiAyMi42NjI5Qzc5My40MDIgMjIuMjQwNyA3OTMuMDU1IDIxLjg5MTIgNzkyLjYzNyAyMS44OTEyWk03OTMuMDQzIDIzLjIxOEg3OTIuODcyQzc5Mi44NjQgMjMuMjE3OSA3OTIuODU3IDIzLjIxNTcgNzkyLjg1MSAyMy4yMTE2Qzc5Mi44NDUgMjMuMjA3NSA3OTIuODQgMjMuMjAxNyA3OTIuODM3IDIzLjE5NDlMNzkyLjYwNSAyMi43OTdDNzkyLjU5OCAyMi43ODg1IDc5Mi41NzkgMjIuNzc4OCA3OTIuNTczIDIyLjc3ODhINzkyLjQ2N1YyMy4xNzU0Qzc5Mi40NjcgMjMuMTk1IDc5Mi40NTMgMjMuMjE4MSA3OTIuNDI4IDIzLjIxODFINzkyLjI3NEM3OTIuMjUxIDIzLjIxODEgNzkyLjIzNSAyMy4xOTUgNzkyLjIzNSAyMy4xNzU0VjIyLjE3NDlDNzkyLjIzNSAyMi4xMTY0IDc5Mi4yNTQgMjIuMDkyNCA3OTIuMzA1IDIyLjA4NUM3OTIuMzYxIDIyLjA3OSA3OTIuNTA1IDIyLjA3MTYgNzkyLjU4NiAyMi4wNzE2Qzc5Mi44NzIgMjIuMDcxNiA3OTMuMDM5IDIyLjE1NjYgNzkzLjAzOSAyMi40MjQ0VjIyLjQ0NEM3OTMuMDM5IDIyLjYwOTQgNzkyLjk1OSAyMi42OTk1IDc5Mi44MzMgMjIuNzM5N0w3OTMuMDc0IDIzLjE1NDdDNzkzLjA3OCAyMy4xNjQgNzkzLjA4IDIzLjE3MzkgNzkzLjA4IDIzLjE4NEM3OTMuMDggMjMuMTk5NyA3OTMuMDcyIDIzLjIxOCA3OTMuMDQzIDIzLjIxOFYyMy4yMThaTTc5Mi44MjEgMjIuNDI0NEM3OTIuODIxIDIyLjMxMjcgNzkyLjc1MiAyMi4yNzczIDc5Mi42MDUgMjIuMjc3M0g3OTIuNDU5VjIyLjU5NDdDNzkyLjQ4MiAyMi41OTQ3IDc5Mi41ODYgMjIuNTk5NiA3OTIuNjA1IDIyLjU5OTZDNzkyLjc1MiAyMi41OTk2IDc5Mi44MjEgMjIuNTUgNzkyLjgyMSAyMi40NDRWMjIuNDI0NFoiIGZpbGw9IiMwRTdEQzIiLz4NCjwvZz4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMV81OF8xMTEpIj4NCjxwYXRoIGQ9Ik01MzMuNzczIDIwLjk5MTFDNTI5LjI2MyAyMC45OTExIDUyNS41OTkgMjQuNjU0NyA1MjUuNTk5IDI5LjE2NDRDNTI1LjU5OSAzMy42NzQxIDUyOS4yNjMgMzcuMzM3NyA1MzMuNzczIDM3LjMzNzdDNTM4LjI4MiAzNy4zMzc3IDU0MS45NDYgMzMuNjc0MSA1NDEuOTQ2IDI5LjE2NDRDNTQxLjk0NiAyNC42NTQ3IDUzOC4yODIgMjAuOTkxMSA1MzMuNzczIDIwLjk5MTFaTTUzMy43NzMgMzYuNTE4NkM1MjkuNzEzIDM2LjUxODYgNTI2LjQxOSAzMy4yMTUgNTI2LjQxOSAyOS4xNjQ0QzUyNi40MTkgMjUuMTEzNyA1MjkuNzEzIDIxLjgxMDIgNTMzLjc3MyAyMS44MTAyQzUzNy44MzIgMjEuODEwMiA1NDEuMTI3IDI1LjExMzcgNTQxLjEyNyAyOS4xNjQ0QzU0MS4xMjcgMzMuMjE1IDUzNy44MzIgMzYuNTE4NiA1MzMuNzczIDM2LjUxODZaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggZD0iTTUzNi42OSAyMy45MjUyQzUzNi42NjMgMjMuOTA3MiA1MzYuNjI3IDIzLjg5ODIgNTM2LjU5MSAyMy44OTgyQzUzNi40ODMgMjMuODk4MiA1MzYuNDAyIDIzLjk3OTIgNTM2LjQwMiAyNC4wODczVjI2LjY0MzdDNTM2LjQwMiAyNi43MzM3IDUzNi4zMyAyNi44MDU3IDUzNi4yNCAyNi44MDU3SDUzMS4yOUM1MzEuMiAyNi44MDU3IDUzMS4xMzcgMjYuNzMzNyA1MzEuMTI4IDI2LjY0MzdWMjQuMDg3M0M1MzEuMTI4IDI0LjA1MTMgNTMxLjExOSAyNC4wMjQyIDUzMS4xMDEgMjMuOTg4MkM1MzEuMDQ3IDIzLjg5ODIgNTMwLjkzIDIzLjg3MTIgNTMwLjgzOSAyMy45MjUyQzUyOS4wMTIgMjUuMDUwNCA1MjcuOTA1IDI3LjAwMzcgNTI3LjkwNSAyOS4xNjQxQzUyNy45MDUgMzEuMzI0NCA1MjkuMDEyIDMzLjI3NzcgNTMwLjg1NyAzNC40MDI5QzUzMC44ODUgMzQuNDIwOSA1MzAuOTIxIDM0LjQyOTkgNTMwLjk1NyAzNC40Mjk5QzUzMS4wNjUgMzQuNDI5OSA1MzEuMTQ2IDM0LjM0ODkgNTMxLjE0NiAzNC4yNDA5VjMxLjY4NDVDNTMxLjE0NiAzMS41OTQ0IDUzMS4yMTggMzEuNTMxNCA1MzEuMzA4IDMxLjUyMjRINTM2LjI1OEM1MzYuMzQ4IDMxLjUyMjQgNTM2LjQyIDMxLjU5NDQgNTM2LjQyIDMxLjY4NDVWMzQuMjQwOUM1MzYuNDIgMzQuMjc2OSA1MzYuNDI5IDM0LjMwMzkgNTM2LjQ0NyAzNC4zMzk5QzUzNi41MDEgMzQuNDI5OSA1MzYuNjE4IDM0LjQ1NjkgNTM2LjcwOCAzNC40MDI5QzUzOC41NTQgMzMuMjc3NyA1MzkuNjYxIDMxLjMyNDQgNTM5LjY2MSAyOS4xNjQxQzUzOS42NjEgMjcuMDAzNyA1MzguNTM2IDI1LjA1MDQgNTM2LjY5IDIzLjkyNTJWMjMuOTI1MlpNNTMwLjE5MSAzMi4zNjg2TDUzMC4yMTggMzIuNjc0Nkw1MzAuMDIgMzIuNDMxNkM1MjguNDk5IDMwLjUxNDMgNTI4LjQ5OSAyNy44MDQ4IDUzMC4wMiAyNS44ODc1TDUzMC4xOTEgMjUuNjcxNUw1MzAuMjE4IDI1LjY0NDVMNTMwLjE5MSAyNS45NTk2QzUzMC4xNjQgMjYuMjExNiA1MzAuMTU1IDI2LjQ3MjYgNTMwLjE1NSAyNi43MzM3VjMxLjU4NTRDNTMwLjE1NSAzMS44NDY1IDUzMC4xNzMgMzIuMTA3NSA1MzAuMTkxIDMyLjM2ODZaTTUzNi40MDIgMzAuMzg4M0M1MzYuNDAyIDMwLjQ3ODMgNTM2LjMzIDMwLjU1MDMgNTM2LjI0IDMwLjU1MDNINTMxLjI5QzUzMS4yIDMwLjU1MDMgNTMxLjEzNyAzMC40NzgzIDUzMS4xMjggMzAuMzg4M1YyNy45Mzk5QzUzMS4xMjggMjcuODQ5OSA1MzEuMiAyNy43Nzc4IDUzMS4yOSAyNy43Nzc4SDUzNi4yNEM1MzYuMzMgMjcuNzc3OCA1MzYuNDAyIDI3Ljg0OTkgNTM2LjQwMiAyNy45Mzk5VjMwLjM4ODNaTTUzNy41MTkgMzIuNDMxNkw1MzcuMzIxIDMyLjY3NDZMNTM3LjM0OCAzMi4zNjg2QzUzNy4zNzUgMzIuMTE2NSA1MzcuMzg0IDMxLjg1NTUgNTM3LjM4NCAzMS41OTQ0VjI2LjczMzdDNTM3LjM4NCAyNi40NzI2IDUzNy4zNzUgMjYuMjExNiA1MzcuMzQ4IDI1Ljk1OTZMNTM3LjMzOSAyNS44MjQ1TDUzNy4zMyAyNS42ODA1VjI1LjY0NDVMNTM3LjUxOSAyNS44ODc1QzUzOC4yNTcgMjYuODA1NyA1MzguNjYyIDI3Ljk3NTkgNTM4LjY2MiAyOS4xNTUxQzUzOC42NjIgMzAuMzM0MiA1MzguMjU3IDMxLjUxMzQgNTM3LjUxOSAzMi40MzE2VjMyLjQzMTZaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggZD0iTTU1NC4yNzYgMjkuMDIwMkM1NTQuMjMxIDI5LjAwMjIgNTU0LjE3NyAyOC45ODQyIDU1NC4xNzcgMjguOTMwMkM1NTQuMTc3IDI4Ljg5NDIgNTU0LjE5NSAyOC44NjcyIDU1NC4yMzEgMjguODQ5MkM1NTQuMjk0IDI4LjgyMjIgNTU1Ljg1MSAyOC4yNjQxIDU1NS44NTEgMjYuNDI3OEM1NTUuODUxIDI0LjM4NDUgNTU0LjQ3NCAyMy4xNjkzIDU1Mi4xNTIgMjMuMTY5M0g1NDYuNTI2VjM1LjE3NzJINTUyLjY2NUM1NTQuNDU2IDM1LjE3NzIgNTU2LjM4MiAzMy45MDggNTU2LjM4MiAzMS44NjQ2QzU1Ni4zODIgMjkuOTExMyA1NTQuOTA2IDI5LjIyNzIgNTU0LjI3NiAyOS4wMjAyVjI5LjAyMDJaTTU0OS4zNjEgMjUuNjI2N0M1NDkuMzYxIDI1LjU4MTcgNTQ5LjM5NyAyNS41NDU2IDU0OS40NDIgMjUuNTQ1Nkg1NTEuNjc1QzU1Mi40MTMgMjUuNTQ1NiA1NTIuOTE3IDI2LjA0MDcgNTUyLjkxNyAyNi43Nzg4QzU1Mi45MTcgMjcuMzU0OSA1NTIuNDY3IDI3Ljk3NiA1NTEuNjIxIDI3Ljk3Nkg1NDkuNDQyQzU0OS4zOTcgMjcuOTc2IDU0OS4zNjEgMjcuOTQgNTQ5LjM2MSAyNy44OTVWMjUuNjI2N1pNNTUxLjY3NSAzMi44MDk4SDU0OS40NDJDNTQ5LjM5NyAzMi44MDk4IDU0OS4zNjEgMzIuNzczOCA1NDkuMzYxIDMyLjcyODhWMzAuMzM0NEM1NDkuMzYxIDMwLjI4OTQgNTQ5LjM5NyAzMC4yNTM0IDU0OS40NDIgMzAuMjUzNEg1NTEuNjIxQzU1Mi42OTIgMzAuMjUzNCA1NTMuMzA0IDMwLjcxMjUgNTUzLjMwNCAzMS41MjI2QzU1My4zMDQgMzIuMzU5NyA1NTIuNzM3IDMyLjgwOTggNTUxLjY3NSAzMi44MDk4VjMyLjgwOThaTTU3NS4zODQgMjcuOTQ5TDU3NC45NTIgMjcuODU5QzU3My45OCAyNy42NTIgNTczLjAzNSAyNy4zOTA5IDU3My4wMzUgMjYuNTUzOEM1NzMuMDM1IDI1LjcxNjcgNTczLjgxOCAyNS4zMzg2IDU3NC41OTIgMjUuMzM4NkM1NzUuNTAxIDI1LjMzODYgNTc2LjQwMSAyNS43NDM3IDU3Ny4wODYgMjYuNDQ1OEw1NzguODY4IDI0LjY4MTVDNTc4LjEwMyAyMy44MzU0IDU3Ni43NDQgMjIuODYzMiA1NzQuNTQ3IDIyLjg2MzJDNTcxLjkwMSAyMi44NjMyIDU3MC4xMTggMjQuMzY2NSA1NzAuMTE4IDI2LjYwNzhDNTcwLjExOCAyOC45NzUyIDU3MS45ODIgMjkuODY2MyA1NzMuNTQ4IDMwLjE5OTRMNTczLjk3MSAzMC4yODk0QzU3NS40OTIgMzAuNjEzNSA1NzYuMjEyIDMwLjg1NjUgNTc2LjIxMiAzMS43MjA2QzU3Ni4yMTIgMzIuNDk0NyA1NzUuNTE5IDMzLjAwNzggNTc0LjQ5MyAzMy4wMDc4QzU3My4yODcgMzMuMDA3OCA1NzIuMjE2IDMyLjQ3NjcgNTcxLjQwNiAzMS40Nzc2TDU2OS41NzggMzMuMjY4OUM1NzAuNTUxIDM0LjQyMTEgNTcxLjgzOCAzNS40NjUyIDU3NC41MjkgMzUuNDY1MkM1NzYuODI1IDM1LjQ2NTIgNTc5LjE1NiAzNC4xMzMgNTc5LjE1NiAzMS41NzY2QzU3OS4xNDcgMjguOTU3MiA1NzcuMzY1IDI4LjM2MzEgNTc1LjM4NCAyNy45NDlWMjcuOTQ5Wk01OTkuMTAzIDIzLjE2OTNWMjcuNTYyQzU5OS4xMDMgMjcuNjA3IDU5OS4wNjcgMjcuNjQzIDU5OS4wMjIgMjcuNjQzSDU5NS4zMzFDNTk1LjI4NiAyNy42NDMgNTk1LjI1IDI3LjYwNyA1OTUuMjUgMjcuNTYyVjIzLjE2OTNINTkyLjIyNlYzNS4xNzcySDU5NS4yNVYzMC40NjA0QzU5NS4yNSAzMC40MTU0IDU5NS4yODYgMzAuMzc5NCA1OTUuMzMxIDMwLjM3OTRINTk5LjAyMkM1OTkuMDY3IDMwLjM3OTQgNTk5LjEwMyAzMC40MTU0IDU5OS4xMDMgMzAuNDYwNFYzNS4xNzcySDYwMi4xNDZWMjMuMTY5M0g1OTkuMTAzWk01ODYuMTQxIDMyLjcxOThDNTg0Ljc4MiAzMi43MTk4IDU4My4zMTUgMzEuNTg1NiA1ODMuMzE1IDI5LjA5MjJDNTgzLjMxNSAyNi44MTQ4IDU4NC42OTIgMjUuNjI2NyA1ODYuMDUxIDI1LjYyNjdDNTg3LjA0MSAyNS42MjY3IDU4Ny43MzQgMjYuMDQwNyA1ODguMjgzIDI2Ljk1ODlMNTkwLjYwNiAyNS40MTk2QzU4OS40MTggMjMuNjczMyA1ODguMDA0IDIyLjg4MTIgNTg2LjAzMyAyMi44ODEyQzU4Mi4xNzEgMjIuODgxMiA1ODAuNDQzIDI2LjAwNDcgNTgwLjQ0MyAyOS4wOTIyQzU4MC40NDMgMzIuODQ1OCA1ODIuNzI5IDM1LjQ2NTIgNTg1Ljk5NyAzNS40NjUyQzU4OC40MjcgMzUuNDY1MiA1ODkuNTM1IDM0LjU3NDEgNTkwLjY5NiAzMi45MjY4TDU4OC4zNTUgMzEuMzUxNkM1ODcuODMzIDMyLjE5NzcgNTg3LjI2NiAzMi43MTk4IDU4Ni4xNDEgMzIuNzE5OFpNNTYzLjE3OCAyMi44NjMyQzU1OS44NzUgMjIuODYzMiA1NTcuNjYxIDI1LjM5MjYgNTU3LjY2MSAyOS4xNjQyQzU1Ny42NjEgMzIuOTM1OCA1NTkuODc1IDM1LjQ2NTIgNTYzLjE3OCAzNS40NjUyQzU2Ni40ODIgMzUuNDY1MiA1NjguNjk2IDMyLjkzNTggNTY4LjY5NiAyOS4xNjQyQzU2OC42OTYgMjUuMzkyNiA1NjYuNDgyIDIyLjg2MzIgNTYzLjE3OCAyMi44NjMyVjIyLjg2MzJaTTU2My4xNzggMzIuNzE5OEM1NjEuNTU4IDMyLjcxOTggNTYwLjUxNCAzMS4zMjQ2IDU2MC41MTQgMjkuMTY0MkM1NjAuNTE0IDI3LjAxMjkgNTYxLjU1OCAyNS42MjY3IDU2My4xNzggMjUuNjI2N0M1NjQuODA4IDI1LjYyNjcgNTY1Ljg2MSAyNy4wMTI5IDU2NS44NjEgMjkuMTY0MkM1NjUuODYxIDMxLjMyNDYgNTY0LjgwOCAzMi43MTk4IDU2My4xNzggMzIuNzE5OFoiIGZpbGw9IiNGODAwMDAiLz4NCjwvZz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTQ2LjM0NCAyMi4xODExQzE0Ny41OTUgMjIuMjg1NCAxNDguODQ1IDIxLjU1NTMgMTQ5LjYyNyAyMC42Mjk4QzE1MC4zOTUgMTkuNjc4MSAxNTAuOTAzIDE4LjQwMDUgMTUwLjc3MyAxNy4wOTY5QzE0OS42NjYgMTcuMTQ5MSAxNDguMjk4IDE3LjgyNjkgMTQ3LjUxNyAxOC43Nzg2QzE0Ni44IDE5LjU5OTkgMTQ2LjE4OCAyMC45Mjk2IDE0Ni4zNDQgMjIuMTgxMVpNMTQ3Ljg0MSAyMy4wNzk3QzE0OC42NTMgMjIuNzYwNiAxNDkuNjU4IDIyLjM2NTYgMTUwLjc2IDIyLjQyOTFDMTUxLjQ2MyAyMi40ODEyIDE1My40OTUgMjIuNjg5OCAxNTQuNzk4IDI0LjYxOTJDMTU0Ljc5MiAyNC42MjM3IDE1NC43NzggMjQuNjMyMyAxNTQuNzU5IDI0LjY0NUMxNTQuNDM2IDI0Ljg1NDggMTUyLjM5IDI2LjE4NzEgMTUyLjQxNCAyOC44MTY5QzE1Mi40MzkgMzEuOTQ5OSAxNTQuOTg4IDMzLjExODMgMTU1LjMyMiAzMy4yNzExQzE1NS4zNDQgMzMuMjgxMSAxNTUuMzU2IDMzLjI4NjcgMTU1LjM1OCAzMy4yODgzQzE1NS4zNTYgMzMuMjkyNiAxNTUuMzU0IDMzLjMwMSAxNTUuMzUgMzMuMzEzM0MxNTUuMjgzIDMzLjUyODggMTU0Ljg0NSAzNC45NDg5IDE1My44NDcgMzYuNDA0QzE1Mi45MjIgMzcuNzU5OCAxNTEuOTcxIDM5LjA4OTUgMTUwLjQ2IDM5LjExNTZDMTQ5Ljc0OSAzOS4xMjgzIDE0OS4yNyAzOC45MjExIDE0OC43NzIgMzguNzA1NEMxNDguMjQ3IDM4LjQ3ODUgMTQ3LjcwMSAzOC4yNDIyIDE0Ni44NCAzOC4yNDIyQzE0NS45NDcgMzguMjQyMiAxNDUuMzc2IDM4LjQ4NDggMTQ0LjgyNiAzOC43MTg0QzE0NC4zNDggMzguOTIxNCAxNDMuODg3IDM5LjExNzQgMTQzLjI0NSAzOS4xNDE3QzE0MS43ODYgMzkuMTkzOCAxNDAuNjc5IDM3LjcwNzcgMTM5Ljc1NCAzNi4zNTE5QzEzNy44NjYgMzMuNjE0MyAxMzYuNDIgMjguNjM0NCAxMzguMzc0IDI1LjI3MUMxMzkuMzI1IDIzLjU4OTMgMTQxLjA1NyAyMi41MzM0IDE0Mi45MTkgMjIuNTA3M0MxNDMuNzMyIDIyLjQ5MjUgMTQ0LjUwNyAyMi44MDA2IDE0NS4xODQgMjMuMDcwMUMxNDUuNzAyIDIzLjI3NTggMTQ2LjE2MiAyMy40NTg5IDE0Ni41NCAyMy40NTg5QzE0Ni44NzcgMjMuNDU4OSAxNDcuMzE5IDIzLjI4NTEgMTQ3Ljg0MSAyMy4wNzk3WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIGQ9Ik0zNi44NTg3IDM3LjUyNDFIMzEuOTg3NEwzNS4wMzQyIDE5LjY2NjhIMzkuOTA1MkwzNi44NTg3IDM3LjUyNDFaIiBmaWxsPSIjMDA1NzlGIi8+DQo8cGF0aCBkPSJNNTQuNTE1NyAyMC4xMDQxQzUzLjU1NDkgMTkuNzQyOCA1Mi4wMzA5IDE5LjM0MzggNTAuMTQ2NiAxOS4zNDM4QzQ1LjMzNjEgMTkuMzQzOCA0MS45NDg2IDIxLjc3NTMgNDEuOTI3OCAyNS4yNTE2QzQxLjg4NzggMjcuODE2NSA0NC4zNTMxIDI5LjI0MSA0Ni4xOTcgMzAuMDk2MkM0OC4wODE2IDMwLjk3MDEgNDguNzIyMyAzMS41NDA1IDQ4LjcyMjMgMzIuMzE5NEM0OC43MDMxIDMzLjUxNTcgNDcuMTk5NCAzNC4wNjcyIDQ1Ljc5NjkgMzQuMDY3MkM0My44NTIxIDM0LjA2NzIgNDIuODEgMzMuNzgyOSA0MS4yMjY0IDMzLjExNzNMNDAuNTg1IDMyLjgzMkwzOS45MDMzIDM2Ljg0MDZDNDEuMDQ1OCAzNy4zMzM5IDQzLjE1MDcgMzcuNzcxNyA0NS4zMzYxIDM3Ljc5MDlDNTAuNDQ3MyAzNy43OTA5IDUzLjc3NDkgMzUuMzk3MSA1My44MTQzIDMxLjY5MjVDNTMuODMzOCAyOS42NTk3IDUyLjUzMiAyOC4xMDIgNDkuNzI1NCAyNi44MjkyQzQ4LjAyMTcgMjYuMDEyMSA0Ni45NzgzIDI1LjQ2MTIgNDYuOTc4MyAyNC42MjUyQzQ2Ljk5ODMgMjMuODY1MiA0Ny44NjA4IDIzLjA4NjggNDkuNzg0IDIzLjA4NjhDNTEuMzY3NyAyMy4wNDg2IDUyLjUzMTIgMjMuNDA5NCA1My40MTI2IDIzLjc3MDVMNTMuODUzMiAyMy45NjAxTDU0LjUxNTcgMjAuMTA0MVoiIGZpbGw9IiMwMDU3OUYiLz4NCjxwYXRoIGQ9Ik02MC45OTI0IDMxLjE5NzlDNjEuMzkzNiAzMC4xNzIgNjIuOTM3MiAyNi4yMDE2IDYyLjkzNzIgMjYuMjAxNkM2Mi45MTcgMjYuMjM5NyA2My4zMzc2IDI1LjE1NjggNjMuNTc4MSAyNC40OTE5TDYzLjkxODYgMjYuMDMwNkM2My45MTg2IDI2LjAzMDYgNjQuODQxIDMwLjMwNTEgNjUuMDQxNCAzMS4xOTc5QzY0LjI4IDMxLjE5NzkgNjEuOTU0NiAzMS4xOTc5IDYwLjk5MjQgMzEuMTk3OVpNNjcuMDA1NCAxOS42NjY4SDYzLjIzNzRDNjIuMDc1NSAxOS42NjY4IDYxLjE5MjcgMTkuOTg5NSA2MC42OTE0IDIxLjE0ODRMNTMuNDU1OCAzNy41MjM5SDU4LjU2NzFDNTguNTY3MSAzNy41MjM5IDU5LjQwODUgMzUuMzE5OSA1OS41ODk0IDM0Ljg0NTJDNjAuMTUwMSAzNC44NDUyIDY1LjEyMjMgMzQuODQ1MiA2NS44NDM3IDM0Ljg0NTJDNjUuOTgzNSAzNS40NzIxIDY2LjQyNDkgMzcuNTIzOSA2Ni40MjQ5IDM3LjUyMzlINzAuOTM1Mkw2Ny4wMDU0IDE5LjY2NjhWMTkuNjY2OFoiIGZpbGw9IiMwMDU3OUYiLz4NCjxwYXRoIGQ9Ik0yNy45MTggMTkuNjY2OEwyMy4xNDc1IDMxLjg0MzhMMjIuNjI2MiAyOS4zNzQxQzIxLjc0NDIgMjYuNTI0NSAxOC45NzgxIDIzLjQyODQgMTUuODkxNCAyMS44ODlMMjAuMjYxIDM3LjUwNTJIMjUuNDEyMkwzMy4wNjkgMTkuNjY2OEgyNy45MThWMTkuNjY2OFoiIGZpbGw9IiMwMDU3OUYiLz4NCjxwYXRoIGQ9Ik0xOC43MTg0IDE5LjY2NjhIMTAuODgxMUwxMC44MDA5IDIwLjAyNzZDMTYuOTE0NSAyMS41MDk1IDIwLjk2MzUgMjUuMDgxNSAyMi42MjcgMjkuMzc0OUwyMC45MjMyIDIxLjE2NzlDMjAuNjQyNyAyMC4wMjc0IDE5Ljc4MDcgMTkuNzA0NCAxOC43MTg0IDE5LjY2NjhaIiBmaWxsPSIjRkFBNjFBIi8+DQo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDJfNThfMTExKSI+DQo8cGF0aCBkPSJNMjIxLjE1OCAxNy40OTlWMTguOTM1NkgyMzEuMzA2VjE3LjQ5OUgyMjEuMTU4Wk0yMzIuNzQ0IDE3LjQ5OVYxOC45MzU2SDI0Ny4yMDZDMjQ3LjIwNiAxOC45MzU2IDI0NS43MjkgMTcuNDk5IDI0My43NzMgMTcuNDk5SDIzMi43NDRaTTI1MC4wNDMgMTcuNDk5VjE4LjkzNTZIMjU4Ljc5M0wyNTguMjczIDE3LjQ5OUgyNTAuMDQzWk0yNjUuMDY1IDE3LjQ5OUwyNjQuNTQ2IDE4LjkzNTZIMjczLjIxNlYxNy40OTlIMjY1LjA2NVpNMjIxLjE1OCAyMC4yOTI5VjIxLjcyOTZIMjMxLjMwNlYyMC4yOTI5SDIyMS4xNThaTTIzMi43NDQgMjAuMjk1VjIxLjcyOTdIMjQ4Ljg4NEMyNDguODg0IDIxLjcyOTcgMjQ4LjY5NiAyMC42MjM5IDI0OC4zNjcgMjAuMjk1SDIzMi43NDRaTTI1MC4wNDMgMjAuMjk1VjIxLjcyOTdIMjU5Ljc1MkwyNTkuMjcxIDIwLjI5NUgyNTAuMDQzWk0yNjQuMDI3IDIwLjI5NUwyNjMuNTQ2IDIxLjcyOTdIMjczLjIxNlYyMC4yOTVIMjY0LjAyN1YyMC4yOTVaTTIyNC4wNzQgMjMuMDg2OVYyNC41MjU3SDIyOC40NjlWMjMuMDg2OUgyMjQuMDc0VjIzLjA4NjlaTTIzNS42NjEgMjMuMDg2OVYyNC41MjU3SDI0MC4wNTZWMjMuMDg2OUgyMzUuNjYxVjIzLjA4NjlaTTI0NC4zMzEgMjMuMDg2OVYyNC41MjU3SDI0OC43MjZDMjQ4LjcyNiAyNC41MjU3IDI0OS4wMDUgMjMuNzY1OSAyNDkuMDA1IDIzLjA4NjlIMjQ0LjMzMVYyMy4wODY5Wk0yNTIuOTYgMjMuMDg2OVYyNC41MjU3SDI2MC43NTJMMjYwLjIzMiAyMy4wODY5SDI1Mi45NlYyMy4wODY5Wk0yNjMuMDY5IDIzLjA4NjlMMjYyLjU0OCAyNC41MjU3SDI3MC4zNzlWMjMuMDg2OUgyNjMuMDY5VjIzLjA4NjlaTTIyNC4wNzQgMjUuODgzVjI3LjMxOTdIMjI4LjQ2OVYyNS44ODNIMjI0LjA3NFYyNS44ODNaTTIzNS42NjEgMjUuODgzVjI3LjMxOTdIMjQ2Ljg4N0MyNDYuODg3IDI3LjMxOTcgMjQ3LjgyNiAyNi41ODI1IDI0OC4xMjUgMjUuODgzSDIzNS42NjFaTTI1Mi45NiAyNS44ODNWMjcuMzE5N0gyNTcuMzU1VjI2LjUyTDI1Ny42MzQgMjcuMzE5N0gyNjUuNjg0TDI2NS45ODQgMjYuNTJWMjcuMzE5N0gyNzAuMzc5VjI1Ljg4M0gyNjIuMTI5TDI2MS42OTEgMjcuMDk5OUwyNjEuMjUxIDI1Ljg4M0gyNTIuOTZaTTIyNC4wNzQgMjguNjc3VjMwLjExMzdIMjI4LjQ2OVYyOC42NzdIMjI0LjA3NFpNMjM1LjY2MSAyOC42NzdWMzAuMTEzN0gyNDguMTI1QzI0Ny44MjYgMjkuNDE2NSAyNDYuODg3IDI4LjY3NyAyNDYuODg3IDI4LjY3N0gyMzUuNjYxWk0yNTIuOTYgMjguNjc3VjMwLjExMzdIMjU3LjM1NVYyOC42NzdIMjUyLjk2Wk0yNTguMTUzIDI4LjY3N0wyNTguNjg1IDMwLjExMzdIMjY0LjcyMUwyNjUuMjI2IDI4LjY3N0gyNTguMTUzWk0yNjUuOTg0IDI4LjY3N1YzMC4xMTM3SDI3MC4zNzlWMjguNjc3SDI2NS45ODRaTTIyNC4wNzQgMzEuNDcxVjMyLjkwNzZIMjI4LjQ2OVYzMS40NzFIMjI0LjA3NFpNMjM1LjY2MSAzMS40NzFWMzIuOTA3NkgyNDAuMDU2VjMxLjQ3MUgyMzUuNjYxWk0yNDQuMzMxIDMxLjQ3MVYzMi45MDc2SDI0OS4wMDVDMjQ5LjAwNSAzMi4yMjk2IDI0OC43MjYgMzEuNDcxIDI0OC43MjYgMzEuNDcxSDI0NC4zMzFWMzEuNDcxWk0yNTIuOTYgMzEuNDcxVjMyLjkwNzZIMjU3LjM1NVYzMS40NzFIMjUyLjk2Wk0yNTkuMTUxIDMxLjQ3MUwyNTkuNjY2IDMyLjkwNzZIMjYzLjcxM0wyNjQuMjMyIDMxLjQ3MUgyNTkuMTUxWk0yNjUuOTg0IDMxLjQ3MVYzMi45MDc2SDI3MC4zNzlWMzEuNDcxSDI2NS45ODRaTTIyMS4yMzcgMzQuMjY1VjM1LjcwMzdIMjMxLjM4NlYzNC4yNjVIMjIxLjIzN1pNMjMyLjc0NCAzNC4yNjVWMzUuNzAzN0gyNDguMzY3QzI0OC42OTYgMzUuMzc0MyAyNDguODg0IDM0LjI2NSAyNDguODg0IDM0LjI2NUgyMzIuNzQ0VjM0LjI2NVpNMjUwLjEyMyAzNC4yNjVWMzUuNzAzN0gyNTcuMzU1VjM0LjI2NUgyNTAuMTIzWk0yNjAuMTUxIDM0LjI2NUwyNjAuNjggMzUuNzAzN0gyNjIuNzM5TDI2My4yMzYgMzQuMjY1SDI2MC4xNTFaTTI2NS45ODQgMzQuMjY1VjM1LjcwMzdIMjczLjI5NVYzNC4yNjVIMjY1Ljk4NFpNMjIxLjIzNyAzNy4wNjFWMzguNDk3N0gyMzEuMzg2VjM3LjA2MUgyMjEuMjM3Wk0yMzIuNzQ0IDM3LjA2MVYzOC40OTU2SDI0My43NzNDMjQ1LjcyOSAzOC40OTU2IDI0Ny4yMDYgMzcuMDYxIDI0Ny4yMDYgMzcuMDYxSDIzMi43NDRaTTI1MC4xMjMgMzcuMDYxVjM4LjQ5NzdIMjU3LjM1NVYzNy4wNjFIMjUwLjEyM1pNMjYxLjE1NSAzNy4wNjFMMjYxLjY2NCAzOC40OTM2TDI2MS43NTIgMzguNDk1NkwyNjIuMjY5IDM3LjA2MUgyNjEuMTU1VjM3LjA2MVpNMjY1Ljk4NCAzNy4wNjFWMzguNDk3N0gyNzMuMjk1VjM3LjA2MUgyNjUuOTg0WiIgZmlsbD0iIzFGNzBDMSIvPg0KPC9nPg0KPGRlZnM+DQo8Y2xpcFBhdGggaWQ9ImNsaXAwXzU4XzExMSI+DQo8cmVjdCB3aWR0aD0iNDQuNDQ3MyIgaGVpZ2h0PSIyOS42MzE1IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzUzLjk1NSAxNC44MTU1KSIvPg0KPC9jbGlwUGF0aD4NCjxjbGlwUGF0aCBpZD0iY2xpcDFfNThfMTExIj4NCjxyZWN0IHdpZHRoPSI3Ni41NDgxIiBoZWlnaHQ9IjE2LjM1MDciIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MjUuNTk5IDIwLjk4ODkpIi8+DQo8L2NsaXBQYXRoPg0KPGNsaXBQYXRoIGlkPSJjbGlwMl81OF8xMTEiPg0KPHJlY3Qgd2lkdGg9IjUyLjEzNzIiIGhlaWdodD0iMjAuOTk4NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIyMS4xNTggMTcuNDk5KSIvPg0KPC9jbGlwUGF0aD4NCjwvZGVmcz4NCjwvc3ZnPg0K" style="
|
|
6932
|
+
width: 742.5px;
|
|
6933
|
+
position: relative;
|
|
6934
|
+
top: 107px;
|
|
6935
|
+
left: 32px;
|
|
6936
|
+
">
|
|
6937
|
+
<a href=${accountURL} style="
|
|
6938
|
+
float: left;
|
|
6939
|
+
border-radius: 56px;
|
|
6940
|
+
background: #0D6EFD;
|
|
6941
|
+
padding-top: 8px;
|
|
6942
|
+
width: 280px;
|
|
6943
|
+
height: 38px;
|
|
6944
|
+
text-align: center;
|
|
6945
|
+
position: relative;
|
|
6946
|
+
top: 127px;
|
|
6947
|
+
left: 274px;
|
|
6948
|
+
font-size: 16px;
|
|
6949
|
+
color: white;
|
|
6950
|
+
text-decoration: none;
|
|
6951
|
+
letter-spacing: 0.02em;
|
|
6952
|
+
">Claim your FREE account</a>
|
|
6953
|
+
<div style="
|
|
6954
|
+
font-size: 14px;
|
|
6955
|
+
position: relative;
|
|
6956
|
+
top: 180px;
|
|
6957
|
+
left: 19px;
|
|
6958
|
+
letter-spacing: 0.02em;
|
|
6959
|
+
font-weight: 500;
|
|
6960
|
+
line-height: 125%;
|
|
6961
|
+
">have a Syncfusion account? <a href="https://www.syncfusion.com/account/login?ReturnUrl=/account/login" style="text-decoration: none;
|
|
6962
|
+
color: #0D6EFD;
|
|
6963
|
+
font-weight: 500;">Sign In</a></div>
|
|
6964
|
+
</div>
|
|
6965
|
+
</div>`;
|
|
6966
|
+
if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {
|
|
6967
|
+
const errorBackground = createElement('div', {
|
|
6968
|
+
innerHTML: bannerTemplate
|
|
6969
|
+
});
|
|
6970
|
+
document.body.appendChild(errorBackground);
|
|
6971
|
+
}
|
|
6972
|
+
};
|
|
6738
6973
|
|
|
6739
6974
|
var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
6740
6975
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -6745,6 +6980,12 @@ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators,
|
|
|
6745
6980
|
let componentCount = 0;
|
|
6746
6981
|
let lastPageID;
|
|
6747
6982
|
let lastHistoryLen = 0;
|
|
6983
|
+
// Decalre the static variable to count the instance
|
|
6984
|
+
let instancecount = 0;
|
|
6985
|
+
// Decalre the static variable to find if control limit exceed or not
|
|
6986
|
+
let isvalid = true;
|
|
6987
|
+
// We have added styles to inline type so here declare the static variable to detect if banner is added or not
|
|
6988
|
+
let isBannerAdded = false;
|
|
6748
6989
|
let versionBasedStatePersistence = false;
|
|
6749
6990
|
/**
|
|
6750
6991
|
* To enable or disable version based statePersistence functionality for all components globally.
|
|
@@ -6786,8 +7027,14 @@ let Component = class Component extends Base {
|
|
|
6786
7027
|
this.localObserver = new Observer(this);
|
|
6787
7028
|
// tslint:disable-next-line:no-function-constructor-with-string-args
|
|
6788
7029
|
onIntlChange.on('notifyExternalChange', this.detectFunction, this, this.randomId);
|
|
6789
|
-
|
|
6790
|
-
|
|
7030
|
+
// Based on the considered control list we have count the instance
|
|
7031
|
+
if (typeof window !== "undefined" && typeof document !== "undefined" && !validateLicense()) {
|
|
7032
|
+
if (componentList.indexOf(this.getModuleName()) !== -1) {
|
|
7033
|
+
instancecount = instancecount + 1;
|
|
7034
|
+
if (instancecount > 5) {
|
|
7035
|
+
isvalid = false;
|
|
7036
|
+
}
|
|
7037
|
+
}
|
|
6791
7038
|
}
|
|
6792
7039
|
if (!isUndefined(selector)) {
|
|
6793
7040
|
this.appendTo();
|
|
@@ -6898,6 +7145,11 @@ let Component = class Component extends Base {
|
|
|
6898
7145
|
}
|
|
6899
7146
|
this.preRender();
|
|
6900
7147
|
this.injectModules();
|
|
7148
|
+
// Checked weather cases are valid or not. If control leads to more than five counts
|
|
7149
|
+
if (!isvalid && !isBannerAdded) {
|
|
7150
|
+
createLicenseOverlay();
|
|
7151
|
+
isBannerAdded = true;
|
|
7152
|
+
}
|
|
6901
7153
|
this.render();
|
|
6902
7154
|
if (!this.mount) {
|
|
6903
7155
|
this.trigger('created');
|
|
@@ -7001,8 +7253,8 @@ let Component = class Component extends Base {
|
|
|
7001
7253
|
this.prototype.injectedModules = [];
|
|
7002
7254
|
}
|
|
7003
7255
|
for (let i = 0; i < moduleList.length; i++) {
|
|
7004
|
-
if (this.prototype.injectedModules.indexOf(moduleList[i]) === -1) {
|
|
7005
|
-
this.prototype.injectedModules.push(moduleList[i]);
|
|
7256
|
+
if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {
|
|
7257
|
+
this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);
|
|
7006
7258
|
}
|
|
7007
7259
|
}
|
|
7008
7260
|
}
|
|
@@ -7069,9 +7321,11 @@ let Component = class Component extends Base {
|
|
|
7069
7321
|
}
|
|
7070
7322
|
}
|
|
7071
7323
|
}
|
|
7072
|
-
//
|
|
7073
|
-
renderReactTemplates() {
|
|
7074
|
-
|
|
7324
|
+
// eslint-disable-next-line
|
|
7325
|
+
renderReactTemplates(callback) {
|
|
7326
|
+
if (!isNullOrUndefined(callback)) {
|
|
7327
|
+
callback();
|
|
7328
|
+
}
|
|
7075
7329
|
}
|
|
7076
7330
|
// eslint-disable-next-line
|
|
7077
7331
|
clearTemplate(templateName, index) {
|
|
@@ -7137,10 +7391,10 @@ let Component = class Component extends Base {
|
|
|
7137
7391
|
}).map((str) => {
|
|
7138
7392
|
return str.replace(key + '.', '');
|
|
7139
7393
|
});
|
|
7140
|
-
newObj[key] = this.iterateJsonProperties(this.getActualProperties(value), newList);
|
|
7394
|
+
newObj[`${key}`] = this.iterateJsonProperties(this.getActualProperties(value), newList);
|
|
7141
7395
|
}
|
|
7142
7396
|
else {
|
|
7143
|
-
newObj[key] = value;
|
|
7397
|
+
newObj[`${key}`] = value;
|
|
7144
7398
|
}
|
|
7145
7399
|
}
|
|
7146
7400
|
}
|
|
@@ -7217,8 +7471,8 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7217
7471
|
this.prevLeft = 0;
|
|
7218
7472
|
this.prevTop = 0;
|
|
7219
7473
|
this.dragProcessStarted = false;
|
|
7220
|
-
/* tslint:disable no-any */
|
|
7221
7474
|
this.eleTop = 0;
|
|
7475
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7222
7476
|
this.tapHoldTimer = 0;
|
|
7223
7477
|
this.externalInitialize = false;
|
|
7224
7478
|
this.diffY = 0;
|
|
@@ -7242,7 +7496,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7242
7496
|
if (!isUndefined(this.handle)) {
|
|
7243
7497
|
ele = select(this.handle, this.element);
|
|
7244
7498
|
}
|
|
7245
|
-
|
|
7499
|
+
const handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;
|
|
7246
7500
|
if (isUnWire) {
|
|
7247
7501
|
EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);
|
|
7248
7502
|
}
|
|
@@ -7252,7 +7506,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7252
7506
|
}
|
|
7253
7507
|
/* istanbul ignore next */
|
|
7254
7508
|
mobileInitialize(evt) {
|
|
7255
|
-
|
|
7509
|
+
const target = evt.currentTarget;
|
|
7256
7510
|
this.tapHoldTimer = setTimeout(() => {
|
|
7257
7511
|
this.externalInitialize = true;
|
|
7258
7512
|
this.removeTapholdTimer();
|
|
@@ -7269,12 +7523,12 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7269
7523
|
}
|
|
7270
7524
|
/* istanbul ignore next */
|
|
7271
7525
|
getScrollableParent(element, axis) {
|
|
7272
|
-
|
|
7273
|
-
|
|
7526
|
+
const scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };
|
|
7527
|
+
const client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };
|
|
7274
7528
|
if (isNullOrUndefined(element)) {
|
|
7275
7529
|
return null;
|
|
7276
7530
|
}
|
|
7277
|
-
if (element[scroll[axis]] > element[client[axis]]) {
|
|
7531
|
+
if (element[scroll[`${axis}`]] > element[client[`${axis}`]]) {
|
|
7278
7532
|
if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {
|
|
7279
7533
|
if (axis === 'vertical') {
|
|
7280
7534
|
this.parentScrollY = this.parentScrollY +
|
|
@@ -7304,9 +7558,9 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7304
7558
|
getScrollableValues() {
|
|
7305
7559
|
this.parentScrollX = 0;
|
|
7306
7560
|
this.parentScrollY = 0;
|
|
7307
|
-
|
|
7308
|
-
|
|
7309
|
-
|
|
7561
|
+
const isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');
|
|
7562
|
+
const verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');
|
|
7563
|
+
const horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');
|
|
7310
7564
|
}
|
|
7311
7565
|
initialize(evt, curTarget) {
|
|
7312
7566
|
this.currentStateTarget = evt.target;
|
|
@@ -7326,7 +7580,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7326
7580
|
abortSelectors = [abortSelectors];
|
|
7327
7581
|
}
|
|
7328
7582
|
for (let i = 0; i < abortSelectors.length; i++) {
|
|
7329
|
-
if (!isNullOrUndefined(closest(evt.target, abortSelectors[i]))) {
|
|
7583
|
+
if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {
|
|
7330
7584
|
/* istanbul ignore next */
|
|
7331
7585
|
if (this.isDragStarted()) {
|
|
7332
7586
|
this.isDragStarted(true);
|
|
@@ -7339,10 +7593,10 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7339
7593
|
evt.preventDefault();
|
|
7340
7594
|
}
|
|
7341
7595
|
this.element.setAttribute('aria-grabbed', 'true');
|
|
7342
|
-
|
|
7596
|
+
const intCoord = this.getCoordinates(evt);
|
|
7343
7597
|
this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };
|
|
7344
7598
|
if (!this.clone) {
|
|
7345
|
-
|
|
7599
|
+
const pos = this.element.getBoundingClientRect();
|
|
7346
7600
|
this.getScrollableValues();
|
|
7347
7601
|
if (evt.clientX === evt.pageX) {
|
|
7348
7602
|
this.parentScrollX = 0;
|
|
@@ -7369,25 +7623,22 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7369
7623
|
}
|
|
7370
7624
|
intDragStart(evt) {
|
|
7371
7625
|
this.removeTapholdTimer();
|
|
7372
|
-
|
|
7626
|
+
const isChangeTouch = !isUndefined(evt.changedTouches);
|
|
7373
7627
|
if (isChangeTouch && (evt.changedTouches.length !== 1)) {
|
|
7374
7628
|
return;
|
|
7375
7629
|
}
|
|
7376
|
-
|
|
7377
|
-
evt.preventDefault();
|
|
7378
|
-
}
|
|
7379
|
-
let intCordinate = this.getCoordinates(evt);
|
|
7630
|
+
const intCordinate = this.getCoordinates(evt);
|
|
7380
7631
|
let pos;
|
|
7381
|
-
|
|
7632
|
+
const styleProp = getComputedStyle(this.element);
|
|
7382
7633
|
this.margin = {
|
|
7383
7634
|
left: parseInt(styleProp.marginLeft, 10),
|
|
7384
7635
|
top: parseInt(styleProp.marginTop, 10),
|
|
7385
7636
|
right: parseInt(styleProp.marginRight, 10),
|
|
7386
|
-
bottom: parseInt(styleProp.marginBottom, 10)
|
|
7637
|
+
bottom: parseInt(styleProp.marginBottom, 10)
|
|
7387
7638
|
};
|
|
7388
7639
|
let element = this.element;
|
|
7389
7640
|
if (this.clone && this.dragTarget) {
|
|
7390
|
-
|
|
7641
|
+
const intClosest = closest(evt.target, this.dragTarget);
|
|
7391
7642
|
if (!isNullOrUndefined(intClosest)) {
|
|
7392
7643
|
element = intClosest;
|
|
7393
7644
|
}
|
|
@@ -7398,19 +7649,22 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7398
7649
|
}
|
|
7399
7650
|
this.offset = this.calculateParentPosition(element);
|
|
7400
7651
|
this.position = this.getMousePosition(evt, this.isDragScroll);
|
|
7401
|
-
|
|
7402
|
-
|
|
7403
|
-
|
|
7652
|
+
const x = this.initialPosition.x - intCordinate.pageX;
|
|
7653
|
+
const y = this.initialPosition.y - intCordinate.pageY;
|
|
7654
|
+
const distance = Math.sqrt((x * x) + (y * y));
|
|
7404
7655
|
if ((distance >= this.distance || this.externalInitialize)) {
|
|
7405
|
-
|
|
7656
|
+
const ele = this.getHelperElement(evt);
|
|
7406
7657
|
if (!ele || isNullOrUndefined(ele)) {
|
|
7407
7658
|
return;
|
|
7408
7659
|
}
|
|
7409
|
-
|
|
7660
|
+
if (isChangeTouch) {
|
|
7661
|
+
evt.preventDefault();
|
|
7662
|
+
}
|
|
7663
|
+
const dragTargetElement = this.helperElement = ele;
|
|
7410
7664
|
this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);
|
|
7411
7665
|
if (this.dragStart) {
|
|
7412
|
-
|
|
7413
|
-
|
|
7666
|
+
const curTarget = this.getProperTargetElement(evt);
|
|
7667
|
+
const args = {
|
|
7414
7668
|
event: evt,
|
|
7415
7669
|
element: element,
|
|
7416
7670
|
target: curTarget,
|
|
@@ -7433,8 +7687,8 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7433
7687
|
}
|
|
7434
7688
|
this.getScrollableValues();
|
|
7435
7689
|
// when drag element has margin-top
|
|
7436
|
-
|
|
7437
|
-
|
|
7690
|
+
const styles = getComputedStyle(element);
|
|
7691
|
+
const marginTop = parseFloat(styles.marginTop);
|
|
7438
7692
|
/* istanbul ignore next */
|
|
7439
7693
|
if (this.clone && marginTop !== 0) {
|
|
7440
7694
|
pos.top += marginTop;
|
|
@@ -7448,10 +7702,13 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7448
7702
|
pos.top -= this.parentScrollY;
|
|
7449
7703
|
pos.left -= this.parentScrollX;
|
|
7450
7704
|
}
|
|
7451
|
-
|
|
7705
|
+
const posValue = this.getProcessedPositionValue({
|
|
7452
7706
|
top: (pos.top - this.diffY) + 'px',
|
|
7453
7707
|
left: (pos.left - this.diffX) + 'px'
|
|
7454
7708
|
});
|
|
7709
|
+
if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {
|
|
7710
|
+
pos.top += this.dragArea.scrollTop;
|
|
7711
|
+
}
|
|
7455
7712
|
this.dragElePosition = { top: pos.top, left: pos.left };
|
|
7456
7713
|
setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));
|
|
7457
7714
|
EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);
|
|
@@ -7497,8 +7754,8 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7497
7754
|
if (isNullOrUndefined(ele)) {
|
|
7498
7755
|
return { left: 0, top: 0 };
|
|
7499
7756
|
}
|
|
7500
|
-
|
|
7501
|
-
|
|
7757
|
+
const rect = ele.getBoundingClientRect();
|
|
7758
|
+
const style = getComputedStyle(ele);
|
|
7502
7759
|
return {
|
|
7503
7760
|
left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),
|
|
7504
7761
|
top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)
|
|
@@ -7515,19 +7772,19 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7515
7772
|
let left;
|
|
7516
7773
|
let top;
|
|
7517
7774
|
this.position = this.getMousePosition(evt, this.isDragScroll);
|
|
7518
|
-
|
|
7775
|
+
const docHeight = this.getDocumentWidthHeight('Height');
|
|
7519
7776
|
if (docHeight < this.position.top) {
|
|
7520
7777
|
this.position.top = docHeight;
|
|
7521
7778
|
}
|
|
7522
|
-
|
|
7779
|
+
const docWidth = this.getDocumentWidthHeight('Width');
|
|
7523
7780
|
if (docWidth < this.position.left) {
|
|
7524
7781
|
this.position.left = docWidth;
|
|
7525
7782
|
}
|
|
7526
7783
|
if (this.drag) {
|
|
7527
|
-
|
|
7784
|
+
const curTarget = this.getProperTargetElement(evt);
|
|
7528
7785
|
this.trigger('drag', { event: evt, element: this.element, target: curTarget });
|
|
7529
7786
|
}
|
|
7530
|
-
|
|
7787
|
+
const eleObj = this.checkTargetElement(evt);
|
|
7531
7788
|
if (eleObj.target && eleObj.instance) {
|
|
7532
7789
|
/* tslint:disable no-any */
|
|
7533
7790
|
let flag = true;
|
|
@@ -7548,19 +7805,19 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7548
7805
|
else if (this.hoverObject) {
|
|
7549
7806
|
this.triggerOutFunction(evt, eleObj);
|
|
7550
7807
|
}
|
|
7551
|
-
|
|
7808
|
+
const helperElement = this.droppables[this.scope].helper;
|
|
7552
7809
|
this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
|
|
7556
|
-
|
|
7557
|
-
|
|
7558
|
-
|
|
7559
|
-
|
|
7560
|
-
|
|
7810
|
+
const tLeft = this.parentClientRect.left;
|
|
7811
|
+
const tTop = this.parentClientRect.top;
|
|
7812
|
+
const intCoord = this.getCoordinates(evt);
|
|
7813
|
+
const pagex = intCoord.pageX;
|
|
7814
|
+
const pagey = intCoord.pageY;
|
|
7815
|
+
const dLeft = this.position.left - this.diffX;
|
|
7816
|
+
const dTop = this.position.top - this.diffY;
|
|
7817
|
+
const styles = getComputedStyle(helperElement);
|
|
7561
7818
|
if (this.dragArea) {
|
|
7562
7819
|
if (this.pageX !== pagex || this.skipDistanceCheck) {
|
|
7563
|
-
|
|
7820
|
+
const helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)
|
|
7564
7821
|
+ parseFloat(styles.marginRight));
|
|
7565
7822
|
if (this.dragLimit.left > dLeft && dLeft > 0) {
|
|
7566
7823
|
left = this.dragLimit.left;
|
|
@@ -7573,7 +7830,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7573
7830
|
}
|
|
7574
7831
|
}
|
|
7575
7832
|
if (this.pageY !== pagey || this.skipDistanceCheck) {
|
|
7576
|
-
|
|
7833
|
+
const helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)
|
|
7577
7834
|
+ parseFloat(styles.marginBottom));
|
|
7578
7835
|
if (this.dragLimit.top > dTop && dTop > 0) {
|
|
7579
7836
|
top = this.dragLimit.top;
|
|
@@ -7590,8 +7847,8 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7590
7847
|
left = dLeft;
|
|
7591
7848
|
top = dTop;
|
|
7592
7849
|
}
|
|
7593
|
-
|
|
7594
|
-
|
|
7850
|
+
const iTop = tTop + this.borderWidth.top;
|
|
7851
|
+
const iLeft = tLeft + this.borderWidth.left;
|
|
7595
7852
|
if (this.dragProcessStarted) {
|
|
7596
7853
|
if (isNullOrUndefined(top)) {
|
|
7597
7854
|
top = this.prevTop;
|
|
@@ -7602,16 +7859,29 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7602
7859
|
}
|
|
7603
7860
|
let draEleTop;
|
|
7604
7861
|
let draEleLeft;
|
|
7605
|
-
if (this.
|
|
7606
|
-
|
|
7607
|
-
|
|
7608
|
-
|
|
7862
|
+
if (this.helperElement.classList.contains('e-treeview')) {
|
|
7863
|
+
if (this.dragArea) {
|
|
7864
|
+
this.dragLimit.top = this.clone ? this.dragLimit.top : 0;
|
|
7865
|
+
draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);
|
|
7866
|
+
draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);
|
|
7867
|
+
}
|
|
7868
|
+
else {
|
|
7869
|
+
draEleTop = top - this.borderWidth.top;
|
|
7870
|
+
draEleLeft = left - this.borderWidth.left;
|
|
7871
|
+
}
|
|
7609
7872
|
}
|
|
7610
7873
|
else {
|
|
7611
|
-
|
|
7612
|
-
|
|
7874
|
+
if (this.dragArea) {
|
|
7875
|
+
this.dragLimit.top = this.clone ? this.dragLimit.top : 0;
|
|
7876
|
+
draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);
|
|
7877
|
+
draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);
|
|
7878
|
+
}
|
|
7879
|
+
else {
|
|
7880
|
+
draEleTop = top - iTop;
|
|
7881
|
+
draEleLeft = left - iLeft;
|
|
7882
|
+
}
|
|
7613
7883
|
}
|
|
7614
|
-
|
|
7884
|
+
const marginTop = parseFloat(getComputedStyle(this.element).marginTop);
|
|
7615
7885
|
// when drag-element has margin-top
|
|
7616
7886
|
/* istanbul ignore next */
|
|
7617
7887
|
if (marginTop > 0) {
|
|
@@ -7629,7 +7899,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7629
7899
|
}
|
|
7630
7900
|
if ((top - iTop) < 0) {
|
|
7631
7901
|
if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {
|
|
7632
|
-
|
|
7902
|
+
const tempDraEleTop = this.dragLimit.top + dTop - iTop;
|
|
7633
7903
|
if ((tempDraEleTop + marginTop + iTop) < 0) {
|
|
7634
7904
|
draEleTop -= marginTop + iTop;
|
|
7635
7905
|
}
|
|
@@ -7642,6 +7912,11 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7642
7912
|
}
|
|
7643
7913
|
}
|
|
7644
7914
|
}
|
|
7915
|
+
if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {
|
|
7916
|
+
const helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)
|
|
7917
|
+
+ parseFloat(styles.marginBottom));
|
|
7918
|
+
draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;
|
|
7919
|
+
}
|
|
7645
7920
|
/* istanbul ignore next */
|
|
7646
7921
|
// if(this.eleTop > 0) {
|
|
7647
7922
|
// draEleTop += this.eleTop;
|
|
@@ -7650,11 +7925,33 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7650
7925
|
draEleTop -= this.parentScrollY;
|
|
7651
7926
|
draEleLeft -= this.parentScrollX;
|
|
7652
7927
|
}
|
|
7653
|
-
|
|
7928
|
+
if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {
|
|
7929
|
+
draEleTop += this.dragArea.scrollTop;
|
|
7930
|
+
}
|
|
7931
|
+
const dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });
|
|
7654
7932
|
setStyleAttribute(helperElement, this.getDragPosition(dragValue));
|
|
7655
|
-
if (!this.elementInViewport(helperElement) && this.enableAutoScroll) {
|
|
7933
|
+
if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {
|
|
7656
7934
|
this.helperElement.scrollIntoView();
|
|
7657
7935
|
}
|
|
7936
|
+
let elements = document.querySelectorAll(':hover');
|
|
7937
|
+
if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {
|
|
7938
|
+
if (elements.length === 0) {
|
|
7939
|
+
elements = this.getPathElements(evt);
|
|
7940
|
+
}
|
|
7941
|
+
/* tslint:disable no-any */
|
|
7942
|
+
let scrollParent = this.getScrollParent(elements, false);
|
|
7943
|
+
if (this.elementInViewport(this.helperElement)) {
|
|
7944
|
+
this.getScrollPosition(scrollParent, draEleTop);
|
|
7945
|
+
}
|
|
7946
|
+
else if (!this.elementInViewport(this.helperElement)) {
|
|
7947
|
+
elements = [].slice.call(document.querySelectorAll(':hover'));
|
|
7948
|
+
if (elements.length === 0) {
|
|
7949
|
+
elements = this.getPathElements(evt);
|
|
7950
|
+
}
|
|
7951
|
+
scrollParent = this.getScrollParent(elements, true);
|
|
7952
|
+
this.getScrollPosition(scrollParent, draEleTop);
|
|
7953
|
+
}
|
|
7954
|
+
}
|
|
7658
7955
|
this.dragProcessStarted = true;
|
|
7659
7956
|
this.prevLeft = left;
|
|
7660
7957
|
this.prevTop = top;
|
|
@@ -7663,13 +7960,55 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7663
7960
|
this.pageX = pagex;
|
|
7664
7961
|
this.pageY = pagey;
|
|
7665
7962
|
}
|
|
7963
|
+
/* tslint:disable no-any */
|
|
7964
|
+
getScrollParent(node, reverse) {
|
|
7965
|
+
/* tslint:disable no-any */
|
|
7966
|
+
const nodeEl = reverse ? node.reverse() : node;
|
|
7967
|
+
let hasScroll;
|
|
7968
|
+
for (let i = nodeEl.length - 1; i >= 0; i--) {
|
|
7969
|
+
hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];
|
|
7970
|
+
if ((hasScroll === 'auto' || hasScroll === 'scroll')
|
|
7971
|
+
&& nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {
|
|
7972
|
+
return nodeEl[parseInt(i.toString(), 10)];
|
|
7973
|
+
}
|
|
7974
|
+
}
|
|
7975
|
+
hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];
|
|
7976
|
+
if (hasScroll === 'visible') {
|
|
7977
|
+
document.scrollingElement.style.overflow = 'auto';
|
|
7978
|
+
return document.scrollingElement;
|
|
7979
|
+
}
|
|
7980
|
+
}
|
|
7981
|
+
getScrollPosition(nodeEle, draEleTop) {
|
|
7982
|
+
if (nodeEle && nodeEle === document.scrollingElement) {
|
|
7983
|
+
if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop
|
|
7984
|
+
&& nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {
|
|
7985
|
+
nodeEle.scrollTop += this.helperElement.clientHeight;
|
|
7986
|
+
}
|
|
7987
|
+
else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {
|
|
7988
|
+
nodeEle.scrollTop -= this.helperElement.clientHeight;
|
|
7989
|
+
}
|
|
7990
|
+
}
|
|
7991
|
+
else if (nodeEle && nodeEle !== document.scrollingElement) {
|
|
7992
|
+
if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {
|
|
7993
|
+
nodeEle.scrollTop += this.helperElement.clientHeight;
|
|
7994
|
+
}
|
|
7995
|
+
else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {
|
|
7996
|
+
nodeEle.scrollTop -= this.helperElement.clientHeight;
|
|
7997
|
+
}
|
|
7998
|
+
}
|
|
7999
|
+
}
|
|
8000
|
+
getPathElements(evt) {
|
|
8001
|
+
const elementTop = evt.clientX > 0 ? evt.clientX : 0;
|
|
8002
|
+
const elementLeft = evt.clientY > 0 ? evt.clientY : 0;
|
|
8003
|
+
return document.elementsFromPoint(elementTop, elementLeft);
|
|
8004
|
+
}
|
|
7666
8005
|
triggerOutFunction(evt, eleObj) {
|
|
7667
8006
|
this.hoverObject.instance.intOut(evt, eleObj.target);
|
|
7668
8007
|
this.hoverObject.instance.dragData[this.scope] = null;
|
|
7669
8008
|
this.hoverObject = null;
|
|
7670
8009
|
}
|
|
7671
8010
|
getDragPosition(dragValue) {
|
|
7672
|
-
|
|
8011
|
+
const temp = extend({}, dragValue);
|
|
7673
8012
|
if (this.axis) {
|
|
7674
8013
|
if (this.axis === 'x') {
|
|
7675
8014
|
delete temp.top;
|
|
@@ -7681,9 +8020,9 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7681
8020
|
return temp;
|
|
7682
8021
|
}
|
|
7683
8022
|
getDocumentWidthHeight(str) {
|
|
7684
|
-
|
|
7685
|
-
|
|
7686
|
-
|
|
8023
|
+
const docBody = document.body;
|
|
8024
|
+
const docEle = document.documentElement;
|
|
8025
|
+
const returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);
|
|
7687
8026
|
return returnValue;
|
|
7688
8027
|
}
|
|
7689
8028
|
intDragStop(evt) {
|
|
@@ -7691,10 +8030,10 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7691
8030
|
if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {
|
|
7692
8031
|
return;
|
|
7693
8032
|
}
|
|
7694
|
-
|
|
8033
|
+
const type = ['touchend', 'pointerup', 'mouseup'];
|
|
7695
8034
|
if (type.indexOf(evt.type) !== -1) {
|
|
7696
8035
|
if (this.dragStop) {
|
|
7697
|
-
|
|
8036
|
+
const curTarget = this.getProperTargetElement(evt);
|
|
7698
8037
|
this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });
|
|
7699
8038
|
}
|
|
7700
8039
|
this.intDestroy(evt);
|
|
@@ -7702,7 +8041,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7702
8041
|
else {
|
|
7703
8042
|
this.element.setAttribute('aria-grabbed', 'false');
|
|
7704
8043
|
}
|
|
7705
|
-
|
|
8044
|
+
const eleObj = this.checkTargetElement(evt);
|
|
7706
8045
|
if (eleObj.target && eleObj.instance) {
|
|
7707
8046
|
eleObj.instance.dragStopCalled = true;
|
|
7708
8047
|
eleObj.instance.dragData[this.scope] = this.droppables[this.scope];
|
|
@@ -7746,7 +8085,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7746
8085
|
let top = 0;
|
|
7747
8086
|
let left = 0;
|
|
7748
8087
|
let ele;
|
|
7749
|
-
|
|
8088
|
+
const type = typeof this.dragArea;
|
|
7750
8089
|
if (type === 'string') {
|
|
7751
8090
|
ele = select(this.dragArea);
|
|
7752
8091
|
}
|
|
@@ -7754,20 +8093,25 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7754
8093
|
ele = this.dragArea;
|
|
7755
8094
|
}
|
|
7756
8095
|
if (ele) {
|
|
7757
|
-
|
|
8096
|
+
const elementArea = ele.getBoundingClientRect();
|
|
7758
8097
|
eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;
|
|
7759
|
-
eleHeightBound = ele.scrollHeight ? ele.scrollHeight : elementArea.bottom - elementArea.top;
|
|
7760
|
-
|
|
7761
|
-
|
|
8098
|
+
eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;
|
|
8099
|
+
const keys = ['Top', 'Left', 'Bottom', 'Right'];
|
|
8100
|
+
const styles = getComputedStyle(ele);
|
|
7762
8101
|
for (let i = 0; i < keys.length; i++) {
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7766
|
-
|
|
7767
|
-
this.borderWidth[lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);
|
|
7768
|
-
this.padding[lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);
|
|
7769
|
-
}
|
|
7770
|
-
|
|
8102
|
+
const key = keys[parseInt(i.toString(), 10)];
|
|
8103
|
+
const tborder = styles['border' + key + 'Width'];
|
|
8104
|
+
const tpadding = styles['padding' + key];
|
|
8105
|
+
const lowerKey = key.toLowerCase();
|
|
8106
|
+
this.borderWidth[`${lowerKey}`] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);
|
|
8107
|
+
this.padding[`${lowerKey}`] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);
|
|
8108
|
+
}
|
|
8109
|
+
if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {
|
|
8110
|
+
top = elementArea.top + document.scrollingElement.scrollTop;
|
|
8111
|
+
}
|
|
8112
|
+
else {
|
|
8113
|
+
top = elementArea.top;
|
|
8114
|
+
}
|
|
7771
8115
|
left = elementArea.left;
|
|
7772
8116
|
this.dragLimit.left = left + this.borderWidth.left + this.padding.left;
|
|
7773
8117
|
this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;
|
|
@@ -7776,10 +8120,11 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7776
8120
|
}
|
|
7777
8121
|
}
|
|
7778
8122
|
getProperTargetElement(evt) {
|
|
7779
|
-
|
|
8123
|
+
const intCoord = this.getCoordinates(evt);
|
|
7780
8124
|
let ele;
|
|
7781
|
-
|
|
7782
|
-
|
|
8125
|
+
const prevStyle = this.helperElement.style.pointerEvents || '';
|
|
8126
|
+
let isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;
|
|
8127
|
+
if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {
|
|
7783
8128
|
this.helperElement.style.pointerEvents = 'none';
|
|
7784
8129
|
ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);
|
|
7785
8130
|
this.helperElement.style.pointerEvents = prevStyle;
|
|
@@ -7802,11 +8147,11 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7802
8147
|
}
|
|
7803
8148
|
getMousePosition(evt, isdragscroll) {
|
|
7804
8149
|
/* tslint:disable no-any */
|
|
7805
|
-
|
|
7806
|
-
|
|
8150
|
+
const dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;
|
|
8151
|
+
const intCoord = this.getCoordinates(evt);
|
|
7807
8152
|
let pageX;
|
|
7808
8153
|
let pageY;
|
|
7809
|
-
|
|
8154
|
+
const isOffsetParent = isNullOrUndefined(dragEle.offsetParent);
|
|
7810
8155
|
/* istanbul ignore next */
|
|
7811
8156
|
if (isdragscroll) {
|
|
7812
8157
|
pageX = this.clone ? intCoord.pageX :
|
|
@@ -7818,6 +8163,12 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7818
8163
|
pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;
|
|
7819
8164
|
pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;
|
|
7820
8165
|
}
|
|
8166
|
+
if (this.element && this.element.classList.length > 0 && this.element.classList.value.indexOf("e-dialog") === -1 && document.scrollingElement) {
|
|
8167
|
+
let isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;
|
|
8168
|
+
let isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;
|
|
8169
|
+
pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;
|
|
8170
|
+
pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;
|
|
8171
|
+
}
|
|
7821
8172
|
return {
|
|
7822
8173
|
left: pageX - (this.margin.left + this.cursorAt.left),
|
|
7823
8174
|
top: pageY - (this.margin.top + this.cursorAt.top)
|
|
@@ -7853,10 +8204,10 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7853
8204
|
};
|
|
7854
8205
|
}
|
|
7855
8206
|
checkTargetElement(evt) {
|
|
7856
|
-
|
|
8207
|
+
const target = this.getProperTargetElement(evt);
|
|
7857
8208
|
let dropIns = this.getDropInstance(target);
|
|
7858
8209
|
if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {
|
|
7859
|
-
|
|
8210
|
+
const parent = closest(target.parentNode, '.e-droppable') || target.parentElement;
|
|
7860
8211
|
if (parent) {
|
|
7861
8212
|
dropIns = this.getDropInstance(parent);
|
|
7862
8213
|
}
|
|
@@ -7864,12 +8215,12 @@ let Draggable = Draggable_1 = class Draggable extends Base {
|
|
|
7864
8215
|
return { target: target, instance: dropIns };
|
|
7865
8216
|
}
|
|
7866
8217
|
getDropInstance(ele) {
|
|
7867
|
-
|
|
8218
|
+
const name = 'getModuleName';
|
|
7868
8219
|
let drop;
|
|
7869
|
-
|
|
8220
|
+
const eleInst = ele && ele.ej2_instances;
|
|
7870
8221
|
if (eleInst) {
|
|
7871
|
-
for (
|
|
7872
|
-
if (inst[name]() === 'droppable') {
|
|
8222
|
+
for (const inst of eleInst) {
|
|
8223
|
+
if (inst[`${name}`]() === 'droppable') {
|
|
7873
8224
|
drop = inst;
|
|
7874
8225
|
break;
|
|
7875
8226
|
}
|
|
@@ -8166,7 +8517,7 @@ let KeyboardEvents = KeyboardEvents_1 = class KeyboardEvents extends Base {
|
|
|
8166
8517
|
const curkeyCode = e.which;
|
|
8167
8518
|
const keys = Object.keys(this.keyConfigs);
|
|
8168
8519
|
for (const key of keys) {
|
|
8169
|
-
const configCollection = this.keyConfigs[key].split(',');
|
|
8520
|
+
const configCollection = this.keyConfigs[`${key}`].split(',');
|
|
8170
8521
|
for (const rconfig of configCollection) {
|
|
8171
8522
|
const rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());
|
|
8172
8523
|
if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&
|
|
@@ -8240,7 +8591,7 @@ let KeyboardEvents = KeyboardEvents_1 = class KeyboardEvents extends Base {
|
|
|
8240
8591
|
*/
|
|
8241
8592
|
static getKeyConfigData(config) {
|
|
8242
8593
|
if (config in this.configCache) {
|
|
8243
|
-
return this.configCache[config];
|
|
8594
|
+
return this.configCache[`${config}`];
|
|
8244
8595
|
}
|
|
8245
8596
|
const keys = config.toLowerCase().split('+');
|
|
8246
8597
|
const keyData = {
|
|
@@ -8255,12 +8606,12 @@ let KeyboardEvents = KeyboardEvents_1 = class KeyboardEvents extends Base {
|
|
|
8255
8606
|
else {
|
|
8256
8607
|
keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);
|
|
8257
8608
|
}
|
|
8258
|
-
KeyboardEvents_1.configCache[config] = keyData;
|
|
8609
|
+
KeyboardEvents_1.configCache[`${config}`] = keyData;
|
|
8259
8610
|
return keyData;
|
|
8260
8611
|
}
|
|
8261
8612
|
// Return the keycode value as string
|
|
8262
8613
|
static getKeyCode(keyVal) {
|
|
8263
|
-
return keyCode[keyVal] || keyVal.toUpperCase().charCodeAt(0);
|
|
8614
|
+
return keyCode[`${keyVal}`] || keyVal.toUpperCase().charCodeAt(0);
|
|
8264
8615
|
}
|
|
8265
8616
|
};
|
|
8266
8617
|
KeyboardEvents.configCache = {};
|
|
@@ -8340,11 +8691,11 @@ class L10n {
|
|
|
8340
8691
|
*/
|
|
8341
8692
|
getConstant(prop) {
|
|
8342
8693
|
// Removed conditional operator because this method does not return correct value when passing 0 as value in localization
|
|
8343
|
-
if (!isNullOrUndefined(this.currentLocale[prop])) {
|
|
8344
|
-
return this.currentLocale[prop];
|
|
8694
|
+
if (!isNullOrUndefined(this.currentLocale[`${prop}`])) {
|
|
8695
|
+
return this.currentLocale[`${prop}`];
|
|
8345
8696
|
}
|
|
8346
8697
|
else {
|
|
8347
|
-
return this.localeStrings[prop] || '';
|
|
8698
|
+
return this.localeStrings[`${prop}`] || '';
|
|
8348
8699
|
}
|
|
8349
8700
|
}
|
|
8350
8701
|
/**
|
|
@@ -8355,8 +8706,8 @@ class L10n {
|
|
|
8355
8706
|
* @returns {Object} ?
|
|
8356
8707
|
*/
|
|
8357
8708
|
intGetControlConstant(curObject, locale) {
|
|
8358
|
-
if ((curObject)[locale]) {
|
|
8359
|
-
return (curObject)[locale][this.controlName];
|
|
8709
|
+
if ((curObject)[`${locale}`]) {
|
|
8710
|
+
return (curObject)[`${locale}`][this.controlName];
|
|
8360
8711
|
}
|
|
8361
8712
|
return null;
|
|
8362
8713
|
}
|
|
@@ -8496,6 +8847,10 @@ let Touch = class Touch extends Base {
|
|
|
8496
8847
|
diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);
|
|
8497
8848
|
diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);
|
|
8498
8849
|
this.isTouchMoved = diffX > 1 || diffY > 1;
|
|
8850
|
+
const isFirefox = (/Firefox/).test(Browser.userAgent);
|
|
8851
|
+
if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {
|
|
8852
|
+
this.isTouchMoved = false;
|
|
8853
|
+
}
|
|
8499
8854
|
this.endPoint = point;
|
|
8500
8855
|
this.calcPoints(evt);
|
|
8501
8856
|
const swipeArgs = {
|
|
@@ -8746,6 +9101,7 @@ const WINDOWFUNC = /\window\./gm;
|
|
|
8746
9101
|
function compile$1(template, helper, ignorePrefix) {
|
|
8747
9102
|
const argName = 'data';
|
|
8748
9103
|
const evalExpResult = evalExp(template, argName, helper, ignorePrefix);
|
|
9104
|
+
// eslint-disable-next-line
|
|
8749
9105
|
const condtion = `var valueRegEx = (/value=\\'([A-Za-z0-9 _]*)((.)([\\w)(!-;?-■\\s]+)['])/g);
|
|
8750
9106
|
var hrefRegex = (/(?:href)([\\s='"./]+)([\\w-./?=&\\\\#"]+)((.)([\\w)(!-;/?-■\\s]+)['])/g);
|
|
8751
9107
|
if(str.match(valueRegEx)){
|
|
@@ -8775,7 +9131,7 @@ function compile$1(template, helper, ignorePrefix) {
|
|
|
8775
9131
|
}
|
|
8776
9132
|
}
|
|
8777
9133
|
`;
|
|
8778
|
-
const fnCode =
|
|
9134
|
+
const fnCode = 'var str=\"' + evalExpResult + '\";' + condtion + ' return str;';
|
|
8779
9135
|
const fn = new Function(argName, fnCode);
|
|
8780
9136
|
return fn.bind(helper);
|
|
8781
9137
|
}
|
|
@@ -8888,7 +9244,7 @@ function evalExp(str, nameSpace, helper, ignorePrefix) {
|
|
|
8888
9244
|
}
|
|
8889
9245
|
else {
|
|
8890
9246
|
// evaluate normal expression
|
|
8891
|
-
cnt = '"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+"';
|
|
9247
|
+
cnt = cnt !== '' ? '"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+"' : ' ';
|
|
8892
9248
|
}
|
|
8893
9249
|
}
|
|
8894
9250
|
return cnt;
|
|
@@ -9007,23 +9363,23 @@ function compile$$1(templateString, helper, ignorePrefix) {
|
|
|
9007
9363
|
if (isBlazor() && !isStringTemplate) {
|
|
9008
9364
|
const randomId = getRandomId();
|
|
9009
9365
|
let blazorId = templateId + randomId;
|
|
9010
|
-
if (!blazorTemplates[templateId]) {
|
|
9011
|
-
blazorTemplates[templateId] = [];
|
|
9366
|
+
if (!blazorTemplates[`${templateId}`]) {
|
|
9367
|
+
blazorTemplates[`${templateId}`] = [];
|
|
9012
9368
|
}
|
|
9013
9369
|
if (!isNullOrUndefined(index)) {
|
|
9014
|
-
const keys = Object.keys(blazorTemplates[templateId][index]);
|
|
9370
|
+
const keys = Object.keys(blazorTemplates[`${templateId}`][parseInt(index.toString(), 10)]);
|
|
9015
9371
|
for (const key of keys) {
|
|
9016
|
-
if (key !== blazorTemplateId && data[key]) {
|
|
9017
|
-
blazorTemplates[templateId][index][key] = data[key];
|
|
9372
|
+
if (key !== blazorTemplateId && data[`${key}`]) {
|
|
9373
|
+
blazorTemplates[`${templateId}`][parseInt(index.toString(), 10)][`${key}`] = data[`${key}`];
|
|
9018
9374
|
}
|
|
9019
9375
|
if (key === blazorTemplateId) {
|
|
9020
|
-
blazorId = blazorTemplates[templateId][index][key];
|
|
9376
|
+
blazorId = blazorTemplates[`${templateId}`][parseInt(index.toString(), 10)][`${key}`];
|
|
9021
9377
|
}
|
|
9022
9378
|
}
|
|
9023
9379
|
}
|
|
9024
9380
|
else {
|
|
9025
|
-
data[blazorTemplateId] = blazorId;
|
|
9026
|
-
blazorTemplates[templateId].push(data);
|
|
9381
|
+
data[`${blazorTemplateId}`] = blazorId;
|
|
9382
|
+
blazorTemplates[`${templateId}`].push(data);
|
|
9027
9383
|
}
|
|
9028
9384
|
// eslint-disable-next-line
|
|
9029
9385
|
return propName === 'rowTemplate' ? [createElement('tr', { id: blazorId, className: 'e-blazor-template' })] :
|
|
@@ -9057,9 +9413,9 @@ function compile$$1(templateString, helper, ignorePrefix) {
|
|
|
9057
9413
|
function updateBlazorTemplate(templateId, templateName, comp, isEmpty, callBack) {
|
|
9058
9414
|
if (isBlazor()) {
|
|
9059
9415
|
const ejsIntrop = 'sfBlazor';
|
|
9060
|
-
window[ejsIntrop].updateTemplate(templateName, blazorTemplates[templateId], templateId, comp, callBack);
|
|
9416
|
+
window[`${ejsIntrop}`].updateTemplate(templateName, blazorTemplates[`${templateId}`], templateId, comp, callBack);
|
|
9061
9417
|
if (isEmpty !== false) {
|
|
9062
|
-
blazorTemplates[templateId] = [];
|
|
9418
|
+
blazorTemplates[`${templateId}`] = [];
|
|
9063
9419
|
}
|
|
9064
9420
|
}
|
|
9065
9421
|
}
|
|
@@ -9078,21 +9434,21 @@ function resetBlazorTemplate(templateId, templateName, index) {
|
|
|
9078
9434
|
for (let i = 0; i < innerTemplates.length; i++) {
|
|
9079
9435
|
let tempId = ' ';
|
|
9080
9436
|
if (!isNullOrUndefined(index)) {
|
|
9081
|
-
tempId = innerTemplates[index].getAttribute('data-templateId');
|
|
9437
|
+
tempId = innerTemplates[parseInt(index.toString(), 10)].getAttribute('data-templateId');
|
|
9082
9438
|
}
|
|
9083
9439
|
else {
|
|
9084
|
-
tempId = innerTemplates[i].getAttribute('data-templateId');
|
|
9440
|
+
tempId = innerTemplates[parseInt(i.toString(), 10)].getAttribute('data-templateId');
|
|
9085
9441
|
}
|
|
9086
9442
|
const tempElement = document.getElementById(tempId);
|
|
9087
9443
|
if (tempElement) {
|
|
9088
9444
|
const length = tempElement.childNodes.length;
|
|
9089
9445
|
for (let j = 0; j < length; j++) {
|
|
9090
9446
|
if (!isNullOrUndefined(index)) {
|
|
9091
|
-
innerTemplates[index].appendChild(tempElement.childNodes[0]);
|
|
9447
|
+
innerTemplates[parseInt(index.toString(), 10)].appendChild(tempElement.childNodes[0]);
|
|
9092
9448
|
i = innerTemplates.length;
|
|
9093
9449
|
}
|
|
9094
9450
|
else {
|
|
9095
|
-
innerTemplates[i].appendChild(tempElement.childNodes[0]);
|
|
9451
|
+
innerTemplates[parseInt(i.toString(), 10)].appendChild(tempElement.childNodes[0]);
|
|
9096
9452
|
}
|
|
9097
9453
|
}
|
|
9098
9454
|
}
|
|
@@ -9262,15 +9618,15 @@ class SanitizeHtmlHelper {
|
|
|
9262
9618
|
this.removeXssAttrs();
|
|
9263
9619
|
const tempEleValue = this.wrapElement.innerHTML;
|
|
9264
9620
|
this.removeElement();
|
|
9265
|
-
return tempEleValue;
|
|
9621
|
+
return tempEleValue.replace('&', '&');
|
|
9266
9622
|
}
|
|
9267
9623
|
static removeElement() {
|
|
9268
9624
|
// Removes an element's attibute to avoid html tag validation
|
|
9269
9625
|
const nodes = this.wrapElement.children;
|
|
9270
9626
|
for (let j = 0; j < nodes.length; j++) {
|
|
9271
|
-
const attribute = nodes[j].attributes;
|
|
9627
|
+
const attribute = nodes[parseInt(j.toString(), 10)].attributes;
|
|
9272
9628
|
for (let i = 0; i < attribute.length; i++) {
|
|
9273
|
-
this.wrapElement.children[j].removeAttribute(attribute[i].localName);
|
|
9629
|
+
this.wrapElement.children[parseInt(j.toString(), 10)].removeAttribute(attribute[parseInt(i.toString(), 10)].localName);
|
|
9274
9630
|
}
|
|
9275
9631
|
}
|
|
9276
9632
|
}
|
|
@@ -9317,5 +9673,5 @@ class SanitizeHtmlHelper {
|
|
|
9317
9673
|
* Base modules
|
|
9318
9674
|
*/
|
|
9319
9675
|
|
|
9320
|
-
export { blazorCultureFormats, IntlBase, Ajax, Animation, rippleEffect, isRippleEnabled, enableRipple, Base, getComponent, removeChildInstance, Browser, versionBasedStatePersistence, enableVersionBasedPersistence, Component, ChildProperty, Position, Draggable, Droppable, EventHandler, onIntlChange, rightToLeft, cldrData, defaultCulture, defaultCurrencyCode, Internationalization, setCulture, setCurrencyCode, loadCldr, enableRtl, getNumericObject, getNumberDependable, getDefaultDateObject, KeyboardEvents, L10n, ModuleLoader, Property, Complex, ComplexFactory, Collection, CollectionFactory, Event$1 as Event, NotifyPropertyChanges, CreateBuilder, SwipeSettings, Touch, HijriParser, blazorTemplates, getRandomId, compile$$1 as compile, updateBlazorTemplate, resetBlazorTemplate, setTemplateEngine, getTemplateEngine, disableBlazorMode, createInstance, setImmediate, getValue, setValue, deleteObject, containerObject, isObject, getEnumValue, merge, extend, isNullOrUndefined, isUndefined, getUniqueID, debounce, queryParams, isObjectArray, compareElementParent, throwError, print, formatUnit, enableBlazorMode, isBlazor, getElement, getInstance, addInstance, uniqueID, createElement, addClass, removeClass, isVisible, prepend, append, detach, remove, attributes, select, selectAll, closest, siblings, getAttributeOrDefault, setStyleAttribute, classList, matches, includeInnerHTML, containsClass, cloneNode, Observer, SanitizeHtmlHelper, registerLicense, validateLicense, getVersion };
|
|
9676
|
+
export { blazorCultureFormats, IntlBase, Ajax, Animation, rippleEffect, isRippleEnabled, enableRipple, animationMode, setGlobalAnimation, Base, getComponent, removeChildInstance, Browser, versionBasedStatePersistence, enableVersionBasedPersistence, Component, ChildProperty, Position, Draggable, Droppable, EventHandler, onIntlChange, rightToLeft, cldrData, defaultCulture, defaultCurrencyCode, Internationalization, setCulture, setCurrencyCode, loadCldr, enableRtl, getNumericObject, getNumberDependable, getDefaultDateObject, KeyboardEvents, L10n, ModuleLoader, Property, Complex, ComplexFactory, Collection, CollectionFactory, Event$1 as Event, NotifyPropertyChanges, CreateBuilder, SwipeSettings, Touch, HijriParser, blazorTemplates, getRandomId, compile$$1 as compile, updateBlazorTemplate, resetBlazorTemplate, setTemplateEngine, getTemplateEngine, disableBlazorMode, createInstance, setImmediate, getValue, setValue, deleteObject, containerObject, isObject, getEnumValue, merge, extend, isNullOrUndefined, isUndefined, getUniqueID, debounce, queryParams, isObjectArray, compareElementParent, throwError, print, formatUnit, enableBlazorMode, isBlazor, getElement, getInstance, addInstance, uniqueID, createElement, addClass, removeClass, isVisible, prepend, append, detach, remove, attributes, select, selectAll, closest, siblings, getAttributeOrDefault, setStyleAttribute, classList, matches, includeInnerHTML, containsClass, cloneNode, Observer, SanitizeHtmlHelper, componentList, registerLicense, validateLicense, getVersion, createLicenseOverlay };
|
|
9321
9677
|
//# sourceMappingURL=ej2-base.es2015.js.map
|