@progress/telerik-jquery-report-viewer 26.25.716 → 27.25.813
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/README.md +33 -4
- package/dist/cjs/aiPrompt.js +25 -21
- package/dist/cjs/documentMapArea.js +2 -2
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/parametersArea.js +6 -4
- package/dist/cjs/reportViewer.js +28 -6
- package/dist/cjs/sr.js +6 -3
- package/dist/cjs/toolbar.js +1 -1
- package/dist/cjs/utils.js +0 -25
- package/dist/font/font-icons.css +4 -4
- package/dist/font/font-icons.min.css +3 -3
- package/dist/js/telerikReportViewer.js +1729 -350
- package/dist/js/telerikReportViewer.min.js +1 -1
- package/dist/js/telerikReportViewer.stringResources.js +6 -3
- package/dist/styles/telerikReportViewer.css +3 -3
- package/dist/styles/telerikReportViewer.min.css +3 -3
- package/dist/templates/telerikReportViewerTemplate.html +8 -11
- package/package.json +1 -1
- /package/dist/font/{ReportingIcons-19.1.25.716.ttf → ReportingIcons-19.2.25.813.ttf} +0 -0
package/README.md
CHANGED
@@ -1,9 +1,38 @@
|
|
1
|
-
# Progress Telerik jQuery Report Viewer
|
1
|
+
# Progress® Telerik HTML5 jQuery Report Viewer
|
2
2
|
|
3
3
|
This package is part of [Telerik Reporting](https://www.telerik.com/reporting).
|
4
4
|
|
5
|
-
|
5
|
+
The Telerik Reporting HTML5 Report Viewer is an HTML5/jQuery-based component that enables the display of Telerik Reports within a web page. Its rich preview capabilities, easy customization, and extensive API allow for seamless integration into a wide range of web applications.
|
6
6
|
|
7
|
-
|
7
|
+
Major features:
|
8
8
|
|
9
|
-
|
9
|
+
* Preview Telerik Reports in desktop or mobile browsers.
|
10
|
+
|
11
|
+
* Browse the report pages on screen.
|
12
|
+
|
13
|
+
* Navigate through the history of visited reports.
|
14
|
+
|
15
|
+
* Use built-in interactivity features such as navigating to external URLs, other reports or bookmarks, performing drill-down actions, sorting by table columns, etc.
|
16
|
+
|
17
|
+
* Print or export the report to supported formats including PDF, Word, Excel, and PowerPoint.
|
18
|
+
|
19
|
+
* Use the viewer's API for customizing and extending its behavior.
|
20
|
+
|
21
|
+
This version of Telerik jQuery Report Viewer requires either Telerik Report Server or Telerik Reporting REST Service 19.2.25.813.
|
22
|
+
|
23
|
+
Learn more about Telerik Reporting Viewers here: [Telerik Report Viewers Overview](https://docs.telerik.com/reporting/embedding-reports/display-reports-in-applications/overview)
|
24
|
+
|
25
|
+
## License
|
26
|
+
|
27
|
+
**IMPORTANT** This is commercial software. To use it, you must agree to the
|
28
|
+
[Telerik End User License Agreement for Telerik Reporting](https://www.telerik.com/purchase/license-agreement/reporting-dlw-s).
|
29
|
+
|
30
|
+
If you do not have a commercial license, the usage of this product is governed by the trial license terms.
|
31
|
+
|
32
|
+
Telerik Reporting requires activation using a license key — this applies to both the trial and commercial versions of the product.
|
33
|
+
|
34
|
+
Telerik Reporting licenses can be obtained through the [Telerik Reporting page](https://www.telerik.com/purchase/individual/reporting). For more information on licensing, configuration, and troubleshooting, refer to the product documentation's [License section](https://docs.telerik.com/reporting/licensing/setting-up-your-telerik-reporting-license-key).
|
35
|
+
|
36
|
+
_Copyright © 2025 Progress Software Corporation and/or one of its subsidiaries or affiliates. All rights reserved._
|
37
|
+
|
38
|
+
_Progress, Telerik, and certain product names used herein are trademarks or registered trademarks of Progress Software Corporation and/or one of its subsidiaries or affiliates in the U.S. and/or other countries._
|
package/dist/cjs/aiPrompt.js
CHANGED
@@ -62,9 +62,9 @@ class AiPrompt {
|
|
62
62
|
this.pagesAreaContainer = this.reportViewerWrapper.find('[data-id="trv-pages-area"]');
|
63
63
|
this.aiPromptDialogInitialized = false;
|
64
64
|
this.aiPromptInitialized = false;
|
65
|
-
|
66
|
-
this.
|
67
|
-
this.
|
65
|
+
this.requireConsent = false;
|
66
|
+
this.allowCustomPrompts = true;
|
67
|
+
this.predefinedPrompts = [];
|
68
68
|
this.init();
|
69
69
|
}
|
70
70
|
init() {
|
@@ -72,10 +72,8 @@ class AiPrompt {
|
|
72
72
|
return;
|
73
73
|
}
|
74
74
|
replaceStringResources(this.$element);
|
75
|
-
|
76
|
-
|
77
|
-
this._attachAiConsentDialogCommands();
|
78
|
-
}
|
75
|
+
this._initAiConsentDialog();
|
76
|
+
this._attachAiConsentDialogCommands();
|
79
77
|
this._initAiPromptDialog();
|
80
78
|
this._attachEvents();
|
81
79
|
this.aiPromptDialogInitialized = true;
|
@@ -108,7 +106,10 @@ class AiPrompt {
|
|
108
106
|
this.kendoAiConsentDialog.close();
|
109
107
|
this.controller.saveToSessionStorage("trvAiConsent", "true");
|
110
108
|
this.controller.setAiPromptInitiated(true);
|
111
|
-
this.
|
109
|
+
if (this.kendoAiPromptDialog) {
|
110
|
+
this._initAiPrompt(this.predefinedPrompts);
|
111
|
+
this.kendoAiPromptDialog.open();
|
112
|
+
}
|
112
113
|
})
|
113
114
|
};
|
114
115
|
binder.Binder.attachCommands(this.kendoAiConsentDialog.element.find(".trv-ai-consent-actions"), optionsCommandSet, this.viewerOptions);
|
@@ -120,7 +121,7 @@ class AiPrompt {
|
|
120
121
|
return;
|
121
122
|
}
|
122
123
|
this.kendoAiConsentDialog = new kendo.ui.Window(aiConsentDialogElement, {
|
123
|
-
title: "
|
124
|
+
title: stringResources.stringResources["aiPromptDialogConsentTitle"] || "",
|
124
125
|
width: 500,
|
125
126
|
minWidth: 400,
|
126
127
|
minHeight: 106,
|
@@ -222,14 +223,14 @@ class AiPrompt {
|
|
222
223
|
if (this.allowCustomPrompts) {
|
223
224
|
return;
|
224
225
|
}
|
225
|
-
let aiPromptTextAreaPlaceholder = "
|
226
|
+
let aiPromptTextAreaPlaceholder = stringResources.stringResources["aiPromptDialogTextAreaPlaceholder"];
|
226
227
|
const aiPromptTextArea = this.kendoAiPrompt.element.find(".k-prompt-content .k-prompt-view textarea");
|
227
228
|
if (!hasPromptSuggestions) {
|
228
229
|
const aiPromptGenerateButton = this.kendoAiPrompt.element.find(".k-prompt-footer .k-actions");
|
229
230
|
aiPromptGenerateButton && aiPromptGenerateButton.addClass("k-disabled");
|
230
|
-
aiPromptTextAreaPlaceholder = "
|
231
|
+
aiPromptTextAreaPlaceholder = stringResources.stringResources["aiPromptDialogNoPredefinedAndCustomPromptsPlaceholder"] || "";
|
231
232
|
} else {
|
232
|
-
aiPromptTextAreaPlaceholder = "
|
233
|
+
aiPromptTextAreaPlaceholder = stringResources.stringResources["aiPromptDialogNoCustomPromptsPlaceholder"] || "";
|
233
234
|
}
|
234
235
|
aiPromptTextArea && aiPromptTextArea.attr("placeholder", aiPromptTextAreaPlaceholder) && aiPromptTextArea.addClass("k-disabled");
|
235
236
|
}
|
@@ -281,17 +282,20 @@ class AiPrompt {
|
|
281
282
|
}
|
282
283
|
}
|
283
284
|
open() {
|
284
|
-
|
285
|
-
this.
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
285
|
+
this.controller.createAIThread().then((data) => {
|
286
|
+
this.predefinedPrompts = data?.predefinedPrompts;
|
287
|
+
this.allowCustomPrompts = data?.allowCustomPrompts;
|
288
|
+
if (this.kendoAiConsentDialog && data.requireConsent && this.controller.loadFromSessionStorage("trvAiConsent") !== "true") {
|
289
|
+
$(".trv-ai-consent-content").html(data?.consentMessage);
|
290
|
+
this.kendoAiConsentDialog.open();
|
291
|
+
return;
|
292
|
+
}
|
293
|
+
if (this.kendoAiPromptDialog) {
|
290
294
|
this.controller.setAiPromptInitiated(true);
|
291
|
-
this._initAiPrompt(
|
295
|
+
this._initAiPrompt(this.predefinedPrompts);
|
292
296
|
this.kendoAiPromptDialog.open();
|
293
|
-
}
|
294
|
-
}
|
297
|
+
}
|
298
|
+
});
|
295
299
|
}
|
296
300
|
close() {
|
297
301
|
this.controller.setAiPromptInitiated(false);
|
@@ -134,9 +134,9 @@ class DocumentMapArea {
|
|
134
134
|
}
|
135
135
|
showDocumentMap(show) {
|
136
136
|
var splitter = $("#" + this.options.viewerSelector + "-document-map-splitter").getKendoSplitter();
|
137
|
-
var sibling = this.$element.next();
|
137
|
+
var sibling = this.$element.next(".k-splitbar");
|
138
138
|
if (this.options.documentMapAreaPosition === enums.DocumentMapAreaPositions.RIGHT) {
|
139
|
-
sibling = this.$element.prev();
|
139
|
+
sibling = this.$element.prev(".k-splitbar");
|
140
140
|
}
|
141
141
|
if (splitter) {
|
142
142
|
(this.documentMapNecessary ? $.fn.removeClass : $.fn.addClass).call(sibling, "k-hidden");
|
package/dist/cjs/index.js
CHANGED
@@ -45,6 +45,9 @@ exports.parameterEditorsMatch = parameters.parameterEditorsMatch;
|
|
45
45
|
exports.ParameterValidators = parameterValidators.ParameterValidators;
|
46
46
|
exports.PerspectiveManager = perspectives.PerspectiveManager;
|
47
47
|
exports.ReportViewer = reportViewer.ReportViewer;
|
48
|
+
exports.ReportViewerController = reportViewer.ReportViewerController;
|
49
|
+
exports.ReportViewerNotificationService = reportViewer.ReportViewerNotificationService;
|
50
|
+
exports.ReportViewerServiceClient = reportViewer.ReportViewerServiceClient;
|
48
51
|
exports.TouchBehavior = touch.TouchBehavior;
|
49
52
|
exports.UIController = uiController.UIController;
|
50
53
|
exports.ParametersArea = parametersArea.ParametersArea;
|
@@ -446,9 +446,9 @@ class ParametersArea {
|
|
446
446
|
if (!splitter) {
|
447
447
|
return;
|
448
448
|
}
|
449
|
-
var sibling = this.$element.prev();
|
449
|
+
var sibling = this.$element.prev(".k-splitbar");
|
450
450
|
if (this.options.parametersAreaPosition === enums.ParametersAreaPositions.TOP || this.options.parametersAreaPosition === enums.ParametersAreaPositions.LEFT) {
|
451
|
-
sibling = this.$element.next();
|
451
|
+
sibling = this.$element.next(".k-splitbar");
|
452
452
|
}
|
453
453
|
(this.parametersAreaNecessary ? $.fn.removeClass : $.fn.addClass).call(sibling, "k-hidden");
|
454
454
|
splitter.toggle(".trv-parameters-area", show);
|
@@ -465,8 +465,10 @@ class ParametersArea {
|
|
465
465
|
_attachEvents() {
|
466
466
|
this.controller.on("reloadParameters", (controllerLoadParametersPromise) => {
|
467
467
|
this.showError();
|
468
|
-
|
469
|
-
|
468
|
+
if (this._parametersWrapper) {
|
469
|
+
kendo.destroy(this._parametersWrapper);
|
470
|
+
this._parametersWrapper.innerHTML = "";
|
471
|
+
}
|
470
472
|
this.acceptParameters(controllerLoadParametersPromise, this.onLoadParametersSuccess.bind(this));
|
471
473
|
}).onAsync("beforeLoadReport", async () => {
|
472
474
|
this.loadingCount = 0;
|
package/dist/cjs/reportViewer.js
CHANGED
@@ -125,7 +125,8 @@ function getDefaultOptions(serviceUrl, version) {
|
|
125
125
|
searchMetadataOnDemand: false,
|
126
126
|
initialPageAreaImageUrl: null,
|
127
127
|
keepClientAlive: true,
|
128
|
-
webDesignerPreview: false
|
128
|
+
webDesignerPreview: false,
|
129
|
+
serverPreview: false
|
129
130
|
};
|
130
131
|
}
|
131
132
|
function ReportViewer(dom, options) {
|
@@ -154,7 +155,7 @@ function ReportViewer(dom, options) {
|
|
154
155
|
if (!validateOptions(options)) {
|
155
156
|
return;
|
156
157
|
}
|
157
|
-
var version = "19.
|
158
|
+
var version = "19.2.25.813";
|
158
159
|
options = $.extend({}, getDefaultOptions(svcApiUrl, version), options);
|
159
160
|
settings = new reportViewerSettings.ReportViewerSettings(
|
160
161
|
persistanceKey,
|
@@ -169,7 +170,8 @@ function ReportViewer(dom, options) {
|
|
169
170
|
parametersAreaPosition: options.parametersAreaPosition,
|
170
171
|
documentMapAreaPosition: options.documentMapAreaPosition,
|
171
172
|
keepClientAlive: options.keepClientAlive,
|
172
|
-
webDesignerPreview: options.webDesignerPreview
|
173
|
+
webDesignerPreview: options.webDesignerPreview,
|
174
|
+
serverPreview: options.serverPreview
|
173
175
|
}
|
174
176
|
);
|
175
177
|
notificationService$1 = new notificationService.NotificationService();
|
@@ -647,7 +649,7 @@ function ReportViewer(dom, options) {
|
|
647
649
|
function start() {
|
648
650
|
var pendingRefresh = false;
|
649
651
|
init();
|
650
|
-
if (!options.webDesignerPreview) {
|
652
|
+
if (!(options.webDesignerPreview || options.serverPreview)) {
|
651
653
|
if (controller.shouldShowLicenseBanner()) {
|
652
654
|
$(".trv-content-wrapper")?.prepend('<span class="trv-license-banner"></span>');
|
653
655
|
const licenseBanner = $(".trv-license-banner").kendoNotification({
|
@@ -817,13 +819,21 @@ function ReportViewer(dom, options) {
|
|
817
819
|
return Promise.resolve();
|
818
820
|
}
|
819
821
|
var kendoUrl = utils.rTrim(svcApiUrl, "\\/") + "/resources/js/telerikReportViewer.kendo-" + version2 + ".min.js/";
|
820
|
-
return
|
822
|
+
return fetch(kendoUrl).then((response) => {
|
823
|
+
if (!response.ok) {
|
824
|
+
return Promise.reject({ error: "Failed to fetch data - status code " + response.status });
|
825
|
+
}
|
826
|
+
return response.text();
|
827
|
+
}).then((kendoScript) => {
|
828
|
+
const scriptElement = document.createElement("script");
|
829
|
+
scriptElement.textContent = kendoScript;
|
830
|
+
document.head.appendChild(scriptElement);
|
831
|
+
}).catch((errorData) => {
|
821
832
|
utils.logError("Kendo could not be loaded automatically. Make sure 'options.serviceUrl' / 'options.reportServer.url' is correct and accessible. The error is: " + errorData.error);
|
822
833
|
});
|
823
834
|
}
|
824
835
|
function main(version2) {
|
825
836
|
ensureKendo(version2).then(() => {
|
826
|
-
}).then(() => {
|
827
837
|
viewer.authenticationToken(options.authenticationToken);
|
828
838
|
controller.getServiceConfiguration().catch((ex) => {
|
829
839
|
var errorOutput = utils.isApplicationExceptionInstance(ex) ? ex.exceptionMessage : utils.stringFormat(stringResources.stringResources.errorServiceUrl, [utils.escapeHtml(svcApiUrl)]);
|
@@ -859,6 +869,15 @@ function ReportViewer(dom, options) {
|
|
859
869
|
}
|
860
870
|
return viewer;
|
861
871
|
}
|
872
|
+
function ReportViewerServiceClient(serviceClientOptions) {
|
873
|
+
return new RCV__namespace.ServiceClient(serviceClientOptions);
|
874
|
+
}
|
875
|
+
function ReportViewerController(controllerOptions) {
|
876
|
+
return new RCV__namespace.ReportController(controllerOptions?.serviceClient, controllerOptions?.settings);
|
877
|
+
}
|
878
|
+
function ReportViewerNotificationService() {
|
879
|
+
return new notificationService.NotificationService();
|
880
|
+
}
|
862
881
|
var pluginName = "telerik_ReportViewer";
|
863
882
|
$.fn[pluginName] = function(options) {
|
864
883
|
if (this.selector && !options.selector) {
|
@@ -919,3 +938,6 @@ plugins.forEach((plugin) => {
|
|
919
938
|
});
|
920
939
|
|
921
940
|
exports.ReportViewer = ReportViewer;
|
941
|
+
exports.ReportViewerController = ReportViewerController;
|
942
|
+
exports.ReportViewerNotificationService = ReportViewerNotificationService;
|
943
|
+
exports.ReportViewerServiceClient = ReportViewerServiceClient;
|
package/dist/cjs/sr.js
CHANGED
@@ -164,9 +164,12 @@ var sr = {
|
|
164
164
|
sendEmailValidationSingleEmail: "The field accepts a single email address only",
|
165
165
|
sendEmailValidationFormatRequired: "Format field is required",
|
166
166
|
errorSendingDocument: "Error sending report document (Report = '{0}').",
|
167
|
-
|
168
|
-
|
169
|
-
|
167
|
+
aiPromptDialogConsentTitle: "Before you start with AI",
|
168
|
+
aiPromptDialogConsentAccept: "Consent",
|
169
|
+
aiPromptDialogConsentReject: "Cancel",
|
170
|
+
aiPromptDialogTextAreaPlaceholder: "Enter your prompt",
|
171
|
+
aiPromptDialogNoPredefinedAndCustomPromptsPlaceholder: "Custom prompts are disabled and there are no predefined prompts configured. Please allow custom prompts or add predefined prompts to use the AI feature.",
|
172
|
+
aiPromptDialogNoCustomPromptsPlaceholder: "Custom prompts are disabled, please select one of the predefined suggestions below"
|
170
173
|
};
|
171
174
|
window.telerikReportViewer ||= {};
|
172
175
|
window.telerikReportViewer.sr ||= sr;
|
package/dist/cjs/toolbar.js
CHANGED
@@ -82,7 +82,7 @@ class Toolbar {
|
|
82
82
|
}
|
83
83
|
createToolbarItem(elementData) {
|
84
84
|
const cmdName = (elementData.dataset?.command || "").replace("telerik_ReportViewer_", "");
|
85
|
-
if (cmdName === "toggleAiPromptDialog" && !this._options.controller.
|
85
|
+
if (cmdName === "toggleAiPromptDialog" && !this._options.controller.isAiInsightsEnabled()) {
|
86
86
|
return;
|
87
87
|
}
|
88
88
|
const id = elementData.id;
|
package/dist/cjs/utils.js
CHANGED
@@ -34,13 +34,6 @@ function isSpecialKey() {
|
|
34
34
|
return false;
|
35
35
|
};
|
36
36
|
}
|
37
|
-
function toXhrErrorData(xhr, status, error) {
|
38
|
-
return {
|
39
|
-
xhr,
|
40
|
-
status,
|
41
|
-
error
|
42
|
-
};
|
43
|
-
}
|
44
37
|
function rectangle(left, top, width, height) {
|
45
38
|
return {
|
46
39
|
left,
|
@@ -193,13 +186,6 @@ function getExceptionInstance(xhr) {
|
|
193
186
|
}
|
194
187
|
return parseJSON(xhr.responseText);
|
195
188
|
}
|
196
|
-
function loadScript(url) {
|
197
|
-
var ajaxOptions = {
|
198
|
-
dataType: "script",
|
199
|
-
cache: true
|
200
|
-
};
|
201
|
-
return $ajax(url, ajaxOptions);
|
202
|
-
}
|
203
189
|
function filterUniqueLastOccurrence(array) {
|
204
190
|
function onlyLastUnique(value, index, self) {
|
205
191
|
return self.lastIndexOf(value) === index;
|
@@ -249,15 +235,6 @@ function getColorAlphaValue(color) {
|
|
249
235
|
var alpha = colorComponents.length === 4 ? parseFloat((parseFloat(colorComponents[3].replace(/[()]/g, "")) / 255).toFixed(2)) : 1;
|
250
236
|
return alpha;
|
251
237
|
}
|
252
|
-
function $ajax(url, ajaxSettings) {
|
253
|
-
return new Promise(function(resolve, reject) {
|
254
|
-
$.ajax(url, ajaxSettings).done(function(data) {
|
255
|
-
return resolve(data);
|
256
|
-
}).fail(function(xhr, status, error) {
|
257
|
-
reject(toXhrErrorData(xhr, status, error));
|
258
|
-
});
|
259
|
-
});
|
260
|
-
}
|
261
238
|
|
262
239
|
Object.defineProperty(exports, 'parseToLocalDate', {
|
263
240
|
enumerable: true,
|
@@ -275,7 +252,6 @@ Object.defineProperty(exports, 'tryParseInt', {
|
|
275
252
|
enumerable: true,
|
276
253
|
get: function () { return RCV.tryParseInt; }
|
277
254
|
});
|
278
|
-
exports.$ajax = $ajax;
|
279
255
|
exports.adjustTimezone = adjustTimezone;
|
280
256
|
exports.areEqual = areEqual;
|
281
257
|
exports.areEqualArrays = areEqualArrays;
|
@@ -290,7 +266,6 @@ exports.isApplicationExceptionInstance = isApplicationExceptionInstance;
|
|
290
266
|
exports.isRgbColor = isRgbColor;
|
291
267
|
exports.isSpecialKey = isSpecialKey;
|
292
268
|
exports.lTrim = lTrim;
|
293
|
-
exports.loadScript = loadScript;
|
294
269
|
exports.logError = logError;
|
295
270
|
exports.parseJSON = parseJSON;
|
296
271
|
exports.rTrim = rTrim;
|
package/dist/font/font-icons.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
* TelerikReporting v19.
|
2
|
+
* TelerikReporting v19.2.25.813 (https://www.telerik.com/products/reporting.aspx)
|
3
3
|
* Copyright 2025 Progress Software EAD. All rights reserved.
|
4
4
|
*
|
5
5
|
* Telerik Reporting commercial licenses may be obtained at
|
@@ -10,14 +10,14 @@
|
|
10
10
|
font-family: "ReportingIcons";
|
11
11
|
font-style: normal;
|
12
12
|
font-weight: normal;
|
13
|
-
src: url("../ReportingIcons-19.
|
13
|
+
src: url("../ReportingIcons-19.2.25.813.ttf/") format("truetype");
|
14
14
|
/*unicode-range: U+E0ED, U+E0EE, U+E0E6, U+E132, U+E12F, U+E008, U+E00B, U+E09C, U+E096, U+E07E, U+E086, U+E06C, U+E07F, U+E080, U+E081, U+E149, U+E087;*/
|
15
15
|
}
|
16
16
|
@font-face {
|
17
17
|
font-family: "WebComponentsIcons";
|
18
18
|
font-style: normal;
|
19
19
|
font-weight: normal;
|
20
|
-
src: url("../ReportingIcons-19.
|
20
|
+
src: url("../ReportingIcons-19.2.25.813.ttf/") format("truetype");
|
21
21
|
}
|
22
22
|
.k-icon {
|
23
23
|
/* use !important to prevent issues with browser extensions that change fonts */
|
@@ -4256,4 +4256,4 @@
|
|
4256
4256
|
.trv-report-viewer .t-i-scroll:before {
|
4257
4257
|
content: "\e022";
|
4258
4258
|
}
|
4259
|
-
/* DO NOT MODIFY OR DELETE THIS LINE! UPGRADE WIZARD CHECKSUM
|
4259
|
+
/* DO NOT MODIFY OR DELETE THIS LINE! UPGRADE WIZARD CHECKSUM 13afab675da2be218389d6d0045b16be */
|