<?php

	// Included files
	require_once __DIR__ . "/backend/common.php";
	require_once __DIR__ . "/backend/language.php";
	require_once __DIR__ . "/backend/resources.php";
	
	
	// Constants
	
	// Language
	$language = getLanguage();

	// Year
	$year = getYear();
	
	// Is crawler
	$isCrawler = array_key_exists("HTTP_USER_AGENT", $_SERVER) === TRUE && is_string($_SERVER["HTTP_USER_AGENT"]) === TRUE && mb_stristr($_SERVER["HTTP_USER_AGENT"], "googlebot") !== FALSE;
	
	
	// Main function
	
	// Set content language header
	header("Content-Language: " . $language);

?><!DOCTYPE html>
<html class="translatable" lang="<?= encodeString($language); ?>" dir="<?= encodeString(getConstant("Direction")); ?>">

<head>

	<meta charset="UTF-8">
	
	<?php
							
		// Go through all available languages
		foreach(getAvailableLanguages() as $languageIdentifier => $availableLanguage) {
		
			// Display language alternative page
			echo "<link rel=\"alternate\" hreflang=\"" . encodeString($languageIdentifier) . "\" href=\"http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . "/?" . urlencode("Language") . "=" . urlencode($languageIdentifier) . "\">";
			
			// Check if available language has an extension locale code that's not the same as its language identifier
			if(array_key_exists("Constants", $availableLanguage) === TRUE && array_key_exists("Extension Locale Code", $availableLanguage["Constants"]) === TRUE && $availableLanguage["Constants"]["Extension Locale Code"] !== $languageIdentifier) {
			
				// Display language alternative page
				echo "<link rel=\"alternate\" hreflang=\"" . encodeString($availableLanguage["Constants"]["Extension Locale Code"]) . "\" href=\"http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . "/?" . urlencode("Language") . "=" . urlencode($languageIdentifier) . "\">";
			}
		}
	?>
	
	<link rel="alternate" hreflang="x-default" href="<?= "http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . "/"; ?>">
	<link rel="canonical" href="<?= "http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . "/" . (($language !== DEFAULT_LANGUAGE) ? "?" . urlencode("Language") . "=" . urlencode($language) : ""); ?>">
	
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
	
	<script>
	
		// Use strict
		"use strict";


		// Constants

		// Index not found
		var INDEX_NOT_FOUND = -1;
		
		// Scroll tolerance
		var SCROLL_TOLERANCE = 2;

		// Show loading delay milliseconds
		var SHOW_LOADING_DELAY_MILLISECONDS = 100;


		// Global variables

		// Loading error occurred
		var loadingErrorOccurred = false;

		// Script error occurred
		var scriptErrorOccurred = false;

		// DOM content loaded
		var domContentLoaded = false;

		// Error shown
		var errorShown = false;

		// Use application error handler
		var useApplicationErrorHandler = false;


		// Supporting function implementation

		// Array index
		function arrayIndex(array, value) {

			// Go through all values in the array
			for(var i = 0; i < array["length"]; ++i)
			
				// Check if array value matches the value
				if(array[i] === value)
				
					// Return index
					return i;
			
			// Return index not found
			return INDEX_NOT_FOUND;
		}

		// Add event
		function addEvent(element, event, callback) {

			// Check if element add event listener is supported
			if(typeof element.addEventListener !== "undefined")
			
				// Add event listener to the element
				element.addEventListener(event, callback);
			
			// Otherwise check if element attach event is supported
			else if(typeof element.attachEvent !== "undefined")
			
				// Attach event to the element
				element.attachEvent("on" + event, callback);
		}

		// Add class
		function addClass(element, className) {

			// Check if element has no classes
			if(typeof element["className"] === "undefined" || element["className"] === null || element["className"]["length"] === 0)
			
				// Set element's classes to class
				element["className"] = className;
			
			// Otherwise
			else {
			
				// Get all of the element's classes
				var classes = element["className"].split(" ");
				
				// Check if element doesn't already have the class
				if(arrayIndex(classes, className) === INDEX_NOT_FOUND)
				
					// Append class to element's classes
					element["className"] += " " + className;
			}
		}

		// Remove class
		function removeClass(element, className) {

			// Check if element has classes
			if(typeof element["className"] !== "undefined" && element["className"] !== null && element["className"]["length"] !== 0) {
			
				// Get all of the element's classes
				var classes = element["className"].split(" ");
				
				// Check if element has the class
				var classIndex = arrayIndex(classes, className);
				if(classIndex !== INDEX_NOT_FOUND) {
				
					// Remove class from classes
					classes.splice(classIndex, 1);
					
					// Set element's classes to changed classes
					element["className"] = classes.join(" ");
				}
			}
		}

		// Has class
		function hasClass(element, className) {

			// Check if element has classes
			if(typeof element["className"] !== "undefined" && element["className"] !== null && element["className"]["length"] !== 0) {
			
				// Get all of the element's classes
				var classes = element["className"].split(" ");
				
				// Check if element has the class
				var classIndex = arrayIndex(classes, className);
				if(classIndex !== INDEX_NOT_FOUND)
				
					// Return true
					return true;
			}
			
			// Return false
			return false;
		}

		// Get element
		function getElement(parent, tagName, className) {

			// Get all elements with the tag name
			var elements = parent.getElementsByTagName(tagName);
			
			// Go through all elements with the tag name
			for(var i = 0; i < elements["length"]; ++i)
			
				// Check if element has the class
				if(hasClass(elements[i], className) === true)
				
					// Return element
					return elements[i];
		}

		// Escape HTML
		function escapeHtml(string) {

			// Initialize result
			var result = "";
			
			// Go through all characters in the string
			for(var i = 0; i < string["length"]; ++i) {
			
				// Check if character is a less than
				if(string.charAt(i) === "<")
				
					// Append less than HTML entity to result
					result += "&lt;";
				
				// Otherwise check if character is a greater than
				else if(string.charAt(i) === ">")
				
					// Append greater than HTML entity to result
					result += "&gt;";
				
				// Otherwise check if character is an ampersand
				else if(string.charAt(i) === "&")
				
					// Append ampersand HTML entity to result
					result += "&amp;";
				
				// Otherwise
				else
				
					// Append character to result
					result += string.charAt(i);
			}
			
			// Return result
			return result;
		}

		// On resize
		function onResize() {

			// Get message display
			var messageDisplay = getElement(document, "aside", "message");
			
			// Get message display text
			var messageDisplayText = messageDisplay.getElementsByTagName("p")[0];
			
			// Check if message display is shown
			if(hasClass(messageDisplay, "hide") === false || hasClass(messageDisplay, "noScriptShow") === true) {
				
				// Check if message display text has scroll bars
				if(messageDisplayText["scrollHeight"] > messageDisplayText["clientHeight"]) {
				
					// Add message display text separator
					addClass(messageDisplayText["parentNode"], "separate");
					
					// Check if message display text's offset width is supported
					if(typeof messageDisplayText["offsetWidth"] !== "undefined" && messageDisplayText["offsetWidth"] !== null) {
					
						// Get scrollbar width
						var scrollbarWidth = messageDisplayText["offsetWidth"] - messageDisplayText["clientWidth"] + "px";
					
						// Set message display arrows margin to scrollbar width
						getElement(messageDisplay, "span", "upArrow")["style"]["marginRight"] = scrollbarWidth;
						getElement(messageDisplay, "span", "downArrow")["style"]["marginRight"] = scrollbarWidth;
					}
					
					// Otherwise
					else {
					
						// Set message display arrows margin to a safe value
						addClass(getElement(messageDisplay, "span", "upArrow"), "safeMargin");
						addClass(getElement(messageDisplay, "span", "downArrow"), "safeMargin");
					}
						
				}
				
				// Otherwise
				else
				
					// Remove message display text separator
					removeClass(messageDisplayText["parentNode"], "separate");
			}
			
			// Otherwise
			else
			
				// Remove message display text separator
				removeClass(messageDisplayText["parentNode"], "separate");
			
			// Scroll message display text to add or remove arrows
			onScroll();
		}

		// On scroll
		function onScroll() {

			// Get message display text
			var messageDisplayText = getElement(document, "aside", "message").getElementsByTagName("p")[0];
			
			// Check if message display text's scroll top is supported
			if(typeof messageDisplayText["scrollTop"] !== "undefined" && messageDisplayText["scrollTop"] !== null) {
			
				// Check if scrolled to the top
				if(messageDisplayText["scrollTop"] <= 0)
				
					// Hide scroll up arrow
					removeClass(messageDisplayText["parentNode"], "scrollUp");
				
				// Otherwise
				else
				
					// Show scroll up arrow
					addClass(messageDisplayText["parentNode"], "scrollUp");
				
				// Check if scrolled to the bottom
				if(Math.abs(messageDisplayText["scrollHeight"] - messageDisplayText["clientHeight"] - messageDisplayText["scrollTop"]) <= SCROLL_TOLERANCE || messageDisplayText["scrollHeight"] - messageDisplayText["scrollTop"] <= messageDisplayText["clientHeight"]) {
				
					// Hide scroll down arrow
					removeClass(messageDisplayText["parentNode"], "scrollDown");
				}
				
				// Otherwise
				else {
				
					// Show scroll down arrow
					addClass(messageDisplayText["parentNode"], "scrollDown");
				}
			}
			
			// Otherwise
			else {
			
				// Hide scroll up arrow
				removeClass(messageDisplayText["parentNode"], "scrollUp");
			
				// Hide scroll down arrow
				removeClass(messageDisplayText["parentNode"], "scrollDown");
			}
		}
		
		// Is extension
		function isExtension() {
		
			// Return if extension
			return typeof location !== "undefined" && location["protocol"]["length"] > "-extension:"["length"] && location["protocol"].substring(location["protocol"]["length"] - "-extension:"["length"]) === "-extension:";
		}
		
		// Is app
		function isApp() {
		
			// Return if app
			return isExtension() === false && ((typeof navigator === "object" && navigator !== null && "standalone" in navigator === true && navigator["standalone"] === true) || (typeof matchMedia === "function" && matchMedia("(display-mode: standalone)")["matches"] === true));
		}

		// Show error
		function showError() {

			// Check if error hasn't been shown and not using the application error handler
			if(errorShown === false && useApplicationErrorHandler === false) {
			
				// Set error shown
				errorShown = true;
				
				// Get body
				var body = getElement(document, "body", "loading");
				
				// Hide loading
				removeClass(body, "loading");
				
				// Get message display
				var messageDisplay = getElement(document, "aside", "message");
				
				// Get message display text
				var messageDisplayText = messageDisplay.getElementsByTagName("p")[0];

				// Window resize event
				addEvent(window, "resize", onResize);
				
				// Message display text scroll event
				addEvent(messageDisplayText, "scroll", onScroll);
				
				// Resize window
				onResize();
				
				// Check if a loading error occurred
				if(loadingErrorOccurred === true) {
				
					<?php
					
						// Check if crawler
						if($isCrawler === TRUE) {
					?>
					
						// Set header message
						var headerMessage = "<?= escapeString(getTranslation('MWC Wallet')); ?>";
						
						// Set header text
						var headerText = "<?= escapeString(getDefaultTranslation('MWC Wallet')); ?>";
						
						// Set text message
						var textMessage = "<?= escapeString(getTranslation('MWC Wallet is a self-custodial web wallet that allows you to manage your MimbleWimble Coin in your web browser.')); ?>";
						
						// Set text text
						var textText = "<?= escapeString(getDefaultTranslation('MWC Wallet is a self-custodial web wallet that allows you to manage your MimbleWimble Coin in your web browser.')); ?>";
						
					<?php
					
						}
						
						// Otherwise
						else {
					?>
					
						// Set header message
						var headerMessage = "<?= escapeString(getTranslation('Loading Error')); ?>";
						
						// Set header text
						var headerText = "<?= escapeString(getDefaultTranslation('Loading Error')); ?>";
						
						// Check if is an app
						if(isApp() === true) {
						
							// Set text message
							var textMessage = "<?= escapeString(getTranslation('Failed to load resources. Restart this app to try again.')); ?>";
							
							// Set text text
							var textText = "<?= escapeString(getDefaultTranslation('Failed to load resources. Restart this app to try again.')); ?>";
						}
						
						// Otherwise
						else {
						
							// Set text message
							var textMessage = "<?= escapeString(getTranslation('Failed to load resources. Refresh this site to try again.')); ?>";
							
							// Set text text
							var textText = "<?= escapeString(getDefaultTranslation('Failed to load resources. Refresh this site to try again.')); ?>";
						}
						
					<?php
					
						}
					?>
				}
			
				// Otherwise check if a script error occurred
				else if(scriptErrorOccurred === true) {
				
					// Set header message
					var headerMessage = "<?= escapeString(getTranslation('Compatibility Error')); ?>";
					
					// Set header text
					var headerText = "<?= escapeString(getDefaultTranslation('Compatibility Error')); ?>";
				
					// Set text message
					var textMessage = "<?= escapeString(getTranslation('Your browser isn\'t compatible. Update your browser to continue.')); ?>";
					
					// Set text text
					var textText = "<?= escapeString(getDefaultTranslation('Your browser isn\'t compatible. Update your browser to continue.')); ?>";
				}
				
				// Get loading display
				var loadingDisplay = getElement(document, "div", "loading");
				
				// Get message display header
				var messageDisplayHeader = messageDisplay.getElementsByTagName("h2")[0];
				
				// Set message display header message
				messageDisplayHeader["innerHTML"] = escapeHtml(headerMessage);
				
				// Check if message display header dataset is supported
				if(typeof messageDisplayHeader["dataset"] !== "undefined")
				
					// Set message display header dataset text
					messageDisplayHeader["dataset"]["text"] = headerText;
				
				// Get message display text content
				var messageDisplayTextContent = getElement(messageDisplayText, "span", "text").getElementsByTagName("span")[0];
				
				// Set message display text content message
				messageDisplayTextContent["innerHTML"] = escapeHtml(textMessage);
				
				// Check if message display text content dataset is supported
				if(typeof messageDisplayTextContent["dataset"] !== "undefined")
				
					// Set message display text content dataset text
					messageDisplayTextContent["dataset"]["text"] = textText;
				
				// Set timeout
				setTimeout(function() {
				
					// Check if message display text's scroll top is supported
					if(typeof messageDisplayText["scrollTop"] !== "undefined" && messageDisplayText["scrollTop"] !== null)
				
						// Scroll to the top of message display text
						messageDisplayText["scrollTop"] = 0;
					
					// Show message display
					removeClass(messageDisplay, "hide");
					
					// Prevent message display arrows from fading
					addClass(messageDisplay, "noArrowTransition");
					
					// Resize window to add or remove text separator
					onResize();
					
					// Allow message display arrows to fade
					removeClass(messageDisplay, "noArrowTransition");
					
					// Hide loading display spinner
					addClass(getElement(loadingDisplay, "div", "spinner"), "hide");
				
				}, SHOW_LOADING_DELAY_MILLISECONDS);
				
				// Check if history is supported and URL query string exists
				if(typeof history === "object" && history !== null && typeof URL_QUERY_STRING !== "undefined") {
				
					// Change displayed URL to include the query string
					history.replaceState(NO_STATE, document["title"], ((location["protocol"] === "file:") ? location["protocol"] + "//" : "") + location["pathname"] + URL_QUERY_STRING);
				}
			}
		}

		// Startup error occurred
		function startupErrorOccurred() {

			// Return if a loading or script error occurred
			return loadingErrorOccurred === true || scriptErrorOccurred === true;
		}

		// Process loading error
		function processLoadingError(element, failed) {

			// Check if resource failed to load
			if(failed === true || (typeof element["sheet"] !== "undefined" && element["sheet"] !== null && typeof element["sheet"]["cssRules"] !== "undefined" && element["sheet"]["cssRules"] !== null && element["sheet"]["cssRules"]["length"] === 0)) {
			
				// Check if not using the application error handler
				if(useApplicationErrorHandler === false) {
				
					// Set loading error occurred
					loadingErrorOccurred = true;
				}
				
				// Check if DOM content was already loaded
				if(domContentLoaded === true)
				
					// Show error
					showError();
			}
		}

		// Enable application error handler
		function enableApplicationErrorHandler() {

			// Set use application error handler
			useApplicationErrorHandler = true;
		}

		// Using application error handler
		function usingApplicationErrorHandler() {

			// Return if using application error handler
			return useApplicationErrorHandler === true;
		}
		
		
		// Main function
		
		// Log message
		console.log("%c%s", "color: red; font-size: 30px; text-transform: uppercase;", "<?= escapeString(getTranslation('If someone asked you to copy/paste something here you are being scammed!!!')); ?>");
		
		// Make older browsers aware of newer tags
		document.createElement("aside");
		document.createElement("section");

		// Window error event
		addEvent(window, "error", function() {
		
			// Check if not using the application error handler
			if(useApplicationErrorHandler === false) {

				// Set script error occurred
				scriptErrorOccurred = true;
			}
			
			// Check if DOM content was already loaded
			if(domContentLoaded === true)
			
				// Show error
				showError();
		});

		// Document ready state change event
		addEvent(document, "readystatechange", function(event) {

			// Check if document is complete
			if(document["readyState"] === "complete") {
			
				// Check if DOM content hasn't already loaded
				if(domContentLoaded === false) {
			
					// Set DOM content loaded
					domContentLoaded = true;
					
					// Check if a startup error occurred
					if(startupErrorOccurred() === true)
					
						// Show error
						showError();
				}
			}
		});
		
	</script>
	
	<link rel="preload" as="image" href="<?= encodeString(getResource("./images/logo_big.svg")); ?>" onerror="processLoadingError(this, true);" type="image/svg+xml">
	<link rel="preload" as="image" href="<?= encodeString(getResource("./images/logo_small.svg")); ?>" onerror="processLoadingError(this, true);" type="image/svg+xml">
	<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/open_sans/open_sans-1.10.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
	<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/open_sans/open_sans_semibold-1.10.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
	<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/mwc/mwc.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
	<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/grin/grin.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
	<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/epic/epic.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
	<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/btc/btc.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
	<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/eth/eth.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
	<link rel="preload" as="image" href="<?= encodeString(getResource("./images/circle.svg")); ?>" onerror="processLoadingError(this, true);" type="image/svg+xml">
	<link rel="preload" as="image" href="<?= encodeString(getResource("./images/down_arrow.svg")); ?>" onerror="processLoadingError(this, true);" type="image/svg+xml">
	
	<link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/normalize.css-8.0.1.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/normalize.css-8.0.1.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);">
	<link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/open_sans/open_sans.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/open_sans/open_sans.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);">
	<link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/font_awesome/font_awesome.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/font_awesome/font_awesome.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);">
	
	<style>
	
		.hide {
			display: none;
		}
		
		* {
			touch-action: none;
		}
		
		p, li, h2, h3 {
			cursor: default;
		}
		
		::selection {
			background: #D4B7F2;
		}
		
		.scrollable, .scrollable * {
			touch-action: pan-y;
		}
		
		:focus {
			outline: none !important;
		}

		::-ms-reveal, ::-ms-clear {
			display: none !important;
		}

		::-webkit-caps-lock-indicator, ::-webkit-credentials-auto-fill-button {
			display: none !important;
			width: 0 !important;
			margin: 0 !important;
		}

		::-moz-focus-inner {
			border: 0 !important;
		}

		select:-moz-focusring {
			color: transparent !important;
			-moz-text-shadow: 0 0 0 white !important;
			text-shadow: 0 0 0 white !important;
		}

		[draggable] {
			-ms-user-select: none;
			-mox-user-select: none;
			-webkit-user-select: none;
			-o-user-select: none;
			user-select: none;
			cursor: move;
		}
	
		@viewport {
			zoom: 1.0;
			width: device-width;
		}
		
		html {
			margin: 0;
			padding: 0;
			height: 100%;
		}

		body {
			white-space: normal;
			white-space: break-spaces;
			padding: 0;
			width: 100%;
			margin: auto;
			font-family: "Open Sans", Arial, sans-serif;
			height: 100%;
			position: fixed;
			-moz-user-select: none;
			-webkit-user-select: none;
			-o-user-select: none;
			-ms-user-select: none;
			user-select: none;
			-webkit-tap-highlight-color: transparent;
			-webkit-touch-callout: none;
			top: 0;
			left: 0;
			background: #7A00D9;
			background: linear-gradient(to right, #9E00E7, #3600C9);
			min-width: 250px;
			min-height: 350px;
			overflow: hidden;
			font-size: 100%;
			-webkit-font-smoothing: antialiased;
		}
		
		body.loading, body.loading * {
			cursor: wait !important;
		}

		body > div {
			width: 100%;
			height: 100%;
			display: flex;
			flex-direction: column;
			position: relative;
			min-height: 0;
			align-items: center;
		}

		body > div > div {
			align-items: center;
			height: 100%;
			position: relative;
			top: 0;
			left: 0;
			padding: 0;
			margin: 0 auto;
			flex-grow: 0;
			display: flex;
			flex-direction: column;
			width: 100%;
			justify-content: center;
			min-height: 0;
		}
		
		main {
			height: 100%;
			width: 100%;
			overflow: hidden;
			display: flex;
			flex-direction: column;
			align-items: center;
			position: relative;
		}
		
		main > div {
			height: 100%;
			display: flex;
			justify-content: center;
			flex-direction: column;
			width: calc(100% - 4em);
			margin: auto;
			max-height: 900px;
			align-items: center;
			position: relative;
		}

		main > div > div {
			height: 100%;
			display: flex;
			justify-content: center;
			flex-direction: column;
			width: 100%;
			max-width: 30em;
			margin: auto;
		}

		main > div > div > div.logo {
			background-image: url("<?= encodeString(getResource("./images/logo_big.svg")); ?>");
			background-size: 100%;
			background-repeat: no-repeat;
			background-position: center;
			flex-grow: 1;
			visibility: visible;
			opacity: 1;
			transition: opacity 0.15s ease-in-out, visibility 0.15s ease-in-out;
		}

		main > div > div > div.logo.hide {
			display: block;
			visibility: hidden;
			opacity: 0;
		}

		@media only screen and (max-width: 500px) {

			main > div > div > div.logo {
				background-image: url("<?= encodeString(getResource("./images/logo_small.svg")); ?>");
				background-size: 59%;
			}
		}
		
		@media only screen and (max-width: 450px) {

			main > div > div > div.logo {
				background-image: url("<?= encodeString(getResource("./images/logo_small.svg")); ?>");
				background-size: 50%;
			}
		}
		
		@media only screen and (max-height: 800px) {

			main > div > div > div.logo {
				background-image: url("<?= encodeString(getResource("./images/logo_small.svg")); ?>");
				background-size: 50%;
			}
		}
		
		@media only screen and (min-width: 451px) and (max-height: 800px) {

			main > div > div > div.logo {
				background-image: url("<?= encodeString(getResource("./images/logo_small.svg")); ?>");
				background-size: 40%;
			}
		}

		@media only screen and (max-width: 350px) {

			main > div > div > div.logo {
				background-size: 0%;
			}
		}

		@media only screen and (max-height: 600px) {

			main > div > div > div.logo {
				background-size: 0%;
			}
		}

		div.loading > div.spinner {
			display: none;
			display: flex;
			flex-direction: column;
			height: 50%;
			visibility: visible;
			opacity: 1;
			transition: opacity 0.15s ease-in-out, visibility 0.15s ease-in-out;
			align-items: center;
		}
		
		div.loading > div.spinner.hide {
			display: flex;
			visibility: hidden;
			opacity: 0;
		}

		@media only screen and (max-height: 800px) {

			div.loading > div.spinner {
				height: 60%;
			}
		}
		
		@media only screen and (max-width: 450px) {

			div.loading > div.spinner {
				height: 60%;
			}
		}
		
		@media only screen and (max-height: 750px) {

			div.loading > div.spinner {
				height: 68%;
			}
		}
		
		@media only screen and (max-width: 350px) {

			div.loading > div.spinner {
				height: 100%;
				justify-content: center;
			}
		}

		@media only screen and (max-height: 600px) {

			div.loading > div.spinner {
				height: 100%;
				justify-content: center;
			}
		}
		
		@keyframes spin {

			0% {
				transform: rotate(0deg);
			}
			
			100% {
				transform: rotate(360deg);
			}
		}

		div.loading > div.spinner > div {
			border: 0.7em solid white;
			border-bottom: 0.7em solid #6D00D7;
			border-bottom: 0.7em solid transparent;
			border-right: 0.7em solid #6D00D7;
			border-right: 0.7em solid transparent;
			border-radius: 50%;
			width: 4em;
			height: 4em;
			animation: spin 1.3s linear infinite;
			margin-top: 7em;
		}
		
		@media only screen and (max-width: 350px) {

			div.loading > div.spinner > div {
				margin-top: 0;
			}
		}

		@media only screen and (max-height: 600px) {

			div.loading > div.spinner > div {
				margin-top: 0;
			}
		}

		div.loading > div.spinner > p {
			text-overflow: ellipsis;
			white-space: nowrap;
			white-space: pre;
			text-align: center;
			overflow: hidden;
			width: 100%;
			margin: 0.6em 2em 0 2em;
			color: white;
			font-family: "Open Sans", Arial, sans-serif;
			font-size: 19pt;
			padding-bottom: 0.2em;
		}
		
		aside.message {
			width: 100%;
			height: 100%;
			position: absolute;
			z-index: 4;
			top: 0;
			left: 0;
			display: table;
			display: flex;
			align-items: center;
			background: rgba(0, 0, 0, 0.31);
			visibility: visible;
			opacity: 1;
			transition: opacity 0.15s ease-in-out, visibility 0.15s ease-in-out;
		}

		aside.message.hide {
			display: flex;
			visibility: hidden;
			opacity: 0;
			pointer-events: none;
		}
		
		aside.message.hide * {
			pointer-events: none;
		}
		
		aside.message > div {
			width: calc(100% - 4em);
			margin: auto;
			padding: 0 2em;
			display: table-cell;
			vertical-align: middle;
			display: flex;
			max-width: 55em;
			height: 100%;
			align-items: center;
			visibility: visible;
			opacity: 1;
			transition: opacity 0.15s ease-in-out, visibility 0.15s ease-in-out;
		}
		
		aside.message.noMessage > div {
			visibility: hidden;
			opacity: 0;
		}

		aside.message > div > div {
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: space-around;
			margin: auto;
			background: white;
			box-shadow: 0 0 10px 3px rgba(0, 0, 0, 0.2);
			width: 100%;
			max-height: 70%;
			max-width: 51em;
			overflow: hidden;
		}
		
		@media only screen and (max-width: 500px) {

			aside.message > div > div {
				max-height: calc(100% - 4em);
			}
		}

		@media only screen and (max-height: 600px) {

			aside.message > div > div {
				max-height: calc(100% - 4em);
			}
		}

		aside.message > div > div > h2 {
			font-weight: normal;
			color: #3600C9;
			font-size: 20pt;
			margin: 0 2em 0.7em 2em;
			padding-top: 1em;
			white-space: nowrap;
			white-space: pre;
			overflow: hidden;
			text-overflow: ellipsis;
			max-width: calc(100% - 4em);
			flex-shrink: 0;
			line-height: 1.4em;
			cursor: default;
			text-align: center;
		}
		
		@media only screen and (max-width: 600px) {

			aside.message > div > div > h2 {
				font-size: 19pt;
			}
		}

		@media only screen and (max-height: 400px) {

			aside.message > div > div > h2 {
				font-size: 19pt;
			}
		}

		aside.message > div > div > p {
			overflow-y: auto;
			overflow-x: hidden;
			min-height: 5.5em;
			color: #3600C9;
			font-size: 16pt;
			text-align: center;
			margin: 0;
			width: 100%;
			padding: 0.3em 0;
			cursor: default;
			flex-grow: 1;
			position: relative;
			z-index: 5;
			scrollbar-width: thin;
		}

		@media only screen and (max-width: 600px) {

			aside.message > div > div > p {
				font-size: 15pt;
			}
		}

		@media only screen and (max-height: 400px) {

			aside.message > div > div > p {
				min-height: 0.5em;
				max-height: 5.5em;
				font-size: 15pt;
				height: 5.5em;
			}
		}

		@media only screen and (max-width: 500px) {

			aside.message > div > div > p {
				font-size: 14pt;
			}
		}

		aside.message.noButtons > div > div > p {
			min-height: 2em;
		}

		aside.message > div > div.separate > p {
			border-top: 0.15em solid #3600C9;
			border-bottom: 0.15em solid #3600C9;
		}
		
		aside.message > div > div > span.upArrow, aside.message > div > div > span.downArrow {
			font-family: "Font Awesome";
			font-weight: bold;
			position: relative;
			align-self: stretch;
			color: #3600C9;
			display: none;
			visibility: hidden;
			opacity: 0;
			transition: opacity 0.14s ease-in-out, visibility 0.14s ease-in-out;
			margin-right: 0;
		}
		
		aside.message > div > div > span.upArrow.safeMargin, aside.message > div > div > span.downArrow.safeMargin {
			margin-right: 20px;
		}
		
		aside.message.noArrowTransition > div > div > span.upArrow, aside.message.noArrowTransition > div > div > span.downArrow {
			transition: none;
		}
		
		aside.message > div > div.separate > span.upArrow, aside.message > div > div.separate > span.downArrow {
			display: block;
		}
		
		@media only screen and (max-height: 350px) {

			aside.message > div > div.separate > span.upArrow {
				display: none;
			}
			
			aside.message.noButtons > div > div.separate > span.upArrow {
				display: block;
			}
		}
		
		aside.message > div > div.scrollUp > span.upArrow, aside.message > div > div.scrollDown > span.downArrow {
			visibility: visible;
			opacity: 1;
		}
		
		@keyframes moveDown {
		
			0% {
				margin-top: 0;
			}

			50% {
				margin-top: 3px;
			}
			
			100% {
				margin-top: 0;
			}
		}
		
		aside.message > div > div > span.upArrow::before, aside.message > div > div > span.downArrow::before {
			content: "\F0DE";
			position: absolute;
			right: 0.3em;
			top: 0.2em;
			font-size: 26pt;
			animation: moveDown 0.7s linear infinite;
		}
		
		@keyframes moveUp {
		
			0% {
				margin-top: 0;
			}

			50% {
				margin-top: -3px;
			}
			
			100% {
				margin-top: 0;
			}
		}
		
		aside.message > div > div > span.downArrow::before {
			top: -0.2em;
			transform: rotateZ(180deg) translateY(100%);
			animation: moveUp 0.7s linear infinite;
		}
		
		@media only screen and (max-width: 600px) {

			aside.message > div > div.separate > span.upArrow::before, aside.message > div > div.separate > span.downArrow::before {
				font-size: 23pt;
			}
		}

		@media only screen and (max-height: 400px) {

			aside.message > div > div.separate > span.upArrow::before, aside.message > div > div.separate > span.downArrow::before {
				font-size: 23pt;
			}
		}

		@media only screen and (max-width: 500px) {

			aside.message > div > div.separate > span.upArrow::before, aside.message > div > div.separate > span.downArrow::before {
				font-size: 20pt;
				padding-top: 1px;
			}
		}
		
		@media only screen and (max-width: 350px) {

			aside.message > div > div.separate > span.upArrow::before, aside.message > div > div.separate > span.downArrow::before {
				right: 0.1em;
			}
		}

		aside.message > div > div > p > span.text {
			margin: 0 2em;
			display: block;
			line-height: 1.4em;
			padding: 0;
			word-break: break-word;
		}
		
		@media only screen and (max-width: 350px) {

			aside.message > div > div > p > span.text {
				margin: 0 1em;
			}
		}
		
		aside.message > div > div > p > span.text span.lineBreak {
			display: block;
			height: 0.5em;
		}
		
		aside.message > div > div > div {
			display: flex;
			flex-wrap: wrap;
			justify-content: center;
			margin: 0.6em 1em 0 1em;
			flex-shrink: 0;
			font-size: 16pt;
			max-width: 100%;
		}

		aside.message.noButtons > div > div > div {
			flex-wrap: nowrap;
			height: 2em;
			margin: 0;
			padding: 0;
		}

		aside.message > div > div > div > button {
			color: #3600C9;
			margin: 0 1em 0.6em 1em;
			background: white;
			border: 0.15em solid #3600C9;
			min-width: 7em;
			line-height: 2.2em;
			white-space: nowrap;
			white-space: pre;
			max-width: calc(100% - 4em);
			flex-shrink: 0;
			font-size: 16pt;
		}
		
		aside.message > div > div > div > button:disabled {
			pointer-events: auto;
		}
		
		aside.message.hide > div > div > div > button {
			pointer-events: none;
		}

		aside.message.noButtons > div > div > div > button {
			display: block;
			visibility: hidden;
			margin: 0;
			height: 2em;
			padding: 0;
			cursor: default;
		}
		
		@media only screen and (max-width: 500px) {
		
			aside.message > div > div > div, aside.message > div > div > div > button {
				font-size: 15pt;
			}
		}
		
		@media only screen and (max-height: 400px) {
		
			aside.message > div > div > div, aside.message > div > div > div > button {
				font-size: 15pt;
			}
		}
	</style>
	
	<!--[if lt IE 8]>
		<style>
		
			div.loading {
				display: none;
			}
			
			aside.message {
				overflow: hidden;
			}
			
			aside.message > div > div {
				margin-top: 10%;
			}
			
			aside.message.noScriptShow, aside.message.errorShow {
				display: block;
			}
			
			button {
				visibility: hidden;
			}
		</style>
	<![endif]-->
	
	<!--[if lte IE 8]>
		<noscript>
			<style>
			
				body {
					background: white;
				}
				
				body > div > div > div {
					display: none;
				}
				
				div.maintenanceNotification, div.cookieAcceptance, div.installApp {
					display: none;
				}
				
				body > div > div > div.message {
					display: block;
					margin: 1em;
				}
				
				body > div > div > div.message button {
					display: none;
				}
			</style>
		</noscript>
	<![endif]-->
	
	<noscript>
		<style>
			.noScriptHide {
				display: none !important;
			}
			
			.noScriptShow {
				display: flex !important;
				visibility: visible !important;
				opacity: 1 !important;
				pointer-events: auto !important;
			}
			
			.noScriptShow * {
				pointer-events: auto !important;
			}
			
			body.loading, body.loading * {
				cursor: default !important;
			}
		</style>
	</noscript>
	
	<link class="translatable" rel="manifest" href="<?= encodeString(getResource("./site.webmanifest")); ?>" crossorigin="use-credentials">
	<meta name="msapplication-config" content="<?= encodeString(getResource("./browserconfig.xml")); ?>">
	<meta name="apple-mobile-web-app-capable" content="yes">
	<meta name="mobile-web-app-capable" content="yes">
	<meta name="apple-touch-fullscreen" content="yes">
	<meta name="apple-mobile-web-app-status-bar-style" content="default">
	<meta name="msapplication-TileColor" content="<?= encodeString(BACKGROUND_COLOR); ?>">
	<link rel="mask-icon" color="<?= encodeString(BACKGROUND_COLOR); ?>" href="<?= encodeString(getResource(MASK_IMAGE)); ?>">
	<title class="translatable" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>"><?= encodeString(getTranslation('MWC Wallet')); ?></title>
	<meta class="translatable" name="apple-mobile-web-app-title" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>" content="<?= encodeString(getTranslation('MWC Wallet')); ?>">
	<meta class="translatable" name="application-name" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>" content="<?= encodeString(getTranslation('MWC Wallet')); ?>">
	<meta class="translatable" name="msapplication-tooltip" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>" content="<?= encodeString(getTranslation('MWC Wallet')); ?>">
	<meta name="msapplication-starturl" content="<?= "http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . "/"; ?>">
	<meta class="translatable" name="description" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet is a self-custodial web wallet that allows you to manage your MimbleWimble Coin in your web browser.')); ?>" content="<?= encodeString(getTranslation('MWC Wallet is a self-custodial web wallet that allows you to manage your MimbleWimble Coin in your web browser.')); ?>">
	<meta class="translatable" name="author" data-text="<?= encodeString(getDefaultTranslation('Nicolas Flamel')); ?>" content="<?= encodeString(getTranslation('Nicolas Flamel')); ?>">
	<link rel="schema.dcterms" href="http://purl.org/dc/terms/">
	<meta class="translatable" name="dcterms.rightsHolder" data-text="<?= encodeString(getDefaultTranslation('Nicolas Flamel')); ?>" content="<?= encodeString(getTranslation('Nicolas Flamel')); ?>">
	
	<?php
	
		// Check if copyright year is newer than the copyright year
		if($year > COPYRIGHT_YEAR) {
		
			// Display copyright information with the current year
			echo "<meta class=\"translatable\" name=\"dcterms.dateCopyrighted\" data-text=\"" . encodeString(getDefaultTranslation('%1$s–%2$s')) . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR), sprintf("%.0F", $year)]) . "' content=\"" . encodeString(getTranslation('%1$s–%2$s', [getNumberTranslation(COPYRIGHT_YEAR), getNumberTranslation($year)])) . "\">";
			echo "<meta class=\"translatable\" name=\"dcterms.rights\" data-text=\"" . encodeString(getDefaultTranslation('© %1$s–%2$s Nicolas Flamel.')) . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR), sprintf("%.0F", $year)]) . "' content=\"" . encodeString(getTranslation('© %1$s–%2$s Nicolas Flamel.', [getNumberTranslation(COPYRIGHT_YEAR), getNumberTranslation($year)])) . "\">";
		}
		
		// Otherwise
		else {
		
			// Display copyright information with the copyright year
			echo "<meta class=\"translatable\" name=\"dcterms.dateCopyrighted\" data-text=\"" . encodeString("%1\$s") . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR)]) . "' content=\"" . encodeString(getTranslation("%1\$s", [getNumberTranslation(COPYRIGHT_YEAR)])) . "\">";
			echo "<meta class=\"translatable\" name=\"dcterms.rights\" data-text=\"" . encodeString(getDefaultTranslation('© %1$s Nicolas Flamel.')) . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR)]) . "' content=\"" . encodeString(getTranslation('© %1$s Nicolas Flamel.', [getNumberTranslation(COPYRIGHT_YEAR)])) . "\">";
		}
		
		// Display theme color
		echo "<meta name=\"theme-color\" content=\"" . encodeString(THEME_COLOR) . "\">";
		
		// Check if not crawler
		if($isCrawler === FALSE) {
		
			// Go through all touch icons
			foreach(TOUCH_ICONS as $touchIcon) {
			
				// Check if touch icon's parts aren't provided
				if(count($touchIcon) !== count(TOUCH_ICON_PARTS))
			
					// Display touch icon
					echo "<link rel=\"apple-touch-icon\" href=\"" . encodeString(getResource($touchIcon[0])) . "\">";
				
				// Otherwise
				else
			
					// Display touch icon
					echo "<link rel=\"apple-touch-icon\" sizes=\"" . encodeString($touchIcon[TOUCH_ICON_PARTS["X Dimension"]]) . "x" . encodeString($touchIcon[TOUCH_ICON_PARTS["Y Dimension"]]) . "\" href=\"" . encodeString(getResource($touchIcon[TOUCH_ICON_PARTS["File Path"]])) . "\">";
			}
		}
		
		// Go through all favicons
		foreach(FAVICONS as $favicon) {
		
			// Check if favicon's parts aren't provided
			if(count($favicon) !== count(FAVICON_PARTS))
			
				// Display favicon
				echo "<link rel=\"icon\" type=\"image/x-icon\" href=\"" . encodeString(getResource($favicon[0])) . "\">";
			
			// Otherwise
			else
			
				// Display favicon
				echo "<link rel=\"icon\" type=\"image/png\" sizes=\"" . encodeString($favicon[FAVICON_PARTS["X Dimension"]]) . "x" . encodeString($favicon[FAVICON_PARTS["Y Dimension"]]) . "\" href=\"" . encodeString(getResource($favicon[FAVICON_PARTS["File Path"]])) . "\">";
		}
		
		// Go through all app icons
		foreach(APP_ICONS as $appIcon) {
		
			// Check if app icon's parts aren't provided
			if(count($appIcon) !== count(APP_ICON_PARTS))
			
				// Display app icon
				echo "<link rel=\"icon\" type=\"image/svg+xml\" href=\"" . encodeString(getResource($appIcon[0])) . "\">";
			
			// Otherwise check if app icon can be used as a favicon
			else if($appIcon[APP_ICON_PARTS["Use As Favicon"]] === TRUE)
		
				// Display app icon
				echo "<link rel=\"icon\" type=\"image/png\" sizes=\"" . encodeString($appIcon[APP_ICON_PARTS["X Dimension"]]) . "x" . encodeString($appIcon[APP_ICON_PARTS["Y Dimension"]]) . "\" href=\"" . encodeString(getResource($appIcon[APP_ICON_PARTS["File Path"]])) . "\">";
		}
		
		// Go through all tile images
		foreach(TILE_IMAGES as $tileImage)
		
			// Display tile image
			echo "<meta name=\"msapplication-" . encodeString(mb_strtolower($tileImage[TILE_IMAGE_PARTS["Ratio"]])) . encodeString($tileImage[TILE_IMAGE_PARTS["X Dimension"]]) . "x" . encodeString($tileImage[TILE_IMAGE_PARTS["Y Dimension"]]) . "logo\" content=\"" . encodeString(getResource($tileImage[TILE_IMAGE_PARTS["File Path"]])) . "\">";
	?>

</head>

<body class="loading" spellcheck="false"><!--
	--><div><!--
		--><div><!--
			--><section class="maintenanceNotification hide noFocus"><!--
				--><div class="maintenanceNotification"><!--
					--><span></span><!--
					--><button><!--
						--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('OK')); ?>"><?= encodeString(getTranslation('OK')); ?></span><!--
					--></button><!--
				--></div><!--
			--></section><!--
			--><main><!--
				--><div class="language normalTransitionSpeed hide"><!--
					--><div><!--
						--><select tabindex="-1"><!--
							
							--><?php
							
								// Go through all available languages
								foreach(getAvailableLanguages() as $languageIdentifier => $availableLanguage) {
								
									// Display language currency option
									echo "<option value=\"" . encodeString($languageIdentifier) . "\"" . (($language === $languageIdentifier) ? " selected=\"selected\" disabled=\"disabled\"" : "") . ">" . encodeString($availableLanguage["Constants"]["Language"]) . "</option>";
								}
							?><!--
							
						--></select><!--
						--><button><!--
							--><span class="icon"></span><!--
							--><span><!--
								--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Language')); ?>"><?= encodeString(getTranslation('Language')); ?></span><!--
							--></span><!--
						--></button><!--
						--><div class="scrollable hide"><!--
						
							--><?php
							
								// Go through all available languages
								foreach(getAvailableLanguages() as $languageIdentifier => $availableLanguage) {
								
									// Display available language button
									echo "<button data-language=\"" . encodeString($languageIdentifier) . "\"" . (($language === $languageIdentifier) ? " disabled=\"disabled\"" : "") . "><img src=\"" . encodeString(getResource($availableLanguage["Constants"]["Image"])) . "\"><span>" . encodeString($availableLanguage["Constants"]["Language"]) . "</span></button>";
								}
							?><!--
						--></div><!--
					--></div><!--
				--></div><!--
				--><div class="locked"><!--
					--><div class="logo hide notLoaded"><!--
						--><canvas></canvas><!--
					--></div><!--
					--><div class="loading"><!--
						--><div class="logo"></div><!--
						--><div class="spinner"><!--
							--><div class="noScriptHide"></div><!--
							--><p class="noScriptHide translatable" data-text="<?= encodeString(getDefaultTranslation('Loading…')); ?>"><?= encodeString(getTranslation('Loading…')); ?></p><!--
						--></div><!--
					--></div><!--
					--><div class="info hide"><!--
					--></div><!--
					--><div class="create hide"><!--
						--><div class="logo"></div><!--
						--><form class="hide"><!--
							--><p class="verifySource translatable" data-text="<?= encodeString(getDefaultTranslation('If you paid to access MWC Wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back')); ?>"><?= encodeString(getTranslation('If you paid to access MWC Wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back')); ?></p><!--
							--><input class="hide translatable" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>" type="hidden" name="Username" value="<?= encodeString(getTranslation('MWC Wallet')); ?>" autocomplete="off" autocapitalize="off" spellcheck="false"><!--
							--><div><!--
								--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
								--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('Password')); ?>" type="password" name="Password" placeholder="<?= encodeString(getTranslation('Password')); ?>" autocomplete="new-password" autocapitalize="off" spellcheck="false"><!--
								--><span class="capsLock hide"></span><!--
							--></div><!--
							--><div><!--
								--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
								--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('Confirm Password')); ?>" type="password" name="Confirm Password" placeholder="<?= encodeString(getTranslation('Confirm Password')); ?>" autocomplete="new-password" autocapitalize="off" spellcheck="false"><!--
								--><span class="capsLock hide"></span><!--
							--></div><!--
							--><button type="submit"><!--
								--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Create')); ?>"><?= encodeString(getTranslation('Create')); ?></span><!--
								--><span class="dots"><!--
									--><span></span><!--
									--><span></span><!--
									--><span></span><!--
								--></span><!--
							--></button><!--
						--></form><!--
					--></div><!--
					--><div class="unlock hide"><!--
						--><div class="logo"></div><!--
						--><form class="hide"><!--
							--><p class="verifySource translatable" data-text="<?= encodeString(getDefaultTranslation('If you paid to access MWC Wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back')); ?>"><?= encodeString(getTranslation('If you paid to access MWC Wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back')); ?></p><!--
							--><input class="hide translatable" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>" type="hidden" name="Username" value="<?= encodeString(getTranslation('MWC Wallet')); ?>" autocomplete="off" autocapitalize="off" spellcheck="false"><!--
							--><div><!--
								--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
								--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('Password')); ?>" type="password" name="Password" placeholder="<?= encodeString(getTranslation('Password')); ?>" autocomplete="current-password" autocapitalize="off" spellcheck="false"><!--
								--><span class="capsLock hide"></span><!--
							--></div><!--
							--><button type="submit"><!--
								--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Unlock')); ?>"><?= encodeString(getTranslation('Unlock')); ?></span><!--
								--><span class="dots"><!--
									--><span></span><!--
									--><span></span><!--
									--><span></span><!--
								--></span><!--
							--></button><!--
							--><div class="status"><!--
								--><p class="node translatable" data-text="<?= encodeString(getDefaultTranslation('Node disconnected')); ?>" title="<?= encodeString(getTranslation('Node disconnected')); ?>"><!--
									--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Node')); ?>"><?= encodeString(getTranslation('Node')); ?></span><!--
								--></p><!--
								--><p class="listener translatable" data-text="<?= encodeString(getDefaultTranslation('Listener disconnected')); ?>" title="<?= encodeString(getTranslation('Listener disconnected')); ?>"><!--
									--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Listener')); ?>"><?= encodeString(getTranslation('Listener')); ?></span><!--
								--></p><!--
							--></div><!--
						--></form><!--
						--><div class="deleteAllWallets hide"><!--
							--><button><!--
								--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Delete All Wallets')); ?>"><?= encodeString(getTranslation('Delete All Wallets')); ?></span><!--
							--></button><!--
						--></div><!--
					--></div><!--
				--></div><!--
				--><div class="unlocked hide"><!--
					--><div class="hide"><!--
						--><div class="menu"><!--
							--><div><!--
								--><button class="about translatable" data-text="<?= encodeString(getDefaultTranslation('About')); ?>" title="<?= encodeString(getTranslation('About')); ?>"><!--
									--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('About')); ?>"><?= encodeString(getTranslation('About')); ?></span><!--
								--></button><!--
								--><button class="account translatable" data-text="<?= encodeString(getDefaultTranslation('Account')); ?>" title="<?= encodeString(getTranslation('Account')); ?>"><!--
									--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Account')); ?>"><?= encodeString(getTranslation('Account')); ?></span><!--
								--></button><!--
								--><button class="settings translatable" data-text="<?= encodeString(getDefaultTranslation('Settings')); ?>" title="<?= encodeString(getTranslation('Settings')); ?>"><!--
									--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Settings')); ?>"><?= encodeString(getTranslation('Settings')); ?></span><!--
								--></button><!--
								--><button class="log translatable" data-text="<?= encodeString(getDefaultTranslation('Log')); ?>" title="<?= encodeString(getTranslation('Log')); ?>"><!--
									--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Log')); ?>"><?= encodeString(getTranslation('Log')); ?></span><!--
								--></button><!--
								--><button class="lock translatable" data-text="<?= encodeString(getDefaultTranslation('Lock')); ?>" title="<?= encodeString(getTranslation('Lock')); ?>"><!--
									--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Lock')); ?>"><?= encodeString(getTranslation('Lock')); ?></span><!--
								--></button><!--
							--></div><!--
						--></div><!--
						--><div><!--
							--><div class="wallets"><!--
								--><div class="hide"><!--
									--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Wallets')); ?>"><?= encodeString(getTranslation('Wallets')); ?></h2><!--
									--><div class="new"><!--
										--><button class="create translatable" data-text="<?= encodeString(getDefaultTranslation('Create')); ?>" title="<?= encodeString(getTranslation('Create')); ?>"><!--
											--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Create')); ?>"><?= encodeString(getTranslation('Create')); ?></span><!--
										--></button><!--
										--><button class="recover translatable" data-text="<?= encodeString(getDefaultTranslation('Recover')); ?>" title="<?= encodeString(getTranslation('Recover')); ?>"><!--
											--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Recover')); ?>"><?= encodeString(getTranslation('Recover')); ?></span><!--
										--></button><!--
										--><button class="hardware translatable" data-text="<?= encodeString(getDefaultTranslation('Hardware')); ?>" title="<?= encodeString(getTranslation('Hardware')); ?>"><!--
											--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Hardware')); ?>"><?= encodeString(getTranslation('Hardware')); ?></span><!--
										--></button><!--
									--></div><!--
									--><div class="list scrollable"></div><!--
									--><div class="order"><!--
										--><button class="up translatable" data-text="<?= encodeString(getDefaultTranslation('Up')); ?>" title="<?= encodeString(getTranslation('Up')); ?>"></button><!--
										--><button class="down translatable" data-text="<?= encodeString(getDefaultTranslation('Down')); ?>" title="<?= encodeString(getTranslation('Down')); ?>"></button><!--
									--></div><!--
									--><div class="loading hide"><!--
										--><div class="overlay"><!--
										--></div><!--
										--><div class="spinner"><!--
										--></div><!--
									--></div><!--
								--></div><!--
								--><button class="expand"><!--
									--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Wallets')); ?>"><?= encodeString(getTranslation('Wallets')); ?></span><!--
								--></button><!--
							--></div><!--
							--><div class="sections"><!--
								--><div><!--
									--><div class="wallet scrollable hide"><!--
										--><div><!--
											--><div class="navigation"><!--
												--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
												--><button class="forward hide translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
											--></div><!--
											--><h3 class="address translatable" data-text="<?= encodeString(getDefaultTranslation('Address')); ?>"><?= encodeString(getTranslation('Address')); ?></h3><!--
											--><div class="address"><!--
												--><img width="74" height="74"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Address:')); ?>"><?= encodeString(getTranslation('Address:')); ?></span><!--
												--></p><!--
												--><button class="changeAddressSuffix" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Change Address Suffix')); ?>"><?= encodeString(getTranslation('Change Address Suffix')); ?></span><!--
												--></button><!--
												--><div class="loading"><!--
													--><div><!--
													--></div><!--
												--></div><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Balance')); ?>"><?= encodeString(getTranslation('Balance')); ?></h3><!--
											--><div class="balance"><!--
												--><button class="sendPayment" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Send Payment')); ?>"><?= encodeString(getTranslation('Send Payment')); ?></span><!--
												--></button><!--
												--><div class="syncStatus"><!--
													--><svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><!--
														--><circle class="background" cx="50" cy="50" r="50" pathLength="100"/><!--
														--><circle class="foreground" cx="50" cy="50" r="50" pathLength="100"/><!--
													--></svg><!--
													--><p class="translatable" data-text="<?= encodeString(getDefaultTranslation('Syncing…')); ?>"><?= encodeString(getTranslation('Syncing…')); ?></p><!--
													--><p class="translatable syncingFailed" data-text="<?= encodeString(getDefaultTranslation('Syncing failed')); ?>"><?= encodeString(getTranslation('Syncing failed')); ?></p><!--
												--></div><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Utilities')); ?>"><?= encodeString(getTranslation('Utilities')); ?></h3><!--
											--><div class="merge"><!--
												--><button class="getPassphrase" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Get Passphrase')); ?>"><?= encodeString(getTranslation('Get Passphrase')); ?></span><!--
												--></button><!--
											--></div><!--
											--><div class="merge"><!--
												--><button class="getPaymentProofAddress" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Get Payment Proof Address')); ?>"><?= encodeString(getTranslation('Get Payment Proof Address')); ?></span><!--
													--><span class="dots"><!--
														--><span></span><!--
														--><span></span><!--
														--><span></span><!--
													--></span><!--
												--></button><!--
											--></div><!--
											--><div class="merge hide"><!--
												--><button class="setPaymentProofAddressIndex" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Set Payment Proof Address Index')); ?>"><?= encodeString(getTranslation('Set Payment Proof Address Index')); ?></span><!--
												--></button><!--
											--></div><!--
											--><div class="merge"><!--
												--><button class="resync" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Resync')); ?>"><?= encodeString(getTranslation('Resync')); ?></span><!--
												--></button><!--
											--></div><!--
											--><div class="merge"><!--
												--><button class="rename" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Rename')); ?>"><?= encodeString(getTranslation('Rename')); ?></span><!--
												--></button><!--
											--></div><!--
											--><div class="merge hide"><!--
												--><button class="loginWithWallet" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Login With Wallet')); ?>"><?= encodeString(getTranslation('Login With Wallet')); ?></span><!--
												--></button><!--
											--></div><!--
											--><div class="merge"><!--
												--><button class="receivePaymentAsFile" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Receive Payment As File')); ?>"><?= encodeString(getTranslation('Receive Payment As File')); ?></span><!--
													--><span class="dots"><!--
														--><span></span><!--
														--><span></span><!--
														--><span></span><!--
													--></span><!--
												--></button><!--
											--></div><!--
											--><div><!--
												--><button class="delete" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Delete')); ?>"><?= encodeString(getTranslation('Delete')); ?></span><!--
												--></button><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Transactions')); ?>"><?= encodeString(getTranslation('Transactions')); ?></h3><!--
											--><div class="transactions empty merge"><!--
											--></div><!--
											--><div class="merge"><!--
												--><p class="translatable noTransactions" data-text="<?= encodeString(getDefaultTranslation('No transactions exist for this wallet.')); ?>"><?= encodeString(getTranslation('No transactions exist for this wallet.')); ?></p><!--
											--></div><!--
											--><div class="transactionsNavigation"><!--
												--><button class="first translatable" data-text="<?= encodeString(getDefaultTranslation('First')); ?>" title="<?= encodeString(getTranslation('First')); ?>" data-private></button><!--
												--><button class="previous translatable" data-text="<?= encodeString(getDefaultTranslation('Previous')); ?>" title="<?= encodeString(getTranslation('Previous')); ?>" data-private></button><!--
												--><button class="next translatable" data-text="<?= encodeString(getDefaultTranslation('Next')); ?>" title="<?= encodeString(getTranslation('Next')); ?>" data-private></button><!--
												--><button class="last translatable" data-text="<?= encodeString(getDefaultTranslation('Last')); ?>" title="<?= encodeString(getTranslation('Last')); ?>" data-private></button><!--
											--></div><!--
										--></div><!--
									--></div><!--
									--><div class="sendPayment scrollable hide"><!--
										--><div><!--
											--><div class="navigation"><!--
												--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
												--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Send Payment')); ?>"><?= encodeString(getTranslation('Send Payment')); ?></h2><!--
												--><button class="forward translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Payment Details')); ?>"><?= encodeString(getTranslation('Payment Details')); ?></h3><!--
											--><div class="merge"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Recipient address')); ?>"><?= encodeString(getTranslation('Recipient address')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="url"><!--
													--><input class="recipientAddress translatable" data-text="<?= encodeString(getDefaultTranslation('URL')); ?>" type="text" placeholder="<?= encodeString(getTranslation('URL')); ?>" autocomplete="url" autocapitalize="off" spellcheck="false" inputmode="url"><!--
													--><span></span><!--
													--><span class="capsLock hide"></span><!--
												--></div><!--
											--></div><!--
											--><div><!--
												--><button class="scan" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Scan QR Code')); ?>"><?= encodeString(getTranslation('Scan QR Code')); ?></span><!--
													--><span class="dots"><!--
														--><span></span><!--
														--><span></span><!--
														--><span></span><!--
													--></span><!--
												--></button><!--
											--></div><!--
											--><div class="fromWallet merge"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('From wallet')); ?>"><?= encodeString(getTranslation('From wallet')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="select"><!--
													--><select class="fromWallet"><!--
													--></select><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div class="merge"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Amount')); ?>"><?= encodeString(getTranslation('Amount')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="number"><!--
													--><input class="amount" type="number" autocomplete="off" autocapitalize="off" spellcheck="false" inputmode="decimal"><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div class="merge"><!--
												--><button class="all" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('All')); ?>"><?= encodeString(getTranslation('All')); ?></span><!--
													--><span class="dots"><!--
														--><span></span><!--
														--><span></span><!--
														--><span></span><!--
													--></span><!--
												--></button><!--
											--></div><!--
											--><div><!--
												--><p><!--
													--><span></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="number"><!--
													--><input class="value" type="number" min="0" autocomplete="off" autocapitalize="off" spellcheck="false" inputmode="decimal"><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div class="merge"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Base fee')); ?>"><?= encodeString(getTranslation('Base fee')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="number"><!--
													--><input class="baseFee" type="number" autocomplete="off" autocapitalize="off" spellcheck="false" inputmode="decimal"><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div><!--
												--><button class="defaultBaseFee" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Default Base Fee')); ?>"><?= encodeString(getTranslation('Default Base Fee')); ?></span><!--
													--><span class="dots"><!--
														--><span></span><!--
														--><span></span><!--
														--><span></span><!--
													--></span><!--
												--></button><!--
											--></div><!--
											--><div><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Optional message')); ?>"><?= encodeString(getTranslation('Optional message')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="text"><!--
													--><input class="message" type="text" autocomplete="on" autocapitalize="on" spellcheck="true"><!--
													--><span></span><!--
													--><span class="capsLock hide"></span><!--
												--></div><!--
											--></div><!--
											--><div class="sendAsFile"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Send as file')); ?>"><?= encodeString(getTranslation('Send as file')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button class="sendAsFile"><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="send"><!--
												--><button class="send" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Send')); ?>"><?= encodeString(getTranslation('Send')); ?></span><!--
													--><span class="dots"><!--
														--><span></span><!--
														--><span></span><!--
														--><span></span><!--
													--></span><!--
												--></button><!--
											--></div><!--
											--><div class="cancel"><!--
												--><button class="cancel" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Cancel')); ?>"><?= encodeString(getTranslation('Cancel')); ?></span><!--
												--></button><!--
											--></div><!--
										--></div><!--
									--></div><!--
									--><div class="account scrollable hide"><!--
										--><div><!--
											--><div class="navigation"><!--
												--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
												--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Account')); ?>"><?= encodeString(getTranslation('Account')); ?></h2><!--
												--><button class="forward hide translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Change Password')); ?>"><?= encodeString(getTranslation('Change Password')); ?></h3><!--
											--><div><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Current password')); ?>"><?= encodeString(getTranslation('Current password')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="text"><!--
													--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
													--><input class="currentPassword" type="password" autocomplete="current-password" autocapitalize="off" spellcheck="false" data-private><!--
													--><span></span><!--
													--><span class="capsLock hide"></span><!--
												--></div><!--
											--></div><!--
											--><div><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('New password')); ?>"><?= encodeString(getTranslation('New password')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="text"><!--
													--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
													--><input class="newPassword" type="password" autocomplete="new-password" autocapitalize="off" spellcheck="false" data-private><!--
													--><span></span><!--
													--><span class="capsLock hide"></span><!--
												--></div><!--
											--></div><!--
											--><div><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Confirm new password')); ?>"><?= encodeString(getTranslation('Confirm new password')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="text"><!--
													--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
													--><input class="confirmNewPassword" type="password" autocomplete="new-password" autocapitalize="off" spellcheck="false" data-private><!--
													--><span></span><!--
													--><span class="capsLock hide"></span><!--
												--></div><!--
											--></div><!--
											--><div><!--
												--><button class="changePassword" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Change Password')); ?>"><?= encodeString(getTranslation('Change Password')); ?></span><!--
													--><span class="dots"><!--
														--><span></span><!--
														--><span></span><!--
														--><span></span><!--
													--></span><!--
												--></button><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Utilities')); ?>"><?= encodeString(getTranslation('Utilities')); ?></h3><!--
											--><div><!--
												--><button class="deleteAllWallets" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Delete All Wallets')); ?>"><?= encodeString(getTranslation('Delete All Wallets')); ?></span><!--
												--></button><!--
											--></div><!--
										--></div><!--
									--></div><!--
									--><div class="settings scrollable hide"><!--
										--><div><!--
											--><div class="navigation"><!--
												--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
												--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Settings')); ?>"><?= encodeString(getTranslation('Settings')); ?></h2><!--
												--><button class="forward hide translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Wallet Settings')); ?>"><?= encodeString(getTranslation('Wallet Settings')); ?></h3><!--
											--><div class="translatable" data-text="<?= encodeString(getDefaultTranslation('Sets the wallet type to use')); ?>" title="<?= encodeString(getTranslation('Sets the wallet type to use')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Wallet type')); ?>"><?= encodeString(getTranslation('Wallet type')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="select"><!--
													--><select data-private class="walletType"><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('MimbleWimble Coin')); ?>" value="0"><?= encodeString(getTranslation('MimbleWimble Coin')); ?></option><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Grin')); ?>" value="1"><?= encodeString(getTranslation('Grin')); ?></option><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Epic Cash')); ?>" value="2"><?= encodeString(getTranslation('Epic Cash')); ?></option><!--
													--></select><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div class="translatable" data-text="<?= encodeString(getDefaultTranslation('Sets the network type to use')); ?>" title="<?= encodeString(getTranslation('Sets the network type to use')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Network type')); ?>"><?= encodeString(getTranslation('Network type')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="select"><!--
													--><select data-private class="networkType"><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Mainnet')); ?>" value="0"><?= encodeString(getTranslation('Mainnet')); ?></option><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Floonet/testnet')); ?>" value="1"><?= encodeString(getTranslation('Floonet/testnet')); ?></option><!--
													--></select><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Number Of Confirmations"); ?>" data-text="<?= encodeString(getDefaultTranslation('Sets the number of confirmations required for a new output to be spendable')); ?>" title="<?= encodeString(getTranslation('Sets the number of confirmations required for a new output to be spendable')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Number of confirmations required to spend an output')); ?>"><?= encodeString(getTranslation('Number of confirmations required to spend an output')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="number"><!--
													--><input type="number" min="1" max="<?= MINUTES_IN_AN_HOUR * HOURS_IN_A_DAY; ?>" autocomplete="off" autocapitalize="off" spellcheck="false" data-private inputmode="numeric"><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Interface Settings')); ?>"><?= encodeString(getTranslation('Interface Settings')); ?></h3><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Enable Node Connection Error Messages"); ?>" data-text="<?= encodeString(getDefaultTranslation('Displays a message when not able to connect to a node, when a connected node is incompatible, or when disconnected from a node')); ?>" title="<?= encodeString(getTranslation('Displays a message when not able to connect to a node, when a connected node is incompatible, or when disconnected from a node')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Show node connection error messages')); ?>"><?= encodeString(getTranslation('Show node connection error messages')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Enable Listener Connection Error Messages"); ?>" data-text="<?= encodeString(getDefaultTranslation('Displays a message when not able to connect to a listener or when disconnected from a listener')); ?>" title="<?= encodeString(getTranslation('Displays a message when not able to connect to a listener or when disconnected from a listener')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Show listener connection error messages')); ?>"><?= encodeString(getTranslation('Show listener connection error messages')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Enable Automatic Lock"); ?>" data-text="<?= encodeString(getDefaultTranslation('Automatically lock after a set duration of inactivity')); ?>" title="<?= encodeString(getTranslation('Automatically lock after a set duration of inactivity')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Automatically lock after a set duration of inactivity')); ?>"><?= encodeString(getTranslation('Automatically lock after a set duration of inactivity')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("No Interaction Lock Timeout Minutes"); ?>" data-dependencies='<?= escapeData([["Enable Automatic Lock", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the duration of inactivity required for the automatic lock to occur')); ?>" title="<?= encodeString(getTranslation('Sets the duration of inactivity required for the automatic lock to occur')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Minutes of inactivity required for automatic lock')); ?>"><?= encodeString(getTranslation('Minutes of inactivity required for automatic lock')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="number"><!--
													--><input type="number" min="1" max="<?= MINUTES_IN_AN_HOUR; ?>" autocomplete="off" autocapitalize="off" spellcheck="false" data-private inputmode="numeric"><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Enable Lock On Inactive"); ?>" data-text="<?= encodeString(getDefaultTranslation('Automatically lock when not focused')); ?>" title="<?= encodeString(getTranslation('Automatically lock when not focused')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Lock if not focused')); ?>"><?= encodeString(getTranslation('Lock if not focused')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Enable Price"); ?>" data-text="<?= encodeString(getDefaultTranslation('Displays prices for amounts')); ?>" title="<?= encodeString(getTranslation('Displays prices for amounts')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Display prices')); ?>"><?= encodeString(getTranslation('Display prices')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Currency Display"); ?>" data-dependencies='<?= escapeData([["Enable Price", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the currency of the displayed prices')); ?>" title="<?= encodeString(getTranslation('Sets the currency of the displayed prices')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Currency of the displayed prices')); ?>"><?= encodeString(getTranslation('Currency of the displayed prices')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="select"><!--
													--><select data-private><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Language\'s currency')); ?>" value="Language's Currency"><?= encodeString(getTranslation('Language\'s currency')); ?></option><!--
														
														--><?php
														
															// Go through all language currencies
															foreach(getLanguageCurrencies() as $languageCurrency) {
															
																// Display language currency option
																echo "<option value=\"" . encodeString($languageCurrency) . "\">" . encodeString($languageCurrency) . "</option>";
															}
														?><!--
														
													--></select><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Update Price Interval Minutes"); ?>" data-dependencies='<?= escapeData([["Enable Price", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the duration of time between price updates')); ?>" title="<?= encodeString(getTranslation('Sets the duration of time between price updates')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Minutes between price updates')); ?>"><?= encodeString(getTranslation('Minutes between price updates')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="number"><!--
													--><input type="number" min="1" max="<?= MINUTES_IN_AN_HOUR * HOURS_IN_A_DAY; ?>" autocomplete="off" autocapitalize="off" spellcheck="false" data-private inputmode="numeric"><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Displayed Address Type"); ?>" data-dependencies='<?= escapeData([["Use Custom Listener", FALSE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the address type to display for each wallet')); ?>" title="<?= encodeString(getTranslation('Sets the address type to display for each wallet')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Displayed address type')); ?>"><?= encodeString(getTranslation('Displayed address type')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="select"><!--
													--><select data-private><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Match connection')); ?>" value="Match Connection"><?= encodeString(getTranslation('Match connection')); ?></option><!--
														--><option class="translatable" data-text="<?= encodeString(((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") || array_key_exists("HTTPS_SERVER_ADDRESS", $_SERVER) === TRUE) ? getDefaultTranslation('HTTPS') : getDefaultTranslation('HTTP')); ?>" value="HTTP"><?= encodeString(((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") || array_key_exists("HTTPS_SERVER_ADDRESS", $_SERVER) === TRUE) ? getTranslation('HTTPS') : getTranslation('HTTP')); ?></option><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Onion Service')); ?>" value="Tor"><?= encodeString(getTranslation('Onion Service')); ?></option><!--
													--></select><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Displayed Amount Type"); ?>" data-text="<?= encodeString(getDefaultTranslation('Sets the amount type to display in the wallets list')); ?>" title="<?= encodeString(getTranslation('Sets the amount type to display in the wallets list')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Displayed amount type')); ?>"><?= encodeString(getTranslation('Displayed amount type')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="select"><!--
													--><select data-private><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Spendable')); ?>" value="Spendable"><?= encodeString(getTranslation('Spendable')); ?></option><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Confirmed')); ?>" value="Confirmed"><?= encodeString(getTranslation('Confirmed')); ?></option><!--
														--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Confirmed and unconfirmed')); ?>" value="Confirmed And Unconfirmed"><?= encodeString(getTranslation('Confirmed and unconfirmed')); ?></option><!--
													--></select><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Allow Changing Base Fee"); ?>" data-text="<?= encodeString(getDefaultTranslation('Allows changing a transaction\'s base fee when sending a payment')); ?>" title="<?= encodeString(getTranslation('Allows changing a transaction\'s base fee when sending a payment')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Allow changing base fee')); ?>"><?= encodeString(getTranslation('Allow changing base fee')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Maximum Number Of Messages"); ?>" data-text="<?= encodeString(getDefaultTranslation('Sets the maximum number of messages that the log can display. Earlier messages will be removed once this limit is reached')); ?>" title="<?= encodeString(getTranslation('Sets the maximum number of messages that the log can display. Earlier messages will be removed once this limit is reached')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Maximum number of messages that the log can display')); ?>"><?= encodeString(getTranslation('Maximum number of messages that the log can display')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="number"><!--
													--><input type="number" min="10" max="1000" autocomplete="off" autocapitalize="off" spellcheck="false" data-private inputmode="numeric"><!--
													--><span></span><!--
												--></div><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Node Settings')); ?>"><?= encodeString(getTranslation('Node Settings')); ?></h3><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Use Custom Node"); ?>" data-text="<?= encodeString(getDefaultTranslation('Uses a custom node instead of the default nodes')); ?>" title="<?= encodeString(getTranslation('Uses a custom node instead of the default nodes')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Use custom node')); ?>"><?= encodeString(getTranslation('Use custom node')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Custom Node Address"); ?>" data-dependencies='<?= escapeData([["Use Custom Node", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the address for the custom node')); ?>" title="<?= encodeString(getTranslation('Sets the address for the custom node')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Custom node address')); ?>"><?= encodeString(getTranslation('Custom node address')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="url"><!--
													--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('URL')); ?>" type="text" placeholder="<?= encodeString(getTranslation('URL')); ?>" autocomplete="url" autocapitalize="off" spellcheck="false" data-private inputmode="url"><!--
													--><span></span><!--
													--><span class="capsLock hide"></span><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Custom Node Secret"); ?>" data-sensitive data-dependencies='<?= escapeData([["Use Custom Node", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the foreign API secret for the custom node. Leave this empty if the custom node doesn\'t require a foreign API secret')); ?>" title="<?= encodeString(getTranslation('Sets the foreign API secret for the custom node. Leave this empty if the custom node doesn\'t require a foreign API secret')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Custom node foreign API secret')); ?>"><?= encodeString(getTranslation('Custom node foreign API secret')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="text"><!--
													--><input type="text" autocomplete="off" autocapitalize="off" spellcheck="false" data-private><!--
													--><span></span><!--
													--><span class="capsLock hide"></span><!--
												--></div><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('API Settings')); ?>"><?= encodeString(getTranslation('API Settings')); ?></h3><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Enable Mining API"); ?>" data-text="<?= encodeString(getDefaultTranslation('Allows processing mining related API requests')); ?>" title="<?= encodeString(getTranslation('Allows processing mining related API requests')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Enable mining API')); ?>"><?= encodeString(getTranslation('Enable mining API')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Require Payment Proof"); ?>" data-text="<?= encodeString(getDefaultTranslation('Requires all new transactions to have a payment proof')); ?>" title="<?= encodeString(getTranslation('Requires all new transactions to have a payment proof')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Require payment proof')); ?>"><?= encodeString(getTranslation('Require payment proof')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Automatically Approve Receiving Payments"); ?>" data-text="<?= encodeString(getDefaultTranslation('Automatically approves all received payments without requiring manual approval')); ?>" title="<?= encodeString(getTranslation('Automatically approves all received payments without requiring manual approval')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Automatically approve receiving payments')); ?>"><?= encodeString(getTranslation('Automatically approve receiving payments')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Tor Proxy Settings')); ?>"><?= encodeString(getTranslation('Tor Proxy Settings')); ?></h3><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Use Custom Tor Proxy"); ?>" data-text="<?= encodeString(getDefaultTranslation('Uses a custom Tor proxy instead of the default Tor proxy')); ?>" title="<?= encodeString(getTranslation('Uses a custom Tor proxy instead of the default Tor proxy')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Use custom Tor proxy')); ?>"><?= encodeString(getTranslation('Use custom Tor proxy')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Custom Tor Proxy Address"); ?>" data-dependencies='<?= escapeData([["Use Custom Tor Proxy", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the address for the custom Tor proxy')); ?>" title="<?= encodeString(getTranslation('Sets the address for the custom Tor proxy')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Custom Tor proxy address')); ?>"><?= encodeString(getTranslation('Custom Tor proxy address')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="url"><!--
													--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('URL')); ?>" type="text" placeholder="<?= encodeString(getTranslation('URL')); ?>" autocomplete="url" autocapitalize="off" spellcheck="false" data-private inputmode="url"><!--
													--><span></span><!--
													--><span class="capsLock hide"></span><!--
												--></div><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Listener Settings')); ?>"><?= encodeString(getTranslation('Listener Settings')); ?></h3><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Use Custom Listener"); ?>" data-text="<?= encodeString(getDefaultTranslation('Uses a custom listener instead of the default listener')); ?>" title="<?= encodeString(getTranslation('Uses a custom listener instead of the default listener')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Use custom listener')); ?>"><?= encodeString(getTranslation('Use custom listener')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="boolean"><!--
													--><button data-private><!--
														--><span></span><!--
													--></button><!--
												--></div><!--
											--></div><!--
											--><div class="setting translatable" data-setting="<?= encodeString("Custom Listener Address"); ?>" data-dependencies='<?= escapeData([["Use Custom Listener", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the address for the custom listener')); ?>" title="<?= encodeString(getTranslation('Sets the address for the custom listener')); ?>"><!--
												--><p><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Custom listener address')); ?>"><?= encodeString(getTranslation('Custom listener address')); ?></span><!--
												--></p><!--
												--><span class="dots"></span><!--
												--><div class="value" data-type="url"><!--
													--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('URL')); ?>" type="text" placeholder="<?= encodeString(getTranslation('URL')); ?>" autocomplete="url" autocapitalize="off" spellcheck="false" data-private inputmode="url"><!--
													--><span></span><!--
													--><span class="capsLock hide"></span><!--
												--></div><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Utilities')); ?>"><?= encodeString(getTranslation('Utilities')); ?></h3><!--
											--><div><!--
												--><button class="resetSettings" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Reset Settings')); ?>"><?= encodeString(getTranslation('Reset Settings')); ?></span><!--
												--></button><!--
											--></div><!--
										--></div><!--
									--></div><!--
									--><div class="about scrollable hide"><!--
										--><div><!--
											--><div class="navigation"><!--
												--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
												--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('About')); ?>"><?= encodeString(getTranslation('About')); ?></h2><!--
												--><button class="forward hide translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Description')); ?>"><?= encodeString(getTranslation('Description')); ?></h3><!--
											--><div class="description"><!--
												--><p class="translatable" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet is an open-source, self-custodial wallet that allows you to easily send and receive MimbleWimble Coin. Designed with ease of use and accessibility in mind, this wallet runs on everything from smartwatches to mainframes while providing an intuitive interface that makes using it a breeze.')); ?>"><?= encodeString(getTranslation('MWC Wallet is an open-source, self-custodial wallet that allows you to easily send and receive MimbleWimble Coin. Designed with ease of use and accessibility in mind, this wallet runs on everything from smartwatches to mainframes while providing an intuitive interface that makes using it a breeze.')); ?></p><!--
												--><p class="translatable" data-text="<?= encodeString(getDefaultTranslation('This wallet is available free of charge and should not be sold in any format. If you paid to access this wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back.')); ?>"><?= encodeString(getTranslation('This wallet is available free of charge and should not be sold in any format. If you paid to access this wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back.')); ?></p><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Version Information')); ?>"><?= encodeString(getTranslation('Version Information')); ?></h3><!--
											--><div class="versionInformation"><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Version Changes')); ?>"><?= encodeString(getTranslation('Version Changes')); ?></h3><!--
											--><div><!--
												--><ul><!--
												
													--><?php
													
														// Check if there's no version changes
														if(count(VERSION_CHANGES) === 0) {
														
															// Display no version change
															echo "<li><span class=\"translatable\" data-text=\"" . encodeString(getDefaultTranslation('N/A')) . "\">" . encodeString(getTranslation('N/A')) . "</span></li>";
														}
														
														// Otherwise
														else {
			
															// Go through all version changes
															foreach(VERSION_CHANGES as $versionChange) {
															
																// Display version change
																echo "<li><span class=\"translatable contextMenu\" data-text=\"" . encodeString(escapeText($versionChange)) . "\">" . encodeString(getTranslation(escapeText($versionChange))) . "</span></li>";
															}
														}
													?><!--
													
												--></ul><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Donate')); ?>"><?= encodeString(getTranslation('Donate')); ?></h3><!--
											--><div class="donate"><!--
												--><ul><!--
													--><li><span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Bitcoin:')); ?>"><?= encodeString(getTranslation('Bitcoin:')); ?></span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('(?<=:) ')); ?>"><?= encodeString(getTranslation('(?<=:) ')); ?></span><span class="contextMenu">bc1qc98nt4huecnd0razjwwngwxa7hfpkng322hg6u</span><span class="translatable copy" data-text="Copy" title="Copy"></span></span></li><!--
													--><li><span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('MimbleWimble Coin:')); ?>"><?= encodeString(getTranslation('MimbleWimble Coin:')); ?></span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('(?<=:) ')); ?>"><?= encodeString(getTranslation('(?<=:) ')); ?></span><span class="contextMenu">https://mwcwallet.com/donate/mwc</span><span class="translatable copy" data-text="Copy" title="Copy"></span></span></li><!--
													--><li><span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Grin:')); ?>"><?= encodeString(getTranslation('Grin:')); ?></span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('(?<=:) ')); ?>"><?= encodeString(getTranslation('(?<=:) ')); ?></span><span class="contextMenu">grin1zmf68j2fne0fpdzglry9jtml5ykwauqncqmk0vmqtwzxcr2939jqmc83fz</span><span class="translatable copy" data-text="Copy" title="Copy"></span></span></li><!--
													--><li><span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Epic Cash:')); ?>"><?= encodeString(getTranslation('Epic Cash:')); ?></span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('(?<=:) ')); ?>"><?= encodeString(getTranslation('(?<=:) ')); ?></span><span class="contextMenu">https://mwcwallet.com/donate/epic</span><span class="translatable copy" data-text="Copy" title="Copy"></span></span></li><!--
												--></ul><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Copyright')); ?>"><?= encodeString(getTranslation('Copyright')); ?></h3><!--
											--><div><!--
											
												--><?php
												
													// Check if copyright year is newer than the copyright year
													if($year > COPYRIGHT_YEAR) {
													
														// Display copyright information with the current year
														echo "<p class=\"copyright translatable\" data-text=\"" . encodeString(getDefaultTranslation('© %1$s–%2$s Nicolas Flamel.')) . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR), sprintf("%.0F", $year)]) . "'>" . encodeString(getTranslation('© %1$s–%2$s Nicolas Flamel.', [getNumberTranslation(COPYRIGHT_YEAR), getNumberTranslation($year)])) . "</p>";
													}
													
													// Otherwise
													else {
													
														// Display copyright information with the copyright year
														echo "<p class=\"copyright translatable\" data-text=\"" . encodeString(getDefaultTranslation('© %1$s Nicolas Flamel.')) . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR)]) . "'>" . encodeString(getTranslation('© %1$s Nicolas Flamel.', [getNumberTranslation(COPYRIGHT_YEAR)])) . "</p>";
													}
												?><!--
												
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Disclaimer')); ?>"><?= encodeString(getTranslation('Disclaimer')); ?></h3><!--
											--><div class="disclaimer"><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Translation Contributors')); ?>"><?= encodeString(getTranslation('Translation Contributors')); ?></h3><!--
											--><div class="translationContributors"><!--
												--><ul><!--
												
													--><?php
													
														// Check if there's no translation contributors
														if(count(getTransactionContributors()) === 0) {
														
															// Display no translation contributors
															echo "<li><span class=\"translatable\" data-text=\"" . encodeString(getDefaultTranslation('N/A')) . "\">" . encodeString(getTranslation('N/A')) . "</span></li>";
														}
														
														// Otherwise
														else {
														
															// Go through all translation contributors
															foreach(getTransactionContributors() as $link => $translationContributor) {
															
																// Check if contributor doesn't have a link
																if(is_int($link) === TRUE) {
																
																	// Display translation contributor
																	echo "<li><span class=\"contextMenu\">" . encodeString($translationContributor) . "</span></li>";
																}
																
																// Otherwise
																else {
																
																	// Display translation contributor
																	echo "<li><a class=\"contextMenu\" href=\"" . encodeString($link) . "\" referrerpolicy=\"same-origin\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">" . encodeString($translationContributor) . "</a></li>";
																}
															}
														}
													?><!--
													
												--></ul><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Attributions')); ?>"><?= encodeString(getTranslation('Attributions')); ?></h3><!--
											--><div class="attributions"><!--
												--><ul><!--
												
													--><?php
													
														// Check if there's no attributions
														if(count(ATTRIBUTIONS) === 0) {
														
															// Display no attributions
															echo "<li><span class=\"translatable\" data-text=\"" . encodeString(getDefaultTranslation('N/A')) . "\">" . encodeString(getTranslation('N/A')) . "</span></li>";
														}
													?><!--
													
												--></ul><!--
											--></div><!--
										--></div><!--
									--></div><!--
									--><div class="log scrollable hide"><!--
										--><div><!--
											--><div class="navigation"><!--
												--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
												--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Log')); ?>"><?= encodeString(getTranslation('Log')); ?></h2><!--
												--><button class="forward translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
											--></div><!--
											--><div class="messages"><!--
											--></div><!--
										--></div><!--
									--></div><!--
									--><div class="transaction scrollable hide"><!--
										--><div><!--
											--><div class="navigation"><!--
												--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
												--><button class="forward translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Information')); ?>"><?= encodeString(getTranslation('Information')); ?></h3><!--
											--><div class="transactionInformation"><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Payment Proof')); ?>"><?= encodeString(getTranslation('Payment Proof')); ?></h3><!--
											--><div class="paymentProof"><!--
											--></div><!--
											--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Utilities')); ?>"><?= encodeString(getTranslation('Utilities')); ?></h3><!--
											--><div class="merge"><!--
												--><button class="rebroadcastTransaction" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Rebroadcast')); ?>"><?= encodeString(getTranslation('Rebroadcast')); ?></span><!--
													--><span class="dots"><!--
														--><span></span><!--
														--><span></span><!--
														--><span></span><!--
													--></span><!--
												--></button><!--
											--></div><!--
											--><div class="merge"><!--
												--><button class="getTransactionFileResponse" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Get File Response')); ?>"><?= encodeString(getTranslation('Get File Response')); ?></span><!--
													--><span class="dots"><!--
														--><span></span><!--
														--><span></span><!--
														--><span></span><!--
													--></span><!--
												--></button><!--
											--></div><!--
											--><div><!--
												--><button class="cancelTransaction" data-private><!--
													--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Cancel')); ?>"><?= encodeString(getTranslation('Cancel')); ?></span><!--
												--></button><!--
											--></div><!--
										--></div><!--
									--></div><!--
								--></div><!--
							--></div><!--
						--></div><!--
						--><div class="status"><!--
							--><p class="node translatable" data-text="<?= encodeString(getDefaultTranslation('Node disconnected')); ?>" title="<?= encodeString(getTranslation('Node disconnected')); ?>"><!--
								--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Node')); ?>"><?= encodeString(getTranslation('Node')); ?></span><!--
							--></p><!--
							--><p class="listener translatable" data-text="<?= encodeString(getDefaultTranslation('Listener disconnected')); ?>" title="<?= encodeString(getTranslation('Listener disconnected')); ?>"><!--
								--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Listener')); ?>"><?= encodeString(getTranslation('Listener')); ?></span><!--
							--></p><!--
						--></div><!--
					--></div><!--
				--></div><!--
			--></main><!--
			--><aside class="message noButtons hide noScriptShow"><!--
				--><div class="message"><!--
					--><div><!--
						--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('JavaScript Error')); ?>"><?= encodeString(getTranslation('JavaScript Error')); ?></h2><!--
						--><span class="upArrow"></span><!--
						--><p class="scrollable"><!--
							--><span class="text"><!--
								--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Your browser doesn\'t support JavaScript. Update your browser and/or enable JavaScript to continue.')); ?>"><?= encodeString(getTranslation('Your browser doesn\'t support JavaScript. Update your browser and/or enable JavaScript to continue.')); ?></span><!--
							--></span><!--
						--></p><!--
						--><span class="downArrow"></span><!--
						--><div><!--
							--><button><!--
								--><span class="translatable"></span><!--
								--><span class="dots"><!--
									--><span></span><!--
									--><span></span><!--
									--><span></span><!--
								--></span><!--
							--></button><!--
							--><button><!--
								--><span class="translatable"></span><!--
								--><span class="dots"><!--
									--><span></span><!--
									--><span></span><!--
									--><span></span><!--
								--></span><!--
							--></button><!--
						--></div><!--
					--></div><!--
				--></div><!--
			--></aside><!--
			--><section class="tetris hide"><!--
				--><canvas><!--
				--></canvas><!--
			--></section><!--
			--><section class="cookieAcceptance hide noFocus"><!--
				--><div class="cookieAcceptance"><!--
					--><span></span><!--
					--><p class="translatable" data-text="<?= encodeString(getDefaultTranslation('This site uses cookies that are essential to its functionality. By using this site\'s services or clicking OK, you agree to this site\'s use of cookies.')); ?>"><?= encodeString(getTranslation('This site uses cookies that are essential to its functionality. By using this site\'s services or clicking OK, you agree to this site\'s use of cookies.')); ?></p><!--
					--><button><!--
						--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('OK')); ?>"><?= encodeString(getTranslation('OK')); ?></span><!--
					--></button><!--
				--></div><!--
			--></section><!--
			--><section class="installApp hide noFocus"><!--
				--><div class="installApp"><!--
					--><img src="<?= encodeString(getResource("./images/app_icons/app_icon.svg")); ?>" integrity="<?= encodeString(getChecksum("./images/app_icons/app_icon.svg")); ?>"><!--
					--><p class="translatable" data-text="<?= encodeString(getDefaultTranslation('Install the MWC Wallet app?')); ?>"><?= encodeString(getTranslation('Install the MWC Wallet app?')); ?></p><!--
					--><button class="installNow"><!--
						--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Install Now')); ?>"><?= encodeString(getTranslation('Install Now')); ?></span><!--
					--></button><!--
					--><button class="remindMeLater translatable" data-text="<?= encodeString(getDefaultTranslation('Remind me later')); ?>" title="<?= encodeString(getTranslation('Remind me later')); ?>"><!--
						--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Remind me later')); ?>"><?= encodeString(getTranslation('Remind me later')); ?></span><!--
					--></button><!--
				--></div><!--
			--></section><!--
		--></div><!--
	--></div><!--
	
	--><link rel="prefetch" as="font" href="<?= encodeString(getResource("./fonts/font_awesome/font_awesome-5.15.4.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous"><!--
	--><link rel="prefetch" as="font" href="<?= encodeString(getResource("./fonts/font_awesome/font_awesome_solid-5.15.4.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous"><!--
	
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/common.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/common.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/mwc/mwc.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/mwc/mwc.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/grin/grin.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/grin/grin.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/epic/epic.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/epic/epic.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/btc/btc.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/btc/btc.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/eth/eth.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/eth/eth.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/tetris.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/tetris.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/logo.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/logo.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/application.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/application.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/unlocked.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/unlocked.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/sections.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/sections.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/settings_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/settings_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/about_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/about_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/transaction_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/transaction_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/account_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/account_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/wallet_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/wallet_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/send_payment_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/send_payment_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/log_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/log_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/message.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/message.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/install_app.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/install_app.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/cookie_acceptance.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/cookie_acceptance.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/maintenance_notification.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/maintenance_notification.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/language.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/language.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
	
	--><script>
	
		// Use strict
		"use strict";
		
		
		// Constants
		
		// HTTPS server address
		var HTTPS_SERVER_ADDRESS = <?= (array_key_exists("HTTPS_SERVER_ADDRESS", $_SERVER) === TRUE) ? "\"" . escapeString($_SERVER["HTTPS_SERVER_ADDRESS"]) . "\"" : "\"http\" + ((location[\"protocol\"] === \"https:\") ? \"s\" : \"\") + \"://\" + location[\"hostname\"]"; ?>;
		
		// Tor server address
		var TOR_SERVER_ADDRESS = <?= (array_key_exists("TOR_SERVER_ADDRESS", $_SERVER) === TRUE) ? "\"" . escapeString($_SERVER["TOR_SERVER_ADDRESS"]) . "\"" : "\"http\" + ((location[\"protocol\"] === \"https:\") ? \"s\" : \"\") + \"://\" + location[\"hostname\"]"; ?>;
		
		// Files
		var FILES = <?= json_encode($files); ?>;
		
		// Copyright year
		var COPYRIGHT_YEAR = <?= COPYRIGHT_YEAR; ?>;
		
		// Default language
		var DEFAULT_LANGUAGE = "<?= escapeString(DEFAULT_LANGUAGE); ?>";
		
		// Maintenance start time
		var MAINTENANCE_START_TIME = "<?= escapeString(MAINTENANCE_START_TIME); ?>";
		
		// Version number
		var VERSION_NUMBER = "<?= escapeString(VERSION_NUMBER); ?>";
		
		// Version release date
		var VERSION_RELEASE_DATE = "<?= escapeString(VERSION_RELEASE_DATE); ?>";

		// Version changes
		var VERSION_CHANGES = [
		
			<?php
			
				// Go through all version changes
				foreach(VERSION_CHANGES as $versionChange) {
				
					// Display version change
					echo "\"" . escapeString($versionChange) . "\",";
				}
			?>
			
		];
		
		// Attributions
		var ATTRIBUTIONS = <?= json_encode(ATTRIBUTIONS); ?>;
		
		// Access timestamp
		var ACCESS_TIMESTAMP = Date.now();
		
		// URL query string
		var URL_QUERY_STRING = location["search"];
		
		// No state
		var NO_STATE = null;
		
		// Language change event
		var LANGUAGE_CHANGE_EVENT = "LanguageChangeEvent";
		
		
		// Main function
		
		// Check if history is supported
		if(typeof history === "object" && history !== null) {
		
			// Check if a startup error didn't occur
			if(startupErrorOccurred() === false) {
		
				// Change displayed URL to remove query string
				history.replaceState(NO_STATE, document["title"], ((location["protocol"] === "file:") ? location["protocol"] + "//" : "") + location["pathname"]);
			}
			
			// Title language change event
			addEvent(getElement(document, "title", "translatable"), LANGUAGE_CHANGE_EVENT, function() {
			
				// Set timeout
				setTimeout(function() {
				
					// Check if a startup error didn't occur
					if(startupErrorOccurred() === false) {
				
						// Change displayed URL to remove query string
						history.replaceState(NO_STATE, document["title"], ((location["protocol"] === "file:") ? location["protocol"] + "//" : "") + location["pathname"]);
					}
				}, 0);
			});
		}
		
		
		// Supporting function implementation
		
		// Add minified suffix
		function addMinifiedSuffix(file) {
		
			// Get file's suffix offset
			var suffixOffset = file.lastIndexOf(".");
			
			// Check if file contains no suffix
			if(suffixOffset === INDEX_NOT_FOUND || suffixOffset < "./"["length"])
			
				// Return file with minified suffix at the end
				return file + ".min";
			
			// Otherwise
			else
			
				// Return file with minified suffix insert before its suffix
				return file.substring(0, suffixOffset) + ".min" + file.substring(suffixOffset);
		}
		
		// Get resource
		function getResource(file) {
		
			// Return resource with version
			return ((file in FILES === true && FILES[file]["Minified"] === true) ? addMinifiedSuffix(file) : file) + ((file in FILES === true && FILES[file]["Version"] !== 0) ? "?" + FILES[file]["Version"] : "");
		}
		
	</script><!--
	
	--><script src="<?= encodeString(getResource("./scripts/jQuery-3.6.4.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/jQuery-3.6.4.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/bignumber.js-9.1.1.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/bignumber.js-9.1.1.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/common.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/common.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/consensus.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/consensus.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/languages.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/languages.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/language.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/language.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/extension.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/extension.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/JSONBigNumber-1.1.1.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/JSONBigNumber-1.1.1.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/glMatrix-3.4.1.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/glMatrix-3.4.1.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/BLAKE2b-0.0.2.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/BLAKE2b-0.0.2.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/Ed25519-0.0.22.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/Ed25519-0.0.22.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/X25519-0.0.23.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/X25519-0.0.23.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/js-sha3-0.8.0.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/js-sha3-0.8.0.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/js-sha256-0.10.0.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/js-sha256-0.10.0.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/ChaCha-2.1.0.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/ChaCha-2.1.0.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/secp256k1-zkp-0.0.29.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/secp256k1-zkp-0.0.29.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/SMAZ-0.0.31.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/SMAZ-0.0.31.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/hi-base32-0.5.1.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hi-base32-0.5.1.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/bech32-2.0.0.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/bech32-2.0.0.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/base58.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/base58.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/base64.js-3.7.5.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/base64.js-3.7.5.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/crc32-1.2.0.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/crc32-1.2.0.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/bit_reader.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/bit_reader.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/bit_writer.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/bit_writer.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/fatal_error.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/fatal_error.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/startup_images_creator.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/startup_images_creator.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/scroll.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/scroll.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/copyright.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/copyright.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/protocol_handler.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/protocol_handler.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/settings.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/settings.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/crypto.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/crypto.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/json_rpc.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/json_rpc.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/tor.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/tor.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/mqs.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/mqs.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/slatepack.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slatepack.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/uuid.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/uuid.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/hash.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hash.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/slate.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slate.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/slate_participant.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slate_participant.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/slate_input.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slate_input.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/slate_output.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slate_output.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/slate_kernel.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slate_kernel.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/proof_builder.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/proof_builder.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/legacy_proof_builder.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/legacy_proof_builder.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/new_proof_builder.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/new_proof_builder.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/view_proof_builder.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/view_proof_builder.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/protocol_buffers.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/protocol_buffers.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/hardware_wallet_definitions.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hardware_wallet_definitions.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/hardware_wallet_usb_transport.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hardware_wallet_usb_transport.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/hardware_wallet_bluetooth_transport.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hardware_wallet_bluetooth_transport.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/hardware_wallet.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hardware_wallet.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/api.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/api.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/instance.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/instance.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/service_worker_installer.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/service_worker_installer.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/wallet.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/wallet.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/identifier.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/identifier.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/database_transaction.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/database_transaction.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/database.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/database.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/transaction.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/transaction.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/transactions.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/transactions.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/height.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/height.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/initial_heights_obtained.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/initial_heights_obtained.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/recent_heights.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/recent_heights.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/output.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/output.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/output_information.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/output_information.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/tor_proxy.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/tor_proxy.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/node.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/node.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/seed.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/seed.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/wallets.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/wallets.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/listener.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/listener.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/interaction.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/interaction.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/install_app.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/install_app.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/focus.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/focus.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/caps_lock.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/caps_lock.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/message.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/message.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/prices.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/prices.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/log.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/log.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/clipboard.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/clipboard.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/sections.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/sections.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/settings_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/settings_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/about_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/about_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/transaction_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/transaction_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/account_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/account_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/wallet_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/wallet_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/send_payment_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/send_payment_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/log_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/log_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/unlocked.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/unlocked.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/version.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/version.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/cookie_acceptance.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/cookie_acceptance.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/maintenance_notification.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/maintenance_notification.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/tetris.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/tetris.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/logo.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/logo.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/qrcode-generator-1.4.4.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/qrcode-generator-1.4.4.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/automatic_lock.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/automatic_lock.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/wake_lock.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/wake_lock.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/camera.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/camera.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/emoji.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/emoji.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	--><script src="<?= encodeString(getResource("./scripts/application.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/application.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
	
--></body>
</html>
