mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
add advanced setting
This commit is contained in:
parent
982dae32cf
commit
0c55a975f9
6 changed files with 161 additions and 153 deletions
|
@ -4,7 +4,7 @@
|
||||||
<title>${TitleAdvanced}</title>
|
<title>${TitleAdvanced}</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="advancedConfigurationPage" data-role="page" class="page type-interior advancedConfigurationPage" data-require="jqmcollapsible,scripts/advancedconfigurationpage,paper-input,paper-checkbox">
|
<div id="advancedConfigurationPage" data-role="page" class="page type-interior advancedConfigurationPage" data-require="emby-collapsible,scripts/advancedconfigurationpage,paper-input,paper-checkbox">
|
||||||
|
|
||||||
<div data-role="content">
|
<div data-role="content">
|
||||||
<div class="content-primary">
|
<div class="content-primary">
|
||||||
|
@ -26,63 +26,68 @@
|
||||||
<li>
|
<li>
|
||||||
<paper-checkbox id="chkDebugLog">${LabelEnableDebugLogging}</paper-checkbox>
|
<paper-checkbox id="chkDebugLog">${LabelEnableDebugLogging}</paper-checkbox>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<paper-checkbox id="chkUsageData">${OptionEnableAnonymousUsageReporting}</paper-checkbox>
|
||||||
|
<div class="fieldDescription paperCheckboxFieldDescription">
|
||||||
|
${OptionEnableAnonymousUsageReportingHelp}
|
||||||
|
<div style="margin-top:.5em;">
|
||||||
|
<a target="_blank" href="https://emby.media/privacy">${ButtonLearnMore}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div data-role="collapsible">
|
<emby-collapsible title="${HeaderAutomaticUpdates}">
|
||||||
<h2>${HeaderAutomaticUpdates}</h2>
|
<br />
|
||||||
|
<ul data-role="listview" class="ulForm">
|
||||||
|
<li class="fldAutomaticUpdates">
|
||||||
|
<div data-role="controlgroup">
|
||||||
|
<input type="checkbox" id="chkEnableAutomaticServerUpdates" data-mini="true" />
|
||||||
|
<label for="chkEnableAutomaticServerUpdates">${OptionEnableAutomaticServerUpdates}</label>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label class="lnlAutomaticUpdateLevel selectLabel" for="selectAutomaticUpdateLevel"></label>
|
||||||
|
<select name="selectAutomaticUpdateLevel" id="selectAutomaticUpdateLevel">
|
||||||
|
<option value="Release">${OptionRelease}</option>
|
||||||
|
<option value="Beta">${OptionBeta}</option>
|
||||||
|
<option value="Dev">${OptionDev}</option>
|
||||||
|
</select>
|
||||||
|
<div id="devBuildWarning" class="fieldDescription warningFieldDescription" style="display: none;">
|
||||||
|
${DevBuildWarning}
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li id="fldEnableAutomaticRestart" style="display: none;">
|
||||||
|
<paper-checkbox id="chkEnableAutomaticRestart">${LabelAllowServerAutoRestart}</paper-checkbox>
|
||||||
|
<div class="fieldDescription paperCheckboxFieldDescription">
|
||||||
|
${LabelAllowServerAutoRestartHelp}
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</emby-collapsible>
|
||||||
|
|
||||||
|
<emby-collapsible title="${HeaderDeveloperOptions}">
|
||||||
|
<br />
|
||||||
<div>
|
<div>
|
||||||
<br />
|
<paper-checkbox id="chkEnableDashboardResponseCache">${OptionEnableWebClientResponseCache}</paper-checkbox>
|
||||||
<ul data-role="listview" class="ulForm">
|
|
||||||
<li class="fldAutomaticUpdates">
|
|
||||||
<div data-role="controlgroup">
|
|
||||||
<input type="checkbox" id="chkEnableAutomaticServerUpdates" data-mini="true" />
|
|
||||||
<label for="chkEnableAutomaticServerUpdates">${OptionEnableAutomaticServerUpdates}</label>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<label class="lnlAutomaticUpdateLevel selectLabel" for="selectAutomaticUpdateLevel"></label>
|
|
||||||
<select name="selectAutomaticUpdateLevel" id="selectAutomaticUpdateLevel">
|
|
||||||
<option value="Release">${OptionRelease}</option>
|
|
||||||
<option value="Beta">${OptionBeta}</option>
|
|
||||||
<option value="Dev">${OptionDev}</option>
|
|
||||||
</select>
|
|
||||||
<div id="devBuildWarning" class="fieldDescription warningFieldDescription" style="display: none;">
|
|
||||||
${DevBuildWarning}
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li id="fldEnableAutomaticRestart" style="display: none;">
|
|
||||||
<paper-checkbox id="chkEnableAutomaticRestart">${LabelAllowServerAutoRestart}</paper-checkbox>
|
|
||||||
<div class="fieldDescription paperCheckboxFieldDescription">
|
|
||||||
${LabelAllowServerAutoRestartHelp}
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<br />
|
||||||
<div data-role="collapsible">
|
|
||||||
<h2>${HeaderDeveloperOptions}</h2>
|
|
||||||
<div>
|
<div>
|
||||||
<br />
|
<paper-checkbox id="chkEnableMinification">${OptionEnableWebClientResourceMinification}</paper-checkbox>
|
||||||
<div>
|
|
||||||
<paper-checkbox id="chkEnableDashboardResponseCache">${OptionEnableWebClientResponseCache}</paper-checkbox>
|
|
||||||
</div>
|
|
||||||
<br />
|
|
||||||
<div>
|
|
||||||
<paper-checkbox id="chkEnableMinification">${OptionEnableWebClientResourceMinification}</paper-checkbox>
|
|
||||||
</div>
|
|
||||||
<div class="fieldDescription paperCheckboxFieldDescription">
|
|
||||||
${OptionDisableForDevelopmentHelp}
|
|
||||||
</div>
|
|
||||||
<br /><br />
|
|
||||||
<ul data-role="listview" class="ulForm">
|
|
||||||
<li>
|
|
||||||
<paper-input type="text" id="txtDashboardSourcePath" label="${LabelDashboardSourcePath}" style="display: inline-block; width: 80%;"></paper-input>
|
|
||||||
<paper-icon-button id="btnSelectDashboardSourcePath" icon="search" title="${ButtonSelectDirectory}"></paper-icon-button>
|
|
||||||
<div class="fieldDescription">${LabelDashboardSourcePathHelp}</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="fieldDescription paperCheckboxFieldDescription">
|
||||||
|
${OptionDisableForDevelopmentHelp}
|
||||||
|
</div>
|
||||||
|
<br /><br />
|
||||||
|
<ul data-role="listview" class="ulForm">
|
||||||
|
<li>
|
||||||
|
<paper-input type="text" id="txtDashboardSourcePath" label="${LabelDashboardSourcePath}" style="display: inline-block; width: 80%;"></paper-input>
|
||||||
|
<paper-icon-button id="btnSelectDashboardSourcePath" icon="search" title="${ButtonSelectDirectory}"></paper-icon-button>
|
||||||
|
<div class="fieldDescription">${LabelDashboardSourcePathHelp}</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</emby-collapsible>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<ul data-role="listview" class="ulForm">
|
<ul data-role="listview" class="ulForm">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title>${TitleAutoOrganize}</title>
|
<title>${TitleAutoOrganize}</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="libraryFileOrganizerPage" data-role="page" class="page type-interior organizePage" data-helpurl="https://github.com/MediaBrowser/Wiki/wiki/Auto-Organize" data-require="jqmcollapsible,jqmtable,scripts/autoorganizetv,paper-input,paper-checkbox">
|
<div id="libraryFileOrganizerPage" data-role="page" class="page type-interior organizePage" data-helpurl="https://github.com/MediaBrowser/Wiki/wiki/Auto-Organize" data-require="emby-collapsible,jqmtable,scripts/autoorganizetv,paper-input,paper-checkbox">
|
||||||
|
|
||||||
<div data-role="content">
|
<div data-role="content">
|
||||||
<div class="content-primary">
|
<div class="content-primary">
|
||||||
|
@ -43,102 +43,99 @@
|
||||||
<paper-input type="text" id="txtSeasonZeroName" name="txtSeasonZeroName" label="${LabelSeasonZeroFolderName}" required></paper-input>
|
<paper-input type="text" id="txtSeasonZeroName" name="txtSeasonZeroName" label="${LabelSeasonZeroFolderName}" required></paper-input>
|
||||||
</li>
|
</li>
|
||||||
</ul><br />
|
</ul><br />
|
||||||
<div data-role="collapsible" data-mini="true">
|
|
||||||
<h3>${HeaderEpisodeFilePattern}</h3>
|
<emby-collapsible title="${HeaderEpisodeFilePattern}">
|
||||||
|
<br />
|
||||||
<div>
|
<div>
|
||||||
<br />
|
<paper-input type="text" id="txtEpisodePattern" name="txtEpisodePattern" label="${LabelEpisodePattern}" required></paper-input>
|
||||||
<div>
|
<div class="fieldDescription episodePatternDescription"></div>
|
||||||
<paper-input type="text" id="txtEpisodePattern" name="txtEpisodePattern" label="${LabelEpisodePattern}" required></paper-input>
|
|
||||||
<div class="fieldDescription episodePatternDescription"></div>
|
|
||||||
</div>
|
|
||||||
<br />
|
|
||||||
<div>
|
|
||||||
<paper-input type="text" id="txtMultiEpisodePattern" name="txtMultiEpisodePattern" label="${LabelMultiEpisodePattern}" required></paper-input>
|
|
||||||
<div class="fieldDescription multiEpisodePatternDescription"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
<p>${HeaderSupportedPatterns}</p>
|
|
||||||
|
|
||||||
<table data-role="table" id="movie-table" data-mode="reflow" class="ui-responsive">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>${HeaderTerm}</th>
|
|
||||||
<th>${HeaderPattern}</th>
|
|
||||||
<th>${HeaderResult}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelSeriesNamePlain}</td>
|
|
||||||
<td>%sn</td>
|
|
||||||
<td>${LabelSeriesNamePlain}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelSeriesNamePlain}</td>
|
|
||||||
<td>%s.n</td>
|
|
||||||
<td>${ValueSeriesNamePeriod}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelSeriesNamePlain}</td>
|
|
||||||
<td>%s_n</td>
|
|
||||||
<td>${ValueSeriesNameUnderscore}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelSeasonNumberPlain}</td>
|
|
||||||
<td>%s</td>
|
|
||||||
<td>1</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelSeasonNumberPlain}</td>
|
|
||||||
<td>%0s</td>
|
|
||||||
<td>01</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelEpisodeNumberPlain}</td>
|
|
||||||
<td>%e</td>
|
|
||||||
<td>4</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelEpisodeNumberPlain}</td>
|
|
||||||
<td>%0e</td>
|
|
||||||
<td>04</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelEndingEpisodeNumberPlain}</td>
|
|
||||||
<td>%ed</td>
|
|
||||||
<td>5</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelEndingEpisodeNumberPlain}</td>
|
|
||||||
<td>%0ed</td>
|
|
||||||
<td>05</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelEpisodeNamePlain}</td>
|
|
||||||
<td>%en</td>
|
|
||||||
<td>${LabelEpisodeNamePlain}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelEpisodeNamePlain}</td>
|
|
||||||
<td>%e.n</td>
|
|
||||||
<td>${ValueEpisodeNamePeriod}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${LabelEpisodeNamePlain}</td>
|
|
||||||
<td>%e_n</td>
|
|
||||||
<td>${ValueEpisodeNameUnderscore}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>${FileExtension}</td>
|
|
||||||
<td>%ext</td>
|
|
||||||
<td>mkv</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<br />
|
||||||
|
<div>
|
||||||
|
<paper-input type="text" id="txtMultiEpisodePattern" name="txtMultiEpisodePattern" label="${LabelMultiEpisodePattern}" required></paper-input>
|
||||||
|
<div class="fieldDescription multiEpisodePatternDescription"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<p>${HeaderSupportedPatterns}</p>
|
||||||
|
|
||||||
|
<table data-role="table" id="movie-table" data-mode="reflow" class="ui-responsive">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>${HeaderTerm}</th>
|
||||||
|
<th>${HeaderPattern}</th>
|
||||||
|
<th>${HeaderResult}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelSeriesNamePlain}</td>
|
||||||
|
<td>%sn</td>
|
||||||
|
<td>${LabelSeriesNamePlain}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelSeriesNamePlain}</td>
|
||||||
|
<td>%s.n</td>
|
||||||
|
<td>${ValueSeriesNamePeriod}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelSeriesNamePlain}</td>
|
||||||
|
<td>%s_n</td>
|
||||||
|
<td>${ValueSeriesNameUnderscore}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelSeasonNumberPlain}</td>
|
||||||
|
<td>%s</td>
|
||||||
|
<td>1</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelSeasonNumberPlain}</td>
|
||||||
|
<td>%0s</td>
|
||||||
|
<td>01</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelEpisodeNumberPlain}</td>
|
||||||
|
<td>%e</td>
|
||||||
|
<td>4</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelEpisodeNumberPlain}</td>
|
||||||
|
<td>%0e</td>
|
||||||
|
<td>04</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelEndingEpisodeNumberPlain}</td>
|
||||||
|
<td>%ed</td>
|
||||||
|
<td>5</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelEndingEpisodeNumberPlain}</td>
|
||||||
|
<td>%0ed</td>
|
||||||
|
<td>05</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelEpisodeNamePlain}</td>
|
||||||
|
<td>%en</td>
|
||||||
|
<td>${LabelEpisodeNamePlain}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelEpisodeNamePlain}</td>
|
||||||
|
<td>%e.n</td>
|
||||||
|
<td>${ValueEpisodeNamePeriod}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${LabelEpisodeNamePlain}</td>
|
||||||
|
<td>%e_n</td>
|
||||||
|
<td>${ValueEpisodeNameUnderscore}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>${FileExtension}</td>
|
||||||
|
<td>%ext</td>
|
||||||
|
<td>mkv</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</emby-collapsible>
|
||||||
<br /><br />
|
<br /><br />
|
||||||
<ul data-role="listview" class="ulForm">
|
<ul data-role="listview" class="ulForm">
|
||||||
<li>
|
<li>
|
||||||
|
|
|
@ -1892,7 +1892,7 @@ emby-collapsible>.style-scope {
|
||||||
.ui-body-a .emby-collapsible-title {
|
.ui-body-a .emby-collapsible-title {
|
||||||
margin: .25em 0;
|
margin: .25em 0;
|
||||||
color: #000;
|
color: #000;
|
||||||
padding: 0 0 0 .25em;
|
padding: 0 0 0 .5em;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
$('#chkEnableAutomaticServerUpdates', page).checked(config.EnableAutoUpdate);
|
$('#chkEnableAutomaticServerUpdates', page).checked(config.EnableAutoUpdate);
|
||||||
$('#chkEnableAutomaticRestart', page).checked(config.EnableAutomaticRestart);
|
$('#chkEnableAutomaticRestart', page).checked(config.EnableAutomaticRestart);
|
||||||
|
$('#chkUsageData', page).checked(config.EnableAnonymousUsageReporting);
|
||||||
|
|
||||||
if (systemInfo.CanSelfRestart) {
|
if (systemInfo.CanSelfRestart) {
|
||||||
$('#fldEnableAutomaticRestart', page).show();
|
$('#fldEnableAutomaticRestart', page).show();
|
||||||
|
@ -58,6 +59,7 @@
|
||||||
config.SystemUpdateLevel = $('#selectAutomaticUpdateLevel', form).val();
|
config.SystemUpdateLevel = $('#selectAutomaticUpdateLevel', form).val();
|
||||||
config.EnableAutomaticRestart = $('#chkEnableAutomaticRestart', form).checked();
|
config.EnableAutomaticRestart = $('#chkEnableAutomaticRestart', form).checked();
|
||||||
config.EnableAutoUpdate = $('#chkEnableAutomaticServerUpdates', form).checked();
|
config.EnableAutoUpdate = $('#chkEnableAutomaticServerUpdates', form).checked();
|
||||||
|
config.EnableAnonymousUsageReporting = $('#chkUsageData', form).checked();
|
||||||
|
|
||||||
config.EnableDashboardResourceMinification = $('#chkEnableMinification', form).checked();
|
config.EnableDashboardResourceMinification = $('#chkEnableMinification', form).checked();
|
||||||
config.EnableDashboardResponseCaching = $('#chkEnableDashboardResponseCache', form).checked();
|
config.EnableDashboardResponseCaching = $('#chkEnableDashboardResponseCache', form).checked();
|
||||||
|
|
|
@ -2505,5 +2505,7 @@
|
||||||
"ButtonAddMissingData": "Add missing data only",
|
"ButtonAddMissingData": "Add missing data only",
|
||||||
"ButtonFullRefresh": "Full refresh",
|
"ButtonFullRefresh": "Full refresh",
|
||||||
"ValueExample": "1:00 PM",
|
"ValueExample": "1:00 PM",
|
||||||
"ButtonGotIt": "Got It"
|
"ButtonGotIt": "Got It",
|
||||||
|
"OptionEnableAnonymousUsageReporting": "Enable anonymous usage reporting",
|
||||||
|
"OptionEnableAnonymousUsageReportingHelp": "Allow Emby to collect anonymous data such as installed plugins, the version numbers of your Emby apps, etc. This information is only used for the purpose of improving the software."
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,9 +40,9 @@
|
||||||
"ButtonPrivacyPolicy": "Privacy policy",
|
"ButtonPrivacyPolicy": "Privacy policy",
|
||||||
"ButtonTermsOfService": "Terms of Service",
|
"ButtonTermsOfService": "Terms of Service",
|
||||||
"HeaderDeveloperOptions": "Developer Options",
|
"HeaderDeveloperOptions": "Developer Options",
|
||||||
"OptionEnableWebClientResponseCache": "Enable web client response caching",
|
"OptionEnableWebClientResponseCache": "Enable web response caching",
|
||||||
"OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.",
|
"OptionDisableForDevelopmentHelp": "Configure these as needed for web development purposes.",
|
||||||
"OptionEnableWebClientResourceMinification": "Enable web client resource minification",
|
"OptionEnableWebClientResourceMinification": "Enable web resource minification",
|
||||||
"LabelDashboardSourcePath": "Web client source path:",
|
"LabelDashboardSourcePath": "Web client source path:",
|
||||||
"LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.",
|
"LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.",
|
||||||
"ButtonConvertMedia": "Convert media",
|
"ButtonConvertMedia": "Convert media",
|
||||||
|
@ -2505,5 +2505,7 @@
|
||||||
"ButtonAddMissingData": "Add missing data only",
|
"ButtonAddMissingData": "Add missing data only",
|
||||||
"ButtonFullRefresh": "Full refresh",
|
"ButtonFullRefresh": "Full refresh",
|
||||||
"ValueExample": "1:00 PM",
|
"ValueExample": "1:00 PM",
|
||||||
"ButtonGotIt": "Got It"
|
"ButtonGotIt": "Got It",
|
||||||
|
"OptionEnableAnonymousUsageReporting": "Enable anonymous usage reporting",
|
||||||
|
"OptionEnableAnonymousUsageReportingHelp": "Allow Emby to collect anonymous data such as installed plugins, the version numbers of your Emby apps, etc. This information is only used for the purpose of improving the software."
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue