/* * noVNC: HTML5 VNC client * Copyright (C) 2019 The noVNC Authors * Licensed under MPL 2.0 (see LICENSE.txt) * * See README.md for usage and integration instructions. */ // Decode from UTF-8 export function decodeUTF8(utf8string, allowLatin1=false) { try { return decodeURIComponent(escape(utf8string)); } catch (e) { if (e instanceof URIError) { if (allowLatin1) { // If we allow Latin1 we can ignore any decoding fails // and in these cases return the original string return utf8string; } } throw e; } } // Encode to UTF-8 export function encodeUTF8(DOMString) { return unescape(encodeURIComponent(DOMString)); } export function uuidv4() { return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ); }