contents of zip

This commit is contained in:
transatoshi
2024-12-20 18:08:44 -08:00
parent aeb2b99db7
commit f03ed73d2b
261 changed files with 208197 additions and 0 deletions

27
backend/additional_text.php Executable file
View File

@@ -0,0 +1,27 @@
<?php
// Miscellaneous text
getDefaultTranslation('HTTP');
getDefaultTranslation('HTTPS');
getDefaultTranslation('Ledger Nano S');
getDefaultTranslation('Ledger Nano X');
getDefaultTranslation('Ledger Nano S Plus');
getDefaultTranslation('Ledger Stax');
getDefaultTranslation('Ledger Flex');
getDefaultTranslation('Trezor');
getDefaultTranslation('Trezor Model One');
getDefaultTranslation('Trezor Model T');
getDefaultTranslation('Trezor Safe 3');
getDefaultTranslation('Trezor Safe 5');
// Extension text
getDefaultTranslation('MWC Wallet');
getDefaultTranslation('A MimbleWimble Coin wallet.');
getDefaultTranslation('Open in New Tab');
getDefaultTranslation('Open in New Window');
getDefaultTranslation('MWC Wallet is an extension that allows you to manage your MimbleWimble Coin in your web browser.');
getDefaultTranslation('This extension injects an API into every website you visit making it possible for those websites to interact with MWC Wallet.');
getDefaultTranslation('Manage your MimbleWimble Coin');
getDefaultTranslation('Website API integration');
getDefaultTranslation('Hardware wallet support');
?>

77
backend/common.php Executable file
View File

@@ -0,0 +1,77 @@
<?php
// Constants
// Version number
const VERSION_NUMBER = "2.6.0";
// Version release date
const VERSION_RELEASE_DATE = "20 Nov 2024 23:39:00 UTC";
// Version changes
const VERSION_CHANGES = [
"Fixed title and metadata not changing when language is changed.",
"Added support for Ledger Flex and Trezor Safe 5 hardware wallets.",
"Added notice to login screen to deter people from using potentially malicious clones of this service.",
"Fixed wallet ordering buttons not updating when a wallet is deleted."
];
// Maintenance start time
const MAINTENANCE_START_TIME = "01 Jan 1970 00:00:00 UTC";
// Copyright year
const COPYRIGHT_YEAR = 2022;
// Date year string
const DATE_YEAR_STRING = "Y";
// Grace accent HTML entity
const GRAVE_ACCENT_HTML_ENTITY = "&#x60;";
// Seconds in a minute
const SECONDS_IN_A_MINUTE = 60;
// Minutes in an hour
const MINUTES_IN_AN_HOUR = 60;
// Hours in a day
const HOURS_IN_A_DAY = 24;
// Supporting function implementation
// Encode string
function encodeString($string) {
// Return string with backticks, ampersands, double quotes, single quotes, greater than signs, and less than signs encoded as HTML
return preg_replace('/`/u', GRAVE_ACCENT_HTML_ENTITY, htmlspecialchars($string, ENT_QUOTES));
}
// Escape string
function escapeString($string) {
// Return string with double quotes and back slashes escaped
return preg_replace('/(["\\\\])/u', "\\\\$1", $string);
}
// Sanitize attribute name
function sanitizeAttributeName($string) {
// Return string without spaces, equals, double quotes, single quotes, backticks, greater than signs, less than signs, and ampersands
return preg_replace('/[ ="\'`<>&]/u', "", $string);
}
// Get year
function getYear() {
// Return year
return intval(date(DATE_YEAR_STRING));
}
// Starts with
function startsWith($haystack, $needle) {
// Search backwards starting from haystack length characters from the end
return $needle === "" || mb_strrpos($haystack, $needle, -mb_strlen($haystack)) !== FALSE;
}
?>

601
backend/language.php Executable file
View File

@@ -0,0 +1,601 @@
<?php
// Constants
// Default language
const DEFAULT_LANGUAGE = "en-US";
// Default locale
const DEFAULT_LOCALE = "en_US.UTF-8";
// Single quote HTML entity
const SINGLE_QUOTE_HTML_ENTITY = "&#39;";
// Ampersand HTML entity
const AMPERSAND_HTML_ENTITY = "&amp;";
// Number format minimum fraction digits
const NUMBER_FORMAT_MINIMUM_FRACTION_DIGITS = 0;
// Number format maximum fraction digits
const NUMBER_FORMAT_MAXIMUM_FRACTION_DIGITS = 9;
// Number format use grouping
const NUMBER_FORMAT_USE_GROUPING = FALSE;
// Bitcoin currency name
const BITCOIN_CURRENCY_NAME = "BTC";
// Ethereum currency name
const ETHEREUM_CURRENCY_NAME = "ETH";
// Escape character
const ESCAPE_CHARACTER = "%";
// Placeholder pattern
const PLACEHOLDER_PATTERN = '/^' . ESCAPE_CHARACTER . '[1-9]\d*\$s$/u';
// Supporting function implementation
// Get available languages
function getAvailableLanguages() {
// Declare available languages
static $availableLanguages;
// Check if available languages doesn't exist
if(isset($availableLanguages) === FALSE) {
// Set available languages
$availableLanguages = [];
// Check if getting language files was successful
$languageFiles = scandir(__DIR__ . "/../languages");
if($languageFiles !== FALSE) {
// Go through all language files
foreach($languageFiles as $languageFile) {
// Check if language file is a file
$file = __DIR__ . "/../languages/" . $languageFile;
if(is_file($file) === TRUE)
// Include language file
require $file;
}
// Sort available languages by language name
uasort($availableLanguages, function($firstValue, $secondValue) {
return strcoll($firstValue["Constants"]["Language"], $secondValue["Constants"]["Language"]);
});
}
}
// Return available languages
return $availableLanguages;
}
// Get language
function getLanguage() {
// Declare language
static $language;
// Check if language doesn't exist
if(isset($language) === FALSE) {
// Get locale language
$localeLanguage = (array_key_exists("HTTP_ACCEPT_LANGUAGE", $_SERVER) === TRUE && is_string($_SERVER["HTTP_ACCEPT_LANGUAGE"]) === TRUE && mb_strlen($_SERVER["HTTP_ACCEPT_LANGUAGE"]) !== 0) ? locale_accept_from_http($_SERVER["HTTP_ACCEPT_LANGUAGE"]) : FALSE;
// Check if local language is should be simplified Chinese
if($localeLanguage === "zh" && mb_strstr($_SERVER["HTTP_ACCEPT_LANGUAGE"], "zh-CN") !== FALSE) {
// Set local language to simplified Chinese
$localeLanguage = "zh_CN";
}
// Get language parameter
$languageParameter = (array_key_exists("Language", $_GET) === TRUE && is_string($_GET["Language"]) === TRUE && mb_strlen($_GET["Language"]) !== 0) ? $_GET["Language"] : FALSE;
// Get prefered languages
$preferedLanguages = array_unique(($languageParameter === FALSE) ? (($localeLanguage === FALSE) ? ((array_key_exists("__Host-Language", $_COOKIE) === FALSE || is_string($_COOKIE["__Host-Language"]) === FALSE || mb_strlen($_COOKIE["__Host-Language"]) === 0) ? [
// Default language
DEFAULT_LANGUAGE
] : [
// Choosen language
$_COOKIE["__Host-Language"],
// Default language
DEFAULT_LANGUAGE
]) : ((array_key_exists("__Host-Language", $_COOKIE) === FALSE || is_string($_COOKIE["__Host-Language"]) === FALSE || mb_strlen($_COOKIE["__Host-Language"]) === 0) ? [
// Locale language with variant
preg_replace('/_/u', "-", $localeLanguage),
// Locale language without variant
preg_split('/_/u', $localeLanguage)[0],
// Default language
DEFAULT_LANGUAGE
] : [
// Choosen language
$_COOKIE["__Host-Language"],
// Locale language with variant
preg_replace('/_/u', "-", $localeLanguage),
// Locale language without variant
preg_split('/_/u', $localeLanguage)[0],
// Default language
DEFAULT_LANGUAGE
])) : (($localeLanguage === FALSE) ? ((array_key_exists("__Host-Language", $_COOKIE) === FALSE || is_string($_COOKIE["__Host-Language"]) === FALSE || mb_strlen($_COOKIE["__Host-Language"]) === 0) ? [
// Language parameter
$languageParameter,
// Default language
DEFAULT_LANGUAGE
] : [
// Choosen language
$_COOKIE["__Host-Language"],
// Language parameter
$languageParameter,
// Default language
DEFAULT_LANGUAGE
]) : ((array_key_exists("__Host-Language", $_COOKIE) === FALSE || is_string($_COOKIE["__Host-Language"]) === FALSE || mb_strlen($_COOKIE["__Host-Language"]) === 0) ? [
// Language parameter
$languageParameter,
// Locale language with variant
preg_replace('/_/u', "-", $localeLanguage),
// Locale language without variant
preg_split('/_/u', $localeLanguage)[0],
// Default language
DEFAULT_LANGUAGE
] : [
// Choosen language
$_COOKIE["__Host-Language"],
// Language parameter
$languageParameter,
// Locale language with variant
preg_replace('/_/u', "-", $localeLanguage),
// Locale language without variant
preg_split('/_/u', $localeLanguage)[0],
// Default language
DEFAULT_LANGUAGE
])));
// Get available languages
$availableLanguages = getAvailableLanguages();
// Go through all prefered languages
foreach($preferedLanguages as $preferedLanguage) {
// Check if prefered language is available
if(array_key_exists($preferedLanguage, $availableLanguages) === TRUE) {
// Set language
$language = $preferedLanguage;
// Break
break;
}
}
// Check if language doesn't exist
if(isset($language) === FALSE)
// Set language to default lnaguage
$language = DEFAULT_LANGUAGE;
}
// Return language
return $language;
}
// Get language currencies
function getLanguageCurrencies() {
// Declare language currencies
static $languageCurrencies;
// Check if language currencies doesn't exist
if(isset($languageCurrencies) === FALSE) {
// Set language currencies
$languageCurrencies = [
// Bitcoin currency name
BITCOIN_CURRENCY_NAME,
// Ethereum currency name
ETHEREUM_CURRENCY_NAME
];
// Go through all available languages
foreach(getAvailableLanguages() as $languageIdentifier => $availableLanguage) {
// Check if available language has a currency constant
if(array_key_exists("Currency", $availableLanguage["Constants"]) === TRUE) {
// Get available language's currency
$currency = $availableLanguage["Constants"]["Currency"];
// Check if currency isn't already in the list of language currencies
if(in_array($currency, $languageCurrencies, TRUE) === FALSE)
// Append currency to list of language currencies
array_push($languageCurrencies, $currency);
}
}
// Sort language currencies by currency name
usort($languageCurrencies, function($firstValue, $secondValue) {
return strcoll($firstValue, $secondValue);
});
}
// Return language currencies
return $languageCurrencies;
}
// Get translation contributors
function getTransactionContributors() {
// Declare translation contributors
static $translationContributors;
// Check if translation contributors doesn't exist
if(isset($translationContributors) === FALSE) {
// Set translation contributors
$translationContributors = [];
// Go through all available languages
foreach(getAvailableLanguages() as $languageIdentifier => $availableLanguage) {
// Check if available language has contributors
if(array_key_exists("Contributors", $availableLanguage) === TRUE) {
// Get available language's contributors
$contributors = $availableLanguage["Contributors"];
// Go through all contributors
foreach($contributors as $contributor => $link) {
// Check if contributor doesn't have a link
if(is_int($contributor) === True) {
// Check if contributor isn't already in the list of translation contributors
if(in_array($link, $translationContributors, TRUE) === FALSE)
// Append contributor to list of translation contributors
array_push($translationContributors, $link);
}
// Otherwise
else {
// Check if contributor isn't already in the list of translation contributors
if(in_array($contributor, $translationContributors, TRUE) === FALSE)
// Append contributor to list of translation contributors
$translationContributors[$link] = $contributor;
}
}
}
}
// Sort translation contributors by contributor name
uasort($translationContributors, function($firstValue, $secondValue) {
return strcoll($firstValue, $secondValue);
});
}
// Return translation contributors
return $translationContributors;
}
// Get translated type value
function getTranslatedTypeValue($type, $value) {
// Get language
$language = getLanguage();
// Check if type is text and value is a standalone placeholder
if($type === "Text" && preg_match(PLACEHOLDER_PATTERN, $value) === 1) {
// Return value and the language used
return [
// Result
"Result" => $value,
// Language
"Language" => $language
];
}
// Otherwise
else {
// Get available languages
$availableLanguages = getAvailableLanguages();
// Loop until a result is returned
while(TRUE) {
// Check if language is available
if(array_key_exists($language, $availableLanguages) === TRUE) {
// Check if specified type exist for the language and the specified value exists
if(array_key_exists($type, $availableLanguages[$language]) === TRUE && array_key_exists($value, $availableLanguages[$language][$type]) === TRUE)
// Return value for the language and the language used
return [
// Result
"Result" => $availableLanguages[$language][$type][$value],
// Language
"Language" => $language
];
// Otherwise check if language provided a fallback language
else if($language !== DEFAULT_LANGUAGE && array_key_exists("Constants", $availableLanguages[$language]) === TRUE && array_key_exists("Fallback", $availableLanguages[$language]["Constants"]) === TRUE)
// Set language to the language's fallback language
$language = $availableLanguages[$language]["Constants"]["Fallback"];
// Otherwise check if the language is not the default language
else if($language !== DEFAULT_LANGUAGE)
// Set language to default language
$language = DEFAULT_LANGUAGE;
// Otherwise
else {
// Check if type is constants
if($type === "Constants") {
// Return empty string and the language used
return [
// Result
"Result" => "",
// Language
"Language" => $language
];
}
// Otherwise assume type is text
else {
// Return value and the language used
return [
// Result
"Result" => $value,
// Language
"Language" => $language
];
}
}
}
// Otherwise check if the language is not the default language
else if($language !== DEFAULT_LANGUAGE)
// Set language to default language
$language = DEFAULT_LANGUAGE;
// Otherwise
else {
// Check if type is constants
if($type === "Constants") {
// Return empty string and the language used
return [
// Result
"Result" => "",
// Language
"Language" => $language
];
}
// Otherwise assume type is text
else {
// Return value and the language used
return [
// Result
"Result" => $value,
// Language
"Language" => $language
];
}
}
}
}
}
// Get constant
function getConstant($constant) {
// Return translation for the specified constant
return getTranslatedTypeValue("Constants", $constant)["Result"];
}
// Get translation
function getTranslation($text, $arguments = []) {
// Get translated text
$translatedText = getTranslatedTypeValue("Text", $text);
// Go through all arguments
foreach($arguments as &$argument) {
// Check if argument is a function
if(is_callable($argument) === TRUE)
// Resolve the argument's value using the translated text's language
$argument = $argument($translatedText["Language"], $text);
}
// Get formatted translation for the specified text
$formattedTranslation = vsprintf($translatedText["Result"], $arguments);
// Check if formatting translation failed
if($formattedTranslation === FALSE)
// Return empty string
return "";
// Otherwise
else
// Return formatted translation
return $formattedTranslation;
}
// Get default translation
function getDefaultTranslation($text) {
// Return text
return $text;
}
// Get number translation
function getNumberTranslation($number) {
// Check if number isn't valid
if(is_string($number) === TRUE || is_numeric($number) === FALSE) {
// Return function
return function($language, $value) {
// Return empty string
return "";
};
}
// Otherwise
else {
// Return function
return function($language, $value) use ($number) {
// Get available languages
$availableLanguages = getAvailableLanguages();
// Loop until a result is returned
while(TRUE) {
// Check if language is available or value is a standalone placeholder
if(array_key_exists($language, $availableLanguages) === TRUE || preg_match(PLACEHOLDER_PATTERN, $value) === 1) {
// Set number formatter
$numberFormatter = new NumberFormatter($language, NumberFormatter::DECIMAL);
// Check if number formatter is valid and it can format using the provided language
if($numberFormatter !== FALSE && preg_replace('/_/u', "-", $numberFormatter->getLocale(Locale::VALID_LOCALE)) === $language) {
// Configure number formatter
$numberFormatter->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, NUMBER_FORMAT_MINIMUM_FRACTION_DIGITS);
$numberFormatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, NUMBER_FORMAT_MAXIMUM_FRACTION_DIGITS);
$numberFormatter->setAttribute(NumberFormatter::GROUPING_USED, NUMBER_FORMAT_USE_GROUPING);
$numberFormatter->setAttribute(NumberFormatter::ROUNDING_MODE, NumberFormatter::ROUND_DOWN);
// Return number formatted as the language
return $numberFormatter->format($number);
}
// Otherwise check if language provided a fallback language
else if($language !== DEFAULT_LANGUAGE && array_key_exists("Constants", $availableLanguages[$language]) === TRUE && array_key_exists("Fallback", $availableLanguages[$language]["Constants"]) === TRUE)
// Set language to the language's fallback language
$language = $availableLanguages[$language]["Constants"]["Fallback"];
// Otherwise check if the language is not the default language
else if($language !== DEFAULT_LANGUAGE)
// Set language to default language
$language = DEFAULT_LANGUAGE;
// Otherwise
else
// Return number
return $number;
}
// Otherwise check if the language is not the default language
else if($language !== DEFAULT_LANGUAGE)
// Set language to default language
$language = DEFAULT_LANGUAGE;
// Otherwise
else
// Return number
return $number;
}
};
}
}
// Escape text
function escapeText($text) {
// Return text with all escape characters escaped
return preg_replace('/' . ESCAPE_CHARACTER . '/u', ESCAPE_CHARACTER . ESCAPE_CHARACTER, $text);
}
// Escape Data
function escapeData($array) {
// Return array in JSON encoding with ampersands and single quotes encoded as HTML
return preg_replace('/\'/u', SINGLE_QUOTE_HTML_ENTITY, preg_replace('/&/u', AMPERSAND_HTML_ENTITY, json_encode($array)));
}
// Main function
// Set locale
setlocale(LC_ALL, DEFAULT_LOCALE);
?>

1805
backend/resources.php Executable file

File diff suppressed because it is too large Load Diff

28
browserconfig.xml Executable file
View File

@@ -0,0 +1,28 @@
<?php
// Included files
require_once __DIR__ . "/backend/common.php";
require_once __DIR__ . "/backend/resources.php";
// Main function
// Set content type header
header("Content-Type: text/xml; charset=" . mb_internal_encoding());
?><?xml version="1.0" encoding="UTF-8"?>
<browserconfig>
<msapplication>
<tile><?php
// Go through all tile images
foreach(TILE_IMAGES as $tileImage)
// Display tile image
echo PHP_EOL . "\t\t\t<" . sanitizeAttributeName(mb_strtolower($tileImage[TILE_IMAGE_PARTS["Ratio"]])) . sanitizeAttributeName($tileImage[TILE_IMAGE_PARTS["X Dimension"]]) . "x" . sanitizeAttributeName($tileImage[TILE_IMAGE_PARTS["Y Dimension"]]) . "logo src=\"" . escapeString(getResource($tileImage[TILE_IMAGE_PARTS["File Path"]])) . "\"/>";
?>
<TileColor><?= encodeString(BACKGROUND_COLOR); ?></TileColor>
</tile>
</msapplication>
</browserconfig>

0
connection_test.html Executable file
View File

36
errors/401.html Executable file
View File

@@ -0,0 +1,36 @@
<?php
// Included files
require_once __DIR__ . "/../backend/common.php";
require_once __DIR__ . "/../backend/language.php";
// Main function
// Get path
$path = $_SERVER["REQUEST_URI"];
// Check if accessing 401 error page directly
if($path === "/errors/401.html" || startsWith($path, "/errors/401.html?") === TRUE) {
// Require 404 error page
require __DIR__ . "/404.html";
// Exit
exit();
}
// Set error header
header($_SERVER["SERVER_PROTOCOL"] . " 401 Unauthorized");
header("Status: 401 Unauthorized");
// Set title, title argument, error, error argument, and message
$title = getDefaultTranslation('MWC Wallet — Error %1$s');
$titleArgument = 401;
$error = getDefaultTranslation('Error %1$s');
$errorArgument = 401;
$message = getDefaultTranslation('Unauthorized');
// Require template
require __DIR__ . "/template.php";
?>

36
errors/403.html Executable file
View File

@@ -0,0 +1,36 @@
<?php
// Included files
require_once __DIR__ . "/../backend/common.php";
require_once __DIR__ . "/../backend/language.php";
// Main function
// Get path
$path = $_SERVER["REQUEST_URI"];
// Check if accessing 403 error page directly
if($path === "/errors/403.html" || startsWith($path, "/errors/403.html?") === TRUE) {
// Require 404 error page
require __DIR__ . "/404.html";
// Exit
exit();
}
// Set error header
header($_SERVER["SERVER_PROTOCOL"] . " 403 Forbidden");
header("Status: 403 Forbidden");
// Set title, title argument, error, error argument, and message
$title = getDefaultTranslation('MWC Wallet — Error %1$s');
$titleArgument = 403;
$error = getDefaultTranslation('Error %1$s');
$errorArgument = 403;
$message = getDefaultTranslation('Forbidden');
// Require template
require __DIR__ . "/template.php";
?>

23
errors/404.html Executable file
View File

@@ -0,0 +1,23 @@
<?php
// Included files
require_once __DIR__ . "/../backend/common.php";
require_once __DIR__ . "/../backend/language.php";
// Main function
// Set error header
header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");
header("Status: 404 Not Found");
// Set title, title argument, error, error argument, and message
$title = getDefaultTranslation('MWC Wallet — Error %1$s');
$titleArgument = 404;
$error = getDefaultTranslation('Error %1$s');
$errorArgument = 404;
$message = getDefaultTranslation('Not Found');
// Require template
require __DIR__ . "/template.php";
?>

36
errors/500.html Executable file
View File

@@ -0,0 +1,36 @@
<?php
// Included files
require_once __DIR__ . "/../backend/common.php";
require_once __DIR__ . "/../backend/language.php";
// Main function
// Get path
$path = $_SERVER["REQUEST_URI"];
// Check if accessing 500 error page directly
if($path === "/errors/500.html" || startsWith($path, "/errors/500.html?") === TRUE) {
// Require 404 error page
require __DIR__ . "/404.html";
// Exit
exit();
}
// Set error header
header($_SERVER["SERVER_PROTOCOL"] . " 500 Internal Server Error");
header("Status: 500 Internal Server Error");
// Set title, title argument, error, error argument, and message
$title = getDefaultTranslation('MWC Wallet — Error %1$s');
$titleArgument = 500;
$error = getDefaultTranslation('Error %1$s');
$errorArgument = 500;
$message = getDefaultTranslation('Internal Server Error');
// Require template
require __DIR__ . "/template.php";
?>

36
errors/502.html Executable file
View File

@@ -0,0 +1,36 @@
<?php
// Included files
require_once __DIR__ . "/../backend/common.php";
require_once __DIR__ . "/../backend/language.php";
// Main function
// Get path
$path = $_SERVER["REQUEST_URI"];
// Check if accessing 502 error page directly
if($path === "/errors/502.html" || startsWith($path, "/errors/502.html?") === TRUE) {
// Require 404 error page
require __DIR__ . "/404.html";
// Exit
exit();
}
// Set error header
header($_SERVER["SERVER_PROTOCOL"] . " 502 Bad Gateway");
header("Status: 502 Bad Gateway");
// Set title, title argument, error, error argument, and message
$title = getDefaultTranslation('MWC Wallet — Error %1$s');
$titleArgument = 502;
$error = getDefaultTranslation('Error %1$s');
$errorArgument = 502;
$message = getDefaultTranslation('Bad Gateway');
// Require template
require __DIR__ . "/template.php";
?>

90
errors/503.html Executable file
View File

@@ -0,0 +1,90 @@
<?php
// Included files
require_once __DIR__ . "/../backend/common.php";
require_once __DIR__ . "/../backend/language.php";
// Constants
// Retry after seconds
const RETRY_AFTER_SECONDS = 10 * SECONDS_IN_A_MINUTE;
// Main function
// Get path
$path = $_SERVER["REQUEST_URI"];
// Check if referrer does exists
if(array_key_exists("HTTP_REFERER", $_SERVER) === TRUE && is_string($_SERVER["HTTP_REFERER"]) === TRUE) {
// Parse referrer as a URL
$url = parse_url($_SERVER["HTTP_REFERER"]);
// Check if referrer is invalid or from a different origin
if($url === FALSE || array_key_exists("host", $url) === FALSE || $url["host"] !== $_SERVER["SERVER_NAME"]) {
// Check if accessing 503 error page directly
if($path === "/errors/503.html" || startsWith($path, "/errors/503.html?") === TRUE) {
// Require 404 error page
require __DIR__ . "/404.html";
// Exit
exit();
}
}
// Otherwise
else {
// Set hide URL
$hideUrl = TRUE;
}
}
// Otherwise
else {
// Check if accessing 503 error page directly
if($path === "/errors/503.html" || startsWith($path, "/errors/503.html?") === TRUE) {
// Require 404 error page
require __DIR__ . "/404.html";
// Exit
exit();
}
}
// Check if referrer is the service worker
if(array_key_exists("HTTP_REFERER", $_SERVER) === TRUE && $_SERVER["HTTP_REFERER"] === "http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . $_SERVER["SERVER_NAME"] . "/scripts/service_worker.js") {
// Set referrer to the initial page
$_SERVER["HTTP_REFERER"] = "http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . $_SERVER["SERVER_NAME"] . "/";
}
// Set error header
header($_SERVER["SERVER_PROTOCOL"] . " 503 Service Temporarily Unavailable");
header("Status: 503 Service Temporarily Unavailable");
// Set retry after header
header("Retry-After: " . gmdate("D, d M Y H:i:s T", time() + RETRY_AFTER_SECONDS));
// Set refresh header
header("Refresh: " . sprintf("%.0F", RETRY_AFTER_SECONDS) . "; URL=" . ((isset($hideUrl) === TRUE) ? $_SERVER["HTTP_REFERER"] : ("http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . $_SERVER["REQUEST_URI"])));
// Set title, title argument, error, error argument, and message
$title = getDefaultTranslation('MWC Wallet — Maintenance');
$titleArgument = "";
$error = getDefaultTranslation('Maintenance');
$errorArgument = "";
$message = getDefaultTranslation('This site is currently down for maintenance.');
// Set is maintenance error
$isMaintenanceError = TRUE;
// Require template
require __DIR__ . "/template.php";
?>

36
errors/504.html Executable file
View File

@@ -0,0 +1,36 @@
<?php
// Included files
require_once __DIR__ . "/../backend/common.php";
require_once __DIR__ . "/../backend/language.php";
// Main function
// Get path
$path = $_SERVER["REQUEST_URI"];
// Check if accessing 504 error page directly
if($path === "/errors/504.html" || startsWith($path, "/errors/504.html?") === TRUE) {
// Require 404 error page
require __DIR__ . "/404.html";
// Exit
exit();
}
// Set error header
header($_SERVER["SERVER_PROTOCOL"] . " 504 Gateway Timeout");
header("Status: 504 Gateway Timeout");
// Set title, title argument, error, error argument, and message
$title = getDefaultTranslation('MWC Wallet — Error %1$s');
$titleArgument = 504;
$error = getDefaultTranslation('Error %1$s');
$errorArgument = 504;
$message = getDefaultTranslation('Gateway Timeout');
// Require template
require __DIR__ . "/template.php";
?>

64
errors/error.html Executable file
View File

@@ -0,0 +1,64 @@
<?php
// Included files
require_once __DIR__ . "/../backend/common.php";
require_once __DIR__ . "/../backend/language.php";
// Constants
// Seconds before refresh
const SECONDS_BEFORE_REFRESH = 5;
// Check if referrer doesn't exist
if(array_key_exists("HTTP_REFERER", $_SERVER) === FALSE || is_string($_SERVER["HTTP_REFERER"]) === FALSE) {
// Require 404 error page
require __DIR__ . "/404.html";
// Exit
exit();
}
// Main function
// Parse referrer as a URL
$url = parse_url($_SERVER["HTTP_REFERER"]);
// Check if referrer is invalid or from a different origin
if($url === FALSE || array_key_exists("host", $url) === FALSE || $url["host"] !== $_SERVER["SERVER_NAME"]) {
// Require 404 error page
require __DIR__ . "/404.html";
// Exit
exit();
}
// Check if referrer is the service worker
if($_SERVER["HTTP_REFERER"] === "http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . $_SERVER["SERVER_NAME"] . "/scripts/service_worker.js") {
// Set referrer to the initial page
$_SERVER["HTTP_REFERER"] = "http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . $_SERVER["SERVER_NAME"] . "/";
}
// Set refresh header
header("Refresh: " . sprintf("%.0F", SECONDS_BEFORE_REFRESH) . "; URL=" . $_SERVER["HTTP_REFERER"]);
// Set title, title argument, error, error argument, and message
$title = getDefaultTranslation('MWC Wallet — Error');
$titleArgument = "";
$error = getDefaultTranslation('Error');
$errorArgument = "";
$message = getDefaultTranslation('An error has occurred. This site will automatically reload in a few seconds.');
// Set hide URL
$hideUrl = TRUE;
// Set is generic error
$isGenericError = TRUE;
// Require template
require __DIR__ . "/template.php";
?>

View File

View File

1493
errors/template.php Executable file

File diff suppressed because it is too large Load Diff

BIN
favicon.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

92
fonts/btc/BTC license.txt Executable file
View File

@@ -0,0 +1,92 @@
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to
provide a free and open framework in which fonts may be shared and
improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software
components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to,
deleting, or substituting -- in part or in whole -- any of the
components of the Original Version, by changing formats or by porting
the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed,
modify, redistribute, and sell modified and unmodified copies of the
Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in
Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created using
the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

22
fonts/btc/btc.css Executable file
View File

@@ -0,0 +1,22 @@
<?php
// Included files
require_once __DIR__ . "/../../backend/common.php";
require_once __DIR__ . "/../../backend/resources.php";
// Main function
// Set content type header
header("Content-Type: text/css; charset=" . mb_internal_encoding());
?>@charset "UTF-8";
@font-face {
font-family: "BTC";
src: url("../.<?= escapeString(getResource("./fonts/btc/btc.woff2")); ?>") format("woff2"), url("../.<?= escapeString(getResource("./fonts/btc/btc.woff")); ?>") format("woff");
font-weight: normal;
font-style: normal;
font-display: block;
}

BIN
fonts/btc/btc.woff Executable file

Binary file not shown.

BIN
fonts/btc/btc.woff2 Executable file

Binary file not shown.

22
fonts/epic/epic.css Executable file
View File

@@ -0,0 +1,22 @@
<?php
// Included files
require_once __DIR__ . "/../../backend/common.php";
require_once __DIR__ . "/../../backend/resources.php";
// Main function
// Set content type header
header("Content-Type: text/css; charset=" . mb_internal_encoding());
?>@charset "UTF-8";
@font-face {
font-family: "EPIC";
src: url("../.<?= escapeString(getResource("./fonts/epic/epic.woff2")); ?>") format("woff2"), url("../.<?= escapeString(getResource("./fonts/epic/epic.woff")); ?>") format("woff");
font-weight: normal;
font-style: normal;
font-display: block;
}

BIN
fonts/epic/epic.woff Executable file

Binary file not shown.

BIN
fonts/epic/epic.woff2 Executable file

Binary file not shown.

92
fonts/eth/ETH license.txt Executable file
View File

@@ -0,0 +1,92 @@
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to
provide a free and open framework in which fonts may be shared and
improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software
components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to,
deleting, or substituting -- in part or in whole -- any of the
components of the Original Version, by changing formats or by porting
the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed,
modify, redistribute, and sell modified and unmodified copies of the
Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in
Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created using
the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

22
fonts/eth/eth.css Executable file
View File

@@ -0,0 +1,22 @@
<?php
// Included files
require_once __DIR__ . "/../../backend/common.php";
require_once __DIR__ . "/../../backend/resources.php";
// Main function
// Set content type header
header("Content-Type: text/css; charset=" . mb_internal_encoding());
?>@charset "UTF-8";
@font-face {
font-family: "ETH";
src: url("../.<?= escapeString(getResource("./fonts/eth/eth.woff2")); ?>") format("woff2"), url("../.<?= escapeString(getResource("./fonts/eth/eth.woff")); ?>") format("woff");
font-weight: normal;
font-style: normal;
font-display: block;
}

BIN
fonts/eth/eth.woff Executable file

Binary file not shown.

BIN
fonts/eth/eth.woff2 Executable file

Binary file not shown.

View File

@@ -0,0 +1,34 @@
Font Awesome Free License
-------------------------
Font Awesome Free is free, open source, and GPL friendly. You can use it for
commercial projects, open source projects, or really almost whatever you want.
Full Font Awesome Free license: https://fontawesome.com/license/free.
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
packaged as SVG and JS file types.
# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
In the Font Awesome Free download, the SIL OFL license applies to all icons
packaged as web and desktop font files.
# Code: MIT License (https://opensource.org/licenses/MIT)
In the Font Awesome Free download, the MIT license applies to all non-font and
non-icon files.
# Attribution
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
Awesome Free files already contain embedded comments with sufficient
attribution, so you shouldn't need to do anything additional when using these
files normally.
We've kept attribution comments terse, so we ask that you do not actively work
to remove them from files, especially code. They're a great way for folks to
learn about Font Awesome.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,30 @@
<?php
// Included files
require_once __DIR__ . "/../../backend/common.php";
require_once __DIR__ . "/../../backend/resources.php";
// Main function
// Set content type header
header("Content-Type: text/css; charset=" . mb_internal_encoding());
?>@charset "UTF-8";
@font-face {
font-family: "Font Awesome";
src: url("../.<?= escapeString(getResource("./fonts/font_awesome/font_awesome-5.15.4.woff2")); ?>") format("woff2"), url("../.<?= escapeString(getResource("./fonts/font_awesome/font_awesome-5.15.4.woff")); ?>") format("woff");
font-weight: normal;
font-style: normal;
font-display: block;
}
@font-face {
font-family: "Font Awesome";
src: url("../.<?= escapeString(getResource("./fonts/font_awesome/font_awesome_solid-5.15.4.woff2")); ?>") format("woff2"), url("../.<?= escapeString(getResource("./fonts/font_awesome/font_awesome_solid-5.15.4.woff")); ?>") format("woff");
font-weight: bold;
font-style: normal;
font-display: block;
}

Binary file not shown.

Binary file not shown.

92
fonts/grin/GRIN license.txt Executable file
View File

@@ -0,0 +1,92 @@
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to
provide a free and open framework in which fonts may be shared and
improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software
components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to,
deleting, or substituting -- in part or in whole -- any of the
components of the Original Version, by changing formats or by porting
the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed,
modify, redistribute, and sell modified and unmodified copies of the
Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in
Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created using
the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

22
fonts/grin/grin.css Executable file
View File

@@ -0,0 +1,22 @@
<?php
// Included files
require_once __DIR__ . "/../../backend/common.php";
require_once __DIR__ . "/../../backend/resources.php";
// Main function
// Set content type header
header("Content-Type: text/css; charset=" . mb_internal_encoding());
?>@charset "UTF-8";
@font-face {
font-family: "GRIN";
src: url("../.<?= escapeString(getResource("./fonts/grin/grin.woff2")); ?>") format("woff2"), url("../.<?= escapeString(getResource("./fonts/grin/grin.woff")); ?>") format("woff");
font-weight: normal;
font-style: normal;
font-display: block;
}

BIN
fonts/grin/grin.woff Executable file

Binary file not shown.

BIN
fonts/grin/grin.woff2 Executable file

Binary file not shown.

22
fonts/mwc/mwc.css Executable file
View File

@@ -0,0 +1,22 @@
<?php
// Included files
require_once __DIR__ . "/../../backend/common.php";
require_once __DIR__ . "/../../backend/resources.php";
// Main function
// Set content type header
header("Content-Type: text/css; charset=" . mb_internal_encoding());
?>@charset "UTF-8";
@font-face {
font-family: "MWC";
src: url("../.<?= escapeString(getResource("./fonts/mwc/mwc.woff2")); ?>") format("woff2"), url("../.<?= escapeString(getResource("./fonts/mwc/mwc.woff")); ?>") format("woff");
font-weight: normal;
font-style: normal;
font-display: block;
}

BIN
fonts/mwc/mwc.woff Executable file

Binary file not shown.

BIN
fonts/mwc/mwc.woff2 Executable file

Binary file not shown.

View File

@@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Binary file not shown.

Binary file not shown.

30
fonts/open_sans/open_sans.css Executable file
View File

@@ -0,0 +1,30 @@
<?php
// Included files
require_once __DIR__ . "/../../backend/common.php";
require_once __DIR__ . "/../../backend/resources.php";
// Main function
// Set content type header
header("Content-Type: text/css; charset=" . mb_internal_encoding());
?>@charset "UTF-8";
@font-face {
font-family: "Open Sans";
src: url("../.<?= escapeString(getResource("./fonts/open_sans/open_sans-1.10.woff2")); ?>") format("woff2"), url("../.<?= escapeString(getResource("./fonts/open_sans/open_sans-1.10.woff")); ?>") format("woff");
font-weight: normal;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "Open Sans";
src: url("../.<?= escapeString(getResource("./fonts/open_sans/open_sans_semibold-1.10.woff2")); ?>") format("woff2"), url("../.<?= escapeString(getResource("./fonts/open_sans/open_sans_semibold-1.10.woff")); ?>") format("woff");
font-weight: bold;
font-style: normal;
font-display: swap;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 B

1
images/app_icons/app_icon.svg Executable file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><defs><linearGradient id="a" x1="1" y1="64" x2="127" y2="64" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#9e00e7"/><stop offset="1" stop-color="#3600c9"/></linearGradient></defs><g data-name="Layer 2"><g data-name="App Icon Small"><path style="fill:none" d="M0 0h128v128H0z"/><circle cx="64" cy="64" r="63" style="fill:url(#a)"/><g data-name="Layer 1"><g data-name="Layer 2"><path d="M64.15 60.21a4.51 4.51 0 0 1-3.15-1.4s-9.94-10-13.07-13.16-6.81 0-6.81 0l-14.86 15a4.78 4.78 0 0 0 0 6.8l14.86 15s3.68 3.13 6.81 0S61 69.2 61 69.2a4.46 4.46 0 0 1 3.14-1.4h-.29A4.46 4.46 0 0 1 67 69.2s9.94 10 13.07 13.16 6.81 0 6.81 0l14.86-15a4.8 4.8 0 0 0 0-6.8l-14.86-15s-3.68-3.13-6.81 0S67 58.81 67 58.81a4.51 4.51 0 0 1-3.14 1.4" style="fill:#fff" data-name="Layer 3"/></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 859 B

34
images/bluetooth license.txt Executable file
View File

@@ -0,0 +1,34 @@
Font Awesome Free License
-------------------------
Font Awesome Free is free, open source, and GPL friendly. You can use it for
commercial projects, open source projects, or really almost whatever you want.
Full Font Awesome Free license: https://fontawesome.com/license/free.
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
packaged as SVG and JS file types.
# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
In the Font Awesome Free download, the SIL OFL license applies to all icons
packaged as web and desktop font files.
# Code: MIT License (https://opensource.org/licenses/MIT)
In the Font Awesome Free download, the MIT license applies to all non-font and
non-icon files.
# Attribution
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
Awesome Free files already contain embedded comments with sufficient
attribution, so you shouldn't need to do anything additional when using these
files normally.
We've kept attribution comments terse, so we ask that you do not actively work
to remove them from files, especially code. They're a great way for folks to
learn about Font Awesome.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**

1
images/bluetooth.svg Executable file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License). Changes were made to this file by Nicolas Flamel --><path d="m196.48 260.023 92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z" fill="#FFF"/></svg>

After

Width:  |  Height:  |  Size: 613 B

1
images/circle.svg Executable file
View File

@@ -0,0 +1 @@
<svg viewBox="0 0 2 2" xmlns="http://www.w3.org/2000/svg"><circle cx="1" cy="1" r="1"/></svg>

After

Width:  |  Height:  |  Size: 93 B

View File

@@ -0,0 +1,63 @@
License agreement
Countryflags.com offers images of World flags and the U.S. States flags which are downloadable in various file formats.
These downloadable formats are:
*AI
*EPS
*SVG
*PDF
*PNG
*JPG
Countryflags.com files are available for Commercial and Non-Commercial use.
Please read the following information about Commercial and Non-Commercial use below.
Commercial use
If you would like to use the country flags or the U.S. States flags for commercial use, purchase a license for one of the packages.
These professional packages are easy to use and will be downloadable after purchase. Save time by downloading a file type for all countries or by an entire nation at once.
The intention of the packages for commercial purposes:
*Websites;
*Development;
*App development;
*Web development;
*Product development;
*Printed products (for example mugs, flags, magnets, souvenirs, posters Etc.);
*Educational use without attribution;
*Papers and publications without attribution;
Once you have purchased a license, you can use the downloads within this bundle for business and commercial purposes.
Please note that purchased downloads are temporarily available because of website/flag updates.
After buying a package, store your package safe and secure on your device or server.
Not permitted
*It is not allowed to sell or offer commercial packages as downloads;
*It is not allowed to add commercial packages to your portfolio;
Non-commercial use
All single files can be downloaded free of charge for private and for educational use. Besides, it is possible to view a file before purchasing a package for commercial use.
The intention of the packages for non-commercial purposes such as:
*Private use*
*Educational institutions**
*Theses**
*Newspapers**
*Publications**
* Use all files free of charge and rights for private use;
** For educational purposes such as theses, papers and publications: always mention both online and offline the source Countryflags.com with your work. For online use, please use the following link: https://www.countryflags.com
Not permitted
*It is not allowed to sell or offer free files as downloads;
*It is not allowed to add free files to your portfolio;
*Multiplication on a large scale is not allowed with free downloadable files;
If you have any questions about use and this License Agreement, please contact us at info@countryflags.com

1
images/countries/america.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.4 KiB

1
images/countries/china.svg Executable file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="444.5 896.5 300 200" xml:space="preserve"><!-- Country Flags - https://www.countryflags.com License - https://www.countryflags.com/license-agreement. Changes were made to this file by Nicolas Flamel --><switch><g><path fill="#DE2910" d="M444.5 896.5h300v200h-300z"/><path fill="#FFDE00" d="m494.5 916.5 17.634 54.27-46.166-33.541h57.064l-46.165 33.541zM535.925 921.645l12.488-14.348-1.67 18.948-9.786-16.31 17.505 7.443zM554.601 937.914l17.077-8.377-8.892 16.815-2.69-18.83 13.244 13.653zM554.885 963.753l19.009-.682-14.978 11.724 5.226-18.289 6.522 17.868zM536.691 980.253l17.798 6.711-18.343 5.032 11.882-14.853-.882 19z"/></g></switch></svg>

After

Width:  |  Height:  |  Size: 694 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="144.5 696.5 300 200" xml:space="preserve"><!-- Country Flags - https://www.countryflags.com License - https://www.countryflags.com/license-agreement. Changes were made to this file by Nicolas Flamel --><switch><g><path fill="#D7141A" d="M144.5 696.5h300v200h-300z"/><path fill="#FFF" d="M144.5 696.5h300v100h-300z"/><path fill="#11457E" d="m294.5 796.5-150-100v200l150-100z"/></g></switch></svg>

After

Width:  |  Height:  |  Size: 445 B

1
images/countries/germany.svg Executable file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="194.5 696.5 300 180" xml:space="preserve"><!-- Country Flags - https://www.countryflags.com License - https://www.countryflags.com/license-agreement. Changes were made to this file by Nicolas Flamel --><switch><g><path d="M194.5 696.5h300v180h-300z"/><path fill="#D00" d="M194.5 756.5h300v120h-300z"/><path fill="#FFCE00" d="M194.5 816.5h300v60h-300z"/></g></switch></svg>

After

Width:  |  Height:  |  Size: 422 B

1
images/countries/greece.svg Executable file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-5.5 596.5 300 200" xml:space="preserve"><!-- Country Flags - https://www.countryflags.com License - https://www.countryflags.com/license-agreement. Changes were made to this file by Nicolas Flamel --><switch><g><path fill="#0D5EAF" d="M-5.5 596.5h300v200h-300z"/><path fill="none" stroke="#FFF" stroke-width="20" d="M50.056 596.5v122.222M-5.5 652.055h111.111m0-22.222H294.5m-188.889 44.445H294.5m-300 44.444h300m-300 44.445h300"/></g></switch></svg>

After

Width:  |  Height:  |  Size: 500 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="144.5 696.5 300 200" xml:space="preserve"><!-- Country Flags - https://www.countryflags.com License - https://www.countryflags.com/license-agreement. Changes were made to this file by Nicolas Flamel --><switch><g><path fill="#21468B" d="M144.5 696.5h300v200h-300z"/><path fill="#FFF" d="M144.5 696.5h300v133.333h-300z"/><path fill="#AE1C28" d="M144.5 696.5h300v66.667h-300z"/></g></switch></svg>

After

Width:  |  Height:  |  Size: 445 B

34
images/down arrow license.txt Executable file
View File

@@ -0,0 +1,34 @@
Font Awesome Free License
-------------------------
Font Awesome Free is free, open source, and GPL friendly. You can use it for
commercial projects, open source projects, or really almost whatever you want.
Full Font Awesome Free license: https://fontawesome.com/license/free.
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
packaged as SVG and JS file types.
# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
In the Font Awesome Free download, the SIL OFL license applies to all icons
packaged as web and desktop font files.
# Code: MIT License (https://opensource.org/licenses/MIT)
In the Font Awesome Free download, the MIT license applies to all non-font and
non-icon files.
# Attribution
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
Awesome Free files already contain embedded comments with sufficient
attribution, so you shouldn't need to do anything additional when using these
files normally.
We've kept attribution comments terse, so we ask that you do not actively work
to remove them from files, especially code. They're a great way for folks to
learn about Font Awesome.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**

1
images/down_arrow.svg Executable file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 528"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License). Changes were made to this file by Nicolas Flamel --><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z" fill="#0C0C0D" fill-opacity=".85"/></svg>

After

Width:  |  Height:  |  Size: 464 B

1
images/ledger.svg Executable file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 754.67 680"><path d="M0 130.63V0h195.5v31.1H30.21v99.53H0zM517.1 321.6v130.63H321.6v-31.1h165.29V321.6h30.21zm0-190.97V0H321.6v31.1h165.29v99.53h30.21zM0 321.6v130.63h195.5v-31.1H30.21V321.6H0zm323.87 2.27H193.24V128.36h31.1v165.29h99.53v30.22z"/></svg>

After

Width:  |  Height:  |  Size: 307 B

1605
images/logo_big.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 119 KiB

1605
images/logo_small.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 119 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 320"><path fill="none" d="M0 0h320v320H0z"/><path d="M160.59 154.72a18 18 0 01-12.66-5.64S107.8 108.63 95.17 96s-27.45 0-27.45 0l-60 60.35a19.34 19.34 0 000 27.46l60 60.35s14.83 12.62 27.45 0S147.93 191 147.93 191a18 18 0 0112.66-5.64h-1.14a18 18 0 0112.66 5.64s40.13 40.49 52.76 53.12 27.45 0 27.45 0l60-60.35a19.43 19.43 0 000-27.46l-60-60.31s-14.83-12.63-27.45 0-52.76 53.12-52.76 53.12a18 18 0 01-12.66 5.64"/></svg>

After

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 948 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 972 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 B

1
images/trezor.svg Executable file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 440 512"><path d="M232.565 92.208C232.565 41.81 189.092 0 136.137 0 83.189 0 39.703 41.823 39.703 92.208v29.462H0v211.989l136.108 63.666 136.189-63.666V122.617h-39.69l-.029-30.409h-.013Zm-143.715 0c0-23.762 20.82-42.779 47.287-42.779 26.475 0 47.281 19.017 47.281 42.779v29.462H88.85V92.208Zm128.6 207.231-81.342 38.038-81.328-38.009V172.055h162.67v127.384Z"/></svg>

After

Width:  |  Height:  |  Size: 420 B

34
images/usb license.txt Executable file
View File

@@ -0,0 +1,34 @@
Font Awesome Free License
-------------------------
Font Awesome Free is free, open source, and GPL friendly. You can use it for
commercial projects, open source projects, or really almost whatever you want.
Full Font Awesome Free license: https://fontawesome.com/license/free.
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
packaged as SVG and JS file types.
# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
In the Font Awesome Free download, the SIL OFL license applies to all icons
packaged as web and desktop font files.
# Code: MIT License (https://opensource.org/licenses/MIT)
In the Font Awesome Free download, the MIT license applies to all non-font and
non-icon files.
# Attribution
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
Awesome Free files already contain embedded comments with sufficient
attribution, so you shouldn't need to do anything additional when using these
files normally.
We've kept attribution comments terse, so we ask that you do not actively work
to remove them from files, especially code. They're a great way for folks to
learn about Font Awesome.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**

1
images/usb.svg Executable file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License). Changes were made to this file by Nicolas Flamel --><path d="M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z" fill="#FFF"/></svg>

After

Width:  |  Height:  |  Size: 1004 B

1
images/whale.svg Executable file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 540"><path d="m49.79 124.57-38.44-26A24.48 24.48 0 0 1 0 77.36V12.85S1.11-4.53 19.82 2.23L76.49 40l56.66-37.77S150.24-7.24 153 12.84v64.52s.39 13.35-11.36 21.22l-38.34 25.67s-10.69 99.95 42 98.18 101.82-76 101.82-76S331.88-6.65 502.39 6.08s181.74 105.66 183.17 147.23-21.69 139.26-104 139.26H161.09s-104.33.33-111.3-168zm436.24 0a28.55 28.55 0 1 0 28.56 28.55A28.55 28.55 0 0 0 486 124.57z"/></svg>

After

Width:  |  Height:  |  Size: 455 B

2779
index.html Executable file

File diff suppressed because it is too large Load Diff

36
languages/american_english.php Executable file
View File

@@ -0,0 +1,36 @@
<?php
// Append American English to available languages
$availableLanguages["en-US"] = [
// Constants
"Constants" => [
// Language
"Language" => "English",
// Direction
"Direction" => "ltr",
// Image
"Image" => "./images/countries/america.svg",
// Currency
"Currency" => "USD",
// Extension locale code
"Extension Locale Code" => "en",
// Fallback
"Fallback" => "en"
],
// Text
"Text" => [
'(?<=,) ' => ' ',
'(?<=.) ' => ' ',
'(?<=:) ' => ' ',
',(?= )' => ',',
]
];
?>

Some files were not shown because too many files have changed in this diff Show More